100 IAC /CHECK IF EMPTY 110 AND (BUFSIZE-1) /JUST RELATIVE BITS 120 SNA CLA /SKIP IF PARTIALLY USED 130 ISZ BUFCHK /ELSE TAKE DOUBLE-SKIP EMPTY RETURN 140 JMP I BUFCHK /RETURN EITHER WAY 150 EJECT 160 LPFILL, .-. /BUFFER FILL ROUTINE 170 NL0001 /SET INCREMENT 180 TAD FILLPTR /GET THE POINTER 190 AND (BUFSIZE-1) /JUST RELATIVE BITS 200 TAD [LPTBUFFER] /ADD ON BUFFER BASE 210 DCA FILLPTR /STORE UPDATED POINTER 220 LPFCDF, .-. /WILL BE CDF OUR FIELD 230 TAD LPTCHAR /GET THE CHARACTER 240 DCA I FILLPTR /STORE IN THE BUFFER 250 JMP I LPFILL /RETURN 260 270 LPEMPTY,.-. /BUFFER EMPTY ROUTINE 280 NL0001 /SET INCREMENT 290 TAD EMPTPTR /GET THE POINTER 300 AND (BUFSIZE-1) /JUST RELATIVE BITS 310 TAD [LPTBUFFER] /ADD ON BUFFER BASE 320 DCA EMPTR /STORE IN TEMPORARY POINTER 330 LPECDF, .-. /WILL BE CDF OUR FIELD 340 TAD I EMPTR /GET THE CHARACTER 350 JMP I LPEMPTY /RETURN 360 370 LINPUT, .-. /LPT: INPUT ROUTINE 380 LPCIDF, .-. /WILL BE CIF CDF OUR FIELD 390 TAD LINFLAG /GET INPUT FLAG 400 SNA /SKIP IF SET 410 JMP LINETST /JUMP IF NOT 420 DCA LINCHAR /STORE FOR NOW 430 DCA LINFLAG /CLEAR THE EVENT FLAG 440 TAD LINCHAR /GET THE CHARACTER 450 JMP GOTLINPUT /CONTINUE THERE 460 470 LINETST,.-. /WILL BE CIF CDF OUR FIELD 480 ONEWAY-1&LISFIOT /FLAG UP NOW? 490 JMP I LINPUT /NO, JUST RETURN 500 LIRBIOT /YES, GET THE CHARACTER 510 GOTLINP,AND [177] /JUST SEVEN-BIT 520 TAD (-"S!300) /IS IT <^S>? 530 SNA /SKIP IF NOT 540 JMP LPSETS /JUMP IF SO 550 TAD (-"Q+"S) /IS IT <^Q>? 560 SZA CLA /SKIP IF SO 570 JMP I LINPUT /RETURN WITH CLEAR AC IF NOT 580 NL2000 /SET <^Q> VALUE 590 SKP /NOT <^S> VALUE 600 LPSETS, NL4000 /SET <^S> VAUE 610 JMP I LINPUT /RETURN 620 EJECT 630 / INTERRUPT SETUP ROUTINE. 640 650 INTSET, .-. /INTERRUPT SETUP 660 NL7777 /SET ALL BITS 670 DKIEIOT /ENABLE INTERRUPTS ON KEYBOARD, LPT: 680 NOP /JUST IN CASE 690 CLA /CLEAN UP 700 TAD [VTBUFFER] /POINT AT DISPLAY BUFFER 710 DPLAIOT /LOAD DISPLAY ADDRESS 720 NL0001 /SET INTERRUPT BIT 730 RIF /OR IN FIELD BITS 740 DPGOIOT /START IT UP 750 NL7777 /SET ALL BITS 760 ONEWAY-1&LIEIOT /ENABLE INTERRUPTS, ERRORS ON KL-8JA 770 NOP /JUST IN CASE 780 NL7777 /SET ALL BITS 790 LLEIOT /ENABLE INTERRUPTS ON INDEPENDENT INTERFACE 800 NOP /JUST IN CASE 810 820 IFNZRO VT8LPT < 830 840 NL7777 /SET ALL BITS 850 PRIEIOT /ENABLE DORMANT LPT: INTERRUPTS JUST IN CASE 860 NOP /JUST IN CASE 870 880 > 890 900 CLA /CLEAN UP 910 JMP I INTSET /RETURN 920 930 / THE OUTPUT ROUTINE COMES HERE TO SET THE CURRENT DATA FIELD. 940 950 OUTEXC, .-. /OUTPUT DATA FIELD SET ROUTINE 960 OUTCDF, .-. /WILL BE CDF OUR FIELD 970 JMP I OUTEXC /RETURN 980 990 WASTE, .-. /TIME WASTE LOCATION 1000 1010 PAGE 1020 EJECT 1030 / ERROR BLURB HANDLING ROUTINES. 1040 1050 BLBFILL,.-. /FORMAT ERROR BLURB ROUTINE 1060 CLA /CLEAN UP 1070 TAD CALFLD /GET CDF CALLING FIELD 1080 DCA EBLOCK /STORE IN-LINE 1090 EBLOCK, .-. /WILL BE CDF CALLING FIELD 1100 TAD CALADR /GET CALLING ADDRESS 1110 DCA EBLOCK /STASH IT 1120 TAD I EBLOCK /GET TRANSFER ADDRESS 1130 DCA EADDR /STASH IT 1140 ISZ EBLOCK /BUMP TO FUNCTION WORD 1150 TAD I EBLOCK /GET FUNCTION WORD 1160 DCA EFUN /STASH IT 1170 ISZ EBLOCK /BUMP TO BLOCK NUMBER 1180 TAD I EBLOCK /GET BLOCK NUMBER 1190 DCA EBLOCK /STASH IT 1200 JMS I [SETFLD] /SET OUR FIELD 1210 TAD EFUN /GET FUNCTION WORD 1220 SPA CLA /SKIP IF READING 1230 JMP EWRITE /JUMP IF WRITING 1240 JMS I (MOV4) /MOVE IN 1250 REDBLB-1 /THE READ 1260 FUNBLB-1 /BLURB 1270 JMS I (MOV4) /MOVE IN 1280 TOBLB-1 /THE "TO" 1290 FTBLB-1 /BLURB