PAGE ; ; ; ; -- MONITOR ENTRY POINT TABLE -- COLD: JP REINIT ;MONITOR COLD ENTRY POINT WARM: JP ROLLIN ;MONITOR WARM ENTRY POINT CONST: JP KBDST ;CONSOLE STATUS VECTOR CONIN: JP KBDIN ;CONSOLE INPUT VECTOR CONOUT: JP VIDOUT ;CONSOLE OUTPUT VECTOR JP VIDOUT ;CRT OUTPUT VECTOR JP SIOST ;SIO CHANEL B STATUS VECTOR JP SIOIN ;SIO CHANEL B INPUT VECTOR JP SIOOUT ;SIO CHANEL B OUTPUT VECTOR JP SELECT ;DISK DRIVE SELECT JP HOME ;HOME R/W HEAD JP SEEK ;SEEK TO TRACK JP READ ;READ SECTOR JP WRITE ;WRITE SECTOR JP READID ; ; ; REINIT: DI LD A,DYSTAT+OFF OUT (PORT0),A ;SWITCH ROMS ON IN LOW 32K MEMORY JP 0 ;JUMP TO ABSOLUTE LOCATION 0 ; ; ; ROLLIN: DI LD A,DYSTAT+OFF OUT (PORT0),A ;TURN ROMS ON AND ALSO SET MEMORY LD (DSCOPY),A ; BANK SWITCH VARIABLE TO INDICATE LD SP,STACK ; WE WILL BE EXECUTING FROM ROM EI JP PROMPT ; ; ; VIDOUT: DI LD (CRTSAV),SP LD SP,CRTSTK ;POINT SP TO TOP OF LOCAL STACK PUSH HL PUSH DE PUSH BC LD C,A ;MOVE OUTPUT CHARACTER TO C LD A,(DSCOPY) ;SAVE CURRENT RAM/ROM CONTROL BYTE PUSH AF ; ON STACK FOR DURATION OF 'CRTOUT' LD A,DYSTAT+OFF LD (DSCOPY),A ;SET 'DSCOPY' TO ENABLE LOWER 32K BANK OUT (PORT0),A ;TURN ON ROMS AND CRT MEMORY EI LD HL,(CRTVEC) CALL DISPATCH ;CALL SELECTED CRTOUT ROUTINE DI POP AF ;RESTORE OLD MEMORY MAP BIT SETTING LD (DSCOPY),A ;GO BACK TO MEMORY CONFIGURATION OUT (PORT0),A ; AS IT WAS BEFORE CALLING 'CRTOUT' POP BC POP DE POP HL LD SP,(CRTSAV) EI RET ; ; ; ; LOAD: DI LD A,(CONFIG) ADD A,A ADD A,A ADD A,A OUT (PORT0),A LD C,(HL) LD A,(DSCOPY) OUT (PORT0),A EI RET ; ; STORE: DI LD A,(CONFIG) ADD A,A ADD A,A ADD A,A OUT (PORT0),A LD (HL),C LD A,(DSCOPY) OUT (PORT0),A EI RET ; ; ; MOVE: DI LD A,(CONFIG) ADD A,A ADD A,A ADD A,A OUT (PORT0),A LDIR LD A,(DSCOPY) OUT (PORT0),A EI RET ; ; ; EXITMON: DI PUSH AF LD A,(CONFIG) ;SET BANK SWITCH STATE TO VALUE ADD A,A ; CURRENTLY SELECTED IN MONITOR ADD A,A ADD A,A AND 00001000B LD (DSCOPY),A ;STORE CONTROL BYTE FOR D/S BIT OUT (PORT0),A ;SWITCH TO SPECIFIED LOWER BANK POP AF EI RET ;DO JUMP BY POPPING STACK ; ; ; ; MEMTEST: DI LD A,(CONFIG) ADD A,A ADD A,A ADD A,A OUT (PORT0),A ;SWITCH TO SELECTED MEMORY BANK TO TEST MTST2: LD A,L XOR H ;GENERATE TEST BYTE XOR B LD (HL),A ;STORE BYTE IN RAM INC HL LD A,H CP E ;CHECK FOR END OF TEST BLOCK JR NZ,MTST2 ; NOW READ BACK EACH BYTE & COMPARE LD H,D LD L,0 ;POINT HL BACK TO START MTST3: LD A,L XOR H ;RE-GENERATE TEST BYTE DATA XOR B CP (HL) ;COMPARE EXPECTED MEMORY DATA WITH JR NZ,MTST4 ; ACTUAL CONTENTS @HL AND EXIT IF <> INC HL LD A,H CP E ;CHECK FOR END OF BLOCK JR NZ,MTST3 MTST4: LD A,(DSCOPY) OUT (PORT0),A EI RET ;