Jump to content
IGNORED

Detecting Various Types of Drives via SIO


Zolaerla

Recommended Posts

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?

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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.

  • Like 1
  • Thanks 1
Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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 by Zolaerla
Link to comment
Share on other sites

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 by Mathy
Link to comment
Share on other sites

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 by Zolaerla
  • Like 1
  • Thanks 1
Link to comment
Share on other sites

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 by Zolaerla
Link to comment
Share on other sites

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 by Chilly Willy
brevity
Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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.

 

  • Thanks 1
Link to comment
Share on other sites

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

 

  • Like 1
Link to comment
Share on other sites

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 by Zolaerla
Link to comment
Share on other sites

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.  

Link to comment
Share on other sites

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).

 

Link to comment
Share on other sites

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?

Link to comment
Share on other sites

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

 

  • Like 1
Link to comment
Share on other sites

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:

 

PercomDrivePresent.png

Edited by Zolaerla
Added screen shot
Link to comment
Share on other sites

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 by Mathy
Link to comment
Share on other sites

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.

 

Link to comment
Share on other sites

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:

 

HugeSector.png

Edited by Zolaerla
Added screen shot
  • Like 1
Link to comment
Share on other sites

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.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...