; REVISION NUMBER AND SYSTEM MEMORY ; SIZE IN REFERENCE TO CP/M 2.2 CBIOS REVNUM EQU 21 ; CBIOS REVISION NUMBER CPMREV EQU 22 ; CP/M REVISION NUMBER SMSIZE EQU 62 ; SYSTEM MEMORY SIZE ; BDOS CONSTANTS ON ENTRY TO WRITE WRALL EQU 0 ;WRITE TO ALLOCATED WRDIR EQU 1 ;WRITE TO DIRECTORY WRUAL EQU 2 ;WRITE TO UNALLOCATED ; SIO #0 PORT DEFINITIONS ; CHANNEL B FOR CRT SIOAD0 EQU 0CH ; CHANNEL A DATA PORT FOR SIO 0 SIOAC0 EQU 0EH ; CHANNEL A CONTROL PORT SIOBD0 EQU 0DH ; CHANNEL B DATA PORT FOR SIO 0 SIOBC0 EQU 0FH ; CHANNEL B CONTROL PORT ; SIO #1 PORT DEFINITIONS ; CHANNEL B FOR PRINTER ; A FOR MODEM SIOAD1 EQU 20H ; CHANNEL A DATA PORT FOR SIO 1(MODEM) SIOAC1 EQU 22H ; CHANNEL A CONTROL PORT(MODEM) SIOBD1 EQU 21H ; CHANNEL B DATA PORT FOR SIO 1 SIOBC1 EQU 23H ; CHANNEL B CONTROL PORT ; CTC PORT DEFINITIONS CTCP0 EQU 08H ; RS-232 MODEM BAUD RATE GENERATOR CTCP1 EQU CTCP0+1 ; RS-232 PRINTER BAUD RATE GENERATOR CTCP2 EQU CTCP1+1 CTCP3 EQU CTCP2+1 ; RESERVED FOR TIMER ONLY CTCM0 EQU 01000111B ; CTC #0 CONTROL REGISTER BAUD1 EQU 80H ; BAUD RATE (300) FOR MODEM PORT ; SIO STATUS BIT DEFINITIONS RCVRDY EQU 0 ; RECEIVE CHARACTER AVAILABLE TRXRDY EQU 2 ; TRANSMITTER BUFFER EMPTY ; FDC EQUATES FDCCMD EQU 14H ; FDC STATUS AND COMMAND PORT FDCTRK EQU 15H ; FDC TRACK PORT FDCSEC EQU 16H ; FDC SECTOR PORT FDCDAT EQU 17H ; FDC DATA PORT ; FLOPPY DRIVE SELECT LATCH FDD EQU 18H ; DRIVE SELECT LATCH ; SYSTEM PROM SWITCH ADDRESS PROMSW EQU 04H ; SYSTEM PROM DISABLE ADDRESS DEFDSK EQU 04H ; DEFAULT DRIVE NUMBER ; DMA PORT ADDRESS DMA EQU 10H ; DMA PORT ADDRESS ; FDC STATUS BITS FDCBSY EQU 0 ; FDC BUSY IS BIT 0 FDCIND EQU 1 ; FDC INDEX HOLE DETECTED FDCTR0 EQU 2 ; FDC TRACK 0 DETECTED FDCCRC EQU 3 ; FDC CRC ERROR ENCOUNTERED FDCSEE EQU 4 ; FDC SEEK ERROR ENCOUNTERED FDCHLD EQU 5 ; FDC HEAD LOAD ACK. FDCPRT EQU 6 ; FDC DISK IS WRITE PROTECTED FDCRDY EQU 7 ; FDC DISK NOT READY BIT ; FDC STATUS BYTE MASKS ERRMSK EQU 11011100B ; MASK OFF INSIGNIFICANT BITS SEEMSK EQU 10011000B ; CHECK THE NOT READY BIT DNRMSK EQU 10000000B ; DRIVE NOT READY MASK ; FDC COMMAND BYTES RESCMD EQU 00000000B ; HOME HEAD COMMAND, NO VERIFY SEECMD EQU 00010100B ; SEEK TRACK COMMAND HDSCMD EQU 00110100B ; HEAD STEP, PREVIOUS DIRECTION HSICMD EQU 01010100B ; HEAD STEP IN, TOWARD HUB. HSOCMD EQU 01110100B ; HEAD STEP OUT, TOWARD EDGE. RDSCMD EQU 10000000B ; READ SECTOR WTSCMD EQU 10100000B ; WRITE SECTOR RDACMD EQU 11000000B ; READ SECTOR ADDRESS RDTCMD EQU 11100000B ; READ TRACK WTTCMD EQU 11110000B ; WRITE TRACK FRCCMD EQU 11010000B ; FORCE TERMINATION ; ASCII EQUATES ASCETX EQU 03H ; ASCII END OF TRANSMISSION ASCACK EQU 06H ; ASCII ACKNOWLEDGEMENT ; CP/M EQUATES CPMBUF EQU 80H ; DEFAULT CP/M DMA ADDRESS IOBYTE EQU 0003H LOGDRV EQU 0004H ; CURRENTLY LOGGED DRIVE ADDRESS JP EQU 0C3H ; JUMP OPCODE. RECLEN EQU 128 ; NO. OF BYTES IN CP/M RECORD (SECTOR). BDOSLN EQU 1600H ; LENGTH OF BDOS, IN BYTES. CCPLEN EQU 800H ; LENGTH OF CCP, IN BYTES ; DISK PARAMETER BLOCKS. ; FIRST COME THE EQUATES ; FOR DISK PARAMETER BLOCKS BPDE EQU 32 ; BYTES/DIRECTORY ENTRY ; DRIVE 0 EQUATES OFF0 EQU 2 ; NUMBER OF TRACK RESERVED FOR CP/M O.S. TPD0 EQU 40 ; NUMBER OF TRACKS/DISK BPS0 EQU 256 ; NUMBER OF BYTES/SECTOR NSIDE0 EQU 2 ; NUMBER OF SIDE/DISK PSPT0 EQU 18 ; NUMBER OF PHYSICAL SECTOR/TRACK SPT0 EQU ((BPS0/128)*PSPT0)*NSIDE0 ;NUMBER OF CP/M SECTOR/TRACK SPD0 EQU SPT0*TPD0 ; NUMBER OF SECTORS/DISK EPD0 EQU 64 ; NUMBER OF DIRECTORY ENTRIES BLS0 EQU 2048 ; BLOCK SIZE BSH0 EQU 4 ; BLOCK SHIFT FACTOR BLM0 EQU (BLS0/128)-1 ; BLOCK MASK EXM0 EQU 0 ; EXTENT MASK DSM0 EQU ((SPD0-(SPT0*OFF0))/(BLM0+1))-1 ;CP/M BLOCK PER DISK DRM0 EQU EPD0-1 ; DIRECTORY ENTRIES - 1 ALL0 EQU 10000000B ; DIRECTORY BLOCK BIT MAP LOW ALH0 EQU 0B ; DIRECTORY BLOCK BIT MAP HIGH CKS0 EQU (DRM0+1)/4 ; SIZE OF DIRECTORY CHECK VECTOR ; DRIVE 1 EQUATES OFF1 EQU 2 ; NUMBER OF TRACK RESERVED FOR CP/M O.S. TPD1 EQU 40 ; NUMBER OF TRACKS/DISK BPS1 EQU 256 ; NUMBER OF BYTES/SECTOR NSIDE1 EQU 2 ; NUMBER OF DISK SIDE PSPT1 EQU 18 ; NUMBER OF PHYSICAL SECTOR/TRACK SPT1 EQU ((BPS1/128)*PSPT1)*NSIDE1 ; NUMBER OF CP/M SECTORS/TRACK SPD1 EQU SPT1*TPD1 ; NUMBER OF SECTORS/DISK EPD1 EQU 64 ; NUMBER OF DIRECTORY ENTRIES BLS1 EQU 2048 ; BLOCK SIZE BSH1 EQU 4 ; BLOCK SHIFT FACTOR BLM1 EQU (BLS1/128)-1 ; BLOCK MASK EXM1 EQU 0 ; EXTENT MASK DSM1 EQU ((SPD1-(SPT1*OFF1))/(BLM0+1))-1 ; CP/M BLOCK PER DISK DRM1 EQU EPD1-1 ; DIRECTORY ENTRIES-1 ALL1 EQU 10000000B ; DIRECTORY BLOCK BIT MAP LOW ALH1 EQU 0B ; DIRECTORY BLOCK BIT MAP HIGH CKS1 EQU (DRM1+1)/4 ; SIZE OF DIRECTORY CHECK VECTOR ; CP/M HOST DISK CONSTANTS BLKSIZ EQU BLS0 ; CP/M ALLOCATION BLOCK SIZE HSTSIZ EQU BPS0 ; SYSTEM DISK SECTOR SIZE HSTSPT EQU PSPT0*NSIDE0 ; SYSTEM DISK SECTOR PER TRACK HSTBLK EQU HSTSIZ/128 ; CP/M SECTORS/HOST BUFFER CPMSPT EQU HSTBLK*HSTSPT ; CP/M SECTOR PER TRACK SECMSK EQU HSTBLK-1 ; SECTOR MASK MAXDRV EQU 1 ; MAXIMUM DRIVE NO. NODRVS EQU MAXDRV+1 ; NO. OF DRIVES IN SYSTEM NOTRYS EQU 10 ; NO. OF RETRIES ON SEEK, READ, WRITE. ; EQUATE FOR FLOPPY MOTOR TIME OUT ; USER CAN MODIFY THE TIME FOR APPLICATION PROGRAM. FDTOUT EQU 5 ; FLOPPY MOTOR TIME OUT = 5 SEC. ; END OF 802FEQU.MAC