============================================================
VOLT MAZE - CHARACTER COUNT PROOF
BASIC10 EXTREME-256 Category (max 256 chars per line)
============================================================
Author  : Jason Brooks
Website : www.muckypaws.com
System  : Amstrad CPC 464/664/6128 (Locomotive BASIC 1.0/1.1)
Date    : March 2026
============================================================

Line  Chars  Limit  Spare  Status
----  -----  -----  -----  ------
   1    153    256    103  OK
   2    237    256     19  OK
   3    172    256     84  OK
   4    191    256     65  OK
   5    143    256    113  OK
   6    255    256      1  OK
   7    138    256    118  OK
   8    176    256     80  OK
   9    233    256     23  OK
  10    250    256      6  OK

All 10 lines are within the 256 character limit.
Tightest lines: 6 with 1 character spare, 10 with 6 characters spare.
No line exceeds the category maximum.

============================================================
FULL LISTING WITH CHARACTER COUNTS
============================================================

[153] 1 CLS:MODE 1:BORDER 0:RANDOMIZE TIME:SPEED INK 250,12:INK 0,0:INK 1,2:INK 2,22:INK 3,2:DIM M(38,20),V(18,9),SX(200),SY(200),A(4),B(4):SC=0:HS=0:LV=0:HP=0
[237] 2 LV=LV+1:HP=5+LV*5:CLS:LOCATE 12,12:PEN 2:?"GENERATING...":INK 3,2+(LV>1)*2,2:INK 1,2+(LV>3)*2,2:FOR y=0 TO 20:FOR x=0 TO 38:M(x,y)=1:NEXT:NEXT:FOR y=0 TO 9:FOR x=0 TO 18:M(2*x+1,2*y+1)=0:V(x,y)=0:NEXT:NEXT:SP=1:SX(1)=0:SY(1)=9:V(0,9)=1
[172] 3 HP=HP+(HP-25)*(HP>25):IF SP=0 THEN M(37,0)=0:FOR j=1 TO 19 STEP 2:FOR i=1 TO 37 STEP 2:M(i,j)=2:NEXT:NEXT:CX=-(LV>3)*(1+2*INT(RND*19)):CY=-(LV>3)*(1+2*INT(RND*10)):GOTO 6
[191] 4 cx=SX(SP):cy=SY(SP):NC=0:FOR d=1 TO 4:dx=-(d=4)+(d=3):dy=-(d=2)+(d=1):nx=cx+dx:ny=cy+dy:IF nx>=0 THEN IF nx<=18 THEN IF ny>=0 THEN IF ny<=9 THEN IF V(nx,ny)=0 THEN NC=NC+1:A(NC)=nx:B(NC)=ny
[143] 5 NEXT d:IF NC=0 THEN SP=SP-1:GOTO 3 ELSE ri=INT(RND*NC)+1:nx=A(ri):ny=B(ri):M(cx+nx+1,cy+ny+1)=0:V(nx,ny)=1:SP=SP+1:SX(SP)=nx:SY(SP)=ny:GOTO 4
[255] 6 CLS:FOR y=0 TO 20:FOR x=0 TO 38:PAPER -(M(x,y)=1)*(3-(LV<4)*2*(y<6 OR y>12)):LOCATE x+1,y+1:? CHR$(32-112*(M(x,y)=2));:NEXT x:NEXT y:PX=1:PY=19:PAPER 0:LOCATE 40,1:PEN 1:?"<";:LOCATE 1,23:PEN 2:?"SC:";SC;"  HI:";HS;"  LV:";LV;"  HP:";HP
[138] 7 LOCATE PX+1,PY+1:PEN 2:PAPER 0:? CHR$(248+((PX+PY)AND 3));:k$=INKEY$:dx=-(k$="p")+(k$="o"):dy=-(k$="d")+(k$="e"):IF dx=0 AND dy=0 THEN 7
[176] 8 IF M(PX+dx,PY+dy)=1 THEN HP=HP-1:BORDER 24:FOR t=1 TO 50:NEXT:BORDER 0:IF HP<1 THEN PEN 2:LOCATE 12,12:?"*** GAME OVER ***":FOR t=1 TO 2000:NEXT:SC=0:LV=0:GOTO 2 ELSE GOTO 10
[233] 9 LOCATE PX+1,PY+1:PAPER 0:?" ";:PX=PX+dx:PY=PY+dy:SC=SC-5*(M(PX,PY)=2):M(PX,PY)=0:HS=HS+(HS-SC)*(SC>HS):IF LV>3 THEN LOCATE CX+1,CY+1:PAPER 0:?" ";:M(CX,CY)=0:CX=1+2*INT(RND*19):CY=1+2*INT(RND*10):LOCATE CX+1,CY+1:PEN 2:? CHR$(225);
[250] 10 LOCATE PX+1,PY+1:PEN 2:PAPER 0:? CHR$(248+((PX+PY)AND 3));:LOCATE 1,23:?"SC:";SC;"  HI:";HS;"  LV:";LV;"  HP:";HP:HT=(LV>3)*(CX=PX)*(CY=PY):HP=HP+HT:BORDER-HT*24:IF PX=37 AND PY=0 THEN ?"LEVEL UP!":SC=SC+HP*5:FOR t=1 TO 400:NEXT:GOTO 2 ELSE GOTO 7

============================================================
NOTE ON CHARACTER COUNTS
? is used throughout as the Locomotive BASIC shorthand
abbreviation for PRINT. Each ? counts as 1 character in
the listing as typed. The CPC tokeniser expands ? to PRINT
in memory, so a LISTed program will appear longer than the
character counts shown above. The counts here reflect the
actual typed input length, which is the correct measure for
the EXTREME-256 category.

No machine code. No self-modifying code. No data loaded
from storage. No hidden initialisations. All code visible
in listing above. POKEs not used.
============================================================
