/SELF STARTING BINARY LOADER /NOVEMBER 1971 SM /COPYRIGHT 1971 DIGITAL EQUIPMENT CORPORATION / MAYNARD, MASSACHUSETTS 01754 CAF=6007 RIMS2=7767 RIMR1=7761 COUNT=7776 *200 /VRS *7600 END, JMS ASSEMB /PUT CHECKSUM TOGETHER *. CIA *. TAD CKSUM /GET TOTAL *. SZA /GOOD LOAD? *. HLT /NO--HALT AND DISPLAY DISCREPANCY *. TAD SWITCH /WAS LAST DATA AN ORIGIN? *. SZA CLA *. JMP .+7 /NO--DO NOT START EXECUTION *. CAF /YES--RESTORE MACHINE STATE TO START *. TAD FLD *. IAC *. DCA .+1 /SET INSTRUCTION FIELD TO LAST LOADED FIELD *. HLT *. JMP I ORIGIN /**EXIT TO LOADED PROGRAM** *. M376, HLT /LOAD O.K, NOT SELF START *. BEGIN, KCC *. RFC *. RDF *. TAD CDF0 /SET FIELD FROM SWITCHES *. DCA FLD *. TAD MASK *. DCA LEAD /SET UP TO IGNORE BLANK TAPE & LEADER/TRAILER *. JMS FETCH /GET FIRST CHARACTER *. JMP .-1 /IGNORE UNTIL FIRST REAL DATA *. TAD LT /CHARACTER IS ORIGIN OR DATA *. DCA LEAD /NO LONGER IGNORE BLANK TAPE *. LOAD, DCA CKSUM *. TAD CHAR *. DCA WORD1 /STORE FIRST HALF *. JMS READ /GET SECOND HALF *. DCA WORD2 /STORE IT *. JMS FETCH /IS NEXT WORD LEADER/TRAILER? *. JMP END /YES--THIS IS THE CHECKSUM *. JMS ASSEMB /NO--PUT WORD TOGETHER *. RESTOR, SNL /IS IT AN ORIGIN? *. JMP FLD /NO *. DCA ORIGIN /YES--RESET ORIGIN *. DCA SWITCH /RESET ORIGIN SWITCH *. SUM, TAD WORD1 *. TAD WORD2 *. TAD CKSUM /UPDATE CHECKSUM *. JMP LOAD *. FLD, HLT /SHOULD CONTAIN CDF N0 *. DCA I ORIGIN /LOAD DATA *. ISZ SWITCH *. C70, 70 /EFFECTIVE NOP *. ISZ ORIGIN *. C177, 177 *. JMP SUM /SUBROUTINE TO FETCH A CHARACTER FROM INPUT TAPE /RETURNS TO CALL+1 IF LEADER/TRAILER /RETURNS TO CALL+2 IF DATA OR ORIGIN /HANDLES FIELD SETTINGS AND RUBOUTS *. FETCH, 0 *. DCA ASSEMB /RESET RUBOUT SWITCH *. JMS READ /FETCH A CHARACTER *. TAD M376 *. M40, SMA SZA CLA /IS IT A RUBOUT? *. ISZ ASSEMB /YES--WAS SWITCH -1? *. TAD ASSEMB *. RAR /NO-- *. SZL CLA /IS RUBOUT SWITCH SET? *. JMP FETCH+2 /YES--IGNORE CHARACTER *. TAD CHAR /CHARACTER IS GOOD DATA *. LEAD, HLT /WILL BE TAD M200 OR AND C177 *. SNA CLA /IS IT LEADER/TRAILER? *. JMP I FETCH /YES--RETURN-- *. TAD CHAR *. TAD M300 *. M300, SMA /IS IT A FIELD SETTING? *. JMP FSET /YES--HANDLE IT *. ISZ FETCH /NO--ORIGIN OR DATA *. M200, 7600 /CLA *. JMP I FETCH /--RETURN-- /INPUT ROUTINE /SET BY INITIALIZATION CODE FOR EITHER ASR33 OR HIGH SPEED READER /ENTER WITH AC=0 /EXIT WITH CHARACTER IN AC AND IN CHAR *. READ, 0 *. DCA COUNT /PREPARE TO TIME OUT *. ISZ COUNT /IF OUT OF TAPE *. JMP WAIT *. NOTAPE, KRB /OR RCC=6016 *. TAPE, KSF /OR RSF=6011 *. JMP .-4 *. D07715, KRB /OR RCC=6016 *. DCA CHAR *. TAD CHAR *. JMP I READ /--RETURN-- *. WAIT, TAD M40 *. DCA INIT *. ISZ INIT *. JMP .-1 *. JMP TAPE /HANDLER FOR FIELD SETTING /ENTERED FROM FETCH *. FSET, AND C70 /MASK OUT ALL BUT FIELD NUMBER *. TAD CDF0 /GET REST OF CDF *. DCA FLD /INSERT WHERE IT WILL BE EXECUTED *. JMP FETCH+2 /SUBROUTINE TO ASSEMBLE TWO CHARACTERS INTO ONE WORD FOR STORAGE /ENTER WITH AC=0 /EXIT WITH WORD IN AC *. ASSEMB, 0 *. TAD WORD1 *. CLL RTL *. RTL *. RTL *. TAD WORD2 *. JMP I ASSEMB /--RETURN-- /CONSTANTS *. CDF0, CDF 0 *. MASK, AND C177 *. LT, TAD M200 /INITIALIZATION CODE /USED ONCE ONLY--MAY BE OVERWRITTEN BY DATA BREAKS /TEMPORARY STORAGE LOCATIONS /MAY ALSO BE OVERWRITTEN BY DATA BREAKS *. INIT, CLA *. TAD RIMR1 *. CHAR, DCA NOTAPE *. ORIGIN, TAD RIMS2 *. WORD1, DCA TAPE *. WORD2, TAD RIMR1 *. CKSUM, DCA TAPE+2 *. SWITCH, TAD RESTOR *. DCA 7772 *. JMP BEGIN /STARTING ADDRESS FOR MANUAL START *7777 JMP BEGIN /LOCATION TO OVERLAY RIM AND START LOADER *7772 JMP INIT $