-
Notifications
You must be signed in to change notification settings - Fork 20
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Issues with the new 8 drives per slot feature of ProDOS8 2.5 #168
Comments
Are there docs on the new unit number scheme? There is a fair bit of code in A2D that assumes the top nibble of unit numbers is 3 bits for slot and one bit for drive, as in previous versions of ProDOS, and uses this to index into the 16-entry driver entry point table. So... this will probably be a lot of work to support. |
Bit layout for P8 2.5 unitnum: Where DSSS are Drive bit 0 and Slot bits 2:0 like previous P8 versions. X is Drive bit 2 and Y is Drive bit 1. To calc the drive # (1-8) from a P8 2.5 unitnum in Acc: The internal /RAM drive in slot 3, drive 2 has a unitnum of $B0 (vs $BF in 2.4). P8 2.5 now supports up to 37 drives stored at $BF32-$BF56, with a $00 terminator at $BF57. All 8 drives per slot use the per-slot driver handler at $BF12-$BF1F with the 'drive 2' driver unused. However the internal /RAM driver is still called through the 'slot 3, drive 2' handler at $BF26 for compatibility with apps which disconnect /RAM in order to use aux memory. |
Thanks. Well... that will be a lot of work. 😬
So... good to track this, but I can't imagine getting around to it. PRs welcome, of course! And I'm happy to chat with anyone to answer details about how DeskTop works internally where it's not obvious from the code. (I can suggest starter bugs, like wiring up P8 2.5 date handling #169 ...) |
I am not surprised. Copy II Plus has needed a fair amount of rework too. My thinking so far has been to fork the app code so the P8 2.5 version can expect to have extended dates, clock drivers with second/millisecond precision, 8-drives per slot, lowercase names, '../' paths, etc. Trying to support both 2.4 & 2.5 in the same app runtime would be hard/large. Q:
Apps can choose to support fewer drives. 37 is just the max space available under P8 2.5. |
Other unit number uses:
S3D2 is the main reason. The table is backed up, then restored on exit: https://github.com/a2stuff/a2d/blob/master/desktop/desktop_main.s#L15550 But additionally, if creating an icon for a device fails with DEVICE_NOT_CONNECTED it is removed: https://github.com/a2stuff/a2d/blob/master/desktop/desktop_main.s#L16174 And, for some reason, SmartPort devices mapped to Slot 2 get special treatment: https://github.com/a2stuff/a2d/blob/master/desktop/desktop_main.s#L15692
Open ended question...
|
Correctly following https://prodos8.com/docs/technote/21/ would a good initial patch here - stop using the low nibble of the unit_num at all, but continue to distinguish the common drive types (Disk II, RAM, etc). |
Hmm, that's actually mostly done. The low nibble appears to be used only for the Disk II case which is redundantly handled later anyway. |
Hmm part deux: distinguishing non-$CnXX drivers will still require heuristics, e.g. RAMdisk at $FF00 and Disk II at $D000. I guess we trust the SSS bits at that point, ignore slot 3, and use firmware bytes from that point. |
Previously: * Detecting /RAM (S3D2) used a hardcoded $BF (not valid in P8 2.5) * Low nibble $F treated as "removable" * Low nibble $0 treated as "Disk II" Now: * $Bn is trusted as /RAM * Any Slot 3 device treated as RAM disk (not just RAM.DRV.SYSTEM's) * Disk II distinguished using firmware bytes ($CnFF = $00) * Removable devices detected using firmware bytes ($CnFE bit 7 set) Also: * /RAM is now restored properly if DeskTop is launched from Selector. * Selector removes/restores /RAM slightly more correctly In service of #168
For posterity: updating
Some of these should "just work" if the mask is changed to |
It's not actually a bug, but one issue I've run into while testing both the A2D 1.2 pre-alpha 8 (which is incredibly awesome, BTW) and the ProDOS8 2.5 alpha 7 on my Apple //e is that A2D does not play nice with the new feature of more than 2 drives per slot of ProDOS 2.5 (https://github.com/ProDOS-8). It fails rather gracefully in that it justs duplicates the first two partitions of my CFFA card (that has 4 partitions). Although it seems to recognize that partitions 7/3 and 7/4 exist and are not currently remapped to slot 4 (as in every previous version of ProDOS, including 2.4.2), it apears to get confused and mounts partitions 1 and 2 twice on the desktop. Everything else works perfectly, and I had no issues launching any of the apps on my Selector List (they're all on the 1st and 2nd partitions), I just don't have access to any partitions beyond the first two.
ProDOS 2.5 is still in alpha, so only those users on the bleeding edge of Apple II software (a rather quaint concept in 2019) are likely to run into this issue for now, and it's not like anybody should be relying on pre-release software anyway (for the record, I only tried ProDOS 2.5 by booting from a floppy, my regular configuration boots 2.4.2, the stable release, and A2D 1.2-8 works fantastically with that).
This is more of a humble 'heads up' than a feature request or a bug report, seeing as both projects are currently in development, that perhaps it would be interesting to contemplate the new ProDOS features (2.5 also introduces support for lowercase file and volume names, and removes the 51 files limit on the root directory, though I didn't run into any issues with that in my limited testing), since it's likely that both projects share the same target audience.
The text was updated successfully, but these errors were encountered: