ZX81 Programs


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

ZX81 Program Listing

**DRAGONS LAIR SLR/1985 (dl.p)


SYSTEM VARIABLES

PROG  : 16509
D-FILE: 23094
VARS  : 23887
E-LINE: 24263
STKBOT: 24263
STKEND: 24263


LEGEND

A means INVERSE A
A means GRAPHICS A
PRINT means treat as KEYWORD P


PROGRAM LISTING

  10 REM **DRAGONS LAIR SLR/1985
  11 LET H$="COM"
  12 LET H=400
  20 LET M=5
  30 LET S=0
  35 CLS
  40 PRINT ,,,,"DRAGONS LAIR...T
HE EXCITMENT IS SSSSSSSSSSSS   A
BOUT TO BEGIN**"
  50 PRINT ,,,,"WHAT ARE YOUR IN
ITIALS?";
  60 INPUT S$
  70 PRINT S$
  80 PRINT ,,,,"                
                         E8E    
                  GGHH  E1 E    
HHHHHHHHHHGG    GGHHHF  W       
FFHHHHHHHHHHHG HHHHHF     H     
  FHHHHHHHHHHHHHHHHF     HH     
   FFFHHHHHHHHHHHHHHGGH  HHH   H
HGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
HHHHHHHHHHHHHHHH"
  90 PRINT ,,,,"PRESS ENTER TO B
EGIN............"
 100 PAUSE 4E4
 110 CLS
 120 FOR A=0 TO 12
 130 PRINT AT A,0;"AAAAAAAAAAAA 
        AAAAAAAAAAA"
 140 NEXT A
 150 PRINT AT 5,0;"AAAAAAAAAAAAF
        AAAAAAAAAAA"
 160 PRINT AT 7,0;"AAAAAAAAAAAAF
        AAAAAAAAAAA"
 165 PRINT AT 0,0;"SCORE:";S;AT
1,0;"MEN:";M
 170 LET C$="AAAA"
 180 LET B$="  W7T"
 190 FOR A=0 TO 9
 200 PRINT AT A,14;"      ";AT A
+1,14;B$;AT A+2,14;C$
 210 IF INKEY$="Z" THEN GOTO 230
 220 NEXT A
 230 IF A<>3 AND A<>5 THEN GOTO
300
 240 PRINT AT A+1,16;"67R";AT A,
15;"W7";AT A+1,17;"T "
 250 PRINT AT A,14;"WR ";AT A+1,
16;"T ";AT A-1,13;"WR";AT A,14;"
 T";AT A+1,16;" "
 260 PRINT AT A-1,13;"  ";AT A,1
2;"1   ";AT A+1,13;"T";AT A+1,12
;"8 "
 270 LET S=S+(50 AND A=3)+(100
AND A=5)
 280 PRINT AT A,11;" ";AT A+1,11
;" ";AT A,11;"E8";AT A+1,11;"ET"
;AT A,11;"1 ";AT A+1,11;"5 ";AT
A,11;"A";AT A+1,11;"A"
 290 GOTO 330
 300 PRINT AT A+1,14;"TYTYT"
 310 LET M=M-1
 320 IF M=0 THEN GOTO 1000
 325 GOTO 100
 330 PRINT AT 0,0;"SCORE:";S;AT
1,0;"MEN:";M
 340 PAUSE 4E4
 350 CLS
 360 FOR A=0 TO 10
 370 PRINT AT A,0;"AAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAA"
 380 PRINT AT A+1,0;"           
                     "
 390 NEXT A
 400 PRINT AT 9,15;"1R";AT 10,15
;"YR"
 401 FOR A=1 TO 50
 402 NEXT A
 410 PRINT AT 5,12;"        "
 420 FOR A=6 TO 10
 430 PRINT AT A,11;"EE";AT A,19;
"RR"
 440 NEXT A
 450 LET L=SIN PI
 460 IF INKEY$="M" THEN GOTO 530
 470 PRINT AT 9,15;"YY";AT 10,15
;"67"
 480 LET M=M-1
 485 IF M=0 THEN GOTO 1000
 490 PRINT AT 0,0;"SCORE:";S;AT
1,0;"MEN:";M
 500 PAUSE 4E4
 510 CLS
 520 GOTO 680
 530 LET S=S+25
 531 PRINT AT 8,15;"1R";AT 9,15;
"YR";AT 10,15;"AA"
 535 IF INKEY$<>"" THEN GOTO 535
 540 FOR G=1 TO 10
 550 PRINT AT 6,13;"  EQ  ";AT 7
,13;"  WR  "
 560 IF INKEY$="M" THEN GOTO 630
 570 PRINT AT 6,13;" E  Q ";AT 7
,13;" W  R "
 580 IF INKEY$="M" THEN GOTO 600
 590 NEXT G
 600 PRINT AT 7,15;"1R";AT 8,15;
"YR";AT 9,15;"AA"
 610 PRINT AT 6,13;"  EQ  ";AT 7
,13;"  WR  "
 620 GOTO 480
 630 PRINT AT 7,15;"1R";AT 8,15;
"YR";AT 9,15;"AA"
 640 PRINT AT 6,13;" E  Q ";AT 7
,13;"  1R  "
 650 PRINT AT 6,15;"1R";AT 7,15;
"YR";AT 8,15;"AA"
 660 PRINT AT 6,13;"  EQ  ";AT 7
,13;"  WR  "
 665 LET S=S+100
 670 GOTO 490
 680 LET A$="        AAAAAAAAAAA
