This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Last revision Both sides next revision | ||
mg_notes:cpm:softcard_cpm_ref [2018/07/03 11:43] M.G. [Installing the Softcard] |
mg_notes:cpm:softcard_cpm_ref [2019/09/30 18:28] M.G. [The Apple CP/M Disk Parameter Tables] |
||
---|---|---|---|
Line 190: | Line 190: | ||
^ Key ^ Action ^ | ^ Key ^ Action ^ | ||
- | | <key>Ctrl-S</key> | Temporarily stops character output to TTY: Output is resumed when any character is typed | | + | | <key>Ctrl-'S'</key> | Temporarily stops character output to TTY: Output is resumed when any character is typed | |
| <key>Ctrl-P</key> | Sends all character output to LPT: as well as to TTY: \\ This "printer echo" mode remains in effect until another <key>Ctrl-P</key> is typed. | | | <key>Ctrl-P</key> | Sends all character output to LPT: as well as to TTY: \\ This "printer echo" mode remains in effect until another <key>Ctrl-P</key> is typed. | | ||
Line 446: | Line 446: | ||
Because of the way the 6502 is "put to sleep" by the Z-80 SoftCard using the | Because of the way the 6502 is "put to sleep" by the Z-80 SoftCard using the | ||
DMA line on the Apple bus, ALL interrupt processing must be handled by the | DMA line on the Apple bus, ALL interrupt processing must be handled by the | ||
- | 6502. AN interrupt can occur at two times: while in Z-80 mode and while in | + | 6502. An interrupt can occur at two times: while in Z-80 mode and while in |
6502 mode: | 6502 mode: | ||
Line 951: | Line 951: | ||
===== Microsoft SoftCard Version 2.23 BIOS ===== | ===== Microsoft SoftCard Version 2.23 BIOS ===== | ||
- | THe Microsoft 2.20B BIOS uses some ingainly fixes to correct a few | + | THe Microsoft 2.20B BIOS uses some ungainly fixes to correct a few |
problems, but still a few problems remain in the area of hardware | problems, but still a few problems remain in the area of hardware | ||
interfacing. Most of these problems are corrected in the SoftCard | interfacing. Most of these problems are corrected in the SoftCard | ||
Line 958: | Line 958: | ||
The hardware interfacing is greatly improved because version 2.23 | The hardware interfacing is greatly improved because version 2.23 | ||
uses Apple Computer's protocols for operating what Apple calls | uses Apple Computer's protocols for operating what Apple calls | ||
- | Formware Cards. Most of the cards that can operate a host of | + | Firmware Cards. Most of the cards that can operate a host of |
peripheral devices and have them do all sorts of neat tricks are | peripheral devices and have them do all sorts of neat tricks are | ||
Firmware Cards. Version 2.20B could not identify Firmware Cards and | Firmware Cards. Version 2.20B could not identify Firmware Cards and | ||
Line 1032: | Line 1032: | ||
| $DD0 | $DE0 | Firmware Card initialization routine, followed by a routine that uses the Apple protocol for firmware I/O | | | $DD0 | $DE0 | Firmware Card initialization routine, followed by a routine that uses the Apple protocol for firmware I/O | | ||
| $DE1 | $DEE | Firmware Card output routine | | | $DE1 | $DEE | Firmware Card output routine | | ||
- | | $DEF | $DFA | Formware Card routine which waits for card to accept I/O | | + | | $DEF | $DFA | Firmware Card routine which waits for card to accept I/O | |
| $E00 | $E02 | CP/M entry to the warm loader routine | | | $E00 | $E02 | CP/M entry to the warm loader routine | | ||
| $E03 | $E08 | Entry to CP/M RWTS routine on Language Card bank 1 | | | $E03 | $E08 | Entry to CP/M RWTS routine on Language Card bank 1 | | ||
Line 1313: | Line 1313: | ||
^ Offset ^ Contents ^ Use ^ | ^ Offset ^ Contents ^ Use ^ | ||
- | | 00H | SPT 16b | Total number of sectors per track | | + | | 00H | SPT 16b | Total number of 128-byte sectors per track | |
- | | 02H | BSH 8b | Data allocation block shift factor, determined by the data block allocation size | | + | | 02H | BSH 8b | Data allocation block shift factor, determined by the data block allocation size \\ 3 -> 1K, 4 -> 2K, 5 -> 4K, ... | |
- | | 03H | BLM 8b | Data allocation block mask (2[BSH-1]) | | + | | 03H | BLM 8b | Data allocation block mask (2[BSH-1]) \\ 7 -> 1K, 0FH -> 2K, 01FH -> 4K, ... | |
| 04H | EXM 8b | Extent mask, determined by data block allocation size and number of disk blocks | | | 04H | EXM 8b | Extent mask, determined by data block allocation size and number of disk blocks | | ||
- | | 05H | DSM 16b | Total storage capacity of disk drive | | + | | 05H | DSM 16b | Total storage capacity of disk drive, blocks minus one | |
| 07H | DRM 16b | Total number of directory entries minus one | | | 07H | DRM 16b | Total number of directory entries minus one | | ||
- | | 09H | AL0 8b | Determines reserved directory blocks | | + | | 09H | AL0 8b | Directory allocation bitmap, byte 0. | |
- | | 0AH | AL1 8b | Determines reserved directory blocks | | + | | 0AH | AL1 8b | Directory allocation bitmap, byte 1. | |
| 0BH | CKS 16b | Size of directory check vector | | | 0BH | CKS 16b | Size of directory check vector | | ||
| 0DH | OFF 16b | No of reserved tracks at beginning of logical disk | | | 0DH | OFF 16b | No of reserved tracks at beginning of logical disk | | ||
Line 1351: | Line 1351: | ||
bit of AL1, 15=lo bit of AL1. Bits are assigned starting at bit 0 up | bit of AL1, 15=lo bit of AL1. Bits are assigned starting at bit 0 up | ||
until bit 15. Suppose nbits is the number of bits set to 1: | until bit 15. Suppose nbits is the number of bits set to 1: | ||
+ | |||
+ | |||
^ BLS ^ Directory entries ^ | ^ BLS ^ Directory entries ^ | ||
Line 1359: | Line 1361: | ||
| 16384 | 512 * nbits | | | 16384 | 512 * nbits | | ||
- | Example: if DRM=127 (128 directory entries) and BLS=1024 bytes, there | + | Example: |
+ | |||
+ | ^ ^ AL0 ^^^^^^^^ AL1 ^^^^^^^^ | ||
+ | ^ Bit ^ 7 ^ 6 ^ 5 ^ 4 ^ 3 ^ 2 ^ 1 ^ 0 ^ 7 ^ 6 ^ 5 ^ 4 ^ 3 ^ 2 ^ 1 ^ 0 ^ | ||
+ | | | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | | ||
+ | |||
+ | If DRM=127 (128 directory entries) and BLS=1024 bytes, there | ||
are 32 directory entries per block, requiring 4 reserved blocks. Thus | are 32 directory entries per block, requiring 4 reserved blocks. Thus | ||
the 4 hi bits if AL0 are set, and AL0=0FH, AL1=00H | the 4 hi bits if AL0 are set, and AL0=0FH, AL1=00H | ||
Line 1425: | Line 1433: | ||
^ Physical format: ^ A ^ B ^ C ^ D ^ | ^ Physical format: ^ A ^ B ^ C ^ D ^ | ||
- | ^ ^ Apple CP/M ^^ Enhanced ^ Standard ^ | + | ^ ^ Apple CP/M ^^ Enhanced CP/M ^ Standard \\ CP/M ^ |
- | ^ ^ 13-sect ^ 16-sect ^ 80-trk/16-sec/2-side ^ 8" SSSD ^ | + | ^ ^ 13-sect ^ 16-sect ^ 80-trk \\ 16-sec \\ 2-side ^ 8" SSSD ^ |
| Bytes/sector | 256 | 256 | 256 | 128 | | | Bytes/sector | 256 | 256 | 256 | 128 | | ||
| Sectors/track | 13 | 16 | 16 | 26 | | | Sectors/track | 13 | 16 | 16 | 26 | | ||
Line 1441: | Line 1449: | ||
**Apple CP/M DPB - Disk Parameter Block** | **Apple CP/M DPB - Disk Parameter Block** | ||
- | ^ ^ A ^ B ^ C ^ D ^ ^ | + | ^ ^ A ^ B ^ C ^ D ^ ^ |
+ | ^ ^ Apple CP/M ^^ Enhanced \\ CP/M ^ Standard \\ CP/M ^ ^ | ||
| SPT 16b | 26 | 32 | 32 | 26 | 128-byte Logical Sectors/Track | | | SPT 16b | 26 | 32 | 32 | 26 | 128-byte Logical Sectors/Track | | ||
| BSH 8b | 3 | 3 | 4 | 3 | Block shift factor | | | BSH 8b | 3 | 3 | 4 | 3 | Block shift factor | |