100 / SUPPORT ROUTINES. 110 120 TRPINIT,.-. /TRAP BLOCK INITIAL READIN ROUTINE 130 TAD I (SBTFUN) /GET MONITOR'S UNIT 140 AND [7] /JUST UNIT BITS 150 TAD [2^100] /ADD ON READ BITS 160 RIF /ADD ON FIELD BITS 170 DCA TRDFUN /STORE IN-LINE 180 JMS I [SETFLD] /SETUP OUR FIELD 190 CIF 00 /GOTO MONITOR FIELD 200 JMS I PSYSIO/(SYSIO) /CALL I/O ROUTINES 210 TRP, TRPAGE /TRANSFER ADDRESS 220 TRDFUN, 2^100+.-.+.-. /FIELD, UNIT BITS WILL BE FILLED IN 230 TRPBLK /TRAP BLOCK NUMBER 240 TAD I TRP/(HIDWRD&7600+TRPAGE)/GET ID NUMBER 250 DCA DEVWRD /STORE IT 260 JMP I TRPINIT /RETURN 270 280 / INPUT FLAG TEST ROUTINE. 290 300 INTEST, .-. /INPUT TEST ROUTINE 310 INCIDF, .-. /WILL BE CIF CDF OUR FIELD 320 TAD INFLAG /GET INPUT FLAG 330 SNA /SKIP IF SET 340 JMP INTST2 /JUMP IF NOT 350 DCA INCHAR /SAVE IN INPUT BUFFER 360 DCA INFLAG /CLEAR EVENT FLAG 370 JMP I INTEST /RETURN TO INPUT ROUTINE 380 390 INTST2, .-. /WILL BE CIF CDF OUR FIELD 400 DKSFIOT /FLAG UP? 410 JMP INRET /NO, RETURN TO ORIGINAL CALLER 420 DKRBIOT /YES, GET THE CHARACTER AND CLEAR HARDWARE FLAG 430 DCA INCHAR /SAVE IN INPUT BUFFER 440 JMP I INTEST /RETURN TO INPUT ROUTINE 450 460 SETFLD, .-. /DATA FIELD SETUP ROUTINE 470 CLA /CLEAN UP 480 RIF /GET OUR FIELD 490 TAD [CDF] /TURN INTO CDF INSTRUCTION 500 DCA SETCDF /STORE IN-LINE 510 SETCDF, .-. /WILL BE CDF OUR FIELD 520 JMP I SETFLD /RETURN 530 EJECT 540 / RELOAD CLEAR ROUTINE. 550 560 CLEAR, .-. /CLEAR ROUTINE 570 TAD [VTBUFFER] /SETUP 580 DCA VTPTR /BUFFER POINTER 590 TAD [VTBUFFER] /SETUP 600 DCA VTLNPTR /LINE POINTER 610 TAD [VTBUFFER-VTBFEND] /SETUP THE 620 DCA TRPINIT /CLEAR COUNT 630 TAD (VTBUFFER-1) /SETUP THE 640 DCA CXR1 /CLEAR POINTER 650 TAD [" &177+4000] /GET CLEAR CHARACTER 660 DCA I CXR1 /CLEAR A WORD 670 ISZ TRPINIT /DONE ALL YET? 680 JMP .-3 /NO, GO BACK 690 JMP I CLEAR /RETURN 700 710 MOV4, .-. /MOVE FOUR CHARACTERS ROUTINE 720 TAD [-4] /SETUP THE 730 DCA CLEAR /MOVE COUNT 740 TAD I MOV4 /GET THE "FROM" LOCATION 750 DCA CXR1 /SET IT UP 760 ISZ MOV4 /BUMP TO NEXT 770 TAD I MOV4 /GET THE "TO" LOCATION 780 DCA CXR2 /SET IT UP 790 ISZ MOV4 /BUMP PAST ARGUMENT 800 TAD I CXR1 /GET A WORD 810 DCA I CXR2 /PUT A WORD 820 ISZ CLEAR /DONE YET? 830 JMP .-3 /NO, KEEP GOING 840 JMP I MOV4 /YES, RETURN 850 860 PRTCHR, .-. /INSERT PRINTABLE CHARACTER ROUTINE 870 JMS INSERT /INSERT IT AT FIRST 880 TAD VTPTR /GET THE NEW POINTER VALUE 890 AND [77] /JUST LINE BITS 900 PSYSIO, SZA CLA /SKIP IF AT BEGINNING OF LINE 910 JMP I PRTCHR /ELSE JUST RETURN 920 JMS ROLCHK /CHECK IF WE STILL FIT 930 TAD ("++BLINK+4000) /GET A BLINKING "+" 940 JMS INSERT /PUT AT BEGINNING OF LINE 950 TAD TABCNT /GET COUNT 960 DCA VTEMP1 /SETUP THE COUNTER 970 VTABLP, ISZ VTEMP1 /DONE YET? 980 SKP /SKIP IF NOT 990 JMP I PRTCHR /RETURN IF SO 1000 TAD [" &177+4000] /GET A 1010 JMS INSERT /PUT IN THE BUFFER 1020 JMP VTABLP /TRY AGAIN 1030 EJECT 1040 ROLCHK, .-. /CHECK IF BUFFER ROLL NEEDED ROUTINE 1050 CLA /JUST IN CASE 1060 TAD VTPTR /GET CURRENT POINTER 1070 TAD (-VTBFEND) /COMPARE TO UPPER LIMIT 1080 SPA CLA /SKIP IF TOO FAR 1090 JMP I ROLCHK /RETURN IF NOT 1100 TAD VTPTR /GET THE POINTER 1110 DCA MOV4 /SAVE IT FOR NOW 1120 TAD (VTBUFFER+100-1) /SETUP 1130 DCA CXR1 /THE 1140 TAD (VTBUFFER-1) /ROLLING 1150 DCA CXR2 /POINTERS 1160 TAD [VTBUFFER-VTBFEND+100] /SETUP THE 1170 DCA VTEMP1 /ROLL COUNT 1180 TAD I CXR1 /GET A WORD 1190 DCA I CXR2 /PUT A WORD 1200 ISZ VTEMP1 /DONE YET?