@L}6CD l0C)HCC WhL/h `CmCDiD`  R@P1  Y0@R !L` D  C D     )16CS S)  C)D1 p p 0 C9DI pCDL~CiCDiD` D  C D     )16CS S)  C)D1 p p }0 C9DI pCDL~CiCDiD` DD˙` d J)L !}D L(( LL()  L| L( S LH 0p n  } CY?  q  L L  ` )} `A! d߰")-݆ "  $G@LLLI $j") $G% }H 3S8`G ȱG ȱG   Gȭ Gȭ GG}GHiH8(()) G$H% `(0 })8` d)L ݆  LGȘ ݆LL d  ! LL d)N>Q  HH) }  hyhyB q L> Lm JJ  Ln*` dB%' }8  H H` 1 { LL   !L     Hh SY?  q  1L }  !? S   q 1 L   Ll  Lg E`L   !L)  q 1L}) `L0AM݊L݉ ML  N݆LLLNLMLHG!@}1F GȱGLLEEȩÑEȑEEȑE Ed E7EȩE  q} L !,0,0SGɛ L 1 !L EHEh W G gLLSROTCES EERF } G) *Gȩ GȽG GȌd q q G`  8   0G  `D}CEDC0X:Ȣ Y ȱC* ? 0.. , 0%n ?A[ 0 : L`L  `, 0`Y}`piH n0)բY? 08`0 }  0$L GGȽG L `8L`L}8`  05G)݁,G)ȱGȱGHh0})Hh` B! 8`8iiiLE`}E8FEh( l0`ɃLL L8^~jj8jHi hEEEiEȱEiE` dTE} H8EEȱEEȩEh J E8   . m  i`LI!)E1FR}1LJ舩9GIH`LJJ`HGHh l`} S gL   8 rii `дCDCG W  }C  Lq` X٨`DOS SYS IIIIIIIIIIIIIIIC`0 ߩ0}})@}er OS  !!"#DOSDOS SYS }}}L}F,-}CDOS SYSb.2DOSXL SUPb;`DOSXL XL bMENU COMbCLRDSK COMb$CONFIG COMbKCOPY COMb:DO } COM}UQ   ]   TL ]L!T  ɐ    D!`T }S 0 c 0 c ( 0 c`! LD:STARTUP.EXCD:DOSXL.SYSD:AUTORUN.SYSD:MENU.COM7"!}  (`;LHLLLZLLD1:D:STARTUP.EXCF,D1:RUN@RUNDOS.SYSTORSӬ"}㮠 @E: K  u  lllll,hhr 'Il#} \LAlllShhLZ $ \LA E7:8 K ` HH` U0: $}@L* LA  Z[: ]08ʈ08a{)(` ]H\H`!L`7 %}Q:6,7 c  LAD7 18:LAMOC.REMCARENDSCRNOSRENPROUNPSAVLOARUNERADIRTYP) @15=&}w{ Y #$!  \LA   L 6: *79.8 L BUɛ   L'} LA  "0   "` L Bɛ ST LA  0' 78 9: l " 7 "0LA \LA  c(}LA 06 l 7S8T Ʌ Ɉ L \LA`  "08 797:8)} 9 L 7 "H h``LȌ  H7"h"!)@ !LA!)L,! @" J "0*}a!) !)ύ! 2L % " H & " L2 h0,!p  "`!L!)  \!!)@LL+}CXE.JH hL"H hL! 0   "!LE L" B VCɀ` \LA5'6!78 897,}:8iL \LA56 5L 7ED`IH`U L `7 B-}Uɛ :VW 7U7 Q ` B8U0$  . Ԍ ` U U.}`ɛ, `ɦ!ɐɠi,ɰ)    L"DRIVE NUMBER ERRORNO BUFFERSDISK FULLI/O ERRORSYSTEM E/}RRORINVALID FILE NAMEFTe DOS XL - ATARI version 2.30 Copyright (C) 1994 by FTe FILE PROTECTEDWRITE PROTECTEDD0}IRECTORY FULLFILE NOT FOUNDADR RANGE ERRORBREAK KEY ABORTINVALID DEVICENO CARTRIDGE'6FUdt1}}?} dASPY 1.0AnX;x X; SPY 1.0 X; -------X; Look at label USERCONTROLX; where you can customizeX; this spy p3}rogram.X; -------------------------X; SAVE #D:SPY.M65X; ASM ,,#D:SPY9000.COMX;X; DOSINI ZTMP4}X;SDLSTL0SDLSTH1BOOTADB"COLOR0,X;6DDEVIC@DCOMNDJDSTATSTDBUFLO^5}DBUFHIh DAUX1 r DAUX2 |X;CONSOLА COL0КDLISTLԤDLISTHԮVCOUNT Ը SIOVY6}X;PATCHSEClADDRSECmADDRSEC2nSECTSECoSECTSEC2pLASTSECqX;X; SPYCORE.M65 contai7}ns all X; code that loads spy datas,&!X; runs boot program, installs0 X; patches and save memory on:X; spy disk.DX;N8}MAINXEIb>D:SPYCORE.M65lIvX;X; User patch.X; -----------X; This part of code isX; executed when a pa9}tchX; address is 0. It meansX; either that there is noX; more patch or the userX; has put a 0 address toX; do :}a special taskX; between several patches.X;X; At this time, we haveX; restored program codeX; (no patch), save;}d X; program registers intoX; SAVEREGS and CURPATCH X; points to a 0 address.*X;4X; We can modify this>X; patch <}so it will doHX; something, then JMP toRX; USERPATCH or just INC\X; twice CURPATCH to getfX; to the next patch andp=}X; JMP to USERPATCH.zX;X; If nothing has to beX; done, then a JMP toX; USEREND will continueX; the normal opera>}tions.X; It will ask for theX; SPY disk to save datas.X;X; LASTPATCH is the addressX; where we left off the?}X; program execution.X;USERCONTROL !USERENDX;X; Title colorsX;$ SETCOL. = ==h=8X;BX; Save @}screen paramsLX;V SAVCOL` ====j SAVDLt ~ CURINDEX  CURPATCH  SAVPATCH = LASA}TPATCH  SAVEREGS ===X;!X; Display list to prompt userX; to insert program diskX;  DLISTSPYB} p=p=p=G SPYTITLE( p=F2 TITLE< PRGSTATUSF p=p=p=pP p=p=p=BZ PROMPTd SPYPROMPTn p=Fx C}PRGSTATUS A DLISTSPYX; SPYTITLE A V1.0A A (C) BEAX; PRGPROMPT AInsert boot disk inAD} A D1: and pressA A START.AX; SPYPROMPT AInsert ٠ inA A D1: and pressA A START. A"X;, PRGSE}TATUS6 A A@ A AJX;T PATCHNUM^ A PATCH AhPATCHDIGITr A00A| A APPLIED AX; WRONGF}DISK A WRONGA A DISK AX; ERRORMSG AERROR WHILA AE WRITTINGAX; FINISHED A FINISAG} AHED ! AX;X; Get sector commandX; GETDATA& 1==R=@0 PATCHDATA= =: PATCHSECDGETLEN GETH}DATANX;XX; Put sector commandbX;l PUTDATAv 1==W= MEMADDR=@=PUTLEN PUTDATAX;X; Boot sectorI} from prg diskX; BOOTSEC X;#X; Parameters read from spy diskX; CHKPATCH  PATCHDATA  J} SPYMAGIC   PRGNAME* 4 PATCHADDR> hH MEMADDRR  \ MEMSECTORf  p ENDSPYzX;"X; TheK} prg starts at label MAINX;X; MAINX; X; End of external referencesX;an customizeX; this spy pa I  Y  qii@ d L X  i@ Yklik M}ljjii @ YL}e ːkBlCm n ȐLl e8`fLȱf N}ȱf`ejkfȹfȹfee`jkmnoHl(l ّ Lȑ  LjSk }dASPY 1.0AnX;xX; SPYCORE 1.0X; -----------X; SAVEPROGX;!X; Set initial Get Sector cmd.X; BEGP}IN SETCMD READSEC SIOVX;X; Another sector to read ?X; #DAUX1 QDAUX1R>4LASTSEC" FPRGDISK,X;6Q}#X; Update Get Sector command for@X; the next sectorJX;T QDBUFLO^,hO>r PDBUFLO| QDBUFHIO> PDBUFHIR}Q>@ PDSTATS HREADSECX;#X; Display title and prompt user X; to insert his program diskX; PRGDISKX;X;S} Was it Spy disk ?X; CHKMAGIC DSTARTKEY WAITSTART& !BEGIN0X;:X; It was Spy disk !DX; Now, ask for boot T}disk.NX;X STARTKEYb BOOTPROMPTl WAITSTARTv RESTPROGX;"X; Load boot sector of prg diskX;Q> PDAUX1U}Q> PDAUX2Q>4BOOTSEC PDBUFLOQ>5BOOTSEC PDBUFHIQ>@ PDSTATS SIOV X; X; Move sector 1 to desV}t addr X;*QBOOTSEC4 PZTMP>QBOOTSECH PZTMPR%>\ MOVEBCLf QBOOTSEC8p P@ZTMP7z3)> HMOVEBW}CLX;X; Read other sectorsX;QBOOTSEC PDBUFLOQBOOTSEC PDBUFHI READOTHER"BOOTSECQBOOTX}SEC FDOPATCH QDBUFLO,O>$ PDBUFLO. QDBUFHI8O>B PDBUFHIL #DAUX1VQ>@` PDSTATSj SIOVt!REAY}DOTHER~X;"X; Make patch to come back into"X; SPY after boot has executed.X; DOPATCHQ> PCURPATCH SETPAZ}TCHX;X; Call boot programX;QBOOTSEC PBOOTADQBOOTSEC PBOOTADQBOOTSEC PDOSINI(QBOO[}TSEC2PDOSINI< PUSHRETF!SAVERESULTP PUSHRETZ !@DOSINI:dX;nX; Make a PatchxX; SETPATCH %CURPATCH\}QPATCHADDR8 PZTMPQPATCHADDR8 PZTMPHPATCHEXIST QZTMPHPATCHEXIST;:X;X; There is a pa]}tch to doX;PATCHEXIST%>" Q@ZTMP7,PSAVPATCH86Q>L;; JMP opcode@ P@ZTMP7J3T Q@ZTMP7^PSAVPATCH8hQ>^}4SAVERESULTr P@ZTMP7|3 Q@ZTMP7PSAVPATCH8Q>5SAVERESULT P@ZTMP7,:X;X; Make a PatchX; UNDOP_}ATCH %CURPATCHQPATCHADDR8 PZTMPPLASTPATCHQPATCHADDR8 PZTMP&PLASTPATCH0%>:QSAVPATCH8D`} P@ZTMP7N3XQSAVPATCH8b P@ZTMP7l3vQSAVPATCH8 P@ZTMP7 #CURPATCH #CURPATCH:X;X; Run programX;a} RUNPROGQLASTPATCH PZTMPQLASTPATCH PZTMP$SAVEREGS%SAVEREGS QSAVEREGS5  QSAVEREb}GS*84 !@ZTMP:>X;HX; Save prog context.RX;\ SAVEPROGf SAVECOLORp SAVEDLISTz SETCOLOR VBLANK !SETDLc}ISTX;X; Restore prog context.X; RESTPROG RESTCOLOR VBLANK RESTDLIST !VBLANKX;"X; Check magic d}code of spy diskX; CHKMAGIC QSPYMAGIC R> S$ HBADMAGIC. QSPYMAGIC8 R> PB HBADMAGICL QSPYMAGICV R> Ye}` HBADMAGICj VBLANKt Q>4PRGNAME~ PTITLE Q>5PRGNAME PTITLE , : BADMAGIC ; : X; X; Ask for Boof}t disk X; BOOTPROMPT VBLANK Q>4PRGPROMPT PPROMPT Q>5PRGPROMPT PPROMPT( :2 X;< X; Set colorsF X;P g} SETCOLORZ %>d COLORBCLn QSETCOL8x PCOLOR08 PCOL08 3 )> HCOLORBCL : X; X; Save program colors Xh}; SAVECOLOR %> COLORBCL2 QCOLOR08 PSAVCOL8 3 )> HCOLORBCL2" :, X;6 X; Restore program colors@ X;i}J RESTCOLORT %>^ COLORBCL3h QSAVCOL8r PCOLOR08| PCOL08 3 )> HCOLORBCL3 : X; X; Set Display list tj}o spy X; screen. X; SETDLIST Q>4DLISTSPY PSDLSTL PDLISTL Q>5DLISTSPY PSDLSTH PDLISTH :& X;0 X; Sk}ave Display list addr: X;D SAVEDLISTN QSDLSTLX PSAVDLb QSDLSTHl PSAVDLv : X; X; Restore Display list X;l} RESTDLIST QSAVDL PSDLSTL PDLISTL QSAVDL PSDLSTH PDLISTH : X; X; Wait for start key X; WAITm}START QCONSOL R>* HWAITSTART4 NOSTART> QCONSOLH R>R HNOSTART\ :f X;p X; Fill SIO commandz X; SETCMDn} %> SETCMDBCL QGETDATA8 PDDEVIC8 3 )>GETLEN HSETCMDBCL : X; X; Wait for Vertical blank X; VBLAo}NK QVCOUNTR>z HVBLANK$:.X;8X; Print Patch numberBX;L PRINTNUMV QCURPATCH`V?j NUMNEXTtR> ~ GNUMp}DIGIT;S> #PATCHDIGIT !NUMNEXT NUMDIGIT,OPATCHDIGITPPATCHDIGIT%> NUMBCLQPATCHNUMq}8PPRGSTATUS83 )> HNUMBCL:(X;2X; Print Wrong Disk<X;FPRINTWRONGP%>Z PRINTBCLdQWRONGDISK8nr}PPRGSTATUS8x3)> HPRINTBCL:X;X; Print ErrorX;PRINTERROR%> ERRORBCLQERRORMSG8PPRGSTAs}TUS83)> HERRORBCL:X;"X; Print End,X;6 PRINTEND@%>J ENDBCLTQFINISHED8^PPRGSTATUS8h3r)>t}| HENDBCL:X;X; Clear status lineX; CLRSTATUS%>C CLRBCLPPRGSTATUS83)> HCLRBCL:u}X;X; Clear prompt lineX;& CLRPROMPT0%>:CD CLRBCL2NPSPYPROMPT8X3b)>(l HCLRBCL2v:X;!X; Afterv} program execution, weX; should come back here ! X; Undo the current patch andX; install next one.X;SAVERESULTw}6 PSAVEREGS&SAVEREGS'SAVEREGS7PSAVEREGS UNDOPATCH  USERPATCH SETPATCH  ENOPATCH*Xx};4X; Next patch is installed.>X; We must jump to the addrHX; where we left off.RX;\ !RUNPROGfX;pX; No more patcy}h. It's timezX; to save memory on disk.X; NOPATCH!USERCONTROL USERENDQ>4SPYPROMPT PPROMPTQ>5SPYPROMz}PTPPROMPT PRINTNUM SAVEPROGX;#X; Check if SPY disk is insertedX; CHKSPY WAITSTART CLRSTATUS{}$ SETCMD.Q>4CHKPATCH8 PDBUFLOBQ>5CHKPATCHL PDBUFHIV SIOV`%>j CHKBCLtQCHKPATCH8~RPATCHDATA8 HBA|}DDISK3)> HCHKBCL FGOODDISKX;X; This is not spy disk !X; BADDISK PRINTWRONG !CHKSPYX;X;}} Write data to SPY disk. X; GOODDISK CLRPROMPT(%>2 SETPUT< QPUTDATA8F PDDEVIC8P3Z )>PUTLENd HSETPUTn~}Q>4MEMADDRx PZTMPQ>5MEMADDR PZTMPQ>4MEMSECTOR PZTMPQ>5MEMSECTOR PZTMP%> PUTBCL Q}@ZTMP7 PDBUFLOQ@ZTMP7 PDAUX13 Q@ZTMP7 PDBUFHIQ@ZTMP7" PDAUX2,36)>@ FSPYENDJ QDAUX1T} HDOPUT^ QDAUX2h FSPYENDr DOPUT|Q> PDSTATS 'CURINDEX SIOV GERROR %CURINDEX !PUTBCLX;$X; A}n error occured while writingX; ERROR PRINTERROR !STOPX;X; Finished !X; SPYEND& PRINTEND0QPATC}HDATA: FSTOPDX;NX; Continue program.XX;b BOOTPROMPTl WAITSTARTv RESTPROG !RUNPROGX;X; Freeze Atari.}X;STOP!STOPX;X; SAVE #D:SPYCORE.M65--------X; SAVEPROGX;!X; Set initial Get Sector cmd.X; BEG1PlY mxy`8` `X`]`]`p0ԩ1`0b1c`b }0ԭc1``S ` z`eJ 0 8 L"m ``+` }?``Ǔ(`lmnho  ːL.LUǍ  I n  Yi DL }z_ T ȱ #  d Y0dL RLR `i XL.LRUP }L hpppGpFpppppppBǓpFAp6# "%)nsertbootdiskin$andpress34!24)nsert }in$andpress34!240!4#(!00,)%$72/.'$)3+%22/27(),%72)44).'&).)3(%$ }Qh1R@i l1W@0!4#(!00,)%$72/.'$)3+%22/27(),%72)44).'&).)3(%$ $ve memory on disk.;NOPATCH JMP USERCONTROLUSEREND LDA # S}PYPROMPT STA PROMPT+1 JSR PRINTNUM JSR SAVEPROG;; Check if SPY disk is inserted;CHKSPY } JSR WAITSTART JSR CLRSTATUS JSR SETCMD LDA # CHKPA}TCH STA DBUFHI JSR SIOV LDY #0CHKBCL LDA CHKPATCH,Y CMP PATCHDATA,Y BN}E BADDISK INY CPY #128 BNE CHKBCL BEQ GOODDISK;; This is not spy disk !;BADDISK } JSR PRINTWRONG JMP CHKSPY;; Write data to SPY disk.;GOODDISK JSR CLRPROMPT LDY #0SETPUT} LDA PUTDATA,Y STA DDEVIC,Y INY CPY #PUTLEN BNE SETPUT LDA # MEMADDR STA ZTMP+1 LDA # ME}MSECTOR STA ZTMP+3 LDY #0PUTBCL LDA (ZTMP),Y STA DBUFLO LDA (ZTMP+2),Y } STA DAUX1 INY LDA (ZTMP),Y STA DBUFHI LDA (ZTMP+2),Y STA DAUX2 INY } CPY #254 BEQ SPYEND LDA DAUX1 BNE DOPUT LDA DAUX2 BEQ SPYENDDOPUT } LDA #$80 STA DSTATS STY CURINDEX JSR SIOV BMI ERROR LDY CURINDEX JM}P PUTBCL;; An error occured while writing;ERROR JSR PRINTERROR JMP STOP;; Finished !;SPYEND } JSR PRINTEND LDA PATCHDATA BEQ STOP;; Continue program.; JSR BOOTPROMPT JSR WAITSTAR}T JSR RESTPROG JMP RUNPROG;; Freeze Atari.;STOP JMP STOP;; SAVE #D:SPYCORE.M65 JSR WAITSTARkLEN GETDATA,X;6X; Put sector command@X;J PUTDATAT 1==W=^ MEMADDR=@=hPUTLEN PUTDATArX;|X; B}oot sector from prg diskX; BOOTSEC X;#X; Parameters read from spy diskX; CHKPATCH  PATCHDAT}ppBpFɓAJ6# "%)nsertbootdiskin$andpress34!24)nsertin$andpress34!24}0!4#(!00,)%$B72/.'$)3+%22/27(),%72)44).'&).)3(%$1R@C l1WÕ@pppppwA  SPYMAGIC  PRGNAME  PATCHADDR h& MEMADDR0  : MEMSECTORD  N ENDSPYXX};b"X; The prg starts at label MAINlX;vX; MAINX; X; End of external referencesX;X;X; SAVE #D}:SPY.M65X; ASM ,,#D:SPY9000.COM.0(X;2 DOSINI < ZTMPFX;PSDLSTL0ZSDLSTH1dBOOTADBnCOLOR0"ppBpFɳAJ6# "%)nsertbootdiskin$andpress34!24)nsertin$andpress34!24}0!4#(!00,)%$B72/.'$)3+%22/27(),%72)44).'&).)3(%$1R@C l1Wõ@pppppwppBpFAJ6# "%)nsertbootdiskin$andpress34!24)nsertin$andpress34!24}0!4#(!00,)%$B72/.'$)3+%22/27(),%72)44).'&).)3(%$1R@C l1W@pppppwppB3pF3AJ36# "%)nsertbootdiskin$andpress34!24)nsertin$andpress34!24 }0!4#(!00,)%$3B472/.'$)3+%22/27(),%72)44).'&).)3(%$1R@C5 l1W5@03ppppp wppBSpFSAJS6# "%)nsertbootdiskin$andpress34!24)nsertin$andpress34!24}0!4#(!00,)%$SBT72/.'$)3+%22/27(),%72)44).'&).)3(%$1R@CU l1WU@PSpppppwppBspFsAJs6# "%)nsertbootdiskin$andpress34!24)nsertin$andpress34!24}0!4#(!00,)%$sBt72/.'$)3+%22/27(),%72)44).'&).)3(%$1R@Cu l1Wu@pspppppwSAVCOL .BYTE 0,0,0,0,0SAVDL .WORD 0CURINDEX .BYTE 0CURPATCH .BYTE 0SAVPATCH }.WORD 0,0LASTPATCH .WORD 0;; Display list to prompt user; to insert program disk;DLISTSPY .BYTE $70,$}70,$70,$47 .WORD SPYTITLE .BYTE $70,$46TITLE .WORD PRGSTATUS .BYTE $70,$70,$70,$70 } .BYTE $70,$70,$70,$42PROMPT .WORD SPYPROMPT .BYTE $70,$46 .WORD PRGSTATUS .BYTE $41} .WORD DLISTSPY;SPYTITLE .SBYTE "spy disk V1.0" .SBYTE " (C) BE";PRGPROMPT .SBYTE "Ins}ert boot disk in" .SBYTE " D1: and press" .SBYTE " START.";SPYPROMPT .SBYTE "Insert ٠ in"} .SBYTE " D1: and press" .SBYTE " START. ";PRGSTATUS .SBYTE " " .SBYTE " } ";PATCHNUM .SBYTE " PATCH "PATCHDIGIT .SBYTE "00" .SBYTE " APPLIED ";WRONGDISK } .SBYTE " WRONG" .SBYTE " DISK ";ERRORMSG .SBYTE "ERROR WHIL" .SBYTE "E WRITTING";FINI}SHED .SBYTE " FINIS" .SBYTE "HED ! ";; Get sector command;GETDATA .BYTE $31,$01,$52,$4}0 .WORD PATCHDATA,$0A,$80 .WORD PATCHSECGETLEN = *-GETDATA;; Put sector command;PUTDATA .}? } %`ee`L`8Ƹȥ`ȱi`Ȧ8}````8`ƶ`l8嶅`ȱ` M` Mȥ``EE`%8}%`8(` Ƶ` Ƶ` % 0Ƶ` 0Ƶ` Ƶ` 0Ƶ`Ŷŵ(` FƵ` FƵ` %8} FƵ` FƵ` %*ff` %&`8嵅嶅`II` Lj ff`&&8}`$ Ȃ8嵅嶅$8峅崅 @&&&8嵨嶐泅$p8峅崅Ld8居岅$8}㥴` L L`0Lee`ee`ȱl MLÀ MLɂ8}v$Lw ix iy z w z !! :8`ȱ -0.:*ɂ`|ȱ A 8}[|숭|L!ɂ {iʂi˂{ 0 ! 0{ɂL%  6ɂ M >LG8}چن߂ 6 M L섭܂ L 6 K L 6 K ʅ 6 M  8} 6 K 6 K L&ą 6 K ʅ 6 M  6 K!  6ɂ M >L18}ʅ 6 K ʅ 6 M  6 K  6ɂ M >L1ͅ 6 K ʅ 6 8} M  6 K  6ɂ M >L1Ѕ 6 K ʅ 6 ؆ M  6 K Ӆ 8}6 K ۆ ` Lنچ چن 6 6 À LKنچ 6 `ENTER #8}LOAD #ASM ASM #,#,#,#DOSۆ䝇!"``!"ffLL}FT8}e MAC/65 Disk-Based ver 4.20 (C) 1994 by FTe .I.ELS.ENDI.MACR.END.TITLŠ.PAG.WOR.ERRO.BYT.SBYT.DBYT.E8}N.OP.TA.INCLUD .FLOA.CBYTŻ.LOCA.SE*.JSJMDEINLDLDSTSTCPCPBIBRCLCLCLCLDEDEIN8}INNOPHPHPLPLRTRTSESESETATATSTXTXTYBCBCBEBMBNBPBVBVORANEOADSTLDCMSBASROLSRO% <>8}.DEƽ<><.O.AN.NOԡ.RE .REF.DEF.NOT .AND .OR ,X),,,ةNNOOBEREJECLISX8}REMLISCLISNUؐҐҐɐҐ3''3ϐꐰ'ϐϐĐPKrrurSSTWT~x(æK8}J3bǧrnhw ^~7*C25  榤 XʈHh(@`8x0Pp!Aa8}&Ff Ɍ T :X  ,  C uLЋ - ۢ 9z}BYTE $31,$01,$50,$80 .WORD MEMADDR,$20,$80PUTLEN = *-PUTDATA;; Boot sector from prg disk;BOOTSEC *}= *+128;; Parameters read from spy disk;CHKPATCH *= *+128PATCHDATA *= *+1SPYMAGIC *= *+3}PRGNAME *= *+20PATCHADDR *= *+104MEMADDR *= *+256MEMSECTOR *= *+256ENDSPY;; Th}e prg starts at label MAIN; *= $02E0; .WORD MAIN;; End of external references; .END ;; SAV}E #D:SPY.M65; ASM ,,#D:SPY9000.COM *= $02E0; .WORD MAIN;; End of external references; .END ;; SAV$ INSERT SOURCE DISKETTE <==A  MSGDEST= * A==> INSERT DESTINATION DISKETTE <==A  MSGSRCDST= - A==> INSERT SOURCE} & DEST DISKETTES <==A  MSGPOSERR= # A[[ READ/WRITE ERROR (POS) ]]A#  MSGSTDERR=( # A[[ READ/WRITE ERROR (STD) ]]}A-  MSGREADING= 2  A>>> READING <<>> WRITING << ENTER COMMAND ==>A}K  MSGNUMCPY=P % A==> ENTER NUMBER OF COPIES ==>AU  MSGNONE=Z  MSGCMNDS=_ , AS:1 D:1 FMT:Y A:Y (S,D,F,C,N,O:226}7) Ad  MSGSTATS=i + ATR:00 SE:01 FM:001 #A000 CO:01 NU:00An  MSGRFMTERR=s  A[[ READ FORMAT ERROR ]]Ax  MSGCODEDR}V=} $ A==> ENTER OPEN CODE,DRIVE ==>A MSGLAST X; X; Find message with its tag. X; FINDMSG$>4MSGDIFF &} $>5MSGDIFF & %> H0141R@7 FH0140 3 HH0141 # HH0141 H0140C O P DH0142 #} H0142: X; X; Print message on the last X; line of the screen. X; COPYINP$>4LINEINPUTDIFF  %>5LINEINPUT}DIFF X; X; Print a message. X; COPYMSG& '"  FINDMSGDIFF ' %>, Q@71 '6 3; '@ >E H0149%}J Q@7O GH0147T 0Y IH0147^ #c JUMPOVER h H0147Q>m %r P@7w #| )>' DH0149 : X; X; Print an} error message on !X; the last line of the screen X; PRTERR COPYINPDIFF  SOUNDERRDIFF X; X; Wait severa}l seconds to X; be able to read the msg X; that appears on the last X; line of the screen. X; PAUSEQRTCLOK O}> ? H0151 H0079DIFF R> FH0150 )RTCLOK HH0151 H0150: H0062%> H0215Q> P P H}0155Q@7 FH0152 R>  FH0152 ;! S>& R> + DH01530 S>5 H0153U?: U?? U?D U?I $>N H0154U?S UX U}] 0b HH0154g 3l HH0155q H0152:v H0197%>{ Q  H0156DIFF Q X; X; Convert a BYTE to an HEX X; s}tring. X; NUM2HEX%> H01565 V? V? V? V?  H0157DIFF 7 H0157M> L> R> DH0158 O> }H0158P8 3 : H0088R>0 DH0160 R>: DH0161 R>A DH0160 R>G DH0161 H0160; : H0161;% S> * },/ :4 X;9 X; Print sector number> X;C PRINTSCTQH FH0163M R>R EH0163W Q>\ PDAUX2a Qf T?k PDAUX1p T}?u T?z UDAUX2 T? UDAUX2 ODAUX1 > Q> ODAUX2 PDAUX2 A , O PDAUX1 Q> ODAUX2 PDAUX2 } PRTSECTDIFF , : H0163 PRTNONEDIFF ; : X; X; Print track number and X; prepare track lines to X}; receive a new track. X; SETUPTRKQ NUM2HEXDIFF  NEEDSCRLDIFF %>QP@7%>(Q$P@7})3.Q>|3P@78%>=P@7B%>QGP@7L PRTTRKDIFF Q:VX;[X; Look if we need to scroll`X; the track l}ineseX;jNEEDSCRLQoR>t DH0171y SCROLLDIFF ~Q>P H0171T?PT?O>QH0173DIFF 9}PQH0173DIFF 9P: H0255%>' NEEDSCRLDIFF  H0183%QH0175DIFF 8 NUM2HEXDI}FF %QH0176DIFF 8M>V?V?V?V?V?>QH0176DIFF 8 M> HH0177QH0178DIFF 9J}UMPOVER  H0177Q>x#P()H0181DIFF - DH01822Q>7P<PAPF H0182#KQPT?U?ZQ_P@7dC}i,nO>(s?xQ}P@7CO>(?QP@7QR> HH0183:X;H0178 =Q=E=W |=A=D=}SX; H0301%3CR> EH0185T??Q@7N>P@7C,O>(? Q@7N>P@7 H018}5:X;"X; Scroll the 6 track lines'X; to display another track,X; at the bottom of the1 X; screen.6X;;SCROLL H}0186DIFF @%>EQH0173DIFF J5OQH0173DIFF T5YH0189QH0187DIFF 8^PH0173DIFF 8cQH0187DIF}F 8hPH0173DIFF 8mCr,wO>DLTRACKLENGTH|?)>DLTRACKSCROLL DH01897PH0191DIFF P7}PH0191DIFF P%>w H0192Q>P@71 IH0192:X;X; Display track fieldX;Q NUM2HEXD}IFF  PRTTRKQPFIELDTRACKDIFF QPFIELDTRACKDIFF :X;X; Display sector fieldX;PRTSECTQ}  NUM2HEXDIFF QPFIELDSECTORDIFF Q!PFIELDSECTORDIFF & QDAUX1+P0 QDAUX25P: H01}97DIFF ?$>D H0199Q9IPFIELDABSOLUTEDIFF 9N0S IH0199X:]X;bX; When there is no sector,gX; "--" is di}splayed inlX; sector fields.qX;vPRTNONEQ> {PFIELDABSOLUTEDIFF PFIELDABSOLUTEDIFF PFIELDABSOLUTE}DIFF PFIELDSECTORDIFF PFIELDSECTORDIFF :X;X; Display copy number.X; PRTCPYQ NUM2HE}XDIFF QPFIELDCOPYDIFF QPFIELDCOPYDIFF : PRTNUMQ NUM2HEXDIFF QPFIELDNUMB}ERDIFF QPFIELDNUMBERDIFF :X;X; Is command: Dest ?X; (key D from main menu)X;OTHERCMDR> D} FH0206 X;X; Is command: Source ?X; (key S from main menu)X; R> S% HH0208*X;/X; Command is Source or Des}t4X; Change drive number9X; >$>CJUMPOVER H H0206$>M#9RQ9WR>\ DH0209aQ>fP9kX;pX; Ref}resh source and destuX; driver number on screen.zX; H0209QL>PFIELDSRCDIFF QL>PFIELDDSTD}IFF !MAINLOOPDIFF X;X; Is command: Format ?X; (key F from main menu)X; H0208R> F HH0207X;X; To}ggle Format Flag.X;QLINECMNDSDIFF  R> Y  HIONO Q> N  HIOSTAIONOQ> Y IOSTAPLINECMNDSD}IFF !MAINLOOPDIFF X;X; Is command: Open ?X; (key O from main menu)X;  H0207R> O HH0212 IORESE}TDIFF X; X; Command is Open Chip Drive$!X; Print a messqge asking user)X; to enter code,drive.X; 3PRINTMSG M}SGCODEDRV8X;=X; Get input from keyboardBX;G$>4LINEINPUTDIFF L%>5LINEINPUTDIFF QQ>V GETCMDDI}FF [X;`X; Abort if user has pressede X; Esc keyjX;o EH0213tX;yX; Decode user input~X; Default drive is D1:X};Q>P H0062DIFF X;!X; Put low-byte and hi-byte of X; code into DAUX1 and DAUX2.X;$ &DAUX1}$ &DAUX2> FH02143 H0215DIFF X;X; Test if drive number isX; correct.X;Q FH0065R>} EH0065$ HH0065P X; X; Command Open Chip Drive inX; register XX;H0214$>OPENCHIP#Q>(X;-}X; Send command to drive2X;7 SENDIODIFF < GH0218AH0213!MAINLOOPDIFF FX;KX; Bad user input.PX;UH006}5Q>MSGINPERRZJUMPOVER _X;dX; An error has occurred.iX; Either the code is bad ornX; this drive does not havesX}; a CHIP inside.xX;}H0218PRINTERR MSGOPNERR!MAINLOOPDIFF  H0212:X;X; Read a track.X;DORDTRKPD}AUX2QLT PDAUX1$>READTRACK, DOIOCHIPDIFF  INOERR!ERRFMTDIFF  NOERR:READTRK }H0223DIFF Q> DORDTRKDIFF  H0225DIFF QH0181DIFF  HH0226!H0227DIFF  H0226Q>PH02}28DIFF PH0229DIFF PH0230DIFF >H0234(IOBUFDIFF  EH0232OH0233DIFF 9R>d"2' DH0234, }H0232&H0181DIFF 1&IOBUFDIFF 6%; H0235DIFF @'H0236DIFF E H0237DIFF J EH0238O H0239DI }FF T EH0240Y H0241DIFF ^ EH0240c%hQ>4IDXTRKDIFF m$>5IDXTRKDIFF r H0242DIFF w$>UNKNOWN2|; } DOIOCHIPDIFF  GERRFMT$>GETSTATUS, DOIOCHIPDIFF  GERRFMTQH0181DIFF ;SRH0181D }IFF  HH0244Q> H0244?5Q>4IDXTRKDIFF $>5IDXTRKDIFF  H0242DIFF 7?Q>4IOBUFDIFFA } $>5IOBUFDIFFA  H0242DIFF $H0181DIFF H0252QIOBUFDIFF 9 FH0245N>M>xP M> }FH0246Q> H0246L!M>&JUMPOVER + H0245Q>0LH0248DIFF 95PH0248DIFF 9: HH0249?QIOBUFDIFF} @9DPH0251DIFF 9I H02490N HH0252S!H0253DIFF X ERRFMTPRINTERR MSGRFMTERR]!MAINLOOPDIFF b H0238Q}>gPH0230DIFF l H0240Q>qPH0229DIFF vPH0228DIFF {H0253%>5H0181DIFF Q>4H0181DIFF $>UNK7}@@ILpp BBB`B;BB+BBBpB A…  DȄ' L }      l C NL$ JL 3 c  1  ~  L }Ɇ cL@AW  v  "摥Ő`8` `  1 ť L` HH v }  "h撥őh` * `L -  LLc  )?[`LJ;K+*OPUI-}=VCBXZ436AB521, .NM/REYTWQ907~8<>FHDGSA  Cɛ 1`~ݩL),  }L ĻȄ@Ɣ򤺱IL` ) `) @ C)` L 4(%!2#()6%26 } ;;$)3+%22/2==BC ;;&/2-!44).'%22/2== ;;/0%.).'%22/2== ;;).054%22/2== #/09$/.%  /0%2!4)/.!"}/24%$ ).3%243/52#%$)3+%44%).3%24$%34).!4)/.$)3+%44%).3%243/52#%$%34$)3+%44%3;;2%}!$72)4%%22/20/3 ==;CD;2%!$72)4%%22/234$ == 2%!$).' 72)4).'%.4%2#/--!.$%.4%2}.5-"%2/&#/0)%33$&-49!93 $ & # . / 423%&-!#/.5;;2%!$&/2-!4%22/2==}%.4%2/0%.#/$% $2)6%DEFрe`  l Ȅ0,'` Ji }C ` 8 *****&&`  HJJJJ  h) i`0 : AG8`8 `84 }  .  . m m  e m EF  ` 8`  (ȩ|Q u ` 8  e`}   3)JJJJJ3) ,x攥 i(i(Ю`QEW|ADSȘ Ii(I`} HHihhFGw`  `     $` $%& }`  12`  78`DS",  LF9.9LOP 3 + !}/   O 0GHL, L`  G L7 ` ` o [ LX `_^"}}Hd ] y y t L8 0VC 0N8H hA I)x)),#}22@LL L^_`L8 0L HIXT3H ő  $}3ȽHŔ` ` 2 6] ]  ]3 B]  ,i L VB  %} ~i@F8  LL sIJU9q`q`  .&}##`,!$8]LL`   5 3)L,_0j,^0  '}3  DB 0O3   RP 03I ,`/SJK I)x))3L}, L , ,Έ(}%eLLL$02)i` @`  ,` ` 01@҅` z`L)}@ S1 J`ƕ`ҩKLd @ҍ`D, Ѝ`{`*} 0` 0 Ě8``ƚ0 ` 攤   ĕл+}   ``H 0hL(` N` NLBM`Jjii`0AH 280 3,} h㥑H o LU8  D  h`8嘅j噅 )`PQ345679`3*9 Y0-} 3(`GF ɀ(`(3.GLCLoBLLLDLSLRLFL7PL`HH12.}ȭ )ȊJJiȩȩȩLH͢ɭ12QRhh`9+ ɀ$!  /} 0LY`HH12ȩ@ȩS12hh`` 8 @ Y` 80}  Y`; 8 L8;©à(i(¥ii(iץRS`7elcometo41}(%!2#()6%26 4hisversionisbasedupon4(%!2#()6%26andhas2}beenenhancedtobeusedwithstandarddrivesandwith0#8&ormer9oucanusethisSTversiontomakenormal3}backupsofnotprotected diskettes4(%!2#()6%2triestosendcommandsto4(%#()0butifitdoesnot4}findit itsendsstandard)/commandstothedrive4hemodeisindicatedinthestatuTUslineafterthele5}tter!!9means#()0modeand!.meansstandarddrive)nthislastmode youcantoggletheformatoption6}usingthe&key)twillformatthewholedestinationdiskasusualԩ@թ֩ע ԑe}NOWN2; DOIOREGSDIFF  GERRFMTH0227!H0255DIFF  H0225%>'$>QIOBUFDIFF  FH0256 H08}266(> EH0256Q>PH0176DIFF 9Q>PH0257DIFF 9QIOBUFDIFF 8PH0233DIFF 9QIDXSECT9}DIFF 8PH0175DIFF 9 FH0260R> EH0260QIDXTRKDIFF 8R HH0260QIOBUFDIFF 8  HH0260Q:}H0175DIFF 9PIDXTRKDIFF 9QIOBUFDIFF 8  FH0264% H0260Q>*PH0176DIFF 9/Q>4PIDXTRKDIFF 9;}9 H02643>3C3H3MQH0233DIFF 9RRW DH0265\Pa&f H02653k3p2u(IOBUFDIFF z DH0266H0256&<}H0181DIFF :H0053 H0223DIFF $ H0267DIFF  H0255DIFF QH0181DIFF  FH0268%H0236=}DIFF Q>4H0257DIFF $>5H0257DIFF  H0242DIFF %H0236DIFF Q>4H0175DIFF $>5H0175DIFF  >}H0242DIFF %H0236DIFF Q>4H0176DIFF $>5H0176DIFF  H0242DIFF  #CRITICQH0236DIFF R>?}  DH0269S> JUMPOVER  H0269O>?  H02721 FH0268 H0271DIFF !H0272DIFF H0268 H0273D@}IFF $ "CRITIC)Q.L3T8 PDAUX1=Q>B PDAUX2GQH0181DIFF LR>Q DH0274V H0275DIFF [H0274$A}IOBUFDIFF `(>e EH0276j(>o EH0277tAyO>@~PIDXTRKDIFF 9#IOBUFDIFF  HH0274H0276$>WRITETRAB}CK; DOIOCHIPDIFF  IH0278PRINTERR MSGFMTERR!MAINLOOPDIFF H0278!NEEDSCRLDIFF H0277QH027C}9DIFF 9PIOBUFDIFF s HH0276 H0273%> H0284Q>PIOBUFDIFF U8QH0257DIFF 8R> HH0282D}Q>H0282PIOBUFDIFF 98QH0181DIFF 8PIOBUFDIFF 81 IH0284%>H0287QH0285DIFF 8PIE}OBUFDIFF q8 1 IH0287: H0275%>H0289QH0288DIFF 8#H0279PIOBUFDIFF q8(1- IH02892:7X;<F}H0285  == =AH0288 ===F .=#=KX;P H0271CU%Z H0292$>#_ H02910d HH0291i1n HH0292s?xG}:} H0054Q>JUMPOVER  H0042Q>P%H0181DIFF  FH0294'H0295DIFF H0296PH0295DIFF 81H} HH0296$>* IH0297QH0181DIFF ;SH0236DIFF RH0181DIFF  HH0298Q> H0298>H029I}7!H0328DIFF H0294!H0324DIFF  H0307: H0329%QH0175DIFF 8P H0301DIFF  PRINTSCTDIFFJ}  EH0303$QH0176DIFF 9M> FH0304"H0303!H0305DIFF 'H0304QH0257DIFF 9,*H0229DIFF 1 GK}H03066R>; HH0303@ H0306QE RRAMTOPJ FH0307O*H0230DIFF T GH0308Y H0309DIFF ^ DH0308c$h &DAUL}X1mQH0176DIFF 9r PDAUX2w H0310DIFF |$>UNKNOWN3 DH0311$>UNKNOWN1H0311 DOIOZPGEDIFF  IH0313M} GH0314 H0308$QH0176DIFF 9 LDAUX2 PDAUX2 H0310DIFF $>READSECTOR DH0315$>WRITESECTORN}H0315 DOIOZPGEDIFF  GH0316 H0313QN>P HH0317#H0317 PRTMEMDIFF *H0228DIFF  IH03O}18$>UNKNOWN4, DOIOCHIPDIFF $QIDXTRKDIFF N>M>xPM>! FH0319&Q>+ H0319L0P}M>5PH0176DIFF 9:!H0320DIFF ?H0316Q>MSGSTDERRDJUMPOVER IH0314PRINTERR MSGPOSERRN!MAINLOOPDIFQ}F S H0320Q> XJUMPOVER ] H0318Q> bJUMPOVER g H0305Q>l"H0295DIFF q FH0324v,{OH0326RH0181R}DIFF  DH0325SH0181DIFF !H0326DIFF  H0325>QH0327DIFF 9R> HH03282A!H0326DIFF S} H0328Q>PH0327DIFF 9&!H0329DIFF  H0324* GH0330%H0181DIFF  FH0331H0333QH0248DT}IFF 8M> FH0332CO>`PH0181DIFF 8 H03321 HH0333 H0331$  H0334DIFF  H0330,: H0310U}Q T?%Q>* LDAUX2/ EH03354*H0228DIFF 9 IH0335>L>CH0335PDAUX2H:MX;R X; Change Display list vectV}orWX;\DLINST H0186DIFF a &SDLSTLf 'SDLSTHkQ>@p PIRQENu PPOKMSKz:H0186QVCOUNTR>z HH0186:W}X; X; Send a command to the Chip X; with I/O buffer at addressX; stored in 98 and 99.X;DOIOZPGEQ%!X}DOIOREGSDIFF X; X; Send a command to the ChipX; with I/O buffer IOBUF.X;DOIOCHIPQ>4IOBUFDIFF %>5IOY}BUFDIFF X; X; Send a command to the Chip X; with I/O buffer at addressX; in A and Y regs.X;DOIOREGSPDBUFLZ}O 'DBUFHIX;X; Carry must be set to 1 to X; send datas to drive and to X; 0 to receive data from X; drive.X;[}Q> ESENDIO$Q>@)SENDIOPDSTATS.X;3 X; Command is given in X reg.8X;= &DCOMNDBQ>G PDTIMLOLQ>Q P\}DUNUSEV PDBYTHI[Q>`(>Se HH0338jQ>oH0338PDBYTLOtQ>1y PDDEVIC~Q PDUNITX;X; This line was ]}JSR SIOV. I!X; now call IOCHIP to make the X; archiver works on standard X; drives.X; IOCHIPDIFF : H009^}7%> H0339" HH03391 HH0339:X;X; Make a sound if an errorX; occured.X;SOUNDERRQ> PAUDC1_}Q>d PAUDF1 H0097DIFF Q> PAUDF1 PAUDC1 : H0046Q>DJUMPOVER  WHITEQ>  PCOLBK# PCOLO`}R4(:-X;2X; Set color to Yellow.7X;<YELLOW$>AH0344QCOLORSDIFF 9F PCOLOR19K PCOLPF19P0U IH0344Z:_a}X;dCOLORS ===iX;nX; Clear track windowsX;x CLSQ>4LINETRACK1DIFF0 }%>5LINETRACK1DIFF0 Pb}'%>0$>Q>H0346P@73 HH0346#0 HH0346 H0345: H0309$QH0175DIFF 9%H0c}181DIFF  H03481 GH0347RH0175DIFF 8 HH0348) FH0348 H0349;: H0347,:H0241$H0181DIFd}F &  H0350" GH0349 H0309DIFF  EH0350:" H0237$>'&, H0355$>1QH0175DIFF 6 H0351#;f}  tl `)twillformatthewholedestinationdiskasusualԩ@թ֩ע ԑ%@)H0181DIFF E EH0347JRH0175DIFF 8O HH0351T'Y H03543^2c HH0352h'mH0352)H0181DIFF r g}EH0353wQH0175DIFF 9|RH0175DIFF 8 FH0354 HH0355 H0353) FH0349 HH0347H0239$H0181DIFF (q}b.DOS SYSB2SPY M65B5OSPYCORE M65B LSPY9000 COM FSPY5000 COM HSPY7000 COM JSPY9000 COM LSPYB000 COM@ARCV COMARCV COMSINIT COMYINITDBL COMyNOVERIFYCOMSTARTUP EXCbyMAC65 COMJBUG65 COM)(IOMAC LIBQSYSEQU M65dSAMPLE M65kSAMPLE COMBoMEMDRV LSTSYSEQU M65SAMPLE M65SAMPLE COM> DH0356%>H0358QH0175DIFF 8 H0235DIFF RH0175DIFF 8 FH03570 HH0358 H0356, H0357r}: H02353)H0181DIFF  DH0359%> H0359: H0242P&$H0181DIFF H0360Q@7 5  H0235DIs}FF 0 HH0360 %H0181DIFF  H03621! GH0361& 7+ P@70 !H0362DIFF 5 H0361:: H0267 H0363DIFF ? %>t}D H0365Q@7I PH0181DIFF 8N 1S IH0365X :] H0334 H0363DIFF b %>g H0366QH0181DIFF 8l P@7q 1v Iu}H0366{ : H0363A V? P Q> W? O>4H0374DIFF P Q O>5H0374DIFF P : H0223$ H0371v}0 GH0368 A 5  H0267DIFF %H0181DIFF H0370; 1 GH0369 QH0176DIFF 8 HH0370 '  H0237w}DIFF H03697!>! EH0371 !Q!5!&!Q> ! DORDTRKDIFF %!$>L*! Q>4H0181/! %>5H01814!;9! DOIOREGSx}DIFF >!Q>C! PDAUX2H!$>UNKNOWN3M!QR! PDAUX1W!,\! DOIOCHIPDIFF a!7f!Pk! H0368:p! PRTMEM;u!Q>z!S!Py}! QRAMTOP!S!P! H0197DIFF !%>! H0373Q8!PFIELDMEMORYDIFF 8!1! IH0373!:!X;!X; DATA scr}-Hȱ h L(EDIWHATTEXTMODũ5 L(Ҍ` HH`ɛ ۱Lɛ 9{}L^LH Ɛ ݟ 8 zH %h  c $p əLHL ݟ H %h 9|}@ ؐ`H h ٰ եԄL Q Ɉ򅗅 `  C9}}Ȋ L0ߩ` 04C L؍l !L؍9~}L;8eHeHL H H`L0󆞥hhL;`ʆL; 0 9}  L L; `` 񒦞` ) %H$H`͒I9Ɛ Ɛ`L ĭs 9}i ů8` @`` ۢB `хѦ򤟱")Q ȱ8e`8`LISԠNEבDE̘FI9}NIJASSAVLOAENTEBLOABSAVNUPRINRE΢REРSIZLOME͠BYŠCРDO TEX ۄ ذ ِЄ9}L ۱$  @L8 @ @ @` ۄЩ Əe Ə  ZڰեLo800  9}8` ۹ɛg+< ۩, @`0" `Ѫ$ɛ @$P `9}8`ɛ @`0 g8`0 45` ۄ, = @`8`U; =ZZZfZn9}nZ& /# 1D EFGJHIMKL=>A Aλ߻A A @:9}=>@>>8?8679<;ޑ<<;C;?<;<9}>7;;<;<><;N;?>;<<;<;;B<<>< 0 4 5 # 1u 9} $%! 3" 2=_  W @=:q:ߌћݝOƞd6ޕÛipMM/,[]+9}-*/!&^"   ۱Ò ɛ;ė(` -Є 5ɛș IX; @򹋻 @ɛ`旤9};*,0ҪH  h`L ۄЄ  @)++D LT hh ` ۤЄѱ 9}>  &𥐪 @ @񊨱ɁȱAх`? [``.8` i L@0:`󙋻ə<9}ɛ5)"ȱɛ&)"a{i 'ȱɛ`IȢ8ee͙̘ װL89}u慓eeeee褚 `8IȄ嚅8圕坕9}嚅馛褚`` . ݟ ȱ "Lsee`Lee` 9}  g `8` ݟ ȑ "L ,L ݟ "8堨09}L c S> a з` g S /    "Ll` L  Qڥ9}< g Qڠȱ)Ȅ汥 )   UX `Xd ĵB  ] Ķ m 9} ` 9;!  ݩLVԩ <0 ̎ H Nԅh ܗL'ՅԅՅօנ&uԕ9} JJJJ ϗ) ϗ(L' 0 `$  ꗥHJJJJ h))`Lį`s8 քՊօ9}0ȱ8eԐհֱ֤֠H h`J (L ` ) ` ``͌ƵƵƶƶ`mi͝L9}H 0+ hȄ H Qڭim hLhH hL˜ H  hH hɛ` S9}Ʈ` S  g LݟƐƐLݟ@  SƐ  SAR 9}{Ɛ 00 N g 0ͥeLyԦH gh g S) S N g$PI L9} Įɛʆ N g䮐)`  Lai@( `ș`@  SE*JFH hG9}*I%L˚ SJ FH ޚh* S=Lܢ`8qiHH hihi`9}H饦 ޚL  LEH h HLܢ WHVH`ajllvp)`8`LLܢ g.9};* S  Q ؐ! gͭLv ] ]ҩ; S>+ 8吪8吅膐 LWƐ ]9} 8 " ,p   "L`- ? Qک Q L(Y ɛL08҅8HŲ9}&eҪȹɛʈıh8宅汥豂Ʈ򅗅 -L^ BL& c 򈄲9}Ʊ洤́汤IJ ـ褳Ȅ` , g S?莁` S)e` m } m } 9}mL= SB  JLH$ h L L g SN 匥 eLH LH g Z ZL Z 9}Ze樥e͙ ̘Ѧ o  碈  з` Z7 Z0 Z ZLF Z Z 99} ZL|L ȟ 8儅充 k  ӍLӷ ȟ ( 8慜煝 k9}Lʼnň` š Š``  `ŝ Ŝ` ԥ ݟ $p L( N [б9})ȩ Ȅe8Ш ˶ LQڥЯ ˶ L ޶Lԟ搠 ޶  ն L ř Ř 9} ř Ř` "L` e` }  } g    š Ġ9}`Ʈ0ii`   g; L L L` g]; X _ &  gD S;9} g+ S; ȟ g / ~ G P n !@ ^ L+ S<`9}& { з ޶ii  j H L(  G P:ӄ7 9}X҄ۺ;hd~ 9}` <& S] ߭р SXILLy,PLޚ$0c ^ m )$0O J = ե m $01 9}, L۸$ 8 MLL θ)` Ƹ  Ĺ  -(`$0 ` L S i U8`0 9} "Ȅ<$0)Hh`H 8嬨孪8h g g0  0 L9}v" mHlH`+LD gLv)ㅪ) S?>  @Ɛ eɂ ɀ 9}  g g g  Lv  (L9@ L 9L < S ` S 9) -9} ܢLLܢ LФȥ LL ư  LܢLФ` L S )9} Lܢ@𥆝i ܢ 0$0 `i e/9}ȑȥȥȄ g>;:=A /L*Ɛ HhȥȥȄiL⥥`L S  Ǭ搦ʩ`9}G!@` ܢ`Le H h g g gLv@L搩l S 9}@)8 <L S`L*) ܢ < ܢ S`89} E( Ǭ$0). ȥՑL) ȱՆL ) LHH hh` էL9}ܢ է Lܢ SA`/0 S)QP S) `    cLܢ Z Z Z Z`L9} $LHH ޚ hhLL$ 8`$p/+ߤėLѤė ՚ Ƹ9} ਩8 LШL۸ Ĺ  sƗƮ`_<+ 2ԅդ6e 9}$Hՙ+ȥԙ+ȄhԅL83+`ų* {LdHH`+L8 L搥 Ɛԥ9}ȥ`刾++`(Xȉ9܂e( S0' J搱`LS 19}`ei` )ȱ` ` S@` 劤шܦ eȪHȱȱ)h`6`9}0``Յԩ` ©eԅԘeՅ`8ԅԩՅ` ©8ԅԘՅ`օנ` © FfffԈ0?uؕԅՅ9} ©Ն &&&8થ׆Ԉ` ©%ՅՊ%ԅ`$p$0)  몥 Ն` 몥9})Iڤhh+Lshhզ uՆL8 ©ՅՊԅ` ©EՅՊEԅ` ©Ր` ><7 23 +)* ©! 9}  LL    )9}䯐` ?i??[Z 07ee YzȱĘL8匝9}卝ei͙ ̘L8匑ȥ卑ȪȑȑȩȽ䯐`$P<@49}!18匝9卝808899莚(` Lӭ )H0 L )ёё hH  h$9}$0 ,P {`? ?ԩL*** ERROR -MEMORY FULBAD DEBRANCH RANGNOT Z PAGE/IMUNDEFINED LAB9}EEXP TOO COMPLEDUP LABEO'FLO IF/ENDIF NESTIN VAL >25 IF/ENDIF STAC NESTED MACRO DE PHASE ERRO*= EXP UNDESYNTAX9} O'FLODUP MACRO NAMLINE # >6553MISSING .ENDNO *NUM/REN O'FLONESTED INCLUDLIST O'FLONOT SAVE FILLOAD TOO BI9}NOT BINARY FILINVALID .SETOO MANY X-REFTOO MANY LOCAL FIELDUNDEFINED MACRMACRO NESTIN BAD PARAMETE!NOT F.P. NO9} DEV HANDLE҉TRUNCATED REÊTIMEOUԋNAːWRITE PROTECTEĒBAD DEV CMĠDRIVE TOO MANY OPEN FILEӢDISK FUL̥FILE NAMŧLOCKEĪFIL9}E NOT FN(SEE MANUAL$`݆   װLH`H H hh 鸩 R ƥ0C9}6ȐH J, h⩮^+ȱ8e;LLa L ͹0L` GA9}) 8动勢  * ɇ * *LɆɅɄ $p 6LN`ۺȄ@ J @[9}L 0 0 Ĺ `0עਈɛO(K֠)- Hȱh ץ8 0L9}q JL >L(@[` 0 0i~iنؠ0 >օנ֐ֈƮ ȱ֐+Į!9}䪱ؑHر֑hֈ֥ЦքׄИ}e`q䨊e`8包卅  0PH 9}hšĠ答 $0 (,  J8  鸩 Ĺ Lqɇ'IimiLv  LvɆ9} LֳɅ LvɄ#Lv`` Z渦 6LN ) `Ԣ儐9}`Z8圅坅 o   L8HI 8`9}LKȅ k L搥3 财 Qڠ Ÿh _ &Lܢ Lܢɛ9}򈱑 `濥ɀ`8~H m~  h`$0 8 xIiH {h {L9} { {ȹ8 {9 {̚ȱ`& Ͷ LMLN= Ȋ ``l 搤搱` Ͷ 0`L9}ө ϶HI` `H ҶhH hLJ*K+GHFH`H ƶhL `H ն 9} նhJ S)` 0`ɀ/ L˷)Lʎ JLڱ)⭆Ŧ  L( 9} `Ɉ"% ͶNLM 0L4 ӷ 财@` 緥Ɉ` ն 0` ն9}C` ӷΆ`~IHEDBKLV`ՆԈ gȱ80 LQՆ gФб$09} (` LH shHJJJJ ~h)L0123456789ABCDEF s )LL mL殤 (` L0) ``9}) Lװ`͟?)4 Ƹ/HH L ^ hhԩ` է Ƹ ܢ J`L 鸭9}` { Ĺ  J }L Ĺ۠ 8 XhLL` 9}Ĺ  J }8厪 J"LPAGESYMBOL*** ASSEMBLY ERRORS: BYTES FRE ?=?%?=?ۺ;9}9}9}DOS9})⭆Ŧ  L( 8Ueen section!X;!LINETITLE (!LINECMNDS (!LINESTATS (!LINETRACK1 x!LINETRACK2 x!LINETRACK3 }x!LINETRACK4 x!LINETRACK5 x!LINETRACK6 x!LINEINPUT (!X;!X; Address of fields in"X; LINECMNDS l}ine."X; "FIELDSRCLINECMNDS"FIELDDSTLINECMNDS"X;"X; Address of fields in"X; LINESTATS line.$"X;)"FIE}LDTRACKLINESTATS."FIELDSECTORLINESTATS 3"FIELDABSOLUTELINESTATS8"FIELDMEMORYLINESTATS="FIELDCOPY}LINESTATSB"FIELDNUMBERLINESTATS$G"X;L"X; SAVE #D:ARCVCORE.M65dss"X; is unknown (hence the name).xX;}UNKNOWN1H INY INY INY LDA [H0233-DIFF],X CMP $94 BCC H0265 STA $94 S}TX $95H0265 INY INY INX CPX [IOBUF-DIFF] BCC H0266H0256 STX [H0181-DIFF] } RTS H0053 JSR [H0223-DIFF] LDX $91 JSR [H0267-DIFF] JSR [H0255-DIFF] LDA [H0181-D}IFF] BEQ H0268 LDY [H0236-DIFF] LDA # <[H0257-DIFF] LDX # >[H0257-DIFF] JSR [H02}42-DIFF] LDY [H0236-DIFF] LDA # <[H0175-DIFF] LDX # >[H0175-DIFF] JSR [H0242-DIFF] } LDY [H0236-DIFF] LDA # <[H0176-DIFF] LDX # >[H0176-DIFF] JSR [H0242-DIFF] INC CRITIC } LDA [H0236-DIFF] CMP #$0C BCC H0269 SBC #$0B JUMPOVER H0269 ADC #$07 } TAY H0272 DEY BEQ H0268 JSR [H0271-DIFF] JMP [H0272-DIFF]H0268 JSR [H0273-DIFF] } DEC CRITIC LDA $91 ORA $9B ASL $9B STA DAUX1 LDA #$F0 STA DAUX2 } LDA [H0181-DIFF] CMP #$13 BCC H0274 JSR [H0275-DIFF]H0274 LDX [IOBUF-DIFF] CPX #}$12 BCS H0276 CPX #$0F BCS H0277 TXA ADC #$40 STA [IDXTRK-DIFF],X } INC [IOBUF-DIFF] BNE H0274H0276 LDX #WRITETRACK SEC JSR [DOIOCHIP-DIFF] BPL H02}78 PRINTERR MSGFMTERR JMP [MAINLOOP-DIFF]H0278 JMP [NEEDSCRL-DIFF]H0277 LDA [H0279-DIFF],X } STA [IOBUF-DIFF]+$73 BNE H0276H0273 LDY #$1BH0284 LDA #$80 STA [IOBUF-DIFF]+$55,Y LDA [H}0257-DIFF],Y CMP #$01 BNE H0282 LDA #$00H0282 STA [IOBUF-DIFF]+$39,Y LDA [H0181-DIFF]},Y STA [IOBUF-DIFF],Y DEY BPL H0284 LDY #$03H0287 LDA [H0285-DIFF],Y STA [I}OBUF-DIFF]+$71,Y DEY BPL H0287 RTS H0275 LDY #$03H0289 LDA [H0288-DIFF],YH0279 STA [I}OBUF-DIFF]+$71,Y DEY BPL H0289 RTS ;H0285 .BYTE $0B,$06,$09,$11H0288 .BYTE $06,$04,$04,$}11 .BYTE $2E,$23,$19;H0271 TYA LDY $0480H0292 LDX #$23H0291 DEX BNE H0291 }DEY BNE H0292 TAY RTS H0054 LDA #$80 JUMPOVER H0042 LDA #$00 STA $8A} LDY [H0181-DIFF] BEQ H0294 STY [H0295-DIFF]H0296 STA [H0295-DIFF],Y DEY BN}E H0296 LDX #$00 BIT $8A BPL H0297 LDA [H0181-DIFF] SEC SBC [H0236-DIF}F] CMP [H0181-DIFF] BNE H0298 LDA #$00H0298 TAX H0297 JMP [H0328-DIFF]H0294 JMP [H0324}-DIFF]H0307 RTS H0329 LDY $9A LDA [H0175-DIFF],Y STA $93 JSR [H0301-DIFF] JSR [PR}INTSCT-DIFF] BCS H0303 LDX $9A LDA [H0176-DIFF],X AND #$10 BEQ H0304H0303 JM}P [H0305-DIFF]H0304 LDA [H0257-DIFF],X BIT [H0229-DIFF] BMI H0306 CMP #$01 BNE H0303}H0306 LDA $99 CMP RAMTOP BEQ H0307 BIT [H0230-DIFF] BMI H0308 JSR [H0309-DIFF}] BCC H0308 LDX $9A STX DAUX1 LDA [H0176-DIFF],X STA DAUX2 JSR [H0310-D}IFF] LDX #UNKNOWN3 BCC H0311 LDX #UNKNOWN1H0311 JSR [DOIOZPGE-DIFF] BPL H0313 } BMI H0314H0308 LDX $9A LDA [H0176-DIFF],X ORA DAUX2 STA DAUX2 JSR [H0310-DIFF] } LDX #READSECTOR BCC H0315 LDX #WRITESECTORH0315 JSR [DOIOZPGE-DIFF] BMI H0316H0313 LD}A $98 EOR #$80 STA $98 BNE H0317 INC $99H0317 JSR [PRTMEM-DIFF] BIT [H0228-D}IFF] BPL H0318 LDX #UNKNOWN4 CLC JSR [DOIOCHIP-DIFF] LDX $9A LDA [IDXT}RK-DIFF] EOR #$FF AND #$78 STA $94 AND #$08 BEQ H0319 LDA #$80H0319 } ORA $94 AND #$F0 STA [H0176-DIFF],X JMP [H0320-DIFF]H0316 LDA #MSGSTDERR JUMPOVER }H0314 PRINTERR MSGPOSERR JMP [MAINLOOP-DIFF]H0320 LDA #$0A JUMPOVER H0318 LDA #$09 } JUMPOVER H0305 LDA #$01 DEC [H0295-DIFF] BEQ H0324 CLC ADC $9AH0326 CMP [H0181}-DIFF] BCC H0325 SBC [H0181-DIFF] JMP [H0326-DIFF]H0325 TAX LDA [H0327-DIFF],X  } CMP #$FF BNE H0328 INX TXA JMP [H0326-DIFF]H0328 LDA #$FF STA [H0327-D }IFF],X STX $9A JMP [H0329-DIFF]H0324 BIT $8A BMI H0330 LDY [H0181-DIFF] BEQ  }H0331H0333 LDA [H0248-DIFF],Y AND #$10 BEQ H0332 TYA ADC #$60 STA [H0181-DI }FF],YH0332 DEY BNE H0333H0331 LDX $91 JSR [H0334-DIFF]H0330 CLC RTS H0310 LDA $8 }A ASL A LDA #$10 ORA DAUX2 BCS H0335 BIT [H0228-DIFF] BPL H0335 } ORA #$E0H0335 STA DAUX2 RTS ;; Change Display list vector;DLINST JSR [H0186-DIFF] STX SDLSTL } STY SDLSTH LDA #$40 STA IRQEN STA POKMSK RTS H0186 LDA VCOUNT CMP #$7}A BNE H0186 RTS ;; Send a command to the Chip; with I/O buffer at address; stored in 98 and 99.;DOIOZ}PGE LDA $98 LDY $99 JMP [DOIOREGS-DIFF];; Send a command to the Chip; with I/O buffer IOBUF.;DOIOCHIP }LDA # <[IOBUF-DIFF] LDY # >[IOBUF-DIFF];; Send a command to the Chip; with I/O buffer at address; in A and Y reg}s.;DOIOREGS STA DBUFLO STY DBUFHI;; Carry must be set to 1 to; send datas to drive and to; 0 to receive data f}rom; drive.; LDA #$80 BCS SENDIO LDA #$40SENDIO STA DSTATS;; Command is given in X reg.; } STX DCOMND LDA #$0F STA DTIMLO LDA #$00 STA DUNUSE STA DBYTHI L}DA #$80 CPX #$53 BNE H0338 LDA #$04H0338 STA DBYTLO LDA #$31 STA DDEVIC } LDA $9D STA DUNIT;; This line was JSR SIOV. I; now call IOCHIP to make the; archiver works on standard; dr}ives.; JSR [IOCHIP-DIFF] RTS H0097 LDY #$80H0339 DEC $95 BNE H0339 DEY } BNE H0339 RTS ;; Make a sound if an error; occured.;SOUNDERR LDA #$AA STA AUDC1 LDA #$64 } STA AUDF1 JSR [H0097-DIFF] LDA #$00 STA AUDF1 STA AUDC1 RTS H0046 LDA }#$44 JUMPOVER WHITE LDA #$0C STA COLBK STA COLOR4 RTS ;; Set color to Yellow.;Y}ELLOW LDX #$03H0344 LDA [COLORS-DIFF],X STA COLOR1,X STA COLPF1,X DEX BPL H0344 } RTS ;COLORS .BYTE $10,$1A,$00,$14;; Clear track window;CLS LDA # <[LINETRACK1-DIFF-$30] LDY # >[}LINETRACK1-DIFF-$30] STA $80 STY $81 LDY #$30 LDX #$03 LDA #$00H0346 STA ($8}0),Y INY BNE H0346 INC $81 DEX BNE H0346H0345 RTS H0309 LDX $9A  } LDA [H0175-DIFF],X LDY [H0181-DIFF]H0348 DEY BMI H0347 CMP [H0175-DIFF],Y BNE H03!}48 CPY $9A BEQ H0348H0349 SEC RTS H0347 CLC RTS H0241 LDX [H0181-DIFF] "} STX $9AH0350 DEC $9A BMI H0349 JSR [H0309-DIFF] BCS H0350 RTS H0237 LDX #$00#} STX $94H0355 LDX #$00 LDA [H0175-DIFF]H0351 INC $94 LDY $94 CPY [H0181-DIFF] $} BCS H0347 CMP [H0175-DIFF],Y BNE H0351 STY $95H0354 INY INX BNE H035%}2 STY $95H0352 CPY [H0181-DIFF] BCS H0353 LDA [H0175-DIFF],X CMP [H0175-DIFF],Y &} BEQ H0354 BNE H0355H0353 CPY $95 BEQ H0349 BNE H0347H0239 LDX [H0181-DIFF] CP'}X #$02 BCC H0356 LDY #$00H0358 LDA [H0175-DIFF],Y JSR [H0235-DIFF] CMP [H0175-DIFF],Y(} BEQ H0357 DEX BNE H0358H0356 CLC H0357 RTS H0235 INY CPY [H0181-DIFF] )} BCC H0359 LDY #$00H0359 RTS H0242 STA $80 STX $81 LDX [H0181-DIFF]H0360 LDA ($80)*},Y PHA JSR [H0235-DIFF] DEX BNE H0360 LDY [H0181-DIFF]H0362 DEY +}BMI H0361 PLA STA ($80),Y JMP [H0362-DIFF]H0361 RTS H0267 JSR [H0363-DIFF] LDY #,}$7FH0365 LDA ($A0),Y STA [H0181-DIFF],Y DEY BPL H0365 RTS H0334 JSR [H0363-DIFF]-} LDY #$7FH0366 LDA [H0181-DIFF],Y STA ($A0),Y DEY BPL H0366 RTS H0363 T.}XA LSR A STA $94 LDA #$00 ROR A ADC # <[H0374-DIFF] STA $A0 L/}DA $94 ADC # >[H0374-DIFF] STA $A1 RTS H0223 LDX $91H0371 DEX BMI H0368 0} TXA PHA JSR [H0267-DIFF] LDY [H0181-DIFF]H0370 SEC DEY BMI H0369 1} LDA [H0176-DIFF],Y BNE H0370 STY $A2 JSR [H0237-DIFF]H0369 PLA TAX BCS 2}H0371 LDA $91 PHA STX $91 LDA #$85 JSR [DORDTRK-DIFF] LDX #$4C 3} LDA # H0181 SEC JSR [DOIOREGS-DIFF] LDA #$E0 STA DAUX2 4} LDX #UNKNOWN3 LDA $A2 STA DAUX1 CLC JSR [DOIOCHIP-DIFF] PLA STA $915}H0368 RTS PRTMEM SEC LDA #$00 SBC $98 STA $84 LDA RAMTOP SBC $99 6} STA $85 JSR [H0197-DIFF] LDY #$03H0373 LDA $86,Y STA [FIELDMEMORY-DIFF],Y DEY 7} BPL H0373 RTS ;; DATA screen section;LINETITLE *= *+40LINECMNDS *= *+40LINESTATS *= *+40LINETRACK1 *= *+18}20LINETRACK2 *= *+120LINETRACK3 *= *+120LINETRACK4 *= *+120LINETRACK5 *= *+120LINETRACK6 *= *+120LINEINPUT *= *+40;; 9}Address of fields in; LINECMNDS line.;FIELDSRC = LINECMNDS+4FIELDDST = LINECMNDS+8;; Address of fields in; LINESTA:}TS line.;FIELDTRACK = LINESTATS+5FIELDSECTOR = LINESTATS+11FIELDABSOLUTE = LINESTATS+17FIELDMEMORY = LINESTATS+22FIELDC;}OPY = LINESTATS+30FIELDNUMBER = LINESTATS+36;; SAVE #D:ARCVCORE.M65LUTE = LINESTATS+17FIELDMEMORY = LINESTATS+22FIELDCHF key. It will format the " .SBYTE " whole destination disk as usual. "HELPEND;H0181 *= *+1H0175 =}*= *+20H0251 *= *+1H0257 *= *+20H0248 *= *+1H0176 *= *+21H0233 *= *+21H0236 *= *+1H0230 *=>} *+1H0229 *= *+1H0228 *= *+40H0295 *= *+1H0327 *= *+21H0374;; SAVE #D:ARCVPLUS.M65= *+1H0230 *=k *= *+21H0374 .BYTE 0 ;$15AC;; SAVE #D:ARCVPLUS.M65 *= *+1H0229 *= *+1H0228 *= *+40H0295 *= *+1H0327 ; LDA [IOBUF-DIFF]+$01 EOR #$FF AND #$78 STA $0094 AND #$08 BEQ H0319 LA}DA #$80H0319 ORA $0094 AND #$F0 STA [H0176-DIFF],X JMP [H0320-DIFF]H0316 LDA #MSGSTDERR B} JUMPOVERH0314 LDA #MSGPOSERR JSR [H0101-DIFF] JMP [H0026-DIFF]H0320 LDA #$0A JUMPC}OVERH0318 LDA #$09 JUMPOVERH0305 LDA #$01 DEC [H0295-DIFF] BEQ H0324 CLC D} ADC $009AH0326 CMP [H0181-DIFF] BCC H0325 SBC [H0181-DIFF] JMP [H0326-DIFF]H0325 TAX E} LDA [H0327-DIFF],X CMP #$FF BNE H0328 INX TXA JMP [H0326-DIFF]H0328 F} LDA #$FF STA [H0327-DIFF],X STX $009A JMP [H0329-DIFF]H0324 BIT $008A BMI H0330 G} LDY [H0181-DIFF] BEQ H0331H0333 LDA [H0248-DIFF],Y AND #$10 BEQ H0332 TYA H} ADC #$60 STA [H0181-DIFF],YH0332 DEY BNE H0333H0331 LDX $0091 JSR [H0334-DIFF]H0330I} CLC RTS H0310 LDA $008A ASL A LDA #$10 ORA DAUX2 BCS H0335 BITJ} [H0228-DIFF] BPL H0335 ORA #$E0H0335 STA DAUX2 RTS H0013 JSR [H0186-DIFF] STX SDK}LSTL STY SDLSTH LDA #$40 STA IRQEN STA POKMSK RTS H0186 LDA VCOUNT L}CMP #$7A BNE H0186 RTS H0312 LDA $0098 LDY $0099 JMP [H0254-DIFF]H0220 LDA #$00 M} LDY #$04H0254 STA DBUFLO STY DBUFHI LDA #$80 BCS H0217 LDA #$40H0217 STA N}DSTATS STX DCOMND LDA #$0F STA DTIMLO LDA #$00 STA DUNUSE STA DBYTHI O} LDA #$80 CPX #$53 BNE H0338 LDA #$04H0338 STA DBYTLO LDA #$31 STA DDEP}VIC LDA $009D STA DUNIT JSR IOCHIP RTS H0097 LDY #$80H0339 DEC $0095 BNEQ} H0339 DEY BNE H0339 RTS H0025 LDA #$AA STA AUDC1 LDA #$64 STA AUDR}F1 JSR [H0097-DIFF] LDA #$00 STA AUDF1 STA AUDC1 RTS H0046 LDA #$44 S} JUMPOVERH0032 LDA #$0C STA COLBK STA COLOR4 RTS H0019 LDX #$03H0344 LDA [H0342-DIFF]T},X STA COLOR1,X STA COLPF1,X DEX BPL H0344 RTS ;H0342 .BYTE $10,$1A,$00,$1U}4;H0011 LDA #$EE LDY #$11 STA $0080 STY $0081 LDY #$30 LDX #$03 LDV}A #$00H0346 STA ($0080),Y INY BNE H0346 INC $0081 DEX BNE H0346H0345 RW}TS H0309 LDX $009A LDA [H0175-DIFF],X LDY [H0181-DIFF]H0348 DEY BMI H0347 CMP [HX}0175-DIFF],Y BNE H0348 CPY $009A BEQ H0348H0349 SEC RTS H0347 CLC RTS Y}H0241 LDX [H0181-DIFF] STX $009AH0350 DEC $009A BMI H0349 JSR [H0309-DIFF] BCS H0Z}350 RTS H0237 LDX #$00 STX $0094H0355 LDX #$00 LDA [H0175-DIFF]H0351 INC $0094 [} LDY $0094 CPY [H0181-DIFF] BCS H0347 CMP [H0175-DIFF],Y BNE H0351 STY $0095H0\}354 INY INX BNE H0352 STY $0095H0352 CPY [H0181-DIFF] BCS H0353 LDA [H0]}175-DIFF],X CMP [H0175-DIFF],Y BEQ H0354 BNE H0355H0353 CPY $0095 BEQ H0349 ^}BNE H0347H0239 LDX [H0181-DIFF] CPX #$02 BCC H0356 LDY #$00H0358 LDA [H0175-DIFF],Y _} JSR [H0235-DIFF] CMP [H0175-DIFF],Y BEQ H0357 DEX BNE H0358H0356 CLC H0357 RT`}S H0235 INY CPY [H0181-DIFF] BCC H0359 LDY #$00H0359 RTS H0242 STA $0080 STXa} $0081 LDX [H0181-DIFF]H0360 LDA ($0080),Y PHA JSR [H0235-DIFF] DEX BNE H0b}360 LDY [H0181-DIFF]H0362 DEY BMI H0361 PLA STA ($0080),Y JMP [H0362-DIFF]c}H0361 RTS H0267 JSR [H0363-DIFF] LDY #$7FH0365 LDA ($00A0),Y STA [H0181-DIFF],Y DEY d} BPL H0365 RTS H0334 JSR [H0363-DIFF] LDY #$7FH0366 LDA [H0181-DIFF],Y STA ($00A0),e}Y DEY BPL H0366 RTS H0363 TXA LSR A STA $0094 LDA #$00 Rf}OR A ADC #$AC STA $00A0 LDA $0094 ADC #$15 STA $00A1 RTS H0223 LDX g}$0091H0371 DEX BMI H0368 TXA PHA JSR [H0267-DIFF] LDY [H0181-DIFF]H0370 h} SEC DEY BMI H0369 LDA [H0176-DIFF],Y BNE H0370 STY $00A2 JSR [H023i}7-DIFF]H0369 PLA TAX BCS H0371 LDA $0091 PHA STX $0091 LDA #$85j} JSR [H0224-DIFF] LDX #$4C LDA #$16 LDY #$15 SEC JSR [H0254-DIFF] k} LDA #$E0 STA DAUX2 LDX #$44 LDA $00A2 STA DAUX1 CLC JSR [H0220-DIFl}F] PLA STA $0091H0368 RTS H0059 SEC LDA #$00 SBC $0098 STA $0084 m} LDA RAMTOP SBC $0099 STA $0085 JSR [H0197-DIFF] LDY #$03H0373 LDA $0086,Y n} STA [FIELDMEMORY-DIFF],Y DEY BPL H0373 RTS ;; All the following code is; used to simulate CHo}IP I/O; operations on a standard; drive.;IOCHIP JSR SIOV BMI IOERR RTS;; If there was an error, p}it; may be a real CHIP error; or an error because this; drive is not a CHIP drive.;IOERR PHP LDA DCOMND q} CMP #READTRACK BEQ IORDTRK CMP #WRITETRACK BEQ IORDTRK PLP RTS;IOr}ZP = $C0;; Simulate a READTRACK command;IORDTRK LDA IOZP STA [IOZERO-DIFF] LDA IOZP+1 STAs} [IOZERO-DIFF]+1;; Use IOZP to access IO buffer; LDA DBUFLO STA IOZP LDA DBUFHI STt}A IOZP+1;; Fill IO buffer with 18; standard sector indexes.; LDY #0 LDA #18 STA (IOZP),Y u} INY LDA #0 STA (IOZP),Y INY LDX #18;IONEXT LDA DAUX1 AND #$7Fv} STA (IOZP),Y INY LDA #0 STA (IOZP),Y INY TXA STA (IOZP)w},Y INY LDA #0 STA (IOZP),Y INY LDA #5 STA (IOZP),Y INYx} LDA #0 STA (IOZP),Y INY; DEX BNE IONEXT;; Retore IOZERO addresses.; y} LDA [IOZERO-DIFF] STA IOZP LDA [IOZERO-DIFF]+1 STA IOZP+1 LDA #0 RTSz};; Begining of DATA section; for the I/O simulation.;IOZERO .WORD 0;; Begining of DATA section;LINETITLE *= *+40{}LINECMNDS *= *+40LINESTATS *= *+40LINETRACK1 *= *+120LINETRACK2 *= *+120LINETRACK3 *= *+120LINETRACK4 *= *+120LINETRACK|}5 *= *+120LINETRACK6 *= *+120LINEINPUT *= *+40;; Address of fields in; LINECMNDS line.;FIELDSRC = LINECMNDS+4FIELDDST}} = LINECMNDS+8;; Address of fields in; LINESTATS line.;FIELDTRACK = LINESTATS+5FIELDSECTOR = LINESTATS+11FIELDABSOLUTE~} = LINESTATS+17FIELDMEMORY = LINESTATS+22FIELDCOPY = LINESTATS+30FIELDNUMBER = LINESTATS+36;H0181 *= *+1H0175 *= }*+20H0251 *= *+1H0257 *= *+20H0248 *= *+1H0176 *= *+21H0233 *= *+21H0236 *= *+1H0230 *= *+1H0229} *= *+1H0228 *= *+40H0295 *= *+1H0327 .BYTE 0 ;$1597;; SAVE #D:ARCVCORE.M65 *= *+1H0230 *= *+1H0229^0230 *= *+1H0229 *= *+1H0228 *= *+40H0295 *= *+1H0327 .BYTE 0 ;$1597;; SAVE #D:ARCVCORE.M65 *= *+1HrATS+22FIELDCOPY = LINESTATS+30FIELDNUMBER = LINESTATS+36;H0181 *= *+1H0175 *= *+20H0251 *= *+1H0257 *= *+2}0H0248 *= *+1H0176 *= *+21H0233 *= *+21H0236 *= *+1H0230 *= *+1H0229 *= *+1H0228 *= *+40H0295 } *= *+1H0327 .BYTE 0 ;$1597;; SAVE #D:ARCVCORE.M65 *= *+1H0230 *= *+1H0229 *= *+1H0228 *= *+40H0295 : LDY #$03L0373 .BYTE $B9,$86,$00 STA L0372,Y ;$120C DEY BPL L0373 ;$4D1C RTS} ;; SAVE #D:ARCVCORE.M65YTE $B9,$86,$00 STA L0372,Y ;$120C DEY BPL L0373 ;$4D1C RTS STA $0091L0368 RTS H0059 SEC LDA #$00 SBC $0098 STA $0084 LDA RAMTOP ;$006A} SBC $0099 STA $0085 JSR L0197 ;$09F8 LDY #$03L0373 .BYTE $B9,$86,$00 STA }L0372,Y ;$120C DEY BPL L0373 ;$4D1C RTS ;; SAVE #D:ARCVCORE.M65YTE $B9,$86,$00 STA ` LDA RAMTOP ;$006A SBC $0099 STA $0085 JSR L0197 ;$09F8 LDY #$03L0373 .BYTE $B}9,$86,$00 STA L0372,Y ;$120C DEY BPL L0373 ;$4D1C RTS LDY #$03L0373 .BYTE $B^014080 RTS 014090 JSR L0363 ;$1131014100 LDY #$7F014110 L0366 LDA L0181,Y ;$1516014120 STA (Z0364),Y ;$00A0014}130 DEY 014140 BPL L0366 ;$4CA8014150 RTS 014160 TXA 014170 LSR A014180 STA Z0092 ;$0094014190 LDA #$}00014200 ROR A014210 ADC #$AC014220 STA Z0364 ;$00A0014230 LDA Z0092 ;$0094014240 ADC #$15014250 STA Z0}367 ;$00A1014260 RTS 014270 LDX Z0027 ;$0091014280 L0371 DEX 014290 BMI L0368 ;$4D09014300 TXA 014310 P}HA 014320 JSR L0267 ;$1115014330 LDY L0181 ;$1516014340 L0370 SEC 014350 DEY 014360 BMI L0369 ;$4CDE01437}0 LDA L0176,Y ;$1541014380 BNE L0370 ;$4CD0014390 STY Z0139 ;$00A2014400 JSR L0237 ;$10A2014410 L0369 PLA }014420 TAX 014430 BCS L0371 ;$4CC5014440 LDA Z0027 ;$0091014450 PHA 014460 STX Z0027 ;$0091014470 LDA }#$85014480 JSR L0224 ;$0C52014490 LDX #$4C014500 LDA #$16014510 LDY #$15014520 SEC 014530 JSR L0254 ;$0}FEB014540 LDA #$E0014550 STA DAUX2 ;$030B014560 LDX #$44014570 LDA Z0139 ;$00A2014580 STA DAUX1 ;$030A0}14590 CLC 014600 JSR L0220 ;$0FE7014610 PLA 014620 STA Z0027 ;$0091014630 L0368 RTS 014640 SEC 014650 L}DA #$00014660 SBC Z0057 ;$0098014670 STA Z0063 ;$0084014680 LDA RAMTOP ;$006A014690 SBC Z0058 ;$009901470}0 STA Z0074 ;$0085014710 JSR L0197 ;$09F8014720 LDY #$03014730 L0373 .BYTE $B9,$86,$00014740 STA L0372,Y ;$12}0C014750 DEY 014760 BPL L0373 ;$4D1C014770 RTS 014780 ;014790 DMPY = $D0014800 DMPZ = $D2014810 ;014820 ; Con}vert a BYTE to its ASCII014830 ; representation in Hexa.014840 ;014850 .MACRO BHEX 014860 .IF %0=1014870 LDY #0}014880 PHA 014890 LSR A014900 LSR A014910 LSR A014920 LSR A014930 CMP #10014940 BMI @WH501}4950 CLC 014960 ADC #'A-10+32014970 BNE @WHE014980 @WH5 CLC 014990 ADC #'0015000 @WHE STA (%1),Y015010 } INY 015020 PLA 015030 AND #$0F015040 CMP #10015050 BMI @WH6015060 CLC 015070 ADC #'A-10+32}015080 BNE @WHF015090 @WH6 CLC 015100 ADC #'0015110 @WHF STA (%1),Y015120 .ELSE 015130 .ERROR "Usage: BH}EX "015140 .ENDIF 015150 .ENDM 015160 ;015170 ; Dump a line of N bytes015180 ;015190 .MACRO DMPL}INE 015200 .IF %0=2015210 JMP DMPDAT015220 DMPNBR .BYTE " "015230 DMPBYT .BYTE 0,0015240 DMPLNG = *-DMPNBR015250 }DMPSAV .BYTE 0015260 DMPDAT LDA # DMPBYT015290 STA DMPY+1015300 LDY }#0015310 STY DMPSAV015320 DMPLOP LDA (%1),Y015330 BHEX DMPY015335 BPUT 0,DMPNBR,DMPLNG015340 INC DMP}SAV015350 LDY DMPSAV015360 CPY #%2015370 BNE DMPLOP015380 .ELSE 015390 .ERROR "Usage: DMPLINE ,"015400 .ENDIF 015410 .ENDM 015420 ;015430 ; Dump a buffer.015450 ;015460 .MACRO DMPBUF 015470 } .IF %0=3015480 JMP DMPCOD015490 DMPSTR .BYTE "$"015500 DMPADR .BYTE 0,0,0,0,":"015510 DMPLEN = *-DMPSTR015520 DMPL}IN .BYTE 0015530 DMPCOD LDA # <%1015540 STA DMPZ015550 LDA # >%1015560 STA DMPZ+1015570 LDA #0015580 } STA DMPLIN015590 DMPBCL WHEX DMPADR,DMPZ015600 BPUT 0,DMPSTR,DMPLEN015610 DMPLINE DMPZ,%3015620 PRIN}T 0015630 WSADDI DMPZ,%3015640 INC DMPLIN015650 LDA DMPLIN015660 CMP #%2015670 BEQ DMPEND015680 } JMP DMPBCL015690 DMPEND015700 .ELSE 015710 .ERROR "Usage: DMPBUF ,,"015720 .ENDIF 015730} .ENDM 015740 ;015750 DEBUGBUF015751 JSR DEBUGSAVE015752015753 RTS015760 ;015770 ; Save registers015780 ;01578}5 DEBUGSAVE015790 PHP 015800 PHA 015810 TXA 015820 PHA 015830 TYA 015840 PHA 015850 DMPBUF $11CE,8,80}15860 ;015870 ; Wait for a key to be 015880 ; pressed.015890 ;015900 LDA #255015910 STA 764015920 KEY LDA 76401593}0 CMP #255015940 BEQ KEY015950 LDA #255015960 STA 764015970 ;015980 ; Restore registers015990 ;016000 PLA 0}16010 TAY 016020 PLA 016030 TAX 016040 PLA 016050 PLP 016060 RTS Restore registers015990 ;016000 PLA 0S014550 STA DAUX2 ;$030B014560 LDX #$44014570 LDA Z0139 ;$00A2014580 STA DAUX1 ;$030A014590 CLC 014600 }JSR L0220 ;$0FE7014610 PLA 014620 STA Z0027 ;$0091014630 L0368 RTS 014640 SEC 014650 LDA #$00014660 SBC Z}0057 ;$0098014670 STA Z0063 ;$0084014680 LDA RAMTOP ;$006A014690 SBC Z0058 ;$0099014700 STA Z0074 ;$0085}014710 JSR L0197 ;$09F8014720 LDY #$03014730 L0373 .BYTE $B9,$86,$00014740 STA L0372,Y ;$120C014750 DEY 01476}0 BPL L0373 ;$4D1C014770 RTS 014771 ;014772 DMPY=$D0014773 DMPZ=$D2014780 ;014790 ; Convert a BYTE to its ASCII0}14800 ; representation in Hexa.014810 ;014820 .MACRO BHEX 014830 .IF %0=1015060 LDY #0015070 PHA015080 }LSR A015090 LSR A015100 LSR A015110 LSR A015120 CMP #10015130 BMI @WH3015140 CLC 015150 AD}C #'A-10015160 BNE @WHC015170 @WH3 CLC 015180 ADC #'0015190 @WHC STA (%1),Y015195 INY015200 PLA015210 } AND #$0F015220 CMP #10015230 BMI @WH4015240 CLC 015250 ADC #'A-10015260 BNE @WHD015270 @WH4 CLC} 015280 ADC #'0015290 @WHD STA (%1),Y015300 .ELSE 015301 .ERROR "Usage: BHEX "015302 .END}IF 015303 .ENDM 015304 ;015305 ; Dump a line of N bytes015306 ;015307 .MACRO DMPLINE015308 .IF %0=2015309 JM}P DMPDAT015310 DMPNBR .BYTE " "015311 DMPBYT .BYTE 0,0015312 DMPLNG = * - DMPNBR015313 DMPSAV .BYTE 0015314 DMPDAT LDA #}DMPBYT015317 STA DMPY+1015318 LDY #0015319 STY DMPSAV015320 DMPL}OP LDA (%1),Y015321 BHEX DMPY015322 INC DMPSAV015323 LDY DMPSAV015324 CPY #%2015325 BNE DMPLOP0153}33 .ELSE 015334 .ERROR "Usage: DMPLINE ,"015335 .ENDIF 015336 .ENDM 015340 ;015350 ; D}ump a buffer (8 lines015360 ; of 8 bytes).015370 ;015380 .MACRO DMPBUF 015390 .IF %0=3015400 JMP DMPCOD015410 D}MPSTR .BYTE "$"015420 DMPADR .BYTE 0,0,0,0,":"015421 DMPLEN = * - DMPSTR015470 DMPLIN .BYTE 0015480 DMPCOD LDA #<%101548}1 STA DMPZ015482 LDA #>%1015483 STA DMPZ+1015489 DMPBCL WHEX DMPADR,DMPZ015490 PRINT 0,DMPSTR,DMPLEN01}5530 LDA #0015540 STA DMPLIN015550 DMPLINE DMPZ,%3015552 PRINT015555 WADDI DMPZ,%3015560 INC} DMPLIN015570 LDA DMPLIN015580 CMP #%2015590 BEQ DMPEND015592 JMP DMPBCL015594 DMPEND015600 .ELSE }015610 .ERROR "Usage: DMPBUF ,,"015620 .ENDIF 015630 .ENDM 015640 ;015650 DEBUGBUF015660 ;015}670 ; Save registers015680 ;015690 PHP 015700 PHA 015710 TXA 015720 PHA 015730 TYA 015740 PHA 015750 D}MPBUF $11CE,8,8015760 ;015770 ; Wait for a key to be 015780 ; pressed.015790 ;015800 LDA #255015810 STA 764015820} KEY LDA 764015830 CMP #255015840 BEQ KEY015850 LDA #255015860 STA 764015870 ;015880 ; Restore registers015890} ;015900 PLA 015910 TAY 015920 PLA 015930 TAX 015940 PLA 015950 PLP 015960 RTS Restore registers015890e