"Ø=î=Q¤CHOICÅÙ BASIC ENHANCEMENTS›BY PAUL ALHART›%%(TYPE-IN VERSION BY C. JACKSON)›$$(c)1989, ANTIC PUBLISHING INC.›(U€;@,6€.>:@4,1A@0CA UA@f2k@A'B7tAH(} BASIC EnhancementsK(h( by Paul Alhartk(7*(*( ( 1) BINLOAD( 7) ERROR.164<J(%( ( 2) DEC/HEX ( 8) LOCK((J( ( 3) DELETE ( 9) OPENFILEFF(#( ( 4) DIR (10) RENAME&(F( ( 5) DRIVES (11) UNLOCKPC('( ( 6) ERROR (12) WRITEDOS*(-(?( Your ChoiceCUq @PqAAAAAAAAA AAPA!V=AdAU(=( (Press any key to continue...)X F:Ad,"AU@ˆZAdAU @PcdT B"(Creating BINLOAD-@T@@ D:BINLOADnXX(@IF PEEK(5576)<>162 THEN ? €}NOT COMPATIBLE with this DOS.€:STOPxll(@CLOSE #1:CLR :DIM Z$(18):? €}Enter the Binary File to RUN.€:? € Ex. D2:GAME€‚GG(@? €œ€(:INPUT #16,Z$:OPEN #1,4,0,Z$:Z=USR(5576)Œ+@%(BINLOAD Completed.((+$ÈL B( Creating DEC)@L@@D:DECÒ++(@CLOSE #1:CLR :DN=PEEK(769)ÜMM(@*DIM DN$(6),ZZ$(16),Z$(5),Z(4):OPEN #1,4,0,€K:€:? €á44(@!}Enter Decimal Number up to 65535€æFF(@? €œ€:DN$=€D1:DEC€:DN$(2,2)=STR$(DN)ðVV(@? €œ€ :FOR I=1 TO 4:Z(I)=0:NEXT I:ZZ$=€0123456789ABCDEF€ú66(@? €œ€:FOR I=1 TO 5:GET #1,ZÿRR(@A:IF Z>47 AND Z<59 THEN ? CHR$(Z);:Z$(I,I)=CHR$(Z):NEXT I:CLOSE #1CC(@? €}€%:Z=VAL(Z$):FOR I=1 TO 4:Z(I)=0:NEXT INN(@? €}€0:ZZ=INT(Z/4096):IF ZZ>0 THEN Z(1)=ZZ:Z=Z-4096*ZZLL(@? €}€.:ZZ=INT(Z/256):IF ZZ>0 THEN Z(2)=ZZ:Z=Z-256*ZZ"JJ(@? €}€,:ZZ=INT(Z/16):IF ZZ>0 THEN Z(3)=ZZ:Z=Z-16*ZZ,%%(@? €}€:Z(4)=Z6ii(@? € œDECIMAL €;Z$;€ = €.;:FOR I=1 TO 4:? ZZ$(Z(I)+1,Z(I)+1);:NEXT I:? €7(@ HEX€@``(@? €œPress SPACE BAR to Continue,€:? €H to Convert HEX Numbers,€E==(@:? €Any other Key to Quit.€ :CLOSE #1JLL(@? €œ€ :OPEN #1,4,0,€K:€:GET #1,Z:CLOSE #1:O<<(@IF Z=72 THEN DN$(4)=€HEX€ :ENTER DN$T''(@IF Z=32 THEN ENTER DN$^.@!(DEC Completed.$(. AR B!(Creating DELETE,@R@@D:DELETEšUU(@'CLOSE #1:CLR :POKE 710,66:DIM Z$(18):? €}Which File to DELETE?€¤YY(@? € Ex. D2:DATA.EXE€:INPUT #16,Z$:? € }Deleting €;Z$:©..(@POKE 710,148:XIO 33,#1,0,0,Z$®*@$(DELETE Completed.'(*$ôL B( Creating DIR)@L@@D:DIRþgg(@CLOSE #1:CLR :DIM Z$(18):Z$=€D1:*.*€:? € }Which Drive?€ :OPEN #1,4,0,€ÿEE(@K:€-:GET #1,Z:CLOSE #1:IF Z<49 OR Z>56 THEN STOP cc(@? €}€E:Z$(2,2)=CHR$(Z):OPEN #1,7,0,Z$:FOR I=1 TO 66:INPUT #1,Z$:? Z$:NEXT I'@!(DIR Completed.$('$XP B (Creating ERROR+@P@@D:ERRORbff(@1CLR:CLOSE #1 :DN=PEEK(769):DIM DN$(8),Z$(42):DN$=€D1:ERROR€:DN$(2,2)=STR$(DN)lii(@? €}Enter ERROR # €=;:FOR I=1 TO 5:GET #16,Z:IF Z<155 THEN Z$(I,I)=CHR$(Z):NEXT Iv(((@? €}€ :Z=VAL(Z$)€==(@? €}€:IF Z=1 THEN Z$=€No Error€ŠHH(@? €}€:IF Z=2 THEN Z$=€Insufficient Memory€”@@(@? €}€:IF Z=3 THEN Z$=€ Value Error€žGG(@? €}€:IF Z=4 THEN Z$=€Too Many Variables€¨HH(@? €}€:IF Z=5 THEN Z$=€String Length Error€²FF(@? €}€:IF Z=6 THEN Z$=€Out of Data Error€¼NN(@? €}€:IF Z=7 THEN Z$=€Number Greater than 32767€ÆJJ(@? €}€:IF Z=8 THEN Z$=€Input Statement Error€ÐNN(@? €}€:IF Z=9 THEN Z$=€Array or String DIM Error€ÚMM(@? €}€:IF Z=10 THEN Z$=€Argument Stack Overflow€ä``(@? €}€:IF Z=11 THEN Z$=€*Floating Point Overflow or Underflow Error€îDD(@? €}€:IF Z=12 THEN Z$=€Line Not Found€øOO(@? €}€:IF Z=13 THEN Z$=€No Matching FOR Statement€CC(@? €}€:IF Z=14 THEN Z$=€ Line Too Long€ OO(@? €}€:IF Z=15 THEN Z$=€GOSUB or FOR Line Deleted€BB(@? €}€:IF Z=16 THEN Z$=€ RETURN Error€ CC(@? €}€:IF Z=17 THEN Z$=€ Garbage Error€*NN(@? €}€:IF Z=18 THEN Z$=€Invalid String Character€4KK(@? €}€:IF Z=19 THEN Z$=€LOAD Program Too Long€>HH(@? €}€:IF Z=20 THEN Z$=€Bad Channel Number€HEE(@? €}€:IF Z=21 THEN Z$=€LOAD File Error€RBB(@? €}€:IF Z=128 THEN Z$=€ BREAK Abort€\JJ(@? €}€:IF Z=129 THEN Z$=€IOCB Already Opened€fII(@? €}€:IF Z=130 THEN Z$=€Nonexistent Device€pQQ(@? €}€:IF Z=131 THEN Z$=€IOCB Opened for WRITE Only€zFF(@? €}€:IF Z=132 THEN Z$=€Invalid Command€„NN(@? €}€:IF Z=133 THEN Z$=€Device or File Not Open€ŽFF(@? €}€:IF Z=134 THEN Z$=€Bad IOCB Number€˜PP(@? €}€:IF Z=135 THEN Z$=€IOCB Opened for READ Only€¢HH(@? €}€:IF Z=136 THEN Z$=€EOF (End of File)€¬GG(@? €}€:IF Z=137 THEN Z$=€Truncated Record€¶EE(@? €}€:IF Z=138 THEN Z$=€Device Timeout€ÀAA(@? €}€:IF Z=139 THEN Z$=€ Device NAK€ÊOO(@? €}€:IF Z=140 THEN Z$=€Serial Bus Framing Error€ÔJJ(@? €}€:IF Z=141 THEN Z$=€Cursor Out of Range€ÞII(@? €}€:IF Z=142 THEN Z$=€Serial Bus Overrun€èPP(@? €}€:IF Z=143 THEN Z$=€Serial Bus Checksum Error€òHH(@? €}€:IF Z=144 THEN Z$=€Device Done Error€üVV(@? €}€:IF Z=145 THEN Z$=€Read After Write Compare Error€OO(@? €}€:IF Z=146 THEN Z$=€Function Not Implemented€GG(@? €}€:IF Z=147 THEN Z$=€Insufficient RAM€OO(@? €}€:IF Z=150 THEN Z$=€Serial Port Already Open€RR(@? €}€:IF Z=151 THEN Z$=€Concurrent Mode Not Enabled€SS(@? €}€:IF Z=152 THEN Z$=€Illegal User-Supplied Buffer€SS(@? €}€:IF Z=153 THEN Z$=€Active Concurrent Mode Error€QQ(@? €}€:IF Z=154 THEN Z$=€Concurrent Mode Not Active€JJ(@? €}€:IF Z=160 THEN Z$=€Device Number Error€$JJ(@? €}€:IF Z=161 THEN Z$=€Too Many OPEN Files€.@@(@? €}€:IF Z=162 THEN Z$=€ Disk Full€8II(@? €}€:IF Z=163 THEN Z$=€Fatal System Error€BKK(@? €}€:IF Z=164 THEN Z$=€File Number Mismatch€LDD(@? €}€:IF Z=165 THEN Z$=€ Bad File Name€VNN(@? €}€:IF Z=166 THEN Z$=€POINT Data Length Error€`BB(@? €}€:IF Z=167 THEN Z$=€ File Locked€jJJ(@? €}€:IF Z=168 THEN Z$=€Invalid XIO Command€tEE(@? €}€:IF Z=169 THEN Z$=€Directory Full€~EE(@? €}€:IF Z=170 THEN Z$=€File Not Found€ˆDD(@? €}€:IF Z=171 THEN Z$=€ POINT Invalid€’AA(@? €}€:IF Z=172 THEN Z$=€ DOS 1 File€œAA(@? €}€:IF Z=173 THEN Z$=€ Bad Sector€¦QQ(@? €}€:IF Z=255 THEN Z$=€FORMATTING Error (DOS 2.5)€°FF(@? €}ERROR €;Z;€ = €;Z$:? €€º[[(@? €œPress SPACE BAR to Continue.€:? €Any Other KEY to QUIT.€Äaa(@ OPEN #1,4,0,€K:€:? €œ€):GET #1,Z:CLOSE #1:IF Z=32 THEN ENTER DN$Î)@#(ERROR Completed.&()$B( Creating HEX@B@@D:HEXJJ(@6CLOSE #1:CLR :DN= PEEK(769):DIM DN$(6),Z$(4),ZZ$(4):? €#II(@}Enter HEX Number to Convert.€ :OPEN #1,4,0,€K:€(FF(@? €œ€:DN$=€D1:HEX€:DN$(2,2)=STR$(DN)2(@? €œ€7pp(@_:FOR I=1 TO 4:GET #1,Z:IF Z>47 AND Z<58 OR Z>64 AND Z<71 THEN Z$(I,I)=CHR$(Z):? CHR$(Z);:NEXT I<DD(@? €}€:CLOSE #1:ZZ$=€0000€ :Z=LEN(Z$)FAA(@? €}€#:ZZ$(1+4-Z)=Z$:Z$=ZZ$(1,1):Z=0:ZZ=0P[[(@? €}€:Z=Z$=€F€*15+Z$=€E€*14+Z$=€D€*13+Z$=Q(@€C€UZZ(@*12+Z$=€B€*11+Z$=€A€*10+Z$=€9€*9+Z$=€8€*8ZKK(@? €}€:Z=Z+Z$=€7€*7+Z$=€6€*6+Z$=€\WW(@5€*5+Z$=€4€*4+Z$=€3€*3+Z$=€2€*2+Z$=€1](@€^..(@:Z=Z*4096:ZZ=ZZ+Z:Z$=ZZ$(2,2)dOO(@? €}€:Z=Z$=€F€*15+Z$=€E€*14+Z$=€De(@€*13+Z$=€iTT(@C€*12+Z$=€B€*11+Z$=€A€*10+Z$=€9€*9+Z$=j(@€8€*8nQQ(@? €}€:Z=Z+Z$=€7€*7+Z$=€6€*6+Z$=€5€o (@*5+Z$=€4€s``(@*4+Z$=€3€*3+Z$=€2€*2+Z$=€1€:Z=Z*256:ZZ=ZZ+Z:Z$=ZZ$(3,3)xQQ(@? €}€:Z=Z$=€F€*15+Z$=€E€*14+Z$=€D€y!!(@*13+Z$=€C€}ZZ(@*12+Z$=€B€*11+Z$=€A€*10+Z$=€9€*9+Z$=€8€*8‚QQ(@? €}€:Z=Z+Z$=€7€*7+Z$=€6€*6+Z$=€5€ƒ (@*5+Z$=€4€‡__(@*4+Z$=€3€*3+Z$=€2€*2+Z$=€1€:Z=Z*16:ZZ=ZZ+Z:Z$=ZZ$(4,4)ŒQQ(@? €}€:Z=Z$=€F€*15+Z$=€E€*14+Z$=€D€!!(@*13+Z$=€C€‘ZZ(@*12+Z$=€B€*11+Z$=€A€*10+Z$=€9€*9+Z$=€8€*8–QQ(@? €}€:Z=Z+Z$=€7€*7+Z$=€6€*6+Z$=€5€— (@*5+Z$=€4€›LL(@*4+Z$=€3€*3+Z$=€2€*2+Z$=€1€:ZZ=ZZ+Z HH(@? €œHEX €;ZZ$;€ = €;ZZ;€ DECIMAL€ªBB(@? €œPress SPACE BAR to continue,€:? €¯SS(@D to Convert DECIMAL Numbers,€:? €Any Other Key to Quit.€´aa(@? €œ€ :OPEN #1,4,0,€K:€):GET #1,Z:CLOSE #1:IF Z=32 THEN ENTER DN$¾<<(@IF Z=68 THEN DN$(4)=€DEC€ :ENTER DN$È'@!(HEX Completed.$('$ÜR B!(Creating DRIVES,@R@@D:DRIVESægg(@(IF PEEK(1801)>16 OR PEEK(1801)=0 THEN ? €}NOT COMPATIBLE with this DOS.€:STOP ðDD(@!CLOSE #1:CLR :DIM Z$(11),Z(8):Z$=€ NOT Enabled€ú88(@'FOR Z=1 TO 8:Z(Z)=1:NEXT Z:Z=PEEK(1802)<<(@? €}€:IF Z>=128 THEN Z(8)=4:Z=Z-128::(@? €}€:IF Z>=64 THEN Z(7)=4:Z=Z-64::(@? €}€:IF Z>=32 THEN Z(6)=4:Z=Z-32"::(@? €}€:IF Z>=16 THEN Z(5)=4:Z=Z-16,88(@? €}€:IF Z>=8 THEN Z(4)=4:Z=Z-8688(@? €}€:IF Z>=4 THEN Z(3)=4:Z=Z-4@88(@? €}€:IF Z>=2 THEN Z(2)=4:Z=Z-2J22(@? €}€:IF Z>=1 THEN Z(1)=4T__(@? €}€:FOR Z=1 TO 8:? €Drive €;Z;€ is €;Z$(Z(Z)):NEXT Z^gg(@? €&Would you like to change this set up?€ :OPEN #1,4,0,€K:€ :GET #1,Z:c--(@CLOSE #1:IF Z<>89 THEN STOP h[[(@? €#}Press Numbers of Drives to Enable.€:FOR Z=1 TO 8:Z(Z)=0:NEXT ZrWW(@?€œ€:FOR I=1 TO 4:OPEN #1,4,0,€K:€:GET#1,Z:CLOSE #1:wUU(@"IF Z<57 AND Z>48 THEN Z(Z-48)=1:? €DRIVE €;Z-48;Z$(4):NEXT I|cc(@QZ=1:FOR I=1 TO 8:Z(I)=Z(I)*Z:Z=Z*2:NEXT I:Z=0:FOR I=1 TO 8:Z=Z+Z(I):NEXT I:IF Z>0""(@ THEN POKE 1802,Z†(@ Z=USR(58484)*@$(DRIVES Completed.'(*$¤N B( Creating LOCK*@N@@D:LOCK®GG(@CLOSE #1:CLR :DIM Z$(18):? €}Which File to LOCK?€¸ff(@? € Ex. D2:DATA.EXE€:INPUT #16,Z$:? €Locking €;Z$:XIO 35,#1,0,0,Z$Â(@"(LOCK Completed.%(($ÖR B!(Creating UNLOCK,@R@@D:UNLOCKàII(@CLOSE #1:CLR :DIM Z$(18):? €}Which File to UNLOCK?€êhh(@? € Ex. D2:DATA.EXE€:INPUT #16,Z$:? € Unlocking €;Z$:XIO 36,#1,0,0,Z$ô*@$(UNLOCK Completed.'(*$R B!(Creating RENAME,@R@@D:RENAMEII(@CLOSE #1:CLR :DIM Z$(18):? €}Which File to RENAME?€UU(@? € Ex. D2:OLDNAME,NEWNAME€:INPUT #16,Z$:XIO 32,#1,0,0,Z$&*@$(RENAME Completed.'(*$lX B$(Creating ERROR.164/@X@@ D:ERROR.164vll(@-IF PEEK(4149)<>44 AND PEEK(4149)<>234 THEN ? €}NOT COMPATIBLE with this DOS.€:STOP €jj(@CLOSE #1:CLR :? €}Press Ø to Disable ERROR 164.€:? €This will allow Loading Š44(@!files that cause an ERROR 164.€”VV(@? €<œBe aware that the DATA will probably not be 100% intact.€žXX(@? €=œPress any other Key to Enable Normal ERROR 164 handling.€¨<<(@ :OPEN #1,4,0,€K:€:GET #1,Z:CLOSE #1²TT(@CPOKE 4148,208:POKE 4149,44:IF Z=88 THEN POKE 4148,234:POKE 4149,234¼-@'(ERROR.164 Completed.*(-$ÐV B#(Creating OPENFILE.@V@@ D:OPENFILEÚgg(@(IF PEEK(1801)>16 OR PEEK(1801)=0 THEN ? €}NOT COMPATIBLE with this DOS.€:STOP äcc(@CLOSE #1:CLR :Z=PEEK(1801):? €}€;Z;€ Buffers are set up by this DOS.€îKK(@? €€;Z;€ Single Density or € ;INT(Z/2);€óII(@6 Double Density Files may be opened at the same time.€øSS(@? €Would you like to change this?€ :OPEN #1,4,0,€K:€ý77(@&:GET #1,Z:CLOSE #1:IF Z<>89 THEN STOP LL(@? €1}How many Buffers would you like DOS to set up?€WW(@ :OPEN #1,4,0,€K:€-:GET #1,Z:CLOSE #1:IF Z<49 OR Z>57 THEN STOP  ,,(@POKE 1801,Z-48:Z=USR(58484),@&(OPENFILE Completed.)(,$4V B#(Creating WRITEDOS.@V@@ D:WRITEDOS9>>(@CLOSE #1:CLR :DIM Z$(10):Z$=€ D1:DOS.SYS€>RR(@? €}Write DOS.SYS to which drive?€ :OPEN #1,4,0,€K:€C>>(@-:GET #1,Z:CLOSE #1:IF Z<49 OR Z>56 THEN STOP HQQ(@? €œPut Disk in Drive €;Z-48;€ and Press RETURN.€MOO(@ :Z$(2,2)=STR$(Z-48):OPEN #1,4,0,€K:€:GET #1,Z:CLOSE #1Rgg(@? €œWriting DOS.SYS to Drive € ;Z$(2,2);€. €:OPEN #1,8,0,Z$:CLOSE #1\,@&(WRITEDOS Completed.)(,$€D1:ENHANCE.BAS