þþeKdX;SAVE#D:DMPT2.M65nEIxX;‚X;--------------------;ŒX; Disk Master part 2 ;–X; by: Barry Kolbe ; X; (c) 1989 ;ªX;--------------------;´X;¾X;Graphics 0 Display ListÈX;Ò…GR0DL p=p==FÜ ƒCR1æ =Bð †BORDERú B ‚SM ==== ====" =====, 6„OLDD „CONT;;flip bottom@„CONT B;;of screenJ †STATUS;;for HELPT =;;screen at^ 0=Bh †INPLINr =B| …LINE0†  =B †PRLINEš A¤ …GR0DL®X;¸X;The Help Screen DisplayÂX;Code used by HELPMEÌX;Ö †HELPDL Bà …HELPSê ======Aô …GR0DLþX;X;Low and High bytes ofX;Screen LinesX;&‚GL 4‚SM=4‚SM( 0 4‚SMP =4‚SMx : 4‚SM  =4‚SMÈ D 4‚SMð =4‚SM N 4‚SM@ =4‚SMh X 4‚SM =4‚SM¸ b 4‚SMà =4‚SM l 4‚SM0 =4‚SMX v 4‚SM€ =4‚SM¨ € 4‚SMÐ =4‚SMø Š 4‚SM  =4‚SMH ” 4‚SMp =4‚SM˜ žX;¨‚GH 5‚SM=5‚SM( ² 5‚SMP =5‚SMx ¼ 5‚SM  =5‚SMÈ Æ 5‚SMð =5‚SM Ð 5‚SM@ =5‚SMh Ú 5‚SM =5‚SM¸ ä 5‚SMà =5‚SM î 5‚SM0 =5‚SMX ø 5‚SM€ =5‚SM¨  5‚SMÐ =5‚SMø  5‚SM  =5‚SMH  5‚SMp =5‚SM˜ X;*†CREDIT AŒdisk master A4 AƒHcIA==A„QYXYA>ƒCR1 AŠ disk AH AŠeditor ARƒCR2 AŠ disk disA\ AŠassembler Af AŠ data Ap AŠentry AzX;„†STATUS A ÓÅú      ÆÉAŽ A’̺      ÌÎ˺      A˜ A‰ÂÙÔº     A¢X;¬…DRLIN A ÓÒú±     ÄÓA¶ A’Ôº±     ÉÎкȠ    AÀ A‰ÄÎÓº±    AÊX;ÔX;Help ScreenÞX;è…HELPS AÄéóë Íáóôåò ÈåìðAò A’ Óãòååî ­ Óåìåãô ÃAü A†ïííáîäA 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  AœX;¦†PRLINE A  Ðòåóó ÃÏÎÔÒÏÌ­A° AРôï ðòéîô ôèéó Aº A‰óãòååî   AÄX;ÎX;The Beginning of theØX;Disk EditorâX;ì †DISKED †CLRSCN;;clear screenö †ERAINP;;clear inputQ>4…GR0DL;;set up DL  P†SDLSTL Q>5…GR0DLP†SDLSTL(Q>4†INPLIN 2 P†INPLOC<Q>5†INPLIN FP†INPLOCP$>;;initializeZ &…SRFLGd &„SECHn&†AIFLAG;;ASC/INT flagx&ƒHDF;;hex/dec flag‚&†HXORST;;input flagŒ&‡DENSITY;;0=sngl 1 =dbl–2  &„SECLª &†SRCDRV´ &†DESDRV¾ &…IMODEÈ †DOLEFT;;show borderÒQ>;;show emptyÜ ƒBFCæ …MASINð ‚JG …C_OFFú †GETCOM;;get comand †ERAINP;;zap input !‚JG;;moreX;"X;Get a Command,X;6†GETCOMQ‚CH;;force uppercase@R>ÿJF†GETCOM;;get keyT$>ÿ^&‚CHh 5;;save itrQ>4„CONT;;reset DLIST| P„OLDD† Q>5„CONT P„OLDDš 7;;get key¤$>;;check it®ƒCC1R†COMKEY9¸FƒCC2;;validÂ0ÌIƒCC1ÖG†GETCOM;;oversàƒCC2A;;x 2 for offsetêT?ô>þT??)>(DƒN40&%>(0ƒN40 ‡SHO_COM:Q†COMTAB9;;get addressDP„JOFF;;of routineNQ†COMTAB9X P„JOFFb †ERATXT;;windowl„JOFF ÿÿ;;carry outvX;€ …C_OFF%>(ŠX;”X;Show the CommandžX;¨ ‡SHO_COMA²5¼$>ƃSHCQ„CTXT8Ð P†INPLIN9Ú3ä2î(>øHƒSHCQ>š P†INPLIN7 >*:4X;>X;Command KeysHX;R†COMKEY *=9="==\ 8=>==(=.f =#=f= =p :=6=v==z  =-==7=%„ ¶=ŠŽX;˜X;Get a Key¢X;¬†GETKEYQ%ä;;the easy way¶5;;to get keysÀQ$ä;;from the OS!Ê5Ô:ÞX;èX;Get Input until ESCape oròX;RETURN is pressedüX; …INPUT'†MAXLEN;;save length %>;;counter †INLOOP'‚Y2;;save it$ Q>€;;cursor is a. P@†INPLOC7;;block.8  †GETKEY;;get a keyB %‚Y2;;restore YL R>ƒEOL;;is it EOL?V F†INDONE;;yes!` R>;;is it ESC?j H…NOESC;;NO!t ;;;signal abort~ :;;so long.ˆ …NOESCR>~;;delete?’ H…NODEL;;nope.œ )>;;on 1st char?¦ F†INLOOP;;yes!° Q>;;remove cursorº P@†INPLOC7Ä 1;;decrease cntrÎ I†INLOOP;;and loopØ X;â …NODEL$…IMODE;;get mode?ì F…IS_OK;;string mode.ö M>;;mask inverse R> 9;;>9? DƒITS;;no. M>ß;;make uppercase. ƒITS „CHEX;;is legal?( (>;;test X.2 I…IS_OK;;legal!< G†INLOOP;;no good.F X;P …IS_OK)†MAXLEN;;at max len?Z F†INLOOP;;yes.d P„IBUF8;;no save charn  †ASC2IC;;and put itx P@†INPLOC7;;on screen‚ 3;;up cntrŒ H†INLOOP;;and loop.– X;  †INDONEP„IBUF8;;save EOLª Q>;;erase cursor´ P@†INPLOC7¾ ,;;show good.È :;;boogie.Ò X;Ü X;Erase Input Lineæ X;ð †ERAINPQ>ú $>" ƒER1P†INPLIN9 0 IƒER1" :, X;6 X;Get a String@ X;J …G_STRQ>T P…IMODE^ %>!h !…INPUTr X;| X;Get a Hexstring† X; …G_HEXQ>;;hex mode.š P…IMODE¤ %> ;;32 chars max®  …INPUT;;get input.¸ DƒMEV;;ok? :;;no.Ì ƒMEV$>;;get length ofÖ ƒG4EQ„IBUF9;;the input.à R>ƒEOLê FƒG4Lô 2þ HƒG4E X; ƒG4LA;;is the input M>;;even?& FƒG4R;;yes!0 X;: $>+;;no. add aD ƒMDNQ„IBUF9;;leading zeroN P„IBUF9;;to the inputX 0;;buffer.b IƒMDNl Q> 0v P„IBUF€ ƒG4R$>;;input pntrŠ %>;;output pntr” ƒGH2Q„IBUF9;;get charž R>ƒEOL;;all done?¨ F„GHID;;yes!² PƒHXH;;save it¼ 2;;get next charÆ Q„IBUF9Ð PƒHXL;;save itÚ &‚X3;;save xä '‚Y3;;save yî  ‡HEX2BIN;;make binaryø %‚Y3;;get Y $‚X3;;get X P„IBUF8;;save binary 3;;up Y 2;;up X* HƒGH2;;and loop4 „GHID,;;signal good> :;;later.H X;R X;Get a Number\ X;f …G_NUMQ>;;hex mode.p P…IMODEz %>;;4 chars„  …INPUT;;grab it.Ž DƒGNK;;good?˜ :;;no.¢ ƒGNK ƒZFR;;zap FR0¬ ?;;Y=0¶ †G4LOOPQ„IBUF8;;get a charÀ R>ƒEOL;;done?Ê H†TESTIT;;nope.Ô ƒG4G,;;signal goodÞ :;;spater.è X;ò †TESTIT „CHEX;;get valueü TƒFR0;;*2 UƒFR0 TƒFR0;;*4 UƒFR0$ TƒFR0;;*8. UƒFR08 TƒFR0;;*16B UƒFR0LA;;get valueVLƒFR0;;add to FR0`PƒFR0;;save itj3;;up counttH†G4LOOP;;and loop~X;ˆX;Clear out Screen Memory’X;œ†CLRSCNQ>¦%>° „CLRSP‚SM8º P‚SM8Ä P‚SM8Î P‚SM8Ø3â H„CLRSì Q†LMARGNö P†COLCRSC  P†ROWCRS:X;(X;Show the Screen Borders2X;<†DOLEFTQ‚GL;;first lineFPT;;of memoryPQ‚GHZ PTd$>nƒLFB%>;;left columnx Q…LEFTB9‚P@T7Œ'‚Y1–%>;;repeat in P@T7;;middleª%‚Y1´ 2;;over 1¾3ÈQ…LEFTB9;;column 2ÒP@T7Ü'‚Y1æ%>;;and in middleðP@T7ú%‚Y1 …ADD40;;down 1 line2(> ;;16 lines?"HƒLFB,:6X;@X;Add 40 onto pointer toJX;move down one lineTX;^ …ADD40QTh,rO>(|PT†DƒA40 #TšƒA40:¤X;®X;Display the Sector Data¸X;†SHWSECQ‚GL;;start at topÌPTÖQ‚GHà PTêQ>;;y pos =2ôP‚Y2þQƒHDF;;hex or dec? F‚H9;;HEX !„SDEC ‚H9%>& ‚H1 ƒZFR0'‚Y1:Q…MYBUF8;;get a byteDPƒFR0N ‡BIN2HEX;;to hexX#‚Y1b%‚Y2;;screen pos Yl3vQ…LBUFF;;hi byte of hex€ †ASC2ICŠP@T7;;show it”Q…LBUFF;;now low bytež †ASC2IC¨3²P@T7¼3Æ'‚Y2Ð)>;;end of line?Ú F‚H4;;yesä‚H5%‚Y1;;end of buffer?î)>€ø H‚H1;;no: ‚H4 …ADD40;;down 1 lineQ>;;reset LMargin P‚Y2*!‚H54X;> X;Show Sector in Decimal ModeH X;If 'tens' digit is inversedR"X;the number is over 200,if the\"X;'units' digit is inversed thef"X;number is between 100 and 200pX;z „SDEC%>„ #‚Y2;;3ŽƒSD1Q>ÿ;;set inverse˜ P‚IV;;flag¢Q…MYBUF8;;get byte¬3¶'‚Y1;;save buf posÀR>È;;over 200?ÊDƒDD1Ô ;;;- 200ÞS>Èè#‚IV;;set flagò #‚IV;;to 1üHƒDD3ƒDD1R>d;;over 100?DƒDD3;$S>d.#‚IV;;set flag to 08ƒDD3$> 0;;default '00'B &„TENSL &…UNITSVƒDD5R> ;;over 10?` EƒDD4;;yesj,tO…UNITS;;add units digit~ P…UNITSˆ%‚IV;;see if any are’GƒDD2;;inversedœQ…UNITS8;;do inverse¦L>€° P…UNITS8ºƒDD2%‚Y2;;get screen posÄQ„TENS;;convert toÎ †ASC2IC;;screen codeØP@T7â3ìQ…UNITS;;same forö †ASC2IC;;units digitP@T7 3;;move right3'‚Y2()>;;done w/line?2FƒDD6<ƒDD7%‚Y1;;done withF)>€;;sector?PHƒSD1Z:dƒDD6 …ADD40;;next linenQ>xP‚Y2;;reset LMargin‚HƒDD7ŒƒDD4;;;get tens digit–S>   #„TENSªHƒDD5´:¾X;ÈX;Show Data as ATASCII orÒX;Internal CodeÜX;æ†ASCINT …MASIN;;show typeðQ‚GL;;top lineúPTQ‚GH PT$>;;data pos"ƒAIM%>;;screen Y,ƒAILQ…MYBUF9;;get byte6&‚X2@$†AIFLAG;;ATASCII orJHƒAIN;;InternalT †ASC2IC;;convert^ ƒAIN$‚X2hP@T7;;show itr2|3†)>&;;end of line?HƒAILš …ADD40;;next line¤(>€;;end of buffer?®HƒAIM¸:ÂX;Ì!X;Show it as ATASCII on screenÖX;à†ASC2IC …BITERê LƒA2I9ô$‚X1þ:X;$X;Show as Internal Code on screenX;&†IC2ASC …BITER0 LƒI2A9:$‚X1D:NX;XX;Do bit workbX;l …BITER&‚X1v5€U?ŠU?”U?žU?¨M>²>¼7ÆM>ŸÐ:ÚX;äX;Do heading of 'ATASCII' orîX;'INTERNAL' codeøX; …MASIN$> Q†AIFLAG;;get flagH‚IN;;no, internal $>*‚IN%>;;copy header4ƒMA1Q„INMS9;;on screen>P†BORDER8H0R1\IƒMA1f:pX;zX;Display the Sector Data„X;Ž†SECINFQ„SECL;;sector #˜PƒFR0¢ Q„SECH¬ PƒFR0¶$>;;at position 5À ƒPH1;;put it on.ÊQ…MYBUF;;# of bytesÔPƒFR0Þ$>#;;posit. 35è ƒPH2;;put it on.òQ…MYBUF};;file #üV?;;is in theV?;;6 hi bitsPƒFR0$>;;posit. 15$ ƒPH2;;display..Q…MYBUF~;;sector link8 PƒFR0;;lowBQ…MYBUF};;sector linkL M>;;highV PƒFR0`$>;;posit 25jQ†SRCDRV;;get sourcetL>;;make inverse~P…DRLIN;;on screenˆQ†DESDRV;;dest drive’L>œP…DRLIN;;on screen¦Q‡DENSITY;;disk density°,ºO>‘ÄP…DRLIN#;;on screenÎ%†HXORST;;input modeØQ…INPMS8;;get letterâP…DRLIN;;on screenìX;öX;Put Hex # on Status LineX;enter with X = position X;ƒPH1%>;;start at dig#2 H„P_IN(ƒPH2%>;;digit #32„P_IN'„TMP1;;save Y<&„TMP2;;save XF ‡BIN2HEX;;make hexP%„TMP1;;restore X&YZ $„TMP2d„P_LPQ…LBUFF8;;get charn †ASC2IC;;make ICODExL>€;;inverse it‚P†STATUS9;;on screenŒ2–3 )>;;at end?ªH„P_LP;;no.´!ƒZFR;;zap FR0¾X;ÈX;Copy DSBUF to MYBUFÒX;܇TOMYBUF%>æƒTOMQ…DSBUF8ð P…MYBUF8ú1IƒTOM:X;"X;Tables for ATASCII and,X;Internal code conversions6X;@ƒI2A  =@==`JƒA2I @== =`TX;^X;The Command TablehX;r†COMTAB …EDITS;;block edit| †HX2DEC;;hex>dec† „DECH;;dec>hex …BFILL;;block fillš „EORS;;eor sector¤ †CHNFIL;;file #® ‡SEARCHS;;search¸ †SLINKS;;link # …READS;;read secÌ †WRITES;;write secÖ †AIFLIP;;flip charsà †HDFLIP;;flip #'sê †HELPME;;help scrnô „UNDO;;undoþ †CHNSRC;;src drive †CHNDES;;dest drive …KOLOR;;next hue ‡REFRESH;;clear scrn& …DOWN1;;sec=sec-10 ƒUP1;;sec=sec+1: †HEXSTR;;input flipD †TRACES;;trace linkN ‡CHNDENS;;new densityX …LUMIN;;luminanceb …INTRO;;menu screenl ‡REFRESH;;clear scrnv †DMPSCN;;prnt scrn€X;Š X;Routines”X;ž"X;Show Sector as ATASCII (0) or¨X;Internal Code (1)²X;¼†AIFLIPQ†AIFLAGÆN>Ð P†AIFLAGÚ !†ASCINTäX;îX;Show Sector as Hex (0) orøX;Decimal (1) dataX; †HDFLIPQƒHDFN> PƒHDF* !†SHWSEC4X;>X;Edit the sector:Set INP toHX;H(hex) or S(string) inputRX;\ …EDITS …G_NUM;;get start bytefDƒEE1pƒEDN:zƒEE1QƒFR0;;is the #<$80?„HƒEDNŽQƒFR0˜R>€¢EƒEDN;;no way.¬P…FBYTE;;save it¶ †ERAINP;;clear INPLINÀQ>¤;;a 'D'ÊP†INPLINÔ „G_HS;;get dataÞEƒEDNè'‚Y1;;save lengthò1üƒMICQ„IBUF8;;make the data$†AIFLAG;;ASC/ICODEFƒMIO †ASC2IC$ƒMIOP„IBUF8.18IƒMICBƒEE2%…FBYTE;;Y= posL$>VƒCPMQ„IBUF9;;get byte`ƒEE3P…MYBUF8;;store itj2t3~)>€;;end of sec?ˆFƒERT;;yes.’(‚Y1;;end of data?œ HƒCPM;;no.¦ƒERT!‡SHOWALL;;show changes°X;ºX;Decimal to Hex converterÄX;΄DECHQ>;;hex modeØ P…IMODEâ%>;;5 chars maxì …INPUTö D„G_IB: „G_IBQ>4„IBUF;;point FPP†INBUFF;;to buffer Q>5„IBUF(P†INBUFF2Q><PƒCIXF ƒAFP;;ASCII to FPP ƒFPI;;FP to IntegerZD‚U5;;CLC->good.d ƒZFR;;'0000' on errorn‚U5QƒFR0x5;;save the #‚QƒFR0Œ5–$> &„HXDC;;force decimalª 0;;posit 0´ ‡COPYNUM¾2;;insert =ÈQ> =Ò P„IBUF9Ü2æ7;;get # backðPƒFR0ú7 PƒFR0 ‡COP_ALL;;copy hex !†SHO_IT"X;,X;Hex to Decimal Converter6X;@†HX2DEC …G_NUM;;get numberJ E…ANRTSTX;^$>;;force decimalh &„HXDCr0;;insert hex| ‡COP_ALL†Q> =;;insert "=" P„IBUFš$>;;posit #6¤ ‡COPYNUM;;copy number®†SHO_ITQ„IBUF9;;put the str¸ †ASC2IC;;on theÂP…LINE09;;screen.Ì0Ö I†SHO_ITà …ANRTS:êX;ô"X;Copy all 4 Hex digits to IBUFþX; ‡COP_ALL&„TMP1 ‡BIN2HEX $„TMP1& Q> $0 P„IBUF9: 2D !ƒALLN X;X X;Block Fillb X;l …BFILL …G_NUMv DƒBFB€ :Š ƒBFBQƒFR0” ƒBFC%>;;fill mybufž ƒBFFP…MYBUF8;;with value¨ 1² IƒBFF¼ ƒBFD!‡SHOWALL;;Show itÆ X;Ð X;Convert Hex to Binary valueÚ X;returns with A = valueä X;î ‡HEX2BINQƒHXL;;check ifø „CHEX!&ƒHXL !QƒHXH;;same for hi! „CHEX ! A;;x16*!T?4!T?>!T?H!T?R!LƒHXL;;add low\!:;;=Af!X;p!X;See if digit is in the Hexz! X;table„!X;Ž!„CHEX$>;;16 digits˜!ƒHH4R…HXTAB9¢!FƒHH3¬!0¶!IƒHH4À!ƒHH3:Ê!X;Ô!X;Sets flag for Hex orÞ!X;String (Character) Inputè!X;ò!†HEXSTRQ†HXORSTü!N>" P†HXORST" !†SECINF"X;$"X;EOR the data with a byte."X;8"„EORS …G_NUMB" D„E_GOL":V"„E_GO%>;;eor whole`"ƒERPQ…MYBUF8;;sectorj"NƒFR0t" P…MYBUF8~"1ˆ"IƒERP’"!‡SHOWALL;;show itœ"X;¦"!X;Show Sector Data, Characters°"X;and Sector informationº"X;Ä"‡SHOWALL †SHWSEC;;dataÎ" †ASCINT;;charactersØ"!†SECINF;;inofrmationâ"X;ì"X;Install the HELP screenö"X;#†HELPMEQ>4†HELPDL;;change #P„OLDD;;display list#Q>5†HELPDL;;part way#P„OLDD;;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>ª#ƒET1P…LINE08´#1¾#IƒET1È#:Ò#X;Ü#X;Change Source Driveæ#X;ð#†CHNSRC$†SRCDRVú# †DRV_UP$ &†SRCDRV$ !†SECINF$X;"$X;Change Destination Drive,$X;6$†CHNDES$†DESDRV@$ †DRV_UPJ$ &†DESDRVT$ !†SECINF^$X;h$X;Increment Drive Numberr$X;|$ †DRV_UP2†$(> $HƒSHXš$$>¤$ƒSHX:®$X;¸$X;Change the File NumberÂ$X;Ì$†CHNFIL …G_NUMÖ$DƒFF1à$ƒFF3:ê$ƒFF1QƒFR0ô$HƒFF3þ$QƒFR0%R>@;;0-63 allowed%DƒFF4%%>µ&% !…IOERR0%ƒFF4T?;;high 6 bits:%T?;;used for fileD%PƒFR0;;numberN%Q…MYBUF};;get byteX%M>;;mask out lowb%LƒFR0;;add in File #l% P…MYBUF}v%!‡SHOWALL;;show it€%X;Š%X;Get Hex or String”%X;ž%„G_HSQ†HXORST¨% H„G_ST²% !…G_HEX¼%X;Æ%„G_ST!…G_STRÐ%X;Ú%X;Search for Hex or String.ä%X;String can be eitherî%X;ATASCII or Internal Codeø%X;&‡SEARCHS „G_HS;;get data &DƒAO2&ƒAOR: &X;*&ƒAO2)>;;just EOL?4&F‡IS_OLD?;;yup, check buf>&'…SRFLG;;save lengthH&%>,;;copy bufr overR&„AOCPQ„IBUF8;;to the save\&P…SRBUF8;;buffer forf&1;;next timep& I„AOCPz& G„AORI„&‡IS_OLD?Q…SRFLG;;old data?Ž&FƒAOR;;no way!˜&X;¢&„AORI%>;;convert to¬&ƒALIQ…SRBUF8;;internal¶& $†AIFLAGÀ& F„A_STÊ& †ASC2ICÔ&„A_STP„IBUF8Þ&3è& )…SRFLGò&HƒALIü&X;'„SSTRQ>;;compute the';;;last posit we'S…SRFLG;;can look at.$'P†MAXLEN;;save it..'%>;;sec pntr8'ƒSEL$>;;bufr pntrB''‚Y1;;save itL'„TRYFQ„IBUF9;;get bufferV'R…MYBUF8;;in sector?`'H…GS_UP;;no increment.j'3;;get next chart'2~'(…SRFLG;;at end?ˆ'H„TRYF;;no yet...’'Q‚Y1;;first byteœ'P…FBYTE;;save¦' ‡SHO_POS;;sho match!°'X;º'…GS_UP%‚Y1;;get positÄ'3;;incrementÎ')†MAXLEN;;at end?Ø'HƒSEL;;no loop.â' :;;so longì'X;ö'X;find place on screen to(X;mark the match (X;(‡SHO_POSQ…FBYTE;;byte #(V?;;div by 8((V?;;to get row2(V?<(?F(Q‚GL8;;get memoryP(PT;;positionZ(Q‚GH8d( PTn(Cx(T?‚(T?Œ( T?;;x8–( P„TMP3 (Q…FBYTE;;get remainderª(;´(S„TMP3;;go right by¾(P„TMP3;;threes!È( T?;;x2Ò(,Ü( O„TMP3;;x3æ(,ð(O>;;for marginú(?)Q>;;wedge)P@T7;;show it):")X;,)X;Refresh the screen to6)X;erase the arrows@)X;J)‡REFRESH †CLRSCNT) †DOLEFT^) !‡SHOWALLh)X;r)X;Change Screen Color|)X;†)…KOLORQ†COLOR2),š)O>¤) P†COLOR2®):¸)X;Â)X;Change LuminanceÌ)X;Ö)…LUMINQ†COLOR2à)>ê)M>ðô) P„CTMPþ)A*,*O>*M>&* L„CTMP0* P†COLOR2:*:D*X;N*X;Change Sector LinkX*X;b*†SLINKS …G_NUMl* D„SL_Gv*:€*„SL_GQƒFR0;;chk for 0Š* LƒFR0”* F…LN_ERž* QƒFR0¨*$‡DENSITY;;make sure the²*R„SDHI9;;new link is¼*D…G_LNK;;allowed inÆ*F…G_TLO;;this density.Ð* E…LN_ERÚ*…G_TLOQƒFR0ä* R„SDLO9î* D…G_LNKø* F…G_LNK+ E…LN_ER +…G_LNKQƒFR0;;store it+ P…MYBUF~ + QƒFR0*+M>4+PƒFR0>+Q…MYBUF};;mask offH+M>ü;;file #R+LƒFR0;;add in link\+ P…MYBUF}f+!‡SHOWALL;;show itp+X;z+ …LN_ER%>´„+ !…IOERRŽ+X;˜+X;Read a Sector¢+X;¬+…READS …G_NUM;;get sector¶+ D„G_RDÀ+:Ê+„G_RDQƒFR0;;just EOL?Ô+ LƒFR0Þ+F…DORED;;yes, rereadè+QƒFR0;;copy the newò+P„SECL;;# to areaü+ QƒFR0, P„SECH,X;,…DORED †READIT;;do the read$,IƒG.Q., …IOERR8,ƒG.Q ‡TOMYBUF;;move to mybufB,!‡SHOWALL;;show itL,X;V,X;Set up Reading`,X;j,†READITQ†SRCDRV;;source drvt, P…DUNIT~,Q>5…DSBUF;;read intoˆ,P†DBUFHI;;dsbuf’, Q>4…DSBUFœ, P†DBUFLO¦,Q>R°, H†REDWRTº,X;Ä,X;Set up WriteÎ,X;Ø,†WRITITQ†DESDRV;;dest. drvâ, P…DUNITì,Q>5…MYBUF;;write outö,P†DBUFHI;;mybuf- Q>4…MYBUF - P†DBUFLO-Q>W-X;(-X;general read,write2-X;<-†REDWRTP†DCOMND;;save cmdF-Q„SECL;;sector 0?P- L„SECHZ- HƒC_D;;no.d-#„SECL;;now sector 1.n-ƒC_D$‡DENSITY;;test to bex-Q„SECH;;sure that the‚-R„SDHI9;;sector is onŒ-D„S_OK;;the disk.–- F„T_LO - E„T_NOª-„T_LOQ„SECL;;test lo.´- R„SDLO9¾- D„S_OKÈ-„T_NOQ„SDLO9;;move max #Ò-P„SECL;;into sec #Ü- Q„SDHI9æ- P„SECHð-„S_OKQ„SECL;;save theú-P…DAUX1;;sector in SIO.Q„SECH;;work area. P…DAUX2.Q>€;;128 bytes". P†DBYTLO,.Q>6. P†DBYTHI@.!†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.1Q„ERMS9;;to buffer¤. P„IBUF9®.0¸. I„DS.1Â.$>;;copy number inÌ. ‡COPYNUMÖ.Q>à. P„IBUF9ê.:ô.X;þ.X;Disk editor Error Routine/X;/…IOERR …F_ERR/!†SHO_IT;;show error.&/X;0/X;Read Down One Sector:/X;D/…DOWN1Q„SECHN/ HƒDA2;;okX/ Q„SECLb/R>;;if LT 2 nol/EƒDA2;;decreasev/:€/ƒDA2"„SECL;;go down 1Š/ Q„SECL”/R>ÿž/HƒDA1¨/ "„SECH²/ƒDA1!…DORED;;read it¼/X;Æ/X;Read Up One SectorÐ/X;Ú/ ƒUP1#„SECLä/HƒUPAî/ #„SECHø/ƒUPA!…DORED0X; 0X;Trace a file0X; 0†TRACESQ„SECL;;save cur*0P…SSECL;;number just40Q„SECH;;in case>0 P…SSECHH0Q…MYBUF};;get linkR0 M>;;hi\0 P„SECHf0Q…MYBUF~;;and lowp0 P„SECLz0 L„SECH„0HƒD_R;;if 0 end ofŽ0%>¶˜0 !…IOERR¢0ƒD_R!…DORED;;trace¬0X;¶0„EOFTQ…SSECL;;reset currentÀ0P„SECL;;sector numberÊ0 Q…SSECHÔ0 P„SECHÞ0:è0X;ò0X;Write a Sectorü0X;1†WRITES …G_NUM;;sector to1DƒWR1;;write.1:$1ƒWR1Q„SECL;;save old #.1P…SSECL;;for later.81 Q„SECHB1 P…SSECHL1QƒFR0;;sector 0?V1 LƒFR0`1FƒWR2;;yes.j1QƒFR0;;copy new sec#t1P„SECL;;into pntr~1 QƒFR0ˆ1 P„SECH’1ƒWR2Q„SECL;;use old sectorœ1PƒFR0;;number.¦1 Q„SECH°1 PƒFR0º1 ‡BIN2HEX;;make hexÄ1%>;;copy to theÎ1ƒWR3Q…LBUFF8;;message.Ø1P†SUREMS 8â11ì1IƒWR3ö1Q†DESDRV;;put in the2L>0;;destn drive 2P†SUREMS2%>2ƒWR4Q†SUREMS8(2FƒGYN22 †ASC2IC<2 P@†INPLOC7F23P2HƒWR4Z2ƒGYN †GETKEYd2R>n2FƒWRUx2M>‚2R> YŒ2FƒWR5–2R> N 2HƒGYNª2FƒWRU´2X;¾2ƒWR5 †WRITITÈ2IƒWRUÒ2 …IOERRÜ2ƒWRU!„EOFT;;restoreæ2X;ð2X;Change Densityú2X;3‡CHNDENSQ‡DENSITY3N>3 P‡DENSITY"3 !†SECINF,3X;63†BORDER AŽ   «° «± «² «³A@3 A‘ «´ «µ «¶ «·    ÁAJ3 AŠÔÁÓÃÉÉ    AT3X;^3„INMS AˆÉÎÔÅÒÎÁÌAh3„ATMS AˆÁÔÁÓÃÉÉ Ar3…INPMS A‚ÈÓA|3„SDLO Ð=†3„SDHI =3„ERMS AˆError # Aš3X;¤3X;Left Border®3X;¸3…LEFTB A ° ¸±°±¸²°²¸³°³AÂ3 A‘¸´°´¸µ°µ¸¶°¶¸·°·¸AÌ3X;Ö3X;Various Messages & Promptsà3X;ê3†SUREMS AWrite SEC: 0000Aô3 AŒ to D : Y/N?A=þ3…HXTAB A0123456789ABCDEFA4„CTXT AŒÅäô£ ÈÿÄ ÄÿÈA4 AŒÂæéì ÅïòÆéì£A4 AŒÓòãèÌéîëÒåáäA&4 Aˆ×òéô    A