E /IN PROG:WAIT /NOT YET OUTPUT: WRITE CURRENT MBLK STD /WAIT FOR TAPE JMP .-1 CLR JMP WRITE /WRITE IT WDONE, STD JMP .-1 /WAIT FINAL BLOC /FINALLY TYPE OUT NO QUESTIONS/NO.CORREC SET I 1 LABEL3-4000 /LAST MESSAGE INCLUDED "COMPREHENSION" CLR ADD 10 PROG1 JMP DECPUT /NO.CORRECT PROG1 JMP MESSAG /" OF" ADD 11 PROG1 JMP DECPUT /NO.QUESTIONS ENDJOB, JMP MONIT /DONE!! / /FOLLOWING SUBROUTINES AND OUTPUT LABELS /FIT INTO PROG1 (LIF 1) BELOW THE 2-BLOK /DATA OUTPUT BUFFER / SEGMNT 1 *20 /SUBR TYPES AC AS SIGNED DECIMAL INTEGER /IN FORMAT "="XXX ". ENTRY HERE BUT /JUMPS TO SEGMENT 1 BELOW TEXT BUFFER. / DECPUT, STC 4 /SAVE ARG ADD STC DECRET /RET AD LDA I 275 JMP TYPE /"=" ADD 4 APO I JMP .+6 />0:NO "-" COM STC 4 /ABS(ARG) ADD C255 JMP TYPE /"-" ADD 4 SET I 2 260 /COUNT DIGIT ADA I -144 /HUNDREDS APO JMP .+3 XSK I 2 /INCR. DIGIT JMP .-5 AZE I /-0? JMP .-3 /KEEP GOING ADA I 144 /RSETORE REM. STC 4 ADD 2 JMP TYPE /HUNDREDS SET I 2 C260, 260 ADD 4 ADD MD10 APO JMP .+3 XSK I 2 JMP .-4 AZE I JMP .-3 ADD D10 STC 4 ADD 2 JMP TYPE /TENS ADD C260 ADD 4 JMP TYPE /UNITS LDA I 240 JMP TYPE /FINAL SPACE PROG0 /RETURN IN PROG0 DECRET, HLT /R.J. / /SUBR ACCEPTS SIGNED 3-DIGIT DECIMAL /INTEGER FROM TTY. LEADING ZEROES NEEDNT /BE ENTERED; AND A CR IS THE /TERMINATOR. THE OBTAINED VALUE IS /RETURNED VIA AC. /AN INITIAL CR LEAVES AC=0&3=-4 (LIF 1) /ILLEGAL CHARS/SIGN GENRATE JMP "ENTERR" / GETDEC, LDA 0 STC GETRET /R.J. STC 4 /BUILDS VALUE SET I 2 -2 /INDEXES SIGN SET I 3 -4 /INDEXES DIGITS NEXDIG, IOB 6031 /KSF JMP .-2 IOB 6036 /KRB SAE I C215, 215 /CR? JMP GETRET+1 LDA 4 /NO:CHECK FOR XSK I 2 /SKIP ON SIGN SKP COM /NEGATE PROG0 /RETURN PROG0 GETRET, HLT /R.J. NOTYET, STC 5 /SAVE CHAR ADD 5 JMP TYPE /ECHO ADD 5 SAE I C255, 255 /="-"? JMP .+4 /NO XSK I 2 /SECOND SIGN? JMP NEXDIG /YES:SIGN SET JMP ENTERR /YES:ERROR XSK I 3 /TOO MANY DIGITS SKP /NO JMP ENTERR /YES:ERROR ADA I /IS CHAR DIGIT? -257 APO JMP ENTERR /NON-DIGIT ADA I MD10, -12 /DIGIT? APO I JMP ENTERR /NON-DIGIT ADD C11 /RESTORE DIGIT AZE I C11, CLR /-0 TO +0 STC 5 ADD 4 MUL I D10, 12 /DEC. SHIFT LEFT ADD 5 STC 4 JMP NEXDIG /CONTROL ARRIVES HERE WHEN TYPED ENTRY /FOR PARAMETER IS ILLEGAL: >1"-",>3 DIGS /OR ILLEGAL CHAR. TYPES "?" : TRY AGAIN! / ENTERR, LDA I 277 JMP TYPE /"?" PROG0 /TRY AGAIN AT JMP TYVAL /TYVAL IN PROG0 / /SUBR TYPES OUT MESSAGE FROM PACKED /ASCII CODE - 43 GENERATES CR&LF, AND 00 /TERMINATES OUTPUT. ADDRESS OF SOURCE /POINTED (+1/2) BY 1 FROM PROG0;HENCE /MUST BE READ AND RETURNED THERE. / MESSAG, LDA 0 STC MESRET /R.J. PDP PMODE TAD 1 /PASS PROG0(1) LINC /W/O DIFF LDF LMODE STC 1 NXCHAR, LDH I 1 AZE I JMP C100+1 /SETUP RETURN SAE I 43 /CR? JMP .+3 JMP CRLF /DO CR,LF JMP NXCHAR ADA I -37 /ADD 100 OR 200 APO /FOR 8-BIT CODE ADD C100 ADA I 237 JMP TYPE /TYPE 8-BIT CODE JMP NXCHAR C100, 100 ADD 1 /PASS PTR BACK PDP /TO 1 IN PROG0 PMODE DCA 1 LINC LMODE PROG0 /RETURN IN PROG0 MESRET, HLT /R.J. / /SUBR GENERATES CR&LF:CALLED ONLY FROM /PROG1, WHERE IT RESIDES / 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 /CALLED FROM & RESIDES IN PROG1 / TYPE, PDP PMODE TLS TSF JMP .-1 CLA LINC LMODE JMP /RETURN / /TEXT (PACKED ASCII) PARAMETER LABELS / ERLABL, 4343 TEXT *ERROR* LABEL1, 4343 TEXT *SUB-SES ID* 0043 TEXT *TEXT TAPE * 0043 TEXT *TEXT BLOCK* 0043 TEXT *DATA BLOCK* 0043 TEXT *TOP LINE * 0043 TEXT *NO. LINES * 0043 TEXT *SPACING * 0043 TEXT *WINDOW * 0043 TEXT *POSITION * 0043 TEXT *QUES-BLOCK* LABEL2, 4343 TEXT *TIME* 0040 TEXT *SECS. FOR* TEXT *LINE* 2343 /*S*,CR TEXT *COMPREHENSION* LABEL3, TEXT *OF * XLABEL, 4343 TEXT *X-VOLTS: * YLABEL, 4343 TEXT *Y-VOLTS: * / /END OF PROG1 SECTION. 3000-4000 THIS /SEGMENT USED FOR DATA OUTPUT BUFFERING. / /SEGMENT 2: 1ST 3 BLOCKS TEXT BUFFERING /(4000-5377). THEN PATTERN WORDS (5400- /5577). THEN LINE ADRESS AND LINE-CONTRL /WORDS FOR DISPLAY (5600 UP) / SEGMNT 2 *1400 /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 / /LINE ADDRESS POINTERS (1/2 WORD).UP TO /16 OF THEM + 1 EXTRA FOR WRAP-UP / LINADS, 0 *.+20 /LINE CONTROL WORDS: 16 MAX. LINCON, 0