home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / genie-commodore-file-library / Information / HACK4-5OF5.SFX / hack4.5-5
Encoding:
Text File  |  1990-02-12  |  21.7 KB  |  501 lines

  1. .%653!     STA CBM─ATA╠EN
  2. .%654!     BCS +
  3. .%655!     DEC CBM─ATA╠EN+1
  4. .%656!  +  LDA CBM─ATA╠EN
  5. .%657!     ORA CBM─ATA╠EN+1
  6. .%658!     BNE COMMIE╧UT═ORE
  7.  
  8. ╔F WE ARE FINISHED WITH THE CLUSTER, THEN CLEAR THE ├┬═ ╦ERNAL OUTPUT CHANNEL.
  9.  
  10. .%659!     JSR KERNEL├LRCHN
  11. .%660!     CLC
  12. .%661!     RTS
  13. .%662!
  14.  
  15. ╘HE FILE COPYING MAIN ROUTINE.  ╙ET UP FOR THE STARTING CLUSTER, AND CALL
  16. THE CLUSTER COPYING ROUTINE UNTIL END-OF-FILE IS REACHED.  ├HECKS FOR A
  17. ╬╒╠╠ CLUSTER POINTER IN THE DIRECTORY ENTRY TO HANDLE ZERO-LENGTH FILES.
  18.  
  19. .%663!  COPY╞ILE = *  ;( START├LUSTER, LEN═╠, .┴=TRANS═ODE, .╪=LFN ) : .├╙=ERR
  20. .%664!     LDY #$0E
  21. .%665!     STY $FF00
  22. .%666!     STA TRANS═ODE
  23. .%667!     STX LFN
  24. .%668!     LDA START├LUSTER
  25. .%669!     LDY START├LUSTER+1
  26. .%670!     STA CLUSTER
  27. .%671!     STY CLUSTER+1
  28. .%672!     JMP +
  29. .%673!  -  JSR COPY╞ILE├LUSTER
  30. .%674!     BCC +
  31. .%675!     RTS
  32. .%676!  +  LDA CLUSTER
  33. .%677!     CMP #$FF
  34. .%678!     BNE -
  35. .%679!     LDA CLUSTER+1
  36. .%680!     CMP #$0F
  37. .%681!     BNE -
  38. .%682!     CLC
  39. .%683!     RTS
  40. .%684!
  41.  
  42. ╘HIS IS THE TRANSLATION TABLE USED TO CONVERT FROM ┴╙├╔╔ TO ╨┼╘╙├╔╔.  ┘OU CAN
  43. MODIFY IT TO SUIT YOUR NEEDS IF YOU WISH.  ╔F YOU CANNOT REASSEMBLE THIS FILE,
  44. THEN YOU CAN SIFT THROUGH THE BINARY FILE AND LOCATE THE TABEL AND CHANGE IT
  45. THERE.  ┴N ENTRY OF $00 MEANS THE CORRESPONDING ┴╙├╔╔ CHARACTER WILL NOT BE
  46. TRANSLATED.  ┘OU'LL NOTICE THAT ╔ HAVE SET UP TRANSLATIONS FOR THE FOLLOWING
  47. ┴╙├╔╔ CONTROL CHARACTERS INTO ╨┼╘╙├╔╔: ┬ACKSPACE, ╘AB, ╠INEFEED (├╥), AND
  48. ╞ORMFEED.  ╔ ALSO TRANSLATE THE NON-╨┼╘╙├╔╔ CHARACTERS SUCH AS █, ▄, ▐, AND _
  49. ACCORDING TO WHAT THEY PROBABLY WOULD HAVE BEEN IF ├OMMODORE WASN'T SO
  50. CONCERNED WITH THE GRAPHICS CHARACTERS.
  51.  
  52. .%685!  TRANS┬UF = *
  53. .%686!         ;0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F
  54. .%687!  .BYTE $00,$00,$00,$00,$00,$00,$00,$00,$14,$09,$0D,$00,$93,$00,$00,$00 ;0
  55. .%688!  .BYTE $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ;1
  56. .%689!  .BYTE $20,$21,$22,$23,$24,$25,$26,$27,$28,$29,$2A,$2B,$2C,$2D,$2E,$2F ;2
  57. .%690!  .BYTE $30,$31,$32,$33,$34,$35,$36,$37,$38,$39,$3A,$3B,$3C,$3D,$3E,$3F ;3
  58. .%691!  .BYTE $40,$C1,$C2,$C3,$C4,$C5,$C6,$C7,$C8,$C9,$CA,$CB,$CC,$CD,$CE,$CF ;4
  59. .%692!  .BYTE $D0,$D1,$D2,$D3,$D4,$D5,$D6,$D7,$D8,$D9,$DA,$5B,$5C,$5D,$5E,$5F ;5
  60. .%693!  .BYTE $C0,$41,$42,$43,$44,$45,$46,$47,$48,$49,$4A,$4B,$4C,$4D,$4E,$4F ;6
  61. .%694!  .BYTE $50,$51,$52,$53,$54,$55,$56,$57,$58,$59,$5A,$DB,$DC,$DD,$DE,$DF ;7
  62. .%695!  .BYTE $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ;8
  63. .%696!  .BYTE $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ;9
  64. .%697!  .BYTE $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ;A
  65. .%698!  .BYTE $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ;B
  66. .%699!  .BYTE $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ;C
  67. .%700!  .BYTE $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ;D
  68. .%701!  .BYTE $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ;E
  69. .%702!  .BYTE $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ;F
  70. .%703!
  71.  
  72. ╘HIS IS WHERE THE TRACK CACHE, ETC. ARE STORED.  ╘HIS SECTION REQUIRES 11╦ OF
  73. STORAGE SPACE BUT DOES NOT INCREASE THE LENGTH OF THE BINARY PROGRAM FILE
  74. SINCE THESE STORAGE AREAS ARE ─┼╞╔╬┼─ RATHER THAN ALLOCATED WITH ".BUF"
  75. DIRECTIVES.  ╘HE ╒NIX TERMINOLOGY FOR THIS TYPE OF UNINITIALIZED DATA IS "BSS".
  76.  
  77. .%704!  ;====BSS STORAGE====
  78. .%705!
  79. .%706!  BSS = *
  80. .%707!  TRACKBUF   = BSS
  81. .%708!  CLUSTER┬UF = TRACKBUF+4608
  82. .%709!  FATBUF     = CLUSTER┬UF+1024
  83. .%710!  DIRBUF     = FATBUF+1536
  84. .%711!  END        = DIRBUF+4096
  85.  
  86. 5. ╒╙┼╥-╔╬╘┼╥╞┴├┼ ╨╥╧╟╥┴═
  87.  
  88. ╘HIS SECTION PRESENTS THE LISTING OF THE USER-INTERFACE ┬┴╙╔├ PROGRAM.  ┘OU
  89. SHOULD BE AWARE THAT YOU CAN EASILY CHANGE SOME OF THE DEFAULTS TO YOUR OWN
  90. PREFERENCES IF YOU WISH.  ╘HIS PROGRAM IS NOT LISTED IN THE ".%NNN!" FORMAT
  91. THAT THE ASSEMBLER LISTING IS SINCE YOU CAN RECOVER THIS LISTING FROM THE
  92. UUENCODED BINARY PROGRAM FILE.  ╘HIS PROGRAM SHOULD BE A LITTLE EASIER TO
  93. FOLLOW THAN THE ASSEMBLER LISTING SINCE ┬┴╙╔├ IS A SELF-COMMENTING LANGUAGE. :-)
  94.  
  95. 10 REM LITTLE RED READER, BY CRAIG BRUCE, 30-SEP-92, FOR C= HACKING NETMAG
  96. 11 :
  97.  
  98. ╘HESE LINES SET UP THE DEFAULT ├┬═-─╧╙ AND ═╙-─╧╙ DEVICE NUMBERS, TAKING CARE
  99. TO DISALLOW THEM TO BE THE SAME DEVICE.  ┘OU CAN CHANGE THIS TO YOUR OWN DRIVE
  100. CONFIGURATION.
  101.  
  102. 20 CD=PEEK(186)  : REM ** DEFAULT CBM-DOS DRIVE **
  103. 25 DV=9:DT=0  :  REM ** MS-DOS DRIVE, TYPE (0=1571,255=1581)
  104. 26 IF DV=CD THEN DV=8:DT=0 : REM ** ALTERNATE MS-DOS DRIVE
  105. 27 :
  106. 30 PRINT CHR$(147);"INITIALIZING..." : PRINT
  107. 40 BANK0 : PK=DEC("8000")
  108. 50 IF PEEK(PK+9)=DEC("CB") AND PEEK(PK+10)=131 THEN 60
  109. 55 PRINT"LOADING MACHINE LANGUAGE ROUTINES..." : BLOAD"LRR.BIN",U(CD)
  110. 60 POKE PK+16,DV : POKE PK+17,DT : SYS PK
  111.  
  112. ╔ "DIM" THE FOLLOWING VARIABLES BEFORE THE ARRAYS TO AVOID THE OVERHEAD OF
  113. PUSHING THE ARRAYS AROUND WHEN CREATING NEW SCALAR VARIABLES.
  114.  
  115. 70 DIM T,R,B,I,A$,C,DT$,FL$,IL$,X,X$
  116. 80 DIM DI$(128),CL(128),SZ(128)
  117. 90 IF DT=255 THEN DT$="1581" :ELSE DT$="1571"
  118. 100 FL$=CHR$(19)+CHR$(17)+CHR$(17)+CHR$(17)+CHR$(17)
  119. 110 IL$=FL$:FORI=1TO19:IL$=IL$+CHR$(17):NEXT
  120. 120 GOTO 500
  121. 130 :
  122. 131 REM ** LOAD MS-DOS DIRECTORY **
  123. 140 PRINT"LOADING DIRECTORY..." : PRINT
  124. 150 SYS PK : SYS PK+3
  125. 160 DL=0
  126.  
  127. ╘HE "RREG" INSTRUCTION RETURNS THE RETURN VALUES OF THE .┴, .╪, .┘, AND .╙
  128. REGISTERS FROM THE LAST "SYS" CALL.  ╔ CHECK THE 1-BIT OF THE .╙ REGISTER
  129. (THE ├ARRY FLAG) FOR ERROR RETURNS.
  130.  
  131. 170 RREG BL,DC,BH,S : E=PEEK(PK+15)
  132. 180 IF (S AND 1) THEN GOSUB 380 : RETURN
  133. 190 PRINT"SCANNING DIRECTORY..." : PRINT
  134. 200 DB=BL+256*BH
  135. 210 IF DC=0 THEN 360
  136. 220 FOR DP=DB TO DB+32*(DC-1) STEP 32
  137. 230 IF PEEK(DP)=0 OR PEEK(DP)=229 THEN 350
  138. 240 IF PEEK(DP+12) AND 24 THEN 350
  139. 250 DL=DL+1
  140.  
  141. ╘HIS NEXT LINE IS WHERE ╔ SET THE DEFAULT SELECTION STATUS, TRANSLATION TYPE,
  142. AND ├┬═ FILE TYPE FOR THE ═╙-─╧╙ FILES.  ┘OU CAN CHANGE THESE DEFAULTS SIMPLY
  143. BY OVERTYPING THE STRING IN   (  ▄  ▄▄▄  ▄▄▄  ) THE "╓" LOCATIONS.
  144.                                  ╓  ╓╓╓  ╓╓╓
  145. 260 D$=RIGHT$(" "+STR$(DL),3)+"     ASC  SEQ  " : REM ** DEFAULT SEL/TR/FT **
  146. 270 A$="" : FORI=0TO10 : A$=A$+CHR$(PEEK(DP+I)) : NEXT
  147. 280 A$=LEFT$(A$,8)+"  "+RIGHT$(A$,3)
  148. 290 PRINT DL; A$
  149. 300 D$=D$+A$+"  "
  150. 310 CL(DL)=PEEK(DP+26)+256*PEEK(DP+27)
  151. 320 SZ=PEEK(DP+28)+256*PEEK(DP+29)+65536*PEEK(DP+30)
  152. 330 DI$(DL)=D$+RIGHT$("    "+STR$(SZ),6)
  153. 340 SZ(DL)=SZ
  154. 350 NEXT DP
  155. 360 RETURN
  156. 370 :
  157. 371 REM ** REPORT MS-DOS DISK ERROR **
  158. 380 PRINT CHR$(18);"MS-DOS DISK ERROR #";MID$(STR$(E),2);
  159. 390 PRINT " ($";MID$(HEX$(E),3);"), PRESS KEY.";CHR$(146)
  160. 400 GETKEY A$ : RETURN
  161. 410 :
  162. 411 REM ** SCREEN HEADING **
  163. 420 PRINTCHR$(147);"MS-DEV=";MID$(STR$(DV),2);"    MS-TYPE=";DT$;
  164. 430 PRINT"    CBM-DEV=";MID$(STR$(CD),2):PRINT
  165. 440 RETURN
  166. 450 :
  167. 451 REM ** SCREEN FOOTING **
  168. 460 PRINT IL$;"D=DIRECTORY  M=MS-DEV  F=CBM-DEV Q=QUIT"
  169. 470 PRINT"T=TOGGLE-COLUMN, C=COPY-FILES, +/- PAGE";
  170. 480 RETURN
  171. 490 :
  172. 491 REM ** MAIN ROUTINE **
  173. 500 T=1 : C=0
  174. 510 R=0
  175. 520 GOSUB 420
  176. 530 PRINT "NUM  S  TRN  TYP  FILENAME  EXT  LENGTH"
  177. 540 PRINT "---  -  ---  ---  --------  ---  ------"
  178. 550 GOSUB 460
  179. 560 B=T+17 : IF B>DL THEN B=DL
  180. 570 PRINT FL$;: IF T>DL THEN 590
  181. 580 FOR I=T TO B : PRINT DI$(I) : NEXT
  182. 590 IF DL=0 THEN PRINT CHR$(18);"<NO FILES>";CHR$(146)
  183. 600 IF DL=0 THEN 660
  184. 610 PRINT LEFT$(IL$,R+5);CHR$(18);
  185. 620 ON C+1 GOTO 630,640,650
  186. 630 PRINT SPC(4);MID$(DI$(T+R),5,3) : GOTO 660
  187. 640 PRINT SPC(7);MID$(DI$(T+R),8,5) : GOTO 660
  188. 650 PRINT SPC(12);MID$(DI$(T+R),13,5) : GOTO 660
  189. 660 GETKEY A$
  190.  
  191. ╧H SHI^╚OOT.  ╔ SCREWED UP THE FOLLOWING LINE IN THE STRING AFTER THE
  192. "+CHR$(13)+" PART.  ┘OU'LL NOTICE THAT ╔ HAVE AVOIDED PUTTING CURSOR CONTROL
  193. CHARACTERS INTO THE STRINGS EVERYWHERE ELSE, BUT ╔ FORGOT TO DO THAT HERE.
  194. ╘HE "█STUFF▌" SHOULD BE ├URSOR╒P, ├URSOR─OWN, ├URSOR╠EFT, ├URSOR╥IGHT,
  195. ├URSOR╚OME, AND ├URSOR├╠╥ CONTROL CHARACTERS, RESPECTIVELY.  ╘HESE CHARACTERS
  196. GIVE THE INDEX FOR THE "ON" STATEMENT BELOW.
  197.  
  198. 670 I=INSTR("DMFTC+-Q "+CHR$(13)+"█STUFF▌",A$)
  199. 680 PRINT LEFT$(IL$,R+5);DI$(T+R)
  200. 690 IF I=0 THEN 600
  201. 700 ONIGOTO760,1050,1110,950,1150,1000,1020,730,860,860,770,790,810,830,850,500
  202. 710 STOP
  203. 720 :
  204. 721 REM ** VARIOUS MENU OPTIONS **
  205. 730 PRINT CHR$(147);"HAVE AN AWESOME DAY."
  206. 740 END
  207. 760 GOSUB 420 : GOSUB 140 : GOTO 500
  208. 770 R=R-1 : IF R<0 THEN R=B-T
  209. 780 GOTO 600
  210. 790 R=R+1 : IF T+R>B THEN R=0
  211. 800 GOTO 600
  212. 810 C=C-1 : IF C<0 THEN C=2
  213. 820 GOTO 600
  214. 830 C=C+1 : IF C>2 THEN C=0
  215. 840 GOTO 600
  216. 850 R=0 : C=0 : GOTO 600
  217. 860 IF DL=0 THEN 600
  218. 870 X=T+R : ON C+1 GOSUB 890,910,930
  219. 880 PRINT LEFT$(IL$,R+5);DI$(X) : GOTO 600
  220. 890 IF MID$(DI$(X),6,1)=" " THEN X$="*" :ELSE X$=" "
  221. 900 MID$(DI$(X),6,1)=X$ : RETURN
  222. 910 IF MID$(DI$(X),9,1)="A" THEN X$="BIN" :ELSE X$="ASC"
  223. 920 MID$(DI$(X),9,3)=X$ : RETURN
  224. 930 IF MID$(DI$(X),14,1)="S" THEN X$="PRG" :ELSE X$="SEQ"
  225. 940 MID$(DI$(X),14,3)=X$ : RETURN
  226. 950 IF DL=0 THEN 600
  227. 960 FOR X=1 TO DL
  228. 970 ON C+1 GOSUB 890,910,930
  229. 980 NEXT X
  230. 990 GOTO 520
  231. 1000 IF B=DL THEN T=1 : GOTO 510
  232. 1010 T=T+18 : GOTO 510
  233. 1020 IF T=1 THEN T=DL-(DL-INT(DL/18)*18)+1 : GOTO 510
  234. 1030 T=T-18 : IF T<1 THEN T=1
  235. 1040 GOTO 510
  236. 1050 PRINT IL$;CHR$(27);"@";
  237. 1060 INPUT"MS-DOS DEVICE NUMBER (8-30)";DV
  238. 1061 IF CD=DV THEN PRINT"MS-DOS AND CBM-DOS DEVICES MUST BE DIFFERENT!":GOTO1060
  239. 1070 INPUT"MS-DOS DEVICE TYPE  (71/81)";X
  240. 1080 IF X=8 OR X=81 OR X=1581 THEN DT=255:DT$="1581" :ELSE DT=0:DT$="1571"
  241. 1090 POKE PK+16,DV : POKE PK+17,DT : SYS PK
  242. 1100 GOTO 520
  243. 1110 PRINT IL$;CHR$(27);"@";
  244. 1120 INPUT "CBM-DOS DEVICE NUMBER (0-30)";CD
  245. 1130 IF CD=DV THEN PRINT"MS-DOS AND CBM-DOS DEVICES MUST BE DIFFERENT!":GOTO1120
  246. 1140 GOTO 520
  247. 1141 :
  248. 1142 REM ** COPY FILES **
  249. 1150 PRINT CHR$(147);"COPY FILES":PRINT:PRINT
  250. 1160 IF DL=0 THEN FC=0 : GOTO 1190
  251. 1170 FC=0 : FOR F=1 TO DL : IF MID$(DI$(F),6,1)="*" THEN GOSUB 1200
  252. 1180 NEXT F
  253. 1190 PRINT : PRINT"FILES COPIED =";FC;" - PRESS KEY"
  254. 1191 GETKEY A$ : GOTO 520
  255. 1200 FC=FC+1
  256. 1210 X$=MID$(DI$(F),19,8)+"."+MID$(DI$(F),29,3)
  257. 1220 CF$="":FORI=1TOLEN(X$):IF MID$(X$,I,1)<>" " THEN CF$=CF$+MID$(X$,I,1)
  258. 1230 NEXT
  259. 1231 IF RIGHT$(CF$,1)="." THEN CF$=LEFT$(CF$,LEN(CF$)-1)
  260. 1232 CF$=CF$+","+MID$(DI$(F),14,1)
  261. 1240 PRINT STR$(FC);". ";CHR$(34);CF$;CHR$(34);TAB(20);SZ(F)"BYTES";
  262. 1245 PRINT TAB(35);MID$(DI$(F),9,3)
  263. 1250 CL=CL(F) : LB=SZ(F) - INT(SZ(F)/65536)*65536
  264.  
  265. ╔ HAD TO USE A ─╧╨┼╬ STATEMENT HERE FOR DISK FILES BECAUSE THE REGULAR ╧╨┼╬
  266. STATMENT DOES NOT REDIRECT THE ─╙ AND ─╙$ PSEUDO-VARIABLES.  ┘OU'LL NOTICE
  267. THAT THE NON-DISK ╧╨┼╬ STATMENT BELOW HAS A SECONDARY ADDRESS OF 7.  ╘HIS IS
  268. TO PUT THE PRINTER INTO LOWERCASE MODE IF YOU ARE OUTPUTTING DIRECTLY TO IT.
  269. ┘OU CAN REPLACE THIS WITH A 5 (OR WHATEVER) IF YOU HAVE A SPECIAL INTERFACE
  270. TO AN ╔┬═-COMPATIBLE PRINTER AND YOU WANT TO PRINT DIRECTLY IN ┴╙├╔╔.  ╔N THIS
  271. CASE, YOU WOULD SELECT THE "┬╔╬" TRANSLATION MODE FOR THE FILE YOU ARE ROUTING
  272. DIRECTLY TO THE PRINTER.
  273.  
  274. 1260 IF CD>=8 THEN DOPEN#1,(CF$+",W"),U(CD) :ELSE IF CD<>0 THEN OPEN 1,CD,7
  275. 1265 IF CD<8 THEN 1288
  276. 1270 IF DS<>63 THEN 1288
  277. 1275 X$="Y" : PRINT "FILE EXISTS; OVERWRITE (Y/N)";
  278. 1280 CLOSE 1 : INPUT X$ : IF X$="N" THEN FC=FC-1 : RETURN
  279. 1285 SCRATCH(CF$),U(CD)
  280. 1286 DOPEN#1,(CF$+",W"),U(CD)
  281. 1288 IF CD<8 THEN 1320
  282. 1300 IF DS<20 THEN 1320
  283. 1310 PRINT CHR$(18)+"CBM DISK ERROR: "+DS$ : FC=FC-1 : CLOSE1 : RETURN
  284. 1320 POKE PK+19,CL/256 : POKE PK+18,CL-PEEK(PK+19)*256
  285. 1330 POKE PK+21,LB/256 : POKE PK+20,LB-PEEK(PK+21)*256
  286. 1340 TR=0 : IF MID$(DI$(F),9,1)="A" THEN TR=255
  287. 1346 X=1 : IF CD=0 THEN X=0
  288. 1350 SYS PK+6,TR,X
  289. 1355 RREG X,X,X,S : E=PEEK(PK+15)
  290. 1356 IF (S AND 1) THEN GOSUB 380 : FC=FC-1
  291. 1360 IF CD<>0 AND CD<8 THEN CLOSE1
  292. 1370 IF CD>=8 THEN DCLOSE#1 : IF DS>=20 THEN 1310
  293. 1380 RETURN
  294.  
  295. 6. ╒╒┼╬├╧─┼─ ╞╔╠┼╙
  296.  
  297. ╚ERE ARE THE BINARY EXECUTABLES IN UUENCODED FORM.  ╘HE ├╥├32S OF THE TWO
  298. FILES ARE AS FOLLOWS:
  299.  
  300.    "LRR.128"    1106058594
  301.    "LRR.BIN"     460671650
  302.  
  303. ╘HE "LRR.128" FILE IS THE MAIN ┬┴╙╔├ PROGRAM AND THE "LRR.BIN" FILE CONTAINS
  304. THE MACHINE LANUGAGE DISK-ACCESSING ROUTINES.
  305.  
  306. BEGIN 640 LRR.128
  307. ═└1╤+'└╚└├╥!,25143$4@4─5$(%)%041%4┬╨@0┼─@0╒)!24<@0┼)50╘4╠(#,╨
  308. ═+5-%4"╘┘,┬╨@1─]2($,]($┴!0╘═)3─<@3─5434%'└%$<"╨└┌└(└<%└!#1++"
  309. ═*#$╪-┬─@(#╚@├╥└╩*┬!$149!54╤4($-"32╒$3╒,@1%))5─4@*┬╚└╧!╨9└$16
  310. ═╠├─┌1%2╥,"└@.┬└@├╥└╩*┬!-4╥╒$3╒,@1%))5─4╠(%194$4@*#└],34╫,2╨╥
  311. ═-34],34╪,2─└\┴╨:└(╠@1%:╥0╘0@╔╥!$5╦(╪.─14╠├└@.┬"/("╚╩($%,5$52
  312. ═3─%412!-4╥╒$3╒,@1%))5─4└^!╨;└#╚└&╤╘>└)─@╤╥@╤-#<╔.╥))3─┼424%,
  313. ═25╔)3─<╬+┬╪┬(#╚@╞0└╥'2@└_@(╨(#╚@4$╬╥╘2@┬.#└╨,"(╔└%╨=,@"+(,(╚
  314. ═4$╬╩.2╞╥╘2@┬0╘(┬*2"╧(,(╚4$╬╩,3└╔╠├$╙,2"╟(#8╨└)╨=-╨"9(─╤/041)
  315. ═3─<@34%#2$┼.12!,04┘'54%'12!23╒5424┘%4╥╪╬+┬(@.┬#^$2),4┼(╬0─┼.
  316. ═(┬╤5*$-$*0"_'3╨└┼╥!02┌╚╤-┬╤$5┬└┌()<@4$╬╩,3<╠1%0@.┬">(%!+└.,=
  317. ═1@"&(%0╠4┬╤"+$─╠020╠0╥╤$5"0╠1─╨─+$┼,)"╤8+%@─└└(>4└"&($1))"@╤
  318. ═,├@╔+$-,*#$╥."─╠4╒╚╚,3(╪*0└╩'┼╚└┬╥!$5+(╥-34@╔╥!$5"2╥(├$╒.#$┬
  319. ═(#╦5($14)+(┬,34╫,2(└4!┘─└$9,)++'*#$┘*:╦'*#$╫*:╦'*#$╫*:╦'*#$╫
  320. ═*:╦'*#$╫*0!╘'╞╪└24╨─╠─9,)#╩!2;(╤╔#$┘.─┼,)+))3"2╩╤╥@╤-╥─┌@@!^
  321. ═'╟@└┬2└╒,#└└┴!┌"└#╚└╔┴┌#└(\@*┬╚@3$]!1"!-4╥╒$3╒,@1$┼214-43╒)9
  322. ═("╚╩└,8>├└"9(─╤/041)3─<@1$┼214-43╒)9+┬╪╬(┬└┌()─└╓!┌6└)╪@4$╠@
  323. ═.┬">(%!+╩├,└╪1┌@└$1,╠├└└└!^╩└/╪)($),+$1#+$)(+%,@.┬!%╠╠(╚4$╬╩
  324. ═,34╔└!╚?═└"+("┴3(*\@,2─@╔╥"-(#,╪,"└┌((╪└.╤^^└)─┬4╘-!3─┘)3─<@
  325. ═1$┼214-43╒)9+┬╪╬(┬└┌()─└3!_(└$1"╠─),╩├(╒-╩╤"2└!='](└┬╥!$0[(╨
  326. ═(*<@,╙8╨└'╘?╫└"!($10╠─1"(*0@1$*╩,╙*╠*$1#╩╙$╔(*─@,╙(└╟1_╞└(╠@
  327. ═╨┬┴$4"╞╥,""╨(,(╚1%└╔╠├(╥.2"╟(#,╒,└"╫'_└└┬╥#"*$10╩├$╥*2"╧(#(╘
  328. ═(*<@,╙4╨└,,?^@!$3+)$3*╚╤└└<@!└%$)++)*"(@(╩╦$*$1,*2╨╙*:╚┬("└@
  329. ═("!!4╘,@(%-%42└@(┬└┌((\@*┬╚@1$5&055,5"!314╨╧5%(╧1┼0@*┬╚└,┬└.
  330. ═└4$─╠┬(┬(#╚@@4╞╥,*0╤,"└┌($$─╠─$─╩╠<╚╨┬┴$4*╔)*2─@.┬""└$╪@&└%!
  331. ═)++(*$$─+#@╔╩┬(@("*╩╥2┴!)"╨╙*0!;("(!╞2!$3#╠@020└;2└╠└40─╠─0─
  332. ═╩─$─╩┬(@("(└├┬└╓└4-,*$1,*;+"*$10╩├(╓*:╚╥-3:╠╨┬┴$4*╚╥-╥─└╬┬!└
  333. ═└5-:╠╠(╚1%"╩,├@╔╩├(╒-╩╙"*$10╩├(┘*:╚╓-34╙-╩╙"*$10╩├,╨*0#;($╚!
  334. ═1$──*$1,*;)$)*╦)*"(@("└@(╩╦$*%-:*2╨╓*0#╔(%0!4╒╚╚1$╨╔╠┼-:└/(@
  335. ═7@&"($10└/@@:└&.└/╪@<@$┌└",┴<╨&/("╚╩(%)%4$]25"!-4╥╒$3╒,@1$┼3
  336. ═2╥!%4┼)/4┬└╩*@!0(7╨!╞2#'*#$╪*3╠┬35,═1$]3($1)4╘╠@15)23╒(@(╥([
  337. ═╥┬├$*$4╔+#(╔.╨!](88!╞2└┬("@─(├╧**-(╚12─╠,╥─[(┬─╠(%!215-3($═%
  338. ═62╪┬.\<╚,30╓*0"+(9└!╚?─@020@.┬".└)$┴╞@$┌└*╨┴╞╨&/("╚╩(%-#4─5%
  339. ═3┬!(14%$24┘'("╚╩└.$┴╔└&9╤╥@╤-#<╔.╥)-4╥╒$158](├╧**,0╚1%8╔+#(╔
  340. ═.╥(@("└@35,═5%┼013╘┬.╘14)#╠└└┬*╬└9─┬("└@($-"32╒$158](├╧**,0╚
  341. ═0╘0╔+#(╔.╔─└""*╪└8╪└#┬+"└3╚└*2+#└8\@*┬╚@4╘-2145.($9/3╒1)3─<@
  342. ═*┬╚└72+,└9─@24╨─.╥)$/41)4─5#5$]262└@33╒-4╥╒$158@($8]0╘)-+41%
  343. ═5┬!1/5%5250┬└(╘┬╒@&9(┼0]5$]'1╘╤%+4-/3%5-3┬╨@0╙╒#3╒!9+49)3$53
  344. ═+"└╦+╥╘@4$%'12([└),┬╪└&.└)─┬┌@$┌└+(┬┌╨&/("╚╩($╒!24╪@4─]55$┼.
  345. ═12└╩*@#└(╧0!5+(╤(#╚@0[(╨└,@┬_@%2╠├└└╘┬((└╚╘@-#(╨└└(├$@*9(").
  346. ═54╘@(%,@(%123┬└@5%┼0("!&24╤%3─%-12└@15┴4("!,14┘'5$@┬└#(├'└*9
  347. ═("(═+2╘@("╘@("╘═+2└@+2╘═("└═+2╘═+2╘═+2└@+2╘═("└═+2╘═+2╘┬└#╨├
  348. ═)@*-(#0╓,└!7(╙└"0╦)4╩├$╫(#╚@┬╥!"╠41,(*<@0╦)$3└!╨(╙╚"╞2!&3"0[
  349. ═.┬"+(%2╤1$╨@╔╥└╒.3└└├2-$└╚$@2;)4(*0@0┬└┌()─@1$──*$─╔(#╚@@@"╓
  350. ═(╘╪"┬╥!$3+(╨(*<@╞2#'*#$╪*3╠┬/$┘/($9)3$53/┬([╤╥@╤-#8╔└,<├6└*+
  351. ═($1,╠├└@╔╥└╓-├└└╫╥-┬└╔─@╥"┴)3"0╠4╩╚╒*3╧'*#$╪*3╠└]╥-╠└╔$@0┌╚╤
  352. ═((─@-├,╨+#8╘,"╨╓-3└└&21╓└╔─@╔├0╔.\╚╚1$──*%2╩4┬─╠-2╨╙*2└┌((─@
  353. ═-├8╨└#╠─@└*9(*8╫*3╧**$1))"┴4╩┼(╔+#@╠-2─@.┬")(#8╓,└!?)(╚"╞2"╞
  354. ═,3(╔.\╚╚1$──*%2╩4┬─╠,3,╠-2─@.┬")(#8╓,└!╔))0"╚?─@020└─"2>└─╞╥
  355. ═╒"@┬1$╒&5$,╦+5$@(╩╦'*#$╙*:╚┬─1&='1.3(┬╤!)"─└╩┬2╚└╔─@╥"┴)3"0╠
  356. ═4╩╚╒*3═$220╚5*╔2*0"┌)+("┬╥!)╠├└@╔╥└╓,#└└!┬6\└╔%)┬3<╓,"╨╤,#4╨
  357. ═+#$╤,3└╠.34╨+#$╤-3└╠,3└╨,"╨╤,#(╨+#<╙,"╨╪-├└╠.#8╨+#<╫,"╨╫.3└╠
  358. ═.#$╨+#@╙,"╨╪-3└╠-3└╨└└╨┼╤@*0└!(┼╘└(┌└#,┼╘0*/("╚╩(%9!4─┼/55,@
  359. ═345.52!/4%1)3╘┘3("╚╩└%<┼╓@*9(,<╚,30╫*3╠┬2$%612!!3┬!!5╘533╘╒%
  360. ═($1!62╪┬└%╘┼┘└*└└'<┼^└*-(#0╥,"└┌((╘@,30╨(#╚@┬2└╒,#└└─24"└╒*╥
  361. ═4╩╠╤(#╚@┬╥!2╠╙└@╔╥!2╠─*╦5└";)0╨#┬2└╓,#└└═246└╒*╥4╩╚╤(#╚@┬╥!4
  362. ═╩┼*╤0┬"╟(%*╥,└"_)2└#┬2└╓,#└└╒╥4╩└╘.╥0┌╠╤(#╚@┬╥!#╠╙└@╔╥!#╠├(└
  363. ═╪24╘└╪─@-├└╨└/─┼/@-#╠─.╩,2└┌((╠@0[$╥(*<@0[(╨└└,╞2└.)(#8╨,└└9
  364. ═)┼(#4╦(╨(#╚@0[(╨(#╚@┬2└╓,#└└*┬9<└╪╠@1$╥╥,""╟(#8╨,└!*)╞8#6+)4
  365. ═╩┼(@.┬"1($.╩,2"-(#@┘,"╨┘,3└╠.3,╨└&╚╞<└.9(,@╚24╨─+%*╩-2─[1$──
  366. ═*%@╔(#╚@┬2└╓,#└└┼29┌└╪╠@╥┬┴$220╚6"─╠-┬╨╤*;(┬("(@╔╥!8)+(┬*┬(@
  367. ═.═4@6"2╥(┬└┬└*╪╞┴└/**$1))"┴8*2╨╓+#$╔╠┼@─(#╚@├@#=)╚╪#┬╥#**$1)
  368. ═)"┴8*2╨┘+#$╔╠┬)!(┬"╟(%@─╠┬)"24╪┬(#╦5(%@─╠┬)!4╘,┬└/8╞╞└/**$1)
  369. ═)"┴8*2╨┘+#,╔╠┼@─(#╚@├@└╞)┌(#┬╥#**$1))"┴8*2╨╤-"╨╤*;(┬4╥(@╔╥!8
  370. ═)+(┬4%)'(┬└┌╒2!8)+(┬4╘51(@!└)┌╨#╥┬┴$220╚6"─╠,30╠,╥╞╥6"0@.┬".
  371. ═└%$╟═@.+($1,╠├└@╔╥└╓,#└└8"?└└╪$@6+(╤(*0@1$╨└>"?*└┘$@0┌╚╤((╘@
  372. ═.#─╨+#─╤,"╨┘,╙└└@"?4└╪(@6└"*)]╪#┬2└╒,├└└╚╥?╚└╪╠@0╦)$3""╟(%2╥
  373. ═,2└┌((─@-3$╨└+8╟\@-4╠┼2╩,3@@.┬")(#4╤,└#┬)_╨#┬╥!4╠├$@╔╥!4╠─1,
  374. ═╩╥┴$3*╬╒*$1,╦3$╪*:╨╤."╞╩,2└┌((─@-3$╨└/╠╟!@14╠┼2╦,3@@.┬"+(%2╙
  375. ═,2"╟(%2╥,0└%*!└$┬2└╒,3└└&┬@:!)─@24╨─.\<╚,├<╔.╥)└(├╠└0"@─!(4┬
  376. ═35,═1$]3($1%5─┼#12!.54╒"15(@*#@═,╙└╔(├═$5@"%*"4$┬╥!#1+)$5┬"╟
  377. ═()─┬35,═1$]3($%.1"!#0─╘═1$]3($1%5─┼#15,@35535"!"12!$249&15)%
  378. ═3┼0┴(├╩),3└╓,└"╩*"╪$┴2)-4╥╒$3╒,@1$5624-%(%194$4@("@╫,2\╪,2─┬
  379. ═.╒@└┌╥@╪!(╠@6+(╪(+└@6+(╪,2"╨(%┬╥,34╪,2"╟($14╠├(╒-3╔$5"2╥(├$╒
  380. ═.#$┬(#╦5($14╠├└┌1%0─╠┬(╤-3<╤(@└.*4($┼╥!02┌╚╤-┬╤$5┬└┌()<@4$╬╩
  381. ═,3<╠1%0@.┬">(%!+└!@╔3└2)(#4╥,└└═*58$╞2!)3"0[╤╥@╥-╥─[(─└┬.╨!5
  382. ═*6└$┴2└┬0╘)-+41/4╥!$159)0╘4@3┼5-0─52("@╨+3,╨*2([0╘0└╞┬┼╩!(╠@
  383. ═0╘2╥1%8@╔╥"9(─╒3+41/4╥!!3─0@0╘)-+41/4╥!$159)0╘53($╒54╒0@0─4@
  384. ═1$┼&1─5214┘4(2(┌┬3$╤,├└└╔"┼╘!(─@-3(╨└*╚╔=00┌└,$╔=@2/("╚╩($-/
  385. ═4%─@1─┼,15,@*┬╚└╫╥┼^!)─@╤╥@╤-#<╔.╥)#3╒!9($9)3$53(├╩9.╔─└^┬╞(
  386. ═!(╠@1$╥╥,""╟($9#╠├└@.┬")(#$╤.3└└+╥╩2!$9#╠├└@.┬"!($:╥,2"─($1,
  387. ═(#╚@┬╥#**$1))"┴&*2╨╓+#$╔╠┬(╩(┬"╟((╘@,3(╨,└└╫*╔╨$@┬!&└&,╩╔@29
  388. ═(#╚@╞2)&24╤%4╥!#3╒!)140@/2([1─,[(┬└═(%!215-3($═%62(└=2╩╟!*'┘
  389. ═($$─(#╚@┬2└╒,├└└@2╩╨!$9#╠─9#╩├$└╩┬╩┌!%@─╠╠╚╚1$──*$8╔+#$┘+#@╔
  390. ═╩┬(╬(╩╦**$1))"┴&*2╨╥.2╨╙*0#┼*╠0$0╘8─╠┬(┬.╚%)╠├&─╨╥┴8)"─┌┬╥#*
  391. ═*%@─+$─╠,2╞╙╠2(@(┬"╟($-&)+)#1┬2╩╥┬┴8)"╤)+#$╔└.╠╩╙@2"└!0╦╙╨2+
  392. ═(,─╚0╘8─+#$╔╠┬(╬(┬"╟($-&)++(*$-&)"╙#*$-&)"╞╦,2─└,╥╧0!$-&)+)#
  393. ═1┬2╩(┬╨┬╩╠╚╚1$──*$8╔+#$╘+#$╔└&<╦╓└29(,0╚1─,╔.╥(╬("([╤╥@╙-"─[
  394. ═0╘8─.\<╚,╙0╔.┌,╥,"─[4╒╚╚1┬─┬0┼┼415,┬.╨"└*]╘$╞2"├,╙4╔.\╚╚1$──
  395. ═*$8╔+#─╠,╥─└╦╥╧┬!$-,╠─-,*$8╔(#╚@3$*╥4╒╚╚1┬─@╩╥"╒*%-:*$8╔╦38╒
  396. ═-3,╓*:╨╓-34╙-@#╔*^╨$┬╥!#1+&╥.""╟(/╪-(╙$╠*$-&)*╚┬+%<┬*2╤5*$-$
  397. ═*2└┌╒2"+($-$╠[$╨(*<@╟╥└╤+$-$+#<└^╥╧╤!(╠@0╘2╙.""╟(#$╥.#@└#╥╙╓
  398. ═!(╠@1%.╙╠38╙(*<@,3(╪.└└^+/╠$6"2╥(┼─┬(#╚@╞2└┬1─┼,12!%6$┼35%,[
  399. ═($]615)74─┼412└╚62].*2([└&8╠└└6@(#$@.┬"%(%@─(#╚@┬╥!8)+(┬3┬(@
  400. ═╔╥!&0[)&0┌╠╤(#╚@├@!╫+└4%\┬┴#1┬0╔+%4╚0╘0╔└)$╠!@7^#2,╤+"┴#1┬2╩
  401. ═(┬╤7(┬─╠52┴#1"─└╚╥╨(!8╠@0╘2╙.""╟(#$╙,├└└═┬╨4!8╠@1%.╙,├└@╔╥└╤
  402. ═,╙(╨└.╨╠'@69(,<╚,3@╔╩┬)#0─╘@1$┼32╥!%4┼)/4├╚@(╩╔$4╥0@.┬!&0[)&
  403. ═0┌╠╤(#╚@╚#$@.┬".└!─═*└67(%!+╩├$┘+$-,╦3(╒-┬└┌()<@4$╬╩,3@╠0╘╥╦
  404. ═╨┬┴02┌╚╤.2╞╠,├4╓└$8═,@67(%!+╩├(╤+$╤"╦3(╒-┬└┌()<@4$╬╩,├└╠3$*╦
  405. ═╨┬┴02┌╚╥,2╞╠,├4╓└&╪═/└544╦(╨(#╚@┬╥#**$1))"┴&*2╨┘+#$╔╠┬)!(┬"╟
  406. ═(%12╠├(╒-0"%+4(%6+(╤(#╚@┬╥!#1+(╨(*<@6+(╨└)4═1@6>(%!+╩├8╠5%(╠
  407. ═6└"╤+4╠%_@─@6"╤8+%@╠4╥└┌($6╥╨┬┴02┌╚╤-2─└╘2╒,!8╠@*%,@╦╥└╤*2"╟
  408. ═((╘@,╙@╨(#╚@1─.╥1─.╦,0#╔+5└%┬╥!#1+.╤,""╧($-$╠╙@@╔╥"@,0└.+┼╚%
  409. ╔┬╥!#1+&╥.""╟(/╪/(╙$@.┬"+($13╠;(╥,""╟(#$╙,3└└%"┘─!8╪└└└└└
  410. END
  411.  
  412. BEGIN 640 LRR.BIN
  413. ═└(!,68%,3╚),#╚3+@╨└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└2*─└
  414. ═┴="═$(└@╠?^╔;╥"3_┌┼5(*├_)-└╨#┌─╨(*├_:""╚_╥30,└(88*─%├0^└.&"═
  415. ═└-╒)$(╘└╫6"╔""╨-╫/#[8"!@@*╪,╫"!7@(╔@╩1╚@*("0└6└@╦╧\─╘##.&"!'
  416. ═_╥╨-╫"!7@"!╚@(╘/@"─/╥0*╨):└└(&┬└╞2*└╥,└&─/48╩0@@*("0└6"╔└2╨1
  417. ═@#└"╩00@╩/\@╦╧]@2(╚╔└0╚*"@╚╠$8└0└──0("┬└─└%@:""╚_┌─!(*├_╩0─@
  418. ═╩/\@╦╧]╪&"!'_╥╨-╫"!7@*─╪╚(6%└╚0#╩0"%!"╨1@#└#(!.!("╬!╠└╟╞!*4$
  419. ═╥0╞0┌╤┴88*─╪┴0*╞!!┬╔┴7╘┬@84#8└└($└8.!└╨""┬!╚@(╘/@"─/╥0*0└6"┬
  420. ═└╩└└╩0@╠#=╙╨^┌╘└╫4─0├0#=╦0╙<─0+(╘.╟╞└\╦0┘&"╔#╚╘└_┌╟_├2"└├2&└
  421. ═&&#-((#0$.╨┴@-└+┬)@*&&╞%╩*─╪&&"-((".(8"$!2"^@)└9╦0^└*0_)"_└"
  422. ═.&└@<╪"═(("╬(8"─!9#;8*╘@@*╪┴@*0%3&┬!╚╧_╚..─2╠/╩($/<8:1+(╩(╔@
  423. ═(*┌!╚@#└"9└(2)├╔":┴╚╚@'(8(8+(,"!┴0┬&"80*╔0┬╞":0*(&┬!─└%@┴0╥$
  424. ═#:("╚└"╤#)$&╥+$,─0;(╘/3╞#>8'╥═#═┘@╩┼"╠─*─!*╔└84*┘@╞┼"<─"─└:╔
  425. ═└(4)┘@├&"]"[&&└╪┌0*╨└8┬╬%╚#@└?└'"╚0')@>─!╤┴═'("0└<┬┬.(8&╚╔>&
  426. ═!┌╪6@$╙3@:─.├0#_╩0"@└"#└@2!╚@9└!8(4"┴└.@#;$"├1:└╥0.0!┌─\├0^└
  427. ═.&"@$+$"╥0+0\:└6╠0*-%╪#)!+#╞╚!&╤└╚╘9@,╞!╠-═*2─╔*├1┬└╚!.╤└╚╘:
  428. ═@,┬╤└╚╘;@*└8╠0+)"="_╚!╩╤└╠─"╘+>@#╦$"╥0'0╦┌╘7@└╚8:0&-'8└8;1┬└
  429. ═├1╥└╦1╩└╦!╬└..╘<@+└!┬(╘>@(╨?@*╘6@,─"╘└9.'╪!╬'╚"╔.*";┴0:$!┌─!
  430. ═╚└"╬%╪└@╘╪&0└6"╔.*"┴┴0:$!┌╘=@*└└╦┴┬└(-.!─└%@╩3┬@╚:╪9@!┴@┴06$
  431. ═└╘8#:╚4$╔@,*)@,8902%└╚╔┼└╪4#&*4":3┬%└╩4#:9╬%└┌└"╠0*9!@"($/┬┼
  432. ═!2─!╘└┬┼!╥─/╩*4&8*4'╚@1&"&╦*╘/╩─"&"┼9*1┼("6"─└%@╩3┬@┼╪5@┴&&╔
  433. ═└(5┬╦1:└"╚5├╔62─92└┼@╪5─┴&7)_]└@╨└_0'*╘4@(5┬╩0&╬%╚#@└?└"╩0,═
  434. ═%8#0!:╪4@/└"┴6,@╧╚-@╔@_0└┴┴@(,╟_─└2-#╪!@╩?^╞8]└"╔6*%9╩└└╠6└─
  435. ═#┴└&╩╦╘╪┴/└#(-+_╥,1╞╘.╨8╔6!┼9╚5@─└+╞83┬┼8╬5╞┴6*╨└╠9├╔6(%8]#$
  436. ═(,╙_&&"@#╚╨└_╪4.┴@^═$╚"╠$╪"%9(1┼3"╩$(&^#─└%@╔63)_]#╘╔67)#]#╬
  437. ═&&└└└└└└└└└└└!0)#0"3└└└└└└└└└└└└└└└└└└└└└└└└└"└┴(┬,─)28╟*"─╩
  438. ═*╥╨═+┬\╨,3(╙-#4╓-╙@┘.├╠\/3╪_0,'"╨\3%╤╠?(╥<╦+╙,╫.╙]#1╘═/4╒=;7
  439. ═╓-╟:6╒╤=7┼_└04)#1$5&1╘┴)2─═,34┘/4%%24╒155┼=865╦;╫-╫>╫╨└└└└└└
  440. ═└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└
  441. ═└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└
  442. ┴└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└└
  443. END
  444.  
  445. 7. ┬╔┬╠╔╧╟╥┴╨╚┘
  446.  
  447. ╘HE FOLLOWING WORKS WERE CONSULTED IN CREATING THIS ARTICLE:
  448.  
  449. [1] ╩IM ┬UTTERFIELD, "╩IM ┬UTTERFIELD'S ├OMPLETE ├128 ═EMORY ═AP",
  450.     _╘HE_╘RANSACTOR_, ╓OLUME 7, ╔SSUE 01, ╩ULY 1986 (┴ ═UST!).
  451.  
  452. [2] ├OMMODORE ┬USINESS ═ACHINES, _├OMMODORE_1571_─ISK_─RIVE_╒SER'S_╟UIDE_,
  453.     ├┬═, 1985.
  454.  
  455. [3] ╙OME PROGRAM CALLED "MSDOS-TO-128" INCLUDED WITH "CS-DOS" BY
  456.     ═. ╟-SOMETHING.  ╧RIGINALLY PUBLISHED IN ├╧═╨╒╘┼!'S ╟AZZETTE, ╔ THINK.
  457.  
  458. [4] ├OMMODORE ┬USINESS ═ACHINES, _├OMMODORE_128_╨ROGRAMMER'S_╥EFERENCE_╟UIDE_,
  459.     ┬ANTAM ┬OOKS, 1986.
  460.  
  461. [5] _╘HE_╘RANSACTOR_, ╓OLUME 4, ╔SSUE 05 ("╘HE ╥EFERENCE ╔SSUE"), ═AY 1983.
  462.  
  463. =============================================================================
  464. ╬EXT ╔SSUE:       
  465.  
  466. ╠EARNING ═ACHINE ╠ANGUAGE - ╨ART 5
  467.  
  468. ╘HE ╙╨┴├┼ ╔╬╓┴╙╔╧╬ IS CONTINUED WITH THE DESIGN AND IMPLEMENTATION OF THE
  469. PLAYER AND ALIEN ANIMATION ALONG WITH A LOOK AT DEVICE SCANNING FOR THE 
  470. 1351 MOUSE, JOYSTICK AND KEYBOARD.
  471.  
  472. ╘HE 1351 ═OUSE ─EMYSTIFIED
  473.  
  474. ╞INALLY! - ┴FTER 2 DELAYS, THIS ARTICLE WILL EXPLAIN HOW THE 1351 MOUSE
  475. WORKS AS WELL AS PROVIDE A EASY TO USE INTERFACE IN MACHINE LANGUAGE FOR
  476. BOTH BASIC AND MACHINE LANGUAGE PROGRAMMERS.  ┴N EXAMPLE PROGRAM WILL BE
  477. GIVEN TO ILLUSTRATE BOTH THE 1351 MOUSE AND THE MULTI-TASKING SYSTEM.
  478.  
  479. ═ULTI-TASKING ON THE ├=128
  480.  
  481. ┴ RUDIMENTARY MULTI-TASKING SYSTEM WILL BE IMPLEMENTED FOR TASKS TO RUN
  482. CON-CURRENTLY WITH EACH OTHER. ╫HILE INTENDED FOR MACHINE LANGUAGE PROGRAMMERS
  483. SOME DISCUSSION OF HOW TO USE THIS WITHIN BASIC WILL BE GIVEN SO THAT MORE THAN
  484. ONE BASIC / ML PROGRAM CAN BE RUN AT A TIME. ┴N EXAMPLE PROGRAM WILL BE GIVEN TO
  485. ILLUSTRATE BOTH THE 1351 MOUSE AND THE MULTI-TASKING SYSTEM.
  486.  
  487. ╙TRETCHING SPRITES
  488.  
  489. ┘OU MIGHT HAVE HEARD THAT IT IS POSSIBLE TO EXPAND SPRITES TO MORE THAN TWICE
  490. THEIR ORIGINAL SIZE. ┬UT THERE IS NO NEED TO EXPAND ALL OF THEM EQUALLY. ╘HIS
  491. ARTICLE WILL EXAMINE ON HOW TO EXPAND THEM 2,3 OR MORE MULTIPLES OF THEIR 
  492. ORIGINAL SIZE.
  493.  
  494. ╠╔╘╘╠┼ ╥┼─ ╫╥╔╘┼╥: ═╙-─╧╙ FILE WRITER FOR THE 128 AND 1571/81 DRIVES.
  495.  
  496. ╘HIS ARTICLE WILL EXTEND THE ╠ITTLE ╥ED ╥EADER PROGRAM TO BE ABLE TO WRITE
  497. ├OMMODORE-─╧╙ FILES TO AN ═╙-─╧╙ DISK.
  498. =============================================================================
  499.