þþéI X;BASIC TO BINARY -10/16 ;X;BY: MATTHEW ARRINGTON ;X; ;(X; OSS. MAC-65 SOURCE ;2X;<EIFX;PX;Z X; MACROSdX;n „@PT xX;‚X; PUT TO DEVICEŒX; " PUT IOCB#,BYTE "–X; 'ª?´  ¾ $> ÈÒQ> ÜPB9;; COMMAND PUT=11æQ>ðPH9úPI9C Vä%",X;6X;@X;J „@GT TX;^ X; GET FROM DEVICE (INTERNAL)hX; " GET IOCB# "rX;|  † $> šQ>¤PB9;; COMMAND GET=7®Q>¸PH9ÂPI9Ì VäÖàX;êX; PUT BYTEôX;þX; „PUT    „@PT &0 „@PT :DNX;XX;  ÇÅÔ  EX. "GET 0"bX;l „GET v  € „@GT Š” „@GT ž¨²X;¼ X;  ÐÒÉÎÔ ÆX;Ð †PRINT ÚX;ä !…@OVERî…@TEXT =ø …@OVER%> …@LOOP'  Q…@TEXT8R> `  H„@CIO*Q>›4„@CIO„@PT >%H3R Q…@TEXT8\ H…@LOOPfpX;zX; PRINT BUFFER„ ‡PRINTB Ž%>˜ ƒ@LO'¢X;¬  ¶ Q@ 7ÀÊX;ÔQ 8ÞèX;òR> `üHƒ@COQ>›ƒ@CO„@PT %$3.  8 Q@ 7BLQ 8V`Hƒ@LOjtX;~X; INPUT RECORD/ SAVE EOLˆX; EX. "INPUT IOCB#"’X;œ †INPUT ¦X;° $> ºQ> ÿ;; INBUF LOÄPD9ÎQ> ;; INBUF LOØPE9âQ>;; GET RECORDìPB9öQ>(;; BUF LENPH9 Q>PI9 Vä(%H92Q><P 8FPX;Z …OPEN dX;n$> ;; IOCB #x  ‚ !„@EXCŒ …@OPEN –„@EXCQ>…@OPENÿ;;(S:,D:) PD9ªQ>…@OPEN´PE9¾È Q> ÿÒPD9Ü Q> æPE9ðúQ> PJ9;; OPEN (8,12,4)Q> PK9;; AUX1"Q>;; COMMAND OPEN,PB96 Vä@JX;T ‡RWSECT ^X;h X; DUNIT,DCOM,DBUFF,SIZE,SECTrX;|Q>1†P;; DDEVIC  šQ ¤®Q> ¸ÂP;; DUNITÌQ> ÖPàQ> êPô Q> ÿþP Q> PQ>&P0 Q> ÿ:PD Q> NP X Q> ÿbP l Q> vP € Y䊔X;žX; MACRO CLOSE IOCB¨X;² †CLOSE ¼X;Æ $> ÐQ> ;; COMMAND CLOSEÚPB9ä Vä;; CIOîøX; „XIO X;$> ;; IOCB Q> ;; COMMAND*PB94Q> >PJ9;; AUX1HQ> RPK9;; AUX2\ Q> ÿfPD9p Q> zPE9„ Vä;; CIOVŽX;˜¢X;¬ „POS ¶X;.EX POS COL,ROWÀX;ÊQ> ÔPTÞQ> èPUòX;ü X; …BGET  X;$ !X; EX. BGET 1,BUFFER,10000,LEN. X;8 $> B Q>L PB9;; COMMANDV Q> ÿ` PD9j Q> t PE9~ Q> ÿˆ PH9’ Q> œ PI9¦ Vä;;CIO° X;º QH9Ä P Î QI9Ø P â ì X;ö X; EX. BPUT 1,BUFFER,LEN X; …BPUT  $>  Q> ( PB9;; COMMAND2 Q> ÿ< PD9F Q> P PE9Z Q d PH9n Q x PI9‚ Vä;;CIOŒ X;–   X;ª X;´ X; WORK BYTES¾ X;È Ò X;Ü ‡MAXLINE æ †INLINE ð …FLASH ú …TEMP1  „CHR1  „CHR2  †OPTION " „SCRN , ƒLEN =6 „TEMY @ X;J …LBUFF~T †HATABS^ X;h X; ZERO PAGEr X;| …TEMP2ˆ …TEMP3Ì †PSTARTàš „PEND⤠†MEMBOTä® †AMOUNTæ¸ X; 'Ì X;Ö X; LOAD SCREENà X;ê „INITQ>;; BLACKô PÆ;; SCREENþ PR Q>a;; RED PÈ;; BORDER Q>;; NO CURSOR& Pð0 B†PRINT =A±} Basic to Binary by: Matthew ArringtonA: :;; CONTINUE LOADD X;N âX  „INIT;; FOR BIN LOADb X;l 'v X;€ X;Š !X; EXECUTE & RUN BASIC PROGRAM” X;ž #X; THIS ROUTINE GETS SAVED ALONG¨ X; WITH BASIC PROGRAM.² X;¼ X;Æ "†BASRUN A‚ÿÿA;; BIN LOAD HEADERÐ  ‡FILELEN;; LOAD STARTÚ  ƒRN3;; LOAD ENDä X;î X;ø !‡FILELEN ;; BASIC FILE LEN X; 6…TLINE A• A;; TITLE STORED HERE X; …RESET ;; OPTION FLAGS* …BREAK 4 †TITLE2 => …MEMLO „LA12H X;R ‚GOQ;; CART PRESENT?\ HƒRN2;; YES CONTINUEf X;p Q>;; CURSOR OFFz Pð„ Q>;; ZERO MARGINŽ PR˜ :†PRINT =A©}    ÐÒÏÇÒÁÍ ÒÅÑÕÉÒÅÓ ÂÁÓÉî  ÒÅÂÏÏÔ     A¢ ‚X2!‚X2;; LOOP FOREVER¬ X;¶ ƒRN2Q†TITLE2;; DISPLAY TITLE?À FƒRN3;; NOÊ X;Ô …OPEN = ==ASA;; GR. 1Þ „POS  =è ‡PRINTB =…TLINEò ƒRN3:;; COUNTINE LOADü X;X; MORE BIN POINTERSX; â=ã;; INIT ADD.$ ‚GO.X;8 ‚X1=„LA12BX;LX;VX; INIT MEMLO`X;j ‚X1%>tQ…MEMLO;; SET REAL MEMLO~PçˆX;’,œO>ò¦ P…TEMP2°X;º Q…MEMLOÄPèÎX;ØO>â P…TEMP3ìX;öX; INIT RESET VECTORSX; Q…RESET;; TRAP RESET?F„TRAP;; BR. IF YESX;(R>;; COLD START?2 H‰MOVEPOINT;;NO, RESET NORMAL<Q>;; DIE ON RESETFPD;; COLSTP!‰MOVEPOINTZX;d„TRAPQ ;; TRAP RESETnR>;; DOS PRESENT?xE…DODOS;;BR. IF SO‚"Q>†INITALÿ;; SET RESET VECTORŒP –Q>†INITAL P ª!‰MOVEPOINT´X;¾ …DODOSQ ;; SAVE DOS INIT VECÈP†RESET1ÒQ ÜP†RESET1æX;ð#Q>†RESET1ÿ;; SET NEW RESET VECúP Q>†RESET1P X;"#X; ADD VALUE OF MEMLO TO BASIC'S,X; PROGRAM POINTERS.6X;@‰MOVEPOINTQçJ,T O@…TEMP27^P€8h3rX;|Qè† O@…TEMP27P€8š3¤)>®H‰MOVEPOINT¸X;ÂQŒ;; COPY STARP TO:ÌPŽ;; RUNSTAKÖP;; MEMTOP (LOW)àX;êQ;; (HIGH)ôPþP‘X;X;X; SET UP TO RUN&X;0Q>:P’;; BASIC DOES THISDPÊ;; ON COLD STARTN$>ÿXBb-lX;vQ";; SAVE VBI VEC€ P„VBIXŠQ#” P„VBIXž !†INITAL¨X;²X; IMMEDIATE VBI TO DISSABLE¼ X; BREAK.ÆX;Ð ƒBRKQ>@ÚPäPÒî„VBIX L==øX;X; "†RESET1  ==;; JSR INIT DOS†INITAL$> Q…BREAK;; DISSABLE BREAK?*HƒLA2;; BR. IF NOT4X;>Q>ƒBRKÿ;; SET IMM. VBIHP";; VECTORR Q>ƒBRK\P#fX;p"X; PATCH THE "E:" INPUT COMMANDz#X; WILL FORCE A "RUN" WHEN BASIC„!X; GOES TO THE "READY" PROMPT.ŽX;˜ƒLA2Q†HATABS9;; GET A BYTE¢R> E;; LOOK FOR E¬FƒLA1;; FOUND YA¶X;À2;; NEXT HANDLERÊ2;; ADDRESSÔ2ÞHƒLA2;; KNOW ITS THEREèX;òƒLA12ü&ƒLA3;; SAVE OFFSETX;Q†HATABS9;; SAVE OLD P…TEMP2$!Q>…VTBLEÿ;; REPLACE WITH NEW.P†HATABS9;;$031A8X;B2;; NOW HI BYTESLX;VQ†HATABS9;; SAVE OLD` P…TEMP2j"Q>…VTBLE;; REPLACE WITH NEWt P†HATABS9~X;ˆ%>;; COPY VTABLE’$>œƒLA7Q@…TEMP27¦ P…VTBLE8°3º0ÄHƒLA7Î%>Ø$>âƒLA8Q@…TEMP27ì P…VTBLE8ö30 HƒLA8X;Q>;; COUNTER( P„LA102X;<Q>;; BOOT SUCCESSFULF P ;; BOOTPP;; WARMSTZX;dQú¿;; CART RUN ADD.n P„CARTxQû¿‚ P„CARTŒ „CART L==;; JMP TO BASIC–X; †EINPUT%„LA10;; GET OFFSETª)>ÿ;; END?´F„LA11;; YES¾X;È Q„LA128Ò "„LA10Ü%>æ:ðX;ú „LA11A5$ƒLA3 Q…TEMP2"P†HATABS9;;$031A,26 Q…TEMP2@P†HATABS9;;$031AJ7T>^ Q>›;; C/Rh%>;; SUCCESSr :;; DONE| ƒLA3 † „LA10 X;š…VTBLE =;; CLOSE¤ =;; OPEN® †EINPUT;; GET¸ =;; PUT =;; STATUSÌ =;; SPECIALÖ ==;; JMP INITàX;ê„LA12 AƒNURAôX;þ A„àáA;;RUN POINTERS ‚X1;;FOR BAS RUNX;ŠBASICSTART =& 0 †ENDRUN :X;DX; DISPLAY LISTNX;X…DLIST p=p=p=B=@=œb B=h=œ=B==œ=B=¸=œl B=à=œ=B===B=0=v B=X==B=€==B=¨=€ B=Ð==B=ø==B= =žŠ B=H=ž=B=p=ž=B=˜=ž” B=À=ž=B=è=ž=B==Ÿž B=8=Ÿ=B=`=Ÿ=B=ˆ=Ÿ¨ B=°=Ÿ=B=Ø=Ÿ=A² …DLIST¼„MENU A†}`````AÆ A—  `AÐ A— | `AÚ A— `Aä A— |Âáóéã ôï Âéîáòù|`Aî# Aœ`Aø# Aœ| |`A# Aœ| 1: Display/Set Options |`A # Aœ| |`A$ A| 2: Convert Basic file |`A )…MENU2 Aœ| |`A*# Aœ| 3: File Directory |`A4# Aœ| |`A># Aœ| 4: Exit to DOS |`AH# Aœ| |`AR$ A`A\X;fX;pX;zX; EVERYDAY TYPE SUBROUTINES„X;ŽX;˜X; INPUT A LINE¢X;¬‡GETLINEQ>;; LINE INDEX &¶P†INLINE;; LINE LEN=0ÀX;Ê…GLOOPQ> ;; 1/6 SECÔP;; SYS TIMERÞ‡TIMLOOPQü;; STAT KEYBOARDèR>ÿ;; KEY IN?òF‰CHECKTIME;; BR. IF NOü"†PRINT =A‚_A;; PRINT CURSOR!„GCHR;; GET KEYX; ‰CHECKTIMEQ;; SYS TIMER=0?$H‡TIMLOOP;; NO, LOOP.Q…FLASH;; FLASH ON OR OFF?8FƒOFF;; TURN IT OFFB†PRINT =A‚_A;; CURSOR ONLQ>;; FLASH OFF=0VP…FLASH;; FOR NEXT TIME`!…GLOOP;; LOOPjX;t%ƒOFF†PRINT =A‚ A;; CUROSRO OFF~Q>;; FLASH ON=1ˆP…FLASH;; FOR NEXT TIME’!…GLOOP;; LOOPœX;¦„GCHR„GET ;; GET A CHAR°X;ºR> ~;; BACKSPACE?ÄH‚DL;; BR. IF NOTÎX;Ø$†INLINE;; SOMTHING TO BS?âHƒOK1;; BR. IF YESì!…GLOOP;; NOTHING THEREö!ƒOK1!‰BACKSPACE;; DO BACKSPACEX; ‚DLR> œ;; DELETE LINE?H„ENDL;; BR. IF NOT$†INLINE;; SOMTHING TO DEL?(HƒOK2;; BR. IF YES2!…GLOOP;; ELSE IGNORE & LOOP<ƒOK2!…DLINE;; DO DELETE LINEFX;P„ENDLR>›;; END OF LINE?ZH†NOCTRL;; NOd!ƒEOL;; DO ENDLINEn!†NOCTRL$…STRIP;; FILTER CHARS?xHƒOK3;; BR. IF NO‚X;ŒX;–M>;; STRIP INVERSE R>a;; LOWWER CASE??ªDƒOK3;; BRANCH IF NOT´;¾S> ;; MAKE IT UPPERȃOK3$†INLINE;; RESTORE XÒ(‡MAXLINE;; LINE TOO LONG?ÜHƒOK5;; BR. AND SAVEæ!…GLOOP;; IGNORE KEY & LOOPðX;úƒOK5P~9;; SAVE BYTE2;; FOR NEXT SAVE&†INLINE;; SAVE X„PUT ;; PRINT CHAR"!…GLOOP;; GET NEXT BYTE,X;6X;@‰BACKSPACE ‚STJX;T„DOBSQ> ~;; BS CHAR^„PUT ;; PRINT ITh"†INLINE;; DEC LINE LENr!…GLOOP;; NEXT KEY|X;†X; …DLINE ‚STšX;¤„DODLQ> ~;; BS CHAR®„PUT ;; PRINT IT¸"†INLINE;; DEC LINE LENÂH„DODL;; LOOP TILL GONEÌ!…GLOOP;; START AGAINÖX;àX;êƒEOLQ> œ;; DELETE PROMPTô „PUT þ$†INLINE;; GET LINE LENQ>P~9;; MARK EOL :;; RETURN&X;0X;:%‚ST†PRINT =A‚~A;; ERASE CURSORD:NX;XX;b‡PUTBYTE$>;; IOCB #0l„PUTD„PUT ;; PUT Av :;; RETURN€X;ŠX; ;”X; VALIDATE A FILENAME ;žX; ;¨‡SETNAME%>;; SET DEFUALT²‚L8QƒDEF8;; TO DRIVE ONE¼ P…FNAME8Æ3Ð)>ÚH‚L8äX;îQ…LBUFF;; "D:FNAME"?øR> :H‚L5;; BR. IF NOT %>;; SET OFFSET!ˆMOVENAME;; COPY NAME OVER X;*‚L5%>;; "DX:FNAME"??4 Q…LBUFF>R> :HHˆMOVENAME;;NO, ASSUME "D1:"RQ…LBUFF;; GET D# BYTE\P…FNAME;; SAVE ITf%>;; OFFSETpX;z!ˆMOVENAME$>;; COPY FILE NAME„‚L6Q…LBUFF8;; FROM LBUFF.Ž P…FNAME9˜F‚L7¢3¬2¶H‚L6ÀX;Ê‚L7:ÔX;Þ$X; CALCULATE THE DISTANCE BETWEENèX; TO ADRESS'S...òX;üˆSUBTRACTQ„PEND; S†PSTARTPƒLEN$X;. Q„PEND8S†PSTARTB PƒLENLX;V#ƒLEN`HƒL15j #ƒLENtƒL15:~X;ˆƒBUF ;; 5K BUFFER’X;œ…FNAME ¦ …STRIP °ƒDEF AƒD1:A;; DEFUALT DRIVEºƒDIR A†D0:*.*A;; DIRECTORYÄX;΃RUN…OPEN ===A‚K:AØQ>…DLISTÿ;; POINT TOâP0;; MY DIS. LISTìQ>…DLISTöP1X; Q>@;; LET THE "E:"PX;; IN ON THE CHANGE.Q>œ(PY2Q>;; CURSOR OFF<PðFQ>;; RIGHT MARGINPPSZX;dX;nˆMAINMENUQ>;; SCREEN OFFxP/‚PÆ;; CHANGE COLORŒQ>a–PÈ Q>;; LEFT MARGINªPR´!‡PRINTB =„MENU;; PRINT MENU¾‡PRINTB =…MENU2ÈQ>!;; SCREEN ONÒP/ÜX;æX; TWIRLING THINGðX;úQ>E P„CHR1Q>Z P„CHR2" …TITLE%> ,Q>6$>@P9JP8T %„CHR1^ Q„CHR2h '„CHR2r P„CHR1|$>†%> …TLOOPQ9š P…TEMP1¤ Q„CHR1®P9¸Q8 P…TEMP2Ì Q„CHR2ÖP8àQ>êPô …TTIMEQþR> H…TTIME Q> …TWIST& P90 Q>: …TWISTD P8N X;X Qüb R>ÿl H„GOPTv X;€ 2Š 1” )>ž H…TLOOP¨ !…TITLE² …TWISTR>¼ F„OVERÆ Q…TEMP1Ð !„SWAPÚ „OVERQ…TEMP2ä X;î „SWAPR>Zø H‚F1! !†SWITCH ! ‚F1R>E!H‚F2 ! !†SWITCH*! ‚F2R>C4!H‚F3>! !†SWITCHH! ‚F3R>QR!H‚F4\! !†SWITCHf! ‚F4R>Rp! F„ZEROz!Q>R„!:Ž! „ZEROQ>˜!:¢!†SWITCHQ„CHR1¬!R>Z¶! H…OTHERÀ!Q>CÊ! P„CHR1Ô!Q>QÞ! P„CHR2è! !„EXITò!X;ü! …OTHERQ>E" P„CHR1"Q>Z" P„CHR2$" „EXITQ>W.":8"X;B"X; GET OPTION FROM KEYBOARDL"X;V"„GOPTQ>;; ZERO MARGIN`"PRj"„GET ;; GET KEYt"M>;; STRIP INVERSE~"R>a;; LOWWER CASE?ˆ"D‚A6;; BR. IF NOT’";;; ELSE....œ"S> ;; MAKE IT UPPER¦"X;°"‚A6R> 2;; OPTION 2?º" H‚A1;; NOÄ" ‡CONVERT;; GO CONVERTÎ"!ˆMAINMENU;;Ø"X;â"‚A1R> 1;; OPTION 1?ì" H‚A2;; NOö" ƒPAD;; CONTROL PAD# !ˆMAINMENU #X;#‚A2R> 3;; HOW ABOUT 3?# H‚A4;; NO(# …FILES;; DIRECTORY2#!ƒRUN;; REINIT SCREEN<#X;F#‚A4R> 4;; OPTION 4?P#F‚A5;; YES...Z#!ˆMAINMENU;; BAD INPUTd#X;n#‚A5Q>';; RESET RIGHTx#PS;; MARGIN‚#!@ :;; GO TO DOSŒ#X;–#X; CONVERT A FILE TO BINARY #X;ª#‡CONVERTQ>}´# ‡PUTBYTE;; CLEAR SCREEN¾#Q>È#P‡MAXLINE;; INPUT LINE LEN.Ò#X;Ü#„POS  =æ#"ƒL11†PRINT =AINPUT FILE - Að# ‡GETLINE;; GET INPUT NAMEú#Q†INLINE;; NAME ENTERED?$HƒL10;; BR. IF YES$:;; NO, RETURN$X;"$ ƒL10 ‡SETNAME;; VALIDATE NAME,$ †CLOSE 6$…OPEN ===…FNAME@$GƒL11;; ERROR TRY AGAINJ$X;T$X; PASS 1, COUNT BYTES^$X;h$"X; MUST KNOW EXACT LEN OF BASICr$ X; FILE.|$X;†$Q>;; ZERO BASIC$P‡FILELEN;; FILE LENGTHš$P‡FILELEN¤$X;®$ƒL13„GET ;; GET A BYTE¸$)>ˆ;; CHECK FOR EOFÂ$F…PASS2;; BR. EOF REACHEDÌ$X;Ö$#‡FILELEN;; COUNT BYTES.à$HƒL13ê$#‡FILELENô$HƒL13þ$X;%"X; PASS2 SAVE ROUTINE THAT RUNS% X; THE BASIC. THEN COPY BASIC%#X; PROGRAM OVER TO THE NEW FILE.&%X;0%'…PASS2†CLOSE ;; REOPEN INPUT FILE:%…OPEN ===…FNAMED%X;N%"‚L3†PRINT =AŽOUTPUT FILE - AX% ‡GETLINE;; GET FILENAMEb%Q†INLINE;; NAME ENTERED?l%HƒL12;; BR. IF SOv%:;; RETURN - ABORT€%X;Š% ƒL12 ‡SETNAME;; VALIDATE NAME”% †CLOSE ž%…OPEN ===…FNAME¨%G‚L3²%X;¼%%X; CALCULATE LENGTH OF THE ROUTINEÆ%X; THAT'LL EXECUTE THE BASICÐ%#X; PROGRAM. SAVE RESULT IN "LEN"Ú%X;ä%Q>†BASRUNÿî% P†PSTARTø%Q>†BASRUN&P†PSTART &X;&Q>†ENDRUNÿ & P„PEND*&Q>†ENDRUN4& P„PEND>& ˆSUBTRACT;; GET LENGTHH&X;R&X; MAKE BIN LOAD POINTERS\&X;f&%X; ADD THE LEN. OF THE BAS PROGRAMp&#X; TO THE ADDRESS WHERE IT FIRSTz&X; LOADS IN MEMORY.„&X;Ž&Q…MEMLO;; START ADDRESS˜&,¢&O>ò;; BAS. BUFFER OFFSET¬& P…TEMP2¶& Q…MEMLOÀ&O>Ê& P…TEMP3Ô&X;Þ&X; LOW BYTESè&X;ò&Q…TEMP2;; SAVE START POINTü&PŠBASICSTART',;; ADD IN FILE LENGTH' O‡FILELEN'P†ENDRUN;;SAVE END POINT$'X;.'X; HIGH BYTES8'X;B'Q…TEMP3;; SAVE STARTL'PŠBASICSTARTV'O‡FILELEN;; ADD IN LEN`'P†ENDRUN;; SAVE ENDj'X;t'Q†ENDRUN;; SUBTRACT 1~';;; FROM END POINTˆ'S>;; (FUDGE)’'P†ENDRUNœ' Q†ENDRUN¦'S>°' P†ENDRUNº'X;Ä'X; SAVE THE EXECUTE ROUTINEÎ'!X; ALONG WITH ALL BIN POINTERSØ'X;â'…BPUT =†BASRUN=ƒLENì'X;ö'X; COPY BASIC FILE OVER(X; (‚L4…BGET =ƒBUF==ƒLEN('„TEMY;; SAVE ERROR FLAG(…BPUT =ƒBUF=ƒLEN((X;2(%„TEMY;; GET ERROR FLAG<()>ˆ;; EOF REACHED?F(H‚L4;; BR. IF NOTP(X;Z(†CLOSE ;; CLEAN UPd( †CLOSE n(:;; ALL DONEx(X;‚(X; CONTROL PAD?!Œ(X;–(ƒPADQ>};; CLEAR SCREEN ( ‡PUTBYTEª(Q>;; ZERO MARGIN´(PR¾(X;È(/†PRINT =Až Basic to Binary Control Pad`AÒ(/†PRINT =Až `AÜ(+†PRINT =Aš ÓÅÌÅÃÔ : Item to change`Aæ()†PRINT =A˜ ÏÐÔÉÏÎ : Changes Item`Að(%†PRINT =A” ÓÔÁÒÔ  : Exits````Aú(3†PRINT =A¢ÒÅÓÅÔ -``BREAK -``TITLE -``MEMLO -A)X;)X;)Q>;; ZERO VARIABLES") P…TEMP1,) P†OPTION6)>@)X;J)Q>T) P„SCRN^)#‰PRINTITEM …PITEM;; PRINT OPTIONh)$…TEMP1;; GET Xr) 2;; ADD 1|)&…TEMP1;; SAVE IT†)(>;; ALL DONE?)H‰PRINTITEM;; NO.š)X;¤)‡STATCONQ>;; CLEAR CONSOL®)Pи)QÐ;; STATUS CONSOLÂ)R>;; PRESSED?Ì)E‡STATCON;; BR. IF NOTÖ) ?;; SAVE Aà) Q>;;ê)PÐ;; CLICKô)P Ô;; WAITþ)X;*ƒCN1Q>;; CLEAR CON*PÐ*QÐ;; STATUS CON&*R>;; HANDS OFF?0*HƒCN1;; NO, PEOPLE ARE SLOW:*X;D*Q> ;; 1/6 SEC DELAYN*PX* ƒCN2Qb*HƒCN2;; LOOP TIL ZEROl*X;v*C;; RESTORE A€*X;Š*R>;; SELECT PRESSED?”*F„CON1;; YESž*X;¨*R>;; OPTION PRESSED?²*H‡EXITPAD;; NO, EXIT¼*X;Æ*!ƒOPTÐ* ‡EXITPAD:Ú*X;ä*„CON1QX;; GET SCREEN ADDRî* P…TEMP2ø*QY+ P…TEMP3 +X;+Q„SCRN;; CALC. SCREEN +>;; POSITON*+ ‚Z1Q…TEMP24+,>+O>(H+ P…TEMP2R+ Q…TEMP3\+O>f+ P…TEMP3p+0z+H‚Z1„+X;Ž+%>˜+‚Z2Q@…TEMP27;; GET BYTE¢+F‚Z7;; END OF BLOCK¬+M>;; INVERSE OFF¶+P@…TEMP27;; PUT IT BACKÀ+3;; NEXT BYTEÊ+ H‚Z2;; NOÔ+X;Þ+‚Z7Q†OPTION;; LAST OPTION?è+R>ò+ H‚Z3;; NOü+X;,Q>;; YES LOOP TO FIRST, P†OPTION,Q>;; RESET POSITION$, P„SCRN., Q…TEMP28,;B,S>ðL, P…TEMP2V, Q…TEMP3`,S>j, P…TEMP3t,%>~,!‚Z4ˆ,X;’,‚Z3#†OPTION;; NEXT OPTIONœ, #„SCRN¦, #„SCRN°,%>Pº,X;Ä,‚Z4Q@…TEMP27;; GET BYTEÎ,F‚Z6;; END OF BLOCKØ,,â,O>€;; INVERSE ONì,P@…TEMP27;; PUT IT BACKö,3;; NEXT BYTE-H‚Z4;; LOOP -‚Z6!‡STATCON;; DONE-X;-X; PRINT SELECTED ITEM.(-X;2-…PITEMQ>;; ZERO VARIABLES<- P…TEMP2F- P…TEMP3P-X;Z-Q…RESET9;; GET Y VALUEd-?n-X;x-X; (X*6)+(Y*2)=JMP ADDR‚-X; X=OPTION Y=ITEMŒ-X;–-X; MULTIPLY X*6 -X;ª-ƒDOX0´-(>ÿ¾-FƒDOYÈ- Q…TEMP2Ò-,Ü-O>æ- P…TEMP2ð-!ƒDOXú-X;.X; MULTIPLY Y*2.X;.ƒDOY1".)>ÿ,. F…ADDEM6. Q…TEMP3@.,J.O>T. P…TEMP3^.!ƒDOYh.X;r.…ADDEMQ…TEMP3|.,†. O…TEMP2.>š.X;¤. Q†TABLE19®.P†GOPRNT¸.Q†TABLE19Â.P†GOPRNTÌ.X;Ö.†GOPRNT L==;; JMP XXà.X;ê.X; PRINT'S TO MAKE TABLE1ô.X;þ.„O0I0„POS =/&†PRINT =A•Trap & Re-Run ProgramA/:/„O0I1„POS =&/&†PRINT =A•Reset Normally A0/::/„O0I2„POS =D/&†PRINT =A•Cold Start AN/:X/X;b/X;l/„O1I0„POS  =v/†PRINT =AˆDisabledA€/:Š/„O1I1„POS  =”/†PRINT =AˆEnabled Až/:¨/X;²/„O2I0„POS  =¼/†PRINT =AƒOffAÆ/:Ð/„O2I1„POS  =Ú/†PRINT =AƒOn Aä/#…STRIP;; STRIP CHR OFFî/„POS =ø/†PRINT =AŽENTER TITLE:``A0<†PRINT =A«[ ]A 0Q>0P‡MAXLINE;; 19 CHR LIMIT 0 ‡GETLINE;; GET TITLE*0„POS =40!†PRINT =AœA;; ERASE PROMPT>0Q†INLINE;; TITLE ENTERED?H0HƒTI5;; BR IF SOR0"…STRIP;; NO TITLE\0 !„NULLf0X;p0ƒTI5%>;; TITLE LEN-1z0Q> ;; SPACE CHR„0X;Ž0!ƒTI4P…TLINE8;; ERASE OLD TITLE˜01¢0)>ÿ¬0HƒTI4¶0X;À0X; CENTER TITLEÊ0X;Ô0$> ;; MAX TITLE LEN/2Þ0Q†INLINE;; TITLE LENè0X;ò0ƒTI10;; DIVIDE TITLEü0;;; LEN BY 21S>1EƒTI11X;$1(> ;; X>10 ?.1 DƒTI9;; NO81X;B1 $>;; YESL1X;V1ƒTI9%>;; MOVE TITLE`1ƒTI3Q…LBUFF8;; GET BYTEj1FƒTI2;; BR IF ENDt1P…TLINE9;; SAVE BYTE~13;; NEXT BYTEˆ12’1!ƒTI3;; LOOPœ1ƒTI2"…STRIP;; STRIP CHR ON¦1 :;; DONE°1X;º1„O3I0„POS =Ä1†PRINT =A… AÎ1„POS =Ø1…PNUM =…MEMLOâ1:ì1X;ö1„O3I1„POS =2$†PRINT =A“NEW MEMLO VALUE IS:A 2Q>;; 5 CHRS MAX2 P‡MAXLINE2X;(2 ‡GETLINE;; GET NUMBER22Q†INLINE;; CHECK LEN<2F„NULL;; NOTHING THEREF2'‰ASCIINUM …LBUFF=…MEMLO;; ASCII->FPP2X;Z2„NULL$†OPTION;; NULL ITEMd2Q>;; LOOP TO VALIDn2P…RESET9;; ITEMx2 !…PITEM‚2X;Œ2†TABLE1 „O0I0=„O0I1=„O0I2–2 „O1I0=„O1I1=„NULL 2 „O2I0=„O2I1=„NULLª2 „O3I0=„O3I1=„NULL´2X;¾2X;È2X;Ò2ƒOPT$†OPTION;; GET OFFSETÜ2#…RESET9;; NEXT ITEMæ2 Q…RESET9ð2R>;; INC TO FAR?ú2H‚Z5;; BR. IF NOT3Q>;; LOOP TO FIRST3P…RESET9;; ITEM.3‚Z5 …PITEM;; PRINT NEW ITEM"3!‡STATCON;; CHECK CONSOL,3X;63 X; FILES@3X;J3 …FILESQ>}T3 ‡PUTBYTE^3X;h3Q>;; ZERO DRIVE BYTEr3 PƒDIR|3X;†3$†PRINT =A“```Which drive? ±-¸A3„GET ;; GET A KEYš3PƒDIR;; STORE AT D#¤3 †CLOSE ®3…OPEN ===ƒDIR¸3IƒDD1;; BR. IF SUCCESSFULÂ3:;; ERROR, RETURNÌ3X;Ö3 ƒDD1†CLOSE ;; CLOSE EDITORà3…OPEN = ==AEA;; GR. 0ê3Q>;; CHANGE COLORô3PÆþ3ƒDD3„GET ;; GET A BYTE4GƒDD2;; BR. ON ERROR4„PUT ;; PRINT BYTE4IƒDD3;; LOOP&4X;04ƒDD2†CLOSE :4!†PRINT =A``Type any key.`AD4„GET ;; GET KEYN4:X4X;b4à;; BIN LOAD RUNl4 ƒRUN