File LASNERAN

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

[A PSEUDO RANDOM NUMBER GENERATOR
[FOR THE LINC-8 COMPUTER.
[MAY BE LOADED INTO ANY LMB
[CALLING SEQUENCE :
[LDA i   [AC CONTAINS
[X       [X IS CALLING FIELD
[LMB Y   [Y IS RANDOM"S FIELD
[JSR 20  [CALL THIS ROUTINE
[RETURNS HERE WITH RANDOM # IN AC
[8-20-69 M. F. LEWIS, W. M. WEBBER, J. E. DOYLE
[CODE OPTIMIZED FOR SPEED AND SIZE BY CHARLES J. LASNER
[JANUARY 1976
JSR= JMP [FOR DISTINGUISHING SUBROUTINES FROM SIMPLE JUMPS
$20
ADA i [MAKE IT AN LMB
LMB [INSTRUCTION
STC A31Q [STORE INLINE FOR LATER
ADD 0 [GET RETURN ADDRESS
STC A36Z [STORE INLINE ALSO
CLR
ADD A33R
ROL i 1
BCL 
A32K
STC A34T
ADD A32R
BCL
A31K
STC A33A
ADD A34T
STC A35T
JSR A31A
ROL i 5
STC A32T
[MOST SIGNIFICANT 12 BITS
[GOES INTO A32T
[LINK SHOULD BE ZERO.
ADD A33R
BCL
A31K
ROL i 5
STC A33A
ADD A32R
STC A35T
JSR A31A
STC A33T
[MIDDLE 12 BITS INTO A33T
LZE
JMP A32A
TOP
#A32B   CLR
ADD A33R
ROL i 1
STC A31Z [SAVE ACCUMULATOR
LZE
JMP A32C
#A32D   CLR [CLEAR LINK
ADD A31Z [RESTORES ACCUMULATOR
STC A33A
ADD A33R
STC A35T
JMP A31A
STC A33R
ADD A32R
ROL i 1
LZE
JMP A32F
#A32G   STC A32Z [SAVE ACCUMULATOR
CLR [CLEAR LINK
ADD A32Z [RESTORES ACCUMULATOR
STC A33A
ADD A33T
STC A35T
JMP A31A
STC A32R
ADD A31R
ROL i 1
STC A33A
ADD A31R
STC A35T
JSR A31A
STC A33A
ADD A32T
STC A35T
JSR A31A
STA [SAVE FOR NEXT TIME
A31R [APPARENTLY NEEDED THEN
#A31Q   0  [CONTAINS LMB N
#A36Z   0 [EXIT FROM GENERATOR
TOP
#A32A   BCLi
7777 [MAKE SURE ACCUMULATOR IS CLEAR, BUT LEAVE LINK ALONE.
ADD A32T
STC A33A
ADD A31T
STC A35T
JSR A31A
STC A32T
JMP A32B
 
#A32C   ADD A33T
STC A33A
ADD A31T
STC A35T
JMP A31A
STA
A33T
AZE [IS ACCUMULATOR ZERO
JMP A32D
APO
JMP A32D
BCLi
7777 [CLEAR ACCUMULATOR
ADD A32T
STC A33A
ADD A31T
STC A35T
JSR A31A
STC A32T
JMP A32D
 
#A32F   STC A34Z [SAVE ACCUMULATOR
ADD A32T
STC A33A
ADD A31T
STC A35T
JSR A31A
STC A32T
ADD A34Z [RESTORE ACCUMULATOR
JMP A32G
TOP
#A31A   STC A34A [ZERO 4A
LZE [IF LINK NOT = 0
ADD A33K [MAKE 4A = 1
STC A34A [LINK COMPLEMENT TRIGGER
CLR [CLEAR AC AND LINK
ADD A35T
LAM i
#A33A   0000
ROL i 1 [GET LINK
BCO i [IF LINK =1, ADD ENTRY
#A34A   0000 [COMPLEMENT-- OR ELSE NO COMPLEMENT
ROR i 1
LDA
A33A
JMP 0 [RETURN TO CALLER
[CONSTANTS
#A33K   0001
#A31K   7600
#A32K   0377
[TEMP. STORAGE
#A31T   0001
#A32T   0000
#A33T   0000
#A34T   0000
#A35T   0000
#A31Z   0000
#A32Z   0000
#A33Z   0000
#A34Z   0000
[RANDOM NUMBER--
#A31R   0000 [MOST SIG. 12 BITS
#A32R   0000
#A33R   0001 [LEAST SIG. 12 BITS.
[RAND 8-20-69
[
[
TOP
[Q+AR
$310
#A39O   LDA i
2
ADD 0
STA
EXIT+1 [SAVE RETURN ADDRESS
ADD L3775 [RETAIN DATA FIELD ADDRESS
STC 1
UMB 1 [TO GET ARGUMENTS
LDA 1
ADD L3777
STC QADDR1
LDA i 1
STC AADDR1
UMB 2 [BACK TO BUFFER FIELD
STC 6
#HLOOP  SET 3
AADDR1
#L44    SET 4
QADDR1
#TSTLUP JSR TEST [TEST NATURE OF Q BUFFER
JMP AFIELD [ANSWER FIELD FOUND
JMP MORE [END OF SCREEN FOUND
JMP TSTLUP [NORMAL CHARACTER
#AFIELD STH 3
LDH i 4
COM
STC 6
ADD L67
#ZAP    LDH i 3 [STH i 3 IF CLEARING
XSK i 6
JMP ZAP
LDH i 3
JMP TSTLUP
#MORE   STH 3
#SLOOP  SET i 4
#AADDR1 0
#REPLUP LDA i
376
STC POS
SET i 3
#QADDR1 0
SET 5
AADDR1
#NULINE SET i 1
5
LDA i
-40
ADM i
#POS    0
TOP
#AGAIN  LDH i 3
JSR TEST+1
JMP SPEC1 [ANSWER FIELD CHARACTER
JMP TSTKEY [END OF SCREEN
SHD i [OTHERWISE ,
1200 [IS IT A LF 
JMP NULINE [YES
JSR DISPLY [DISPLAY NORMAL CHARACTER
JMP AGAIN [DO MORE
#SPCIAL JSR DISPLY
SRO i
#FLAG   0
DIS 1
LDH i 5
JSR TEST+1
JMP AGAIN [ANSWER FIELD FOUND
JMP AGAIN [END OF SCREEN
JMP SPCIAL [OTHERWISE
#TSTKEY KST
JMP REPLUP
KBD
SET i 2
SRCLST
SHD 2 [IS IT AN ALTMODE 
JSR CASCOD [YES, TREAT AS LINC CASE CHAR
SHD i 2 [IS IT A LINE FEED 
JMP EXIT [YES, GET OUT
XSK 6 [MORE TESTS ALLOWED 
JMP REPLUP [NO
SHD i 2
JMP TRYIT
SHD i 2
JMP TSTMOR
SHD i 2
JMP RLOOP
JSR TEST+1
JMP HLOOP [ANSWER FIELD CHARACTER
JMP REPLUP [END OF SCREEN
STC OP [NORMAL CHARACTER
JSR TEST
JMP BUMP
JMP BUMP
LDA i
#OP     0
STH 4
JMP REPLUP [GO DO ANOTHER
TOP
#TRYIT  LDH 4
JSR TEST+1
JMP REPLUP
[#M6002  -6002
HLT [SHOULDN"T GET HERE
JMP BUMP
#RLOOP  JSR TEST
JMP REPLUP [ANSWER CHARACTER
JMP SLOOP [END OF SCREEN
JMP RLOOP [NORMAL
 
#TEST   LDH i 4
SHD i
7000
JMP 0
SAE i
76
XSK i 0
XSK i 0
JMP 0 [RETURN
 
#DISPLY ROL 1
ADD CHBASE
STC 2
ADD L4
ADD 1
STC 1
ADD 5
COM
ADD 4
AZE
CLR
STC FLAG
ADD POS
DSC 2
DSC i 2
JMP 0 [RETURN
 
#BUMP   LDA i
#L3777  -4000
ADM
#L4     4
JMP REPLUP
 
#EXIT   LMB 1 [ONLY CALLED FROM THERE
0 [WILL BE RETURN JMP
 
#L3775  3775 [ADDRESS CONSTANT
TOP
CHTABLE=p [CHARACTER TABLE START
[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
#CASCOD KBD i [GET NEXT CHARACTER
ADD L44 [MAKE IT 6-BIT
[DEL:13
JMP 0 [RETURN
#L67    67
[SPACE:14
0000
0000
[i:15
0101
0126
[p:16
3700
3424
TOP
[-:17
0404
0404
[+:20
0404
0437
[|:21
0000
0077
[#:22
#TSTMOR JSR TEST
JMP BUMP [ANSWER
[CASE:23
JMP BUMP [END OF SCREEN
JMP REPLUP [NORMAL
[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
TOP
[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
TOP
[META
[56
[CASE EOL
#SRCLST 2356
1322
[57
[CASE DEL
1200
#CHBASE  CHTABL
[: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
 
TOP
[":70
[CASE A
#SPEC1  LDH i 3 [BUMP PAST
LDA i
[":71
[CASE B
14
JMP SPCIAL
[<: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
[12|27|67
$760
LDA i
STH i 3
STC ZAP
LMB 1
JMP 0
$765
LDA i
LDH i 3
STC ZAP
LMB 1
JMP 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