diff --git a/client/src/Makefile b/client/src/Makefile index 67301f7..ca5cb66 100644 --- a/client/src/Makefile +++ b/client/src/Makefile @@ -21,9 +21,9 @@ ifeq ($(UNIT),F256K) CFLAGS_FOR_UNIT=-DMODEL=17 -DCPU=255 --code-model large --data-model large ifeq ($(MEMORY),ROM) - LDFLAGS_FOR_UNIT=C256/f256-flash.scm clib-lc-ld.a --rtattr printf=medium --cstartup=f256 + LDFLAGS_FOR_UNIT=C256/f256-flash.scm clib-lc-ld.a --rtattr printf=medium else - LDFLAGS_FOR_UNIT=C256/f256-ld_lc.scm clib-lc-ld.a --rtattr printf=medium --cstartup=f256 + LDFLAGS_FOR_UNIT=C256/f256-ld_lc.scm clib-lc-ld.a --rtattr printf=medium endif endif diff --git a/roms/f256k/toolbox-20.bin b/roms/f256k/toolbox-20.bin index 9ce4f0e..20d5681 100644 Binary files a/roms/f256k/toolbox-20.bin and b/roms/f256k/toolbox-20.bin differ diff --git a/roms/f256k/toolbox-22.bin b/roms/f256k/toolbox-22.bin index 6e66152..50bb95d 100644 Binary files a/roms/f256k/toolbox-22.bin and b/roms/f256k/toolbox-22.bin differ diff --git a/roms/f256k/toolbox-23.bin b/roms/f256k/toolbox-23.bin index 41802a0..1ead7bc 100644 Binary files a/roms/f256k/toolbox-23.bin and b/roms/f256k/toolbox-23.bin differ diff --git a/roms/f256k/toolbox-24.bin b/roms/f256k/toolbox-24.bin index d580923..778232e 100644 Binary files a/roms/f256k/toolbox-24.bin and b/roms/f256k/toolbox-24.bin differ diff --git a/roms/f256k/toolbox-25.bin b/roms/f256k/toolbox-25.bin index 42162c9..6a827cd 100644 Binary files a/roms/f256k/toolbox-25.bin and b/roms/f256k/toolbox-25.bin differ diff --git a/roms/f256k/toolbox-26.bin b/roms/f256k/toolbox-26.bin index 5f0b78c..1072865 100644 Binary files a/roms/f256k/toolbox-26.bin and b/roms/f256k/toolbox-26.bin differ diff --git a/roms/f256k/toolbox-27.bin b/roms/f256k/toolbox-27.bin index a20f017..5c04d94 100644 Binary files a/roms/f256k/toolbox-27.bin and b/roms/f256k/toolbox-27.bin differ diff --git a/roms/f256k/toolbox-28.bin b/roms/f256k/toolbox-28.bin index a6d7814..997347c 100644 Binary files a/roms/f256k/toolbox-28.bin and b/roms/f256k/toolbox-28.bin differ diff --git a/roms/f256k/toolbox-29.bin b/roms/f256k/toolbox-29.bin index 697125c..36e8a0f 100644 Binary files a/roms/f256k/toolbox-29.bin and b/roms/f256k/toolbox-29.bin differ diff --git a/roms/f256k/toolbox-2A.bin b/roms/f256k/toolbox-2A.bin index 5f634bf..63033a0 100644 Binary files a/roms/f256k/toolbox-2A.bin and b/roms/f256k/toolbox-2A.bin differ diff --git a/roms/f256k/toolbox-2B.bin b/roms/f256k/toolbox-2B.bin index fdacf1b..992f55c 100644 Binary files a/roms/f256k/toolbox-2B.bin and b/roms/f256k/toolbox-2B.bin differ diff --git a/roms/f256k/toolbox-2C.bin b/roms/f256k/toolbox-2C.bin index 99bfc9a..02f89d5 100644 Binary files a/roms/f256k/toolbox-2C.bin and b/roms/f256k/toolbox-2C.bin differ diff --git a/roms/f256k/toolbox-2D.bin b/roms/f256k/toolbox-2D.bin index ad5d06a..5b3f181 100644 Binary files a/roms/f256k/toolbox-2D.bin and b/roms/f256k/toolbox-2D.bin differ diff --git a/roms/f256k/toolbox-2E.bin b/roms/f256k/toolbox-2E.bin index fa37eec..296891c 100644 Binary files a/roms/f256k/toolbox-2E.bin and b/roms/f256k/toolbox-2E.bin differ diff --git a/roms/f256k/toolbox-2F.bin b/roms/f256k/toolbox-2F.bin index 6f49c79..0d99729 100644 Binary files a/roms/f256k/toolbox-2F.bin and b/roms/f256k/toolbox-2F.bin differ diff --git a/roms/f256k/toolbox-30.bin b/roms/f256k/toolbox-30.bin index bc0f203..6b542ea 100644 Binary files a/roms/f256k/toolbox-30.bin and b/roms/f256k/toolbox-30.bin differ diff --git a/roms/f256k/toolbox-3F.bin b/roms/f256k/toolbox-3F.bin index 7221d65..c283f5e 100644 Binary files a/roms/f256k/toolbox-3F.bin and b/roms/f256k/toolbox-3F.bin differ diff --git a/roms/f256k/toolbox.bin b/roms/f256k/toolbox.bin index c83e992..2e586c3 100644 --- a/roms/f256k/toolbox.bin +++ b/roms/f256k/toolbox.bin @@ -9,10 +9,9 @@ %s: %s  %024lX:A2560 KA2560 MA2560 XC256 U+F256 JRF256 K2F256 KeM68040VUNKNOWNi486DX4*float*CONSOLE%s: #%d no mediaA2560 U+C256 FMXF256 JReF256 K2cF256 K2eM680EC30M68EC020M68EC040ReservedWDC65816rtc_init*:<>|"?FAT32 Sector: -not foundCartridgeY)A% "hhh -hhA2560 K40A2560 K60M68SEC000chan_openChannel: PSG Muted.bad handlei486DX2 50i486DX2 60fchan_readCPU %s +not foundCartridgeY)1hh hhgA2560 K40A2560 K60M68SEC000chan_openChannel: PSG Muted.bad handlei486DX2 50i486DX2 60fchan_readCPU %s Model %s -file lockedA2560X - LBA2560X - PBGenX32 - LBGenX32 - PBchan_free: MIPS_RS3_LESPARC32PLUSfsys_mkfs: MSDOS5.0fsys_opendirbad argumentExternal SDCInternal SDCprint(%d,..)fchan_read_b /sd0/test.txtfsys_closediraccess deniedgeneral errorinvalid drivemedia changednot supportedout of boundsout of memoryunknown errorA2560X - CUBEGenX32 - CUBEchan_read: %s=. ZUTTTZUTZU@ /sd0/hello.txtHello, world! +file lockedA2560X - LBA2560X - PBGenX32 - LBGenX32 - PBchan_free: MIPS_RS3_LESPARC32PLUSfsys_mkfs: MSDOS5.0fsys_opendirbad argumentExternal SDCInternal SDCprint(%d,..)fchan_read_b /sd0/test.txtfsys_closediraccess deniedgeneral errorinvalid drivemedia changednot supportedout of boundsout of memoryunknown errorA2560X - CUBEGenX32 - CUBEchan_read: %s3$ZUTTTZUTZU@ /sd0/hello.txtHello, world! Memory %d MB file not foundinvalid objectout of handleschan_alloc(%d)chan_close(%d)chan_alloc: %dloader found: bad binary filenot enough coreflush error: %dFATFS Error: %dfsys_setlabel: /sd0/renamed.txtClock %lu MHz Got channel #%d @@ -20,9 +19,9 @@ hhA2560 K40A2560 K60M68SEC000chan_openChannel: PSG Muted.bad ha 0123456789ABCDEFcdev_init_systemcdev_register %s Contents of %s: bad device numberinvalid path nameprohibited accessunknown file typeF%d-%s -proc_exec stack: proc_exec start: m[I6#+.,;=[]/*:<>|\"?xndZPFCODEC initialized.Console installed.Interrupts enabledTimers initializedbad channel numberCommand not found.Mounting drive #%dPGZ 24-bit count: PGZ 32-bit count: fsys_mkdir error: directory not foundfile system timeoutoperation timed outtoo many open filesproc_run error: %d -chan_read(%d,%p,%d)chan_seek error: %dFile system error: fchan_write error: fsys_delete error: fsys_load_ext ext: fsys_open error: %d -c `NO NAME FAT NO NAME FAT32 low level disk errorno file system foundchan_get_records 1: chan_get_records 2: chan_write error: %dchan_write(%d,%p,%x)PGZ 24-bit address: PGZ 32-bit address: fsys_set_cwd error: +proc_exec stack: proc_exec start: m[I6#+.,;=[]/*:<>|\"?zpf\RH>4CODEC initialized.Console installed.Interrupts enabledTimers initializedbad channel numberCommand not found.Mounting drive #%dPGZ 24-bit count: PGZ 32-bit count: fsys_mkdir error: directory not foundfile system timeoutoperation timed outtoo many open filesproc_run error: %d +chan_read(%d,%p,%d)chan_seek error: %dFile system error: fchan_write error: fsys_delete error: fsys_load_ext ext: fsys_open error: %d u +Q NNO NAME FAT NO NAME FAT32 low level disk errorno file system foundchan_get_records 1: chan_get_records 2: chan_write error: %dchan_write(%d,%p,%x)PGZ 24-bit address: PGZ 32-bit address: fsys_set_cwd error: Directory for /sd0/ Foenix Retro Systems SDC driver installed.Wrote %d characters. @@ -46,12 +45,12 @@ fsys_delete("/sd0/renamed.txt")Scanning for bootable devices... FAILED: SDC driver installation %dFAILED: file system initializationtxt_get_device: number mismatch %d4yyyxxxxxxA valid boot record was not found. AAA 22222 55555 6 00000 X XA A 2 5 6 0 0 X X A A 2 5 6 6 0 0 X X A A 22222 55555 66666 00000 X XAAAAA 22222 55555 66666 0 0 X 55555t5 h5@\5P5*666655 5@556666s6g6 [6@O6C6 PC: %08X Address: %08X Press SPACE for default. - _________ ___________ __ __ / ____/__ \ / ____/ ___/ / / / / / / __/ //___ \/ __ \ / / / / / /___ / __/____/ / /_/ / / /_/ / \____//____/_____/\____/ \____/ PC: %08X       _________ ___________ __ __ / ____/__ \ / ____/ ___/ / / / / __ / / __/ //___ \/ __ \ / / / /_/ /_/ /___ / __/____/ / /_/ / / /_/ /_ __/\____//____/_____/\____/ \____/ /_/ Unable to mount drive %s, FatFS Error: %d ___ ___ ___________ ____ __ __ / | |__ \ / ____/ ___// __ \ / //_/ / /| | __/ //___ \/ __ \/ / / / / ,< / ___ |/ __/____/ / /_/ / /_/ / / /| | /_/ |_/____/_____/\____/\____/ /_/ |_| e9e;e<e=e>e?e@e;e=e?e ___ ___ ___________ ____ __ __ / | |__ \ / ____/ ___// __ \ / / / / / /| | __/ //___ \/ __ \/ / / / / / / / / ___ |/ __/____/ / /_/ / /_/ / / /_/ / /_/ |_/____/_____/\____/\____/ \____/ Address Error Bus Error Division by Zero Error Illegal Instruction Error Oh dear, something has gone wrong... Overflow Exception Privilege Exception Range Check Exception Spurious Interrupt Unknown Exception Ŀ + _________ ___________ __ __ / ____/__ \ / ____/ ___/ / / / / / / __/ //___ \/ __ \ / / / / / /___ / __/____/ / /_/ / / /_/ / \____//____/_____/\____/ \____/ PC: %08X       _________ ___________ __ __ / ____/__ \ / ____/ ___/ / / / / __ / / __/ //___ \/ __ \ / / / /_/ /_/ /___ / __/____/ / /_/ / / /_/ /_ __/\____//____/_____/\____/ \____/ /_/ Unable to mount drive %s, FatFS Error: %d ___ ___ ___________ ____ __ __ / | |__ \ / ____/ ___// __ \ / //_/ / /| | __/ //___ \/ __ \/ / / / / ,< / ___ |/ __/____/ / /_/ / /_/ / / /| | /_/ |_/____/_____/\____/\____/ /_/ |_| e9e;e<e=e>e?e@e;e=e?e ___ ___ ___________ ____ __ __ / | |__ \ / ____/ ___// __ \ / / / / / /| | __/ //___ \/ __ \/ / / / / / / / / ___ |/ __/____/ / /_/ / /_/ / / /_/ / /_/ |_/____/_____/\____/\____/ \____/ Address Error Bus Error Division by Zero Error Illegal Instruction Error Oh dear, something has gone wrong... Overflow Exception Privilege Exception Range Check Exception Spurious Interrupt Unknown Exception Ŀ Foenix Toolbox v%d.%02d.%04d starting up... ___ ___ ___________ ____ __ __ / | |__ \ / ____/ ___// __ \ / / / / __ / /| | __/ //___ \/ __ \/ / / / / / / /_/ /_ / ___ |/ __/____/ / /_/ / /_/ / / /_/ /_ __//_/ |_/____/_____/\____/\____/ \____/ /_/ EXPbEc"defo sux _________ ___________ ________ ____ __ / ____/__ \ / ____/ ___/ / ____/ |/ / |/ / / / __/ //___ \/ __ \ / /_ / /|_/ /| / / /___ / __/____/ / /_/ / / __/ / / / // | \____//____/_____/\____/ /_/ /_/ /_//_/|_| fsys_rename("/sd0/hello.txt", "/sd0/renamed.txt") džm[I6#  [!] Incompatible CPU arch: expected %s, but found %s - 8!#*-<>@[q]^{K|8}% GGGGGG EEEEEEE NN NN XX XXX 3333333 2222222 GG EE NNN NN XX XXX 33 22 GG GGGG EEEEE NN NN NN XXX 33333 22222 GG GG EE NN NNN XXX XX 33 22 GGGGGG EEEEEEE NN NN XXX XX 3333333 2222222 ,rk` d]%RKG<1&@bABCDG]JbKbPfHqmeiA;=?hj,* .!-" 0#/ + 8!#*-<>@[q]^{K|8}% GGGGGG EEEEEEE NN NN XX XXX 3333333 2222222 GG EE NNN NN XX XXX 33 22 GG GGGG EEEEE NN NN NN XXX 33333 22222 GG GG EE NN NNN XXX XX 33 22 GGGGGG EEEEEEE NN NN XXX XX 3333333 2222222 ,rk` d]%RKG<1&@bABCDGSJbKbPfHgmeiA;=?hj,* .!-" 0#/ $ 2%1 &:4'3 (c6\5k9[aEAAEEEIIIOOUUYAIOUvj KKKKK p"KKKKKKKKKKKK'}c,Z 0@QYR[T]V_`pN!2!p!!!$0,/`,g,u,,d-&A (((( AAAAAABBBBBB #%%%%$%a%b%V%U%c%Q%W%]%\%[%%%4%,%%%<%^%_%Z%T%i%f%`%P%l%g%h%d%e%Y%X%R%S%k%j%% %%%%%%")"a"e"d" #!#H""" %ax029J.yMC= (": e,;;=f,?@AAF S@UXZ\]^_abdefgjb,lmnpqstvwxyz{|d,~DE{ 0 P`"6Da&`l@N# @@ -67,173 +66,173 @@ fsys_rename("/sd0/hello.txt", "/sd0/renamed.txt") dž  $$8~~8||88TT8 @@ @@|$BB$8||8(((((|(|((P(8DDD8(8DDD8 8DDD8(HHH4 HHH4(DDL48(8DDDD8(DDDD88TPT8$ x "|DD(||8D@D8$ p 8DDD8HHHHp4X|(D(|8DD|DD88DDD((l< DDD8ll$JR"\@<@8@<8DDDDDD|||||  8 8 `| T T(P 8$$$8 <<<<< -  !kkk::kkkkkkkkkkkkkkk>kV>k"Tk"kAkkkk k.k +  !kkk::kkkkkkkkkkkkkkk>kV>k"Tk"kAkkkk k.k $Bk -Ak"mk"mk? )k"k)"}k)"9k kkkc8k k -k k%'kikX>Z>kH"hk -kk)!8kH"hkH"dwhkik +Ak"mk"mk? )k"k)"y}k)"1k kkkc8k k +k k%'kikX>Z>kH"hk +kk)!8kH"hkH"^whkik kki-k H :Hkmmk:k)k)k i k -"k -"k -kH"2lhk"$kkk  k"T"])k")"Z"A"[ -wk:00k'' ɀ k:k 8k8[dH )"Ukk )"Ukk ) "Ukk )"Ukk )"Ukk )"Ukk )"Ukk )"Ukk )"Ukk )"Ukk )D"Ukk )"Ukk  8 kC"kk [ h )X+k [ h )x+k)k [HZ>X>+kkZ"X: czkZ"NX:czk)8kZ$"`7ezkZ"i:zk [HV>"W+k8PI"Tkk"[k"`"$"Wk  " " )kZ)))zkwk    k" "W&"kHHHH"hhhhk  ?i?AiAk +"k +"k +kH",lhk"$kkk  k"T"])k")"Z"/"[ +wk:00k'' ɀ k:k 8k8[dH )"Ukk )"Ukk ) "Ukk )"Ukk )"Ukk )"Ukk )"Ukk )"Ukk )"Ukk )"Ukk )D"Ukk )"Ukk  8 k [𫫯Z>X>+kC"kk [𫫘V>"W+k [ h )X+k [ h )x+k)kkZ"X: czkZ"NX:czk)8kZ$"`7ezkZ"i:zk8PI"Tkk"[k"`"$"Wk  " " )kZ)))zkwk    k" "W&"|kHHHH"hhhhk  ?i?AiAk 7k"[k)k)k) - #e  kZ   ;"ԙzk" x0HzzkkZZ  "TH"]hzzk:   / k -   "kHHFf ee&hk&(*,k/ JJJJ /  kp"oY:p"܄kZ8PIzk"k + #e  kZ   ;"ʙzk"[x0HzzkkZZ  "TH"|]hzzk:   / k +   "kHHFf ee&hk&(*,k/ JJJJ /  kp"Y:p"ԄkZ8PIzk" k  H H"zVhhV>"Wz -zk [𫫘"+k)  -  k"W   k"W  J kZ) :8zk"W  k   "d"k kZ  HH )H )"Whhhh"_zk88(PI +zk [𫫘"+k)  +  k"W   k"W  J kZ) :8zk"W  k   "d"k kZ  HH )H )"Mhhhh"_zk88(PI LHL ko= o= -q=s=o=o=kk "k"kk:     )  k"2U"gk>>="ԙk:% +q=s=o=o=kk "k"kk:     )  k"2U"gk>>="ʙk:%    kZ   oo I /oo zk# k  -"y +"݌ - "y z z -zk"ԙ"ay  )   k"W  J:kkdHHJee&hzk)8PI&"`5ekZ  )  zk!ɀ8 -ekZZ JJJJ JzzkZZ;"X  zzkZ   -)HHHHH )"Ӝ;i -"_zkZ   -)HHHHH )"U;i -"_zk [H8X>X>Z>Z>Z>X>+k + "݌ z z +zk"ʙ"y  )   k"W  J:kkdHHJee&hzk)8PI&"`5ekZ  )  zk!ɀ8 +ek [𫫘8X>X>Z>Z>Z>X>+kZZ JJJJ JzzkZZ;"X  zzkZ   +)HHHHH )"ɜ;i +"_zkZ   +)HHHHH )"K;i +"_zk  8PI"oz zk  -8PI"z +8PI"z zk  -8PI"-z +8PI"z zkHZ H $   ()h  zhhhk  -"|z +"|z zk   ):kH &H) -H)*EJ&h)jh)jhkZ"W"    zk=""[8T>kkZ  A )8 -"pZ J ) "pZzk"pZ*"pZ#"pZ,"pZ"pZ"pZE"pZ"mdkZ  8     գI)8zk +H)*EJ&h)jh)jhkZ"W"    zk=""[8T>kkZ  A )8 +"lZ J ) "lZzk"lZ*"lZ#"lZ,"lZ"lZ"lZE"lZ"gdkZ  8     գI)8zk     ) zz z -zk4"2h""s) H"h"V:1"2hk4"l !  kH)ɀ))ɀ)zh @zzkhk -"r"NPHP +zk4",h""a) H"h"V:1",hk4"b !  kH)ɀ))ɀ)zh @zzkhk +"r"NPHP Nh"zVz zk BBBB "zVz -zk4"2h"\:HL"2hh"V:1"2hk +zk4",h"\:HL",hh"V:1",hk  -8PId "Gz +8PId "7z zkZ  ) % e) -e"ozkZZc, -" -"`8 +e"ozkZZc, +" +"`8 zzk ZZ ; -"] zzz +"M zzz zk Z"W  -!"pH"ch  zz +!"pH"ch  zz zk:0 #H`W&J}k  ;iHH -=="{hhz +=="{hhz zk  ) -H"]h H"]hz -zkH"]hZ  )Ȉ +H"|]h H"|]hz +zkH"|]hZ  )Ȉ I  )/) Izk Z -d"'  ; -" zz +d"'  ; +"zz zkH )+' )  - h((kZ  i  "1 H"hzzk + h((kZ  i  "! H"hzzk   )"X: zz z zk i -)"s)  z +)"a)  z zk   H -"k zz z +"k zz z zk [𫫘ZZ -)  H"hzz+z +)  H"hzz+z zkZ8PI0zk -% e"k"fZ"W18 PI"e  zzk [𫫘ZZ"nU"uU ` )%zz+k +% e"k"fZ"W18 PI"e  zzk [𫫘ZZ"nU"uU ` )%zz+k ) -H"]h -ک H"]h -H"]hz +H"|]h +ک H"|]h +H"|]hz zk ZZZ :   ڦzzzz zk - [𫫘"r":< H< + [𫫘"r":< H< :h"zV+z -zkqUȗȗȗȗ:ȗ  k +zkqUȗȗȗȗ:ȗ  k [𫫘  -"`   +"P   "P:"W+z -zk;8J  ;"Bj;";";iJk"T;"ם"Dr`j<""_W\ y [𫫘Z & )4"`m$e"rg & z+kZ  CC UU CC U* CC UU zk - [𫫘"r +zk;8J  ;"r`j<""_W\Zy [𫫘Z & )4"`m$e"lg & z+kZ  CC UU CC U* CC UU zk + [𫫘"r  "zV+z zk - [𫫘"r# + [𫫘"r# "zV+z zk - [𫫘"r& H + [𫫘"r& H h"zV+z zk - [𫫘"r&>@ H@ + [𫫘"r&>@ H@ >h"zV+z zk - [𫫘"r&BD  D + [𫫘"r&BD  D B"zV+z zk Z :d   ئzzz z -zkZ8PI08$"`7!7$"`ezk - [𫫘"r$ H +zkZ8PI08$"`7!7$"`ezk + [𫫘"r$ H h"zV+z zkZZ"W4   ))   7 zzk -  "`$% +  "`$% @@ -241,29 +240,29 @@ z % zz z zk/  ):   #):   k   - )"YH)"Yh8 ) Պzz z + )"YH)"Yh8 ) Պzz z zk Z )"qW  w"qW  zz -zkM>">4> >>7>==>==>==8~P>R>k [𫫘Z""a -"|"Wz+kZ8PI9V"`CeH"ԙhzk -  "r&JL HL +zkM>">4> >>7>==>==>==0~P>R>k [𫫘Z""a +"|"Wz+kZ8PI9V"`CeH"ʙhzk +  "r&JL HL Jh"zVzz z zkZ     J  jj) ec  :  ȈǣzkZZ   JJJJ ))#) 8PI0 8PI0 -"`czzkM7 9Z UȗȗȗȗkZZ:2    zzzk - [𫫘"r* HHH +"`czzkE7 5Z UȗȗȗȗkZZ:2    zzzk + [𫫘"r* HHH h"zVhh+z zk - [𫫘"r*68H H8 + [𫫘"r*68H H8 6h"zVh+z -zkZZ8PI0zzk8PI0Ӣ"qZ  CC  CC    :zkZZ  "`7  ;iH;i"hh +zkZZ8PI0zzk8PI0Ӣ"pZ  CC  CC    :zkZZ  "`7  ;iH;i"hh "Wzzk - [𫫘"r( H + [𫫘"r( H h"zV+z zk - [𫫘"r(&(  ( + [𫫘"r(&(  ( &"zV+z zk - [𫫘"r(*,  , + [𫫘"r(*,  , *"zV+z zkZ    A) @@ -272,18 +271,22 @@ z  ) - %  "fzk -Z"r  -"zVH8 "ԙhzz + %  "fzk +Z"r  +"zVH8 "ʙhzz +zk + ["4"m"m"i +" +PI0+z zkH) H )87IJj(hk( *(zzk [𫫘  -"` +"P "Ahh"W+z zk - [𫫘"r*24 H H4 + [𫫘"r*24 H H4 2h"zVh+z zk ZZP>R>R> @@ -291,103 +294,99 @@ ZZ zk s= -q="zV:Ӌ [𫫘ZZZ"nU"uU'  l    l zzz+k [𫫘ZZZ"nU"uU'  `    ` zzz+kZZJJJJJ)?HJJJ))H#H JJJJJ)H J))iH "2h;i -zzk - [H"4"m"m"i -" -PI0+z -zkZ"`C  )zk:,:#&(*,&(*,kZZZ  "o&$o("`c @ ` $""ezzzk +q="zV:Ӌ [𫫘ZZZ"nU"uU'  l    l zzz+k [𫫘ZZZ"nU"uU'  `    ` zzz+kZZJJJJJ)?HJJJ))H#H JJJJJ)H J))iH ",h;i +zzkZ"`C  )zk:,:#&(*,&(*,kZZZ  "o&$o("`c @ ` $""zzzk ;8 -;"+tHH -;i"Zhh;iz -zk;8T>8PI0:HHH;i "}hhh;i"ԙ;iTkZd;  )H)h8   :zzk;8 -#JJJJ  #   ;i"݁;i +;"%tHH +;i"Zhh;iz +zk;8T>8PI0:HHH;i "}hhh;i"ʙ;iTkZd;  )H)h8   :zzk;8 +#JJJJ  #   ;i"Ձ;i k ;8 -;"|lHH -;i"Zhh;iz +;"vlHH +;i"Zhh;iz zk -ZZ8PI6""`;e +ZZ8PI6""`;e "zVzzz zk ;8 -;"|l;iH -;i"Zhh;iz +;"vl;iH +;i"Zhh;iz zk -"5d= +"/d= = -;>"Z">"Z >"Zz +;>"Z">"Z >"Zz zk"T -;8  i "-a  i "-a;i k;8T>8PI0>HHHHX;i "} hhhh;i"ԙ;iTk +;8  i ")a  i ")a;i k;8T>8PI0>HHHHX;i "} hhhh;i"ʙ;iTk ZZ  -  "R  w T>zzzz z -zkZ8PI0zk""`;;""`e [𫫘ZZZ"nU"uU.' l I%   l zzz+k +  "H  w T>zzzz z +zkZ8PI0zk""`;;""`e [𫫘ZZZ"nU"uU.' l I%   l zzz+k [𫫘Z  -"` -",]z"|"Wz+z +"P +",]z"|"Wz+z zk [𫫘Z  -"` -"6A "|"Wz+z +"P +"6A "|"Wz+z zk Z    "W   ::zzz z zk  - ?  2)(d"Rhhz + ?  2)(d"hhz zk Z -Hd"h -"YH -HH"hhhک "ԙhzz +Hd"h +"YH +HH"hhhک "ʙhzz zk Z   -"Y e  +"Y e   ) zzz z zk  -  [𫫘"r .. 0 "0 +  [𫫘"r .. 0 "0 . "zV+zz z zk -  [𫫘"r .R T "T +  [𫫘"r .R T "T R "zV+zz z zk ZZ -"T"n`: "T"]:zzz +"T"j`: "T"]:zzz zk ZZZ  "$/;i -"] zzzz +"M zzzz zk ;8J -;"Bj)  ;";";iJz +;"8PI0FZHZHHHHH;i"} ;i ;i"ԙ;iTk +zkZ    P') "`e  %) "`e ' zkZRMH)h8PI0 "'e zzk;8T>8PI0FZHZHHHHH;i"} ;i ;i"ʙ;iTk ZZ  -"Z:<w +"Z:<w  eɀzzz zk -  [𫫘"r 0" $ $H$ +  [𫫘"r 0" $ $H$ " h"zV+zz z zk ZZ    @@ -398,7 +397,7 @@ Z 0B;H i"hhzz zk - [𫫘ZZ8PI2""`;e + [𫫘ZZ8PI2""`;e "zVzz+z zkZi  8PI0  zzke  Z    NH% ) @@ -406,71 +405,69 @@ z ehH% ) -eh"fzzk +eh"fzzk ZZ %;i -"  zzz -zkd"V:Z&"ay   )  6HH"4hh    "zkZV            I%  zk +" zzz +zkd"V:Z&"y   )  6HH"4hh    "zkZV            I%  zk Z -"  ; -"  -"1: -"hzz -zkZ    PH) "`ehH) "`eh +"  ; +" +"): +"hzz +zkZ    PH) "`ehH) "`eh zzk - [𫫘ZZ8PI6""`;e + [𫫘ZZ8PI6""`;e "zVzz+z zk 8ʆ8ʆ  $2 0 -d"N\eHe +d"J\eHe hz -zk -ZZ8PIG6"`:e% +zk [ Y )d Z )Ȉ +& [ )+k +ZZ8PIG6"`:e% "zVzzz zkZ   0 P9  E a 0f  % A F  )i)i )80zk ZZ -"`C;iH -"hh - "|"Wzzz +"`C;iH +"hh - "|"Wzzz zk;8 - "|u"|V>HH  " -]hh;i -k [H Y )d Z )Ȉ -& [ )+k - Z "` + "|u"|V>HH  "]hh;i +k + Z "`  < - "O "Y)"Wzzz z + "= "Y)"Wzzz z zk P X Y Z [ ] ^ _ X \ X k ZZ -q"ԙ -"`/;H;i"Ɵhh) +q"ʙ +"`/;H;i"Ɵhh) "Wzzz zk - [𫫘Z"Y -)&"`5e" -"\c e$ z+z + [𫫘Z"Y +)&"`5e" +"Vc e$ z+z zk Z  -0 2  "# - "Zzzz z +0 2  " + "Pzzz z zk ZZZ 8PI - ;iH"yohhH:H"+ohhzzzz + ;iH"sohhH:H"%ohhzzzz zk ZZZ  8PI0zzzzz z zk "T -cH"]h8PI0/8PI0    .      "k +cH"|]h8PI0/8PI0    .      "k [𫫘 -HH"hh8PI+ -6"`:e6"o+z +HH"hh8PI+ +6"`:e6"o+z zk -ZZ"`N8," -% +ZZ"`N8,"% @@ -480,50 +477,50 @@ z ZZ\  C7 -"5d0 +"/d0 zzz zk ZZZ 8PI - ;iH"yohh8HH"+ohhzzzz + ;iH"sohh8HH"%ohhzzzz zk ZZZ 8PI - ;iH"yohhcHH"+ohhzzzz + ;iH"sohhcHH"%ohhzzzz zk ZZZ 8PI - ;iH"yohh8HH"+ohhzzzz + ;iH"sohh8HH"%ohhzzzz zk ZZZ 8PI - ;iH"yohhcHH"+ohhzzzz + ;iH"sohhcHH"%ohhzzzz zk - ;8R >8PI0B;i^H ;i"&}hh;i> + ;8R >8PI0B;i^H ;i"}hh;i> >"zV;iRzz z zk ZZZZ   -"Ye) +"Ye)      zzzzz zk - ZZ  "0< "=[0* "KU%zzzz z -zkZZ8PI*8PI Ȉ :H:H"+ohhzzk + ZZ  "߲0< "9[0* "KU%zzzz z +zkZZ8PI*8PI Ȉ :H:H"%ohhzzk Z 8 -PI0@ "`  4 - "`e"d: zz +PI0@ "`  4 + "`e"d: zz zk - [𫫘ZZZZ;i;"5:;$ + [𫫘ZZZZ;i;"%:;$ "zVzzzz+z zk ZZZ  8PI c   zzzzz z zk -"xi +"ri Z - U"|H H"hhh8PI  e ӊzzz z + U"|H H"hhh8PI  e ӊzzz z zkZ  )  ) @@ -533,10 +530,10 @@ z e) e  zzk - [𫫘ZZ8PII""`;e%HH + [𫫘ZZ8PII""`;e%HH h"zVhzz+z zk - ;8R >8PI0B;i^H ;i"&}hh;i> + ;8R >8PI0B;i^H ;i"}hh;i> >"zV;iRzz z zk ZZZ @@ -546,112 +543,112 @@ ZZZ "[zzzz zk ZZ  -"ԙ "`*;iH +"ʙ "`*;iH "Ɵhh "Wzzzz z -zk""2h_y"lhh""2h_"€"j "2hy"""ݞy"ݞkZi:] +zk"",h_y"lhh"",h_""j ",hy"""Ӟy"ӞkZi:] AH`"VM"VD? ' 0 @ ! '   zk Z!ɀJ=ɵ6% e 8 ֊i)zz z zk - [𫫘ZZ8PIN""`;e*HH + [𫫘ZZ8PIN""`;e*HH h"zVhzz+z zk - [𫫘ZZ8PIN""`;e*HH + [𫫘ZZ8PIN""`;e*HH h"zVhzz+z zk    -L       "oȷ   "k i +L       "oȷ   "k i zz z zk Z   - "@ + "@ :)0 i2 0 "c/hzzz z zk ZZ -HH "2hhh -"h0/"gH"Qh"ݫ):ܣ"HW "2hhzzz -zk;88PI0! ;i"݁;ik%ک8;ie  FfFfFfFfZ  )az8 ʆɀ8)zk;8 +HH ",hhh +"h0/"]H"h"s):ܣ"CHW ",hhzzz +zk;88PI0! ;i"Ձ;ik%ک8;ie  FfFfFfFfZ  )az8 ʆɀ8)zk;8 cJ iH he   ;i k:  ;8 -JJJJ))  ))  JJJJ)  )  ;i"݁;i +JJJJ))  ))  JJJJ)  )  ;i"Ձ;i k ZZ  8PI0 -"Qzzzz z -zk8PIH ch  [𫫘;8RZ;i"}h ;i"hh"|"W;iR+kZZZZ  8,PI0zzzzko("`8*PI0 &ce @  `  +"Gzzzz z +zk8PIH ch  [𫫘;8RZ;i"}h ;i"hh"|"W;iR+kZZZZ  8,PI0zzzzko("`8*PI0 &ce @  `  Z -"`f +"`f "!"WW% eHeh"!"W+ eHe h"!"Wzz zk ZZZZ  8PI0zzzzzz z -zk "T"]H +zk "T"]H c h  ZZZ +   zzzz zk -cH"h;8"     [e .U>Y<!;";i"k +cH"h;8"     [e .UmY<!;";i"k Z  - i  )     "s    @' ) -"xi)zzz z -zkZZZi0  :  ;8"`&e"H"ԙh)H;iH3"ԙhhh"Wzzzk -  [𫫘ZZZZ;i;"5:G0H   + i  )     "a    @' ) +"ri)zzz z +zkZZZi0  :  ;8"`&e"H"ʙh)H;iH3"ʙhhh"Wzzzk +  [𫫘ZZZZ;i;"%:G0H    h"zVzzzz+zz z zk ZZZZ  -i"Z  7i -"ZHhzzzzz +i"Z  7i +"ZHhzzzzz zk Z  - "R7O + "H7O )   $  zzz z -zk;8 8 PIx;i H"yo;iH"v c c 8;i H"w d8"7s;iH!"w;i;ik - [HZZZZ -CC"Q -G -="m -  "i -" -PI0zzzz+z zk + [𫫘ZZZZ +CC"Q +G +="m +  "i +" +PI0zzzz+z +zk;8 8 PIx;i H"so;iH"v c c 8;i H" w d8"1s;iH!" w;i;ik Z  -H "Yh+ "Ye  zzz z -zk c)"YH -ch  [𫫘;8T"L hhhh]H]HHd;i "}hhh;i" nO"|"W;iT+k +H "Yh+ "Ye  zzz z +zk c)"YH +ch  [𫫘;8T"L hhhh]H]HHd;i "}hhh;i" nO"|"W;iT+k ;8: ;i;i"J:O;i"91+1   ;i";i:z zk ;8T ->8PI/"^H -HH;i "} hhhh&ڥ -HHk;i "}hhh;iH"hh;iTz -zk +>8PI/"^H +HH;i "} hhhh&ڥ +HHk;i "}hhh;iH"hh;iTz +zk [𫫘ZZZ;H"ZhhhhF&HH"hh1H "ʙhH "ʙhzzz+k [𫫘;8 -;i;"5 >&("( +;i;"% >&("( &"zV H -"ԙh ;i +"ʙh ;i +z zk [𫫘;8 -;i;"5 >*,", -*"zV H/"ԙh ;i +;i;"% >*,", +*"zV H/"ʙh ;i +z zk @@ -665,23 +662,23 @@ z zk Z  4  6 -g "eO - i8 "ah +g "UO + i8 "!bh 4 6 zzz z -zkZZZ -8*PI008,PI08,"*h,:"$o&o(zzzk [HZZZ;H"ZhhhhF&HH"Rhh1H "ԙhH "ԙhzzz+k +zkZZZ -8*PI008,PI08,"*h,:"$o&o(zzzk [𫫯CL<C"u:#"u:4"u: CV"|UCC ɿ 4CC    C"UC+k [𫫘;8 -H"h;i;i"5:B "  -"zV"\c;i +H"h;i;i"%:B "  +"zV"Vc;i +z zk [𫫘;8 -;i;"5 B"$&H $ -"h"zV H "ԙh ;i +;i;"% B"$&H $ +"h"zV H "ʙh ;i +z -zk [HCLC"u:#"u:4"u: CV"|UCC ɿ 4CC    C"UC+k +zk ZZZZ  -8PIV "T"]   +8PIV "T"]   5 + c  zzzzzz z zk @@ -694,18 +691,18 @@ z Ȉ &)dz zk - T>L~ f8ʆ + T>L~ f8ʆ 8ʊ -"z +"z zk Z  - i e )8PIF cH"h c   zzz z -zk;8 8PI0L;iH"yohh;iH"vhh8PI -cc8  ;iH"whhd "7s;iH"whh;ik8HHH + i e )8PIF cH"h c   zzz z +zk;8 8PI0L;iH"sohh;iH"vhh8PI +cc8  ;iH" whhd "1s;iH" whh;ik8HHH **** * * * 8Hh hhhzzz****Jh;i(khhhhhzzzz(k ZZ -."<  v 8PI0\    +)"YH +."4  v 8PI0\    +)"YH ch c  zzzz z zk Z  @@ -713,73 +710,73 @@ z zk ZZZ  %;i -"  S 4  -" ;i -" zzzzz z -zkd"V:L6 +" S 4  +";i +"zzzzz z +zkd"V:L& ZZ - )"V::   "V:S))e:"^a  zzzz z -zkZ?8PI@8PI0PG"8 A":P8PI0"PG"4c A"4zk + )"V::   "V:S))e:"Za  zzzz z +zkZ?8PI@8PI0PG"8 A":P8PI0"PG"4c A"4zk  [𫫘;8 -;i;"5 K.0/H  0 -. h"zV H "ԙh ;i +;i;"% K.0/H  0 +. h"zV H "ʙh ;i +zz z zk  [𫫘;8 -;i;"5 N243HH  4 -2 h"zVh H "ԙh ;i +;i;"% N243HH  4 +2 h"zVh H "ʙh ;i +zz z zk "AUix -d"/ "/"/dd"q"q"q"AU -PI0d"q"q"qz -zkZ"8PI0T8PI0zk$"`77$"`e6"`::6"`eL~;86, a NWА![#%+-/1[')35;":1;";i6k +d"% "%"%dd"p"p"p"AU +PI0d"p"p"pz +zkZ"8PI0T8PI0zk$"`77$"`e6"`::6"`eLn;86, a NWƐ![#%+-/1S')35;":1;";i6k ZZZ -##"U"Vʆ"K"Vʆ"K 8PI00c +##"U"Vʆ";"Vʆ"; 8PI00c 7cWc     "UЁzzz\;8 cD           ;ik  ZZ     -"1:L(  ; -"5 [  -"5; -" ; -" #  zzzz z -zk/  )$   " L+&   " c@+&   " 3@+&   " k;8 +"):L  ; +"- [  +"-; +"; +"#  zzzz z +zk/  )$   " L+&   " c@+&   " 3@+&   " k;8       ;i -k"h) +k"h) _wvH) -hwT#:.#:  )".JJ   L% +hwT#:.#:  )".JJ   L ;8T -HH& "2hhh +HH& ",hhh -"h8PInH"2h;i"};i"YH;i H "ک -"2h ;i -"{H!"2hh;iTz +"h8PInH",h;i"};i"YH;i H "oک +",h ;i +"qH!",hh;iTz zk ;8 cJ  cic    Ȁ ;iz -zk:LZiBBBB8 PI0_ h i j l m n ` a b zzk +zk:LZiBBBB8 PI0_ h i j l m n ` a b zzk -eL +eL Z  V 0 E X - x $ȷ )"a:  E% 0 6 X + x $ȷ )"Q:  E% 0 6 X x ! 8PI08PI0 zzz z zk -Z8PI0Lţ$"`7e +Z8PI0Lģ$"`7e r 8PI/ -6"`:eE "| "|zz +6"`:eE "| "|zz zk Z  -"a +"a  c i @@ -791,7 +788,7 @@ z ȗȗȗȗ ȗ ȗzzz z zk;8  - ;"X Lƣ + ;"X Lƣ  @@ -802,8 +799,8 @@ z    ;i -;i"J;ik           o "+_8 PI0Pp"W"4hh @     "k -wZ A"SPG""PG"4c A"4?"Sń'7""PG"8 A":zk +;i"J;ik           o "'_8 PI0Pp"W"4hh @     "k +wZ A"SPG""PG"4c A"4?"2Sń'7"2"PG"8 A":zk Zi  )) @@ -811,22 +808,23 @@ z ȗ i8 8ʠȗ Hȷ -h"z\ +h"z\ +  [𫫘;8  H HHH" -"ԙhhhh;i;i"5J  . +"ʙhhhh;i;i"%J  . H   h"zVH -"ԙh;i +"ʙh;i +zz z zk ZZ -)L@64 -i8"%bhL;  84(H6*h "H  ;4 wH6"wh -i8"%bhzzz -zk;8;"8 +)L064 +i8"SbhL+  84(H6*h "H  ;4 wH6"wh +i8"Sbhzzz +zk;8;"8 ) @@ -836,37 +834,37 @@ z & ʠȈ & ʆFj;ik Z   -     L ͠  L  w   +     L̠  L  w   ) e    @ Z   a "z   -"C  H"hzz z -zk [𫫘8PI0L͘""`;e +"C  H"hzz z +zk [𫫘8PI0L͘""`;e -  +kZ > Lίʆʆ" ʆʆ"  s  i) -ʆʆ") -ʆʆ"88zk +  +kZ > Lίʆʆ" ʆʆ"  s  i) +ʆʆ") +ʆʆ"88zk ZZZ  ; -"]Lϥ  +"MLϥ  "Kt "b A  " "U zzzzz z -zkIIڅd*8&zzkHCh"H"Ik$8$8 +zkIIڅd*8&zzkHCh"H"Ik$8$8  ddd d & &&8& & zz -z zkEH"%z8kk;8  LѯH h 8PI0j ) +z zkEH"z8kk;8  LѯH h 8PI0j )   '  ) e  %  ) -e  4e  e  L;izk +e  4e  e  L;izk ;8      - "LҠ + "LxҠ ic  8<PI0S;iH i "hh  ;i z @@ -875,58 +873,59 @@ z - c  :L\ӣ -H`HHr> "ihhnHHr: "ihhRHHr* "ihh6HHr6 "ihhHHr2 "ihhH "dwh)"ˈ"{zzzzk;8V- gU Rq΃7DZ!#%_79\;=s\'){+-\/1[35e?A WCEi{GI*hKMOQO^SU;"5;iVk;8 -;H"wd""ۘHHH"X;i dd"Њd">"# 8PI0""o"+ohh;i -kHH "ihhdd "ˈd "{  ZZH"h0V8PII$"`77$"`e$"`7ew8PI0Y$"`7J$"`77$"`e$"`7ezzk + c  :LLӣ +H`HHr> "YhhnHHr: "YhhRHHr* "Yhh6HHr6 "YhhHHr2 "YhhH "^wh)"È"szzzzk;8V- gU Lq̓':Z!#%_79\;=o\') +{+-\/1{[35?A WCEa{GI*hKMOQK^SU;"5;iVk;8 +;H" wd""јHHH"X;i dd"Ȋd"6"# 8PI0""o"%ohh;i +kHH "Yhhdd "Èd "s  ZZH"h0V8PII$"`77$"`e$"`7ew8PI0Y$"`7J$"`77$"`e$"`7ezzk ZZZ    , .7  . , "K t -  "íI      "Uzzzzz z -zk;8 / ;i";i"H;i"Yh?;i"q|:"Lhhhh;ik;ic   A +Z  )"YH;ich L +  "YI      "Uzzzzz z +zk;8 / ;i";i"H;i"Yh?;i"i|:"Lhhhh;ik;ic   A +Z  )"YH;ich L ;8    -"e:LK٥ - " 46 -i8"k +"U:L;٥ + " 46 +i8"k i8 -6H c "%bh c  +6H c "Sbh c   ;i zz z zk ZZZ  -  "KL5ک -  "íj    ) " "UL٣ zzzzz z +  "KL%ک +  "Yj    ) " "UL٣ zzzzz z zkZZZ: 8PI0.80PI0/"UPI0 -80LV۩$8PILIۊ80PI09"UPI080^8aPI0V"UPI0i28API06"UPI0izzzk +80LF۩$8PIL9ۊ80PI09"UPI080^8aPI0V"UPI0i28API06"UPI0izzzk  [𫫘;8  H -HHH"hhhh;i;i"5q HH3"ԙhh . +HHH"hhhh;i;i"%q HH3"ʙhh . H   - h"zVH "ԙh;i + h"zVH "ʙh;i +zz z zk ;8  = - 8PILpݣ"` 8PI0Lpݣ8 :8PI0m - "݁8 PI02 c + 8PIL`ݣ"` 8PI0L`ݣ8 :8PI0m + "Ձ8 PI02 c -`C^C "݁ -H "h  H "h H "h:L;i z +`C^C "Ձ +H "h  H "h H "h:L;i z zk -  [𫫘ZZZK""|8PI0Lwޣ6"`:eLzޣ"p n ` +  [𫫘ZZZK""|8PI0Lgޣ6"`:eLjޣ"` n ` E H  -h"'c"zV  zzz+zz z +h"!c"zV  zzz+zz z zk [𫫘Z8PI0 -z+zke  ie   ie  ie   ie  ie   ie  L;8@;i ;i"J:L ;i "91_7  ;/+)  "H h 7  +z+zke  ie   ie  ie   ie  ie   ie  L;8@;i ;i"J:L ;i "91_7  ;/+)  "H h 7    :  ;i@k ;8   -  "V"k ) - ";i +  "V"k ) + ";i zz z zk: @@ -942,31 +941,31 @@ z  c i -cH"Vchȗ LZZv -"2hR"8PI0L0"ԙ@"#hhL @ L @ L⯒@e@@" z@H@H"2hhh@@@"2hhh@"2hhh@"#hhL"m"ԙH"ԙhzzk +cH"Vchȗ LZZv +",hR"}8PI0L0"ʙ@"hhL @ L @ L⯒@e@@"\z@H@H",hhh@@@",hhh@",hhh@"hhL"m"ʙH"ʙhzzk ZZZZ)* -  ϧ) L)*  ϧ) +  ϧ) L)*  ϧ) !   zzzzzz z zk - ;8$8PI0L 8PI0L $"`7e -$"`7e    -i;i "o i -i "o;i i "o;i$zz z + ;8$8PI0L8PI0L$"`7e +$"`7e    +i;i "o i +i "o;i i "o;i$zz z zk [𫫘;8;i# - & L2;i4"`m$e" "WL5   8PIL;ic + & L";i4"`m$e" "WL%   8PIL;ic i c   i c);i+z zk [𫫘;8;i# - & LU;i4"`m$e"Z "WLX   8PIL;ic + & LE;i4"`m$e"P "WLH   8PIL;ic i c   i c);i+z zk - ZZZZ    L) + ZZZZ    Lo) -)oHoh8PILK% ) +)oHoh8PIL;% ) e  ) @@ -983,14 +982,24 @@ z  ) - %  "f4e - e   Lzzzzz z + %  "f4e + e   Lzzzzz z zk [𫫘;8  -"`8PI & L  & L)B;i"1]h;i4"`m$e"#* -4"`m$e"#H?"ԙh"W  & ;i+z -zkLH +"P8PI & L  & L)B;i"-]h;i4"`m$e"* +4"`m$e"H?"ʙh"W  & ;i+z +zkL +  [𫫘;8! +CC +  "L +L#eHe +h + L8#PIcHcheHe +h + "m  +  "i " PI0L6;i+zz z +zkH )&" )  )0 8 @@ -1002,54 +1011,44 @@ z ж0 8 𚰥hkH88HdR8W)) *)(j)J(j zzkJjfȀ( -  [H;8! -CC -  "L -L#eHe -h - L8#PIcHcheHe -h - "m  -  "i " PI0Lr;i+zz z -zk -  [𫫘ZZZ"r L/F H L/} )"lL/;iH"yohhH"+ohhL/;iH"yohhHJJJI)8 +  [𫫘ZZZ"r LF H L} )"bL;iH"sohhH"%ohhL;iH"sohhHJJJI)8 -H"+ohht;iH"yohh8PI=H:H"+ohh HH F  -h"zVH:H"+ohhHH +H"%ohht;iH"sohh8PI=H:H"%ohh HH F  +h"zVH:H"%ohhHH F h"zVzzz+zz z -zkZZZZP8<8;H"w -"2hAHAH"2hAHAH"2hAA"KHp"2hAHAhZJJJJH"2h;iAHAHAH "2hAHAHAHk "2h ;i H"w"+o;izzzzk@"e"cH̢:dFfc c  e +zkZZZZP8<8;H" w +",hAHAH",hAHAH",hAA";Hp",hAHAhZJJJJH",h;iAHAHAH ",hAHAHAHk ",h ;i H" w"%o;izzzzk@"e"cH̢:dFfc c  e * &ؘ8ce~hhhhhh/FffF8&/y$0&&ddZddQH)hF8&H)h)H)h) J Jȥ -Z먊JjzkZZZZL  -"LL)#cL~ +Z먊JjzkZZZZL  +"LL)#cL~ H`8`f8P\cR8H80>8 48*8)88 e  -eLzzzzk +eLzzzzk ;8    -i"Z:L'): "`  1@')" ɀL +i"Z:L'): "`  1@')" ɀL  e j -~)e"Z; ɀ9    +~)e"Z; ɀ9    e';i zz z -zk  LD -;8;i H"yohh;iH"vhhLQLB c ;iH"w H"f;iH"w;i -LB c  ;iH"w H"f;iH"w;i -L c c8  ;iH"w H"f;iH"w;i +zk  L2 +;8;i H"sohh;iH"vhhLQL0 c ;iH" w H"e;iH" w;i +L0 c  ;iH" w H"e;iH" w;i +L c c8  ;iH" w H"e;iH" w;i ;iz zk ;8  -:  8PI0LB;iH;i "Ɵhh ] ) E      -E L  +:  8PI0L0;iH;i "Ɵhh ] ) E      +E Lz  ;izz z zk ;8  -"+LyL  : +"+LgLv  : ;i e /  @@ -1060,26 +1059,26 @@ z -he"FH +he"6H -;i ehL +;i ehL [𫫘;8        JJ -              #   "sd"` "se "s"s# "s0   "s"s +              #   "sd"` "se "s"s# "s0   "s"s ;i +z z zk ;8   - Ld;i;i"JLM  -"91L-+ 0G7)+ " + LR;i;i"JL;  +"91L+ 0G7)+ "  ,  "K  ;i z -zkZ "oY: "܄L"\L):L))  )  <)H"  hL )H"  hL@) H"  hL)H"  hm?) H"  hC)H"  h') H"  h "\Lzk"e"kI"e"k"cHhڥ -E\8~FfjJ8 +zkZ "Y: "ԄL"\L):L))  )  <)H"  hL )H"  hL@) H"  hL)H"  hm?) H"  hC)H"  h') H"  h "\Lzk"e"kI"e"k"cHhڥ +E\8~FfjJ8 Fl$ zzzku **Ji Jȣ @@ -1088,31 +1087,31 @@ f JhȈkЗF@ ;8         -i"-a ): "`)  +i")a ): "`)  e -~)e"-a    L +~)e")a    L  e :  @    ;i zz z zk ZZZZ - :8PI0L -"QL8PI0L) c q -W = c  c ] c ] c J8PI": c Lzzzzzz z + :8PI0L +"GL8PI0L) c q +W = c  c ] c ] c J8PI": c Lzzzzzz z zk ZZZZ -  L;i"i"U - "U +  "U  "U   +  L;i"i"U - "U +  "U  "U   "U": - N"T>D .8"T>    %  "V  "Vzzzzz -zkA(A +zkA(A @ -ZhhJjhzkک"e"cHҘ8i0 +ZhhJjhzkک"e"cHҘ8i0 *$ &$8 &ccd&8&&&8j$Ff19Ffj  ,&JȀJ dd ZhhhhJjzzk ZZ  L7 L  L    L  L  L"Xȷ    - "4  L + "*  L e8 d    5  ȷ  @@ -1120,47 +1119,47 @@ Z zk ;8   -i"Z:L?'): "`  4@')$  +i"Z:L?'): "`  4@')$  e:LL -~)e"Z ] ɀQ   "  -e"  , +~)e"Z ] ɀQ   "  +e"  , ;izz z -zk  L;8:c U eU}mQ!㗃#%xi')/1"U35Y+-ћ79;i":Lf U eU}mQ!㗃#%xi')/1"U35Y+-ћ79;i""}hhh;i:k -;8;i H"yohh;iH"vhhLAL H"fhL ;iH"w H"f c  ;i H"w H"f;iH"w;iL c c8  ;iH"w H"f c  8:;i H"w H"f;iH"w;i;iz +zk  L;8:c U ]Us[G!ٗ#%ri')/1"U35Z+-Ǜ79;i":Lf U ]Us[G!ٗ#%ri')/1"U35Z+-Ǜ79;i""mhhh;i:k +;8;i H"sohh;iH"vhhLAL H"ehL ;iH" w H"e c  ;i H" w H"e;iH" w;iL c c8  ;iH" w H"e c  8:;i H" w H"e;iH" w;i;iz zk ZZZZ<L87g0f g   ȷ   ȷ g7 80] -"Vȷ"Vȷg7H h"zzzzzz z -zkZZZp "`ec  3)"l "_\@"_O1 Ooo o  "+_"_ "_  L + t - t    u t   a  . omp"Z:"po)))"kzzzk +"Vȷ"Vȷg7H h"zzzzzz z +zkZZZp "`ec  3)"b "_\@"_O1 Ooo o  "'_"_ "_  L + t + t    u t   a  . omp"Z:"po)))"czzzk ;8  - " 7)L + " 7)L 7)$  Ȉ & 8 PI0     "R!)_   - ":i:У    "R! "h;i zz z + ":i:У    "R! "h;i zz z zk ;8  :L= -H`;iH"|Ghh0*r"2h"{\>"hhhZ;iH"|Ghh0=W"2h"{\>"hhhک"2hhLK "gH"2hhh -J >  1)'"{\>d"Rhh"2h"2h;i z +H`;iH"|Ghh0*r",h"k\>"ѫhhhZ;iH"|Ghh0=W",h"k\>"ѫhhhک",hhLK "gH",hhh +J >  1)'"k\>d"hh",h",h;i z zk ZZ  -"eL   L   L  -i8"k -i6U"-a -i8RRaA"! -irrAa"! -i "! -i$"!&$4664 -i8"%bh  H"z^hzzz +"UL   L   L  +i8"k +i6U")a +i8RRaA" +irrAa" +i " +i$"&$4664 +i8"Sbh  H"v^hzzz zk - ;8 <Lc)   "a + ;8 <Lc)   "a  ci @@ -1171,14 +1170,14 @@ z L ȷȷ8 Y g  -c    7 H  h" +c    7 H  h" i;i zz z zk [𫫘ZZZ 8 -PI0LG "`  L "`  8PI0LS8PI` -c   A)"YH "`ech  "`ezzz+z -zk "`ec LLM +PI0LG "`  L "`  8PI0LS8PI` +c   A)"YH "`ech  "`ezzz+z +zk "`ec LLM ZZZZ   L L& "lzL "_ LE L %L @@ -1186,45 +1185,45 @@ z zk  [𫫘ZZZ  -"`8PI% e$ Lj e$  "ԙLX"p L7 H"ԙh  -&"`5e"  WHi "ԙh e$ "\c"W! "ԙ e$ zzz+zz z +"P8PI% e$ Lj e$  "ʙLX"` L7 H"ʙh  +&"`5e"  WHi "ʙh e$ "Vc"W! "ʙ e$ zzz+zz z zkLD ;8 -"2h +",h -8PI0';i H"2hhh;iz +8PI0';i H",hhh;iz zk8 PI= -":0  ;i H"2hhhL8 +":0  ;i H",hhhL8 PI0L c -  )HF"2hh)"W:3)"$X:&;i c . $;i c   +  )HF",hh)"W:3)"$X:&;i c . $;i c    L ZZZ  ) zzzz -zke)"l   LI   LI ڃ  LI ك  LI   LI   LI Ã  LI   LI ă  y ۃ  g Ń  U ƒ  CH"h [ [H"h     H"h  L +zke)"b   LI   LI ڃ  LI ك  LI   LI   LI Ã  LI   LI ă  y ۃ  g Ń  U ƒ  CH"h [ [H"h     H"h  L ;8   :L H`L;i H"|Ghh ;i H"|GhhLL{Hy  -"c: +"c:  LLwHu  -"c: - oj"VYEH +"c: + oj"XEH  -"c: +"c:  oqos;izz z zk ZZZ    ;iH;i -H "hhhh8PI0!HH "xhhzzzzz z +H "hhhh8PI0!HH "yhhzzzzz z zk  e8PI0%8PI08  LL8ZPI0a8PI08R  LL8(PI0/8PI0 8(  [8dPI0k8PI0 8\  3   # # L3 - ZZ    LH))"`8PIL) "`e  ) "`e  ) "`e   ') "`e ' %) "`e  : + ZZ    LH))"`8PIL) "`e  ) "`e  ) "`e   ') "`e ' %) "`e  :  e H  @@ -1232,71 +1231,72 @@ z zk ZZZ   ɀ L9  L9)8 -BB  )"$X:  ["k6)8 +BB  )"$X:  ["c6)8 B -B) )"kx ;"k JJJ ))"3g  ( #)JJJJI)8i0"k #)i0"k  )"k ~"k!   "kzzzzz z +B) )"cx ;"c JJJ ))"-g  ( #)JJJJI)8i0"c #)i0"c  )"c ~"c!   "czzzzz z zk  [𫫘;8 ;i-  -"`8PI & L  & L;i)HH -HH;i  4"`m$e"hhhh"WL     8PIL;ic i c  i c);i+zz z +"P8PI & L  & L;i)HH +HH;i  4"`m$e"hhhh"WL     8PIL;ic i c  i c);i+zz z zkL "W  L ) )  )       `  "AUi "AU PI01   "AUi "AU PI0驇!  "AUi "AU PI0  "AUi "AU PI0   "AUi "AU PI0   zz z zk - ;8    "7)L=!7)%  Ȉ -& ? "R!)   "i:L/! 7)ʆ "R! "R!)^ + ;8    "7)L=!7)%  Ȉ +& ? "R!)   "Y:L/! 7)ʆ "R! "R!)^  - "i:i:Щ "i: "h;izz z + "Y:i:Щ "Y: "h;izz z zk ;8    -C #  7"R!    L"     " "h "h:L"@   -                  ; "5 ;i  " -  ;i  " :  )ӣ ;i +C #  7"R!    L"     " "h "`:L"@   +                  ; "- ;i  " +  ;i  ":  )ӣ ;i zz z -zkZ  ) "`e) "`e  ) "`e) "`e  ) "`e) "`e  ) "`eH) "`eh) "`e -H) "`eh -) "`H) "`h  zzk +zkZ  ) "`e) "`e  ) "`e) "`e  ) "`e) "`e  ) "`eH) "`eh) "`e +H) "`eh +) "`H) "`h  zzk ;8 ;i -"]L^&@7)LU& K -i&   "%bhLc& 7 "K  "íLK&$"      -"~ i "! i"! i"-a   "X  7 ;izz z +"ML^&@7)LU& K +i&   "SbhLc& 7 ";  "YLK&$"      +"~ i " i" i")a   "X  7 ;izz z zk ;8  L(7 -"5dT>   == +"/dT>   == == ==  L(=eL' -L' ȷ   ȷ ȗ"Z T>  7)" +L' ȷ   ȷ ȗ"Z T>  7)" "(  L!' T>;izz z zk ;8   - T>L)7 T>L)& "4 T>L) -"L)   L) 8 8 ȷ  ?ȗ + T>L)7 T>L)& "* T>L) +"߲L)   L) 8 8 ȷ  ?ȗ  "[ b L(       :   L0)8    ;izz z -zk"X_"2U "ԙhhhA"F="U"ԙ"X    ""w "ԙ"%^= "ԙ"T "ԙ"sui"ԙ"\"d"ԙ"fO"ԙ""ԙ"l"|"ԙ""ԙ"Y"ԙ"¤:H@"ԙh -"ԙ"LN:c"|p "ԙk +zk"T_"2U"ʙhhhA"F="U"ʙ"Y    "x"w "ʙ"!^= "ʙ"rT "ʙ"mui"ʙ"\"d"ʙ"VO"ʙ""ʙ"l"|"ʙ""ʙ"=Y"ʙ":H@"ʙh +"ʙ"LN:c"|p "ʙk ZZZ  46 -"í:L- -i6"Z8  Lt-U+ -i"}t:L- -iC"Z E :#:Lt-Lt-Lt-  Lt-)):%:Lt- -iF"Z:Lt-H):r -iI"Z:Z -iK"Zɀ$ -iX"FiN -"Z:Uzzzz +"Y:L- +i6"Z8  Lt-U+ +i"wt:L- +iC"Z E :#:Lt-Lt-Lt-  Lt-)):%:Lt- +iF"Z:Lt-H):r +iI"Z:Z +iK"Zɀ$ +iX"6iN +"Z:Uzzzz zk;8 -  > .08B:<2B46L."Rq"7H"[hrB"Hd"_hd"DHH"Zhh > " ;i"{ "d"e;i +  > .08B:<2B46L."Lq"'H"{[hrB"Hd"_hd":HH"Zhh > " ;i" +{ "d";i k0 eH @@ -1315,9 +1315,9 @@ z @L. ;8 - # :';i"L$1 : Ч) + # :';i"ܟL$1 : Ч) L$1 -   ? _ * M;i" ;i "  L$1 L1L$1   ?   ?  * :H  "c/h4  ) ;i" L/;izz z +   ? _ * M;i"ܟ ;i "ܟ  L$1 L1L$1   ?   ?  * :H  "c/h4  ) ;i"ܟ L/;izz z zk ZZZ   / : \ (   @@ -1325,36 +1325,35 @@ z  & + "KL2;i "n "+ 8* L2 +  7 )zzzzz z zk i8H7 he -" +" L2L1 [𫫘;8  -d" - H d"`h8 "3g  "3g  "3g  "3g  "3g  "3g  -"3g  :0 :        "3g  -"3g                   :     #   ;i +d" H d"`h8 "-g  "-g  "-g  "-g  "-g  "-g  +"-g  :0 :        "-g  +"-g                   :     #   ;i +z -zk [𫫘ZZ"nU"uU:L46L5 L6"l RF:."!% -)L6L6"l-R1F5:9.="AE -IwL6"lMRQFU:Y.]"ae +zk [𫫘ZZ"nU"uU:L46L5 L6"b RF:."!% +)L6L6"b-R1F5:9.="AE +IwL6"bMRQFU:Y.]"ae i  zz+k ;8r ;i;i"JL8? A;i?"91 -j L8i  EJL58][ " +j L8i  EJL58][ " EL+8  x  -;i "KD;i "b  h;i?"e, +;i "KD;i "b  h;i?"U, &;i? " "X ;irz zk - ;8 8PIL:8PI0-;iH"2hhh;izz z -zk c  ":L:;iH"2hhh8PI0L$H^"2hh$$ H"2hhh&;ic )"9X:&;ic  $;ic . ":"2h)H"2hhL9;ic L8 + ;8 8PIL:8PI0-;iH",hhh;izz z +zk c  ":L:;iH",hhh8PI0L$H^",hh$$ H",hhh&;ic )"9X:&;ic  $;ic . ":",h)H",hhL9;ic L8 ;8"U  -  L<;"JV"i"U - "U +  "U  "U"U  ;"JV"ZT>Lr<",Wʆ"K ",Wʆ"K -;i )"a:y  +  L<;"JV"i"U - "U +  "U  "U"U  ;"JV"JT>Lr<",Wʆ"; ",Wʆ"; +;i )"Q:y  ]  8PI0E -"4Wʆ"N\eHeh"U"U +"4Wʆ"J\eHeh"U"U L;"T> - II     5  "U  "U"U  @@ -1363,7 +1362,7 @@ z ;8  7)L>L>L>  L>  "R!)L>; -":L> ***)  v ) +":L> ***)  v ) )Ȉ &e?# )ʪeHeh Ȉ @@ -1375,18 +1374,18 @@ z )eH)8 hȈ &   -"h: -"h;izz z +"`: +"h;izz z zk ZZZZ ;i -"]L@)L@7)L@ L@: +"ML@)L@7)L@ L@:  " L?@ "_  % E  > &  "  @ j [ -i&   "%bh  7    +i&   "Sbh  7    zzzzzz z zk ;8F @@ -1394,47 +1393,47 @@ z LaB;i"KL9B;i"b L3B C1/c)   c    e : -e ţ   LB LB&$"í_      'd Ci8c"F  ;iFzz z +e ţ   LB LB&$"Y_      'd Ci8c"6  ;iFzz z zk ;8  8 PIL#E  LE [ LE):8PILfD -):e  "`   "LE"`  M"`e +):e  "`   "LE"`  M"`e  ;i "zVLELC c  )"$X:I ;ie -"`)80eH -;i eh ; LC ";izz z +"`)80eH +;i eh ; LC ";izz z zk ;ieLDC ;8  - "oLE:d&#eHehJ))  II! #i0  JJJJ9  c      :;ic    А;ic ~ S + "oLE:d&#eHehJ))  II! #i0  JJJJ9  c      :;ic    А;ic ~ S c : c"V::    '   ;ic)  c  ;iz z zk  [𫫘;8, ;i;  -"`8PILH;i -"LH     8PIL;i-c i c  i c)LI"WLI;i "e +"P8PILH;i +"LH     8PIL;i-c i c  i c)LI"WLI;i "e -^j\j;i "|;i ;i"e;i"|;i  -"q:(;i -"q: LG      +^j\j;i "r;i ;i"e;i"r;i  +"q:(;i +"q: LG      -^j\j i "e;i,+zz z +^j\j i "e;i,+zz z zk -;8    U "~  ) _LK  +;8    U "~  ) ULK   8 PIL#K -A%' "ԙ_ -"ԙu_ -"h0;"zV"{ -"| -"|;iz -zk "`  LK   "`e"d:f "`e "`e"~ +A%' "ʙU +"ʙuU +"h0;"zV"q +"| +"|;iz +zk "`  LK   "`e"d:f "`e "`e"~     LHJ @@ -1443,27 +1442,27 @@ z  "  .,Z ȈFjdL7N, .  LM  Ȉ &   g "_%L7N3#8 H h  L7N -"       _ ȈFj eH eh  +"       _ ȈFj eH eh  i8H%he  ;i zz z -zkZZ"e8PILP8PILP8PIL9P8 -PILOʩ",t",S",;i &U*U13њ .匏v!#-/z%'TZ)+"zzk "`   "`e8PILN "`ec "D09HA"ԙh"ڣH"ԙhhLN e$ L{N & LiN +zkZZ"e8PILP8PILP8PIL9P8 +PILOʩ",t",S",;i &U*U13ǚ$Iv!#-/z%'PZ)+"zzk "`   "`e8PILN "`ec "D09HA"ʙh"ץڣH"ʙhhLN e$ L{N & LiN ;8 ;i"X;i ;i"J:LS / 1;i/"91 -ZLSMK;i "o;i/;ic4"o ;ic"91: 7k9m?s AuLR;ic"qLR +ZLSMK;i "o;i/;ic4"o ;ic"91: 7k9m?s AuLR;ic"qLR ;i -i "o    7)     7)LRk7 m9LR -  "  " X  "í iX1 . $  mk"~   : ;i/"e:  "X ;iz +i "o    7)     7)LRk7 m9LR +  "  " X  "Y iX1 . $  mk"~   : ;i/"U:  "X ;iz zk ;8  -"34;i{H"e ;i s  LUt E LUu L LUv F LU= +"#4;i{H"U ;i s  LUt E LUu L LUv F LU= -:H8H:H8H/;i"}hhhhLULULU   ßLwU "`cHHc"3 ;iH"e ;i  LcU  -OH`LULUHH"3HHHH"e ;i û㽰8㷅Hc"k dcHch c d c    LT;iz +:H8H:H8H/;i"}hhhhLULULU   ßLwU "`cHHc"# ;iH"U ;i  LcU  +OH`LULUHH"#HHHH"U ;i û㽰8㷅Hc"k dcHch c d c    LT;iz zk ;8  i  L X ) )LWN ȈFj dL XLW ȈFj  :d%%LW "_L X%L X LWL X -"EL XCL X#L X "`:o "   i8H#he;iz +"EL XCL X#L X "P:o "   i8H#he;iz zk ;8   LZ      @@ -1489,8 +1488,8 @@ z zk  [𫫘;8T ;ic 8PI0L ];i -"L\ L\ -;i?"e:;i?"|;i?H;iG;i"hhhhL3\;iU)|;i;iU";i":';iU;i?"e%;i?;i "ZL[;i "rg" "|L\9;igHH;i ;iC "IhhI."ԙ6;igHH;i  +"L\ L\ +;i?"e:;i?"r;i?H;iG;i"hhhhL3\;iU)|;i;iU";i":';iU;i?"e%;i?;i "PL[;i "lg" "|L\9;igHH;i ;iC "IhhI."ʙ6;igHH;i   "Ihh;iT+zz z zk;ic LZ ;8V ;i;i"J:L_#% ;i#"91: @@ -1498,37 +1497,37 @@ z  E % - "K L_ -"`L_ i8 "k .8  C iN "!i8 -"~i8iX "o .Y +-iX"~  ;i#"qrA?i "!A? -"~A?    "X ";i + "; L_ +"PL_ i8 "k .8  C iN "i8 +"~i8iX "o .Y +-iX"~  ;i#"qrA?i "A? +"~A?    "X ";i ";iVz zk ;8    Lkb  Lkb    Lia  L`  Lab ȈFj -(cH*ch"í:  Lab +(cH*ch"Y:  Lab i8H -)he"F%H%hLab -*(  ȈF j eHeh"í:  Lab +)he"6%H%hLab +*(  ȈF j eHeh"Y:  Lab i8H -)he"ZLab Jc -*(H J)he"í:  Lab +)he"ZLab Jc +*(H J)he"Y:  Lab i8#e) -*(H J)he"í: +*(H J)he"Y:  Mi8#e)) ) ))JJJJ;iz z zk ;8           L0e -  "íL0e  +  "YL0e  L0e  ? 7   Ld . Ld#   Ld  Ld @Z   #    ,  .     -     M   2   ":):     P    "s  , . J    "U   Lb  ;i +     M   2   ":):     P    "s  , . J    "U   Lb  ;i zz z zk ZZZZ  @@ -1536,16 +1535,16 @@ z    Lg   "R!  Lg "R!  Lf;i -"   Lf ɪ Lf@ +"  Lf ɪ Lf@ "R!)e_ :"R!)A;i -" @    "V:L=fLg +"@    "V:L=fLg "R!          "R!)/ "R!)  "V: '  )     -"h )zzzzzz z +"h )zzzzzz z zk;i -" :   Le;8&!!06(!c,o(8!6,o(:!c(:8!06&c*o& 8 #6*o&:c&: 8 #"`%"`8%"`!"`e8%  Lkjw"`8%U%c  cԣc @ c ` #c!w"`8%U%c cԣc @ c ` #c;i&k%c%cc8#cc8# c  Lei#c#c @  @  `  ` #c +":   Le;8&!!06(!c,o(8!6,o(:!c(:8!06&c*o& 8 #6*o&:c&: 8 #"`%"`8%"`!"`e8%  Lkjw"`8%U%c  cԣc @ c ` #c!w"`8%U%c cԣc @ c ` #c;i&k%c%cc8#cc8# c  Lei#c#c @  @  `  ` #c ZBBBB "zVLn `   LplJikk i"zVJJegg @@ -1565,23 +1564,23 @@ Z %"zVJJ!## !"zVJJ!# "zV b zz -zk;8X;i ;i"J:Lp ;i "k L_o;i"ŷ ""R LYo "^[y   -X &;ic  ;ic L`nLp Lp%:;ie :ף % '-/;i%"KLp;i%"bY;iCA "oCA    "X LpLpLp;i%"`i CA"kCA  ;iCA "o    "X ;iXk +zk;8X;i ;i"J:Lp ;i "k L_o;i" ""H LYo "Z[y   +X &;ic  ;ic L`nLp Lp%:;ie :ף % '-/;i%"KLp;i%"bY;iCA "oCA    "X LpLpLp;i%"Pi CA"kCA  ;iCA "o    "X ;iXk ;8  +7 )Ls  -e:Lt i ;i  "oJL2r @+ dFH H;i i "HEhh "*dLsLs + LqJJ  c " "`L^s:L^s   H +e:Lt i ;i  "oJL2r @+ dFH H;i i "HEhh "*dLsLs + LqJJ  c " "PL^s:L^s   H -h8"KLTs i "s   -  "í[H   "h  "U  : ЂLs -  "ík   "k i   "o+7 H  h  ;izz z +h8"KLTs i "s   +  "Y[H   "h  "U  : ЂLs +  "Yk   "k i   "o+7 H  h  ;izz z zkLEq ;8*    "  LwLv -HH "ehhh 8 PI0Lv&("$8 PIF&(PIg +HH "Uhhh 8 PI0Lv&("$8 PIF&(PIg c;i c (&("$Lv"$Luv&(PIM$"Ȉ &H c)henC&($H$h @@ -1589,40 +1588,40 @@ H E ;Lt  ";i*z -zk;8b "w"n ;iH"w HH"x H"!u;i"o   HH"+oX"j  HH"+o<"jH#H"+o;i"jHH"+o<"j  HH"+o;i>"l"jhhLHyw"jhhLHyJ"jhhLHy"jhhq"jhh\"jhhGi"jhh-"jhh"jhh  HH"+ohh<"jhhY   HH"+oz>H~>H;i"} ;iH"j;i  R   HH"+o~>H;i"};iH"j;i -   HH"+o<"j HH"+o+"j;i +zk;8b "w"n ;iH" w HH"y H"u;i"o   HH"%oX"j  HH"%o<"jH#H"%o;i"jHH"%o<"j  HH"%o;i>"b"jhhLHyw"jhhLHyJ"jhhLHy"jhhq"jhh\"jhhGi"jhh-"jhh"jhh  HH"%ohh<"jhhY   HH"%oz>H~>H;i"} ;iH"j;i  R   HH"%o~>H;i"};iH"j;i +   HH"%o<"j HH"%o+"j;i ;8   L}L}  L |  L{  L}ȈFj -(cH*ch"íL} ) ) +(cH*ch"YL} ) ) i8H -)he"F))  +)he"6))  i8H -)he"!  L} -*( ȈF j eHeh"íL} +)he"  L} +*( ȈF j eHeh"YL} i8H -)he "-a  L}Jc -*(HJ)he"íL} +)he ")a  L}Jc +*(HJ)he"YL} i8H#he ))  ')      -*(HJ)he"íy +*(HJ)he"Yy i8H#he))')# ) FjFjFjFj   ;izz z zkHπ)hkH)hkH hkHπ)hkH)hkH hkHπ)hkH)hkH hkHπ)hkH)hkH hkH)hkH @hkڢkڢ"r~k"z~"z~"z~k"~"~"~\z~"~"}"K~"}"~"~"~"~"} "}"~k8k"K~" ~"k""}"r~"r~"r~" ~"K~k"}"~"K~"~"-~\F\}"-\Fk, H"%hk"~" ~"r~"-~,"-~N"r~"r~ڢ"~"r~J">~"K~"r~"r~" ~"r~"K~"~"-~k"~"K~"-~ "~ i0">~"r~"r~"r~8kڢ"~"~"-~j"r~">~"r~"r~"r~"r~, kx0"~(k(kx0 @"4"~(kx0"">~"}" ~"~(kx0 "4"~(kx0""}(kx0_"~"~(kx0?"4"~(kx0"()k0(k(kx0, H"Fh(kx0"X~"~"e~(k ;8   -"KL1   ,.   "íL/ L/? 7   Lۃ   Lۃ  L;@+7)L @Z  #   ,.         U  :   ": ):          LɃ  !"s L/+7)0 -i  "}t:L/  ,.     (  ,.    +"KL1   ,.   "YL/ L/? 7   Lۃ   Lۃ  L;@+7)L @Z  #   ,.         U  :   ": ):          LɃ  !"s L/+7)0 +i  "wt:L/  ,.     (  ,.    "U    Lj;i zz z zk ZZZZ - &"@$  ))*(,. " $Lȅ -H`8L؅L؅Pà|@j耠XaF N47"p"lL؆SL؆L؆L؆L؆C|jXF4"AKL9 +&"@$  ))*(,. " $Lȅ +H`8L؅L؅Pà|@j耠XaF N47"p"bL؆SL؆L؆L؆L؆C|jXF4"AKL9 C @@ -1638,7 +1637,7 @@ C  zzzzz zk ;8`  - ;i;i"JLu;i- ;i5 ;i5 LĊ;i- "K LĊ;iE"í LĊ;iI"H;i9h;i-"K LĊ;i-"bV;iI" ;i-"U  LĊ;i;i-";i-c)L   y :::;i-cc  £:c /  LL L_ " :c /   R + ;i;i"JLu;i- ;i5 ;i5 LĊ;i- "K LĊ;iE"Y LĊ;iI"H;i9h;i-"K LĊ;i-"bV;iI" ;i-"U  LĊ;i;i-";i-c)L   y :::;i-cc  £:c /  LL L_ " :c /   R   c   @@ -1654,26 +1653,26 @@ z    #!L L #!#!*(   -  I  #! "í   - L     #!  8#!i8c"Z: +  I  #! "Y   + L     #!  8#!i8c"Z:    - Z#!i8c"F)) + Z#!i8c"6))  c # :      L  >#!#!  ;i4z zk ;8X  - "T"g -;i P";i ;iH;i "hhL"V" J?(4Q)G | "T"p;iH;i "hhL"Vʆ" ;iH;i "hhLՒ"VʆE -EL;iH;i " + "T"g +;i P";i ;iH;i "hhL"V" J?(4Q)G | "T"p;iH;i "hhL"Vʆ" ;iH;i "hhLՒ"VʆE +EL;iH;i " hh L -"d: Ly -"d: {6 -"d: P; -"d: (%| -"d:08 "TH"chL0 "ԙL0"ԙqQ "ԙ["ԙE"ԙ/"ԙ? "ԙ;iXzz z +"d: Ly +"d: {6 +"d: P; +"d: (%| +"d:08 "TH"chL0 "ʙL0"ʙqQ "ʙ["ʙE"ʙ/"ʙ? "ʙ;iXzz z zk ;8   R     @@ -1694,17 +1693,17 @@ z  "lze    8ʆ    :     =;izz z -zkZ8PI0LSHV"`hCCV"`eCV"`eCV"`e +zkZ8PI0LSHV"`hCCV"`eCV"`eCV"`e - CV"`eCV"`eCV"`eCV"`eCV"`e CV"`e""$$CV"`e6688CV"`e::<<CV"`e&&((CV"`e**,,CV"`e..00CV"`e2244CV"`e>>@@CV"`eBBDDCV"`eFFHHCV"`eJJLLCV"`eNNPPCV"`eRRTTzzk + CV"`eCV"`eCV"`eCV"`eCV"`e CV"`e""$$CV"`e6688CV"`e::<<CV"`e&&((CV"`e**,,CV"`e..00CV"`e2244CV"`e>>@@CV"`eBBDDCV"`eFFHHCV"`eJJLLCV"`eNNPPCV"`eRRTTzzk ;8|d> p Jp>d>d>     p>   p>  -p>d>d>" hhhh7    8PIL"^"jND""ۘH H*HrJ"Xdd"Њ">"#D4;iH"w ;i "2h 8d>PIL8 PI0L "2h8d>PIm +p>d>d>"ܹ hhhh7    8PIL"^"jND""јH H*HrJ"Xdd"Ȋ"6"#D4;iH" w ;i ",h 8d>PIL8 PI0L ",h8d>PIm f>X -p>"gHHc;i3"};i3"YH;i5H" ;i 6;i-"};i-"YH;i/H"hhh"i -" -PIR"\C"e +p>"gHHc;i3"};i3"YH;i5H"o ;i 6;i-"};i-"YH;i/H"ohhh"i +" +PIR"\C"e ,8PI: f>: p> @@ -1713,41 +1712,41 @@ PI ;i|z zk f> -p>" +p>" ;ie p>"b:Lz">V f> 8 -p>"gH "2hhh +p>"gH ",hhh p> ;ie   L $ 0 $ JJ 4 LC ;8  &$;i -"]  L)  L7)L 8 Hhd +"M  L)  L7)L 8 Hhd   L 77L{ ȈFj :d%%z  -"_  L %  L "  L cJ)L +"_  L %  L "  L cJ)L c -8H   "ah  L  X8Hhd2 +8H   "!bh  L  X8Hhd2 i&8 -) e"o +) e"o ) LУ Lm W -i&  "%bh  L  7  -i&  "ah  L 78 +i&  "Sbh  L  7  +i&  "!bh  L 78  -i&H7he  "o 8 &$ g c c   L;izz z +i&H7he  "o 8 &$ g c c   L;izz z zk - ;8"  H;i"z^hLܨ ?"    S )"K")"K -         "ki") + ;8"  H;i"v^hLܨ ?"    S )";")"; +         "ki")   L L L -ed`dC5 d"K"N\  +ed`dC5 d";"J\  cHc h % cHc @@ -1755,42 +1754,42 @@ z 8H" hL i -"! i "! .  -")"K)"K +" i " .  +")";)";  -")"K)"K   -")"K   +")";)";   +")";   JJ))   -cHch:")"K)"K +cHch:")";)"; -cHch:")"K)"K  -cHch:")"K   +cHch:")";)";  +cHch:")";   JJ))    i  cHch  - L^iU"-a"%bh;i"zz z + L^iU")a"Sbh;i"zz z zk ;8  &$;i -"]  L譠)  L譩7)Lꭠc8  Lo77L ȈFj +"M  L譠)  L譩7)Lꭠc8  Lo77L ȈFj :%Lܪ,  "E "E @ LꭩE  Lꭥ%  Lꭥ   W -i&  "%bh  Lꭠ 7 "  LꭦcJ)L| +i&  "Sbh  Lꭠ 7 "  LꭦcJ)L| c -8H   "%bh  L8Hhd?8 +8H   "Sbh  L8Hhd?8 ) e -i&"o 7  +i&"o 7  ) LX Z D -i&  "ah  Lꭣ78 +i&  "!bh  Lꭣ78    -i&H7he"o   8 &$ g c c      L;izz z +i&H7he"o   8 &$ g c c      L;izz z zk ;8   L,.7L  @@ -1799,28 +1798,28 @@ z   e!ؐ L8ic  d - " c Lie  Lc) -  5 .i c . i c  Li c )LN-ic ? B    i c)Zie  ) LNi c).     A@Z9 ))%: cic    L? 7  i"FHhi"Zi"Z;izz z + " c Lie  Lc) +  5 .i c . i c  Li c )LN-ic ? B    i c)Zie  ) LNi c).     A@Z9 ))%: cic    L? 7  i"6Hhi"Zi"Z;izz z zk ;8  ;i -"])   L  %7)      Ly +"M)   L  %7)      Ly Ȉ -&L㴣 :"K :"K x::II%%8 HhL +&L㴣 :"; :"; x::II%%8 HhL ` "EE  L%  L   Lg      LŶ8 HhcHch7)C "ELŶ -"_%  L9!  L  LcHch))b"  L ȈFjeHeh !  @ 77L L U -i&  "%bh  _ 7  -i&  "ah   ;izz z +"_%  L9!  L  LcHch))b"  L ȈFjeHeh !  @ 77L L U +i&  "Sbh  _ 7  +i&  "!bh   ;izz z zk ;8N      L\ ?# ;i;i "JLE ;i"91DL8;i"q   !  -  LL"K 86i "!86i "!86" 86 86"~86i"!  L躣64;i "9"í :Hh  ) JJ J  W @    46 6"8$    L;86" -86i"F     -i&"k L1 L1  +  LL"; 86i "86i "86" 86 86"~86i"  L躣64;i "9"Y :Hh  ) JJ J  W @    46 6"8$    L;86" +86i"6     +i&"k L1 L1  Ȉ &   @@ -1830,26 +1829,25 @@ z  #   8Hh - L') )L'" } ȈFjeHeh -i&  "ah  ;iNzz z + L') )L'" } ȈFjeHeh +i&  "!bh  ;iNzz z zk ;8     .   -"6i%     LUã  -"1 -" -    +  -  "6iLL"6iLL& f L%8"{@"4"'c"" c8 PI0 j L2"6iL"8"{@"4"'c" +"0i%     LUã  +"21 +" -    +  +  "0iLL"0iLL& f L%8"k@"4"!c"" c8 PI0 j L2"0iL"8"k@"4"!c"  -"c8PI0\c8 PIK8PI  -H"{h"4j -   "  L5ã - $           "{ +"c8PI0\c8 PIK8PI  +H"kh"4j +   "  L5ã - $           "k  -"4"["W -""  0cH  h  :  88PI0L& f L#å & $8 -  +  -" -i0   -"i0        L  ,           )Е ;izz z +"4"["t +""  0cH  h  :  88PI0L& f L#å & $8 -  +  +"i0   +"i0        L  ,           )Е ;izz z zk ;8     "X Lʊ @@ -1859,53 +1857,53 @@ z  # )/"U  J   LʩL  "U  JL   Lʥ -"Lʣ Lʠ64 -iC"Z Lʥ -iN"Z# -i\"F " H      Lʠ)"N\ +"zLʣ Lʠ64 +iC"Z Lʥ +iN"Z# +i\"6 " H      Lʠ)"J\ E)  :Lʠ : 7:Lʥ -iI"Z7: Lʥ -iK"Z# -iX"F -iF"Z  Lʣ +iI"Z7: Lʥ +iK"Z# +iX"6 +iF"Z  Lʣ c JJJJeHeh   L8 Hh -"K Lʩ    Lʦi$&c (* cHch02e -ib"Z: Lʠ: Lʥ -id"F,.&&LȠ: L(cH*c h,.G"N\Fj77eHeh&i ȈFj " Lʩ  LPʥ -ih"ZLPʥ -"í:LP   -i6"ZULPʥ -i8"FRRkaAd -i"FrrEAa> -i "F -i$"F    ;izz z +"; Lʩ    Lʦi$&c (* cHch02e +ib"Z: Lʠ: Lʥ +id"6,.&&LȠ: L(cH*c h,.G"J\Fj77eHeh&i ȈFj " Lʩ  LPʥ +ih"ZLPʥ +"Y:LP   +i6"ZULPʥ +i8"6RRkaAd +i"6rrEAa> +i "6 +i$"6    ;izz z zk ;8@-/ 1"  Lѣ)+% ' ! # 1L -HH"ehhh8PI0Lѩ))++%%''!;#=79 53??8PI07))++%%'';!=#79 53LXˣ%'L̥ +HH"Uhhh8PI0Lѩ))++%%''!;#=79 53??8PI07))++%%'';!=#79 53LXˣ%'L̥ c? Z   4 -c? z J  )!+#;=79 LѩLѣ=L8Σ5ʆ;=PI0L8Σ7 9 =;" +c? z J  )!+#;=79 LѩLѣ=L8Σ5ʆ;=PI0L8Σ7 9 =;" c?))9H9hL -"|  LΥ +"|  LΥ c?)9H9h7 -"|  x +"|  x c?))ʆ9H9h  5 -c?)    )+ LУ5ʆ;=PILУ3ʆ;=PI0LУ)+ 5ʆ8;H?h" -c?))Hh/-79g"|)+ L Х -c?)Hh/-79T"|)+ x +c?)    )+ LУ5ʆ;=PILУ3ʆ;=PI0LУ)+ 5ʆ8;H?h" +c?))Hh/-79g"|)+ L Х +c?)Hh/-79T"|)+ x c?))ʆHh)+ 59H9h c?)    LУ3ʆ8;H?hPIC)++)  c?   )+  7 9 =;Lbѣ3eHehPI08     ! #   53?%i%'i'!)#+%%'';=79 53?Lˣ1;i@z zk ;8   - ;i"ŷ%L٥)H + ;i"%L٥)H  - e h   f/_\Xɀ"^[L٣ L٣   + e h   f/_\Xɀ"Z[L٣ L٣    eLgң    f / L5ڣ \ L5             : @@ -1925,10 +1923,10 @@ z e.     ' : -e. :Ң i  "k  )       +e. :Ң i  "k  )        -e  Lأ L٣.  L٣ LOأ LOأɀK  "R#:#)    } :.      L -ڣ   i c     LأLש"^[{AZ     a'z  8        $_         i c     L +e  Lأ L٣.  L٣ LOأ LOأɀK  "H#:#)    } :.      L +ڣ   i c     LأLש"Z[{AZ     a'z  8        $_         i c     L ڣ    4       L          # #  @@ -1936,42 +1934,42 @@ z zk      '         Lգ  LգLK - ;8   ;iO"Bj;i -    Lݣ % ;iO" L + ;8   ;iO"̞W3o T@,F| cC,Zg#F-fr5I.;vx@LӟҟџПi   -      !#%&' ())*+%'./0 *12 3 4!5$/"6#6&1$8(3)>,8-9+@,A/<0>.C/E1G4B6D4J7E7F5K7N:I8O;R>N>N>VAQ@XAYDVB[EVD\E]H[F_G`HaIaIbL_KdLfOcNgOhSgQkRlUjTnUoXn[qZt[u^u]w`x_z`{c{c~de~fghhhijklmmnnopqqqrrssstttuuvvvvwwwwxxyyz{m\Z\g\e\r\Q\\ݫ\\3\\}\\\p\\Ӝ\U\9\\W\\{\\m\#\j\F\d\€\l\r\1]\Z\,\|G\VY\Wb\^\\An\ep\n\+o\yo\v\w\x\\2l\І\\n\t\\j0HZ +      !#%&' ())*+%'./0 *12 3 4!5$/"6#6&1$8(3)>,8-9+@,A/<0>.C/E1G4B6D4J7E7F5K7N:I8O;R>N>N>VAQ@XAYDVB[EVD\E]H[F_G`HaIaIbL_KdLfOcNgOhSgQkRlUjTnUoXn[qZt[u^u]w`x_z`{c{c~de~fghhhijklmmnnopqqqrrssstttuuvvvvwwwwxxyyz{m\%Y\]\U\h\\o\s\\#\ܹ\m\C\\p\\ɜ\K\1\\M\\q\}\m\\j\6\\\\l\r\-]\Z\,\|G\X\a\^\ѫ\;n\_p\n\%o\so\v\ w\y\\,l\Ȇ\\n\t\\j0HZ  [dH"k+z zzz z zzzzzzh@0HZ  - [dH">f+z + [dH"8f+z zzz z -zzzzzzh@8[dH\]mP \ No newline at end of file +zzzzzzh@8[dH\WmP \ No newline at end of file diff --git a/samples/hello/Makefile b/samples/hello/Makefile index cec92be..197dc6e 100644 --- a/samples/hello/Makefile +++ b/samples/hello/Makefile @@ -17,13 +17,13 @@ endif ifeq ($(UNIT),F256K) CPU=w65816 C_SRCS_DEBUGGER=$(DEBUGGER)/agent.c $(DEBUGGER)/c256-uart.c $(DEBUGGER)/low_level_WDC65816.s - SRCS_FOR_UNIT= - CFLAGS_FOR_UNIT=-DMODEL=17 -DCPU=255 --code-model large --data-model large --target f256 + SRCS_FOR_UNIT= + CFLAGS_FOR_UNIT=-DMODEL=17 -DCPU=255 --code-model large --data-model large ifeq ($(MEMORY),ROM) - LDFLAGS_FOR_UNIT=clib-lc-ld.a --rtattr printf=medium --cstartup=f256 # C256/f256-flash.scm + LDFLAGS_FOR_UNIT=clib-lc-ld.a --rtattr printf=medium --target=f256 # C256/f256-flash.scm else - LDFLAGS_FOR_UNIT=f256-plain.scm clib-lc-ld.a --rtattr printf=medium --cstartup=f256 + LDFLAGS_FOR_UNIT=f256-plain.scm clib-lc-ld.a --rtattr printf=medium --target=f256 endif endif @@ -44,7 +44,7 @@ else LDFLAGS=$(LDFLAGS_FOR_UNIT) --list-file toolbox.map endif -SRCS = hello.c header.s $(SRCS_FOR_UNIT) # $(C_SRCS_DEBUGGER) +SRCS = hello.c header.s $(SRCS_FOR_UNIT) # $(C_SRCS_DEBUGGER) ram-startup.s OBJS = $(patsubst %.s,%.o,$(patsubst %.c,%.o,$(SRCS))) OBJS4RM = $(subst /,\\,$(OBJS)) LIBS = ../../client/src/toolbox.a @@ -52,7 +52,7 @@ LIBS = ../../client/src/toolbox.a .PHONY: clean hello.s37: $(OBJS) $(LIBS) - $(LD) $(LDFLAGS) --output-format s37 -o $@ $^ + $(LD) $(LDFLAGS) --output-format s37 -o $@ $^ # Build the object files from C %.o: %.c diff --git a/samples/hello/f256-plain.scm b/samples/hello/f256-plain.scm index ee33d97..18da992 100644 --- a/samples/hello/f256-plain.scm +++ b/samples/hello/f256-plain.scm @@ -1,7 +1,7 @@ (define memories '( (memory LoMem - (address (#x0000 . #xbfff)) + (address (#xa000 . #xcfff)) (type ANY)) (memory Vector (address (#xffe4 . #xffff))) (memory Banks @@ -9,7 +9,7 @@ (type ANY) (section (header #x10000))) (memory DirectPage - (address (#x00c000 . #x00c0ff)) + (address (#x000100 . #x0001ff)) (section (registers ztiny))) (block stack (size #x1000)) diff --git a/samples/hello/hello.lst b/samples/hello/hello.lst deleted file mode 100644 index ca3ce8a..0000000 --- a/samples/hello/hello.lst +++ /dev/null @@ -1,72 +0,0 @@ -############################################################################### -# # -# Calypsi ISO C compiler for 65816 version 5.5 # -# 03/Sep/2024 22:57:21 # -# Command line: -I. -I./include -DMODEL=17 -DCPU=255 --code-model large # -# --data-model large --target f256 -l -o hello.o hello.c # -# # -############################################################################### - - \ 000000 .rtmodel version,"1" - \ 000000 .rtmodel codeModel,"large" - \ 000000 .rtmodel dataModel,"large" - \ 000000 .rtmodel core,"65816" - \ 000000 .rtmodel huge,"0" - \ 000000 .rtmodel target,"f256" - \ 000000 .extern _Dp - \ 000000 .extern _Vfp - \ 000000 .extern strlen - \ 000000 .extern sys_chan_write -0001 #include "../../client/src/include/toolbox.h" -0002 -0003 #include -0004 -0005 int main(int c, char * argv[]) { - \ 000000 .section farcode,text - \ 000000 .public main - \ 000000 main: - \ 000000 d4.. pei dp:.tiny (_Dp+8) - \ 000002 d4.. pei dp:.tiny (_Dp+10) -0006 char * message = "Hello, Foenix Toolbox!\n"; - \ 000004 a9.... lda ##.word0 `_StringLiteral_[72,101,108,108,111,44,32,70,111,101,110,105,120,32,84,111,111,108,98,111,120,33,10]` - \ 000007 85.. sta dp:.tiny (_Dp+8) - \ 000009 a9.... lda ##.word2 `_StringLiteral_[72,101,108,108,111,44,32,70,111,101,110,105,120,32,84,111,111,108,98,111,120,33,10]` - \ 00000c 85.. sta dp:.tiny (_Dp+10) -0007 sys_chan_write(0, (uint8_t *)message, strlen(message)); - \ 00000e a5.. lda dp:.tiny (_Dp+8) - \ 000010 85.. sta dp:.tiny _Dp - \ 000012 a5.. lda dp:.tiny (_Dp+10) - \ 000014 85.. sta dp:.tiny (_Dp+2) - \ 000016 22...... jsl long:strlen - \ 00001a 48 pha - \ 00001b a5.. lda dp:.tiny (_Dp+10) - \ 00001d 48 pha - \ 00001e a5.. lda dp:.tiny (_Dp+8) - \ 000020 48 pha - \ 000021 a90000 lda ##0 - \ 000024 22...... jsl long:sys_chan_write -0008 -0009 while (1) ; - \ 000028 68 pla - \ 000029 68 pla - \ 00002a 68 pla - \ 00002b 80fe `?L4`: bra `?L4` - \ 000000 .section cfar,rodata - \ 000000 .pubweak `_StringLiteral_[72,101,108,108,111,44,32,70,111,101,110,105,120,32,84,111,111,108,98,111,120,33,10]` - \ 000000 `_StringLiteral_[72,101,108,108,111,44,32,70,111,101,110,105,120,32,84,111,111,108,98,111,120,33,10]`: - \ 000000 48656c6c .byte 72,101,108,108,111,44,32,70,111,101,110,105,120,32,84,111,111,108,98,111,120,33,10,0 - \ 000004 6f2c2046 - \ 000008 6f656e69 - \ 00000c 7820546f - \ 000010 6f6c626f - \ 000014 78210a00 -0010 } - -########################## -# # -# Memory sizes (decimal) # -# # -########################## - -Executable (Text): 45 bytes -Constant __far : 24 bytes diff --git a/samples/hello/hello.s37 b/samples/hello/hello.s37 deleted file mode 100644 index 15ea2f4..0000000 --- a/samples/hello/hello.s37 +++ /dev/null @@ -1,139 +0,0 @@ -S02700000000484452202D2047656E6572617465642062792043616C79707369206C6E36353831360A -S31E0000000018FBC238A259209AA900C05BA900006412EB48ABAB221102017D -S31D00000019A902008506A909008504A902008502A90000850022230701AB -S32300000031A900008506A95A008504A901008502A98F008500A20000A90010225B0A011A -S3100000004FA9000022BA02015C31050185 -S3070000FFFC0000FD -S31A00010000F8160000000000000000000000000068656C6C6F00C2 -S31D0001001548656C6C6F2C20466F656E697820546F6F6C626F78210A00F1 -S30600010210DB0B -S306000102116B7A -S30A00010212221002016B40 -S30E00010217A602A5002270E0FF6BAE -S31000010220B704850A8888B70485086BBF -S3130001022BA8E220A50A48C220A5083A48986B09 -S31400010239A40C8400A40E840218A500690A006BA8 -S31800010248A50648A50448A602A5002274E0FFAA68688A6B87 -S31B0001025B7A100EA90000AA38E500A88AE502AA986BA500A6026B00 -S31B00010271A01000B70C85028888B70C850038A500A00600F70C6B2D -S31E00010287A5008504A5028506A70429FF00D00638A504E5006BE60480EFC4 -S31F000102A0AAA90200860038E500500349008010068A223906016BA900006BA8 -S325000102BAD408D40AA915008508A90100850AA5088500A50A85022287020148A50A48A508DF -S312000102DA48A900002214E0FF68686880FE54 -S325000102E7AF290101C92000B020AF2901010A0AAAA5009F2B0101A5029F2D0101AF29010105 -S312000103071A8F290101A900006BA901006BE5 -S32500010314D406A40485046406A9000048488A4A900FAA18A30165048301A303650683038A2D -S31500010334F0060604260680E668FA84047A84066BC7 -S325000103445A5AAAA900008301E000809005A90B00801D8A4A4A4A4AA8A301A201008400E4B8 -S3170001036400B00C1A8301984A8303A8A30180EB7A7A6BA8 -S32500010376A5000502D010A9AB018500A90100850222AB06018007A90100226F0B01AA8600F7 -S31D00010396A5001010860038A90000E5008F0E0201A9FFFF6BA900006B71 -S325000103AED408D40A5A5A5A8301A5008508A502850AA5048305A3058303A3053A8305A90002 -S325000103CE00C303B016A5088504A50A8506E608E220A3018704C220A30580DAA602A5007A42 -S30E000103EE7A7A7A840A7A84086B92 -S325000103F75A8301A301A2060022140301AABF2D0001F035A50448A50248A50048A92D008597 -S3250001041700A901008502A307A2060022140301850418A50065048500A00400B7002208E068 -S31200010437FFAA6868688A8003A9FFFF7A6B37 -S325000104445A8301A301A2060022140301AABF2D0001F035A50448A50248A50048A92D008549 -S3250001046400A901008502A307A2060022140301850418A50065048500A00400B7002214E00F -S31200010484FFAA6868688A8003A9FFFF7A6BEA -S32500010491D408D40AD40CD40E5A8301A5008508A502850AA301A301A83AAA640CA50C840CFD -S325000104B1C50CB019A508850CA50A850EE608A704E604E220870CC2208A830180D8A602A55D -S314000104D1007A7A840E7A840C7A840A7A84086B0C -S325000104E0A901008F0702018FDC01011A8FEE01018FC301018FD50101A9F1018FAB0101A972 -S3250001050001008FAD0101A9D8018FAF0101A901008FB10101A9BF018FB30101A901008FB54C -S316000105200101A9DD058F0A0201A901008F0C02016BE7 -S32500010531D408D40A5A5A8301AF0A02010F0C0201F010AF0C0201850AAF0A02018508222BF4 -S325000105510201AF2901013A8303A303100FA301221202017A7A7A840A7A84086B0A0AAABF5C -S31B000105712D0101850ABF2B01018508222B0201A3033A830380D32D -S325000105875AA903008301A3018301A30138E9100050034900803005A9FFFF8031A301A206D1 -S325000105A70022140301AABF2D0001D023A92D008500A901008502A301A206002214030185D2 -S31B000105C70418A50065048500A00200B7007A6BA3011A830180B4B4 -S325000105DDD408D40AA900008500850222760301AFB90101850AAFB701018508A508050AD072 -S325000105FD1FAFF5010122A00201AFDC010122A00201AFC3010122A002017A840A7A84086B49 -S3210001061DA00400B70822390601A00200B7088502A70885008508A502850A80BFD7 -S325000106395A8301A301A2060022140301AABF2D0001F05AA92D008500A901008502A301A283 -S32500010659060022140301850418A50065048500A00400B7002254E0FFA22D008600A201005E -S325000106798602A301A2060022140301850418A50065048500A90000A004009700A301A206E8 -S317000106990022140301AAA900009F2D0001A900007A6B60 -S325000106ABD408D40A5A5AA900008301A5000502F05CA00E00B700850A8888B7008508A301A9 -S325000106CB8303A508050AD004A3038043A90200A016003708F01AA5088500A50A85022276DF -S325000106EB03018301A3013004A3038301A3018004A3038301A00200B7088502A7088500A34D -S31D0001070B018303A5008508A502850A80B5A3017A7A7A840A7A84086B9A -S32500010723D408D40AD40CD40EA5048508A506850AA500850CA502850EA50C8500A50E8502E3 -S32500010743A500C508A502E50AB04CA00400B70CC8C8170CF01FB70C85068888B70C85048830 -S3250001076388B70C8502A70C8500A00800B70C229104018018C8C8B70C8504A00200B70C85E4 -S3250001078302A70C8500A9000022AE030118A50C690A00850C80A27A840E7A840C7A840A7A11 -S308000107A384086B55 -S325000107A6D408D40AD40CD40E5AA500850CA502850EA5048508A506850AA70822440301A8B5 -S325000107C6980A0A8301AAA3010A83018A1863018301A60EA50C18690A0018630186028500FD -S325000107E6980A0A8301AAA3010A83018A186301830118A50C690A00850C18A50C6301850CCB -S32500010806A00600B70C85068888B70C8504A5040506F02BA704F027A704AAA708850CE40C65 -S32500010826B01CA5048500A5068502C8C8B704850E8888B704850C8504A50E850680CFA50882 -S325000108469700A50AC8C89700A500C8C89708A502C8C89708A504A004009708A506C8C897B6 -S3250001086608A5040506F00CA508C8C89704A50AC8C897047A7A840E7A840C7A840A7A840863 -S306000108866BFF -S32500010887D408D40AD40CD40E5AA8A506AAA50418690F009001E8860A8508A50A29FFFFAA28 -S325000108A7A50829F0FF860A850898A20000186504488A6506AA6886068504A50629FFFFAAAD -S325000108C7A50429F0FF860E850CA50C38E50883011867008700A60AA508A0020097008AC8DC -S325000108E7C89700B70085068888B7008504A904008704A8B70085068888B7008504A900805E -S325000109079704A60AA508186904009001E886068504A30138E908008704A904009704A60E6A -S32500010927A50C38E90400B001CAA0060097008AC8C89700B700850A8888B7008508A9040023 -S325000109478708A90080070448C8C8B700850A8888B700850868A00200970822A60701A90131 -S30B00010967007A5CC40A01DE -S3250001096DD408D40A5A5A5A8303A5008508A502850A228705018305A30510034C470AA90075 -S3250001098D008301A901002303C90100D00BA901008301A30183018004A3018301A90200237A -S325000109AD03C90200D00BA902008301A30183018004A3018301A903002303C90300D00BA955 -S325000109CD03008301A30183018004A3018301A904002303C90400D00DA90C0003018301A34B -S325000109ED0183018004A3018301A30148A60AA5082250E0FFAA688A8301A3013038A305A2A2 -S32500010A0D060022140301AAA901009F2D0001A22D008600A201008602A305A2060022140358 -S32500010A2D01850418A50065048500A301A004009700A305800FA9FFFF800AA917008F0E02C7 -S31300010A4D01A9FFFF7A7A7A7A840A7A84086B05 -S32500010A5BD408D40AD40CD40EA83B38E90A001B988301A500850CA502850EA5048508A50662 -S32500010A7B850AA90000870CA290008604A50C8500A50E8502224102018500A9000022AE03F6 -S32500010A9B01A901008309A309C90C009029A5088504A50A8506A50C8500A50E8502A301221D -S32500010ABB8708013B18690A001B7A840E7A840C7A840A7A84086B3A0A0A83058303A3050A06 -S32500010ADB83051863038303A3090A0A83078305A3070A83071863058305A60EA50C18690A60 -S32500010AFB00186305DA4822390201850018A5006307850068FAA0040097008AC8C89700A3B2 -S32500010B1B090A0A83058303A3050A83051863038303A3093A0A0A8305AAA3050A83058A1842 -S32500010B3B63058305A60EA50C18690A00186305DA4822390201850018A5006307850068FA20 -S31900010B5BA0080097008AC8C89700A3091A8303A3034C9F0AA8 -S32500010B6FD408D40AD40CD40E5A5A8301A500850CA502850EA00400B70C850010034CB80C2C -S32500010B8FA90200A01600370CD0034CB80CA00600B70CC8C8170CD006A900004CBB0CA00E5C -S32500010BAF00B70CA00600D70CD00FA01000B70CA00800D70CD0034CAD0CA01200B70CA00603 -S32500010BCF00D70CF0034CB30CA01400B70CA00800D70CF0034CB30C22710201AAC8C8B70C8B -S32500010BEF85028888B70C85008508A502850A8A8303A3038504A5088500A50A8502A00400F2 -S32500010C0FB70C22440401AAE0FFFFD013A01800E220A902170C970CC220A9FFFF4CBB0CA5B9 -S32500010C2F088500A50A8502860418A50065048500A303860438E504AAA301F015A5008508D0 -S32500010C4FA502850A8A83036404A5048604C50490A0A00600B70CA00E00970CA00800B70C7F -S32500010C6FA01000970CE8CAF035B70C85068888B70C8504C8C8B70C850A8888B70C8508E662 -S32500010C8F08A508970CA50AC8C8970CA700E600E2208704C2208A3A8301A301AA80C7227198 -S32000010CAF02018008A900008003A9F7FF7A7A7A840E7A840C7A840A7A84086B4A -S32500010CCAD408D40AD40CD40E5A5A5A5AA5008305A5028307A98F008301A901008303A3052D -S32500010CEA0307D0034C190EA307AAA30538E9040086028500A9FF7FA0020037009700A50029 -S32500010D0A8504A502850618A50467008504B70485083066A5048508A506850A18A5086704D8 -S32500010D2A8508A00A00B704850E8888B704850CA00400B704970CC8C8B704970C8888B70406 -S32500010D4AC8C81704F017B704850E8888B704850CA00800B704970CC8C8B704970CA704186F -S32500010D6A67008700A90080A00200370807009708A60AA50883058A8006A5048305A5068370 -S32500010D8A07A5008504A502850638A504F7008504B7048508305DA00A0022200201A0040012 -S32500010DAAB7049708C8C8B70497088888B704C8C81704F01122200201A00800B7049708C858 -S32500010DCAC8B7049708A7001867048704A3078502A3058500A90080A002003700070448A3D5 -S32500010DEA098502A3078500689700A606A50483058A8006A5008305A5028307A3078506A301 -S32500010E0A058504A3038502A301850022A607017A7A7A7A7A840E7A840C7A840A7A84086B96 -S32500010E2AD408D40AD40CD40E3B38E90E001BA5008508A502850AA9000083018303A21600CD -S32500010E4AA888A508050AD0034CBA0F981A83051A1A9B3708F018A5088500A50A850222765D -S32500010E6A0301AAAF0E02018305830B8A80058A830BA305830DAFAB0101C508D008AFAD0120 -S32500010E8A01C50AF020AFAF0101C508D008AFB10101C50AF010AFB30101C508D013AFB501B2 -S32500010EAA01C50AD00BA30B8305A30D83014CC20FA9AB018500A901008502A00E00B70085FA -S32500010ECA068888B7008504A303A5040506F065A508C504F0034C980FA50AC506F0034C984F -S32500010EEA0FA00C00B700C504D01AC8C8B700C506D012A70488889700A00200B704A00E006B -S32500010F0A97008013A303850EA301850CA704870CA00200B704970CA01000B700C504D014D6 -S32500010F2AC8C8B700C506D00CA30188889700A303C8C89700A00400B70822A002018301A34B -S32500010F4A0DD00CA301AAAF0E020183058A8006A30B8305A30D8301A00600B708C8C8170873 -S32500010F6AF01C98A01800370829FF00D011A00800B70885028888B708850022CA0C01A508D4 -S32500010F8A8500A50A850222CA0C01A3018028A5048301A5068303A00200B704850EA70485C2 -S32500010FAA0C8307A50E83098506A30785044CD30E8A8305988301A301A301F00BA3058F0EAA -S32400010FCA0201A9FFFF8003A90000A83B18690E001B987A840E7A840C7A840A7A84086B77 -S30F000200002D00010000000000E301DC -S503008874 -S70500000000FA diff --git a/samples/hello/macros.h b/samples/hello/macros.h new file mode 100644 index 0000000..5f1cd4f --- /dev/null +++ b/samples/hello/macros.h @@ -0,0 +1,86 @@ +#ifndef __MACROS_H +#define __MACROS_H + +#ifdef __CALYPSI_ASSEMBLER__ + +#ifdef __CALYPSI_CODE_MODEL_SMALL__ + +#define libcode code + +call .macro dest + jsr \dest + .endm + +return .macro + rts + .endm + +jump .macro dest + jmp \dest + .endm + +#elif defined(__CALYPSI_CODE_MODEL_COMPACT__) + +#define libcode compactcode + +call .macro dest + jsr .kbank \dest + .endm + +return .macro + rts + .endm + +jump .macro dest + jmp .kbank \dest + .endm + +#else + +#define libcode farcode + +call .macro dest + jsl \dest + .endm + +return .macro + rtl + .endm + +jump .macro dest + jmp long:\dest + .endm + +#endif // __CALYPSI_CODE_MODEL_SMALL__ + +// ---------------------------------------------------------------------- +// +// Define code and data model used. This is to add a bit of safety in +// case the way a file is assembled is combined with the wrong run-time. +// +// ---------------------------------------------------------------------- + +#if defined(__CALYPSI_DATA_MODEL_SMALL__) + .rtmodel dataModel,"small" +#elif defined (__CALYPSI_DATA_MODEL_MEDIUM__) + .rtmodel dataModel,"medium" +#elif defined(__CALYPSI_DATA_MODEL_LARGE__) + .rtmodel dataModel,"large" +#elif defined(__CALYPSI_DATA_MODEL_HUGE__) + .rtmodel dataModel,"huge" +#else +#pragma GCC error "unexpected data model" +#endif + +#if defined(__CALYPSI_CODE_MODEL_SMALL__) + .rtmodel codeModel,"small" +#elif defined(__CALYPSI_CODE_MODEL_COMPACT__) + .rtmodel codeModel,"compact" +#elif defined(__CALYPSI_CODE_MODEL_LARGE__) + .rtmodel codeModel,"large" +#else +#pragma GCC error "unexpected code model" +#endif + +#endif // __CALYPSI_ASSEMBLER__ +#endif // __MACROS_H diff --git a/samples/hello/ram-startup.s b/samples/hello/ram-startup.s new file mode 100644 index 0000000..772181d --- /dev/null +++ b/samples/hello/ram-startup.s @@ -0,0 +1,134 @@ +;;; Startup variant, change attribute value if you make your own + .rtmodel cstartup,"sample" + + .rtmodel version, "1" + .rtmodel core, "*" + + .section stack + .section cstack + .section heap + .section data_init_table + + .extern main, exit + .extern _Dp, _Vfp + .extern _DirectPageStart + +#ifndef __CALYPSI_DATA_MODEL_SMALL__ + .extern _NearBaseAddress +#endif + +#include "macros.h" + +;;; *************************************************************************** +;;; +;;; __program_start - actual start point of the program +;;; +;;; Set up CPU stack, initialize sections and call main(). +;;; You can override this with your own routine, or tailor it as needed. +;;; The easiest way to make custom initialization is to provide your own +;;; __low_level_init which gets called after stacks have been initialized. +;;; +;;; *************************************************************************** + +#ifdef __CALYPSI_CODE_MODEL_COMPACT__ + .section code +#elif __CALYPSI_CODE_MODEL_LARGE__ + .section farcode, noreorder +#else + .section code, noreorder +#endif + .pubweak __program_start +__program_start: + clc + xce ; native 16-bit mode + rep #0x38 ; 16-bit registers, no decimal mode + ldx ##.sectionEnd stack + txs ; set stack + lda ##_DirectPageStart + tcd ; set direct page +#ifdef __CALYPSI_DATA_MODEL_SMALL__ + lda ##0 +#else + lda ##.word2 _NearBaseAddress +#endif + stz dp:.tiny(_Vfp+2) + xba ; A upper half = data bank + pha + plb ; pop 8 dummy + plb ; set data bank + +#ifdef __CALYPSI_CODE_MODEL_COMPACT__ + jmp long:_Trampoline_program_start + .section compactcode, noreorder +_Trampoline_program_start: +#define CODE compactcode +#else +#define CODE code +#endif + call __low_level_init + +;;; **** Initialize data sections if needed. + .section CODE, noroot, noreorder + .pubweak __data_initialization_needed + .extern __initialize_sections +__data_initialization_needed: + lda ##.word2 (.sectionEnd data_init_table) + sta dp:.tiny(_Dp+6) + lda ##.word0 (.sectionEnd data_init_table) + sta dp:.tiny(_Dp+4) + lda ##.word2 (.sectionStart data_init_table) + sta dp:.tiny(_Dp+2) + lda ##.word0 (.sectionStart data_init_table) + sta dp:.tiny(_Dp+0) + call __initialize_sections + +;;; **** Initialize streams if needed. + .section CODE, noroot, noreorder + .pubweak __call_initialize_global_streams + .extern __initialize_global_streams +__call_initialize_global_streams: + call __initialize_global_streams + +;;; **** Initialize heap if needed. + .section CODE, noroot, noreorder + .pubweak __call_heap_initialize + .extern __heap_initialize, __default_heap +__call_heap_initialize: +#ifdef __CALYPSI_DATA_MODEL_SMALL__ + lda ##.sectionSize heap + sta dp:.tiny(_Dp+2) + lda ##.sectionStart heap + sta dp:.tiny(_Dp+0) + lda ##__default_heap +#else + lda ##.word2 (.sectionStart heap) + sta dp:.tiny(_Dp+6) + lda ##.word0 (.sectionStart heap) + sta dp:.tiny(_Dp+4) + lda ##.word2 __default_heap + sta dp:.tiny(_Dp+2) + lda ##.word0 __default_heap + sta dp:.tiny(_Dp+0) + ldx ##.word2 (.sectionSize heap) + lda ##.word0 (.sectionSize heap) +#endif + call __heap_initialize + + .section CODE, root, noreorder + lda ##0 ; argc = 0 + call main + jump exit + +;;; *************************************************************************** +;;; +;;; __low_level_init - custom low level initialization +;;; +;;; This default routine just returns doing nothing. You can provide your own +;;; routine, either in C or assembly for doing custom low leve initialization. +;;; +;;; *************************************************************************** + + .section libcode + .pubweak __low_level_init +__low_level_init: + return diff --git a/src/version.h b/src/version.h index df696c5..03f0bdd 100644 --- a/src/version.h +++ b/src/version.h @@ -7,6 +7,6 @@ #define VER_MAJOR 1 #define VER_MINOR 0 -#define VER_BUILD 15 +#define VER_BUILD 16 #endif