[ MATSTE [ THIS ADDS TO MATSTD, THE FOLLOWING [ IF -Z IS SELECTED ON THE FIRST OPTION [ ZERO VALUES ARE PUT IN MAX, MIN [ OTHERS HAVE ZERO [ $1 JMP 20 $20 [ DISPLAY #DISPLY KBD UMB 2 QNA QUES ANS SETi1 ANS SETi5 BUF8-1 [ [ FIRST PARAMETER -Y,N,Z #PAR1 LDA 1 SHDi "Y " JMP PAR1Y SHDi "Z " JMP PAR1Z [ [ DEFAULT IS N LDAi "|N" STA 1 CLR STAi5 JMP PAR2 [ [ ANSWER IS Z #PAR1Z LDAi 1 STAi5 JMP PAR2 [ [ ANS IS Y #PAR1Y LDAi 2 STAi5 JMP PAR2 [ [ ANS IS R #PAR1R LDAi -1 STAi5 JMP PAR2 T [ SECOND PARAMETER- PRINT ALL MIN-MAX #PAR2 LDAi1 SHDi "Y " JMP p+5 [ [ DEFAULT IS N LDAi "|N" STA 1 CLR STAi5 JMP PAR3 [ [ PARAMETERS 3 THROUGH 7 #PAR3 LDAi1 LDAi -5 STA A29H [ SET TO 4 PLACES STC 6 [ ITEM COUNTER DTOB CLR [ ERROR STAi5 LDHi1 XSKi6 JMP p-5 [ [ PARAMETER 8 - INPUT CHAN # LDHi1 BCLi 7770 STAi5 ADAi SAM 10 STC SAMPL [ [ FIX UP TIMER LDA BUF8+5 STA 13 COM STC TIMEP T [ DECIDE WHICH OPTIONS TO CHOSE SETi5 BUF8-1 LDAi5 AZEi JMP DEFF ADAi -1 AZEi JMP CONRP JMP PRTQ [ [ DO NOT PRINT ALL THE INFO #DEFF LDAi5 AZE JMP PRNT3 JMP EXPR1 HLT [ [ JUST SIMPLE-SAMPLE #CONRP CLR STA ADIF STA AHGT #CONRD SAMPLE STA AMIN STA AMAX KST JMP CONRD JMP PIVOT JMP DISPLY [ [ DECIDE WHICH PRINT #PRTQ APOi JMP PRNT1 JMP PRNT2 T [ [ PRINT ENTIRE DISPLAY #PRNT1 SETi1 ANS SETi2 QUES+P4 [ [ PRINT LOOP #FRD LDHi2 SHDi 7700 JMP FRD SHDi ": " JMP FRE [ END OF DISPLAY SHDi "| " JMP FRA [ ANSWER GOES HERE KSTi JMP FRE [ KEY TERMINATE TELT JMP FRD [ [ ANSWER BUFFER #FRA LDHi1 SHDi "| " JMP FRG SHDi 7600 JMP FRG KSTi JMP FRE [ KEY EXIT TELT JMP FRA [ [ SPACE PAPER AND GET OUT #FRE SETi3 -5 CRLF XSKi3 JMP p-2 JMP DISPLY [ [ SKIP FIELD LENGTH #FRG LDHi2 JMP FRD T #PRNT2 JMP DISPLY [ FOR NOW [ #PRNT3 CRLF SETi1 TITLE+P4 LDHi1 SHDi 7700 JMP p+3 TELT JMP p-5 [ NOW NEXT VALUES CRLF [ [ TEST TO SEE HOW MANY WE HAVE LDA PROL COM ADA MAXL APOi JMP p+6 [ [ POINTER IS LARGER LDA MAXL COM STC 6 JMP p+4 [ LDA PROL JMP p-5 T SETi7 2000 UMB 3 [ [ CONVERT AND FILL PRINT BUFFER #NT3L CRLF SETi1 PNTB SETi10 -4 [ NUM OF COLUMNS LDAi7 BTOD LDAi " " STHi1 XSKi10 JMP p-6 [ [ NOW PRINT OUT THIS BUFFER SETi1 PNTB SETi2 -30 [ COLUMNS OF CHAR LDHi1 TELT XSKi2 JMP p-3 [ [ TEST FOR KST KSTi JMP FRE XSKi6 JMP NT3L [ PRINT NEXT ROW JMP FRE T [ [ PLACE LAST VALUES INTO DISPLAY #PIVOT SET 10 0 SETi11 PROT-1 [ TABLE OF DISPLAY LOCATIONS SETi12 PROC-1 [ LAST RESULTS SETi13 -4 [ NUM TO CONVERT [ [ ACTION LOOP LDAi11 STC 1 LDAi12 BTOD XSKi13 JMP p-5 JMP 10 [ EXIT T [ COMMANDS FOR THE PDP-8 SAMPLE=JMP p #SAMPL SAM 0 [CORRECT CHANNEL ENTERED HERE NOP JMP 0 [ SET DACX DACX=JMP p LDA BUF8+2 STA PAR8 LDAi 5401 OPR 13 JMP 0 [ SET DAC-Y DACY=JMP p LDA BUF8+3 STA PAR8 LDAi 5410 OPR 13 JMP 0 [ SET DAC-Z AND PULSE DACZ=JMP p LDA BUF8+4 STA PAR8 LDAi 5420 OPR 13 JMP 0 T [ DO EXPERIMENT #EXPR1 LDAi 1 STC SWA [ FORCE CONTINUE STC PROL LDAi 2000 STC PROM DACX DACY [ #EXP1 SET 17 TIMEP CLR STC AMIN STC AMAX [ [ LOOK FOR MAXIMUM #MAXZ LOKMAX [ GET MAX #MINZ LOKMIN [ GET MIN [ PUT AWAY VALUES LDA MAX STC AMAX LDA MIN STA AMIN [ COMPUTE DIFFERENCE COM ADD AMAX STC ADIF [ [ PUT INTO TOTAL ARRAY SETi5 PROC-1 SET 6 PROM SETi7 -4 UMB 3 LDAi5 STAi6 XSKi7 JMP p-3 UMB 2 T [ [ UPDATE POINTERS LDAi 1 ADM PROL [ TOTAL COUNT LDAi 4 ADM PROM ADD BMAX APOi JMP MAXZ [ RESET BANK 3 POINTER LDAi 2000 STC PROM JMP MAXZ T [ GET THE MAXIMUM LOKMAX=JMP p SET 15 0 SAMPLE #LPMAX STA MAX COM STC MAXC SETi16 -10 [ NUMBER OF SUCCESSIVE FINDS #FNMAX SAMPLE KSTi JMP DISPD XSK 13 [ SKIP IF NO PULSE REQD JMP p+2 JMP p+4 [ TEST WHETHER TO PULSE XSKi17 JMP p+2 PULSE ADD MAXC AZEi JMP FNMAX [ IGNORE NO-CHANGE APO JMP p+3 [ DID NOT FIND ADD MAX JMP LPMAX [ FOUND SMALLER VALUE ADD WIND APOi JMP FNMAX-2 [ NOT SMALL ENOUGH TO COUNT XSKi16 JMP FNMAX JMP 15 [ T LOKMIN=JMP p SET 15 0 SAMPLE #LPMIN STA MIN COM STC MINC SETi16 -10 [ NUMBER OF SUCCESIVE FINDS #FNMIN SAMPLE KSTi JMP DISPD XSK 13 [ SKIP IF NO PULSE REQD JMP p+2 JMP p+4 [ TEST IF TIME TO PULSE XSKi17 JMP p+2 PULSE ADD MINC AZEi JMP FNMIN [ IGNORE ZERO CHANGE APOi JMP p+3 [ DID NOT FIND ADD MIN JMP LPMIN [ FOUND LARGER VALUE ADD WINDC APO JMP FNMIN-2 [ NOT LARGE ENOUGH XSKi16 JMP FNMIN JMP 15 T [ WHEN TERMINATING FROM DATA [ PUT LATEST VALUES INTO DISPLAY FIRST #DISPD NOP JMP PIVOT JMP DISPLY T [ CREATE AN OUTPUT PULSE [ AND MEASURE THE HEIGHT PULSE=JMP p SET 2 0 STC PLAC SAMPLE STC TEMP DACZ SETi3 -100 XSKi3 [ WAIT 0.5 MSEC JMP p-1 SAMPLE COM ADD TEMP APO COM STC AHGT [ PULSE HEIGHT NOP SETi3 -100 [ WAIT 0.5 MSEC XSKi3 JMP p-1 [ [ SET TIMER TO NEXT PULSE SET 17 TIMEP CLR ADD SWA AZEi JMP NEN LDAi #PLAC 0 JMP 2 T [ #TIMEP 0 #BMAX 1000 [ BANK 3 MAX POINTER #MAXL 200 [ DEPENDS UPON THE BANK 3 PTR #TEMP 0 #MAX 0 #MIN 0 #MAXC 0 #MINC 0 #SWA 0 #PROL 20 [ NUMBER OF MAX-MIN TAKEN #PROM 30 [ POINTER TO BANK 3 #PROC [ LATEST VALUES #AMAX 0 #AMIN 0 #ADIF 0 #AHGT 0 #WIND 2 [ DL OF COUNTABILITY IN MAX #WINDC -2 #NEN HLT JMP 0 #PNTB 0 $=p+50 P4=3777 QNA=JMP p N [ [ Q AND A ROUTINE #A39O LDAi 2 ADD 0 STAi 0 ADD p+133 STC 1 LDA 1 ADD p+170 STC p+35 LDAi 1 STC p+26 STC 6 SET 3 p+23 SET 4 p+26 JMP p+125 JMP p+3 JMP p+14 JMP p-3 STH 3 LDHi 4 COM STC 6 ADD p+202 LDHi 3 XSKi 6 JMP p-2 LDHi 3 JMP p-15 STH 3 SETi 4 0 LDAi 376 STC p+12 SETi 3 0 SET 5 p-7 SETi 1 5 LDAi -40 ADMi 0 LDHi 3 JMP p+67 JMP p+303 JMP p+17 SHDi 1200 JMP p-14 JMP p+71 JMP p-10 JMP p+67 SROi 0 DIS 1 LDHi 5 JMP p+52 JMP p-17 JMP p-20 JMP p-10 KST JMP p-40 KBD SETi 2 p+233 SHD 2 JMP p+121 SHDi 2 JMP p-105 XSK 6 JMP p-51 SHDi 2 JMP p+20 SHDi 2 JMP p+131 SHDi 2 JMP p+21 JMP p+25 JMP p-106 JMP p-62 STC p+5 JMP p+20 JMP p+50 JMP p+47 LDAi 0 STH 4 JMP p-72 LDH 4 JMP p+11 JMP p-75 -6002 JMP p+36 JMP p+4 JMP p-101 JMP p-104 JMP p-3 LDHi 4 SHDi 2100 JMP 0 SAEi 76 XSKi 0 XSKi 0 JMP 0 ROL 1 ADD p+163 STC 2 ADD p+20 ADD 1 STC 1 ADD 5 COM ADD 4 AZE CLR STC p-100 ADD p-115 DSC 2 DSCi 2 JMP 0 LDAi -4000 ADM 4 JMP p-141 [CHARACTER PATTERNS [KBD 0:CODE 00 4136 3641 [1:01 2101 0177 [2:02 4523 2151 [3:03 4122 2651 [4:04 2414 0477 [5:05 5172 0651 [6:06 1506 4225 [7:07 4443 6050 [8:10 5126 2651 [9:11 5122 3651 [EOL:12 KBDi ADD p-212 [DEL:13 JMP 0 67 [SPACE:14 0000 0000 [i:15 0101 0126 [p:16 3700 3424 [-:17 0404 0404 [+:20 0404 0437 [|:21 0000 0077 [#:22 JMP p-102 JMP p-52 [CASE:23 JMP p-53 JMP p-211 [A:24 4477 7744 [B:25 5177 2651 [C:26 4136 2241 [D:27 4177 3641 [E:30 4577 4145 [F:31 4477 4044 [G:32 4136 2645 [H:33 1077 7710 [I:34 7741 0041 [J:35 4142 4076 [K:36 1077 4324 [L:37 0177 0301 [M:40 3077 7730 [N:41 3077 7706 [O:42 4177 7741 [P:43 4477 3044 [Q:44 4276 0376 [R:45 4477 3146 [S:46 5121 4651 [T:47 4040 4077 [U:50 0177 7701 [V:51 0176 7402 [W:52 0677 7701 [X:53 1463 6314 [Y:54 0770 7007 [Z:55 4543 6151 [META [56 [CASE EOL 2356 1322 [57 [CASE DEL 1200 p-137 [:60 [CASE SPACE 4020 2055 [=:61 [CASE i 1212 1212 [u:62 [CASE p 0107 0107 [,:63 [CASE - 0500 0006 [.:64 [CASE + 0001 0000 [$:65 [CASE | 4577 7745 [[:66 [CASE # 4177 0000 [_:67 [CASE CASE 0101 0101 [":70 [CASE A LDHi 3 LDAi [":71 [CASE B 14 JMP p-277 [<:72 [CASE C 2410 0042 [>:73 [CASE D 4200 1024 []:74 [CASE E 0000 7741 [*:75 [CASE F 2050 0050 [::76 [CASE G [UNDEFINED:77 [Q+AR T [ [ ENTRY TO FILL ANSWER BUF #QNF LDAi STHi 3 STC A39O+32 LMB 1 JMP 0 [ [ USE THE EXISTING ANSWERS #QNU LDAi LDHi 3 STC A39O+32 LMB 1 JMP 0 [ [ SAVED AS D2B2DT [ [ ...BTOD ... [SIGNED 12-BIT BINARY TO DECIMAL CONVERSION [ RIGHT JUSTIFIED [ ENTER WITH BINARY NUMBER IN ACCUMULATOR VIA A JMP 9J [ DECIMAL KBD CODES STORED VIA IR 1 [ LEADING ZEROES SUPPRESSED [ ALSO USES IR 2,3 BTOD=JMP p #A28J SCRi1 [SIGN TO LINK BIT ROLi1 APOi [MAKE NEGATIVE COM STC A28N [SAVE IT ADD 0 [SAVE RETURN STC A28P LDAi [LOAD POSSIBLE SIGNS #A28K "- " LZE [GET CORRECT SIGNS ROR 6 STHi1 [AND STORE IT SETi2 [SET ADDEND POINTER A28Q-1 JMP A28M [CONVERT A DIGIT AZE [IS IT A LEADING ZERO JMP A28L [NO ADD A28K [YES: MOVE THE SIGN RIGHT ONE PLACE STH 1 [STORE A SPACE OVER THE SIGN LZE [GET THE CORRECT SIGN ROR 6 STHi1 [AND STORE IT JMP p-10 [ THEN CONTINUE CONVERTING #A28L STHi1 [STORE A DIGIT JMP A28M [CONVERT NEXT DIGITI JMP A28L [AND STORE IT [LITTLE SUBROUTINE TO DO THE CONVERSION #A28M LDA [SAVE RETURN 0 STC A28P-2 SETi3 [SET DIGIT COUNTER 1777 XSKi2 [MOVE ADDEND POINTER ADD A28N [LOAD THE VALUE XSKi3 [BUMP COUNTER STAi [SAVE REMAINING PART #A28N ** ADA 2 [TRIAL ADD APO [STILL NEGATIVE JMP p-5 [YES: COUNT AND ADD AGAIN LDA [NO: GET THE COUNTER 3 SROi [LAST DIGIT 3567 JMP ** [NO: BACK TO THE SUBROUTINE STHi1 [YES: STORE IT #A28P JMP ** [ AND RETURN TO CALLING PGM [ADDEND TABLE #A28Q 1750 144 12 1 T [ ... TELT ... [INDEX REG. [16 AND 17 TELT=JMP p #A27T SET 17 0 [FORM RETURN ROL 4 [CODE TEST APO JMP A26T-1 [TELETYPE CODE ROR 4 [LINC CODE SAE i 12 [EOL TEST JMP p+4 [NOT EOL LDA i 5215 [MAKE CR LF JMP A26T [OUTPUT ADA i -11 [NUMBER TEST APO i JMP p+4 [NOT A NUMBER ADA i [CONVERT NUMBER 271 JMP A26T [OUTPUT ADA i -12 [1ST SPECIAL [CHARACTER TEST APO i JMP p+6 [NOT SPECIAL [CHAR. TYPE 1 ADA i A25T+10 STC 16 [CONVRT SPECIAL [CHARACTERS ADA 16 JMP A26T [OUTPUT ADA i -32 [LETTER TEST APO i JMP A27T+27 [CONVRT SPECIAL [CHAR. TYPE II ADA i [CONVRT LETTER 332 JMP A26T [OUTPUT ROR 4 #A26T APO i [CR LF--HUH JMPp+4 514 LDA i 212 514 [ PRNT CHAR. JMP 17 [RETURN CRLF=JMP p #A24T SET 17 0 LDA i 5215 JMP A26T+2 #A25T 207 [BELL FOR DEL 240 [SPACE 246 [AMPERSAND FOR [ i 247 [APOSTROPHE [FOR p 255 [- 253 [+ 257 [SLASH 243 [ TAG SYMBOL 0 [NO OUTPUT FOR [CASE 275 [= 300 [AT SIGN FOR u 254 [COMMA 256 [PERIOD 244 [DOLLAR SIGN [FOR ORIGN SIGN 333 [COMMENT SYMBOL T [ ... DTOB ... [ [DECIMAL-TO-SINGLE PRECISION BINARY [ CONVERTS FROM -4095 TO +4095 [ [CALLING SEQUENCE [ JMP 9A [ ERROR RETURN [ NORMAL RETURN [ [IR1 MUST BE SET JUST BEFORE THE FIRST CH [ DECBIN 1 LOOKS AT 5 CHARACTERS [ USES IR1-4 DTOB=JMP p #A29A SET 3 [SAVE RETURN 0 SETi4 [CH COUNTER #A29H -4 [MOD L. MATIN SETi2 [MINUS FLAG 1777 CLR #A29B STC A29C [SAVE RESULT XSKi4 [ENOUGH CHS DONE JMP A29D [NO LDAi3 [YES: INDEX RETURN LDAi [LOAD RESULT #A29C ** XSK 2 [MINUS COM [YES JMP 3 [RETURN #A29D LDHi1 [LOAD NEXT CH SHDi [SPACE " " JMP A29B+1 [ IGNORE SHDi [PLUS "+ " JMP A29B+1 [ IGNORE SHDi [MINUS "- " JMP A29G [ SET FLAG COM [NONE OF THOSE ADD A29F APO [IS IT A LEGAL DIGIT JMP 3 [NO: ERROR RETURN LDH 1 [YES: SAVE IT STC A29E ADD A29C MUL [ X # BASE 4|A29F SCR 1 AZE [OVERFLOW JMP 3 [YES: ERROR RETURN ZTA [NO: RETRIEVE IT ROL 1 ZZZ ADD A29F+1 [+1 LAMi #A29E ** LZE [OVERFLOW JMP 3 [YES: ERROR RETURN JMP A29B [NO: CONTINUE #A29F 12 [NUMBER BASE 1 #A29G XSKi2 [SET MINUS FLAG JMP A29B+1 L $2000 HLT HLT #BUF8 0 $=p+8 #ANS 0 $=p+24 #QUES " |1 PRINT-Y-N-Z |1 ALL MIN MAX-Y-N |4 X-DAC |4 Y-DAC |4 PULSE HEIGHT |4 PULSE INTERVAL |4 INPUT SCALE |1 INPUT CHAN-0 TO 7 RESULTS " #PR1 " MAX TRIANGLE " #PR2 " MIN TRIANGLE " #PR3 " MAX - MIN " #PR4 " PULSE HEIGHT :" #PROT PR1+P4 PR2+P4 PR3+P4 PR4+P4 #TITLE " MAX MIN DIF HGT" 7777 $3400 #PAR8 [ PARAMETER TO PDP8 7777 0 7200 1200 6361 7000 5601 7000 0 7200 1200 6362 7000 5610 7000 7000 0 7200 1200 6364 7200 1234 6351 7200 1235 6356 7000 5620 4000 4057 7402