This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
|
articles:iicplus_smartport_secrets [2018/06/12 17:00] M.G. [Just How Does the IIc Plus Boot Slot 6?] |
articles:iicplus_smartport_secrets [2018/07/05 15:17] (current) M.G. [The 3.5 Floppy Format] |
||
|---|---|---|---|
| Line 26: | Line 26: | ||
| The data field is: | The data field is: | ||
| - | | 5 self-syncs | $D5 $AA $AD | 699 disk bytes | KK KK KK KK | $DE $AA "off" | | + | | 5 self-syncs | $D5 $AA $AD | SS | 699 disk bytes | KK KK KK KK | $DE $AA "off" | |
| In this case, we can see the address and data prologues are the same between the 5.25%%"%% and 3.5%%"%% formats. The epilogues are defined differently. In we are used to $DE $AA $EB, but instead of $EB we have "off"... this is defined in the official documentation as a "pad byte where the drive electronics were turned off." Code that reads a 3.5%%"%% disk should not assume the byte contains anything useful. In fact, ProDOS ignores this byte even when reading a 5.25%%"%% floppy. | In this case, we can see the address and data prologues are the same between the 5.25%%"%% and 3.5%%"%% formats. The epilogues are defined differently. In we are used to $DE $AA $EB, but instead of $EB we have "off"... this is defined in the official documentation as a "pad byte where the drive electronics were turned off." Code that reads a 3.5%%"%% disk should not assume the byte contains anything useful. In fact, ProDOS ignores this byte even when reading a 5.25%%"%% floppy. | ||
| Unlike the 5.25%%"%% floppy address header, the 3.5%%"%% floppy address header is coded in 6&2 format and can be decoded from the standard nibble table.. E.g. if SS contains $96, the address is for sector 0, if it contains $97, the address is for sector 1. | Unlike the 5.25%%"%% floppy address header, the 3.5%%"%% floppy address header is coded in 6&2 format and can be decoded from the standard nibble table.. E.g. if SS contains $96, the address is for sector 0, if it contains $97, the address is for sector 1. | ||
| + | |||
| + | The 699 disk bytes encode a 12-byte sector tag + 512 data bytes. | ||
| ===== The 5.25 Floppy Format ===== | ===== The 5.25 Floppy Format ===== | ||
| Line 197: | Line 199: | ||
| jsr LC64E ; call slot 6 ProDOS block device driver | jsr LC64E ; call slot 6 ProDOS block device driver | ||
| eor #$28 ; see if A=$28, the error code for no device connected | eor #$28 ; see if A=$28, the error code for no device connected | ||
| - | bne LC775 ; if no error, don't exit yet | + | bne LC775 ; if not that error, don't exit yet |
| rts ; | rts ; | ||
| LC775: bit LC0E9 ; IWM - turn on drive motor of the unit we just accessed | LC775: bit LC0E9 ; IWM - turn on drive motor of the unit we just accessed | ||
| Line 205: | Line 207: | ||
| </code> | </code> | ||
| - | OK, so now we could look at $C58E, but I already know what's there, it's code that's been in every Apple %%//%%c: a routine to generate a denibbilizing routine that 5.25%%"%% boot sectors expect to be present. | + | OK, so now we could look at $C58E, but I already know what's there, it's code that's been in every Apple %%//%%c: a routine to generate a denibbilizing table in page 3 that 5.25%%"%% boot sectors expect to be present. |
| When that returns, we go back to the code in slot 6 that brought us here, that mostly looks like the original %%//%%c boot code. | When that returns, we go back to the code in slot 6 that brought us here, that mostly looks like the original %%//%%c boot code. | ||
| Line 222: | Line 224: | ||
| ! STA 42,X | ! STA 42,X | ||
| ! DEX | ! DEX | ||
| - | ! BNE 302 | + | ! BPL 302 |
| ! JSR C64E | ! JSR C64E | ||
| ! STA 330 | ! STA 330 | ||