From e7e1eab4a4ce63e442dedae8193ed4bc942de716 Mon Sep 17 00:00:00 2001 From: Byron Lathi Date: Mon, 23 Oct 2023 18:54:51 -0700 Subject: [PATCH 01/16] Try long test --- hw/efinix_fpga/init_hex.mem | 410 +++++++++++------------ hw/efinix_fpga/simulation/src/sim_top.sv | 2 +- sw/bios/boot2.s | 12 +- sw/bios/bootloader.s | 6 +- sw/bios/main.c | 6 +- 5 files changed, 220 insertions(+), 216 deletions(-) diff --git a/hw/efinix_fpga/init_hex.mem b/hw/efinix_fpga/init_hex.mem index 2b05a54..0fea330 100644 --- a/hw/efinix_fpga/init_hex.mem +++ b/hw/efinix_fpga/init_hex.mem @@ -1,9 +1,9 @@ @00000000 00 80 4C 00 00 8D 13 92 8E 14 92 8D 1A 92 8E 1B 92 88 B9 FF FF 8D 24 92 88 B9 FF FF 8D 23 92 8C -26 92 20 FF FF A0 FF D0 E8 60 00 00 4C FD 00 00 -00 00 A2 FF 9A D8 A9 00 85 04 A9 DF 85 05 20 C4 -FD 20 39 FA 20 52 F0 58 20 69 F2 6C FC FF 20 2D +26 92 20 FF FF A0 FF D0 E8 60 00 00 42 FD 00 00 +00 00 A2 FF 9A D8 A9 00 85 04 A9 DF 85 05 20 BA +FD 20 2F FA 20 52 F0 58 20 69 F2 6C FC FF 20 23 FA 00 A0 00 F0 07 A9 52 A2 F0 4C 05 92 60 AD FF EF A2 00 60 8D FF EF 60 20 4F F2 C9 0A D0 05 A9 0D 20 4F F2 60 DA 5A A8 B2 04 AA A9 1B 20 4F F2 @@ -13,19 +13,19 @@ A9 63 20 4F F2 68 60 40 DA BA 48 E8 E8 BD 00 01 29 10 D0 06 68 FA 20 68 F2 40 68 FA 7C BF F0 C5 F0 C9 F0 CA F0 20 9A F0 40 40 20 68 F0 40 48 A0 04 B1 04 09 40 20 3F F2 88 B1 04 20 3F F2 88 10 -F8 68 09 01 20 3F F2 20 29 FB 60 A2 08 A9 FF 20 +F8 68 09 01 20 3F F2 20 1F FB 60 A2 08 A9 FF 20 3F F2 C9 FF D0 03 CA D0 F4 60 85 0C 86 0D 20 EB -F0 92 0C A9 FF 20 3F F2 A0 01 91 0C 20 16 FB 60 -AA 20 A0 FC A9 FF 20 3F F2 92 0C E6 0C D0 02 E6 +F0 92 0C A9 FF 20 3F F2 A0 01 91 0C 20 0C FB 60 +AA 20 96 FC A9 FF 20 3F F2 92 0C E6 0C D0 02 E6 0D CA D0 F0 60 85 0C 86 0D 20 EB F0 C9 02 B0 12 -E6 0C D0 02 E6 0C A5 0C A6 0D 20 CD FC A9 04 20 +E6 0C D0 02 E6 0C A5 0C A6 0D 20 C3 FC A9 04 20 10 F1 60 48 A9 FF 20 3F F2 A9 00 20 33 F2 A9 FF 20 3F F2 68 20 CE F0 20 EB F0 A8 A9 FF 20 3F F2 A9 00 20 39 F2 A9 FF 20 3F F2 98 A2 00 60 A9 00 20 39 F2 20 8B F1 A9 FF 20 3F F2 A9 00 20 39 F2 A2 50 A9 FF 20 3F F2 CA D0 F8 60 A2 01 A9 C8 3A -D0 FD CA D0 F8 60 85 0E 86 0F A9 FF 92 0E 20 A0 -FC A5 04 85 10 A5 05 85 11 20 D1 FA A0 00 B1 10 +D0 FD CA D0 F8 60 85 0E 86 0F A9 FF 92 0E 20 96 +FC A5 04 85 10 A5 05 85 11 20 C7 FA A0 00 B1 10 91 04 C8 B1 10 91 04 C8 B1 10 91 04 C8 B1 10 91 04 A9 FF 20 3F F2 A9 00 20 33 F2 A9 FF 20 3F F2 A9 11 A0 04 91 04 A9 00 20 CE F0 20 EB F0 C9 FF @@ -37,202 +37,202 @@ EB A9 FF 20 3F F2 A9 FF 20 3F F2 A5 15 92 0E A5 F2 68 60 A9 01 8D DB EF 60 9C DB EF 60 A9 00 8D DA EF AD DB EF 30 FB AD D9 EF 60 8D E6 EF 60 48 8D E6 EF AD E7 EF 89 02 D0 F9 68 60 AD E6 EF A2 -00 60 AD E7 EF A2 00 60 60 20 F4 FA A2 00 86 06 -86 07 A9 00 20 8B FB 20 DA FA A9 06 A2 FE 20 9A -FA 20 3A F3 C9 00 20 38 FC D0 03 4C 98 F2 A9 FF -A2 FD 20 9A FA 4C 2E F3 A9 F6 A2 FD 20 9A FA A0 -05 20 47 FB 20 8B FB AD 00 92 AE 01 92 20 CD FC -A9 0C 20 58 FB 20 96 F1 A0 07 91 04 A0 07 A2 00 -B1 04 C9 00 20 3E FC D0 03 4C DC F2 A0 06 A2 00 -B1 04 C9 FE 20 3E FC F0 03 4C E5 F2 A2 00 A9 00 -D0 03 4C E9 F2 A2 00 A9 01 D0 03 4C FA F2 AD 00 -92 AE 01 92 20 BB F5 4C 2B F3 A0 06 A2 00 B1 04 -A2 00 29 F0 20 1F FA D0 03 4C 16 F3 A9 FF A2 FD -20 9A FA 4C 2B F3 A9 E7 A2 FD 20 CD FC A0 08 A2 -00 B1 04 20 CD FC A0 04 20 66 FA 6C 00 92 4C 31 -F3 4C 31 F3 A0 0C 20 05 FA 60 20 01 FB A9 00 20 -B7 FC 20 6E F1 4C 71 F3 A0 00 A2 00 18 A9 01 71 -04 91 04 A0 00 A2 00 B1 04 C9 FF 20 3E FC D0 03 -4C 71 F3 A9 25 A2 FE 20 9A FA A2 00 A9 01 4C 27 -F4 20 2B F4 A0 01 91 04 C9 01 20 38 FC D0 C9 A9 -01 20 58 FB 20 48 F4 A0 01 A2 00 B1 04 C9 01 20 -38 FC D0 03 4C A5 F3 A9 1C A2 FE 20 9A FA A2 00 -A9 01 4C 27 F4 A0 05 A2 00 B1 04 C9 AA 20 38 FC -D0 03 4C BC F3 A2 00 A9 01 4C 27 F4 A2 00 A9 00 -A0 00 91 04 A0 00 A2 00 B1 04 C9 FF 20 3E FC D0 -03 4C E2 F3 A9 0D A2 FE 20 9A FA A2 00 A9 01 4C -27 F4 20 6A F5 A0 01 91 04 A0 01 A2 00 B1 04 C9 -02 20 57 FC D0 03 4C 00 F4 20 87 F5 A0 01 91 04 -A0 00 A2 00 18 A9 01 71 04 91 04 A0 01 A2 00 B1 -04 C9 00 20 38 FC D0 AC A9 01 20 58 FB 20 F0 F4 -A2 00 A9 00 4C 27 F4 20 2E FB 60 A2 00 A9 00 20 -B7 FC A2 00 86 06 86 07 A9 00 20 8B FB A2 00 A9 -94 20 43 F1 4C 47 F4 60 20 CD FC A2 00 A9 FF 20 -3F F2 A2 00 A9 00 20 33 F2 A2 00 A9 FF 20 3F F2 -A2 00 A9 08 20 B7 FC A2 01 A9 00 85 06 A9 00 85 -07 A9 AA 20 8B FB A2 00 A9 86 20 CE F0 A0 01 20 -3E FB 20 25 F1 A2 00 A9 FF 20 3F F2 A2 00 A9 00 -20 39 F2 A2 00 A9 FF 20 3F F2 20 16 FB 60 20 CD -FC A2 00 A9 FF 20 3F F2 A2 00 A9 00 20 33 F2 A2 -00 A9 FF 20 3F F2 A2 00 A9 0D 20 B7 FC A2 00 86 -06 86 07 A9 00 20 8B FB A2 00 A9 00 20 CE F0 A0 -01 20 3E FB 20 FA F0 A2 00 A9 FF 20 3F F2 A2 00 -A9 00 20 39 F2 A2 00 A9 FF 20 3F F2 20 16 FB 60 -20 CD FC 20 D1 FA A2 00 A9 FF 20 3F F2 A2 00 A9 -00 20 33 F2 A2 00 A9 FF 20 3F F2 A0 00 91 04 A0 -00 A2 00 B1 04 C9 FF 20 38 FC D0 03 4C 30 F5 4C -22 F5 A2 00 A9 FF 20 3F F2 C9 FF 20 38 FC D0 F2 -A2 00 A9 3A 20 B7 FC A2 00 86 06 86 07 A9 00 20 -8B FB A2 00 A9 00 20 CE F0 A0 02 20 3E FB 20 25 -F1 A2 00 A9 FF 20 3F F2 A2 00 A9 00 20 39 F2 A2 -00 A9 FF 20 3F F2 20 24 FB 60 A2 00 A9 37 20 B7 -FC A2 00 86 06 86 07 A9 00 20 8B FB A2 00 A9 00 -20 43 F1 4C 86 F5 60 A2 00 A9 29 20 B7 FC A2 00 -86 06 A9 40 85 07 A9 00 20 8B FB A2 00 A9 00 20 -43 F1 4C A5 F5 60 20 CD FC 20 F4 FA A0 03 A2 00 -B1 04 4C B5 F5 A0 0E 20 05 FA 60 20 CD FC A9 00 -20 B7 FC 20 DA FA A2 00 A9 00 A0 00 20 E5 FC A0 -01 20 3E FB E0 02 20 57 FC F0 03 4C E1 F5 4C 43 -F6 A9 2E A2 FE 20 CD FC A0 06 20 3E FB A0 00 20 -33 FB 20 CD FC A0 07 A2 00 A9 01 20 F5 F9 A0 04 -20 66 FA A0 02 A2 00 B1 04 C9 1F 20 3E FC D0 03 -4C 25 F6 A9 32 A2 FE 20 9A FA A2 00 A9 00 A0 02 -91 04 4C 37 F6 A2 00 A9 20 20 68 F0 A0 02 A2 00 -18 A9 01 71 04 91 04 A0 00 A2 00 A9 01 20 F5 F9 -4C CF F5 A9 32 A2 FE 20 9A FA 20 29 FB 60 A0 00 -B1 1A E6 1A D0 02 E6 1B 60 AD 4A 92 8D 45 92 20 -FA F6 A9 45 A2 92 20 CD FC 20 AE FC 4C 02 92 A5 -18 38 E9 02 85 18 B0 02 C6 19 60 AD 4F 92 D0 11 -20 98 F6 4C 18 FA AD 4F 92 D0 06 20 98 F6 4C 12 -FA 20 98 F6 85 06 86 07 20 6F F6 A0 01 B1 18 AA -88 B1 18 60 A0 00 84 0C 84 0D B1 1A 38 E9 30 90 -2C C9 0A B0 28 20 52 F6 48 A5 0C A6 0D 06 0C 26 -0D 06 0C 26 0D 65 0C 85 0C 8A 65 0D 85 0D 06 0C -26 0D 68 65 0C 85 0C 90 D1 E6 0D B0 CD A5 0C A6 -0D 60 AC 51 92 EE 51 92 99 52 92 60 A9 52 A2 92 -18 6D 51 92 90 01 E8 4C CD FC A5 1C A6 1D 4C CD -FC 20 59 F6 EE 4B 92 D0 F8 EE 4C 92 D0 F3 60 20 -FA F6 AD 66 92 AE 67 92 20 CD FC AD 68 92 AE 69 -92 20 CD FC 4C 02 92 84 0C 20 8B FB 20 EC F6 A5 -0C 4C BB FB 84 0C 20 8B FB 20 EC F6 A5 0C 4C FC -FB 48 A0 05 B9 18 00 99 3F 92 88 10 F7 68 85 18 -86 19 20 0E FB 85 1A 86 1B 20 0E FB 85 1C 86 1D -A9 00 A8 91 1C C8 91 1C C8 B1 1C 8D 03 92 C8 B1 -1C 8D 04 92 A5 1A 85 0C A5 1B 85 0D A0 00 B1 1A -F0 0B C9 25 F0 07 C8 D0 F5 E6 1B D0 F1 98 18 65 -1A 85 1A 90 02 E6 1B 38 E5 0C 85 0E A5 1B E5 0D -85 0F 05 0E F0 25 20 F4 FA A0 05 A5 1D 91 04 88 -A5 1C 91 04 88 A5 0D 91 04 88 A5 0C 91 04 88 A5 -0F 91 04 88 A5 0E 91 04 20 02 92 20 4E F6 AA D0 -0B A2 05 BD 3F 92 95 18 CA 10 F8 60 C9 25 D0 09 -B1 1A C9 25 D0 09 20 52 F6 20 5C F6 4C 74 F7 A9 -00 A2 0B 9D 46 92 CA 10 FA B1 1A C9 2D D0 05 8E -46 92 F0 19 C9 2B D0 05 8E 47 92 F0 10 C9 20 D0 -05 8E 48 92 F0 07 C9 23 D0 09 8E 49 92 20 52 F6 -4C F9 F7 A2 20 C9 30 D0 06 AA 20 52 F6 B1 1A 8E -4A 92 C9 2A D0 09 20 52 F6 20 98 F6 4C 42 F8 20 -A4 F6 8D 4B 92 8E 4C 92 8C 4D 92 8C 4E 92 B1 1A -C9 2E D0 1B 20 52 F6 B1 1A C9 2A D0 09 20 52 F6 -20 98 F6 4C 69 F8 20 A4 F6 8D 4D 92 8E 4E 92 B1 -1A C9 7A F0 19 C9 68 F0 15 C9 74 F0 11 C9 6A F0 -08 C9 4C F0 04 C9 6C D0 0B A9 FF 8D 4F 92 20 52 -F6 4C 6F F8 8C 51 92 A2 52 8E 66 92 A2 92 8E 67 -92 20 52 F6 C9 63 D0 0E 20 98 F6 8D 52 92 A9 00 -8D 53 92 4C 93 F9 C9 64 F0 04 C9 69 D0 2D A2 00 -AD 48 92 F0 02 A2 20 AD 47 92 F0 02 A2 2B 8E 50 -92 20 86 F6 A4 07 30 0B AC 50 92 F0 06 8C 52 92 -EE 51 92 A0 0A 20 27 F7 4C 93 F9 C9 6E D0 15 20 -98 F6 85 0C 86 0D A0 00 B1 1C 91 0C C8 B1 1C 91 -0C 4C 74 F7 C9 6F D0 27 20 86 F6 AC 49 92 F0 17 -48 86 14 05 14 05 06 05 07 0D 4D 92 0D 4E 92 F0 -06 A9 30 20 E2 F6 68 A0 08 20 27 F7 4C 93 F9 C9 -70 D0 0D A2 00 8E 4F 92 E8 8E 49 92 A9 78 D0 27 -C9 73 D0 0C 20 98 F6 8D 66 92 8E 67 92 4C 93 F9 -C9 75 D0 0B 20 7B F6 A0 0A 20 34 F7 4C 93 F9 C9 -78 F0 04 C9 58 D0 29 48 AD 49 92 F0 0A A9 30 20 -E2 F6 A9 58 20 E2 F6 20 7B F6 A0 10 20 34 F7 68 -C9 78 D0 09 AD 66 92 AE 67 92 20 25 FD 4C 93 F9 -4C 74 F7 AD 66 92 AE 67 92 20 0F FD 8D 68 92 8E -69 92 AD 4D 92 0D 4E 92 F0 15 AE 4D 92 EC 68 92 -AD 4E 92 A8 ED 69 92 B0 06 8E 68 92 8C 69 92 38 -AD 4B 92 ED 68 92 AA AD 4C 92 ED 69 92 B0 03 A9 -00 AA 49 FF 8D 4C 92 8A 49 FF 8D 4B 92 AD 46 92 -D0 03 20 04 F7 20 0F F7 AD 46 92 F0 03 20 04 F7 -4C 74 F7 A0 00 18 71 04 91 04 48 C8 8A 71 04 91 -04 AA 68 60 C8 48 18 98 65 04 85 04 90 02 E6 05 -68 60 A0 FF E0 80 B0 02 A0 00 84 06 84 07 60 E0 -00 D0 06 AA D0 03 A9 01 60 A2 00 8A 60 A0 00 F0 -07 A9 52 A2 F0 4C 05 92 60 A9 00 85 0C A9 F0 85 -0D A9 00 85 0E A9 92 85 0F A2 CD A9 FF 85 14 A0 -00 E8 F0 0D B1 0C 91 0E C8 D0 F6 E6 0D E6 0F D0 -F0 E6 14 D0 EF 60 8C 6A 92 88 88 98 18 65 04 85 -0C A6 05 90 01 E8 86 0D A0 01 B1 0C AA 88 B1 0C -20 CD FC A5 0C A6 0D 20 94 FD AC 6A 92 4C 05 FA -85 0C 86 0D 20 75 F0 4C 9E FA 85 0C 86 0D A0 00 -B1 0C F0 0E C8 84 14 20 68 F0 A4 14 D0 F2 E6 0D -D0 EE 60 E0 00 D0 15 4A AA BD 5B FE 90 05 4A 4A -4A 4A 18 29 0F AA BD 50 FE A2 00 60 38 A9 00 AA -60 A4 04 D0 02 C6 05 C6 04 60 A5 04 38 E9 02 85 -04 90 01 60 C6 05 60 A5 04 38 E9 04 85 04 90 01 -60 C6 05 60 A5 04 38 E9 06 85 04 90 01 60 C6 05 -60 A5 04 38 E9 07 85 04 90 01 60 C6 05 60 A0 01 -B1 04 AA 88 B1 04 E6 04 F0 05 E6 04 F0 03 60 E6 -04 E6 05 60 A0 03 4C 05 FA A0 05 4C 05 FA A0 08 -4C 05 FA 85 0C 86 0D A2 00 B1 0C 60 A0 01 B1 04 -AA 88 B1 04 60 A0 03 B1 04 85 07 88 B1 04 85 06 -88 B1 04 AA 88 B1 04 60 A2 00 18 65 04 48 8A 65 -05 AA 68 60 18 49 FF 69 01 48 8A 49 FF 69 00 AA -A5 06 49 FF 69 00 85 06 A5 07 49 FF 69 00 85 07 -68 60 A9 00 AA A0 00 84 06 84 07 48 20 E7 FA A0 -03 A5 07 91 04 88 A5 06 91 04 88 8A 91 04 68 88 -91 04 60 85 14 20 0E FB 85 0E 86 0F 85 10 86 11 -20 A0 FC 20 0E FB 85 06 86 07 60 20 A3 FB A6 07 -A4 14 C0 0A D0 39 A5 06 05 0D 05 0C D0 11 E0 80 -D0 0D A0 0B B9 44 FE 91 0E 88 10 F8 4C 33 FC 8A -10 1D A9 2D A0 00 91 0E E6 0E D0 02 E6 0F A5 0C -A6 0D 20 64 FB 85 0C 86 0D 4C FF FB 20 A3 FB A9 -00 48 A0 20 A9 00 06 0C 26 0D 26 06 26 07 2A C5 -14 90 04 E5 14 E6 0C 88 D0 EC A8 B9 34 FE 48 A5 -0C 05 0D 05 06 05 07 D0 D9 A0 00 68 91 0E F0 03 -C8 D0 F8 A5 10 A6 11 60 D0 06 A2 00 8A 60 D0 FA -A2 00 A9 01 60 F0 F9 30 F7 A2 00 8A 60 F0 02 10 -EF A2 00 8A 60 F0 E9 90 E7 A2 00 8A 60 F0 DB A2 -00 8A 2A 60 20 8D FC A6 11 F0 13 B1 0C 91 0E C8 -B1 0C 91 0E C8 D0 F4 E6 0D E6 0F CA D0 ED A6 10 -F0 08 B1 0C 91 0E C8 CA D0 F8 4C 0E FB 85 10 86 -11 20 A0 FC C8 B1 04 AA 86 0F 88 B1 04 85 0E 60 -A0 01 B1 04 85 0D 88 B1 04 85 0C 4C 16 FB A9 01 -4C CB FC A0 00 B1 04 A4 04 F0 07 C6 04 A0 00 91 -04 60 C6 05 C6 04 91 04 60 A9 00 A2 00 48 A5 04 -38 E9 02 85 04 B0 02 C6 05 A0 01 8A 91 04 68 88 -91 04 60 A0 00 91 04 C8 48 8A 91 04 68 60 85 0E -86 0F 20 A0 FC B1 0C D1 0E D0 0C AA F0 10 C8 D0 -F4 E6 0D E6 0F D0 EE B0 03 A2 FF 60 A2 01 60 85 -0E 86 0F A2 00 A0 00 B1 0E F0 08 C8 D0 F9 E6 0F -E8 D0 F4 98 60 85 0C 86 0D 85 0E 86 0F A0 00 B1 -0C F0 14 20 B7 FA 29 02 F0 06 B1 0C 69 20 91 0C -C8 D0 EC E6 0D D0 E8 A5 0E A6 0F 60 20 0E FB 85 -0E 86 0F E8 8E 31 92 AA E8 8E 30 92 20 A0 FC 20 -0E FB 85 10 86 11 A0 00 84 14 B1 10 18 65 0E 91 -10 C8 B1 10 65 0F 91 10 CE 30 92 F0 11 A4 14 B1 -0C C8 D0 02 E6 0D 84 14 20 68 F0 4C 78 FD CE 31 -92 D0 EA 60 85 0C 86 0D A9 00 8D 2A 92 8D 2B 92 -A0 01 B1 04 AA 88 B1 04 20 CD FC A0 02 A9 2A 91 -04 C8 A9 92 91 04 A5 0C A6 0D 20 41 F7 AD 2A 92 -AE 2B 92 60 A9 32 85 0C A9 92 85 0D A9 00 A8 A2 -00 F0 0A 91 0C C8 D0 FB E6 0D CA D0 F6 C0 39 F0 -05 91 0C C8 D0 F7 60 62 61 64 20 74 6F 6B 65 6E -3A 20 25 78 0A 00 53 75 63 63 65 73 73 0A 00 45 -72 72 6F 72 0A 00 53 74 61 72 74 0A 00 6F 70 5F -63 6F 6E 64 20 65 72 72 6F 72 0A 00 49 46 20 43 -6F 6E 64 0A 00 47 6F 20 49 44 4C 45 0A 00 25 32 -78 00 0A 00 30 31 32 33 34 35 36 37 38 39 41 42 -43 44 45 46 2D 32 31 34 37 34 38 33 36 34 38 00 -00 01 02 0C 09 0A 10 40 50 A0 D0 66 66 66 66 A6 -88 88 66 66 66 66 66 66 66 66 66 09 00 00 00 00 -00 00 00 33 33 33 33 33 00 00 00 50 55 55 25 22 -22 22 22 22 22 22 22 22 02 00 00 40 44 44 14 11 -11 11 11 11 11 11 11 11 01 00 70 00 00 00 00 00 +00 60 AD E7 EF A2 00 60 60 20 EA FA A2 00 86 06 +86 07 A9 00 20 81 FB 20 D0 FA A9 FC A2 FD 20 90 +FA 20 31 F3 C9 00 20 2E FC D0 03 4C 98 F2 A9 F5 +A2 FD 20 90 FA 4C 25 F3 A9 EC A2 FD 20 90 FA A0 +05 20 3D FB 20 81 FB AD 00 92 AE 01 92 20 C3 FC +A9 0C 20 4E FB 20 96 F1 A0 07 91 04 A0 07 A2 00 +B1 04 C9 00 20 34 FC D0 03 4C DC F2 A0 06 A2 00 +B1 04 C9 FE 20 34 FC F0 03 4C E5 F2 A2 00 A9 00 +D0 03 4C E9 F2 A2 00 A9 01 D0 03 4C F1 F2 4C 22 +F3 A0 06 A2 00 B1 04 A2 00 29 F0 20 15 FA D0 03 +4C 0D F3 A9 F5 A2 FD 20 90 FA 4C 22 F3 A9 DD A2 +FD 20 C3 FC A0 08 A2 00 B1 04 20 C3 FC A0 04 20 +5C FA 6C 00 92 4C 28 F3 4C 28 F3 A0 0C 20 FB F9 +60 20 F7 FA A9 00 20 AD FC 20 6E F1 4C 68 F3 A0 +00 A2 00 18 A9 01 71 04 91 04 A0 00 A2 00 B1 04 +C9 FF 20 34 FC D0 03 4C 68 F3 A9 1B A2 FE 20 90 +FA A2 00 A9 01 4C 1E F4 20 22 F4 A0 01 91 04 C9 +01 20 2E FC D0 C9 A9 01 20 4E FB 20 3F F4 A0 01 +A2 00 B1 04 C9 01 20 2E FC D0 03 4C 9C F3 A9 12 +A2 FE 20 90 FA A2 00 A9 01 4C 1E F4 A0 05 A2 00 +B1 04 C9 AA 20 2E FC D0 03 4C B3 F3 A2 00 A9 01 +4C 1E F4 A2 00 A9 00 A0 00 91 04 A0 00 A2 00 B1 +04 C9 FF 20 34 FC D0 03 4C D9 F3 A9 03 A2 FE 20 +90 FA A2 00 A9 01 4C 1E F4 20 61 F5 A0 01 91 04 +A0 01 A2 00 B1 04 C9 02 20 4D FC D0 03 4C F7 F3 +20 7E F5 A0 01 91 04 A0 00 A2 00 18 A9 01 71 04 +91 04 A0 01 A2 00 B1 04 C9 00 20 2E FC D0 AC A9 +01 20 4E FB 20 E7 F4 A2 00 A9 00 4C 1E F4 20 24 +FB 60 A2 00 A9 00 20 AD FC A2 00 86 06 86 07 A9 +00 20 81 FB A2 00 A9 94 20 43 F1 4C 3E F4 60 20 +C3 FC A2 00 A9 FF 20 3F F2 A2 00 A9 00 20 33 F2 +A2 00 A9 FF 20 3F F2 A2 00 A9 08 20 AD FC A2 01 +A9 00 85 06 A9 00 85 07 A9 AA 20 81 FB A2 00 A9 +86 20 CE F0 A0 01 20 34 FB 20 25 F1 A2 00 A9 FF +20 3F F2 A2 00 A9 00 20 39 F2 A2 00 A9 FF 20 3F +F2 20 0C FB 60 20 C3 FC A2 00 A9 FF 20 3F F2 A2 +00 A9 00 20 33 F2 A2 00 A9 FF 20 3F F2 A2 00 A9 +0D 20 AD FC A2 00 86 06 86 07 A9 00 20 81 FB A2 +00 A9 00 20 CE F0 A0 01 20 34 FB 20 FA F0 A2 00 +A9 FF 20 3F F2 A2 00 A9 00 20 39 F2 A2 00 A9 FF +20 3F F2 20 0C FB 60 20 C3 FC 20 C7 FA A2 00 A9 +FF 20 3F F2 A2 00 A9 00 20 33 F2 A2 00 A9 FF 20 +3F F2 A0 00 91 04 A0 00 A2 00 B1 04 C9 FF 20 2E +FC D0 03 4C 27 F5 4C 19 F5 A2 00 A9 FF 20 3F F2 +C9 FF 20 2E FC D0 F2 A2 00 A9 3A 20 AD FC A2 00 +86 06 86 07 A9 00 20 81 FB A2 00 A9 00 20 CE F0 +A0 02 20 34 FB 20 25 F1 A2 00 A9 FF 20 3F F2 A2 +00 A9 00 20 39 F2 A2 00 A9 FF 20 3F F2 20 1A FB +60 A2 00 A9 37 20 AD FC A2 00 86 06 86 07 A9 00 +20 81 FB A2 00 A9 00 20 43 F1 4C 7D F5 60 A2 00 +A9 29 20 AD FC A2 00 86 06 A9 40 85 07 A9 00 20 +81 FB A2 00 A9 00 20 43 F1 4C 9C F5 60 20 C3 FC +20 EA FA A0 03 A2 00 B1 04 4C AC F5 A0 0E 20 FB +F9 60 20 C3 FC A9 00 20 AD FC 20 D0 FA A2 00 A9 +00 A0 00 20 DB FC A0 01 20 34 FB E0 02 20 4D FC +F0 03 4C D8 F5 4C 3A F6 A9 24 A2 FE 20 C3 FC A0 +06 20 34 FB A0 00 20 29 FB 20 C3 FC A0 07 A2 00 +A9 01 20 EB F9 A0 04 20 5C FA A0 02 A2 00 B1 04 +C9 1F 20 34 FC D0 03 4C 1C F6 A9 28 A2 FE 20 90 +FA A2 00 A9 00 A0 02 91 04 4C 2E F6 A2 00 A9 20 +20 68 F0 A0 02 A2 00 18 A9 01 71 04 91 04 A0 00 +A2 00 A9 01 20 EB F9 4C C6 F5 A9 28 A2 FE 20 90 +FA 20 1F FB 60 A0 00 B1 1A E6 1A D0 02 E6 1B 60 +AD 4A 92 8D 45 92 20 F1 F6 A9 45 A2 92 20 C3 FC +20 A4 FC 4C 02 92 A5 18 38 E9 02 85 18 B0 02 C6 +19 60 AD 4F 92 D0 11 20 8F F6 4C 0E FA AD 4F 92 +D0 06 20 8F F6 4C 08 FA 20 8F F6 85 06 86 07 20 +66 F6 A0 01 B1 18 AA 88 B1 18 60 A0 00 84 0C 84 +0D B1 1A 38 E9 30 90 2C C9 0A B0 28 20 49 F6 48 +A5 0C A6 0D 06 0C 26 0D 06 0C 26 0D 65 0C 85 0C +8A 65 0D 85 0D 06 0C 26 0D 68 65 0C 85 0C 90 D1 +E6 0D B0 CD A5 0C A6 0D 60 AC 51 92 EE 51 92 99 +52 92 60 A9 52 A2 92 18 6D 51 92 90 01 E8 4C C3 +FC A5 1C A6 1D 4C C3 FC 20 50 F6 EE 4B 92 D0 F8 +EE 4C 92 D0 F3 60 20 F1 F6 AD 66 92 AE 67 92 20 +C3 FC AD 68 92 AE 69 92 20 C3 FC 4C 02 92 84 0C +20 81 FB 20 E3 F6 A5 0C 4C B1 FB 84 0C 20 81 FB +20 E3 F6 A5 0C 4C F2 FB 48 A0 05 B9 18 00 99 3F +92 88 10 F7 68 85 18 86 19 20 04 FB 85 1A 86 1B +20 04 FB 85 1C 86 1D A9 00 A8 91 1C C8 91 1C C8 +B1 1C 8D 03 92 C8 B1 1C 8D 04 92 A5 1A 85 0C A5 +1B 85 0D A0 00 B1 1A F0 0B C9 25 F0 07 C8 D0 F5 +E6 1B D0 F1 98 18 65 1A 85 1A 90 02 E6 1B 38 E5 +0C 85 0E A5 1B E5 0D 85 0F 05 0E F0 25 20 EA FA +A0 05 A5 1D 91 04 88 A5 1C 91 04 88 A5 0D 91 04 +88 A5 0C 91 04 88 A5 0F 91 04 88 A5 0E 91 04 20 +02 92 20 45 F6 AA D0 0B A2 05 BD 3F 92 95 18 CA +10 F8 60 C9 25 D0 09 B1 1A C9 25 D0 09 20 49 F6 +20 53 F6 4C 6B F7 A9 00 A2 0B 9D 46 92 CA 10 FA +B1 1A C9 2D D0 05 8E 46 92 F0 19 C9 2B D0 05 8E +47 92 F0 10 C9 20 D0 05 8E 48 92 F0 07 C9 23 D0 +09 8E 49 92 20 49 F6 4C F0 F7 A2 20 C9 30 D0 06 +AA 20 49 F6 B1 1A 8E 4A 92 C9 2A D0 09 20 49 F6 +20 8F F6 4C 39 F8 20 9B F6 8D 4B 92 8E 4C 92 8C +4D 92 8C 4E 92 B1 1A C9 2E D0 1B 20 49 F6 B1 1A +C9 2A D0 09 20 49 F6 20 8F F6 4C 60 F8 20 9B F6 +8D 4D 92 8E 4E 92 B1 1A C9 7A F0 19 C9 68 F0 15 +C9 74 F0 11 C9 6A F0 08 C9 4C F0 04 C9 6C D0 0B +A9 FF 8D 4F 92 20 49 F6 4C 66 F8 8C 51 92 A2 52 +8E 66 92 A2 92 8E 67 92 20 49 F6 C9 63 D0 0D 20 +8F F6 8D 52 92 A2 00 A9 01 4C 92 F9 C9 64 F0 04 +C9 69 D0 2D A2 00 AD 48 92 F0 02 A2 20 AD 47 92 +F0 02 A2 2B 8E 50 92 20 7D F6 A4 07 30 0B AC 50 +92 F0 06 8C 52 92 EE 51 92 A0 0A 20 1E F7 4C 89 +F9 C9 6E D0 15 20 8F F6 85 0C 86 0D A0 00 B1 1C +91 0C C8 B1 1C 91 0C 4C 6B F7 C9 6F D0 27 20 7D +F6 AC 49 92 F0 17 48 86 14 05 14 05 06 05 07 0D +4D 92 0D 4E 92 F0 06 A9 30 20 D9 F6 68 A0 08 20 +1E F7 4C 89 F9 C9 70 D0 0D A2 00 8E 4F 92 E8 8E +49 92 A9 78 D0 27 C9 73 D0 0C 20 8F F6 8D 66 92 +8E 67 92 4C 89 F9 C9 75 D0 0B 20 72 F6 A0 0A 20 +2B F7 4C 89 F9 C9 78 F0 04 C9 58 D0 29 48 AD 49 +92 F0 0A A9 30 20 D9 F6 A9 58 20 D9 F6 20 72 F6 +A0 10 20 2B F7 68 C9 78 D0 09 AD 66 92 AE 67 92 +20 1B FD 4C 89 F9 4C 6B F7 AD 66 92 AE 67 92 20 +05 FD 8D 68 92 8E 69 92 AD 4D 92 0D 4E 92 F0 15 +AE 4D 92 EC 68 92 AD 4E 92 A8 ED 69 92 B0 06 8E +68 92 8C 69 92 38 AD 4B 92 ED 68 92 AA AD 4C 92 +ED 69 92 B0 03 A9 00 AA 49 FF 8D 4C 92 8A 49 FF +8D 4B 92 AD 46 92 D0 03 20 FB F6 20 06 F7 AD 46 +92 F0 03 20 FB F6 4C 6B F7 A0 00 18 71 04 91 04 +48 C8 8A 71 04 91 04 AA 68 60 C8 48 18 98 65 04 +85 04 90 02 E6 05 68 60 A0 FF E0 80 B0 02 A0 00 +84 06 84 07 60 E0 00 D0 06 AA D0 03 A9 01 60 A2 +00 8A 60 A0 00 F0 07 A9 52 A2 F0 4C 05 92 60 A9 +00 85 0C A9 F0 85 0D A9 00 85 0E A9 92 85 0F A2 +CD A9 FF 85 14 A0 00 E8 F0 0D B1 0C 91 0E C8 D0 +F6 E6 0D E6 0F D0 F0 E6 14 D0 EF 60 8C 6A 92 88 +88 98 18 65 04 85 0C A6 05 90 01 E8 86 0D A0 01 +B1 0C AA 88 B1 0C 20 C3 FC A5 0C A6 0D 20 8A FD +AC 6A 92 4C FB F9 85 0C 86 0D 20 75 F0 4C 94 FA +85 0C 86 0D A0 00 B1 0C F0 0E C8 84 14 20 68 F0 +A4 14 D0 F2 E6 0D D0 EE 60 E0 00 D0 15 4A AA BD +51 FE 90 05 4A 4A 4A 4A 18 29 0F AA BD 46 FE A2 +00 60 38 A9 00 AA 60 A4 04 D0 02 C6 05 C6 04 60 +A5 04 38 E9 02 85 04 90 01 60 C6 05 60 A5 04 38 +E9 04 85 04 90 01 60 C6 05 60 A5 04 38 E9 06 85 +04 90 01 60 C6 05 60 A5 04 38 E9 07 85 04 90 01 +60 C6 05 60 A0 01 B1 04 AA 88 B1 04 E6 04 F0 05 +E6 04 F0 03 60 E6 04 E6 05 60 A0 03 4C FB F9 A0 +05 4C FB F9 A0 08 4C FB F9 85 0C 86 0D A2 00 B1 +0C 60 A0 01 B1 04 AA 88 B1 04 60 A0 03 B1 04 85 +07 88 B1 04 85 06 88 B1 04 AA 88 B1 04 60 A2 00 +18 65 04 48 8A 65 05 AA 68 60 18 49 FF 69 01 48 +8A 49 FF 69 00 AA A5 06 49 FF 69 00 85 06 A5 07 +49 FF 69 00 85 07 68 60 A9 00 AA A0 00 84 06 84 +07 48 20 DD FA A0 03 A5 07 91 04 88 A5 06 91 04 +88 8A 91 04 68 88 91 04 60 85 14 20 04 FB 85 0E +86 0F 85 10 86 11 20 96 FC 20 04 FB 85 06 86 07 +60 20 99 FB A6 07 A4 14 C0 0A D0 39 A5 06 05 0D +05 0C D0 11 E0 80 D0 0D A0 0B B9 3A FE 91 0E 88 +10 F8 4C 29 FC 8A 10 1D A9 2D A0 00 91 0E E6 0E +D0 02 E6 0F A5 0C A6 0D 20 5A FB 85 0C 86 0D 4C +F5 FB 20 99 FB A9 00 48 A0 20 A9 00 06 0C 26 0D +26 06 26 07 2A C5 14 90 04 E5 14 E6 0C 88 D0 EC +A8 B9 2A FE 48 A5 0C 05 0D 05 06 05 07 D0 D9 A0 +00 68 91 0E F0 03 C8 D0 F8 A5 10 A6 11 60 D0 06 +A2 00 8A 60 D0 FA A2 00 A9 01 60 F0 F9 30 F7 A2 +00 8A 60 F0 02 10 EF A2 00 8A 60 F0 E9 90 E7 A2 +00 8A 60 F0 DB A2 00 8A 2A 60 20 83 FC A6 11 F0 +13 B1 0C 91 0E C8 B1 0C 91 0E C8 D0 F4 E6 0D E6 +0F CA D0 ED A6 10 F0 08 B1 0C 91 0E C8 CA D0 F8 +4C 04 FB 85 10 86 11 20 96 FC C8 B1 04 AA 86 0F +88 B1 04 85 0E 60 A0 01 B1 04 85 0D 88 B1 04 85 +0C 4C 0C FB A9 01 4C C1 FC A0 00 B1 04 A4 04 F0 +07 C6 04 A0 00 91 04 60 C6 05 C6 04 91 04 60 A9 +00 A2 00 48 A5 04 38 E9 02 85 04 B0 02 C6 05 A0 +01 8A 91 04 68 88 91 04 60 A0 00 91 04 C8 48 8A +91 04 68 60 85 0E 86 0F 20 96 FC B1 0C D1 0E D0 +0C AA F0 10 C8 D0 F4 E6 0D E6 0F D0 EE B0 03 A2 +FF 60 A2 01 60 85 0E 86 0F A2 00 A0 00 B1 0E F0 +08 C8 D0 F9 E6 0F E8 D0 F4 98 60 85 0C 86 0D 85 +0E 86 0F A0 00 B1 0C F0 14 20 AD FA 29 02 F0 06 +B1 0C 69 20 91 0C C8 D0 EC E6 0D D0 E8 A5 0E A6 +0F 60 20 04 FB 85 0E 86 0F E8 8E 31 92 AA E8 8E +30 92 20 96 FC 20 04 FB 85 10 86 11 A0 00 84 14 +B1 10 18 65 0E 91 10 C8 B1 10 65 0F 91 10 CE 30 +92 F0 11 A4 14 B1 0C C8 D0 02 E6 0D 84 14 20 68 +F0 4C 6E FD CE 31 92 D0 EA 60 85 0C 86 0D A9 00 +8D 2A 92 8D 2B 92 A0 01 B1 04 AA 88 B1 04 20 C3 +FC A0 02 A9 2A 91 04 C8 A9 92 91 04 A5 0C A6 0D +20 38 F7 AD 2A 92 AE 2B 92 60 A9 32 85 0C A9 92 +85 0D A9 00 A8 A2 00 F0 0A 91 0C C8 D0 FB E6 0D +CA D0 F6 C0 39 F0 05 91 0C C8 D0 F7 60 62 61 64 +20 74 6F 6B 65 6E 3A 20 25 78 0A 00 53 75 63 63 +65 73 73 0A 00 45 72 72 6F 72 0A 00 53 74 61 72 +74 0A 00 6F 70 5F 63 6F 6E 64 20 65 72 72 6F 72 +0A 00 49 46 20 43 6F 6E 64 0A 00 47 6F 20 49 44 +4C 45 0A 00 25 32 78 00 0A 00 30 31 32 33 34 35 +36 37 38 39 41 42 43 44 45 46 2D 32 31 34 37 34 +38 33 36 34 38 00 00 01 02 0C 09 0A 10 40 50 A0 +D0 66 66 66 66 A6 88 88 66 66 66 66 66 66 66 66 +66 09 00 00 00 00 00 00 00 33 33 33 33 33 00 00 +00 50 55 55 25 22 22 22 22 22 22 22 22 22 02 00 +00 40 44 44 14 11 11 11 11 11 11 11 11 11 01 00 +70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 diff --git a/hw/efinix_fpga/simulation/src/sim_top.sv b/hw/efinix_fpga/simulation/src/sim_top.sv index a01f70c..d53368e 100644 --- a/hw/efinix_fpga/simulation/src/sim_top.sv +++ b/hw/efinix_fpga/simulation/src/sim_top.sv @@ -53,7 +53,7 @@ initial begin button_reset <= '0; repeat(10) @(r_clk_cpu); button_reset <= '1; - repeat(1000000) @(r_clk_cpu); + repeat(10000000) @(r_clk_cpu); $finish(); end diff --git a/sw/bios/boot2.s b/sw/bios/boot2.s index 01c14ff..c80291b 100644 --- a/sw/bios/boot2.s +++ b/sw/bios/boot2.s @@ -68,9 +68,9 @@ _start: ldx #>ptr1 jsr _SD_readSingleBlock - lda #fatbuf - jsr _SD_printBuf + ; lda #fatbuf + ; jsr _SD_printBuf lda #$20 ; Start at first directory entry (first is a disk label) sta ptr3 @@ -187,9 +187,9 @@ _start: ldx #>ptr1 jsr _SD_readSingleBlock - lda userptr - ldx userptr + 1 - jsr _SD_printBuf + ; lda userptr + ; ldx userptr + 1 + ; jsr _SD_printBuf dec filesiz bmi @doneload diff --git a/sw/bios/bootloader.s b/sw/bios/bootloader.s index da6a20f..4cfd084 100644 --- a/sw/bios/bootloader.s +++ b/sw/bios/bootloader.s @@ -71,9 +71,9 @@ _main: ldx #>ptr1 jsr _SD_readSingleBlock - lda #buf - jsr _SD_printBuf + ; lda #buf + ; jsr _SD_printBuf lda #$20 ; Start at first directory entry (first is a disk label) diff --git a/sw/bios/main.c b/sw/bios/main.c index 0f7d779..13967e6 100644 --- a/sw/bios/main.c +++ b/sw/bios/main.c @@ -33,8 +33,12 @@ int main() { res[0] = SD_readSingleBlock(addr, buf, &token); // if no error, print buffer - if((res[0] == 0x00) && (token == SD_START_TOKEN)) + if((res[0] == 0x00) && (token == SD_START_TOKEN)) { +#ifndef RTL_SIM SD_printBuf(buf); +#endif + } + //else if error token received, print else if(!(token & 0xF0)) { From b6e3b79bdafeba56bb5ac83f82832c8a1f9db4de Mon Sep 17 00:00:00 2001 From: Byron Lathi Date: Wed, 25 Oct 2023 08:34:28 -0700 Subject: [PATCH 02/16] Change bootloader to actually use sectors per cluster --- hw/efinix_fpga/init_hex.mem | 338 ++++++++++++++++++------------------ sw/bios/bootloader.s | 10 +- 2 files changed, 176 insertions(+), 172 deletions(-) diff --git a/hw/efinix_fpga/init_hex.mem b/hw/efinix_fpga/init_hex.mem index 0fea330..6e2da2b 100644 --- a/hw/efinix_fpga/init_hex.mem +++ b/hw/efinix_fpga/init_hex.mem @@ -1,9 +1,9 @@ @00000000 00 80 4C 00 00 8D 13 92 8E 14 92 8D 1A 92 8E 1B 92 88 B9 FF FF 8D 24 92 88 B9 FF FF 8D 23 92 8C -26 92 20 FF FF A0 FF D0 E8 60 00 00 42 FD 00 00 -00 00 A2 FF 9A D8 A9 00 85 04 A9 DF 85 05 20 BA -FD 20 2F FA 20 52 F0 58 20 69 F2 6C FC FF 20 23 +26 92 20 FF FF A0 FF D0 E8 60 00 00 43 FD 00 00 +00 00 A2 FF 9A D8 A9 00 85 04 A9 DF 85 05 20 BB +FD 20 30 FA 20 52 F0 58 20 69 F2 6C FC FF 20 24 FA 00 A0 00 F0 07 A9 52 A2 F0 4C 05 92 60 AD FF EF A2 00 60 8D FF EF 60 20 4F F2 C9 0A D0 05 A9 0D 20 4F F2 60 DA 5A A8 B2 04 AA A9 1B 20 4F F2 @@ -13,19 +13,19 @@ A9 63 20 4F F2 68 60 40 DA BA 48 E8 E8 BD 00 01 29 10 D0 06 68 FA 20 68 F2 40 68 FA 7C BF F0 C5 F0 C9 F0 CA F0 20 9A F0 40 40 20 68 F0 40 48 A0 04 B1 04 09 40 20 3F F2 88 B1 04 20 3F F2 88 10 -F8 68 09 01 20 3F F2 20 1F FB 60 A2 08 A9 FF 20 +F8 68 09 01 20 3F F2 20 20 FB 60 A2 08 A9 FF 20 3F F2 C9 FF D0 03 CA D0 F4 60 85 0C 86 0D 20 EB -F0 92 0C A9 FF 20 3F F2 A0 01 91 0C 20 0C FB 60 -AA 20 96 FC A9 FF 20 3F F2 92 0C E6 0C D0 02 E6 +F0 92 0C A9 FF 20 3F F2 A0 01 91 0C 20 0D FB 60 +AA 20 97 FC A9 FF 20 3F F2 92 0C E6 0C D0 02 E6 0D CA D0 F0 60 85 0C 86 0D 20 EB F0 C9 02 B0 12 -E6 0C D0 02 E6 0C A5 0C A6 0D 20 C3 FC A9 04 20 +E6 0C D0 02 E6 0C A5 0C A6 0D 20 C4 FC A9 04 20 10 F1 60 48 A9 FF 20 3F F2 A9 00 20 33 F2 A9 FF 20 3F F2 68 20 CE F0 20 EB F0 A8 A9 FF 20 3F F2 A9 00 20 39 F2 A9 FF 20 3F F2 98 A2 00 60 A9 00 20 39 F2 20 8B F1 A9 FF 20 3F F2 A9 00 20 39 F2 A2 50 A9 FF 20 3F F2 CA D0 F8 60 A2 01 A9 C8 3A -D0 FD CA D0 F8 60 85 0E 86 0F A9 FF 92 0E 20 96 -FC A5 04 85 10 A5 05 85 11 20 C7 FA A0 00 B1 10 +D0 FD CA D0 F8 60 85 0E 86 0F A9 FF 92 0E 20 97 +FC A5 04 85 10 A5 05 85 11 20 C8 FA A0 00 B1 10 91 04 C8 B1 10 91 04 C8 B1 10 91 04 C8 B1 10 91 04 A9 FF 20 3F F2 A9 00 20 33 F2 A9 FF 20 3F F2 A9 11 A0 04 91 04 A9 00 20 CE F0 20 EB F0 C9 FF @@ -37,90 +37,90 @@ EB A9 FF 20 3F F2 A9 FF 20 3F F2 A5 15 92 0E A5 F2 68 60 A9 01 8D DB EF 60 9C DB EF 60 A9 00 8D DA EF AD DB EF 30 FB AD D9 EF 60 8D E6 EF 60 48 8D E6 EF AD E7 EF 89 02 D0 F9 68 60 AD E6 EF A2 -00 60 AD E7 EF A2 00 60 60 20 EA FA A2 00 86 06 -86 07 A9 00 20 81 FB 20 D0 FA A9 FC A2 FD 20 90 -FA 20 31 F3 C9 00 20 2E FC D0 03 4C 98 F2 A9 F5 -A2 FD 20 90 FA 4C 25 F3 A9 EC A2 FD 20 90 FA A0 -05 20 3D FB 20 81 FB AD 00 92 AE 01 92 20 C3 FC -A9 0C 20 4E FB 20 96 F1 A0 07 91 04 A0 07 A2 00 -B1 04 C9 00 20 34 FC D0 03 4C DC F2 A0 06 A2 00 -B1 04 C9 FE 20 34 FC F0 03 4C E5 F2 A2 00 A9 00 +00 60 AD E7 EF A2 00 60 60 20 EB FA A2 00 86 06 +86 07 A9 00 20 82 FB 20 D1 FA A9 FD A2 FD 20 91 +FA 20 31 F3 C9 00 20 2F FC D0 03 4C 98 F2 A9 F6 +A2 FD 20 91 FA 4C 25 F3 A9 ED A2 FD 20 91 FA A0 +05 20 3E FB 20 82 FB AD 00 92 AE 01 92 20 C4 FC +A9 0C 20 4F FB 20 96 F1 A0 07 91 04 A0 07 A2 00 +B1 04 C9 00 20 35 FC D0 03 4C DC F2 A0 06 A2 00 +B1 04 C9 FE 20 35 FC F0 03 4C E5 F2 A2 00 A9 00 D0 03 4C E9 F2 A2 00 A9 01 D0 03 4C F1 F2 4C 22 -F3 A0 06 A2 00 B1 04 A2 00 29 F0 20 15 FA D0 03 -4C 0D F3 A9 F5 A2 FD 20 90 FA 4C 22 F3 A9 DD A2 -FD 20 C3 FC A0 08 A2 00 B1 04 20 C3 FC A0 04 20 -5C FA 6C 00 92 4C 28 F3 4C 28 F3 A0 0C 20 FB F9 -60 20 F7 FA A9 00 20 AD FC 20 6E F1 4C 68 F3 A0 +F3 A0 06 A2 00 B1 04 A2 00 29 F0 20 16 FA D0 03 +4C 0D F3 A9 F6 A2 FD 20 91 FA 4C 22 F3 A9 DE A2 +FD 20 C4 FC A0 08 A2 00 B1 04 20 C4 FC A0 04 20 +5D FA 6C 00 92 4C 28 F3 4C 28 F3 A0 0C 20 FC F9 +60 20 F8 FA A9 00 20 AE FC 20 6E F1 4C 68 F3 A0 00 A2 00 18 A9 01 71 04 91 04 A0 00 A2 00 B1 04 -C9 FF 20 34 FC D0 03 4C 68 F3 A9 1B A2 FE 20 90 +C9 FF 20 35 FC D0 03 4C 68 F3 A9 1C A2 FE 20 91 FA A2 00 A9 01 4C 1E F4 20 22 F4 A0 01 91 04 C9 -01 20 2E FC D0 C9 A9 01 20 4E FB 20 3F F4 A0 01 -A2 00 B1 04 C9 01 20 2E FC D0 03 4C 9C F3 A9 12 -A2 FE 20 90 FA A2 00 A9 01 4C 1E F4 A0 05 A2 00 -B1 04 C9 AA 20 2E FC D0 03 4C B3 F3 A2 00 A9 01 +01 20 2F FC D0 C9 A9 01 20 4F FB 20 3F F4 A0 01 +A2 00 B1 04 C9 01 20 2F FC D0 03 4C 9C F3 A9 13 +A2 FE 20 91 FA A2 00 A9 01 4C 1E F4 A0 05 A2 00 +B1 04 C9 AA 20 2F FC D0 03 4C B3 F3 A2 00 A9 01 4C 1E F4 A2 00 A9 00 A0 00 91 04 A0 00 A2 00 B1 -04 C9 FF 20 34 FC D0 03 4C D9 F3 A9 03 A2 FE 20 -90 FA A2 00 A9 01 4C 1E F4 20 61 F5 A0 01 91 04 -A0 01 A2 00 B1 04 C9 02 20 4D FC D0 03 4C F7 F3 +04 C9 FF 20 35 FC D0 03 4C D9 F3 A9 04 A2 FE 20 +91 FA A2 00 A9 01 4C 1E F4 20 61 F5 A0 01 91 04 +A0 01 A2 00 B1 04 C9 02 20 4E FC D0 03 4C F7 F3 20 7E F5 A0 01 91 04 A0 00 A2 00 18 A9 01 71 04 -91 04 A0 01 A2 00 B1 04 C9 00 20 2E FC D0 AC A9 -01 20 4E FB 20 E7 F4 A2 00 A9 00 4C 1E F4 20 24 -FB 60 A2 00 A9 00 20 AD FC A2 00 86 06 86 07 A9 -00 20 81 FB A2 00 A9 94 20 43 F1 4C 3E F4 60 20 -C3 FC A2 00 A9 FF 20 3F F2 A2 00 A9 00 20 33 F2 -A2 00 A9 FF 20 3F F2 A2 00 A9 08 20 AD FC A2 01 -A9 00 85 06 A9 00 85 07 A9 AA 20 81 FB A2 00 A9 -86 20 CE F0 A0 01 20 34 FB 20 25 F1 A2 00 A9 FF +91 04 A0 01 A2 00 B1 04 C9 00 20 2F FC D0 AC A9 +01 20 4F FB 20 E7 F4 A2 00 A9 00 4C 1E F4 20 25 +FB 60 A2 00 A9 00 20 AE FC A2 00 86 06 86 07 A9 +00 20 82 FB A2 00 A9 94 20 43 F1 4C 3E F4 60 20 +C4 FC A2 00 A9 FF 20 3F F2 A2 00 A9 00 20 33 F2 +A2 00 A9 FF 20 3F F2 A2 00 A9 08 20 AE FC A2 01 +A9 00 85 06 A9 00 85 07 A9 AA 20 82 FB A2 00 A9 +86 20 CE F0 A0 01 20 35 FB 20 25 F1 A2 00 A9 FF 20 3F F2 A2 00 A9 00 20 39 F2 A2 00 A9 FF 20 3F -F2 20 0C FB 60 20 C3 FC A2 00 A9 FF 20 3F F2 A2 +F2 20 0D FB 60 20 C4 FC A2 00 A9 FF 20 3F F2 A2 00 A9 00 20 33 F2 A2 00 A9 FF 20 3F F2 A2 00 A9 -0D 20 AD FC A2 00 86 06 86 07 A9 00 20 81 FB A2 -00 A9 00 20 CE F0 A0 01 20 34 FB 20 FA F0 A2 00 +0D 20 AE FC A2 00 86 06 86 07 A9 00 20 82 FB A2 +00 A9 00 20 CE F0 A0 01 20 35 FB 20 FA F0 A2 00 A9 FF 20 3F F2 A2 00 A9 00 20 39 F2 A2 00 A9 FF -20 3F F2 20 0C FB 60 20 C3 FC 20 C7 FA A2 00 A9 +20 3F F2 20 0D FB 60 20 C4 FC 20 C8 FA A2 00 A9 FF 20 3F F2 A2 00 A9 00 20 33 F2 A2 00 A9 FF 20 -3F F2 A0 00 91 04 A0 00 A2 00 B1 04 C9 FF 20 2E +3F F2 A0 00 91 04 A0 00 A2 00 B1 04 C9 FF 20 2F FC D0 03 4C 27 F5 4C 19 F5 A2 00 A9 FF 20 3F F2 -C9 FF 20 2E FC D0 F2 A2 00 A9 3A 20 AD FC A2 00 -86 06 86 07 A9 00 20 81 FB A2 00 A9 00 20 CE F0 -A0 02 20 34 FB 20 25 F1 A2 00 A9 FF 20 3F F2 A2 -00 A9 00 20 39 F2 A2 00 A9 FF 20 3F F2 20 1A FB -60 A2 00 A9 37 20 AD FC A2 00 86 06 86 07 A9 00 -20 81 FB A2 00 A9 00 20 43 F1 4C 7D F5 60 A2 00 -A9 29 20 AD FC A2 00 86 06 A9 40 85 07 A9 00 20 -81 FB A2 00 A9 00 20 43 F1 4C 9C F5 60 20 C3 FC -20 EA FA A0 03 A2 00 B1 04 4C AC F5 A0 0E 20 FB -F9 60 20 C3 FC A9 00 20 AD FC 20 D0 FA A2 00 A9 -00 A0 00 20 DB FC A0 01 20 34 FB E0 02 20 4D FC -F0 03 4C D8 F5 4C 3A F6 A9 24 A2 FE 20 C3 FC A0 -06 20 34 FB A0 00 20 29 FB 20 C3 FC A0 07 A2 00 -A9 01 20 EB F9 A0 04 20 5C FA A0 02 A2 00 B1 04 -C9 1F 20 34 FC D0 03 4C 1C F6 A9 28 A2 FE 20 90 +C9 FF 20 2F FC D0 F2 A2 00 A9 3A 20 AE FC A2 00 +86 06 86 07 A9 00 20 82 FB A2 00 A9 00 20 CE F0 +A0 02 20 35 FB 20 25 F1 A2 00 A9 FF 20 3F F2 A2 +00 A9 00 20 39 F2 A2 00 A9 FF 20 3F F2 20 1B FB +60 A2 00 A9 37 20 AE FC A2 00 86 06 86 07 A9 00 +20 82 FB A2 00 A9 00 20 43 F1 4C 7D F5 60 A2 00 +A9 29 20 AE FC A2 00 86 06 A9 40 85 07 A9 00 20 +82 FB A2 00 A9 00 20 43 F1 4C 9C F5 60 20 C4 FC +20 EB FA A0 03 A2 00 B1 04 4C AC F5 A0 0E 20 FC +F9 60 20 C4 FC A9 00 20 AE FC 20 D1 FA A2 00 A9 +00 A0 00 20 DC FC A0 01 20 35 FB E0 02 20 4E FC +F0 03 4C D8 F5 4C 3A F6 A9 25 A2 FE 20 C4 FC A0 +06 20 35 FB A0 00 20 2A FB 20 C4 FC A0 07 A2 00 +A9 01 20 EC F9 A0 04 20 5D FA A0 02 A2 00 B1 04 +C9 1F 20 35 FC D0 03 4C 1C F6 A9 29 A2 FE 20 91 FA A2 00 A9 00 A0 02 91 04 4C 2E F6 A2 00 A9 20 20 68 F0 A0 02 A2 00 18 A9 01 71 04 91 04 A0 00 -A2 00 A9 01 20 EB F9 4C C6 F5 A9 28 A2 FE 20 90 -FA 20 1F FB 60 A0 00 B1 1A E6 1A D0 02 E6 1B 60 -AD 4A 92 8D 45 92 20 F1 F6 A9 45 A2 92 20 C3 FC -20 A4 FC 4C 02 92 A5 18 38 E9 02 85 18 B0 02 C6 -19 60 AD 4F 92 D0 11 20 8F F6 4C 0E FA AD 4F 92 -D0 06 20 8F F6 4C 08 FA 20 8F F6 85 06 86 07 20 +A2 00 A9 01 20 EC F9 4C C6 F5 A9 29 A2 FE 20 91 +FA 20 20 FB 60 A0 00 B1 1A E6 1A D0 02 E6 1B 60 +AD 4A 92 8D 45 92 20 F1 F6 A9 45 A2 92 20 C4 FC +20 A5 FC 4C 02 92 A5 18 38 E9 02 85 18 B0 02 C6 +19 60 AD 4F 92 D0 11 20 8F F6 4C 0F FA AD 4F 92 +D0 06 20 8F F6 4C 09 FA 20 8F F6 85 06 86 07 20 66 F6 A0 01 B1 18 AA 88 B1 18 60 A0 00 84 0C 84 0D B1 1A 38 E9 30 90 2C C9 0A B0 28 20 49 F6 48 A5 0C A6 0D 06 0C 26 0D 06 0C 26 0D 65 0C 85 0C 8A 65 0D 85 0D 06 0C 26 0D 68 65 0C 85 0C 90 D1 E6 0D B0 CD A5 0C A6 0D 60 AC 51 92 EE 51 92 99 -52 92 60 A9 52 A2 92 18 6D 51 92 90 01 E8 4C C3 -FC A5 1C A6 1D 4C C3 FC 20 50 F6 EE 4B 92 D0 F8 +52 92 60 A9 52 A2 92 18 6D 51 92 90 01 E8 4C C4 +FC A5 1C A6 1D 4C C4 FC 20 50 F6 EE 4B 92 D0 F8 EE 4C 92 D0 F3 60 20 F1 F6 AD 66 92 AE 67 92 20 -C3 FC AD 68 92 AE 69 92 20 C3 FC 4C 02 92 84 0C -20 81 FB 20 E3 F6 A5 0C 4C B1 FB 84 0C 20 81 FB -20 E3 F6 A5 0C 4C F2 FB 48 A0 05 B9 18 00 99 3F -92 88 10 F7 68 85 18 86 19 20 04 FB 85 1A 86 1B -20 04 FB 85 1C 86 1D A9 00 A8 91 1C C8 91 1C C8 +C4 FC AD 68 92 AE 69 92 20 C4 FC 4C 02 92 84 0C +20 82 FB 20 E3 F6 A5 0C 4C B2 FB 84 0C 20 82 FB +20 E3 F6 A5 0C 4C F3 FB 48 A0 05 B9 18 00 99 3F +92 88 10 F7 68 85 18 86 19 20 05 FB 85 1A 86 1B +20 05 FB 85 1C 86 1D A9 00 A8 91 1C C8 91 1C C8 B1 1C 8D 03 92 C8 B1 1C 8D 04 92 A5 1A 85 0C A5 1B 85 0D A0 00 B1 1A F0 0B C9 25 F0 07 C8 D0 F5 E6 1B D0 F1 98 18 65 1A 85 1A 90 02 E6 1B 38 E5 -0C 85 0E A5 1B E5 0D 85 0F 05 0E F0 25 20 EA FA +0C 85 0E A5 1B E5 0D 85 0F 05 0E F0 25 20 EB FA A0 05 A5 1D 91 04 88 A5 1C 91 04 88 A5 0D 91 04 88 A5 0C 91 04 88 A5 0F 91 04 88 A5 0E 91 04 20 02 92 20 45 F6 AA D0 0B A2 05 BD 3F 92 95 18 CA @@ -136,103 +136,103 @@ C9 2A D0 09 20 49 F6 20 8F F6 4C 60 F8 20 9B F6 8D 4D 92 8E 4E 92 B1 1A C9 7A F0 19 C9 68 F0 15 C9 74 F0 11 C9 6A F0 08 C9 4C F0 04 C9 6C D0 0B A9 FF 8D 4F 92 20 49 F6 4C 66 F8 8C 51 92 A2 52 -8E 66 92 A2 92 8E 67 92 20 49 F6 C9 63 D0 0D 20 -8F F6 8D 52 92 A2 00 A9 01 4C 92 F9 C9 64 F0 04 -C9 69 D0 2D A2 00 AD 48 92 F0 02 A2 20 AD 47 92 -F0 02 A2 2B 8E 50 92 20 7D F6 A4 07 30 0B AC 50 -92 F0 06 8C 52 92 EE 51 92 A0 0A 20 1E F7 4C 89 -F9 C9 6E D0 15 20 8F F6 85 0C 86 0D A0 00 B1 1C -91 0C C8 B1 1C 91 0C 4C 6B F7 C9 6F D0 27 20 7D -F6 AC 49 92 F0 17 48 86 14 05 14 05 06 05 07 0D -4D 92 0D 4E 92 F0 06 A9 30 20 D9 F6 68 A0 08 20 -1E F7 4C 89 F9 C9 70 D0 0D A2 00 8E 4F 92 E8 8E -49 92 A9 78 D0 27 C9 73 D0 0C 20 8F F6 8D 66 92 -8E 67 92 4C 89 F9 C9 75 D0 0B 20 72 F6 A0 0A 20 -2B F7 4C 89 F9 C9 78 F0 04 C9 58 D0 29 48 AD 49 -92 F0 0A A9 30 20 D9 F6 A9 58 20 D9 F6 20 72 F6 -A0 10 20 2B F7 68 C9 78 D0 09 AD 66 92 AE 67 92 -20 1B FD 4C 89 F9 4C 6B F7 AD 66 92 AE 67 92 20 -05 FD 8D 68 92 8E 69 92 AD 4D 92 0D 4E 92 F0 15 -AE 4D 92 EC 68 92 AD 4E 92 A8 ED 69 92 B0 06 8E -68 92 8C 69 92 38 AD 4B 92 ED 68 92 AA AD 4C 92 -ED 69 92 B0 03 A9 00 AA 49 FF 8D 4C 92 8A 49 FF -8D 4B 92 AD 46 92 D0 03 20 FB F6 20 06 F7 AD 46 -92 F0 03 20 FB F6 4C 6B F7 A0 00 18 71 04 91 04 -48 C8 8A 71 04 91 04 AA 68 60 C8 48 18 98 65 04 -85 04 90 02 E6 05 68 60 A0 FF E0 80 B0 02 A0 00 -84 06 84 07 60 E0 00 D0 06 AA D0 03 A9 01 60 A2 -00 8A 60 A0 00 F0 07 A9 52 A2 F0 4C 05 92 60 A9 -00 85 0C A9 F0 85 0D A9 00 85 0E A9 92 85 0F A2 -CD A9 FF 85 14 A0 00 E8 F0 0D B1 0C 91 0E C8 D0 -F6 E6 0D E6 0F D0 F0 E6 14 D0 EF 60 8C 6A 92 88 -88 98 18 65 04 85 0C A6 05 90 01 E8 86 0D A0 01 -B1 0C AA 88 B1 0C 20 C3 FC A5 0C A6 0D 20 8A FD -AC 6A 92 4C FB F9 85 0C 86 0D 20 75 F0 4C 94 FA -85 0C 86 0D A0 00 B1 0C F0 0E C8 84 14 20 68 F0 -A4 14 D0 F2 E6 0D D0 EE 60 E0 00 D0 15 4A AA BD -51 FE 90 05 4A 4A 4A 4A 18 29 0F AA BD 46 FE A2 -00 60 38 A9 00 AA 60 A4 04 D0 02 C6 05 C6 04 60 -A5 04 38 E9 02 85 04 90 01 60 C6 05 60 A5 04 38 -E9 04 85 04 90 01 60 C6 05 60 A5 04 38 E9 06 85 -04 90 01 60 C6 05 60 A5 04 38 E9 07 85 04 90 01 -60 C6 05 60 A0 01 B1 04 AA 88 B1 04 E6 04 F0 05 -E6 04 F0 03 60 E6 04 E6 05 60 A0 03 4C FB F9 A0 -05 4C FB F9 A0 08 4C FB F9 85 0C 86 0D A2 00 B1 -0C 60 A0 01 B1 04 AA 88 B1 04 60 A0 03 B1 04 85 -07 88 B1 04 85 06 88 B1 04 AA 88 B1 04 60 A2 00 -18 65 04 48 8A 65 05 AA 68 60 18 49 FF 69 01 48 -8A 49 FF 69 00 AA A5 06 49 FF 69 00 85 06 A5 07 -49 FF 69 00 85 07 68 60 A9 00 AA A0 00 84 06 84 -07 48 20 DD FA A0 03 A5 07 91 04 88 A5 06 91 04 -88 8A 91 04 68 88 91 04 60 85 14 20 04 FB 85 0E -86 0F 85 10 86 11 20 96 FC 20 04 FB 85 06 86 07 -60 20 99 FB A6 07 A4 14 C0 0A D0 39 A5 06 05 0D -05 0C D0 11 E0 80 D0 0D A0 0B B9 3A FE 91 0E 88 -10 F8 4C 29 FC 8A 10 1D A9 2D A0 00 91 0E E6 0E -D0 02 E6 0F A5 0C A6 0D 20 5A FB 85 0C 86 0D 4C -F5 FB 20 99 FB A9 00 48 A0 20 A9 00 06 0C 26 0D -26 06 26 07 2A C5 14 90 04 E5 14 E6 0C 88 D0 EC -A8 B9 2A FE 48 A5 0C 05 0D 05 06 05 07 D0 D9 A0 -00 68 91 0E F0 03 C8 D0 F8 A5 10 A6 11 60 D0 06 -A2 00 8A 60 D0 FA A2 00 A9 01 60 F0 F9 30 F7 A2 -00 8A 60 F0 02 10 EF A2 00 8A 60 F0 E9 90 E7 A2 -00 8A 60 F0 DB A2 00 8A 2A 60 20 83 FC A6 11 F0 -13 B1 0C 91 0E C8 B1 0C 91 0E C8 D0 F4 E6 0D E6 -0F CA D0 ED A6 10 F0 08 B1 0C 91 0E C8 CA D0 F8 -4C 04 FB 85 10 86 11 20 96 FC C8 B1 04 AA 86 0F -88 B1 04 85 0E 60 A0 01 B1 04 85 0D 88 B1 04 85 -0C 4C 0C FB A9 01 4C C1 FC A0 00 B1 04 A4 04 F0 -07 C6 04 A0 00 91 04 60 C6 05 C6 04 91 04 60 A9 -00 A2 00 48 A5 04 38 E9 02 85 04 B0 02 C6 05 A0 -01 8A 91 04 68 88 91 04 60 A0 00 91 04 C8 48 8A -91 04 68 60 85 0E 86 0F 20 96 FC B1 0C D1 0E D0 -0C AA F0 10 C8 D0 F4 E6 0D E6 0F D0 EE B0 03 A2 -FF 60 A2 01 60 85 0E 86 0F A2 00 A0 00 B1 0E F0 -08 C8 D0 F9 E6 0F E8 D0 F4 98 60 85 0C 86 0D 85 -0E 86 0F A0 00 B1 0C F0 14 20 AD FA 29 02 F0 06 -B1 0C 69 20 91 0C C8 D0 EC E6 0D D0 E8 A5 0E A6 -0F 60 20 04 FB 85 0E 86 0F E8 8E 31 92 AA E8 8E -30 92 20 96 FC 20 04 FB 85 10 86 11 A0 00 84 14 -B1 10 18 65 0E 91 10 C8 B1 10 65 0F 91 10 CE 30 -92 F0 11 A4 14 B1 0C C8 D0 02 E6 0D 84 14 20 68 -F0 4C 6E FD CE 31 92 D0 EA 60 85 0C 86 0D A9 00 -8D 2A 92 8D 2B 92 A0 01 B1 04 AA 88 B1 04 20 C3 -FC A0 02 A9 2A 91 04 C8 A9 92 91 04 A5 0C A6 0D -20 38 F7 AD 2A 92 AE 2B 92 60 A9 32 85 0C A9 92 -85 0D A9 00 A8 A2 00 F0 0A 91 0C C8 D0 FB E6 0D -CA D0 F6 C0 39 F0 05 91 0C C8 D0 F7 60 62 61 64 -20 74 6F 6B 65 6E 3A 20 25 78 0A 00 53 75 63 63 -65 73 73 0A 00 45 72 72 6F 72 0A 00 53 74 61 72 -74 0A 00 6F 70 5F 63 6F 6E 64 20 65 72 72 6F 72 -0A 00 49 46 20 43 6F 6E 64 0A 00 47 6F 20 49 44 -4C 45 0A 00 25 32 78 00 0A 00 30 31 32 33 34 35 -36 37 38 39 41 42 43 44 45 46 2D 32 31 34 37 34 -38 33 36 34 38 00 00 01 02 0C 09 0A 10 40 50 A0 -D0 66 66 66 66 A6 88 88 66 66 66 66 66 66 66 66 -66 09 00 00 00 00 00 00 00 33 33 33 33 33 00 00 -00 50 55 55 25 22 22 22 22 22 22 22 22 22 02 00 -00 40 44 44 14 11 11 11 11 11 11 11 11 11 01 00 -70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +8E 66 92 A2 92 8E 67 92 20 49 F6 C9 63 D0 0E 20 +8F F6 8D 52 92 A9 00 8D 53 92 4C 8A F9 C9 64 F0 +04 C9 69 D0 2D A2 00 AD 48 92 F0 02 A2 20 AD 47 +92 F0 02 A2 2B 8E 50 92 20 7D F6 A4 07 30 0B AC +50 92 F0 06 8C 52 92 EE 51 92 A0 0A 20 1E F7 4C +8A F9 C9 6E D0 15 20 8F F6 85 0C 86 0D A0 00 B1 +1C 91 0C C8 B1 1C 91 0C 4C 6B F7 C9 6F D0 27 20 +7D F6 AC 49 92 F0 17 48 86 14 05 14 05 06 05 07 +0D 4D 92 0D 4E 92 F0 06 A9 30 20 D9 F6 68 A0 08 +20 1E F7 4C 8A F9 C9 70 D0 0D A2 00 8E 4F 92 E8 +8E 49 92 A9 78 D0 27 C9 73 D0 0C 20 8F F6 8D 66 +92 8E 67 92 4C 8A F9 C9 75 D0 0B 20 72 F6 A0 0A +20 2B F7 4C 8A F9 C9 78 F0 04 C9 58 D0 29 48 AD +49 92 F0 0A A9 30 20 D9 F6 A9 58 20 D9 F6 20 72 +F6 A0 10 20 2B F7 68 C9 78 D0 09 AD 66 92 AE 67 +92 20 1C FD 4C 8A F9 4C 6B F7 AD 66 92 AE 67 92 +20 06 FD 8D 68 92 8E 69 92 AD 4D 92 0D 4E 92 F0 +15 AE 4D 92 EC 68 92 AD 4E 92 A8 ED 69 92 B0 06 +8E 68 92 8C 69 92 38 AD 4B 92 ED 68 92 AA AD 4C +92 ED 69 92 B0 03 A9 00 AA 49 FF 8D 4C 92 8A 49 +FF 8D 4B 92 AD 46 92 D0 03 20 FB F6 20 06 F7 AD +46 92 F0 03 20 FB F6 4C 6B F7 A0 00 18 71 04 91 +04 48 C8 8A 71 04 91 04 AA 68 60 C8 48 18 98 65 +04 85 04 90 02 E6 05 68 60 A0 FF E0 80 B0 02 A0 +00 84 06 84 07 60 E0 00 D0 06 AA D0 03 A9 01 60 +A2 00 8A 60 A0 00 F0 07 A9 52 A2 F0 4C 05 92 60 +A9 00 85 0C A9 F0 85 0D A9 00 85 0E A9 92 85 0F +A2 CD A9 FF 85 14 A0 00 E8 F0 0D B1 0C 91 0E C8 +D0 F6 E6 0D E6 0F D0 F0 E6 14 D0 EF 60 8C 6A 92 +88 88 98 18 65 04 85 0C A6 05 90 01 E8 86 0D A0 +01 B1 0C AA 88 B1 0C 20 C4 FC A5 0C A6 0D 20 8B +FD AC 6A 92 4C FC F9 85 0C 86 0D 20 75 F0 4C 95 +FA 85 0C 86 0D A0 00 B1 0C F0 0E C8 84 14 20 68 +F0 A4 14 D0 F2 E6 0D D0 EE 60 E0 00 D0 15 4A AA +BD 52 FE 90 05 4A 4A 4A 4A 18 29 0F AA BD 47 FE +A2 00 60 38 A9 00 AA 60 A4 04 D0 02 C6 05 C6 04 +60 A5 04 38 E9 02 85 04 90 01 60 C6 05 60 A5 04 +38 E9 04 85 04 90 01 60 C6 05 60 A5 04 38 E9 06 +85 04 90 01 60 C6 05 60 A5 04 38 E9 07 85 04 90 +01 60 C6 05 60 A0 01 B1 04 AA 88 B1 04 E6 04 F0 +05 E6 04 F0 03 60 E6 04 E6 05 60 A0 03 4C FC F9 +A0 05 4C FC F9 A0 08 4C FC F9 85 0C 86 0D A2 00 +B1 0C 60 A0 01 B1 04 AA 88 B1 04 60 A0 03 B1 04 +85 07 88 B1 04 85 06 88 B1 04 AA 88 B1 04 60 A2 +00 18 65 04 48 8A 65 05 AA 68 60 18 49 FF 69 01 +48 8A 49 FF 69 00 AA A5 06 49 FF 69 00 85 06 A5 +07 49 FF 69 00 85 07 68 60 A9 00 AA A0 00 84 06 +84 07 48 20 DE FA A0 03 A5 07 91 04 88 A5 06 91 +04 88 8A 91 04 68 88 91 04 60 85 14 20 05 FB 85 +0E 86 0F 85 10 86 11 20 97 FC 20 05 FB 85 06 86 +07 60 20 9A FB A6 07 A4 14 C0 0A D0 39 A5 06 05 +0D 05 0C D0 11 E0 80 D0 0D A0 0B B9 3B FE 91 0E +88 10 F8 4C 2A FC 8A 10 1D A9 2D A0 00 91 0E E6 +0E D0 02 E6 0F A5 0C A6 0D 20 5B FB 85 0C 86 0D +4C F6 FB 20 9A FB A9 00 48 A0 20 A9 00 06 0C 26 +0D 26 06 26 07 2A C5 14 90 04 E5 14 E6 0C 88 D0 +EC A8 B9 2B FE 48 A5 0C 05 0D 05 06 05 07 D0 D9 +A0 00 68 91 0E F0 03 C8 D0 F8 A5 10 A6 11 60 D0 +06 A2 00 8A 60 D0 FA A2 00 A9 01 60 F0 F9 30 F7 +A2 00 8A 60 F0 02 10 EF A2 00 8A 60 F0 E9 90 E7 +A2 00 8A 60 F0 DB A2 00 8A 2A 60 20 84 FC A6 11 +F0 13 B1 0C 91 0E C8 B1 0C 91 0E C8 D0 F4 E6 0D +E6 0F CA D0 ED A6 10 F0 08 B1 0C 91 0E C8 CA D0 +F8 4C 05 FB 85 10 86 11 20 97 FC C8 B1 04 AA 86 +0F 88 B1 04 85 0E 60 A0 01 B1 04 85 0D 88 B1 04 +85 0C 4C 0D FB A9 01 4C C2 FC A0 00 B1 04 A4 04 +F0 07 C6 04 A0 00 91 04 60 C6 05 C6 04 91 04 60 +A9 00 A2 00 48 A5 04 38 E9 02 85 04 B0 02 C6 05 +A0 01 8A 91 04 68 88 91 04 60 A0 00 91 04 C8 48 +8A 91 04 68 60 85 0E 86 0F 20 97 FC B1 0C D1 0E +D0 0C AA F0 10 C8 D0 F4 E6 0D E6 0F D0 EE B0 03 +A2 FF 60 A2 01 60 85 0E 86 0F A2 00 A0 00 B1 0E +F0 08 C8 D0 F9 E6 0F E8 D0 F4 98 60 85 0C 86 0D +85 0E 86 0F A0 00 B1 0C F0 14 20 AE FA 29 02 F0 +06 B1 0C 69 20 91 0C C8 D0 EC E6 0D D0 E8 A5 0E +A6 0F 60 20 05 FB 85 0E 86 0F E8 8E 31 92 AA E8 +8E 30 92 20 97 FC 20 05 FB 85 10 86 11 A0 00 84 +14 B1 10 18 65 0E 91 10 C8 B1 10 65 0F 91 10 CE +30 92 F0 11 A4 14 B1 0C C8 D0 02 E6 0D 84 14 20 +68 F0 4C 6F FD CE 31 92 D0 EA 60 85 0C 86 0D A9 +00 8D 2A 92 8D 2B 92 A0 01 B1 04 AA 88 B1 04 20 +C4 FC A0 02 A9 2A 91 04 C8 A9 92 91 04 A5 0C A6 +0D 20 38 F7 AD 2A 92 AE 2B 92 60 A9 32 85 0C A9 +92 85 0D A9 00 A8 A2 00 F0 0A 91 0C C8 D0 FB E6 +0D CA D0 F6 C0 39 F0 05 91 0C C8 D0 F7 60 62 61 +64 20 74 6F 6B 65 6E 3A 20 25 78 0A 00 53 75 63 +63 65 73 73 0A 00 45 72 72 6F 72 0A 00 53 74 61 +72 74 0A 00 6F 70 5F 63 6F 6E 64 20 65 72 72 6F +72 0A 00 49 46 20 43 6F 6E 64 0A 00 47 6F 20 49 +44 4C 45 0A 00 25 32 78 00 0A 00 30 31 32 33 34 +35 36 37 38 39 41 42 43 44 45 46 2D 32 31 34 37 +34 38 33 36 34 38 00 00 01 02 0C 09 0A 10 40 50 +A0 D0 66 66 66 66 A6 88 88 66 66 66 66 66 66 66 +66 66 09 00 00 00 00 00 00 00 33 33 33 33 33 00 +00 00 50 55 55 25 22 22 22 22 22 22 22 22 22 02 +00 00 40 44 44 14 11 11 11 11 11 11 11 11 11 01 +00 70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 diff --git a/sw/bios/bootloader.s b/sw/bios/bootloader.s index 4cfd084..ccaea42 100644 --- a/sw/bios/bootloader.s +++ b/sw/bios/bootloader.s @@ -118,10 +118,14 @@ _main: sec sbc #$02 ; don't handle carry, assume low byte is not 0 or 1 + sta tmp1 ldx data_start + 1 ; load x as high data start - asl ; multiply cluster num (minus 2) by 8 - asl - asl + phx + ldx sectors_per_cluster ; multiply cluster num (minus 2) by sectors_per_cluster +@4: adc tmp1 + dex + bne @4 + plx clc adc data_start ; add that to low data start bcc @3 ; handle carry From 6fabd23125b23c2a309300172a0e0bcce7546b62 Mon Sep 17 00:00:00 2001 From: Byron Lathi Date: Wed, 25 Oct 2023 18:56:15 -0700 Subject: [PATCH 03/16] Change boot2 to use new offsets as well --- sw/bios/boot2.s | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/sw/bios/boot2.s b/sw/bios/boot2.s index c80291b..7a03670 100644 --- a/sw/bios/boot2.s +++ b/sw/bios/boot2.s @@ -159,9 +159,12 @@ _start: sec sbc #$02 ; don't handle carry, assume low byte is not 0 or 1 ldx data_start + 1 ; load x as high data start - asl ; multiply cluster num (minus 2) by 8 - asl - asl + phx + ldx sectors_per_cluster ; multiply cluster num (minus 2) by sectors_per_cluster +@4: adc tmp1 + dex + bne @4 + plx clc adc data_start ; add that to low data start bcc @5 ; handle carry From 6f36d2fcc4bf7e6d7043edd54fa34bf30f99ebd5 Mon Sep 17 00:00:00 2001 From: Byron Lathi Date: Wed, 25 Oct 2023 20:39:55 -0700 Subject: [PATCH 04/16] Fix off by 1 error --- hw/efinix_fpga/init_hex.mem | 338 ++++++++++++++++++------------------ sw/bios/boot2.s | 7 +- sw/bios/bootloader.s | 2 + 3 files changed, 176 insertions(+), 171 deletions(-) diff --git a/hw/efinix_fpga/init_hex.mem b/hw/efinix_fpga/init_hex.mem index 6e2da2b..0fea330 100644 --- a/hw/efinix_fpga/init_hex.mem +++ b/hw/efinix_fpga/init_hex.mem @@ -1,9 +1,9 @@ @00000000 00 80 4C 00 00 8D 13 92 8E 14 92 8D 1A 92 8E 1B 92 88 B9 FF FF 8D 24 92 88 B9 FF FF 8D 23 92 8C -26 92 20 FF FF A0 FF D0 E8 60 00 00 43 FD 00 00 -00 00 A2 FF 9A D8 A9 00 85 04 A9 DF 85 05 20 BB -FD 20 30 FA 20 52 F0 58 20 69 F2 6C FC FF 20 24 +26 92 20 FF FF A0 FF D0 E8 60 00 00 42 FD 00 00 +00 00 A2 FF 9A D8 A9 00 85 04 A9 DF 85 05 20 BA +FD 20 2F FA 20 52 F0 58 20 69 F2 6C FC FF 20 23 FA 00 A0 00 F0 07 A9 52 A2 F0 4C 05 92 60 AD FF EF A2 00 60 8D FF EF 60 20 4F F2 C9 0A D0 05 A9 0D 20 4F F2 60 DA 5A A8 B2 04 AA A9 1B 20 4F F2 @@ -13,19 +13,19 @@ A9 63 20 4F F2 68 60 40 DA BA 48 E8 E8 BD 00 01 29 10 D0 06 68 FA 20 68 F2 40 68 FA 7C BF F0 C5 F0 C9 F0 CA F0 20 9A F0 40 40 20 68 F0 40 48 A0 04 B1 04 09 40 20 3F F2 88 B1 04 20 3F F2 88 10 -F8 68 09 01 20 3F F2 20 20 FB 60 A2 08 A9 FF 20 +F8 68 09 01 20 3F F2 20 1F FB 60 A2 08 A9 FF 20 3F F2 C9 FF D0 03 CA D0 F4 60 85 0C 86 0D 20 EB -F0 92 0C A9 FF 20 3F F2 A0 01 91 0C 20 0D FB 60 -AA 20 97 FC A9 FF 20 3F F2 92 0C E6 0C D0 02 E6 +F0 92 0C A9 FF 20 3F F2 A0 01 91 0C 20 0C FB 60 +AA 20 96 FC A9 FF 20 3F F2 92 0C E6 0C D0 02 E6 0D CA D0 F0 60 85 0C 86 0D 20 EB F0 C9 02 B0 12 -E6 0C D0 02 E6 0C A5 0C A6 0D 20 C4 FC A9 04 20 +E6 0C D0 02 E6 0C A5 0C A6 0D 20 C3 FC A9 04 20 10 F1 60 48 A9 FF 20 3F F2 A9 00 20 33 F2 A9 FF 20 3F F2 68 20 CE F0 20 EB F0 A8 A9 FF 20 3F F2 A9 00 20 39 F2 A9 FF 20 3F F2 98 A2 00 60 A9 00 20 39 F2 20 8B F1 A9 FF 20 3F F2 A9 00 20 39 F2 A2 50 A9 FF 20 3F F2 CA D0 F8 60 A2 01 A9 C8 3A -D0 FD CA D0 F8 60 85 0E 86 0F A9 FF 92 0E 20 97 -FC A5 04 85 10 A5 05 85 11 20 C8 FA A0 00 B1 10 +D0 FD CA D0 F8 60 85 0E 86 0F A9 FF 92 0E 20 96 +FC A5 04 85 10 A5 05 85 11 20 C7 FA A0 00 B1 10 91 04 C8 B1 10 91 04 C8 B1 10 91 04 C8 B1 10 91 04 A9 FF 20 3F F2 A9 00 20 33 F2 A9 FF 20 3F F2 A9 11 A0 04 91 04 A9 00 20 CE F0 20 EB F0 C9 FF @@ -37,90 +37,90 @@ EB A9 FF 20 3F F2 A9 FF 20 3F F2 A5 15 92 0E A5 F2 68 60 A9 01 8D DB EF 60 9C DB EF 60 A9 00 8D DA EF AD DB EF 30 FB AD D9 EF 60 8D E6 EF 60 48 8D E6 EF AD E7 EF 89 02 D0 F9 68 60 AD E6 EF A2 -00 60 AD E7 EF A2 00 60 60 20 EB FA A2 00 86 06 -86 07 A9 00 20 82 FB 20 D1 FA A9 FD A2 FD 20 91 -FA 20 31 F3 C9 00 20 2F FC D0 03 4C 98 F2 A9 F6 -A2 FD 20 91 FA 4C 25 F3 A9 ED A2 FD 20 91 FA A0 -05 20 3E FB 20 82 FB AD 00 92 AE 01 92 20 C4 FC -A9 0C 20 4F FB 20 96 F1 A0 07 91 04 A0 07 A2 00 -B1 04 C9 00 20 35 FC D0 03 4C DC F2 A0 06 A2 00 -B1 04 C9 FE 20 35 FC F0 03 4C E5 F2 A2 00 A9 00 +00 60 AD E7 EF A2 00 60 60 20 EA FA A2 00 86 06 +86 07 A9 00 20 81 FB 20 D0 FA A9 FC A2 FD 20 90 +FA 20 31 F3 C9 00 20 2E FC D0 03 4C 98 F2 A9 F5 +A2 FD 20 90 FA 4C 25 F3 A9 EC A2 FD 20 90 FA A0 +05 20 3D FB 20 81 FB AD 00 92 AE 01 92 20 C3 FC +A9 0C 20 4E FB 20 96 F1 A0 07 91 04 A0 07 A2 00 +B1 04 C9 00 20 34 FC D0 03 4C DC F2 A0 06 A2 00 +B1 04 C9 FE 20 34 FC F0 03 4C E5 F2 A2 00 A9 00 D0 03 4C E9 F2 A2 00 A9 01 D0 03 4C F1 F2 4C 22 -F3 A0 06 A2 00 B1 04 A2 00 29 F0 20 16 FA D0 03 -4C 0D F3 A9 F6 A2 FD 20 91 FA 4C 22 F3 A9 DE A2 -FD 20 C4 FC A0 08 A2 00 B1 04 20 C4 FC A0 04 20 -5D FA 6C 00 92 4C 28 F3 4C 28 F3 A0 0C 20 FC F9 -60 20 F8 FA A9 00 20 AE FC 20 6E F1 4C 68 F3 A0 +F3 A0 06 A2 00 B1 04 A2 00 29 F0 20 15 FA D0 03 +4C 0D F3 A9 F5 A2 FD 20 90 FA 4C 22 F3 A9 DD A2 +FD 20 C3 FC A0 08 A2 00 B1 04 20 C3 FC A0 04 20 +5C FA 6C 00 92 4C 28 F3 4C 28 F3 A0 0C 20 FB F9 +60 20 F7 FA A9 00 20 AD FC 20 6E F1 4C 68 F3 A0 00 A2 00 18 A9 01 71 04 91 04 A0 00 A2 00 B1 04 -C9 FF 20 35 FC D0 03 4C 68 F3 A9 1C A2 FE 20 91 +C9 FF 20 34 FC D0 03 4C 68 F3 A9 1B A2 FE 20 90 FA A2 00 A9 01 4C 1E F4 20 22 F4 A0 01 91 04 C9 -01 20 2F FC D0 C9 A9 01 20 4F FB 20 3F F4 A0 01 -A2 00 B1 04 C9 01 20 2F FC D0 03 4C 9C F3 A9 13 -A2 FE 20 91 FA A2 00 A9 01 4C 1E F4 A0 05 A2 00 -B1 04 C9 AA 20 2F FC D0 03 4C B3 F3 A2 00 A9 01 +01 20 2E FC D0 C9 A9 01 20 4E FB 20 3F F4 A0 01 +A2 00 B1 04 C9 01 20 2E FC D0 03 4C 9C F3 A9 12 +A2 FE 20 90 FA A2 00 A9 01 4C 1E F4 A0 05 A2 00 +B1 04 C9 AA 20 2E FC D0 03 4C B3 F3 A2 00 A9 01 4C 1E F4 A2 00 A9 00 A0 00 91 04 A0 00 A2 00 B1 -04 C9 FF 20 35 FC D0 03 4C D9 F3 A9 04 A2 FE 20 -91 FA A2 00 A9 01 4C 1E F4 20 61 F5 A0 01 91 04 -A0 01 A2 00 B1 04 C9 02 20 4E FC D0 03 4C F7 F3 +04 C9 FF 20 34 FC D0 03 4C D9 F3 A9 03 A2 FE 20 +90 FA A2 00 A9 01 4C 1E F4 20 61 F5 A0 01 91 04 +A0 01 A2 00 B1 04 C9 02 20 4D FC D0 03 4C F7 F3 20 7E F5 A0 01 91 04 A0 00 A2 00 18 A9 01 71 04 -91 04 A0 01 A2 00 B1 04 C9 00 20 2F FC D0 AC A9 -01 20 4F FB 20 E7 F4 A2 00 A9 00 4C 1E F4 20 25 -FB 60 A2 00 A9 00 20 AE FC A2 00 86 06 86 07 A9 -00 20 82 FB A2 00 A9 94 20 43 F1 4C 3E F4 60 20 -C4 FC A2 00 A9 FF 20 3F F2 A2 00 A9 00 20 33 F2 -A2 00 A9 FF 20 3F F2 A2 00 A9 08 20 AE FC A2 01 -A9 00 85 06 A9 00 85 07 A9 AA 20 82 FB A2 00 A9 -86 20 CE F0 A0 01 20 35 FB 20 25 F1 A2 00 A9 FF +91 04 A0 01 A2 00 B1 04 C9 00 20 2E FC D0 AC A9 +01 20 4E FB 20 E7 F4 A2 00 A9 00 4C 1E F4 20 24 +FB 60 A2 00 A9 00 20 AD FC A2 00 86 06 86 07 A9 +00 20 81 FB A2 00 A9 94 20 43 F1 4C 3E F4 60 20 +C3 FC A2 00 A9 FF 20 3F F2 A2 00 A9 00 20 33 F2 +A2 00 A9 FF 20 3F F2 A2 00 A9 08 20 AD FC A2 01 +A9 00 85 06 A9 00 85 07 A9 AA 20 81 FB A2 00 A9 +86 20 CE F0 A0 01 20 34 FB 20 25 F1 A2 00 A9 FF 20 3F F2 A2 00 A9 00 20 39 F2 A2 00 A9 FF 20 3F -F2 20 0D FB 60 20 C4 FC A2 00 A9 FF 20 3F F2 A2 +F2 20 0C FB 60 20 C3 FC A2 00 A9 FF 20 3F F2 A2 00 A9 00 20 33 F2 A2 00 A9 FF 20 3F F2 A2 00 A9 -0D 20 AE FC A2 00 86 06 86 07 A9 00 20 82 FB A2 -00 A9 00 20 CE F0 A0 01 20 35 FB 20 FA F0 A2 00 +0D 20 AD FC A2 00 86 06 86 07 A9 00 20 81 FB A2 +00 A9 00 20 CE F0 A0 01 20 34 FB 20 FA F0 A2 00 A9 FF 20 3F F2 A2 00 A9 00 20 39 F2 A2 00 A9 FF -20 3F F2 20 0D FB 60 20 C4 FC 20 C8 FA A2 00 A9 +20 3F F2 20 0C FB 60 20 C3 FC 20 C7 FA A2 00 A9 FF 20 3F F2 A2 00 A9 00 20 33 F2 A2 00 A9 FF 20 -3F F2 A0 00 91 04 A0 00 A2 00 B1 04 C9 FF 20 2F +3F F2 A0 00 91 04 A0 00 A2 00 B1 04 C9 FF 20 2E FC D0 03 4C 27 F5 4C 19 F5 A2 00 A9 FF 20 3F F2 -C9 FF 20 2F FC D0 F2 A2 00 A9 3A 20 AE FC A2 00 -86 06 86 07 A9 00 20 82 FB A2 00 A9 00 20 CE F0 -A0 02 20 35 FB 20 25 F1 A2 00 A9 FF 20 3F F2 A2 -00 A9 00 20 39 F2 A2 00 A9 FF 20 3F F2 20 1B FB -60 A2 00 A9 37 20 AE FC A2 00 86 06 86 07 A9 00 -20 82 FB A2 00 A9 00 20 43 F1 4C 7D F5 60 A2 00 -A9 29 20 AE FC A2 00 86 06 A9 40 85 07 A9 00 20 -82 FB A2 00 A9 00 20 43 F1 4C 9C F5 60 20 C4 FC -20 EB FA A0 03 A2 00 B1 04 4C AC F5 A0 0E 20 FC -F9 60 20 C4 FC A9 00 20 AE FC 20 D1 FA A2 00 A9 -00 A0 00 20 DC FC A0 01 20 35 FB E0 02 20 4E FC -F0 03 4C D8 F5 4C 3A F6 A9 25 A2 FE 20 C4 FC A0 -06 20 35 FB A0 00 20 2A FB 20 C4 FC A0 07 A2 00 -A9 01 20 EC F9 A0 04 20 5D FA A0 02 A2 00 B1 04 -C9 1F 20 35 FC D0 03 4C 1C F6 A9 29 A2 FE 20 91 +C9 FF 20 2E FC D0 F2 A2 00 A9 3A 20 AD FC A2 00 +86 06 86 07 A9 00 20 81 FB A2 00 A9 00 20 CE F0 +A0 02 20 34 FB 20 25 F1 A2 00 A9 FF 20 3F F2 A2 +00 A9 00 20 39 F2 A2 00 A9 FF 20 3F F2 20 1A FB +60 A2 00 A9 37 20 AD FC A2 00 86 06 86 07 A9 00 +20 81 FB A2 00 A9 00 20 43 F1 4C 7D F5 60 A2 00 +A9 29 20 AD FC A2 00 86 06 A9 40 85 07 A9 00 20 +81 FB A2 00 A9 00 20 43 F1 4C 9C F5 60 20 C3 FC +20 EA FA A0 03 A2 00 B1 04 4C AC F5 A0 0E 20 FB +F9 60 20 C3 FC A9 00 20 AD FC 20 D0 FA A2 00 A9 +00 A0 00 20 DB FC A0 01 20 34 FB E0 02 20 4D FC +F0 03 4C D8 F5 4C 3A F6 A9 24 A2 FE 20 C3 FC A0 +06 20 34 FB A0 00 20 29 FB 20 C3 FC A0 07 A2 00 +A9 01 20 EB F9 A0 04 20 5C FA A0 02 A2 00 B1 04 +C9 1F 20 34 FC D0 03 4C 1C F6 A9 28 A2 FE 20 90 FA A2 00 A9 00 A0 02 91 04 4C 2E F6 A2 00 A9 20 20 68 F0 A0 02 A2 00 18 A9 01 71 04 91 04 A0 00 -A2 00 A9 01 20 EC F9 4C C6 F5 A9 29 A2 FE 20 91 -FA 20 20 FB 60 A0 00 B1 1A E6 1A D0 02 E6 1B 60 -AD 4A 92 8D 45 92 20 F1 F6 A9 45 A2 92 20 C4 FC -20 A5 FC 4C 02 92 A5 18 38 E9 02 85 18 B0 02 C6 -19 60 AD 4F 92 D0 11 20 8F F6 4C 0F FA AD 4F 92 -D0 06 20 8F F6 4C 09 FA 20 8F F6 85 06 86 07 20 +A2 00 A9 01 20 EB F9 4C C6 F5 A9 28 A2 FE 20 90 +FA 20 1F FB 60 A0 00 B1 1A E6 1A D0 02 E6 1B 60 +AD 4A 92 8D 45 92 20 F1 F6 A9 45 A2 92 20 C3 FC +20 A4 FC 4C 02 92 A5 18 38 E9 02 85 18 B0 02 C6 +19 60 AD 4F 92 D0 11 20 8F F6 4C 0E FA AD 4F 92 +D0 06 20 8F F6 4C 08 FA 20 8F F6 85 06 86 07 20 66 F6 A0 01 B1 18 AA 88 B1 18 60 A0 00 84 0C 84 0D B1 1A 38 E9 30 90 2C C9 0A B0 28 20 49 F6 48 A5 0C A6 0D 06 0C 26 0D 06 0C 26 0D 65 0C 85 0C 8A 65 0D 85 0D 06 0C 26 0D 68 65 0C 85 0C 90 D1 E6 0D B0 CD A5 0C A6 0D 60 AC 51 92 EE 51 92 99 -52 92 60 A9 52 A2 92 18 6D 51 92 90 01 E8 4C C4 -FC A5 1C A6 1D 4C C4 FC 20 50 F6 EE 4B 92 D0 F8 +52 92 60 A9 52 A2 92 18 6D 51 92 90 01 E8 4C C3 +FC A5 1C A6 1D 4C C3 FC 20 50 F6 EE 4B 92 D0 F8 EE 4C 92 D0 F3 60 20 F1 F6 AD 66 92 AE 67 92 20 -C4 FC AD 68 92 AE 69 92 20 C4 FC 4C 02 92 84 0C -20 82 FB 20 E3 F6 A5 0C 4C B2 FB 84 0C 20 82 FB -20 E3 F6 A5 0C 4C F3 FB 48 A0 05 B9 18 00 99 3F -92 88 10 F7 68 85 18 86 19 20 05 FB 85 1A 86 1B -20 05 FB 85 1C 86 1D A9 00 A8 91 1C C8 91 1C C8 +C3 FC AD 68 92 AE 69 92 20 C3 FC 4C 02 92 84 0C +20 81 FB 20 E3 F6 A5 0C 4C B1 FB 84 0C 20 81 FB +20 E3 F6 A5 0C 4C F2 FB 48 A0 05 B9 18 00 99 3F +92 88 10 F7 68 85 18 86 19 20 04 FB 85 1A 86 1B +20 04 FB 85 1C 86 1D A9 00 A8 91 1C C8 91 1C C8 B1 1C 8D 03 92 C8 B1 1C 8D 04 92 A5 1A 85 0C A5 1B 85 0D A0 00 B1 1A F0 0B C9 25 F0 07 C8 D0 F5 E6 1B D0 F1 98 18 65 1A 85 1A 90 02 E6 1B 38 E5 -0C 85 0E A5 1B E5 0D 85 0F 05 0E F0 25 20 EB FA +0C 85 0E A5 1B E5 0D 85 0F 05 0E F0 25 20 EA FA A0 05 A5 1D 91 04 88 A5 1C 91 04 88 A5 0D 91 04 88 A5 0C 91 04 88 A5 0F 91 04 88 A5 0E 91 04 20 02 92 20 45 F6 AA D0 0B A2 05 BD 3F 92 95 18 CA @@ -136,103 +136,103 @@ C9 2A D0 09 20 49 F6 20 8F F6 4C 60 F8 20 9B F6 8D 4D 92 8E 4E 92 B1 1A C9 7A F0 19 C9 68 F0 15 C9 74 F0 11 C9 6A F0 08 C9 4C F0 04 C9 6C D0 0B A9 FF 8D 4F 92 20 49 F6 4C 66 F8 8C 51 92 A2 52 -8E 66 92 A2 92 8E 67 92 20 49 F6 C9 63 D0 0E 20 -8F F6 8D 52 92 A9 00 8D 53 92 4C 8A F9 C9 64 F0 -04 C9 69 D0 2D A2 00 AD 48 92 F0 02 A2 20 AD 47 -92 F0 02 A2 2B 8E 50 92 20 7D F6 A4 07 30 0B AC -50 92 F0 06 8C 52 92 EE 51 92 A0 0A 20 1E F7 4C -8A F9 C9 6E D0 15 20 8F F6 85 0C 86 0D A0 00 B1 -1C 91 0C C8 B1 1C 91 0C 4C 6B F7 C9 6F D0 27 20 -7D F6 AC 49 92 F0 17 48 86 14 05 14 05 06 05 07 -0D 4D 92 0D 4E 92 F0 06 A9 30 20 D9 F6 68 A0 08 -20 1E F7 4C 8A F9 C9 70 D0 0D A2 00 8E 4F 92 E8 -8E 49 92 A9 78 D0 27 C9 73 D0 0C 20 8F F6 8D 66 -92 8E 67 92 4C 8A F9 C9 75 D0 0B 20 72 F6 A0 0A -20 2B F7 4C 8A F9 C9 78 F0 04 C9 58 D0 29 48 AD -49 92 F0 0A A9 30 20 D9 F6 A9 58 20 D9 F6 20 72 -F6 A0 10 20 2B F7 68 C9 78 D0 09 AD 66 92 AE 67 -92 20 1C FD 4C 8A F9 4C 6B F7 AD 66 92 AE 67 92 -20 06 FD 8D 68 92 8E 69 92 AD 4D 92 0D 4E 92 F0 -15 AE 4D 92 EC 68 92 AD 4E 92 A8 ED 69 92 B0 06 -8E 68 92 8C 69 92 38 AD 4B 92 ED 68 92 AA AD 4C -92 ED 69 92 B0 03 A9 00 AA 49 FF 8D 4C 92 8A 49 -FF 8D 4B 92 AD 46 92 D0 03 20 FB F6 20 06 F7 AD -46 92 F0 03 20 FB F6 4C 6B F7 A0 00 18 71 04 91 -04 48 C8 8A 71 04 91 04 AA 68 60 C8 48 18 98 65 -04 85 04 90 02 E6 05 68 60 A0 FF E0 80 B0 02 A0 -00 84 06 84 07 60 E0 00 D0 06 AA D0 03 A9 01 60 -A2 00 8A 60 A0 00 F0 07 A9 52 A2 F0 4C 05 92 60 -A9 00 85 0C A9 F0 85 0D A9 00 85 0E A9 92 85 0F -A2 CD A9 FF 85 14 A0 00 E8 F0 0D B1 0C 91 0E C8 -D0 F6 E6 0D E6 0F D0 F0 E6 14 D0 EF 60 8C 6A 92 -88 88 98 18 65 04 85 0C A6 05 90 01 E8 86 0D A0 -01 B1 0C AA 88 B1 0C 20 C4 FC A5 0C A6 0D 20 8B -FD AC 6A 92 4C FC F9 85 0C 86 0D 20 75 F0 4C 95 -FA 85 0C 86 0D A0 00 B1 0C F0 0E C8 84 14 20 68 -F0 A4 14 D0 F2 E6 0D D0 EE 60 E0 00 D0 15 4A AA -BD 52 FE 90 05 4A 4A 4A 4A 18 29 0F AA BD 47 FE -A2 00 60 38 A9 00 AA 60 A4 04 D0 02 C6 05 C6 04 -60 A5 04 38 E9 02 85 04 90 01 60 C6 05 60 A5 04 -38 E9 04 85 04 90 01 60 C6 05 60 A5 04 38 E9 06 -85 04 90 01 60 C6 05 60 A5 04 38 E9 07 85 04 90 -01 60 C6 05 60 A0 01 B1 04 AA 88 B1 04 E6 04 F0 -05 E6 04 F0 03 60 E6 04 E6 05 60 A0 03 4C FC F9 -A0 05 4C FC F9 A0 08 4C FC F9 85 0C 86 0D A2 00 -B1 0C 60 A0 01 B1 04 AA 88 B1 04 60 A0 03 B1 04 -85 07 88 B1 04 85 06 88 B1 04 AA 88 B1 04 60 A2 -00 18 65 04 48 8A 65 05 AA 68 60 18 49 FF 69 01 -48 8A 49 FF 69 00 AA A5 06 49 FF 69 00 85 06 A5 -07 49 FF 69 00 85 07 68 60 A9 00 AA A0 00 84 06 -84 07 48 20 DE FA A0 03 A5 07 91 04 88 A5 06 91 -04 88 8A 91 04 68 88 91 04 60 85 14 20 05 FB 85 -0E 86 0F 85 10 86 11 20 97 FC 20 05 FB 85 06 86 -07 60 20 9A FB A6 07 A4 14 C0 0A D0 39 A5 06 05 -0D 05 0C D0 11 E0 80 D0 0D A0 0B B9 3B FE 91 0E -88 10 F8 4C 2A FC 8A 10 1D A9 2D A0 00 91 0E E6 -0E D0 02 E6 0F A5 0C A6 0D 20 5B FB 85 0C 86 0D -4C F6 FB 20 9A FB A9 00 48 A0 20 A9 00 06 0C 26 -0D 26 06 26 07 2A C5 14 90 04 E5 14 E6 0C 88 D0 -EC A8 B9 2B FE 48 A5 0C 05 0D 05 06 05 07 D0 D9 -A0 00 68 91 0E F0 03 C8 D0 F8 A5 10 A6 11 60 D0 -06 A2 00 8A 60 D0 FA A2 00 A9 01 60 F0 F9 30 F7 -A2 00 8A 60 F0 02 10 EF A2 00 8A 60 F0 E9 90 E7 -A2 00 8A 60 F0 DB A2 00 8A 2A 60 20 84 FC A6 11 -F0 13 B1 0C 91 0E C8 B1 0C 91 0E C8 D0 F4 E6 0D -E6 0F CA D0 ED A6 10 F0 08 B1 0C 91 0E C8 CA D0 -F8 4C 05 FB 85 10 86 11 20 97 FC C8 B1 04 AA 86 -0F 88 B1 04 85 0E 60 A0 01 B1 04 85 0D 88 B1 04 -85 0C 4C 0D FB A9 01 4C C2 FC A0 00 B1 04 A4 04 -F0 07 C6 04 A0 00 91 04 60 C6 05 C6 04 91 04 60 -A9 00 A2 00 48 A5 04 38 E9 02 85 04 B0 02 C6 05 -A0 01 8A 91 04 68 88 91 04 60 A0 00 91 04 C8 48 -8A 91 04 68 60 85 0E 86 0F 20 97 FC B1 0C D1 0E -D0 0C AA F0 10 C8 D0 F4 E6 0D E6 0F D0 EE B0 03 -A2 FF 60 A2 01 60 85 0E 86 0F A2 00 A0 00 B1 0E -F0 08 C8 D0 F9 E6 0F E8 D0 F4 98 60 85 0C 86 0D -85 0E 86 0F A0 00 B1 0C F0 14 20 AE FA 29 02 F0 -06 B1 0C 69 20 91 0C C8 D0 EC E6 0D D0 E8 A5 0E -A6 0F 60 20 05 FB 85 0E 86 0F E8 8E 31 92 AA E8 -8E 30 92 20 97 FC 20 05 FB 85 10 86 11 A0 00 84 -14 B1 10 18 65 0E 91 10 C8 B1 10 65 0F 91 10 CE -30 92 F0 11 A4 14 B1 0C C8 D0 02 E6 0D 84 14 20 -68 F0 4C 6F FD CE 31 92 D0 EA 60 85 0C 86 0D A9 -00 8D 2A 92 8D 2B 92 A0 01 B1 04 AA 88 B1 04 20 -C4 FC A0 02 A9 2A 91 04 C8 A9 92 91 04 A5 0C A6 -0D 20 38 F7 AD 2A 92 AE 2B 92 60 A9 32 85 0C A9 -92 85 0D A9 00 A8 A2 00 F0 0A 91 0C C8 D0 FB E6 -0D CA D0 F6 C0 39 F0 05 91 0C C8 D0 F7 60 62 61 -64 20 74 6F 6B 65 6E 3A 20 25 78 0A 00 53 75 63 -63 65 73 73 0A 00 45 72 72 6F 72 0A 00 53 74 61 -72 74 0A 00 6F 70 5F 63 6F 6E 64 20 65 72 72 6F -72 0A 00 49 46 20 43 6F 6E 64 0A 00 47 6F 20 49 -44 4C 45 0A 00 25 32 78 00 0A 00 30 31 32 33 34 -35 36 37 38 39 41 42 43 44 45 46 2D 32 31 34 37 -34 38 33 36 34 38 00 00 01 02 0C 09 0A 10 40 50 -A0 D0 66 66 66 66 A6 88 88 66 66 66 66 66 66 66 -66 66 09 00 00 00 00 00 00 00 33 33 33 33 33 00 -00 00 50 55 55 25 22 22 22 22 22 22 22 22 22 02 -00 00 40 44 44 14 11 11 11 11 11 11 11 11 11 01 -00 70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +8E 66 92 A2 92 8E 67 92 20 49 F6 C9 63 D0 0D 20 +8F F6 8D 52 92 A2 00 A9 01 4C 92 F9 C9 64 F0 04 +C9 69 D0 2D A2 00 AD 48 92 F0 02 A2 20 AD 47 92 +F0 02 A2 2B 8E 50 92 20 7D F6 A4 07 30 0B AC 50 +92 F0 06 8C 52 92 EE 51 92 A0 0A 20 1E F7 4C 89 +F9 C9 6E D0 15 20 8F F6 85 0C 86 0D A0 00 B1 1C +91 0C C8 B1 1C 91 0C 4C 6B F7 C9 6F D0 27 20 7D +F6 AC 49 92 F0 17 48 86 14 05 14 05 06 05 07 0D +4D 92 0D 4E 92 F0 06 A9 30 20 D9 F6 68 A0 08 20 +1E F7 4C 89 F9 C9 70 D0 0D A2 00 8E 4F 92 E8 8E +49 92 A9 78 D0 27 C9 73 D0 0C 20 8F F6 8D 66 92 +8E 67 92 4C 89 F9 C9 75 D0 0B 20 72 F6 A0 0A 20 +2B F7 4C 89 F9 C9 78 F0 04 C9 58 D0 29 48 AD 49 +92 F0 0A A9 30 20 D9 F6 A9 58 20 D9 F6 20 72 F6 +A0 10 20 2B F7 68 C9 78 D0 09 AD 66 92 AE 67 92 +20 1B FD 4C 89 F9 4C 6B F7 AD 66 92 AE 67 92 20 +05 FD 8D 68 92 8E 69 92 AD 4D 92 0D 4E 92 F0 15 +AE 4D 92 EC 68 92 AD 4E 92 A8 ED 69 92 B0 06 8E +68 92 8C 69 92 38 AD 4B 92 ED 68 92 AA AD 4C 92 +ED 69 92 B0 03 A9 00 AA 49 FF 8D 4C 92 8A 49 FF +8D 4B 92 AD 46 92 D0 03 20 FB F6 20 06 F7 AD 46 +92 F0 03 20 FB F6 4C 6B F7 A0 00 18 71 04 91 04 +48 C8 8A 71 04 91 04 AA 68 60 C8 48 18 98 65 04 +85 04 90 02 E6 05 68 60 A0 FF E0 80 B0 02 A0 00 +84 06 84 07 60 E0 00 D0 06 AA D0 03 A9 01 60 A2 +00 8A 60 A0 00 F0 07 A9 52 A2 F0 4C 05 92 60 A9 +00 85 0C A9 F0 85 0D A9 00 85 0E A9 92 85 0F A2 +CD A9 FF 85 14 A0 00 E8 F0 0D B1 0C 91 0E C8 D0 +F6 E6 0D E6 0F D0 F0 E6 14 D0 EF 60 8C 6A 92 88 +88 98 18 65 04 85 0C A6 05 90 01 E8 86 0D A0 01 +B1 0C AA 88 B1 0C 20 C3 FC A5 0C A6 0D 20 8A FD +AC 6A 92 4C FB F9 85 0C 86 0D 20 75 F0 4C 94 FA +85 0C 86 0D A0 00 B1 0C F0 0E C8 84 14 20 68 F0 +A4 14 D0 F2 E6 0D D0 EE 60 E0 00 D0 15 4A AA BD +51 FE 90 05 4A 4A 4A 4A 18 29 0F AA BD 46 FE A2 +00 60 38 A9 00 AA 60 A4 04 D0 02 C6 05 C6 04 60 +A5 04 38 E9 02 85 04 90 01 60 C6 05 60 A5 04 38 +E9 04 85 04 90 01 60 C6 05 60 A5 04 38 E9 06 85 +04 90 01 60 C6 05 60 A5 04 38 E9 07 85 04 90 01 +60 C6 05 60 A0 01 B1 04 AA 88 B1 04 E6 04 F0 05 +E6 04 F0 03 60 E6 04 E6 05 60 A0 03 4C FB F9 A0 +05 4C FB F9 A0 08 4C FB F9 85 0C 86 0D A2 00 B1 +0C 60 A0 01 B1 04 AA 88 B1 04 60 A0 03 B1 04 85 +07 88 B1 04 85 06 88 B1 04 AA 88 B1 04 60 A2 00 +18 65 04 48 8A 65 05 AA 68 60 18 49 FF 69 01 48 +8A 49 FF 69 00 AA A5 06 49 FF 69 00 85 06 A5 07 +49 FF 69 00 85 07 68 60 A9 00 AA A0 00 84 06 84 +07 48 20 DD FA A0 03 A5 07 91 04 88 A5 06 91 04 +88 8A 91 04 68 88 91 04 60 85 14 20 04 FB 85 0E +86 0F 85 10 86 11 20 96 FC 20 04 FB 85 06 86 07 +60 20 99 FB A6 07 A4 14 C0 0A D0 39 A5 06 05 0D +05 0C D0 11 E0 80 D0 0D A0 0B B9 3A FE 91 0E 88 +10 F8 4C 29 FC 8A 10 1D A9 2D A0 00 91 0E E6 0E +D0 02 E6 0F A5 0C A6 0D 20 5A FB 85 0C 86 0D 4C +F5 FB 20 99 FB A9 00 48 A0 20 A9 00 06 0C 26 0D +26 06 26 07 2A C5 14 90 04 E5 14 E6 0C 88 D0 EC +A8 B9 2A FE 48 A5 0C 05 0D 05 06 05 07 D0 D9 A0 +00 68 91 0E F0 03 C8 D0 F8 A5 10 A6 11 60 D0 06 +A2 00 8A 60 D0 FA A2 00 A9 01 60 F0 F9 30 F7 A2 +00 8A 60 F0 02 10 EF A2 00 8A 60 F0 E9 90 E7 A2 +00 8A 60 F0 DB A2 00 8A 2A 60 20 83 FC A6 11 F0 +13 B1 0C 91 0E C8 B1 0C 91 0E C8 D0 F4 E6 0D E6 +0F CA D0 ED A6 10 F0 08 B1 0C 91 0E C8 CA D0 F8 +4C 04 FB 85 10 86 11 20 96 FC C8 B1 04 AA 86 0F +88 B1 04 85 0E 60 A0 01 B1 04 85 0D 88 B1 04 85 +0C 4C 0C FB A9 01 4C C1 FC A0 00 B1 04 A4 04 F0 +07 C6 04 A0 00 91 04 60 C6 05 C6 04 91 04 60 A9 +00 A2 00 48 A5 04 38 E9 02 85 04 B0 02 C6 05 A0 +01 8A 91 04 68 88 91 04 60 A0 00 91 04 C8 48 8A +91 04 68 60 85 0E 86 0F 20 96 FC B1 0C D1 0E D0 +0C AA F0 10 C8 D0 F4 E6 0D E6 0F D0 EE B0 03 A2 +FF 60 A2 01 60 85 0E 86 0F A2 00 A0 00 B1 0E F0 +08 C8 D0 F9 E6 0F E8 D0 F4 98 60 85 0C 86 0D 85 +0E 86 0F A0 00 B1 0C F0 14 20 AD FA 29 02 F0 06 +B1 0C 69 20 91 0C C8 D0 EC E6 0D D0 E8 A5 0E A6 +0F 60 20 04 FB 85 0E 86 0F E8 8E 31 92 AA E8 8E +30 92 20 96 FC 20 04 FB 85 10 86 11 A0 00 84 14 +B1 10 18 65 0E 91 10 C8 B1 10 65 0F 91 10 CE 30 +92 F0 11 A4 14 B1 0C C8 D0 02 E6 0D 84 14 20 68 +F0 4C 6E FD CE 31 92 D0 EA 60 85 0C 86 0D A9 00 +8D 2A 92 8D 2B 92 A0 01 B1 04 AA 88 B1 04 20 C3 +FC A0 02 A9 2A 91 04 C8 A9 92 91 04 A5 0C A6 0D +20 38 F7 AD 2A 92 AE 2B 92 60 A9 32 85 0C A9 92 +85 0D A9 00 A8 A2 00 F0 0A 91 0C C8 D0 FB E6 0D +CA D0 F6 C0 39 F0 05 91 0C C8 D0 F7 60 62 61 64 +20 74 6F 6B 65 6E 3A 20 25 78 0A 00 53 75 63 63 +65 73 73 0A 00 45 72 72 6F 72 0A 00 53 74 61 72 +74 0A 00 6F 70 5F 63 6F 6E 64 20 65 72 72 6F 72 +0A 00 49 46 20 43 6F 6E 64 0A 00 47 6F 20 49 44 +4C 45 0A 00 25 32 78 00 0A 00 30 31 32 33 34 35 +36 37 38 39 41 42 43 44 45 46 2D 32 31 34 37 34 +38 33 36 34 38 00 00 01 02 0C 09 0A 10 40 50 A0 +D0 66 66 66 66 A6 88 88 66 66 66 66 66 66 66 66 +66 09 00 00 00 00 00 00 00 33 33 33 33 33 00 00 +00 50 55 55 25 22 22 22 22 22 22 22 22 22 02 00 +00 40 44 44 14 11 11 11 11 11 11 11 11 11 01 00 +70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 diff --git a/sw/bios/boot2.s b/sw/bios/boot2.s index 7a03670..d0dd477 100644 --- a/sw/bios/boot2.s +++ b/sw/bios/boot2.s @@ -158,12 +158,15 @@ _start: sec sbc #$02 ; don't handle carry, assume low byte is not 0 or 1 + clc + sta tmp1 ldx data_start + 1 ; load x as high data start phx ldx sectors_per_cluster ; multiply cluster num (minus 2) by sectors_per_cluster -@4: adc tmp1 + lda #$00 +@8: adc tmp1 dex - bne @4 + bne @8 plx clc adc data_start ; add that to low data start diff --git a/sw/bios/bootloader.s b/sw/bios/bootloader.s index ccaea42..0b4c721 100644 --- a/sw/bios/bootloader.s +++ b/sw/bios/bootloader.s @@ -118,10 +118,12 @@ _main: sec sbc #$02 ; don't handle carry, assume low byte is not 0 or 1 + clc sta tmp1 ldx data_start + 1 ; load x as high data start phx ldx sectors_per_cluster ; multiply cluster num (minus 2) by sectors_per_cluster + lda #$00 @4: adc tmp1 dex bne @4 From 674078e08dfe5f55a72d9572557609a4ed9010da Mon Sep 17 00:00:00 2001 From: Byron Lathi Date: Wed, 25 Oct 2023 21:13:01 -0700 Subject: [PATCH 05/16] Don't print buf, it takes too long --- sw/bios/boot2.s | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sw/bios/boot2.s b/sw/bios/boot2.s index d0dd477..a852783 100644 --- a/sw/bios/boot2.s +++ b/sw/bios/boot2.s @@ -304,9 +304,9 @@ _start: ldx tlen + 1 jsr _memcpy - lda #<$1000 - ldx #>$1000 - jsr _SD_printBuf + ; lda #<$1000 + ; ldx #>$1000 + ; jsr _SD_printBuf lda userptr + 1 adc tlen + 1 From 3a9c0fb73f414ed9173388d89a0d26a41a1d414c Mon Sep 17 00:00:00 2001 From: Byron Lathi Date: Wed, 25 Oct 2023 22:47:22 -0700 Subject: [PATCH 06/16] run vvp unbuffered --- hw/efinix_fpga/simulation/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hw/efinix_fpga/simulation/Makefile b/hw/efinix_fpga/simulation/Makefile index 5b97507..8407640 100644 --- a/hw/efinix_fpga/simulation/Makefile +++ b/hw/efinix_fpga/simulation/Makefile @@ -23,11 +23,11 @@ all: sim .PHONY: sim sim: $(TARGET) - vvp $(TARGET) -fst + vvp -i $(TARGET) -fst .PHONY: full_sim full_sim: $(TARGET) $(SD_IMAGE) - vvp $(TARGET) -fst + vvp -i $(TARGET) -fst mapper_tb: $(SRCS) $(TBS) iverilog -g2005-sv $(FLAGS) -s $@ -o $@ $(INC) $(SRCS) $(TBS) From 7f3696d36cedcbb1a6a20cd7e879fd70b731eb71 Mon Sep 17 00:00:00 2001 From: Byron Lathi Date: Thu, 26 Oct 2023 20:11:35 -0700 Subject: [PATCH 07/16] Reduce sim time --- hw/efinix_fpga/simulation/src/sim_top.sv | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/efinix_fpga/simulation/src/sim_top.sv b/hw/efinix_fpga/simulation/src/sim_top.sv index d53368e..06948a2 100644 --- a/hw/efinix_fpga/simulation/src/sim_top.sv +++ b/hw/efinix_fpga/simulation/src/sim_top.sv @@ -53,7 +53,7 @@ initial begin button_reset <= '0; repeat(10) @(r_clk_cpu); button_reset <= '1; - repeat(10000000) @(r_clk_cpu); + repeat(2500000) @(r_clk_cpu); $finish(); end From e3ae9841776375d902e3443325766deb3f5a9b61 Mon Sep 17 00:00:00 2001 From: Byron Lathi Date: Thu, 26 Oct 2023 20:40:00 -0700 Subject: [PATCH 08/16] Upload filesystem image as well --- .gitlab-ci.yml | 1 + hw/efinix_fpga/simulation/src/sim_top.sv | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 2ded9e8..826d87d 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -108,6 +108,7 @@ full sim: artifacts: paths: - hw/efinix_fpga/simulation/sim_top.vcd + - hw/efinix_fpga/simulation/fs.fat script: - source init_env.sh - cd hw/efinix_fpga/simulation diff --git a/hw/efinix_fpga/simulation/src/sim_top.sv b/hw/efinix_fpga/simulation/src/sim_top.sv index 06948a2..a50d2a2 100644 --- a/hw/efinix_fpga/simulation/src/sim_top.sv +++ b/hw/efinix_fpga/simulation/src/sim_top.sv @@ -53,7 +53,7 @@ initial begin button_reset <= '0; repeat(10) @(r_clk_cpu); button_reset <= '1; - repeat(2500000) @(r_clk_cpu); + repeat(1500000) @(r_clk_cpu); $finish(); end From cf8a5d782fe77de8896ee9f0f25413813d2a48f8 Mon Sep 17 00:00:00 2001 From: Byron Lathi Date: Thu, 26 Oct 2023 21:25:26 -0700 Subject: [PATCH 09/16] Make kernel as part of full chip sim --- hw/efinix_fpga/simulation/Makefile | 2 ++ sw/bios/Makefile | 8 ++++++-- sw/kernel/Makefile | 7 +++++-- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/hw/efinix_fpga/simulation/Makefile b/hw/efinix_fpga/simulation/Makefile index 8407640..612d07f 100644 --- a/hw/efinix_fpga/simulation/Makefile +++ b/hw/efinix_fpga/simulation/Makefile @@ -40,6 +40,8 @@ $(TARGET): $(INIT_MEM) $(SRCS) iverilog -g2005-sv $(FLAGS) -s $(TOP_MODULE) -o $(TARGET) $(INC) $(SRCS) $(INIT_MEM): +# Make kernel + $(MAKE) -C $(REPO_TOP)/sw/kernel $(MAKE) -C $(TEST_FOLDER) cp $(TEST_PROGRAM) ./init_hex.mem diff --git a/sw/bios/Makefile b/sw/bios/Makefile index f35b1a5..be60e09 100644 --- a/sw/bios/Makefile +++ b/sw/bios/Makefile @@ -2,6 +2,8 @@ CC=../cc65/bin/cl65 CFLAGS=-T -t none -I. --cpu "65C02" -DRTL_SIM LDFLAGS=-C link.ld -m $(NAME).map +FSDIR=$(REPO_TOP)/sw/fsdir + NAME=bios BIN=$(NAME).bin @@ -21,9 +23,9 @@ OBJS+=$(patsubst %.c,%.o,$(filter %c,$(SRCS))) all: $(HEX) -$(HEX): $(BIN) +$(HEX): $(BIN) $(FSDIR) objcopy --input-target=binary --output-target=verilog $(BIN) $(HEX) - cp boot2.bin ../fsdir + cp boot2.bin $(FSDIR) cmp $(HEX) $(FPGA_IMG); \ RETVAL=$$?; \ if [ $$RETVAL -eq 0 ]; then \ @@ -34,6 +36,8 @@ $(HEX): $(BIN) echo "Update ROM or rebuild FPGA image!"; \ fi +$(FSDIR): + mkdir $(FSDIR) $(BIN): $(OBJS) diff --git a/sw/kernel/Makefile b/sw/kernel/Makefile index 08e7a59..7b17e82 100644 --- a/sw/kernel/Makefile +++ b/sw/kernel/Makefile @@ -7,7 +7,7 @@ NAME=kernel O65 = $(NAME).o65 -FSDIR=../fsdir +FSDIR=$(REPO_TOP)/sw/fsdir LISTS=lists @@ -17,9 +17,12 @@ OBJS+=$(patsubst %.s,%.o,$(filter %s,$(SRCS))) OBJS+=$(patsubst %.c,%.o,$(filter %c,$(SRCS))) # Make sure the kernel linked to correct address, no relocation! -all: $(O65) +all: $(O65) $(FSDIR) cp $(O65) $(FSDIR) +$(FSDIR): + mkdir $(FSDIR) + $(O65): $(OBJS) $(LD) $(CFLAGS) $(LDFLAGS) $(OBJS) -o $@ From b70b49eac8d79e9a9296845d001a83c05ee785f2 Mon Sep 17 00:00:00 2001 From: Byron Lathi Date: Thu, 26 Oct 2023 21:54:08 -0700 Subject: [PATCH 10/16] Up sim time --- hw/efinix_fpga/simulation/src/sim_top.sv | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/efinix_fpga/simulation/src/sim_top.sv b/hw/efinix_fpga/simulation/src/sim_top.sv index a50d2a2..237db49 100644 --- a/hw/efinix_fpga/simulation/src/sim_top.sv +++ b/hw/efinix_fpga/simulation/src/sim_top.sv @@ -53,7 +53,7 @@ initial begin button_reset <= '0; repeat(10) @(r_clk_cpu); button_reset <= '1; - repeat(1500000) @(r_clk_cpu); + repeat(5000000) @(r_clk_cpu); $finish(); end From 4104a2eeb984554aa1aa8e92edba601a6c98d626 Mon Sep 17 00:00:00 2001 From: Byron Lathi Date: Fri, 27 Oct 2023 20:41:50 -0700 Subject: [PATCH 11/16] Do a more sane string print first --- sw/kernel/kernel.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/sw/kernel/kernel.c b/sw/kernel/kernel.c index 2a111a8..5d2c291 100644 --- a/sw/kernel/kernel.c +++ b/sw/kernel/kernel.c @@ -1,22 +1,23 @@ #include -char* longstring = \ -"This is a very long string that is meant to test the loader.\ - We can only load one cluster so far, which means 8 sectors of\ - 512bytes, or a total of 4k. If there was any more data than this,\ - then we would have to traverse the fat to find the next cluster number.\ - This may not be that difficult, but the file will need to be large\ - enough to actually stretch that far. The kernel will probably be\ - that big in the future, but for now when it doesnt really do anything\ - then it can't really be tested."; +// char* longstring = \ +// "This is a very long string that is meant to test the loader.\ +// We can only load one cluster so far, which means 8 sectors of\ +// 512bytes, or a total of 4k. If there was any more data than this,\ +// then we would have to traverse the fat to find the next cluster number.\ +// This may not be that difficult, but the file will need to be large\ +// enough to actually stretch that far. The kernel will probably be\ +// that big in the future, but for now when it doesnt really do anything\ +// then it can't really be tested."; int main() { char* string = "this is a shorter string"; + cputs("Kernel"); cprintf("%s", string); - cprintf("Here is a long string: %s\n", longstring); + // cprintf("Here is a long string: %s\n", longstring); while(1); From 2577ab2a9aaea3fbdb0102984a6d910b11cf7d50 Mon Sep 17 00:00:00 2001 From: Byron Lathi Date: Sat, 28 Oct 2023 13:12:41 -0700 Subject: [PATCH 12/16] Update kernel makefile, test more kernel code --- sw/Makefile | 5 +++-- sw/kernel/kernel.c | 6 ++++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/sw/Makefile b/sw/Makefile index ad99e40..8e1a867 100644 --- a/sw/Makefile +++ b/sw/Makefile @@ -1,4 +1,4 @@ -.PHONY: all install bios kernel clean +.PHONY: all install bios kernel clean distclean all: toolchain bios kernel @@ -15,8 +15,9 @@ bios: kernel: @$(MAKE) -C kernel +distclean: clean + @$(MAKE) -C cc65 --no-print-directory $@ clean: @$(MAKE) -C bios --no-print-directory $@ @$(MAKE) -C kernel --no-print-directory $@ - @$(MAKE) -C cc65 --no-print-directory $@ diff --git a/sw/kernel/kernel.c b/sw/kernel/kernel.c index 5d2c291..030f2f5 100644 --- a/sw/kernel/kernel.c +++ b/sw/kernel/kernel.c @@ -13,8 +13,10 @@ int main() { char* string = "this is a shorter string"; - cputs("Kernel"); - + int val = 42; + cputs("Kernel\n"); + cprintf("Kernel printf\n"); + cprintf("Val: %d\n", val); cprintf("%s", string); // cprintf("Here is a long string: %s\n", longstring); From 59a6f13eb393e2a8b869bb2a517d1bb7fe961698 Mon Sep 17 00:00:00 2001 From: Byron Lathi Date: Sat, 28 Oct 2023 18:31:21 -0700 Subject: [PATCH 13/16] Skip the copydata in kernel setup --- sw/kernel/boot.s | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sw/kernel/boot.s b/sw/kernel/boot.s index d762892..93bf54b 100644 --- a/sw/kernel/boot.s +++ b/sw/kernel/boot.s @@ -38,7 +38,7 @@ _init: LDX #$FF ; Initialize stack pointer to $01FF ; Initialize memory storage JSR zerobss ; Clear BSS segment (no longer fails) - JSR copydata ; Initialize DATA segment (this also fails. but prints something) + ; JSR copydata ; Initialize DATA segment (this also fails. but prints something) JSR initlib ; Run constructors (This one works) ; --------------------------------------------------------------------------- From c6bf29649a1549fba03924bab6dcfe34813ae950 Mon Sep 17 00:00:00 2001 From: Byron Lathi Date: Sun, 29 Oct 2023 19:47:15 -0700 Subject: [PATCH 14/16] Add some CLCs before ADCs --- sw/bios/boot2.s | 3 +++ 1 file changed, 3 insertions(+) diff --git a/sw/bios/boot2.s b/sw/bios/boot2.s index a852783..7f8a0cd 100644 --- a/sw/bios/boot2.s +++ b/sw/bios/boot2.s @@ -260,6 +260,7 @@ _start: jsr pushax pla + clc adc olen dec dec @@ -278,6 +279,7 @@ _start: ldy #$4 jsr _cprintf + clc pla ldx #>filebuf adc #$1000 ; jsr _SD_printBuf + clc lda userptr + 1 adc tlen + 1 tax From 876ae08cf31f4003ccfee22da87efa6102cd90dd Mon Sep 17 00:00:00 2001 From: Byron Lathi Date: Sun, 29 Oct 2023 21:38:04 -0700 Subject: [PATCH 15/16] Fix off by 1 in o65 option decoding --- sw/bios/boot2.s | 1 - sw/script/o65dump.py | 8 ++++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/sw/bios/boot2.s b/sw/bios/boot2.s index 7f8a0cd..6fd2cce 100644 --- a/sw/bios/boot2.s +++ b/sw/bios/boot2.s @@ -263,7 +263,6 @@ _start: clc adc olen dec - dec pha bra @opt_len diff --git a/sw/script/o65dump.py b/sw/script/o65dump.py index 4318bb8..91f6b40 100755 --- a/sw/script/o65dump.py +++ b/sw/script/o65dump.py @@ -88,10 +88,14 @@ def main() -> None: print(filename) o65 = O65(filename) for item, value in o65.header.items(): - print(f"{item}:\t{value:x}") + print(f"{item}:\t{value:#x}") + total_olen = 0 for option in o65.options: - print(f"Type: {option[1]}, Data: {option[2]}") + print(f"Length: {option[0]:#x} Type: {option[1]:#x}, Data: {option[2]}") + total_olen += option[0] + + print(f"Total option length: {total_olen:#x}") print(f"Text size: {len(o65.text)}") print(f"Data size: {len(o65.data)}") From e3662e703c18f0963b362a9ba3b1234ec524336b Mon Sep 17 00:00:00 2001 From: Byron Lathi Date: Mon, 30 Oct 2023 00:04:57 -0700 Subject: [PATCH 16/16] Add back long string --- sw/kernel/kernel.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/sw/kernel/kernel.c b/sw/kernel/kernel.c index 030f2f5..ef18f01 100644 --- a/sw/kernel/kernel.c +++ b/sw/kernel/kernel.c @@ -1,14 +1,14 @@ #include -// char* longstring = \ -// "This is a very long string that is meant to test the loader.\ -// We can only load one cluster so far, which means 8 sectors of\ -// 512bytes, or a total of 4k. If there was any more data than this,\ -// then we would have to traverse the fat to find the next cluster number.\ -// This may not be that difficult, but the file will need to be large\ -// enough to actually stretch that far. The kernel will probably be\ -// that big in the future, but for now when it doesnt really do anything\ -// then it can't really be tested."; +char* longstring = \ +"This is a very long string that is meant to test the loader.\ + We can only load one cluster so far, which means 8 sectors of\ + 512bytes, or a total of 4k. If there was any more data than this,\ + then we would have to traverse the fat to find the next cluster number.\ + This may not be that difficult, but the file will need to be large\ + enough to actually stretch that far. The kernel will probably be\ + that big in the future, but for now when it doesnt really do anything\ + then it can't really be tested."; int main() { @@ -19,7 +19,7 @@ int main() { cprintf("Val: %d\n", val); cprintf("%s", string); - // cprintf("Here is a long string: %s\n", longstring); + cprintf("Here is a long string: %s\n", longstring); while(1);