ZX81 Programs


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

ZX81 Program Listing

hrtbt (hrtbt.p)


SYSTEM VARIABLES

PROG  : 16509
D-FILE: 18135
VARS  : 18928
E-LINE: 18929
STKBOT: 18929
STKEND: 18929


LEGEND

9999 means line number
PRINT means treat as KEYWORD P


PROGRAM LISTING

  10 REM **HEARTBEAT**SLR/2026**
  20 REM **SET THINGS UP**
  30 GOSUB 150
  40 REM **SHOW HEART**
  50 PRINT AT 7,0;"ó¶"
  60 FOR X=S TO E STEP I
  70 LET Y=SIN (P3*X)*(SQR (EXP
2-X*X)/1.6)+SQR (ABS (X))
  80 GOSUB 500
  90 NEXT X
 100 PRINT AT 7,30;"òó"
 110 REM **SHOW LOVE
 120 GOSUB 400
 130 RUN
 140 REM **SETUP**
 150 CLS
 160 LET E=EXP 1
 170 LET I=18*E/362
 180 LET F=-E
 190 LET S=F+I
 200 LET P3=PI*PI*PI
 210 LET SC=10.33
 220 LET OX=64/2
 230 LET OY=22/2
 240 LET X0=OX+F*SC
 250 LET Y0=OY+SQR (E)*SC
 260 DIM A$(10,27)
 270 LET A$(1)="IF PULSE THEN LO
VE"
 280 LET A$(2)="LET H=HEARTBEAT"
 290 LET A$(3)="LET PULSE=NOT 0"
 300 LET A$(4)="GOTO HEART"
 310 LET A$(5)="LET MYHEART=YOUR
S"
 320 LET A$(6)="IF SIGNAL THEN L
OVE=FOUND"
 330 LET A$(7)="IF PULSE THEN LO
VE"
 340 LET A$(8)="LET PULSE=PULSE*
LOVE"
 350 LET A$(9)="IF LOVE THEN LIV
E"
 360 LET A$(10)="PRINT ""WARNING
: LOVE HIGH"""
 370 LET WAIT=11
 380 LET P$="**"
 390 RETURN
 400 REM **MESSAGE**
 410 LET MSG=0
 420 LET WAIT=WAIT-1
 430 LET NEWMSG=INT (RND*10)+1
 440 IF NEWMSG=MSG THEN GOTO 430
 450 LET MSG=NEWMSG
 460 PRINT AT 21,21;"HEART BEAT"
;AT 0,0;A$(MSG)
 470 GOSUB 800
 480 IF WAIT<0 THEN RUN
 490 GOTO 420
 500 REM **DRAWTO**
 510 LET X1=OX+X*SC
 520 LET Y1=OY+Y*SC
 530 LET A=X0-X1
 540 LET B=Y0-Y1
 550 LET C=(A AND ABS A>=ABS B)+
(B AND ABS B>=ABS A)
 560 IF C=0 THEN LET C=.1
 570 FOR D=0 TO C STEP SGN C
 580 PLOT X0+A/C*-D,Y0+B/C*-D
 590 NEXT D
 600 LET X0=X1
 610 LET Y0=Y1
 620 RETURN
 700 REM **SAVE**
 710 SAVE "HRTBT"
 720 PRINT AT 21,16;"SHOW HEART 
BEAT"
 730 LET P$="??"
 740 GOSUB 800
 750 RUN
 800 REM **KEY**
 810 LET P=100
 820 LET P=P-1
 830 PRINT AT 21,31;P$(1+INT (.5
+P/2-INT (P/2)));
 840 IF P>0 AND INKEY$="" THEN
GOTO 820
 850 RAND 0
 860 RETURN