Directory of image this file is from
This file as a plain text file
*20
PMODE
/PDP 12 SIGNAL AVERAGER
/WITH MTP WRITE SR
/9 APR 70
/MEMORY BOUNDS FOR FIELD 0
LOCORE=230 /LISTS, BUFERS
/DATA BLOCKS
/START HERE
HICORE=6200 /PROTECTED AREA
/BEGINS HERE
/AVGING PARAMS
/LOCNS 20-64
/LIST ADDRESSES
ADJLIS=23 /START OF JOB
/LIST-1
ADCHNL=24 /START OF CHANEL
/DISPLAY LIST-1
AVG=400 /JOB TYPES
SD=1000
TRN=1400
/JOINT SWEEP
/PARAMS 29 LOCS
SMASK=25 /STIMULUS (SYNC)
/CHANNEL MASK
NSWEP=26 /-NUM SWEEPS
/IN AVERAGE
KSYTIM=27 /-( OF ASI FROM
/STIM TO SYNC
/POINT -1)
ASI=37 /USEC PER ASI
KMODE=42 /KW12 CNTRL REG
CLKMOD=43 /KW12 ENAB REG
/SWEEP A LIST
/PARAMETERS
SAMA=44 /-POINTS (ASI)
/IN SWEEP A
/(EACH CHANNEL)
NCHA=45 /NUM OF CHAN
/IN SWEEP A
ADBUFA=47 /LOCN -1 FOR
/START OF ADC
/BUFFER -A
PLTDLY=50 /PLOTTER DELAY
/COUNTER
CLKCNT=51 /CLOCK CNTR
/CHANEL COUNTER
/AND CONSTANT
KCHCNT=52 /-NO. OF CHAN
/IN SWEEP CONST
CHCNT=53 /-NO. OF CHAN
/LEFT IN SWEEP
/(VARIABLE)
/SWEEP A ON LN
/PARAMETER
KBLA=60 /-NUM ASI FROM
/SYNC POINT TO
/LOGICAL END OF
/A-1
OCSORT=130
TEMP01=146 /TEMPORARY
TEMP02=147 /STORAGE
TEMP03=150 /REGISTERS
TEMP04=151 /146-177
TEMP05=152
TEMP06=153
TEMP07=154
TEMP10=155
TEMP11=156
TEMP12=157
TEMP13=160
TEMP14=161
TEMP15=162
TEMP16=163
TEMP17=164
TEMP20=165
TEMP21=166
ARITH0=167 /TEMP
TEMP22=167 /STORAGE
ARITH1=170 /AND
TEMP23=170 /MULTIPLE
ARITH2=171 /ACCUMULATORS
TEMP24=171
ARITH3=172
TEMP25=172
ARITH4=173
TEMP26=173
ARITH5=174
TEMP27=174
KBDBUF=175 /TEMP
TEMP30=175 /STORAGE
TTYBUF=176 /AND
TEMP31=176 /TTY-KBD
TTYFLG=177 /BUFFERS
TEMP32=177
/COMBINED
/OPERATES
MTH=CLA CMA CLL RTL
MTW=CLA CMA CLL RAL
TWO=CLA CLL CML RTL
/INSTALLATION
/PARAMETERS
/LOCNS 20-64
/LIST ADDRS
*1 /INT SERVICE
DCA ASAVE
RAR
DCA LSAVE
JMP I INTERX
0
0
LXCORD, 0
BUFA, 0
GETPNT, 0
PUTPNT, 0
JPNT, 0
AXPNTR=JPNT
TMPNTR=17
*30
/LINKS N CONSTS
/FOR MTP SR
WSWITZ, 7777
WDUNZ, WRIDUN
WRIZ, WRITE
INDATZ, INDATA
TMESSZ, TMESS
TYPEZ, TYPES
KZ7, 7
*56
ZCYCLE, CYCLE
*104
KM200Z, -200
STWZ, ADDUN
ZLADR, SQADS-2
KZ377, 377
KZ260, 260
M3Z, -3
LMODE
*41 /LINC INTERRUPT
JMP 200 /SERV AT 200
PMODE
*50
PLTDLY, 0
CLKCNT, 0
KCHCNT, 0
CHCNT, 0
KM005, -0005 /CONSTANTS
K0100, 0100
*60
KBLA, 0
K0215, 0215
K0322, 0322
K0062, 0062
KM3720, -3720
INTERX, 0
ASAVE, 0
LSAVE, 0
/LINKS TO SECN
/3 SUBROUTINES
JGET, JGETS /GET NEXT JOB
/FROM JOB LIST
BLKCNT, BLKCNS /MOVE THRU DATA
/BLOCK
SETPNT, SETPNS /SET ADC PNTRS
IXPNT, IXPNTS /MOVE THRU
/ADC BUFFERS
SDIS, SDISS /SET UP DISPLAY
DISP, DISPS /DISPLAY A PNT
LDIS, 0
LINC /LINC MODE DIS
LMODE /ROUT
DIS LXCORD /B7 IS H.C.
PDP
PMODE
CLA
JMP I LDIS
*112
K0004, 0004 /PAGE 0 CONSTS
K0003, 0003 /USED BY
K0002, 0002 /RESIDENT
KM0001, -001 /SUB RTS
K0007, 0007 /DONT RELOCATE
KM0027, -0027
K0377, 0377
KM0004, -0004
/TTY-LIST
TTYLST, 0 /-END OF LIST
PROMRK, 42 /"-PROG OUTPUT
/MARKER
K44, 44 /-DISPLAY RESET
TXMRK, 47 /-KEYBRD INPUT
/MARKER
KCR, 45 /CR-CARIG RTN
KM0043, -43 /LF-LINE FEED
*OCSORT
K0040, 40 /SPACE: K0040
MTXMRK, -47 /: MTXMRK
/LINKAGES TO
/BASIC SUB RT
BRAN, BRANS /TABLE BRANCH
SHFT, SHFTS /DBL PRECISION
/ARITH SHIFT
DADD, DADDS /DBL PREC ADD
/TEMP STORAGE
KLUG, 0
TAD GETPNT
DCA PUTPNT
JMP I KLUG
/REGS 146-177
*200 /LINC INTERUPT
LMODE /SERVICE ROUT
SET I 0 /RTN TO LIRETN
LIRETN /WHEN FINISHED
STC LASAVE
ROR I 1
STC LLSAVE
PDP
PMODE
JMP 1 /GO SERVICE
/INTERRUPT
LIRETN, IOF
CLA
TAD 40 /GET RTN ADDR
LINC
LMODE
BSE I /MAKE A JUMP
6000
STC LJUMP
ADD LLSAVE
ROL I 1
LDA I
LASAVE, 0
IOB
6244 /RMF
IOB
6001 /ION
LJUMP, 0 /JUMP BACK TO
/MAIN PROGRAM
LLSAVE, 0
PMODE
*400 /LOAD AND
CLA CLL /GO START
JMP I .+1
START
*6200
/ON-LINE FAST
/AVERAGE
/RTS TO TYPE
/DECIMAL WITH
/FORMATTING
DECTYP, 0 /TYPE SIGNED
/DECIMAL IN
/ARITH2
TAD ARITH2 /GET SIGN
SPA CLA
TAD K0015 /TYPE - FOR NEG
TAD K0240 /SPACE FOR PLUS
JMS I TYPEX
TAD ARITH2
SPA
CMA IAC
DCA ARITH0 /ABS OF NUM
TAD KMD1K /GET THOUSANDS
JMS GDIGIT /DIGIT
TAD KMD100 /GET HUNDREDS
JMS GDIGIT /DIGIT
TAD KMD010 /GET TENS DIGIT
JMS GDIGIT
CLA CMA /GET UNIT DIGIT
JMS GDIGIT
TAD K0240 /TYPE SPACE
JMS I TYPEX
ISZ CRCNT /CHECK ITEM
/COUNT FOR LINE
JMP I DECTYP /NOT 10 YET XIT
JMS CRLFS /10 ITEMS NEW
/LINE
JMP I DECTYP
GDIGIT, 0 /RADIX DEFLATE
/AND TYPE DIGIT
DCA ARITH3 /RADIX TO
/DEFLATE BY
DCA NDIGIT
NDIGIT=TEMP01
TAD ARITH0 /NUM TO DEFLAT
GLOOP, DCA ARITH0 /UPDATE DEFLATED
/NUMBER
TAD ARITH0 /TRIAL
TAD ARITH3 /SUBTRACTION
ISZ NDIGIT
SMA /DO MORE?
JMP GLOOP /YES, CONTINUE
/DEFLATION
CLA /NO
TAD K0257 /NDIGIT IS
/DIGIT+1
TAD NDIGIT /TYPE DIGIT
JMS I TYPEX
JMP I GDIGIT
CRLFS, 0
TAD K0215 /TYPE CR
JMS I TYPEX
TAD K212 /TYPE LF
JMS I TYPEX
TAD KMD010 /SET COUNT
DCA CRCNT /-10 ITEMS
JMP I CRLFS
/LOCAL CONSTS
KMD1K, -1750
KMD100, -0144
KMD010, -0012
K0015, 0015
K0257, 0257
K0240, 0240
/TEXT OF CTRL/A
/MESSAGES
TXMESS, 215 /(CR)
K212, 212 /(LF)
TMCH, 0 /*
272 /:
240 /SPACE
0 /END TEXT
CRCNT, -12 /LOCAL VAR
TYPEX, TYPES /LOCAL
ADDUN, TAD ASWIT /AVGING SWIT=0
/IF OK TO AVG
SZA CLA
JMP ADONE /.NE. 0; DONT
/UPDATE CALCS
TAD ADJLIS /START CALCS AT
/TOP OF LIST
DCA JPNT
CALJOB, CDF 0 /FIELD 0 HOLDS
/JOB LIST
JMS I JGET /GET JOB PARAMS
JMP CALEND /EOL DETECTED
/END OF THIS
/SWEEP
ISZ JPNT /MOVE OVER
ISZ JPNT /J6 AND J7
DCA CALXM /AC HELD CDF N
JMS I SETPNT /SET UP ADC
/PNTRS N CNTRS
TAD GETPNT /SET UP TO
DCA PUTPNT /UPDATE JOBS
/DATA REGION
TAD CALXM /UPDATE JOBS
DCA .+1 /SWEEP CNTR
CDF /SET CDF
TAD I GETPNT /GET NUM OF
DCA NSAVE /SWEEPS
NSAVE=TEMP07
ISZ I PUTPNT /SAVE INCR.
/NUM OF SWEEPS
CALNXT, CDF 0 /ADC BUFFER IS
/IN FIELD 0
TAD I TBUFAD /GET SAMPLE
DCA TADC /FROM ADC BUFER
TADC=TEMP03
CALXM, CDF /JOBS CDF
CLL
TAD TADC /ADC BUFFER
/VALUE FOR PNT
JMS I LADZ /LIST DBL
/PRECISION ADD
CLA CMA
TAD TJTYPE /S.D.?
SNA CLA
JMP CALMOR /NO TYPE 1
/75/PNT
TAD TADC /ADC BUFER VAL
JMS I SQADZ /SQUARE N LIST
/TRIPLE
/PRECISION ADD
MTW
TAD TJTYPE /TREND?
SNA CLA
JMP CALMOR /NO TYPE 2
/400/PNT
TAD I GETPNT /LAST SWEEPS
DCA TSAVE /ADC BUFFER VAL
TSAVE=TEMP01 /FOR THIS PNT
TAD TADC /SAVE THIS
/SWEEPS ADC
/BUFFER VALUE
DCA I PUTPNT /FOR THIS PNT
TAD NSAVE /NUM OF SWEEPS
SNA CLA /0?
JMP .+4 /YES
/X(1)-X(0)=0
TAD TSAVE /THIS SWEEP-
CMA IAC /LAST SWEEP
TAD TADC /SQUARE N LIST
/TRIPLE ADD
JMS I SQADZ /TYPE 3:750/PNT
CALMOR, JMS I BLKCNT /MORE DATA
/IN JOB?
DCA CALXM /FIELD CHANGE
/CDF INST IN AC
JMS I IXPNT /NOT COMPLETE
/UPDATE ADC
/POINTER
JMP CALJOB /JOB COMPLETE
/GET NEXT JOB
JMP CALNXT /NOT COMPLETE
/GET NEXT POINT
LADZ, LADDS
SQADZ, SQADS
K0276, 0276
CALEND, TAD WSWITZ
SNA CLA
JMP I WDUNZ
ISZ NSWPS /SWEEPS DONE?
JMP ADONE /NO
DCA VSW /YES SET VIEW
/SWITCH TO
/AVERAGES
DCA XMASK /DO NOT SAMPLE
TAD K0276 /TYPE ">"
DCA KBDBUF
SKP
ADONE, NOP
JMP I ZCYCLE /START AT TOP
/OF DISP CYCLE
/SUBROUTINE TO SENSE AND BRANCH ON PSEUDO KEYBOARD: IKBRAN
/ EXIT 1 /NORMAL RETURN
/ EXIT 2 /<LF>
/ EXIT 3 /<CR>
IKBRAS, 0 /PROTECT AGNST
/BAD CNTRL TAPE
TAD KBDBUF /EXAMINE
/INTERRUPT KBD
SNA /KEY STRUCK?
JMP I IKBRAS /NO NEW KEY
JMS I BRAN /YES WHICH ONE ?
IKLIST
JMP CTRLZ /Z ZERO AND
/RESTART
JMP CTRLR /R - RESTART
JMP CTRLA /A ALTER PARAMS
JMP CTRLQ /Q TERM AVGING
ISZ IKBRAS /C.R. EXIT TO
/CALL+3
JMP IKCRLF /L.F. ECHO AND
/EXIT TO CALL+2
JMP IKV /V COMPLEMENT
/VIEW SWITCH
MTW /C CONTRACT
/VIEW SCALE
JMP IKXC /X EXPAND
/VIEW SCALE
JMP CTRLD /D GET MONITOR
JMP I WRIZ /WRITE MTP
JMP IKT /T TYPE DATA
JMP IKP /P PLOT MODE
IKCONT, TAD KBDBUF /OTHERS ECHO
TLS /TYPE
DCA TTYFLG /SET FLAG CHAR
/IN PROGRESS
DCA KBDBUF /CLR KBD BUFER
IKEXIT, JMP I IKBRAS /RTN
IKV, TAD VSW /V COMP. VIEW
/SWITCH
CMA
DCA VSW
JMP IKCONT /ECHO AND EXIT
IKXC, CLL CMA /-2 GOES TO 1
/0 GOES TO -1
TAD NSHFT /C: INC. NSHFT
/X: DECR. NSHFT
DCA NSHFT /NSHFT IS NUM
/OF PLACES TO
/SHIFT RIGHT
JMP IKCONT /ECHO AND EXIT
IKCRLF, TAD K0212 /CR OR LF
/TYPE LF LATER
DCA TTYBUF
ISZ IKBRAS /XIT TO CALL+2
/OR CALL+3
JMP IKCONT /ECHO AND EXIT
IKP, TAD XMASK /IS AVGING DONE?
SZA CLA
JMP IKEXIT-1 /NO DONT EVEN
/ECHO "P"
TAD PSWIT /YES, COMP
/PLOT SWITCH
CMA
DCA PSWIT
JMP IKCONT /ECHO AND EXIT
IKT, TAD PSWIT /PLOTTING DONE?
TAD XMASK /AVERAGE DONE?
SZA CLA
JMP IKEXIT-1 /NO DONT ECHO
DCA TNJOB /PRESET TO
/DUMP MODE
TNJOB=TEMP10
DCA TNMIN
TNMIN=TEMP11
DCA TNMAX
TNMAX=TEMP12
TAD KBDBUF /"<CRLF>T: "
JMS I RDKBDX /GET AVERAGE
/TO BE OUTPUT
SNA /0 TO TYPE ALL
JMP IKTGO /IN DUMP MODE
/TYPE ALL DATA
DCA TNJOB /-JOB
TAD K0314 /"<CRLF>L: "
JMS I RDKBDX /GET LOWER
/LIMIT (BIN )
DCA TNMIN
TAD K0310 /"<CRLF>H: "
JMS I RDKBDX /GET UPPER
/LIMIT (BIN )
DCA TNMAX
IKTGO, CLA CMA
DCA TSWIT
TAD K0215
DCA KBDBUF
JMP I IKBRAS
CTRLD, IOF
JMP I .+1
MONITR
CTRLQ, CLA CMA /DO 1 MORE SWEEP
DCA NSWPS /AND THEN QUIT
JMP IKEXIT-1
START, CMA
DCA WSWITZ
TAD K201 /AVGER STARTS
/HERE
DCA KBDBUF
TAD K0100 /GET LINC SPEC
LINC /FCNS CONST
LMODE
ESF /ENAB FAST SAM
PDP
PMODE
CTRLA, JMP I TCALX /SET UP CLOCK
TAD K0316 /"/CRLF/N: "
JMS I RDKBDX /-NUM OF SWEEPS
DCA NSWEP
TAD K0304 /"/CRLF/D: "
JMS I RDKBDX /-DELAY (IN
/SAMPLING INT)
TAD KM0001
DCA KSYTIM+1
CTRLZ, TAD K0212 /LFCRLF
JMS I TMESSX
TAD ADJLIS /START AT 1ST
DCA JPNT /JOB
ZNXT, CDF 0
JMS I JGET /GET JOB PARAMS
JMP ADINIT /NO MORE JOBS
/INIT SWEEP
/CNTRL TO
/ACCEPT DATA
ISZ JPNT /SKIP OVER DISP
ISZ JPNT /IN J6 N J7
DCA ZXM /CDF INST IN AC
JMS I JCELLX /GET NUM OF
/CELLS -2 FOR
/JOBS DATA POINT
TAD K0002 /NUM OF CELLS
/PER DATA POINT
/IS N
CMA IAC
DCA TZCELL
TZCELL=TEMP02
CLA CMA /FIRST ITEM HAS
/SWEEP CNT (NOT
/CNTED IN LENTH)
ZXM, CDF
TAD TZCELL /FOR EACH PNT 0
DCA TZCNT /N CELLS
TZCNT=TEMP01
DCA I GETPNT /GETPNT INIT
/BY JGETS
ISZ TZCNT
JMP .-2
JMS I BLKCNT /NEXT POINT?
DCA ZXM /YES BUT CHANGE
/CDF
JMP ZXM /CONTINUE
JMP ZNXT /END OF JOB
/GET NEXT JOB
RDKBDX, RDKBDS /LOCAL
JCELLX, JCELLS /CROSSPAGE
TMESSX, TMESS
TCALX, TCALS
/ASCII CHARS
K0304, 304 /D
K0316, 316 /N
K0212, 212 /LF
K0314, 314 /L
K0310, 310 /H
K201, 201
/INIT PNTRS
/COUNTERS
/AND BUFFERS
ADINIT, TAD K0003 /SET SCALE
/TO 1/8
DCA NSHFT
NSHFT=TEMP21
CTRLR, TAD K0212 /PUT LFEED IN
DCA KBDBUF /KBD BUFF
TAD NSWEP /SET AUTO STOP
DCA NSWPS /COUNTER
NSWPS=TEMP20
TAD SMASK /SET AVGING
DCA XMASK /SWITCH
XMASK=TEMP17
DCA PSWIT /NO PLOTTTING
PSWIT=TEMP16 /PERMITTED
CYCLE, CLAB
CLLR
TAD K0100
CLLR
CLSA
LINC
110 /SAM 10
2 /PDP
CLA
TAD CLKCNT
CMA IAC
CLAB
CLA
TAD CLKMOD /GET KW12 MODE
CLEN
CLA
TAD ADRCLK /SETUP INTERUPT
/SERVICE
DCA INTERX /INTERRUPT GOES
/TO SWEEP ADC
KBDCHK, JMS I IKBRAX /LOOK AT
/INTERRUPT KBRD
JMP RSTART /NO CHAR GO DISP
CLA CMA /L.F. COMES HERE
/FOR 1ST SWEEP
/SET MODE TO
/PAUSE
DCA ASWIT /C.R. SET MODE
/TO "COMPUTE"
ASWIT=TEMP15
TAD ASWIT /ASWIT=-1 FOR
/PAUSE ASWIT=0
/FOR COMPUTE
DCA VSW /INPUT FOR PAUSE
/AVERAGES FOR
/COMPUTE
VSW=TEMP14
DCA TSWIT /SET TO NO TYPE
TSWIT=TEMP13
RSTART, ION /INIT
DISWIT, TAD VSW /VIEW INPUT OR
/PARTIAL SUMS?
SZA CLA
JMP VINPUT /VIEW INPUT
TAD ADJLIS /VEIW PART SUMS
DCA JPNT /START WITH
/1ST JOB
VJSTAR, CDF 0
JMS I JGET /VIEW PART SUMS
JMP KBDCHK /NO MORE JOBS
/LOOK AT KBRD
DCA VJXM /CDF INST
JMS I SDIS /SETUP DISP
/PARAMETERS
NOP /SKIPPED (KLUG)
JMS JCELLS /GET NUM OF LOC
/PER POINT-2
DCA TDSKIP /DONT DISP S.D.
/OR TREND
TDSKIP=TEMP04
TAD VJXM /SET UP FIELD
DCA VJXMN /TO GET N
VJXMN, CDF
TAD I GETPNT /NUM OF SWEEPS
DCA ARITH2
TAD TSWIT /CHK TYP SWITCH
SNA CLA /.NE. 0 TO TYPE
JMP VJXM /DONT TYPE
TAD TNJOB /DUMP MODE?
SNA CLA
JMP .+3 /YES START
/TYPING
ISZ TNJOB /NO IS THIS THE
/JOB TO BE
/TYPED?
JMP VJXM /NO DISP THIS 1
JMS I CRLFX /TYPE CRLF
/SET ITEM CNTER
JMS I DECTYX /TYPE N
TAD NSHFT /GET SCALE
DCA ARITH2 /FACTOR SAV FOR
/TYPING
JMS I DECTYX /TYPE SCALE
/FACTOR
JMS I CRLFX /TYPE CRLF
/SET CR COUNT
VJXM, CDF /GET DATA FIELD
TAD I GETPNT /GET DATA PNT
/(LO ORDER,
/HI ORDER)
DCA ARITH2
TAD I GETPNT /AND PUT IN
DCA ARITH1 /SHIFT REG
MTW /OUTPUT IN MV
/DEC SF BY 4
TAD NSHFT
CMA IAC
JMS I SHFT
TAD TSWIT /CHK TYPE SWIT
SNA CLA
JMP VJDIS /TYPE NOT ENAB
TAD TNJOB /IS THIS JOB
SZA CLA /TO BE TYPED?
JMP VJDIS /NO JUST DISP
TAD TNMIN /REACHED THE
SNA CLA /FIRST POINT?
JMP .+3
ISZ TNMIN /NO COUNT DOWN
SKP /JUST DISPLAY
JMS I DECTYX /YES TYPE
/DATA POINT
ISZ TNMAX /REACHED THE
/LAST POINT?
SKP /NO CONTINUE
ISZ TNJOB /YES DISABLE
/TYPEOUT
VJDIS, TWO /SCALE TWO MORE
/RIGHT (COUNTS
/FROM MV)
JMS I DISP /JOB SCALE,BIAS
/ DISPLAY
TAD TDSKIP /MOVE PNTR OVER
/VAR AND TREND
TAD GETPNT
DCA GETPNT
JMS I BLKCNT /CHECK BLOCK
/LENGTH
DCA VJXM /NEW DATA FIELD
JMP VJXM /FILE NOT YET
/COMPLETE
JMP VJSTAR /GET NEXT JOB
/AND DISPLAY IT
/VIEW RAW INPUT
VINPUT, TAD ADCHNL /GET START OF
/CHANEL DISPLAY
DCA JPNT /LIST
DCA TORD /LOOK AT 1ST
/OF LIST
/(ORDER=0)
VINEXT, JMS I SETPNT /SET SWEEP
/PARAMS N PNTRS
JMS I SDIS /JPNT POINTS TO
/DISP WDS D1,D2
JMP KBDCHK
ISZ TORD /MOVE CHANNEL
/COUNTER
VILOOP, TAD I TBUFAD /GET DATA POINT
DCA ARITH2 /LOAD IN LOW
/ORDER SHFT REG
JMS I DISP /DISPLAY
JMS I IXPNT /DUN THIS CHAN?
JMP VINEXT /YES NEXT CHAN
JMP VILOOP /NO GET NXT PNT
/LOCAL CROSSPAGE
ADRCLK, CLKINT
CRLFX, CRLFS
DECTYX, DECTYP
IKBRAX, IKBRAS
/SUBRT TO GET
/(CELLS-2) FROM
/JOB TYPE
JCELLS, 0 /CELLS-2 PER
/DATA POINT IN
/CALC BUFFER
TAD TJTYPE /1, 2, OR 3
JMS I BRAN
K0003
TAD K0004 /TYPE 3
/7 CELLS+2
TAD K0003 /TYPE 2
/3 CELLS+2
JMP I JCELLS /TYPE 1
/0 CELLS+2
PAGE
/THIS SUBROUTINE DECODES DISPLAY WORDS: SDIS
/POINTER IS AUTOINDEX REGISTER "AXPNTR"
/CALL: SDIS
/ END OF LIST RETURN
/ NORMAL RETURN
AXPNTR=JPNT
SDISS, 0
TAD PSWIT /PLOT MODE?
SNA CLA
JMP K0037+1 /NO, CONTINUE
ZZ1, TAD ARITH4
DCA LXCORD
TAD YZ
JMS LDIS
JMS I IKBRAY /WAIT FOR
/CR OR LF
JMP ZZ1
K0037, 0037 /NOP
TAD I AXPNTR /GET D1
/DX(8),YS(4)
SNA
JMP I SDISS /EOL IF D1=0
DCA ARITH2
TAD ARITH2
AND K0017 /HAVE Y SCALE
DCA YS /FACTOR
DCA ARITH1 /0 TO HI ARITH0
TAD K0004 /DELTA-X
JMS I SHFT /MOVE BINARY
/POINT TO END
/OF ARITH2
TAD ARITH1
DCA DELTAX
TAD ARITH2
DCA DELTAX+1
TAD I AXPNTR /GET D2
DCA ARITH2 /XZ(6),YZ(6)
TAD K0003 /MOVE YZ TO 9
JMS I SHFT /SIGNIF BITS
TAD ARITH2
DCA YZ
TAD KM0006 /MOVE XZ TO 9
JMS I SHFT /BITS OF ARITH2
TAD ARITH2 /GET RID OF LOW
AND KM0006 /ORDER BITS
DCA ARITH4 /FOP HOLDS
/CURRENT X-VAL
TAD PSWIT /PLOT MODE?
SNA CLA
JMP K0017+1 /NO, CONTINUE
ZZ2, TAD ARITH4
DCA LXCORD
TAD YZ
JMS LDIS
JMS I IKBRAY /WAIT FOR
JMP ZZ2 /CR OR LF
K0017, 0017 /NOP
ISZ SDISS /XIT TO CALL+2
JMP I SDISS
/LOCAL VARS
YS, 0 /SCALE FACTOR
/FOR Y
YZ, 0 /SCP Y FOR Y=0
DELTAX, 0 /INCREMENT BET
/PNTS (INTEGER
/PART)
0 /(FRACTNL PART)
/LOCAL CONSTANTS
KM0006, -0006
IKBRAY, IKBRAS
/SUBROUTINE TO DISPLAY POINT OF DATA
/(X-INCREMENTED):DISP
/DATA VALUE SHOULD BE IN ARITH1
/ARITH0+2
DISPS, 0 /AC+(YS)=PLACES
TAD YS /TO SHIFT RIGHT
CMA IAC
JMS I SHFT /SCALE
TAD ARITH4 /MOVE X TO NEW
DCA LXCORD /VALUE
TAD YZ /BIAS
TAD ARITH2
JMS LDIS /DO LINC MODE
/DISPLAY
DISRTN, CLA /RTN FRM PAGE 0
/DISPLAY RT
TAD PSWIT /PLOT MODE?
SNA CLA
JMP .+4 /NO, CONTINUE
DCA PLTDLY
ISZ PLTDLY /YES, WAIT A
JMP .-1 /WHILE
TAD DELTAX /LOAD X INCR
DCA ARITH1
TAD DELTAX+1
DCA ARITH2
JMS I DADD /ADD TO CURNT X
JMP I DISPS
/THIS SUBROUTINE DECODES JOB LIST
/AND SETS JOB POINTERS (136)
/ J1: A/B(1), CHAN(5), 1(1), CHAN ORDER(5)
/ J2: JOB TYPE(4), CONTINGENCY(8)
/ J3: LINKAGE WORD (L1) TO FIRST BLOCK
/ J4: LINKAGE WORD (L2) TO FIRST BLOCK
/ J5: LINKAGE WORD (L3) TO FIRST BLOCK
/ J6: DISPLAY WORD D1
/ J7: DISPLAY WORD D2
/PARAMETERS OF JOB:
/ TYPE: - TYPE IN "TJTYPE"
/ CONTINGENCY: "TCMASK", CHAN ORDER: "TORD"
/ COUNT FOR 1ST BLK: "TCBLK"
/ LOCATION OF 1ST -1: "GETPNT"
/ CDF INSTRUCTION: AC
/ AUTOINDEX "JPNT" POINTS TO J5 AT EXIT (J6 IS NEXT)
JGETS, 0
TAD I JPNT /GET J1
SNA /J1=0 FOR EOL
JMP I JGETS /J1=0 EXIT
DCA ARITH1 /SAVE J1 IN
/SHIFT REG
TAD I JPNT /GET J2
DCA ARITH2 /LO-ORDER
/SHIFT REG
TAD ARITH1 /GET ORDER IN
/MX LIST
AND KK37 /5 LOW ORDER
DCA TORD /BITS OF J1
TORD=TEMP03
TAD K0004 /GET JOB TYPE
JMS I SHFT
TAD ARITH1
AND KK17 /4 HI ORDER OF
/J2
DCA TJTYPE /-JOB TYPE
TJTYPE=TEMP05
TAD I JPNT /GET -NUM OF
DCA CNBLK /ITEMS IN NEXT
/BLOCK (J3)
TAD I JPNT /GET CDF (J4)
DCA TCDF
TCDF=TEMP01
TAD I JPNT /GET ST ADDR-1
DCA GETPNT /FOR DATA
/BLOCK (J5)
ISZ JGETS /XIT TO CALL+2
TAD TCDF /CDF INST TO AC
JMP I JGETS
/VARS FOR JGETS
/AND BLKCNS
CNBLK, 0 /-NUM OF ITEMS
/LEFT IN SWEEP
KK37, 37
KK17, 17
/THIS SUBROUTINE COUNTS DOWN BLOCK
/ENTRIES AND LINKS TO NEXT BLOCK:BLKCNT
/CALL: BLKCNT
/ NEW FIELD RETURN
/ NORMAL RETURN
/ END OF FILE RETURN
BLKCNS, 0
ISZ CNBLK /COUNT ITEMS
/IN BLOCK
JMP BLKOK /NO OVERFLOW
TAD I GETPNT /OVERFLOW GET
/NEXT BLOCK
SNA /L1=0 IS EOF
JMP BLKFIN /EOF EXIT
DCA CNBLK /SET COUNT FOR
/NEXT BLOCK
TAD I GETPNT
DCA TCDF /GET NEW CDF
TAD I GETPNT /GET ADDRESS-1
DCA GETPNT /FOR NEXT BLOCK
JMS KLUG
TAD TCDF /CDF TO AC.
JMP I BLKCNS /NEW FIELD
/EXIT TO CALL+1
BLKFIN, ISZ BLKCNS /END OF FILE
/EXIT TO CALL+3
BLKOK, ISZ BLKCNS /CONTINUE IN
/THIS BLOCK
JMP I BLKCNS /EXIT TO CALL+2
IXPNTS, 0
TAD NCHA /NUM OF CELLS
/IN DATA POINT
TAD TBUFAD /+CURRENT
/BUFFER ADDR
DCA TBUFAD /UPDATE ADC
/BUFFER
ISZ NPOINT /IF CNTR DOESNT
/OVERFLOW
ISZ IXPNTS /EXIT TO CALL+2
JMP I IXPNTS /OTHERWISE
/TO CALL+1
/VARS FOR
/SETPNS, IXPNTS
NPOINT, 0 /-NUM OF ITEMS
/LEFT IN SWEEP
PAGE
/THIS SUBROUTINE SETS
/SWEEP PARAMETERS: SETPNT
SETPNS, 0
TAD SAMA /GET -NUM
DCA I KPOINT /OF DATA POINTS
TAD ADBUFA /GET LOGICAL 1
/OF BUFFER
IAC
TAD TORD /GET ORDER OF
/CHANNEL IN
/BUFFER
/(SET BY JGET)
DCA TBUFAD /SET ADDR OF
/1ST DATA POINT
TBUFAD=TEMP06
JMP I SETPNS
KPOINT, NPOINT
/SR TO ACCEPT
/DBL PREC
/DECIMAL ARG
RDKBDS, 0
JMS TMESS /ASK FOR ARG
RDLOOP, DCA ARITH2
KSF
JMP .-1
KRS
JMS TYPES /ECHO
TAD KSAVE /CHECK FOR CR
CMA IAC
TAD K0215
SNA CLA /CR ?
JMP RDONE /YES ARG COMP
TAD KSAVE /NO GET DIGIT
AND K017
DCA ARITH5
IAC /ADD OLD SUM
JMS I SHFT /*10(10) TO NUM
JMS I DADD
TWO
JMS I SHFT
JMS I DADD
TAD ARITH5
JMP RDLOOP
RDONE, TAD ARITH2 /GET - ARGUMENT
CMA IAC
JMP I RDKBDS
K017, 17
M0005, -5
/SR TO SET UP
/KW12 CNT TCALS
TCALS, CLA
TAD K0322
JMS RDKBDS /GET CLOCK RATE
CLA
DCA ARITH1
DCA ARITH4
DCA ARITH5
DCA CLKCNT /CLEAR COUNT
JMS I DADD /MULT RATE BY 2
JMS I DADD
TAD M0005
DCA ARITH2
CMA
DCA ARITH1
DVLOOP, ISZ CLKCNT
JMS I DADD
TAD ARITH4
SMA CLA
JMP DVLOOP
JMP I .+1
CTRLA+1
/BASIC SUBROUTINES SHFT, DADD, AND BRAN [SU63AB]
/SUBROUTINE TO SHIFT DOUBLE PRECISION WORD (SHFR): SHFT (10+6N)
/CALL: TAD KXXXX /AC HOLDS SHFT COUNT, RIGHT IS NEGATIVE
/ SHFT
/ RETURN /LINK=0, AC=0
/FORMAT OF DOUBLE WORD IS (HI,LO) HI(0)-ONLY-HOLDS SIGN
/SIGN BIT WILL BE REPLICATED IN RIGHT SHIFTS
/TEMPORARY STORAGE ALLOCATION
SHCNT=TEMP01
/ARITHMETIC REGISTER ALLOCATION
SHFR=ARITH1 /ARITH1-2 ARE
/FOR SHIFTING
SHFTS, 0
CLL
SNA /IF SHIFT COUNT
JMP I SHFTS /=0 EXIT
SMA /RIGHT OR LEF ?
CML CMA IAC /LEF SET LINK=1
/AND COUNT NEG
DCA SHCNT
SZL /RIGHT SHIFT?
JMP SHLEFT /NO-SHIFT LEFT
SHRIHT, TAD SHFR /SHIFT DONE
/ON ARITH1-2
SPA /SET L=1 IF NEG
CML
RAR
DCA SHFR /SHFT WITH
/SIGN REP
TAD SHFR+1 /SHIFT LO ORDER
/HALF
RAR
DCA SHFR+1
CLL
ISZ SHCNT /ENOUGH SHIFTS?
JMP SHRIHT /NO-CONTINUE
JMP I SHFTS /YES-EXIT
SHLEFT, TAD SHFR+1 /SHIFT LO-ORDER
CLL RAL /0 TO LSB
DCA SHFR+1
TAD SHFR /SHIFT HI-ORDER
RAL
DCA SHFR
CLL
ISZ SHCNT /ENOUGH?
JMP SHLEFT /NO-CONTINUE
JMP I SHFTS
TMESS, 0 /ROUT TO TYPE
/<CRLF>*:
DCA I TMCHX /*CHAR IN AC
TAD ADMESS /ADDR OF TEXT
DCA TMPNTR
TMPNTR=17
TMLOOP, TAD I TMPNTR /GET CHARACTER
SNA /END OF TEXT?
JMP I TMESS /YES, EXIT
JMS TYPES
JMP TMLOOP
TYPES, 0 /SUBRT TO
IOF /TYPE CHAR
TLS /IN AC
TSF
JMP .-1
TCF
DCA KSAVE
KSAVE=TEMP02
KSF
JMP I TYPES
KRB
TAD KMCTRL
SZA CLA
JMP I TYPES
CDF 0
JMP I .+1
KBDCHK
TMCHX, TMCH
ADMESS, TXMESS-1
KMCTRL, -221
NTOUT, INTOUT
INKBD, KSF /KEYBOARD UP?
JMP INTTY /NO, LOOK AT TTY
KRB /YES, READ CHAR
DCA KBDBUF
INTTY, TSF /TTY DONE?
JMP I NTOUT /NO RESET AC.L
TCF /YES, CLEAR FLAG.
DCA TTYFLG /CLEAR SOFTWARE
/FLAG TTY NOT
/IN PROGRESS
TAD TTYBUF /MORE TO TYPE?
SNA
JMP INTOUT /NO, EXIT
TLS /YES, TYPE IT
DCA TTYFLG /SET SOFTWARE
/FLAG: TTY IN
/PROGRESS
DCA TTYBUF /CLEAR BUFFER
INTOUT, TAD LSAVE /RESTORE LINK
CLL RAL
TAD ASAVE /RESTORE AC
RMF
ION
JMP I 0
LADDS, 0 /SUBRT TO DO
/DBL PREC ADD
/TO PUTPNT
/GETPNT LIST
/(28)
DCA TLAD
TLAD=TEMP01
TAD WSWITZ
SNA CLA
JMP I INDATZ
TAD TLAD /ADD LO-ORDER
TAD I GETPNT /UPDATE LO
DCA I PUTPNT /ORDER CALC PNT
TAD TLAD /DO SIGN EXTEND
/OF ADC WORD
/TO HI-ORDER
SPA CLA
CMA
SZL /L=1 INDICATES
/LO-ORDER
/OVERFLOW
IAC /ADD IN OVRFLO
TAD I GETPNT /UPDATE HI
DCA I PUTPNT /ORDER CALC PNT
CLL
JMP I LADDS
SQADS, 0 /SUBRT TO SQRE
/AC AND ADD TO
/TRIP PREC LIST
/(62+56N
/APPX 300)
SPA SNA /GET MAGNITUDE
CLL CML CMA IAC
DCA TSQAD
TSQAD=TEMP02
TAD TSQAD /LOAD DBL
DCA ARITH2 /PREC. AC
DCA ARITH1
DCA ARITH5
DCA ARITH4
SQLOOP, TAD TSQAD /MULTIPLIER
SNA /ANYMORE TO ADD
/TO PART PROD?
JMP SQDONE /NO-UPDATE
/CALC BUFFER
/AND EXIT
CLL RAR /LINK TELLS
/WHETHER TO ADD
/IN MORE
DCA TSQAD /ROTAT FOR NEXT
SZL /L=1, ADD
/MULTIPLICAND
/TO PART PROD
JMS I DADD
IAC /SHIFT PART
JMS I SHFT /PROD 1 LEFT
JMP SQLOOP /DO SOME MORE
SQDONE, TAD ARITH5 /ADD DBL PREC
/AC TO 3-WORD
/ENTRY
TAD I GETPNT /LO-ORDER
DCA I PUTPNT
RAL /OVERFLOW BIT
TAD ARITH4 /PLUS HI ORDER
JMS LADDS /ADD TO 2-WORD
/ENTRY
JMP I SQADS /TRIP PREC
/IN ALL
CLKINT, CLSA /COME HERE ON
/CLOCK INTERPT
AND XMASK /CHK FOR
SNA CLA /SYNC MASK
JMP I INKBDX /NO SYNC TRY
/OTHER DEVICES
TAD KBLA /NUM OF SAMPLES
STORWC, DCA BLA /TO ACCEPT
BLA=TEMP01
TAD ADBUFA /STRT OF BUFF-1
STORMA, DCA BUFA
TAD KSYTIM+1 /-NUM SAMPLING
/INTERVALS TO
DCA SYTIM /WAIT
SYTIM=TEMP02
TAD KMODE /SET KW12 CNTRL
CLLR /REGISTER
WLOOP, CLSA /WAIT FOR
SMA CLA /PRE-ANALYSIS
JMP .-2 /DELAY
ISZ SYTIM
JMP WLOOP
JMP CHNSET /BYPASS WAIT
/ACCEPT SWEEP
/INTO BUFFER
ADLOOP, CLSA /WAIT FOR
SMA CLA /OVRFLO
JMP ADLOOP /NOT READY
CHNSET, ISZ LSAM /GET CHANNEL
TAD LSAM
TAD ZZ
SZA CLA
JMP LSAM-1
TAD K0110
DCA LSAM
LINC
LSAM, 110 /SAM INST
2 /PDP
SPA
IAC /CVERT 1S COM
DCA I BUFA /STORE POINT
ISZ BLA /HAVE ENOUGH?
JMP ADLOOP /NO GET NEXT
/CONVERSION
JMP I .+1 /YES EXIT
ADDUN
INKBDX, INKBD
K0110, 110
ZZ, -110-NCHAN
/SUBROUTINE FOR BRANCHING ON MATCH OF AC AGAINST TABLE: BRAN
/ BRAN
/ ADDRESS OF TABLE
/ RETURN HERE IF FIRST ENTRY MEETS MATCH
/ ETC.
/ NONE MATCH
/TABLE, FIRST ENTRY
/ SECOND ENTRY
/ -LAST ENTRY
/TEMPORARY STORAGE ALLOCATION
BPNT=TEMP01
BSAVE=TEMP02
BRANS, 0
DCA BSAVE
TAD I BRANS /GET ADDR OF 1ST
/ENTRY OF MATCH
/LIST
DCA BPNT
BRLOOP, TAD I BPNT /LOOK AT ENTRY
SMA /GET MAGNITUDE
CMA IAC
ISZ BRANS /INDEX RETN ADDR
TAD BSAVE /MATCH FOUND?
SNA CLA
JMP I BRANS /YES-EXIT TO RTN
/AS CALCULATED
TAD I BPNT /NO-TEST FOR
/LAST ENTRY.
ISZ BPNT /INDEX ENTRY
/POINTER
SMA CLA /-INDICATES THIS
/ WAS LAST ENTRY
JMP BRLOOP /NOT LAST CONT
ISZ BRANS /EXIT NOT IN
/LIST NO MATCH
JMP I BRANS
/SUBROUTINE TO DO DOUBLE PRECISION ADD OF ARITH1-2, AND 4-5: DADD (21)
/ARITHMETIC REGISTER ALLOCATION
DBLAC=ARITH1
DBLARG=ARITH4
DADDS, 0 /ADD LO-ORDER
CLL CLA
TAD DBLAC+1
TAD DBLARG+1
DCA DBLARG+1
RAL /CARRY
TAD DBLAC /ADD HI-ORDER
TAD DBLARG
DCA DBLARG /LEAVE IN
/ARITH4-5.
CLL
JMP I DADDS
IKLIST, +232 /Z
+222 /R
+201 /A
+221 /Q
+215 /CR
+212 /LF
+326 /V
+303 /C
+330 /X
+204 /D
+327 /W
+324 /T
-320 /P - PLOT MODE
MONITR, LINC /SR TO SET UP
LMODE /DIAL BOOT STRAP
SET I 16
2015
LDF 2
LDA I
RCG I
STA I 16 /TO LDF 2
LDA I
7300
STA I 16
LIF 2 /RTN TO
LDF 3
JMP 16 /DIAL
PMODE
WRITE, TAD KBDBUF
JMS I TMESSZ
LOOPW, DCA ARITH2
KSF
JMP .-1
KRS
JMS I TYPEZ
TAD KSAVE
CMA IAC
TAD K0215
SNA CLA
JMP ARGDUN
TAD KSAVE
AND KZ7
TAD ARITH2
RTL CLL
RAL
JMP LOOPW
ARGDUN, TAD ARITH2
RTR CLL
RAR
TAD KK5K
DCA TPWORD
DCA WSWITZ
DCA ASWIT
TAD KM200Z
DCA CTR
TAD KZ377
DCA 15
JMP I STWZ
INDATA, RDF
TAD KCDF0
DCA HERE
TAD HERE
DCA THERE
TAD HERE
DCA WHERE
TAD I GETPNT
KCDF0, CDF 0
DCA I 15
HERE, 0
TAD I GETPNT
CDF 0
DCA I 15
THERE, 0
ISZ CTR
JMP I ZLADR
JMS DOTAPE
JMP I ZLADR
DOTAPE, 0
LINC
640
714
TPWORD, 0
2
ISZ TPWORD
TAD KM200Z
DCA CTR
TAD KZ377
DCA 15
WHERE, 0
JMP I DOTAPE
WRIDUN, CDF 0
DCA I 15
DCA I 15
ISZ CTR
JMP .-3
JMS DOTAPE
STA CLL
TAD TPWORD
RTL
RTL
DCA TPWORD
TAD M3Z
DCA CTR
LOOPW1, JMS I KCRLF
TAD TPWORD
RTL
RAL
DCA TPWORD
TAD TPWORD
AND KZ7
TAD KZ260
JMS I TYPEZ
ISZ CTR
JMP LOOPW1+1
CLA CLL
CDF 0
JMP I .+1
START
KCRLF, CRLFS
KK5K, 5000
CTR, 0
AAAEND, 0
/USER MODIFICATION STARTS HERE
DECIMAL
NCHAN=1 /=NUM OF ANALOG
/INPUTS
POINTS=1000 /=NUM OF POINTS
/PER CHAN
BLKLEN=POINTS+POINTS+1
LNBUF=POINTS /=POINTS*NCHAN
JLIST=7+1 /=7 WORDS PER
/JOB+EOL WORD
CHLEN=NCHAN+NCHAN+1
/2 WDS FOR EACH
/CHAN+EOL
CHLIST=LOCORE+JLIST-1
ADBUF=CHLEN+CHLIST
/BUFFER STARTS
/AFT CH LIST
*MEMTOT /NUM OF ADD
0 /4K STACKS
HICORE-LOCORE-4
/JOB LIST
OCTAL
*LOCORE
0040 /0(1) CHAN(5)
/1(1) CHORD(5)
AVG /TYPE(8)
-POINTS /-NUM OF DATA
/POINTS IN BLK
6201 /62N1=CDF N
/=CDF 0 (N=0)
ADCAL0=ADBUF+LNBUF
/LOC-1 OF 1ST
/POINT
ADCAL0 /IS RIGHT AFTER
/ADC BUFFER
0200 /DELTAX(8)
/YS(4)
0 /X0(6),Y0(6)
0 /END OF LIST
/CHANNEL
/DISPLAY LIST
0200 /DELTAX(8)
/YS(4)
0 /X0(6),Y0(6)
0
*ADCAL0+BLKLEN+1
0 /END OF BLOCK
/USER MODIFICATION ENDS HERE
MEMTOT=20
*ADJLIS
LOCORE-1
*ADCHNL
CHLIST
*SMASK /SYNC ON
0040 /CLOCK INPUT 1
*ASI
-1
*KMODE
1500 /KW12 CNTRL REG
/400KHZ
/MODE 101
0260 /KW12 ENAB REG
/SYNC ON
/INPUT 1
DECIMAL
*SAMA
-POINTS
*NCHA
NCHAN
*ADBUFA
ADBUF
*0042
-NCHAN /-NO. OF CHANS
-NCHAN /-NO. OF CHANS
*KBLA
-LNBUF /-POINTS*NCHAN
/PDP 12 SIGNAL AVERAGER
/WITH MTP SR
/9 APR 70