jurjen@cwi.nl (Jurjen NE Bos) (08/20/90)
(You thought that only the HP48 had TETRIS?) TETRIS for the HP28S, Version 2BB. ------------------------------------------------------------------------------- This is a translation of an article, published by STORC. STORC (Stichting Ter Ondersteuning van RPL Calculators) is the Dutch support-group for the HP28S, HP48SX and HP28C. STORC publishes a (dutch) magazine, called "STORC Nieuwsbrief", 10 times a year. Our address: STORC p.a. Christ van Willegen Dordognelaan 45 5627 HB Eindhoven The Netherlands ------------------------------------------------------------------------------- An adapted version of Tetris, only for the HP28S, Version 2BB. Written by Dirk De Bruycker Kattebulkdreef 8 9880 Aalter Belgium Make sure to type the SYSEVAL addresses correct! (Use CHK for checksums) First, type all programs in the same subdirectory, then, type the following: ............................................................ "" 1 100 START " " + NEXT 'BLANK' STO " " 'S2' STO [ (1,0) (0,-1) (-1,0) (0,1) ] 'AR' STO << CLLCD 8 32 FOR I 54 I 55 I 76 I 77 I\ pix pix pix pix NEXT LCD-> 'IBE' STO >> EVAL (4,2) 'T' STO -1 'MAXIM' STO << 1 7 FOR NR 1 4 FOR RI CLLCD BL NR GET AR RI GET 2 * * ARRY-> DROP 1 4 START T + C->R p4z NEXT # 1B362h SYSEVAL 3 12 SUB NEXT NEXT 28 ->LIST DUP 20 GET 18 SWAP PUT 'STAND' STO >> EVAL 'T' PURGE { TETRIS } ORDER ............................................................ Now, you are ready to go. Just type TETRIS. Manual: It does not exactly behave like a Tetris on a computer: On the display, you will see a horizontal line. This is the maximum height. On this line, the new figures will come. You kan use the key [7] to go left, [9] to go right, and [8] to turn. Next to the field is a scroll-bar. The higher your score, the shorter this scroll-bar will get. When the bar reaches the top, the figure will drop. You get points, just like the "real" Tetris, by having the dropped figures fill a horizontal row. When the dropped figures reach the horizontal line, the game is over. Press key [.] to see you score. Loads of fun! One final remark: The program displays its messages in dutch :-) Your first lesson in dutch: einde = end pauze = pause plaats = place proficiat = congratulations ptn. = pnts. punten = points u behaalde = you reached ............................................................ 'TETRIS' [9D12] << IBE ->LCD ini.ar DO plaats BLANK ->LCD z.hoogte elim UNTIL 'RAA' 12 GET END "Einde..." 1 DISP DO UNTIL KEY << "." SAME >> << 0 >> IFTE END CLLCD " U behaalde" " " PUNT ->STR " punten." + + 4 DISP 2 MAXIM PUNT < << PUNT 'MAXIM' STO "Proficiat. nr 1.." 1 DISP >> IFT >> 'clln' [E1A2] << 8 32 TIME - FOR W 40 W 41 W # C1DDh SYSEVAL # 1ADFEh SYSEVAL # C1DDh SYSEVAL # 1ADFEh SYSEVAL NEXT 32 TIME - 31 FOR W 40 W 41 W # C1DDh SYSEVAL # 1ADF2h SYSEVAL # C1DDh SYSEVAL # 1ADF2h SYSEVAL NEXT >> 'z.hoogte' [E6B7] << { 4 } X 54 - 2 / DUP 'XN' STO 0 R->C CON BL NR 1 + GET AR RI GET * CONJ DUP 'NAR' STO + ARRY-> DROP 1 4 START C->R KHO ROT GET SWAP - 1 + 4 ROLL NEXT MAX MAX MAX DUP 2 * 30 SWAP - PT2S XN SWAP R->C { 4 } SWAP CON NAR + ARRY-> DROP 1 4 START -> PT << 'RAA' PT IM RAA OVER GET 1 + PUT KHO PT RE GET PT IM < << 'KHO' PT C->R PUT >> IFT 'MATR' PT C->R SWAP 1 - 14 * + 1 PUT >> NEXT >> 'plaats' [2EF4] << 1 'RI' STO RAND 7 * FLOOR 'NR' STO 32 'K' STO 64 'X' STO ZET clln DO KEY << DUP "7" SAME << links >> IFT DUP "9" SAME << rechts >> IFT DUP "8" SAME << draai >> IFT "S" SAME << # 18E58h SYSEVAL >> IFT >> << -1 'K' STO+ 40 K 41 K pix pix >> IFTE UNTIL K 31 TIME - == END >> 'draai' [A712] << (54,76) EXT 4 NR * RI 4 MOD 1 + DUP 'NRI' STO + GET - DUP RE X < SWAP IM X > AND << NRI 'RI' STO ZET >> IFT >> 'PT2S' [AE3A] << X SWAP R->C -> T << BL NR 1 + GET AR RI GET 2 * * ARRY-> DROP 1 4 START T + C->R p4z NEXT >> >> 'elim' [EE1B] << WHILE RAA RNRM 10 SAME REPEAT -1 'TIME' STO+ TIME 5 < << 10 'TIME' STO >> IFT 110 KHO CNRM - 'PUNT' STO+ "Pauze.." PUNT ->STR + " ptn..." + 1 DISP RAA ARRY-> LIST-> DROP ->LIST 10 POS -> B << B 12 FOR W 'RAA' W RAA W 1 + GET PUT NEXT 1 10 FOR W B KHO W GET FOR R MATR W 1 - 14 * R + GET DUP MATR W 1 - 14 * R + 1 + GET - << W 2 * 54 + SWAP 30 R 2 * - SWAP << p4w 0 >> << p4z 1 >> IFTE 'MATR' W 1 - 14 * R + ROT PUT >> << DROP >> IFTE NEXT WHILE KHO W GET << MATR W 1 - 14 * KHO W GET + GET NOT >> << 0 >> IFTE REPEAT 'KHO' W KHO W GET 1 - PUT END NEXT >> END >> 'pix' [4A5] << # C1DDh SYSEVAL # 1ADFEh SYSEVAL >> 'BL' [C816] { [ (-1,0) (0,0) (1,0) (1,1) ] [ (-1,0) (0,0) (0,1) (1,1) ] [ (1,0) (0,0) (0,1) (-1,1) ] [ (1,0) (0,0) (0,1) (-1,0) ] [ (-1,0) (0,0) (1,0) (2,0) ] [ (0,0) (1,0) (0,1) (1,1) ] [ (-1,1) (-1,0) (0,0) (1,0) ] } 'EXT' [6B8A] { (-2,2) (0,2) (-2,2) (-2,0) (-2,2) (0,2) (-2,2) (-2,0) (-2,2) (0,2) (-2,2) (-2,0) (-2,2) (0,2) (-2,2) (-2,0) (-2,4) (0,0) (-4,2) (0,0) (0,2) (0,2) (-2,0) (-2,0) (-2,2) (0,2) (-2,2) (-2,0) } 'links' [3D3D] << 56 EXT NR 4 * RI + GET RE - X < << # 1B362h SYSEVAL -2 'X' STO+ 5 137 SUB ->LCD >> IFT >> 'rechts' [BDDE] << 74 EXT NR 4 * RI + GET IM - X > << S2 # 1B362h SYSEVAL # 25174h SYSEVAL 2 'X' STO+ + ->LCD >> IFT >> 'ZET' [251C] << BLANK 5 X SUB STAND NR 4 * RI + GET + BLANK ->LCD ->LCD >> 'ini.ar' [CF63] << 24 'TIME' STO 0 'PUNT' STO { 14 } 0 CON 'RAA' STO { 10 } 0 CON 'KHO' STO { 140 } 0 CON 'MATR' STO >> 'p4z' [75C6] << OVER OVER 1 + OVER 1 + OVER OVER OVER 1 - 1 4 START # C1DDh SYSEVAL # 1ADFEh SYSEVAL NEXT >> 'p4w' [767E] << OVER OVER 1 + OVER 1 + OVER OVER OVER 1 - 1 4 START # C1DDh SYSEVAL # 1ADF2h SYSEVAL NEXT >> -- | | "Never imagine yourself not to be otherwise than what | | Jurjen N.E. Bos | it might appear to others that what you were or might | | | have been was not otherwise than what you had been | | jurjen@cwi.nl | would have appeared to them to be otherwise." |