100 / IOT DEFINITIONS. 110 120 DKIEIOT=KEY^10+6005 /KEYBOARD INTERRUPT ENABLE PER AC[11] 130 DKRBIOT=KEY^10+6006 /READ KEYBOARD BUFFER, CLEAR KEYBOARD FLAG 140 DKSFIOT=KEY^10+6001 /SKIP ON KEYBOARD FLAG 150 DPBLIOT=OUT^10+6007 /GENERATE BELL TONE 160 DPCLIOT=OUT^10+6006 /SKIP ON, CLEAR VIDEO RETRACE FLAG 170 DPGOIOT=OUT^10+6001 /LOAD INTERRUPT ENABLE, VIDEO MODE, GO 180 DPLAIOT=OUT^10+6000 /LOAD VIDEO DISPLAY ADDRESS 190 DPMSIOT=OUT^10+6005 /READ SENSE REGISTER 200 DPSMIOT=OUT^10+6002 /STOP DISPLAY 210 LCFIOT= LPT^10+6002 /CLEAR LPT: FLAG 220 LIEIOT= LIN^10+6005 /LPT: INPUT INTERRUPT ENABLE PER AC[11] 230 LIRBIOT=LIN^10+6006 /READ LPT: INPUT, CLEAR FLAG 240 LISFIOT=LIN^10+6001 /SKIP ON (CLEAR IF 6120) LPT: INPUT FLAG 250 LLEIOT= LPT^10+6005 /LPT: INTERRUPT ENABLE PER AC[11] 260 LLSIOT= LPT^10+6006 /OUTPUT LPT: CHARACTER, CLEAR FLAG 270 LSFIOT= LPT^10+6001 /SKIP ON (CLEAR IF 6120) LPT: FLAG 280 MONKCC= TTY^10+6002 /CLEAR KEYBOARD FLAG IN KEYBOARD MONITOR 290 MONKRB= TTY^10+6006 /READ KEYBOARD BUFFER, CLEAR IN MONITOR 300 MONKRS= TTY^10+6004 /READ KEYBOARD BUFFER IN KEYBOARD MONITOR 310 MONKSF= TTY^10+6001 /SKIP ON KEYBOARD FLAG IN KEYBOARD MONITOR 320 MONTLS= TTY+1^10+6006 /KEYBOARD MONITOR OUTPUT CHARACTER, CLEAR FLAG 330 MONTSF= TTY+1^10+6001 /SKIP ON OUTPUT FLAG IN KEYBOARD MONITOR 340 350 IFNZRO VT8LPT < 360 370 IFNDEF PRT /DORMANT PRINTER CODE 380 390 PRCFIOT=PRT^10+6002 /CLEAR DORMANT PRINTER FLAG 400 PRIEIOT=PRT^10+6005 /INTERRUPT ENABLE PER AC[11] IN CASE 410 /DORMANT PRINTER ISN'T REALLY SHARED! 420 PRSFIOT=PRT^10+6001 /SKIP ON DORMANT PRINTER FLAG 430 440 > 450 460 / FILE HEADER FOR CONSOLE UTILITY VALIDATION. 470 480 *NMCH1 /FIRST TWO DEVICE NAME CHARACTERS 490 500 *NMCH2 /SECOND TWO DEVICE NAME CHARACTERS 510 520 *NMCH3 /THIRD TWO DEVICE NAME CHARACTERS 530 EJECT 540 / THE CONSOLE OVERLAY IMAGE STARTS HERE. IT EXTENDS FROM 0000-5777 ON 550 / THE SYSTEM DEVICE, BUT IS VIRTUALLY LOADED IN THREE PARTS: 0000-1777, 560 / 2000-3777, 4000-5777. THE PORTION FROM 0000-1777 WILL BE INITIALLY 570 / BROUGHT IN WITH THE CONSOLE UTILITY ITSELF FOR USE WITH /U LOADING OF 580 / BINARY FILES. WHEN CALCULATING THE CHECKSUM, THE PORTION FROM 0000-2577 590 / WILL BE LOADED. 600 610 *0 /START AT THE BEGINNING 620 630 / THE CONSOLE INTERRUPT ROUTINE IS ENTERED HERE. EVENT FLAGS WILL BE SET 640 / FOR THE BENEFIT OF THE NORMAL NON-INTERRUPT CONSOLE ROUTINES. THE SOLE 650 / PURPOSE IS TO CLEAR THE INTERRUPT FOR THE BENEFIT OF THE USER. IT IS STILL 660 / NECESSARY TO CALL THE I/O ROUTINES IN THE NORMAL MANNER TO DO THE ACTUAL 670 / I/O. THOUGH IT NORMALLY CAUSES THE RESPECTIVE FLAGS TO CLEAR, THE 680 / CONSOLE INTERRUPT HANDLER COULD CONCEIVABLY MISS AN INTERRUPT FLAG 690 / BELONGING TO THE OVERLAY. THEREFORE THE USER PROGRAM SHOULD ATTEMPT TO 700 / NOT DUPLICATE INTERRUPT HANDLING FOR THE DEVICES SUPPORTED BY THE OVERLAY, 710 / AS THIS COULD LEAD TO ANOMALOUS RESULTS. IT IS SUGGESTED THAT THE USER'S 720 / PROGRAM BE TAILORED TO THE SYSTEM AT HAND AND SHOULD "TIME-OUT" ANY 730 / STRAY INTERRUPTS FROM OTHER DEVICES SUSPECTED OF POSSIBLY BEING SUPPORTED 740 / BY THE OVERLAY. THE OVERLAY INTERRUPT HANDLER SHOULD ALWAYS BE CALLED 750 / BEFORE TESTING ANY FLAG POSSIBLY ASSOCIATED WITH THE OVERLAY. THE OVERLAY 760 / INTERRUPT ROUTINES WILL CHECK ALL OVERLAY ASSOCIATED FLAGS EACH TIME THE 770 / OVERLAY INTERRUPT HANDLER IS CALLED, AND SET STATUS BITS IN THE AC UPON 780 / INTERRUPT EXIT. 790 800 CONINT, .-. /CONSOLE INTERRUPT ENTRY POINT 810 JMP I [INTCON] /GO HANDLE IT THERE 820 830 / THE FOLLOWING LOCATIONS ARE PROVIDED TO ALLOW INTERRUPT-DRIVEN PROGRAMS 840 / THE ABILITY TO INTERACT WITH THE OVERLAY BETTER.