Directory of image this file is from
This file as a plain text file
*20 LMODE DATA=LDF 3 /LDF FOR DATA TABLES=LDF 2 /LOOKUP LDF DTEXT=LDF 1 /TEXT BUF LDF SEGMNT 0 /JOB PARAMETERS STORED HERE: ARE WRITTEN /OUT AS HEADER ON DATA FILES *20 PGCODE, 1111 /PROGRAM CODE JOB, 0 /JOB CONTROL WD SUBSES, 0 /SUBJ.-SESS. ID TEXTAP, 0 /SOURCE TAPE ID TEXBLK, 0 /1ST TEXT TBLK DATBLK, 0 /1ST DATA TBLK TOPLIN, 0 /TOP LINE NO. LINES, 0 /DISPLAY LINES SPACIN, 0 /LINE SPACING WIDTH, 0 /WINDOW WIDTH MLW, 0 /REL. WIND.POSN. NPAGE, 0 /DISPLAY PAGE NO / PMODE MDT, -144 /10 MSEC/SAMPLE C2720, 2720 LMODE / /BEGINNING OF EACH JOB, PROGRAM ACCEPTS /INPUTS FOR ABOVE PARAMETERS, EXCEPT FOR /"PGCODE" AND "NPAGE", WHICH ARE AUTOM- /ATICALLY SET. / /"SUBSES": ID FOR SUBJECT AND SESSION /"TEXTAP": TAPE ID FOR SOURCE AND QUEST. /"TEXBLK": STARTING TBLK FOR TEXT SOURCE /"DATBLK": " " " DATA OUTPUT (UNIT 1) /"TOPLIN": LINE NO. FOR UPPER DISPLAY / LINE: 0=TOP,...,37=BOTTOM /"LINES" : NO. LINES DISPLAYED PER PAGE /"SPACIN": 1=SINGLE SPACING,2=DOUBLE,ETC /"WIDTH" : WINDOW WIDTH IN CHARS /"MLW" : POSITION OF LEFT WINDOW EDGE / W/R/T FIXATION PT: -N MEANS / N TO LEFT,+N N TO RIGHT / /NOTE THAT (LINES-1)*SPACIN+TOPLIN<40 OC / /THIS SECTION HANDLES INTERRUPTS. /TWO POSSIBLE INTERRUPTS: ON SCHMIDT /TRIGGER, SUBJECT SIGNALS FROM PULSE BOX /SIGNAL END OF READING FOR PAGE OR /END OF FIXATION DURING CALIBRATION. /CLOCK OVERFLOW INTERRUPT SIGNALS TIME /TO RESAMPLE X AND Y SIGNALS AND PERFORM /THE NECESSARY UPDATING. *40 0 /INTERRUPT PC STC ACSAVE /SAVE AC /INTERRUPT LINK&MQ AREN"T SAVED! /HOWEVER, SUBROUTINE PC=0000 MUST BE /SAVED AND RESTORED ADD STC SAVE0 IOB 6135 /CLSA APO I /<0:CLOCK OFLOW JMP TRIGGR />0:PULSE I"RUPT /SAMPLE Y AND X SIGNALS (A-D 16 & 17) /COMPUTE TABLE LOOKUP FOR EACH OF THEM TABLES /LDF FOR LOOKUP SAM 16 /Y SIGNAL ADA I C1000, 1000 /MAKE POS SCR 2 /SCALE=(0,377) ADA I 2000 /Y TABLE IN LDF STC 16 /LOOKUP ADDRESS SAM 17 /X SIGNAL ADD C1000 SCR 2 /(0,377) ADA I 2400 /LDF + 400 STC 17 /LOOKUP ADDRESS /NOW COMPARE X-POS WITH LAST ONE="XFIX" /IF DIFFERENCE IS LESS THAN OR EQUAL TO /"XCRIT" CHAR POSNS, NO CHANGE IS JUDGED LDA I XFIX, 0 COM ADA 17 APO I COM /GET -ABS.VAL. ADA I /OF X-DIFF AND XCRIT, 4 /COMPARE WITH STC D /X-MOVE CRITERIA /"FIXING"=0 IF SUBJECT LAST IN FIXATION /MODE,NOT=0 IF IN MOVEMENT MODE SAE I FIXING, 0 JMP MOVING ADD D />0:NO X CHANGE APO JMP SACCAD /NO LONGER FIXIN /X POSITION HAS NOT CHANGED: CHECK Y /POSITION FOR PERSISTING FIXATION LDA I YFIX, 0 /Y FIX. POS. SAE 16 JMP SACCAD /Y HAS CHANGED! /FIXATION PERSISTS: INCREMENT FIXATION /TIMER (REGISTER 14) ONLY UP TO 777 LDA 14 SAE I 777 XSK I 14 /NOW RETURN TO MAINLINE DISPLAY RESTOR, LDA 40 BSE I C6000, 6000 /FORM RETURN JMP STC RETURN /JUMP INTSR. SET I 0 SAVE0, 0 /RESTORE SUBR PC DJR /HOLD PC ON EXIT LDA I ACSAVE, 0 /RESTORE AC IOB 6244 /RMF IOB 6001 /ION RETURN, HLT /RETURN JUMP / /CONTROL ARRIVES HERE WHENEVER CHANGE IN /X OR Y DEFINES END OF FIXATION. /ZERO SACCADE-TIMER (REGISTER 15), SET /"FIXING" NON-ZERO (MOVEMENT MODE), /SAVE (XFIX,YFIX) AS DATA, AND THEN /REDEFINE XFIX AND YFIX AND RETURN. SACCAD, SET I 15 0 /INIT SACCADE TM ADD C215 /WILL BE >0 STC FIXING /NON-ZERO=MOVING ADD XFIX ROL 6 ADD YFIX /(XFIX,YFIX) JMP STORE /SUBR STORES WD TABLES /LDF FOR LOOKUP /INCREMENT SACCADE TIMER TO MAX OF 7 MORMOV, LDA 15 SAE I 7 XSK I 15 LDA 16 STC YFIX /UPDATE Y LDA 17 STC XFIX /UPDATE X JMP RESTOR /RETURN / /CONTROL REACHES HERE WHENEVER SUBJECT /IN "MOVEMENT" PHASE ("FIXING" NOT 0) /STAYS IN "MOVEMENT" UNTIL TWO SUCCESSIV /X AND Y SAMPLES WITHIN FIXATION CRITERI / MOVING, LDA I D, 0 /<0:STILL MOVING APO JMP MORMOV /STILL MOVING LDA YFIX /X STOPPED:CHECK SAE 16 /Y POSN. JMP MORMOV /Y CHANGED /END OF MOVEMENT: NEW FIXATION BEGINS. /STORE DURATIONS OF LAST FIXATION AND OF /SUCCEEDING SACCADE AS NEXT DATA WORD: /BITS 0-2 SACCADE+BITS 3-11 FIXATION. /THEN SETUP NEW DISPLAY CONTROLS. LDA 15 /SACCADE DURATIO ROR 3 /INTO BITS 0-2 ADD 14 /FIXATION DURAT. JMP STORE /SAVE WORD TABLES /LOOKUP LDF CLR STC FIXING /FIXATION MODE SET I 14 /INIT FIX TIMER 1 LDA 17 STC XFIX /NEW XFIX /DON"T NEED TO REDEFINE YFIX, SINCE IT /MUST BE IDENTICAL FOR NEW FIXATION. /NOW REDEFINE DISPLAY CONTROL WORDS. SET I 4 LINCON-1 SET 6 MLINES ADD C7000 /EACH LINE SET STA I 4 /TO ALL PERIPH. XSK I 6 JMP .-2 LDA 16 /16=YFIX ADD ADLIN2 /=AD-1 WINDOW STC 4 /LINE ADD XFIX ADD MLW /NO. CHARS TO COM /LEFT OF WINDOW APO I /TOO FAR LEFT? JMP NOROOM /TOO FAR LEFT STA I 4 /=CONTROL WORD LDA I MWIDE, -10 /-WINDOW WIDTH STC MWIDTH JMP DISPLA /EXIT TO DISPLAY /WHEN NEW FIXATION POINT ESTABLISHED, /THE ABOVE EXIT IS DIRECTLY TO THE /DISPLAY ROUTINE, SO THAT REFRESHING MAY /BEGIN ON THE NEW WINDOW LINE, RATHER /THAN CONTINUING FROM THE INTERRUPT SPOT / NOROOM, ADD MWIDE /DECREASE WINDOW STC MWIDTH COM STA I 4 /CONTROL WORD=-0 JMP DISPLA / /CONTROL REACHES HERE WHENEVER INTERRUPT /OCCURS ON SCHMIDT TRIGGER 1 (I.E., /POSITIVE PULSE). IF DURING READING, /THIS SIGNALS END OF PAGE, AND ANY DATA /STORED BUT NOT YET WRITTEN OUT BY THE /OUTPUT BUFFERING ROUTINES IS OUTPUT; /THEN THE NEXT PAGE (IF ANY) IS RUN. /IF DURING CALIBRATION (SW 0 UP), PULSE /MEANS SAMPLE CHANNELS FOR CALIB POINT. / TRIGGR, BCL I 7737 /SAVE BIT 6 AZE I /EVENT 1? JMP RESTOR /SPURIOUS INTER. SNS I 0 /READING OR CALI JMP EXCALB /CALIBRATION /MUST BE END OF PAGE: SAVE TWO 7777"S /AS END-MARKERS. LDA I 7777 JMP STORE LDA I 7777 JMP STORE /NORMALLY HAVE CURRENT DATA BLOCK TO /WRITE OUT, UNLESS THE END-MARK (7777) /HAPPENED TO END AN MBLK, IN WHICH CASE /BLOCK WILL HAVE BEEN WRITTEN ALREADY. /RETURN FROM ABOVE CALL TO "STORE" WILL /HAVE AC=DATBLK>0 IF SO WRITTEN, ELSE<0 APO I JMP EPAGE /ALREADY WRITTEN LDA 13 BCL I 6377 /GET MBLK 1ST AD ADD C6000 /ABS WRITE ADDR STD /WAIT FOR TAPE JMP .-1 JMP WRITE /ENTRY IN "STORE /RETURNS WHEN OUTPUT STARTED (NO PAUSE). /NOW CHECK IF THERE"S MORE OF TEXT. EPAGE, LDA LINES ADD MLINES /LAST PAGE DONE AZE I /IF MLINES<LINES JMP NEXPAG /DO NEXT PAGE / /NORMALLY QUESTION-RUNNING ROUTINE FITS /HERE: TEMPORARY RETURN TO MONITOR QUESTN, HLT / /SUBR STORES AC VIA 13 INTO DATA FIELD /WHENEVER END OF MBLK REACHED, ITS /WRITTEN OUT VIA THE "NO PAUSE" AXO OPT. / STORE, DATA /DTA LDF STA I 13 LDA 13 BSE I 7400 /WILL BE 7777 AZE /IFF END MBLK JMP /NOT END:RETURN /END MBLK: WRITE IT UNIT 1 & INCR DATBLK STD /HAVE TIMING ERR JMP ERROR /IF IN PROGRESS LDA I 3401 /CONVERT 13 INTO ADD 13 /6000+400*MBLK WRITE, TMA /ABS ADR TO TMA LDA I 30 /ENABLE EX AD & AXO /NO PAUSE OPTION LDA DATBLK STC .+2 WRC U /START WRITING 0 ADD ONE ADM DATBLK /INCR.FOR NEXT SAE I 1000 JMP /RETURN JMP ERROR /NO WRITE-AROUND / /THIS SECTION "RUNS" PAGE DISPLAY AND /WINDOW CONTROL AND DATA ACQUISITION. / NEXPAG, LDA I /ANOTHER PAGE? ENDPAG, 0 /PTR END LAST PG STC PAGEPT /NEXT PAGE PTR JMP SETPAG /GET PAGE TEXT ADD MLINES AZE I /NO LINES: DONE! JMP QUESTN /DO QUESTIONS /BEFORE RUNNING PAGE DISPLAY, SET-UP /PARAMETER HEADER BLOCK AT BEGINNING OF /DATA FIELD. RUNPAG, DATA SET I 13 3777 /START AT 2000 SET I 12 PGCODE-1 /PARAMETER ARRAY SET I 6 -13 LDA I 12 STA I 13 XSK I 6 JMP .-3 LDA I 1 ADM I 12 /INCR. NPAGE STA I 13 /AND COPY /13 NOW IS AT DATA STORAGE ADDRESS-1 /INITIALIZE EYE-POSITION SAMPLERS CLR STC FIXING /START WITH STC XFIX /ASSUMED FIXATON STC YFIX /AT (0,0) OF 0 STC 14 /DURATION /TURN ON CLOCK INTERRUPTS FOR EITHER /CLOCK OVERFLOW OR SCHMIDT TRIGGER 1 LDA I 160 PDP PMODE CLEN /CLOCK ENABLED TAD C2720 /160+2720=3100 CLLR /10 KHZ CLOCK CLA TAD MDT /SAMPLING RATE CLAB /TO BUFFER PRSET CLSA /CLEAR REQUESTS LINC LMODE LDA I 40 /SET 1/2 SIZE & ESF /NO TTY INTERPT. DISPLA, IOB 6001 /ION JMP SHPAGE /DISPLAY ON JMP .-1 /KEEP DISPLAYING / /END OF PAGE-RUNNING SECTION / /THIS SECTION DISPLAYS 3 X 3 "X" MATRIX /FOR SENSOR ALIGNMENT. CALLED FROM /MONITOR WITH SW 5 UP. ENDS SW 5 DOWN. / ADJUST, CLR ESF /HALF-SIZE SET I 6 -3 LDA I C360, 360 STC Y ADJLN, SET I 1 -2 SET I 5 -3 ADJCH, LDA Y DSC I 1463 DSC I 6314 /"X" LDA I 364 ADM 1 XSK I 5 JMP ADJCH LDA I -360 ADM Y XSK I 6 JMP ADJLN SNS I 5 JMP ADJUST+2 /REPEAT CYCLE JMP MONIT /BACK TO MONITOR / /END OF ADJUSTMENT SECTION / / /SUBROUTINE DISPLAYS PAGE OF TEXT = /"MLINES" OF TEXT, USING THE ARRAY OF /TEXT-LINE POINTERS AND LINE CONTROL /WORD ARRAYS. CONTROL=0 MEANS LINE NOT /SHOWN, BUT ITS LEFT AND RIGHT MARGINS /ARE MARKED. CONTROL<0 (EVEN -0) MEANS /(UP TO) -CONTROL CHARS SHOWN LEFT OF /WINDOW (IF ANY), FOLLOWED BY WINDOW /AND THEN (IF ANY) REMAINING CHARS IN /PERIPHERAL DISPLAY CONDITION. /ALWAYS BEGINS DISPLAYING AT "YFIX" LINE / SHPAGE, LDA 0 STC PGEXIT /SETUP RETURN SET I 6 MLINES, -10 /-LINES TO SHOW ADD YFIX /STARTING LINE ADD ADLIN1 /=LINADS-1 STC 3 /AD-1 ST. LIN AD ADD YFIX ADD ADLIN2 /=LINCON-1 STC 4 /AD-1 ST.LIN.CON ADD YFIX MUL DY ADD YTOP STC Y /STARTING Y V.C. DTEXT /TEXT LDF NXLINE, SET I 1 XLEFT, -2 LDA I 3 AZE I /LINAD=0:GO TO JMP WRAPUP /TOP OF DISPLAY STC 7 /AD-1/2 LINE TXT LDA I 4 /LINE C-WORD APO JMP SHOLIN /<0: SHOW LINE ADD Y /=0: SHOW MARGNS DSC I 7777 /LEFT MARGIN SET I 1 772 DSC I 7777 /RIGHT MARGIN CHNXLN, LDA I DY, -40 /LINE SPACING ADM Y /Y FOR NEXT LINE XSK I 6 /ANOTHER LINE? JMP NXLINE PGEXIT, HLT /RETURN / /SHOW LINE: FIRST CONTROL CHARS ARE /SHOWN IN PERIPHERAL STATUS, THEN UP TO /"WIDTH" IN WINDOW STATUS, AND THEN /REMAINING ONES IN PERIPH. STATUS / SHOLIN, AZE I JMP WINDOW /-0:NO LEFT PER. STC 5 NXCHP, LDH I 7 /NEXT PERIPH CHR SHD I 4000 /DONT DISPLAY JMP BLANK /BLANKS SHD I 4300 /END OF LINE? JMP CHNXLN ADA I M32, -32 /SHOW NON-LETTER APO /CHARS IN PERIPH JMP MASKCH /LETTER: MASK IT LDH 7 ROL 1 ADD ADPWS /FORM PW ADDRESS STC 2 ADD Y DSC 2 /SHOW CHAR DSC I 2 XSK I 1 /ADVANCE H.C. XSK I 5 /ANOTHER P-CHAR? JMP NXCHP JMP WINDOW BLANK, LDA I 11 ADM 1 /SKIP BLANK CHAR XSK I 5 /ANOTHER P-CHAR? JMP NXCHP JMP WINDOW MASKCH, LDA I Y, 0 DSC I MASKPW, 7007 /MASK PW LDA I 5 ADM ONE, 1 /SKIP 2ND PW XSK I 5 /ANOTHER P-CHAR? JMP NXCHP /DONE WITH LEFT PERIPHERY. NOW DO WINDOW WINDOW, SET I 5 MWIDTH, -10 /WINDOW WIDTH NXCHW, LDH I 7 SHD I 4300 /END OF LINE? JMP CHNXLN ROL 1 ADA I ADPWS, PATRN-2 /FORM PW ADDR. STC 2 LDA Y DSC 2 DSC I 2 /SHOW W-CHAR XSK I 1 /ADVANCE HC XSK I 5 /ANOTHER W CHAR? JMP NXCHW /DONE WITH WINDOW: FINISH LINE IN /PERIPHERAL MODE; 5 IS AT -0 AND HENCE /WILL XSK UNTIL END OF LINE DETECTED JMP NXCHP / /CONTROL PASSES HERE WHEN DISPLAY BEGAN /AT NON-TOP LINE OF PAGE. NOW MUST RESET /POINTERS 3 (LINADS) AND 4 (LINCONS) /AND Y. / WRAPUP, SET I 3 ADLIN1, LINADS-1 /AD-1 LINAD VECT SET I 4 ADLIN2, LINCON-1 /AD-1 LINCON VEC LDA I YTOP, 360 /TOP LINE Y JMP NXLINE-1 / /END OF PAGE DISPLAY SUBROUTINE. / /SUBROUTINE SETS UP PAGE DISPLAY. /FILLS ARRAY "LINADS" WITH 1/2 WORD /POINTERS-1/2 FOR EACH OF NEXT "LINES" /OF TEXT, WITH EXTRA 0 AT END FOR WRAP- /AROUND DISPLAY. SKIPS LEADING 57 ("/") /AT BEGINNING OF EACH LINE. / SETPAG, LDA 0 STC STEXIT /SETUP RETURN ADD LINES COM STA MLINES STC 6 SET I 7 PAGEPT, 6001 /PTR START PAGE DTEXT /TEXT LDF SET I 3 LINADS-1 /LINE POINTERS SET I 4 LINCON-1 /CONTRL WDS CODLIN, JMP NXTCH /SUBR CHECKS BUF LDH I 7 AZE I JMP ENDFIL /END OF FILE SAE I 57 /SKIP LEAD "/" JMP ERROR /FIRST NOT "/" LDA 7 STA I 3 /NEXT LINE PTR JMP NXTCH LDH I 7 SAE I /SKIP TO END OF 43 /LINE=43 JMP .-4 CLR /EACH LINE CONTR COM /INIT.=-0: STA I 4 /IN ALL-PERIPH. XSK I 6 /ANOTHER LINE? JMP CODLIN ADD 7 STC ENDPAG /SAVE END PTR STA I 3 /DUMMY LINAD=0 STEXIT, HLT /RETURN JUMP /END OF FILE ENCOUNTERED: DECREASE NO. /OF LINES TO BE DISPLAYED. ENDFIL, ADD 6 COM ADD MLINES STC MLINES JMP STEXIT-1 /RETURN / /SUBR CHECKS FOR TEXT POINTER=END OF /DTEXT LDF. IF AT END, SHIFTS ENTIRE /TEXT LDF DOWN SO THAT PAGEPT IS IN /FIRST SEGMENT OF IT. / NXTCH, LDA 7 /TEXT PTR AZE /7777=END JMP /NOT END:RETURN ADD PAGEPT BCL I 6377 /GET BITS 2-3 SCR 10 /=NO. SHIFT DOWN ADD TBLK /NEW LOW TBLK JMP TEXTIN /SUBR READS TEXT ADD PAGEPT BCL I 1400 /RESET PAGEPT STC PAGEPT /INTO 1ST SEGM. JMP SETPAG+3 /REENCODE TEXT / /SUBR TAKES AC=TBLK, STRIPS BITS 0-2, /AND THEN READS IN 4 TBLKS (UNIT 0) /INTO DTEXT LDF / TEXTIN, BCL I C7000, 7000 STC TBLK /DEFINES TBLK ADD STC TXIRET /RETURN JUMP STD JMP .-1 /WAIT IF BUSY AXO /NO EXT.TAPE OPS DTEXT /TEXT LDF LDA I C4000, 4000 JMP TBLKIN /SUBR READS TBLK LDA I 5001 JMP TBLKIN /2ND BLOCK LDA I 6002 JMP TBLKIN /3RD BLOCK LDA I 7003 JMP TBLKIN /4TH BLOCK TXIRET, HLT /RETURN / /SUBR TAKES MBLK FROM AC, ADDS TBLK /TO IT, AND THEN READS BLOCK (UNIT 0) / TBLKIN, ADA I TBLK, 0 STC .+2 RDC 0 JMP / /END OF PAGE ENCODING ROUTINE / /ARRAY OF LINE CONTROL WORDS: LINCON, 0 *.+20 /ARRAY OF TEXT-LINE ADDRESSES (-1/2) LINADS, 0 *.+20 / /ERROR ROUTINE. CONTROL ARRIVES HERE /WHEN FATAL OPERATIONAL ERROR OCCURS. /TYPES OUT "ERROR=XXXX", WHERE XXXX IS /LAST JUMP INSTR (TO ERROR). RETURNS TO /MONITOR / ERRMES, 4343 0522 2217 2200 /CR,CR,"ERROR" ERROR, LDA 0 STC ERRRET SET I 1 ERRMES-4000 /PTR TO "ERROR" JMP MESSAG /CR,CR,"ERROR" LDA I ERRRET, 0 JMP OCTPUT /"=XXXX" /SYSTEM MONITOR HERE. HALTS AND WHEN /STARTED, SW 5 UP: SENSOR ADJUSTMENT /SECTION. SW 0 UP: CALIBRATION SECTION. /BOTH DOWN, READING SECTION. / MONIT, HLT SNS I 5 JMP ADJUST SNS I 0 JMP CALIBR /NOW READ IN PARAMETER VALUES FOR NEXT /READING TASK. EACH PARAMETER /NAME IS TYPED OUT, FOLLOWED BY "=", /AND THEN ITS CURRENT VALUE (OCTAL) AND /THEN A SPACE. THEN A NUMBER (UNSIGNED /OCTAL) MAY BE ENTERED FOLLOWED BY A CR /IF A NEW VALUE IS DESIRED (LEADING /ZEROES MAY BE SURPRESSED), OR A DIRECT /CR IF THE SAME VALUE IS DESIRED. A /"RUBOUT" BEFORE THE CR RESTARTS THE /INPUT AT THE "=" FOR THE PARAMETER. / PARAMS, SET I 13 PGCODE /PGCODE FIXED SET I 1 /AD-1/2 PARAM LABEL1-4000 /LABELS (HF-WDS) SET I 6 -12 PGET, XSK I 13 JMP CRLF /CR,LF JMP MESSAG /TYPE PARAM LABL TYVAL, LDA 13 JMP OCTPUT /"=XXXX" (OCT.) LDA I 240 JMP TYPE /" " JMP GETPAR /INPUT PAR BY 13 XSK I 6 /ANOTHER PARAM? JMP PGET / /PARAMETERS OBTAINED. FILL NEEDED VALUES / LDA TOPLIN APO JMP ERROR /CANT BE <0 MUL I -20 ADD C360 STC YTOP ADD SPACIN APO JMP ERROR AZE I JMP ERROR /SPACING MUST>0 MUL I -20 STC DY ADD WIDTH APO JMP ERROR COM STC MWIDE LDA I -1 ADD LINES MUL SPACIN ADD TOPLIN ADA I -37 /LAST LINE NO. APO I /MUST <40 JMP ERROR CLR STC NPAGE /INIT. NPAGE=0 /READ IN 1ST 4 BLOCKS OF TEXT SOURCE ADD TEXBLK JMP TEXTIN LDA I 6001 /SKIP "*20"CR STC PAGEPT /TEXT AD-1/2 JMP SETPAG /SETUP PAGE JMP RUNPAG /RUN 1ST PAGE / /SUBR TYPES AC AS UNSIGNED OCTAL INTEGER /IN FORMAT "=XXXX". USES "Y" FOR STORE. / OCTPUT, STC Y ADD STC OCTRET /RETURN JMP LDA I 275 JMP TYPE /"=" LDA Y ROL 3 JMP OUTDIG /TYPE DIGIT ROR 6 JMP OUTDIG ROR 3 JMP OUTDIG JMP OUTDIG OCTRET, HLT /RETURN / /SUBR TYPES OCTAL DIGIT FROM AC 9-11 / OUTDIG, BCL I 7770 /STRIP DIGIT ADA I C260, 260 /ASCII CODE STC D /TEMP ADD STC DIGRET /RETRN JMP ADD D JMP TYPE LDA Y /RESTORE AC DIGRET, HLT /RETURN / /SUBR ACCEPTS UNSIGNED OCTAL INTEGER /FROM TTY. LEADING /ZEROES NEEDNT ENTER, AND A CR IS THE /TERMINATOR. THE OBTAINED VALUE IS /STORED VIA 13 (ONLY ON VALID INPUT). /AN INITIAL CR LEAVES CURRENT VALUE /INTACT. THE ENTRY IS RUBBED OUT AND /RESTARTED BY ANY NON-CR,NON-OCTAL KEY. / GETPAR, LDA 0 STC GETRET /R.J. STC D /D BUILDS VALUE STC 2 /INDEXES INPUT JMP INDIG /GET CHAR JMP INDIG JMP INDIG JMP INDIG JMP INDIG /RETURNS FROM INDIG ONLY WHEN OCTAL /INTEGER ENTERED: IF RETURNS AFTER LAST /CALL, MORE THAN 4 DIGITS ENTERED: ENTRY /IS INVALID AND "?" TYPED ANY ENTRY /RESTARTED AT "TYVAL" ENTERR, LDA I /INVALID 277 JMP TYPE /"?" JMP TYVAL /REDO ENTRY / /SUBR ACCEPTS CHAR FROM TTY. IF A CR, /TERMINATES ENTRY BY GOING TO "VALENT" /(UNLESS INITIAL CR, SIGNALLED BY Y<0, /IN WHICH CASE KEEP CURRENT VALUE AND /RETURN TO GETRET). IF AN OCTAL DIGIT, /SHIFTS Y TO LEFT AND ADDS DIGIT (CLEARS /Y FIRST IF <0 MEANING NEW ENTRY). /ANY OTHER CHARACTER RESTARTS ENTRY / INDIG, LDA 0 STC INDRET /R.J. IOB 6031 /KSF JMP .-2 IOB 6036 /KRB SAE I C215, 215 /CR? JMP NOTCR /HAVE CR: END ENTRY. IF 2=0, THEN WAS /NULL ENTRY (I.E., INITIAL CR): RETAIN /CURRENT PARAMETER VALUE. 2>0 STORE /NEW VALUE (D). RETURN FROM GETPAR LDA 2 /2 NON-0 IF DIG AZE I GETRET, HLT /RETRN GETPAR LDA D STA 13 /STORE NEW VALUE JMP GETRET NOTCR, JMP TYPE /ECHO NON-CR ADA I -257 APO /OCTAL DIGIT? JMP ENTERR /NO:RESTART ADA I -10 /OCTAL DIGIT? APO I JMP ENTERR /NO: RESTART ADA I 7 /RESTORE DIGIT AZE I CLR /-0=0 STC 0 /TEMP. ADD D ROL 3 /SHIFT ENTRY ADD 0 /NEXT DIGIT STC D XSK I 2 /SET NON-NULL INDRET, HLT /RETURN INDIG / /SUBR TYPES OUT MESSAGE FROM PACKED /ASCII CODE - 43 GENERATES CR&LF, AND 00 /TERMINATES OUTPUT. ADDRESS OF SOURCE /POINTED (+1/2) BY 1. / MESSAG, LDA 0 STC MESRET /R.J. LDH I 1 AZE I MESRET, HLT /RETRN SAE I 43 /CR? JMP .+3 JMP CRLF /DO CR,LF JMP MESRET-2 /NEXT CHAR ADA I -37 /ADD 200 OR 300 APO /FOR 8-BIT CODE? ADD C100 ADA I 237 JMP TYPE /TYPE 8-BIT CODE JMP MESRET-2 /NEXT CHAR C100, 100 / /SUBR GENERATES CR&LF / CRLF, LDA 0 STC CARRET /R.J. ADD C215 JMP TYPE /CR LDA I 212 JMP TYPE /LF CARRET, HLT /RETURN / /SUBR TYPES OUT 8-BIT ASCII AC / TYPE, PDP PMODE TLS TSF JMP .-1 LINC LMODE JMP /RETURN / /TEMPORARY DEBUGGING SECTION EXCALB, HLT CALIBR, HLT / /TEXT (PACKED ASCII) PARAMETER LABELS / LABEL1, 4312 /CR,J 1702 /OB 4027 / W 1722 /OR 0400 /D 2325 /SU 0212 /BJ 0503 /EC 2455 /T- 2305 /SE 2323 /SS 1117 /IO 1600 /N 2405 /TE 3024 /XT 4024 / T 0120 /AP 0500 /E 2405 /TE 3024 /XT 4002 / B 1417 /LO 0313 /CK 0004 / D 0124 /AT 0140 /A 0214 /BL 1703 /OC 1300 /K 2417 /TO 2040 /P 1411 /LI 1605 /NE 0014 / L 1116 /IN 0523 /ES 0023 / S 2001 /PA 0311 /CI 1607 /NG 0027 / W 1116 /IN 0417 /DO 2700 /W 2017 /PO 2311 /SI 2411 /TI 1716 /ON 0000 / /PATTERN WORDS FOR CHAR DISPLAY FOLLOWS PATRN, 4477 /A 7744 5177 /B 2651 4136 /C 2241 4177 /D 3641 4577 /E 4145 4477 /F 4044 4136 /G 2645 1077 /H 7710 7741 /I 0041 4142 /J 4076 1077 /K 4324 177 /L 301 3077 /M 7730 3077 /N 7706 4177 /O 7741 4477 /P 3044 4276 /Q 376 4477 /R 3146 5121 /S 4651 4040 /T 4077 177 /U 7701 176 /V 7402 677 /W 7701 1463 /X 6314 770 /Y 7007 4543 /Z 6151 4177 /[ 0000 2040 /\ 0410 0 /] 7741 2000 /^ 2077 3410 /BACK ARROW 1010 0 /BLANK 0 7500 /! 0 6006 /" 60 3614 /NUMBER SIGN 1436 7721 /DOLLAR SIGN 4677 1446 /% 6130 5166 /& 0523 500 /APOSTROPHY 6 4163 /( 0 0 /) 6341 2050 /* 50 404 /+ 437 605 /, 0 404 /- 404 1 /. 0 601 // 4030 4136 /0 3641 2101 /1 177 4523 /2 2151 4122 /3 2651 2414 /4 477 5172 /5 651 1506 /6 4225 4443 /7 6050 5126 /8 2651 5120 /9 3651 4200 /: 0 2601 /; 0 2410 /< 0042 1212 /= 1212 4200 /> 1024 4020 /? 2055