Commit | Line | Data |
---|---|---|
84b5715c PH |
1 | FIELD1 SETIDL\r |
2 | /IDLE RANDOM NUMBER GENERATOR\r | |
3 | EXTERN #IDLE\r | |
4 | \r | |
5 | JA #RET\r | |
6 | TEXT +SETIDL+\r | |
7 | SXR, SETX XR\r | |
8 | SETB BP\r | |
9 | BP, F 0.0\r | |
10 | XR, ORG .+3\r | |
11 | EXP, 0\r | |
12 | IDLAD, ADDR #IDLE-1 / Pointer to idle routine in FRTS\r | |
13 | POINT,\r | |
14 | JOB, ADDR DOIT / Address of routine to run\r | |
15 | ORG XR+10\r | |
16 | K0100, 100\r | |
17 | K0003, 3\r | |
18 | ROTWRD, 0017\r | |
19 | #LBL=.\r | |
20 | COMMON NUMCOM\r | |
21 | NUMBER, ORG .+3\r | |
22 | \r | |
23 | COMMON TXTCOM\r | |
24 | RTEXT, ORG .+1147\r | |
25 | LINES, ORG .+0044\r | |
26 | ASCVAR, ORG .+0003\r | |
27 | TXTLOC, ORG .+0003\r | |
28 | DATA, ORG .+0352\r | |
29 | ORG #LBL\r | |
30 | SEEDPT, ADDR NUMBER\r | |
31 | 0\r | |
32 | DATHAK, 7777\r | |
81e70d48 | 33 | ADDR ASCVAR\r |
84b5715c PH |
34 | DATABL, 1763-1 / Address of Direct Access table entry 8 in FRTS\r |
35 | COUNT, 0 / Idle loop count\r | |
36 | COUNT2, 7774 / Outer counter\r | |
37 | RESET, 7774 / Outer counter value\r | |
38 | X4=14 / Autoindex reg\r | |
39 | ORG 10*3+BP\r | |
40 | FNOP\r | |
41 | JA SXR\r | |
42 | 0\r | |
43 | RET, JA .\r | |
44 | \r | |
45 | BASE 0\r | |
46 | #RET, STARTD\r | |
47 | FLDA 10*3\r | |
48 | FSTA RET\r | |
49 | SETB BP\r | |
50 | BASE BP\r | |
51 | STARTF\r | |
52 | TRAP4 SET8 /GO TO 8 MODE STUFF.\r | |
53 | JA RET /DONE. ON IDLE QUEUE.\r | |
54 | \r | |
55 | SET8, 0\r | |
56 | /\r | |
57 | / Horrible hackery. This sets up the FRTS direct access table\r | |
58 | / to allow us to open the ADVENT.DA file without having to\r | |
59 | / rebuild it each time. Open it using USR, and this lets us\r | |
60 | / go use it later. (DEFINE FILE always creates a new one.)\r | |
61 | TAD DATABL\r | |
62 | DCAZ X4\r | |
63 | SCDF, CDF 0\r | |
64 | TAD DATHAK\r | |
65 | DCA% X4\r | |
66 | TAD DATHAK+1\r | |
67 | DCA% X4\r | |
68 | TAD DATHAK+2\r | |
69 | DCA% X4\r | |
70 | TAD CDFIDL\r | |
71 | SZA CLA\r | |
72 | JMP SFIELD /ALREADY DONE\r | |
73 | TAD IDLAD /FIELD OF IDLE ROUTINE\r | |
74 | JMS MKCDF\r | |
75 | DCA CDFIDL\r | |
76 | TAD IDLAD+1 /ADDRESS OF #IDLE\r | |
77 | DCAZ X4\r | |
78 | CDFIDL, 0 /GETS CDF\r | |
79 | TAD SKPINS /SKP INSTRUCTION\r | |
80 | DCAZ% X4 /STORE AT #IDLE\r | |
81 | TAD JOB+1 /ADDRESS OF IDLE ROUTINE\r | |
82 | DCAZ% X4 /STORE AT #IDLE+1\r | |
83 | TAD JOB\r | |
84 | JMS MKCDF\r | |
85 | IAC / CDF -> CIF CDF\r | |
86 | DCAZ% X4 /STORE AT #IDLE+2\r | |
87 | SFIELD, CIF CDF\r | |
88 | JMP% SET8\r | |
89 | \r | |
90 | /\r | |
91 | / Blinky lights\r | |
92 | /\r | |
93 | SKPINS,\r | |
94 | DOIT, SKP / Entry point, one-time use constant\r | |
95 | TAD ROTWRD /GET WORD TO DISPLAY\r | |
96 | STALL, ISZ COUNT\r | |
97 | JMP STALL\r | |
98 | ISZ COUNT2\r | |
99 | JMP STALL\r | |
100 | FLOP, RAL /Shift over\r | |
101 | DCA ROTWRD /Save it\r | |
102 | TAD RESET /Reset outer counter\r | |
103 | DCA COUNT2\r | |
104 | SNL\r | |
105 | JMP DONE\r | |
106 | TAD ROTWRD\r | |
107 | FLIP, RAR /Rotate back\r | |
108 | DCA ROTWRD\r | |
109 | TAD FLOP\r | |
110 | DCA COUNT /Save old rotate\r | |
111 | TAD FLIP /And flip 'em around\r | |
112 | DCA FLOP\r | |
113 | TAD COUNT\r | |
114 | DCA FLIP\r | |
115 | DCA COUNT\r | |
116 | DONE, TAD SEEDPT\r | |
117 | JMS MKCDF\r | |
118 | DCA .+1\r | |
119 | 0\r | |
120 | TAD SEEDPT+1\r | |
121 | DCA EXP\r | |
122 | CLL IAC\r | |
123 | TAD EXP\r | |
124 | DCA POINT\r | |
125 | TAD% POINT\r | |
126 | TAD K0100\r | |
127 | SPA\r | |
128 | JMP OVRFLO\r | |
129 | DCA% POINT\r | |
130 | JMP DOIT+1\r | |
131 | \r | |
132 | OVRFLO, CLA CLL\r | |
133 | DCA% POINT\r | |
134 | TAD% EXP\r | |
135 | IAC\r | |
136 | AND K0003\r | |
137 | DCA% EXP\r | |
138 | JMP DOIT+1\r | |
139 | / Change field number into CDF instruction\r | |
140 | MKCDF, 0\r | |
141 | CLL RTL\r | |
142 | RAL /INTO BITS 6-8\r | |
143 | TAD SCDF /CDF TO #IDLE\r | |
144 | JMP% MKCDF\r | |
145 | \r | |
146 | END\r |