DataMuseum.dk

Presents historical artifacts from the history of:

RegneCentralen RC850

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

See our Wiki for more about RegneCentralen RC850

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download

⟦4c28a9086⟧ TextFile

    Length: 6016 (0x1780)
    Types: TextFile
    Names: »BNK855.ASM«

Derivation

└─⟦9f46c4107⟧ Bits:30005988 Sources for TurboDOS ver. 1.30 device drivers
    └─⟦this⟧ »BNK855.ASM« 

TextFile

.PAGE	132,69
.TITLE	"TURBODOS OPERATING SYSTEM BANK SWITCHED TPA DRIVER (RC-855)"
.SBTTL	"COPYRIGHT 1983, ASE GmbH, VERSION: 26.11.83"
;
; COPYRIGHT 1983, ASE GmbH
;
.IDENT	BNK855			;MODULE ID
;
.INSERT	DREQUATE		;DRIVER SYMBOLIC EQUIVALENCES
;
	.LOC	.BANK.#		;LOCATE IN COMMON AREA
;
BNKNIT::SSPD	SPSAVE		;SAVE STACK POINTER
	LXI	SP,AUXSTK  	;SET UP AUXILLIARY STACK
	MVI	A,1		;GET BANK 1
	CALL	SELMEM		;SELECT BANK 1
	LXI	H,DSKINT  	;GET INTERRUPT SERVICE ADDRESS
	SHLD	CTC4V#  	;SET WD FLOPPY INTERRUPT VECTOR
	LXI	H,RTCINT  	;GET INTERRUPT SERVICE ADDRESS
	SHLD	SIO3V#+2	;SET RTC INTERRUPT VECTOR
	SHLD	CTC7V#		;ALSO MASTER REAL TIME CLOCK
	LXI	H,LSTINT  	;GET INTERRUPT SERVICE ADDRESS
	SHLD	SIO1V#		;SET LIST (SIO1V) INTERRUPT VECTOR
	LXI	H,KBRINT  	;GET INTERRUPT SERVICE ADDRESS
	SHLD	SIO3V#+4	;SET CONSOLE INTERRUPT VECTOR
	SHLD	SIO3V#+6	;SET CONSOLE INTERRUPT VECTOR
;	LXI	H,DSPINT	;SET DISPLAY INTERUPT SERVICE ADDRESS
;	SHLD	DSPVEC#		;
	LXI	H,LANINT	;INITIALIZE LAN CONT. INTERUPT VECTOR
	SHLD	FDSVEC#  	;SET FLOPPY INTERRUPT VECTOR
	LXI	H,S0RXIR	;INTERUPT VECTOR SIO 0 CHANNEL RX
	SHLD	SIO0V#+4	;
	LXI	H,S0TXIR	;INTERUPT VECTOR SIO 0 CHANNEL TX
	SHLD	SIO0V#		;
	LXI	H,S0EXIR	;INTERUPT VECTOR SIO 0 CHANNEL EXT.
	SHLD	SIO0V#+2	;
	LXI	H,S0SXIR	;INTERUPT VECTOR SIO 0 CHANNEL SPEC. RX
	SHLD	SIO0V#+6	;
	XRA	A		;GET BANK 0
	CALL	SELMEM		;SELECT BANK 0
	LSPD	SPSAVE		;RESTORE STACK POINTER
	RET			;DONE
	;
DSKINT:	DI			;
	SSPD	SPSAVE		;SAVE STACK POINTER
	LXI	SP,AUXSTK  	;SET UP AUXILLIARY STACK
	PUSH	PSW		;SAVE AF-REG
	XRA	A		;GET BANK 0
	CALL	SELMEM		;SELECT BANK 0
	CALL	FCISR#		;PROCESS FLOPPY INTERRUPT
	DI			;DISABLE INTERRUPTS
	MVI	A,1		;GET BANK 1
	CALL	SELMEM		;SELECT BANK 1
	POP	PSW		;RESTORE AF-REG
	LSPD	SPSAVE		;RESTORE STACK POINTER
	EI			;ENABLE INTERRUPTS
	RET			;DONE
	;
