DataMuseum.dk

Presents historical artifacts from the history of:

Christian Rovsing CR7, CR8 & CR16 CP/M

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about Christian Rovsing CR7, CR8 & CR16 CP/M

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦0ad2706d0⟧ TextFile

    Length: 10496 (0x2900)
    Types: TextFile
    Names: »PORTS.LIB«

Derivation

└─⟦b445f10af⟧ Bits:30004389 CP/M Plus Source files
    └─ ⟦this⟧ »PORTS.LIB« 

TextFile


;========================================================================
;=	CR8/CR7 PORTS EQUATES FOR CP/M 3.0 BIOS - DATE:840403
;========================================================================

TRUE		EQU	-1
FALSE		EQU	NOT TRUE

CR7		EQU	7
CR8		EQU	8

MSC9205		EQU	5
DTC510A		EQU	4

ST406		EQU	0000$0001B
ST506		EQU	0000$0010B
ST412		EQU	0000$0100B
CDCWREN		EQU	0000$1000B

mf1		EQU	0001$0000B	;ONE 5 1/4" MINI FLOPPY
mf2		EQU	0010$0000B	;TWO   -    -     -
f1		EQU	0100$0000B	;ONE STANDARD 8" FLOPPY
cr16mfd		equ	1000$0000b	;cr16 format disk

;========================================================================
;=	CONDITIONAL ASSEMBLY PARAMETERS					=
;========================================================================
BANKED		EQU	TRUE
HDCTRL		EQU	dtc510a		;MSC9205
CRTYPE		EQU	cr7		;CR8
HWCONFIG	EQU	st412+mf1	;+cr16mfd
;========================================================================
VERSION		EQU	11
MONTH		EQU	04
DAY		EQU	03
YEAR		EQU	84
;========================================================================

TPABANK		EQU	1
	if	banked
SYSBANK		EQU	0
	else
SYSBANK		EQU	TPABANK
	endif
;------------------------------------
	if	(hwconfig and 0fh) eq st506
HD$TRKS		EQU	153
HD$HEAD		EQU	3
HD$MC1		EQU	1H
HD$MC2		EQU	31H
	endif
;------------------------------------
	if	(hwconfig and 0fh) eq st412
HD$TRKS		EQU	306
HD$HEAD		EQU	3
HD$MC1		EQU	1H
HD$MC2		EQU	31H
	endif
;------------------------------------
	if	(hwconfig and 0fh) eq st406
HD$TRKS		EQU	306
HD$HEAD		EQU	1
HD$MC1		EQU	1
HD$MC2		EQU	31H
	endif
;------------------------------------
	if	(hwconfig and 0fh) eq cdcwren
HD$TRKS		EQU	675
HD$HEAD		EQU	4
HD$MC1		EQU	2
HD$MC2		EQU	0A2H
	endif
;------------------------------------
	if	(hdctrl eq msc9205)
HD$PSPT		EQU	17
	else	
HD$PSPT		EQU	18
	endif
;------------------------------------
ccp$drive	equ	1		;drive A:
;************************************************************************
;*	CHIP BASES							*
;************************************************************************

P$CTC		EQU	000H		;00 - 07
P$PIO		EQU	008H		;PARALLEL I/O PORTS 8255(08 - 0F)
P$SIO		EQU	010H		;10 - 1F
P$MAP3		EQU	020H		;MAP REGISTER I/O (20 - 2F)
P$DMA		EQU	030H		;30 - 3F
P$MFDC		EQU	040H		;MINI FLOPPY DISK CONTROLLER
P$PIT		EQU	0D0H		;PROGRAMMABLE INTERVAL TIMER 8253
	if	(crtype eq CR8)
P$HDC		EQU	090H		;HARD DISK CONTROLLER
	else
P$HDC		EQU	05AH		;HARD DISK CONTROLLER
P$UART		EQU	0E0H		;8251
	endif
;************************************************************************
;*	CTC PORTS AND COMMANDS						*
;************************************************************************

