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