Zolaerla Posted November 10, 2022 Share Posted November 10, 2022 Hello there! Up front: There is no real "point" to this, it's just fun for me to write software that can detect hardware and the like. As part of a fun project I've been working on, I have been trying to find resources on how to detect what drive(s) is/are attached to the system through software. I found Matthias' HISIO and thoroughly commented it and whatnot to help me learn how SIO works better, and it also gave me a couple methods of detecting devices (such as US Doubler, Happy 810/1050). I can assume that ultra fast connections are some sort of SIO2PC/SD/BT/whatever device. But there's a huge list of what's available and very little information on how to distinguish them from one another. The Altirra Percom charts might have some hints, but I'm not certain how reliable that data is. I just think it's cool starting up a program and it can say, "Tygrys 1050 detected!" or the like. Is there much information known on how to tell the other devices apart? Quote Link to comment Share on other sites More sharing options...
Rybags Posted November 10, 2022 Share Posted November 10, 2022 Available Diag commands are different among drives, but the level of documentation isn't very good. In theory it might be possible to distinguish most types of physical drives. But then you have emulated drives and PC interfaces. Generally these will be faster and not support diag commands. SIO2SD actually has it's own command extensions to support things like mounting image so it could probably be detected. All up probably a fairly big job and you'd not be guaranteed high accuracy. Quote Link to comment Share on other sites More sharing options...
E474 Posted November 10, 2022 Share Posted November 10, 2022 I snagged a list of drives and SIO commands they support a while back: Upgrade: 1050 duplicator Manufacturer: Duplicator Technologies [DT] Year: 1986 Features: SS SD/ED/DD 3x speed increase. Whole track buffering (18 sectors / 8KiB) Navigate/edit/create non-standard formats, copying software included Later versions = CheerUp Upgrade, by Happy Computers, Inc., 1987, upgrades and 1050 Duplicator replaced by Happy 1050 Enhancement software compatible Commands: 21, 22, 3F, 4E, 4F, 50, 52, 53, 57, 61, 62, 63, 64, 66, 67, 68, 6A, 6D, 6E, 72, 73, 74, 75, 76, 77 Upgrade: Bitwriter Manufacturer: Computer Software Services (CSS) Year: 1988 Features: enhancement to Super Archiver - Writes bits rather than sectors, for increased copy capabilities Commands 21, 22, 3F, 42, 43, 44, 46, 47, 4C 4E, 4F, 50, 52, 53, 54, 57, 5A, 62, 63, 64, 66, 67, 68, 6A, 6D, 6E, 71, 72, 73, 74, 75, 76, Upgrade: Bitwriter Replica Manufacturer: tf_hh Year: 2016 Features: Super Archiver 1050/ BitWriter 1050 - copies all copy-protected games for backup or software preservation Reading/Writing/Formatting Double Density Highspeed SIO Upgrade: Copy Card 7.0 Manufacturer: ? [Europe] Year: 198? Features: SS SD/ED/DD Happy 1050 copy but not full clone, ICD US Doubler emulation Commands: 21, 22, 24, 3F, 48, 4E, 4F, 50, 51, 52, 53, 57, 70, 72, 77 Upgrade: Density Doubler 1050 Manufacturer: Duplicating Technologies (DT) Year: 1986 Features: SS SD/ED/DD up to 3x speed increase. Commands: 21, 22, 3F, 4E, 4F, 50, 52, 53, 57, 66 Upgrade: Happy 1050 Manufacturer: Happy Computer Year: 1984-1989 Features: SSDD, 52kbps speed, 36 sector buffer. Can also read/write 180k MS-DOS. Adds true single-sided, double density (180KiB) operation Commands: 21, 22, 24, 3F, 48, 4E, 4F, 50, 51, 52, 53, 57, 70, 72, 77 Upgrade: Happy 1050 Maximiser Manufacturer: Happy Computer Year: 1985 Features: SSDD, 52kbps speed, 36 sector buffer. Can also read/write 180k MS-DOS. Commands: 21, 22, 24, 3F, 48, 4E, 4F, 50, 51, 52, 53, 57, 70, 72, 77 Upgrade: High Speed Board 1050 Manufacturer: Irata Verlag, West Germany Year: 1985 Features: SSDD, 52kbps speed, 36 sector buffer. Can also read/write 180k MS-DOS. Happy 1050 clone Commands: 21, 22, 24, 3F, 48, 4E, 4F, 50, 51, 52, 53, 57, 70, 72, 77[/b] Upgrade: Hyperdrive Manufacturer: ? UK Year: 1986 Features: SS SD/ED/DD Happy 1050 clone Commands: 21, 22, 24, 3F, 48, 4E, 4F, 50, 51, 52, 53, 57, 70, 72, 77 Upgrade: Hyperdrive - re-issue Manufacturer: Chaos! Computers Year: 1995 Features: SS SD/ED/DD Happy, US Doubler UltraSpeed 1050 clone Commands: 21, 22, 24, 3F, 48, 4E, 4F, 50, 51, 52, 53, 57, 70, 72, 77 Upgrade: I.S. Doubler Manufacturer: Robert Perry, Innovated Software [UK] Year: 1985 Features: SSDD, 54kbps speed, sector skewing, ICD US Doubler clone Commands: 21, 22, 3F, 4E, 4F, 50, 52, 53, 57, 66 Upgrade: I.S. Plate 1050 Manufacturer: Robert Perry, Innovative Software Year: 1986 Features: fully Happy 1050 compatible, board (fits 6507 socket) with 6502 and 16KiB RAM buffer. IS Doubler/US Doubler, Archiver/Chip, standard 1050 emulation, 16-drive support. software included; IS Doubler/US Doubler high-speed disk copiers (standard and 130XE versions), file loader, custom disk format (incl bad sectors), track tracer Late units: Software instead built-in on ROM Early units: ISP Gremlin Grabber (sold separately) Most units included Gremlin Grammer II or Gremlin Grabber III Commands: 20, 21, 22, 3F, 41, 44, 4B, 4C, 4D, 4E, 4F, 50, 51, 52, 53, 57, 60, 62, 68, 69 Upgrade: Kiwi Systems Manufacturer: (New Zealand) Year: 1986 Features: SSDD, 54kbps speed, Lazer (Happy) 1050 clone, with Archiver. Bundled with 1050 to Kiwi Chip Archiver (Kiwi Systems) Commands: 20, 21, 22, 3F, 41, 44, 4B, 4C, 4D, 4E, 4F, 50, 51, 52, 53, 57, 60, 62, 68, 69 Upgrade: Klone Manufacturer: Computer Software Services [USA] Year: 1986 Features: SS SD/ED/DD Happy 1050 clone, bundled Happy Warp Speed Software Commands: 21, 22, 24, 3F, 48, 4E, 4F, 50, 51, 52, 53, 57, 70, 72, 77 Upgrade: Klone II Manufacturer: Computer Software Services (CSS) [USA] Year: 1987 Features: SS SD/ED/DD Happy 1050 clone, bundled Happy Warp Speed Software Commands: 21, 22, 24, 3F, 48, 4E, 4F, 50, 51, 52, 53, 57, 70, 72, 77 Upgrade: Lazer 1050 Manufacturer: Utility House Year: 1986 Features: SSDD, 54kbps speed, Happy 1050 clone Bundled with [Utility House] Lazer Drive Supercharger software Commands: 20, 21, 22, 3F, 41, 44, 4B, 4C, 4D, 4E, 4F, 50, 51, 52, 53, 57, 60, 62, 68, 69 Upgrade: Mega Speedy 1050 Manufacturer: Compy Shop (now ABBUC) Year: 2014 Features: SSDD, 57kbps speed, 8kb buffer, incl DOS/copier. Track display and audio. 1050 Turbo and 1050 Duplicator modes, can also emulate Happy 1050, US Doubler, Super Archiver and Supermax Commands: 20, 21, 22, 3F, 41, 44, 4B, 4C, 4D, 4E, 4F, 50, 51, 52, 53, 57, 60, 62, 68, 69 Upgrade: Reproducer Manufacturer: Gardner Computing Year: 1984 Features: SSDD, sector skewing. Navigate/edit/create nonstandard format disks (software included) Commands: 21, 22, 3F, 4E, 4F, 50, 52, 53, 57, 66 Upgrade: Speedy 1050 Manufacturer: Compy Shop (now ABBUC) Year: 1986 Features: SSDD, 57kbps speed, 8kb buffer, incl DOS/copier. Track display and audio. Commands: 20, 21, 22, 3F, 41, 44, 4B, 4C, 4D, 4E, 4F, 50, 51, 52, 53, 57, 60, 62, 68, 69 Upgrade: Super Archiver Manufacturer: Computer Software Services (CSS) Year: 1987 Features: SSDD, 54kbps speed, copies and creates fuzzy & phantom sectors. Navigate/edit/create nonstandard format disks. Bundled Super Archiver Fuzzy Sector Maker, The Archiver Tracer, Super Archiver Diagnostic Commands 21, 22, 3F, 42, 43, 44, 46, 47, 4C 4E, 4F, 50, 52, 53, 54, 57, 5A, 62, 63, 64, 66, 67, 68, 6A, 6D, 6E, 71, 72, 73, 74, 75, 76, Upgrade: Super Archiver II Manufacturer: Computer Software Services (CSS) Year: 1988 Features: SSDD, 54kbps speed, copies and creates fuzzy & phantom sectors. Navigate/edit/create nonstandard format disks. Bundled Super Archiver Fuzzy Sector Maker, The Archiver Tracer, Super Archiver Diagnostic Commands 21, 22, 3F, 42, 43, 44, 46, 47, 4C 4E, 4F, 50, 52, 53, 54, 57, 5A, 62, 63, 64, 66, 67, 68, 6A, 6D, 6E, 71, 72, 73, 74, 75, 76, Upgrade: Super Speedy 1050 prototype Manufacturer: Compy Shop (now ABBUC) Year: 1986 Features: SSDD, 57kbps speed, 8kb buffer, incl DOS/copier. Track display and audio. Commands: 20, 21, 22, 3F, 41, 44, 4B, 4C, 4D, 4E, 4F, 50, 51, 52, 53, 57, 60, 62, 68, 69 Upgrade: Supermax 1050 Manufacturer: Super Products (Australia) Year: 1987 Features: switchable ROM, true double density with 4x increase in the read/write speed (with SuperDOS or other hi speed DOS). Sup Varying accounts say this was either a straightforward plugin or a plugin board with one cable to solder. Remove rom and ram, plug in Commands: 20, 21, 22, 3F, 41, 44, 4B, 4C, 4D, 4E, 4F, 50, 51, 52, 53, 57, 60, 62, 68, 69 Upgrade: TOMS Multi Drive 1050 Manufacturer: TOMS Year: 1991 Features: SS SD/ED/DD/IBM Turbodrive 68200 bit/s, sector skew IBM format: 40 tracks/9 sectors 180KiB 1050 Turbo/Top Drive compatible UltraSpeed emulation Commands: 21, 22, 24, 3F, 48, 4E, 4F, 50, 51, 52, 53, 57, 70, 72, 77 Upgrade: Top Drive 1050 Manufacturer: Ataserw Year: 1987/8 Features: SS SD/ED/DD - 1050 Turbo clone, ROM by P.Z. Karen, brand of of LDW TUR DOS disk/cartridge, upgrades to 1050 Happy compatiblity Commands: 21, 22, 24, 3F, 48, 4E, 4F, 50, 51, 52, 53, 57, 70, 72, 77 Upgrade: Turbo-1050 aka "Engl-Turbo-1050" Manufacturer: Bernhard Engl for Gerald Engl Computertechnik Year: 1985-1988 Features: SSDD, "turbodrive" 70kbps (68200bps) speed, non-US Doubler skew. software on ROM: Backup Machine II, Magic Formatter, Maintenance Box Commands: 21, 22, 24, 3F, 48, 4E, 4F, 50, 51, 52, 53, 57, 70, 72, 77 Upgrade: Tygrys 1050 1.0 Manufacturer: Navitron - Marek Bojarski Year: 1988 Features: SS SD/ED/DD; 53 kbit/s Commands: 21, 22, 24, 3F, 48, 4E, 4F, 50, 51, 52, 53, 57, 70, 72, 77 Upgrade: Tygrys 1050 2.0 Manufacturer: Mediacom 1993 - Marek Bojarski Year: 1993 Features: SS SD/ED/DD; 70 kbit/s Commands: 21, 22, 24, 3F, 48, 4E, 4F, 50, 51, 52, 53, 57, 70, 72, 77 Upgrade: US Doubler Manufacturer: ICD Year: 1984 Features: SSDD, 54kbps speed, sector skewing, many units bundled with ICD Spartados disk Commands: 21, 22, 3F, 4E, 4F, 50, 52, 53, 57, 66 Upgrade: Warp Drive Manufacturer: Stocksoft [UK] Year: 1986 Features: SS SD/ED/DD Happy 1050 clone, Rev 2 onwards upgrade = "The Chip Archiver" emulation Commands: 21, 22, 24, 3F, 48, 4E, 4F, 50, 51, 52, 53, 57, 70, 72, 77 Currently compiling info on:- Chipmunk The Chip (by Spartan) The Protector The Black Patch The Backup Master Happy to Chip Converter Command List: 20 - Format auto 21 - Format 22 - Format ED 23 - 1050 diags 1 24 - 1050 diags 2 3F - Get high-speed index 41 - Add/Remove Command 42 - Configure 43 - N/K 44 - Configure drive 46 - N/K 47 - N/K 48 - Happy Configure Command 4B - Slow/fast config 49 - Indexed Formatting 4C - Jump without message 4D - Jump with message 4E - Read PERCOM block 4F - Write PERCOM block 50 - Write sector 51 - Quit 52 - Read sector 53 - Get status 54 - Read Address 55 - Motor On 56 - Verify Sector 57 - Write sector with verify 5A - 60 - Write Track 61 - N/K 62 - Read Track 63 - N/K 64 - N/K 66 - Format with skew 67 - N/K 68 - Get SIO Length 69 - Get SIO Routine 6A - N/K 6D - N/K 6E - N/K 70 - N/K 71 - N/K 72 - N/K 73 - N/K 74 - N/K 75 - N/K 76 - N/K 77 - N/K You'd probably have to ask if anyone had ownership of any of those drives, and take it from there (there might be info at http://atariki.krap.pl/index.php/or similar), or look at the utility disks for these drives, and monitor what they send over SIO. 1 1 Quote Link to comment Share on other sites More sharing options...
Zolaerla Posted November 11, 2022 Author Share Posted November 11, 2022 That's quite the list there, E474! I'm amazed how many drives support the Happy command, though that might be a decent split point to decrease the tests needed, esp. since I already have Happy 1050 detection done (and write bug worked around) due to the info in HISIO, and it works in Altirra with its Happy 1050 drive emulation at least. I thought my list of some 30 odd drives was long, but I haven't even heard of most of these. Hoo boy... The only real drive I have is a standard 1050, so kinda limiting within getting lots of hardware kits, and I'm totally not a hardware person. It would be neat to be able to pass some .atr files around or the like though once I think I know what I'm doing on some of these. Quote Link to comment Share on other sites More sharing options...
phaeron Posted November 11, 2022 Share Posted November 11, 2022 An issue with using non-standard SIO commands to probe is that some command IDs are aliased to different commands on different drives, so it's tricky to figure out which commands are safe to probe with. You can also try probing read/write PERCOM block command behavior. Few drives allow arbitrary values for all of the PERCOM block bytes; most only store the specific bits that they support. Quote Link to comment Share on other sites More sharing options...
Zolaerla Posted November 12, 2022 Author Share Posted November 12, 2022 (edited) First off, thanks for some direction on toying with this for telling some of these generally fairly similar drives apart! I've made a few tests that... apparently abuse some of these drives through Altirra trying to see how they react to certain things. I could not find firmware for the 815 (haven't 'specially formatted a disk for it anyways), Super Archiver, Tygrys 1050, 1050 Turbo, Percom AT-88, Percom AT88-SPD, or Amdek AMDC-I/II, so I couldn't try any of those. For some reason the US Doubler, Happy 1050, 1050 Duplicator, TOMS 1050, 1050, and I.S. Plate all need soft resets since they don't immediately boot off my custom OS disk. After the soft reset, they work though. I have not tested every firmware for these yet, and I don't know if all of the data charts I've been making are even very interesting outside of this, but without even getting to the detection side of things, there are some interesting things going on. I modified my custom SIO routines to be able to return what value was returned for ACK and Complete, since some drives (Speedy 1050 and Happy 1050) do not always return the correct values. I test status, Get Speed, Percom Read, then Percom Write (then read) with all $00, all $FF, and a weird bunch of flipping bits to see what happens. This gives a lot of interesting details though, and I'll have to work out what makes everything unique, at least so far. This is only relative to what I've been able to test. Right off, the fact that the Speedy 1050 returns A instead of C for Get Speed and the Percom commands makes it stand out (its US Doubler speed of $09 also seems to be unique). Writing all $00 to the Percom RFD-40S1 and ATR8000 causes each of those to stop functioning (just timing out) until a reset... possibly a power off/on with the real thing. They both take all $FF (and the absurd Percom write) and then return it, however, but so does the 1050 Duplicator. I have enough info to tell all 3 of those apart, since the 1050 Duplicator supports the US Doubler Get Speed command (with $0A) and the other two don't... and the Percom returns $FF for Drive Present and the others don't. The Happy 1050 randomly accepts the bad Percom writes and other times returning $FD for the ACK byte of the next command for whatever reason. In any case, this gives me a lot to go off of for the Percom drives without having to research unique diagnostic commands. Unfortunately, I might have to do that to tell the 810, 810 Archiver, and 1050 apart (the 810 returns 00 for FDC status consistently in Altirra though). Edited November 12, 2022 by Zolaerla Quote Link to comment Share on other sites More sharing options...
E474 Posted November 12, 2022 Share Posted November 12, 2022 Hi @Zolaerla, For Happy type drives you can try reading the command table from RAM (to differentiate firmware). Have a look at DUMP1050: https://github.com/e474/DUMP1050 - there's also some good info (in German) in some issues of "Atari Magazin" regarding Happy drives, and I think Speedy drives too. Quote Link to comment Share on other sites More sharing options...
Mathy Posted November 12, 2022 Share Posted November 12, 2022 (edited) Hello Zolaeria 10 hours ago, Zolaerla said: I have not tested every firmware for these yet, and I don't know if all of the data charts I've been making are even very interesting outside of this, but ... Just publish it somewhere. Who knows when it'll come in handy. Sincerely Mathy Edit: ABBUC published a booklet about the Speedy 1050 years ago. In German, but you still might get some info out of it even if you do not speak/read German. Edited November 12, 2022 by Mathy Quote Link to comment Share on other sites More sharing options...
Zolaerla Posted November 14, 2022 Author Share Posted November 14, 2022 (edited) Whelp, I spent all weekend working on this, and can detect almost every drive available to me through Altirra, so it works through emulation if nothing else. Lemme see if my plain text chart for testing can be posted here: Det? Works? HISIO? Divisor Notes == 810s =========================================================================================== Atari 810 - X - $28 Atari 810 Rev E X X - $28 Happy 810 Pre-7 - X - $28 Happy 810 Rev 7 X X X $10 Loads in spurts. 810 Archiver - X - ? aka "The Chip" == 1050s ========================================================================================== Atari 1050 - X - $28 Needs soft reset. Happy 1050 Rev 1 X X X $10 Needs soft reset. Loads in spurts. Happy 1050 Rev 2+ X X X $0A Needs soft reset. Loads in spurts. ! Sometimes the invalid Percom writes returned a $FD for ACK, but other times it set them. 1050 Turbo II X X X $06 1050 Duplicator X X X $0A Needs soft reset. Speedy 1050 X X X $09 Loads in spurts. TOMS 1050 X X - ? Needs soft reset. Tygrys 1050 v1.0 X X X $0A Loads erratically. I.S. Plate X X X $0A Needs soft reset. Loads in spurts. == Alternates ===================================================================================== Percom RFD-40S X X - $28 ! Passing in all $00 for Percom Write breaks the drive until reset Indus GT X X - $28 ! CRASHES IF USING ALTIRRA SIO ACCELERATION! US Doubler X X X $0A Needs soft reset. Atari XF551 X X X $10 == Specials ======================================================================================= ATR8000 X X - $28 ! Passing in all $00 for Percom Write breaks the drive until reset SIO2PC A X X $00 Full speed works with custom VBI == Missing Firmware =============================================================================== 810 Turbo ? ? ? ? Missing firmware 1050 Turbo I ? ? ? ? Missing firmware Percom AT88 ? ? ? $28 Missing firmware Percom AT88-SPD ? ? ? ? Missing firmware Indus GT Synch. ? ? ? $10 Missing firmware Indus GT SuperSync. ? ? ? $06 Missing firmware TOMS Turbo Drive ? ? ? ? Missing firmware Super Acrhiver ? ? ? ? Missing firmware Atari 815 ? ? ? ? Missing firmware Amdek ADMC ? ? ? ? Missing firmware The drive testing is currently done exclusively with Get Status, Read Percom Block, Write Percom Block, US Doubler Get Speed, and Happy Command. Anyways, this is pretty promising so far. I have not tested formatting or writing yet, but getting almost everything working full speed and having each one with a distinct detect string is pretty neat. It is interesting how the loading bar I use shows some drives loading in spurts (switching tracks slows them down). I don't know if it's taboo to ask on this forum, but if anybody has any idea where to even start looking for those other firmwares, some direction would be great! I found what I did searching a lot online and even some of those like the Tygrys ROM, I had to look for strings in the ROM's binary to figure out what it was. I will be releasing the full info on all of this when I'm done cleaning it up, which probably won't happen during the week much, but maybe? Depends on how much I can think straight after doing my real job (eCommerce / CMS platform coding). Edited November 14, 2022 by Zolaerla 1 1 Quote Link to comment Share on other sites More sharing options...
Chilly Willy Posted November 14, 2022 Share Posted November 14, 2022 You can find a schematic and my annotated firmware disassembly of the Percom AT88-S1PD drive on this page: 1 1 Quote Link to comment Share on other sites More sharing options...
Zolaerla Posted November 14, 2022 Author Share Posted November 14, 2022 (edited) 1 hour ago, Chilly Willy said: You can find a schematic and my annotated firmware disassembly of the Percom AT88-S1PD drive on this page: Whelp, I took the binary out of the .lst file and made a .rom (it's only just barely over 2KB of the 4KB ROM the S1PD had so I filled the rest in with 00), and the drive doesn't work in Altirra with that as the firmware. No idea if the .lst file had mistakes in it or not, but it does not appear to be a functional ROM for it, unfortunately. Too bad, because it's one of only 2 devices I know of that used SIO CLOCK for its high speed and I was looking forward to trying to get that to work fast. Also, this doesn't match what Altirra's hardware docs say the ROM should be at. It looks like the ROM should be at $F000, at least according to that, and $C000 isn't used at all: Address range Mapping $F000-FFFF ROM (4K) $D000-DFFF Static RAM (1K) (mirror) $B000-BFFF ROM (4K) (mirror) $9000-9FFF Static RAM (1K) (mirror) $7000-7FFF ROM (4K) (mirror) $5400-5FFF Static RAM (1K) (mirror) $5000-53FF Static RAM (1K) $4010-4FFF FDC/PIA/ACIA (mirror) $400C-400F 6850 ACIA $4008-400B 6821 PIA $4004-4007 1791/1795 FDC $3000-3FFF ROM (4K) (mirror) $1000-1FFF Static RAM (1K) (mirror) $0000-0FFF FDC/PIA/ACIA (mirror) Edited November 14, 2022 by Zolaerla Quote Link to comment Share on other sites More sharing options...
Chilly Willy Posted November 14, 2022 Share Posted November 14, 2022 (edited) The SRAM is at $5000, the IO is at $4000, and the ROM probably was $F000. If you look at the code, it's all PC relative, so it could go anywhere. At the time I disassembled it, I didn't know where anything at all was. I wrote my own 6809 disassembler that worked on ram in the Atari at $C000 as I had the MOSAIC memory expansion, which put banks of RAM at $C000. The disassembly you see is what was generated by the program. I pulled the BIOS from my Percom, put it in an Atari cart with a socket for the ROM chip, dumped it like any other Atari cart, wrote a 6809 disassembler, generated the listing, then went through it figuring out what was being done based on the serial protocol. I got the schematic later from Percom - that was a real stroke of luck, they just sent some random guy the schematics to the drive they sold him. My Percom came with a DSDD drive, a connector for another internal floppy mechanism (I had another 5.25" drive there for some time, but eventually replaced it with a 3.5" drive), and a connector for your printer. I can't say why it doesn't work with Altirra's Percom emulation. It is possible there's a bug in the lst file... is was rather old when I converted it from the Atari to the Amiga, and then when I went from Amiga to PC. Or it could be in the emulation. No idea. If it emulates the 6809, 6821, 6850, WD1795, and some ram, all at the appropriate places, it should work. The BIOS does need a DSDD drive as that was what was in mine. No idea how it would respond to a SSSD drive, for example. Edited November 14, 2022 by Chilly Willy brevity Quote Link to comment Share on other sites More sharing options...
Zolaerla Posted November 14, 2022 Author Share Posted November 14, 2022 3 minutes ago, Chilly Willy said: The SRAM is at $5000, the IO is at $4000, and the ROM probably was $F000. If you look at the code, it's all PC relative, so it could go anywhere. At the time I disassembled it, I didn't know where anything at all was. I wrote my own 6809 disassembler that worked on ram in the Atari at $C000 as I had the MOSAIC memory expansion, which put banks of RAM at $C000. The disassembly you see is what was generated by the program. I pulled the BIOS from my Percom, put it in an Atari cart with a socket for the ROM chip, dumped it like any other Atari cart, figured out cpu was being used, wrote the 6809 disassembler, generated the listing, then went through it figuring out what was being done based on the serial protocol. I got the schematic later from Percom - that was a real stroke of luck, they just sent some random guy the schematics to the drive they sold him. My Percom came with a DSDD drive, a connector for another internal floppy mechanism (I had another 5.25" drive there for some time, but eventually replaced it with a 3.5" drive), and a connector for your printer. I can't say why it doesn't work with Altirra's Percom emulation. It is possible there's a bug in the lst file... is was rather old when I converted it from the Atari to the Amiga, and then when I went from Amiga to PC. Or it could be in the emulation. No idea. If it emulates the 6809, 6821, 6850, WD1795, and some ram, all at the appropriate places, it should work. The BIOS does need a DSDD drive as that was what was in mine. No idea how it would respond to a SSSD drive, for example. No worries! I can see looking at the binary for the data that even what looks like absolute addressing is all relative, so yeah, it probably doesn't matter where it's located esp. since it was mirrored a few times in the hardware anyways. Quote Link to comment Share on other sites More sharing options...
Zolaerla Posted November 15, 2022 Author Share Posted November 15, 2022 I have converted the charts I made in OpenOffice to XLS and put them up on my docs server. These are definitely a work in progress and will get updated as I continue working on this. I make no guarantees about the validity of the data here, it's mostly been collected from many different sources. The list of commands various drives support (I'm still amazed I've never seen a list like this anywhere):http://docs.zolaerla.com/Media/Atari/SIO/DriveCommandSupport.xls Green is "Everything better freakin' support it", Yellow is Percom/ED formatting, Blue is US Doubler, Magenta is Happy/Warp, and everything else gets to be unhighlighted And yeah, I have no idea about a lot of the TOMS 1050 and Archiver commands... The basic features for each drive I have been checking so far. Lots of blanks, but it's incomplete of course: http://docs.zolaerla.com/Media/Atari/SIO/DriveFeatureChart.xls And the results of doing a Get Status, Get US Doubler Speed, Happy, Read Percom, Write Absurd Percom Block (so much bad data), Write $FF Percom Block, and Write $00 Percom Block on all the devices I could get working in Altirra. This one is how I am detecting the drives, esp. in cases where drives seem really really similar: http://docs.zolaerla.com/Media/Atari/SIO/DriveIOTests.xls Quote Link to comment Share on other sites More sharing options...
phaeron Posted November 15, 2022 Share Posted November 15, 2022 6 hours ago, Zolaerla said: Whelp, I took the binary out of the .lst file and made a .rom (it's only just barely over 2KB of the 4KB ROM the S1PD had so I filled the rest in with 00), and the drive doesn't work in Altirra with that as the firmware. No idea if the .lst file had mistakes in it or not, but it does not appear to be a functional ROM for it, unfortunately. Too bad, because it's one of only 2 devices I know of that used SIO CLOCK for its high speed and I was looking forward to trying to get that to work fast. Also, this doesn't match what Altirra's hardware docs say the ROM should be at. It looks like the ROM should be at $F000, at least according to that, and $C000 isn't used at all: Making a binary out of the LST file won't work because it's missing the interrupt vectors at the end of the ROM -- which, incidentally, are the only part of the firmware that has absolute addresses. Zero-filling the rest of the ROM thus doesn't work because the 6809 promptly jumps to $0000 and crashes. However, we do know what the correct addresses are because the same firmware version was found and dumped -- it is V1.01, the earliest known S1PD/SPD firmware revision: There are several newer versions of the AT88-S1PD/SPD firmware that have been dumped and disassembled, but none of them use the SIO CLOCK hardware capability or otherwise have any high-speed command support. The only other base drive hardware type that has the SIO clock lines connected is the Indus GT and the only firmware that is known to use that function is from the TOMS Turbo Drive clone. 1 Quote Link to comment Share on other sites More sharing options...
phaeron Posted November 15, 2022 Share Posted November 15, 2022 19 hours ago, Zolaerla said: Indus GT Synch. ? ? ? $10 Missing firmware Indus GT SuperSync. ? ? ? $06 Missing firmware Synchromesh and Super Synchromesh aren't firmwares, they're extensions loaded into the drive by booting one of the Indus GT master disks: http://retrobits.net/atari/indus.shtml 1 Quote Link to comment Share on other sites More sharing options...
Zolaerla Posted November 15, 2022 Author Share Posted November 15, 2022 (edited) 4 hours ago, phaeron said: Making a binary out of the LST file won't work because it's missing the interrupt vectors at the end of the ROM -- which, incidentally, are the only part of the firmware that has absolute addresses. Zero-filling the rest of the ROM thus doesn't work because the 6809 promptly jumps to $0000 and crashes. However, we do know what the correct addresses are because the same firmware version was found and dumped -- it is V1.01, the earliest known S1PD/SPD firmware revision: There are several newer versions of the AT88-S1PD/SPD firmware that have been dumped and disassembled, but none of them use the SIO CLOCK hardware capability or otherwise have any high-speed command support. The only other base drive hardware type that has the SIO clock lines connected is the Indus GT and the only firmware that is known to use that function is from the TOMS Turbo Drive clone. Ahh... yep, that explains things. I'm not familiar with the 6809, so I didn't notice that that was missing. Well, Chilly Willy, there's what was missing! I did copy and paste in the interrupt vectors like you said, and yep, it was identical to the v1.01. So now we know that there were no mistakes in Chilly Willy's old code, which is pretty cool. Anyways, thank you for the links! I was able to find all sorts of ROMs for the various Percoms and even the 810 Turbo (making a binary from your source cause I couldn't find the binary itself that was based on). Interesting that the Percom RFD v2.1 changed the format timeout from $78 to $8C (and all the AT88 ROMs do that) so I had to update my detector. Now I can detect the later RFD, Percom AT88, and 810 Turbo as well as all the others... though they give no speed benefit. All of the Percoms crash if you send 12 $00s with a Write Percom command... no other commands work anymore once that occurs. I might have to write some more tests to find out if it's a certain value being $00 that it doesn't like. Kinda a bummer about the whole SIO clock thing, though supporting it (even though I have no reason to) adds 50 bytes to my kernel of untested code, which is why it's optional and turned off. And I didn't realize the Synchromesh stuff was loaded by a disk! That means there is some way to do it, though it might just be a routine they have to load into it to make it run faster... or something. It just seems odd to do that instead of just having it support the higher speed out of the box, or having a firmware update or whatnot. Edited November 15, 2022 by Zolaerla Quote Link to comment Share on other sites More sharing options...
E474 Posted November 15, 2022 Share Posted November 15, 2022 15 hours ago, Zolaerla said: The list of commands various drives support (I'm still amazed I've never seen a list like this anywhere): Credit where credit's due, I snagged it from a post by user "Brenski" on Atari Sector. Brenski appears to have moved on to other things, Atari Sector shut down a while back. Quote Link to comment Share on other sites More sharing options...
+CharlieChaplin Posted November 15, 2022 Share Posted November 15, 2022 The HDI (High Density Interface) by Erhard Puetz contains a Speedy upgrade, so most commands available for a Speedy 1050 are also available for a HDI. The floppy controller inside the HDI does not support ED/130k format (or MFM with 128 Bytes per sector), therefore it supports 1440k format. The TOMS Turbo, Top Drive, TOMS Multi Drive are 1050 Turbo II clones, so most commands of the 1050 Turbo are also available with the TOMS Turbo, Top Drive and TOMS Multi drive. TOMS 720 does also support 360k and IBM formats, TOMS 720 does support 360k, 720k and IBM formats. The turbo works with 68k2 Baud or pokey divisor 06 on these drives / enhancements. Besides, the turbo in normal mode is as slow as a normal 1050 without enhancements; if a turbo driver gets loaded it is faster (probably divisor 10) and if the driver + the special turbo format (sector skew / sector interleave) is used it is much faster (68k2 baud, divisor 06). Quote Link to comment Share on other sites More sharing options...
Zolaerla Posted November 15, 2022 Author Share Posted November 15, 2022 37 minutes ago, CharlieChaplin said: The HDI (High Density Interface) by Erhard Puetz contains a Speedy upgrade, so most commands available for a Speedy 1050 are also available for a HDI. The floppy controller inside the HDI does not support ED/130k format (or MFM with 128 Bytes per sector), therefore it supports 1440k format. The TOMS Turbo, Top Drive, TOMS Multi Drive are 1050 Turbo II clones, so most commands of the 1050 Turbo are also available with the TOMS Turbo, Top Drive and TOMS Multi drive. TOMS 720 does also support 360k and IBM formats, TOMS 720 does support 360k, 720k and IBM formats. The turbo works with 68k2 Baud or pokey divisor 06 on these drives / enhancements. Besides, the turbo in normal mode is as slow as a normal 1050 without enhancements; if a turbo driver gets loaded it is faster (probably divisor 10) and if the driver + the special turbo format (sector skew / sector interleave) is used it is much faster (68k2 baud, divisor 06). 1440k? As in 1.44MB 3.5" disks w/ 512 byte sectors? Cause that'd be pretty neat using a floppy drive using still readily available media with a lot of space for the old Atari. So long as the Percom block data comes through correctly, it wouldn't even be too hard to support on the code side since it's just 2,880 sectors so far as SIO communication cares. Maybe I need to find one of these, not that I hate my SIO2PC, but it just sounds cool to play with. The TOMS Turbo does sound pretty cool as well, though I don't understand why it would have a different turbo rate for the sector interleave. The transfer rate is for transferring a single sector. Yes, the skew helps when loading multiple sectors one after another, but the transfer of that individual sector wouldn't be affected... right? I'd think it would just be stuttery performance between sectors with a bad skew for the drive. Am I missing something else for that? Quote Link to comment Share on other sites More sharing options...
phaeron Posted November 15, 2022 Share Posted November 15, 2022 12 hours ago, Zolaerla said: All of the Percoms crash if you send 12 $00s with a Write Percom command... no other commands work anymore once that occurs. I might have to write some more tests to find out if it's a certain value being $00 that it doesn't like. It's actually not a crash, it's expected behavior -- you're clearing the drive present flag for the drive. It's just that most drives don't actually implement that part of the spec. From the original PERCOM spec: https://www.atariarchives.org/cfn/05/07/0073.php 8 Drive Present 00= Drive is not present any other value indicates a drive is present 1 Quote Link to comment Share on other sites More sharing options...
Zolaerla Posted November 15, 2022 Author Share Posted November 15, 2022 (edited) 21 minutes ago, phaeron said: It's actually not a crash, it's expected behavior -- you're clearing the drive present flag for the drive. It's just that most drives don't actually implement that part of the spec. From the original PERCOM spec: https://www.atariarchives.org/cfn/05/07/0073.php 8 Drive Present 00= Drive is not present any other value indicates a drive is present Why have a value present that you cannot report? After doing my Percom tests, I try to write back the original Percom block, but that doesn't fix it because they just stop working. Instead, sending a Percom block with a $00 for Drive Present for these drives tells those drives to shut down, cross their arms, and go "NOPE" whenever you try to do anything, including fix the value or even do a basic status check. If it doesn't crash it, but it refuses to function, I don't see a difference from a software perspective. I just updated my test to do all 0s except a 1 for that value, and sure enough, now it doesn't do that: Edited November 15, 2022 by Zolaerla Added screen shot Quote Link to comment Share on other sites More sharing options...
Mathy Posted November 16, 2022 Share Posted November 16, 2022 (edited) Hello Zolaeria 4 hours ago, Zolaerla said: 1440k? As in 1.44MB 3.5" disks w/ 512 byte sectors? The HDI was designed ages ago, no DOS supported 512 byte sectors at that time. So it probably is 1.44MB 3.5" 256 byte sectors. Sincerely Mathy PS the FloppyBoard also handles 1.44MB 3.5" 256 byte sectors. Edited November 16, 2022 by Mathy Quote Link to comment Share on other sites More sharing options...
phaeron Posted November 16, 2022 Share Posted November 16, 2022 5 hours ago, Zolaerla said: Why have a value present that you cannot report? The PERCOM drives have fairly simple handling of the read/write PERCOM block commands. Many models do no processing or validation at all of the values and simply copy to and from the internal option block, with the exception of the AT-88 which checks whether MFM is being requested for a drive that doesn't have a double density controllers. This means that PERCOM drives will accept and even probably work with parameters way outside of what other drives will deal with, such as 21 sectors/track. One thing that I haven't had a chance to try is what happens if an abnormally large sector size is set. I've suspected that it may be possible to overflow the 1K RAM by setting a huge sector size, which combined with the behavior of the Read Sector command returning the sector buffer even if no sector is read, would allow arbitrary memory to be read back on an unmodified drive. Thanks to the 6809's 16-bit index registers and the generic way the firmware is written, there's a good chance the transmit routine can cough up a 12K "sector" including the ROM image mirror at $7000-7FFF. Quote Link to comment Share on other sites More sharing options...
Zolaerla Posted November 16, 2022 Author Share Posted November 16, 2022 (edited) 5 hours ago, phaeron said: One thing that I haven't had a chance to try is what happens if an abnormally large sector size is set. I've suspected that it may be possible to overflow the 1K RAM by setting a huge sector size, which combined with the behavior of the Read Sector command returning the sector buffer even if no sector is read, would allow arbitrary memory to be read back on an unmodified drive. Thanks to the 6809's 16-bit index registers and the generic way the firmware is written, there's a good chance the transmit routine can cough up a 12K "sector" including the ROM image mirror at $7000-7FFF. Umm... yes, actually, that did work for the Percom RFD! Setting the number of bytes per sector to $3000 was a little high for it. Reading a 12KB "sector" to $8000, the ROM starts at $93A2 for both v1.2 and v2.1. For the Percom AT88, it starts at $9FA4 for v1.3 For the Percom AT88-SPD, it starts at $9FA1 for v1.01 Well shoot, we can make a software Percom ROM ripper now. (assuming it's identical on the real hardware, of course... this was done in Altirra) Here's a screen shot of the Percom data after just setting "Sector Size" to $3000: Edited November 16, 2022 by Zolaerla Added screen shot 1 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.