DECLARE SUB SaveScreen (f$)
DECLARE SUB LoadPal (f$)
SCREEN 13: CLS
DIM SHARED Pal(1256) AS LONG
Horz = POINT(1): Vert = POINT(0)
PSET (Vert, Horz), 2
C = 1
FILES "*.pa2"
INPUT "Palette name"; f$
INPUT "BSV file"; bsv$
IF INSTR(f$, ".") = 0 THEN f$ = f$ + ".pa2"
CLS
LoadPal f$
1 d$ = INKEY$
IF d$ = "" THEN
a = INT(RND * 4)
IF a = 0 THEN a$ = CHR$(0) + "M"
IF a = 1 THEN a$ = CHR$(0) + "K"
IF a = 2 THEN a$ = CHR$(0) + "P"
IF a = 3 THEN a$ = CHR$(0) + "H"
ELSE a$ = d$
END IF
IF a$ = "" THEN GOTO 1
RANDOMIZE TIMER + a - VAL(DATE$) + VAL(TIME$)
IF a$ = CHR$(0) + "M" AND Vert < 319 THEN Vert = Vert + 1
IF a$ = CHR$(0) + "K" AND Vert > 0 THEN Vert = Vert - 1
IF a$ = CHR$(0) + "P" AND Horz < 199 THEN Horz = Horz + 1
IF a$ = CHR$(0) + "H" AND Horz > 0 THEN Horz = Horz - 1
IF a$ = CHR$(27) THEN SaveScreen bsv$
IF POINT(Horz, Vert) = Horz THEN GOTO 1
IF a$ = "" THEN END
'IF C < 240 THEN C = C + 1 ELSE C = 2
C = Horz * 1.299999999#
'PSET (Vert - 1, Horz - 1), C
'PSET (Vert - 1, Horz + 1), C
PSET (Vert + 1, Horz + 1), C
PSET (Vert + 1, Horz - 1), C
'PSET (Vert, Horz + 1), C
PSET (Vert, Horz - 1), C
PSET (Vert + 1, Horz), C
'PSET (Vert - 1, Horz), C
IF Horz < 199 AND Vert < 319 THEN PSET (Vert, Horz), C ELSE GOTO 1
GOTO 1

SUB LoadPal (f$)
OPEN f$ FOR INPUT AS #1
q = 1
DO UNTIL EOF(1)
INPUT #1, Pal(q)
q = q + 1
LOOP
PALETTE USING Pal(1)
CLOSE 1
END SUB

SUB SaveScreen (f$)
DEF SEG = &HA000
BSAVE f$, 0, 64000
END SUB

