*20 /LINC-8 SIMULATOR TRAP PROCESSOR, DEC-12-SI1B. / /COPYRIGHT 1969, DIGITAL EQUIPMENT CORP. /MAYNARD, MASS. / /D. LANGBEIN, 27 MAY 1969 /REVISED 21 JULY 1969 /REVISED 8 AUGUST 1969 / /OPERATION DEFINITIONS FOR LINC MODE ASSEMBLY /OF PDP-8 MODE IOT INSTRUCIONS KCCA=6032 KRSA=6034 KRBA=6036 TSFA=6041 TLSA=6046 RMFA=6244 / /SOME LINC-8 DEFINITIONS OPR=500 KBD=515 / *20 JMP ST20 /BECOMES JMP INIT LDF 3 LIF 2 DJR JMP 20 /GO TO 20 IN SEGMENT 2 /(04020) / /400 RESTART RST400, JMP ST400 /BECOMES JMP INIT LDF 3 LIF 2 DJR HLT JMP 400 /GO TO 400 IN SEGMENT 2 /(04400) / /START GUIDE GUIDE, JMP INIT LDF 2 RDC /READ GUIDE START BLOCK 7400 /INTO QUARTER 3,SEGMENT 2 LDF 3 LIF 2 JMP 1400 /START GUIDE / /ERROR STOP *130 ERR, HLT /UNIDENTIFIED INSTRUCTION JMP RET /IN AC AT HLT. RETURNS TO /USER W AC CLEARED WHEN /CONTINUE PRESSED. / /MISC CONSTANTS *134 PC, 0 /ADDRESS OF TRAPPED /INSTRUCTION M70, 70 ONE, 1 / /TRAP ENTRY AND MACHINE STATE SAVING *141 STC AC /SAVE AC ROL I 1 /SAVE LINK STC LC QAC /GET H O 11 Q REG BITS ROL 1 QLZ /GET L O BIT ADD ONE STC Q /SAVE IT ADD ONE FLO /GET OVERFLOW BIT IF ON CLR STC OVL /SAVE IT.0=OFF. 1=ON SET 17 /SAVE LOCATION 0 0 / /INSTRUCTION IDENTIFICATION. PDP PMODE FETCH, RIB /READ INTERRUPT BUFFER AND M70 /GET INSTRUCTION FIELD TAD CDFX /MAKE IT INTO A CDF N DCA .+1 7402 /BECOMES CDF N STA /SET AC TO -1 TAD 140 /COMPUTE ADDRESS OF DCA PC /TRAPPED INSTRUCTION TAD I PC /OBTAIN INSTRUCTION /CAUSING TRAP CDFX, CDF /SET DATA FIELD TO 0 LINC LMODE SAE I /IS IT KBD? KBD SKP /NO JMP DOKBD /YES. SAE I /IS IT KBD I? KBD I SKP /NO. JMP DOKBD /YES. SAE I /OPR I 14? OPR I 14 SKP /NO JMP OP14 /YES SAE I /OPR 14? OPR 14 OTHERS, JMP ERR /PUT JMP TO /CHECKS FOR OTHER /INSTRUCTIONS HERE. OP14, LDA /OUTPUT. GET CHARACTER AC IOB TLSA /OUTPUT IT IOB TSFA /CHECK IF DONE JMP .-2 / /RETURN TO USER PROGRAM RET, LDA I /EXIT TRAP PROCESSOR OVL, 0 ADD OVN /3777 CAUSES OV LDA I /GET LINK LC, 0 ROR I 1 /RESTORE LINK SET 0 /RESTORE LOCATION 0 17 LDA I /RESTORE Q REGISTER Q, 0 ROR 14 /LOADS Q REGISTER /FROM AC LDA /OBTAIN ADDRESS FOR RETURN 140 /TO USER PROGRAM BSE I JMP STC RTJ ADA I /RESTORE AC AC, 0 DJR /INHIBIT ZERO CLOBBERING IOB /IN USERS MEMORY SEGMENT RMFA /RESTORE INTERRUPT BUFFER RTJ, HLT /BECOMES JMP TO USER PROG. OVN, 3777 / /KBD PROCESSING DOKBD, ROR I 5 /PUT TRAPPED INSTRUCTION /I BIT INTO COMPUTER /LINC BIT LDA I /GET LEFTOVER CHAR, UPC, 0 /IF ANY AZE /LEFTOVER CHARACTER? JMP LOO /YES. DELIVER IT TO USER LP, KST I /NO. FRESH CHARACTER? JMP GRC /YES. GO READ IT LZE /NO. PAUSE? JMP LP /YES. HANG IN THERE /TILL KEY STRUCK. JMP LOO /NO. RETURN TO USER W. AC /CLEARED / /READ AND TRANSLATE A KEYBOARD CHARACTER GRC, CLR IOB KRSA /READ A CHARACTER ADA I /CALCULATE CHARACTER CON- -175 /VERSION TABLE INDEX IN ROR 1 /HALF WORDS BCL I 3700 ADA I /ADD BASE ADDRESS OF TABLE TAB STC .+2 /HALF-WORD PICKUP ADDRESS LDH /GET THE LINC CHARACTER. 0 SHD I /IS IT AN UNDEFINABLE? 7600 JMP RETX /YES. ECHO UPARROW ADA I /IS IT UPPER CASE? -55 APO JMP LOW /NO. / /ITS AN UPPER CASE CHARACTER ADA I /MAKE IT LINC CODE 11 APO /DELETE MINUS ZEROES CLR STC UPC /SAVE IT FOR USE AFTER /CASE CHARACTER IS OUTPUT LDA I /GET CASE CHARACTER 23 STC AC /STORE FOR TRANSFER JMP RET /EXIT / /LOWER CASE CHARACTERS LOW, ADA I /MAKE IT LINC CODE 55 APO CLR LOO, STC AC /STORE IT FOR TRANSFER STC UPC /CLEAR LEFT OVER BUFFER IOB KRBA /READ CHAR AND /CLEAR KEYBOARD FLAG LOO1, JMP PRINT /ECHO SAE I /C. R.? 215 JMP RET /NO. EXIT LDA I /YES. THROW IN 212 /A FREE LINE FEED JMP PRINT JMP RET / /ILLEGAL CHARACTER RETX, LDA I /PRINT UP ARROW 336 JMP PRINT IOB /ECHO OFFENDING KRBA /CHARACTER. JMP PRINT COM ROL I 1 /SET LINK BIT /TO KEYBOARD "PAUSE" VALUE JMP LP / /PRINT A CHARACTER /ENTER W ASCII CHAR IN AC PRINT, PDP PMODE TLS TSF JMP .-1 LINC LMODE JMP 0 /INITIALIZE THE TRAP PROCESSOR INIT, CLR STC UPC /CLEAR LEFT OVER CHARACTER AXO /BOILER PLATING FOR GUIDE /RESTART SFA /GET SPEC. FNS. REG. BSE I /SET TRAP ENABLE BIT 1000 ESF /READ IT BACK OUT ENDX, JMP 0 /RETURN *400 JMP RST400 /GO TO START 400 /CONTROL ROUTINE / / TAB, 2323 /ALTMODE-CASE/ALTMODE-CASE 1376 /RUBOUT-DEL/LEADER-NULL 7676 /NOT USED 7676 /N. U. 7676 /N. U. 7676 /BELL/N. U. 7656 /TAB/L. F. -META 7676 /N. U. 1276 /CR-EOL/N. U. 7676 /N. U. 7676 /N. U. 7676 /N. U. 7676 /N. U. 7676 /N. U. 7676 /N. U. 7676 /N. U. 2376 /ALTMODE-CASE/N. U. 7614 /N.U./SPACE-SPACE 7676 /EXC.PT/DBL.QUOTES 2265 /NUMBER SIGN/DOLLAR SIGN- 6215 /PERCENT-P.C/AMPERSAMD-AMPERSAND 1676 /APOSTROPHE-AP./OP PAREN 7676 /CL PAREM/* 2063 /PLUS-+/COMMA-, 1764 /MINUS--/PERIOD-. 2100 /SLASH-SLASH/ZERO-0 0102 /1/2 0304 /3/4 0506 /5/6 0710 /7/8 1176 /9/N.U. 7676 /SEMICOLON/< 6176 /EQUAL SIGN-=/> 7676 /?/AT SIGN 2425 /A/B 2627 /C/D 3031 /E/F 3233 /G/H 3435 /I/J 3637 /K/L 4041 /M/N 4243 /O/P 4445 /Q/R 4647 /S/T 5051 /U/V 5253 /W/X 5455 /Y/Z 6621 /LEFT.BRACK/BACK SLASH 7676 /RT.BRACK/UP ARROW TABE, 7676 /BACK ARROW/N.U. / /INITIAL START 20 ST20, JMP SETUP JMP INIT JMP GOMAN / /INITIAL START 400 ST400, JMP SETUP JMP INIT /INITIALIZE TRAP PROCESSOR LDF 3 HLT GOMAN, LIF 0 JMP GUIDE /THIS LANDS IN FIELD 0 /TRAP PROCESSOR RELOCATOR SETUP, SET 17 0 LDA I /SET UP RESTARTS JMP INIT STA /SET UP 20 RESTART 20 STC RST400 /SET UP 400 RESTART LDF 0 /SET DATA FIELD TO 0 SET I 1 /SET UP MOVE COUNT -TABE+17 SET I 2 /SET TO-ADDRESS 2017 /BIT 1 (2-010) SAYS USE DF SET I 3 /SET FROM-ADDRESS 17 /BIT 1 (0-000) SAYS USE IF LDA I 3 /INCREM. 3.GET (3) STA I 2 /INCREM.2.STORE (2) XSK I 1 /INCREM. 1. SKIP IF 1=1777 JMP .-3 /1 NOT 1777. LOOP AGAIN SET I 2 /SET UP FOR LEFT 2677 /SWITCHES RESTART SET I 1 /20 JMP GUIDE-S -20 LDA I JMP GUIDE STA I 2 /INC 2. STORE INTO (2) XSK I 1 /END CHECK JMP .-2 JMP 17