; 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