/P?S/8 PATCHES TO LISP / P?S/8 PATCHES TO "LISP16" TO MAKE IT RUN FROM P?S/8. / LAST EDIT: 22-MAR-1983 19:00:00 CJL / MAY BE ASSEMBLED WITH '/J' SWITCH SET. / EQUATED SYMBOLS. FIELD1= 6200 /FIELD ONE CODE MOVED HERE FIELD2= 6600 /FIELD TWO CODE MOVED HERE FIELD3= 7200 /FIELD THREE CODE MOVED HERE FLGSET= 0455 /FLAG SETUP ROUTINE IN LISP INROUT= 0424 /LISP INPUT ROUTINE INVT= 0031 /OVERLAY INPUT ROUTINE LSPAC1= 4600 /FIRST AVAILABLE SPACE IN LISP LSPAC2= 5600 /SECOND AVAILABLE SPACE IN LISP LSPBGN= 0200 /START OF LISP NL0002= CLA CLL CML RTL /LOAD AC WITH 0002 NL7775= CLA CLL CMA RTL /LOAD AC WITH 7775 OUTROUT=0477 /LISP OUTPUT ROUTINE OUTVT= 0033 /OVERLAY OUTPUT ROUTINE SBOOT= 7600 /SYSTEM BOOTSTRAP ADDRESS SCRSIZE=7611 /P?S/8 CORE SIZE WORD SFILES= 7757 /FILES PASSED HERE FIELD 0 /MAKE SURE FIELD 0 *LSPBGN /OVER LISP NORMAL START LSPBGN= . /START OF LISP SYSTEM IFNZRO .&177 LSPBGN, NOP /ALREADY HERE;USEFUL IN CASE WE'RE CHAINED TO JMP I .+1 /WAS 1377 LSPINIT /WAS 3200 *FLGSET /OVER FLAG SETUP ROUTINE NOP /DESTROY NOP /FLAG NOP /SETUP NOP /ROUTINE *INROUTINE /OVER INPUT ROUTINE INROUT, CIF 40 /GOTO PATCH FIELD JMP INPTCH /GOTO PATCH *OUTROUTINE /OVER OUTPUT ROUTINE OUTROUT,CIF 40 /GOTO PATCH FIELD JMP OUTPCH /GOTO PATCH *LSPAC1 /OVER AVAILABLE SPACE LSPINIT,TAD (1377) /RESTORE DCA I (LSPBGN+1) /THE TAD (3200) /DISPLACED DCA I (LSPBGN+2) /INSTRUCTIONS LMVLUP, TAD I FLD1 /GET A FIELD ONE WORD ISZ FLD1 /BUMP TO NEXT CDF 10 /GOTO FIELD ONE DCA I MOVPTR /RESTORE IT CDF 00 /BACK TO OUR FIELD TAD I FLD2 /GET A FIELD TWO WORD ISZ FLD2 /BUMP TO NEXT CDF 20 /GOTO FIELD TWO DCA I MOVPTR /RESTORE IT CDF 00 /BACK TO OUR FIELD TAD I FLD3 /GET A FIELD THREE WORD ISZ FLD3 /BUMP TO NEXT CDF 30 /GOTO FIELD THREE DCA I MOVPTR /RESTORE IT ISZ MOVPTR /BUMP TO NEXT CDF 00 /BACK TO OUR FIELD TAD I FLD4 /GET A FIELD FOUR WORD ISZ FLD4 /BUMP TO NEXT CDF 40 /GOTO FIELD FOUR DCA I MV4PTR /STORE THE WORD ISZ MV4PTR /BUMP TO NEXT CDF 00 /BACK TO OUR FIELD ISZ MOVCNT /DONE ALL YET? JMP LMVLUP /NO, KEEP GOING NL0002 /SET "V" BIT MASK AND I (SCRSIZE) /GET THE "V" BIT SNA CLA /SKIP IF SET JMP I (LSPBGN) /ELSE JUST START IT UP TAD I (SCRSIZE) /GET THE CORE-SIZE WORD CDF 40 /GOTO FIELD FOUR RTR;RAR /MOVE OVER AND (70) /JUST MCS BITS TAD (CIF 10) /MAKE INTO CIF MCS+1 DCA I (INKSF) /STORE IN-LINE TAD I (INKSF) /GET IT BACK DCA I (OUTTSF) /STORE IN-LINE TAD I (INKSF+1) /GET JUMP DCA I (INKSF+2) /STORE IN-LINE TAD I (OUTTSF+1) /GET JUMP DCA I (OUTTSF+2) /STORE IN-LINE TAD (JMS INVT) /GET INPUT CALL DCA I (INKSF+1) /STORE IN-LINE TAD (JMS OUTVT) /GET OUTPUT CALL DCA I (OUTTSF+1) /STORE IN-LINE CDF 00 /BACK TO OUR FIELD JMP I (LSPBGN) /GO START IT UP FLD1, FIELD1 /POINTER TO FIELD ONE CODE FLD2, FIELD2 /POINTER TO FIELD TWO CODE FLD3, FIELD3 /POINTER TO FIELD THREE CODE FLD4, LSPAC2 /POINTER TO FIELD FOUR CODE MOVCNT, -400 /COUNT OF CODE TO MOVE MOVPTR, 0000 /MOVE OUTPUT POINTER MV4PTR, INPTCH /FIELD FOUR OUTPUT MOVE POINTER PAGE *LSPAC2 /OVER AVAILABLE SPACE NOPUNCH /FOOL THE ASSEMBLER FIELD 4 /THIS IS WHERE IT EXECUTES *LSPAC2 /RESTORE ORIGIN ENPUNCH /UN-FOOL THE ASSEMBLER RELOC INROUTINE&7600 /WHERE THIS EXECUTES / INPUT ROUTINE. INPTCH, DCA INAC /SAVE AC RDF /GET DATA FIELD RAR /AND LINK DCA INFLAGS /SAVE THEM CDF 40 /SET OUR FIELD CHRZAP, JMP I (GETCHR) /**** **** 0000 INKSF, KSF /**** VT-8/E **** CIF MCS+1 JMP INKSF /**** VT-8/E **** JMS INVT KRB /**** VT-8/E **** JMP INKSF CHRBAK, AND (177) /JUST SEVEN-BIT DCA INAC /SAVE NEW AC NL7775 /SET -3 TAD INAC /COMPARE TO CHARACTER SZA CLA /SKIP IF IT MATCHES JMP NOTUPC /JUMP IF NOT CIF CDF 00 /GOTO SYSTEM FIELD JMP I (SBOOT) /BACK TO THE MONITOR NOTUPC, TAD INAC /GET THE CHARACTER TAD (200) /MAKE IT EIGHT-BIT DCA INAC /SAVE NEW AC TAD INFLAGS /GET FLAGS CLL RAL /RESTORE LINK TAD (CDF) /MAKE INTO CDF INSTRUCTION DCA .+1 /STORE IN-LINE .-. /AND EXECUTE IT TAD INAC /RESTORE AC CIF 00 /BACK TO LISP FIELD JMP I (INROUTINE+3) /CONTINUE THERE INAC, .-. /INPUT AC INFLAGS,.-. /INPUT FLAGS / OUTPUT ROUTINE. OUTPCH, DCA OUTAC /SAVE PASSED AC RDF /GET DATA FIELD RAR /AND LINK DCA OUTFLGS /SAVE THEM CDF 40 /SET OUR FIELD TAD OUTAC /RESTORE AC OUTTSF, TSF /**** VT-8/E **** CIF MCS+1 JMP OUTTSF /**** VT-8/E **** JMS OUTVT TLS /**** VT-8/E **** JMP OUTTSF DCA OUTAC /SAVE AC TAD OUTFLGS /GET FLAGS CLL RAL /RESTORE LINK TAD (CDF) /MAKE INTO CDF INSTRUCTION DCA .+1 /STORE IN-LINE .-. /AND EXECUTE IT TAD OUTAC /RESTORE AC CIF 00 /BACK TO LISP FIELD JMP I (OUTROUTINE+3) /CONTINUE THERE OUTAC, .-. /OUTPUT AC OUTFLGS,.-. /OUTPUT FLAGS PAGE GETCHR, JMP I GETRIM /GO WHERE YOU SHOULD GETRIM, GEOF /TRIM AND EXIT ROUTINE;INITIALIZED FOR STARTUP AND (77) /JUST SIX-BIT SNA /? JMP GETEOL /YES TAD (-37) /? SNA /SKIP IF NOT IAC /MAKE INTO SPA /ALPHABETIC? TAD (100) /YES, MAKE IT SEVEN-BIT TAD (37) /RESTORE THE CHARACTER JMP I (CHRBAK) /CONTINUE THERE GETEOL, TAD (GRESET) /RESET FOR DCA GETRIM /NEXT TIME TAD (15) /GET A JMP I (CHRBAK) /FINISH THERE GEOF, CDF 00 /GOTO MONITOR FIELD ISZ GFLPTR /BUMP TO NEXT FILE TAD I GFLPTR /GET FILE ARGUMENT SNA /END OF LIST? JMP GETEOT /YES AND (7770) /NO, ISOLATE BLOCK BITS DCA GETBLK /STORE IN-LINE TAD I GFLPTR /GET FILE ARGUMENT AGAIN AND (7) /JUST UNIT BITS TAD (20^100+40) /ADD ON FUNCTION BITS DCA GETFUN /STORE INLINE JMP GETEOB /CONTINUE THERE GETBAK, TAD I GETPTR /GET A PAIR SNA /? JMP GEOF /YES CLL RTR /NO, MOVE RTR /DOWN THE RTR /HIGH-ORDER JMS GETRIM /AND CONVERT TO SEVEN-BIT TAD I GETPTR /GET IT AGAIN JMS GETRIM /CONVERT LOW-ORDER TO SEVEN BIT GRESET, ISZ GETPTR /BUMP TO NEXT TAD GETPTR /GET CURRENT POINTER TAD (-GETBUFF-4000) /COMPARE TO LIMIT PSYSIO, SZA CLA /SKIP IF BUFFER EXCEEDED JMP GETBAK /ELSE KEEP GOING GETEOB, CDF 40 /INDICATE OUR FIELD CIF 00 /GOTO MONITOR FIELD JMS I PSYSIO /CALL I/O ROUTINES GTRANS, GETBUFFER /TRANSFER ADDRESS GETFUN, 20^100+40+.-. /UNIT BITS WILL BE FILLED IN GETBLK, .-. /BLOCK NUMBER WILL BE FILLED IN TAD GETBLK /GET CURRENT BLOCK TAD (20) /UPDATE TO NEXT BUFFER DCA GETBLK /STORE IT BACK TAD GTRANS /RESET THE DCA GETPTR /BUFFER POINTER JMP GETBAK /KEEP GOING GETEOT, CDF 40 /RESTORE OUR FIELD DCA I (CHRZAP) /DESTROY FILE FEEDER JMP I (CHRZAP) /CONTINUE THERE GFLPTR, SFILES-1 /FILE POINTER GETPTR, .-. /BUFFER POINTER PAGE GETBUFF=. /INPUT BUFFER RELOC /SHOULD BE AT LOCATION RESERVED FOR FIELD ONE CODE IFNZRO FIELD1-.