File MATSTE

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

[ 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



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