--- /dev/null
+ FIELD1 SETIDL\r
+/IDLE RANDOM NUMBER GENERATOR\r
+ EXTERN #IDLE\r
+\r
+ JA #RET\r
+ TEXT +SETIDL+\r
+SXR, SETX XR\r
+ SETB BP\r
+BP, F 0.0\r
+XR, ORG .+3\r
+EXP, 0\r
+IDLAD, ADDR #IDLE-1 / Pointer to idle routine in FRTS\r
+POINT,\r
+JOB, ADDR DOIT / Address of routine to run\r
+ ORG XR+10\r
+K0100, 100\r
+K0003, 3\r
+ROTWRD, 0017\r
+ #LBL=.\r
+ COMMON NUMCOM\r
+NUMBER, ORG .+3\r
+\r
+ COMMON TXTCOM\r
+RTEXT, ORG .+1147\r
+LINES, ORG .+0044\r
+ASCVAR, ORG .+0003\r
+TXTLOC, ORG .+0003\r
+DATA, ORG .+0352\r
+ ORG #LBL\r
+SEEDPT, ADDR NUMBER\r
+ 0\r
+DATHAK, 7777\r
+ ADDR ASCVAR\r
+DATABL, 1763-1 / Address of Direct Access table entry 8 in FRTS\r
+COUNT, 0 / Idle loop count\r
+COUNT2, 7774 / Outer counter\r
+RESET, 7774 / Outer counter value\r
+X4=14 / Autoindex reg\r
+ ORG 10*3+BP\r
+ FNOP\r
+ JA SXR\r
+ 0\r
+RET, JA .\r
+\r
+ BASE 0\r
+#RET, STARTD\r
+ FLDA 10*3\r
+ FSTA RET\r
+ SETB BP\r
+ BASE BP\r
+ STARTF\r
+ TRAP4 SET8 /GO TO 8 MODE STUFF.\r
+ JA RET /DONE. ON IDLE QUEUE.\r
+\r
+SET8, 0\r
+/\r
+/ Horrible hackery. This sets up the FRTS direct access table\r
+/ to allow us to open the ADVENT.DA file without having to\r
+/ rebuild it each time. Open it using USR, and this lets us\r
+/ go use it later. (DEFINE FILE always creates a new one.)\r
+ TAD DATABL\r
+ DCAZ X4\r
+SCDF, CDF 0\r
+ TAD DATHAK\r
+ DCA% X4\r
+ TAD DATHAK+1\r
+ DCA% X4\r
+ TAD DATHAK+2\r
+ DCA% X4\r
+ TAD CDFIDL\r
+ SZA CLA\r
+ JMP SFIELD /ALREADY DONE\r
+ TAD IDLAD /FIELD OF IDLE ROUTINE\r
+ JMS MKCDF\r
+ DCA CDFIDL\r
+ TAD IDLAD+1 /ADDRESS OF #IDLE\r
+ DCAZ X4\r
+CDFIDL, 0 /GETS CDF\r
+ TAD SKPINS /SKP INSTRUCTION\r
+ DCAZ% X4 /STORE AT #IDLE\r
+ TAD JOB+1 /ADDRESS OF IDLE ROUTINE\r
+ DCAZ% X4 /STORE AT #IDLE+1\r
+ TAD JOB\r
+ JMS MKCDF\r
+ IAC / CDF -> CIF CDF\r
+ DCAZ% X4 /STORE AT #IDLE+2\r
+SFIELD, CIF CDF\r
+ JMP% SET8\r
+\r
+/\r
+/ Blinky lights\r
+/\r
+SKPINS,\r
+DOIT, SKP / Entry point, one-time use constant\r
+ TAD ROTWRD /GET WORD TO DISPLAY\r
+STALL, ISZ COUNT\r
+ JMP STALL\r
+ ISZ COUNT2\r
+ JMP STALL\r
+FLOP, RAL /Shift over\r
+ DCA ROTWRD /Save it\r
+ TAD RESET /Reset outer counter\r
+ DCA COUNT2\r
+ SNL\r
+ JMP DONE\r
+ TAD ROTWRD\r
+FLIP, RAR /Rotate back\r
+ DCA ROTWRD\r
+ TAD FLOP\r
+ DCA COUNT /Save old rotate\r
+ TAD FLIP /And flip 'em around\r
+ DCA FLOP\r
+ TAD COUNT\r
+ DCA FLIP\r
+ DCA COUNT\r
+DONE, TAD SEEDPT\r
+ JMS MKCDF\r
+ DCA .+1\r
+ 0\r
+ TAD SEEDPT+1\r
+ DCA EXP\r
+ CLL IAC\r
+ TAD EXP\r
+ DCA POINT\r
+ TAD% POINT\r
+ TAD K0100\r
+ SPA\r
+ JMP OVRFLO\r
+ DCA% POINT\r
+ JMP DOIT+1\r
+\r
+OVRFLO, CLA CLL\r
+ DCA% POINT\r
+ TAD% EXP\r
+ IAC\r
+ AND K0003\r
+ DCA% EXP\r
+ JMP DOIT+1\r
+/ Change field number into CDF instruction\r
+MKCDF, 0\r
+ CLL RTL\r
+ RAL /INTO BITS 6-8\r
+ TAD SCDF /CDF TO #IDLE\r
+ JMP% MKCDF\r
+\r
+ END\r