
; 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
