home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / kaypro / kay-disk.inf < prev    next >
Text File  |  1994-07-13  |  7KB  |  222 lines

  1. This file was put together to help folks understand and use the Kaypro
  2. floppy disk formats.  John Shotsky. 2-20-88
  3.  
  4. There is no source code included for obvious reasons, however, with this
  5. information, one could write programs that need to know this stuff.
  6.  
  7. ;Disk Equates and Parameters
  8.  
  9. bitport equ    01CH        ; bit port (m80 does not support extrn bytes)
  10. drvmask equ    0FCH        ; drive select mask
  11. denmask equ    0DFH        ; density bit mask
  12. ddbit    equ    00H        ; double density bit
  13. sdbit    equ    20H        ; single density bit
  14. control equ    10H        ; I/O port of disk controller
  15. status    equ    control+0    ; status register
  16. cmnd    equ    control+0    ; command register
  17. track    equ    control+1    ; track register
  18. sector    equ    control+2    ; sector register
  19. data    equ    control+3    ; data register
  20. ficmd    equ    11010000B    ; force interrupt (Abort current command)
  21. rdcmd    equ    10000000B    ; read command
  22. wrtcmd    equ    10100000B    ; write command
  23. seekcmd equ    00010000B    ; seek command
  24. rstcmd    equ    00000000B    ; home (restore) command
  25. adrcmd    equ    11000000B    ; read track address
  26. rdmask    equ    10011100B    ; read status mask
  27. wrtmask equ    11111100B    ; write status mask
  28. tries1    equ    4        ; re-home on bad sector # of tries+1
  29. tries2    equ    15        ; re-read/write # of retries+1
  30. retcod    equ    0C9H        ; return op code
  31. nmivec    equ    0066H        ; non-maskable int vector (used in rd/wt loop)
  32.  
  33. ; This section defines the disk parameters (dph's are images moved to RAM)
  34. dph0:    defw    0,0,0,0     ; dph for unit A:
  35.     defw    dirbuf,dpbd    ; directory buffer, Disk Parameter Block
  36.     defw    csva, alva    ; check sum pointer, allocation map pointer
  37.     defb    ddbit        ; density flag for this drive
  38.  
  39.     defw    0,0,0,0     ; dph for unit B:
  40.     defw    dirbuf,dpbd    ; directory buffer, Disk Parameter Block
  41.     defw    csvb, alvb    ; check sum pointer, allocation map pointer
  42.     defb    ddbit        ; density flag for this drive
  43.  
  44. ;dpbs:    ;single sided single density
  45.     defw    18        ; (spt) sectors per track
  46.     defb    3        ; (bsh) block shift factor
  47.     defb    7        ; (blm) block mask
  48.     defb    0        ; (exm) extent mask
  49.     defw    82        ; (dsm) max logical block
  50.     defw    31        ; (drm) max directory
  51.     defb    80H        ; (al0) directory allocation map
  52.     defb    00H        ; (al1)
  53.     defw    8        ; (cks) size of directory check vector
  54.     defw    3        ; (off) reserved tracks
  55.  
  56. ;dpbd:    ; single sided double density
  57.     defw    40        ; (spt) sectors per track
  58.     defb    3        ; (bsh) block shift factor
  59.     defb    7        ; (blm) block mask
  60.     defb    0        ; (exm) extent mask
  61.     defw    194        ; (dsm) max logical block
  62.     defw    63        ; (drm) max directory
  63.     defb    0F0H        ; (al0) directory allocation map & BIOS space
  64.     defb    00H        ; (al1)
  65.     defw    16        ; (cks) size of directory check vector
  66.     defw    1        ; (off) reserved tracks
  67.  
  68. ; sector interleave table
  69.  
  70.     defb    1,6,11,16
  71.     defb    3,8,13,18
  72.     defb    5,10,15,2
  73.     defb    7,12,17,4
  74.     defb    9,14
  75. enddph:
  76.  
  77. ;      Logical BIOS entry points
  78. ;      Sector Deblocking Algorithms
  79.  
  80. blksiz    equ    1024        ;CP/M allocation size
  81. hstsiz    equ    512        ;host disk sector size
  82. hstspt    equ    10        ;host disk sectors/trk
  83. hstblk    equ    hstsiz/128    ;CP/M sects/host buff
  84. cpmspt    equ    hstblk * hstspt ;CP/M sectors/track
  85. secmsk    equ    hstblk-1    ;sector mask
  86. secshf    equ    2        ;log2(hstblk) sector mask
  87. wrall    equ    0        ;write to allocated
  88. wrdir    equ    1        ;write to directory
  89. wrual    equ    2        ;write to unallocated
  90.  
  91. =================================================================
  92. This next set is from the Microcornucopia Rom source and provides
  93. both the double sided and the quad density formats. [jbs]
  94.  
  95. ; Disk Equates and Parameters
  96.  
  97. drvmask equ    11111100b    ; drive select mask
  98. denmask equ    11011111b    ; density bit mask
  99. ddbit    equ    00000000b    ; double density bit
  100. sdbit    equ    00100000b    ; single density bit
  101. sidmsk    equ    11111011b    ; side mask
  102. sid0    equ    00000000b    ; side 0
  103. sid1    equ    00000100b    ; side 1
  104. control equ    16        ; I/O port of disk controller
  105. status    equ    control+0    ; status register
  106. cmnd    equ    control+0    ; command register
  107. track    equ    control+1    ; track register
  108. sector    equ    control+2    ; sector register
  109. data    equ    control+3    ; data register
  110. ficmd    equ    11010000B    ; force interrupt (Abort current command)
  111. rdcmd    equ    10001000B    ; read command
  112. wrtcmd    equ    10101100B    ; write command
  113. seekcmd equ    00010000B    ; seek command
  114. rstcmd    equ    00000000B    ; home (restore) command
  115. stpic    equ    01001010b    ; step in command
  116. stpoc    equ    01101010b    ; step out command
  117. adrcmd    equ    11000100B    ; read track address
  118. rdmask    equ    10011100B    ; read status mask
  119. wrtmask equ    11111100B    ; write status mask
  120. tries1    equ    4        ; re-home on bad sector # of tries+1
  121. tries2    equ    15        ; re-read/write # of retries+1
  122. ssmblk    equ    194
  123. dsmblk    equ    ssmblk*2
  124. retcod    equ    0C9H        ; return op code
  125. nmivec    equ    0066H        ; non-maskable interupt vector
  126.                 ; (used in rd/wt loop)
  127. spdsafe equ    03h        ; mask to steprate
  128.  
  129. ; This section defines the disk parameters (dph's are images moved to RAM)
  130. dph0:    defw    0,0,0,0     ; dph for unit A:
  131.     defw    dirbuf,dpbd    ; directory buffer, Disk Parameter Block
  132.     defw    csva, alva    ; check sum pointer, allocation map pointer
  133.     defb    ddbit        ; density flag for this drive
  134.  
  135.     defw    0,0,0,0     ; dph for unit B:
  136.     defw    dirbuf,dpbd    ; directory buffer, Disk Parameter Block
  137.     defw    csvb, alvb    ; check sum pointer, allocation map pointer
  138.     defb    ddbit        ; density flag for this drive
  139.  
  140. ;dpbs:    ;single sided single density-NOBODY uses this! [jbs]
  141.     defw    18        ; (spt) sectors per track
  142.     defb    3        ; (bsh) block shift factor
  143.     defb    7        ; (blm) block mask
  144.     defb    0        ; (exm) extent mask
  145.     defw    82        ; (dsm) max logical block
  146.     defw    31        ; (drm) max directory
  147.     defb    80H        ; (al0) directory allocation map
  148.     defb    00H        ; (al1)
  149.     defw    8        ; (cks) size of directory check vector
  150.     defw    3        ; (off) reserved tracks
  151.  
  152. ssdpbd: ; single sided double density -Original K-II [jbs]
  153.     defw    40        ; (spt) sectors per track
  154.     defb    3        ; (bsh) block shift factor
  155.     defb    7        ; (blm) block mask
  156.     defb    0        ; (exm) extent mask
  157.     defw    194        ; (dsm) max logical block
  158.     defw    63        ; (drm) max directory
  159.     defb    0F0H        ; (al0) directory allocation map & BIOS space
  160.     defb    00H        ; (al1)
  161.     defw    16        ; (cks) size of directory check vector
  162.     defw    1        ; (off) reserved tracks
  163.  
  164. ; sector interleave table
  165. stbl:    defb    1,6,11,16
  166.     defb    3,8,13,18
  167.     defb    5,10,15,2
  168.     defb    7,12,17,4
  169.     defb    9,14
  170. enddph:
  171.  
  172. dphx:    defw    0,0,0,0     ; dph for c:
  173.     defw    dirbuf,dpbd
  174.     defw    csvc,alvc
  175.     defb    ddbit
  176.  
  177.     defw    0,0,0,0     ; dph for d:
  178.     defw    dirbuf,dpbd
  179.     defw    csvd,alvd
  180.     defb    ddbit
  181. xendx:
  182.  
  183. dsdpbd: ;double sided double density - Original K-IV [jbs]
  184.     defw    40        ; (spt) sectors per track
  185.     defb    4        ; (bsh) block shift factor
  186.     defb    15        ; (blm) block mask
  187.     defb    1        ; (exm) extent mask
  188.     defw    196        ; (dsm) max logical block
  189.     defw    63        ; (drm) max directory
  190.     defb    0C0H        ; (al0) directory allocation map & BIOS space
  191.     defb    00H        ; (al1)
  192.     defw    16        ; (cks) size of directory check vector
  193.     defw    1        ; (off) reserved tracks
  194.  
  195. dtrk:    ; Double sided quad density - uC's K-VIII
  196.     defw    40
  197.     defb    05h
  198.     defb    1fh
  199.     defb    03h
  200.     defb    0C4h,0
  201.     defb    5fh,0
  202.     defb    80h,0
  203.     defb    18h,0
  204.     defb    2,0
  205.  
  206. ; Logical BIOS entry points & Deblocking
  207. ;    Logical BIOS entry points
  208. ;    Sector Deblocking Algorithms
  209.  
  210. blksiz    equ    1024        ;CP/M allocation size
  211. hstsiz    equ    512        ;host disk sector size
  212. hstspt    equ    10        ;host disk sectors/trk
  213. hstblk    equ    hstsiz/128    ;CP/M sects/host buff
  214. cpmspt    equ    hstblk * hstspt ;CP/M sectors/track
  215. secmsk    equ    hstblk-1    ;sector mask
  216. secshf    equ    2        ;log2(hstblk) sector mask
  217. wrall    equ    0        ;write to allocated
  218. wrdir    equ    1        ;write to directory
  219. wrual    equ    2        ;write to unallocated
  220.  
  221. That's IT folks...!!!
  222.