This is an updated version of “The Picture” written in assembly using a line drawing routine by Simeon Dwyer. This version uses a double buffer to move the boat.
PROG : 16509
D-FILE: 18603
VARS : 19396
E-LINE: 19397
STKBOT: 19397
STKEND: 19397
9999 means line number
PRINT means treat as KEYWORD P
1 REM /P BY STEVEN REID 2021
* * PICTURE IN MOTION * *
30208 5 6ORND6QRND6RRNDLN +
INKEY$RETURN QASN ,INKEY$LN
DPEEK INKEY$5 6ORND5RINKEY$LN 1
INKEY$EQRND6ORND5 STEP INKEY$LN
1INKEY$LN EDIT INKEY$USRNDBTAB ö
INKEY$URRNDXMRRNDRETURN RETURN
TAB VAL RNDYñMSRND?VAL RNDURRNDW
MRRNDRETURN TAB VAL RNDY MSRND?
VAL RND?>=£ORND MUDPOKE 7ERROR U
PRND MVDPOKE 7ERROR UORND MW
DPOKE 7ERROR UPRND MXDPOKE 7
FAST LN ERR MSGS LPRINT ?1INKEY$
GOSUB OFF£RND5¹DPOKE ñNOT ò
GOSUB KTAN )¹DPOKE E£RNDñNOT ò
GOSUB KTAN )Z 5NOSTALGIC Y-ñ5
GOSUB SXTAB ?INKEY$TAN úñ M?
INKEY$EORNDùF?NEW ?LINE 6?INKEY$
U?INKEY$CHAR LN BINKEY$LN Vò
ERR MSGS EDIT =YñCOS LN X÷INKEY$
XCHAR : " ?L4IF TAN -A-P-RND-ôô
ùô!ôúõùõù÷ùö÷!!!ô!ô!ò÷ò÷òöòöôõ
COPY ;AXAWARDRD2D2D;BKAK!K!H"H"K
"K£,7,7W7V7K£COPY LN /PIUMDPOKE
ACS DEF PROC TAB QPILN ?PITAN UO
DPOKE ACS ?""CHR$ RNDLIST UP
DPOKE ACS ?""CHR$ ILIST Y MQ
DPOKE UODPOKE ACS ZMODPOKE KõYñM
QDPOKE UPDPOKE ACS ZMPDPOKE K!UQ
DPOKE ACS INT MQDPOKE 5¹DPOKE 7)
5 UPDPOKE RETURN CôCHAR ;(
CLEAR ) UODPOKE READ ;6RDPOKE
TAN ERDPOKE UQDPOKE RETURN C$
RETURN ñC-RETURN òC3RETURN óCC
TAN SIN ?TAN ACS ·?TAN INT ?TAN
ACS ??TAN NOT ?TAN ACS *?TAN
INPUT ÷?TAN ERDPOKE UQDPOKE
RETURN C$RETURN ñC-RETURN òC3
RETURN óCCTAN ·?TAN ACS SIN ?
TAN ??TAN ACS INT ?TAN *?TAN
ACS NOT ?TAN INPUT ÷?TAN TAN UY
DPOKE CHAR URNDDPOKE (MPIDPOKE U
ZDPOKE CHAR UINKEY$DPOKE (MCALL
DPOKE 5ERR MSGS DPOKE QñUPI
DPOKE ACS ?C$YCOPY MERR MSGS
DPOKE UPIDPOKE GOSUB ERR MSGS M
PIDPOKE UCALL DPOKE CHAR UPI
DPOKE ACS B(MERROR DPOKE UY
DPOKE MCHAR DPOKE UZDPOKE M
DPOKE CHAR UINKEY$DPOKE (CCHAR
VAL U DPOKE MPDPOKE WM DPOKE U
CHAR DPOKE MODPOKE LN ùPIUERROR
DPOKE ACS ?43UERR MSGS DPOKE
CHAR UCHAR DPOKE MCHAR DPOKE U
CALL DPOKE CHAR UPIDPOKE (ACS B
CHAR UERROR DPOKE MERROR DPOKE
/$UPIDPOKE ACS BCHAR UERROR
DPOKE MERROR DPOKE AT (Q5M
DPOKE ACS :TAN UUDPOKE MODPOKE U
VDPOKE MPDPOKE LN ùPITAN UY
DPOKE CHAR URNDDPOKE (MPIDPOKE U
ZDPOKE CHAR UINKEY$DPOKE (MCALL
DPOKE 5DPOKE DPOKE QñACS ?C$Y
COPY MDPOKE DPOKE UCALL DPOKE
GOSUB ERR MSGS MCALL DPOKE UPI
DPOKE CHAR UCALL DPOKE ACS B(M
ERROR DPOKE UZDPOKE M DPOKE UY
DPOKE MCHAR DPOKE CHAR URND
DPOKE (C8CHAR VAL UCHAR DPOKE MO
DPOKE WMCHAR DPOKE U DPOKE MP
DPOKE LN ùPIUERROR DPOKE ACS ?43
UDPOKE DPOKE CHAR U DPOKE M
DPOKE UPIDPOKE CHAR UCALL DPOKE
(ACS BCHAR UERROR DPOKE MERROR
DPOKE /$UCALL DPOKE ACS BCHAR U
ERROR DPOKE MERROR DPOKE AT (Q5
MDPOKE ACS :TAN 5MDPOKE ACS EXP
UUDPOKE MYDPOKE UWDPOKE MRND
DPOKE UVDPOKE MZDPOKE UXDPOKE M
INKEY$DPOKE UVDPOKE CHAR UX
DPOKE (KòGOSUB ERR MSGS
DEF PROC UUDPOKE CHAR UWDPOKE (K
òGOSUB ERR MSGS )S)UWDPOKE CHAR
UUDPOKE ( AND JCALL LN B
ERR MSGS ?JCALL UXDPOKE CHAR UV
DPOKE ( AND COPY PILN BERR MSGS
?COPY PIUVDPOKE CHAR UXDPOKE MZ
DPOKE ?MINKEY$DPOKE UUDPOKE
CHAR UWDPOKE MYDPOKE ?MRNDDPOKE
TAN CHR$ RNDRETURN RNDKú5TRACE
DPOKE ) READ ;CHR$ RND5¸DPOKE )
READ RZGOSUB DELETE CHR$ 5
TRACE DPOKE ) READ ;5¸DPOKE )
READ RZGOSUB DELETE ZRETURN C3
CHAR UTDPOKE 5 ?FAST SGN ;(
CLEAR ö÷ACS XACS WKòACS CLEAR (
PLOT ACS ?COS ?GOSUB ERR MSGS ?
TAN óöù£
(<-;0369CFILNQTWZINKEY$ERR MSGS
CHAR TRACE PROTECT AUTO DO EXIT
WHEN RESEQ CURSOR RESTORE
NOSTALGIC *HOME DPEEK POP
CLR STACK DUP END WHEN ??????
30841 ????
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
30208 RAND USR 16569
3 STOP
4 SAVE "PIM"
5 RUN