ZX81 Programs


Read about, play, run, or list games, animations, and more. These are my programs from the ’80s to today.

ZX81 Program Listing

**JOUST**SLR/1984****** (jo.p)


SYSTEM VARIABLES

PROG  : 16509
D-FILE: 24322
VARS  : 25115
E-LINE: 25340
STKBOT: 25340
STKEND: 25340


LEGEND

9999 means line number
PRINT means treat as KEYWORD P


PROGRAM LISTING

  10 REM **JOUST**SLR/1984******
  11 LET H1=4
  12 LET H2=15
  13 LET L=0
  20 LET S=0
  30 LET M=3
  31 DIM I$(2)
  32 LET I$(1)="0"
  33 LET I$(2)="0"
  35 CLS
  36 REM SLOW
  40 PRINT AT 9,0;"  ºººº   ó";
AT 9,22;"ó   ºººº  ";AT 10,0;"  
    ó";AT 10,25;"ó      ";AT 19,
0;"¸¸¸¸¸¸     ºººº           ¸¸¸
¸¸¸";AT 20,0;"¸¸¸¸¸¸¸º          
      º¸¸¸¸¸¸¸";AT 21,0;"¸¸¸ººº 
                   ººº¸¸¸"
  45 DIM A$(2,6)
  48 DIM B$(3,6)
  50 LET A$(1)=" ²ùó ´"
  55 LET A$(2)="ù± ÷ ó"
  60 LET B$(1)=" ²ùó!´"
  65 LET B$(2)="ù± ÷!ó"
  66 LET B$(3)=" ²ù²!±"
  69 LET H$="±² ÷"
  70 LET D1=1
  71 LET Q=0
  80 LET D2=2
  90 LET D3=1
 100 DIM X(6)
 110 DIM Y(6)
 120 LET X(1)=7
 130 LET X(3)=17
 140 LET X(5)=7
 150 LET Y(1)=2
 160 LET Y(3)=11
 170 LET Y(5)=26
 175 LET L=L+1
 176 LET L$=STR$ L
 177 FOR F=1 TO LEN L$
 178 LET L$(F)=CHR$ (CODE L$(F)+
128)
 179 NEXT F
 180 PRINT AT 20,10;"LEVEL:";L$
 181 PRINT AT X(1)+1,Y(1);B$(D1,
1 TO 3);AT X(3)+1,Y(3);B$(D2,1
TO 3)
 190 LET F=SIN PI
 200 PRINT AT X(1),Y(1);B$(D1,1
TO 3);AT X(1)+1,Y(1);B$(D1,4
TO 6);AT X(3),Y(3);B$(D2,1 TO 3
);AT X(3)+1,Y(3);B$(D2,4 TO 6)
 210 LET F=SIN PI
 220 PRINT AT X(5)+1,Y(5);A$(D3,
1 TO 3)
 230 LET F=SIN PI
 250 PRINT AT X(5),Y(5);A$(D3,1
TO 3);AT X(5)+1,Y(5);A$(D3,4
TO 6)
 260 PAUSE 100
 265 REM FAST
 266 PRINT AT X(1),Y(1);"   ";
AT X(1)+1,Y(1);"   ";AT X(3),Y(3
);"   ";AT X(3)+1,Y(3);"   "
 267 PRINT AT X(5),Y(5);"   ";
AT X(5)+1,Y(5);"   "
 270 LET Y(1)=Y(1)+1
 275 IF Y(1)=30 THEN LET Y(1)=0
 280 LET Y(3)=Y(3)-1
 285 IF Y(3)=-1 THEN LET Y(3)=29
 290 LET F=INT (2*RND)
 300 IF F=0 THEN LET X(1)=X(1)-(
X(1)>H1)
 305 IF F=1 THEN LET X(1)=X(1)+(
X(1)<7)
 306 LET F=INT (2*RND)
 310 IF F=0 THEN LET X(3)=X(3)-(
X(3)>H2)
 315 IF F=1 THEN LET X(3)=X(3)+(
X(3)<17)
 320 PRINT AT X(1),Y(1);B$(D1,1
TO 3);AT X(1)+1,Y(1);B$(D1,4
TO 6);AT X(3),Y(3);B$(D2,1 TO 3
);AT X(3)+1,Y(3);B$(D2,4 TO 6)
 330 LET F$=INKEY$
 335 IF X(5)=9 OR X(5)=10 THEN
