100 / FAIL TO COMPLETE, THIS LOCATION WILL BE NON-ZERO, THUS FURTHER ATTEMPTS 110 / TO REBOOT THE SYSTEM WILL RELOAD THE OVERLAY. THIS ENTRY WILL INITIALIZE 120 / THE MONITOR'S CONSOLE ROUTINES TO CALL THE OVERLAY, AND WILL INTERCEPT 130 / ALL SYSTEM READ/WRITE I/O ACCORDING TO THE DICTATES OF THE TRAP BLOCKS. 140 150 XIOMON, 0 /KEYBOARD MONITOR INITIALIZATION ENTRY POINT 160 JMP I [MONINIT] /GO HANDLE IT THERE 170 180 / THE FOLLOWING WORD WILL EVENTUALLY CONTAIN THE ID VALUE FOR THE 190 / PARTICULAR READ/WRITE I/O SYSTEM. THIS VALUE IS INCLUDED IN THE CHECKSUM 200 / FOR THE "ROM" AREA AND SHOULD BE SET TO ZERO INITIALLY. 210 220 DEVWRD, 0 /WILL BE HARDWARE ID NUMBER 230 240 NOPUNCH /FOOL THE ASSEMBLER 250 260 / THE FOLLOWING WORD IS PROVIDED TO "KLUDGE" THE CHECKSUM TO A UNIQUE VALUE 270 / TO PREVENT INCORRECT MONITOR/OVERLAY LINKAGE WHEN BOOTING TO A NEW 280 / SYSTEM DEVICE/OVERLAY COMBINATION. THE OVERLAY TYPE*100+HARDWARE ID# 290 / SHOULD BE THE TOTAL CHECKSUM VALUE (INVERTED). 300 310 FUDWRD, .-. /WILL BE CHANGED AS NECESSARY 320 330 / OVERLAY ID NAME FIELD. 340 350 / THE FOLLOWING WORDS WILL BE UPDATED FROM THE BINARY OVERLAY FILES' 360 / SPECIAL ORIGIN SETTINGS IN THEIR HEADERS. 370 380 OVID, NMCH1 /FIRST PAIR OF DEVICE NAME CHARACTERS 390 NMCH2 /SECOND PAIR OF DEVICE NAME CHARACTERS 400 NMCH3 /THIRD PAIR OF DEVICE NAME CHARACTERS 410 420 ENPUNCH /UN-FOOL THE ASSEMBLER 430 440 *. /ESTABLISH CURRENT ORIGIN AGAIN 450 460 / THE FOLLOWING WORD WILL BE USED TO CALCULATE THE CHECKSUM FOR THE 470 / OVERLAY AND WILL BE ITS FINAL CHECKSUM VALUE. IT SHOULD CONTAIN THE 480 / UNIQUE OVERLAY TYPE NUMBER*100. 490 500 OVRWRD, OVTYPE^100 /OVERLAY TYPE WORD 510 EJECT 520 PAGE 530 540 / MONITOR INITIALIZATION STARTS HERE. 550 560 MONINIT,TAD INITSW /GET FIRST TIME SWITCH 570 SZA CLA /SKIP IF NOT FIRST TIME 580 JMS I (TRPINIT) /ELSE RELOAD THE TRAP BLOCKS 590 JMS I [SETFLD] /SET OUR DATA FIELD 600 TAD (ADRLST&177+TRPAGE-1) /SETUP 610 DCA CXR1 /ADDRESS POINTER 620 TAD (ZAPLST&177+TRPAGE-1) /SETUP 630 DCA CXR2 /REPLACEMENT POINTER 640 NL7776 /SETUP THE 650 DCA VMODE /ZAPPING COUNT 660 IOZAPLP,TAD I CXR1 /GET AN ADDRESS TO ZAP 670 SNA /END OF A LIST? 680 JMP IOZAPEND /YES 690 DCA OUTLPT /NO, STASH THE POINTER 700 TAD I CXR2 /GET A REPLACEMENT VALUE 710 DCA OUTCON /STASH IT 720 TAD OUTCON /GET IT BACK 730 TAD (-CIF10) /COMPARE TO MAGIC VALUE 740 SZA CLA /SKIP IF IT MATCHES 750 JMP IOZAPOK /JUMP IF NOT 760 RIF /GET OUR FIELD 770 TAD [CDF] /FORM CDF OUR FIELD 780 IAC /MAKE IT CIF OUR FIELD 790 DCA OUTCON /SAVE AS NEW REPLACEMENT VALUE 800 IOZAPOK,CDF 00 /GO TO FIELD ZERO 810 TAD OUTCON /GET REPLACEMENT VALUE 820 DCA I OUTLPT /ZAP IT IN 830 JMS I [SETFLD] /BACK TO OUR FIELD 840 JMP IOZAPLP /KEEP GOING 850 860 IOZAPEN,TAD (MONADR-1) /SETUP THE 870 DCA CXR1 /MONITOR ZAP LIST 880 TAD (MONZAP-1) /SETUP THE 890 DCA CXR2 /MONITOR CONTENTS LIST 900 ISZ VMODE /DONE BOTH LISTS? 910 JMP IOZAPLP /NO, GO DO MONITOR ZAPS 920 TAD [CADNORMAL] /SETUP THE 930 DCA CADDRESS /DEFAULT CURSOR ADDRESSING ROUTINE 940 TAD [SCAPNORMAL] /SETUP THE 950 DCA SCAPADDRESS /DEFAULT ADDRESS 960 ISZ INITSW /FIRST TIME? 970 JMP INITNORM /NO, JUST KEEP GOING 980 JMS I [INITEST] /GO PROVE THE CONSOLE HARDWARE EXISTS 990 1000 / CLEAR EVERYTHING UPON OVERLAY RELOAD HERE. 1010 1020 JMS I [CLEAR] /DO CLEAR OPERATIONS NOW 1030 EJECT