@L}5 _$% l0$)$$Hȱ$ UhL" `e$$%`$%`  R@P!( L(1   Y I`  d  Ld M * @  $ % CC$$)%1 Udߥ$9%: !0 S$% DD˙`  }J)Lr d M * @  $ % CC$$)%1 Udߥ$9%: !0 S$%} DD˙`  }J)Lr J  ((  p L ()   J}L= ( L 0q A    IB JC;? D W } LL  ` W )LA!  ߰")-݆ p" } $G@LL 08`Q")<2Q0 -G$Ș݆ UL# ; p8(()(0ʥ)NQ` }$GȘ݆LU )L ݆ L GȘ ݆LL )W>Z   HH)H }p h  hyhy D L> L JJ    ! LA*` BF }7'8  M HN H` 8 Z  \LdJJ!"! GFE@F (!L }EE !E^ ^ E E7EȩEdE/EȩE  D } .L }  ;F d  ;?F7F? ( .   Z D LL d } . D  L    p  E` , d)  D L) 0BM݊L݉} ML  N݆ L NLML [ TEqEHȱEqEh 0Gȹ G} HLL GɛL  LFREE SECTORS G) *Gȩ GȽG GȌ*jj >G} C8jJ3j2CD( C202C ԠBX` N 1? l LlD:RAMDISK}.COMLu L1 L ;LHL  T`  `1  ɐ     `TU  } L ? .  t`GBJ ~DEHI B V0dV!}QDEHI VF9 ,0 ,0 s0hhL  L` H hDHEh"}DEL8HI4 0 HI,0 0  9 .G VLO#},0 L4*IJ`llD1:AUTORUN.SYSNEED MEM.SAV TO LOAD THIS FILE.D1:MEM.SAV J y08 B|DEHI$} V0 0`B;DEL`?<0LV`@ʆ v s? F0Ξ05: [ BDEHI%} VY8 B V  @  /DE `E:D1:DUP.SYSERROR-SAVING USER MEMORY ON DISKTYPE Y TO &}STILL RUN DOS B;DE J  (` 9 V⪍ ઍ  -'}LLu ÝDEHILV 9 .l 9 .l  `` s$B BH(}I|DE V BLV nB,DE JLV B V BLVDEIʩ BꭝLu  } 3E:}DISK OPERATING SYSTEM II VERSION COPYRIGHT 1984 ATARI CORP.A. DISK DIRECTORY I. FORMAT DISKB. RUN CARTRIDG*}E J. DUPLICATE DISKC. COPY FILE K. BINARY SAVED. DELETE FILE(S) L. BINARY LOADE. RENAME FILE M. RUN AT ADDRES+}SF. LOCK FILE N. CREATE MEM.SAVG. UNLOCK FILE O. DUPLICATE FILEH. WRITE DOS FILES P. FORMAT SINGLEL !N',}#"&))9(&*)/h)''-&؆莟R'S  vL/ˢ L }Insert DOS 2.0s, type Y Λx -}DEfHI 1莏#q! @ y0ɛ8A0,' ȅ 1 1ild! 1L!NO SUCH ITEMSELECT.} ITEM OR FOR MENU! 0 .z:*{}.|{ 1 0 0JB 18L%|DL/}%DIRECTORY--SEARCH SPEC,LIST FILE?[# 0 0 &|D3" 1L!NOT A DISK FILEN !B 1L!E# 1 !BD0}ED:}:1BJ|DE 1DEBHI 1 h0ߢ 0.1}  0?詛 1 y0YЛ 1 ;#L" ;#L! BL1TYPE "Y" TO DELETE...DELETE FILE SPEC2}COPY--FROM, TO?OPTION NOT ALLOWED736 FREE SECTORS COPYING---D1:DIRECK.COMl# 0|D .L/%#3}##JB|DE 1BHID#E 1#0: B 1L!#͑### B 1#c$0SY4}S1}:## # # .#Ƚ# # 𩛙## 1,#PD#ELJ- <.BJD#E 5}1 1HH 0hh|DL%1}:̳# L% #D#EL% 1 0 . .0O% 1L!WILD CARDS NOT A6}LLOWED IN DESTINATION 0 <.|K}N 2 FORMAT. t* 5) 1L!`) 0NΞ 0 L1) 1 L!BAD LOAD FILELOAD FROM WHAT FILE?) 0 ?}0#B 1L!WHAT FILE TO LOCK?) 0 0$B 1L!WHAT FILE TO UNLOCK?DUP DISK-SOURCE,DEST DRIVES?TYPE "Y" IF OK TO US@}E PROGRAM AREACAUTION: A "Y" INVALIDATES MEM.SAV.FE! +L1   `*  70 2 2A} 0.* 1 y0 0)INSERT BOTH DISKS, TYPE RETURN^, 1 y038逍 N, 1L! ,B}C, t*  Lx+, 0 ^, 1 y0 , ,0,0 ,L+ ,I0 ,Vǭ0C}Ξ, 0 }, 1 y0C,ШC, 0K'!" H H 'h h Lx+!EF 5L1L!D,I,HhD}` NOT ENOUGH ROOMINSERT SOURCE DISK,TYPE RETURNINSERT DESTINATION DISK,TYPE RETURNE}`  `8 rL1`-* 1P* 1 y0Y`hhL!NAME OF FILE TO MOVE?- 0 0|DL% <.F},^ 1 70 0 .@L# .BJ 1  DEHIB V L1 ,} 1 70,L.  G}JB|,#P#DE 1 HI BDEHHII 1 B 1 ,^ 1 70,0La- B V,#PH},^ 1 70 0L#L!-* 1P* 1 y0Yj383}mm ݭI}}`8}``|* ? ɛ,`|:-)| / 1L!`DESTINATION CANT BE DOJ}S.SYS0 0H{ 24Δ 28/L!/) 2 Π 2 0 ξK}hAΞB,0 J 1 BDEHI,HÝDE 1HIHIDELSAVE-GIVE L}FILE,START,END(,INIT,RUN)O S0 1`BDEPHI V` S0H 1 L!M}0 0 1L~0`PLEASE TYPE 1 LETTER,0`hhL! 70 1L0L<1 ,;ɛ7,"ɛ:ݦ1ݥN}A"D|ݤD|ȩ:|ȩ|ɛ,,(/+.ީ1 1,ɛ`轤{NAMEO} TOO LONG B VL!` L1I H1EΝDL1|mDiE` V0`8d/8 i:222 1 LP}!ERROR- 138ɛ+,' 20*.. өr2 1``2TOO MANY DIGITSINVALID HEXAQ}DECIMAL PARAMETER800 0 8 00`,0'D800 H,ɛh`2L1NEED D1 THRU D8uR} ECIMAL PARAMETER800 0 8 00`,0'D800 H,ɛh`2L1NEED D1 THRU D8uNACOUNLENGHMSLS%%****************************T}***%%* AUTORUN.SYS MAKER *%%* by David Schoch *%%* *%%* U} COPYRIGHT 1989 *%%* BY ANALOG COMPUTING *%%*******************************d;A,6V}-n4@"(>:A%,4-@xY%( AUTORUN.SYS Creator((V((*Input Your CommandW} Line -119 Char Max.*Y(@ 6-B:, "A@@"(>:A%,"-@@X}((( Insert Disk on which you wish to,,($write new AUTORUN.SYS into Drive #1.%(%(Press when ready...Y} F:B2y,@A(( (((Creating...AUTORUN.SYS...6-A#%%Bc6-P:'AV,6-Z}&+$AV,8 A8@@ D:AUTORUN.SYS #A,-@@"(*@, [}*@*@",-@A#"(*@, ,0-@6-@:7<,,,*@0 6,\}-@@"(*@, @@J(>:A%,) B(&(ERROR-F:A,)((%(]}ERROR- NO COMMANDS ENTERED(255,255,0,64LL162,36,189,26,3,201,69,240,5,202,202,202,16,244,232,142,83,64,189,26,3^}LL133,203,169,65,157,26,3,232,189,26,3,133,204,169,64,157,26,3,160,0,140OO82,64,177,203,153,65,64,200,192,16,144,246,16_}9,83,141,69,64,169,64,141,701164,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0LL172,82,64,185,123,64,201,155,240,6,238,82,`}64,160,1,96,72,138,72,174,83$CC64,165,203,157,26,3,232,165,204,157,26,3,104,170,104,160,1,96.155,226,2,227,2,0,64a}D:AUTOMAKN.BAS72,174,83$CC64,165,203,157,26,3,232,165,204,157,26,3,104,170,104,160,1,96.155,226,2,227,2,0,64A V AABBCCADA`Av@d@AV@A3v0@G@bu@ Aiv0 @ c}b%P AV @  ##***************************** ##* CHAO d}S * ##* by Alfredo L. Acosta * ##* *##* COPYRIGHT 1989 *##* e} BY ANALOG COMPUTING *##***************************** AԠŠ; +@$A f}@1A;@( ,,,1Ԡ̠Ԡ2M%6-P:H:,$A,%@G6 g}-P:H:,$A,%@M,;ΠŠ<%%6-P:H:,$@,%@F;"@6-O:&,%6-O h}:&,+6-16-; AP;"@6-O:&,%6-O:&,+6-16-; AZ%6-O:&,6-O:&,6-%6-d i}# !6-%'@# A n  6-&'@x# !6-%'@# A@  6-&'@ , j} F:B2y,@@` A ΠԠA;A,"AAH4AR@ k}A(>:A%,E6-A`6-Av'6-@d36-@?6-AVE6-9-@@'( *** CHAOS *** l}9-@@NN(EThis program will place three dots on the screen to form a triangle. ll(cIt will then place a m}dot randomly on the screen. From there it will randomly choose a direction XX(Otoward one of the three starting dots n}and place a new spot 1/2 the distance $WW(Ntowards it. Thislast step will be continually repeatedfrom the last new spot o}. .aa(YInstead of total coverage of the area within the triangle, surprising patterns emerge!8+(+( Press t p}o dump to printer.B ( (Press to begin.L F:B2y,@AV$ΠР% #A0%3>: q}@',>:@d,e-@@a")A5%- O6-F:@,%F:@,$AVe6-%@@$A/ r}3>:@',3>:@ ,/-%@996.>:,*67A,.>:,967@,.B6-?:A6<:@',K>:A,>:,    ll104,104,141,21,6,104,141,20,6,104,141,27,6,104,141,26,6,160,193,173,2 t}55,255,136,240,35,141,255,255,238 cc26,6,240,21,173,20,6,56,233,40,141,20,6,144,4,24,76,19,6,206,21,6,76,19,6,238,27,6,76, u}33,6,96 D:CHAOSNW.BAS,238 cc26,6,240,21,173,20,6,56,233,40,141,20,6,144,4,24,76,19,6,206,21,6,76,19,6,238,27,6,76, PROC dli1() [PHA] chbase=$E0 ;go back to ROM set [PLA RTI]RETURNPROC DliSetup() BYTE ARRAY temp w} nmien=192 ;enable interrupts temp=sdlstl ;switch sets at temp(14)==+128 ;text window sdmctl=0 vdslst=dli1 x} ;call interrupt sdmctl=34 RETURN PROC TitleScreen() y} Graphics(2) ;all this work to get DliSetup() ;upper and lower case color2=0 ;in Graphics 2!! crsinh=1 lmz}argn=0 RamSet=(memtop-$400)&$FC00 chbas=RamSet RSH 8 memtop=RamSet MoveBlock(RamSet,$E200,512) MoveBlock(RamSet,$E0{}00,8) MoveBlock(RamSet+8,$E100+24,8) MoveBlock(RamSet+40,$E100+32,8) MoveBlock(RamSet+24,$E100+152,8) MoveBlock(RamSe|}t+32,$E100+168,8) rowcrs=3 colcrs=5 PrintDE(6,"!HARACTER") PrintDE(6," #ET") PrintDE(6," %ISPLAY") Pr}}intDE(6," $TILITY") txtrow=0 txtcol=0 PrintE(" by Dave Arlington") PrintE(" (c) 1989 for ANALOG ~}Computing") PrintE("") Print(" Insert Disk with Fonts, Press ") DO UNTIL consol=START OR strig0=0 ODRETUR}NPROC StashFile(BYTE filenum, col, row) BYTE index,cnt,temp index=(filenum-1)*8 FOR cnt=index TO index}+7 DO temp=Locate(col,row)&$7F IF temp#32 THEN fnames(cnt)=temp FI col==+1 ODRETURNPROC MarkFil}e(BYTE col, row) BYTE mark,letter mark=Locate(col,row) IF mark=32 THEN letter=Locate(col+1,row) IF letter#160} THEN selfiles==+1 IF selfiles<=7 THEN color=20 Plot(col,row) ELSE selfiles=7 } FI FI ELSEIF mark=20 THEN selfiles==-1 color=32 Plot(col,row) FIRETURNPROC ClearScreen() BYTE cr}ow, ccol, cnt color=32 FOR crow=1 TO 20 DO FOR cnt=0 TO 3 DO FOR ccol=cnt*10 TO }8+cnt*10 DO Plot(ccol,crow) OD OD ODRETURNPROC pauz(CARD tim) CARD cnt }FOR cnt=1 TO tim DO ODRETURN PROC FlipFont(BYTE col,row) BYTE cnt, letter, let let=Locate(co}l,row) FOR cnt=0 TO 7 DO IF let#32 THEN letter=Locate(col+cnt,row) IF letter#32 THEN colcrs=col+c}nt Put(letter!$80) colcrs=col+cnt+1 FI ELSE colcrs=col+cnt Put(let!$80) colcrs=}col+cnt+1 FI ODRETURNPROC SelectFiles() BYTE oldrow, oldcol, mark INT row, col, delay ch=255 } selfiles=0 rowcrs=22 colcrs=1 SetBlock(fnames,56,32) Print(" to view fonts ") Print("/ }New Disk") row=1 col=1 FlipFont(row,col) DO IF consol=SELECT OR (stick0&2)=0 THEN pauz(2500) old}row=row oldcol=col row==+1 IF row>20 THEN row=1 col==+10 IF col>31 THEN c}ol=1 FI FI FlipFont(oldcol,oldrow) FlipFont(col,row) FI IF consol=OPTION OR (stick0&1)=0 TH}EN pauz(2500) oldrow=row oldcol=col row==-1 IF row<1 THEN row=20 col==-10 } IF col<1 THEN col=31 FI FI FlipFont(oldcol,oldrow) FlipFont(col,row) FI IF (stic}k0&4)=0 THEN pauz(2500) oldrow=row oldcol=col col==-10 IF col<1 THEN col=31 FI } FlipFont(oldcol,oldrow) FlipFont(col,row) FI IF (stick0&8)=0 THEN pauz(2500) oldrow=row o}ldcol=col col==+10 IF col>31 THEN col=1 FI FlipFont(oldcol,oldrow) FlipFont(col,row) } FI IF consol=START OR strig0=0 THEN pauz(10000) MarkFile(col-1,row) FI UNTIL ch=12 OR ch=33 OD I}F ch=12 OR selfiles=0 THEN ClearScreen() rowcrs=22 colcrs=1 Print(" Insert Disk with Fonts,") Print(" Pre}ss ") DO UNTIL consol=START OD ch=255 ELSE selfiles=0 FOR row=1 TO 20 DO } FOR col=0 TO 30 STEP 10 DO mark=Locate(col,row) IF mark=20 THEN selfiles==+1 } StashFile(selfiles,col+1,row) FI OD OD FI RETURNPROC FileScreen() B}YTE ARRAY name(20) BYTE cnt, row, col, numfiles Graphics(0) crsinh=1 color2=$52 color1=12 PrintE("}") FOR rowcrs=1 TO 20 DO FOR colcrs=9 TO 29 STEP 9 DO Put(124) OD OD rowcr}s=21 colcrs=0 PrintE("") PrintE("| |") Pr}int("") DO numfiles=0 Close(1) Open(1,"D:*.FNT",6,0) row=1 col=1 } rowcrs=row colcrs=col DO InputMD(1,name,20) IF name(3)>64 THEN numfiles==+1 FOR cnt=3 TO 10} DO Put(name(cnt)) OD row==+1 IF row>20 THEN row=1 col==+10 } IF col>31 THEN col=0 FI FI rowcrs=row colcrs=col FI UNTIL icsta}>$7F OR numfiles=80 OD Close(1) SelectFiles() UNTIL ch=33 OD ch=255RETURN UNTIL icstao; ;Character Set Display Utility; by Dave Arlington; COPYRIGHT 1989 BY ANALOG COMPUTING;;Global variables }and defines;DEFINE RTI="$40", PHA="$48", PLA="$68", TXA="$8A", TAX="$AA", TYA="$98", } TAY="$A8", START="6", SELECT="5", OPTION="3"BYTE dindex=$57, sdmctl=$22F, nmien =$D40E, co}nsol=$D01F, chbase=$D409, chbas =$2F4, color2=$2C6, colpf2=$D018, rowcrs=$54, colcrs=$55, crsinh=$2F0,} lmargn=$52, color1=$2C5, icsta =$353, stick0=$278, strig0=$284, ch =$2FC, iccom =$352, txtrow=$29}0, selfiles, wsync =$D40A, count, finish CARD savmsc=$58, sdlstl=$230, vdslst=$200, memtop=$2E5, ic}badr=$354, icblen=$358, txtcol=$291, RamSetBYTE ARRAY fnames(56), filenm(20), dlspace(512), cset(7), } cols=[$7C $4C $8C $6C $2C $5C $9C], dl=[112 112 112 $42 0 0 2 130 $0E 2 2 1}30 $0E 2 2 130 $0E 2 2 130 $0E 2 2 130 $0E 2 2 130 $0E 2 2 130 $0E } 2 $0E 2 $41 0 0] INCLUDE "D:CSET2.ACT" PROC CIO=$E456(BYTE areg, xreg)PROC LoadFont(BYTE ARRA}Y namefile CARD addr) Close(1) Open(1,namefile,4,0) iccom=7 icbadr=addr icblen=1024 CIO(0,$10) }Close(1)RETURNPROC GetFont(CARD addr BYTE filenum) BYTE letcnt letcnt=0 Zero(fi}lenm,20) IF fnames(filenum*8)#32 THEN filenm(1)='D filenm(2)=': WHILE fnames(filenum*8+letcnt)#32 AND} letcnt<8 DO filenm(letcnt+3)=fnames(filenum*8+letcnt) letcnt==+1 OD filenm(0)=letcnt+6 filenm(le}tcnt+3)='. filenm(letcnt+4)='F filenm(letcnt+5)='N filenm(letcnt+6)='T LoadFont(filenm,addr) ELSE MoveB}lock(addr,$E000,8) FIRETURNPROC AllocMem() BYTE cnt CARD temp FOR cnt=0 TO 5 DO temp=((memtop-$400})&$FC00) cset(cnt)=temp RSH 8 memtop=temp GetFont(temp,cnt+1) OD cset(6)=$E0 temp=((memtop-$400)&$FC00) c}hbas=temp RSH 8 memtop=temp GetFont(temp,0) savmsc=(memtop-$500)&$F000 Zero(savmsc,1280)RETURN } PROC Dli2() [PHA TXA PHA TYA PHA] count==+1 IF count=7 THEN count=0 FI colpf2=cols(count) chbase=cset(c}ount) [PLA TAY PLA TAX PLA RTI]RETURNPROC DliSetup2() nmien=192 dlspace==+256 dlspace==&$FF00 MoveBlock(dlspac}e,dl,39) dlspace(4)=savmsc&$FF dlspace(5)=savmsc RSH 8 dlspace(37)=dlspace&$FF dlspace(38)=dlspace RSH 8 sdlstl=dls}pace vdslst=Dli2RETURNPROC ShowFonts() BYTE cnt1, cnt2, cnt3 CARD temp Graphics(0) ch=255 sdmctl=0 A}llocMem() crsinh=1 color2=$0C color1=2 count=6 DliSetup2() sdmctl=34 temp=savmsc dindex=0 IF }selfiles>0 THEN FOR cnt1=0 TO selfiles-1 DO rowcrs=0 colcrs=0 FOR cn}t2=0 TO 7 DO Put(fnames((cnt1 LSH 3)+cnt2)) OD PutE() Print(" ABCDEFGHIJKLMNOPQRST") P}rintE("UVWXYZ0123456789") PrintE(" abcdefghijklmnopqrstuvwxyz") savmsc==+160 OD FI savmsc=temp+112}0 rowcrs=0 colcrs=0 PrintE(" SPACEBAR ") savmsc=temp+1200 rowcrs=0 colcrs=0 Print}(" START ") DO UNTIL consol=START OR strig0=0 OR ch=33 OD IF ch=33 THEN }ch=255 finish=1 ELSE finish=0 FIRETURNPROC Main() TitleScreen() finish=0 DO FileScreen() Sh}owFonts() UNTIL finish=0 OD Graphics(0)RETURNPROC Main() TitleScreen() finish=0 DO FileScreen() Sh541H]TTP8PrintIE=*(INT i)T[$20 _SHFTR $4C PrintIDE]TeT^EOL $4C _DOPR2HZ55|Ll,\e5pppB}An5hihiHHȱȱ`8Hh` 5E…¦ 5}`L5` 5"Ff ee&8L5 Fj` &`p B V8l V6 V}hhlj6HHJJJJhh`hhlj6 `iDiE`Hhl6`Hh`Hh` 6IHiDiE B m}6HI B m6` 6L6 6L7 6L6 6L7 6HI B m6`l6L7L47 6iDiEHIB m}6H8L@7`HhL@7 6HIB m6` 6 6JKB m6JJJJ` 6 B m6`H` B VhKI} JS:DEB m6`UVT` 8L7 8L7Ƣƣ8`HhL 8}Ƥƥ8`L|8H h@`2FL8ԭ18088i8ii/{8z8"/`L8 7 8ȌR8}) 5) 5 5 5 86 5 5Ⅳ 5 5 P8 5 5 P8 5i 5iᅣ} P8 5i( 5iᅣ P8 5i 5iᅣ P8 5i 5iᅣ P8}TUL9 !HARACTER9 7L: #ET9 7L: %ISPLAY: 7L9: $TILITY:) 7Lm: } by Dave Arlington:P 7L:" (c) 1989 for ANALOG Computing:w 7L:: 7L:% Insert Disk with Fonts, Press }Ԣ: 7IL:`XLL: 5:8: 6::::i/;/;:L^;:: 8)::I LU;:}:5::L$;`V&L&Lf;`;_;`;_; 8a;a;I L;_;i`; 8b;b;IL;44L;`;_; 8L;}4L;a;IL;844 `;_; 8`;L; ;;Ly<;;Ls< ; 6; ; 6}e[<[<;Lm<$;; 8;LP<;L<;L<`$F0$L<{ ~p=Ȍo=q=}i q=r=ir=q=r=0Lc>r=Ȍq=l=m= p=o=8q= q=r=r=q=r=0L>r=q=l=m= FW4LOG;F}84FF;FLOGOTUFi`X?FiYTULG( SPACEBAR }Gg 7>FiX?FiYTULG( START G 7I I!LGI!L H}5LH5`LH 85 @ @F5LH 7``HTART G 7I I!LGI!L H5%X*SAVE#D:DEGASVUF.M65X*ASM,#-,#D:DEGASVUF.COM#X* Degas *FULL* View, by Mat*RatX*$X* This program will load a} degas"X* high resolution, .PI3 format$"X* picture file and display 1/4. X* of it on 4 different pages8%X* of 130XE (or }compatible upgradeB&X* upgrade XL), in Graphics mode 8.L)X* The software will then FLIP throughV%X* them as fast as possib}le. Other`"X* keyboard control options arejX* as follows:tX*~X* -- Key commands --*X* 1 - Display 1/4 of graphic, 1}st pageX* 2 - second pageX* 3 - third pageX* 4 - fourth page-X* F - full display speed, not real usefulX* RETURN - Exit to main menu for another picture selectionX* ESCAPE - Exit programX* >>BEWARE<<< Don't expect to run2&X}* this with SpartaDOS X Cartridge.<$X* SDX likes all those RAM banks.F$X* Go mucking about with them andP"X* you are going} to CRASH dude!ZX* Important addresses fordX* loader program:n ESCAPEx SCREENX* Byte splitting registers }SHIFT1 SHIFT2 SHIFT3 SHIFT4 SAVEXBANKSCR@;;16K IS ADDRBANKSCR1P SCAN1c SCAN2}cX* Page bank select values PAGE1PAGE2PAGE3PAGE4  MAIN"X* Bank select registe}r,BANKSEL6 BLANK40@ BLANK5@J2TLINECOUNT ^ EXFLG hFr)X* Mat*Rat's customized system equates|}>D:SYSEQU.M65 X* Mac/65's IO Macros library>D:IOMAC.LIB X* Mat*Rat's Graphics routine>D:GRAPHICS.M65X* 2 }line graphic buffer BUF160#X* Custom display list work areaDISPLAY p=0=O BANKSCRDLASCAN1;; 15'S GO H}ERE O;; SKIP 4K BOUNDARY BANKSCR1)DLBSCAN2;; ANOTHER 104 MODE 8 LINES A DISPLAY ===&"X* Work}ing filename for parsing0"FILEN AD1:FILENAME.EXTA==:X* Default directory specDFILSPEC AD1:*.PI3A==N!X* Init}ialize custom, 200 lineXX* graphics mode 8 displaybX* list for startersl!INIZ$>;; Setup display listvQ>INIZ1P}DLA92 (>SCAN1 HINIZ1$>INIZ2PDLB92 (>SCAN2 HINIZ2X* Clear screen, show title"X* and Start DE}GAS VIEW program STARTGRAPHICS Q> PX* Get drive number first !X* or accept default displayed*X* by }pressing return only4 CLOSE >5PRINT =A㩠AHPRINT =FILSPECR5PRINT =A[}RETURN] = Keep default shown above.A\2PRINT =ADrive # Degas .PI3 files are on ?AfINPUT =FILENAME=p QFILENAME}zR> FNONEWDRPFILSPECX* Open a directory listingX* and display it#NONEWDROPEN ===FILSPECC} GNOFILE NEXTFILEINPUT =FILENAMEC GNOFILEPRINT =FILENAME !NEXTFILEX* Request filename to view &}X* [RETURN] only restarts, allowing #X* the user to change drive spec )X* ESCAPE will exit the program to DOS$ 5X* Or type }filename (no drive or ext reqd) to load. NOFILE8 CLOSE B (PRINT =AGraphics file to load ?AL .PRINT =A[RETURN}] = Restart, new driveAV 1PRINT =ADouble [ESC] and [RETURN] exits.A` INPUT =FILENAME=j CLOSE t QFILENAME~} R>ESCAPE FESCEXIT R> HGETFILE !START ESCEXITGRAPHICS  &PRINT =ADegas View by Mat*RatA : X* P}arse the filename "X* If no drive letter or number X* prefixed, insert those #X* If no extender, paste on .PI3 GETFILE}QFILENAME $> %>;; EXTENDER FOUND FLAG 'EXFLG R> :( FGETF12 QFILENAME< R> :F FGETF1P Q> DZ PFILENd }QFILSPECn PFILENx Q> : PFILEN %> !X* If a '.' is in the filename "X* don't mess with the extender G}ETF1QFILENAME9 PFILEN8 2 3 R> FGETF2 R> . HGETF1 #EXFLG !GETF1 GETF2QEXFLG HGETF3" 1, Q> .}6 PFILEN8@ 3J Q> PT PFILEN8^ 3h Q> Ir PFILEN8| 3 Q> 3 PFILEN8 3 Q> PFILEN8 GETF3PRINT =FILEN} OPEN ===FILEN C ILOADIT X* Bad filename or drive? X* Restart the program )PRINT =AFile error, pres }s RETURNA Q> HOLDRCH FHOLD PCH& !START0 LOADIT: "X* Let OS setup the GRAPHICS 24D #X* originally, to get al }l systemN X* variables set properlyX "X* Then point to custom displayb X* list and memory.l GRAPHICS v Q>4DISPLAY  }$>5DISPLAY %JIFFY LOADIT1)JIFFY FLOADIT1 P0 &1 Q>4BANKSCR PSAVMSC Q>5BANKSCR PSAVMSC Q>S }CAN1SCAN2 PLINECOUNT %X* Forget the 34 byte Degas header /BGET =BUF160=";; Get and forget header C ICNTN }U CLOSE * GRAPHICS 4 PRINT =ALOAD ERRORA> :H X* Setup screen RAM pointersR CNTNU\ QSAVMSCf PSCREENp }QSAVMSCz PSCREEN Q> P Q> P Q> P -X* Get next 2 screen lines of picture data +GLINEB}GET =BUF160=;; Read a line C IGLINE2 GLINE1$>MAIN &BANKSEL GRAPHICS  CLOSE !PRINT =AFile }input errorA:$GLINE2$>;; Buffer index.1X* SHIFT1 will hold even pixels for even lines80X* SHIFT2 will hold odd pixe}ls for even linesBGLINE3QBUF1609L%>V,` GLINE4U?j USHIFT1tU?~ USHIFT21 HGLINE4,%>0X* SHIFT3 }will hold even pixels for odd lines/X* SHIFT4 will hold odd pixels for odd linesQBUF160P9 GLINE4AU? USHIFT3U}? USHIFT41 HGLINE4A 2 QBUF1609%>(,2 GLINE5U?< USHIFT1FU?P USHIFT2Z1d HGLINE5n%>x,Q}BUF160P9 GLINE5AT? USHIFT3T? USHIFT41 HGLINE5A &SAVEX $>PAGE1$X* Stuff pixel data in PAGE1 bank}$X* and main bank. Use PAGE1,2,3,4#X* for computational convenience!X* Shove copy of PAGE1 in MAIN&X* so display doesn'}t flash garbageX* during keyboard inputs.X*"#X* Stuff appropriate shift bytes,$X* into proper pages, as enabled.6 &}BANKSEL@ QSHIFT1J P@SCREEN7T $>MAIN^ &BANKSELh P@SCREEN7r $>PAGE2| &BANKSEL QSHIFT2 P@SCREEN7 $>PAGE3} &BANKSEL QSHIFT3 P@SCREEN7 $>PAGE4 &BANKSEL QSHIFT4 P@SCREEN7 #SCREEN HCHKDN#SCREEN$X* Re}store buffer index and check#X* if done reading picture file.CHKDN$SAVEX&20(>P: FUPDLINED !GLINE3N UPDLINEX}"LINECOUNTb FSHOIT0lQLINECOUNTvR>d HJMGLQ>4BANKSCR1 PSCREENQ>5BANKSCR1PSCREENJMGL !GLI}NEX* Display routineX* Enable respective banks#X* Stick BLANK4 lines command in&X* display list for even line pages}#X* and BLANK5 for odd line pages'X* This is done to minimixe vertical"X* jitter during page flipping. *X* Horizontal }jitter is not eliminated,'X* however, as it would require some &X* extra fancy bit shifting at load*X* time. Not fun.4}X*>SHOIT0CLOSE HSHOIT$>PAGE1R %>BLANK4\SHOIT1AQJIFFYfSHOIT1RJIFFYp FSHOIT1z &BANKSEL'DISPLAY}2222 (>PAGE3 HSHOIT2 %>BLANK5SHOIT2QCHR> HSHOIT3(>PAGE4 FSHOIT HSHOIT1A X* Al }ways re-enable MAIN bank&X* before exiting any display loop!$SHOIT3$>MAIN. &BANKSEL8X* Process key commandBX* ESC!}APE - Exit to dosL,X* 1 - Display static screen, page 1 onlyVX* 2 - Display page 2`X* 3 - Display page 3jX* 4 - Displa"}y page 4t*X* H - Show half of image, flip screens~X* 1 & 3 at 30 hertz*X* S - Show half of image, flip screensX* #} 2 & 4 at 30 hertz)X* F - Fastest display possible, a bit,X* useless, but easy enuf to throw in&X* N - Normal di$}splay (SHOIT above);X* SPACE - Invert displays, swap color registers, simpleX*'X* Any other key loops back to START%}HOLDITCLOSE OPEN ===AK:AC IHOLDNOW CLOSE   !START!HOLDNOWBGET =FILENAME= QFILENAM&}E(X* SPACE - Invert display?2R> ;; SPACE?< HCKSCLF !INVERTPX* (H)alf display, 1&3 ?Z CKSCLR> Hd HCKSNRMn !SH'}OHALFx X* (N)ormal display, 4 pages?CKSNRMR> N HCKSFAST !SHOIT"X* (F)astest possible flipping?CKSFASTR> F (}HCKSCS !FASTEST CKSCSX* (S)how half, pages 2&4?R> SHCK1!SHOSECHAFX* (1)-show screen 1 only? CK1R> )}1HCK2 $>PAGE1" HSVPG,X* (2)-show screen 2 only?6 CK2R> 2@HCK3J $>PAGE2T HSVPG^X* (3)-show screen 3 only*}?h CK3R> 3rHCK4| $>PAGE3 HSVPGX* (4)-show screen 4 only? CK4R> 4 HCKESC $>PAGE4SVPG&BANKSEL$>+} SVPG1(CH FSVPG1 $>MAIN &BANKSEL !HOLDNOW X* (ESCAPE) from the program?CKESCR>ESCAPE HRESTART C,}LOSE &2PRINT =ADegas View by Mat*Rat, (c) AnalogA0::RESTARTCLOSE D !STARTN!X* INVERT routine - swap color-}XX* registers 709 & 710bINVERTQl5vQP7P !SHOITX* Show (H)alf, pages ! & 3SHOHALF$>PAG.}E1 QJIFFYSHOH1RJIFFY FSHOH1 &BANKSEL $>PAGE3 QJIFFYSHOH2RJIFFY FSHOH2  &BANKSEL$CH (>*/} FSHOHALF4 $>MAIN> &BANKSELH !HOLDNOWRX* (S)how half, pages 2 & 4\SHOSECHAF$>PAGE2f QJIFFYpSHOS1RJIFFYz F0}SHOS1 &BANKSEL $>PAGE4 QJIFFYSHOS2RJIFFY FSHOS2 &BANKSEL$CH(>FSHOSECHAF $>MAIN &BANKS1}EL !HOLDNOW X* Show all screens (F)astestFASTESTQ>FASTEST1$>PAGE1 &BANKSEL$ $>PAGE2. &BANKSEL8 $>PAG2}E3B &BANKSELL $>PAGE4V &BANKSEL`RCHj FFASTEST1t $>MAIN~ &BANKSEL !HOLDNOW INIZ&BANKSEL8 $>PAGk222S:H` B V`BD2EhK)I J V`22p0O@;3=3OP34A2D1:FILENAME.EXTD1:*.PI32c>!4}3c 2 B VL4㩠砛 BD3E%HI V BD3EHI V!5}Ly4[RETURN] = Keep default shown above. BTD4E%HI VL4Dri45ve # Degas .PI3 files are on ? BD!6}4E"HI VBDEHI Vɛ3BJKD3E V0BBDEHI V0!!7} BDEHI VL#5 B VL5Graphics file to load ? BrD556EHI VL5[RETURN] = Restart, !8}new drive BD5EHI VL 6Double [ESC] and [RETURN] exits. BD5E!HI VBDE!9}HI V B Vɛ@L3 2L}6Degas View by Mat*Rat BgD6EH67I V`2::D!:}333:33ɛ .2L62.3ȩP3ȩI3ȩ33ȩ3 BD3EHI VBJKD3!;}E VGLW7File error, press RETURN B>D7EHI VL3 2Ӣ27801X@Yȍ2B!<}3D2E"HI V< B V 2L7LOAD ERROR BםD7E HI V`XY B3D2E!=}HI VGө 2 B VLa8File input error BPD8EHI V`32*&*&892*&*&!>}32*&*&2 & &ӥӑŎӥɎӥ͎ӥPL822dPL8 B V!?}0ӌ2@ݢӢ@ B V@BJKLj9K:gD9E V @ B VL3@9:BDE!@}HI V LZ:HLk:NL9FL:SL:1234͎ӢL9N@ B VL.:Degas Vi!A}ew by Mat*Rat, (c) Analog B D:E"HI V`@ B VL3HhL9ӢɥӮ::!B}L9ťӢͥӮL9ӢŎӢɎӢ͎L93L9ӢɥӮ:: Q0OL`EpppppppppF.2pBZ0p  A0pppFV2@B((A0pppFV2 B0 B(A40䀢%D}쀀򚀡瀀diskeditordisassemblerexit%E}䀀Disa Type [F/D]Dest'n [E/P/Dn] Labels [Y/N] Source FileSrc Drive [1-8] Density [1-2] Se%F}ctor [1-2D0] # of Sectors Offset [0-7F]Origin [0-FFFF]Byt/Sec [7D/80]ppFB2B;B(1B~20B-B* B%G}3A1B2A1(Px@h0X Hp((((((())))))*******++++diskmasterHcIQYXYdiskeditordiskdisassembler%H}dataentry뀭%I} read up dn edit write undo base chars bfill eor trace file link dens%J} menu serch ($ $( input sorce destn rfrsh abort hue\ lum\󀣯%K} 5 5011-膏 5 8 7 q4 -4 5L!4Hލ111h݋40܊ (( s4%L}7o47p4 9 (H[<--h`*9"8>(.#f :6v -7%%H$H` 4ɛ98`~ ܦ)%M}:) 80ķÙU- 6иU-`"-`!L4 4`U-ɛ)+U-V-0U-U-ɛU-%N} 8U-` 4` ?U-ɛ` 8&&&&Պԅܩ()*+RUT`12<%O}Ƚ< 5 `i(`12LL6 ?, z?怤ȭ 6 6ȑȄ` 5L;6恩%P},ȄȐ 8 d8d擢0 :e0 6ȥ 6ȄЦ` 58 л` 712,%Q} 6& 5` 67` 67`H****)h)`;;ʈ`ԥբ o7,Ԣ# s7},JJԢ s7~,ԭ},)%R}բ 2 2i2<2 z? 6 ~2L?,,` @`@ `7}89888G9w9#:d:Y;77 99+959:%S}9;';80;;:`E9HIL6IL5 l5`ɀ 5- m9愀U- 6U-𤛢U-,L9 4`U%T}- ِ ?HH "?=U-hh 8L8 l5 8=Z- "?U- 6*` z?$U-Lj? l5`Ԡ,L9%U} 8 8 `K<`IL 7 l5`,Eԙ,L9 5 6L 7111hhL-4 7L9'*` ?9L 7 ?9L 7%V} ` l5`@L ; ԭ},)ԍ},L9L5L5 m9`,U-(-0(- 6U-ĸ8帅U-, %W}򥀅 9ķ`JJJ12 8刅 ei` 5 5L9i`)i)` l5`0զ<%X}#<ԍ~,)ԭ},)Ս},L9L ; l5`ԅՅ : ; 7L9,R,W揦%Y}<< <<   LS ?ԢLC> Q>,V-YW-` ? ?ȩ ? ?DV-`AZ-` ? %a}? )IiL>8嵅ԥL>eԥiթeԅԥi =ƫ` ? ? ?)V-` ? =Lc> ?ԢL"? ?Ԣ"L"?(%b}Z-L=ʆ ئU-)U-` z?U-譃U-`$U-襫U-`5JJJJK<Ȧ5ԪK<%c}Ȧ` 'U-`ԅ` i@ @̥ɀ,(04`BD-EJK V0 uA0 IB`LX= :%d}XE 6GU- 6GEE 6G ?BLX= i@ BD-EJǝKũƭ-E`LV BLVBHILV^,潠%e}`}!,),` @,̭,(` @,(`ڥ8ʥL:*8Lq@ < A%f}`L @ @ uA0DU- IB uA0क़ԥ z? j? uA0ǥ8夅奅 z? j? SGhh AL< q@0 q@`U- 6G%g}-E`U-ɛȘeŅťiǥ` BDE8H逝IŅǩ B E 6G ?B V0 B %q}CB%DOS SYSB*)DUP SYSBSAUTOMAKEBASBbCHAOS BASB*vCSET2 ACTBCSETDISPACTB(CSETDISPOBJBMDEGASVUFM65B3DEGASVUFOBJBBCDISKMASTOBJBdDMPT1 M65BDMPT2 M65#E 6G ?B`Ţ` :OE 6G i@U- 6GEE 6G ?BL`E 4ɛ `ř`ADCANDASLBCCBCSBEQBITBMIBNEBPLBRKBVCBVSCLCCLDCLICLVCMP%r}CPXCPYDECDEXDEYEORINCINXINYJMPJSRLDALDXLDYLSRNOPORAPHAPHPPLAPLPROLRORRTIRTSSBCSECSEDSEISTASTXSTYTAXTAYTSXTXATXSTYAieum}yaq)%5%s}-=9!1 $,0PpXʈIEUM]YAQLl JFVN^  Hh(*&6.>jfvn~@`8x%t} !$'*-033333333666999<<<=>Q>Z>`>n>}>>>>>>,X)Y,) .BYTE $ *=$ %w} ;END=$ Insert dest'n, RETURNInsert source, RETURNCompleted, RETURNOUTPUT INPUT آ)ҩ001%x}"/ RLtL3001 51 G HL`EU-)ߢFD G H CH /G G H%y}ϭU-)ߢYNå G H CH /GLF G G HU-)800 텢 G H̭U-)810텡<Խ< z?x1%z} G H #HԅՅ G HԅeԥՅe #H G Hڥɀ G HƥԅՅ G H}ɀ 5ɩ4%{}001 ? 2@ < AȢLX=!ܭ!LFV-80`=G>G OG=G>G`ɛ RUTLG 6HT12%|}hU' T GRU`T5((('i(iT` SG@ 6G: OG OG Gi%}}`UTy12i` GL4 GL4 GLl5< <8``U-ɛ8D"PE,:V-W-U%~}--`W-: V-198` H0+Ƞ; H0"12 H0报~2 HL ;` 8){`@%} i  .'ө I Y`@W0(NCASIN TRAMS WARMS BOOT DOSVE DOSIN POKMS BRKKE%})RTCLO ICHID !ICDNO "ICCOM #ICSTA $ICBAL %ICBAH &ICPTL 'ICPTH (ICBLL )ICBLH *ICAX1 +ICAX2 ASOUND%} BCRITI MATRAC RLMARG SRMARG TROWCRUCOLCRXSAVMS jRAMTOVFRVFRVFRVFRFREEXNSIGESIG%} FCHRFLDIGRCIINBUF RADFLFLPTFPTRVDSLSVBREAVKEYB"VVBLK$VVBLK +SRTIM /SDMCT0%}SDLST 2SSKCT4LPEN5LPEN6BRKK DCOLDS oGPRIOypPADDL9xSTICKy|PTRIG9STRIG ESCFLTABMA INVFL SH%}FLO BOTSC PCOLR PCOLR PCOLR PCOLR COLOR COLOR COLOR COLOR COLORRUNAINITA RAMSIME%}MTOMEML9DVSTA CRSINCHCHACCHBA ATACHC DSPFL SSFLA DDEVIDUNI DCOMN DSTATDBU%}FL DTIMLDBYTL DAUX)HATAB@ICHIAICDNBICCOCICSTDICBAEICBAFICPTGICPTHICBLIICBLJICAX%}KICAX PRNBU CASBULBUF HPOSP HPOSP HPOSP HPOSP HPOSM HPOSM HPOSM HPOSM SIZEP SIZEP%} SIZEP SIZEP SIZE COLPM COLPM COLPM COLPM COLPF COLPF COLPF COLPFCOLBPRIO GRACT %}HITCL CONSOAUDFAUDCAUDFAUDCAUDFAUDCAUDFAUDC AUDCT RANDOIRQESKCTPORT%}PORTPACTPBCT DMACT CHACTDLIST HSCRO VSCRO PMBAS CHBAS WSYN VCOUN PEN PENNMIE%}AFFAS٪IFFPDZFRFZF`FSUfFADFMU(FDI @PLYEV݉FLD0ݍFLD0ݘFLD1ݜFLD1ݧFST0ݫFST0ݶF%}MOVEXEXP1LOLOG1 EDITR SCREN KEYBD 0PRINT @CASET PDISKI SDSKINVCIOYSIO \SETVB _SYSV%}B bXITVB tWARMS wCOLDS0DITR SCREN KEYBD 0PRINT @CASET PDISKI SDSKINVCIOYSIO \SETVB _SYSV$$g0dX;SAVE#D:DMPT1.M65nEIx!X;----------------------------X;X;Disk Master!X;the Disk Editor/DisassemblerX;)}X; (C) 1989 BY ST-LOGX;X;by: Barry KolbeX;and Bryan SchappelX;!X;----------------------------X;P)}ASSPASS PASS>D:SYSEQU.M65"X;,X;Zero Page Usage6X;@JY1;;save x/y holdTY2;;areas^ )}Y3h X1r X2| X3TMP1;;temp variables TMP2 TMP3AIFLAG;;asc/internalT;;pntr)}L;;pntrCTMP;;extra tempSECL;;sec # loSECH;;sec # hiUNITS;;units digitTENS;;tens digit)}IV;;inverse flagHDF;;hex/dex flagICNT;;counter NMD TOTD&HXL;;hex lo0HXH;;hex hi:)}HXORST;;hex/stringDFBYTE;;first byteNMATFLG;;match flagXLNKLO;;link lobLNKHI;;link hilSSECL)};;save sec lovSSECH;;save sec hiDENSITY;;density flagSRCDRV;;source driveDESDRV;;dest'n drive)}ADDR;;disa addressINDR;;pointerOP;;first disa byteDTEMP;;next 2 bytesNBYTE;;# instr bytes)}HXDC;;hex/dec flagADD_ON;;address offsetLOC_S;;address startLOC_E;;address endCNTLO;;counter)}DINS;;disa hold IMODE;;input modeMAXLEN;;max length SRFLG;;srch data flag*INPLOC;;input loc4)}BYTCNT;;segment cnt>GETPTR;;sec offsetHSTLOAD;;start loadRENLOAD;;end load\TYPE;;disa/filefLABE)}LS?;;label flagpS.SIZE;;sector sizezBUFPNT;;output pntrLINES;;#line in bigbufBYTES;;bytes gotten)}SFLAG;;source flagSECCNT;;sector countSECBYTES;;bytes/sectorSM(;;screen memory LINE0SM()};;text windowBIGBUF;;P: bufferPRNBUFX;X;PRINT macroX; PRINT  Q>4  %>5  EPRINT$.)}X;8X;Work BuffersBX;L,VMYBUF;;sec work buf`DSBUF;;data bufferjINPLIN(;;input linetSRBUF-;;sear)}ch buffer~IBUF-;;input bufferSRCFILE;;source fileDSTFILE;;dest'n fileX;X;Program StartX;0;;)}originSTART!INTRO;;go intro!X;X;Intro Display ListX;INDL p=p=p=p=p p=p=p=p=F CREDIT  p=)}B IL0 =p== ( = ==A2 INDL<X;FX;Info Display ListPX;ZINFODL p=p=p=Fd CR2n =@=Bx)} SM( ==== ====A INFODLX;X;Disassembler Display ListX;DISADL p=p=p=F CR2)}  =B INFOLN  ==B SM ==== ==== ==== ====" A, DIS)}ADL6X;@IL0 AAJ AAT A젠A^ AAh Aή̮ϮǮAr A)}砠A| A diA Ask editor A A diA AsassemblerA A exA Ait AX;INFOL)}N AŠA AҠA A±²³AX;X;Disassembler promptsX;P0 ADisa Type [F/D]A=)}P3 ADest'n [E/P/Dn]A=P4 A Labels [Y/N]A=P5 A Source FileA=&P1 ASrc Drive [1-8]A=0P2 A Densi)}ty [1-2]A=:P6 A Sector [1-2D0]A=DP7 A # of SectorsA=NP8 A Offset [0-7F]A=XP9 AOrigin [0-FFFF]A=b)}PA AByt/Sec [7D/80]A=lX;vX;INCLUDE Support FilesX;>D1:DMPT2.M65>D1:DMPT3.M65>D1:DMPT4.M65X;)}X;Intro ScreenX;INTRO-;;chill decimal$>;;clear stackB QPOKMSKM> PPOKMSK PIRQEN Q>4INDL;;turn )}on thePSDLSTL;;intro display Q>5INDL;;list.*PSDLSTL4Q>";;normal PF> PSDMCTLHQ> ;;white textR PCOLOR1\)}Q>;;black borderf PCOLOR4pQ>;;grey backgrndzPLMARGN;;left marg=2 PCOLOR2Q>;;blue gr1 text PCOLOR3I)}_LOOPQCONSOL;;get consolR>;;start? HT_5;;no.!WARMSV;;yes, so long!T_5R>;;select?FGO_DIS;;yes. disa.)}R>;;option?HI_LOOP;;no, loop!DISKED;;Disk Editor.X; X;Disassembler Data Entry X; GO_DISQ>4INFODL;;instal)}l$ PSDLSTL;;the data. Q>5INFODL;;entry DLIST8 PSDLSTLB  CLRSCN;;clear screenL Q>4P0;;point to theV PINDR;;firs)}t prompt` Q>5P0j PINDRt  PROMPT;;Disk/Files~ X; P00 GETONE;;get input DP01;;ok? GO_INT!INTRO;;no way. )}X; P01QIBUF;;get char M>;;make upper/norm $>;;0=files R> F;;was it F? FP02;;yes! R> D;;a D? HP00;;no. )} 2;;up flag P02&TYPE;;save type X;  PROMPT;;dest'n device P30 GETFN;;get name( EGO_INT;;bad input2 %>;;copy)} to pos 20<  CHECKFN;;check filenameF EP30;;oops, bad one.P  G.DRV;;get drive #Z PDESDRV;;save it.d X;n  PROMPT;;w)}ant labels?x P40 GETONE;;get response. EGO_INT;;bad one. QIBUF;;get char M>ߠ $>;;0=labels. R> Y;;a Y? FP)}41;;yes. R> N;;try N? HP40;;no. 2;;1=no labels P41&LABELS?;;save choice X; QTYPE;;files or disk? HF_SECS;;)}want disk.  PROMPT;;filename X; P50 GETFN;;get filename" G.0EGO_INT;;bad one., %>;;posit 06  CHECKFN;;check )}Fname@ EP50;;oops.J  G.DRV;;get driveT PSRCDRV;;save it.^ !DIS_IT;;and disa!h X;r F_SECS UP_INDR;;skip fname|  )}PROMPT;;source drive P10 GETONE;;get response EGO_INT;;bad one. QIBUF;;get the char M> ;;;make 1-8 S> 0 G)}P10;;<0? yes! R> ;;=>9? EP10;;yes. PSRCDRV;;save it X;  PROMPT;;density P20 GETONE;;input. G.1EG.0;;ba)}d input. QIBUF;;get char M>;;mask inverse& ;;;make 0-10 S> 1: GP20;;<0?, yes.D R>;;>1?N EP20;;yes.X PDENSIT)}Y;;save densityb >;;X=Al QSDLO9;;get max sec #v PFR0;;and put it in QSDHI9;;FR0. PFR0  BIN2HEX;;make hex. )}%>;;copy max # D.CPQLBUFF8;;into the next PP6 8;;prompt. 3 )> HD.CP X;  PROMPT;;sector P60 SPC_N)}UM;;get number EG.1  TESTFR0;;in range? EP60;;no. QFR0;;yes, so we PSECL;;save the sector* QFR0;;number f)}or4 PSECH;;later.> X;H  PROMPT;;#secsR P70 SPC_NUM;;get number\ G.2EG.1;;bad one.f QFR0;;is number 0?p LFR0)}z FP70;;yes, that's bad QFR0;;save the number PSECCNT;;of sectors for ,;;later & add on OSECL;;start sector P)}FR0;;so we can test QFR0;;to see if too PSECCNT;;many sec's OSECH;;will be read. PFR0  TESTFR0;;in ra)}nge? EP70;;no way. X;  PROMPT;;offsetP80 SPC_NUM;;get numberEG.2QFR0;;test hi byte$HP80;;>? yes!.)}QFR0;;get lo byte8R>;;=> $80?BEP80;;yes.LPGETPTR;;save for laterVX;` PROMPT;;originjP90 SPC_NUM;;get num)}bertEG.2~QFR0;;copy the numPADDR;;into the addrQFR0;;for the disa-PADDR;;ssembler.X; PROMPT;;s)}ector size.PA0 SPC_NUM;;get numberEG.2QFR0;;no hi byteHPA0;;allowed!QFR0;;test lo byteR>};;125 by)}tes?FG.SZ;;yes!R>;;128 bytes?  HPA0;;no.G.SZPS.SIZE;;save sizeX;(X;Disassembly Entry Point2X;<DIS_I)}T CLRSCN;;zap screenF'SFLAG;;clear flagPQ>4DISADL;;install theZPSDLSTL;;disa DLISTd Q>5DISADLnPSDLSTLx O)}PENIN;;open input OPENOUT;;open outputX;D_LOOP DISAMEM;;do instr. PRINT.IT;;print itQ>;;clear counter )}PBYTES$>;;get a $FFC_LOOPQCH;;key press?R>FD_LOOP;;no.&CH;;clear CHR>;;escape?HT.SPC;;no.)}END.IT&CH;;clear CH and!D_OVER;;exit.X;"T.SPCR>!;;Space=pause, HD_LOOP6X;@K.WAITQCH;;get keypressJR>)};;escape?TFEND.IT;;yes, exit^R>!;;wait for SPChHK.WAIT;;to stop ther&CH;;pause.|!D_LOOP;;loop again.X;X;)}Get drive numberX;G.DRVQIBUF;;get char;;;set carryS> 0;;subtract '0:;;and leaveX;X;E: Print routine)}X;!EPRINTPE.LP;;save lo byte'E.LP;;save hi byteE.LPQ;;get charFE.DN;;if 0, all done E.PUT;;pu)}t the char#E.LP;;bump pointer& HE.LP0 #E.LP:HE.LP;;and loopDE.DN:;;so long.NX;XX;E: Put byte routineb)}X;lE.PUTR>EOL;;is it a CR?vHE.EOL;;no.PUTCRQLMARGN;;set xpos toPCOLCRS;;the margin#ROWCRS;;bump ypos)}!SCROLL;;check scrollX;E.EOL ASC2IC;;make icode 5;;save it%ROWCRS;;get yposQGL8;;look up thePL;;addres)}s of thisQGH8;;line and storePL;;in temp area7;;get char back%COLCRS;;get xpos P@L7;;on screen!X;  3)};;up xpos*)>';;at rmargn?4DE.LV;;no.>FE.LV;;just there.H#ROWCRS;;next lineR SCROLL;;scroll screen\%LMARGN;;)}get marginfE.LV'COLCRS;;set xposp:;;and leavezX; X;Check to see if screen mustX;be scrolled.X;SCROLL%ROW)}CRS;;get ypos)>;;at line 21?DS.NO;;no.Q>4SM;;get the addrsPT;;of line 0 & 1 Q>5SM PTQ>4SM( )}PLQ>5SM(  PL$>;;line counterS.M1%>';;now move 1 line$S.M2Q@L7;;up 40 bytes.P@T781B IS.M2)}LQL;;now update theVPT;;pointers.`QLjPTt,~O>(PL QLO> PL2;;up line count(>)};;at end?HS.M1;;no way."ROWCRS;;dec yposS.NO:;;and leaveX;X;Print a PromptX;PROMPT PUTCR;;print CR )}Q>@;;force uppercase PSHFLOKQ>;;and no inverse( PINVFLG2QINDR;;get addr of<%INDR;;the promptF EPRINT)};;print itPQ> :;;put a ':'Z E.PUTdQ> ;;and a spacen E.PUTx G_SCR;;clear line UP_INDRQINDR;;add 16 to get)},;;to the nextO>;;prompt. PINDR DUP_HI #INDRUP_HI:;;so long.G_SCRQCOLCRS;;get xpos%ROWCRS;;and )}ypos,;;add line addrOGL8 PINPLOCQGH8O>PINPLOC%>;;zap 21 chars"Q>;;a space,G_CLRP@INPLO)}C7;;on screen61;;down counter@IG_CLR;;and loopJ:;;so long.TX;^X;Get 1 byte via INPUThX;rGETONE G_SCR;;clear )}line|%>;;force text mode 'IMODE 3;;1 char!INPUT;;get inputX;X;Get a FilenameX;GETFN G_SCR;;zap lin)}e%>;;force text mode 'IMODE%>;;get 15 chars !INPUTX;X;Special get numberX;SPC_NUM G_SCR;;zap li)}ne!G_NUM;;get a number&X;0X;Test FR0 for sector range:X;DTESTFR0QFR0;;is FR0 a 0?N LFR0XFT.ERR;;yes!b)}$DENSITY;;get densitylQFR0;;check to seevRSDHI9;;if the sectorDT.GD;;number in FR0FT.LO;;is allowed. ET.)}ERR T.LOQFR0 RSDLO9 DT.GD FT.GDT.ERR;;;signal error:T.GD,;;signal good:X;X;Check Filename fo)}r Dx:X; CHECKFNQIBUF;;get 1st charR>EOL;;is it EOL? FCH.B;;yes.*R> D;;is it 'D'?4FFN.D;;yes.>R> P;;is it)} 'P'?HFCH.C;;yes.RR> E;;is it 'E'?\HCH.B;;no.fCH.CQ> :;;make 2nd charpPIBUF;a ':' and thezQ>EOL;;3rd char)} an EOL PIBUFCH.R$>;;zero indexCH.LQIBUF9;;get input charPSRCFILE8;;save in buf3;;up buf index2;;u)}p input indx(>;;done 20 yet?HCH.L;;no.,;;signal good.:;;and leave.X;FN.DQIBUF;;get 3rd charR> :;)};3rd char a ':'?HCH.B;;no, bad nameQIBUF;;get drive #R> 1;;less than 1?$DCH.B;;yes..R> 9;;greater than 8?8)} DCH.RBCH.B;;;signal badL:VX;`"X;Dump Editor Screen to PrinterjX;tDMPSCN PRNLFD~ GPRERRQ>4BORDER;;print)} top%>5BORDER;;border DMPSUB GPRERRQ>;;count linesPT;;of sectr infoDMLP$T;;get indexQGL9;;Lo/Hi )}bytes%GH9;;line address DMPSUB;;print it GPRERR#T;;next lineQT R>;;done 16?HDMLP;;nopeQ>4STATU)}S;;print(%>5STATUS;;status line2 DMPSUB<IDMOK;;Y has errorFPRERR!IOERR;;dble returnP DMOK:ZX;dX;Printer Li)}nefeednX;xPRNLFDQ>  PPRNBUF Q>EOLPPRNBUFHSAPX;X;Print a Line using SIOX;DMPSUBPL;;save a)}ddress'L;;for indirect%>DML$>;;use as an&TMP1;;inverse flagQ@L7;;get byteIDMJ;;inversed?#TM)}P1;;yes-set flagDMJM>;;mask it off"R>{;;skip control,EPERD;;characters6R>`@EPRKJR>@T EPERD^,;;change)} tohO> ;;ATASCIIrPRK$TMP1;;was it inverse?| FPORK;;noL>;;add back in HPORKPERDQ> .;;'.' for contrlsP)}ORKPPRNBUF8;;into buffer3)>';;done w/line? HDML;;noQ>EOL;;add EOLPPRNBUF'X;SAP$> ;;copy cmds)}SIPQPSIOCB9;;to DDEVICP90ISIP SIOV;;let SIO print&:0X;:PSIOCB @;;printerD ;;unit 1N W;;write)}X ;;send bit 7=outb PRNBUF;;bufferl 0;;time outv (;;buf length N;;normal prnt ;;unusedX;X;Get Lab)}el DataX;>D:DMPT5.M65X;X;Find where program endsX;I ENDPROG EIX;X;Add Run address X; )}RUNAD  START*DMPT5.M65X;X;Find where program endsX;I ENDPROG EIX;X;Add Run address X; (eKdX;SAVE#D:DMPT2.M65nEIxX;X;--------------------;X; Disk Master part 2 ;X; by: Barry Kolbe ;X; (-}c) 1989 ;X;--------------------;X;X;Graphics 0 Display ListX;GR0DL p=p==F CR1 =B BOR-}DER B SM ==== ====" =====, 6OLDD CONT;;flip bottom@CONT B;;of scr-}eenJ STATUS;;for HELPT =;;screen at^ 0=Bh INPLINr =B| LINE0  =B PRLINE A GR0DLX;-}X;The Help Screen DisplayX;Code used by HELPMEX; HELPDL B HELPS ======A GR0DLX;X;Lo-}w and High bytes ofX;Screen LinesX;&GL 4SM=4SM( 0 4SMP =4SMx : 4SM =4SM D 4SM =4-}SM N 4SM@ =4SMh X 4SM =4SM b 4SM =4SM l 4SM0 =4SMX v 4SM =4-}SM  4SM =4SM  4SM  =4SMH  4SMp =4SM X;GH 5SM=5SM(  5SMP =5-}SMx  5SM =5SM  5SM =5SM  5SM@ =5SMh  5SM =5SM  5SM =5SM-}  5SM0 =5SMX  5SM =5SM  5SM =5SM  5SM  =5SMH  5SMp =5SM-} X;*CREDIT Adisk master A4 AHcIA==AQYXYA>CR1 A disk AH Aeditor ARCR2 A disk disA\ Aassem-}bler Af A data Ap Aentry AzX;STATUS AúA A̺˺A AԺAX;DRL-}IN AúA AԺкȠA AӺAX;X;Help ScreenX;HELPS AA A-}A AA A-read -up A A-dn -edit A A-write A$ A-undo -#base A. A-chars.} -bfill A8 A-eor AB A-trace -file# AL A-link# -dens AV A-menu A` A-serch -HD Aj A-DH -.}input At A-sorce A~ A-destn -rfrsh A EOL=A-abort -hue  A A-lum  AX;PRLINE A̭A.} AРA AAX;X;The Beginning of theX;Disk EditorX; DISKED CLRSCN;;clear screen E.}RAINP;;clear inputQ>4GR0DL;;set up DL  PSDLSTL Q>5GR0DLPSDLSTL(Q>4INPLIN 2 PINPLOC<Q>5INPLIN .}FPINPLOCP$>;;initializeZ &SRFLGd &SECHn&AIFLAG;;ASC/INT flagx&HDF;;hex/dec flag&HXORST;;input flag.}&DENSITY;;0=sngl 1 =dbl2 &SECL &SRCDRV &DESDRV &IMODE DOLEFT;;show borderQ>;;show empty BFC .}MASIN JG C_OFF GETCOM;;get comand ERAINP;;zap input !JG;;moreX;"X;Get a Command,X;6GETCOMQCH;;force.} uppercase@R>JFGETCOM;;get keyT$>^&CHh 5;;save itrQ>4CONT;;reset DLIST| POLDD Q>5CONT POLDD 7;.};get key$>;;check itCC1RCOMKEY9FCC2;;valid0ICC1GGETCOM;;oversCC2A;;x 2 for offsetT?>T?. }?)>(DN40&%>(0N40 SHO_COM:QCOMTAB9;;get addressDPJOFF;;of routineNQCOMTAB9X PJOFFb ERA. }TXT;;windowlJOFF ;;carry outvX; C_OFF%>(X;X;Show the CommandX; SHO_COMA5$>SHCQCTXT8 P. }INPLIN932(>HSHCQ> PINPLIN7 >*:4X;>X;Command KeysHX;RCOMKEY *=9="==\ 8=>=. }=(=.f =#=f= =p :=6=v==z  =-==7=% =X;X;Get a KeyX;GETKEYQ%;;the easy way. }5;;to get keysQ$;;from the OS!5:X;X;Get Input until ESCape orX;RETURN is pressedX; INPUT'MAXLEN;;.}save length %>;;counter INLOOP'Y2;;save it$ Q>;;cursor is a. P@INPLOC7;;block.8  GETKEY;;get a keyB %Y2;;res.}tore YL R>EOL;;is it EOL?V FINDONE;;yes!` R>;;is it ESC?j HNOESC;;NO!t ;;;signal abort~ :;;so long. NOESCR>~;;.}delete? HNODEL;;nope. )>;;on 1st char? FINLOOP;;yes! Q>;;remove cursor P@INPLOC7 1;;decrease cntr IINLO.}OP;;and loop X; NODEL$IMODE;;get mode? FIS_OK;;string mode. M>;;mask inverse R> 9;;>9? DITS;;no. M>;.};make uppercase. ITS CHEX;;is legal?( (>;;test X.2 IIS_OK;;legal!< GINLOOP;;no good.F X;P IS_OK)MAXLEN;;at max.} len?Z FINLOOP;;yes.d PIBUF8;;no save charn  ASC2IC;;and put itx P@INPLOC7;;on screen 3;;up cntr HINLOOP;;and lo.}op. X; INDONEPIBUF8;;save EOL Q>;;erase cursor P@INPLOC7 ,;;show good. :;;boogie. X; X;Erase Input Line.} X; ERAINPQ> $>" ER1PINPLIN9 0 IER1" :, X;6 X;Get a String@ X;J G_STRQ>T PIMODE^ %>!h !INP.}UTr X;| X;Get a Hexstring X; G_HEXQ>;;hex mode. PIMODE %> ;;32 chars max  INPUT;;get input. DMEV;;ok? .}:;;no. MEV$>;;get length of G4EQIBUF9;;the input. R>EOL FG4L 2 HG4E X; G4LA;;is the input M>;;ev.}en?& FG4R;;yes!0 X;: $>+;;no. add aD MDNQIBUF9;;leading zeroN PIBUF9;;to the inputX 0;;buffer.b IMDNl Q> 0v .} PIBUF G4R$>;;input pntr %>;;output pntr GH2QIBUF9;;get char R>EOL;;all done? FGHID;;yes! PHXH;;save i.}t 2;;get next char QIBUF9 PHXL;;save it &X3;;save x 'Y3;;save y  HEX2BIN;;make binary %Y3;;get Y $X3;;.}get X PIBUF8;;save binary 3;;up Y 2;;up X* HGH2;;and loop4 GHID,;;signal good> :;;later.H X;R X;Get a Number\ .}X;f G_NUMQ>;;hex mode.p PIMODEz %>;;4 chars  INPUT;;grab it. DGNK;;good? :;;no. GNK ZFR;;zap FR0 ?;;Y=.}0 G4LOOPQIBUF8;;get a char R>EOL;;done? HTESTIT;;nope. G4G,;;signal good :;;spater. X; TESTIT CHEX;;get .}value TFR0;;*2 UFR0 TFR0;;*4 UFR0$ TFR0;;*8. UFR08 TFR0;;*16B UFR0LA;;get valueVLFR0;;ad.}d to FR0`PFR0;;save itj3;;up counttHG4LOOP;;and loop~X;X;Clear out Screen MemoryX;CLRSCNQ>%> CL. }RSPSM8 PSM8 PSM8 PSM83 HCLRS QLMARGN PCOLCRSC  PROWCRS:X;(X;Show the Screen Bo.!}rders2X;<DOLEFTQGL;;first lineFPT;;of memoryPQGHZ PTd$>nLFB%>;;left columnx QLEFTB9P@T7'Y."}1%>;;repeat inP@T7;;middle%Y1 2;;over 13QLEFTB9;;column 2P@T7'Y1%>;;and in middleP@T7.#}%Y1 ADD40;;down 1 line2(> ;;16 lines?"HLFB,:6X;@X;Add 40 onto pointer toJX;move down one lineTX;^.$} ADD40QTh,rO>(|PTDA40 #TA40:X;X;Display the Sector DataX;SHWSECQGL;;start at topPT.%}QGH PTQ>;;y pos =2PY2QHDF;;hex or dec? FH9;;HEX !SDEC H9%>& H1 ZFR0'Y1:QMYBUF8;;get.&} a byteDPFR0N BIN2HEX;;to hexX#Y1b%Y2;;screen pos Yl3vQLBUFF;;hi byte of hex ASC2ICP@T7;;show it.'}QLBUFF;;now low byte ASC2IC3P@T73'Y2)>;;end of line? FH4;;yesH5%Y1;;end of buffer?)>.(} HH1;;no: H4 ADD40;;down 1 lineQ>;;reset LMargin PY2*!H54X;> X;Show Sector in Decimal ModeH X;If 't.)}ens' digit is inversedR"X;the number is over 200,if the\"X;'units' digit is inversed thef"X;number is between 100 and 200p.*}X;z SDEC%> #Y2;;3SD1Q>;;set inverse PIV;;flagQMYBUF8;;get byte3'Y1;;save buf posR>;;over 20.+}0?DDD1 ;;;- 200S>#IV;;set flag #IV;;to 1HDD3DD1R>d;;over 100?DDD3;$S>d.#IV;;set flag .,}to 08DD3$> 0;;default '00'B &TENSL &UNITSVDD5R> ;;over 10?` EDD4;;yesj,tOUNITS;;add units digit~ PUNITS.-}%IV;;see if any areGDD2;;inversedQUNITS8;;do inverseL> PUNITS8DD2%Y2;;get screen posQTENS;;convert..} to ASC2IC;;screen codeP@T73QUNITS;;same for ASC2IC;;units digitP@T7 3;;move right3'Y2()>./};;done w/line?2FDD6<DD7%Y1;;done withF)>;;sector?PHSD1Z:dDD6 ADD40;;next linenQ>xPY2;;reset LMargi.0}nHDD7DD4;;;get tens digitS>  #TENSHDD5:X;X;Show Data as ATASCII orX;Internal CodeX;ASCI.1}NT MASIN;;show typeQGL;;top linePTQGH PT$>;;data pos"AIM%>;;screen Y,AILQMYBUF9;;get byte6.2}&X2@$AIFLAG;;ATASCII orJHAIN;;InternalT ASC2IC;;convert^ AIN$X2hP@T7;;show itr2|3)>&;;end of line?.3}HAIL ADD40;;next line(>;;end of buffer?HAIM:X;!X;Show it as ATASCII on screenX;ASC2IC BITER L.4}A2I9$X1:X;$X;Show as Internal Code on screenX;&IC2ASC BITER0 LI2A9:$X1D:NX;XX;Do bit workbX;.5}l BITER&X1v5U?U?U?U?M>>7M>:X;X;Do heading of 'ATASCII' orX;'INTERNAL' codeX;.6} MASIN$> QAIFLAG;;get flagHIN;;no, internal $>*IN%>;;copy header4MA1QINMS9;;on screen>PBORDER8H.7}0R1\IMA1f:pX;zX;Display the Sector DataX;SECINFQSECL;;sector #PFR0 QSECH PFR0$>;;at po.8}sition 5 PH1;;put it on.QMYBUF;;# of bytesPFR0$>#;;posit. 35 PH2;;put it on.QMYBUF};;file #V?.9};;is in theV?;;6 hi bitsPFR0$>;;posit. 15$ PH2;;display..QMYBUF~;;sector link8 PFR0;;lowBQMYBUF};;.:}sector linkL M>;;highV PFR0`$>;;posit 25jQSRCDRV;;get sourcetL>;;make inverse~PDRLIN;;on screenQ.;}DESDRV;;dest driveL>PDRLIN;;on screenQDENSITY;;disk density,O>PDRLIN#;;on screen%HXORST;;in.<}put modeQINPMS8;;get letterPDRLIN;;on screenX;X;Put Hex # on Status LineX;enter with X = position X;.=}PH1%>;;start at dig#2 HP_IN(PH2%>;;digit #32P_IN'TMP1;;save Y<&TMP2;;save XF BIN2HEX;;make hexP%TMP1;.>};restore X&YZ $TMP2dP_LPQLBUFF8;;get charn ASC2IC;;make ICODExL>;;inverse itPSTATUS9;;on screen23)>.?};;at end?HP_LP;;no.!ZFR;;zap FR0X;X;Copy DSBUF to MYBUFX;TOMYBUF%>TOMQDSBUF8 PMYBUF81I.@}TOM:X;"X;Tables for ATASCII and,X;Internal code conversions6X;@I2A  =@==`JA2I @== =`TX;^X;Th.A}e Command TablehX;rCOMTAB EDITS;;block edit| HX2DEC;;hex>dec DECH;;dec>hex BFILL;;block fill EORS;;eor s.B}ector CHNFIL;;file # SEARCHS;;search SLINKS;;link # READS;;read sec WRITES;;write sec AIFLIP;;flip ch.C}ars HDFLIP;;flip #'s HELPME;;help scrn UNDO;;undo CHNSRC;;src drive CHNDES;;dest drive KOLOR;;next hu.D}e REFRESH;;clear scrn& DOWN1;;sec=sec-10 UP1;;sec=sec+1: HEXSTR;;input flipD TRACES;;trace linkN CHNDENS;;.E}new densityX LUMIN;;luminanceb INTRO;;menu screenl REFRESH;;clear scrnv DMPSCN;;prnt scrnX; X;RoutinesX;.F}"X;Show Sector as ATASCII (0) orX;Internal Code (1)X;AIFLIPQAIFLAGN> PAIFLAG !ASCINTX;X;Show Sec.G}tor as Hex (0) orX;Decimal (1) dataX; HDFLIPQHDFN> PHDF* !SHWSEC4X;>X;Edit the sector:Set INP toHX;.H}H(hex) or S(string) inputRX;\ EDITS G_NUM;;get start bytefDEE1pEDN:zEE1QFR0;;is the #<$80?HEDNQFR0.I}R>EEDN;;no way.PFBYTE;;save it ERAINP;;clear INPLINQ>;;a 'D'PINPLIN G_HS;;get dataEEDN.J}'Y1;;save length1MICQIBUF8;;make the data$AIFLAG;;ASC/ICODEFMIO ASC2IC$MIOPIBUF8.18IMICBEE2%.K}FBYTE;;Y= posL$>VCPMQIBUF9;;get byte`EE3PMYBUF8;;store itj2t3~)>;;end of sec?FERT;;yes.(Y1;;end .L}of data? HCPM;;no.ERT!SHOWALL;;show changesX;X;Decimal to Hex converterX;DECHQ>;;hex mode PIMODE.M}%>;;5 chars max INPUT DG_IB: G_IBQ>4IBUF;;point FPPINBUFF;;to buffer Q>5IBUF(PINBUFF2Q><P.N}CIXF AFP;;ASCII to FPP FPI;;FP to IntegerZDU5;;CLC->good.d ZFR;;'0000' on errornU5QFR0x5;;save the #Q.O}FR05$>&HXDC;;force decimal 0;;posit 0 COPYNUM2;;insert =Q> = PIBUF927;;get # backPFR0.P}7 PFR0 COP_ALL;;copy hex !SHO_IT"X;,X;Hex to Decimal Converter6X;@HX2DEC G_NUM;;get numberJ EANRTST.Q}X;^$>;;force decimalh &HXDCr0;;insert hex| COP_ALLQ> =;;insert "=" PIBUF$>;;posit #6 COPYNUM;;.R}copy numberSHO_ITQIBUF9;;put the str ASC2IC;;on thePLINE09;;screen.0 ISHO_IT ANRTS:X;"X;Copy all 4.S} Hex digits to IBUFX; COP_ALL&TMP1 BIN2HEX $TMP1& Q> $0 PIBUF9: 2D !ALLN X;X X;Block Fillb X;l BFILL.T} G_NUMv DBFB : BFBQFR0 BFC%>;;fill mybuf BFFPMYBUF8;;with value 1 IBFF BFD!SHOWALL;;Show it X; .U} X;Convert Hex to Binary value X;returns with A = value X; HEX2BINQHXL;;check if CHEX!&HXL !QHXH;;same for h.V}i! CHEX ! A;;x16*!T?4!T?>!T?H!T?R!LHXL;;add low\!:;;=Af!X;p!X;See if digit is in the Hexz! X;table!X;!CHEX$>.W};;16 digits!HH4RHXTAB9!FHH3!0!IHH4!HH3:!X;!X;Sets flag for Hex or!X;String (Character) Input!X;!H.X}EXSTRQHXORST!N>" PHXORST" !SECINF"X;$"X;EOR the data with a byte."X;8"EORS G_NUMB" DE_GOL":V"E_GO%>;;eo.Y}r whole`"ERPQMYBUF8;;sectorj"NFR0t" PMYBUF8~"1"IERP"!SHOWALL;;show it"X;"!X;Show Sector Data, Characters"X;.Z}and Sector information"X;"SHOWALL SHWSEC;;data" ASCINT;;characters"!SECINF;;inofrmation"X;"X;Install the HELP.[} screen"X;#HELPMEQ>4HELPDL;;change #POLDD;;display list#Q>5HELPDL;;part way#POLDD;;down(#72#7<# !GETCOMF#.\}X;P#X;Restore the Sector's DataZ#X;d#UNDO TOMYBUFn# !SHOWALLx#X;#X;Erase text in Window#X;#ERATXT%>'#Q>#.]}ET1PLINE08#1#IET1#:#X;#X;Change Source Drive#X;#CHNSRC$SRCDRV# DRV_UP$ &SRCDRV$ !SECINF$X;"$X;C.^}hange Destination Drive,$X;6$CHNDES$DESDRV@$ DRV_UPJ$ &DESDRVT$ !SECINF^$X;h$X;Increment Drive Numberr$X;|$ DRV_U._}P2$(> $HSHX$$>$SHX:$X;$X;Change the File Number$X;$CHNFIL G_NUM$DFF1$FF3:$FF1QFR0$HFF3.`}$QFR0%R>@;;0-63 allowed%DFF4%%>&% !IOERR0%FF4T?;;high 6 bits:%T?;;used for fileD%PFR0;;numberN%QMYBUF}.a};;get byteX%M>;;mask out lowb%LFR0;;add in File #l% PMYBUF}v%!SHOWALL;;show it%X;%X;Get Hex or String%X;%G.b}_HSQHXORST% HG_ST% !G_HEX%X;%G_ST!G_STR%X;%X;Search for Hex or String.%X;String can be either%X;ATASCII or.c} Internal Code%X;&SEARCHS G_HS;;get data &DAO2&AOR: &X;*&AO2)>;;just EOL?4&FIS_OLD?;;yup, check buf>&'SRF.d}LG;;save lengthH&%>,;;copy bufr overR&AOCPQIBUF8;;to the save\&PSRBUF8;;buffer forf&1;;next timep& IAOCPz& GAORI&.e}IS_OLD?QSRFLG;;old data?&FAOR;;no way!&X;&AORI%>;;convert to&ALIQSRBUF8;;internal& $AIFLAG& FA_ST& ASC.f}2IC&A_STPIBUF8&3& )SRFLG&HALI&X;'SSTRQ>;;compute the';;;last posit we'SSRFLG;;can look at.$'PMAXLEN;.g};save it..'%>;;sec pntr8'SEL$>;;bufr pntrB''Y1;;save itL'TRYFQIBUF9;;get bufferV'RMYBUF8;;in sector?`'HGS_UP;.h};no increment.j'3;;get next chart'2~'(SRFLG;;at end?'HTRYF;;no yet...'QY1;;first byte'PFBYTE;;save' SHO_POS;;.i}sho match!'X;'GS_UP%Y1;;get posit'3;;increment')MAXLEN;;at end?'HSEL;;no loop.' :;;so long'X;'X;find place.j} on screen to(X;mark the match (X;(SHO_POSQFBYTE;;byte #(V?;;div by 8((V?;;to get row2(V?<(?F(QGL8;;get memoryP.k}(PT;;positionZ(QGH8d( PTn(Cx(T?(T?( T?;;x8( PTMP3(QFBYTE;;get remainder(;(STMP3;;go right by(PTMP3;.l};threes!( T?;;x2(,( OTMP3;;x3(,(O>;;for margin(?)Q>;;wedge)P@T7;;show it):")X;,)X;Refresh the screen .m}to6)X;erase the arrows@)X;J)REFRESH CLRSCNT) DOLEFT^) !SHOWALLh)X;r)X;Change Screen Color|)X;)KOLORQCOLOR2),.n})O>) PCOLOR2):)X;)X;Change Luminance)X;)LUMINQCOLOR2)>)M>) PCTMP)A*,*O>*M>&* LCTMP0* P.o}COLOR2:*:D*X;N*X;Change Sector LinkX*X;b*SLINKS G_NUMl* DSL_Gv*:*SL_GQFR0;;chk for 0* LFR0* FLN_ER* QF.p}R0*$DENSITY;;make sure the*RSDHI9;;new link is*DG_LNK;;allowed in*FG_TLO;;this density.* ELN_ER*G_TLOQFR.q}0* RSDLO9* DG_LNK* FG_LNK+ ELN_ER +G_LNKQFR0;;store it+ PMYBUF~ + QFR0*+M>4+PFR0>+QMYBUF};;mask o.r}ffH+M>;;file #R+LFR0;;add in link\+ PMYBUF}f+!SHOWALL;;show itp+X;z+ LN_ER%>+ !IOERR+X;+X;Read a Secto.s}r+X;+READS G_NUM;;get sector+ DG_RD+:+G_RDQFR0;;just EOL?+ LFR0+FDORED;;yes, reread+QFR0;;copy the n.t}ew+PSECL;;# to area+ QFR0, PSECH,X;,DORED READIT;;do the read$,IG.Q., IOERR8,G.Q TOMYBUF;;move to mybu.u}fB,!SHOWALL;;show itL,X;V,X;Set up Reading`,X;j,READITQSRCDRV;;source drvt, PDUNIT~,Q>5DSBUF;;read into,PDBUFHI.v};;dsbuf, Q>4DSBUF, PDBUFLO,Q>R, HREDWRT,X;,X;Set up Write,X;,WRITITQDESDRV;;dest. drv, PDUNIT,Q>5MYBU.w}F;;write out,PDBUFHI;;mybuf- Q>4MYBUF - PDBUFLO-Q>W-X;(-X;general read,write2-X;<-REDWRTPDCOMND;;save cmdF-Q.x}SECL;;sector 0?P- LSECHZ- HC_D;;no.d-#SECL;;now sector 1.n-C_D$DENSITY;;test to bex-QSECH;;sure that the-RSDHI9;.y};sector is on-DS_OK;;the disk.- FT_LO- ET_NO-T_LOQSECL;;test lo.- RSDLO9- DS_OK-T_NOQSDLO9;;move max #-P.z}SECL;;into sec #- QSDHI9- PSECH-S_OKQSECL;;save the-PDAUX1;;sector in SIO.QSECH;;work area. PDAUX2.Q>;;1.{}28 bytes". PDBYTLO,.Q>6. PDBYTHI@.!DSKINV;;do SIOJ.X;T.X;Format an I/O Error #^.X;h.F_ERR ZFR;;zap FR0r.'FR0;;.|}save err #|.$>;;force decimal. &HXDC.$>;;copy error msg.DS.1QERMS9;;to buffer. PIBUF9.0. IDS.1.$>;;cop.}}y number in. COPYNUM.Q>. PIBUF9.:.X;.X;Disk editor Error Routine/X;/IOERR F_ERR/!SHO_IT;;show erro.~}r.&/X;0/X;Read Down One Sector:/X;D/DOWN1QSECHN/ HDA2;;okX/ QSECLb/R>;;if LT 2 nol/EDA2;;decreasev/:/DA2"SE.}CL;;go down 1/ QSECL/R>/HDA1/ "SECH/DA1!DORED;;read it/X;/X;Read Up One Sector/X;/ UP1#SECL/HUPA/.} #SECH/UPA!DORED0X; 0X;Trace a file0X; 0TRACESQSECL;;save cur*0PSSECL;;number just40QSECH;;in case>0 PSSECH.}H0QMYBUF};;get linkR0 M>;;hi\0 PSECHf0QMYBUF~;;and lowp0 PSECLz0 LSECH0HD_R;;if 0 end of0%>0 !IOERR0.}D_R!DORED;;trace0X;0EOFTQSSECL;;reset current0PSECL;;sector number0 QSSECH0 PSECH0:0X;0X;Write a Sector0.}X;1WRITES G_NUM;;sector to1DWR1;;write.1:$1WR1QSECL;;save old #.1PSSECL;;for later.81 QSECHB1 PSSECHL1QFR0.};;sector 0?V1 LFR0`1FWR2;;yes.j1QFR0;;copy new sec#t1PSECL;;into pntr~1 QFR01 PSECH1WR2QSECL;;use old sec.}tor1PFR0;;number.1 QSECH1 PFR01 BIN2HEX;;make hex1%>;;copy to the1WR3QLBUFF8;;message.1PSUREMS 81.}11IWR31QDESDRV;;put in the2L>0;;destn drive 2PSUREMS2%>2WR4QSUREMS8(2FGYN22 ASC2IC<2 P@INPLOC7F23.}P2HWR4Z2GYN GETKEYd2R>n2FWRUx2M>2R> Y2FWR52R> N2HGYN2FWRU2X;2WR5 WRITIT2IWRU2 IOERR2.}WRU!EOFT;;restore2X;2X;Change Density2X;3CHNDENSQDENSITY3N>3 PDENSITY"3 !SECINF,3X;63BORDER A.}A@3 AAJ3 Aɠ AT3X;^3INMS AAh3ATMS AɠAr3INPMS AA|3SDLO =3S.}DHI =3ERMS AError # A3X;3X;Left Border3X;3LEFTB AA3 AA3X;3X;Various .}Messages & Prompts3X;3SUREMS AWrite SEC: 0000A3 A to D : Y/N?A=3HXTAB A0123456789ABCDEFA4CTXT AĠ.}A4 AA4 AA&4 AA A to D : Y/N?A=3HXTAB A0123456789ABCDEFA4CTXT AĠ,7