GOTO 350
 340 LET Y(5)=Y(5)-(F$="Z")+(F$=
".")
 350 IF Y(5)=30 THEN LET Y(5)=0
 360 IF Y(5)=-1 THEN LET Y(5)=29
 370 LET D3=(F$=".")+(2 AND F$="
Z")+(D3 AND (F$<>"." AND F$<>"Z"
))
 380 IF F$="M" THEN LET X(5)=X(5
)-(2 AND X(5)>0)
 390 LET X(5)=X(5)+1
 400 IF X(5)=18 AND (Y(5)>5 AND
Y(5)<26) THEN LET X(5)=X(5)-1
 410 IF X(5)=8 AND (Y(5)<10 OR Y
(5)>19) THEN LET X(5)=X(5)-1
 415 IF X(5)=10 AND (Y(5)<10 OR
Y(5)>19) THEN LET X(5)=X(5)+1
 420 PRINT AT X(5),Y(5);A$(D3,1
TO 3);AT X(5)+1,Y(5);A$(D3,4
TO 6)
 425 REM SLOW
 426 IF Q AND Q<>-1 AND (B$(2)="
      " OR B$(1)="      ") THEN
GOSUB 500
 430 IF Y(5)<6 AND X(5)>14 THEN
GOTO 1000
 440 IF (Y(5)>=Y(3) AND Y(5)<=Y(
3)+2) OR (Y(5)>=Y(1) AND Y(5)<=Y
(1)+2) THEN GOTO 1500
 450 IF (Y(5)+2>=Y(3) AND Y(5)+2
<=Y(3)+2) OR (Y(5)+2>=Y(1) AND Y
(5)+2<=Y(1)+2) THEN GOTO 1500
 460 IF B$(1)="      " AND B$(2)
="      " THEN GOTO 2500
 470 IF X(5)>=19 THEN GOTO 1130
 480 GOTO 265
 500 IF B$(1)="      " THEN
GOTO 550
 510 LET X(3)=17
 520 LET Y(3)=11
 530 PRINT AT X(3),Y(3);B$(3,
TO 3);AT X(3)+1,Y(3);B$(3,4 TO
)
 535 LET B$(2)="ù± ÷!ó"
 540 PAUSE 100
 541 LET Q=-1
 542 GOTO 255
 550 LET X(1)=7
 560 LET Y(1)=2
 570 PRINT AT X(1),Y(1);B$(3,
TO 3);AT X(1)+1,Y(1);B$(3,4 TO
)
 580 PAUSE 100
 586 LET B$(1)=" ²ùó!´"
 590 GOTO 541
1000 FOR F=18 TO X(5)+1 STEP -1
1010 IF F=18 THEN PRINT AT 18,Y(
5);H$(1 TO 2)
1020 IF F=17 THEN PRINT AT F,Y(5
);H$(1 TO 2);AT F+1,Y(5);H$(3
TO 4)
1030 IF F<17 THEN PRINT AT F,Y(5
);H$(1 TO 2);AT F+1,Y(5);H$(3
TO 4);AT F+2,Y(5);" "
1050 NEXT F
1060 FOR F=X(5)+1 TO 19
1070 IF F<16 THEN PRINT AT F-1,Y
(5);"   ";AT F,Y(5);A$(D3,1 TO 3
);AT F+1,Y(5);H$(1 TO 2);AT F+2,
Y(5);H$(3 TO 4)
1080 IF F=16 THEN PRINT AT F-1,Y
(5);"   ";AT F,Y(5);A$(D3,1 TO 3
);AT F+1,Y(5);H$(1 TO 2)
1090 IF F=17 THEN PRINT AT F-1,Y
(5);"   ";AT F,Y(5);A$(D3,1 TO 3
)
1100 IF F=18 THEN PRINT AT F-1,Y
(5);"   ";AT F,Y(5);A$(D3,1 TO 3
)
1110 IF F=19 THEN PRINT AT F-1,Y
(5);"   ";
1120 NEXT F
1130 LET M=M-1
1135 PRINT AT 20,9;"YEE GOT HIT-
=-=-="
1136 PAUSE 100
1137 LET L=L-1
1140 IF M>0 THEN GOTO 35
1150 PRINT AT 10,10;"YOU DIED<>
<>"
1160 PRINT AT 0,10;"SCORE:";S
1170 PRINT TAB 10;"PRESS ANY KEY
"
1180 PAUSE 4E4
1190 RUN
1500 IF X(5)>=X(3)-1 AND X(5)<=X
(3)+1 THEN GOTO 1600
1510 IF X(5)>=X(1)-1 AND X(5)<=X
(1)+1 THEN GOTO 1700
1520 GOTO 460
1600 REM HIT?
1610 IF X(5)=X(3) AND B$(2)<>"  
    " THEN GOTO 1900
1620 IF X(5)=X(3)+1 AND B$(2)<>"
      " THEN GOTO 1800
1625 IF B$(2)="      " THEN
GOTO 460
1630 LET B$(2)="      "
1635 PRINT AT X(3),Y(3);"   ";
AT X(3)+1,Y(3);"   ";AT X(5),Y(5
);A$(D3, TO 3);AT X(5)+1,Y(5);A$
(D3,4 TO )
1640 FOR F=X(3)+1 TO (7 AND (Y(3
)<10 OR Y(3)>21))+(17 AND (Y(3)>
9 AND Y(3)<22))
1650 PRINT AT F,Y(3)+1;" ";AT F+
1,Y(3)+1;"¸"
1660 NEXT F
1675 LET S=S+10
1676 LET Q=Q+(Q=0)
1680 GOTO 460
1700 REM HIT?
1710 IF X(5)=X(1) AND B$(1)<>"  
    " THEN GOTO 1950
1720 IF X(5)=X(1)+1 AND B$(1)<>"
      " THEN GOTO 1800
1725 IF B$(1)="      " THEN
GOTO 460
1730 LET B$(1)="      "
1735 PRINT AT X(1),Y(1);"   ";
AT X(1)+1,Y(1);"   ";AT X(5),Y(5
);A$(D3, TO 3);AT X(5)+1,Y(5);A$
(D3,4 TO )
1740 FOR F=X(1)+1 TO (7 AND (Y(1
)<10 OR Y(1)>21))+(17 AND (Y(1)>
9 AND Y(1)<22))
1750 PRINT AT F,Y(1)+1;" ";AT F+
1,Y(1)+1;"¸"
1760 NEXT F
1770 GOTO 1675
1800 PRINT AT X(5),Y(5);"   ";
AT X(5)+1,Y(5);"   "
1801 PRINT AT X(1),Y(1);B$(D1,1
TO 3);AT X(1)+1,Y(1);B$(D1,4
TO 6);AT X(3),Y(3);B$(D2,1 TO 3
);AT X(3)+1,Y(3);B$(D2,4 TO 6)
1810 GOTO 1130
1900 PRINT AT X(5),Y(5);"   ";
AT X(5)+1,Y(5);"   "
1901 IF Y(5)<=-1 THEN LET Y(5)=2
9
1905 LET Y(5)=Y(5)-2
1910 GOTO 460
1950 PRINT AT X(5),Y(5);"   ";
AT X(5)+1,Y(5);"   "
1955 LET Y(5)=Y(5)+2
1956 IF Y(5)>=30 THEN LET Y(5)=0
1960 GOTO 460
2500 LET S=S+100
2510 PRINT AT 21,10;"YEE MADE IT
"
2515 LET H1=H1-(H1>0)
2516 LET H2=H2-(H2>11)
2520 PAUSE 100
2530 GOTO 35
3000 SAVE "JO"
3010 PRINT AT 3,3;"   ö    ± ÷  
´    ö   ö";AT 4,3;"  ±    öµ ¶ 
 µ   ±³  öõ";AT 5,3;"  µ   ö µ  
¶ µ    µ   õ";AT 6,3;"±³±  ±³³± 
  ¶÷ ±³³±   õ"
3020 FOR A=1 TO 15
3030 FOR R=A-1 TO 23-A STEP 2
3040 PRINT AT A+7,R+3;"!"
3050 NEXT R
3060 NEXT A
3070 PRINT AT 15,1;"BY:";AT 16,1
;"STEVEN";AT 17,1;"REID"
3080 PRINT AT 21,0;"PRESS ANY KE
Y TO BEGIN PLAY=-=-="
3090 PAUSE 4E4
3100 RUN