Pentzy is a computerized implementation of Yahtzee-style dice scoring for up to six players, with optional computer-controlled players for any seat. The game manages three rounds of dice rolling per turn across twelve rounds, tracking seven scoring categories: ones through sixes, Quadzy (four of a kind), Full House, Straight, High, Low, and Pentzy (five of a kind). User-defined graphics are initialized via a subroutine at line 5400, which uses PEEK of system variables 23637–23638 to locate the UDG table and then POKEs the UDG address into 23675–23676, effectively remapping the UDG base pointer. The computer AI (lines 2440–3930) uses a sorted copy of the current dice values in array v() to evaluate which dice to re-roll, applying a priority-ordered decision tree spanning over 1,400 lines of BASIC to maximize scoring across all categories. A bubble-sort routine at lines 1530–1540 and 2470–2510 keeps dice values ordered for easier combination detection.
Program Structure
The program is organized into several broad regions:
- Lines 0–10: REM header and UDG initialization subroutine call (GO SUB to line 5400).
- Lines 20–210: Setup — title screen, player count input, and per-player name/computer-control configuration.
- Lines 220–270: Array dimensioning for scores (
a$,w$,q$,f$,t$,h$,l$,c$), totals (T,n,m), dice (d,v), and category counts (y). - Lines 280–1520: Main game loop — two nested loops over 12 rounds (
e) andpplayers (z). Each turn covers up to three dice rolls, human input or AI selection of dice to re-roll, and score placement. - Lines 1530–1690: Utility subroutines: bubble-sort pass (1530), dice re-roll validation and animation (1550–1690).
- Lines 1700–1770: Numeric score accumulator and display for the six pip categories.
- Lines 1780–2020: Dice face drawing subroutines using UDG block graphics, one routine per pip value (1, 2, 3, 4, 5, 6), each drawing a 3-row by 4-character die face at position
x. - Lines 2030–2430: Scorecard screen redraw subroutine, reading category labels and current scores from DATA statements.
- Lines 2440–3930: Computer AI decision engine — determines which dice to hold or re-roll.
- Lines 3940–5200: Computer AI scoring subroutine — decides which category to fill after the final roll.
- Lines 5210–5340: Short display-update helper subroutines for each scoring slot.
- Lines 5345: Clears the roll-label display area.
- Lines 5400–5430: UDG initialization — locates and POKEs the UDG base address.
- Lines 5440: UDG bitmap data embedded as a REM statement.
- Lines 5500–5520: LOAD of a separate SCREEN$ file, then SAVE commands for the two-part program.
Scoring Categories
| Key | Name | Condition | Points |
|---|---|---|---|
1–6 | Ones through Sixes | Sum of matching pip values | Variable |
q | Quadzy | Four of a kind | 25 |
f | Full House | 3+2 or 2+3 matching | 25 |
s | Straight | Five consecutive values | 25 |
h | High | Total > 21, higher than Low | Sum of dice |
l | Low | Total > 20, lower than High | Sum of dice |
p | Pentzy | Five of a kind | 30 |
| (auto) | Bonus | Pip total > 62 | 25 |
Array Usage
Score state is held entirely in string arrays, initialized to two spaces (" ") as a sentinel for “not yet scored.” The main pip scores are stored in a$(6*p, 2), indexed as a$(l+g) where l = 6*z-6 is the player offset and g is the die face value. Special categories use separate two-character string arrays per player: w$ (Quadzy), f$ (Full), t$ (Straight), h$ (High), l$ (Low), c$ (Pentzy), and q$ (Bonus). Totals use numeric arrays T(p), n(p) (count of pip categories filled), and m(p) (running pip total).
Dice Rolling and Animation
The rolling animation at lines 1610–1690 iterates 6 + INT(RND*5) times, randomizing selected dice values each frame using d(w) = INT(RND*6+1) and immediately dispatching to the appropriate die-face drawing subroutine at 1750 + d(w)*40 — a computed GO SUB that selects among the six face-drawing routines spaced exactly 40 lines apart (1790, 1830, 1870, 1910, 1950, 1990). A short BEEP with increasing pitch shift (.005+j*.001) accompanies each animation frame.
Computer AI — Dice Selection
The AI (lines 2440–3930) first copies the current d() array to v() and sorts it descending using a bubble sort (lines 2470–2510). The sorted copy v() is used purely for pattern matching; the unsorted d() is used to build the re-roll string d$. A helper at lines 3870–3930 translates logical “which ranked positions to keep” (stored in v$) back into actual die slot indices in d$, clearing d(j)=0 to prevent double-matching. The priority order for the AI’s dice-selection strategy is:
- Pentzy (five of a kind) if not yet scored
- Pip categories (1–6) for five-of-a-kind sets
- Quadzy and Full House detection
- Straight attempts
- High/Low score management
- Three-of-a-kind pip fills
- Two-of-a-kind pip fills
- Fallback zero-scoring of low-value categories
Computer AI — Score Placement
Lines 3940–5200 implement the AI’s scoring decision after all rolls are exhausted. This section mirrors the human scoring validation logic but uses the live d() array directly. Notably, variables n(z) and m(z) track how many pip categories have been filled and their running total respectively, allowing the AI to estimate whether the bonus threshold of 63 is reachable and to decide whether to sacrifice a pip slot or take the bonus early.
Scoreboard Display
The scorecard is redrawn by subroutine 2030, which reads category names and current score strings from DATA statements (lines 2370–2430) using a FOR loop with READ. The RESTORE at line 2280 resets the DATA pointer each time the subroutine is called. Column positions are fixed: pip names and scores appear at columns 0 and 9, special category names at column 11, and their scores at column 25. Dice-placeholder graphics (lines 2300–2360) are only drawn when T(z)=0, i.e., at the very start of a player’s game.
UDG Initialization
The subroutine at line 5400 defines two FN functions — FN h(x) and FN l(x) — for extracting the high and low bytes of a 16-bit address. It then reads the system variable at addresses 23637–23638 (the RAMTOP pointer), adds 6, and POKEs the result into 23675–23676 (the UDG pointer), effectively placing the UDG table immediately above RAMTOP. The actual UDG bitmap data is embedded in the REM statement at line 5440.
Player Sorting (Final Scores)
After all 12 rounds, if there are multiple players, a bubble sort (lines 1340–1400) sorts the T() and z$() arrays together in descending score order. The variable r is used as the shrinking upper bound of the sort, a standard optimized bubble sort technique. The player’s original color index is preserved in column 11 of z$(i) (set at line 190 as STR$(7-i)) so the final leaderboard can redisplay each player’s name in their original PAPER color.
Notable Idioms and Anomalies
SGN PIis used throughout as a constant equal to 1, andPIevaluates to 3 (truncated in array index contexts), serving as literal index values without storing named constants.NOT PIevaluates to 0, used for INK/PAPER color 0 and AT column 0.VAL "d(1)+d(2)+d(3)+d(4)+d(5)"at line 720 computes the dice total via string evaluation — an unusual but valid technique.- The straight detection at line 860 has a logic error: the condition
d(SGN PI)=d(2)+1 AND d(PI)+1=d(2) AND d(4)+1=d(PI) AND d(4)=d(5)+1contains a redundant and partially contradictory check (d(1)=d(2)+1andd(3)+1=d(2)simultaneously required(1)=d(2)+1andd(2)=d(3)+1, which is consistent, but the unsortedd()array means this only works if dice happen to be in descending order). - Lines 583 and 586 are inserted between lines 580 and 590 as utility subroutines, demonstrating the common BASIC technique of using non-round line numbers to insert code between existing round-numbered lines.
- The two-part load system (line 5500 LOADs a separate SCREEN$ file) suggests the game shipped on tape as at least two files: the BASIC program and a title/background screen.
Source Code
0 REM Pentzy \* P.Erentz 1984
10 GO SUB VAL "5400"
20 RANDOMIZE
30 PRINT #0; INK NOT PI; PAPER 7; FLASH 1;" PRESS ANY KEY TO PLAY",:PAUSE NOT PI
40 INK NOT PI:PAPER VAL "7":CLS :PRINT ;" PENTZY BY P.A.ERENTZ"; AT PI* PI, PI;"Number of players? ";
50 IF INKEY$ <>"" THEN GO TO VAL "50"
60 IF INKEY$="" THEN GO TO VAL "60"
70 LET k$= INKEY$:IF k$ <>"1" AND k$ <>"2" AND k$ <>"3" AND k$ <>"4" AND k$ <>"5" AND k$ <>"6" THEN GO TO VAL "70"
80 PRINT k$:LET p= VAL k$:DIM P(p):DIM p$(p,11):DIM z$(p,11)
90 FOR i= SGN PI TO p
100 CLS :PRINT AT 15, NOT PI;" Do you want the Spectrum to "'" play for player ";i;"? ";
110 IF INKEY$ <>"" THEN GO TO VAL "110"
120 IF INKEY$="" THEN GO TO VAL "120"
130 LET k$= INKEY$
140 IF k$ <>"y" AND k$ <>"n" THEN GO TO 130
150 IF k$="y" THEN LET P(i)=1:PRINT "Yes"
160 IF k$="n" THEN PRINT "No"
170 POKE VAL "23658", VAL "8":INPUT " Enter player's name please"'" (10 letters maximum)"; LINE p$(i)
180 POKE VAL "23658", NOT PI
190 LET p$(i,11)= STR$ (7-i)
200 PRINT AT 19, NOT PI;" "
210 NEXT i
220 DIM a$(6*p,2)
230 DIM w$(p,2):DIM q$(p,2):DIM f$(p,2):DIM t$(p,2):DIM h$(p,2):DIM l$(p,2):DIM c$(p,2)
240 LET hi=0:LET lo=hi
250 DIM T(p):DIM n(p):DIM m(p)
260 DIM d(5):DIM v(5)
270 DIM y(6)
280 FOR e=1 TO 12
290 FOR z=1 TO p
300 LET l=6*z-6
310 GO SUB 2030
320 LET d$="12345"
330 PRINT AT 19, NOT PI; INK NOT PI; PAPER 7;"1st"'"ROLL"
350 GO SUB 583
360 GO SUB 1610
370 GO SUB 5345
380 IF P(z)=1 THEN GO SUB 2440:GO TO 440
390 IF P(z)=0 THEN INPUT "2nd throw,which dice?"; LINE d$
400 IF d$="0" THEN GO TO 680
410 FOR i=1 TO LEN d$
420 IF d$(i) <>"1" THEN IF d$(i) <>"2" THEN IF d$(i) <>"3" THEN IF d$(i) <>"4" THEN IF d$(i) <>"5" THEN GO TO 390
430 NEXT i
440 IF d$="0" THEN GO TO 680
450 GO SUB 586
460 LET r=2
470 PRINT AT 19, NOT PI; INK NOT PI; PAPER 7;"2nd"'"ROLL"
490 FOR i=1 TO LEN d$:PRINT AT 17,(VAL d$(i))*5+1; PAPER 7; INK 0;d$(i):NEXT i
500 GO SUB 1550
510 GO SUB 5345
520 IF P(z)=1 THEN GO SUB 2440:GO TO 590
530 GO SUB 583
540 IF P(z)=0 THEN INPUT "3rd throw,which dice?"; LINE d$
550 IF d$="0" THEN GO TO 680
560 FOR i=1 TO LEN d$
570 IF d$(i) <>"1" THEN IF d$(i) <>"2" THEN IF d$(i) <>"3" THEN IF d$(i) <>"4" THEN IF d$(i) <>"5" THEN GO TO 540
580 NEXT i:GO TO 590
583 FOR i=1 TO 5:PRINT AT 17,i*5+1; PAPER 7; INK 0;i:NEXT i:RETURN
586 FOR i=1 TO 5:PRINT AT 17,i*5+1; PAPER 7;" ":NEXT i:RETURN
590 IF d$="0" THEN GO TO 680
600 GO SUB 586
610 LET r=3
620 PRINT AT 19, NOT PI; INK NOT PI; PAPER 7;"3rd"'"ROLL"
640 FOR i=1 TO LEN d$:PRINT AT 17,(VAL d$(i))*5+1; PAPER 7; INK 0;d$(i):NEXT i
650 GO SUB 1550
660 GO SUB 5345
670 GO SUB 586
680 FOR i=1 TO 4:GO SUB 1530:NEXT i
690 FOR i=1 TO 3:GO SUB 1530:NEXT i
700 FOR i=1 TO 2:GO SUB 1530:NEXT i
710 FOR i=1 TO 1:GO SUB 1530:NEXT i
720 LET di= VAL "d(1)+d(2)+d(3)+d(4)+d(5)"
730 INK 0:PAPER 7:FLASH 1
740 IF P(z)=1 THEN GO SUB 3940:GO TO 1090
750 INPUT "Where do you want to score?"; LINE s$
760 IF s$="" THEN GO TO 750
770 IF w$(z) <>" " THEN GO TO 810
780 IF s$="q" THEN IF d(SGN PI)=d(4) THEN LET w$(z)="25":PRINT AT 2,25;w$(z):GO TO 1090
790 IF s$="q" THEN IF d(2)=d(5) THEN LET w$(z)="25":PRINT AT 2,25;w$(z):GO TO 1090
800 IF s$="q" THEN LET w$(z)=" 0":PRINT AT 2,25;w$(z):GO TO 1090
810 IF f$(z) <>" " THEN GO TO 850
820 IF s$(SGN PI)="f" THEN IF d(SGN PI)=d(2) AND d(PI)=d(5) THEN LET f$(z)="25":PRINT AT 4,25;f$(z):GO TO 1090
830 IF s$(SGN PI)="f" THEN IF d(SGN PI)=d(PI) AND d(4)=d(5) THEN LET f$(z)="25":PRINT AT 4,25;f$(z):GO TO 1090
840 IF s$(SGN PI)="f" THEN LET f$(z)=" 0":PRINT AT 4,25;f$(z):GO TO 1090
850 IF t$(z) <>" " THEN GO TO 880
860 IF s$(SGN PI)="s" THEN IF d(SGN PI)=d(2)+1 AND d(PI)+1=d(2) AND d(4)+1=d(PI) AND d(4)=d(5)+1 THEN LET t$(z)="25":PRINT AT 6,25;t$(z):GO TO 1090
870 IF s$(SGN PI)="s" THEN LET t$(z)=" 0":PRINT AT 6,25;t$(z):GO TO 1090
880 IF h$(z) <>" " THEN GO TO 920
890 IF s$(SGN PI)="h" THEN LET hi=di:IF hi>21 AND l$(z)=" " THEN LET h$(z)= STR$ hi:PRINT AT 8,25;h$(z):GO TO 1090
900 IF s$(SGN PI)="h" THEN LET hi=di:IF hi>21 AND hi> VAL l$(z) THEN LET h$(z)= STR$ hi:PRINT AT 8,25;h$(z):GO TO 1090
910 IF s$(SGN PI)="h" THEN LET h$(z)=" 0":PRINT AT 8,25;h$(z):GO TO 1090
920 IF l$(z) <>" " THEN GO TO 970
930 IF s$(SGN PI)="l" THEN LET lo=di
940 IF s$(SGN PI)="l" THEN IF h$(z,1)=" " THEN IF lo>20 THEN LET l$(z)= STR$ lo:PRINT AT 10,25;l$(z):GO TO 1090
950 IF s$(SGN PI)="l" THEN IF h$(z,1) <>" " THEN IF lo< VAL h$(z) AND lo>20 THEN LET l$(z)= STR$ lo:PRINT AT 10,25;l$(z):GO TO 1090
960 IF s$(SGN PI)="l" THEN LET l$(z)=" 0":PRINT AT 10,25;l$(z):GO TO 1090
970 IF c$(z) <>" " THEN GO TO 1000
980 IF s$="p" THEN IF d(SGN PI)=d(5) THEN LET c$(z)="30":PRINT AT 12,25;c$(z):GO TO 1090
990 IF s$="p" THEN LET c$(z)=" 0":PRINT AT 12,25;c$(z):GO TO 1090
1000 IF s$ <>"1" AND s$ <>"2" AND s$ <>"3" AND s$ <>"4" AND s$ <>"5" AND s$ <>"6" THEN GO TO 750
1010 IF s$="1" AND a$(1+l) <>" " THEN GO TO 750
1020 IF s$="2" AND a$(2+l) <>" " THEN GO TO 750
1030 IF s$="3" AND a$(3+l) <>" " THEN GO TO 750
1040 IF s$="4" AND a$(4+l) <>" " THEN GO TO 750
1050 IF s$="5" AND a$(5+l) <>" " THEN GO TO 750
1060 IF s$="6" AND a$(6+l) <>" " THEN GO TO 750
1070 LET g= VAL s$
1080 GO SUB 1700
1090 FLASH NOT PI
1100 IF e <>12 THEN GO TO 1500
1110 LET T(z)=0
1120 FOR i=1 TO 6
1130 LET T(z)=T(z)+ VAL a$(z*6-6+i)
1140 NEXT i
1150 LET q$(z)=" 0"
1160 IF T(z)>62 THEN LET q$(z)="25":LET T(z)=T(z)+ VAL q$(z)
1170 LET T(z)=T(z)+ VAL w$(z)+ VAL f$(z)+ VAL t$(z)+ VAL h$(z)+ VAL l$(z)+ VAL c$(z)
1180 PRINT AT 14,9; INK 0; PAPER 7; FLASH 1;q$(z):PAUSE 150
1190 GO SUB 2030
1200 INK 0:PAPER 7
1210 IF LEN (STR$ T(z))=3 THEN PRINT AT 14,24;T(z)
1220 IF LEN (STR$ T(z))=2 THEN PRINT AT 14,25;T(z)
1230 PRINT AT 19,2; PAPER NOT PI; INK 7;"PRESS ANY KEY TO CONTINUE":PAUSE NOT PI
1240 IF z <>p THEN GO TO 1510
1250 PAPER 7
1260 CLS
1270 PRINT AT 0,8; INK 0;"FINAL SCORES"
1280 PRINT TAB 8; INK 2;"____________"
1290 FOR i=1 TO p
1300 PRINT AT i+2,2; PAPER 7-i; INK 9;p$(i, TO 10); PAPER 7; INK 0;" ";T(i)
1310 LET z$(i)=p$(i)
1320 NEXT i
1330 IF p=1 THEN GO TO 1460
1340 LET r=p-1
1350 FOR i=1 TO p-1
1360 FOR j=1 TO r
1370 IF T(j)<T(j+1) THEN LET t=T(j+1):LET k$=z$(j+1):LET T(j+1)=T(j):LET z$(j+1)=z$(j):LET T(j)=t:LET z$(j)=k$
1380 NEXT j
1390 LET r=r-1
1400 NEXT i
1410 PRINT AT 10,8; INK 0;"FINAL ORDER"
1420 PRINT TAB 8; INK 2;"____________"
1430 FOR i=1 TO p
1440 PRINT AT i+12,2; PAPER VAL z$(i,11); INK 9;z$(i, TO 10); PAPER 7; INK 0;" ";T(i)
1450 NEXT i
1460 INPUT "Another game with the same"'"players (y/n)?"; LINE r$
1470 IF r$="y" THEN GO TO 220
1480 IF r$="n" THEN CLS :GO TO 40
1490 GO TO 1460
1500 PAUSE 150
1510 NEXT z
1520 NEXT e
1530 IF d(i)<d(i+1) THEN LET d=d(i+1):LET d(i+1)=d(i):LET d(i)=d
1540 RETURN
1550 LET q=0:FOR i=1 TO LEN d$
1560 FOR j=1 TO 5
1570 IF d$(i)= STR$ j THEN LET q=q+1
1580 NEXT j:NEXT i
1590 IF q <> LEN d$ THEN IF r=2 THEN GO TO 390
1600 IF q <> LEN d$ THEN IF r=3 THEN GO TO 540
1610 FOR j=1 TO 6+ INT (RND*5)
1620 FOR k=1 TO LEN d$
1630 LET w= VAL d$(k)
1640 LET d(w)= INT (RND*6+1)
1650 LET x=w*5
1660 PAPER 6:INK 2:BEEP .005+j*.001,-20:GO SUB 1750+d(w)*40
1670 NEXT k
1680 NEXT j
1690 RETURN
1700 FOR i=1 TO 5
1710 IF d(i)=g THEN LET y(g)=y(g)+g
1720 NEXT i
1730 IF y(g)>9 THEN LET a$(l+g)= STR$ y(g)
1740 IF y(g)<10 THEN LET a$(l+g)=" "+ STR$ y(g)
1750 PRINT AT g*2,9; INK 0; PAPER 7; FLASH 1;a$(l+g)
1760 LET y(g)=0
1770 RETURN
1780 REM \{20}\{1}PRINT dice \{20}\{0}
1790 PRINT AT 18,x;"\::\::\::"
1800 PRINT AT 19,x;"\::\a\::"
1810 PRINT AT 20,x;"\::\::\::"
1820 RETURN
1830 PRINT AT 18,x;"\a\::\::"
1840 PRINT AT 19,x;"\::\::\::"
1850 PRINT AT 20,x;"\::\::\a"
1860 RETURN
1870 PRINT AT 18,x;"\a\::\::"
1880 PRINT AT 19,x;"\::\a\::"
1890 PRINT AT 20,x;"\::\::\a"
1900 RETURN
1910 PRINT AT 18,x;"\a\::\a"
1920 PRINT AT 19,x;"\::\::\::"
1930 PRINT AT 20,x;"\a\::\a"
1940 RETURN
1950 PRINT AT 18,x;"\a\::\a"
1960 PRINT AT 19,x;"\::\a\::"
1970 PRINT AT 20,x;"\a\::\a"
1980 RETURN
1990 PRINT AT 18,x;"\a\::\a"
2000 PRINT AT 19,x;"\a\::\a"
2010 PRINT AT 20,x;"\a\::\a"
2020 RETURN
2030 CLS
2040 PAPER 7-z:INK 9
2050 PRINT AT 0,0;p$(z, TO 10); PAPER 7; INK 7-z;"\r"; AT 0,13; PAPER 7-z; INK 9;"PENTZY"; PAPER 7; INK 7-z;"\r"
2060 PRINT AT 1,0;"\f\b\b\b\b\b\b\b\b\b\b\b\l\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\g"; PAPER 7; INK 7-z;"\r"
2070 FOR j=2 TO 10 STEP 2
2080 READ e$,g$,b$,m$
2090 PRINT AT j,0;e$
2100 PRINT AT j,9; PAPER 7; INK 0;g$
2110 PRINT AT j,11;b$
2120 PRINT AT j,25; PAPER 7; INK 0;m$; PAPER 7-z; INK 9;" \e"; PAPER 7; INK 7-z;"\q"
2130 PRINT AT j+1,0;"\d \e \e"; PAPER 7; INK 7-z;"\q"
2140 NEXT j
2150 READ e$,g$,b$,m$
2160 PRINT AT 12,0;e$
2170 PRINT AT 12,9; PAPER 7; INK 0;g$
2180 PRINT AT 12,11;b$
2190 PRINT AT 12,25; PAPER 7; INK 0;m$; PAPER 7-z; INK 9;" \e"; PAPER 7; INK 7-z;"\q"
2200 PRINT AT 13,0;"\d \j\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\k"; PAPER 7; INK 7-z;"\q"
2210 READ e$,g$,b$
2220 PRINT AT 14,0;e$
2230 PRINT AT 14,9; PAPER 7; INK 0;g$
2240 PRINT AT 14,11;b$
2250 PRINT AT 14,24; PAPER 7; INK 0;" "; PAPER 7-z; INK 9;" \e"; PAPER 7; INK 7-z;"\q"
2260 PRINT AT 15,0;"\h\c\c\c\c\c\c\c\c\c\c\c\m\c\c\c\c\c\c\c\c\c\c\c\c\c\c\c\i"; PAPER 7; INK 7-z;"\q"
2270 PRINT AT 16,0; PAPER 7; INK 7-z;"\n\o\o\o\o\o\o\o\o\o\o\o\o\o\o\o\o\o\o\o\o\o\o\o\o\o\o\o\o\p"
2280 RESTORE
2290 IF T(z)>0 THEN RETURN
2300 FOR i=5 TO 25 STEP 5
2310 PRINT AT 21,i; PAPER 7; INK 2;"\n\o\o\p"
2320 PRINT AT 20,i+ PI; PAPER 7; INK 2;"\q"
2330 PRINT AT 19,i+ PI; PAPER 7; INK 2;"\q"
2340 PRINT AT 18,i+ PI; PAPER 7; INK 2;"\r"
2350 NEXT i
2360 RETURN
2370 DATA "\dONE ",a$(l+1)," \e QUADZY ",w$(z)
2380 DATA "\dTWO ",a$(l+2)," \e FULL ",f$(z)
2390 DATA "\dTHREE ",a$(l+ PI)," \e STRAIGHT ",t$(z)
2400 DATA "\dFOUR ",a$(l+4)," \e HIGH ",h$(z)
2410 DATA "\dFIVE ",a$(l+5)," \e LOW ",l$(z)
2420 DATA "\dSIX ",a$(l+6)," \e PENTZY ",c$(z)
2430 DATA "\dBONUS ",q$(z)," \e TOTAL "
2440 FOR i=1 TO 5
2450 LET v(i)=d(i)
2460 NEXT i
2470 FOR j=4 TO 1 STEP -1
2480 FOR i=1 TO j
2490 IF v(i)<v(i+1) THEN LET v=v(i+1):LET v(i+1)=v(i):LET v(i)=v
2500 NEXT i
2510 NEXT j
2520 LET vi=v(SGN PI)+v(2)+v(PI)+v(4)+v(5)
2530 LET v$=""
2540 LET d$=""
2550 IF c$(z)=" " THEN GO SUB 2840:IF d$ <>"" THEN RETURN
2560 FOR i=1 TO 6
2570 IF a$(i+l)=" " THEN GO SUB 2880:IF d$ <>"" THEN RETURN
2580 NEXT i
2590 IF h$(z)=" " THEN IF vi>27 THEN LET d$="0":RETURN
2600 IF w$(z)=" " THEN GO SUB 2950:IF d$ <>"" THEN RETURN
2610 IF f$(z)=" " THEN GO SUB 2920:IF d$ <>"" THEN RETURN
2620 IF t$(z)=" " THEN GO SUB 2980:IF d$ <>"" THEN RETURN
2630 FOR i=1 TO 6
2640 IF a$(i+l)=" " THEN GO SUB 3040:IF d$ <>"" THEN RETURN
2650 NEXT i
2660 IF f$(z)=" " THEN GO SUB 3080:IF d$ <>"" THEN RETURN
2670 IF w$(z)=" " THEN GO SUB 3110:IF d$ <>"" THEN RETURN
2680 IF t$(z)=" " AND l$(z)=" " THEN GO SUB 3150:IF d$ <>"" THEN RETURN
2690 FOR i=6 TO 1 STEP -1
2700 IF a$(i+l)=" " THEN GO SUB 3200:IF d$ <>"" THEN RETURN
2710 NEXT i
2720 IF t$(z)=" " THEN GO SUB 3520:IF d$ <>"" THEN RETURN
2730 IF h$(z)=" " AND l$(z) <>" " THEN GO SUB 3250:IF d$ <>"" THEN RETURN
2740 IF h$(z)=" " AND l$(z)=" " THEN GO SUB 3340:IF d$ <>"" THEN RETURN
2750 IF h$(z) <>" " AND l$(z)=" " THEN GO SUB 3430:IF d$ <>"" THEN RETURN
2760 FOR i=6 TO 1 STEP -1
2770 IF a$(i+l)=" " THEN GO SUB 3610:IF d$ <>"" THEN RETURN
2780 NEXT i
2790 IF c$(z)=" " THEN GO SUB 3670:IF d$ <>"" THEN RETURN
2800 IF w$(z)=" " THEN GO SUB 3710:IF d$ <>"" THEN RETURN
2810 IF t$(z)=" " THEN GO SUB 3760:IF d$ <>"" THEN RETURN
2820 IF c$(z)=" " OR f$(z)=" " THEN GO SUB 3710:IF d$ <>"" THEN RETURN
2830 LET d$="12345":RETURN
2840 IF v(SGN PI)=v(5) THEN LET d$="0":RETURN
2850 IF v(SGN PI)=v(4) THEN LET v$="5":GO SUB 3870:RETURN
2860 IF v(2)=v(5) THEN LET v$="1":GO SUB 3870:RETURN
2870 RETURN
2880 IF i=v(SGN PI) AND i=v(5) THEN LET d$="0":RETURN
2890 IF i=v(SGN PI) AND i=v(4) THEN LET v$="5":GO SUB 3870:RETURN
2900 IF i=v(2) AND i=v(5) THEN LET v$="1":GO SUB 3870:RETURN
2910 RETURN
2920 IF v(SGN PI)=v(PI) AND v(4)=v(5) THEN LET d$="0":RETURN
2930 IF v(SGN PI)=v(2) AND v(PI)=v(5) THEN LET d$="0":RETURN
2940 RETURN
2950 IF v(SGN PI)=v(4) THEN LET d$="0":RETURN
2960 IF v(2)=v(5) THEN LET d$="0":RETURN
2970 RETURN
2980 IF v(SGN PI)=v(2)+1 AND v(2)=v(PI)+1 AND v(PI)=v(4)+1 AND v(4)=v(5)+1 THEN LET d$="0":RETURN
2990 IF v(SGN PI)=5 AND v(2)=5 AND v(PI)=4 AND v(4)=3 AND v(5)=2 THEN LET v$="2":GO SUB 3870:RETURN
3000 IF v(SGN PI)=5 AND v(2)=4 AND v(PI)=4 AND v(4)=3 AND v(5)=2 THEN LET v$="2":GO SUB 3870:RETURN
3010 IF v(SGN PI)=5 AND v(2)=4 AND v(PI)=3 AND v(4)=3 AND v(5)=2 THEN LET v$="3":GO SUB 3870:RETURN
3020 IF v(SGN PI)=5 AND v(2)=4 AND v(PI)=3 AND v(4)=2 AND v(5)=2 THEN LET v$="4":GO SUB 3870:RETURN
3030 RETURN
3040 IF i=v(SGN PI) AND i=v(PI) THEN LET v$="45":GO SUB 3870:RETURN
3050 IF i=v(2) AND i=v(4) THEN LET v$="15":GO SUB 3870:RETURN
3060 IF i=v(PI) AND i=v(5) THEN LET v$="12":GO SUB 3870:RETURN
3070 RETURN
3080 IF v(SGN PI)=v(2) AND v(5)=v(4) THEN LET v$="3":GO SUB 3870:RETURN
3090 IF v(SGN PI)=v(2) AND v(PI)=v(4) THEN LET v$="5":GO SUB 3870:RETURN
3100 IF v(PI)=v(2) AND v(5)=v(4) THEN LET v$="1":GO SUB 3870:RETURN
3110 IF v(SGN PI)=v(PI) THEN LET v$="45":GO SUB 3870:RETURN
3120 IF v(2)=v(4) THEN LET v$="15":GO SUB 3870:RETURN
3130 IF v(PI)=v(5) THEN LET v$="12":GO SUB 3870:RETURN
3140 RETURN
3150 IF v(SGN PI)=6 AND v(2)=6 AND v(PI)=5 AND v(4)=4 AND v(5)=3 THEN LET v$="1":GO SUB 3870:RETURN
3160 IF v(SGN PI)=6 AND v(2)=5 AND v(PI)=5 AND v(4)=4 AND v(5)=3 THEN LET v$="2":GO SUB 3870:RETURN
3170 IF v(SGN PI)=6 AND v(2)=5 AND v(PI)=4 AND v(4)=4 AND v(5)=3 THEN LET v$="3":GO SUB 3870:RETURN
3180 IF v(SGN PI)=6 AND v(2)=5 AND v(PI)=4 AND v(4)=3 AND v(5)=1 THEN LET v$="5":GO SUB 3870:RETURN
3190 RETURN
3200 IF i=v(SGN PI) AND i=v(2) THEN LET v$="345":GO SUB 3870:RETURN
3210 IF i=v(2) AND i=v(PI) THEN LET v$="145":GO SUB 3870:RETURN
3220 IF i=v(PI) AND i=v(4) THEN LET v$="125":GO SUB 3870:RETURN
3230 IF i=v(4) AND i=v(5) THEN LET v$="123":GO SUB 3870:RETURN
3240 RETURN
3250 IF vi> VAL l$(z) AND v(5)>1 AND vi-v(5)< VAL l$(z) THEN LET d$="0":RETURN
3260 IF vi> VAL l$(z) AND v(5)=1 THEN LET v$="5":GO SUB 3870:RETURN
3270 IF vi> VAL l$(z) AND vi-v(5) >= VAL l$(z) THEN LET v$="5":GO SUB 3870:RETURN
3280 IF v(SGN PI)<5 THEN RETURN
3290 IF v(2)<5 THEN LET v$="2345":GO SUB 3870:RETURN
3300 IF v(PI)<5 THEN LET v$="345":GO SUB 3870:RETURN
3310 IF v(4)<5 THEN LET v$="45":GO SUB 3870:RETURN
3320 IF v(5)<5 THEN LET v$="5":GO SUB 3870:RETURN
3330 RETURN
3340 IF vi>20 AND v(5)>1 THEN LET d$="0":RETURN
3350 IF vi>21 AND v(5)>2 THEN LET d$="0":RETURN
3360 IF vi>22 AND v(5)>3 THEN LET d$="0":RETURN
3370 IF vi>20 THEN LET v$="5":GO SUB 3870:RETURN
3380 IF v(SGN PI)<5 THEN RETURN
3390 IF v(2)<5 THEN LET v$="2345":GO SUB 3870:RETURN
3400 IF v(PI)<5 THEN LET v$="345":GO SUB 3870:RETURN
3410 IF v(4)<5 THEN LET v$="45":GO SUB 3870:RETURN
3420 RETURN
3430 IF vi>20 THEN IF vi< VAL h$(z) THEN IF VAL h$(z)-vi<6 THEN LET d$="0":RETURN
3440 IF vi>20 THEN IF vi< VAL h$(z) THEN LET v$="5":GO SUB 3870:RETURN
3450 IF vi>20 THEN IF vi >= VAL h$(z) THEN LET v$="45":GO SUB 3870:RETURN
3460 IF v(SGN PI)<5 THEN RETURN
3470 IF v(2)<5 THEN LET v$="2345":GO SUB 3870:RETURN
3480 IF v(PI)<5 THEN LET v$="345":GO SUB 3870:RETURN
3490 IF v(4)<5 THEN LET v$="45":GO SUB 3870:RETURN
3500 IF v(5)<5 THEN LET v$="5":GO SUB 3870:RETURN
3510 RETURN
3520 IF v(SGN PI)=v(2) THEN LET v$="1"
3530 IF v(PI)=v(2) THEN LET v$=v$+"2"
3540 IF v(PI)=v(4) THEN LET v$=v$+"3"
3550 IF v(5)=v(4) THEN LET v$=v$+"4"
3560 IF LEN v$>1 THEN LET v$="":GO TO 3600
3570 IF LEN v$=1 AND v(SGN PI)-v(5)>4 THEN LET v$="":GO TO 3600
3580 IF LEN v$=1 THEN GO SUB 3870:RETURN
3590 IF v$="" THEN LET v$="5":GO SUB 3870:RETURN
3600 RETURN
3610 IF i=v(SGN PI) THEN LET v$="2345":GO SUB 3870:RETURN
3620 IF i=v(2) THEN LET v$="1345":GO SUB 3870:RETURN
3630 IF i=v(PI) THEN LET v$="1245":GO SUB 3870:RETURN
3640 IF i=v(4) THEN LET v$="1235":GO SUB 3870:RETURN
3650 IF i=v(5) THEN LET v$="1234":GO SUB 3870:RETURN
3660 RETURN
3670 IF v(SGN PI)=v(PI) THEN LET v$="45":GO SUB 3870:RETURN
3680 IF v(2)=v(4) THEN LET v$="15":GO SUB 3870:RETURN
3690 IF v(PI)=v(5) THEN LET v$="12":GO SUB 3870:RETURN
3700 IF c$(z) <>" " AND f$(z) <>" " THEN GO TO 3750
3710 IF v(SGN PI)=v(2) THEN LET v$="345":GO SUB 3870:RETURN
3720 IF v(PI)=v(2) THEN LET v$="145":GO SUB 3870:RETURN
3730 IF v(PI)=v(4) THEN LET v$="125":GO SUB 3870:RETURN
3740 IF v(5)=v(4) THEN LET v$="123":GO SUB 3870:RETURN
3750 RETURN
3760 FOR i=1 TO 3
3770 IF v(i)=v(i+1) THEN GO TO 3830
3780 IF v(i+1)=v(i+2) THEN GO TO 3830
3790 IF v(i)-v(i+2)>4 THEN GO TO 3830
3800 IF i=1 THEN LET v$="45":GO SUB 3870:RETURN
3810 IF i=2 THEN LET v$="15":GO SUB 3870:RETURN
3820 IF i=3 THEN LET v$="12":GO SUB 3870:RETURN
3830 NEXT i
3840 IF v(SGN PI)=v(2) AND v(PI)=v(4) AND v(SGN PI)-v(5)<5 AND v(SGN PI)>v(PI) AND v(PI)>v(5) THEN LET v$="24":GO SUB 3870:RETURN
3850 IF v(PI)=v(2) AND v(5)=v(4) AND v(SGN PI)-v(5)<5 AND v(SGN PI)>v(PI) AND v(PI)>v(5) THEN LET v$="24":GO SUB 3870:RETURN
3860 RETURN
3870 FOR i=1 TO LEN v$
3880 LET o= VAL v$(i)
3890 FOR j=1 TO 5
3900 IF d(j)=v(o) THEN LET d$=d$+ STR$ j:LET d(j)=0:GO TO 3920
3910 NEXT j
3920 NEXT i
3930 RETURN
3940 IF c$(z) <>" " THEN GO TO 3960
3950 IF d(SGN PI)=d(5) THEN LET c$(z)="30":PRINT AT 12,25;c$(z):RETURN
3960 IF t$(z) <>" " THEN GO TO 3980
3970 IF d(SGN PI)=d(2)+1 AND d(2)+1=d(PI)+2 AND d(PI)+2=d(4)+3 AND d(4)+3=d(5)+4 THEN LET t$(z)="25":PRINT AT 6,25;t$(z):RETURN
3980 IF n(z) <>5 THEN GO TO 4050
3990 IF d(SGN PI) <>d(5) THEN GO TO 4050
4000 IF a$(d(SGN PI)+l) <>" " THEN GO TO 4050
4010 FOR i=0 TO 2
4020 IF i*d(SGN PI)+m(z)>62 THEN LET w$(z)="25":GO SUB 5220:RETURN
4030 NEXT i
4040 IF 3*d(SGN PI)>62 THEN LET i=d(SGN PI):LET a$(i+l)= STR$ (5*i):GO SUB 5210:RETURN
4050 FOR i=1 TO 6
4060 IF a$(i+l) <>" " THEN GO TO 4100
4070 LET aa=3- LEN (STR$ (5*i))
4080 IF i=1 AND w$(z)=" " THEN IF d(SGN PI)=d(5) THEN LET w$(z)="25":GO SUB 5220:RETURN
4090 IF i=d(SGN PI) AND i=d(5) THEN LET a$(i+l,aa TO 2)= STR$ (5*i):GO SUB 5210:RETURN
4100 NEXT i
4110 IF d(SGN PI) <>d(4) AND d(2) <>d(5) THEN GO TO 4240
4120 IF n(z) <>5 THEN GO TO 4180
4130 IF a$(d(PI)+l) <>" " THEN GO TO 4180
4140 IF w$(z) <>" " THEN GO TO 4180
4150 FOR i=0 TO 2
4160 IF i*d(PI)+m(z)>62 THEN LET w$(z)="25":GO SUB 5220:RETURN
4170 NEXT i
4180 IF 4*d(PI)>62 AND 3*d(PI)<63 THEN LET i=d(PI):LET a$(i+l)= STR$ (4*i):GO SUB 5210:RETURN
4190 LET i=d(PI)
4200 LET ab=3- LEN (STR$ (4*i))
4210 IF d(PI)>3 THEN IF a$(i+l)=" " THEN LET a$(i+l)= STR$ (4*i):GO SUB 5210:RETURN
4220 IF w$(z)=" " THEN LET w$(z)="25":GO SUB 5220:RETURN
4230 IF a$(i+l)=" " THEN LET a$(i+l,ab TO 2)= STR$ (4*i):GO SUB 5210:RETURN
4240 IF h$(z) <>" " THEN GO TO 4260
4250 IF di>26 THEN LET h$(z)= STR$ di:PRINT AT 8,25;h$(z):RETURN
4260 IF f$(z) <>" " THEN GO TO 4290
4270 IF d(SGN PI)=d(2) THEN IF d(PI)=d(5) THEN LET f$(z)="25":PRINT AT 4,25;f$(z):RETURN
4280 IF d(SGN PI)=d(PI) THEN IF d(4)=d(5) THEN LET f$(z)="25":PRINT AT 4,25;f$(z):RETURN
4290 IF n(z) <>5 THEN GO TO 4410
4300 FOR i=1 TO 6
4310 IF a$(i+l) <>" " THEN GO TO 4400
4320 FOR j=1 TO 3
4330 IF i=d(j) AND i=d(j+2) THEN IF m(z)+3*i<63 AND m(z)+4*i>62 THEN GO TO 4360
4340 NEXT j
4350 GO TO 4410
4360 IF h$(z)=" " AND l$(z)=" " THEN GO SUB 5280:IF h$(z) <>" " OR l$(z) <>" " THEN RETURN
4370 IF h$(z)=" " AND l$(z) <>" " THEN GO SUB 5310:IF h$(z) <>" " THEN RETURN
4380 IF l$(z)=" " AND h$(z) <>" " THEN GO SUB 5330:IF l$(z) <>" " THEN RETURN
4390 IF c$(z)=" " THEN LET c$(z)=" 0":GO SUB 5270:RETURN
4400 NEXT i
4410 FOR i=1 TO 6
4420 IF a$(i+l) <>" " THEN GO TO 4470
4430 LET aa=3- LEN (STR$ (i*3))
4440 FOR j=1 TO 3
4450 IF i=d(j) AND i=d(j+2) THEN LET a$(i+l,aa TO 2)= STR$ (3*i):GO SUB 5210:RETURN
4460 NEXT j
4470 NEXT i
4480 IF h$(z)=" " AND l$(z)=" " THEN GO SUB 5280:IF h$(z) <>" " OR l$(z) <>" " THEN RETURN
4490 IF h$(z)=" " AND l$(z) <>" " THEN GO SUB 5310:IF h$(z) <>" " THEN RETURN
4500 IF l$(z)=" " AND h$(z) <>" " THEN GO SUB 5330:IF l$(z) <>" " THEN RETURN
4510 IF n(z) <>5 THEN GO TO 4750
4520 FOR i=1 TO 6
4530 IF a$(i+l) <>" " THEN GO TO 4740
4540 LET u=0
4550 FOR j=1 TO 4
4560 IF i=d(j) AND i=d(j+1) THEN LET u=2*i:IF m(z)+2*d(j)<63 THEN IF m(z)+3*d(j)>62 THEN GO TO 4670
4570 NEXT j
4580 IF u=2*i THEN GO TO 4640
4590 FOR j=1 TO 5
4600 IF i=d(j) THEN LET u=d(j):IF m(z)+d(j)<63 THEN IF m(z)+3*d(j)>62 THEN GO TO 4670
4610 NEXT j
4620 IF u=i THEN GO TO 4640
4630 LET u=0:IF m(z)<63 THEN IF m(z)+3*i>62 THEN GO TO 4670
4640 IF m(z)+u<63 THEN IF m(z)+4*i>62 THEN IF c$(z)=" " THEN LET c$(z)=" 0":GO SUB 5270:RETURN
4650 IF u>9 THEN LET a$(i+l)= STR$ u:GO SUB 5210:RETURN
4660 IF u<10 THEN LET a$(i+l)=" "+ STR$ u:GO SUB 5210:RETURN
4670 IF c$(z)=" " THEN LET c$(z)=" 0":GO SUB 5270:RETURN
4680 IF t$(z)=" " THEN LET t$(z)=" 0":GO SUB 5240:RETURN
4690 IF w$(z)=" " THEN LET w$(z)=" 0":GO SUB 5220:RETURN
4700 IF f$(z)=" " THEN LET f$(z)=" 0":GO SUB 5230:RETURN
4710 IF h$(z)=" " THEN LET h$(z)=" 0":GO SUB 5250:RETURN
4720 IF l$(z)=" " THEN LET l$(z)=" 0":GO SUB 5260:RETURN
4730 GO TO 4650
4740 NEXT i
4750 FOR i=1 TO 3
4760 IF a$(i+l) <>" " THEN GO TO 4850
4770 FOR j=1 TO 4
4780 IF i=d(j) AND i=d(j+1) THEN LET a$(i+l)=" "+ STR$ (2*i):GO SUB 5210:RETURN
4790 NEXT j
4800 IF i <>1 THEN GO TO 4840
4810 FOR k=1 TO 5
4820 IF d(k)=1 THEN LET a$(1+l)=" 1":PRINT AT 2,9;a$(1+l):LET n(z)=n(z)+1:LET m(z)=m(z)+1:RETURN
4830 NEXT k
4840 IF i=2 THEN IF a$(1+l)=" " THEN LET a$(1+l)=" 0":PRINT AT 2,9;a$(1+l):LET n(z)=n(z)+1:RETURN
4850 NEXT i
4860 FOR i=1 TO 3
4870 IF a$(i+l) <>" " THEN GO TO 4930
4880 FOR j=1 TO 5
4890 IF i=d(j) THEN LET a$(i+l)=" "+ STR$ i:GO SUB 5210:RETURN
4900 IF i>1 THEN GO TO 4920
4910 IF a$(1+l)=" " THEN LET a$(1+l)=" 0":PRINT AT 2,9;a$(1+l):LET n(z)=n(z)+1:RETURN
4920 NEXT j
4930 NEXT i
4940 FOR i=1 TO 2
4950 IF a$(i+l) <>" " THEN GO TO 4970
4960 LET a$(i+l)=" 0":GO SUB 5210:RETURN
4970 NEXT i
4980 IF c$(z)=" " THEN LET c$(z)=" 0":PRINT AT 12,25;c$(z):RETURN
4990 IF t$(z)=" " THEN LET t$(z)=" 0":PRINT AT 6,25;t$(z):RETURN
5000 FOR i=4 TO 6
5010 IF a$(i+l) <>" " THEN GO TO 5060
5020 LET aa=3- LEN (STR$ (i*2))
5030 FOR j=1 TO 4
5040 IF i=d(j) AND i=d(j+1) THEN LET a$(i+l,aa TO 2)= STR$ (2*i):GO SUB 5210:RETURN
5050 NEXT j
5060 NEXT i
5070 FOR i=4 TO 6
5080 IF a$(i+l) <>" " THEN GO TO 5120
5090 FOR j=1 TO 5
5100 IF i=d(j) THEN LET a$(i+l)=" "+ STR$ i:GO SUB 5210:RETURN
5110 NEXT j
5120 NEXT i
5130 IF w$(z)=" " THEN LET w$(z)=" 0":GO SUB 5220:RETURN
5140 IF f$(z)=" " THEN LET f$(z)=" 0":PRINT AT 4,25;f$(z):RETURN
5150 FOR i=3 TO 6
5160 IF a$(i+l) <>" " THEN GO TO 5180
5170 LET a$(i+l)=" 0":GO SUB 5210:RETURN
5180 NEXT i
5190 IF l$(z)=" " THEN LET l$(z)=" 0":PRINT AT 10,25;l$(z):RETURN
5200 IF h$(z)=" " THEN LET h$(z)=" 0":PRINT AT 8,25;h$(z):RETURN
5210 PRINT AT i*2,9;a$(i+l):LET n(z)=n(z)+1:LET m(z)=m(z)+ VAL a$(i+l):RETURN
5220 PRINT AT 2,25;w$(z):RETURN
5230 PRINT AT 4,25;f$(z):RETURN
5240 PRINT AT 6,25;t$(z):RETURN
5250 PRINT AT 8,25;h$(z):RETURN
5260 PRINT AT 10,25;l$(z):RETURN
5270 PRINT AT 12,25;c$(z):RETURN
5280 IF di>24 THEN LET h$(z)= STR$ di:PRINT AT 8,25;h$(z):RETURN
5290 IF di>20 THEN LET l$(z)= STR$ di:PRINT AT 10,25;l$(z)
5300 RETURN
5310 IF di> VAL l$(z) THEN IF di>20 THEN LET h$(z)= STR$ di:PRINT AT 8,25;h$(z)
5320 RETURN
5330 IF di< VAL h$(z) THEN IF di>20 THEN LET l$(z)= STR$ di:PRINT AT 10,25;l$(z)
5340 RETURN
5345 PRINT AT 19, NOT PI; INK NOT PI; PAPER 7;" "'" ":RETURN
5400 REM \{20}\{1} UDGs \{20}\{0}
5410 DEF FN h(x)= INT (x/256):DEF FN l(x)=x-256* FN h(x)
5420 :
5430 LET x= VAL "(PEEK 23637+ PEEK 23638*256)+6":POKE 23675, FN l(x):POKE 23676, FN h(x):RETURN
5440 REM COPY COPY NOT NOT NOT NOT COPY COPY \{0}\{0}COPY \{0}\{0}\{0}\{0}\{0}\{0}\{0}\{0}\{0}\{0}COPY \{0}\{0} \{4}\{4}\{4}\{4}\{4}\{4}\{4}\{4}\{0}\{0}? \{0}\{0}DRAW \{4}\{4}\{4}\{4}\{4} ?\{0}\{0}\{4}\{4}\{4}\{4}\{4}DRAW \{0}\{0}\{4}\{4}\{7}\{4}\{4}\{4}\{4}\{4}\{4}\{4}DRAW \{4}\{4}\{4}\{4}\{4}\{0}\{0}COPY \{4}\{4}\{4}\{4}\{4}\{4}\{4}\{4}\{4}\{4}COPY \{0}\{0}\{0}\*?\{31}\{15}\{7}\{3}\{1}\{0}COPY COPY COPY COPY COPY COPY COPY \*IN OUT LOAD RUN CLS CLEAR RETURN \*\*\*\*\*\*\*\*\{0}@`px|~\*\{0}<@<\{2}B<\{0}\{0}RETURN \{16}\{16}\{16}\{16}\{16}\{0}\{0}BBBBB<\{0}
5500 LOAD "pentzy C"SCREEN$ :PAPER 6:GO TO 1
5510 REM LOAD ""SCREEN$ :SAVE "pentzy" LINE 1:SAVE "code"SCREEN$
5520 SAVE "pentzy" LINE 5500
Note: Type-in program listings on this website use ZMAKEBAS notation for graphics characters.