LANINT:	DI			;
	SSPD	SPSAVE		;SAVE STACK POINTER
	LXI	SP,AUXSTK  	;SET UP AUXILLIARY STACK
	PUSH	PSW		;SAVE AF-REG
	XRA	A		;GET BANK 0
	CALL	SELMEM		;SELECT BANK 0
	CALL	LANISR#		;PROCESS LAN INTERRUPT
	DI			;DISABLE INTERRUPTS
	MVI	A,1		;GET BANK 1
	CALL	SELMEM		;SELECT BANK 1
	POP	PSW		;RESTORE AF-REG
	LSPD	SPSAVE		;RESTORE STACK POINTER
	EI			;ENABLE INTERRUPTS
	RET			;DONE
	;
RTCINT:	DI			;
	SSPD	SPSAVE		;SAVE STACK POINTER
	LXI	SP,AUXSTK  	;SET UP AUXILLIARY STACK
	PUSH	PSW		;SAVE AF-REG
	XRA	A		;GET BANK 0
	CALL	SELMEM		;SELECT BANK 0
	CALL	RTCISR#		;PROCESS REAL TIME CLOCK INTERRUPT
	DI			;DISABLE INTERRUPTS
	MVI	A,1		;GET BANK 1
	CALL	SELMEM		;SELECT BANK 1
	POP	PSW		;RESTORE AF-REG
	LSPD	SPSAVE		;RESTORE STACK POINTER
	EI			;ENABLE INTERRUPTS
	RET			;DONE
	;
LSTINT:	DI			;
	SSPD	SPSAVE		;SAVE STACK POINTER
	LXI	SP,AUXSTK  	;SET UP AUXILLIARY STACK
	PUSH	PSW		;SAVE AF-REG
	XRA	A		;GET BANK 0
	CALL	SELMEM		;SELECT BANK 0
	CALL	PRTISR#		;PROCESS SERIAL LIST INTERRUPT
	DI			;DISABLE INTERRUPTS
	MVI	A,1		;GET BANK 1
	CALL	SELMEM		;SELECT BANK 1
	POP	PSW		;RESTORE AF-REG
	LSPD	SPSAVE		;RESTORE STACK POINTER
	EI			;ENABLE INTERRUPTS
	RET			;DONE
	;
KBRINT:	DI			;
	SSPD	SPSAVE		;SAVE STACK POINTER
	LXI	SP,AUXSTK  	;SET UP AUXILLIARY STACK
	PUSH	PSW		;SAVE AF-REG
	XRA	A		;GET BANK 0
	CALL	SELMEM		;SELECT BANK 0
	CALL	KBRISR#		;PROCESS SERIAL LIST INTERRUPT
	DI			;DISABLE INTERRUPTS
	MVI	A,1		;GET BANK 1
	CALL	SELMEM		;SELECT BANK 1
	POP	PSW		;RESTORE AF-REG
	LSPD	SPSAVE		;RESTORE STACK POINTER
	EI			;ENABLE INTERRUPTS
	RET			;DONE
	;
S0RXIR:	DI			;
	SSPD	SPSAVE		;SAVE STACK POINTER
	LXI	SP,AUXSTK  	;SET UP AUXILLIARY STACK
	PUSH	PSW		;SAVE AF-REG
	XRA	A		;GET BANK 0
	CALL	SELMEM		;SELECT BANK 0
	CALL	RXISR#		;PROCESS SERIAL LIST INTERRUPT
	DI			;DISABLE INTERRUPTS
	MVI	A,1		;GET BANK 1
	CALL	SELMEM		;SELECT BANK 1
	POP	PSW		;RESTORE AF-REG
	LSPD	SPSAVE		;RESTORE STACK POINTER
	EI			;ENABLE INTERRUPTS
	RET			;DONE
	;
