|
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: 3968 (0xf80) Types: TextFile Names: »BNK850.ASM«
└─⟦9f46c4107⟧ Bits:30005988 Sources for TurboDOS ver. 1.30 device drivers └─⟦this⟧ »BNK850.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 BNK850 ;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# ; 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 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 ; 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 0B1H ;SELECT BANK 0 RET ;DONE ; BNK1: IN 0B3H ;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»