DWB 5 RAMDOS128.DOC S 7728 RAMDOS.BAS P 2017 FILECOPY.BAS P 4305 FILECOPY.BIN P 258 RAMDOS128.BIN4.3 P 7170 128 VERSION 4.2 DOCUMENTATION ROGRAM BY: EDLEY AVIS & RED OWEN OPYRIGHT 1987 OMMODORE USINESS ACHINES LL IGHTS ESERVED OCUMENTATION BY: OREN OVHAUG & RED OWEN 128 WEDGES INTO YOUR -128S OPERATING SYSTEM TO FACILITATE THE USAGE OF THE 1700 OR 1750 EXPANSION UNIT AS A FAST PSEUDO-DISK DRIVE (DISK). NCE IS INSTALLED, YOU CAN USE MOST OMMODORE COMMANDS TO READ, WRITE, AND MANIPULATE PROGRAMS AND DATA WITH YOUR EXPANSION UNIT. NSTALLING 128 LACE A DISK CONTAINING BOTH THE . AND THE 128.4.2 INTO A DRIVE DESIGNATED AS UNIT 8. HEN TYPE ".". PON EXECUTION YOU WILL BE ASKED WHAT UNIT NUMBER YOU WISH TO ASSIGN TO THE EXPANDER. HE DEFAULT UNIT NUMBER IS 9, HOWEVER YOU CAN USE ANY DEVICE NUMBER FROM 4 TO 30. NCE YOU HAVE RESPONDED TO THE DEVICE NUMBER PROMPT YOU WILL BE ASKED WHERE YOU WOULD LIKE THE INTERFACE CODE TO RESIDE, THE DEFAULT IS PAGE 14. OU SHOULD NOT ALTER THIS VALUE UNLESS YOU ARE TRYING TO MAKE WORK WITH AN APPLICATION THAT MUST UTILIZE THE DEFAULT AREA. (HE DEFAULT AREA IS THE LOWER HALF OF THE SPRITE DEFINITION AREA SO OBVIOUSLY YOU CANNOT USE PAGE 14 IF YOU WISH TO USE SPRITES OR A PROGRAM WHICH USES SPRITES). F YOU MUST RELOCATE THE INTERFACE PAGE, NOTE THAT THIS CODE MUST BE PLACED ON A PAGE BOUNDARY AND MUST NOT BE PLACED AT AN AREA THAT IS OVERLAPPED BY . NCE YOU HAVE RESPONDED TO THE INTERFACE PROMPT, YOU WILL BE ASKED IF YOU WANT TO INITIALIZE THE DISK. ESPOND BY TYPING "Y" IF YOU HAVE NOT PREVIOUSLY SAVED DATA IN THE EXPANDER OR IF DO NOT WANT TO ACCESS ANY EXISTING DATA CURRENTLY STORED IN THE EXPANDER VIA . HE DEFAULT RESPONSE IS "Y". NCE YOU HAVE RESPONDED TO THE INITIALIZATION PROMPT YOUR DISK WILL BE INSTALLED. SING THE DISK HE DISK IS IDEAL FOR DATA INTENSIVE APPLICATIONS SINCE YOU CAN READ AND WRITE DATA TO THE EXPANDER MUCH FASTER THAN WOULD BE POSSIBLE WITH A CONVENTIONAL PHYSICAL DISK DRIVE. OWEVER, YOU MUST REMEMBER THAT UNLIKE A PHYSICAL DISK DRIVE, THE DATA YOU STORE IN YOUR 1700 OR 1750 IS BY NO MEANS PERMANENT AND WILL BE ERASED WHEN YOU TURN OFF YOUR -128, SO MAKE SURE THAT YOU STORE ANY IMPORTANT DATA TO DISK BEFORE YOU TURN OFF YOUR MACHINE. O COPY PROGRAMS AND DATA TO THE DISK, YOU CAN SIMPLY WRITE IT TO THE DISK JUST AS YOU WOULD NORMALLY, USING ITS DESIGNATED UNIT NUMBER. OWEVER, AT TIMES IT IS HANDY TO COPY A LARGE NUMBER OF FILES FROM A CONVENTIONAL 1541, 1571, OR 1581 DISK TO THE DISK. O FACILITATE SUCH, WE HAVE INCLUDED A FILE COPY UTILITY CALLED .. . IS A SIMPLE NO-NONSENSE FILE COPY UTILITY, THE OPERATION OF WHICH SHOULD BE SELF-EXPLAINATORY. THER FILE COPY PROGRAMS *MAY* WORK FOR THIS PURPOSE, ALTHOUGH WE CAN'T VOUCH FOR ANY BESIDES .. OTE: HE FILE . MUST ON THE SAME DISK AS . WHEN IT IS EXECUTED. S ALLUDED TO ABOVE, A SUBSET OF OMMODORE COMMANDS CAN BE USED IN CONJUNCTION WITH THE DISK. OST NORMAL FILE CREATION AND ACCESSING COMMANDS ARE AVAILABLE INCLUDING: , , #, , , , , , , , , , , #, #, # AND #. IKEWISE MOST HOUSEKEEPING COMMANDS ARE IMPLEMENTED SUCH AS: , , , , , AND . OWEVER THE AND COMMANDS ARE NOT REALLY NECESSARY SINCE THE DISK CODE DOES THE EQUIVALENT OF AND WITH EACH OPERATION. HE COMMAND IS NOT IMPLEMENTED. HE ERROR CHANNEL, AS WELL AS THE 7.0 VARIABLES AND $ CAN BE EXAMINED TO DETERMINE DISK OPERATION STATUS. OST DIRECT ACCESS COMMANDS (I.E. -, -, -, -, - ETC.) ARE NOT IMPLEMENTED SINCE THESE INVOLVE EITHER THE ACCESSING OF PHYSICAL TRACKS AND SECTORS ON A DISK OR THE READING OR WRITING OF A PHYSICAL DISK DRIVE'S MEMORY. HE - (BUFFER POINTER POSITION) COMMAND HAS BEEN IMPLEMENTED FOR THE POSITIONING OF THE RELATIVE FILE POINTER ALA 2.0 (IN MOST CASES 128 OWNERS WILL WANT TO USE THE # COMMAND FOR THIS PURPOSE). NOTHER SPECIAL EXCEPTION IS THE USE OF THE COMMAND FOR CHANGING DEVICE NUMBER AS FOUND IN THE 1571 AND 1581 VERSIONS OF OMMODORE . OU MAY CHANGE THE UNIT NUMBER OF THE DISK AT WILL BY USING THE FOLLOWING SYNTAX: 15,OLD UNIT NUMBER,15,"U0>"+CHR$(NEW UNIT NUMBER) OU MAY ALSO USE THE 1541 EQUIVALENT - COMMAND (THIS IS THE ONLY - COMMAND THAT IS IMPLEMENTED IN ). NLIKE PHYSICAL DISK DRIVES YOU CAN CHANGE THE UNIT NUMBER OF THE DISK TO A UNIT NUMBER THAT IS ALREADY IN USE WITHOUT CHANGING THE UNIT NUMBER OR SHUTTING DOWN THE PHYSICAL DRIVE THAT ALREADY HAS THAT UNIT NUMBER. OR INSTANCE YOU MAY HAVE A PHYSICAL DRIVE SUCH AS THE 1541, 1571, OR 1581 IN USE AS UNIT 9 AND DEFINE THE DISK AS UNIT 9 ALSO. N THIS EXAMPLE, YOUR -128 WOULD "SEE" THE DISK AS UNIT 9, AND SUBSEQUENT OPERATIONS DIRECTED AT UNIT 9 WOULD OPERATE ON THE DISK AND NOT THE PHYSICAL DRIVE SET AS UNIT 9. S A RULE, THE DISK TAKES PRECEDENCE OVER A PHYSICAL DRIVE WITH THE SAME UNIT NUMBER AS FAR AS OPERATIONS ARE CONCERNED. HEN THE DISK IS INSTALLED, 7.0'S , , AND COMMANDS ARE DISABLED. PROGRAMS USING THESE COMMANDS WILL NOT FUNCTION CORRECTLY WITH THE DISK INSTALLED ALTHOUGH THEIR USE WILL NOT CAUSE A ERROR PER SE. RESSING THE RESET BUTTON ON THE LEFT SIDE OF YOUR KEYBOARD WILL NOT ERASE OR CORRUPT THE DATA STORED IN THE EXPANSION UNITS. OWEVER, PRESSING THE RESET KEY WHILE THE IS EFFECTING AN OPERATION ON THE CONTENTS OF YOUR DISK WILL MOST CERTAINLY CORRUPT THE DATA IN THE EXPANDER, SO YOU SHOULD MAKE SURE THAT ALL OPERATIONS ARE COMPLETED AND ALL OPEN FILES CLOSED YOU HIT THE RESET BUTTON. PON INSTALLATION, AUTOMATICALLY ALLOCATES THE 40 COLUMN GRAPHICS SCREEN. HIS MOVES THE START OF THE TEXT POINTER UP FROM ITS DEFAULT POSITION OF $100 (7168) TO $4000 (16384). LTHOUGH THE GRAPHICS SCREEN IS ALLOCATED YOU MAY USE THE AREA BETWEEN $100 AND $4000 FOR 40 COLUMN BITMAPPED GRAPHICS OR FOR OTHER PURPOSES. OU MAY ALSO DEALLOCATE THE GRAPHIC AREA LATER IF YOU WISH. F YOU ARE VIEWING THE -128'S 40 COLUMN BITMAPPED GRAPHICS SCREEN DURING THE EXECUTION OF A COMMAND TO THE DISK, YOU WILL PROBABLY NOTICE A MOMENTARY FLICKER OF THE SCREEN AND THE APPEARANCE OF RANDOM PIXELS ON THE GRAPHICS SCREEN FOR A BRIEF INSTANT. HIS IS CAUSED BY A NORMAL FUNCTION OF THE AND SHOULD NOT BE CAUSE FOR ALARM. PON EXECUTION OF A COMMAND, AUTOMATICALLY RETRIEVES SOME TRANSIENT OPERATION CODE PLACED IN THE EXPANDER UPON INSTALLATION. HIS CODE IS MOMENTARILY PLACED IN THE 40 COLUMN GRAPHIC AREA FOR EXECUTION, HOWEVER THE CONTENTS OF THE 40 COLUMN GRAPHICS SCREEN ARE NOT CORRUPTED BECAUSE IT IS TEMPORARILY STORED IN THE EXPANDER AND THEN RETRIEVED WHEN THE EXECUTION OF THE COMMAND IS COMPLETED. INALLY, ALTHOUGH TRANSFERS TO THE EXPANSION UNITS CANNOT BE DONE IN MODE, THERE IS NO NEED FOR THE USER TO PUT THE -128 INTO SLOW MODE BEFORE ACCESSING THE DISK. DOS WILL AUTOMATICALLY PLACE THE -128 IN SLOW MODE WHILE OPERATIONS ARE TAKING PLACE, AND RETURN THE -128 TO MODE IF THE -128 WAS IN MODE BEFORE THE OPERATION WAS EXECUTED. E HOPE YOU ENJOY DOS! OOK FOR MORE TECHNICAL INFORMATION (I.E. HOW TO HACK INTO IT), AND APPLICATIONS OF THE DISK IN FUTURE ISSUES OF WIN ITIES 128 AND ON THE VARIOUS TELECOMMUNICATIONS NETWORKS. ; F$="RAMDOS.BAS":OPEN1,8,15,"S0:"+F$:CLOSE1:SAVEF$,8I P 320S"";}"(" RAM DISK INSTALLATION - V080787 2"ý":<:d 9000: A0 360#nU9: "INSTALL RAM DISK AS UNIT 9";UDx: U(U): U4 U30 110} F0 P207: L6: ML25344: RE780: F$"RAMDOS64.BIN*"~ F1 P14: L5: ML8960: RE6: F$"RAMDOS128.BIN4.3" "RAM DISK INTERFACE PAGE IS ";P;("",L);: P: F0 (P2 P207) 125?: F1 (P2 P32) 125tA$"Y": "INITIALIZE RAM DISK Y";A$: M3: (A$,1)"Y" M0: (F0 P207) (F1 P14) 280: A$"N": "CHECK INTERFACE PAGE: ARE YOU SURE N";A$: (A$,1)"Y" 20!:B C128 C64 WHAT IT DOl $2300 $6300 --> INSTALL RAM DISK 3 3 --> RE-INSTALL RAM DISK 6 6 --> INSTALL RAM DISK W/ ARG: UNIT=.A PAGE=.X 9 9 --> RE-INSTALL RAM DISK W/ ARG: UNIT=.A PAGE=.XI  C C --> DISPLAY COPYRIGHT NOTICEO :}  " * RESTORING SYSTEM VECTORS": 65418 : F0 300 " " * ALLOCATING GRAPHIC AREA FOR RAM DISK": 1,1 ': (("D7"))0 0!, " * LOADING RAMDISK DRIVER"!1: F0 F$,8,10!2: F1  (F$)6!6:s!@ ML12 : PRINT EMBEDDED COPYRIGHT NOTICE!E RE,U: RE1,P : LDA UNIT: LDX PAGE!J ML6M : (RE)INSTALL RAMDISK, USING UNIT# & PAGE!T:!^"h "PRESS ANY KEY TO RETURN TO QUIT","rA$:A$""370Q"| (147):: GOODBYE BASIC CODEW"]":"(# VERIFY PRESENCE OF RAM CARD"-#:"2#R57088: A1"<#I25:RI,I:"F#I25:(RI)I9050"P#: 9080"Z#A0: " RAM EXPANDER NOT PRESENT ": #d#:$#n# DETERMINE IF C64 OR C128*#s#:[#x#F((65533)255) : F=0 IF C64, F=1 IF C128## F  15 : SELECT 128 SYSTEM BANK####:#' F.BOWEN 08/07/87 COPYRIGHT 1987 COMMODORE BUSINESS MACHINES, INC.@Q@ 052687 VERSION FOR C64 & C128, SUPPORTING 1541/1571/1581/RAMDISK F.BOWEN@ 071487 MOD--> DOES NOT COPY PARTITIONS, DEL, OR SPLAT FILES F.BOWEN@ BA 25@9200:9100@ F0 F$,U,1 A F1 1,1: (F$),P(BA),U(U): (("D7"))00A9000A:DA( " YOUR SOURCE DISK UNIT 8";SUpA2 " DESTINATION DISK UNIT 9";DU:A<: SU4 SU30 DU4 DU30 SUDU "BAD UNIT #":120AF " ENTER TEMPLATE OR ";:M$"":M$BHW0:WW0: I1(M$): "*"(M$,I,1) WI:WWWW1CBI: WW1 "BAD TEMPLATE": 120XBJW$(M$,(M$)W)^BK:BP N$(200),T$(200),CE(200):Q$(34):E$","BZ14,SU,15,"I": SC14:USC: 8000: S ""SU":";S$: 120 C_15,DU,15,"I": DC15:UDC: 8000: S ""DU":";S$: 120Cc:*Cd9000: 1000: 2000BCn: K 9000: 3000uCx:" MORE (Y/N) ? ";:4000: A$"N" : C:9200:25C:C READ DIR INTO N$,T$,N=#FILES+1C "READING DIRECTORY.";CN0: F$"$": (M$)0 F$"$:"M$D 8,SU,0,F$: USC: 80001D : S : "";S$: 8: ?D#8,A$,B$]D: #8,A$,A$,A$,A$ : ".";D$: #8,A$: (A$)0 ST 1130D): (A$)0 1130D.: A$Q$ 1060D8: #8,A$: A$Q$ ST0 N$(N)N$(N)A$: 1080 EB: #8,A$: A$" " 1090?EL: T$(N)T$(N)A$: #8,A$: A$" " ST0 1100pEV: #8,A$:A$A$(0): (A$)0 ST0 1110E\: N0 W0 1120E]: (N$(N)) (W1(W$)) N$(N)"":T$(N)"": 1050E_: W$(N$(N), (W$)) N$(N)"":T$(N)"": 1050 F`: NN1: 10500Fj: 8: 8000: S "...";S$SFt: N1;"FILES TARGETED" : :YF~:nF DISPLAY FILESFK0: N2 " NO FILES FOUND.":F I1N1:CE(I)0F: Q$;N$(I);Q$;19);T$(I);25);: M$"*" 2070F: :CE(I)1: KK1: : 3G " CONTINUE (Y/N) ? ";: 4000 : A$"Y" >G K0: vG "COPY ? (Y/N) ";:4000 : A$"Y" CE(I)1: KK1G : : G*:G COPY FILESG I1N1: CE(I)0 : G :T$(I) (T$(I),1): F$Q$N$(I)Q$H : T$(I)"C" "";F$;" PARTITION NOT COPIED ": 3180YH : T$(I)"D" "";F$;" DEL FILE NOT COPIED ": 3180H : T$(I)"*" "";F$;" SPLAT FILE NOT COPIED ": 3180H 9,DU,9,N$(I): UDC: 8000: 9H : S62 3100H : F$;" EXISTS, REPLACE? ";: 4000: 4500%I : A$"N" F$;" NOT COPIED"::EI : "SCRATCHING OLD ";F$xI : 15,"S0:";N$(I): 8000: 4500: S1 3170I : 3030I : T$(I)"R" 5000: 3170 : COPY REL FILESI& : "NOW COPYING ";F$J0 : 9,DU,1,N$(I)","T$(I)",W": UDC: 8000: S 3170RJD : 8,SU,0,N$(I)","T$(I)",R": USC: 8000: S 3170lJX : BA: UDC: 8000Jb : S " COPY FAILED: ";S$: 3180Jg : USC: 8000Jh : S " COPY FAILED: ";S$Jl 8: 9: : Jv :K A$: A$"Y" A$"N" 4000KA$: K:]K " "(13)"";:cK:xK COPY REL FILEK "SCANNING ";F$K8,SU,8,N$(I): USC: 8000: S KL0: RN701:RG2RN: SCAN FOR RECLEN L: R1:LLRG: 6000: S LLRGL: ALR0:RN1501:RG2RN: SCAN FOR NUMRECdL: RRRG: 6000: S RRRGlL: L 4500: "CREATING ";F$L9,DU,9,N$(I)",L,"(L)L: UDC: 8000: S L A$"P"(968)(1)(0)(1): 14,A$: 14,A$M: USC: 8000: S EMA$"P"(969)(RL)(RH)(1): 15,A$: 15,A$kM(: 9,(255);: WRITE END RECORDM2A$"P"(969)(1)(0)(1): 15,A$: 15,A$M<: UDC: 8000: S MP 4500: "NOW COPYING ";F$MZ RN1R: BA: Nd8: 9: UDC: 8000 NnNx:UNpRH(R256):RLRRH256 : SEND SRC P CMD. R=REC#, L=OFFSETNzA$"P"(968)(RL)(RH)(L): 14,A$: 14,A$N: USC: 8000 : GET DISK STAT & RETURNN:N@U,A$,B$,C$,D$: S(A$): S$A$E$B$E$C$E$D$ :OJ: O(#"";3O2#" ZO<#" FILECOPY UTILITY - V071487 OF#" ":OP#OQ#:O#U8:F$"FILECOPY.BIN"O#U12" "F$" "B$:O#15,U,15:2,U,2,F$",P,R":2:15,A,B$,C,D P#15:A19UU1:9110P#P#:>P#F((65533)255) : 0/C64, 1/C128ZP# F0 BA0 BA49152{P$ F1 BA0 BA3072: 15P$P$:P' F.BOWEN H.DAVIS COPYRIGHT 1987 COMMODORE BUSINESS MACHINES, INC.  @   `2/091586 (C) 1986 COMMODORE BUSINESS MACHINES _``@_%ttdq   l#L=L=L=L=L#H!# hE` (C) 1986 COMMODORE ELECTRONICS, LTD. ALL RIGHTS RESERVED. OKFILES SCRATCHED DOS CONFUSEDSYNTAX ERRORSYNTAX ERROR SYNTAX ERROR!SYNTAX ERROR"SYNTAX ERROR2RECORD NOT PRESENT3OVERFLOW IN RECORD4FILE TOO LARGEFILE NOT FOUND?FILE EXISTS@FILE TYPE MISMATCHBILLEGAL TRACK AND SECTORFNO CHANNELHDISK FULLICBM DOS V4.3 1750BAD ERROR NUMBERmi!i!`i!j! _%L9$ ! !7mi!ߎߩ߭j!8i!""8L:k!l! %o!' #% #%d #%k! % %L%m!n!o!)o!k!8m!l!n!l!k!o!i 0o!ޭo! %`I,Ln%!! %5! % %6!L%4!5!6!i!j!4! % % % % %`dȐHL%8dH %h8 H %hi 0,,j!7!0j!8!`f#4! & & %L&` &` ?& -&!` !`),!,H !ߎ߭!ߩߎ߭! x&h! x&! !` &߽&m!ߌ` 0@P`p!!!!!!&HH &hh!!, &!!ߎߌ` &`  8&L$ FFL9$LX4m!!!! &` !RF LL*!!HH!!i +hh!!J!! ! ! &  !!! &! L' &! ! !!!`m!!m !Hm !h!! !Fm!Hm!h!!4`r!!!p!q!!JHp!m!!q!m!!r!m!!p!.q!.r!hԩ2!!!!`!!HH!H !H @)h !h!hh!!`!!)!!! ( ! '! {)!!`48`!! ! '!`!H!! (1!!# &! !!!!!!h!`h` ( &! ` * ( {) !!!`m!!L&* ! ! ) (8!!8L*L9 )!!!L9 * ) ! !!!!! ),3L9!8!H *hH ( & &!߭!!ߎh(L:!!*` X-Z) ?& !FLF X-C! X-:!! X- !F !!!!!!L(F,,38`s!t!!!i!!H` t+s!t! &s!t! &s!t!ߎ!!LI+`u!v!!H ?& !-!! +!!!! +!! ! ! + ! !!h ?&!! +!!`t!s! mu!Hmv!h`!!s!t!  HH  II t+hhu!v!s!t!8mu!Hmv!h &s!t!!!s!t!!t!!s!`@ ɀ) @` @ =&!!!!!!  ,>8` & ,!!`  8m!Hm!hLr, =&!!!!!!  ,>8` & !!`  8m!Hm!hL, w!*`w!  ?*8`!!!!! :!"" !!!`Ώ!`!̐!!!Ln-"! v-`ݕ-`a,!` ?*"@=$,w! X-) w!w!L- T-` - - X-3,, X-' O,PFSBU>RCW?A;F7L T- T-` (. X-, X- !L7. T-`8`!!L7.!!H X-) T-h8` X-:0 X-: T-` - X-7@! X-@ T-L.$!L. T- M. - - X-8`` 8&LC1 0 _% h.R!$L-4"w!A!!R! i,2HH 8&hh!! &<  !!  @8`!!S!LL0!RA}FL/L0!j>!c &^ 8&!! ! !!!m Hm h!!! ! !  !!!!!!! ! `8`W!!T!!& ?/!!!!!!!!!!`8`!!!SP8`! !L?/8`!!L0! ?!i & + 8& -&!!!! ! !!! +@ 8& &w! ! ! !   !!! !`8`L!!! & !!!!L?/!!!!L028`H ?& 0h`) 8&! !LC$? ! !!! &4! !!8 !H !h  !!   !` 8&W ! .-( `"!" 1"`m"" i1 g%` !(8" " L9 1"L9r1 ! !m"ߎߩߘL:S2=R2C2N2M3I3wU3}V2P* 1 1` _% - :-Ң1" X-ȱ8`ȱHȱH` X-:` 32 -+"" i,>8`!! |2"" +8`""L$""!" ?&"" ! ! !" !!i֭"L?& 0 _% , +>`!!!!` 3 #! `8` 3y  8m!Hm!h!!Z""!!HH!!!!!!!! &!"!"hh!! &#!  `H8` 0L\% 0L_% X-:JI0 X->$8 X- L >8` X- X-%W! X-wx X- X-$8L3 32 -,8`$ ! =&!!!w!x!*w!L4m!!` =&!! 4L9P4 ! !âm!ߎߩ߭!8!""8L:! ! !!L4!!!!` &!!8m Hm h!!!! J5L4 & , r5!` !ʽ 5"`"RAMDISK V4.3 " HD 00BLOCKS FREE !ʽ,5"!!8!H!h""` ! """ """SEQ %PRG USR REL ?""" W*"  iHih""d  6 6 6"` "" `4 v6!# g%@L9HHL9 : h.D X-=!8!$Lz7 !)"w!$ i,!! &@ P  <,>,8` 3 &æĤ  ߎߠ߭!!ߎ8   L7!ߍ8Hߪh( ߰ ߎ ?7Lt7߮mHmߪh  0: ) 8`` 3 -4æĤ!!""! 7 4"! 7`âߎߩߥߎL7 |: h.B! ! !5"w!0 i,#!! &?!@ P< +L)8>,8`!!!!H8` &  8HªhHHiHihi i    P w! &hhߎߥߎ߭!!ߎߩ߭  8m!Hm!h!!H`!! 0: &` :"" ! L'L9L' :L9 : ( ;L9 : !L9"!(=H'=H !L9H h{l .L9H :"!#h !(.=H-=H !L9,=H+=H !L9h(L-6 7L9BL98 , !! .! g% ! 9 !"" !!!HH!!HH!! !`!@!` 1=HUH!!HH`ߎߥ`ߩߍߩߎߦǠL2:ƌ"!!HHHH kH) ժhLP:HH"HH !!HH!!HH!!`L:!!HHHHL9H!!"1HH!!,&`a8" :hh"h(`l ! ! !!!ߎ߭!ߘ!!HH!!HHL;!!HH"!!ݰ` !IL꘠a,  ,&ϥ)"!!ߩߩ ߩ ߩߎ߮""" !LP:L0)`L0 L L,<8H hLh,< hhH!! &>h > 1= \% &!!HH!!HH` HH <>hhL= )"!!!=`<=S>`Վծ8 L8`!!IZ &!I, &!0 &IZ L>!!!! !!"!!!!)!!`FAB