AAAAA                 AAAAAA  AA
AAAA                   AAAA    A
AAA                     AAA 1R A
AA                       AAAYR A
A                               
                                
                                
                                
             "
 690 FOR G=1 TO 9 STEP 2
 700 PRINT AT 0,0;A$
 710 IF INKEY$<>"" THEN GOTO 710
 720 PRINT AT 2,11;"QW";AT 3,11;
"RE"
 730 IF INKEY$<>"" THEN GOTO 730
 740 PRINT AT 2,11;"AA";AT 3,11;
"AA";AT 3,12;"QW";AT 4,12;"RE"
 750 IF INKEY$="X" THEN GOTO 790
 760 PRINT AT 3,12;"AQW";AT 4,12
;"ARE"
 770 IF INKEY$="X" THEN GOTO 790
 780 GOTO 950
 790 PRINT AT 0,0;A$
 795 LET S=S+25
 800 IF INKEY$<>"" THEN GOTO 800
 810 PRINT AT 2,19;"QW";AT 3,19;
"RE"
 820 IF INKEY$<>"" THEN GOTO 820
 830 PRINT AT 2,19;"AA";AT 3,19;
"AA";AT 3,18;"QW";AT 4,18;"RE"
 840 IF INKEY$="X" THEN GOTO 870
 850 PRINT AT 3,17;"QWA";AT 4,17
;"REA"
 860 IF INKEY$<>"X" THEN GOTO 95
0
 865 LET S=S+25
 870 NEXT G
 880 PRINT AT 0,0;A$
 890 PRINT AT 6,14;"7  7";AT 7,1
4;"6  6"
 895 LET O=0
 900 FOR A=1 TO 10
 910 LET L=SIN PI
 920 IF INKEY$="X" THEN LET O=O+
1
 930 NEXT A
 940 IF O=2 THEN GOTO 1080
 950 PRINT AT 3,15;"TT";AT 4,15;
"67"
 960 LET M=M-1
 970 IF M=0 THEN GOTO 1000
 980 PRINT AT 0,0;"SCORE:";S;AT
1,0;"MEN:";M
 990 GOTO 1050
1000 CLS
1010 PRINT "DRAGONS LAIR...GAME 
OVER******  SSSSSSSSSSSS   SCORE
:";S
1012 IF S>H THEN LET H$=S$
1014 IF S>H THEN LET H=S
1016 PRINT ,,,,"HIGH SCORE......
................";H$;"----";H
1020 PRINT ,,,,"YOU DIED, TOO BA
D FOR YOU...TRY AGAIN?(PRESS ENT
ER TO BEGIN...) "
1030 PAUSE 4E4
1040 GOTO 20
1050 PAUSE 4E4
1060 CLS
1070 GOTO 1110
1080 LET S=S+100
1090 PRINT AT 0,0;A$;AT 1,15;"AA
";AT 2,14;"AAAA";AT 3,14;"A1RA"
1100 GOTO 980
1110 FOR A=0 TO 10
1120 PRINT AT A,0;"             
                   ";AT A+1,0;"A
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
1230 NEXT A
1250 PRINT AT 10,1;"8";AT 9,5;"1
R";AT 10,5;"YR";AT 9,28;"1R";AT
10,28;"1R";AT 3,20;"E7";AT 4,18;
"77 42 8";AT 5,17;"51EE  E2";AT
6,17;"1E  T   ";AT 7,17;"Q8 1  E
E";AT 8,20;"4  88";AT 9,21;"  Q"
;AT 10,19;"E  2"
1260 FOR A=1 TO 20
1270 IF INKEY$="Z" THEN GOTO 131
0
1280 NEXT A
1290 PRINT AT 10,5;"HH";AT 9,5;"
GH"
1300 GOTO 1500
1310 FOR A=5 TO 1 STEP -1
1320 PRINT AT 9,A;"1R ";AT 10,A;
"YR "
1330 NEXT A
1335 LET S=S+25
1340 IF INKEY$<>"" THEN GOTO 134
0
1350 LET O=0
1360 FOR A=1 TO 10
1370 LET L=SIN PI
1380 IF INKEY$="." THEN LET O=O+
1
1390 NEXT A
1400 IF O=2 THEN GOTO 1430
1410 PRINT AT 10,1;"HH";AT 9,1;"
HG"
1420 GOTO 1500
1430 LET S=S+50
1431 FOR A=0 TO 16
1440 PRINT AT 9,A;" 57";AT 10,A;
" YR"
1450 IF INKEY$="M" THEN GOTO 149
0
1460 NEXT A
1470 PRINT AT 9,A;" HG";AT 10,A;
" HH"
1480 GOTO 1500
1490 GOTO (1470 AND A<15)+(1550
AND A>14)
1500 LET M=M-1
1510 IF M=0 THEN GOTO 1000
1520 PRINT AT 0,0;"SCORE:";S;AT
1,0;"MEN:";M
1530 PAUSE 4E4
1540 GOTO 110
1550 PRINT AT 8,21;"HH"
1560 LET L=SIN PI+SIN PI+SIN PI
1570 FOR A=1 TO 6
1580 FOR G=10 TO 3 STEP -1
1590 PRINT AT G,17;("HHHHHHHH"
AND A/2<>INT (A/2))+("        "
AND A/2=INT (A/2))
1591 PRINT AT 9,15;"1R";AT 10,15
;"YR"
1600 NEXT G
1601 NEXT A
1610 FOR A=1 TO 100
1620 NEXT A
1630 LET S=S+200+INT (RND*5+100)
1640 PRINT AT 9,0;"             
 5778                           
 YRE2              "
1650 GOTO 1520
1660 CLS
1670 SAVE "DL"
1680 PRINT "PROGRAM LOADED...PRE
SS ENTER... "
1690 PAUSE 4E4
1700 GOTO 20