&X; Touch Tablet / Joy Stick Drawing&X; Program for Micropainter & Atari X; Artist("X; Includes Atari Artist Loader2&X; and other modifications to allow<$X; operation on 400/800 machines.FX;PX; Version 800/87ZX;dX; Saved as ARTIST.V81nX;x(X; June 1987 (Minor Changes May 1988)X;X;@;; START OF SYSTEM IOCBSIOCBX;.ICHID ;; DEVICE HANDLER IS (SET BY OS)*ICDNO ;; DEVICE NUMBER (SET BY OS)ICCOM ;; I/O COMMANDICSTA ;; I/O STATUS ICBADR ;; BUFFER ADDRESS'ICPUT ;; DH PUT ROUTINE (ADR-1)ICBLEN ;; BUFFER LENGTHICAUX1 ;; AUX 1ICAUX2 ;; AUX 2ICAUX3 ;; AUX 3ICAUX4 ;; AUX 4"ICAUX5 ;; AUX 5,ICAUX6 ;; AUX 66X;@ X; IOCB COMMAND VALUE EQUATESJX;TCOPN;; OPEN^!CGBINR;; GET BINARY RECORDhCGTXTR;; GET TEXT RECORDr!CPBINR ;; PUT BINARY RECORD|CPTXTR ;; PUT TEXT RECORDCCLOSE ;; CLOSE CSTAT ;; GET STATUSX; X;#X; AUX1 VALUES REQUIRED FOR OPENX;OPIN;; OPEN INPUTOPOUT;; OPEN OUTPUTOPUPD ;; OPEN UPDATEOPAPND ;; OPEN APPENDOPDIR;; OPEN DIRECTORYX;X; MISC ADDRESS EQUATESX;CPALOC ;; POINTER TO CP"WARMST;; WARMSTART (0=COLD)&'MEMLO;; AVAILABLE MEM (LOW) PTR0)MEMTOP;; AVAILABLE MEM (HIGH) PTR:SDMCTL/D1APPMHI;; UPPER LIMIT OF APPLICATION MEMORYNRTCLOCKX CIOCHR/b ICIDN0.l IOCBAS v ICCOMT ICHIDZ  DSTATLATACHRFILDATSSFLAG CHAR HOLD2TMPLBTTMPROWTMPCOL COLP0 COLP1COLOR0COLOR1COLOR2COLOR3COLOR4 INITADR;; LOAD/INIT ADRGOADR;; LOAD/GO ADR CH;; KEYBOARD*(CARTLOC;; CARTRIDGE RUN LOCATION4CIOV;; CIO ENTRY ADR>SETVBV\HEOL;; END OF LINE CHAM ATRACTMR TMPCHRP\ HOLD1QfROWCRST;; CURSOR ROWpCOLCRSU;; CURSOR COLUMNz#DINDEXW;; CURRENT SCREEN MODESAVMSCX;; START OF SCREEN OLDROWZ OLDCOL[ OLDADR^ NEWCOLa NEWROW` MLTTMPf RAMTOPj SHFAMTo ROWACp COLACr ENDPTt DELTARv DELTACw ROWINC COLINC$ COUNTR~.DLL0;; POINTER TO GR08DLH0;; DISPLAY LISTBDLL7;; POINTER TO GR15LDLH7;; DISPLAY LISTV(SAVTAB;; POINTER TO COLOUR TABLES` DLINUMf SAVPICj ADRESSdt DMASK~ ICBALD ICBAHE ICCOMZ" ICSTAZ# ICBALZ$ ICBAHZ% ICBLLZ( CURSORPICTYPE XTEMP YTEMP LOC7 LOC8 LOC9  LOC10 LOC11 LOC12( LOC132 LOC14< PICCTRFHPOSP0PHPOSP1ZGRACTLdPMBASEnGPRIORoxPADDL0pPADDL1qSTICK0xSTICK3{PTRIG0|PTRIG1}STRIG0X;!PMSTART`;;START OF PM AREAPLR0d;;START OF PLAYER 0PLR1e;;START OF PLAYER 1ISTABi;;DLI ON/OFF TABLEICTAB0i;;BACKGRND TABLEICTAB1j;;COLOR 1 TABLEICTAB2@k;;COLOR 2 TABLEICTAB3l;;COLOR 3 TABLESECPIC0;;BACKUP PICTUREX;"X; Start of Program,X;6p@X;JMODE ;;SCREEN MODETSCREEN AS:A=EOL^KEY AK:A=EOLhEDIT AE:A=EOLr DISK AD1:PICTURES.PICA=EOL|PIC A.PICA=EOL$COLOR ;; BASIC'S COLOR COMMANDXPOS =;;X & Y POSITIONS"YPOS ;;USED BY PLOT & DRAWTODLPOS ;;CURRENT DL LINEFLAG ;;GR MODE FLAGJFLAG ;;JOYSTICK FLAG(DLFLAG =;;INTERRUPTS ON/OFF FLAG-DRAWFLAG =;;PLOTTING IN PROGRESS FLAGPLOTFLAG ;;PLOT/DRAW FLAGFILFLAG ;;PLOT/FILL FLAGCURSORH =,CURSORM ====(==(====,CURSORC ====&=D==D=&==,CURSORD =8=D=D====D=D=8=,CURSORA ==== =J==J===,CURSORF ===T=(======POSCUR !SAVM0L ;;POINTER TO STARTSAVM0H ;;OF GR0 SCREEN&!SAVM7L ;;POINTER TO START0SAVM7H ;;OF GR15 SCREEN:-VDSLT7 ;;POINTER TO GR15 DISPLAY LISTDFNAME ;;FILE NAMENX;XX;bSTART$>;;START AT LAST !l &MODEv! CLOSE;;CLOSE EXISTING SCREEN OPSCR;;OPEN GR.0 SCREEN INITSCR;;INITIAL SCREEN$> CLOSE;;CLOSE SCREEN OPSCR;;OPEN NEW SCREEN$> CLOSE;;CLOSE #1 AND OPEDIT;;OPEN SCREEN EDITORQ0;;SAVE DL POINTERSPDLL0;;IN PAGE ZEROQ1 PDLH0(QSAVMSC;;SAVE START OF SCREEN MEMORY PSAVM0L QSAVMSC PSAVM0H Q>;;TURN SCREEN OFF* PSDMCTL4PINITCOL4;;DL FLAG OFF> MODSCR;;MODIFY D.LISTH WRITE0;;WRITE SCREENR QRAMTOP\S>;;LOWER RAMTOPfPRAMTOP;;AND OPEN GR.15pQ>;;GRAPHICS SCREENzPMODE;;USING #6$>` OPSCR QRAMTOPO>;;RESET RAMTOP TOPRAMTOP;;ORIGINAL VALUEQ0PDLL7;;SAVE DL POINTERSQ1;;TO GR15 SCREENPDLH7;;IN PAGE ZEROQSAVMSC;;SAVE POINTER TOPSAVM7L;;SCREEN MEMORYQSAVMSC PSAVM7H GR15 Q> PDINDEX$ Q>;;ENABLE PMG FOR. PGRACTL;;CURSOR8 Q>5PMSTARTB PPMBASEL Q>:;;SWITCH SCREENV P/;;BACK ON` Q>j $>5VBI0;;SET VBI FOR NONEt %>4VBI0;;DLI MODE INITIALLY~ SETVBV Q>6 PHPOSP1;;POS. PLAYER 1  ERASE1;;ERASE PLAYER 1  CLRISTAB;;CLEAR D/L TABLE Q>4DLI P Q>5DLI P Q> PGPRIOR Q> P Q>;;SET JOYSTICK PJFLAG;;FLAG X; X; Read Tablet Routine X; X; Main Loop( X;2 Q>;;SET INITIAL< PCOLOR;;COLOUR TO 1Z Q>4CURSORM;;SET NORMALd PCURSOR;;CURSORn Q>5CURSORMx PCURSOR Q> PPLOTFLAG PLOOPQ> PCH PRLQJFLAG;;JOYSTICK FLAG FPRL1;;SET ? &!JPLOT;;YES,GO TO JOYSTICK ROUTINE PRL1Q> PDRAWFLAG TABPOS (> DPENON )> DPENON PENOFF !PRL !PENONQ>;;INITIALISE AVERAGE" P;;ROUTINES, PEN2 AVLOOP6 PPOSCUR;;A HOLDS Y POS7 PDLPOS@ QXPOS;;GET X POSITIONJ O>-;;ADD X OFFSETT PHPOSP0;;POSITION CURSOR^ Q>h PCOLP0r QSTICK0;;BUTTON PRESSED| R> HPLT1;;NO! NO PLOT  TABPOS;;READ TABLET (> ENPLT )> FNPLT !PEN2;;AND LOOP PLT1Q>;;YES, MOVE PHPOSP0;;CURSOR AND GO SAVEPIC  PLOT;;AND PLOT Q>;;SET PLOTTING IN PDRAWFLAG;;PROGRESS FLAG DDD1 TABPOS;;READ TABLET (> ENPLT (> FNPLT QSTICK0 R> FNPLT AVLOOP PPOSCUR PDLPOS DRAWTO;;PLOT FURTHER POINTS !DDD1;;AND LOOP& "NPLT!PRL;;END OF CURRENT PLOT0 X;: PENOFFQ>? PATRACTD PHPOSP0N QCH;;KEY PRESSED ?X R>b FNOKEY;;IF PRESSED THENl  CHECKEY;;GET VALUEv #LOOP5QSTICK0;;JUST WAITING FOR R>;;BUTTON TO BE HLOOP5;;RELEASED : X; !NOKEYQSTICK0;;NO KEY PRESSED R>;;BUTTON PRESSED FJPRL;;NO ! Q>@ P Q> PSDMCTL DELAY  GR0;GO TO MENU DELAY #PRESSQSTICK0;;JUST WAITING FOR R>;;BUTTON TO BE HPRESS;;RELEASED* Q>:4 PSDMCTL> Q>H PR JPRL:;;NEXT POSITION\ X;f X; Draw Line Loopp X;z DLOOPQ>;;CLEAR KEYBOARD PCH Q>4CURSORD;;SET DRAWING PCURSOR;;CURSOR Q>5CURSORD PCURSOR Q>;;SET FLAG TO LINE MODE PPLOTFLAG #DRLQJFLAG;;CHECK JOYSTICK FLAG FDRL1 !DJLOOP;;USE JOYSTICK$DRL1 TABPOS;;READ TABLET.(>8 DITSONB)>L DITSONV PENOFF`Q>4CURSORDj PCURSORtQ>5CURSORD~PCURSOR!DRLITSONQXPOSO>- PHPOSP0 QYPOS PPOSCUR PDLPOS QSTICK0R>HDRL SAVEPIC PLOT;;PLOT START OF LINEDRL2QSTICK0;;JUST WAITINGR>  HDRL2!DRL3 TABPOS;;GET END OF LINE(>( DDRAW2)>< DDRAWFQ>P PHPOSP0Z !DRL3dDRAWQXPOSnO>-x PHPOSP0 QYPOS PPOSCUR QSTICK0R> HDRL3 DRAWTO;;DRAW LINEDRL4QSTICK0R> HDRL4!DRL;;NEXT LINEX;X; Close # RoutineX;!CLOSEQ>CCLOSE;;EXPECTS X-REGPICCOM9;;TO CONTAIN #!CIO"X;,X; Open Screen Routine6X;@OPSCRQMODE;;SCREEN MODEJ PICAUX29TM>^N>hL> r PICAUX19| Q>COPN PICCOM9 Q>4SCREEN PICBADR9 Q>5SCREENPICBADR9!CIOX;X; Modify Screen to ANTIC 15X;GR15QDLL7P QDLH7P%>Q>P@7&%>0Q>N:P@7D%>N LBL15Q>XP@7b3l)>cv HLBL15Q>NP@7333 LBL16Q>P@73)> HLBL16:X;X; Open keyboardX; OPKEYQ>COPN PICCOM9  Q>4KEY* PICBADR94 Q>5KEY>PICBADR9H!CIORX;\X; Open E: DevicefX;pOPEDITQ>COPNz PICCOM9 Q>4EDIT PICBADR9 Q>5EDITPICBADR9 Q>OPUPD PICAUX19!CIOX;X; Open D: DeviceX;#OPDISKPICAUX19;;DIRECTION BYTE Q>COPN PICCOM9 Q>4DISK PICBADR9 Q>5DISK$PICBADR9. CIO8 IDONEB !ERRORL DONE:VX;`X; Plot Point RoutinejX;kPLOTQFILFLAGl HFILLt QXPOS~PU QXPOSPV QYPOSPT QCOLOR PCIOCHR !MYCIOX; X; Draw Line RoutineX;(DRAWTOQCOLOR;;USES OPERATING SYSTEM(P2 QXPOS<PUF QXPOSPPVZ QYPOSdPTxQ> !MYCIOX;X; Fill Area RoutineX;FILLQCOLOR PFILDAT QXPOS PCOLCRS QXPOSPCOLCRS QYPOS PROWCRSQ>" !MYCIO@X;D>D:MYCIO.M65EX;JERROR7;;PULL RETURN OFFT7;;STACK AND CLOSE^!ERRhX;rX; Erase screen routine|X;ERASEPICQSAVM7L PSAVTAB QSAVM7HPSAVTABQ>>?CLEARP@SAVTAB73 HCLEAR#SAVTAB2(> HCLEAR:X;&X; ADD DLI ROUTINE0X;: ADDLIQ>DPCHNQDLFLAG;;DL FLAG SET ?XM>@bHFLAGSET;;YES OKl:v!FLAGSET DLINES;;COPY DLTABLEQ>4CURSORA;;SET ARROWPCURSOR;;CURSORQ>5CURSORAPCURSORQ>@;;X-POS CURSOR PHPOSP0Q>PADDLOOP TABPOS(>;;GET Y-POS FADDL2)> FADDL2 AVLOOP PPOSCUR;;A HOLDS Y POS PDLPOS  QXPOS*O>-4 PHPOSP0>QSTICK0;;BUTTON PRESSED ?HR>R FADDLOOP\QDLPOS;;ADD TO TABLE -f>pO> z?QISTAB9;;ZERO INDICATESPPLR18;;ACTIVE LINEN> PISTAB9STK0QSTICK0;;WAIT FORR>;;BUTTON TO BEHSTK0;;RELEASED !ADDLOOP!ADDL2QSTICK0;;BUTTON PRESSEDR>;;PEN OFFFADDLOOP;;ERASE DL DISPLAY ERASE1ADDL1QSTICK0;;AND RETURNR> HADDL1:$X;.X; Add DLI from Joystick8X;BADDLIJQ>LPCHV QDLFLAG`M>@jHDLFLAGSETt:~DLFLAGSET DLINESQ>4CURSORA PCURSORQ>5CURSORAPCURSORQ> PXPOSJADDLOOP JOY2 QYPOS PDLPOSQCHR> FQQQ7R>!  FQQQ3 CHECKDIRQ>(PCH2QQQ7QSTRIG0< HJADDLOOPF QDLPOSP>ZO>d?n QISTAB9x PPLR18N> PISTAB9QQQ2QSTRIG0 FQQQ2 !JADDLOOPQQQ3 ERASE1Q>PCH:X;X;Change Color RegistersX;SETCOLQCHR> HBACKDLI$>;;COL BACKGRND" !CHANGE,BACKDLIR>;;'B' PRESSED ?6HTRYC2;;CHANGE TOP COLOUR@!CBACK;;IN DLI MODEJ TRYC2R>T HTRYC3^$>;;COL REG #0h !CHANGEr TRYC3R>| HTRYC4$>;;COL REG #1 !CHANGE TRYC4R> HCHANGE$>;;COL REG #2CHANGEQFLAG;;GR0 SCREEN ?GSKIP;;YES SKIP DLI CHECKQDLFLAG;;NO! CHECK DLIM>@;;FLAG AND GOFSKIP;;CHANGE COLOURS !DLISET SKIPQCHR>;; ''-Col Up HCOL2Q> PCOLINC!UPCOL2R>;; '' -Col Down HCOL3Q> PCOLINC !DOWNCOL3R>;; '' -Lum Down  HCOL4 Q>  PCOLINC  !DOWNCOL4R>;; '' -Lum Up HCOL5Q> PCOLINC!UP COL5R>!& FSETR0QSTICK0;;RETURN REQUEST ?:R>DHSETR;;YES !N !SETCOLX SETR:bX;lUPQFLAG;;CHECK SCREEN FLAGvGUP0;;GR0 SCREENQCOLOR09;;CHANGE COLOUR OCOLINCM>PCOLOR09;;ON GR15 SCREEN!END!DOWNQFLAG;;CHECK SCREEN FLAGGDOWN0;;GR0 SCREENQCOLOR09;;CHANGE COLOUR SCOLINCM>PCOLOR09;;ON GR15 SCREEN!ENDUP0QCOL709;;INCREASE TEMP OCOLINCM>PCOL709;;COLOUR REGS.!END DOWN0QCOL709;;DECREASE TEMP SCOLINCM>PCOL709;;COLOUR REGSENDQ>;;CLEAR KEY BOARD PCH !SETCOL X;*DLISETA;;SAVE X REG45>QCOLTAB9;;AND MAKE COLOURHPSAVTAB;;CHANGES TO COLOURR 2;;TABLES\2f2p2z2 QCOLTAB9PSAVTAB7> %DLPOSLOOPYQISTAB8 IENDLOOP)> FENDLOOP1 ELOOPYENDLOOPQ@SAVTAB7 PDLICOLQCHR>;; ''-Col Up HCOL12Q> PCOLINC!UP1COL12R>;; '' -Col Down HCOL13Q> PCOLINC !DOWN1$COL13R>;; '' -Lum Down% HCOL14&Q>' PCOLINC( !DOWN1.COL14R>;; '' -Lum Up/ HCOL150Q>1 PCOLINC2!UP18 COL15R>!B FPPP1L QSTRIG0V HPPP3`PPP4QSTRIG0j FPPP4t7~7 !JCOL1PPP3QSTICK0R> FSTEP1 TABPOS(> FPPP1)> FPPP1PPP2QSTICK0R> HPPP27 7 !CLOOP PPP1Q>P( PXPOS2O>-< PHPOSP0FQ>`P PYPOSZ PPOSCURd:nUP1QDLICOLx OCOLINC}M> PDLICOL P@SAVTAB7 UP2Q>PCH !SETCOLDOWN1QDLICOL SCOLINCM> PDLICOL P@SAVTAB7 DOWN2Q>PCHSTEP1!SETCOLX;DLICOL X;CBACKQ>;;CHANGE ROUTINE"PCH, ST12QCH6R>;; ''-Col Up7 HCOL228Q>9 PCOLINC:!BUP@COL22R>;; '' -Col DownA HCOL23BQ>C PCOLINCD !BDOWNJCOL23R>;; '' -Lum DownK HCOL24LQ>M PCOLINCN !BDOWNTCOL24R>;; '' -Lum UpU HCOL25VQ>W PCOLINCX!BUP^ COL25R>h FST11r !SETCOL|!ST11QSTICK0;;CHECK FOR STICKR>;;PRESSED FST12:BUPQINITCOL0 OCOLINCM> PINITCOL0 PCOLOR4 !BENDBDOWNQINITCOL0 SCOLINCM> PINITCOL0 PCOLOR4 BENDQ> PCH !ST12 X;& XCOLTAB 4ICTAB0=4ICTAB1=4ICTAB2==4ICTAB3=5ICTAB0=5ICTAB1=5ICTAB2==5ICTAB30 X;: #X; Touch Tablet/Screen PositionsD X;N VHORZ =========================X B = = = = = = ==============b ? ========= =!="=#=$=%=%=&='=(=)l ? )=*=+=,=-=-=.=/=0=1=1=2=3=4=4=5=6=7=8=8v ? 9=:=;=<=<===>=?=@=@=A=B=C=D=D=E=F=G=G=H ? I=J=K=K=L=M=N=O=O=P=Q=R=S=S=T=U=V=W=W=X ? Y=Z=Z=[=\=]=^=^=_=`=a=b=b=c=d=e=f=f=g=h 3 i=i=j=k=l=m=m=n=o=p=q=q=r=s=t=u 3 u=v=w=x=y=y=z={=|=|=}=~==== 3 =============== 3 =============== 3 ===============  === X; X; 5VERT ============== 0 ============== 0 ==============!0 ============== !0 ==============!0 =======~=}=|=|={=z=y=x !0 w=v=u=t=s=r=q=p=o=n=m=l=k=j=i*!9 i=h=g=f=e=d=c=b=a=`=_=_=^=]=\=[=Z=Y4!? X=W=V=U=U=T=S=R=Q=P=O=N=M=L=L=K=J=I=H=G>!? F=E=D=C=B=B=A=@=?=>===<=;=:=9=9=8=7=6=5H!? 4=3=2=1=0=/=/=.=-=,=+=*=)=(='=&=&=%=$=#R!? "=!= =================\!T === = = = = = ==================f!X;p!X; Read Touch Tabletz!X;!,TABPOS$PADDL0;;USES PADDLE(0) FOR X POS! %PADDL1;;PADDLE(1) FOR Y POS!(>! ETABPOS!)>! ETABPOS!Q>! PPADDL0! PPADDL1!(>! FOFFTAB!)>! FOFFTAB" QDRAWFLAG" FTTT1" )YTEMP$" DYLESS." FTESTX8",B"CL" SYTEMPV"R>`" ETABPOSj" !TESTXt" YLESSC~"O>" SYTEMP"R>" ETABPOS"TESTX(XTEMP" DXLESS" FTTT1","A" SXTEMP"R>" ETABPOS" !TTT1# XLESSA #O># SXTEMP#R>(# ETABPOS2#TTT1&XTEMP<# 'YTEMPF# QHORZ9P# PXPOSZ# QVERT8d# PYPOSn# OFFTAB:x#X;$X;$AVLOOP AVERAGE$ $XTEMP"$ %YTEMP,$ QHORZ96$PXPOS;;OUR X POSITION@$ QVERT8J$PYPOS;;OUR Y POSITIONT$:^$X;h$AVERAGEQr$FAV1|$$>$AV2QXTEMP$P9$ QYTEMP$P9$0$0$IAV2$Q>$P$ AV1$>$ AV3Q9$P9$0%IAV3% QXTEMP%P&%$>0% AV4:% PXTEMPD% QYTEMPN%PX%$>b% AV4l% PYTEMPv%:% AV4Q>%P%AV6,%O9%DAV5%#%AV50%0%IAV6%V%W?%V%W?&: &X;&X; Plot using Joystick &X;*&JOYPOSQ>P;;CENTRE CURSOR4& PXPOS>&O>-H& PHPOSP0R&Q>`\& PYPOSf& PPOSCURp&:z&X;&JOY2Q>;;READ JOYSTICK& PATRACT& QSTICK0& PJOYDIR&M> ;;GET X DIRECTION&V?&V?;;0=NOT MOVING&N>;;1=LEFT&PXDIR;;2=RIGHT& QJOYDIR&M>;;GET Y DIRECTION& N>;;1=UP&PYDIR;;2=DOWN&FXX1&R>' HJDOWN' QYPOS'R>$'FXX1.' #YPOS8'!XX1B'JDOWNQYPOSL'FXX1V' "YPOS`' XX1QXDIRj'R>t' HJLEFT~' QXPOS'R>'FXX2' #XPOS'!XX2' JLEFTR>'HXX2' QXPOS'FXX2' "XPOS' XX2QXPOS'O>-' PHPOSP0( QYPOS ( PPOSCUR( PDLPOS( DELAY1(( DELAY12(:<(X;F( JPLOTQ>P(PCHZ( JOYPOS(JOYQJFLAG( HJOY1( !PLOOP(JOY1 JOY2( QSTRIG0(FXX3(QCH(R>(FXX4( CHECKEY)!JOY")XX4 DELAY1,) DELAY16)!JOY@)XX3 SAVEPICA) XX5 PLOTB) QSTRIG0C)HJOYD) JOY2E)!XX5J)!JOYK)X;L)SAVEPICQ>4SECPICM) PSAVPICN) Q>5SECPICO)PSAVPICP) QSAVMSCQ) PADRESSR)QSAVMSCS)PADRESST)$>U)%>V)MOVEQ@ADRESS7W) P@SAVPIC7X)3Y) HMOVEZ)#ADRESS[)#SAVPIC\)2])(>^) HMOVE_):`)X;g)DELAY1$>h) %PERIODr) DELAY20|) HDELAY2)1) HDELAY2):)X;) PERIOD )JOYDIR ) XDIR ) YDIR )X;)UNDOQ>4SECPIC) PSAVPIC) Q>5SECPIC)PSAVPIC) QSAVMSC) PADRESS)QSAVMSC)PADRESS)$>)%>)UMOVEQ@SAVPIC7) P@ADRESS7)3) HUMOVE)#SAVPIC)#ADRESS)2)(>) HUMOVE):)X;)DJLOOPQ>;;CLEAR KEY)PCH)Q>4CURSORD;;USE DRAWING)PCURSOR;;CURSOR*Q>5CURSORD*PCURSOR* JOYPOS;;CENTRE CURSOR&*DJOYQJFLAG0* HDJOY1:* !DLOOPD*DJOY1 JOY2N* QSTRIG0X* HDJOY4]* SAVEPICb* PLOTl*DJOY6QSTRIG0v* FDJOY6*DJOY3 JOY2* DELAY1*QCH*R>* FDJOY8* CHECKEY*Q>4CURSORD* PCURSOR*Q>5CURSORD*PCURSOR* !DJOY3*DJOY8 DELAY1* QSTRIG0+ HDJOY3 + DRAWTO+DJOY7QSTRIG0 + FDJOY7*+ !DJOY4+ DJOY4QCH>+R>H+ FDJOY5R+ CHECKEY\+Q>4CURSORDf+ PCURSORp+Q>5CURSORDz+PCURSOR+ !DJOY+DJOY5 DELAY1+ DELAY1+ !DJOY+X;+X;Check key pressed+X;+CHECKDIRR>;;UP+ HTRYDOWN+ QYPOS+FCK1+ "YPOS+CK1!MOVED,TRYDOWNR>;;DOWN, HTRYLEFT, QYPOS$,R>.,FCK28, #YPOSB,CK2!MOVEDL,TRYLEFTR>;;LEFTV, HTRYRIGHT`, QXPOSj,FCK3t, "XPOS~,CK3!MOVED,TRYRIGHTR>;;RIGHT, HNODIR, QXPOS,R>, FMOVED, #XPOS, MOVEDQ>,PCH, NODIR:,X;,CHECKEY CHECKDIR,TRYAR>?;;'A' PRESSED ?- HTRYC- QCURSOR-PCURSORH;;SAVE CURSOR-QCURSOR-PCURSORH - QJFLAG-FCK5- ADDLIJ- QCURSORH - PCURSOR!-QCURSORH"-PCURSOR(-:2-CK5 ADDLI3- QCURSORH4- PCURSOR5-QCURSORH6-PCURSOR<-:=-TRYDJUMP!TRYDF-TRYCR>;;'C' PRESSED ?P- HTRYDJUMPQ- QCURSORR-PCURSORH;;SAVE CURSORS-QCURSOR;;FOR RETURNT-PCURSORHZ-QDLFLAG;;CHECK IF DLI'Sd-M>@;;ARE ONn-FCC3;;NO !x-QFLAG;;CHECK FOR GR0-GCC3;;SCREEN- DLINES;;YES ! CARRY OUT-Q>@;;DLI ROUTINES- PHPOSP0-Q>4CURSORC- PCURSOR-Q>5CURSORC-PCURSOR-QJFLAG;;CHECK JOYSTICK- FCLOOP- !JCOLCHNG- QCURSORH- PCURSOR-QCURSORH-PCURSOR-:-Q>.P.CLOOP TABPOS.(>".FCC0,. AVLOOP6.!CC1@. CC0)>J.HCC1T. QSTICK0^.R>h.HCC4r. !CLOOP|.CC1PPOSCUR. PDLPOS. QXPOS.O>-. PHPOSP0. QSTICK0.R>. FCLOOP.CC2QSTICK0.R>.HCC2.CC3 SETCOL.CC4 ERASE1.Q>`/ PPOSCUR/Q>/PCH/ QCURSORH/ PCURSOR/QCURSORH /PCURSOR&/:0/TRYDR>:;;'D' PRESSED ?:/ HTRYP;/Q> ;;'P' PRESSED ?/ HTRYE/Q>/ PFILFLAG/7/7/Q>4CURSORM/ PCURSOR/Q>5CURSORM/PCURSOR/ QJFLAG/FPP1/ !JPLOT/PP1!PLOOP/TRYER>*;; 'E' PRESSED ?0 HTRYF 0Q>0PCH40 !ERASEPIC50TRYFR>8;;'F' PRESSED ?60 HTRYJ70Q>80PCH90PFILFLAG;;SET FOR FILL:0Q>4CURSORF;0 PCURSOR<0Q>5CURSORF=0PCURSOR>07?07@0 QJFLAGA0FPP2B0 !JPLOTC0PP2!PLOOPG0TRYJR>;;'J' PRESSED ?H0 HTRYUR0 QJFLAG\0N>f0 PJFLAGp0 !NOT4q0TRYUR> ;; 'U' PRESSED ?r0 HSPACEs0 UNDOt0Q>u0PCHv0:z0SPACER>!;;SPACE BAR0 HTRY10Q>;;MOVE CURSOR OFF0PHPOSP0;;SCREEN0P/0Q>@0P0 DELAY0 GR00Q>}0 PHPOSP00Q>`0 PPOSCUR0 DELAY1Q>:1P/1Q>$1P.1 !NOT481TRY1R>;;KEY #1 PRESSED ?B1 HTRY2L1Q>V1 !CCOL`1TRY2R>;;KEY #2 PRESSED ?j1 HTRY3t1Q>~1 !CCOL1TRY3R>;;KEY #3 PRESSED ?1 HTRY41Q>1 !CCOL1TRY4R>;;KEY #4 PRESSED ?1 HNOT41Q>1CCOLPCOLOR;;CHANGE COLOUR1NOT4Q>;;CLEAR KEYBOARD1PCH1:1X;2JCOLCHNG DLINES 2Q>2 PXPOS2JCOL1 JOY2(2 QYPOS22 PDLPOS<2QCHF2R>P2 FJCOL7Z2R>!d2 FJCOL4n2 CHECKDIRx2Q>2PCH2JCOL7QSTRIG02 HJCOL12JCOL8QSTRIG02 FJCOL82 SETCOL2 ERASE12Q>`2 PPOSCUR2Q>2PCH2 QCURSORH2 PCURSOR2QCURSORH2PCURSOR2:2JCOL4 ERASE13Q>3PCH3 QCURSORH3 PCURSOR3QCURSORH3PCURSOR3:"3X;,3X;63COL70 ;;TEMPORARY@3 COL71 ;;COLOUR REGISTERSJ3COL72 ;;FOR GR15 SCREENT3COL73 ;;USED IN MENU^3COL74 ;;SCREENh3#INITCOL0 ;;ORIGINAL COLOURSr3INITCOL1 ;;LOADED FROM|3INITCOL2 ;;DISK3INITCOL3 3INITCOL4 3X;3$CHECKFLAGQDLFLAG;;DL FLAG SET ?3M>@3HLISTON;;YES !3:3#LISTONQ>;;CHANGE VBI FOR GR.03 $>5VBI03 %>4VBI03 SETVBV3QCOLOR0;;SAVE COL REGS3 PINITCOL14 QCOLOR14 PINITCOL24 QCOLOR2&4 PINITCOL304 QCOLOR4:4 PINITCOL0D4$DLPOS;;FIND ACTUALN4 LFINDQISTAB9;;LINE ON WHICHX4ILINE;;DL IS SETb4(>l4 FLINEv404 ELFIND4LINE&DLPOS;;AND SAVE4QICTAB09;;LOAD DL COLOURS4PCOLOR0;;DOWN TO COLOUR4QICTAB19;;REGISTERS4 PCOLOR14 QICTAB294 PCOLOR24 QICTAB394 PCOLOR44:4X;4X; GR0 Control Loop5X; 5(GR0 CHECKFLAG;;CHECK FOR DL PICTURE5QSAVM0L;;SET POINTERS TO 5PSAVMSC;;GR0 SCREEN*5 QSAVM0H45PSAVMSC>5QDLL0;;AND DISPLAY LISTH5P0R5 QDLH0\5P1f5Q>;;GR0 SCREENp5PWz5Q>;;SET GR FLAG5PFLAG;;TO GR0 SCREEN5$>5SAVECQCOLOR095PCOL709;;SAVE COLOUR REGS525(>5 HSAVEC5Q>5PCOLOR2;;SET COLOURS FOR5PCOLOR4;;GR0 SCREEN5Q>:5 PCOLOR15Q>;;CLEAR KEYBOARD6PCH6BUTTONQSTICK06R>;;JUST WAITING$6 HBUTTON.6Q>4DLIST1;;POINT TO FIRST86P;;DLI ROUTINEB6 Q>5DLIST1L6PV6Q>`6Pj6Q>:t6P/~6 TLOOPQCH6R>6FTT16 READKEY;;CHECK FOR KEY6TT1QSTICK0;;TIME TO RETURN6R>;;TO GR15 SCREEN ?6 HTLOOP6 EXITQ>@6P6Q>6P/6 Q>4DLI6P7 Q>5DLI 7P7QDLL7;;RESET VARIOUS7P0;;POINTERS TO(7QDLH7;;GR8 SCREEN27P1<7Q>;;GR7 SCREENF7 PDINDEXP7 PFLAGZ7$>d7!LOOPC1QCOL709;;RESET COLOURSn7 PCOLOR09x727(>7 HLOOPC17 QDLFLAG7M>@;;CHECK FOR DLI7HDLION;;PICTURE7!NODLI;;RETURNING7!DLION$DLPOS;;AND IF DLI'S ON7QCOLOR0;;SAVE COLOURS TO7PICTAB09;;COLOUR TABLES7 QCOLOR17 PICTAB197 QCOLOR27 PICTAB298 QCOLOR48 PICTAB398 QINITCOL0"8 PCOLOR4,8 QINITCOL168 PCOLOR0@8 QINITCOL2J8 PCOLOR1T8 QINITCOL3^8 PCOLOR2h8Q>r8 $>5VBI|8 %>4VBI8 SETVBV8NODLIQSAVM7L;;RESET SCREEN8PSAVMSC;;MEMORY AND8QSAVM7H;;SAVE PIC8PSAVMSC8 SAVEPIC8:8X;8X; Modify GR0 Display List8X;8MODSCRQ>@;;2 LINES OF8%>;;GR2 FOLLOWED8P@DLL07;;BY8Q>;;1 LINE OF9 %>;;GR09P@DLL07;;AND93;;4 LINES OF&9 Q>;;GR309 P@DLL07:93D9Q>;;THE REMAINDER ISN9GRLP@DLL07;;GR0X93b9)> l9HGRLv9Q>9 P@DLL079:9X;9"X;Display List Interupt Routine9X;9 DLIST159QCOL74;;CHANGE COLOURS9P 9P;;COLBAK9 QCOL729P;;COLPF29 QCOL719P;;COLPF1: QCOL70 :P;;COLPF0:Q>4DLIST2;;POINT TO NEXT : P;;DLI*: Q>5DLIST24:P>:7H:9R: DLIST25\:Q>;;CHANGE COLOURSf:P p:P;;COLPF2z:P;;COLBAK:Q> :P;;COLPF1: Q>4DLIST1:P: Q>5DLIST1:P:7:9:X;:X; Print to Screen:X;:&PRINTPICBADR9;;EXPECTS LO ADDRESS:C;;HI ADDRESS TO BE;PICBADR9;;FOUND IN A;Q> ;;& Y REGISTERS; PICCOM9$;PICBLEN9.;!CIO;;CIO WILL RTS !8;X;B;X;Text MessagesL;X;V;#TEXT1 A colour enhancer A=EOL`;5TEXT2 A DISK DIRECTORY AND OPTION BOARDA=EOLj;:TEXTP A 5 5 5 5A=EOLt;:TEXT3 ACOLOUR 1 COLOUR 2 COLOUR 3 COLOUR 4A=EOL~;pictureA=EOL;9TEXTL A LOAD PICTURE - ENTER FILE NAME A=EOL;9TEXTS A SAVE PICTURE - ENTER FILE NAME A=EOL;9TEXTI A Directory - Press SPACE BAR to scroll A=EOL;9BLANK A A=EOL;NTEXT EOL;9TEXTDLON A DISPLAY LIST INTERRUPTS A=EOL;:TEXTDLOFF A DISPLAY LIST INTERRUPTS A=EOL<X; <X;<X;Initial GR.0 Screen<X;(<WRITE0Q>2<P;;TURN CURSOR OFF<< PCOLCRSF<$>;;RESET LEFT MARGINP<&RZ4TEXT1;;WRITE TEXT MESSAGESd< %>5TEXT1n< PRINTx< Q>4TEXT2< %>5TEXT2< PRINT< Q>4TEXTP< %>5TEXTP< PRINT< Q>4TEXT3< %>5TEXT3< PRINT< Q>4TEXT4< %>5TEXT4< PRINT< Q>4TEXT5< %>5TEXT5= PRINT= Q>4TEXT6= %>5TEXT6"= PRINT,= Q>4TEXT76= %>5TEXT7@= PRINTJ= Q>4TEXT8T= %>5TEXT8^= PRINTh=Q> r= PROWCRS|=Q>4TEXTDLOFF=%>5TEXTDLOFF= PRINT= Q>4TEXT9= %>5TEXT9= PRINT=:=X;= READKEY=R>;;'C' PRESSED ?= HTRYS= SETCOL=:=TRYSR>>;;'S' PRESSED ?> HTRYL> SAVE>TRYLR>;;'L' PRESSED ?&> HTRYI0> LOAD:>TRYIR> ;;'I' PRESSED ?D> HTRYERN> INDEXX>TRYERR>*;;'E' PRESSED ?b> HRSPACEl> ENABLEDLv>RSPACER>!;;SPACE BAR ?>HRET>7>7>Q>>PCH> !EXIT> RETQ>>PCH>:>X;>!X; Load & Save Picture Routine>X;>LOAD SETCRS?Q>;;RESET DISK DL ?PINITCOL4;;FLAG? LTEXT;;WRITE TEXT MESSAGE ? GETFN;;GET FILENAME*? READIT;;GET FILE4?Q>>? PDLPOSH? Q>4DLIST1R?P\? Q>5DLIST1f?Pp?Q>z?PԄ? WBLANK;;CLEAR TEXT MESSAGE? QDLFLAG?M>@;;CHECK DL FLAG?HJUMP1;;IF NO DLI SAVE?QINITCOL0;;COLOURS?PCOL74;;TO COLOUR REGS? QINITCOL1? PCOL70? QINITCOL2? PCOL71? QINITCOL3? PCOL72?:@JUMP1QICTAB0;;COPY INITIAL@PCOL70;;COLOURS USED BY@QICTAB1;;DLI PICTURE TO$@PCOL71;;COL REGS..@ QICTAB28@ PCOL72B@ QICTAB3L@ PCOL74V@ :;;RETURN`@X;j@SETCRSQ>;;MOVE CURSOR ANDt@PCH;;CLEAR KEYBOARD~@Q>@P@Q>@ PROWCRS@$>@ Q>4NTEXT@ %>5NTEXT@ PRINT@Q>@ PROWCRS@:@X;@ LTEXT$>A Q>4TEXTL A %>5TEXTLA PRINTA:(AX;2AGETFNQ>;;GET FILENAMEPA Q>CPBINRZA PICCOM9dA Q>4DISKnA PICBADR9xA Q>5DISKAPICBADR9AQ>A PICBLEN9AQ>APICBLEN9A CIOA Q>CGTXTRA PICCOM9AQ> A PICBLEN9AQ>APICBLEN9AQ>4DISKB PICBADR9BQ>5DISKBPICBADR9"B CIO,B$>6B QICBLEN9@B>JB2TB2^B%>hB%PICLOOPQPIC8;;ADD 'PIC' EXTENDERrB PDISK9|B2B3B)>B HPICLOOPB:BX;BREADITQ>BP/;;BLANK SCREENBQ>@;;INTERUPTS OFFBPB CLRISTAB;;CLEAR DL TABLEB$ DELAY;;TIME FOR SCREEN TO BLANKB$> ;;CLOSE #2B CLOSEC$> C Q>OPDIRC OPDISK&C GETDIR0C$> :C CLOSEDC QFNAMENCR>7XC FITSMICbCR>6lC HNOTMICvC QFNAMECR>2C FITSMICCNOTMIC$> C Q>OPINC OPDISKC PICLDRCITSMIC$> C Q>OPINC OPDISK;;OPEN FOR FILENAMEC" PLOAD;;LOAD MICROPAINTER FILECQ> C PROWCRSC$>D&ISTAB;;DLI ON 1st LINE D&Q>4TEXTDLON;;CHANGE TEXT TO DLI OND%>5TEXTDLON D !ERRP*D"NDLIQ> ;RETURN HERE IF NO DLI4D PROWCRS>D$>HDQ>4TEXTDLOFFRD%>5TEXTDLOFF\DERRP PRINTfD!ERR$> ;;RETURN HERE ON ERRORpD CLOSE;;CLOSE FILEzDQ>:DP/D:;;ALL DONEDX;D#WBLANKQ>;;ERASE TEXT MESSAGESD PROWCRSD$>D Q>4TEXT9D %>5TEXT9D PRINTD Q>4BLANKD %>5BLANKD PRINTD Q>4BLANKE %>5BLANKE PRINTE:$EX;.EX;Save Picture Routine8EX;BESAVE SETCRSLE STEXT;;WRITE SAVE TEXTVE GETFN;;GET FILENAME`EQ>jEP/tEQ>@~EPԈE$ DELAY;;TIME FOR SCREEN TO BLANKEQDLFLAG;;MOVE DL FLAGE PINITCOL4E'M>@;;AND CHECK FOR INTERUPT PICTUREE HJUMP2EQCOL70;;IF NOT INTERUPTEPINITCOL1;;SAVE COLOURSE QCOL71E PINITCOL2E QCOL72E PINITCOL3E QCOL74F PINITCOL0 FJUMP2Q> ;;ALTER PARAMETERF!PPARM1;;TABLE TO SAVE PICTUREF PPARM2(F PPARM32F SAVEIT;;SAVE IT4DLIST1PFPZF Q>5DLIST1dFPnFQ>xFPԂFQ>;;RESET PARAMETERFPPARM1;;TABLE FOR LOADF PPARM2F PPARM3F:;;ALL DONEFX;F STEXT$>F Q>4TEXTSF %>5TEXTSF PRINTF:FX;FSAVEIT$> ;;CLOSE IOCB2G CLOSEG$> GQ>OPOUT;;OPEN FOR OUTPUT"G OPDISK;;USING FILENAME,G PLOAD;;USE SAME ROUTINE6G$> @G CLOSE;;CLOSE IOCBJGQ>:TGP/^G :;;DONEhGX;rGX;Read Index|GX;G INDEX$>G%>GQ> *;;READ 'D1:*.PIC'G PDISK9G2G PICLOOPG SETCRSG$>G Q>4TEXTIG %>5TEXTIG PRINTG$> G Q>OPDIRH OPDISKH!FIRST GETDIR;;READ DIRECTORYH GLAST&H DIRSCN0H#CHECKQCH;;ONE RECORD AT A TIME:HR>;;KEY PRESSED ?DHFCHECK;;NEXT RECORDEHR>!NH FFIRSTXHLAST$> ;;NO MORE ENTRIESbH CLOSE;;CLOSE FILElH WBLANK;;CLEAR TEXTvH:;;AND RETURNHX;HDELAY$>;;DELAY LOOPH%>H TIME0H HTIMEH1H HTIMEH:HX;HX; Clear D/L on/off TableHX;HCLRISTAB$>HQ>;;$FF indicates noILOOP12PISTAB9;;interupt I2I(> I HLOOP12*I:4IX;>IX; Enable/Disable D/L'sHIX;RIENABLEDLQ>\IPCHfI QINITCOL4pIN>@zI PINITCOL4I PDLFLAGI CLRISTABI RESETCOLTABI QDLFLAGIM>@I FLOOP22IQ> I PROWCRSI$>IQ>IPI Q>4NTEXTI %>5NTEXTJ PRINTJQ> J PROWCRS$JQ>4TEXTDLON.J%>5TEXTDLON8J PRINTBJQ>LJ PISTABVJ:`JLOOP22Q> jJ PROWCRStJ$>~JQ>JPJ Q>4NTEXTJ %>5NTEXTJ PRINTJQ> J PROWCRSJQ>4TEXTDLOFFJ%>5TEXTDLOFFJ PRINTJ GR15JLOOP2CQINITCOL0J PCOL74K QINITCOL1 K PCOL70K QINITCOL2K PCOL71(K QINITCOL32K PCOL72xKLOOP23PICTAB09K2K(>K HLOOP23K QCOL71K PINITCOL2K$>KLOOP24PICTAB19K2K(>K HLOOP24K QCOL72K PINITCOL3K$>LLOOP25PICTAB29L2L(>"L HLOOP25,L QCOL746L PINITCOL0@L$>JLLOOP26PICTAB39TL2^L(>hL HLOOP26rL:|LX;L PLOAD%>;;COPY PARAM LIST 2L?GETPICTQPARM28LPb8;;TO IOCB #1 TO GETL1;; PICTURE DATALI?GETPICT;;LQSAVM7L;;MOVE TO SCREENLPd;;MEMORY LOCATIONL QSAVM7HLPeL CIO;;L%>;;COPY PARAM LIST 1L?GETCOLSQPARM18LPb8;;TO IOCB #1 TO GETM1;; COLOURS AND STUTUSMI?GETCOLS;; BYTESM CIO&M QINITCOL40M PDLFLAG:MM>@DM H?GETTABSNM7XM7bM !NDLIlM#?GETTABS%>;;COPY PARAM LIST 3vM"?GTQPARM38;;TO IOCB #1 TO GETMPb8;; INTERRUPT AND THEM1;; 4 COLOUR TABLESM I?GT;M CIO;; call CIOM:MX;MX; Parameter lists.MX;M1PARM1 ==4INITCOL0=5INITCOL0====M!PARM2 =======M+PARM3 ==4ISTAB=5ISTAB====MX;M>D:ARTLOADNX; NX; DLI routineNX; N DLIP *N5;;SAVE ALL REGS4NA>N5HNCRN5\N$>fNLOOP34QISTAB9pN G?NOINTzN QICTAB39N %ICTAB19NP ԘNPТN'ЬN QICTAB09N %ICTAB29NPN'N2N(>N HLOOP34N7N?O7O>O7$O9.O?NOINTP 8O2BO(>LO HLOOP34VO7`O?jO7tO>~O7O9OX;O X; The Vertical Blank RoutineOX;OVBIQINITCOL0OPO ERASEO PLDRAWO QCOLP0OO>OM>O PCOLP0O PCOLP1P!b;;OS VBI exit PX;PX; Read DirectoryPX;(PGETDIR$> 2PQ>4FNAMEPP PICBADR9ZP Q>5FNAMEdPPICBADR9nPQ>xP PICBLEN9PQ>PPICBLEN9P!CIOPX;PX; Write Directory to ScreenPX;PDIRSCN CHKFREPQ>PPCHP Q>EOLP PFNAME P$>PQ> Q PCOLCRSQQ>Q PROWCRS"Q Q>4FNAME,Q %>5FNAME6Q PRINT@Q:JQX;TQ X; Check if Free Sector Entry^QX;hQCHKFREQFNAMErQR> |Q FNOTFREQ7Q7Q7Q7Q !FIRSTQ NOTFRE:QX;QX; Erase player 0 (Cursor)QX;Q ERASEQ>Q$>QELOOPPPLR09Q0R HELOOPR:RX;&R#X; Erase Player 1 (DL Indicator)0RX;:RERASE1Q>DR$>NRE1LOOPPPLR19XR0bR HE1LOOPlR:vRX;RX; Draw player 0RX;RPLDRAWQPOSCURRO>$R>R%> RDRAWLOOPQ@CURSOR7R PPLR09R0R1R IDRAWLOOPR:RX;SX; Draw Player 1 SX;SDLINES$> S%> *S!LOOP10QISTAB9;;Read DL table4SN>>SPPLR18;;Invert and copyHS3;;to DisplayRS2\S(>fS HLOOP10pS:zSX;SX; GR0 VBI RoutineSX;SVBI0 ERASES PLDRAWS QCOLP0SO>SM>S PCOLP0S PCOLP1S!bSX;SX;The Title ScreenSX;TINITSCRQ>T PSDMCTLT MODLIST$TQ>.TP8TPRBT$>LT Q>4BLANKVT %>5BLANK`T PRINTjTQ>tT PROWCRS~TQ>T PCOLOR2TQ>4INITEXT1T%>5INITEXT1T PRINTTQ>T PROWCRSTQ>4TEXTLINET%>5TEXTLINET PRINTTQ>T PROWCRSTQ>4INITEXT2U%>5INITEXT2 U PRINTUQ> U PROWCRS(UQ>4INITEXT32U%>5INITEXT3PU PROWCRSZUQ>4TEXTLINEdU%>5TEXTLINEnU PRINTxUQ>U PROWCRSUQ>4INITEXT4U%>5INITEXT4U PRINTUQ>*U PSDMCTLUINLOOP$>U #COLOR3U XLOOP%>U YLOOPQUR>UFOUTU1V HYLOOPV2V(>"V HXLOOP,V !INLOOP6VOUT:@VX;JV`INITEXT1 A COLOUR ENHANCER micropainter and atariartist A=EOLTV\INITEXT2 A Program by Dave Blackshaw (c) 1986 Hillside SoftwareA=EOL^V\INITEXT3 A MICROPAINTER (c) DATASOFT 1982 ATARIARTIST (C) ATARI 1983 A=EOLhV$INITEXT4 A A=EOLrV-TEXTLINE A ____________A=EOL|VX;VMODLISTQ0V PDLL0VQ1V PDLH0VQ>V%>VLOOP9P@DLL07V3V)> V HLOOP9V%>VQ>V P@DLL07WQ>W3W P@DLL07&W:0WX;:W GOADRDW START