P$DMA$INT	EQU	P$CTC+00H	;CTC CH0,(DMA INTERRUPTS)
P$MFD$INT	EQU	P$CTC+01H	;CTC CH1,(FLOPPY INTERRUPT)
P$TIM$INT	EQU	P$CTC+02H	;CTC CH2,16MS TIMER INTERRUPT
P$SCI$INT	EQU	P$CTC+03H	;CTC CH3,(SCI MULTIBUS INTERRUPT)

C$CTC$RESET	EQU	03H		;

;************************************************************************
;*	PIO PORTS AND COMMANDS						*
;************************************************************************
	if	(crtype eq CR8)
P$BANK$DMA	EQU	P$PIO+0		;MAP REGISTER
	endif
P$SWITCH	EQU	P$PIO+1		;PORT B
P$RAMCTL	EQU	P$PIO+2		;PORT C

M$TEST$LED	EQU	040H		;FOR PORT C
M$HD$SELECT	EQU	001H		;FOR PORT B

;************************************************************************
;*	SIO PORTS AND COMMANDS						*
;************************************************************************
	if	(crtype eq CR8)
P$LPT$DATA	EQU	P$SIO+0		;LINE PRINTER DATA PORT
P$LPT$STAT	EQU	P$SIO+2		;LINE PRINTER CONTROL/STATUS
	endif
P$CRT$STAT	EQU	P$SIO+3		;CONSOLE CONTROL/STATUS
P$CRT$DATA	EQU	P$SIO+1		;CONSOLE DATA PORT
P$MODEM$DATA	EQU	P$SIO+0		;MODEM DATA PORT
P$MODEM$STAT	EQU	P$SIO+2		;MODEM CONTROL/STATUS PORT

C$SIO$RESEXT	EQU	010H
C$SIO$CHRES	EQU	018H
C$SIO$RESTXI	EQU	028H
C$SIO$ERRRES	EQU	030H

;************************************************************************
;*	DMA PORTS AND COMMANDS						*
;************************************************************************

P$DMA$ADR0	EQU	P$DMA+00H	;
P$DMA$CNT0	EQU	P$DMA+01H	;
P$DMA$ADR1	EQU	P$DMA+02H	;
P$DMA$CNT1	EQU	P$DMA+03H	;

P$DMA$STAT	EQU	P$DMA+08H	;DMA COMMAND/STATUS
P$DMA$REQ	EQU	P$DMA+09H	;DMA REQUEST
P$DMA$MASK	EQU	P$DMA+0AH	;CHANNEL MASK
P$DMA$MODE	EQU	P$DMA+0BH	;CHANNEL MODE
P$DMA$TOGGLE	EQU	P$DMA+0CH	;BYTE POINTER FLIP-FLOP
P$DMA$CLEAR	EQU	P$DMA+0DH	;MASTER CLEAR
P$DMA$PMASK	EQU	P$DMA+0FH	;PARALLEL MASK

C$DMA$BYTE	EQU	041H		;COMMAND BYTE
C$DMA$READ	EQU	044H		;FLOPPY READ MODE BYTE
C$DMA$WRITE	EQU	048H		;FLOPPY WRITE MODE BYTE
C$DMA$CH0	EQU	088H		;CH0 MODE BYTE
C$DMA$CH1	EQU	085H		;CH1 MODE BYTE
C$DMA$CH2	EQU	082H		;CH2 MODE BYTE (DUMMY)
C$DMA$CH3	EQU	083H		;CH3 MODE BYTE (DUMMY)
C$DMA$DONE	EQU	002H		;DMA OPERATION COMPLETE MASK

;************************************************************************
;*	MINI FLOPPY DISK CONTROLLER PORTS AND COMMANDS			*
;************************************************************************

P$MFD$STAT	EQU	P$MFDC		;MFDC COMMAND/STATUS
P$MFD$TRK	EQU	P$MFDC+1	;TRACK
P$MFD$SECT	EQU	P$MFDC+2	;SECTOR
P$MFD$DATA	EQU	P$MFDC+3	;DATA

