%%HP: T(3)A(D)F(.); @ TENK, Ten Thousand game @ by "Scotty" Thompson DIR \^oRUN.1 \<< RUN \>> \^oRUN.2 \<< RUN \>> \^oRUN.3 \<< RUN \>> \^oRUN.4 \<< RUN \>> \^oRUN.5 \<< RUN \>> \^oRUN.6 \<< RUN \>> POINT \<< 0 1 \-> I DR \<< MEM DROP IF DIE.FLG { 2 2 2 2 2 } \=/ THEN 2 CF DO DIE.FLG I 1 + GET IF 2 \=/ THEN PICT I 23 * 10 + R\->B # 32d 2 \->LIST PNTR GXOR 2048 .0125 BEEP 0 0 DO DROP DROP 0 WAIT IP CASE DUP 34 == THEN 1 I DUP 1 - DUP IF 0 < THEN DROP 4 END 'I' STO -1 'DR' STO END DUP 36 == THEN 1 I DUP 1 + DUP IF 4 > THEN DROP 0 END 'I' STO 1 'DR' STO END DUP 25 == THEN 0 0 PICT I 23 * 10 + R\->B # 23d 2 \->LIST HOLD REPL 440 .025 BEEP 880 .05 BEEP DIE.FLG I 1 + 1 PUT 'DIE.FLG' STO END DUP 35 == THEN 0 0 PICT I 23 * 10 + R\->B # 23d 2 \->LIST ROL REPL 880 .025 BEEP 440 .05 BEEP DIE.FLG I 1 + 0 PUT 'DIE.FLG' STO END DUP 51 == THEN 1 I 2 SF END DUP 55 == THEN 2048 .0125 BEEP 1 I CLLCD TEXT " Do You Want to\010\010 Quit? \<>" 3 DISP 0 DO DROP 0 WAIT IP UNTIL DUP DUP 52 == SWAP 32 == SWAP OR END 880 .1 BEEP IF 52 == THEN CLLCD 63 SF 64 SF 1 SF 2 SF ELSE { # 0d # 0d } PVIEW CLLCD DROP2 0 0 END END 0 0 END SWAP UNTIL END SWAP DROP 23 * 10 + R\->B # 32d 2 \->LIST PICT SWAP PNTR GXOR ELSE I DR + DUP IF 0 < THEN DROP 4 ELSE DUP IF 4 > THEN DROP 0 END END 'I' STO END UNTIL 2 FS?C END END \>> \>> GAME \<< 64 CF DO MEM DROP { 0 0 0 0 0 } 'DIE.FLG' { 0 0 0 0 0 } 'DIE.ROL' STO STO 0 'HND.CNT' STO 0 'TMP.CNT' STO 0 4 FOR I PICT I 23 * 12 + R\->B # 8d 2 \->LIST # 11d # 11d BLANK REPL PICT I 23 * 10 + R\->B # 23d 2 \->LIST ROL REPL NEXT PT.PLRUP { # 0d # 0d } PVIEW STAT 63 CF DO ROL.DIE IF 1 FS?C THEN IF DIE.CNT DUP 1 GET SWAP 5 GET OR DIE.CNT DUP { 1 1 1 1 1 0 } == SWAP { 0 1 1 1 1 1 } == OR OR 0 1 6 FOR J DIE.CNT J GET 3 \>= + NEXT OR THEN 1 CF DO POINT IF 64 FC? THEN THINK { 0 0 0 0 0 0 } 'TD.CNT' STO 1 5 FOR J IF DIE.FLG J GET 1 == THEN DIE.ROL J GET DUP TD.CNT DUP ROT GET 1 + ROT SWAP PUT 'TD.CNT' STO END NEXT IF TD.CNT DUP 1 GET SWAP 5 GET OR TD.CNT DUP { 1 1 1 1 1 0 } == SWAP { 0 1 1 1 1 1 } == OR 0 1 6 FOR K TD.CNT K GET 3 \>= + NEXT SWAP DUP 0 2 6 FOR K K 5 \=/ TD.CNT K GET DUP 0 > SWAP 3 < AND AND + NEXT NOT OR 4 ROLLD OR OR AND THEN 1 SF 0 1 6 FOR K TD.CNT K GET DUP IF 3 \>= THEN IF K 1 == THEN 2 - 1000 * + ELSE 2 - 100 * K * + END ELSE IF K 1 == THEN 100 * + ELSE IF K 5 == THEN 50 * + ELSE DROP END END END NEXT IF TD.CNT DUP { 1 1 1 1 1 0 } == SWAP { 0 1 1 1 1 1 } == OR THEN 750 + END 'HND.CNT' STO ELSE INVALID END ELSE 1 SF END UNTIL 1 FS?C END IF 64 FC? THEN 1 5 FOR I DIE.FLG I GET IF 1 == THEN PICT I 1 - 23 * 10 + R\->B # 23d 2 \->LIST WAT REPL DIE.FLG I 2 PUT 'DIE.FLG' STO END NEXT TMP.CNT HND.CNT + 'TMP.CNT' STO STAT ASK END ELSE 63 SF LOSE END PICT { # 0d # 33d } # 131d # 7d BLANK REPL IF 63 FS? 64 FC? AND THEN PLRUP 1 + DUP IF PLYRS > THEN DROP 1 END 'PLRUP' STO END ELSE 0 4 FOR I PICT I 23 * 10 + R\->B # 23d 2 \->LIST ROL REPL NEXT { 0 0 0 0 0 } 'DIE.FLG' STO END UNTIL 63 FS?C END IF 64 FC? THEN 0 1 PLYRS FOR I TABLE I GET 10000 \>= + NEXT IF THEN 64 SF END END UNTIL 64 FS?C END GMEOVR \>> RUN.PRG \<< RUN \>> AGAIN \<< CLLCD TEXT " Do you want to\010\010 Play again? \<>" 3 DISP 0 DO DROP 0 WAIT IP DUP DUP UNTIL 52 == SWAP 32 == OR END 880 .1 BEEP IF 32 == THEN 55 SF END CLLCD \>> GMEOVR \<< CLLCD TEXT ERASE GOVR PICT STO { # 0d # 0d } PVIEW DO 0 WAIT UNTIL IP 51 == END 880 .1 BEEP AGAIN \>> GOVR GROB 131 64 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70F000000000000000000000000000000870700EFFF00FFF708FFF30CFFF10EFFF0070300FFFF08FFF70CFFF30EFFF10FFFF0060308FFFF0CFFF70EFFF30FFFF18FFFF006030CFFFF0EFFF70FFFF38FFFF1CFFFF0060304000F0200870100C38000E14000F0060304000F02838701C1C380E0E14070F0060304070F02C78701E3C380F1E148F0F0060304870F026C870136C38813E14C81F0060304060F026C870136C38813E14C81F0060304060F026C870136C38813E14C81F0060304060F026C870136C38813E14C81F0060304060F026C870136C38813E14C81F0060304060F026C870136C38813E14C81F0060304060F026C870136C38813E14C81F00603048F1F02C78701E3C380F1E148F0F0060304CF3702838331C1C180E0E040707006030400030200813100C080006040003006030CFFF10EFFF02FFF708FFF30CFFF1006030000000000001000000000000000000603000000000000000000000000000000060300000000000000000000000000000006030000000000000000000000000000000603000000000000000000000000000000060300000000000000000000000000000006030000000000000000000000000000000603000000000000000000000000000000060300000000000000000000000000000006030000000000000000000000000000000603000000000000000000000000000000060300830830440C70000830440C70C300060300440440C60400000440440400440006030040044045040000044044040044000603004004404504000004404404004400060300400C70450C30000440440C30C300060300460440440400000440820400410006030044044044040000044082040042000603004404404404000004400104004400060300870440440C70000830010C7044000603000000000000000000000000000000060300000000000000000000000000000006030000000000000000000000000000000603000000000000000000000000000000060300000000000000000000000000000006030000000000000000000000000000000603000000000000000000000000000000060300000000000000000000000000000006030000000000000000000000000000000603000000000E6ECC0AB47731000000000603000000000AA2220A852151000000000603000000000E6E4408B727300000000006030000000002A288088621500000000006030000000002AE6608B42750000000000607000000000000000000000000000000070F000000000000000000000000000000870F100000000000000000000000000000C70F300000000000000000000000000000E70F700000000000000000000000000000F70FF00000000000000000000000000008F70FF1000000000000000000000000000CF70FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70 CST { } WIN \<< MEM DROP PICT { # 0d # 33d } # 131d # 7d BLANK REPL PICT "YOU WON " WL.LST TMP.CNT 400 / IP 1 + DUP IF 6 > THEN DROP 6 END GET + " " + TMP.CNT \->STR + 1 \->GROB GNEG DUP SIZE DROP # 131d SWAP - 2 / # 33d 2 \->LIST SWAP REPL 1 9 FOR I I 100 * 250 + .1 BEEP NEXT 2 WAIT \>> LOSE \<< MEM DROP PICT "YOU LOST " WL.LST TMP.CNT 400 / IP 1 + DUP IF 6 > THEN DROP 6 END GET + " " + TMP.CNT \->STR + 1 \->GROB GNEG DUP SIZE DROP # 131d SWAP - 2 / # 33d 2 \->LIST SWAP REPL 9 1 FOR I I 100 * 250 + .1 BEEP -1 STEP 2 WAIT \>> WL.LST { "'ONLY'" "A 'GOOD'" "A 'COOL'" "A 'BIG'" "A 'FANTASTIC'" "AN 'INCREDIBLE'" } RLNG GROB 29 7 FFFFFFF191DD5B1155DD5AE195DD582155DD596151115B11FFFFFFF1 INVLD GROB 26 7 FFFFFF305BADE2305AAAEA2058A8EA2059DAEA205BDA8230FFFFFF30 ASK \<< IF TABLE PLRUP GET 500 \>= TMP.CNT 500 \>= OR THEN PICT ASKTXT DUP SIZE DROP # 131d SWAP - 2 / # 33d 2 \->LIST SWAP REPL 2048 .05 BEEP 0 DO DROP 0 WAIT IP UNTIL DUP DUP 85 == SWAP 95 == OR END IF 85 == THEN TABLE DUP PLRUP GET TMP.CNT + PLRUP SWAP PUT 'TABLE' STO 63 SF WIN END END \>> ASKTXT GROB 93 7 FFFFFFFFFFFFFFFFFFFFFFF1D7F11F91DDFFEBF88F98D691D6FB5F55DDFFEBFDAFEDA4517CFB5F95DDFF3EFDAFDD8051FEFB5F55DDBFFFFDAFBDA251FFFB1F5111DFFFFD8FCDA691FFFFFFFFFFFFFFFFFFFFFFF1 THINK \<< PICT THNKG DUP SIZE DROP # 131d SWAP - 2 / # 33d 2 \->LIST SWAP REPL 555 .055 BEEP \>> THNKG GROB 33 7 FFFFFFFF10155B65B110B55AA5AE10B158C58210B559A59610B55B65B110FFFFFFFF10 INVALID \<< 0 4 FOR L IF DIE.FLG L 1 + GET 1 == THEN PICT L 23 * 10 + R\->B # 23d 2 \->LIST ROL REPL DIE.FLG L 1 + 0 PUT 'DIE.FLG' STO END NEXT PICT { # 0d # 33d } # 131d # 7d BLANK REPL PICT INVLD DUP SIZE DROP # 131d SWAP - 2 / # 33d 2 \->LIST SWAP REPL 1 5 START 1024 .1 BEEP .05 WAIT NEXT 2 WAIT PICT { # 0d # 33d } # 131d # 7d BLANK REPL \>> TD.CNT { 2 0 0 0 0 0 } DIE.ROL { 1 6 2 6 3 } PNTR GROB 18 9 0030000870000CF0000EF1000FF3008FF700CFFF00EFFF10FFFF30 ROL.DIE \<< MEM DROP PICT RLNG DUP SIZE DROP # 131d SWAP - 2 / # 33d 2 \->LIST SWAP REPL 1 CF { 0 0 0 0 0 0 } 'DIE.CNT' STO 0 4 FOR I DIE.FLG I 1 + GET IF NOT THEN 1 SF PICT I 23 * 12 + R\->B # 8d 2 \->LIST TICKS B\->R 666666 RAND * MOD RAND * DUP RDZ \pi 987654321 RAND * * DUP DUP RDZ 123456789 RAND * * RDZ RAND * + RDZ "F." 6 RAND * IP 1 + DUP DIE.ROL I 1 + ROT PUT 'DIE.ROL' STO DUP DUP DIE.CNT DUP ROT GET 1 + ROT SWAP PUT 'DIE.CNT' STO \->STR + OBJ\-> REPL 1024 .025 BEEP END NEXT PICT { # 0d # 33d } # 131d # 7d BLANK REPL \>> GNEG \<< DUP SIZE 1 + SWAP 1 + SWAP BLANK { # 1d # 1d } ROT REPL NEG \>> STAT \<< PICT { # 2d # 45d } "ROLL:" HND.CNT PAD.NUM + "-HAND:" TMP.CNT PAD.NUM + + "-TABLE:" TABLE PLRUP GET PAD.NUM + + 1 \->GROB REPL \>> PAD.NUM \<< \->STR DUP SIZE DUP IF 5 \=/ THEN 1 5 ROT - START "_" SWAP + NEXT ELSE DROP END \>> PT.PLRUP \<< PICT { # 0d # 57d } # 131d # 7d BLANK REPL PICT NAMES PLRUP GET ", YOU'RE UP" + 1 \->GROB GNEG DUP SIZE DROP # 131d SWAP - 2 / # 57d 2 \->LIST SWAP GOR \>> TMP.CNT 0 HND.CNT 0 DIE.CNT { 1 1 1 0 0 2 } DIE.FLG { 0 0 0 0 0 } PLRUP 1 TABLE { 0 } INIT \<< MEM DROP CLLCD " Initialization\010\010 in\010\010 Progress" 2 DISP { } 1 PLYRS START 0 + NEXT 'TABLE' STO 1 'PLRUP' STO 0 4 FOR I PICT I 23 * 10 + R\->B # 3d 2 \->LIST F.BOX GOR PICT I 23 * 10 + R\->B # 23d 2 \->LIST ROL GOR NEXT { # 0d # 43d } { # 131d # 43d } LINE { # 0d # 51d } { # 131d # 51d } LINE GAME \>> NAMES { "PLAYER 1" } PLYRS 1 TITLE GROB 131 64 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70F000000000000000000000000000000870700EFFF00FFF708FFF30CFFF10EFFF0070300FFFF08FFF70CFFF30EFFF10FFFF0060308FFFF0CFFF70EFFF30FFFF18FFFF006030CFFFF0EFFF70FFFF38FFFF1CFFFF0060304000F0200870100C38000E14000F0060304000F02838701C1C380E0E14070F0060304070F02C78701E3C380F1E148F0F0060304870F026C870136C38813E14C81F0060304060F026C870136C38813E14C81F0060304060F026C870136C38813E14C81F0060304060F026C870136C38813E14C81F0060304060F026C870136C38813E14C81F0060304060F026C870136C38813E14C81F0060304060F026C870136C38813E14C81F00603048F1F02C78701E3C380F1E148F0F0060304CF3702838331C1C180E0E040707006030400030200813100C080006040003006030CFFF10EFFF02FFF708FFF30CFFF100603000000000000100000000000000000060300000000000000000000000000000006030000000000000000000000000000000603000000000000000000000000000000060300000000000000000000000000000006030000000000000010000000000000000603000000000000001000000000000000060300000000000000F440000000000000060300000000000000154000000000000006030000000000000015400000000000000603000000000000001970000000000000060300000000000000F04000000000000006030000000000000008300000000000000603000000000000000000000000000000060300000000000000000000000000000006030000000000000000000000000000000603000000000000000000000000000000060300000000000000000000000000000006030000C1000140008F20000000000000060300002200014000022000000000000006030000200001400002200000000000000603000020FC93E88002E17697C37E100006030000C902214880022A8AA828822000060300000A02214880022A8AA8C9822000060300000A022140F0022A8AA70A822000060300002A02254180022A82A00A82200006030000C1FC128080022272A0E1722000060300000000000070000000800000000006030000000000000000000000000000000603000000000000000000000000000000060300000000000000000000000000000006030000000000000000000000000000000603000000000000000000000000000000060300000000000E00483E8300000000000607000000000001106441540000000000070F000000000007104441560000000000870F10000000000310487E550000000000C70F300000000007104040D40000000000E70F700000000001104028440000000000F70FF0000000000E00E816830000000008F70FF1000000000000000000000000000CF70FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70 RUN \<< STD HEX 55 CF DO MEM DROP CLLCD { } MENU PICT PURGE TITLE PICT STO { # 0d # 0d } PVIEW DO UNTIL KEY END DROP 880 .1 BEEP TEXT ERASE 1 CF WHILE 1 FC?C REPEAT "How Many Players?" { "1" V \Ga { -1 1 } } INPUT 880 .1 BEEP DUP IF "" == THEN 1 SF DROP 0 ELSE IFERR OBJ\-> THEN IFERR DROP THEN END "" END IFERR DUP THEN "" END IF TYPE THEN "INVALID..." 3 DISP 880 1 BEEP 1 WAIT DROP ELSE DUP DUP IF 1 \>= SWAP 10 \<= AND THEN 1 SF 1 ELSE "MUST BE \>= 1 & \<= 10" 3 DISP 880 1 BEEP 1 WAIT DROP END END END END IF THEN 'PLYRS' STO { } 1 PLYRS FOR PLY "Player " PLY \->STR + "'s Name?" + { "" V \Ga } INPUT 880 .1 BEEP DUP IF "" == THEN DROP "PLAYER " PLY \->STR + END 1 15 SUB + NEXT 'NAMES' STO INIT END UNTIL 55 FS?C END CLLCD TEXT ERASE MEM DROP 2 MENU \>> WAT GROB 17 7 FFFF10DD6110D55B10554B10945B10D55B10FFFF10 ROL GROB 17 7 0000006E2200AA22006A2200AA2200AEEE00000000 HOLD GROB 17 7 FFFF1051D91055D51015D51055D510511910FFFF10 F.6 GROB 11 11 E830E830E8300000E830E830E8300000E830E830E830 F.3 GROB 11 11 70007000700000000700070007000000007000700070 F.5 GROB 11 11 70707070707000000700070007000000707070707070 F.4 GROB 11 11 70707070707000000000000000000000707070707070 F.2 GROB 11 11 70007000700000000000000000000000007000700070 F.1 GROB 11 11 00000000000000000700070007000000000000000000 PPAR { (-6.5,-3.1) (6.5,3.2) X 0 (0,0) FUNCTION Y } F.BOX GROB 18 18 8FFF30CFFF30EFFF30FFFF30100C30100C30100C30100C30100C30100C30100C30100C30100C30100C30100C30100C10100C00FFF700 END