[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