C$MFD$RESTORE	EQU	008H		;
C$MFD$SEEK	EQU	018H		;
C$MFD$RDSEC	EQU	082H		;
C$MFD$RDMSEC	EQU	092H		;
C$MFD$WRSEC	EQU	0A2H		;
C$MFD$WRMSEC	EQU	0B2H		;
C$MFD$WRTRK	EQU	0C4H		;
C$MFD$FBD	EQU	0D0H		;
C$MFD$FWRTRK	EQU	0F4H		;WRITE TRACK (FORMAT),H.L.DELAY

MFD$STEP$RATE	EQU	0
XS$DELAY	EQU	0
S$DELAY		EQU	3
M$DELAY		EQU	32
L$DELAY		EQU	128
XL$DELAY	EQU	160
;************************************************************************
;*	MSC 9205 HARD DISK CONTROLLER PORTS AND COMMANDS		*
;************************************************************************
	if	(hdctrl eq MSC9205)
P$HD$0		EQU	P$HDC		;
P$HD$1		EQU	P$HDC+1		;
P$HD$2		EQU	P$HDC+2		;
P$HD$3		EQU	P$HDC+3		;
P$HD$4		EQU	P$HDC+4		;
P$HD$5		EQU	P$HDC+5		;
P$HD$7		EQU	P$HDC+7		;

C$HD$NOP	EQU	000H
C$HD$SEEK	EQU	001H
C$HD$FORMAT	EQU	002H
C$HD$RESTORE	EQU	003H
C$HD$READ	EQU	004H
C$HD$VERIFY	EQU	005H
C$HD$WRITE	EQU	006H
C$HD$SETINTL	EQU	007H
	endif
;************************************************************************
;*	DTC 510A HARD DISK CONTROLLER PORTS AND COMMANDS		*
;************************************************************************
	if	(hdctrl eq DTC510A)
		if	(crtype eq CR8)
P$CSR		EQU	P$HDC		;CHANNEL STATUS REG. PORT
P$CCSR		EQU	P$HDC+1		;COMMAND COMPLETION STATUS REG. PORT
P$DADDRL	EQU	P$HDC+2		;DATA BUFFER LOW ADDRESS PORT
P$DADDRM	EQU	P$HDC+3		;DATA BUFFER MID ADDRESS PORT
P$CADDRL	EQU	P$HDC+4		;COMMAND BUFFER LOW ADDRESS PORT
P$CADDRM	EQU	P$HDC+5		;COMMAND BUFFER MID ADDRESS PORT
P$DADDRH	EQU	P$HDC+6		;DATA BUFFER HIGH ADDRESS PORT
P$CADDRH	EQU	P$HDC+7		;COMMAND BUFFER HIGH ADDRESS PORT
		else
P$HD$STAT	EQU	P$HDC		;
P$HD$DATA	EQU	P$HDC+1		;
P$HD$RESET	EQU	P$HDC+5		;
		endif

C$DIRDY		EQU	00H		;TEST DRIVE READY
C$DIRST		EQU	01H		;RESTORE
C$DIRSYN	EQU	02H		;REQUEST SYNDROME
C$DIRSS		EQU	03H		;REQUEST SENSE STATUS
C$DIFORM	EQU	04H		;FORMAT DISK
C$DIVERF	EQU	05H		;VERIFY TRACK FORMAT
C$DIFMT		EQU	06H		;FORMAT TRACK
C$DIFBAD	EQU	07H		;FORMAT BAD TRACK
C$HD$READ	EQU	08H		;READ DATA
C$HD$WRITE	EQU	0AH		;WRITE DATA
C$DISEEK	EQU	0BH		;SEEK
C$DISET		EQU	0C2H		;SET DRIVE CHARACTERISTICS
	endif
;************************************************************************
;*	PIT PORTS AND COMMANDS						*
;************************************************************************
	if	(crtype eq CR8)
P$LPT$BAUD	EQU	P$PIT+1		;
P$CRT$BAUD	EQU	P$PIT+2		;
P$PIT$CMD	EQU	P$PIT+3		;
P$MODEM$BAUD	EQU	P$LPT$BAUD	;

