JIM GAUNCE EECS 415 V01 5/13/75 FIXMRI FGET=5000 FIXMRI FPUT=6000 FIXMRI FMPY=3000 FIXMRI FADD=1000 FEXT=0000 FLOT=0014 FOUT=0012 *100 N, 0 M, 0 T, 0 MN, 0 MT, 0 NOCTR, 0 COUNT, 0 CT1, 0 BUFF, 2000 OUTPTR, 0 STORE, 0 K1777, 0077 M4, 7774 K350, 1700 K212, 212 K215, 215 K, 0 M022, 7756 CHECK, 7470 MP1, 0 MP2, 0 XMEAN, 0 DF, 7777 RESULT, 3000 M260, 260 POINT, 0 SUML, 0 SUMH, 0 XH, 0 KI, 0 EQUAL, 275 K260, 260 R, 0 KCNT, 0 AUTOP, AUTO ANSWEP, ANSWER HEADP, HEAD CRLFP, CRLF TYPEP, TYPE LISNP, LISN PACKP, PACK SAMPLP, SAMPLE SETDFP, SETDF SUMRP, SUMR DIVIDP, DIVIDE FGETP, 7306 FLOTP, 5533 FPUTP, 7322 M15, 7761 STAR, 252 K3000, 3000 DIV, 0 K100, 100 SUM, 0 0 0 TEMP, 0 0 0 0 *200 START, CLA CLL IAC IAC IAC CIA /TO COUNT NUMBER DCA NOCTR /OF INPUTS TLS /CLEAR PRINTER FLAG TAD BUFF /INITIALIZE DCA OUTPTR /OUTPUT PTR TAD K100 /INITIALIZE PTR DCA 11 /TO STORE N,M,&T JMS I CRLFP CHRTYP, TAD I OUTPTR /GET CHARACTER ISZ OUTPTR /INCREMENT PTR SNA /WAS CHARACTER A NULL? JMP INPUT /YES: GO TO INPUT JMS I TYPEP /NO: TYPE CHARACTER JMP CHRTYP /GO TO GET NEXT CHAR. INPUT, CLA CLL TLS /RAISE PRINTER FLAG JMS I CRLFP /RETURN CARRIAGE NXTNUM, TAD M4 /SET CTR FOR DCA COUNT /4 DIGITS TAD K350 /SET UP TEMP STORAGE DCA TEMP /FOR ASCII INPUT NXTDIG, JMS I LISNP /GET A CHARACTER DCA I TEMP /STORE IT TEMPORARILY ISZ TEMP /INCREMENT PTR ISZ COUNT /RECEIVED 4 DIGITS YET? JMP NXTDIG /NO: GET ANOTHER JMS I CRLFP /YES: RETURN CARRIAGE JMS I PACKP /PACK THE 4 DIGITS DCA I 11 /STORE THE PACKED NO. ISZ NOCTR /GOTTEN 3 INPUTS? JMP CHRTYP /NO: TYPE NEXT MSG. JMS I SAMPLP /YES: SAMPLE ADC LOOP1, JMS I SETDFP /CHANGE DATA FIELD JMS I SUMRP /SUM SERIES CDF 00 CLA CLL JMS I DIVIDP /DIVIDE SUM BY N TAD SUML /ANS RETURNED IN SUML DCA XMEAN /STORE RESULT JMS I FGETP /GET RESULT & XMEAN /PUT IN FAC JMS I FLOTP /FLOAT IT JMS I FPUTP /STORE IT SOLN, 3000 ISZ SOLN /INCREMENT ISZ SOLN /POINTER ISZ SOLN /BY 3 CLA CLL NEXTK, IAC DCA K /SET K DCA 10 /INITIALIZE PTR(10) TO DATA TAD 10 TAD K /INITIALIZE PTR(11) TO DCA 11 /(I+K) DATA LOOP2, JMS I SETDFP /CHANGE DATA FIELD TAD I 11 /GET (I+K) NO. DCA MP2 /STORE IT IN MP2 TAD I 10 /GET (I) NO. DCA MP1 /& STORE IT IN MP1 CDF 00 JMS I 7 /ENTER INTERPRETER FGET MP1 /GET MP1 FLOT /FLOAT IT FPUT TEMP /PUT IT IN TEMP FGET MP2 /GET MP2 FLOT /FLOAT IT FMPY TEMP /MULTIPLY THE 2 NO. FADD SUM /ADD TO SUM FPUT SUM /& STORE IN SUM FPUT I SOLN FEXT /EXIT INTERPRETER TAD K /(AC) =K CIA /(AC)=-K TAD N /(AC)=N-K CIA /(AC)=-(N-K) TAD 10 /(AC)=I-(N-K) SMA /IS I=N-K? JMP .+3 /YES: GO TO DIVIDE OPER. CLA CLL /NO: JMP LOOP2 /GET NEXT PR. OF NO. ISZ SOLN ISZ SOLN ISZ SOLN TAD M /(AC)=M CIA /(AC)=-M TAD K /(AC)=K-M SMA /IS K-M<0? JMP .+4 /NO: WE HAVE DONE ALL K'S CLA CLL /YES : CLEAR AC & L TAD K JMP NEXTK /GO TO START NEXT K ISZ DF /DONE DF 1 &2 ? JMP .+2 /YES: GO TO OUTPUT JMP LOOP1 /NO: DO NEXT DF TAD K3000 DCA 17 JMS I HEAD /TYPE HEADING JMS I 7 /ENTER INTERPRETER FGET I 17 /GET MEAN FOUT /PRINT IT FEXT /EXIT INTERPRETER JMS I AUTO /TYPE AUTOCORRELATION RESULTS JMS I HEAD /TYPE HEADING JMS I 7 /ENTER INTERPRETER FGET I 17 /GET MEAN FOUT /PRINT IT FEXT /EXIT INTERPRETER JMS I AUTO /TYPE AUTOCORRELATION RESULTS HLT *1000 PACK, 0 /PACK SUBROUTINE DCA STORE /CLEAR STORAGE LOCATION TAD M4 /SET COUNTER FOR DCA COUNT /4 DIGITS TAD K350 /SET POINTER TO DCA TEMP /ASCII INPUT CHARACTERS PAKDIG, TAD STORE /LOAD PARTIAL NUMBER CLL RAL /ROTATE LEFT RTL /THREE TIMES TAD I TEMP /ADD NEXT STORED DIGIT TAD M260 /STRIP OFF THE 260 DCA STORE /STORE PARTIAL NUMBER ISZ TEMP /INCREMENT POINTER ISZ COUNT /PACKED 4 DIGITS YET? JMP PAKDIG /NO: PACK NEXT DIGIT TAD STORE /YES: TAKE PACKED NUMBER JMP I PACK /BACK TO MAINLINE CRLF, 0 TAD K215 /GET ASCII CARRIAGE RETURN JMS TYPE /PRINT IT TAD K212 /GET ASCII LINE FEED JMS TYPE /PRINT IT JMP I CRLF /AND RETURN LISN, 0 /LISN SUBROUTINE KSF /KEYBOARD FLAG RAISED YET JMP .-1 /NO: CHECK AGAIN KRB /YES: READ A CHARACTER TLS /ECHO ON PRINTER JMP I LISN /AND RETURN TYPE, 0 /TYPE SUBROUTINE TSF /PRINTER FLAG RAISED YET JMP .-1 /NO: CHECK AGAIN TLS /YES: PRINT A CHARACTER CLA /CLEAR ACCUMULATOR JMP I TYPE /AND RETURN SETDF, 0 TAD DF /PUT DF IN AC SZA /IS DF = 0? JMP .+3 /NO: JMP TO DF 1 CDF 20 /YES: SET DF =2 JMP I SETDF /RETURN CDF 10 /SET DF = 1 JMP I SETDF /& RETURN DIVIDE, 0 /SUBR TO DIVIDE BY 2 T0 N CLA CLL /RESULT RETURNED IN SUMH & SUML TAD N CIA /STORE -N IN DCA DIV /DIV LOOP, TAD SUMH /CHECK TO SEE IF SPA /NO. IS NEG. CLL CML /YES : SET LINK RAR /DIVIDE HI WORD BY 2 DCA SUMH /AND STORE TAD SUML /DIVIDE LO WORD RAR /BY 2 DCA SUML /AND STORE CLL ISZ DIV /DONE YET? JMP LOOP /NO: GO AROUND AGAIN JMP I DIVIDE /YES: RETURN HEAD, 0 TAD M15 /INITIALIZE CTR TO DCA STARCT /COUNT 15 STARS TAD STAR /GET ASCII FOR STAR JMS TYPE /AND TYPE ISZ STARCT /TYPED 15 STARS? JMP .-3 /NO: GET ANOTHER JMS CRLF /YES: TAD I OUTPTR /GET NEXT CHARACTER ISZ OUTPTR SNA /IS CHARACTER A NULL JMP .+3 /YES JMS TYPE /NO: TYPE IT JMP .-5 /GO BACK TO GET NEXT CHARACTER CLA CLL JMP I HEAD STARCT, 0 AUTO, 0 CLA CLL TAD K260 /ADD IN ASCII ZERO DCA KCNT /INITIALIZE KCNT COUNTER JMS CRLF JMS CRLF TAD I OUTPTR /GET NEXT CHARACTER ISZ OUTPTR /INCREMENT PTR SNA /IS CHARACTER A NULL JMP .+3 /YES: JMS TYPE /NO: TYPE IT JMP .-5 /JMP BACK TO GET NEXT CHAR. JMS CRLF NEXTR, TAD R /GET ASCII FOR R JMS TYPE /TYPE R TAD KCNT /GET ASCII FOR SUBSCRIPT JMS TYPE /TYPE SUBSCRIPT TAD EQUAL /GET ASCII FOR = JMS TYPE /TYPE IT JMS I 7 /ENTER INTERPRETER FGET I 17 /GET ANSWER FOUT /PRINT IT FEXT TAD KCNT /(AC)=KCNT CIA /(AC)=-KCNT TAD M /(AC)=M-KCNT SZA /IS KCNT=M? JMP .+3 /YES ISZ KCNT /INCREMENT SUBSCRIPT JMP NEXTR /GET NEXT R JMP I AUTO /RETURN *1500 SUMR, 0 /SUBR TO ADD SERIES CLA CLL /SET UP PTR TO DCA POINT /LOC. OF FIRST NO. GETX, TAD I POINT /GET NEXT NO. SPA /IS NO. NEGATIVE? JMP NEG /YES: JMP TO MAKE XH NEG. ADD, TAD SUML /ADD X TO SUM DCA SUML / RAL /ADD LINK TO HIGH WORD TAD SUMH / TAD XH /ADD X HI WORD TO SUM DCA SUMH DCA XH /CLEAR X HI WORD ISZ KI /INCREMENT KI TAD N CIA TAD KI /DONE X(N)? SNA JMP I SUMR /YES: RETURN CLA CLL /NO: ISZ POINT /INCREMENT PTR JMP GETX /GO TO GET NEXT NO. NEG, CLA CLL CMA /MAKE XH NEG. DCA XH /FOR NEG. X(I) TAD I POINT /GET X(I) BACK JMP ADD /GO TO ADD TO SUM SAMPLE, 0 /ADC SUBROUTINE TO GET N SAMPLES CLL CLA /T SEC APART 6500 /CLEAR ADC CONTROLLER FLAGS 6506 /LOAD CONTROLL REG WITH 0 TAD N /INITIALIZE TO CIA /COUNT N SAMPLES DCA MN TAD T /T IS SAMPLE TIME IN CIA /MULTIPLES OF 0.115 MSEC DCA MT DCA 10 /SET POINTER TO DATA CH 1 DCA 11 /AND CH 2 6505 /START CONVERSION 6501 JMP .-1 /WAIT FOR SAMPLE SYNC PULSE TAD CHECK /IS SAMPLE OVER THRESHOLD ? SPA CLA JMP .-5 /NO: KEEP WAITING IAC 6506 /TO CH 1 NOP /AND WAIT 4.8 MICROSEC NOP NOP NOP CDF 10 NSAMP, 6505 /START CONVERSION TAD MT /INITIALIZE DELAY LOOP DCA COUNT TAD M022 DCA CT1 NOP /THIS LOOP TAKES ISZ CT1 /ABOUT JMP .-2 /90 MICROSEC ISZ COUNT JMP .-6 /OUTER LOOP ENDS HERE 6502 /READ ADC BUFFER CH 1 DCA I 10 /STORE SAMPLE CDF 20 IAC IAC 6506 /LOAD CONYROL REG WITH 2 NOP NOP NOP NOP 6505 /START CONVERSION 6501 JMP .-1 /WAIT FOR SIGNAL DCA I 11 /STORE SAMPLE 2 ISZ MN /DONE ALL SAMPLES YET/ JMP NSAMP /NO IAC IAC /INITIALIZE NOCTR TO DCA NOCTR /CHANGE DATD FIELD LOOP5, CLA CLL TAD N /INITIALIZE TO COUNT CIA /N SAMPLES DCA MN CLA CLL /CLEAR AC AND LINK DCA 10 /SET POINTER DCA 11 /TO GET DCA 12 /AND STORE DCA 13 /DATA CH 1 AND 2 NSTORE, TAD I 10 /GET NUMBER SPA /IS NO. POSITIVE CLL CML IAC /NO: SET LINK AND BIT 11 RTR /SHIFTS NO. TO BITS 2-11 DCA I 11 /STORES NUMBER TAD I 12 SPA CLL CML IAC RTR DCA I 13 ISZ MN /DONE ALL SAMPLES YET? JMP NSTORE /NO ISZ NOCTR /YES: DONE BOTH DATA FIELDS? JMP .+3 /NO: CDF 00 /YES JMP I SAMPLE /RETURN CDF 10 /NO: CHANGE DATA FIELD JMP LOOP5 /DO DATA FIELD 1 *2000 316 275 277 250 264 240 317 303 327 301 314 240 303 310 301 322 251 215 0 315 275 277 215 0 324 275 277 250 324 311 315 305 240 302 305 324 327 302 302 316 240 323 301 315 320 315 305 323 240 311 316 240 256 261 240 256 261 240 315 323 305 303 251 215 0 303 310 301 316 316 305 314 240 261 215 215 315 305 301 316 240 275 0 301 325 324 317 303 317 322 322 305 314 301 324 311 317 316 240 240 322 313 215 0 303 310 301 316 316 305 314 240 262 215 215 315 305 301 316 240 275 0 301 325 324 317 303 317 322 322 305 314 301 324 311 317 316 240 240 240 322 313 215 0