;WRITTEN BY RUSSELL BUSHNELL 4/28/88 ;VERSION 1.0 ; ; ;SMALL XIOS - ALLOWS A LARGER XIOS TO EXIST IN ;NON-COMMON BANKED MEMORY(16K ALLOWED FOR RESIDENT MPM). ; ORG 0000H; PDISP EQU $-3;SET IN REAL BIOS ;USE THE VALUE OF XIOS.SPR (MPMLDR) XDOS EQU PDISP-3; RXIOS1 EQU 0BFFFH - 0FH;LOCATION OF THE REAL BIOS1(ORG) RXIOS2 EQU 00000H; RXIOS3 EQU 00000H; RXIOS4 EQU 00000H; RXIOS5 EQU 00000H; BNKPRT EQU 040H; XIOSBNK EQU 001H; CDISK EQU 4; ; JMP COLDSTART;FROM COLD START LOADER JMP WARMSTART;FROM WARM BOOT JMP CONSTD; JMP CONIND; JMP CONOTD; JMP LIST; JMP RTNEMPTY; JMP RTNEMPTY; JMP HOME; JMP SELDSK; JMP SETTRK; JMP SETSEC; JMP SETDMA; JMP READ; JMP WRITE; JMP POLLPT; JMP SECTRAN; JMP SELMEMORY;EXTENDED I/O HERE DOWN(MPM)! JMP POLLDEVICE; JMP STARTCLOCK; JMP STOPCLOCK; JMP EXITREGION; JMP MAXCONSOLE; JMP SYSTEMINIT; JMP IDLE; ; ; ; COLDSTART: WARMSTART: MVI C,0; JMP XDOS; ; CONSTD: CALL SETBNK;ENABLE BANK WERE XIOS IS. CALL RXIOS1 + 6;CALL THE REAL BIOS. CALL RTNBANK;RESTORE CALLING BANK. RET; ; CONIND: CALL SETBNK; CALL RXIOS1 + 9; CALL RTNBANK; RET; ; CONOTD: CALL SETBNK; CALL RXIOS1 + 12; CALL RTNBANK; RET; ; LIST: CALL SETBNK; CALL RXIOS1 + 15; CALL RTNBANK; RET; ; RTNEMPTY: CALL SETBNK; CALL RXIOS1 + 18; CALL RTNBANK; RET; ; HOME: CALL SETBNK; CALL RXIOS1 + 24; CALL RTNBANK; RET; ; SELDSK: CALL SETBNK; CALL RXIOS1 + 27; CALL RTNBANK; RET; ; SETTRK: CALL SETBNK; CALL RXIOS1 + 30; CALL RTNBANK; RET; ; SETSEC: CALL SETBNK; CALL RXIOS1 + 33; CALL RTNBANK; RET; ; SETDMA: CALL SETBNK; CALL RXIOS1 + 36; CALL RTNBANK; RET; ; READ: CALL SETBNK; CALL RXIOS1 + 39; CALL RTNBANK; RET; ; WRITE: CALL SETBNK; CALL RXIOS1 + 42; CALL RTNBANK; RET; ; POLLPT: CALL SETBNK; CALL RXIOS1 + 45; CALL RTNBANK; RET; ; SECTRAN: CALL SETBNK; CALL RXIOS1 + 48; CALL RTNBANK; RET; ; SELMEMORY: LXI H,3; DAD B; MOV A,M; STA CURBNK; OUT BNKPRT; RET; CURBNK: DB 01H; ; POLLDEVICE: CALL SETBNK; CALL RXIOS1 + 54; CALL RTNBANK; RET; ; STARTCLOCK: CALL SETBNK; CALL RXIOS1 + 57; CALL RTNBANK; RET; ; STOPCLOCK: CALL SETBNK; CALL RXIOS1 + 60; CALL RTNBANK; RET; ; EXITREGION: CALL SETBNK; CALL RXIOS1 + 63; CALL RTNBANK; RET; ; MAXCONSOLE: CALL SETBNK; CALL RXIOS1 + 66; CALL RTNBANK; RET; ; SYSTEMINIT: DI; MVI A, XIOSBNK; STA CURBNK; SHLD SVDJT; MOV L,C; MVI H,0; DAD H; DAD H; DAD H; SHLD SVDBPA; ; MVI A,10H; CALL STMVTR; MVI A,08H; CALL STMVTR; MVI A,04H; CALL STMVTR; MVI A,02H; CALL STMVTR; MVI A,01H; CALL STMVTR; ; STMVTR: OUT 040H; CALL BOOT2; MVI A,0C3H; STA 0; LHLD SVDJT; SHLD 1; MVI A,0C3H; STA 0020H; LXI H,INTLHND; SHLD 0021H; RET; ; BOOT2: XRA A;CLEAR SCRATCH AREA STA CDISK; MVI C,ENDZ-STARTZ;GET LENGTH OF ZERO AREA LXI H,STARTZ;GET SCRATCH ADDRESS BOOTL: MOV M,A;PUT ZERO IN MEMORY INX H;INC. POINTER DCR C;DECREMENT JNZ BOOTL;LOOP TILL DONE MVI M,LLIMIT;SET LINE LIMIT INX H;POINT TO LATCH BYTE MVI M,0;SET LATCH CODE = 0 GOCPM: ; ;SET JUMPS INTO CP/M IN LOWER MEMORY ; LXI H,80H;SET DEFAULT DMA ADDRESS SHLD DMAADD; RET; ; IDLE: CALL SETBNK; CALL RXIOS1 + 72; CALL RTNBANK; RET; ; SETBNK: ;ENABLES NON-COMMON XIOS BANK PUSH A; MVI A, XIOSBNK; OUT BNKPRT; POP A; RET; ; RTNBANK: ;RESTORES XIOS CALLING BANK PUSH A; LDA CURBNK; OUT BNKPRT; POP A; RET; ; END;THATS ALL