From b178df736b914d835e6473977c5d7de0ee141969 Mon Sep 17 00:00:00 2001 From: Sightvision Date: Tue, 23 Feb 2021 10:50:30 +0100 Subject: [PATCH] Det fungerade --- .deps/data.c.P | 6 + .deps/display.c.P | 6 + .deps/main.c.P | 6 + .deps/stubs.c.P | 2 + .deps/vectors.S.P | 2 + data.c | 143 ++++++++ data.c.o | Bin 0 -> 2188 bytes display.c | 7 + display.c.o | Bin 0 -> 2936 bytes main.c.o | Bin 0 -> 1884 bytes outfile.elf | Bin 23616 -> 12640 bytes outfile.hex | 834 +++++++++++----------------------------------- snake.h | 56 +++- vectors.S | 252 -------------- vectors.S.o | Bin 15332 -> 0 bytes 15 files changed, 417 insertions(+), 897 deletions(-) create mode 100644 .deps/data.c.P create mode 100644 .deps/display.c.P create mode 100644 .deps/main.c.P create mode 100644 .deps/stubs.c.P create mode 100644 .deps/vectors.S.P create mode 100644 data.c create mode 100644 data.c.o create mode 100644 display.c.o create mode 100644 main.c.o delete mode 100644 vectors.S delete mode 100644 vectors.S.o diff --git a/.deps/data.c.P b/.deps/data.c.P new file mode 100644 index 0000000..ff41539 --- /dev/null +++ b/.deps/data.c.P @@ -0,0 +1,6 @@ +data.c.o: data.c /opt/mcb32tools/include/stdint.h \ + /opt/mcb32tools/lib/gcc/mipsel-mcb32-elf/4.9.2/include/stdint-gcc.h \ + /opt/mcb32tools/include/pic32mx.h snake.h +data.c /opt/mcb32tools/include/stdint.h : + /opt/mcb32tools/lib/gcc/mipsel-mcb32-elf/4.9.2/include/stdint-gcc.h : + /opt/mcb32tools/include/pic32mx.h snake.h : diff --git a/.deps/display.c.P b/.deps/display.c.P new file mode 100644 index 0000000..2f49373 --- /dev/null +++ b/.deps/display.c.P @@ -0,0 +1,6 @@ +display.c.o: display.c /opt/mcb32tools/include/stdint.h \ + /opt/mcb32tools/lib/gcc/mipsel-mcb32-elf/4.9.2/include/stdint-gcc.h \ + /opt/mcb32tools/include/pic32mx.h snake.h +display.c /opt/mcb32tools/include/stdint.h : + /opt/mcb32tools/lib/gcc/mipsel-mcb32-elf/4.9.2/include/stdint-gcc.h : + /opt/mcb32tools/include/pic32mx.h snake.h : diff --git a/.deps/main.c.P b/.deps/main.c.P new file mode 100644 index 0000000..9bdfe3f --- /dev/null +++ b/.deps/main.c.P @@ -0,0 +1,6 @@ +main.c.o: main.c /opt/mcb32tools/include/stdint.h \ + /opt/mcb32tools/lib/gcc/mipsel-mcb32-elf/4.9.2/include/stdint-gcc.h \ + /opt/mcb32tools/include/pic32mx.h snake.h +main.c /opt/mcb32tools/include/stdint.h : + /opt/mcb32tools/lib/gcc/mipsel-mcb32-elf/4.9.2/include/stdint-gcc.h : + /opt/mcb32tools/include/pic32mx.h snake.h : diff --git a/.deps/stubs.c.P b/.deps/stubs.c.P new file mode 100644 index 0000000..d41842d --- /dev/null +++ b/.deps/stubs.c.P @@ -0,0 +1,2 @@ +stubs.c.o: stubs.c +stubs.c : diff --git a/.deps/vectors.S.P b/.deps/vectors.S.P new file mode 100644 index 0000000..c78599f --- /dev/null +++ b/.deps/vectors.S.P @@ -0,0 +1,2 @@ +vectors.S.o: vectors.S +vectors.S : diff --git a/data.c b/data.c new file mode 100644 index 0000000..86d59b1 --- /dev/null +++ b/data.c @@ -0,0 +1,143 @@ +/* mipslabdata.c + This file compiled 2015 by F Lundevall + from original code written by Axel Isaksson + + For copyright and licensing, see file COPYING */ + +#include /* Declarations of uint_32 and the like */ +#include /* Declarations of system-specific addresses etc */ +#include "snake.h" /* Declatations for these labs */ + +char textbuffer[4][16]; + +const uint8_t const font[] = { + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 94, 0, 0, 0, 0, + 0, 0, 4, 3, 4, 3, 0, 0, + 0, 36, 126, 36, 36, 126, 36, 0, + 0, 36, 74, 255, 82, 36, 0, 0, + 0, 70, 38, 16, 8, 100, 98, 0, + 0, 52, 74, 74, 52, 32, 80, 0, + 0, 0, 0, 4, 3, 0, 0, 0, + 0, 0, 0, 126, 129, 0, 0, 0, + 0, 0, 0, 129, 126, 0, 0, 0, + 0, 42, 28, 62, 28, 42, 0, 0, + 0, 8, 8, 62, 8, 8, 0, 0, + 0, 0, 0, 128, 96, 0, 0, 0, + 0, 8, 8, 8, 8, 8, 0, 0, + 0, 0, 0, 0, 96, 0, 0, 0, + 0, 64, 32, 16, 8, 4, 2, 0, + 0, 62, 65, 73, 65, 62, 0, 0, + 0, 0, 66, 127, 64, 0, 0, 0, + 0, 0, 98, 81, 73, 70, 0, 0, + 0, 0, 34, 73, 73, 54, 0, 0, + 0, 0, 14, 8, 127, 8, 0, 0, + 0, 0, 35, 69, 69, 57, 0, 0, + 0, 0, 62, 73, 73, 50, 0, 0, + 0, 0, 1, 97, 25, 7, 0, 0, + 0, 0, 54, 73, 73, 54, 0, 0, + 0, 0, 6, 9, 9, 126, 0, 0, + 0, 0, 0, 102, 0, 0, 0, 0, + 0, 0, 128, 102, 0, 0, 0, 0, + 0, 0, 8, 20, 34, 65, 0, 0, + 0, 0, 20, 20, 20, 20, 0, 0, + 0, 0, 65, 34, 20, 8, 0, 0, + 0, 2, 1, 81, 9, 6, 0, 0, + 0, 28, 34, 89, 89, 82, 12, 0, + 0, 0, 126, 9, 9, 126, 0, 0, + 0, 0, 127, 73, 73, 54, 0, 0, + 0, 0, 62, 65, 65, 34, 0, 0, + 0, 0, 127, 65, 65, 62, 0, 0, + 0, 0, 127, 73, 73, 65, 0, 0, + 0, 0, 127, 9, 9, 1, 0, 0, + 0, 0, 62, 65, 81, 50, 0, 0, + 0, 0, 127, 8, 8, 127, 0, 0, + 0, 0, 65, 127, 65, 0, 0, 0, + 0, 0, 32, 64, 64, 63, 0, 0, + 0, 0, 127, 8, 20, 99, 0, 0, + 0, 0, 127, 64, 64, 64, 0, 0, + 0, 127, 2, 4, 2, 127, 0, 0, + 0, 127, 6, 8, 48, 127, 0, 0, + 0, 0, 62, 65, 65, 62, 0, 0, + 0, 0, 127, 9, 9, 6, 0, 0, + 0, 0, 62, 65, 97, 126, 64, 0, + 0, 0, 127, 9, 9, 118, 0, 0, + 0, 0, 38, 73, 73, 50, 0, 0, + 0, 1, 1, 127, 1, 1, 0, 0, + 0, 0, 63, 64, 64, 63, 0, 0, + 0, 31, 32, 64, 32, 31, 0, 0, + 0, 63, 64, 48, 64, 63, 0, 0, + 0, 0, 119, 8, 8, 119, 0, 0, + 0, 3, 4, 120, 4, 3, 0, 0, + 0, 0, 113, 73, 73, 71, 0, 0, + 0, 0, 127, 65, 65, 0, 0, 0, + 0, 2, 4, 8, 16, 32, 64, 0, + 0, 0, 0, 65, 65, 127, 0, 0, + 0, 4, 2, 1, 2, 4, 0, 0, + 0, 64, 64, 64, 64, 64, 64, 0, + 0, 0, 1, 2, 4, 0, 0, 0, + 0, 0, 48, 72, 40, 120, 0, 0, + 0, 0, 127, 72, 72, 48, 0, 0, + 0, 0, 48, 72, 72, 0, 0, 0, + 0, 0, 48, 72, 72, 127, 0, 0, + 0, 0, 48, 88, 88, 16, 0, 0, + 0, 0, 126, 9, 1, 2, 0, 0, + 0, 0, 80, 152, 152, 112, 0, 0, + 0, 0, 127, 8, 8, 112, 0, 0, + 0, 0, 0, 122, 0, 0, 0, 0, + 0, 0, 64, 128, 128, 122, 0, 0, + 0, 0, 127, 16, 40, 72, 0, 0, + 0, 0, 0, 127, 0, 0, 0, 0, + 0, 120, 8, 16, 8, 112, 0, 0, + 0, 0, 120, 8, 8, 112, 0, 0, + 0, 0, 48, 72, 72, 48, 0, 0, + 0, 0, 248, 40, 40, 16, 0, 0, + 0, 0, 16, 40, 40, 248, 0, 0, + 0, 0, 112, 8, 8, 16, 0, 0, + 0, 0, 72, 84, 84, 36, 0, 0, + 0, 0, 8, 60, 72, 32, 0, 0, + 0, 0, 56, 64, 32, 120, 0, 0, + 0, 0, 56, 64, 56, 0, 0, 0, + 0, 56, 64, 32, 64, 56, 0, 0, + 0, 0, 72, 48, 48, 72, 0, 0, + 0, 0, 24, 160, 160, 120, 0, 0, + 0, 0, 100, 84, 84, 76, 0, 0, + 0, 0, 8, 28, 34, 65, 0, 0, + 0, 0, 0, 126, 0, 0, 0, 0, + 0, 0, 65, 34, 28, 8, 0, 0, + 0, 0, 4, 2, 4, 2, 0, 0, + 0, 120, 68, 66, 68, 120, 0, 0, +}; + diff --git a/data.c.o b/data.c.o new file mode 100644 index 0000000000000000000000000000000000000000..0bce175ad89327484f0c0fb91a28d1dba1035824 GIT binary patch literal 2188 zcmd^B-*3}a6h3xLx!w=vPJLinB)kl==J_nhnFW2gDropr}?#EK(I-dZ9* z%pnp;Z%GrXa!x+9)PKRy#r~2FPUo_||2aN3_wSWFcIo2yBL0AzlY0PJzZ9reQ)Fp# zb1B>+Rnvgu7qmoPjCs9Mu9dFbll1lf;6|Y zbz&vUt`pCxT<`mGZS4l_T9z#moyKQpiPsC>obT%cNQYjOEl@2~QrZg;Vp>^XKG)gy zIYZ^jqeu5Xf-)}l=S99+npWVJJT>QoU+2kvUk^_$-PY&GmCDIWa~+m2NmleewXmx( zNfKc0dM=AMQ8s#}HBtALOS{_tQ0=-*CDloiJ!AD+Q=XJHJ^9I%GYwqtUrS1C8 z4(CqPH}#OXoP_#(%gJ(K8l@h`y3YAmuXMb%vvY?8RW{FE%v9jHm-*b$0FIrER&TA6 zzj6Ea&9J(0_x|N@DY_9YO8N=Bdq+cYI9}*!bo|TVpwR>l`Udx{HfWCq615tGhD6Qd zV~P6hy@R7pSEBE-t?#2o^PuxnV-Nmbt1r=EtKA&#(R+0f)UMgL+dVvNA0Z8DMvcLs zf6yEb+Q+DUTJ+cz&Jwwmu6#VTp@dJ}r!)3h31@6iF3;F!MEAAum1Iu7orx=1 zo3VYlJ7a$!kEd);{+P63>rn&F%byc7CdN6B@3}<(=-;Upy{nt=>mR!t?FvgYhn-Hl zFP$#h{2%0VaM^SHdIHUF&D#XLH_8`S>iQ`^(8BlIn-X&!6QUd6I!fGYdEOo_dZ48C{qZ0te7vvqYon*=ed{#fv0AY~tc z>6v6cF7E$pGU)=eJO?kZ2GG`>hi-ev@UP&Fs1#y(M0+-dyfY%d0r`ILzXYC-`F*VE Ne7}P?gwKl2_c!lC!b|`F literal 0 HcmV?d00001 diff --git a/display.c b/display.c index 4828c78..fd777bc 100644 --- a/display.c +++ b/display.c @@ -19,6 +19,13 @@ void quicksleep(int cyc) { for(i = cyc; i > 0; i--); } +uint8_t spi_send_recv(uint8_t data) { + while(!(SPI2STAT & 0x08)); + SPI2BUF = data; + while(!(SPI2STAT & 1)); + return SPI2BUF; +} + void display_init(void){ DISPLAY_CHANGE_TO_COMMAND_MODE; quicksleep(10); diff --git a/display.c.o b/display.c.o new file mode 100644 index 0000000000000000000000000000000000000000..5d20679439649bd4c11370d695a23c2cabddecf8 GIT binary patch literal 2936 zcma)8O=w(I6h8BlHcg{>mRSrK^o>M1QFw%!MJo};No^}csTfOflguP9>Cnk!oF7S6 z4z-Aj$P@gb3l|Zya1k64l?t{Uk_uh8=%R?akSttuXSxsq7N6hu-o2AM(}a59&UgOq zx#ygF-h1=TOB1Iek%(xDNU!WlBK9GXh$ZFGz#%OI(l6WowWIxVy_woxjahQDX~~8s zve7&&*c{M?=lj_q>ae_j{LCQLsk^Nh_IZ|EJK8H-G3s^@E3RUttOf#Xd_jHVMs&=2 zGmB%hE4`8(K@3alZRmSt^COY*b*u_p^skLm@6c)g#`8?8>L9_&Y*+&j)IuE@B6;q$ikn%dQvO8?7Xlp zd&}IPe9-=|_#OMx=Kj;;zr8oMZCh0L=5Hx;{AEVw0vz?n|2R;v{9^_pA7+1+IJG=>f{KTR>T{t+zzV-lAm9r7VOSGyFG z9vR*h;eSAmcgP3jg$}t-PIbtK<(whM<(@ySMtgDDS*e+tg?bEQbLk3+^^s^C1DZsQ?KV!;L&ti9_aBfkU&AuvP4_@ykhV=hN1pYN=x4r%Xydwo z^|$XY0s^YQ&%90@45_l3+khHWhop^iaVHCP*;A#e=e?+p?x#X}3{M5@U=9 z6NrfiZk!1T96X9}^bhdpfg?vW@nTHY-@NwGw-scPw==)_dNcFh+gIu72b!jlB#olf zLPXyUBF&^qLO6_&Nquw_>Ti=GM!z8?^X~c~csFH*^Z8!J`8m=eUM*TpOUh;V2#I9D#sC z=BJYt!Tk_^Y*+6J;K83D2xQy%)#nVea;VI}M_dz9{7f<9lW zlhy^n(8;c?6n!TH?pGUpSxQy6VEgV%pX{vTJ7i~SHL|O2-YezGWIuX1J7+r?FIRB# zLSL{e*(%w^tedIl*>YzT?&U`8Qn^@kOGt&iZO8YkUZ(E5HBn^vqxPtyW3E$@j#2bU z0Irik{UO{bO`s*ObGYVQw1CJBXFDe5QX=n-sg(lg#4ln zziq?x?~G3$;aQUxQ$K6IMaL`IOT>(_UaeAaR-Sn!&p!b;Y_F6*f%OW`OSH6!ehdtI z8@!`~XcxQ_{1fXh5`AXQw+R#xFQ6fx_vQPEQ0i=(tl-o)~e#3E2ABvaplj{VQ`i^B)CRb&dz$8Sp#@5?#Iux`RnZWnL!87Y2lp%9DmdfESZcmySpf7*()O$=OEdd%yd=4A9tw`( zzL~fo^-Zyj7Z2oD5R}0Ly@sDD0l3`vGGsYpHh+NMDho}Le#~Jyp%@22$ycfei|gb3 QJQFov42F-;Ns{^g0;F*S^Z)<= literal 0 HcmV?d00001 diff --git a/outfile.elf b/outfile.elf index f95ffee0d52f28e0aaffcf0433e62200e31554ec..bf36f766d4e916bcc81530217452cc6e262838e3 100644 GIT binary patch literal 12640 zcmeHOZ){sv6+iyd@!XB#b)n5hU`|PC+CgfzYz$;|&raONrG>1`MmJzDw)2vhCAMcf zU52#AgGqESND&A&L4*+?B(#xzK>NgK)O8XPAc2I?KrkjWw0)yRLMj7fe!u%CdC9V_ zUl3n>)%))G-E;1_=bn4sz4zU?3)v$FL!pq^6c$Gmip$aN5Q|z*%x} zZYq9|q-?a?*^RNO>yZoX=k{D9KU?m-(2B(6{Bm5*EsC65E=Ap|)mVYs?Mxr*kQe{e zc5&k(()-#<1nm~%@*M6AURHMom!K|fAGW66&+0Z7k)X_#g`$u1kPN4tS(0`Yl#TfK>PDB4#J~J4X2<#tvYO6&1 z?u)wbU_X}U8s0l3oN_b6gO>ke$UYE|{W|nWcym2Zyb15i0Uccd`u73)Vt}?bC5%l^ zz^3Lm)@=H2K=$VW`VRp*5uld?H2nqNV7`8~*d6fM#`*7(7gP-3y~8WOfIhbvl}vv` zTowB}x9GU&LjA@%k(K4^0({I>GcJ0rDUUg5N(-?d=NDx!)t_JNO?)45lIiP>e-3!4 zMLEoSAIjyp(WTowzbL&7v*#CkyFYK*6vX(d#n@y!8>eyD{8C%nyjiTih*;@EtRz-r ze`WbIrawCmHg0wW{78SO_)EBA3CZ#@`4@?sOQ z4nM2+W!$vwhMrFunldZhVcdJ3gI@}`xEq4dNK5P0`EW{#`3!9k8PshbxQH999&tRt8znE$?hJWmJ)mqgAp1;!9tK?v=zMfTyPuCkPe`vT)H4Ep z*vNCNqSj4qdlGas!0Q6G>lbC6O|V@{EMJ;>>|Zr&TW`9s~X`>o__!sc0n1Wwq~AAO4{{+&+dv4!$q$OkfQeJbZXC zF-lP-hVs-SL?Vxz;&Wfmfu4OR9p`{UhvW4f=hI;#fg=kaZX)hP!y*ULx%2^6WENZ& zQn)jBkmasi?lzX&oCVeHz1i%Ci4Wv*H?s`ouUCJVxy{I36^khYWRhHTYf7hUSDLsB ziDi0M7xjfhcgAqQlb&7o+;a@4Iyq(9FBp9X(&=5OmW8yo5A{mVLM(>xqTzQcI~E*g zfjGUO*phJFJBSyYuA(Yk*Ch-`!<1XN%1J7D=vU*0KH33&`BN?hVzHCN@6+Q9g%c)}%>PP5-=I27hq3#*Vo zXeg2#>7NIbg^`gY%jC!i3zo{>k@j%A| z{}&G&8XEdYqW{px?%JCe9Qg3S&64Kl+EjT?LR|f^u3hPFt$x*ZqbJ zlxFi&zE^G3Jn(0H8OT?wo&?kYmK?83^e?Cik3@wPNI;3YRxC~^0iw2AaeL=t2F##!=La9l}cl#!fqg_l(Ll!s7J9fJL{Jr4;KyO z8;x42FxT+Got^Ltb5rc{7PW0{HkTf9$^MQZqJJR~z-r?TV6`v@Fzz+hwcok{>#K-0{oKEU{k>gbJX$0ovWYgrw@+ZD#6MIs{l3JO*mtPU1r8T?Mt_$IY@#|FG}1MXJX zJ|c3xB~=-b8&o;6s_$K9hO}5zF19}elJhZ*sS8U~T;QacAG{`lw$cjV-UWMegkYpi2np|ey9Fsp*^nx^L^t{hxqTn&w$TJB*q7kRJ&wp93}BKs9v*gr{Ic! zG0}oJ`tO$Bb^IOjeqc0JiT$V6@w+4kY~L61KdJev@+W~`3E2B6aMP?Gl>a)geShQf zcKIPNlIoKDbHpyIw10m~9PsB~fY-*;B^QCu!yiqEsqwGl?~oXltY5!VmR`300JiH@ z9R9gMFKI0_hd;K-O~fYt89%oHul2W6GQc#6iS~X9_}{DXcClSydzW0ze}p(;<2fW} zh@p^)?Y~28Du{nV9O!=qnEkt`z83TK3*h1H_${0n&x=N$v9ulb{uy{AFu$(=>uA;e zg#d#5w`ryt68qpPAgRjsg3N zwMKHFBA(s9y>i7X&z8i)F6b4f{o?(aR2w?BW9;LmR?%wT^k(y=vWMNW_KEYpH;^mH} z4`scvdq%V3WwWElK7Q0NXq;)|7xH!A%TG+;kWv>jfR7BGc#+=j=-Y9kHYX;WfoqRJ^}F6Pc)brn7m48kE=Rk zeZ875(iNULBP)Gj?8~g3pJ>?X_{2Mu{n)yB)Cb4lkxnbl&ilnV z#>wHi*=pKOVPSTDVy;@quT5&%e=y)_Yo!i=dbQ-$F&a3gcv949Pub5v6OX4+Yd%kr z#s-Fqc!%#gI%)z+`N>3-vX+B;!zgt;j%3rr*<&^mY3xMMSO)RX$A_~oV2m%f9PUYULkCQjUN4-GeWwLj#n_1oP;F0w45$|~JUbK9}T&wnK zy}FXeyCB5XO~!T9Pj1y zO@q%<`di8I9Lm%CTgf#cL;IL7*Y6juQ0^;6&h`tP>K+=^Dp|jL3yAYcIi!{(H=o}h zgUL4BaJdg6i(@ANb(VYb3(+KR_n^5HH!}8dNi5118+^v?08cVWd4A?Z@ hi~qZT_xC-h*o(|@@I8wm2lZXpBl1lfdCmB7|Cl}7$fVkHZ~|QdfAd=gRlh{2eP}8*7gQTyV;dM z=3#BXB_weow;?TQ(CP9BI6ShDM?=zp_t@l=CM1V6oIqM9QC_FCfno?v913iI-<`R4 zuD4@`{E>5dPCeGuy}$W>_xtXA_c3?A8F{jM<2s+uNAmDfhy)7LbQCAeO~g18C4**B z1I6h&3IIR3j0kC(Q!RL$f=D4GM;lE8PQO`2#Ayxyg>5-PW0ZhFYOJmftd@{JzyJ`Z`nhkUDt{8|rr+(SO(A>ZjCANG)EJmg~@ z@(B<5Egtf`hkTER{7w(~UJv;`5BXgl^1D6c_jt$)9`Xk~C;5#Lq}*y5c2aw%YARjx;=TbT%H@Dt)Db$x~h#J_f34lB&urju`Ze$>FQm6 zt1tdZGmmq$6S92B%+IR2)!c~SMLc9~C0|>_^!b*U4L*wB2|b~IhnC>lwD1Vgk@8c^=F!u|x+8@^n4T$y>EIO6!Q%Bn^CWT2z~ypB zgwG*O{dd`1#OLc?E(K6;DojryPB0_l1V^DO2wg;v3wIiTX76*!ncvmLIX@1xqg5UYFyGryGUu}|{r0(QwR5#}XbRWZwt>1Lbq#S^G27zS z3Y(pKS+=c0_JXaC+XK7ko2RF0wf4yV;l8d5=ehm&v;F)5e_ME42f}R~dqdRGggzGY zfzKN_AEHB_CF*>%lIwHfvW_y&OP{=#KkkJ7{zOMKOaY9q&PV6M5AmRNol<7nGVW)y zqbn-qUk3MIHSS%|LwDxmNjo{aK7>!QK@*VCP!c8!({a} z^U()+9#>cgrszCY|IAdK@c>1sBT^T>4Y;$wJoI}6dGRJ&msJPjwT_p8LsNCNx7&3F z5VaM3QsA|N>&bN_j5hzQY|T}^_R6(n26JZ-=1#3WcMQy(h`9Dr@w>KN*&lNJ)NB4^ zzld>Ym?X!EVV|4NmyUhQ!hWjMr~8x32K@4>?HAU^K0_}0ocsBp<}>&Q^ZRMkan_ud;I|0; zX4rlUqkZ+WtugVZ`m4?$<-4%vTQ?spv~B2Pp{8Oi@OWEVx6hA>(-*J zHFlXfrCLAY`tW7#0HXN*wioJo9HIix$Y_7if9mxEY?I~rcI{Z#2+9(O-}5C8tX z=3n>`zI}SCLG!QMd|X6+F|NDpwp;zyiGDj&tl_x?Kg_8eqWLt0`*5IbXxU(d=LpeY zp63+LjkmRX>}%zAF}L03g|r`{uM~syL{Z*r`QFXm!$^f2rT z8_eIMIL%8tA>@8r9=?L!ux;bbEqy%e%W3>_602aP1%u2|G*cx#wXzC$8pbd z=7Qs^CyGIPPr`oUF**jjXOdY6(+^SS;M4-Le9mRw@4$cjN{QH~Usr7oF6D7Jv5dzd z_73)X$-3nF$om{__dM)rekaEgbi88gu=>NXwHRvx&K1v~Fprn1?c4orJGOU3YiWSk zcefjUI&@}$7GwQ2!Oa8Lg}Z+q|Y2i~P69>$2O1YdZ*i0q7fqzD^3`if*qB zK%ZaKXS?Nccq#K{?0wxFs>5~|hwUTQb%DKxGuKCfrH%}1oV|93;D7k|82?x9e|SI9 z^hQVY^A88wu0)&QzenY{?NLLB&br+ z*Qzt%aE$9c+Wu4SQ}=1-s6m;b`}y(T+a{*jXT=m&MWOxOQ*`KiTx53}+o?EHY8KTtIC1v2i;lYeoTekJ`a zEY{!WuRr#jkLvHch~}Z4{7kjtK0g*>y-omf1B;1%E{Jou5>aOsU4ZffSjV_c2ke~J zHPJ?q>uqN{r8=7a|D2u_{db@kq6u48UGlja?i#40QorQ1N#l!&aH1q=m^3lM|}Lf2pw5jIv^_HF3I1UFc-JwX$-n)1Ng+DJn&(w z6bu9dC`EQh@Pm9qc{9(rbxXscA?)X)8#Y9ZKBfv9^4%X}MD(%U{CoMLOBO9h9tvF& zVuxdU5a-_^KDdDJ82>Vja43jv*(L40?U(S0j!Ba<8n~i&9q0AEy;#YxmW3uoy~W+# zYZ+hC+uOpqFR?&;1hm@b&915v4WR8Tg;_ff)zr5$uED{1dwmV-^ZTx-;@#7t`fIM) zj0hs_w(C#Y`Yvg2ug7VcY`5Bn^Fq&LRTYL8H~b3Gj>%AHl5zW_5R+k=molCV)eMT< zG);#7pr3h@vqMdS5B=i0p^w`EeTm&B6RN6iV7%12PM>cQ(Lo%ST6)hlOygVun=Csw zhC(+22Z9q;hkUfRcRlmbZqEF{P}nfJ)ZWf^gMObsh#alLfr15zntB>00BN$Pr-}2X zo*vFP7wv7@x>Zc1-Bmt6pYOZ-?hNO+ev#8njG#E57p2K?gQY;!rioD4;!W6m=oNO3 zHZ%ym;f98zTt5>E3Eb1)FIM_cTaUr#*O-QA-x_m`4Xr{?Q3`?#ci-9l z&z$zf4UxaI>JbZSUyp>R!j^E@)|vUKm}|x;nasKG@&0 zvbVF}7)}gOYSidVk7UNjl3D5=-H{qiCbOy09dvbacrZPZtmC@YVPJ7YxYa&TK5?Az zzzGkW@W2TVobbR251jD8pX7n7uOS*sPK>QEM$*}&VHFdjLq_t3_66bc3xyO ztiSBa^NeWY+Qt@YpATC*M#ss=yLW6^8*{rx#;}`d%#CHOe5WjBley#=HKs-qJCd=? zST+XvaFQAmnM^D>F_?kuhUDN_IvZ<8Ft&X);$6Bjnt<|yC>R4-atVJDbQO8=;u@-f#MICEV$6C~}7Imy) ze=G+?)Ume8v9`*ww#u=#%CWY}v9`*ww#u=#%CWY}v9`*ww%W0_+Of9Uv9=o4a$||? z*m#B-dG26AET#3ms595aA@g-;gPRQMEu;|lY-hp2?Y;vts`3R@xAlESA7{*1!b zCsq`c_C+v*424e@d{f~w1dc0=KbpdkSGZQ-g2D>~E-8GLz%vRj6qsg7`{L6gG88^r z$W4XM5jd_e2Q7&53L63!6c)D&Dk)qq|21xAqF9)BwYHWa=uE-2hCa7p0~foBx%6d3PW?d$ClIA1Msx4`o6 z^a3P8C*)ue6w|N>8fmzo{J{z=f=pWdO+t=e1ug{WGS29QdfC3q1?Injwie#y^4P=Su3_h3)1Ul9%0-+J0b8>7n#6Kc7GwlMeK3B=oZ(@n6GHB zhOYxYtl<>!a~eilDFc7<%H^kS$|JuE_Xl1{@eY=zkjsPHlLyE{UW1(FUywrNEdNpk z{s!>lwKSba&iYHp**|R0N7v8~kx!t%c;)xe<@8hJ@?d?xl>j;8KUQEXj%%G{`N{Cp z-gBitx~T^E+ZtW~{HBJ_27XDyi-F~ORZYujC9oVHVY-U&u_~49^}CwRq8?y5pQ`bV zK|gTbUSF%ppg7}T=>WGdjP_-K4g3CAO|$4`VDX;CmVX?W?Der4Ur&9OF~4^aavv3d zqwt@FucAkQO~qeI-vE~Ly_!1c5ZAZw|NOPdKU-Lw~KtwuHa`(j|Z zK37u^j#Ar7v;gXMol`EwH1%pOyg2^_%^7A#g$I#|*RhxO&T<9|ks*|4yfm z01s>aodAw2`I)o_nAG*R(LUh3y&qhOg-zU){!18_NhqxrJ z{~MO8{PFQJ{lPJdrTS>PF^zm;|aKZo%aw)^XL;JmutH8cfWQ2NfJF95H= z_`e00A;uT*;f44=126>`@8|leJt6ukV`Z<24luU&8)5Lj2aKb@zrwiRA7*UduXz3X zH(;mzSJUr+Us!5gKd&c8f#nos|DK9RmbhyFg>(+Ep~ln6bRKZQUjKQ0Sqc2MS}$KO zcL1BJ{j+Hku-<<$;HCw*UfW+OmK$=t_t6AnbSNL(o{uxOPcXiRv37m?feUK9E}*Xg zmE#`h-5EB`mpbHMBm6KbkyE4>J8s_}gZ{R;RMjE|_@z9YZ|HGb;oZD9U>1JzN# zo95w>?%K29Pn&-_a9-&%sScRi%WL1M=#K`*sy|my6j)zB*0Nl+A72Lno67z<)CX)$ zA!`;4c|Y(x;3YQxsx9YAeE&WGjC+xNKYhLY zJa9?1?^HSr?5sb1^eQm=yI|FSz5FJyq5Say%eZRqTAGK(m`dL%RLgy@-M=C%SNzq~ z#B$Z&HG~hTaDSEK=k@YN;JC7PDQ)HYihl+Taee+a0|)!#2ClEGW`J<#1|X<&MF@l_RN4E;)RGkX(=)-o8?V z9#;-#$C?_`6qC`H*l0R7I+CIoVi>W(oyo!Lt)d9WAee$EjD1#=MbslUl1Pol5bMb9 zqS%fkiW7s$%vdTtN>(T`*SG~XxCMAc%T*c&CE7kdItVm6KGNEf$PH3zES-oAjBnqb z%r-VRH?`16Vq!G8gUhY54x4i{+?dW@50o1lAIKqx1#yNg?o3Xw&f#=AL&?!0QD~u9 z%npzu5Em2Sp4dPVZ;BlOB8rNH(3C18P8jRzSRd=&+S%71YwzmX?8ura*1M^FeRr(? zn!ax5G(tSF?(V+Lmv6H9?AHo&2p%dE2#Up$1BqNRmcU!^B%(<%5$fHHuy6K;2vjLP0*RK< zjj7S=li4kqp*ed* z*vdDI=f-+R`%@!H$Am4~)YsdEu1k-`tRTB;8N$k{jHvKO$5VsX=Z2F>_#Sgb8B!bs zWmOr$XW3=r8H|1Qojv{#3ypEW5K{*ZQw3{CigWDXOcnzmyUTI3tlq5o4l!D3MGO~` zq+BL3$UPjh!uYwaJ^z7MjTt; zeVOZgfdcCth90L?H4&<|#N89g!Es(nHjIyC_`?t}CFIp1Qm(3CR1J(w42@?763*Ni zP2MQEkV_v_%s)idl@`1e$YoNo9NdplFnEI_(fSmDe-RY6oGA?;=st#lq1DjlAmaZR zhhi1w<;x*ya~5I!7ze*)pK#FH_6{!w6x(p+rapTa5#z?Xj?^F)TFYD9Rmbf!1p3uw zuBD+QRuQ>o^>nv)b#Ja%(a?I~&>_vCqi7xvNQ`1$2sb7g~0)xh8to6le&ao4j zVw=0SbXTsMc#)%8h1Wu=jCUvO3+q_NUjSvb^Sq+BC9jjNQlA zW-q?hP_oCQbr0$5-yG|2@7RddNVWxU&v=RDX2eF4c$>j%hFH-Z4qn74K3?FcGTzd$ z(H3b?>cm?hhl6YF=)THzuHsdW!^5Roja;{}eM?VlOYb(Vm3Tv^n0R-En*{C20SEJ-mf(t@pD1Y zo%fo?Gr&V~)%TXhGr>c0<<0Ur{SgNb$(6@(2K3#sl)e&p zNUpqQjW+`xk}Hqnz4)=#4SsG#e8B*gha7+FHJ$+;k}Ges#xub~a^+p8@#5eix$^kE z0Ddh0ftNoHFQ@Se;32u{+pY0R;32v4KB4huz(aE7;a!4i9~wE$4K<|mkW2sloyIf3 zLvrOktnp0nkX(6R*LZR8kX(5sjh6=x$(8p#jaL8<$(8qGjaLE>$(6@(cl;2sbU9RyA#AlFPdD}Fe2_BLw zFRAh3;32v4G8!)r9+E5XW{p<>56P8xhsG;`hvdrpON}=J9+E5X9*svFhpKYtJ*4qC zK8EC~kKe!etMKx_Y!#gIOdT0s@^AW zK6tDf*?a0c2ZU4J2X8re^WO(gz8B;6^81zJUB?HYk2zkvE}Mr;=z~u2H*J98kbb!W z1Ppa?y~qk=y6^A#y&Km-w}|*CVx;_@P93s13?9B};b|=YKW6-&4bH)~7~gE`W1Spd zKHl}-{yur1)Ob)?IG#R!|Hn2tp)JSdO>4aO()U%HhfL_>|0j9{%JPtY;rEEPpTqKf zjpT67?cw8q!xQf@_&Q7>v3^N?I&aLr4&Bd^_l(^>IW1V9HjR`oz7O7imCI>qsvEqp z1juFkeroGu5xo<4AlR+zu=!$LQPF NMf7EMsC`I%{{wdKPP703 diff --git a/outfile.hex b/outfile.hex index 1492940..6fca1fb 100644 --- a/outfile.hex +++ b/outfile.hex @@ -1,284 +1,26 @@ :020000040000fa :020000041d00dd -:0800f8000000009d8822009d1c +:0800f8000000009d1c18009d92 :020000040000fa :020000041d00dd -:1001800000701a4004005a2300709a401800004280 -:1001900000000000009d1a3c94015a27080040030b -:0401a000000000005b -:020000040000fa -:020000041d00dd -:10020000009d1a3cc0205a3700005a8f0800400356 -:1002100000000000000000000000000000000000de -:020000040000fa -:020000041d00dd -:10022000009d1a3cc0205a3704005a8f0800400332 -:1002300000000000000000000000000000000000be -:020000040000fa -:020000041d00dd -:10024000009d1a3cc0205a3708005a8f080040030e -:10025000000000000000000000000000000000009e -:020000040000fa -:020000041d00dd -:10026000009d1a3cc0205a370c005a8f08004003ea -:10027000000000000000000000000000000000007e -:020000040000fa -:020000041d00dd -:10028000009d1a3cc0205a3710005a8f08004003c6 -:10029000000000000000000000000000000000005e -:020000040000fa -:020000041d00dd -:1002a000009d1a3cc0205a3714005a8f08004003a2 -:1002b000000000000000000000000000000000003e -:020000040000fa -:020000041d00dd -:1002c000009d1a3cc0205a3718005a8f080040037e -:1002d000000000000000000000000000000000001e -:020000040000fa -:020000041d00dd -:1002e000009d1a3cc0205a371c005a8f080040035a -:1002f00000000000000000000000000000000000fe -:020000040000fa -:020000041d00dd -:10030000009d1a3cc0205a3720005a8f0800400335 -:1003100000000000000000000000000000000000dd -:020000040000fa -:020000041d00dd -:10032000009d1a3cc0205a3724005a8f0800400311 -:1003300000000000000000000000000000000000bd -:020000040000fa -:020000041d00dd -:10034000009d1a3cc0205a3728005a8f08004003ed -:10035000000000000000000000000000000000009d -:020000040000fa -:020000041d00dd -:10036000009d1a3cc0205a372c005a8f08004003c9 -:10037000000000000000000000000000000000007d -:020000040000fa -:020000041d00dd -:10038000009d1a3cc0205a3730005a8f08004003a5 -:10039000000000000000000000000000000000005d -:020000040000fa -:020000041d00dd -:1003a000009d1a3cc0205a3734005a8f0800400381 -:1003b000000000000000000000000000000000003d -:020000040000fa -:020000041d00dd -:1003c000009d1a3cc0205a3738005a8f080040035d -:1003d000000000000000000000000000000000001d -:020000040000fa -:020000041d00dd -:1003e000009d1a3cc0205a373c005a8f0800400339 -:1003f00000000000000000000000000000000000fd -:020000040000fa -:020000041d00dd -:10040000009d1a3cc0205a3740005a8f0800400314 -:1004100000000000000000000000000000000000dc -:020000040000fa -:020000041d00dd -:10042000009d1a3cc0205a3744005a8f08004003f0 -:1004300000000000000000000000000000000000bc -:020000040000fa -:020000041d00dd -:10044000009d1a3cc0205a3748005a8f08004003cc -:10045000000000000000000000000000000000009c -:020000040000fa -:020000041d00dd -:10046000009d1a3cc0205a374c005a8f08004003a8 -:10047000000000000000000000000000000000007c -:020000040000fa -:020000041d00dd -:10048000009d1a3cc0205a3750005a8f0800400384 -:10049000000000000000000000000000000000005c -:020000040000fa -:020000041d00dd -:1004a000009d1a3cc0205a3754005a8f0800400360 -:1004b000000000000000000000000000000000003c -:020000040000fa -:020000041d00dd -:1004c000009d1a3cc0205a3758005a8f080040033c -:1004d000000000000000000000000000000000001c -:020000040000fa -:020000041d00dd -:1004e000009d1a3cc0205a375c005a8f0800400318 -:1004f00000000000000000000000000000000000fc -:020000040000fa -:020000041d00dd -:10050000009d1a3cc0205a3760005a8f08004003f3 -:1005100000000000000000000000000000000000db -:020000040000fa -:020000041d00dd -:10052000009d1a3cc0205a3764005a8f08004003cf -:1005300000000000000000000000000000000000bb -:020000040000fa -:020000041d00dd -:10054000009d1a3cc0205a3768005a8f08004003ab -:10055000000000000000000000000000000000009b -:020000040000fa -:020000041d00dd -:10056000009d1a3cc0205a376c005a8f0800400387 -:10057000000000000000000000000000000000007b -:020000040000fa -:020000041d00dd -:10058000009d1a3cc0205a3770005a8f0800400363 -:10059000000000000000000000000000000000005b -:020000040000fa -:020000041d00dd -:1005a000009d1a3cc0205a3774005a8f080040033f -:1005b000000000000000000000000000000000003b -:020000040000fa -:020000041d00dd -:1005c000009d1a3cc0205a3778005a8f080040031b -:1005d000000000000000000000000000000000001b -:020000040000fa -:020000041d00dd -:1005e000009d1a3cc0205a377c005a8f08004003f7 -:1005f00000000000000000000000000000000000fb -:020000040000fa -:020000041d00dd -:10060000009d1a3cc0205a3780005a8f08004003d2 -:1006100000000000000000000000000000000000da -:020000040000fa -:020000041d00dd -:10062000009d1a3cc0205a3784005a8f08004003ae -:1006300000000000000000000000000000000000ba -:020000040000fa -:020000041d00dd -:10064000009d1a3cc0205a3788005a8f080040038a -:10065000000000000000000000000000000000009a -:020000040000fa -:020000041d00dd -:10066000009d1a3cc0205a378c005a8f0800400366 -:10067000000000000000000000000000000000007a -:020000040000fa -:020000041d00dd -:10068000009d1a3cc0205a3790005a8f0800400342 -:10069000000000000000000000000000000000005a -:020000040000fa -:020000041d00dd -:1006a000009d1a3cc0205a3794005a8f080040031e -:1006b000000000000000000000000000000000003a -:020000040000fa -:020000041d00dd -:1006c000009d1a3cc0205a3798005a8f08004003fa -:1006d000000000000000000000000000000000001a -:020000040000fa -:020000041d00dd -:1006e000009d1a3cc0205a379c005a8f08004003d6 -:1006f00000000000000000000000000000000000fa -:020000040000fa -:020000041d00dd -:10070000009d1a3cc0205a37a0005a8f08004003b1 -:1007100000000000000000000000000000000000d9 -:020000040000fa -:020000041d00dd -:10072000009d1a3cc0205a37a4005a8f080040038d -:1007300000000000000000000000000000000000b9 -:020000040000fa -:020000041d00dd -:10074000009d1a3cc0205a37a8005a8f0800400369 -:100750000000000000000000000000000000000099 -:020000040000fa -:020000041d00dd -:10076000009d1a3cc0205a37ac005a8f0800400345 -:100770000000000000000000000000000000000079 -:020000040000fa -:020000041d00dd -:10078000009d1a3cc0205a37b0005a8f0800400321 -:100790000000000000000000000000000000000059 -:020000040000fa -:020000041d00dd -:1007a000009d1a3cc0205a37b4005a8f08004003fd -:1007b0000000000000000000000000000000000039 -:020000040000fa -:020000041d00dd -:1007c000009d1a3cc0205a37b8005a8f08004003d9 -:1007d0000000000000000000000000000000000019 -:020000040000fa -:020000041d00dd -:1007e000009d1a3cc0205a37bc005a8f08004003b5 -:1007f00000000000000000000000000000000000f9 -:020000040000fa -:020000041d00dd -:10080000009d1a3cc0205a37c0005a8f0800400390 -:1008100000000000000000000000000000000000d8 -:020000040000fa -:020000041d00dd -:10082000009d1a3cc0205a37c4005a8f080040036c -:1008300000000000000000000000000000000000b8 -:020000040000fa -:020000041d00dd -:10084000009d1a3cc0205a37c8005a8f0800400348 -:100850000000000000000000000000000000000098 -:020000040000fa -:020000041d00dd -:10086000009d1a3cc0205a37cc005a8f0800400324 -:100870000000000000000000000000000000000078 -:020000040000fa -:020000041d00dd -:10088000009d1a3cc0205a37d0005a8f0800400300 -:100890000000000000000000000000000000000058 -:020000040000fa -:020000041d00dd -:1008a000009d1a3cc0205a37d4005a8f08004003dc -:1008b0000000000000000000000000000000000038 -:020000040000fa -:020000041d00dd -:1008c000009d1a3cc0205a37d8005a8f08004003b8 -:1008d0000000000000000000000000000000000018 -:020000040000fa -:020000041d00dd -:1008e000009d1a3cc0205a37dc005a8f0800400394 -:1008f00000000000000000000000000000000000f8 -:020000040000fa -:020000041d00dd -:10090000009d1a3cc0205a37e0005a8f080040036f -:1009100000000000000000000000000000000000d7 -:020000040000fa -:020000041d00dd -:10092000009d1a3cc0205a37e4005a8f080040034b -:1009300000000000000000000000000000000000b7 -:020000040000fa -:020000041d00dd -:10094000009d1a3cc0205a37e8005a8f0800400327 -:100950000000000000000000000000000000000097 -:020000040000fa -:020000041d00dd -:10096000009d1a3cc0205a37ec005a8f0800400303 -:100970000000000000000000000000000000000077 -:020000040000fa -:020000041d00dd -:10098000009d1a3cc0205a37f0005a8f08004003df -:100990000000000000000000000000000000000057 -:020000040000fa -:020000041d00dd -:1009a000009d1a3cc0205a37f4005a8f08004003bb -:1009b0000000000000000000000000000000000037 -:020000040000fa -:020000041d00dd -:1009c000009d1a3cc0205a37f8005a8f0800400397 -:1009d0000000000000000000000000000000000017 -:020000040000fa -:020000041d00dd -:1009e000009d1a3cc0205a37fc005a8f0800400373 -:0409f0000000000003 +:10018000009d1a3c80015a2708004003000000002f :020000040000fa :020000041d00dd :10100000009d1a3c10105a27080040030000000001 :020000040000fa :020000041d00dd :1010100000601a40c0045a7f050040130000000021 -:10102000009d1a3c381f5a270800400300000000aa -:1010300000a01d3c0040bd2700a01c3c34009c27a4 +:10102000009d1a3cb0175a2708004003000000003a +:1010300000a01d3c0040bd2700a01c3c08009c27d0 :101040000260094020582001801e2a7d8449497d84 :1010500002608940c000000000e0dc4102608b407b -:10106000c0000000009d083c4c1f082509f8000145 -:101070000000000000a0083c3400082500a0093c46 -:101080008c0029250600001000000000000000adc3 +:10106000c0000000009d083cc417082509f80001d5 +:101070000000000000a0083c0800082500a0093c72 +:10108000480029250600001000000000000000ad07 :10109000040000ad080000ad0c0000ad10000825f4 :1010a0002b080901f9ff201400000000009d083cf6 -:1010b000d027082500a0093c0800292500a00a3ceb -:1010c00034004a25050000100000000000000b8dd0 +:1010b000881c082500a0093c0800292500a00a3c3e +:1010c00008004a25050000100000000000000b8dfc :1010d00000002bad04000825040029252b082a0157 :1010e000faff20140000000000488040ffff0a249f :1010f00000588a40009d093c00002925017889405c @@ -286,379 +28,195 @@ :1011100001608a408000093c0068894000800840e6 :101120008005097d404c0900006008405800013ce2 :10113000244001012540280100608840009d083cb2 -:101140006c1f082509f8000100000000006008403d +:10114000e417082509f800010000000000600840cd :10115000bfff013cffff21342440010100608840b3 -:10116000000084300000a530009d083c7022082556 +:10116000000084300000a530009d083c04180825cc :0811700008000001000000006e :020000040000fa :020000041d00dd -:10118000f0ffbd270c00beaf21f0a0031000c4afdc -:101190001000c28f0000c2af6b04400b00000000c3 -:1011a0000000c28fffff42240000c2af0000c28fc8 -:1011b000fbff401c0000000021e8c0030c00be8fb4 -:1011c0001000bd270800e00300000000f8ffbd2765 -:1011d0000400beaf0000b0af21f0a0030800c4af10 -:1011e0000800c28f0000508c010010260f00023250 -:1011f0000a00422c020040140000000006001026e5 -:10120000f00002326000422c020040140000000096 -:10121000a0001026000f0232000a422c02004014e7 -:10122000000000000006102600f002320060422c90 -:10123000030040140000000000a0023421800202dc -:101240000f00023c241802020a00023c2b1062002c -:1012500003004014000000000600023c218002024e -:10126000ff00023c241802022400023c2b10620002 -:101270000300401400000000dc00023c2180020258 -:10128000000f023c24180202000a023c2b106200ec -:1012900003004014000000000006023c218002020e -:1012a00000f0023c2418020200a0023c2b10620055 -:1012b0000200401400000000218000000800c28fde -:1012c000000050ac21e8c0030400be8f0000b08fc6 -:1012d0000800bd270800e00300000000e8ffbd276c -:1012e0001400bfaf1000beaf21f0a0031800c4afc0 -:1012f00001000424009d023c542745244805400f6a -:101300000000000002000424009d023c5c274524ec -:101310004805400f000000001800c38f00a0023ce9 -:101320004a004424212860002c06400f00000000e1 -:101330001800c28f0000438c00a0023c5a004424d5 -:10134000212860002c06400f00000000d405400f4b -:101350000000000021e8c0031400bf8f1000be8f02 -:101360001800bd270800e00300000000f8ffbd27bb -:101370000400beaf21f0a003211080000800c2a32a -:101380000000000080bf023c105a42340000428c32 -:1013900008004230fbff40100000000080bf023c0c -:1013a000205a42340800c393000043ac0000000000 -:1013b00080bf023c105a42340000428c010042308f -:1013c000fbff40100000000080bf023c205a423466 -:1013d0000000428cff00423021e8c0030400be8fb1 -:1013e0000800bd270800e00300000000e8ffbd275b -:1013f0001400bfaf1000beaf21f0a00388bf023cb5 -:101400005461423410000324000043ac0a00042459 -:101410006004400f0000000088bf023c5461423469 -:1014200040000324000043ac0f00023c404244341f -:101430006004400f00000000ae000424db04400ff5 -:101440000000000088bf023c946142340002032483 -:10145000000043ac0a0004246004400f00000000b8 -:1014600088bf023c9861423400020324000043ac70 -:101470000a0004246004400f000000008d000424d2 -:10148000db04400f0000000014000424db04400fc4 -:1014900000000000d9000424db04400f000000001d -:1014a000f1000424db04400f0000000088bf023c70 -:1014b0005461423420000324000043ac9800023cf5 -:1014c000809644346004400f00000000a100042412 -:1014d000db04400f00000000c8000424db04400fc0 -:1014e00000000000da000424db04400f00000000cc -:1014f00020000424db04400f00000000af0004249f -:10150000db04400f0000000021e8c0031400bf8f7f -:101510001000be8f1800bd270800e0030000000087 -:10152000f0ffbd270c00beaf21f0a0031000c4af38 -:101530001400c5af1000c28f050040040000000079 -:101540001000c28f04004228030040140000000075 -:101550008105400b000000001400c28f03004014fe -:10156000000000008105400b000000000000c0af3b -:101570007d05400b000000001400c28f0000428077 -:1015800010004010000000001400c28f00004380d3 -:1015900000a0023c1000c48f002904000000c48f8a -:1015a0002120a4003400422421108200000043a026 -:1015b0001400c28f010042241400c2af7a05400b10 -:1015c0000000000000a0023c1000c38f00210300b7 -:1015d0000000c38f211883003400422421106200d0 -:1015e00020000324000043a00000c28f0100422419 -:1015f0000000c2af0000c28f10004228deff40147e -:101600000000000021e8c0030c00be8f1000bd27c1 -:101610000800e00300000000e0ffbd271c00bfaf92 -:101620001800beaf21f0a0032000c4af2400c5af56 -:101630001000c0afca05400b0000000088bf023c8c -:101640005461423410000324000043ac22000424ff -:10165000db04400f000000001000c28fff0042308a -:1016600021204000db04400f000000002000c28f5a -:10167000ff0042300f00423021204000db04400fc9 -:10168000000000002000c28f031102002014027c21 -:101690000f0042302014027c100042342014027cdf -:1016a000ff00423021204000db04400f000000001a -:1016b00088bf023c5861423410000324000043ac50 -:1016c0001400c0afc305400b000000001000c28f23 -:1016d000401902001400c28f21106200211840003e -:1016e0002400c28f21104300000042902710020006 -:1016f000ff00423021204000db04400f00000000ca -:101700001400c28f010042241400c2af1400c28f23 -:1017100020004228edff4014000000001000c28f9e -:10172000010042241000c2af1000c28f0400422802 -:10173000c2ff40140000000021e8c0031c00bf8f5e -:101740001800be8f2000bd270800e0030000000045 -:10175000d8ffbd272400bfaf2000beaf21f0a003fb -:101760001000c0af2206400b0000000088bf023c02 -:101770005461423410000324000043ac22000424ce -:10178000db04400f000000001000c28fff00423059 -:1017900021204000db04400f000000002120000059 -:1017a000db04400f0000000010000424db04400fa5 -:1017b0000000000088bf023c58614234100003243e -:1017c000000043ac1400c0af1b06400b000000003b -:1017d00000a0023c1000c38f002103001400c38f3f -:1017e000211883003400422421106200000042804e -:1017f0001c00c2af1c00c28f8000423003004010aa -:10180000000000001806400b000000001800c0afe8 -:101810001406400b000000001c00c28fc01802001c -:101820001800c28f21186200009d023cd42242247d -:10183000211062000000429021204000db04400f94 -:10184000000000001800c28f010042241800c2af3f -:101850001800c28f08004228efff4014000000006b -:101860001400c28f010042241400c2af1400c28fc2 -:1018700010004228d6ff4014000000001000c28f64 -:10188000010042241000c2af1000c28f04004228a1 -:10189000b6ff40140000000021e8c0032400bf8f01 -:1018a0002000be8f2800bd270800e00300000000d4 -:1018b000f0ffbd270c00beaf21f0a0031000c4afa5 -:1018c0001400c5af1c0002240000c2af4406400b48 -:1018d000000000001000c28f010043241000c3afbd -:1018e0001400c48f0000c38f071864000f00643019 -:1018f000009d033c6427632421188300000063805b -:10190000000043a00000c28ffcff42240000c2afd1 -:101910000000c28fefff41040000000021e8c00377 -:101920000c00be8f1000bd270800e003000000007f -:10193000f0ffbd270c00beaf0800b2af0400b1af8e -:101940000000b0af21f0a0031000c4af2180000060 -:101950001000c28f03004228150040100000000054 -:101960001000c28f0400401c00000000010002248f -:101970008f06400b000000001000c38f01000224fe -:101980000400621400000000020002248f06400bd5 -:10199000000000001000c38f020002240700621440 -:1019a00000000000030002248f06400b000000002e -:1019b0001000c28f01004224010050342190000029 -:1019c0008b06400b00000000030011247f06400b33 -:1019d0000000000001001224f40120021a0011028c -:1019e00010100000040040140000000021900000ce -:1019f0008406400b00000000010031264310100057 -:101a0000010042242a105100f2ff401000000000a3 -:101a10000100022404004216000000002110000210 -:101a20008f06400b00000000020010260100022477 -:101a3000e5ff4216000000002110000221e8c0036b -:101a40000c00be8f0800b28f0400b18f0000b08f71 -:101a50001000bd270800e00300000000f0ffbd27d4 -:101a60000c00beaf0800b1af0400b0af21f0a0037e -:101a70001000c4af00a0023c74004224170040a034 -:101a80001000d18f1000c28f190041040000000027 -:101a90001000c28fffff4224150040180000000014 -:101aa00021800000b506400b000000000100042664 -:101ab000009d023c7827422421100202000043804e -:101ac00000a0023c7400422421108200000043a0c8 -:101ad00001001026211000020c00422cf3ff4014dc -:101ae0000000000021800000ec06400b0000000018 -:101af0001000c28f04004104000000001000c28fdb -:101b0000231002001000c2af160010241000c38f73 -:101b10006666023c676642341800620010100000de -:101b200083200200c317030023108200401002002c -:101b3000802002002110440023106200ff00423088 -:101b400030004224ff004230201c027c00a0023cf6 -:101b50007400422421100202000043a01000c28f32 -:101b60006666033c67666334180043001018000083 -:101b700083180300c3170200231062001000c2afd5 -:101b8000ffff10261000c28fe0ff401c0000000085 -:101b9000070021060000000000a0023c740042245f -:101ba000211002022d000324000043a0ffff102695 -:101bb0000100032600a0023c7400422421106200b0 -:101bc00021e8c0030c00be8f0800b18f0400b08f65 -:101bd0001000bd270800e00300000000e8ffbd275b -:101be0001400bfaf1000beaf21f0a00380bf023cc5 -:101bf00030f2423499aa033c55666334000043ac8a -:101c000080bf023c30f242346655033caa996334eb -:101c1000000043ac0000000080bf023c00f04234f2 -:101c20000000438c2000023c24106200faff4014a4 -:101c30000000000080bf023c04f042341800033c66 -:101c4000000043ac0000000080bf023c00f04234c2 -:101c50000000438c2000023c24106200faff401474 -:101c60000000000080bf023c30f24234000040ac73 -:101c700080bf023c60904234ffff0334000043ac5d -:101c800088bf023c30614234000040ac88bf023c57 -:101c900004614234ff000324000043ac88bf023ccf -:101ca00010614234000040ac88bf023c50614234b5 -:101cb000ffff0334000043ac88bf023c9061423414 -:101cc00000020324000043ac88bf023c7061423430 -:101cd000000040ac88bf023cb0614234000040ac20 -:101ce00088bf023c4461423470000324000043acce -:101cf00088bf023c8461423400020324000043acec -:101d000088bf023cc860423400010324000043ac99 -:101d100088bf023c4861423402000324000043ac07 -:101d200080bf023c005a4234000040ac80bf023cfd -:101d3000305a423404000324000043ac80bf023c0c -:101d4000145a423440000324000043ac80bf023cdc -:101d5000085a423440000324000043ac80bf023cd8 -:101d6000085a423420000324000043ac80bf023ce8 -:101d7000085a423400800334000043acfb04400f97 -:101d80000000000021200000009d023c8427452423 -:101d90004805400f0000000001000424009d023ca3 -:101da000902745244805400f00000000020004244d -:101db000009d023c9c2745244805400f0000000080 -:101dc00003000424009d023ca82745244805400f39 -:101dd00000000000d405400f000000006000042453 -:101de000009d023cd42645248605400f00000000db -:101df0008b07400f00000000aa07400f0000000002 -:101e00007c07400b00000000f8ffbd270400beafb8 -:101e100021f0a0030000000021e8c0030400be8ff1 -:101e20000800bd270800e00300000000e0ffbd2718 -:101e30001c00bfaf1800beaf21f0a00388bf023c5a -:101e4000006142341000c2af88bf023c10614234ce -:101e50001400c2af1400c28f0000428c0100432462 -:101e60001400c28f000043ac1400c48f7304400ff1 -:101e7000000000001400c28f0000438c0001022407 -:101e800003006214000000001400c28f000040ac88 -:101e900021e8c0031c00bf8f1800be8f2000bd27a3 -:101ea0000800e00300000000e8ffbd271400bfaffa -:101eb0001000beaf21f0a003e8030424e807400fa0 -:101ec0000000000000a0023c0800438c00a0023c7f -:101ed0000c004424212860000008400f000000008e -:101ee0000300042400a0023c0c0045244805400fd8 -:101ef00000000000d405400f0000000000a0023cdc -:101f0000080044247304400f000000006000042413 -:101f1000009d023cd42645248605400f00000000a9 -:101f200021e8c0031400bf8f1000be8f1800bd272a -:101f30000800e00300000000f8ffbd270400beaf6a -:101f400021f0a003d107400b00000000f8ffbd27df -:101f50000400beaf21f0a00321e8c0030400be8f3f -:101f60000800bd270800e00300000000f8ffbd27bf -:101f70000400beaf21f0a00321e8c0030400be8f1f -:101f80000800bd270800e003000000000f008430b7 -:101f9000300082200800e003000000000000000084 -:101fa0000700133c3c30733600000e2400000f2461 -:101fb000ef07400b00000000000000000d00e411de -:101fc0000000000000000000ffff8520f607400b26 -:101fd0000000000000000000f8ffd3110000000026 -:101fe000000000000100ce21f607400b00000000b9 -:101ff000000000000800e0030000000000000000f6 -:10200000fcffbd230000b0affcffbd230000b1af5b -:10201000fcffbd230000bfaffcffbd230000a4af49 -:102020002080a0002088800002231000e307400fda -:102030000000000000000000000022a202221000a8 -:10204000e307400f0000000000000000010022a292 -:102050003a000c240000000002002ca20221100013 -:10206000e307400f0000000000000000030022a270 -:1020700020200002e307400f0000000000000000e5 -:10208000040022a200000d240000000005002da283 -:102090000000a48f0400bd230000bf8f0400bd23f7 -:1020a0000000b18f0400bd230000b08f0400bd23e9 -:1020b0000800e00300000000000000000000000035 -:1020c000c021009dc021009dc021009dc021009d18 -:1020d000c021009dc021009dc021009dc021009d08 -:1020e000c021009dc021009dc021009dc021009df8 -:1020f000c021009dc021009dc021009dc021009de8 -:10210000c021009dc021009dc021009dc021009dd7 -:10211000c021009dc021009dc021009dc021009dc7 -:10212000c021009dc021009dc021009dc021009db7 -:10213000c021009dc021009dc021009dc021009da7 -:10214000c021009dc021009dc021009dc021009d97 -:10215000c021009dc021009dc021009dc021009d87 -:10216000c021009dc021009dc021009dc021009d77 -:10217000c021009dc021009dc021009dc021009d67 -:10218000c021009dc021009dc021009dc021009d57 -:10219000c021009dc021009dc021009dc021009d47 -:1021a000c021009dc021009dc021009dc021009d37 -:1021b000c021009dc021009dc021009dc021009d27 -:1021c000b8ffbd230000bfaf0400a1af0800a2af5d -:1021d0000c00a3af1000a4af1400a5af1800a6af69 -:1021e0001c00a7af2000a8af2400a9af2800aaaf09 -:1021f0002c00abaf3000acaf3400adaf3800aeafa9 -:102200003c00afaf4000b8af4400b9af8207400f09 -:10221000000000004400b98f4000b88f3c00af8f31 -:102220003800ae8f3400ad8f3000ac8f2c00ab8ff8 -:102230002800aa8f2400a98f2000a88f1c00a78f38 -:102240001800a68f1400a58f1000a48f0c00a38f78 -:102250000800a28f0400a18f0000bf8f4800bd239b -:102260001800004200000000000000000000000014 -:10227000000084300000a530f706400f0000000089 -:08228000ffff00100000000048 -:020000040000fa -:020000041d00dd -:102288004c000000ffffffff0e030001fffffffff0 -:10229800ffffffff010002010010009d0000009dec -:1022a80000f0010000f0019d00100000f02fc0bff9 -:1022b80010000000000000a008000000ffffffff62 -:0c22c8002002009d0002009d200000008c -:020000040000fa -:020000041d00dd -:1022d40000000000000000000000000000000000fa -:1022e40000000000000000000000000000000000ea -:1022f40000000000000000000000000000000000da -:1023040000000000000000000000000000000000c9 -:1023140000000000000000000000000000000000b9 -:1023240000000000000000000000000000000000a9 -:102334000000000000000000000000000000000099 -:102344000000000000000000000000000000000089 -:102354000000000000000000000000000000000079 -:102364000000000000000000000000000000000069 -:102374000000000000000000000000000000000059 -:102384000000000000000000000000000000000049 -:102394000000000000000000000000000000000039 -:1023a4000000000000000000000000000000000029 -:1023b4000000000000000000000000000000000019 -:1023c4000000000000000000000000000000000009 -:1023d40000000000000000000000005e000000009b -:1023e400000004030403000000247e24247e24004f -:1023f40000244aff522400000046261008646200ac -:1024040000344a4a34205000000000040300000055 -:102414000000007e81000000000000817e000000ba -:10242400002a1c3e1c2a00000008083e0808000080 -:102434000000008060000000000808080808000090 -:1024440000000000600000000040201008040200aa -:10245400003e4149413e00000000427f4000000030 -:10246400000062514946000000002249493600003c -:1024740000000e087f0800000000234545390000d5 -:1024840000003e49493200000000016119070000c4 -:10249400000036494936000000000609097e0000a4 -:1024a40000000066000000000000806600000000dc -:1024b4000000081422410000000014141414000049 -:1024c4000000412214080000000201510906000026 -:1024d400001c225959520c0000007e09097e00009c -:1024e40000007f494936000000003e4141220000bf -:1024f40000007f41413e000000007f494941000047 -:1025040000007f090901000000003e415132000033 -:1025140000007f08087f00000000417f41000000a8 -:1025240000002040403f000000007f0814630000ca -:1025340000007f4040400000007f0204027f000052 -:10254400007f0608307f000000003e41413e00004d -:1025540000007f090906000000003e41617e400042 -:1025640000007f0909760000000026494932000076 -:102574000001017f0101000000003f40403f0000d6 -:10258400001f2040201f0000003f4030403f00005b -:1025940000007708087700000003047804030000b3 -:1025a400000071494947000000007f4141000000dc -:1025b400000204081020400000000041417f000098 -:1025c400000402010204000000404040404040007a -:1025d40000000102040000000000304828780000d8 -:1025e40000007f48483000000000304848000000e8 -:1025f40000003048487f00000000305858100000a8 -:1026040000007e090102000000005098987000004c -:1026140000007f08087000000000007a000000003d -:1026240000004080807a000000007f1028480000ed -:102634000000007f0000000000780810087000000f -:10264400000078080870000000003048483000009e -:102654000000f828281000000000102828f80000c6 -:1026640000007008081000000000485454240000c2 -:102674000000083c4820000000003840207800009a -:102684000000384038000000003840204038000086 -:102694000000483030480000000018a0a078000076 -:1026a40000006454544c00000000081c2241000047 -:1026b4000000007e00000000000041221c08000011 -:1026c4000000040204020000007844424478000040 -:1026d400ffffffffffff7fbb445faa5da3d7af5f90 -:1026e400af5faf5fdf6faff73bedf2feabfe01ff15 -:1026f400ffff0fd36d3afd08b24d3ac77ac5f2ad6c -:10270400f2edbad728d729d623af5bd43fea956f29 -:10271400ab54fdfcfefd7eb8c334c916e11bc413e3 -:10272400a54a249248a25508e219a650a7d8a7584a -:102734006a95a15f875baf578e7b867f86798679a2 -:10274400843bc01ba44ab146b845ba45fe50afd934 -:102754004164647200000000446174610000000080 -:1027640030313233343536373839414243444546c3 -:10277400000000002d323134373438333634380019 -:102784004b54482f494354206c616200696e2043c6 -:102794006f6d707574657200456e67696e656572fc -:1027a400696e670057656c636f6d652100000000fa -:020000040000fa -:020000041d00dd -:1027b80000002002010000030000000000000000eb -:0827c800010000000000000008 -:020000040000fa -:020000041d00dd -:1027d00057590000746578742c206d6f72652074f1 -:1027e0006578742c20616e64206576656e206d6f4f -:0c27f00072652074657874210000000000 +:10117800f0ffbd270c00beaf21f0a0031000c4afe4 +:101188001000c28f0000c2af6904400b00000000cd +:101198000000c28fffff42240000c2af0000c28fd0 +:1011a800fbff401c0000000021e8c0030c00be8fbc +:1011b8001000bd270800e00300000000f8ffbd276d +:1011c8000400beaf21f0a003211080000800c2a3d4 +:1011d8000000000080bf023c105a42340000428cdc +:1011e80008004230fbff40100000000080bf023cb6 +:1011f800205a42340800c393000043ac00000000aa +:1012080080bf023c105a42340000428c0100423038 +:10121800fbff40100000000080bf023c205a42340f +:101228000000428cff00423021e8c0030400be8f5a +:101238000800bd270800e00300000000e8ffbd2704 +:101248001400bfaf1000beaf21f0a00388bf023c5e +:101258005461423410000324000043ac0a00042403 +:101268005e04400f0000000088bf023c5461423415 +:1012780040000324000043ac0f00023c40424434c9 +:101288005e04400f00000000ae0004247104400f0b +:101298000000000088bf023c94614234000203242d +:1012a800000043ac0a0004245e04400f0000000064 +:1012b80088bf023c9861423400020324000043ac1a +:1012c8000a0004245e04400f000000008d0004247e +:1012d8007104400f00000000140004247104400f42 +:1012e80000000000d90004247104400f0000000031 +:1012f800f10004247104400f0000000088bf023c84 +:101308005461423420000324000043ac9800023c9e +:10131800809644345e04400f00000000a1000424bd +:101328007104400f00000000c80004247104400f3d +:1013380000000000da0004247104400f00000000df +:10134800200004247104400f00000000af000424b2 +:101358007104400f0000000021e8c0031400bf8f93 +:101368001000be8f1800bd270800e0030000000031 +:10137800f0ffbd270c00beaf21f0a0031000c4afe2 +:101388001400c5af1000c28f050040040000000023 +:101398001000c28f0400422803004014000000001f +:1013a8001705400b000000001400c28f0300401412 +:1013b800000000001705400b000000000000c0af4f +:1013c8001305400b000000001400c28f000042808b +:1013d80010004010000000001400c28f000043807d +:1013e80000a0023c1000c48f002904000000c48f34 +:1013f8002120a4000800422421108200000043a0fc +:101408001400c28f010042241400c2af1005400b23 +:101418000000000000a0023c1000c38f0021030060 +:101428000000c38f211883000800422421106200a5 +:1014380020000324000043a00000c28f01004224c2 +:101448000000c2af0000c28f10004228deff401427 +:101458000000000021e8c0030c00be8f1000bd276b +:101468000800e00300000000d8ffbd272400bfaf3c +:101478002000beaf21f0a0031000c0af6a05400bea +:101488000000000088bf023c54614234100003246d +:10149800000043ac220004247104400f0000000047 +:1014a8001000c28fff004230212040007104400f1d +:1014b80000000000212000007104400f000000001f +:1014c800100004247104400f0000000088bf023c93 +:1014d8005861423410000324000043ac1400c0af2c +:1014e8006305400b0000000000a0023c1000c38f01 +:1014f800002103001400c38f211883000800422430 +:1015080021106200000042801c00c2af1c00c28f84 +:101518008000423003004010000000006005400bce +:10152800000000001800c0af5c05400b0000000080 +:101538001c00c28fc01802001800c28f2118620058 +:10154800009d023c6818422421106200000042906d +:10155800212040007104400f000000001800c28fd5 +:10156800010042241800c2af1800c28f08004228a8 +:10157800efff4014000000001400c28f0100422455 +:101588001400c2af1400c28f10004228d6ff4014c6 +:10159800000000001000c28f010042241000c2affa +:1015a8001000c28f04004228b6ff4014000000005b +:1015b80021e8c0032400bf8f2000be8f2800bd276c +:1015c8000800e00300000000e8ffbd271400bfafdb +:1015d8001000beaf21f0a00380bf023c30f24234bd +:1015e80099aa033c55666334000043ac80bf023cb3 +:1015f80030f242346655033caa996334000043ac88 +:101608000000000080bf023c00f042340000438c20 +:101618002000023c24106200faff40140000000081 +:1016280080bf023c04f042341800033c000043ac85 +:101638000000000080bf023c00f042340000438cf0 +:101648002000023c24106200faff40140000000051 +:1016580080bf023c30f24234000040ac80bf023c04 +:1016680060904234ffff0334000043ac88bf023c63 +:1016780030614234000040ac88bf023c046142340f +:10168800ff000324000043ac88bf023c10614234d1 +:10169800000040ac88bf023c50614234ffff033475 +:1016a800000043ac88bf023c90614234000203242e +:1016b800000043ac88bf023c70614234000040ac7b +:1016c80088bf023cb0614234000040ac88bf023c95 +:1016d8004461423470000324000043ac88bf023cdc +:1016e8008461423400020324000043ac88bf023cfa +:1016f800c860423400010324000043ac88bf023ca8 +:101708004861423402000324000043ac80bf023c1d +:10171800005a4234000040ac80bf023c305a423488 +:1017280004000324000043ac80bf023c145a423436 +:1017380040000324000043ac80bf023c085a4234f6 +:1017480040000324000043ac80bf023c085a4234e6 +:1017580020000324000043ac80bf023c085a4234f6 +:1017680000800334000043ac9104400f00000000e7 +:1017780021200000009d023c681c4524de04400f27 +:10178800000000001c05400f0000000000000000e1 +:1017980021e8c0031400bf8f1000be8f1800bd27ba +:1017a8000800e00300000000f8ffbd270400beaffa +:1017b80021f0a003ef05400b00000000f8ffbd2753 +:1017c8000400beaf21f0a00321e8c0030400be8fcf +:1017d8000800bd270800e00300000000f8ffbd274f +:1017e8000400beaf21f0a00321e8c0030400be8faf +:1017f8000800bd270800e003000000000000843056 +:101808000000a5307405400f00000000ffff001025 +:0418180000000000cc +:020000040000fa +:020000041d00dd +:10181c004c000000ffffffff0e030001ffffffff66 +:10182c00ffffffff010002010010009d0000009d62 +:10183c0000f0010000f0019d00100000f02fc0bf6f +:10184c0010000000000000a008000000ffffffffd8 +:0c185c000002009d0002009d2000000022 +:020000040000fa +:020000041d00dd +:101868000000000000000000000000000000000070 +:101878000000000000000000000000000000000060 +:101888000000000000000000000000000000000050 +:101898000000000000000000000000000000000040 +:1018a8000000000000000000000000000000000030 +:1018b8000000000000000000000000000000000020 +:1018c8000000000000000000000000000000000010 +:1018d8000000000000000000000000000000000000 +:1018e80000000000000000000000000000000000f0 +:1018f80000000000000000000000000000000000e0 +:1019080000000000000000000000000000000000cf +:1019180000000000000000000000000000000000bf +:1019280000000000000000000000000000000000af +:10193800000000000000000000000000000000009f +:10194800000000000000000000000000000000008f +:10195800000000000000000000000000000000007f +:1019680000000000000000000000005e0000000011 +:10197800000004030403000000247e24247e2400c5 +:1019880000244aff52240000004626100864620022 +:1019980000344a4a342050000000000403000000cc +:1019a8000000007e81000000000000817e00000031 +:1019b800002a1c3e1c2a00000008083e08080000f7 +:1019c8000000008060000000000808080808000007 +:1019d8000000000060000000004020100804020021 +:1019e800003e4149413e00000000427f40000000a7 +:1019f80000006251494600000000224949360000b3 +:101a080000000e087f08000000002345453900004b +:101a180000003e494932000000000161190700003a +:101a2800000036494936000000000609097e00001a +:101a38000000006600000000000080660000000052 +:101a480000000814224100000000141414140000bf +:101a5800000041221408000000020151090600009c +:101a6800001c225959520c0000007e09097e000012 +:101a780000007f494936000000003e414122000035 +:101a880000007f41413e000000007f4949410000bd +:101a980000007f090901000000003e4151320000aa +:101aa80000007f08087f00000000417f410000001f +:101ab80000002040403f000000007f081463000041 +:101ac80000007f4040400000007f0204027f0000c9 +:101ad800007f0608307f000000003e41413e0000c4 +:101ae80000007f090906000000003e41617e4000b9 +:101af80000007f09097600000000264949320000ed +:101b08000001017f0101000000003f40403f00004c +:101b1800001f2040201f0000003f4030403f0000d1 +:101b28000000770808770000000304780403000029 +:101b3800000071494947000000007f414100000052 +:101b4800000204081020400000000041417f00000e +:101b580000040201020400000040404040404000f0 +:101b6800000001020400000000003048287800004e +:101b780000007f484830000000003048480000005e +:101b880000003048487f000000003058581000001e +:101b980000007e09010200000000509898700000c3 +:101ba80000007f08087000000000007a00000000b4 +:101bb80000004080807a000000007f102848000064 +:101bc8000000007f00000000007808100870000086 +:101bd8000000780808700000000030484830000015 +:101be8000000f828281000000000102828f800003d +:101bf8000000700808100000000048545424000039 +:101c08000000083c48200000000038402078000010 +:101c180000003840380000000038402040380000fc +:101c28000000483030480000000018a0a0780000ec +:101c380000006454544c00000000081c22410000bd +:101c48000000007e00000000000041221c08000087 +:101c580000000402040200000078444244780000b6 +:081c6800544553540000000034 +:020000040000fa +:020000041d00dd +:101c7000000020020100000300000000000000003e +:081c800001000000000000005b :00000001FF diff --git a/snake.h b/snake.h index a83f956..8344e4e 100644 --- a/snake.h +++ b/snake.h @@ -1,13 +1,55 @@ -#include -#include -#include "snake.h" +/* mipslab.h + Header file for all labs. + This file written 2015 by F Lundevall + Some parts are original code written by Axel Isaksson -uint8_t spi_send_recv(uint8_t data); -extern char textbuffer[4][16]; + Latest update 2015-08-28 by F Lundevall -int main(void); -void quicksleep(int cyc); + For copyright and licensing, see file COPYING */ + +/* Declare display-related functions from mipslabfunc.c */ +void display_image(int x, const uint8_t *data); void display_init(void); void display_string(int line, char *s); void display_update(void); +uint8_t spi_send_recv(uint8_t data); + +/* Declare lab-related functions from mipslabfunc.c */ +char * itoaconv( int num ); +void labwork(void); +int nextprime( int inval ); +void quicksleep(int cyc); +void tick( unsigned int * timep ); + +/* Declare display_debug - a function to help debugging. + + After calling display_debug, + the two middle lines of the display show + an address and its current contents. + + There's one parameter: the address to read and display. + + Note: When you use this function, you should comment out any + repeated calls to display_image; display_image overwrites + about half of the digits shown by display_debug. +*/ +void display_debug( volatile int * const addr ); + +/* Declare bitmap array containing font */ +extern const uint8_t const font[128*8]; +/* Declare bitmap array containing icon */ +extern const uint8_t const icon[128]; +/* Declare text buffer for display output */ +extern char textbuffer[4][16]; +/* Declare functions written by students. + Note: Since we declare these functions here, + students must define their functions with the exact types + specified in the laboratory instructions. */ +/* Written as part of asm lab: delay, time2string */ +void delay(int); +void time2string( char *, int ); +/* Written as part of i/o lab: getbtns, getsw, enable_interrupt */ +int getbtns(void); +int getsw(void); +void enable_interrupt(void); diff --git a/vectors.S b/vectors.S deleted file mode 100644 index 7847274..0000000 --- a/vectors.S +++ /dev/null @@ -1,252 +0,0 @@ - # vectors.S - # This file written 2015 by Axel Isaksson - # Modified 2015 by F Lundevall - # For copyright and licensing, see file COPYING - -.macro movi reg, val - lui \reg, %hi(\val) - ori \reg, \reg, %lo(\val) -.endm - -.macro STUB num - .align 4 - .section .vector_new_\num,"ax",@progbits - .global __vector_\num - __vector_\num: - movi $k0, _isr_primary_install - lw $k0, \num * 4($k0) - jr $k0 -.endm - -.align 4 -.global __use_isr_install -__use_isr_install: -STUB 0 -STUB 1 -STUB 2 -STUB 3 -STUB 4 -STUB 5 -STUB 6 -STUB 7 - -STUB 8 -STUB 9 -STUB 10 -STUB 11 -STUB 12 -STUB 13 -STUB 14 -STUB 15 - -STUB 16 -STUB 17 -STUB 18 -STUB 19 -STUB 20 -STUB 21 -STUB 22 -STUB 23 - -STUB 24 -STUB 25 -STUB 26 -STUB 27 -STUB 28 -STUB 29 -STUB 30 -STUB 31 - -STUB 32 -STUB 33 -STUB 34 -STUB 35 -STUB 36 -STUB 37 -STUB 38 -STUB 39 - -STUB 40 -STUB 41 -STUB 42 -STUB 43 -STUB 44 -STUB 45 -STUB 46 -STUB 47 - -STUB 48 -STUB 49 -STUB 50 -STUB 51 -STUB 52 -STUB 53 -STUB 54 -STUB 55 - -STUB 56 -STUB 57 -STUB 58 -STUB 59 -STUB 60 -STUB 61 -STUB 62 -STUB 63 - -.text - -.align 4 -.global _isr_primary_install -_isr_primary_install: -.word _isr_trampoline -.word _isr_trampoline -.word _isr_trampoline -.word _isr_trampoline -.word _isr_trampoline -.word _isr_trampoline -.word _isr_trampoline -.word _isr_trampoline - -.word _isr_trampoline -.word _isr_trampoline -.word _isr_trampoline -.word _isr_trampoline -.word _isr_trampoline -.word _isr_trampoline -.word _isr_trampoline -.word _isr_trampoline - -.word _isr_trampoline -.word _isr_trampoline -.word _isr_trampoline -.word _isr_trampoline -.word _isr_trampoline -.word _isr_trampoline -.word _isr_trampoline -.word _isr_trampoline - -.word _isr_trampoline -.word _isr_trampoline -.word _isr_trampoline -.word _isr_trampoline -.word _isr_trampoline -.word _isr_trampoline -.word _isr_trampoline -.word _isr_trampoline - -.word _isr_trampoline -.word _isr_trampoline -.word _isr_trampoline -.word _isr_trampoline -.word _isr_trampoline -.word _isr_trampoline -.word _isr_trampoline -.word _isr_trampoline - -.word _isr_trampoline -.word _isr_trampoline -.word _isr_trampoline -.word _isr_trampoline -.word _isr_trampoline -.word _isr_trampoline -.word _isr_trampoline -.word _isr_trampoline - -.word _isr_trampoline -.word _isr_trampoline -.word _isr_trampoline -.word _isr_trampoline -.word _isr_trampoline -.word _isr_trampoline -.word _isr_trampoline -.word _isr_trampoline - -.word _isr_trampoline -.word _isr_trampoline -.word _isr_trampoline -.word _isr_trampoline -.word _isr_trampoline -.word _isr_trampoline -.word _isr_trampoline -.word _isr_trampoline - -# Interrupts are handled here -.align 4 -.set noreorder -.global _isr_trampoline -_isr_trampoline: - # this is an interrupt service routine - - # tell the assembler not to use $1 right now - .set noat - - # save all caller-save registers, and also ra - addi $sp,$sp,-72 - sw $ra, 0($sp) - sw $1, 4($sp) # $at - sw $2, 8($sp) # $v0 - sw $3,12($sp) # $v1 - sw $4,16($sp) # $a0 - sw $5,20($sp) # $a1 - sw $6,24($sp) # $a2 - sw $7,28($sp) # $a3 - sw $8,32($sp) # $t0 - sw $9,36($sp) # $t1 - sw $10,40($sp) # $t2 - sw $11,44($sp) # $t3 - sw $12,48($sp) # $t4 - sw $13,52($sp) # $t5 - sw $14,56($sp) # $t6 - sw $15,60($sp) # $t7 - sw $24,64($sp) # $t8 - sw $25,68($sp) # $t9 - - # Any callee-saved regs ($s0 etc) used by user's handler - # will be saved and restored by that handler - # (the C compiler will see to that). - - # call user's handler - jal user_isr - nop - - # restore saved registers - lw $25,68($sp) - lw $24,64($sp) - lw $15,60($sp) - lw $14,56($sp) - lw $13,52($sp) - lw $12,48($sp) - lw $11,44($sp) - lw $10,40($sp) - lw $9,36($sp) - lw $8,32($sp) - lw $7,28($sp) - lw $6,24($sp) - lw $5,20($sp) - lw $4,16($sp) - lw $3,12($sp) - lw $2, 8($sp) - lw $1, 4($sp) - lw $ra, 0($sp) - addi $sp,$sp,72 - - .set at - # now the assembler is allowed to use $1 again - - # standard epilogue follows - eret - nop - - -# Exceptions are handled here (trap, syscall, etc) -.section .gen_handler,"ax",@progbits -.set noreorder -.ent _gen_exception -_gen_exception: - mfc0 $k0, $14, 0 - addi $k0, $k0, 4 - mtc0 $k0, $14, 0 - eret - nop - -.end _gen_exception diff --git a/vectors.S.o b/vectors.S.o deleted file mode 100644 index ac5482cb5afde7d8a7f6b0c7b590380c1bbc8fca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15332 zcmeI2e{fXQ6~|A=@=J7p5()?miwOlQhHQ2>K+&>DC?GI`KvBWjEXf)&gd`>#fdNVo z5PzWSOw*~>AB~z8D%iEtbc$7LI%Y;&ZMBtFt42FO+R}42_wGCAUT^RJ z9q#Zr_j|v0Kli*J_wBoHvwzv@uM`y(fi6Wb3IYYtGYg<-9JIvp9p=D2aF_0SKH?EL zb?(_xfah`{cqBIp9?e|{kLAWecdi7!lba0R%}s-2xiB2hmBIINbKvpZTsV=dfRnix zJds-f-_KnExm*HH<*MPS9O5pdgNpSmwq?=FVxKJb&EjXW_}MHnvdGFJGmGpjj*-Q& zvN&cI$IfC7SpcDzk6+{Q>pcE8kKgF=TReWo48thEizxRzg2tEE$X6`1MWgP&5)Np<*a+ z+r1-`+KMsLIuy6*T5GzoJd@s)f%3XkCI#hN+uESKHC^A(bW<~wuUWZveR*nY!%dB; z`h0t1c}ra@b!aTVC0(0oZcR3&cP1;WmWb6-X|+VHmYCHNw_2*Kmibo80;^@A)e`xP zr0uLDcG?j;?}(jv#Lhforyj9$kJ!ma?CdM;>?`f;EA8wn?d&V<>?`f;EA8wn?d&V< z>?`f;qjvUDJNu}eebmlAYG)s{vya-@NA2vRcJ@&_`C|%+OV}flWq%^NUFxyT*bHwr#q=G#ke%PNDGX`5Q5JMJsQG7 zkAZTbF9KYs6-qITg{upSc;n$Zp(nsiLQjN@(39X+p{KyTLQjQZfft3o1AZ&?aQK7JBj6*UN5bEQz7vLpg6m~G-hWDj9t|^uE`pfQV_>n+7s1s+ zkA;mwkB1teC%|^0C&Dd4Pl5wNPl2OCPlay^JslnsdIsQ2xe3Kj`n3(JL0!+N3XAt`hNY!`Yv>=b$j92B}4vO?bs z4+z}`$AoT&9}2w_o)daEyd?AT}j<}Rr(V~dE zGAmjPaaU$Viy-dGtZ4DWTw3^WDYK#l4|io&w9w(M%!(E`+?83;!iKvtD_YPnmliWz z%B-wKjO#^B{w0mE!bv9E+tSH~w$@}rQ(Gq0*a*p_8ma>F?JcbhJ5sH?Z9fuptqiKs zpc)IR@t|52RObiP1wnOTP{mnaNGHO^!}%Vxvk`Ho2kmT3oZ~?|8x?1F(9Xuid0lA7 zNgdSLxHz4Ib~Y|ft%@5|r1uE)xh*Qzs92}sHWeFHY*8_z;w}~Us@S38Ar)^|@u-UT zs@SRGeJVbvVwZ~DDjrwyq>4|f*rVbp6`xVDSH(URUsUmB6<<~Hw2E)2__m7uDh{al zzKS2J__2zEDxOvGQx#X^GgpXqmUQ({9KLGkdKiI`%6WbMc!cmeIDb9lr^EmKd>Gox z|NZ|Av}w7fmw5@SKgr$^jzdjlDsH23OW;PO8$UP--<{Ddhq}{sH43*`O6%7~A2SwO zdTEGnUWfYo`c+^*%&mn!ONDrohpPGiX%=P@KZB=_-#YBWc|FJ@k9gFsdG%Q5yc!3uR(&pk zkxC!qjX|w>yRpuB9S&YQ_T%}TW<2^$LG$i1cwG+O5ra3tc=R){<~?NadL6v`4c;K* zjb}Xi13A9G{SMv`!F$Kx#Tai2!Po}4-8%jfMN3dh8?_54PF`J z;U5wgcoPg>!oeGh{rLHaF&;fT=={E5@M;{qOAKB$<1J#mg$A#~!HXNb4UBgstVc=jQ3N6SL5K(@80}+?qj@F zjQ4AU*Wuv((%_wDyfutBVDP#eJbLcp`3*4MHH>%0;PpCqpBTJB#-nFzeSR+}mgl42 z!5e}7cz&U>;QqIs@unL*diW2cuZzC^rWm{u#-lZY&acAYg&n-P2Ct0qHZk5(gO_md z78|@6<6X~qUp06&4&Jo}ubS~TGhTzi>u~VW25$r7-N<-*4PKXnx69zwFX?=J(4*UWgc4PLKK8!P~%i`xx(}!RvDHjvKr>#@o+$&l$X42ao;^3N1+BMkT{| z2T-G(Kfk{*c>NCEuMFNH#yiM(?;1R~;Ips4cMM)9;~i$avj#7Wyb|