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 0000000..0bce175 Binary files /dev/null and b/data.c.o differ 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 0000000..5d20679 Binary files /dev/null and b/display.c.o differ diff --git a/main.c.o b/main.c.o new file mode 100644 index 0000000..057d54e Binary files /dev/null and b/main.c.o differ diff --git a/outfile.elf b/outfile.elf index f95ffee..bf36f76 100644 Binary files a/outfile.elf and b/outfile.elf differ 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 ac5482c..0000000 Binary files a/vectors.S.o and /dev/null differ