adventure: Initial commit
[pdp8.git] / sw / adventure / SEED.RA
diff --git a/sw/adventure/SEED.RA b/sw/adventure/SEED.RA
new file mode 100644 (file)
index 0000000..8810434
--- /dev/null
@@ -0,0 +1,146 @@
+       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
+       FLDA    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