;       CONFIGURATION EQUATES
;
;LUNiTYPE bit definitions
;
TYPESEC:  EQU   00000110b       ;sector size
TYPEDRV:  EQU   00000001b       ;0=>floppy, 1=>hard or mini floppy
;
TYPEN48:  EQU   00001000b       ;48 TPI Mini
TYPEN96:  EQU   00010000b       ;96 TPI Mini
TYPEFPY:  EQU   00100000b       ;8" floppy

;
NLUN:   EQU     (LUN0 AND 1)+(LUN1 AND 1)+(LUN2 AND 1)+(LUN3 AND 1)
HM0:    SET     0
H0:     SET     0
NH0:    SET     0
M0:     SET     0
N48M0:  SET     0
N96M0:  SET     0
F0:     SET     0
NF0:    SET     0
b0:     SET     0
       IF      NOT LUN0
S0:     EQU     0
       ENDIF
       IF      LUN0
HM0:    SET     LUN0TYPE AND TYPEDRV
N48M0:  SET     (((LUN0SEC-1200) SHR 15) AND 1)*HM0
N96M0:  SET     (((LUN0SEC-3000) SHR 15) AND 1)*HM0 - N48M0
NH0:    SET     HM0-N48M0-N96M0
M0:     SET     (N48M0+N96M0)*LUN0NLD
H0:     SET     NH0*LUN0NLD
NF0:    SET     1-HM0
F0:     SET     NF0*LUN0NLD
B0:     SET     (NF0+N96M0)*6 + N48M0*4 + NH0*0FFh
S0:     EQU     1 SHL ((LUN0TYPE AND TYPESEC) SHR 1)
       ENDIF
HM1:    SET     0
H1:     SET     0
NH1:    SET     0
M1:     SET     0
N48M1:  SET     0
N96M1:  SET     0
F1:     SET     0
NF1:    SET     0
B1:     SET     0
       IF      NOT LUN1
S1:     EQU     0
       ENDIF
       IF      LUN1
HM1:    SET     LUN1TYPE AND TYPEDRV
N48M1:  SET     (((LUN1SEC-1200) SHR 15) AND 1)*HM1
N96M1:  SET     (((LUN1SEC-3000) SHR 15) AND 1)*HM1 - N48M1
NH1:    SET     HM1-N48M1-N96M1
M1:     SET     (N48M1+N96M1)*LUN1NLD
H1:     SET     NH1*LUN1NLD
NF1:    SET     1-HM1
F1:     SET     NF1*LUN1NLD
B1:     SET     (NF1+N96M1)*6 + N48M1*4 + NH1*0FFh
S1:     EQU     1 SHL ((LUN1TYPE AND TYPESEC) SHR 1)
       ENDIF
HM2:    SET     0
H2:     SET     0
NH2:    SET     0
M2:     SET     0
N48M2:  SET     0
N96M2:  SET     0
F2:     SET     0
NF2:    SET     0
B2:     SET     0
       IF      NOT LUN2
S2:     EQU     0
       ENDIF
       IF      LUN2
HM2:    SET     LUN2TYPE AND TYPEDRV
N48M2:  SET     (((LUN2SEC-1200) SHR 15) AND 1)*HM2
N96M2:  SET     (((LUN2SEC-3000) SHR 15) AND 1)*HM2 - N48M2
NH2:    SET     HM2-N48M2-N96M2
M2:     SET     (N48M2+N96M2)*LUN2NLD
H2:     SET     NH2*LUN2NLD
NF2:    SET     1-HM2
F2:     SET     NF2*LUN2NLD
B2:     SET     (NF2+N96M2)*6 + N48M2*4 + NH2*0FFh
S2:     EQU     1 SHL ((LUN2TYPE AND TYPESEC) SHR 1)
       ENDIF
HM3:    SET     0
H3:     SET     0
NH3:    SET     0
M3:     SET     0
N48M3:  SET     0
N96M3:  SET     0
F3:     SET     0
NF3:    SET     0
B3:     SET     0
       IF      NOT LUN3
S3:     EQU     0
       ENDIF
       IF      LUN3
HM3:    SET     LUN3TYPE AND TYPEDRV
N48M3:  SET     (((LUN3SEC-1200) SHR 15) AND 1)*HM3
N96M3:  SET     (((LUN3SEC-3000) SHR 15) AND 1)*HM3 - N48M3
NH3:    SET     HM3-N48M3-N96M3
M3:     SET     (N48M3+N96M3)*LUN3NLD
H3:     SET     NH3*LUN3NLD
NF3:    SET     1-HM3
F3:     SET     NF3*LUN3NLD
B3:     SET     (NF3+N96M3)*6 + N48M3*4 + NH3*0FFh
S3:     EQU     1 SHL ((LUN3TYPE AND TYPESEC) SHR 1)
       ENDIF
