|
DataMuseum.dkPresents historical artifacts from the history of: RegneCentralen RC850 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about RegneCentralen RC850 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 6016 (0x1780) Types: TextFile Names: »BNK855.ASM«
└─⟦9f46c4107⟧ Bits:30005988 Sources for TurboDOS ver. 1.30 device drivers └─⟦this⟧ »BNK855.ASM«
.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»