home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / genie-commodore-file-library / Information / HACK5C.SFX / hack5-8 < prev   
Encoding:
Text File  |  1990-02-12  |  24.4 KB  |  493 lines

  1. 1142 REM ** COPY FILES **
  2. 1150 IF ME=1 THEN 2000
  3. 1151 PRINT CHR$(147);"COPY MS-DOS -> CBM-DOS":PRINT:PRINT
  4. 1160 IF DL<=0 THEN FC=0 : GOTO 1190
  5. 1170 FC=0 : FOR F=1 TO DL : IF MID$(DI$(0,F),6,1)="*" THEN GOSUB 1200
  6. 1180 NEXT F
  7. 1190 PRINT : PRINT"FILES COPIED =";FC;" - PRESS KEY"
  8. 1191 GETKEY A$ : GOTO 520
  9. 1200 FC=FC+1
  10. 1210 X$=MID$(DI$(0,F),19,8)+"."+MID$(DI$(0,F),29,3)
  11. 1220 CF$="":FORI=1TOLEN(X$):IF MID$(X$,I,1)<>" " THEN CF$=CF$+MID$(X$,I,1)
  12. 1230 NEXT
  13. 1231 IF RIGHT$(CF$,1)="." THEN CF$=LEFT$(CF$,LEN(CF$)-1)
  14. 1232 CF$=CF$+","+MID$(DI$(0,F),14,1)
  15. 1240 PRINT STR$(FC);". ";CHR$(34);CF$;CHR$(34);TAB(20);SZ(F)"BYTES";
  16. 1245 PRINT TAB(35);MID$(DI$(0,F),9,3)
  17. 1250 CL=CL(F) : LB=SZ(F) - INT(SZ(F)/65536)*65536
  18. 1260 IF CD>=8 THEN DOPEN#1,(CF$+",W"),U(CD) :ELSE IF CD<>0 THEN OPEN 1,CD,7
  19. 1265 IF CD<8 THEN 1288
  20. 1270 IF DS<>63 THEN 1288
  21. 1275 X$="Y" : PRINT "CBM FILE EXISTS; OVERWRITE (Y/N)";
  22. 1280 CLOSE 1 : INPUT X$ : IF X$="N" THEN FC=FC-1 : RETURN
  23. 1285 SCRATCH(CF$),U(CD)
  24. 1286 DOPEN#1,(CF$+",W"),U(CD)
  25. 1288 IF CD<8 THEN 1320
  26. 1300 IF DS<20 THEN 1320
  27. 1310 PRINT CHR$(18)+"CBM DISK ERROR: "+DS$ : FC=FC-1 : CLOSE1 : RETURN
  28. 1320 POKE PV+6,CL/256 : POKE PV+5,CL-PEEK(PV+6)*256
  29. 1330 POKE PV+8,LB/256 : POKE PV+7,LB-PEEK(PV+8)*256
  30. 1340 TR=0 : IF MID$(DI$(0,F),9,1)="A" THEN TR=255
  31. 1346 X=1 : IF CD=0 THEN X=0
  32. 1350 SYS PK+6,TR,X
  33. 1355 RREG X,X,X,S : E=PEEK(PV+2)
  34. 1356 IF (S AND 1) THEN GOSUB 380 : FC=FC-1
  35. 1360 IF CD<>0 AND CD<8 THEN CLOSE1
  36. 1370 IF CD>=8 THEN DCLOSE#1 : IF DS>=20 THEN 1310
  37. 1380 RETURN
  38. 1398 :
  39. 1399 REM ** REMOVE MS-DOS FILE **
  40. 1400 PRINT CHR$(147);"REMOVE (DELETE) SELECTED MS-DOS FILES:":PRINT
  41. 1401 IF ME<>0 THEN PRINT"MS-DOS MENU MUST BE SELECTED!" : GOTO2030
  42. 1402 A$="Y":INPUT"ARE YOU LIKE SURE ABOUT THIS (Y/N)";A$
  43. 1403 PRINT:IF A$="N" THEN GOTO 520
  44. 1410 IF DL<=0 THEN FC=0 : GOTO 1440
  45. 1420 FC=0 : F=1
  46. 1425 IF MID$(DI$(0,F),6,1)="*" THEN GOSUB 1470 : FC=FC+1 : F=F-1
  47. 1430 F=F+1 : IF F<=DL THEN 1425
  48. 1434 PRINT"FLUSHING..."
  49. 1435 SYS PK+12
  50. 1440 PRINT : PRINT"FILES REMOVED =";FC;" - PRESS KEY"
  51. 1445 SYS PK+21 : RREG A,X,Y : MA=A+Y*256+X*65536
  52. 1450 GETKEY A$ : GOTO 500
  53. 1470 PRINT"REMOVING ";CHR$(34);MID$(DI$(0,F),19,13);CHR$(34)
  54. 1490 POKE PV+10,DP(F)/256 : POKE PV+9,DP(F)-PEEK(PV+10)*256
  55. 1492 SYS PK+15
  56. 1494 DI$(0,F)=DI$(0,DL):SZ(F)=SZ(DL):DP(F)=DP(DL):CL(F)=CL(DL)
  57. 1495 DL=DL-1
  58. 1496 RETURN
  59. 1498 :
  60. 1499 REM ** COPY CBM FILES **
  61. 1500 PRINT CHR$(147);"COPY CBM-DOS TO CBM-DOS:":PRINT
  62. 1501 IF CF<=0 THEN PRINT"COMMODORE DIRECTORY NOT LOADED" : GOTO 2030
  63. 1502 X=0 : INPUT"DEVICE NUMBER TO COPY TO";X : PRINT
  64. 1503 IF X<=0 OR X>=64 THEN PRINT"BAD DEVICE NUMBER!" : GOTO 2030
  65. 1504 IF X=CD THEN PRINT"CANNOT COPY TO SAME DEVICE" : GOTO 2030
  66. 1505 FOR F=1 TO CF : IF MID$(DI$(1,F),6,1)<>"*" THEN 1570
  67. 1506 PRINT DI$(1,F) : OPEN1,CD,2,CN$(F)+",R"
  68. 1507 IF X<8 THEN OPEN 2,X,7 : GOTO1550
  69. 1508 CF$=CN$(F)+","+MID$(DI$(1,F),31,1)+",W"
  70. 1509 OPEN2,X,3,CF$
  71. 1510 IF DS<>63 THEN 1530
  72. 1511 CLOSE2
  73. 1512 X$="Y":INPUT"FILE EXISTS: OVERWRITE (Y/N)";X$ : IF X$="N" THEN 1560
  74. 1520 SCRATCH(CN$(F)),U(X)
  75. 1525 OPEN2,X,3,CF$
  76. 1530 IF DS>20 THEN PRINT CHR$(18);"CBM DOS ERROR: ";DS$ : GOTO1560
  77. 1550 SYS PK+24,1,2
  78. 1560 CLOSE1 : CLOSE2
  79. 1570 NEXT F
  80. 1580 PRINT : PRINT"FINISHED - PRESS A KEY" : GETKEY A$ : GOTO510
  81. 1998 :
  82. 1999 REM ** COPY CBM-DOS TO MS-DOS **
  83. 2000 PRINT CHR$(147);"COPY CBM-DOS TO MS-DOS:" : PRINT : PRINT
  84. 2010 IF DL>=0 THEN 2035
  85. 2020 PRINT"MS-DOS DIRECTORY MUST BE LOADED FIRST"
  86. 2030 PRINT : PRINT"PRESS ANY KEY" : GETKEY A$ : GOTO 510
  87. 2035 FC=0
  88. 2036 FOR F=1 TO CF : IF MID$(DI$(1,F),6,1)<>"*" THEN 2045
  89. 2040 FC=FC+1 : C$=CN$(F)
  90. 2041 PRINTMID$(STR$(FC),2);" ";MID$(DI$(1,F),14,16);MID$(DI$(1,F),34);":";
  91. 2042 GOSUB2050 : PRINT LEFT$(M$,8);".";RIGHT$(M$,3)
  92. 2043 TR=0 : IF MID$(DI$(1,F),9,1)="A" THEN TR=255
  93. 2044 GOSUB2100
  94. 2045 NEXT
  95. 2046 PRINT"FLUSHING..." : SYS PK+12
  96. 2047 SYS PK+21 : RREG A,X,Y : MA=A+Y*256+X*65536
  97. 2048 PRINT: PRINT"FILES COPIED =";FC : GOTO2030
  98. 2049 :
  99. 2050 X=INSTR(C$,".") : IF X=0 THEN M$=C$+"           " : GOTO2090
  100. 2055 X=LEN(C$)+1 : DO : X=X-1 : LOOP UNTIL MID$(C$,X,1)="."
  101. 2060 M$=LEFT$(LEFT$(C$,X-1)+"        ",8)
  102. 2070 X$=MID$(C$,X+1)+"   "
  103. 2080 M$=M$+X$
  104. 2090 M$=LEFT$(M$,11)
  105. 2091 FORI=1TO11:X$=CHR$(ASC(MID$(M$,I,1))AND127):IF X$="."ORX$=" " THEN X$="_"
  106. 2092 MID$(M$,I,1)=X$ : NEXT I
  107. 2093 I=8 : DO WHILE I>1 AND MID$(M$,I,1)="_" : MID$(M$,I,1)=" " : I=I-1 : LOOP
  108. 2094 I=11 : DO WHILE I>8 AND MID$(M$,I,1)="_" : MID$(M$,I,1)=" " : I=I-1 : LOOP
  109. 2098 RETURN
  110. 2099 :
  111. 2100 FORI=0TO0
  112. 2105 FOR DP=DB TO DB+32*(DC-1) STEP 32
  113. 2110 IF PEEK(DP)=0 OR PEEK(DP)=229 THEN 2140
  114. 2120 NEXT DP
  115. 2130 PRINT"NO FREE MS-DOS DIRECTORY ENTIRES" : RETURN
  116. 2140 NEXT I
  117. 2160 FORI=1TOLEN(M$):POKEDP+I-1,ASC(MID$(M$,I,1)) AND 127:NEXT
  118. 2170 FORI=11TO31:POKE DP+I,0:NEXT
  119. 2180 POKEDP+26,255:POKEDP+27,15
  120. 2190 POKE PV+10,DP/256:POKE PV+9,DP-PEEK(PV+10)*256
  121. 2200 OPEN1,CD,2,C$
  122. 2300 SYS PK+9,TR,1 : RREG X,X,X,S
  123. 2301 CLOSE1
  124. 2305 IF S AND 1 THEN E=PEEK(PV+2) : GOSUB380 : RETURN
  125.  
  126. ╠INE 2310 SETS THE DEFAULT ═╙-─╧╙ SELECTION, TRANSLATION, AND FILETYPE AFTER
  127. COPYING TO ═╙-─╧╙ DISK, BASED ON THE ├┬═-─╧╙ FILETYPE.  ├HANGE TO YOUR LIKING.
  128.  
  129. 2310 X$="     ASC  SEQ  ":IF TR=0 THEN X$="     BIN  PRG  "
  130. 2320 DL=DL+1 : D$=RIGHT$(" "+STR$(DL),3)+X$
  131. 2330 D$=D$+LEFT$(M$,8)+"  "+RIGHT$(M$,3)
  132. 2340 CL(DL)=PEEK(DP+26)+256*PEEK(DP+27)
  133. 2350 SZ=PEEK(DP+28)+256*PEEK(DP+29)+65536*PEEK(DP+30)
  134. 2360 DI$(0,DL)=D$+RIGHT$("        "+STR$(SZ),8)
  135. 2370 DP(DL)=DP
  136. 2380 SZ(DL)=SZ
  137. 2395 RETURN
  138. 2498 :
  139. 2499 REM ** LOAD COMMODORE DOS DIRECTORY **
  140. 2500 PRINT"LOADING COMMODORE DOS DIRECTORY..." : PRINT
  141. 2501 IF CD<8 THEN PRINT"CBMDOS DEVICE MUST BE >= 8!" : GOTO2030
  142. 2505 OPEN1,CD,0,"$0":GET#1,A$,A$ : CF=-1 : Q$=CHR$(34)
  143. 2506 DO
  144. 2507 SYS PK+27,1 : B=PEEK(PV+11)+256*PEEK(PV+12) : T$=CHR$(PEEK(PV+13))
  145. 2510 X=PEEK(PV+14)
  146. 2520 IF X=0 THEN EXIT
  147. 2530 X$="" : FOR I=PV+15 TO PV+15+X-1 : X$=X$+CHR$(PEEK(I)) : NEXT
  148. 2575 CF=CF+1
  149. 2590 IF CF=0 THEN PRINT"DISK="Q$X$Q$ : PRINT : GOTO2650
  150. 2600 CN$(CF)=X$
  151. 2610 A$=LEFT$(X$+"                 ",17)+T$+RIGHT$("       "+STR$(B*254),8)
  152.  
  153. ╠INES 2620 AND 2625 SET THE DEFAULT ├┬═-─╧╙ SELECTION AND TRANSLATION MODES
  154. BASED ON THE FILETYPE.  ├HANGE TO YOUR LIKING.
  155.  
  156. 2620 DI$(1,CF)=RIGHT$("  "+STR$(CF),3)+"     ASC  "+A$
  157. 2625 IF T$<>"S" THEN MID$(DI$(1,CF),9,3)="BIN"
  158. 2630 PRINT DI$(1,CF)
  159. 2650 LOOP
  160. 2670 CA=B*256 : CLOSE1 : RETURN
  161.  
  162. 6. ╒╒┼╬├╧─┼─ ╞╔╠┼╙
  163.  
  164. ╚ERE ARE THE BINARY EXECUTABLES IN UUENCODED FORM.  ╘HE ├╥├32S OF THE TWO
  165. FILES ARE AS FOLLOWS:
  166.  
  167. CRC32 = 3896271974 FOR "LRR-128"
  168. CRC32 = 2918283051 FOR "LRR.BIN"
  169.  
  170. ╘HE "LRR.128" FILE IS THE MAIN ┬┴╙╔├ PROGRAM AND THE "LRR.BIN" FILE CONTAINS
  171. THE MACHINE LANUGAGE DISK-ACCESSING ROUTINES.
  172.  
  173. BEGIN 640 LRR-128
  174. ═`1╨╙'`╚`╞2#'*#$╘-╥─[(─╤)5%1,12!2140@4─5!1$52(#$╥."!615)324].
  175. ═(#$╬,#`┬`&─<"╨"9(#╚@╞2)"62!#4─%)1╥!"4┼5#12`╨.2╒&14(═.3,@1─]2
  176. ═($,]2$%#2╘┼.1╥(@.┬"9`&\<#``┌`*╠<%`!#1++"*#$╪-┬─┌┬╥!#1+,╪(*<@
  177. ═0╘2╥."`┌((\@*┬╚@1$5&055,5"!#0─╘═1$]3($12259%("╚╩`.8<&0!$5╦(┘
  178. ═.─14╠├`@.┬`@├╥`╩*┬!-4╥╒$3╒,@1%))5─4╠(%194$4@*#`],34╫,2╨╥-34]
  179. ═,34╪,2─`'!╘:`(╠@1%:╥0╘0@╔╥!$5╦(╪.─14╠├`@.┬"/("╚╩($%,5$523─%4
  180. ═12!-4╥╒$3╒,@1%))5─4`(┴╘;`#╚`/┴╘>`)─@(─┼.251)04╤)6─┼.1╥╪╬+┬(@
  181. ═.┬"9`&`=*`#^`├`@.┬!02[+1*"(╪,#`╨(┬─@.┬!05╦)02┌╚╙,`")'3(`┬╥#"
  182. ═*%!6╩├`╔╠═$╚(─-"(┬─@╦╥#"*%!6╩├$╔╠├$╙,┬"╟(#8╨`,─=-╨"9(─╤/041)
  183. ═3─<@34%#2$┼.12!,04┘'54%'12!23╒5424┘%4╥╪╬+┬(@.┬#^$2),4┼(╬0─┼.
  184. ═(┬╤5*$-$*0#╩'3╨`┼╥!05╩╚╙+$16(#╚@┼╥!05╩╚╘+$14(#╚@╟┬!02╨`.'─8`
  185. ═┴┬!4+%(╠0┬╤)+$$─+$,╠1%0─+$9,)"╤)3"0╠6"╤8)`!('─<`0╘╘─╠┬)$3494
  186. ═0╥╠═42`┬╩╠<╚,3,╔╩╠<╚,30╒*:╦'*#$╫*:╦'*#$╒-╥╞╩╤╥@╥.2╞╩╤╥@╤.2─`
  187. ═:!┘(`$--)+)#322╩╤╥@╤-#<╔╩┬(╧4─┘8(╩╦'*#─╥*0"/'─╠`1$╥╥╩╙$@.┬!#
  188. ═1╦*╦,2`┌($╒%╠├`@.┬!#0;(╨(#╚@34&╥,`#!'┼``┴┬!$220╚,2╨╙,#`╔+$-,
  189. ═*#$╥."─╠4╒╚╚,3(╪*2╤$4"@╤,├@╔+$-.)"@╙,#`╔`.─>6@"+($14╠├(╒-2"╟
  190. ═($14)+(┬,34╪,2(@.═4@1%0─╠┬(╤-3<╤(@`/'╓0`1─╨─╠╠<╚,3─╔╩╠<╚,3<╔
  191. ═╩╠<╚,3<╔╩╠<╚,3<╔╩╠<╚,3<╔`#,?;@!)3"2╥1─╨─.╚%)╠├&─,3─┌24╨─╠─┼,
  192. ═)*╦'*#$╫*3╩"`#╘?>`")(#4╨,`!#'╪(`.@!┼'╪,`├╥`╩*┬!,3╘%$($╒3+41/
  193. ═4╥!$25)%0╒1/4┼─@*┬╚`├!^,`)─┬3$]!1$┼.1╥!-4╥╒$3╒,@1$┼214-43╒)9
  194. ═+┬╪╬(┬`┌()─`╟┴^6`)╪@4$╠@.┬">(%!+╩├,`╔╤^@`$1,╠├``╤1^╩`/╪)($),
  195. ═+$1#+$)(+%,@.┬!%╠╠(╚4%:╩,┬─`┘╤^╘`(╠@*%,@╦╥`╤*2"╟((╘@,╙@╨(#╚@
  196. ═1$╥╥╩╙$@.┬".``\@╧@"9(┼-#04┘.24┘'($╒3+41/4╥!$25)%0╒1/4┼─╬+┬╪┬
  197. ═(#╚@╞0`@(,@`1$*╥0─╥╩,├4╓╦$)(`%`@╙0">(%!+╩├(╤(#╚@_@─@0─╨╠6"╤"
  198. ═2"`┌($╒!╠─),╩─)(╦#(╒-╩╔8╦#8╒-3,╓`&$@╘@"+($1#╠├`@╔╥`╙-├``@2#<
  199. ═`($@1%"╥1$(@╔"!$0╩╚╙,╩╨╚1$.╦,2─@╩2`╙,@"┴(.8`┬╥#"*$10*;(╨(+`@
  200. ═╨┬┴$4"╞╥,├(┘(*<@,╙4╨`+╠@\`"+(,(╚1%"╩,3$╔(*\@,├0@╔╥`╙-3``╤╥#┌
  201. ═`$1,╠─1,╩├$`"╥$$`40─╠╠─╚(┬`┬╩╠0╚1$╨╔+#,╔╩┬(@("`@($%30╥`@4╘51
  202. ═("`┬(#╚@├╥`╩*┬!$149!54╤4(%-%3"]44┬]&5"`╩*@`╓(0╪!022╥(┬(@.┬"!
  203. ═2;(╨╔#$╨(#╚@022╥022╩╤╥├"*$10╩──╔*2`┌(((`4┬$8`4$─╠╠@╚020╠."╞╩
  204. ═(┬`@(╩╦)*$$─+#,╔`%\┴(@&9($1,.╥!!)`!╤(2╨!1"2╥1"2╩022╩(┬`@(@"2
  205. ═(38!0╘╨╚1$╨╔╠╠(╚1%"╩,├8╔╩├(╒-╩╙"*$10╩├(╫*0"^(4`!4╒╩╥╨┬┴$4*╚╥
  206. ═."╞╩,├4╓╦,(╚1%"╩,├─╔╩├8╒-3,╓╦,(╚1%"╩,╙`╔`.$┴2@%$220╚,"╤$3"╞╥
  207. ═1"2╩╥2@┬("`@("*╩╤"┴36┬─╠-┬─`[╥%/`410*$1,*;)$4`#](50!4╒╚╚1$╨╔
  208. ═╠┼-:``8┬7@&"($10``╨┬:`&.`!(┬<@$┌`#<┬<╨&/("╚╩(%)%4$]25"!-4╥╒$
  209. ═3╒,@1$┼32╥!%4┼)/4┬`╩*@!─(╟╨!╞2#'*#$╪*3╠┬35,═1$]3($1)4╘╠@15)2
  210. ═3╒(@(╥([╥┬├$*$4╔+#(╔.╨"1(╚8!╞2`┬("@─(├╧**-(╚12─╠,╥─[(┬─╠(%!2
  211. ═15-3($═%62╪┬.\<╚,30╓*0"?(╔`!╚?─@020@.┬".`*4┬╞@$┌`,`┬╞╨&/("╚╩
  212. ═(%-#4─5%3┬!(14%$24┘'("╚╩`-0┬╔`&9(,<╚,30╫*3╧'*#$╪*3╠``╥.┼`8╠@
  213. ═346╥,""╟()─┬35,═1$]3(├╠┌6+)-03╦5()─┬0╘)-1$]3(├╠┌6+)#00`╠(┌8!
  214. ═╞2#'*#$╘-┬─[(┬`@35,](├╧**,0╚1%8╔+#(╔.╥(┌(├═$5"0[`%─├╦@&9(┬`@
  215. ═0╘)-/2([╥┬├$*$-$*2╨╥*3╠┬("!&4─5%/2([╥┬├$*%@╔+#(╔`&,├╬`&9(#╚@
  216. ═├@!╔(\(!.@"$(\,!├╥`╩*┬!30╒)%14╪@1─]/5$┼.1╥`╩*@"╪(\╨!╞2!)3"0[
  217. ═(─0]1$┼2($╘]35-$158@1├╒#0─╒$158@0╙╒#3╒!9(%$]455)5"`@("(`[2/6
  218. ═`9─@("`@(")4/51/1╘=,12!2/5)%34]612!8/4-"34-062`╧/4╒%3┼4@*╥╘]
  219. ═4$<┬.╨#╙(^`!├@#┘(^╚!.@`2).╠!├╥`╩*┬!-04┼.(%)/551)3─4@*┬╚`("3╘
  220. ═`52╥,2`┌($.╥,``╚)/4!4╦(╨`$\─_@&+($╒%╠├`@╔╥!-1╦)$3#╔-0[(╥(#╚@
  221. ═╒2!-1╦)#1├╔-0[(╤`%──"`*-(#0╥,`!╦)`─"┬╥!-1;.╤,""╟(#4╘,@";)!("
  222. ═╞2`┬3┼5-("!3("!44─╪@(%194"`@1─┼,14┘!344@($585"`@3$5.1╒1((@#+
  223. ═)!╨"╞2`┬+2╘═("`═("`═+2╘@("╘═+2`@+2╘═+2╘═+2╘@("╘═+2`@+2╘═+2╘═
  224. ═(@#5)!╘"┬2`╒-3``!24>`╔─@(─┘532`@4╥`@5%).("!&24╤%3─%-12`@("`@
  225. ═("`@(%0@($╤%3─=42"(`-24?`╔─@(┬╘═+2`@+2`@+2╘═("`═+2╘═+2╘═+2╘═
  226. ═+2╘═+2╘═("╘@("╘═+2╘═+2(`/╥4╞`╚╘@-#8╨`%╚┼,`)"╠┼2╩,3<@.┬"+($*╤
  227. ═348@╔╥!"╠─╒&`',┼.@*9($9,)#╠┌((╠@5+%-1┬"╟(#4┘,`"3)40"@2!)╠┼0@
  228. ═╔"!"(#╚@╞2!$220╚344╠22─@.┬""`,@┼3@*+($╒&╠╙`@╔╥"9(,<╚,3@╔.╥(\
  229. ═1$┼214-43╒)9($┘/5"!,3╘%$140^(├╧'*#$╘-┬─`\25/`╚╠@34:╥,""╟()─@
  230. ═╤╥@╤."─[(├╤.3╥!&24╤%4╙╪┬.\<╚,30╓*0`#)┼@"┬╥!-1╦.╥,""╟(#8╓,``;
  231. ═)╞("╞2#(*$┼,)"╤2╩├4╔.\<╚,3@╔.╨`╙)╞╨"─2!#╩├$@┬2`╓,╙`╠-├0╨+#8╒
  232. ═,`!8)╟8"╞2"╞-"─[╥┬┴$220╚344╠5*╔2*2╨╒+#,╔(#╚@┬2`╓-├``?2:``╔─@
  233. ═╔├<╔.\╚╚1$──*$╒%+%2╩4┬─╠."╨╒*2`┌((─@-├8╨`*0╞┬@*9(*8╤,┬─[╥┬┴$
  234. ═220╚344╠5*╔2*2╨╤,╥╨╒*2`┌((─@-├8╨`*╪╞┼`*┴^2!!)`"^)╔╪"2;+4*$--
  235. ═)"╤!)"─`┘":╚`╚╠@34:╤,""╟()─@╥"┴)3"0╠4╩╚╒*3═$220╚344╠5*╔2*0#╘
  236. ═)╦("┬╥!)╠├`@╔╥`╓,#``/╥>\`╔$@22")(#<╓,"╨╤,#4╨+#$╤,3`╠.34╨+#$╤
  237. ═-3`╠,3`╨,"╨╤,#(╨+#<╙,"╨╪-├`╠.#8╨+#<╫,"╨╫.3`╠.#$╨+#@╙,"╨╪-3``
  238. ═9┬?!`╔$@2:╠╤-2")(#4╨,"╨╫,3,╠,30╨,"╨╫,3,╠,34╨,"╨╫,3,`;"?&`╔``
  239. ═<┬?'`├╚`─╥?(`╚\@*┬╚@5─%224]54╥!-14┘5($]05$┼/3┼,@*┬╚`╚┬?)`─╒%
  240. ═╠╩╠╚346╥,"─`╩╥?*`╚─╒,#``╒┬?:`╔─@╤╥@╤-#<╔.╥)(059%($%.($%715-/
  241. ═344@1$%9+┬(@.┬#^`├$╒`-╨╟┘`*````╚^`*+($╒%╠├$@╔╥"-(#0╥,"`┌((╘@
  242. ═,├4╨,"`┌((─@-3`╨`!╚╚_0*-(#0╥,"`┌((╘@,30╨(#╚@┬2`╒,#``-"@"`╒*╥
  243. ═4╩╠╤(#╚@┬╥!2╠╙`@╔╥!2╠─*╦5``^*`╨#┬2`╓,#``6"@6`╒*╥4╩╚╤(#╚@┬╥!4
  244. ═╩┼*╤0┬"╟(%*╥,`!┬*"`#┬2`╓,#``>╥@╩`╘.╥0┌╠╤(#╚@┬╥!#╠╙`@╔╥!#╠─╒#
  245. ═`(4╚-`.)(#8╨,`">*#╪#0[)#╩├$@.┬"+($.╤34,@╔╥!#╠├``╩"┴(`╪─@-├`╨
  246. ═`+╪╚4@-2╠├`@.┬!#╠├`@.┬")(#8╨,`#0*%╨#┬╥!-1╦.╥,""╟(#8╨,`#╨*&8#
  247. ═6+)4╩┼(@.┬"1($.╩,2"-(#@┘,"╨┘,3`╠.3,╨`!,╔<`.9(,@╚24╨─+%*╩-2─[
  248. ═1$──*$╒%+%@╔(#╚@┬2`╓,#``02┼┌`╪╠@╥┬┴$220╚344╠6"─╠-┬╨╤*;(┬("(@
  249. ═╔╥!8)+(┬*┬(@.═4@6"2╥(┬`┬`%╘╔┴`/**$1))"┴-12╤8*2╨╓+#$╔╠┼@─(#╚@
  250. ═├@"/*8╪#┬╥#**$1))"┴-12╤8*2╨┘+#$╔╠┬)!(┬"╟(%@─╠┬)"24╪┬(#╦5(%@─
  251. ═╠┬)!4╘,┬`*╠╔╞`/**$1))"┴-12╤8*2╨┘+#,╔╠┼@─(#╚@├@#>*:(#┬╥#**$1)
  252. ═)"┴-12╤8*2╨╤-"╨╤*;(┬4╥(@╔╥!8)+(┬4%)'(┬`┌╒2!8)+(┬4╘51(@#[*:╨#
  253. ═╥┬┴$220╚344╠6"─╠,30╠,╥╞╥6"0@.┬".``╘╩═@.+($╒&╠[(╨(*<@-├`╨`!╨╩
  254. ═╨`.!(%┬╥,2"─($╒&`#0╩╥@.1($.╩,2"-(#@┘,"╨┘,3`╠.3,╨`#╨╩╒`."(%@`
  255. ═1┬╦>`╪─@-3(╨`&,╩┌`-2╠├`┌┬╥!"╠─╒&(*<@5+(╤(#╚@┬2`╒,3``=┬╦╥`╒2╥
  256. ═5*╚╤."`┌((─@-3$╨`(@╩_`.+($╒&╠[(╨(*<@-├8╨`,`╩`012╠├`┌┬╥!4╠├$@
  257. ═╔╥!4╠─╒&╩╥┴-1╩╬╒*$╒&╦3$╪*:╨╤."╞╩,2`┌((╠@5+.╥348@╔╥`╒,3``╓2╚&
  258. ═!%2╥5*╠╤."`┌((╠@5+,╤(*<@5+(╤`.,╩$`2)(#4╤,`#╪*┴╚$╞2!)3"0[╤╥@╥
  259. ═-╥─[(─`┬.╨`>*╥0$┴2)-4╥╒$3╒,@1$5624-%($┘534)%4┬`╚."╘╙,"─┬.╘16
  260. ═`&(╦)02+($-$╠─16(*>9(─╒3+41/4╥!!3─0@0╘)-+41/4╥!$159)0╘53($╒5
  261. ═4╒0@0─4@1$┼&1─5214┘4(2(┌┬3$╨-├``├┬╠╬!%┬╥-╙$@.┬"%(─╒3+41/4╥!$
  262. ═159)0╘4@5%┼012`@*#<╤+╙@╤*2([6`#/*╙@$┬╥!8╠├@@╠"!8╠├@╤(+`@6+(╤
  263. ═-3@╤(*<@1%2╥,├4╒.─14)+(┬,34╪,2(@.═4@1%2╥,#╔$5"2╥(├$╒-╙$┬`/\╦
  264. ═0@27(%!6╩├,╠1%8@.┬"7(%!6╩├0╠1%0@.┬">(%!+(#╚@1$╥╥╩╙$@.┬!-0;(╨
  265. ═``─╠3`2)(#4╨,``>+%8$╞2!)3"0[╤╥@╥-╥─[(─`┬.╨!&+&`$┴2`┬0╘)-+41/
  266. ═4╥!$159)0╘4@3┼5-0─52("@╨+3,╨*2([0╘0`┬┬╤╩!(╠@0╘2╥1%8@╔┘─┬35,═
  267. ═1$]3($%.1"!#0─╘═1$]3($1%5─┼#15,@35535"!"12!$249&15)%3┼0┴(├╩)
  268. ═,3$╥,`"├+'0$0╘:╥╩╙$@.┬!#0;(╨(#╚@┬2`╒,#``╩2╤╒!#╚`╨"╤╓!(\@*┬╚@
  269. ═0╘]062!&24╤%4╥`╩*@#2+'╪$┬╥!-1;(╤(*<@,├`╨,`#\+'\$╞2#'*#$╘-╥─[
  270. ═(─-/4%─@35,═1$]3("╘^($-"32╒$3╒,┬.╔─┌╞0`8+8@$┬╥!$3+.╥,""╟($9#
  271. ═╠├`@.┬")(#$╤.3``3╥╓2!$9#╠├`@.┬"!($:╥,2"─($1,(#╚@┬╥#**$1))"@╨
  272. ═+$8╔+#8╠,2╞╥(┬╚┬(*<@├2`╤,├`╨`%<═╟`2"($8`@╥╓╞!)─@.┬"9(─9)3$53
  273. ═($-/4$┼%1"`](├═&0╙╠┬("╘@4%)%4╒,@2╘59(@"5+:<$╚?─@020@.┬")(#4╥
  274. ═,`"┴+;`$1─.╥1─.╩,0#.+;╚$6"2╥╥┬┴$220╚,"╤&*2╨╤.2╨╪*:╚┬+┬*╩╥┬┴$
  275. ═220╚,"╤&*2╨╥.2╨╙*0`)+╠0$0╘8─╠┬(┬.╚%)╠├&─╨╥┴8)"─┌┬╥#**%@─+$─╠
  276. ═,2╞╙╠2(@(┬"╟($-&)+)#1┬2╩╥┬┴8)"╤)+#$╔``\╬╙@2"`#@╬╙╨2+(,─╚0╘8─
  277. ═+#$╔╠┬(╬(┬"╟($-&)++(*$-&)"╙#*$-&)"╞╦,2─`62[0!$-&)+)#1┬2╩(┬╨┬
  278. ═╩╠╚╚1$──*#`╠1┬─╠,30╠,2─`├2[8!)─@╤"┴&0╥─[(┬╪@(├╧'*#,╘*3═#1┬0[
  279. ═╤╥@╙-"─[╚╙(╨*3═36┬┴&*2)"651%4╥([`*@╬╫029(*,╙-2─[╥┬┴$220╚,"╤&
  280. ═*2╨┘+#,╔`-<╬╪@1#3+)#3"┴&*2`┌($╤"╠┼-:*$8╔(*╠@═2┴36┬┴&*:╘╓-34╙
  281. ═-┬╞╠-├4╒,╙8`$2_╠!(╠@0╘2╤╠├@@╔╥#^#2,╤+"┴#1┬2╩(┬╤7(┬─╠52┴#1"─@
  282. ═.═4@┬╥!#1+.╤,""╟()\@,2╤#1"╨╫`",╧\02+($-$╠╙@@╔╥`╤,├@╪`#<╧]@2+
  283. ═($13╠[$╓,╥"╟(#$╥.#@`:┬_[!%@─╠┬)9(┬`┌()─@(─-"32!&24╤%($5825-4
  284. ═4╙╠@3╒9%4┼=2251%("┴9+╘╪╔(├╠`─┬\`!:`@,2`┌((4@6"0@.┬"+(%@─╠┬).
  285. ═(┬"╟($9#╠─9#╩╙$@.┬".`*,╧!07╥*$-&)"─╠52┴#1"─`╧2\&!?╪-(╙$╠*$-&
  286. ═)*╚┬+%<┬*2╤5*$-$*0#/+╨@%┬╥!#1+,╪(*<@,3,╥,`#┬+╤0%┬╥!$4[,╥,""╟
  287. ═(#$╙,├``&#`>!9─@╤╥@╤."╞╩(─-"32!$25-+($524─]2.┬`┬╩─13)"`┌($9#
  288. ═╠─9#╩╙$@.┬"@,2`┌((╪`0├`╚!9<@4%:╩-┬╤#3*╘╥-38@.┬"7(%!6╩├4╠0╘╥╦
  289. ═╨┬┴05╩╚╓*:╨╥-38`;#`╥!9<@4%:╩."╤,0╩╘╥-38@.┬"7(%!6╩├<╠3$*╦╨┬┴0
  290. ═5╩╚╪*:╨╥-38`┼├`\!512╠├`@.┬"+(,╚╚1$──*#`╠1┬─╠.2╨╤*;(┬02(@╔╥!4
  291. ═4╦(╥-34`╦3!"!5┬╥,2`┌((╠@0╘2╥,""╟(%┬╥,`"],$8%╟┬!02┌╚╓+%12+%@`
  292. ═╓#!+!?╪)(%@╠6"╤8+%,@.┬!%╠╠(╚4%:╩,┬─`^#!,!8╠@*%,@╦╥`╤*2"╟((╘@
  293. ═,╙@╨(#╚@1─.╥1─.╦,0`0,5`%┬╥!#1+.╤,""╧($-$╠╙@@╔╥"@,0`╒,5╚%┬╥!#
  294. ═1+&╥.""╟(/╪/(╙$@.┬"+($13╠;(╥,""╟(#$╙,3``.╙%─!8╪`03%╓!3╚`8#%╫
  295. ═!8\@*┬╚@4─5-3╒9%($╒3+41/4╥!&24╤%("╚╩`)@╤>`69(,<╚,30╫*3╠┬4─5-
  296. ═3╒9%("┴$14╤%5$4╔(%-%3$5#5$5$($╒3+41/4╥!&24╤%4╙╚┬.╔─`╙╙%┘!8╠@
  297. ═346╙╠3`@╔╥"9(─╒3+41/4╥!-14┘5($╒54╒0@0─4@4╘5,14-4140┴(┬`┌((─╥
  298. ═,#,╨``,╥>@5!)+(┬62(┌┴2)!4─4@64]5($╤)2╘4@4╒5212!!0─]55"!42$┼3
  299. ═("┴9+╘╪╔(├═!)``:,╟╠%╞3╩+($$─╠┬).(┬"╟((─@-3(╨`#8╥@@6+($1,╠[(╨
  300. ═(*<@1─.╥,"`┌((─@,30╘,`!%,╚╨%1─.╥,"`┌($:╥,0!┌,╔$%┬╥#**$1))"@╨
  301. ═+$8╔+#8╠,2╞╥(┬╚┬(*<@├2`╤-#<╨(#╚@1─.╥1─.╩,2`┌($:╥1╩╠╤`)4╥┼@5&
  302. ═╠─:╩,2`┌((╠@1╦.╥1$╨@╔╥`╤-#(╒`*@╥╞@69(─9,55-(24┘'+┬╪╬(@"╘,╔╠%
  303. ═╟┬!02┌╚╤,@#┴,╩`%╞2`┌()─┬1─┼,15,@4─5-3╒9%1"`](├═&0╙╠┬("╘@4%)%
  304. ═4╒,@2╘59(@`-,┌4%╟┬!02┌╚╥,2`┌(/╪)($$╠6"╤9(#╚@34&╥0:╔9╦#(╒-╩╔8
  305. ═╦#8╒-3,╓`!\╙╩@6┴^2!!)"`┌((─@-3`╨`$╪╙╧@69(┼)%34]624┘'("([╤╥@╙
  306. ═-"─[╥┬┴$220╚,"╤&*2╨╤.2╨╤,╥─[╤╥@╙-"─`@#/2!9<@4%:╩,3`╠1%`╚1┬╞═
  307. ═,├4╓(#╚@┼╥!05╩╚┘+$10*$8╔╩\(╚4%:╩,3`╔╦#(╒-@",,]0%╟┬!02┌╚╤-0#*
  308. ═,]8%1$──*#`╠1┬╞╥1$──*#`╠1$╨╔.┼-:*$8╔╠┼-:*$1,*3╔$4"┴&*;)$4"┴$
  309. ═3"─┌0╘╨╚1┬╞╥0╘╨╚1$╨╔`-8╙╒╨5$3+)$3*╠╤`-╨╙╓`6.`.(╙╓@4┌`/╘╙╓╨6/
  310. ═("╚╩($-/4%─@0╘)-($9)3$53("╚╩`"<╘╫`69(,<╚,30╫*3╠┬0╘]062!#0─╘═
  311. ═1$]3(%1/($-"32╒$3╒,┌(├╩9`&`╘╫06+($-&╠[(╨(*<@╞2)#3╘╒-3╘1/4─4@
  312. ═1$┼214-43╒)9($┘/5"!,3╘%$140┬(#╚@┬2`╥,#,╨`(╨╘╫@58╠├`@.┬"%(─1%
  313. ═5─┼#12!.54╒"15(@5$\@0╘]062!43╥([6"`┌()─`╨#3?!8╠@6+.╥,""╨(%┬╤
  314. ═╠├8╘(*<@╞2)"040@1$5624-%($┘534)%4┬$┬(#╚@┬2`╥,#,╨`/0╘╪`6+(%┬╥
  315. ═0╘0@╔╥"9(─-!3─┘/5"!#3╒!9(%1/(%-!344@1$5624-%(┬`┌((─@,├`╙,``├
  316. ═->$%@2!&╠├$@╔"!#1┬`┌((╠@╥┬┴$220╚,2╤&*2╨╓+#$╔╠[$┬*┬(@╔╥`╤-3<╨
  317. ═`$@╒╪@69($1))"@╤+$8╔(#╚@╟╙$╠0╘0╠,┬╤#3┬0╚1┬╞╩(┬╤2(@!─->,%┬╥!8
  318. ═╠╙@@╔╥"?(#(╠6"╨╫(#╚@┬3$╒-3``├37─!4-&)+)#3┬0╚1┬╞╩(┬╨┬╩╠╚╚1$──
  319. ═*#$╠1┬─╠,╙$╠,2╞╩(┬╤7(@"<->4%╟╙(╠6"╨╙+$-&)`"╨->8%┬╥!$4[.╤-├,@
  320. ═╔╥`╤-3,╨`+<╒┘╨6@,@#╫->@%6"2╥(┼─┬.╚4┬1─┼,12!%6$┼35%,┌($]615)7
  321. ═4─┼412`╚62].*2([6"0@.┬"+(%@─╠┬).(┬"╟(#$╒-├``"├;╨!?(╚0╘╪─*$8╔
  322. ═*2╤5*%@╔`!─╓]06?,┬╤8+#,╠0╘8─`$╘╓^@6+($13╠3(╨(*<@╞2#'*#$╪*3╠┬
  323. ═0╘)-($1/4╥!%4┼)/4├╚@(├═$4╥0@.┬"),34╓,`!=-@╪&╟┬!02┌╚╥-"╨╤+#(`
  324. ═:388!╩`╤(#╚@╚#(`<38┬!╚(@1@"┬-┬╨&╞2`┌()─┬1─┼.25-(140@+2!04─53
  325. ═4╥!!($═%62(@.┬"┴^2!!)"`┌((─╒,3``╩#;.!╙╚`╥╙;/!╪\@*┬╚@0╘]062!#
  326. ═0─╘═1$]3(%1/($╒3+41/4╥`╩*@#┌-═`'╞2#'*#$╘-╥─[(─-/4%─@0╘)-+41/
  327. ═4╥!43╥!-4╥╒$3╒,┌(┬`┌()─@.┬"9``╘╫╓@>+($1,╠;(╨(*<@,├`╙-0`┌-^0'
  328. ═╞2)-4╥╒$3╒,@1$┼214-43╒)9($╒54╒0@0─4@3$]!1$5$($9)4┼-4(@!├-^╪'
  329. ═╞2`┌()─┬4%)%4╒,@04┘9($═%62(@.┬"┴^2!!)"`┌((─@-3$╨`&╨╫\╨=&0[(╨
  330. ═`)╠╫]`>!($:╥,2"─($-&(#╚@┬╥#**$1))"@╤+$8╔+#8╠,2╞╙╠2(╩(┬"╟(#(╨
  331. ═-#4`╠╙?╪!╘9#╠─9#╩├$@.┬!#)+)#3┬0╚1┬─`[3?┘!┘╟**,0╚1─,╔+#(╔.╥(@
  332. ═(├╧**$1))"@╤+$8╔+#$╘+#$╓*3╧**$1))"@╤+$8╔+#,╘*3╠┬.┬([``\╪^@>-
  333. ═,├`╒,"`┌()─@╥"┴-)"╨╪*3╠┬+┬([╥2┴-)"╨╙*0`┘./╠'5%*╥,"`┌((╠@╥┬┴$
  334. ═220╚,2╤&*2╨┘+#$╔╠┬)!(┬"╟(%12╠├(╒-0!#./╨'├3(╤,#``23├]!╪(`9├├^
  335. ═!┘─┬1─╤54╘┴)3─<╬+┬╪┬(#╚@╟┬!02┌╚╤,@"2./\'╟┬!02┌╚╥,2`┌(/╪)($$╠
  336. ═6"╤9(#╚@34&╥0:╔9╦#(╒-╩╔8╦#8╒-3,╓`+8╪``┬9.┬"9(─9)3$53($-/4$┼%
  337. ═1"`](├═&0╥`┌((─╥,#,╨`+╨╪`0@┌`/(╪`@┴8╠═0╚0╥0╠(┬╪┬*2`┌((╠@6+(╨
  338. ═(*<@322╥0╥2╩(┬`@("`@("`@("`@(┬`┌((─╥,#─╨`"`┘!╨┴8╠╠,╚0╥0╔╩├$@
  339. ═.┬#╦(#╚@6+)8╩╙$@.┬#╠(/╨@╥┬┴#)"╤8+#$╔╠┬(╬(@!!.0╨(322╥╥"├(*$,─
  340. ═+%┬╦,2╞╩(┬`@("`@("`@(┬╨╪*0!8.18(6"2╥╥┬┴#)"╤8╩├$╔╩┬(@("`┬`&4┘
  341. ═(`┴-)+)-)*╔8)`!╒.2╚(322╥╥"┴-)"╨╤,2─`╠3─╦"(%)╠├&─,3$┌6"2╥╤╥├&
  342. ═*,╚╚320╠22╨╤*2╞╧,3(╫*3╩+(%@─╠┬(╬(╦!8)+(┬("(@╔╥!8)+(┬7╥(`╥#─╠
  343. ═",╚╚320╠22╨╤*;)8)"`┌(((@20`&.┬╘(2;(╪(#╚@┌╥#]($╞╤,2"╧(,╚╚320╠
  344. ═22╨╤*;(┬7╥(@.┬#**$╘─+$─╠,2╞╥(┬`┬(#╚@2;))╩╙$@.┬#╠`$4┌+@┴)╠├$╤
  345. ═(#╚@┌╥#]($╞╤.""╧(,╚╚320╠22╨╤*;(┬7╥(@.┬#**$╘─+$─╠,2╞╥(┬`┬(#╚@
  346. ═2;))╩╙$@.┬#╠`$╠┌,@┬.`%$┌,╨@┌`%╨┌-`┬!2;(╨╔#``?#╚┘"($@1%"╥1$(@
  347. ═╔"!$0╩╚╙,╩╨╚1$.╦,2─@╩2`╙,@"=.├╪(┬╥#"*$10*;(╨(+`@╨┬┴$4"╞╥,├(┘
  348. ═(*<@,├$╘,`"╞.─@(@┬!$4`#2.┼((╞2).3╥!&4─5%($╒3+41/4╥!$25)%0╒1/
  349. ═4┼─@14┘425)%4╥(@.┬".`-╚┌7`┬"($─`!├═╨"(%)╠├&─╨╥┴-)"─┌┼╘10╩─╞╦
  350. ═,2╙&*,╚╚320╠22╨╤*2─@╦╥`╤,├<┌@@`>.╫╚(@4╞╥,3&─,╙$┌┼╥!$4*╔)+#`┌
  351. ═@@`╫.╪0(┼╘10╩├(╓+#(╒-3╩71%"╩,├<╠,34`83╬.")<@4%:╩,3`╠1%"═,├4╓
  352. ═.╔<@4%:╩.2╤$4*╧"*%!6╩├$╨*:╨╥-38`<#╬8")\╤+$-$+#(╠0╥0`├3╧\")╪@
  353. ═4$╬╩.2╤44┬╨╤(#╚@_@─@6"╤8+%@╠4╨"4._╘(╚#$`═╙╠!"8╠@4╥"╧(#$@╔╥!%
  354. ═╠╠(╚4%:╩,┬─@.┬"-,╙@╨(#╚@├@#╬.╨8)6"2╥(┬`@("`@05-#("!315$@("(┌
  355. ═┬╥!44╦(╨(*<@6"2╥(┬`@("`@0─┼.("!04─<@("(`$3╨0"41,╠─1,╩├$@.┬!$
  356. ═)++)*"(@(╩╦$*$1,*2╨╙*:╔8)``╨/!╚)1"2╥1"2╩╥"┴-)"╨╪*:╚┬("`┬╩╠─╚
  357. ═320╠,╥─`43╨─"4-,*$1,*;+"*$10╩├(╓*:╚╥-3:╠╨┬┴$4*╚╥-╥─`?3╨╬"5-:
  358. ═╠╠(╚1%"╩,├@╔╩├(╒-╩╙"*$10╩├(┘*:╚╓-34╙-╩╙"*$10╩├,╨*0"─/#@)1$──
  359. ═*#`╠1$╨╔╠─0─╩╠─╚(┬`@("`@("`@(╩╦$*%-:*2╨╪*0"╥/$()1%`╚1$╨╔╠─10
  360. ═`,`\3`┼36┬┴$3"╞╥4╒╚`╤├╤;"8╪`╙#╙""3╚`]3╙#"8\@*┬╚@3$]!1"!#3╘╒-
  361. ═3╘1/4─4@1$]3($1)4─5#5$]262`╩*@`├/<0)╞2),3╘%$24┘'($-/34╒/1$]2
  362. ═12!$3╒,@1$┼214-43╒)9+┬╪╬(┬`┌()─`5╙╫%"8╠@0╘2╙.""╟()─┬0╘)-1$]3
  363. ═($1%5─┼#12!-55-4($)%(#╪](#@┴(┬`┌((─╥,#,╨`(4]╥0╞?,2╤#1"╨╨+"(─
  364. ═,"(┌╚2,╤+$$─+$$─(#╚@0╘:╥╩╙$@.┬!1)++'*#,╘*0"+/<╚)┌╨#$/<╠)╟┬!0
  365. ═2┌╚╥-╥╨╤(#╚@0╦+"*%!6╩├$╤*:╚╥-3:╠╨┬┴05╩╚╤,┬─@.┬!4)++'*,(╚4%:╩
  366. ═,3,╔*0#3/<╪)6++"*%!6╩├$╘*0#┴/=@)┬╥!8╠├`@╔╥#═`!<^╪@┼8)+(┬(┬`┌
  367. ═(($@2;)05╩╚╤-2"─(%!6╩├$╒╩┼┬╦,2`┌(%@─╠┼@─╩╠<╚╨┬┴)*2─@.┬""`",^
  368. ═#╨╔#1╦)#1╩╚╤`$╠^'@╩+($-&╠├`@╔╥"9(─1)4╘╠](┼$─6"11)"`┌()─@.┬")
  369. ═,├8╒,`!:/┬@*0╘╪─*$-&*;)8)`"9/├(*022╥╥"┴8)*╚┬("`@("`@("`@("`@
  370. ═("`@("`┬+#$╫*:╔4)*╦)*"(@("`@("`@(╩╦$*$*╠,├4╘*2╨╪*0#'/├╨*1$──
  371. ═*#$╠0╘8╔╠╠─╚(┬`@(╩╦$*$-&*2╨╙*:╚┬("`@("!!4╘,@("*╩020`[├┘!"╚╠@
  372. ═5"2╙╠2)3(┬"╟(,╚╚1$──*#$╠0╘8╔+#─╠,╥╞╥(─))3┬(`_├┘&"╔─@1$──*#$╠
  373. ┬0╘8╔``0_6@╦╠`!╚_;@╔#0;)"╦#(╒-┬`┌(*`╤(#╚@├@``````
  374. `
  375. END
  376. BEGIN 640 LRR.BIN
  377. ═`(!,#(),7(-,┴89,\╪=,,(5,┌(1,/8!,╚╪5,2╪┴,@(├+┴```````````````
  378. ═````````````````````````````````````````````````````````````
  379. ═````2*─`┴9"═(8`@╠?^╔;╥"3_┌┼5(*├_))`╨#┌─╨(*├_:""╚_╥20,`(88*─%
  380. ═├2"`.&"═`-╒)$(╘`╫6"╔""╨-╫/#[8""3@*╪,╫""*@(╔@╩1╚@6╪"0`6`@╦╧\─
  381. ═─##.&"!'_╥╨-╫""*@"";@(╘@@"─/╥0*╨):``()╬`╞56`╥,`&─/48╩0@@6╪"0
  382. ═`6"╔`2╨┬@#`"╩00@╩/\@╦╧]@2(╚╔`0╚*"@╚╠(╚`0`──0(%╬`:)`!8""╚_┌─!
  383. ═(*├_╩0─@╩/\@╦╧]╪&"!'_╥╨-╫""*@*╟╓╚(╩%`╚0#╩0"%!"╨┬@#`#($:!(%┌!
  384. ═╠`╟╞!*4$╥0╞0┌╤┴88*╟╓┴0*╞!!┬╔┬╟╒5@84#8``($`8.!`╨""┬";@(╘@@"─/
  385. ═╥0*0`6"┬`╩``╩0@╠#=╙╨^┌╘`╫4─0├0#=╦0╙<─0+(╘.╟╞`\╦0┘&!(┴`2**0$*
  386. ═"@╚*"0(╠(╚`0`──0(%╬`:)`!8""╚_┌4$(*├_╩0$@╩/\@╦╧]╪╩4"%!3@@1_]╪
  387. ═+`╫<╚@*@`*╘`╫<╘`╫=#╪104╔0/#╥╠0*-#-╥┼!4┼`┴06╔""╨-╫/#[╥-#=┘@/*
  388. ═╘-@8($?_+`╫<((╩`().`╦@╙<((╩`┬╚╘@@"─/╥0)88*─.├0#_╩?^-2╚"-2╪"┬
  389. ═!┘╒-@,╚0^╚╒,@!┴@╙4╩`╘!#╠2╪#0"╪┬8"┴┴╔┬╩┬╔]┴┴@├4╩`├─╬`┴`4@\8"0
  390. ═&:╘@@"─/╥0╧╨`├┴@(*:`╦4╩`╦─╬`╔`60╓╓"═2╚"╬2╪"─!4╨╞@╩+_┌#├╔$╦#┌
  391. ═┬!#╫&&─2╥*┬*8"!╠@╩(`╨`╞0"$┬8┌0╞╚:*(!╥&"&"╥!^@╚4(┴@╞$"╩4(╔@╞─
  392. ═"┬`╞@╔`!8(4,┴`╓┬`╩``╠0╥1!╠┬╤#)$&╥-#╘┘@╫╞!\╦0[>8*╔0╦)"╔`2╩0&%
  393. ═"╬8)╔0╟)`╔`&╩0"%">8(╤@╧0╬╤┴@..─"╠`&(╦├┌`╪`'╨!╨╩$!╥8'╔`<8;42`
  394. ═─`'(8"#├@╩+╓┴@:┬╟(8'╦├┌`3)&"('┌"╙4╩`╘`_╠2╪#0"─┬╔_╪╒*@(╒+@&@@
  395. ═├(%@```@╪╪*┬]╚8"╚╔╥&`╪╘╦@╪╨╠@╥`0@┘`!8*╘^@,─"╠`%@╦2╬#╦"╥#&&─!
  396. ═─`'((!"#8*─.├0#_╩0"@`"!^@┬`╞@╔`!8(4"┴`.@#;$"├3┌`╥0.0!┌─\├2"`
  397. ═.&"@$+$"╥0+0\:`6╠0*-/╪#)!+#╞╚!&╤`╚╒!@,╞!╠-═*2─╔*├4"`╚!.╤`╚╒"
  398. ═@,┬╤`╚╒#@*`8╠0+)"="_╚!╩╤`╠─"╘+>@#╦$"╥0'0╦┌╘_@`╚8:0&-18`8;4"`
  399. ═├42`╦4*`╦$.`..╒$@+`!┬(╒&@(╤'@*╘^@,─"╘`9.1╪!╬1╚`8╦4:`:0*-2("═
  400. ═1╪!╔`(╒)@*╟╓╚*"%!╚0'╩0&@`*╪_@""1@╔`!8*╟╓╚*:%!╚0'╦46`╚`"╬0(`@
  401. ═─8*0`6"╔]╩"╞╦─&`&&"%!80#1@-╩┴02╞`╨╚╞`╤┴┼!(4"┬╞4#┴0,8╔0)╔]╚4"
  402. ═╔0-╔╚(4#╚`*╤`╔─&`(@0^&`@1(2┼!2─!╘`┬┼!╥─/╩*4&8*4'╚@1&"&╦*╘/╩─
  403. ═"&`@1(2┼"┬─/┴0╩┼!2─!╘`^┼"84&╔0<╔\`4*┴0=,╤82┬!`8))@╦*╘/╞┼"╚4(
  404. ═╔0<╔#╨4)┴0>@`╦─&`)$"┬!#╪├$╥`8#┬═)╪#╔]╩╘╚@.╞╞2┬─'╩╩╟_╟4╓`8*`.
  405. ═├`#_╦2>`╦"┬`┴0*$`┌╟┼╚`"1`╩`:╠0*%#╠┬╤`╚4/╔0_)!9`#3-.$╩*4.('2$
  406. ═2)┴(╩0"%"84*╔0┌─#╥"2┴&┬%#╓┬%#─╨(┴:─.├0#_╦4╥`\"┌╔`(╒,@*─"┴6&╔
  407. ═`84.╦3^`┴6"╔]╩"@┴0*$`┌4.╚``@$(.0`6#╞#╠9@╘/#&8=#?╦46`┴0┌═0("%
  408. ═8*─`┴6&╔]╩"╞┴0*$`┌9┴╧4╓`\!"╔`)╒-@*4.╚``@$(/&`\8#┘@[╞8>8#┘@/&
  409. ═8-#=&&"@#╚╨`_┌─"╚`"%#╚0/┴&"$8:4.╔`\@=(2$`@4"╘`;╞8-`"┘╞'╞#═`"
  410. ═┘@^┼#╠╒(@*4/[4╞`─-╬╬/╚`&8"9┴╥═#┘╩0"─8*9┴8*5─╔&4@_╪*0`6"╔]╩"<
  411. ═┴6"$8:─`┴6*═/╚`*┴6.┼9*1┼('2$┴62$9<`%─!╥═)8"%8╩─!╦├┌`╪`'╨`╩─#
  412. ═+2:`╘`6╬)8#╨`╚5├(#6&8*8/╘`(88"#)_┘`$├2"`8*╟_╔╞/0`╩5┬┴6:@`+%@
  413. ═)`╪0!╩╩]]╚├╨`╥#2_\├$9═#╠&*5@96:%8)`"┘╞$╪╔6+┼9╚5┬╠`+&8┌5┬!6/0
  414. ═╤"#,_╤┴@╚`┌,`/^%#╚8/╦2.`╦"2`┴62$94╥┴┴┬#╩┴9`!8*5┼╥060]!┴@┴0┌&
  415. ═4*─`┴5&%5(558*─`┴6*%8┌94\`2╔`!┴@╔┼`@╤╧^0!(╘@@&"╔_┌93╘`*┼4╚5╞
  416. ═╚``@((>0`6#╨!┘%@╥,1╞╘/&$9┴┬┼8&5╞┴6"0`╬9┴&*5┬96:%8╔`"┘╞,╪╔5+┼
  417. ═9╚52╠`+&4┌54╘`:┼4@53╘+@@╙/^┼8@5├&&"┼5/`!`*51\`┬╔`(51╩0╚88*55
  418. ═*4#╨"*╟_┴52╔`!┴@(,__╔╔"&59`'├2"`(,╙_8"0.$`╥╩╧?:)\,?)#=`"┴5&┬
  419. ═_╤┴@╔5╦-2("┼6^╒)@)`!8*5:╔%╠@=(2$`@4"╘`:┼6╩1;&&#╞6═#<┘┼═,8╪<@
  420. ═8╪>0`6"%"80*╔60%9?`2╔62─9:8)┴╞2╞"╚9┼()*$3,>'╦2>`╦"┬`┴0*$`┌`:
  421. ═╔0╞1`╚5─╥*4*─0*%9:╟_╚`^%"80*╔62─92"2┴*5─╔&4@+8.0`6`8╔5╤┼8╚5<
  422. ═╔5╒┼8╪5=─`+╞7┴┴@╚`┌,`/\@╩8:╔`(5─┴66%6╪5<┴5╓%7╩─"┴5╩╔]╩"<┴6"$
  423. ═8:╘^@`╩╚╩0"%4╚13(+:&─`%@\`8@├(>0╪&"═)╪"╠*("%`╚0#╚@"@'+5<─0+(
  424. ═┌.`#─/8@╘╪088*`.├`#_┴@^╩╩0`@╩8:╔]╩"<┴6"$8:─`╚`2%4╚13(+:&╠!+╨
  425. ═$*╟╓╚)╥%8(1┴(#6&╠`-,6(┴@╚`┌,`/^╩(,;_─`╥╔`(╘╠@(╘╔@(╘╩@&`@┘(@@
  426. ═┘(@@┘(┬-*8`@┘(┬-*╚"╔`(╘╠@"#─┬,─┬\`├)0═#╒(,╙_8*``(.2(╥2+╨!╔─═
  427. ═@,├0\╪╨╠@"#─┬,─@\/╞-*╪`@┘(├)`-#┘(,╙_8"#/_[`%))!╨`6!╚:"#,_╘╥+
  428. ═┬```````````%`─-`),`````````````````````````("$┬(╥0┼)┬<╚*2╚╦
  429. ═+"╘╬+╙`╤,├,╘-38╫.#─┌.╙╨]/├]`╨<+#╤,7&╤\├)╥╠╧,╙<[/╘-'2╘]35╒═?8
  430. ═╓=╔;7%╒>7\!!0─-$149'2$┼*2╘╤-3─]045)35%565╒┴96═╧<╫=[?````````
  431. ═````````````````````````````````````````````````````````````
  432. ═````````````````````````````````````````````````````````````
  433. ═```````````````````````````````````````````````````````)````
  434. ═#0````````@``````````````"`┴(┬,─)28╟*"─╩*╥╨═+┬\╨,3(╙-#4╓-╙@┘
  435. ═.├╠\/3╪_0&%┬8╓1┼9╞=╚:6╔╦;&╒╬;╫!╤<╟-╘=79╫>'┼┌6╒╤=7┼\`````````
  436. ═````````````````````````````````````````````````````````````
  437. ═``````````````````````````````````````````````````````````!@
  438. ═04)#1$5&1╘┴)2─═,34┘/4%%24╒155┼=865╔[?'╒^?╨``````````````````
  439. 2``````````````````````!^````
  440. `
  441. END
  442.  
  443. 7. ╘╚┼ ╞╒╘╒╥┼
  444.  
  445. ╞UTURE IMPROVEMENTS TO THIS PROGRAM WOULD INCLUDE IMPLEMENTATION OF ═╙-─╧╙
  446. FORMATTING, MORE FILE MANIPLUATION COMMANDS (SUCH AS ╥ENAME), RE-WRITING THE
  447. USER-INTERFACE ┬┴╙╔├ PROGRAM IN MACHINE LANGUAGE, AND MAKING A FILE BUFFERING
  448. FACILITY FOR THOSE PEOPLE WITH ONLY ONE DISK DRIVE.  ╚OWEVER, ╔ DON'T INTEND
  449. TO DO MUCH MORE TO THIS PROGRAM.  ═Y INTENTIONS ARE TO PUT THIS FUNCTIONALITY
  450. INTO A DEVICE DRIVER FOR A NEW OPERATING SYSTEM (OR AT LEAST, OPERATING
  451. ENVIRONMENT) FOR THE ├-128.  ┴NYONE ELSE IS FREE TO IMPROVE THIS PROGRAM.
  452.  
  453. =============================================================================
  454. ╔N THE ╬EXT ╔SSUE:
  455.  
  456. ╘╫╧-╦┼┘ ╥╧╠╠╧╓┼╥
  457.  
  458. ╘HIS ARTICLE WILL EXAMINE HOW A TWO-KEY ROLLOVER MECHANISM WOULD WORK FOR THE
  459. KEYBOARDS OF THE ├-128 AND 64 AND WILL PRESENT ╦ERNAL-WEDGE IMPLEMENTATIONS
  460. FOR BOTH MACHINES.  ╫EBSTER'S DOESN'T SEEM TO KNOW, SO ╔'LL TELL YOU THAT THIS
  461. MEANS THAT THE MACHINE WILL ACT SENSIBLY IF YOU ARE HOLDING DOWN ONE KEY AND
  462. THEN PRESS ANOTHER WITHOUT RELEASING THE FIRST.  ╘HIS WILL BE USEFUL TO FAST
  463. TOUCH TYPERS.
  464.  
  465. ╘HE ╙ECOND ╥OB ╚UBBARD ═USIC ╥OUTINE
  466.  
  467.   ╔N THIS ARTICLE, THE SECOND ╥OB ╚UBBARD MUSIC ROUTINE WILL BE PRESENTED IN
  468. THE SAME WAY AS THE FIRST. ╞UTURE ISSUES WILL HOPEFULLY EXAMINE VARIOUS OTHER
  469. MUSIC ROUTINES INCLUDING VARIOUS ═ARTIN ╟ALWAY, ┬ENN ─AGLISH, ╩EOREN ╘EL,
  470. AND ═ANAICS OF ╬OISE ROUTINES. ╬OTE: ╒NFORTUNATELY THE AUTHOR COMPLETES
  471. UNIVERSITY (AND THUS LOSES INTERNET ACCESS) IN ┴UGUST 1993.
  472.  
  473. ─┘├╨ - ╚ORIZONTAL ╙CROLLING
  474.  
  475. ─┘├╨ - IS A NAME FOR A HORIZONTAL SCROLLER, WHERE CHARACTERS GO SMOOTHLY
  476. UP AND DOWN DURING THEIR VOYAGE FROM RIGHT TO LEFT. ╧NE POSSIBILITY IS A
  477. SCROLL WITH ONLY 8 CHARACTERS - ONE CHARACTER PER SPRITE, BUT A REAL DEMO
  478. CODER WON'T BE SATISFIED WITH THAT.
  479.  
  480. ═ULTI-╘ASKING ON THE ├=128 - ╨ART 2
  481.  
  482. ╘HIS ARTICLE WILL EXAMINE THE ACTUAL CODE THAT MAKES UP THE MULTI-TASKING
  483. KERNAL IN DETAIL AND INCLUDE SOME EXAMPLE PROGRAMS EXPLAINING IT USE.
  484.  
  485. ╘HE 1351 ═OUSE ─EMYSTIFIED
  486.  
  487. ╘HIS ARTICLE WILL EXPLAIN HOW THE 1351 MOUSE WORKS AS WELL AS PROVIDE AN EASY
  488. TO USE INTERFACE IN MACHINE LANGUAGE FOR BOTH BASIC AND MACHINE LANGUAGE
  489. PROGRAMMERS.
  490. ==============================================================================
  491.  
  492.  
  493.