ZX81 Listing for picasm.p


ZX81 program listing for *PICTURE ASM*SLR/2021**

*PICTURE ASM*SLR/2021** (picasm.p)

This is an updated version of “The Picture” written in assembly. It uses a line drawing routine by Simeon Dwyer.


SYSTEM VARIABLES

PROG  : 16509
D-FILE: 17611
VARS  : 18404
E-LINE: 18405
STKBOT: 18405
STKEND: 18405


LEGEND

9999 means line number
PRINT means treat as KEYWORD P


PROGRAM LISTING

   1 REM /L BY STEVEN REID 2021 
* * THE PICTURE IN ASM * *
30241 )DEF PROC ERR MSGS ñô 
GOSUB KFAST LN DPEEK CALL
LPRINT /FOR ;AXAWARDRD2D2D;BKAK!
K!H"H"K"K£,7,7W7V7K£ -A-P-RND-ôô
ùô!ôúõùõù÷ùö÷!!!ô!ô!ò÷ò÷òöòöôõ
COPY LN HINKEY$UCHAR ERR MSGS
ACS DEF PROC TAB ACS INKEY$LN ³
INKEY$TAN UTRACE ERR MSGS ACS ?
""CHR$ RNDLIST UDRAW ERR MSGS
ACS ?""CHR$ ILIST Y MUNDRAW
ERR MSGS UTRACE ERR MSGS ACS ZM
TRACE ERR MSGS KõYñMUNDRAW
ERR MSGS UDRAW ERR MSGS ACS ZM
DRAW ERR MSGS K!UUNDRAW
ERR MSGS ACS INT MUNDRAW
ERR MSGS E£RND7)5 UDRAW
ERR MSGS RETURN  CôCHAR ;(CLEAR
)  UTRACE ERR MSGS READ ;6
PROTECT ERR MSGS TAN EPROTECT
ERR MSGS UUNDRAW ERR MSGS
RETURN  C$RETURN ñC-RETURN òC3
RETURN óCCTAN SIN ?TAN ACS ·?
TAN INT ?TAN ACS ??TAN NOT ?TAN
ACS *?TAN INPUT ÷?TAN EPROTECT
ERR MSGS UUNDRAW ERR MSGS
RETURN  C$RETURN ñC-RETURN òC3
RETURN óCCTAN ·?TAN ACS SIN ?
TAN ??TAN ACS INT ?TAN *?TAN
ACS NOT ?TAN INPUT ÷?TAN TAN U
DO ERR MSGS CHAR UEXIT ERR MSGS
(MWHILE ERR MSGS ULOOP ERR MSGS
CHAR UUNTIL ERR MSGS (MWHEN
ERR MSGS 5INDENT ERR MSGS QñU
WHILE ERR MSGS ACS ?C$YCOPY M
INDENT ERR MSGS UWHILE ERR MSGS
GOSUB ERR MSGS MWHILE ERR MSGS U
WHEN ERR MSGS CHAR UWHILE
ERR MSGS ACS B(MOFFERR MSGS UDO
ERR MSGS MCURSOR ERR MSGS ULOOP
ERR MSGS MDATA ERR MSGS CHAR U
UNTIL ERR MSGS (CCHAR VAL UDATA
ERR MSGS MDRAW ERR MSGS WMDATA
ERR MSGS UCURSOR ERR MSGS M
TRACE ERR MSGS LN 2INKEY$UOFF
ERR MSGS ACS ?43UINDENT
ERR MSGS CHAR UCURSOR ERR MSGS  
MCURSOR ERR MSGS UWHEN ERR MSGS
CHAR UWHILE ERR MSGS (ACS BCHAR
UOFFERR MSGS  MOFFERR MSGS /$U
WHILE ERR MSGS ACS BCHAR UOFF
ERR MSGS  MOFFERR MSGS AT (Q5
CHAR ERR MSGS ACS :TAN U
DEF PROC ERR MSGS MTRACE
ERR MSGS UEND PROC ERR MSGS M
DRAW ERR MSGS LN 2INKEY$TAN UDO
ERR MSGS CHAR UEXIT ERR MSGS (M
WHILE ERR MSGS ULOOP ERR MSGS
CHAR UUNTIL ERR MSGS (MWHEN
ERR MSGS 5RESEQ ERR MSGS QñACS ?
C$YCOPY MRESEQ ERR MSGS UWHEN
ERR MSGS GOSUB ERR MSGS MWHEN
ERR MSGS UWHILE ERR MSGS CHAR U
WHEN ERR MSGS ACS B(MOFF
ERR MSGS ULOOP ERR MSGS MDATA
ERR MSGS UDO ERR MSGS MCURSOR
ERR MSGS CHAR UEXIT ERR MSGS (C8
CHAR VAL UCURSOR ERR MSGS M
TRACE ERR MSGS WMCURSOR
ERR MSGS UDATA ERR MSGS MDRAW
ERR MSGS LN 2INKEY$UOFFERR MSGS
ACS ?43URESEQ ERR MSGS CHAR U
DATA ERR MSGS  MDATA ERR MSGS U
WHILE ERR MSGS CHAR UWHEN
ERR MSGS (ACS BCHAR UOFF
ERR MSGS  MOFFERR MSGS /$UWHEN
ERR MSGS ACS BCHAR UOFFERR MSGS
 MOFFERR MSGS AT (Q5CHAR
ERR MSGS ACS :TAN 5CHAR
ERR MSGS ACS EXP UDEF PROC
ERR MSGS MDO ERR MSGS UERR MSGS
MEXIT ERR MSGS UEND PROC
ERR MSGS MLOOP ERR MSGS UDELETE
ERR MSGS MUNTIL ERR MSGS U
END PROC ERR MSGS CHAR UDELETE
ERR MSGS (GOSUB ERR MSGS
DEF PROC UDEF PROC ERR MSGS
CHAR UERR MSGS (GOSUB
ERR MSGS )S)UERR MSGS CHAR U
DEF PROC ERR MSGS ( AND CODE PI
LN WCALL ?CODE PIUDELETE
ERR MSGS CHAR UEND PROC
ERR MSGS ( AND =PILN WCALL ?=PIU
END PROC ERR MSGS CHAR UDELETE
ERR MSGS MLOOP ERR MSGS ?MUNTIL
ERR MSGS UDEF PROC ERR MSGS
CHAR UERR MSGS MDO ERR MSGS ?M
EXIT ERR MSGS TAN CHR$ RND
RETURN RNDKú5RESTORE ERR MSGS ) 
 READ ;CHR$ RND51ERR MSGS )  
READ RZGOSUB DELETE CHR$  5
RESTORE ERR MSGS )  READ ;51
ERR MSGS )  READ RZGOSUB DELETE
ZRETURN  C3CHAR UAUTO ERR MSGS 5
  ?FAST SGN ;(CLEAR ö÷ACS XACS W
ACS CLEAR (PLOT ACS ?COS ?
GOSUB ERR MSGS ?TAN   ñòó?DPOKE
 òöôõòöôõòññCOPY  ôõ óöù£(<-;036
9CFILNQTWZINKEY$ERR MSGS CHAR
TRACE PROTECT AUTO DO EXIT WHEN
RESEQ CURSOR RESTORE NOSTALGIC *
HOME DPEEK POP CLR STACK DUP
END WHEN ??????
30841 ????
   2 RAND USR 16565
   3 STOP
   4 SAVE "PICASM"
   5 RUN