TITLE LOAD8 PDP-8 LOADER USING TMSR ENTRY LOAD8 DEFINE ERRMES(A) < JRST [TTCALL 3,[ASCIZ/A/] JRST LOAD8]> DEFINE EXMES(A) < JRST [TTCALL 3,[ASCIZ/A/] EXIT]> LOAD8: RESET SETZB 10,11 SETZM CHKSUM# TTCALL 3,[ASCIZ/ FILE TO BE LOADED? /] TTCALL 4,1 MOVE 4,[POINT 6,10] NEXTCH: CAIN 1,15 ;READ FILE NAME JRST START CAIN 1,"." MOVE 4,[POINT 6,11] SUBI 1,40 CAIE 1,"."-40 IDPB 1,4 TTCALL 2,1 ERRMES () JRST NEXTCH START: TTCALL 11, ;INIT FILE NAME SETZB 12,13 SETZB 14,15 INIT 1,10 SIXBIT/DSK/ IBUF ERRMES () LOOKUP 1,10 ERRMES () PJOB 1, TRMNO. 1, EXMES () MOVEI 2010 MOVEI 2,1 HRLZI 3,3 TRMOP. 3, EXMES() JSP 17,GETWRD JSP 17,GETWRD CAIE 200 ERRMES() JSP 17,GETWRD CAIN 200 JRST .-2 TTCALL 1,[202] JRST NXTWD1 NXTWRD: JSP 17,GETWRD NXTWD1: MOVE 1,0 JSP 17,GETWRD MOVE 2,DELAY CAIN 2,200 ;LEADER OR TRAILER? JRST DONE ;YES, GO READ THE CHECKSUM CAIN 1,377 JRST RUBOU1 CAIL 1,300 ;FIELD CHANGE JRST MEMCHG CAIL 1,100 JRST ORIGIN JRST SEND RUBOUT: JSP 17,GETWRD RUBOU1: CAIE 377 JRST .-2 JRST NXTWRD ORIGIN: TTCALL 1,[140] MOVEI 2,140 ADDM 2,CHKSUM SEND: ANDI 1,77 ADDI 1,40 TTCALL 1,1 ADDM 1,CHKSUM ANDI 77 ADDI 40 SEND1: TTCALL 1,0 ADDM CHKSUM JRST NXTWRD MEMCHG: ANDI 1,70 LSH 1,-3 ADDI 1,150 TTCALL 1,1 ADDM 1,CHKSUM JRST NXTWD1 DONE: TTCALL 3,LOADMP ;FINISH LOAD AND DUMP CHECKSUM TTCALL 0 ;READ FIRST CHAR OF CHECKSUM ANDI 177 TTCALL 1 ;READ SECOND CHAR OF CHECKSUM ANDI 1,177 SUBI 40 SUBI 1,40 LSH 6 ADD 1 MOVE 1,CHKSUM ADDI 1,1300 ;ADD SUM OF CHARACTERS IN LOADMP ANDI 1,7777 CAME 0,1 ERRMES () TTCALL 3,[ASCIZ/ LOAD COMPLETED!/] TTCALL 0 ;WAIT FOR DUMP CHECKSUM TTCALL 0 PJOB 1, TRMNO. 1, EXMES () DONE1: MOVEI 2 ;WAIT FOR ALL TYPING TO STOP MOVSI 3,2 TRMOP. 3, JRST DONE2 MOVEI 100 HIBER EXMES() JRST DONE1 DONE2: MOVEI 2010 SETZ 2, HRLZI 3,3 TRMOP. 3, EXMES() EXIT 1, JRST LOAD8 LOADMP: BYTE (7) 150,140,134,40,40,40,136,40,137,137,2,5,0 GETWRD: SOSGE IBUF+2 JRST GETBF ILDB IBUF+1 EXCH DELAY# JRST (17) GETBF: IN 1, JRST GETWRD GETSTS 1, TRNN 74B23 JRST GETBFE TTCALL 1,[202] ERRMES () GETBFE: TRNN 1B22 JRST GETWRD TTCALL 1,[202] ERRMES () IBUF: BLOCK 3 END LOAD8