ZX81 Listing for mbsmc.p


ZX81 program listing for **MBS MC***SLR/2022**

**MBS MC***SLR/2022** (mbsmc.p)

My attempt at building a Mandelbrot sets program for the ZX81 in Assembly.


SYSTEM VARIABLES

PROG  : 16509
D-FILE: 18082
VARS  : 18875
E-LINE: 18876
STKBOT: 18881
STKEND: 18881


LEGEND

9999 means line number
PRINT means treat as KEYWORD P


PROGRAM LISTING

   1 REM /M**MBS MC***SLR/2022**
30208                         LN
F?LN J5  M.RND60RNDU.RNDE0RND:
?) RNDLN ?????YZ5  LN TO ?M2RND
63RNDU.RNDE0RND:Z LN L?:?) ?
LN 7?M5RND66RNDY?5 SAVE M8RND69
RNDöRNDVAL õ:JLN APIU5RND?GOSUB
?6RNDU8RNDE9RNDLN ??PRINT U2RND?
LET GOSUB ?3RNDLN L?MERND6FRNDJ5
  MBRND6CRNDAT :/VAL LN ??UBRND?
GOSUB ?CRNDY?5 ?LN 7?PRINT U2RND
?LET GOSUB ?3RNDLN L?MHRND6IRNDJ
5  MKRND6LRNDMNRND6ORNDö?VAL UK
RNDELRND?GOSUB ?LRNDLN L?PRINT
FAST UNRNDEORND?GOSUB ?ORNDLN L?
???LPRINT LET LN 7????UERNDEFRND
LN ??FAST PRINT UNRND?GOSUB ?O
RNDUKRNDELRNDLN L?:RND)  LN L???
?UHRNDEIRNDLN ??MNRND6ORNDLET
LPRINT MKRND6LRND?GOSUB ?LRNDLN
L?PRINT FAST UNRNDEORND?GOSUB ?O
RNDLN L????LPRINT LET LN ??:
INKEY$)  LN $?AT AND 1PIASN 1PI
YñM3PI/!õTAB ?INKEY$JM3PIAT VAL
õY/)?LN FPIAT VAL õY-±?LN FPIUB
RNDECRND:Z)  LN ??MBRND6CRNDAT $
TAB ?INKEY$VAL U8RNDE9RND:Z)  
LN 7?M8RND69RNDAT VAL õ:JLN 4PI
AT õTAB :INKEY$5;;LN ??U.RNDE0
RND:?) (LN ??M.RND60RND:?) ?LN $
? AND LEN RNDLN ???WRNDñJM3PI/õY
ñM3PI?ACS ?""CHR$ RNDLIST ?ACS ?
""CHR$ KLIST - ?ACS Z?Kò-ñ?ACS Z
?Kô?ACS INT ?STR$ RND7?RC÷)5 ;
X4UNPLOT )  ?;SGN U3PIBASN 9??RC
(XC,XC8INPUT ÷?TAN SIN ?TAN ACS
·?TAN INT ?TAN ACS ??TAN NOT ?
TAN ACS *?TAN ?RC(XC,XC8INPUT ÷?
TAN ·?TAN ACS SIN ?TAN ??TAN
ACS INT ?TAN *?TAN ACS NOT ?TAN
OR LN ??Kò OR TAN INT COPY   6?
?LN ??E??F?P4PAUSE TAN RND7J:/
ö4?7(UNPLOT 7$4PLOT TAN ?NEW ?W
IF L??PRINT LN 7?AT INPUT  COS
INPUT  COS ?ACS SNEW ?LEN :(J
TAN ?PLOT TAN ?PZ""?NEW ?W?
PAUSE H??N""?STAN ?NEW ?4ó?FOR
TAN WIF ???NEW ?ASN ??WIF COS ??
DIF ;?LN ??C.SQR VAL LN <?ACS 4
GOSUB ?SGN ?SQR NEW ?RETURN W
ACS 1SQR 7TAN ?NEW ?RETURN ACS 0
ACS 1SQR G""8""WTAN PLOT ?5  
TAN LN ??CNSQR VAL LN <?)?Y /?
GOSUB ?SGN ?SQR ?PKLCOS PRINT
?XC>ACS 5ACS (GOSUB ?ABS R?ACS 5
ñ  GOSUB ?¸·?LET ?3TAN ?GOSUB ?4
óNEW  TAN ñ  KCHR$ INPUT  ?J+?3=
??/ASN DACS ñ*)COS GOSUB ?ACS
ùINKEY$FOR R3RETURN >**?TAN ?P4
IF LCRUN W·4NEXT ?N?4òSCOS FTAN
ñ  RACS ,ACS .ACS /ACS ;X4PRINT
TAN ??INPUT  ?????INPUT  ?????
NEW  C?NEW ?C?WIF )??NEW ??COS W
IF COS ??NEW CHR$ ZKòJTAN
RETURN ?S÷?PLOT ?5  TAN CNEW ?C
PRINT ??FAST STR$ LN B?JACS 8
FOR AT GOSUB ?EXP  AT ùEXP  3AT
?COS ZACS 0ACS 1WW·CABS 3XTAN ?
NEW ?COS WIF ,?JTAN ?P?""?NEW ?4
ôX??TAN WIF 8??TAN ?FOR TAN ?- ?
?·SN·SQ·ST·SW·SZ·SPI·S?·S??NEW
RETURN ·S?·S?·S?·S?·S?·S?·S?ACS
.**??TAN D?KòùºD?KòùºD?KòùºD?Kòù
ºD?KòùºD?KòùºD?Kòùº??NEW RETURN
D?KóùEXP  D?KóùEXP  D?KóùEXP  D?
KóùEXP  D?KóùEXP  D?KóùEXP  D?
ùEXP  D?ACS .?SQR ùSQR 0""=
TAN =ACS .?SQR ùSQR 0TAN ?FOR YZ
5  ?D·?*??NEW ?ASN ??WIF ³??NEW
?4ôX??TAN WIF ??ACS T?NEW ?LEN Z
)JTAN RETURN ?S÷?PLOT ?5  TAN
RGOSUB ?K£XCOS ;DACS GOSUB ?
Kñ$VAL PRINT LN T?SGN AT ºPAUSE
O?X??CNEW ?CTAN J<?Y ,?3X??LN ??
ACS )VAL LN ??ACS )D?LPRINT ??
ñ  ?GOSUB ?TAN LN ??LN ??LN ??
ACS )D?COS **GOSUB ?/TAN ?NEW
?CUWIF ??JTAN ?NCOS ?FOR TAN ?P?
""?NEW ?C9WIF L??TAN
   2 RAND USR VAL "16514"