S0TXIR:	DI			;
	SSPD	SPSAVE		;SAVE STACK POINTER
	LXI	SP,AUXSTK  	;SET UP AUXILLIARY STACK
	PUSH	PSW		;SAVE AF-REG
	XRA	A		;GET BANK 0
	CALL	SELMEM		;SELECT BANK 0
	CALL	TXISR#		;PROCESS SERIAL LIST INTERRUPT
	DI			;DISABLE INTERRUPTS
	MVI	A,1		;GET BANK 1
	CALL	SELMEM		;SELECT BANK 1
	POP	PSW		;RESTORE AF-REG
	LSPD	SPSAVE		;RESTORE STACK POINTER
	EI			;ENABLE INTERRUPTS
	RET			;DONE
	;
S0SXIR:	DI			;
	SSPD	SPSAVE		;SAVE STACK POINTER
	LXI	SP,AUXSTK  	;SET UP AUXILLIARY STACK
	PUSH	PSW		;SAVE AF-REG
	XRA	A		;GET BANK 0
	CALL	SELMEM		;SELECT BANK 0
	CALL	SRXISR#		;PROCESS SERIAL LIST INTERRUPT
	DI			;DISABLE INTERRUPTS
	MVI	A,1		;GET BANK 1
	CALL	SELMEM		;SELECT BANK 1
	POP	PSW		;RESTORE AF-REG
	LSPD	SPSAVE		;RESTORE STACK POINTER
	EI			;ENABLE INTERRUPTS
	RET			;DONE
	;
S0EXIR:	DI			;
	SSPD	SPSAVE		;SAVE STACK POINTER
	LXI	SP,AUXSTK  	;SET UP AUXILLIARY STACK
	PUSH	PSW		;SAVE AF-REG
	XRA	A		;GET BANK 0
	CALL	SELMEM		;SELECT BANK 0
	CALL	EXSISR#		;PROCESS SERIAL LIST INTERRUPT
	DI			;DISABLE INTERRUPTS
	MVI	A,1		;GET BANK 1
	CALL	SELMEM		;SELECT BANK 1
	POP	PSW		;RESTORE AF-REG
	LSPD	SPSAVE		;RESTORE STACK POINTER
	EI			;ENABLE INTERRUPTS
	RET			;DONE
	;
DSPINT:	DI			;
	SSPD	SPSAVE		;SAVE STACK POINTER
	LXI	SP,AUXSTK	;GET AUX. STACK
	PUSH	PSW		;SAVE A REG.
	MVI	A,18H		;RESTART DMA TRANSFER FOR DISPLAY
	OUT	0FBH		;
	XRA	A		;CLEAR A
	OUT	20H		;SELECT DISPLAY RAM, SET DRQ
	POP	PSW		;RESTORE AF-REG
	LSPD	SPSAVE		;RESTORE STACK POINTER
	EI			;ENABLE INTERRUPTS
	RETI			;DONE
;
SELBNK::DI			;DISABLE INTERRUPTS
	CALL	SELMEM		;SELECT MEMORY BANK
	EI			;ENABLE INTERRUPTS
	RET			;DONE
;
SELMEM:	ORA	A		;BANK 0 REQUESTED?
	JRNZ	BNK1		;IF NOT, CONTINUE
	IN	80H		;SELECT BANK 0
	IN	82H		;SELECT BANK 0
	IN	84H		;SELECT BANK 0
	IN	87H		;SELECT BANK 0
	RET			;DONE
	;
BNK1:	IN	81H		;SELECT BANK 1
	IN	83H		;SELECT BANK 1
	IN	85H		;SELECT BANK 1
	IN	86H		;SELECT BANK 1
	RET			;DONE
	;
SPSAVE:	.WORD	0		;STACK POINTER SAVE AREA
	.BYTE	Æ16*2Å0		;AUXILLIARY STACK AREA
AUXSTK	= .			;TOP OF AUXILLIARY STACK AREA
	;
.XSYM
.END
«eof»