home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / ENTERPRS / CPM / UTILS / S / ZEN2.LBR / Z217DEF.LIB < prev    next >
Text File  |  2000-06-30  |  7KB  |  242 lines

  1.  
  2. ;**    Z217 EQUATES
  3. ;
  4.  
  5. WINSPT    EQU    18            ;# PHYSICAL SECTORS PER TRACK
  6. WICSZ    EQU    512            ;CELL SIZE USED
  7.  
  8. ;*    PORT ASSIGNMENTS
  9.  
  10. WIPBASE    EQU    0AEH            ;BASE PORT
  11. WIPCMD    EQU    WIPBASE+0        ; COMMAND
  12. WIPSTAT    EQU    WIPBASE+0        ; HARDWARE STATUS
  13. WIPRES    EQU    WIPBASE+1        ; RESET
  14. WIPINTA    EQU    WIPBASE+1        ; INTERRUPT ACKNOWLEDGE/HARDWARE STATUS
  15.  
  16. ;*    HARDWARE STATUS REGISTER
  17.  
  18. WISINT    EQU    10000000B        ;INTERRUPT PENDING
  19. WISBUSY    EQU    01000000B        ;BUSY
  20. WISBM    EQU    00100000B        ;BURST MODE
  21. WISTMA    EQU    00010000B        ;TMA IN PROGRESS
  22. WISERR    EQU    00001000B        ;ERROR
  23. WISIERR    EQU    00000100B        ;IMMEDIATE MODE ERROR
  24. WISPAUS    EQU    00000010B        ;PAUSED
  25. WISDONE    EQU    00000001B        ;DONE
  26.  
  27. ;*    DIRECT MODE COMMANDS
  28.  
  29. WISETUP    EQU    08H            ;SETUP
  30. WIEXEC    EQU    10H            ;EXECUTE
  31. WIPAUS    EQU    18H            ;PAUSE
  32. WICONT    EQU    20H            ;CONTINUE
  33.  
  34. ;*    CONTROL BLOCK COMMANDS
  35.  
  36. WIRECAL    EQU    00H            ;RECALIBRATE
  37. WISTAT    EQU    01H            ;STATUS
  38. WIWRL    EQU    10H            ;WRITE LOGICAL
  39. WIRDL    EQU    11H            ;READ LOGICAL
  40. WISEKL    EQU    13H            ;SEEK LOGICAL
  41. WIFMTD    EQU    20H            ;FORMAT DRIVE
  42. WIFMTT    EQU    21H            ;FORMAT TRACK
  43. WISDP    EQU    22H            ;SET DRIVE PARAMETERS
  44. WIWRA    EQU    30H            ;WRITE ABSOLUTE
  45. WIRDA    EQU    31H            ;READ ABSOLUTE
  46. WISEKA    EQU    33H            ;SEEK ABSOLUTE
  47.  
  48. ;*    FORMAT OF COMMANDS
  49.  
  50. ;        TYPE 0 & 1
  51.  
  52.     ORG    0
  53. WI01BLK    RB    0
  54. WI01OP    RB    1            ;COMMAND OP CODE
  55. WI01DHS    RB    1            ;BIT 7-5 -- DRIVE SELECT
  56.                     ;    4-0 -- HIGH BYTE OF LOG SECTOR #
  57. WI01D    EQU    11100000B        ;  DRIVE SELECT MASK
  58. WI01HS    EQU    00011111B        ;  HIGH BYTE OF LOG SECTOR # MASK
  59. WI01MS    RB    1            ;MIDDLE BYTE OF LOGICAL SECTOR #
  60. WI01LS    RB    1            ;LOW BYTE OF LOGICAL SECTOR #
  61. WI01SC    RB    1            ;SECTOR COUNT
  62. WI01HT    RB    1            ;HIGH BYTE OF DATA TMA ADDRESS
  63. WI01MT    RB    1            ;MIDDLE BYTE OF DATA TMA ADDRESS
  64. WI01LT    RB    1            ;LOW BYTE OF DATA TMA ADDRESS
  65. WI01HN    RB    1            ;HIGH BYTE OF NEXT COMMAND ADDRESS
  66. WI01MN    RB    1            ;MIDDLE BYTE OF NEXT COMMAND ADDRESS
  67. WI01LN    RB    1            ;LOW BYTE OF NEXT COMMAND ADDRESS
  68. WI01FLG    RB    1            ;FLAGS
  69. WI01EEC    RB    1            ;ERROR CODE
  70. WI01EDH    RB    1            ;BIT 7-5 -- DRIVE SELECT
  71.                     ;    4-0 -- HIGHT BYTE OF LOG SECTOR #
  72. WI01ED    EQU    11100000B        ;  ERROR DRIVE SELECT MASK
  73. WI01EHS    EQU    00011111B        ;  ERROR HIGH BYTE OF LOG SECTOR # MASK
  74. WI01EMS    RB    1            ;ERROR MIDDLE BYTE OF LOGICAL SECTOR #
  75. WI01ELS    RB    1            ;ERROR LOW BYTE OF LOGICAL SECTOR #
  76.     IF    ASM86
  77. WI01BKL    EQU    OFFSET $ - OFFSET WI01BLK
  78.     ENDIF
  79.     IF    NOT ASM86
  80. WI01BKL    EQU    $-WI01BLK
  81.     ENDIF
  82.     IF    WI01BKL NE 16
  83. %:    TYPE 0 & 1 COMMAND BLOCK IS WRONG LENGTH
  84.     ENDIF
  85.  
  86. ;        TYPE 2
  87.  
  88.     ORG    0
  89. WI2BLK    RB    0
  90. WI2OP    RB    1            ;COMMAND OP CODE
  91. WI2DH    RB    1            ;BIT 7-5 -- DRIVE SELECT
  92.                     ;    2-0 -- (MAX) HEAD #
  93. WI2D    EQU    11100000B        ;  DRIVE SELECT MASK
  94. WI2H    EQU    00000111B        ;  HEAD # MASK
  95. WI2HMC    RB    1            ;HIGH BYTE OF MAX CYLINDER #
  96. WI2LMC    RB    1            ;LOW BYTE OF MAX CYLINDER #
  97. WI2HRWC    RB    1            ;HIGH BYTE OF RWC CYLINDER #
  98. WI2LRWC    RB    1            ;LOW BYTE OF RWC CYLINDER #
  99. WI2HPC    RB    1            ;HIGH BYTE OF PRE-COMP CYLINDER #
  100. WI2LPC    RB    1            ;LOW BYTE OF PRE-COMP CYLINDER #
  101. WI2SR    RB    1            ;STEP RATE (LSB = 20uS)
  102. WI2ECC    RB    1            ;ECC SPAN
  103. WI2CSIF    RB    1            ;BIT 6   -- CELL SIZE
  104.                     ;    4-0 -- INTERLEAVE FACTOR
  105. WI2CS    EQU    01000000B        ;  CELL SIZE MASK
  106. WI2CS5    EQU    00000000B        ;    CELL SIZE =  512 BYTES/LOG SECTOR
  107. WI2CS1K    EQU    01000000B        ;    CELL SIZE = 1024 BYTES/LOG SECTOR
  108. WI2IF    EQU    00011111B        ;  INTERLEAVE FACTOR MASK
  109. WI2FC    RB    1            ;FILL CHARACTER
  110. WI2EEC    RB    1            ;ERROR CODE
  111. WI2EHS    RB    1            ;BIT 7-5 -- ERROR HEAD #
  112.                     ;    4-0 -- ERROR SECTOR #
  113. WI2EH    EQU    11100000B        ;  ERROR HEAD # MASK
  114. WI2ES    EQU    00011111B        ;  ERROR SECTOR # MASK
  115. WI2EHC    RB    1            ;ERROR HIGH BYTE OF CYLINDER #
  116. WI2ELC    RB    1            ;ERROR LOW BYTE OF CYLINDER #
  117.     IF    ASM86
  118. WI2BLKL    EQU    OFFSET $ - OFFSET WI2BLK
  119.     ENDIF
  120.     IF    NOT ASM86
  121. WI2BLKL EQU    $-WI2BLK
  122.     ENDIF
  123.     IF    WI2BLKL NE 16
  124. %:    TYPE 2 COMMAND BLOCK IS WRONG LENGTH
  125.     ENDIF
  126.  
  127. ;        TYPE 3
  128.  
  129.     ORG    0
  130. WI3BLK    RB    0
  131. WI3OP    RB    1            ;COMMAND OP CODE
  132. WI3DH    RB    1            ;BIT 7-5 -- DRIVE SELECT
  133.                     ;    2-0 -- HEAD #
  134. WI3D    EQU    11100000B        ;  DRIVE SELECT MASK
  135. WI3H    EQU    00000111B        ;  HEAD # MASK
  136. WI3HC    RB    1            ;HIGH BYTE OF CYLINDER #
  137. WI3LC    RB    1            ;LOW BYTE OF CYLINDER #
  138. WI3S    RB    1            ;SECTOR #
  139. WI3HT    RB    1            ;HIGH BYTE OF DATA TMA ADDRESS
  140. WI3MT    RB    1            ;MIDDLE BYTE OF DATA TMA ADDRESS
  141. WI3LT    RB    1            ;LOW BYTE OF DATA TMA ADDRESS
  142. WI3HN    RB    1            ;HIGH BYTE OF NEXT COMMAND ADDRESS
  143. WI3MN    RB    1            ;MIDDLE BYTE OF NEXT COMMAND ADDRESS
  144. WI3LN    RB    1            ;LOW BYTE OF NEXT COMMAND ADDRESS
  145. WI3FLG    RB    1            ;FLAGS
  146. WI3EEC    RB    1            ;ERROR CODE
  147. WI3EHS    RB    1            ;BIT 7-5 -- ERROR HEAD #
  148.                     ;    4-0 -- ERROR SECTOR #
  149. WI3EH    EQU    11100000B        ;  ERROR HEAD # MASK
  150. WI3ES    EQU    00011111B        ;  ERROR SECTOR # MASK
  151. WI3EHC    RB    1            ;ERROR HIGH BYTE OF CYLINDER #
  152. WI3ELC    RB    1            ;ERROR LOW BYTE OF CYLINDER #
  153.     IF    ASM86
  154. WI3BLKL    EQU    OFFSET $ - OFFSET WI3BLK
  155.     ENDIF
  156.     IF    NOT ASM86
  157. WI3BLKL    EQU    $-WI3BLK
  158.     ENDIF
  159.     IF    WI3BLKL NE 16
  160. %:    TYPE 3 COMMAND BLOCK IS WRONG LENGTH
  161.     ENDIF
  162.  
  163. ;        COMMAND BLOCK FLAG BYTE
  164.  
  165. WIFINTE    EQU    10000000B        ;INTERRUPTS ENABLED
  166. WIFBM    EQU    01000000B        ;USE BURST MODE TMA
  167. WIFIPCC    EQU    00100000B        ;IGNORE PAUSE AND CONTINUE COMMANDS
  168. WIFIDR    EQU    00000100B        ;DISABLE RETRIES
  169. WIFDECC    EQU    00000010B        ;DISABLE ECC
  170. WIFCHN    EQU    00000001B        ;CHAIN NEXT COMMAND IMMEDIATELY
  171.  
  172. ;*    FORMAT OF STATUS RETURNED BY 01 COMMAND
  173.  
  174.     ORG    0
  175. WISBLK    RB    0
  176. WISFLG    RB    1            ;FLAG BYTE
  177. WISDR    EQU    00000100B        ;  BIT 2 -- DRIVE READY
  178. WISACC    EQU    00000010B        ;      1 -- ACCESSED
  179. WISSC    EQU    00000001B        ;      0 -- SEEK COMPLETE
  180. WISHMC    RB    1            ;HIGH BYTE OF MAX CYLINDER #
  181. WISLMC    RB    1            ;LOW BYTE OF MAX CYLINDER #
  182. WISHRWC    RB    1            ;HIGH BYTE OF RWC CYLINDER #
  183. WISLRWC    RB    1            ;LOW BYTE OF RWC CYLINDER #
  184. WISHPC    RB    1            ;HIGH BYTE OF PRE-COMP CYLINDER #
  185. WISLPC    RB    1            ;LOW BYTE OF PRE-COMP CYLINDER #
  186. WISHCC    RB    1            ;HIGH BYTE OF CURRENT CYLINDER #
  187. WISLCC    RB    1            ;LOW BYTE OF CURRENT CYLINDER #
  188. WISSR    RB    1            ;STEP RATE (LSB = 20uS)
  189.     RB    1            ;RESERVED
  190. WISIF    RB    1            ;INTERLEAVE FACTOR
  191. WISCS    RB    1            ;CELL SIZE
  192. WISCS5    EQU    1            ;  =  512 BYTES/LOG SECTOR
  193. WISCS1K    EQU    2            ;  = 1024 BYTES/LOG SECTOR
  194. WISMH    RB    1            ;MAX HEAD #
  195. WISFC    RB    1            ;FILL CHARACTER
  196.     RB    1            ;RESERVED
  197.     IF    ASM86
  198. WISBLKL    EQU    OFFSET $ - OFFSET WISBLK
  199.     ENDIF
  200.     IF    NOT ASM86
  201. WISBLKL    EQU    $-WISBLK
  202.     ENDIF
  203.     IF    WISBLKL NE 16
  204. %:    STATUS BLOCK IS WRONG LENGTH
  205.     ENDIF
  206.  
  207. ;*    ERROR CODES
  208.  
  209. WIENE    EQU    00H            ;NO ERROR
  210. WIEDNR    EQU    01H            ;DRIVE NOT READY
  211. WIENSC    EQU    02H            ;NO SEEK COMPLETE
  212. WIENT0    EQU    03H            ;NO TRACK 0
  213. WIENI    EQU    04H            ;NO INDEX
  214. WIENDS    EQU    05H            ;NO DRIVE SELECT
  215. WIEHNF    EQU    10H            ;HEADER ADDRESS MARK NOT FOUND
  216. WIESEK    EQU    11H            ;SEEK ERROR (BAD CYLINDER # IN HEADER)
  217. WIESNF    EQU    12H            ;SECTOR NOT FOUND
  218. WIEECCH    EQU    13H            ;ECC ERROR IN HEADER
  219. WIEDNF    EQU    14H            ;DATA ADDRESS MARK NOT FOUND
  220. WIENECC    EQU    15H            ;NONCORRECTABLE ECC ERROR IN DATA FIELD
  221. WIEECC    EQU    16H            ;CORRECTABLE ECC ERROR IN DATA FIELD
  222. WIEWF    EQU    17H            ;WRITE FAULT
  223. WIEIOP    EQU    20H            ;ILLEGAL OP CODE
  224. WIEIDA    EQU    21H            ;ILLEGAL DISK ADDRESS
  225. WIEFMTP    EQU    22H            ;FORMAT PROTECTED
  226. WIEWRP    EQU    23H            ;WRITE PROTECTED
  227. WIEMISC    EQU    30H            ;MISCELLANEOUS ERROR
  228. WIEDIAG    EQU    40H            ;ERROR DURING DIAGNOSTIC
  229. WIEPNA    EQU    80H            ;PARTION NOT ASSIGNED
  230. WIESNWP    EQU    81H            ;SECTOR NOT WITHIN PARTITION
  231.  
  232. ;*    CP/M RELATED VALUES
  233.  
  234. WIRPS    EQU    WICSZ/128        ;CP/M RECORDS PER SECTOR
  235. WIRPT    EQU    WIRPS*WINSPT        ;CP/M RECORDS PER TRACK
  236. WINST    EQU    1            ;# OF SYSTEM TRACKS
  237. WINSYS    EQU    WINST*WINSPT        ;# SECTORS IN SYSTEM TRACK(S)
  238.  
  239. WIMIN    EQU    1024/WICSZ*64+WINSYS    ;MINIMUM # USEABLE SECTORS
  240. WIMAX    EQU    1024/WICSZ*8*1024+WINSYS ;MAX # USEABLE SECTORS
  241.  
  242.