home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / simtel / sigm / vols000 / vol050 / dtc < prev    next >
Encoding:
Text File  |  1984-04-29  |  5.2 KB  |  208 lines

  1. ;    CONFIGURATION EQUATES
  2. ;
  3. ;LUNiTYPE bit definitions
  4. ;
  5. TYPESEC:  EQU    00000110b    ;sector size
  6. TYPEDRV:  EQU    00000001b    ;0=>floppy, 1=>hard or mini floppy
  7. ;
  8. TYPEN48:  EQU    00001000b    ;48 TPI Mini
  9. TYPEN96:  EQU    00010000b    ;96 TPI Mini
  10. TYPEFPY:  EQU    00100000b    ;8" floppy
  11.  
  12. ;
  13. NLUN:    EQU    (LUN0 AND 1)+(LUN1 AND 1)+(LUN2 AND 1)+(LUN3 AND 1)
  14. HM0:    SET    0
  15. H0:    SET    0
  16. NH0:    SET    0
  17. M0:    SET    0
  18. N48M0:    SET    0
  19. N96M0:    SET    0
  20. F0:    SET    0
  21. NF0:    SET    0
  22. b0:    SET    0
  23.     IF    NOT LUN0
  24. S0:    EQU    0
  25.     ENDIF
  26.     IF    LUN0
  27. HM0:    SET    LUN0TYPE AND TYPEDRV
  28. N48M0:    SET    (((LUN0SEC-1200) SHR 15) AND 1)*HM0
  29. N96M0:    SET    (((LUN0SEC-3000) SHR 15) AND 1)*HM0 - N48M0
  30. NH0:    SET    HM0-N48M0-N96M0
  31. M0:    SET    (N48M0+N96M0)*LUN0NLD
  32. H0:    SET    NH0*LUN0NLD
  33. NF0:    SET    1-HM0
  34. F0:    SET    NF0*LUN0NLD
  35. B0:    SET    (NF0+N96M0)*6 + N48M0*4 + NH0*0FFh
  36. S0:    EQU    1 SHL ((LUN0TYPE AND TYPESEC) SHR 1)
  37.     ENDIF
  38. HM1:    SET    0
  39. H1:    SET    0
  40. NH1:    SET    0
  41. M1:    SET    0
  42. N48M1:    SET    0
  43. N96M1:    SET    0
  44. F1:    SET    0
  45. NF1:    SET    0
  46. B1:    SET    0
  47.     IF    NOT LUN1
  48. S1:    EQU    0
  49.     ENDIF
  50.     IF    LUN1
  51. HM1:    SET    LUN1TYPE AND TYPEDRV
  52. N48M1:    SET    (((LUN1SEC-1200) SHR 15) AND 1)*HM1
  53. N96M1:    SET    (((LUN1SEC-3000) SHR 15) AND 1)*HM1 - N48M1
  54. NH1:    SET    HM1-N48M1-N96M1
  55. M1:    SET    (N48M1+N96M1)*LUN1NLD
  56. H1:    SET    NH1*LUN1NLD
  57. NF1:    SET    1-HM1
  58. F1:    SET    NF1*LUN1NLD
  59. B1:    SET    (NF1+N96M1)*6 + N48M1*4 + NH1*0FFh
  60. S1:    EQU    1 SHL ((LUN1TYPE AND TYPESEC) SHR 1)
  61.     ENDIF
  62. HM2:    SET    0
  63. H2:    SET    0
  64. NH2:    SET    0
  65. M2:    SET    0
  66. N48M2:    SET    0
  67. N96M2:    SET    0
  68. F2:    SET    0
  69. NF2:    SET    0
  70. B2:    SET    0
  71.     IF    NOT LUN2
  72. S2:    EQU    0
  73.     ENDIF
  74.     IF    LUN2
  75. HM2:    SET    LUN2TYPE AND TYPEDRV
  76. N48M2:    SET    (((LUN2SEC-1200) SHR 15) AND 1)*HM2
  77. N96M2:    SET    (((LUN2SEC-3000) SHR 15) AND 1)*HM2 - N48M2
  78. NH2:    SET    HM2-N48M2-N96M2
  79. M2:    SET    (N48M2+N96M2)*LUN2NLD
  80. H2:    SET    NH2*LUN2NLD
  81. NF2:    SET    1-HM2
  82. F2:    SET    NF2*LUN2NLD
  83. B2:    SET    (NF2+N96M2)*6 + N48M2*4 + NH2*0FFh
  84. S2:    EQU    1 SHL ((LUN2TYPE AND TYPESEC) SHR 1)
  85.     ENDIF
  86. HM3:    SET    0
  87. H3:    SET    0
  88. NH3:    SET    0
  89. M3:    SET    0
  90. N48M3:    SET    0
  91. N96M3:    SET    0
  92. F3:    SET    0
  93. NF3:    SET    0
  94. B3:    SET    0
  95.     IF    NOT LUN3
  96. S3:    EQU    0
  97.     ENDIF
  98.     IF    LUN3
  99. HM3:    SET    LUN3TYPE AND TYPEDRV
  100. N48M3:    SET    (((LUN3SEC-1200) SHR 15) AND 1)*HM3
  101. N96M3:    SET    (((LUN3SEC-3000) SHR 15) AND 1)*HM3 - N48M3
  102. NH3:    SET    HM3-N48M3-N96M3
  103. M3:    SET    (N48M3+N96M3)*LUN3NLD
  104. H3:    SET    NH3*LUN3NLD
  105. NF3:    SET    1-HM3
  106. F3:    SET    NF3*LUN3NLD
  107. B3:    SET    (NF3+N96M3)*6 + N48M3*4 + NH3*0FFh
  108. S3:    EQU    1 SHL ((LUN3TYPE AND TYPESEC) SHR 1)
  109.     ENDIF
  110. NOHRD:    EQU    H0+H1+H2+H3    ;# logical hard disks
  111. NOFDD:    EQU    F0+F1+F2+F3    ;#8"  floppy disks
  112. NOMINI:    EQU    M0+M1+M2+M3    ;# 5.25" floppy disks
  113. NDSK:    EQU    NOHRD+NOFDD+NOMINI    ;# disks
  114. DPBLN:    EQU    NH0+NH1+NH2+NH3+NOFDD+NOMINI    ;# of DPBs
  115. SX:    EQU    S0 OR S1 OR S2 OR S3
  116. SX3:    EQU    (SX AND 8) SHR 3
  117. SX2:    EQU    (SX AND 4) SHR 2
  118. SX1:    EQU    (SX AND 2) SHR 1
  119. SX0:    EQU    SX AND 1
  120.  
  121.     IF    SX3
  122. MAXSEC:    EQU    3
  123.     ENDIF
  124.     IF    SX2 AND (NOT SX3)
  125. MAXSEC:    EQU    2
  126.     ENDIF
  127.     IF    SX1 AND (NOT (SX2 OR SX3))
  128. MAXSEC:    EQU    1
  129.     ENDIF
  130.     IF    SX0 AND (NOT (SX1 OR SX2 OR SX3))
  131. MAXSEC:    EQU    0
  132.     ENDIF
  133. ;
  134.  
  135.  
  136. ;    CP/M equates
  137.  
  138. K:    EQU    1024
  139.  
  140. BUF$SZ:    EQU    (MAXSEC+1)*128+128    ;host buffer and directory
  141. TAB$SZ:    EQU    6*NDSK+16*(NDSK+DPBLN)    ;DTYPE, DSKMSK, DSKOFF, DPH, DPB
  142. CSV$SZ:    EQU    32*(NOFDD+NOMINI)    ;check vectors
  143. ALV$SZ:    EQU    192*NOFDD+255*NOHRD+128*NOMINI    ;allocation vectors
  144. BIOSIZ:    EQU    ((BUF$SZ+TAB$SZ+CSV$SZ+ALV$SZ+K-1)/K)*K+600h
  145.                     ;BIOS size
  146. BIOCOD:    EQU    ((TAB$SZ+K-1)/K)*K+600h    ;BIOS code size
  147. CBIOS:    EQU    MSIZE*K-BIOSIZ    ;Start of DTC BIOS
  148. BDOS:    EQU    CBIOS-0DFAh    ;Start of BDOS
  149. CCP:    EQU    CBIOS-1600h    ;Start of CCP
  150. BXADR:    EQU    00h        ;BIOS bank address
  151.  
  152.  
  153. ;    DTC hard disk subsystem equates.
  154.  
  155.     IF    I696
  156. ;    BUS status         7   6   5   4   3   2   1   0
  157. ;                 |   |   |   |   |   |   |
  158. REQ:    EQU    080h    ;<-------+   |   |   |   |   |   |
  159. DIROUT:    EQU    040h    ;<-----------+   |   |   |   |   |
  160. MSSG:    EQU    020h    ;<---------------+   |   |   |   |
  161. CMND:    EQU    010h    ;<-------------------+   |   |   |
  162. BUSY:    EQU    008h    ;<-----------------------+   |   |
  163. PTERR:    EQU    004h    ;<---------------------------+   |
  164. AVINT:    EQU    002h    ;<-------------------------------+
  165.  
  166.  
  167. ;    Control Register     7   6   5   4   3   2   1   0
  168. ;                     |       |   |   |   |   |
  169. SLCT:    EQU    040h    ;<-----------+       |   |   |   |   |
  170. ;interrupt enable     <-------------------+   |   |   |   |
  171. ;REQ interrupt enable     <-----------------------+   |   |   |
  172. ;DMA interrupt enable     <---------------------------+   |   |
  173. DODTA:    EQU    002h    ;<-------------------------------+   |
  174. EDMA:    EQU    001h    ;<-----------------------------------+
  175.     ENDIF
  176.  
  177.  
  178.     IF    I796
  179. ;    BUS status         7   6   5   4   3   2   1   0
  180. ;                 |   |               |       |
  181. CMDDON:    EQU    080h    ;<-------+   |               |       |
  182. PTERR:    EQU    040h    ;<-----------+               |       |
  183. DAT16:    EQU    004h    ;<---------------------------+       |
  184. AVINT:    EQU    001h    ;<------------------------------------+
  185.     ENDIF
  186.  
  187. ;    Controller status byte masks.
  188.  
  189. TERR:    EQU    4        ;Timeout (Softwae)
  190. CERR:    EQU    2        ;Controller error
  191. PERR:    EQU    1        ;Parity error on bus
  192. FERR:    EQU    PERR OR CERR OR TERR     ;Either error
  193.  
  194.  
  195. ;    Controller commands.
  196.  
  197. STCMD:    EQU    000h        ;Status command
  198. ESCMD:    EQU    003h        ;Error sense command
  199. FDCMD:    EQU    004h        ;Format disk command
  200. FTCMD:    EQU    006h        ;Format track command
  201. RDCMD:    EQU    008h        ;Read disk command
  202. WTCMD:    EQU    00Ah        ;Write disk command
  203. FSCMD:    EQU    0C0h        ;FDD format selection
  204. ADCMD:    EQU    0C1h        ;Assign Drive Type
  205.  
  206. RDDMA:    EQU    005h        ;Read DMA chip request
  207. WRDMA:    EQU    001h        ;Write DMA chip request
  208.