NOHRD:  EQU     H0+H1+H2+H3     ;# logical hard disks
NOFDD:  EQU     F0+F1+F2+F3     ;#8"  floppy disks
NOMINI: EQU     M0+M1+M2+M3     ;# 5.25" floppy disks
NDSK:   EQU     NOHRD+NOFDD+NOMINI      ;# disks
DPBLN:  EQU     NH0+NH1+NH2+NH3+NOFDD+NOMINI    ;# of DPBs
SX:     EQU     S0 OR S1 OR S2 OR S3
SX3:    EQU     (SX AND 8) SHR 3
SX2:    EQU     (SX AND 4) SHR 2
SX1:    EQU     (SX AND 2) SHR 1
SX0:    EQU     SX AND 1

       IF      SX3
MAXSEC: EQU     3
       ENDIF
       IF      SX2 AND (NOT SX3)
MAXSEC: EQU     2
       ENDIF
       IF      SX1 AND (NOT (SX2 OR SX3))
MAXSEC: EQU     1
       ENDIF
       IF      SX0 AND (NOT (SX1 OR SX2 OR SX3))
MAXSEC: EQU     0
       ENDIF
;


;       CP/M equates

K:      EQU     1024

BUF$SZ: EQU     (MAXSEC+1)*128+128      ;host buffer and directory
TAB$SZ: EQU     6*NDSK+16*(NDSK+DPBLN)  ;DTYPE, DSKMSK, DSKOFF, DPH, DPB
CSV$SZ: EQU     32*(NOFDD+NOMINI)       ;check vectors
ALV$SZ: EQU     192*NOFDD+255*NOHRD+128*NOMINI  ;allocation vectors
BIOSIZ: EQU     ((BUF$SZ+TAB$SZ+CSV$SZ+ALV$SZ+K-1)/K)*K+600h
                                       ;BIOS size
BIOCOD: EQU     ((TAB$SZ+K-1)/K)*K+600h ;BIOS code size
CBIOS:  EQU     MSIZE*K-BIOSIZ  ;Start of DTC BIOS
BDOS:   EQU     CBIOS-0DFAh     ;Start of BDOS
CCP:    EQU     CBIOS-1600h     ;Start of CCP
BXADR:  EQU     00h             ;BIOS bank address


;       DTC hard disk subsystem equates.

       IF      I696
;       BUS status               7   6   5   4   3   2   1   0
;                                |   |   |   |   |   |   |
REQ:    EQU     080h    ;<-------+   |   |   |   |   |   |
DIROUT: EQU     040h    ;<-----------+   |   |   |   |   |
MSSG:   EQU     020h    ;<---------------+   |   |   |   |
CMND:   EQU     010h    ;<-------------------+   |   |   |
BUSY:   EQU     008h    ;<-----------------------+   |   |
PTERR:  EQU     004h    ;<---------------------------+   |
AVINT:  EQU     002h    ;<-------------------------------+


;       Control Register         7   6   5   4   3   2   1   0
;                                    |       |   |   |   |   |
SLCT:   EQU     040h    ;<-----------+       |   |   |   |   |
;interrupt enable        <-------------------+   |   |   |   |
;REQ interrupt enable    <-----------------------+   |   |   |
;DMA interrupt enable    <---------------------------+   |   |
DODTA:  EQU     002h    ;<-------------------------------+   |
EDMA:   EQU     001h    ;<-----------------------------------+
       ENDIF


       IF      I796
;       BUS status               7   6   5   4   3   2   1   0
;                                |   |               |       |
CMDDON: EQU     080h    ;<-------+   |               |       |
PTERR:  EQU     040h    ;<-----------+               |       |
DAT16:  EQU     004h    ;<---------------------------+       |
AVINT:  EQU     001h    ;<------------------------------------+
       ENDIF

;       Controller status byte masks.

TERR:   EQU     4               ;Timeout (Softwae)
CERR:   EQU     2               ;Controller error
PERR:   EQU     1               ;Parity error on bus
FERR:   EQU     PERR OR CERR OR TERR    ;Either error


;       Controller commands.

STCMD:  EQU     000h            ;Status command
ESCMD:  EQU     003h            ;Error sense command
FDCMD:  EQU     004h            ;Format disk command
FTCMD:  EQU     006h            ;Format track command
RDCMD:  EQU     008h            ;Read disk command
WTCMD:  EQU     00Ah            ;Write disk command
FSCMD:  EQU     0C0h            ;FDD format selection
ADCMD:  EQU     0C1h            ;Assign Drive Type

RDDMA:  EQU     005h            ;Read DMA chip request
WRDMA:  EQU     001h            ;Write DMA chip request