File GMERGE.PA (PAL assembler source file)

Directory of image this file is from
This file as a plain text file

/   JIM GAUNCE    EECS 415   V02  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
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 HEADP     /TYPE HEADING
          JMS I 7         /ENTER INTERPRETER
          FGET I 17       /GET MEAN
          FOUT            /PRINT IT
          FEXT            /EXIT INTERPRETER
          JMS I AUTOP     /TYPE AUTOCORRELATION RESULTS
          JMS I HEADP     /TYPE HEADING
          JMS I 7         /ENTER INTERPRETER
          FGET I 17       /GET MEAN
          FOUT            /PRINT IT
          FEXT            /EXIT INTERPRETER
          JMS I AUTOP     /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
*1200 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



Feel free to contact me, David Gesswein djg@pdp8online.com with any questions, comments on the web site, or if you have related equipment, documentation, software etc. you are willing to part with.  I am interested in anything PDP-8 related, computers, peripherals used with them, DEC or third party, or documentation. 

PDP-8 Home Page   PDP-8 Site Map   PDP-8 Site Search