C$LPT$MODE	EQU	0111$0110B	;CH 1,LOAD LSB THEN MSB,MODE 3,BINARY
C$CRT$MODE	EQU	1011$0110B	;CH 2,LOAD LSB THEN MSB,MODE 3,BINARY
C$MODEM$MODE	EQU	C$LPT$MODE	;CH 1
	else
P$LPT$BAUD	EQU	P$PIT+0		;
P$MODEM$BAUD	EQU	P$PIT+1		;
P$CRT$BAUD	EQU	P$PIT+2		;
P$PIT$CMD	EQU	P$PIT+3		;

C$MODEM$MODE	EQU	0111$0110B	;CH 1,
C$CRT$MODE	EQU	1011$0110B	;CH 2,LOAD LSB THEN MSB,MODE 3,BINARY
C$LPT$MODE	EQU	0011$0110B	;CH 3,
;************************************************************************
;*	UART PORTS AND COMMANDS						*
;************************************************************************

P$LPT$DATA	EQU	P$UART+0	;LINE PRINTER DATA PORT
P$LPT$STAT	EQU	P$UART+1	;LINE PRINTER CONTROL/STATUS

C$UART$MODE	EQU	04EH		;
C$UART$CMD	EQU	037H		;
	endif
;************************************************************************
;*	MASKS AND VALUES						*
;************************************************************************
M$CRT$OUT	EQU	04H		;CRT TX EMPTY MASK
V$CRT$OUT	EQU	04H		; "   "   "   VALUE
M$CRT$IN	EQU	01H		;CRT RX READY MASK
V$CRT$IN	EQU	01H		; "   "   "   VALUE

	if	(crtype eq CR8)
M$LPT$OUT	EQU	24H		;LPT TX EMPTY MASK
V$LPT$OUT	EQU	24H		; "   "   "   VALUE
M$LPT$IN	EQU	00H		;LPT RX READY MASK
V$LPT$IN	EQU	00H		; "   "   "   VALUE
	else
M$LPT$OUT	EQU	01H		;LPT TX EMPTY MASK
V$LPT$OUT	EQU	01H		; "   "   "   VALUE
M$LPT$IN	EQU	02H		;LPT RX READY MASK
V$LPT$IN	EQU	02H		; "   "   "   VALUE
	endif
M$MODEM$OUT	EQU	M$CRT$OUT
V$MODEM$OUT	EQU	V$CRT$OUT
M$MODEM$IN	EQU	M$CRT$IN
V$MODEM$IN	EQU	V$CRT$IN

M$RAMMAP	EQU	20H		;PORT MASK

;************************************************************************
;*	EQUATES FOR MODE BYTE BIT FIELDS				*
;************************************************************************

MB$INPUT	EQU	0000$0001B		;DEVICE MAY DO INPUT
MB$OUTPUT	EQU	0000$0010B		;   "    "   " OUTPUT
MB$IN$OUT	EQU	MB$INPUT+MB$OUTPUT	;   "    "   " BOTH
MB$SOFT$BAUD	EQU	0000$0100B		;SOFTWARE SELECTABLE BAUD RATE
MB$SERIAL	EQU	0000$1000B		;DEVICE MAY USE PROTOCOL
MB$XON$XOFF	EQU	0001$0000B		;XON/XOFF PROTOCOL ENABLED

BAUD$600	EQU	7			;600 BAUD
BAUD$1200	EQU	8			;1200 BAUD
BAUD$2400	EQU	10			;2400 BAUD
BAUD$4800	EQU	12			;4800 BAUD
BAUD$9600	EQU	14			;9600 BAUD
BAUD$19200	EQU	15			;19.2K BAUD

;************************************************************************
;*	MISC EQUATES							*
;************************************************************************

CR		EQU	0DH		;ASCII CARRIAGE RETURN
LF		EQU	0AH		;ASCII LINE FEED
ESC		EQU	1BH		;ASCII ESCAPE
BELL		EQU	07H		;ASCII BELL RING
BS		EQU	08H		;ASCII BACK SPACE

;---------------------------------------------------------------------------
«eof»