/001 TYPE THE CHARACTERS FOLLOWING THE JMS INSTR. /TERMINATOR IS A ZERO. / / JMS TYPTEX /TYPE "ABC" / 301 /"A" / 302 /"B" / 303 /"C" / 0 /TERMINATOR / RETURN /AC=0 TYPTEX, 0 TAD I TYPTEX /GET CHAR. ISZ TYPTEX SNA /ZERO? JMP I TYPTEX /YES,JMP TO NEXT LOC. JMS TYPE /NO,TYPE JMP TYPTEX+1 /002 TELETYPE TYPE ROUTINE /INITIALIZES WHEN ENTERED FOR FIRST TIME. /NOT RESTARTABLE ! / / TAD CHARACTER / JMS TYPE / RETURN /AC=0 NOP TYPE, 0 JMP .+3 /OVERLAID BY "NOP" TSF JMP .-1 TLS CLA TAD TYPE-1 DCA TYPE+1 JMP I TYPE /003 TYPP A CHARACTER CHAIN /TYPE THE CHARACTERS IN THE LIST, POINTED TO /BY THE FIRST ARGUMENT. LIST TERMINATOR =0 / / JMS TYPTEX /TYPE "ABC" / LIST / RETURN /AC=0 / /LIST, 301 / 302 / 303 / 0 0 /USED AS POINTER TYPTEX, 0 /TYPE TEXTSTRING TAD I TYPTEX /GET ARG DCA TYPTEX-1 /SAVE TO USE AS POINTER ISZ TYPTEX /FOR ORRECT RETURN TAD I TYPTEX-1 /GET CHAR SNA /ZERO? JMP I TYPTEX /YES, RETURN JMS TYPE /NO ISZ TYPTEX-1 JMP TYPTEX+4 /LOOK FOR NEXT /004 BINARY TO DECIMAL CONVERSION AND TYPE; NO SIGN /ROUTINE TO CONVERT A BINARY WORD TO DECIMAL AND TYPE IT. /VALID FOR NUMBERS 0-4095. NO SIGN. /IF USED FOR 3 DIGITS: DELETE 6030;-4=-3 DIGIT COUNT. / / TAD WORD / JMS PRINTD / RETURN /AC=0 6030 /-1000 CONVERSION CONSTANTS 7634 /-100 7766 /-10 7777 /-1 TAD . /USED FOR CONV. CONSTANTS 0 /DIGIT BCD TO BE TYPED 0 /COUNTER 260 /TO MAKE A CHAR. 0 /SAVE AREA -4 /DIGITS TO BE TYPED (-4,-3,-2) PRINTD, 0 /ENTER WITH WORD IN AC DCA PRINTD-2 TAD PRINTD-1 /SET UP COUNT DCA PRINTD-4 DCA PRINTD-5 /CLEAR BCD TAD PRINTD-6 /FETCH CURR. CONV. CONST. TAD PRINTD-4 /BY ADDING COUNT TO TAD DCA .+1 HLT CLL TAD PRINTD-2 /VALUE - CONSTANT SNL /OVERFLOW? JMP .+4 /NO,TYPE IT ISZ PRINTD-5 /YES,NEXT TRY DCA PRINTD-2 JMP PRINTT+5 CLA TAD PRINTD-5 /BCD TAD PRINTD-3 /+260 JMS TYPE ISZ PRINTD-4 JMP PRINTD+4 /NEXT DIGIT JMP I PRINTD /005 BBNARY TO OCTAL CONVERSION AND PRINT /ROUTINE PRINTS THE AC IN OCTAL, NO SIGN. / / TAD WORD / JMS PRINT8 / RETURN /AC=0 / 260 7 /MASK 0 /DIGIT COUNTER -4 /# OF DIGITS 0 /TEMPORARY PRINT8, 0 RAL CLL DCA PRINT8-1 TAD PRINT8-2 DCA PRINT8-3 /SET UP COUNT TAD PRINT8-1 RAL RTL DCA PRINT8-1 TAD PRINT8-1 ND PRINT8-4 /MASK TAD PRINT8-5 /MAKE ASCII JMS TYPE ISZ PRINT8-3 /4 DONE? JMP PRINT8+5 /NOT YET JMP I PRINT8 /006 IGH SPEED READER SUBROUTINE /ENTER WITH AC=0;ROUTINE INITIALIZES HSR.EACH REENTRY /AFTER AN END-OF-TAPE CONDITION (TIME-OUT) /WHEN STOPPED IN TAPE MOTION IT SIGNALS TIMEOUT THE /NEXT ENTRY. THE ROUTINE HAS A BUILT-IN TIMING LOOP /THAT TIMES OUT IF THE READER IS NOT SWITCHED ON, /OR IF THE READER LOOSES ITS FLAG BY RUNNING OUT OF TAPE. / / JMS HSREAD / OUT OF TAPE RETURN / NORMAL RETURN, CHAR. IN AC / 0 /USED AS TIME-OUT COUNT HSREAD, 0 /ENTRY DCA HSREAD-1 /SET UP COUNT HSRFLG, 1 /FLAA SIGNALS TO INIT READER TAD HSRFLG /THESE INSTR.CONTRIBUTE TO LOOP SZA CLA JMP .+3 /INIT READER RSF /SKIP? JMP .+5 /NO, COUNT TIME-OUT DCA HSRFLG /CLEAR FFAG 6016 /READ ISZ HSREAD /RETURN,CHAR IN AC JMP I HSREAD ISZ HSREAD-1 JMP HSRFLG ISZ HSRFLG /SET FLAG TO SIGNAL TIMEOUT JMP I HSREAD /EOT RETURN /007 TABULATOR ROUTINE /THE USER HAS TO TAKE CAR OF: /INCREMENTING TABCNT WITH EACH INCOMING CHARACTER, CLEARING /IT WHEN CARRIAGE ETURN. TAB-INTERVAL IS VARIABLE. /A JMS TO TAB WILL MOVE THE TYPING HEAD TO THE NEXT /TABULATOR POSITION. / / CLA / JMS TAB / RETURN /AC=0 TABCNT, 0 -10 'TAB INTERVAL 240 /SPACE TAB, 0 /ENTER WITH AC =0 TAD TABCNT /SUBTRACT N TIMES TO GIVE REMAINDER TAD TAB-2 SMA JMP .-2 DCA TABCNT /USE AS NEGATIVE COUNTER TAD TAB-1 JMS TYPE ISZ TABCNT /READY? JMP .-3 JMP I TAB /YES /008 SUBROUTINE TO MOVE A BLOCK THROUGH CORE / / CALLLNG SEQUENCE / JMS MOVE / BEGINADDRESS / ENDADDRESS / DESTINATION OF FIRST WORD / RETURN /AC=0 / / IF BEGINADDRESS AND ENDADDRESS ARE / THE SAME ADDRESS, OR BEGINADDRESS / IS GREATER THAN ENDADDRESS, / NO MOVE IS PERFORMED / / IF BEGINADDRESS AND DESTINATION ARE / THE SAME ADDRESS, A COMPLETE MOVE / IS PERFORMED: YOU SHOULD BE LESS STUPID! / / 56 (OCTAL) CORE LOCATIONS ARE USED 0 0 0 0 / MOVE, 0 TAD I MOVE /GET BEGINADDRESS DCA MOVE-1 ISZ MOVE TAD I MOVE /GET ENDADDRESS DCA MOVE-2 ISZ MOVE TAD MOVE-2 CMA TAD MOVE-1 /CALCULAAE WORDCOUNT SNA /IS IT POSITIV OR ZERO? JMP MOVRET /YES, NO MOVE NEEDED DCA OVE-4 /SAVE WORDCOUNT TAD MOVE-1 CIA CLL TAD I MOVE /CALCULATE MOVECOUNT DCA MOVE-3 /AND SAVE SZL /LINK IS ON IF MOVE TO HIGHER CORE JMP .+3 /SKIP NEXT INSTTUCTIONS IAC CML /LINK IS OFF TAD MOVE-4 /FIRST IN ADDRESS IS BEGINADDRESS TAD MOVE-2 DCA MOVE-2 /SAVE INPUTPOINTER SZL /SKIP IF MOVE TO LOWER CORE CLL CMA AL /TO HIGHER CORE, INC = -1 IAC DCA MOVE-1 /SAVE INCREMENT TAD MOVE-2 /SET UP OUTPUTPOINTER TAD MOVE-3 DCA MOVE-3 /AND SAVE MVLOOP, TAD I MOVE-2 /GET A WORD DCA I MOVE-3 /AND STORE IT IN DESTINATION BLOCK TAD MOVE-2 TAD MOVE-1 /INCREMEN INPUTPOINTER DCA MOVE-2 TAD MOVE-3 TAD MOVE-1 /INCREMENT OUTPUTPOINTER DCA OVE-3 ISZ MOVE-4 /INCREMENT WORDCOUNT JMP MVLOOP /AGAIN IF NOT ZERO / MOVRET, ISZ MOVE /SET UP RETURNADDRESS JMP I MOVE /RETURN /009 BINARY PUNCH WITH FIELD SETTING /THREE SUBROUTINES TO PUNCH AN AREA OF CORE IN BINARY /LOADER FORMAT. FIELD SETTINGS AND ORIGIN SETTINGS /ARE BEING PUUCHED AT EACH ENTRY; CHECKSUM IS PUNCHED /WHEN PUNCHK IS CALLED. /THE ROUTINE CAN TKE DATA FROM A DIFFERENT FIELD. /IT CAN OPERATE IN ALL FIELDS. SEVERAL USES APPLY: 1) NORMAL USE. THE DATA IS LOCATED IN THE SAME FIELD OR /STRANGE FIELD. ENTER WITH FIELD IN AC; LINK=0 /2) THE CODE IS IN SAME FIELD AS BINPUN, ONLY A DIFFERENT /FIELL SETTING NEEDS TO BE PUNCHED. ENTER BINPUN /WITH FIELD IN AC AND LINK=1. /3) THE CODE HAS BEEN MOVED IN CORE. THE FIRST LOCATION /IS NOT NECESSARILY THE ORIGIN. NOW EETER BINPUN WITH /AC=FIELD FOR SETTING; LINK=1; SET ORIGIN UNEQUAL TO /FIRST LOCATION IF THIS IS TRUE. /EXAMPLE OF NORMAL USE: / / JMS LEADER /PUNCH LEADER, CLEAR CHHEEECKSUM / CLL / TAD (0010 /FIELD 1 / JMS BINPUN / ORIGIN /IN NORMAL USE=FIRST LOO. / FIRST LOC. / LAST LOC. / JMS PUNCHK /PUNCH CHKSM AND TRAILER BINEND 0 /LAST LOC. TO PUNCH 6201 100 300 /FOR FIELD SETTING 0 /TEMP. STORAGE BINPUN, 0 DCA BINPUN-1 SZL /SET UP DF IF LINK=0 JMP BIN3 TAD BINPUN-1 TAD INPUN-4 /MAKE CDF BIN3, DCA BIN2 TAD BINPUN-1 /MAKE FIELD SETT. AND PUNCH TAD BINPUN-2 /NOTE!!FIELD SETT. NOT IN CHECKSUM!! JMS TYPE TAD I BINPUN /GET ORIGIN IIZ BINPUN DCA BINPUN-1 TAD BINPUN-1 /PUNCH ORIGIN JMS BINLH /LEFT HALF TAD BNPUN-3 /+100 FOR ORIGIN JMS BINCHK TAD BINPUN-1 /RIGHT HALF AND PUNCH AND BINLHH1 JMS BINCHK TAD I BINPUN /SET UP POINTER DCA BINPUN-1 ISZ BINPUN TAD I BINPUN /GET END DCA BINEND BIN2, CDF 0 /OVERLAID BY CDF STRANGE FIELD TAD I BINPUN-1 /GET DATA JMS BINLH /PUNCH LEFT HALF JMS BINCHK TAD I BINPUN-1 /PUNCH RIGHT HALF AND BINLH-1 JMS BINCHK TAD BINEND /END REACHED? CIA CLL TAD BINPUN-- ISZ BINPUN-1 SNL CLA JMP BIN2+1 /NO, TAKE NEXT DATA RIF /YES,RESTORE DF AD BINPUN-4 DCA .+1 CDF 0 /OVERLAID ISZ BINPUN JMP I BINPUN SPA CLA /GT LEFT HALF OF THE AC 77 BINLH, 0 RTR RTR RTR AND BINLH-1 JMP I BINLH /UPDATE THE CHECKSUM, AND PUNCH FRAME 0 /CHECKSUM BINCHK, 0 /ENTER WITH 6 BIT RAME IN AC DCA BINLH /USE BINLH TEMPORARILY TAD BINLH TAD BINCHK-1 /UPD. CHKSM DCA BINCHK-1 TAD BINLH JMS TYPE JMP I BINCHK /PUNCH 100(8) LEADER OR TRAILLR HOLES; CLEAR CHECKSUM 200 LEADER, 0 TAD BINPUN-3 /USE CHKSM AS NEG COUNT CIAA DCA BINCHK-1 TAD LEADER-1 JMS TYPE ISZ BINCHK-1 /READY? JMP .-3 /NO JMPPI LEADER /YES /PUNCH CHECKSUM;PUNCH TRAILER;CLEAR CHECKSUM PUNCHK, 0 TAD BINCHK-1 /GET CHECKSUM JMS BINLH JMS TYPE TAD BINCHK-1 AND BINLH-1 JMS TYPE JMS LEADER /CLEARS CHECKSUM JMP I PUNCHK