þþ^4dX;D1:FAXA.M65nX;By Patrick BassxX;(c) 1986, Antic Publishing‚X;Included from D:FAX.M65ŒX;– †ADD.W  ,ªQ ´ O>4 ¾P È Q Ò O>5 Ü P æðX;ú †SUB.W ;Q  S>4 "P , Q 6 S>5 @ P JTX;^ †LEA.W h Q>5 r P | Q>4 †P šX;¤ ‡MOVE.B ®Q ¸P ÂÌX;Ö ‡MOVE.W à‡MOVE.B = ê‡MOVE.B = ôþX; …POKE  Q>4 P &0X;: …ALSO DP NXX;b †WRITE l$>v„@PLC€Q 9Š;”S> žP 9¨0² I„@PLC¼ÆX;Ð †MOVEM Ú$>äƒ@AAîQ 9øP 92 (> Dƒ@AA *X;4X;----- Constants ------> ‚UPH „DOWNR „LEFT\…RIGHT;;Joystick dirsf‡PRINTER;;Die Schriberp„DISK;;The diskman!z…WRITE;;Schriben Sie„„READ;;Sehen SieŽˆKEYBOARD;;Eine tapper˜†BLANK1;;Dlist equates¢ †BLANK8p¬ ƒLMS@¶ …MODEFOÀ …JMPWTAÊ‚CHü;;where keys sitÔˆPIXSTART;;status valuesÞ‡PIXDRAWè‡PIXOVERò…GHOST,;;BOO!ü‰ORINCOLORÀ†RANDOM Ò…IRQENÒ;;Hardware†SDMCTL/;;DMA Shadow$†STICK0x;;Stick shadow.†AUDCTLÒ;;Audio Control8†POKMSK;;IRQEN shadowB†COLOR0Ä;;soft shadowsL†COLOR1†COLOR0V†COLOR2†COLOR0`†COLOR3†COLOR0j†COLOR4†COLOR0t†ATRACTM;;It's atractive~…PORTAÓ;;Outside World.ˆ‡NE.PORTÓ;;...in a storm.’…AUDF1Ò;;Hard sound.œ …AUDC1Ò¦ …AUDF2Ò° …AUDC2Òº†SDLSTL0;;Dlist shadowĆVTIMR4;;Timer4 shadowΆSTIMER Ò;;Hard time.؈ATARIEOL›âƒEOL›;;ATARI EOLì ƒESCö‚CR ;;Honest CRX; TOTAL.COLUMNSÜ;;512‹TIMER.DELAYQ;;06F2ŽBYTES.PER.LINE@(ŽNUM.SCAN.LINESà2“SCAN.LINES.ONSCREEN¶<ƒBPLŽBYTES.PER.LINEFƒNSLŽNUM.SCAN.LINESPƒSLO“SCAN.LINES.ONSCREENZ†SCREEN8d‡SCRSIZEƒNSLƒBPLn!‰SCREENEND†SCREEN‡SCRSIZEx$ŠPRINTSTART†SCREEN‡SCRSIZEƒBPL‚X;Œ X;----- Reserved Memory -----–€ ‰POINTER.A ª‰COUNTER.A ´‰POINTER.B ¾‰COUNTER.B ȉPOINTER.C Ò‰COUNTER.C ܉POINTER.D æ‰COUNTER.D ðX;ú ‡DECIMAL == †XINDEX  †YINDEX "‰OREDCOLOR ,‡INVMASK ;;Inverso-matic6ˆHIGHFLAG @„TEMP ;;Used somewhereJ†MLADDR ;;ModeLine AddrT‡DISPLAY ;;From the top^‹HORIZ.COUNT hŠVERT.COUNT r‹HORIZ.LIMIT ƒBPL(|ŠVERT.LIMIT Œ†…STICK ;;Shadow-our-ownX;š‰PSTARTADR ¤ˆPRINTROW ®ˆPRINTCOL ¸ †BUFFER ========Ì ========Ö!†IPMESS ƒESC=A@A=ƒESC=AAA=à†PPMESS ƒESC=AKAêX;ô‡CURRROW þ†NUMROW ŽNUM.SCAN.LINES‡CURRCOL †NUMCOL TOTAL.COLUMNS‡COLMASK €&‡COLSKIP 0‰SKIPCOUNT :ˆSTARTADR †SCREENDˆSPEEDADJ NˆADJCOUNT X †STATUS b†MICROM Ý l†TWOPER ‹TIMER.DELAYv†ONEPER ©;;$0EA9€ˆMICROROW AŠŠTWOLINEROW TOTAL.COLUMNS”ŠONELINEROW TOTAL.COLUMNSžŠTIMERCOUNT ‹TIMER.DELAY¨X;² ‡ST.LINE¼ A‚K AÆ A‰ < >AÐ A‰ - +AÚ ‰TEXT.LINEä! =========î! =========ø! =========X;  ˆFILENAME AˆD:WEFAX.A ŠFILENAME.X* A A=ˆATARIEOL=4 ‰MFILENAME> A‰D:PICTUREA=ˆATARIEOL=H ˆTYPEMESSR A” (F)ULL OR (M)ICRO? A\ŠSAVINGMESSf A”SAVING WEFAX PICTUREApŠLOADERMESSz A” LOADING PICTURE A„ ˆSAVEMESSŽ A” SAVE WEFAX 1 OR 2? A˜ ˆLOADMESS¢ A” LOAD WEFAX 1 OR 2? A¬ ‰BLANKMESS¶ A” AÀX;ÊX;-------------------------Ô …DLISTÞ †BLANK8=†BLANK8=†BLANK8è …SUBDLò ƒSLO ü †BLANK1 ƒLMS  ‰TEXT.LINE X;$ …JMPWT. …DLIST8 X;B X;-------------------------L (V ‰STARTCODE` -j =t $>ý~ Bˆ †LEA.W ˆPLOTDATA=†VTIMR4’ .œ !„MAIN¦ X;° "X;- - - - - - - - - - - - - - -º ŠBUILD.LISTÄ †LEA.W …SUBDL=‰POINTER.AÎ ‡MOVE.W ‡DISPLAY=†MLADDRØ $>“SCAN.LINES.ONSCREENâ ƒBL1ì  BUILD.MODE.LINEö 0 HƒBL1 X; : X;( X;-------------------------2 BUILD.MODE.LINE< %>F Q>…MODEFP P@‰POINTER.A7Z 3d Q†MLADDRn P@‰POINTER.A7x 3‚ Q†MLADDRŒ P@‰POINTER.A7– †ADD.W ‰POINTER.A=  †ADD.W †MLADDR=ƒBPLª :´ X;¾ X;-------------------------È †SCROLLÒ Q†STICK0Ü N>æ P…STICKð H‰TRY.RIGHTú : X; ‰TRY.RIGHT P†ATRACT" M>…RIGHT, FˆTRY.LEFT6 X;@ Q‹HORIZ.COUNTJ R‹HORIZ.LIMITT FˆTRY.LEFT^ X;h #‹HORIZ.COUNTr †ADD.W ‡DISPLAY=| ˆTRY.LEFT† Q…STICK M>„LEFTš F†TRY.UP¤ X;® Q‹HORIZ.COUNT¸ F†TRY.UP X;Ì "‹HORIZ.COUNTÖ †SUB.W ‡DISPLAY=à †TRY.UPê Q…STICKô M>‚UPþ FˆTRY.DOWN X; QŠVERT.COUNT FˆTRY.DOWN& X;0 "ŠVERT.COUNT: †SUB.W ‡DISPLAY=ƒBPLD ˆTRY.DOWNN Q…STICKX M>„DOWNb F…FIXDLl X;v QŠVERT.COUNT€ RŠVERT.LIMITŠ F…FIXDL” X;ž #ŠVERT.COUNT¨ †ADD.W ‡DISPLAY=ƒBPL² …FIXDL¼  ŠBUILD.LISTÆ :Ð X;Ú X;-------------------------ä ŒCLEAR.SCREENî …POKE ‡INVMASK=ø †LEA.W †SCREEN=‰POINTER.B †LEA.W ‡SCRSIZE=‰COUNTER.B „CLS1 %> C* P@‰POINTER.B74 †ADD.W ‰POINTER.B=> †SUB.W ‰COUNTER.B=H E„CLS1R X;\ :f X;p X;-------------------------z ŠINV.SCREEN„ …POKE ˆHIGHFLAG=Ž †LEA.W †SCREEN=‰POINTER.B˜ †LEA.W ‡SCRSIZE=‰COUNTER.B¢ „INV1¬ %>¶ Q@‰POINTER.B7À N>ÿÊ P@‰POINTER.B7Ô †ADD.W ‰POINTER.B=Þ X;è QˆHIGHFLAGò H„INV2ü X;Q‰POINTER.BR‰POINTER.C D„INV2$X;.Q‰POINTER.B8R‰POINTER.CB D„INV2LX;V #ˆHIGHFLAG` Q‡INVMASKjN>t P‡INVMASK~„INV2ˆ†SUB.W ‰COUNTER.B=’ E„INV1œX;¦:°X;ºX;-------------------------ÄŠINITFAXMAPΆLEA.W =‡CURRROW؆LEA.W =‡CURRCOLâ†LEA.W †SCREEN=‰POINTER.Cì†LEA.W †SCREEN=ˆSTARTADRö‡MOVE.B ‡COLSKIP=‰SKIPCOUNT…POKE †STATUS=‡PIXDRAW …POKE ‡COLMASK=€…POKE ˆADJCOUNT=:(X;2X;-------------------------< ˆGETPOINTF Q…PORTAP I„PLT0ZX;dQ>n …GHOSTx„PLT0‚Q>Œ N‡INVMASK–X; 6ª%>´ Q‡COLMASK¾N>ÿÈM@‰POINTER.C7ÒP@‰POINTER.C7Ü8æ F„PLT1ðX;ú Q‡COLMASKL@‰POINTER.C7P@‰POINTER.C7„PLT1" QˆADJCOUNT,FPROCESS.POINT6X;@ "ˆADJCOUNTJ:TX;^X;- - - - - - - - - - - - -hPROCESS.POINTr†ADD.W ‡CURRCOL=|Q‡CURRCOL†R†NUMCOL D„PRO1šX;¤ Q‡CURRCOL® R†NUMCOL¸ E„PRO2„PRO1Ì V‡COLMASKÖ H…PRO1XàX;ê…POKE ‡COLMASK=€ô‡MOVE.B ˆSPEEDADJ=ˆADJCOUNTþ†ADD.W ‰POINTER.C= …PRO1X:X;- - - - - - - - - - - - -&„PRO20…POKE ‡COLMASK=€:‡MOVE.B ˆSPEEDADJ=ˆADJCOUNTD†LEA.W =‡CURRCOLNQ‰SKIPCOUNTX F„PRO3bX;l ‡MOVE.W ˆSTARTADR=‰POINTER.Cv"‰SKIPCOUNT€:ŠX;”X;- - - - - - - - - - - - -ž„PRO3¨‡MOVE.B ‡COLSKIP=‰SKIPCOUNT²†ADD.W ‡CURRROW=¼†ADD.W ˆSTARTADR=ƒBPLÆ ‡MOVE.W ˆSTARTADR=‰POINTER.CÐQ‡CURRROWÚR†NUMROWä D„PRO4îX;ø Q‡CURRROW R†NUMROW  D„PRO4X; …POKE †STATUS=‡PIXOVER*„PRO44:>X;HX;--------------------------R‹START.TIMER\…POKE †AUDCTL=Pf…POKE …AUDC1= p…ALSO …AUDC2z‡MOVE.B ŠTIMERCOUNT=…AUDF1„!‡MOVE.B ŠTIMERCOUNT=…AUDF2Ž…POKE †POKMSK=˜…ALSO …IRQEN¢:¬X;¶X;--------------------------ÀŠSTOP.TIMERÊ…POKE †STATUS=‡PIXOVERÔ…POKE †POKMSK=ÀÞ…ALSO …IRQENè:òX;üX;-------------------------- ˆPLOTDATAA5$C.58 $†STATUSB FˆPLOTEXITLX;V (>‡PIXOVER` FˆPLOTEXITjX;t(>ˆPIXSTART~HŠPLOTFAXMAPˆX;’ ŠINITFAXMAPœŠPLOTFAXMAP¦ ˆGETPOINT° ˆPLOTEXITº7Ä?Î7Ø>â7ì9öX;X;--------------------------  ‰PRINTBYTE P†BUFFER…BPUT ‡PRINTER=†BUFFER=(:2X;<X;--------------------------F‹PRINTFAXMAPP"…OPEN ‡PRINTER=…WRITE==A‚P:AZ…BPUT ‡PRINTER=†IPMESS=d!†LEA.W ŠPRINTSTART=‰PSTARTADRn†LEA.W ƒBPL=ˆPRINTCOLxƒPL1‚ ŠPRINTALINEŒ†ADD.W ‰PSTARTADR=–†SUB.W ˆPRINTCOL= EƒPL1ªX;´†CLOSE ‡PRINTER¾:ÈX;ÒX;--------------------------ÜŠPRINTALINEæ…BPUT ‡PRINTER=†PPMESS=ð…BPUT ‡PRINTER=†NUMROW=ú‡MOVE.W †NUMROW=ˆPRINTROW!‡MOVE.W ‰PSTARTADR=‰POINTER.D„PLP1%>"Q@‰POINTER.D7, ‰PRINTBYTE6†SUB.W ‰POINTER.D=ƒBPL@†SUB.W ˆPRINTROW=J QˆPRINTROWTLˆPRINTROW^ H„PLP1hX;rQ>‚CR| ‰PRINTBYTE†:X;šX;--------------------------¤‹INIT.SCREEN®…POKE †SDMCTL=¸ ŒCLEAR.SCREENÂ…POKE ‹HORIZ.COUNT=Ì…ALSO ŠVERT.COUNTÖ†LEA.W †SCREEN=‡DISPLAYà ŠBUILD.LISTê†LEA.W …DLIST=†SDLSTLô…POKE †COLOR0=þ…POKE †COLOR1=…ALSO †COLOR4…POKE †COLOR2= …POKE †COLOR3=4&…POKE †SDMCTL="0::X;DX;--------------------------NŠDECIMALIZEX‡MOVE.W ‡DECIMAL=‰COUNTER.Db†LEA.W =‡DECIMALlQ‰COUNTER.DvL‰COUNTER.D€ F…DECIXŠX;”†SUB.W ‰COUNTER.D=ž …DECI1¨<²†ADD.W ‡DECIMAL=¼-ƆSUB.W ‰COUNTER.D=Ð E…DECI1Ú …DECIXä Q‡DECIMALî5øQ‡DECIMAL ŒDEC.TO.ASCII  '‡DECIMAL&‡DECIMAL 7* ŒDEC.TO.ASCII4'‡DECIMAL>&‡DECIMALH:RX;\"X;- - - - - - - - - - - - - - -fŒDEC.TO.ASCIIp5zM>ð„V?ŽV?˜V?¢V?¬ †CHROUT¶?À7ÊM>Ô †CHROUTÞ,èO>0òL>‰ORINCOLORü>X;:X;$X;--------------------------.ŒUPDATE.STATS8†LEA.W =‡DECIMALB‡MOVE.B ‡COLSKIP=‡DECIMALL ŠDECIMALIZEV#‡MOVE.B ‡DECIMAL=‡ST.LINE`X;j‡MOVE.W †NUMCOL=‡DECIMALt ŠDECIMALIZE~"†MOVEM =‡DECIMAL=‡ST.LINEˆX;’ ‡MOVE.W ŠTIMERCOUNT=‡DECIMALœ ŠDECIMALIZE¦"†MOVEM =‡DECIMAL=‡ST.LINE°X;º†WRITE ‡ST.LINE=‰TEXT.LINEÄ:ÎX;ØX;--------------------------â ‡KEYBUFFì =======ö ˆKEYTABLE APA=AAA=ARA=AKA  AA=A+A=A-A A1A=A2A=A3A=AIA ACA=ALA=ASA(‹LENKEYTABLE ˆKEYTABLE2X;<ŒKEYJUMPTABLEF ŽPRINT.A.FAXMAPP ‹ADJUST.SYNCZ …RESETd ‹CHANGE.SKIPn ŒLESS.COLUMNSx ŒMORE.COLUMNS‚ ‰MORE.TIMEŒ ‰LESS.TIME– ‹SET1LINESEC  ‹SET2LINESECª ŒSETMICROMODE´ ŠINV.SCREEN¾ ŒCLEAR.SCREENÈ ˆLOAD.PIXÒ ˆSAVE.PIXÜX;æX;--------------------------ð„MAINú ‹INIT.SCREEN ŒUPDATE.STATS"…OPEN ˆKEYBOARD=„READ==A‚K:A…POKE †STATUS=‡PIXOVER" …MAIN1, †SCROLL6Q‚CH@R>ÿJ F…MAIN1TX;^…BGET ˆKEYBOARD=‡KEYBUFF=h Q‡KEYBUFFr$>‹LENKEYTABLE| …MAIN2†RˆKEYTABLE9 F…MAIN3šX;¤0® I…MAIN2¸X; !…MAIN1ÌX;- - - - - - - - - - - - -Ö …MAIN3à PERFORM.ROUTINEê !…MAIN1ôX;þX;--------------------------PERFORM.ROUTINEAT?&>0QŒKEYJUMPTABLE9:5DQŒKEYJUMPTABLE9N5X:bX;lX;--------------------------vŽPRINT.A.FAXMAP€…POKE †STATUS=‡PIXOVERŠ ŠSTOP.TIMER”!‹PRINTFAXMAPžX;¨X;--------------------------²‹ADJUST.SYNC¼…POKE ˆADJCOUNT=Æ:ÐX;ÚX;--------------------------ä …RESETî Q†STATUSø R>‡PIXDRAWH‰GETFAXMAP X; Q‡CURRCOL L‡CURRCOL* H…RESET4X;>!ŠINITFAXMAPHX;RX;--------------------------\ ‰GETFAXMAPf…POKE †STATUS=ˆPIXSTARTp ‹START.TIMERz:„X;ŽX;--------------------------˜‹CHANGE.SKIP¢ #‡COLSKIP¬ Q‡COLSKIP¶R> À D„CS11ÊX;Ô…POKE ‡COLSKIP=Þ„CS11è!ŒUPDATE.STATSòX;üX;--------------------------ŒLESS.COLUMNS†SUB.W †NUMCOL=!ŒUPDATE.STATS$X;.X;--------------------------8ŒMORE.COLUMNSB†ADD.W †NUMCOL=L!ŒUPDATE.STATSVX;`X;--------------------------j ‰LESS.TIMEt†SUB.W ŠTIMERCOUNT=~ ŒUPDATE.STATSˆ!‹START.TIMER’X;œX;--------------------------¦ ‰MORE.TIME°†ADD.W ŠTIMERCOUNT=º ŒUPDATE.STATSÄ!‹START.TIMERÎX;ØX;--------------------------â‹SET1LINESECì‡MOVE.W †ONEPER=ŠTIMERCOUNTö‡MOVE.W ŠONELINEROW=†NUMCOL ŒUPDATE.STATS !‹START.TIMERX;X;--------------------------(‹SET2LINESEC2‡MOVE.W †TWOPER=ŠTIMERCOUNT<‡MOVE.W ŠTWOLINEROW=†NUMCOLF ŒUPDATE.STATSP!‹START.TIMERZX;dX;--------------------------nŒSETMICROMODEx‡MOVE.W †MICROM=ŠTIMERCOUNT‚‡MOVE.W ˆMICROROW=†NUMCOLŒ ŒUPDATE.STATS–!‹START.TIMER X;ªX;--------------------------´ ˆSAVE.PIX¾ ŠSTOP.TIMERȆWRITE ˆTYPEMESS=‰TEXT.LINEÒX;Ü…BGET ˆKEYBOARD=‡KEYBUFF=æ Q‡KEYBUFFðR> MúHƒSP3X;!‰SAVEMICROƒSP3"R> F,HƒSP46X;@ !ˆSAVEFULLJƒSP4T!ŒUPDATE.STATS^X;h"X;-----------------------------r ‰SAVEMICRO|!†WRITE ŠSAVINGMESS=‰TEXT.LINE† …OPEN „DISK===‰MFILENAME I„SAM0šX;¤†CLOSE „DISK®!ŒUPDATE.STATS¸ X;- - - - - - - - - - - - - -„SAM0Ì ‡MOVE.W …SUBDL=‰POINTER.AÖ$>Àà„SAM1ê%>ô &†XINDEXþ„SAM2 Q@‰POINTER.A7 '†YINDEX N>ÿ& P‡KEYBUFF0 …BPUT „DISK=‡KEYBUFF=: %†YINDEXD 3N )>(X D„SAM2b X;l †ADD.W ‰POINTER.A=ƒBPLv $†XINDEX€ 0Š H„SAM1” X;ž ‡MOVE.B †COLOR4=‡KEYBUFF¨ ‡MOVE.B †COLOR0=‡KEYBUFF² ‡MOVE.B †COLOR1=‡KEYBUFF¼ ‡MOVE.B †COLOR2=‡KEYBUFFÆ …BPUT „DISK=‡KEYBUFF=Ð X;Ú †CLOSE „DISKä !ŒUPDATE.STATSî X;ø X;---------------------------! ˆSAVEFULL !†WRITE ˆSAVEMESS=‰TEXT.LINE!X; !…BGET ˆKEYBOARD=‡KEYBUFF=*! Q‡KEYBUFF4!R> 1>! F„SAF0H!X;R!R> 2\! HˆSAVEFULLf!„SAF0p! ‡MOVE.B ‡KEYBUFF=ŠFILENAME.Xz!X;„!#…OPEN „DISK=…WRITE==ˆFILENAMEŽ! I„SAF2˜!X;¢!†CLOSE „DISK¬!!ŒUPDATE.STATS¶!X;À! X;- - - - - - - - - - - - - -Ê!„SAF2Ô!!†WRITE ŠSAVINGMESS=‰TEXT.LINEÞ! …BPUT „DISK=†SCREEN=‡SCRSIZEè!†CLOSE „DISKò!!ŒUPDATE.STATSü!X;""X;-----------------------------" ˆLOAD.PIX" ŠSTOP.TIMER$"†WRITE ˆLOADMESS=‰TEXT.LINE."X;8"…BGET ˆKEYBOARD=‡KEYBUFF=B" Q‡KEYBUFFL"R> 1V" F„LDP0`"X;j"R> 2t" F„LDP0~"X;ˆ"!ŒUPDATE.STATS’"X;œ" X;- - - - - - - - - - - - - -¦"„LDP0°" ‡MOVE.B ‡KEYBUFF=ŠFILENAME.Xº"X;Ä""…OPEN „DISK=„READ==ˆFILENAMEÎ" I„LPX2Ø"X;â" †WRITE ‰BLANKMESS=‰TEXT.LINEì"†CLOSE „DISKö"!ŒUPDATE.STATS#X; # X;- - - - - - - - - - - - - -#„LPX2#!†WRITE ŠLOADERMESS=‰TEXT.LINE(# …BGET „DISK=†SCREEN=‡SCRSIZE2#†CLOSE „DISK<#!ŒUPDATE.STATS