*20 / / / / / / /FRQANA /NOVEMBER 6, 1969 / /THIS PROGRAM IS A MODIFICATION /OF FREQANA TO RUN UNDER THE SALES DEMO /MONITOR. IT ACCEPTS INPUT FROM /THE KEYBOARD TO DRAW WAVEFORMS. LMODE *20 START, JMP .+7 RETREV, RDC I 5114 RDC 6115 RDC 7116 LIF 3 JMP GETIT1 COSGET, RDC I 6107 RDC 7110 JMP J2 P3, CLR STC A3 SET I 6 -5000 SET I 10 777 O3, CLR STC L3 STC R3 LDA I 1 ADM I A3, WT SET I 1 1 SET I 2 P2 SET I 3 H3-1 SET I 4 I3-1 N3, LDA 1 MUL A3 STA I J3, 0 ADA I -200 JMP G3 CLR LDA I 3 MUL 5 APO JMP W3 LAM I L3, 0 STC K3 X3, LAM I R3, 0 LDA J3 JMP G3 CLR LDA I 4 MUL 5 APO JMP Y3 LAM L3 STC K3 Z3, LAM R3 XSK I 1 XSK I 2 JMP N3 LDA L3 U3, STA I 10 SCR 3 DIS I 6 XSK 6 JMP O3 CLR ATR JMP J2 G3, SET 7 0 APO I JMP .+4 ADA I 1000 JMP .-4 BSE I 7000 STC 5 JMP 7 K3, 0 W3, LAM L3 LDA MZERO JMP X3 Y3, LAM L3 LDA MZERO JMP Z3 C2, SET I 4 I3-1 LDA I LDA I STC I2 STC H2+1 O2, CLR STC B2 STC D2 SET I 3 P2 SET I 2 1 H2, LDA I 0 STC A2 DIS 3 SET I 6 -1000 SET I 1 7777 L2, CLR ADD 2 ADM I A2, 0 JMP G3 LDA 5 MUL I 1 APO JMP M2 LAM I B2, 0 STC 0 LAM I D2, 0 XSK I 6 JMP L2 LDA I 2 LDA D2 ROL 4 BCL I 17 STC D2 ADD B2 ROL 4 BCL I 7760 ADD D2 STA I 4 CLR STC B2 STC D2 XSK I 3 JMP H2 I2, LDA I -200 STC H2+1 LDA I JMP J2 STC I2 SET I 4 H3-1 JMP O2 M2, LAM B2 LDA MZERO JMP D2-1 R2, LDA 0 STC Q2 SET I 4 P2 JMP Z2-1 S2, STC 0 DIS I 2 DIS I 2 DIS I 2 LDA I 1 Z2, SCR I ROL I 1 AZE JMP .+3 APO COM STA Q2+3 STC 0 DIS 2 SAE Q2+3 JMP .+4 XSK I 4 JMP S2 JMP Q2 ADD Q2+1 LZE ADD Q2+2 JMP .-12 Q2, EXIT 1 -2 0 K2, SET I 1 7777 SET I 2 -5000 SET I 3 777 SAM 1 COM STC 0 LDA I 1 SCR 3 ADD 0 DIS I 2 SAM 1 STC 0 LDA I 3 SCR 3 ADD 0 DIS 2 XSK 2 JMP .-16 JMP J2 A4, SET I 4 P2 B4, LDA I 1 SCR STA .+2 MUL I 0 STC 0 LDA I 5 SCR STA .+2 MUL I 0 ADD 0 A7, AZE I JMP B7+1 APO JMP B7+1 STC K3 ADD Q2+1 STC Q2 JMP G7 F7, STC K3 G7, ADD Q2+2 ADM Q2 ADD K3 AZE APO I JMP F7 LDA Q2 COM B7, SCR 1 ROL 3 ADD Q2+1 COM STC 10 DIS 2 ADD Q2+1 XSK I 10 JMP .-3 STC 0 DIS I 2 DIS I 2 DIS I 2 XSK I 4 JMP B4 J2, SAM 2 ROR 6 BCL I 7770 BSE I SCR 0 STA B4+1 STA B4+10 BSE I 20 STC Z2 OKST JMP REJUMP JMP T2 REJUMP, XSK FLAG1 JMP K2 /INPUT DISPLAY FLAG1=0 SET I 1 /SPECTRUM DISPLAY FLAG1=-0 I3-1 SET I 5 H3-1 SET I 2 4000 XSK FLAG2 JMP A4 /FLAG2=0 DISPLAY POWER JMP R2 /FLAG2=-0 DISPLAY COS,SIN SET I 1 H3-1 SET I 2 4400 JMP R2 JMP J2 T2, KBDA BCL I 7700 SHD I 2400 /T JMP P3 SHD I 0600 /F JMP C2 SHD I 2200 /R JMP RETREV SHD I 2300 /S JMP SCALDN SHD I 1400 /L JMP SCALUP SHD I 2000 /P JMP POWER SHD I 0300 /C JMP COSSIN SHD I 1100 /I JMP POWER+1 JMP J2 SCALDN, CLR LDA I 3 JMP SCALE SCALUP, CLR LDA I 2 SCALE, ROR I 1 BSE I SCR 0 STC SKR SET I 1 3777 SET I 2 -1000 LDA I 1 SKR, SCR LZE COMP, COM ADA 1 STA 1 XSK I 2 JMP .-7 JMP J2 POWER, LDA MZERO STC FLAG1 STC FLAG2 JMP J2 COSSIN, LDA MZERO STC FLAG1 LDA MZERO JMP POWER+2 *11 FLAG1, 0 /-0 FOR TIME FUNCTION (INPUT) FLAG2, 0 /-0 FOR POWER,+0 FOR COS-SIN MZERO, L2-1 H3=600 I3=700 P2=7677 EXIT=507 XXXX=0 WT=0 KBDA=513 RETV=505 OKST=512 / / / / / / / / / / / SEGMNT 3 /QANDA SUBROUTINE FOR THE /PDP-12 /REMOVE *1000 BELOW IF /INSERTING SOURCE DIRECTLY /INTO YOUR PROGRAM SOURCE *1000 /REMOVE,IF DESIRED / /TO HERE TO INITIALIZE THE ROUTINE / QAINIT, LDA I /SAVE JMP RETURN 2 ADD 0 STA I QAB, 0 /JMP +3 ADD QAL+3 STC 1 /PTR TO FIRST PARAM LDA 1 /GET FIRST PARAM ADD QAQ+1 /PTR TO HALFWORD-1 STC QAG-3 LDA I 1 STC QARFSH-1 STC 6 /XR6 USED AS A SWITCH. =0 IF NO ANSWER FIELD, =1777 IF YES QACA, SET 3 /XR3 TO PTR TO ANSWERS QARFSH-1 SET 4 /XR4 TO PTR TO QUESTIONS QAG-3 /TO HERE IF FIRST TIME THROUGH OR FOLLOWING A CR SET 1 4 JMP QAT NOP /F LDH I 4 /H. BUMP PTR IF H OR F QAD, JMP QAO JMP .+6 /74 JMP QAE /34 SAE I /CR? 43 JMP QAD /NO JMP QACA+4 /EXAMINE NEXT CHAR /INITIALIZE ANSWER BUFR STH 3 /74 TO ANSWERS LDH I 4 /NEXT HALFWORD ADA I -60 COM STC 6 STH I 3 /0 IN AC XSK I 6 JMP .-2 LDH I 3 /BUMP PTR TO ANSWERS JMP QAD /ANSWER BUFR IS INITIATED QAE, STH 3 SET I 4 /XR4 TO PTR TO LAST TYPED CHAR IN ANSWER BUFR 0 /----RE-ENTER HERE TO REFRESH---- QARFSH, LDA I /INITIAL Y POSITION 277 STC QAH-1 SET I 3 /XR3 TO PTR TO HALFWORD QUESTIONS-1 0 SET 5 /XR5 TO PTR TO LAST DISPLAYED CHAR IN ANSWER BUFR QARFSH-1 QAG, SET 1 3 JMP QAT JMP .+7 /F LDH I 3 /H. BUMP PTR LDA I /NEITHER. ASSUME HALF SIZE BCL I STC QAM+2 /SET INSTR TO CLEAR FF FOR HALF SIZE ADD QAW /NOP IN AC JMP QAM LDH I 3 /BUMP PTR LDA I BSE I STC QAM+2 /SET INSTR TO SET FF FOR FULL SIZE ADD QAW+1 /ADD 9U IN AC QAM, STC QAP+3 MSC I 4 /EAD CONTROL REGISTER BSE I /THIS INSTR CHANGES. EITHER BSE & OR BCL & 200 MSC 4 /AC TO CONTROL REGISTER SET I 1 /XR1 TO INITIAL X POSITION 100 LDA I /Y COORDINATE MULTIPLE -40 ADM I /Y COORDINATE 0 QAH, LDH I 3 JMP QAO+1 JMP QAZ /74 BUMP PTR TO NEXT CHAR, PUT 40 IN AC JMP QAJ /34 SHD I /NEITHER 4300 JMP QAG /CR. MOVE X AND Y COORDINATE JMP QAP /ISPLAY CHAR JMP QAH /PICK UP NEXT CHAR JMP QAP /TO HERE IF DISPLAYING ANSWER BUFR SRO I /SWITCH TO DISPLAY CURSOR. EITHER 0000 OR 7777 0 /IFXR4=XR5, THEN SWITCH=7777 JMP QAF /QUESTION MODE QAI, LDH I 5 JMP QAO+1 JMP QAH /74 JMP QAH /34 JMP QAI-4 /NEITHER. DISPLAY IT QAJ, JMP GETKBD /TO HERE IF DISPLAYED BUFFER AZE I JMP QAB /NOTHING TYPED . EXIT SET I 2 QAY SHD 2 /LF? JMP QAK+4 /YES. EXIT SHD I 2 /CR? JMP QAN XSK 6 /IS THERE AN ANSWER FIELD? JMP QARFSH SHD I 2 /? JMP QAK SHD I 2 /ALT? JMP QACA /REINITIALIZE SHD I 2 /BACK SLASH? JMP QARFSH /IGNORE SHD I 2 /RUBOUT? JMP QAL /IGNORE SHD I 2 /TAB? JMP QARFSH /IGNORE STC .+5 /ACCEPTABLE CHAR JMP QAO /TEST NEXT CHAR JMP QAQ /74 BACK PTR UP BY 1 JMP QAQ /34 ^ LDA I /OK. STORE IT 0 STH 4 JMP QARFSH /REDISPLAY QAL, LDH 4 /TO HERE IF RUBBOUT OR < JMP QAO+1 JMP QARFSH /74 IGNORE -6002 LDH 2 /TEST THE CHAR SAE I /RUBOUT? 37 JMP QAQ /NO. BACK PTR UP BY 1 SET 5 4 SET 3 4 JMP .+2 LDH I 5 /BUMP PTR LDH I 3 /GET NEXT CHAR JMP QAO+1 NOP /IF 74 OR 34, REPLACE CURRENT CHAR WITH 0 CLR STH 5 AZE /WAS IT 74 OR 34? JMP .-7 /NO. CONTINUE JMP QAQ /BACK PTR UP BY 1 /TO HERE IF CR QAN, XSK 6 JMP QAK+4 /EXIT ROUTINE IF NO ANSWER FIELD JMP QAO JMP QARFSH /74 MOVE PTR TO NEXT QUESTION FIELD JMP QAE+1 /34 END OF BUFR. MOVE PTR TO FIRST QUESTION FIELD JMP QAN+2 QAO, LDH I 4 /S\R SHD I / +1 74 BEGIN FIELD 7400 / +2 34 END BUFR JMP 0 / +3 NEITHER 74 NOR 34 SAE I 34 XSK I 0 XSK I 0 JMP 0 /S\R TO DISP LINC CHAR IN AC QAP, ROL 1 /MULT BY 2 FOR INDEX TO ADDRESS OF TABLE ADD QAX+4 STC 2 /ADDRESS OF CHAR TO DISP IN XR2 ADD QAU /THIS INSTR CHANGES. EITHER OP OR ADD 9U ADD QAU ADD 1 /ADD 4 TO XR1 TO SPACE CHAR STC 1 ADD 5 /GET ADDRESS OF ANSWER BUFR COM ADD 4 AZE CLR STC QAI-2 /SWITCH=0 OR 7777 ADD QAH-1 /Y COORDINATE IN AC DSC 2 DSC I 2 /DISPLAY CHAR JMP 0 QAQ,BB,B;BMB=% TE%$