From 21b456067ae6077a544e1927ac6f353db1b2a81b Mon Sep 17 00:00:00 2001 From: Byron Lathi Date: Fri, 25 Aug 2023 19:22:21 -0700 Subject: [PATCH 1/4] Read text and data offset/length --- hw/efinix_fpga/init_hex.mem | 264 +++++++++++++++++------------------ hw/efinix_fpga/super6502.xml | 2 +- sw/bios/boot2.s | 76 ++++++++++ 3 files changed, 209 insertions(+), 133 deletions(-) diff --git a/hw/efinix_fpga/init_hex.mem b/hw/efinix_fpga/init_hex.mem index 244cd15..b0c2127 100644 --- a/hw/efinix_fpga/init_hex.mem +++ b/hw/efinix_fpga/init_hex.mem @@ -2,157 +2,157 @@ 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 90 FD 00 00 -00 00 A2 FF 9A D8 A9 00 85 02 A9 DF 85 03 20 08 +00 00 A2 FF 9A D8 A9 00 85 0A A9 DF 85 0B 20 08 FE 20 B9 FA 20 52 F0 58 20 69 F2 6C FC FF 20 AD 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 02 AA A9 1B 20 4F F2 +0D 20 4F F2 60 DA 5A A8 B2 0A AA A9 1B 20 4F F2 A9 5B 20 4F F2 98 20 4F F2 A9 3B 20 4F F2 8A 20 4F F2 A9 48 20 4F F2 7A FA 60 DA A9 1B 20 4F F2 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 02 09 40 20 3F F2 88 B1 02 20 3F F2 88 10 +04 B1 0A 09 40 20 3F F2 88 B1 0A 20 3F F2 88 10 F8 68 09 01 20 3F F2 20 A9 FB 60 A2 08 A9 FF 20 -3F F2 C9 FF D0 03 CA D0 F4 60 85 0A 86 0B 20 EB -F0 92 0A A9 FF 20 3F F2 A0 01 91 0A 20 96 FB 60 -AA 20 E4 FC A9 FF 20 3F F2 92 0A E6 0A D0 02 E6 -0B CA D0 F0 60 85 0A 86 0B 20 EB F0 C9 02 B0 12 -E6 0A D0 02 E6 0A A5 0A A6 0B 20 11 FD A9 04 20 +3F F2 C9 FF D0 03 CA D0 F4 60 85 12 86 13 20 EB +F0 92 12 A9 FF 20 3F F2 A0 01 91 12 20 96 FB 60 +AA 20 E4 FC A9 FF 20 3F F2 92 12 E6 12 D0 02 E6 +13 CA D0 F0 60 85 12 86 13 20 EB F0 C9 02 B0 12 +E6 12 D0 02 E6 12 A5 12 A6 13 20 11 FD 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 0C 86 0D A9 FF 92 0C 20 E4 -FC A5 02 85 0E A5 03 85 0F 20 51 FB A0 00 B1 0E -91 02 C8 B1 0E 91 02 C8 B1 0E 91 02 C8 B1 0E 91 -02 A9 FF 20 3F F2 A9 00 20 33 F2 A9 FF 20 3F F2 -A9 11 A0 04 91 02 A9 00 20 CE F0 20 EB F0 C9 FF -F0 3F 85 14 A0 00 A9 FF 20 3F F2 85 13 A5 13 C9 +D0 FD CA D0 F8 60 85 14 86 15 A9 FF 92 14 20 E4 +FC A5 0A 85 16 A5 0B 85 17 20 51 FB A0 00 B1 16 +91 0A C8 B1 16 91 0A C8 B1 16 91 0A C8 B1 16 91 +0A A9 FF 20 3F F2 A9 00 20 33 F2 A9 FF 20 3F F2 +A9 11 A0 04 91 0A A9 00 20 CE F0 20 EB F0 C9 FF +F0 3F 85 1C A0 00 A9 FF 20 3F F2 85 1B A5 1B C9 FF D0 05 C8 D0 F0 80 23 A2 02 A0 00 A9 FF 20 3F -F2 92 0A E6 0A D0 02 E6 0B 88 D0 F0 A0 00 CA D0 -EB A9 FF 20 3F F2 A9 FF 20 3F F2 A5 13 92 0C A5 -14 48 A9 FF 20 3F F2 A9 00 20 39 F2 A9 FF 20 3F +F2 92 12 E6 12 D0 02 E6 13 88 D0 F0 A0 00 CA D0 +EB A9 FF 20 3F F2 A9 FF 20 3F F2 A5 1B 92 14 A5 +1C 48 A9 FF 20 3F F2 A9 00 20 39 F2 A9 FF 20 3F 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 74 FB A2 00 86 04 -86 05 A9 00 20 0B FC 20 5A FB A9 4D A2 FE 20 1A +00 60 AD E7 EF A2 00 60 60 20 74 FB A2 00 86 0C +86 0D A9 00 20 0B FC 20 5A FB A9 4D A2 FE 20 1A FB 20 3A F3 C9 00 20 B8 FC D0 03 4C 98 F2 A9 45 A2 FE 20 1A FB 4C 2E F3 A9 3B A2 FE 20 1A FB A0 05 20 C7 FB 20 0B FC AD 00 92 AE 01 92 20 11 FD -A9 0C 20 D8 FB 20 96 F1 A0 07 91 02 A0 07 A2 00 -B1 02 C9 00 20 BE FC D0 03 4C DC F2 A0 06 A2 00 -B1 02 C9 FE 20 BE FC F0 03 4C E5 F2 A2 00 A9 00 +A9 0C 20 D8 FB 20 96 F1 A0 07 91 0A A0 07 A2 00 +B1 0A C9 00 20 BE FC D0 03 4C DC F2 A0 06 A2 00 +B1 0A C9 FE 20 BE 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 3C F6 4C 2B F3 A0 06 A2 00 B1 02 +92 AE 01 92 20 3C F6 4C 2B F3 A0 06 A2 00 B1 0A A2 00 29 F0 20 9F FA D0 03 4C 16 F3 A9 45 A2 FE 20 1A FB 4C 2B F3 A9 2B A2 FE 20 11 FD A0 08 A2 -00 B1 02 20 11 FD A0 04 20 E6 FA 6C 00 92 4C 31 +00 B1 0A 20 11 FD A0 04 20 E6 FA 6C 00 92 4C 31 F3 4C 31 F3 A0 0C 20 85 FA 60 20 81 FB A9 00 20 FB FC 20 6E F1 4C 71 F3 A0 00 A2 00 18 A9 01 71 -02 91 02 A0 00 A2 00 B1 02 C9 FF 20 BE FC D0 03 +0A 91 0A A0 00 A2 00 B1 0A C9 FF 20 BE FC D0 03 4C 71 F3 A9 6F A2 FE 20 1A FB A2 00 A9 01 4C A8 -F4 20 AC F4 A0 01 91 02 C9 01 20 B8 FC D0 C9 A2 +F4 20 AC F4 A0 01 91 0A C9 01 20 B8 FC D0 C9 A2 00 A9 00 A0 06 20 29 FD A0 07 20 BE FB E0 03 D0 02 C9 E8 20 D7 FC F0 03 4C 9E F3 4C AA F3 A0 06 A2 00 A9 01 20 75 FA 4C 88 F3 A9 01 20 D8 FB 20 -C9 F4 A0 01 A2 00 B1 02 C9 01 20 B8 FC D0 03 4C +C9 F4 A0 01 A2 00 B1 0A C9 01 20 B8 FC D0 03 4C D0 F3 A9 65 A2 FE 20 1A FB A2 00 A9 01 4C A8 F4 -A0 05 A2 00 B1 02 C9 AA 20 B8 FC D0 03 4C E7 F3 -A2 00 A9 01 4C A8 F4 A2 00 A9 00 A0 00 91 02 A0 -00 A2 00 B1 02 C9 FF 20 BE FC D0 03 4C 0D F4 A9 +A0 05 A2 00 B1 0A C9 AA 20 B8 FC D0 03 4C E7 F3 +A2 00 A9 01 4C A8 F4 A2 00 A9 00 A0 00 91 0A A0 +00 A2 00 B1 0A C9 FF 20 BE FC D0 03 4C 0D F4 A9 55 A2 FE 20 1A FB A2 00 A9 01 4C A8 F4 20 EB F5 -A0 01 91 02 A0 01 A2 00 B1 02 C9 02 20 D7 FC D0 -03 4C 2B F4 20 08 F6 A0 01 91 02 A2 00 A9 00 A0 +A0 01 91 0A A0 01 A2 00 B1 0A C9 02 20 D7 FC D0 +03 4C 2B F4 20 08 F6 A0 01 91 0A A2 00 A9 00 A0 06 20 29 FD A0 07 20 BE FB E0 03 D0 02 C9 E8 20 D7 FC F0 03 4C 4A F4 4C 56 F4 A0 06 A2 00 A9 01 -20 75 FA 4C 34 F4 A0 00 A2 00 18 A9 01 71 02 91 -02 A0 01 A2 00 B1 02 C9 00 20 B8 FC D0 81 A2 00 +20 75 FA 4C 34 F4 A0 00 A2 00 18 A9 01 71 0A 91 +0A A0 01 A2 00 B1 0A C9 00 20 B8 FC D0 81 A2 00 A9 00 A0 06 20 29 FD A0 07 20 BE FB E0 03 D0 02 C9 E8 20 D7 FC F0 03 4C 8D F4 4C 99 F4 A0 06 A2 00 A9 01 20 75 FA 4C 77 F4 A9 01 20 D8 FB 20 71 F5 A2 00 A9 00 4C A8 F4 20 AE FB 60 A2 00 A9 00 -20 FB FC A2 00 86 04 86 05 A9 00 20 0B FC A2 00 +20 FB FC A2 00 86 0C 86 0D A9 00 20 0B FC A2 00 A9 94 20 43 F1 4C C8 F4 60 20 11 FD 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 FB FC A2 01 A9 00 85 04 A9 00 -85 05 A9 AA 20 0B FC A2 00 A9 86 20 CE F0 A0 01 +F2 A2 00 A9 08 20 FB FC A2 01 A9 00 85 0C A9 00 +85 0D A9 AA 20 0B FC A2 00 A9 86 20 CE F0 A0 01 20 BE 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 96 FB 60 20 11 FD 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 FB FC A2 00 -86 04 86 05 A9 00 20 0B FC A2 00 A9 00 20 CE F0 +86 0C 86 0D A9 00 20 0B FC A2 00 A9 00 20 CE F0 A0 01 20 BE 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 96 FB 60 20 11 FD 20 51 FB A2 00 A9 FF 20 3F F2 A2 00 -A9 00 20 33 F2 A2 00 A9 FF 20 3F F2 A0 00 91 02 -A0 00 A2 00 B1 02 C9 FF 20 B8 FC D0 03 4C B1 F5 +A9 00 20 33 F2 A2 00 A9 FF 20 3F F2 A0 00 91 0A +A0 00 A2 00 B1 0A C9 FF 20 B8 FC D0 03 4C B1 F5 4C A3 F5 A2 00 A9 FF 20 3F F2 C9 FF 20 B8 FC D0 -F2 A2 00 A9 3A 20 FB FC A2 00 86 04 86 05 A9 00 +F2 A2 00 A9 3A 20 FB FC A2 00 86 0C 86 0D A9 00 20 0B FC A2 00 A9 00 20 CE F0 A0 02 20 BE 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 A4 FB 60 A2 00 A9 37 20 -FB FC A2 00 86 04 86 05 A9 00 20 0B FC A2 00 A9 +FB FC A2 00 86 0C 86 0D A9 00 20 0B FC A2 00 A9 00 20 43 F1 4C 07 F6 60 A2 00 A9 29 20 FB FC A2 -00 86 04 A9 40 85 05 A9 00 20 0B FC A2 00 A9 00 +00 86 0C A9 40 85 0D A9 00 20 0B FC A2 00 A9 00 20 43 F1 4C 26 F6 60 20 11 FD 20 74 FB A0 03 A2 -00 B1 02 4C 36 F6 A0 0E 20 85 FA 60 20 11 FD A9 +00 B1 0A 4C 36 F6 A0 0E 20 85 FA 60 20 11 FD A9 00 20 FB FC 20 5A FB A2 00 A9 00 A0 00 20 29 FD A0 01 20 BE FB E0 02 20 D7 FC F0 03 4C 62 F6 4C C4 F6 A9 79 A2 FE 20 11 FD A0 06 20 BE FB A0 00 20 B3 FB 20 11 FD A0 07 A2 00 A9 01 20 75 FA A0 -04 20 E6 FA A0 02 A2 00 B1 02 C9 1F 20 BE FC D0 +04 20 E6 FA A0 02 A2 00 B1 0A C9 1F 20 BE FC D0 03 4C A6 F6 A9 7D A2 FE 20 1A FB A2 00 A9 00 A0 -02 91 02 4C B8 F6 A2 00 A9 20 20 68 F0 A0 02 A2 -00 18 A9 01 71 02 91 02 A0 00 A2 00 A9 01 20 75 +02 91 0A 4C B8 F6 A2 00 A9 20 20 68 F0 A0 02 A2 +00 18 A9 01 71 0A 91 0A A0 00 A2 00 A9 01 20 75 FA 4C 50 F6 A9 7D A2 FE 20 1A FB 20 A9 FB 60 A0 -00 B1 18 E6 18 D0 02 E6 19 60 AD 3D 92 8D 38 92 +00 B1 20 E6 20 D0 02 E6 21 60 AD 3D 92 8D 38 92 20 7B F7 A9 38 A2 92 20 11 FD 20 F2 FC 4C 02 92 -A5 16 38 E9 02 85 16 B0 02 C6 17 60 AD 42 92 D0 +A5 1E 38 E9 02 85 1E B0 02 C6 1F 60 AD 42 92 D0 11 20 19 F7 4C 98 FA AD 42 92 D0 06 20 19 F7 4C -92 FA 20 19 F7 85 04 86 05 20 F0 F6 A0 01 B1 16 -AA 88 B1 16 60 A0 00 84 0A 84 0B B1 18 38 E9 30 -90 2C C9 0A B0 28 20 D3 F6 48 A5 0A A6 0B 06 0A -26 0B 06 0A 26 0B 65 0A 85 0A 8A 65 0B 85 0B 06 -0A 26 0B 68 65 0A 85 0A 90 D1 E6 0B B0 CD A5 0A -A6 0B 60 AC 44 92 EE 44 92 99 45 92 60 A9 45 A2 -92 18 6D 44 92 90 01 E8 4C 11 FD A5 1A A6 1B 4C +92 FA 20 19 F7 85 0C 86 0D 20 F0 F6 A0 01 B1 1E +AA 88 B1 1E 60 A0 00 84 12 84 13 B1 20 38 E9 30 +90 2C C9 0A B0 28 20 D3 F6 48 A5 12 A6 13 06 12 +26 13 06 12 26 13 65 12 85 12 8A 65 13 85 13 06 +12 26 13 68 65 12 85 12 90 D1 E6 13 B0 CD A5 12 +A6 13 60 AC 44 92 EE 44 92 99 45 92 60 A9 45 A2 +92 18 6D 44 92 90 01 E8 4C 11 FD A5 22 A6 23 4C 11 FD 20 DA F6 EE 3E 92 D0 F8 EE 3F 92 D0 F3 60 20 7B F7 AD 59 92 AE 5A 92 20 11 FD AD 5B 92 AE -5C 92 20 11 FD 4C 02 92 84 0A 20 0B FC 20 6D F7 -A5 0A 4C 3B FC 84 0A 20 0B FC 20 6D F7 A5 0A 4C -7C FC 48 A0 05 B9 16 00 99 32 92 88 10 F7 68 85 -16 86 17 20 8E FB 85 18 86 19 20 8E FB 85 1A 86 -1B A9 00 A8 91 1A C8 91 1A C8 B1 1A 8D 03 92 C8 -B1 1A 8D 04 92 A5 18 85 0A A5 19 85 0B A0 00 B1 -18 F0 0B C9 25 F0 07 C8 D0 F5 E6 19 D0 F1 98 18 -65 18 85 18 90 02 E6 19 38 E5 0A 85 0C A5 19 E5 -0B 85 0D 05 0C F0 25 20 74 FB A0 05 A5 1B 91 02 -88 A5 1A 91 02 88 A5 0B 91 02 88 A5 0A 91 02 88 -A5 0D 91 02 88 A5 0C 91 02 20 02 92 20 CF F6 AA -D0 0B A2 05 BD 32 92 95 16 CA 10 F8 60 C9 25 D0 -09 B1 18 C9 25 D0 09 20 D3 F6 20 DD F6 4C F5 F7 -A9 00 A2 0B 9D 39 92 CA 10 FA B1 18 C9 2D D0 05 +5C 92 20 11 FD 4C 02 92 84 12 20 0B FC 20 6D F7 +A5 12 4C 3B FC 84 12 20 0B FC 20 6D F7 A5 12 4C +7C FC 48 A0 05 B9 1E 00 99 32 92 88 10 F7 68 85 +1E 86 1F 20 8E FB 85 20 86 21 20 8E FB 85 22 86 +23 A9 00 A8 91 22 C8 91 22 C8 B1 22 8D 03 92 C8 +B1 22 8D 04 92 A5 20 85 12 A5 21 85 13 A0 00 B1 +20 F0 0B C9 25 F0 07 C8 D0 F5 E6 21 D0 F1 98 18 +65 20 85 20 90 02 E6 21 38 E5 12 85 14 A5 21 E5 +13 85 15 05 14 F0 25 20 74 FB A0 05 A5 23 91 0A +88 A5 22 91 0A 88 A5 13 91 0A 88 A5 12 91 0A 88 +A5 15 91 0A 88 A5 14 91 0A 20 02 92 20 CF F6 AA +D0 0B A2 05 BD 32 92 95 1E CA 10 F8 60 C9 25 D0 +09 B1 20 C9 25 D0 09 20 D3 F6 20 DD F6 4C F5 F7 +A9 00 A2 0B 9D 39 92 CA 10 FA B1 20 C9 2D D0 05 8E 39 92 F0 19 C9 2B D0 05 8E 3A 92 F0 10 C9 20 D0 05 8E 3B 92 F0 07 C9 23 D0 09 8E 3C 92 20 D3 -F6 4C 7A F8 A2 20 C9 30 D0 06 AA 20 D3 F6 B1 18 +F6 4C 7A F8 A2 20 C9 30 D0 06 AA 20 D3 F6 B1 20 8E 3D 92 C9 2A D0 09 20 D3 F6 20 19 F7 4C C3 F8 20 25 F7 8D 3E 92 8E 3F 92 8C 40 92 8C 41 92 B1 -18 C9 2E D0 1B 20 D3 F6 B1 18 C9 2A D0 09 20 D3 +20 C9 2E D0 1B 20 D3 F6 B1 20 C9 2A D0 09 20 D3 F6 20 19 F7 4C EA F8 20 25 F7 8D 40 92 8E 41 92 -B1 18 C9 7A F0 19 C9 68 F0 15 C9 74 F0 11 C9 6A +B1 20 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 42 92 20 D3 F6 4C F0 F8 8C 44 92 A2 45 8E 59 92 A2 92 8E 5A 92 20 D3 F6 C9 63 D0 0D 20 19 F7 8D 45 92 A2 00 A9 01 4C 1C FA C9 64 F0 04 C9 69 D0 2D A2 00 AD 3B 92 F0 02 A2 20 AD 3A 92 F0 02 A2 2B 8E 43 -92 20 07 F7 A4 05 30 0B AC 43 92 F0 06 8C 45 92 +92 20 07 F7 A4 0D 30 0B AC 43 92 F0 06 8C 45 92 EE 44 92 A0 0A 20 A8 F7 4C 13 FA C9 6E D0 15 20 -19 F7 85 0A 86 0B A0 00 B1 1A 91 0A C8 B1 1A 91 -0A 4C F5 F7 C9 6F D0 27 20 07 F7 AC 3C 92 F0 17 -48 86 12 05 12 05 04 05 05 0D 40 92 0D 41 92 F0 +19 F7 85 12 86 13 A0 00 B1 22 91 12 C8 B1 22 91 +12 4C F5 F7 C9 6F D0 27 20 07 F7 AC 3C 92 F0 17 +48 86 1A 05 1A 05 0C 05 0D 0D 40 92 0D 41 92 F0 06 A9 30 20 63 F7 68 A0 08 20 A8 F7 4C 13 FA C9 70 D0 0D A2 00 8E 42 92 E8 8E 3C 92 A9 78 D0 27 C9 73 D0 0C 20 19 F7 8D 59 92 8E 5A 92 4C 13 FA @@ -166,66 +166,66 @@ AD 41 92 A8 ED 5C 92 B0 06 8E 5B 92 8C 5C 92 38 AD 3E 92 ED 5B 92 AA AD 3F 92 ED 5C 92 B0 03 A9 00 AA 49 FF 8D 3F 92 8A 49 FF 8D 3E 92 AD 39 92 D0 03 20 85 F7 20 90 F7 AD 39 92 F0 03 20 85 F7 -4C F5 F7 A0 00 18 71 02 91 02 48 C8 8A 71 02 91 -02 AA 68 60 C8 48 18 98 65 02 85 02 90 02 E6 03 -68 60 A0 FF E0 80 B0 02 A0 00 84 04 84 05 60 E0 +4C F5 F7 A0 00 18 71 0A 91 0A 48 C8 8A 71 0A 91 +0A AA 68 60 C8 48 18 98 65 0A 85 0A 90 02 E6 0B +68 60 A0 FF E0 80 B0 02 A0 00 84 0C 84 0D 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 0A A9 F0 85 -0B A9 00 85 0C A9 92 85 0D A2 CD A9 FF 85 12 A0 -00 E8 F0 0D B1 0A 91 0C C8 D0 F6 E6 0B E6 0D D0 -F0 E6 12 D0 EF 60 8C 5D 92 88 88 98 18 65 02 85 -0A A6 03 90 01 E8 86 0B A0 01 B1 0A AA 88 B1 0A -20 11 FD A5 0A A6 0B 20 D8 FD AC 5D 92 4C 85 FA -85 0A 86 0B 20 75 F0 4C 1E FB 85 0A 86 0B A0 00 -B1 0A F0 0E C8 84 12 20 68 F0 A4 12 D0 F2 E6 0B +07 A9 52 A2 F0 4C 05 92 60 A9 00 85 12 A9 F0 85 +13 A9 00 85 14 A9 92 85 15 A2 CD A9 FF 85 1A A0 +00 E8 F0 0D B1 12 91 14 C8 D0 F6 E6 13 E6 15 D0 +F0 E6 1A D0 EF 60 8C 5D 92 88 88 98 18 65 0A 85 +12 A6 0B 90 01 E8 86 13 A0 01 B1 12 AA 88 B1 12 +20 11 FD A5 12 A6 13 20 D8 FD AC 5D 92 4C 85 FA +85 12 86 13 20 75 F0 4C 1E FB 85 12 86 13 A0 00 +B1 12 F0 0E C8 84 1A 20 68 F0 A4 1A D0 F2 E6 13 D0 EE 60 E0 00 D0 15 4A AA BD A7 FE 90 05 4A 4A 4A 4A 18 29 0F AA BD 9C FE A2 00 60 38 A9 00 AA -60 A4 02 D0 02 C6 03 C6 02 60 A5 02 38 E9 02 85 -02 90 01 60 C6 03 60 A5 02 38 E9 04 85 02 90 01 -60 C6 03 60 A5 02 38 E9 06 85 02 90 01 60 C6 03 -60 A5 02 38 E9 07 85 02 90 01 60 C6 03 60 A0 01 -B1 02 AA 88 B1 02 E6 02 F0 05 E6 02 F0 03 60 E6 -02 E6 03 60 A0 03 4C 85 FA A0 05 4C 85 FA A0 08 -4C 85 FA 85 0A 86 0B A2 00 B1 0A 60 A0 01 B1 02 -AA 88 B1 02 60 A0 03 B1 02 85 05 88 B1 02 85 04 -88 B1 02 AA 88 B1 02 60 A2 00 18 65 02 48 8A 65 -03 AA 68 60 18 49 FF 69 01 48 8A 49 FF 69 00 AA -A5 04 49 FF 69 00 85 04 A5 05 49 FF 69 00 85 05 -68 60 A9 00 AA A0 00 84 04 84 05 48 20 67 FB A0 -03 A5 05 91 02 88 A5 04 91 02 88 8A 91 02 68 88 -91 02 60 85 12 20 8E FB 85 0C 86 0D 85 0E 86 0F -20 E4 FC 20 8E FB 85 04 86 05 60 20 23 FC A6 05 -A4 12 C0 0A D0 39 A5 04 05 0B 05 0A D0 11 E0 80 -D0 0D A0 0B B9 90 FE 91 0C 88 10 F8 4C B3 FC 8A -10 1D A9 2D A0 00 91 0C E6 0C D0 02 E6 0D A5 0A -A6 0B 20 E4 FB 85 0A 86 0B 4C 7F FC 20 23 FC A9 -00 48 A0 20 A9 00 06 0A 26 0B 26 04 26 05 2A C5 -12 90 04 E5 12 E6 0A 88 D0 EC A8 B9 80 FE 48 A5 -0A 05 0B 05 04 05 05 D0 D9 A0 00 68 91 0C F0 03 -C8 D0 F8 A5 0E A6 0F 60 D0 06 A2 00 8A 60 D0 FA +60 A4 0A D0 02 C6 0B C6 0A 60 A5 0A 38 E9 02 85 +0A 90 01 60 C6 0B 60 A5 0A 38 E9 04 85 0A 90 01 +60 C6 0B 60 A5 0A 38 E9 06 85 0A 90 01 60 C6 0B +60 A5 0A 38 E9 07 85 0A 90 01 60 C6 0B 60 A0 01 +B1 0A AA 88 B1 0A E6 0A F0 05 E6 0A F0 03 60 E6 +0A E6 0B 60 A0 03 4C 85 FA A0 05 4C 85 FA A0 08 +4C 85 FA 85 12 86 13 A2 00 B1 12 60 A0 01 B1 0A +AA 88 B1 0A 60 A0 03 B1 0A 85 0D 88 B1 0A 85 0C +88 B1 0A AA 88 B1 0A 60 A2 00 18 65 0A 48 8A 65 +0B AA 68 60 18 49 FF 69 01 48 8A 49 FF 69 00 AA +A5 0C 49 FF 69 00 85 0C A5 0D 49 FF 69 00 85 0D +68 60 A9 00 AA A0 00 84 0C 84 0D 48 20 67 FB A0 +03 A5 0D 91 0A 88 A5 0C 91 0A 88 8A 91 0A 68 88 +91 0A 60 85 1A 20 8E FB 85 14 86 15 85 16 86 17 +20 E4 FC 20 8E FB 85 0C 86 0D 60 20 23 FC A6 0D +A4 1A C0 0A D0 39 A5 0C 05 13 05 12 D0 11 E0 80 +D0 0D A0 0B B9 90 FE 91 14 88 10 F8 4C B3 FC 8A +10 1D A9 2D A0 00 91 14 E6 14 D0 02 E6 15 A5 12 +A6 13 20 E4 FB 85 12 86 13 4C 7F FC 20 23 FC A9 +00 48 A0 20 A9 00 06 12 26 13 26 0C 26 0D 2A C5 +1A 90 04 E5 1A E6 12 88 D0 EC A8 B9 80 FE 48 A5 +12 05 13 05 0C 05 0D D0 D9 A0 00 68 91 14 F0 03 +C8 D0 F8 A5 16 A6 17 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 A0 01 B1 02 85 0B 88 B1 02 85 0A 4C -96 FB A9 01 4C 0F FD A0 00 B1 02 A4 02 F0 07 C6 -02 A0 00 91 02 60 C6 03 C6 02 91 02 60 A9 00 A2 -00 48 A5 02 38 E9 02 85 02 B0 02 C6 03 A0 01 8A -91 02 68 88 91 02 60 A0 00 91 02 C8 48 8A 91 02 -68 60 85 0C 86 0D 20 E4 FC B1 0A D1 0C D0 0C AA -F0 10 C8 D0 F4 E6 0B E6 0D D0 EE B0 03 A2 FF 60 -A2 01 60 85 0C 86 0D A2 00 A0 00 B1 0C F0 08 C8 -D0 F9 E6 0D E8 D0 F4 98 60 85 0A 86 0B 85 0C 86 -0D A0 00 B1 0A F0 14 20 37 FB 29 02 F0 06 B1 0A -69 20 91 0A C8 D0 EC E6 0B D0 E8 A5 0C A6 0D 60 -20 8E FB 85 0C 86 0D E8 8E 31 92 AA E8 8E 30 92 -20 E4 FC 20 8E FB 85 0E 86 0F A0 00 84 12 B1 0E -18 65 0C 91 0E C8 B1 0E 65 0D 91 0E CE 30 92 F0 -11 A4 12 B1 0A C8 D0 02 E6 0B 84 12 20 68 F0 4C -BC FD CE 31 92 D0 EA 60 85 0A 86 0B A9 00 8D 2A -92 8D 2B 92 A0 01 B1 02 AA 88 B1 02 20 11 FD A0 -02 A9 2A 91 02 C8 A9 92 91 02 A5 0A A6 0B 20 C2 -F7 AD 2A 92 AE 2B 92 60 A9 32 85 0A A9 92 85 0B -A9 00 A8 A2 00 F0 0A 91 0A C8 D0 FB E6 0B CA D0 -F6 C0 2C F0 05 91 0A C8 D0 F7 60 62 61 64 20 74 +00 8A 2A 60 A0 01 B1 0A 85 13 88 B1 0A 85 12 4C +96 FB A9 01 4C 0F FD A0 00 B1 0A A4 0A F0 07 C6 +0A A0 00 91 0A 60 C6 0B C6 0A 91 0A 60 A9 00 A2 +00 48 A5 0A 38 E9 02 85 0A B0 02 C6 0B A0 01 8A +91 0A 68 88 91 0A 60 A0 00 91 0A C8 48 8A 91 0A +68 60 85 14 86 15 20 E4 FC B1 12 D1 14 D0 0C AA +F0 10 C8 D0 F4 E6 13 E6 15 D0 EE B0 03 A2 FF 60 +A2 01 60 85 14 86 15 A2 00 A0 00 B1 14 F0 08 C8 +D0 F9 E6 15 E8 D0 F4 98 60 85 12 86 13 85 14 86 +15 A0 00 B1 12 F0 14 20 37 FB 29 02 F0 06 B1 12 +69 20 91 12 C8 D0 EC E6 13 D0 E8 A5 14 A6 15 60 +20 8E FB 85 14 86 15 E8 8E 31 92 AA E8 8E 30 92 +20 E4 FC 20 8E FB 85 16 86 17 A0 00 84 1A B1 16 +18 65 14 91 16 C8 B1 16 65 15 91 16 CE 30 92 F0 +11 A4 1A B1 12 C8 D0 02 E6 13 84 1A 20 68 F0 4C +BC FD CE 31 92 D0 EA 60 85 12 86 13 A9 00 8D 2A +92 8D 2B 92 A0 01 B1 0A AA 88 B1 0A 20 11 FD A0 +02 A9 2A 91 0A C8 A9 92 91 0A A5 12 A6 13 20 C2 +F7 AD 2A 92 AE 2B 92 60 A9 32 85 12 A9 92 85 13 +A9 00 A8 A2 00 F0 0A 91 12 C8 D0 FB E6 13 CA D0 +F6 C0 2C F0 05 91 12 C8 D0 F7 60 62 61 64 20 74 6F 6B 65 6E 3A 20 25 78 0D 0A 00 53 75 63 63 65 73 73 0D 0A 00 45 72 72 6F 72 0D 0A 00 53 74 61 72 74 0D 0A 00 6F 70 5F 63 6F 6E 64 20 65 72 72 diff --git a/hw/efinix_fpga/super6502.xml b/hw/efinix_fpga/super6502.xml index 44c05a4..14035dc 100644 --- a/hw/efinix_fpga/super6502.xml +++ b/hw/efinix_fpga/super6502.xml @@ -1,5 +1,5 @@ - + diff --git a/sw/bios/boot2.s b/sw/bios/boot2.s index 8e6b5c8..d3a8fb5 100644 --- a/sw/bios/boot2.s +++ b/sw/bios/boot2.s @@ -11,6 +11,14 @@ fatbuf = $A000 filebuf = $B000 +.zeropage + +tbase: .res 2 +tlen: .res 2 +dbase: .res 2 +dlen: .res 2 + + .segment "BOOTLOADER" sectors_per_cluster = $800D @@ -18,6 +26,20 @@ reserved_sectors = $800E fat_count = $8010 sectors_per_fat = $8024 +O65_NO_C65 = $00 +O65_MAGIC = $02 +O65_VERSION = $05 +O65_MODE = $06 +O65_TBASE = $08 +O65_TLEN = $0a +O65_DBASE = $0c +O65_DLEN = $0e +O65_BBASE = $10 +O65_BLEN = $12 +O65_ZBASE = $14 +O65_ZLEN = $16 +O65_STACK = $18 + _start: lda #str @@ -151,6 +173,60 @@ _start: ldx #>filebuf jsr _SD_printBuf + lda #word_str + jsr pushax + ldy #O65_TBASE + lda filebuf,y + sta tbase + iny + ldx filebuf,y + stx tbase + 1 + jsr pushax + ldy #$4 + jsr _cprintf + + lda #word_str + jsr pushax + ldy #O65_TLEN + lda filebuf,y + sta tlen + iny + ldx filebuf,y + stx tlen + 1 + jsr pushax + ldy #$4 + jsr _cprintf + + + lda #word_str + jsr pushax + ldy #O65_DBASE + lda filebuf,y + sta dbase + iny + ldx filebuf,y + stx dbase + 1 + jsr pushax + ldy #$4 + jsr _cprintf + + lda #word_str + jsr pushax + ldy #O65_DLEN + lda filebuf,y + sta dlen + iny + ldx filebuf,y + stx dlen + 1 + jsr pushax + ldy #$4 + jsr _cprintf + + @end: bra @end From a971e7a71736dad78f6180d80d6eebfc7da1cd05 Mon Sep 17 00:00:00 2001 From: Byron Lathi Date: Fri, 25 Aug 2023 20:03:03 -0700 Subject: [PATCH 2/4] Start reading options --- hw/efinix_fpga/init_hex.mem | 264 +++++++++++++++++------------------ hw/efinix_fpga/super6502.xml | 2 +- sw/bios/boot2.s | 50 +++---- 3 files changed, 159 insertions(+), 157 deletions(-) diff --git a/hw/efinix_fpga/init_hex.mem b/hw/efinix_fpga/init_hex.mem index b0c2127..96ab0e9 100644 --- a/hw/efinix_fpga/init_hex.mem +++ b/hw/efinix_fpga/init_hex.mem @@ -2,157 +2,157 @@ 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 90 FD 00 00 -00 00 A2 FF 9A D8 A9 00 85 0A A9 DF 85 0B 20 08 +00 00 A2 FF 9A D8 A9 00 85 0C A9 DF 85 0D 20 08 FE 20 B9 FA 20 52 F0 58 20 69 F2 6C FC FF 20 AD 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 0A AA A9 1B 20 4F F2 +0D 20 4F F2 60 DA 5A A8 B2 0C AA A9 1B 20 4F F2 A9 5B 20 4F F2 98 20 4F F2 A9 3B 20 4F F2 8A 20 4F F2 A9 48 20 4F F2 7A FA 60 DA A9 1B 20 4F F2 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 0A 09 40 20 3F F2 88 B1 0A 20 3F F2 88 10 +04 B1 0C 09 40 20 3F F2 88 B1 0C 20 3F F2 88 10 F8 68 09 01 20 3F F2 20 A9 FB 60 A2 08 A9 FF 20 -3F F2 C9 FF D0 03 CA D0 F4 60 85 12 86 13 20 EB -F0 92 12 A9 FF 20 3F F2 A0 01 91 12 20 96 FB 60 -AA 20 E4 FC A9 FF 20 3F F2 92 12 E6 12 D0 02 E6 -13 CA D0 F0 60 85 12 86 13 20 EB F0 C9 02 B0 12 -E6 12 D0 02 E6 12 A5 12 A6 13 20 11 FD A9 04 20 +3F F2 C9 FF D0 03 CA D0 F4 60 85 14 86 15 20 EB +F0 92 14 A9 FF 20 3F F2 A0 01 91 14 20 96 FB 60 +AA 20 E4 FC A9 FF 20 3F F2 92 14 E6 14 D0 02 E6 +15 CA D0 F0 60 85 14 86 15 20 EB F0 C9 02 B0 12 +E6 14 D0 02 E6 14 A5 14 A6 15 20 11 FD 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 14 86 15 A9 FF 92 14 20 E4 -FC A5 0A 85 16 A5 0B 85 17 20 51 FB A0 00 B1 16 -91 0A C8 B1 16 91 0A C8 B1 16 91 0A C8 B1 16 91 -0A A9 FF 20 3F F2 A9 00 20 33 F2 A9 FF 20 3F F2 -A9 11 A0 04 91 0A A9 00 20 CE F0 20 EB F0 C9 FF -F0 3F 85 1C A0 00 A9 FF 20 3F F2 85 1B A5 1B C9 +D0 FD CA D0 F8 60 85 16 86 17 A9 FF 92 16 20 E4 +FC A5 0C 85 18 A5 0D 85 19 20 51 FB A0 00 B1 18 +91 0C C8 B1 18 91 0C C8 B1 18 91 0C C8 B1 18 91 +0C A9 FF 20 3F F2 A9 00 20 33 F2 A9 FF 20 3F F2 +A9 11 A0 04 91 0C A9 00 20 CE F0 20 EB F0 C9 FF +F0 3F 85 1E A0 00 A9 FF 20 3F F2 85 1D A5 1D C9 FF D0 05 C8 D0 F0 80 23 A2 02 A0 00 A9 FF 20 3F -F2 92 12 E6 12 D0 02 E6 13 88 D0 F0 A0 00 CA D0 -EB A9 FF 20 3F F2 A9 FF 20 3F F2 A5 1B 92 14 A5 -1C 48 A9 FF 20 3F F2 A9 00 20 39 F2 A9 FF 20 3F +F2 92 14 E6 14 D0 02 E6 15 88 D0 F0 A0 00 CA D0 +EB A9 FF 20 3F F2 A9 FF 20 3F F2 A5 1D 92 16 A5 +1E 48 A9 FF 20 3F F2 A9 00 20 39 F2 A9 FF 20 3F 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 74 FB A2 00 86 0C -86 0D A9 00 20 0B FC 20 5A FB A9 4D A2 FE 20 1A +00 60 AD E7 EF A2 00 60 60 20 74 FB A2 00 86 0E +86 0F A9 00 20 0B FC 20 5A FB A9 4D A2 FE 20 1A FB 20 3A F3 C9 00 20 B8 FC D0 03 4C 98 F2 A9 45 A2 FE 20 1A FB 4C 2E F3 A9 3B A2 FE 20 1A FB A0 05 20 C7 FB 20 0B FC AD 00 92 AE 01 92 20 11 FD -A9 0C 20 D8 FB 20 96 F1 A0 07 91 0A A0 07 A2 00 -B1 0A C9 00 20 BE FC D0 03 4C DC F2 A0 06 A2 00 -B1 0A C9 FE 20 BE FC F0 03 4C E5 F2 A2 00 A9 00 +A9 0C 20 D8 FB 20 96 F1 A0 07 91 0C A0 07 A2 00 +B1 0C C9 00 20 BE FC D0 03 4C DC F2 A0 06 A2 00 +B1 0C C9 FE 20 BE 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 3C F6 4C 2B F3 A0 06 A2 00 B1 0A +92 AE 01 92 20 3C F6 4C 2B F3 A0 06 A2 00 B1 0C A2 00 29 F0 20 9F FA D0 03 4C 16 F3 A9 45 A2 FE 20 1A FB 4C 2B F3 A9 2B A2 FE 20 11 FD A0 08 A2 -00 B1 0A 20 11 FD A0 04 20 E6 FA 6C 00 92 4C 31 +00 B1 0C 20 11 FD A0 04 20 E6 FA 6C 00 92 4C 31 F3 4C 31 F3 A0 0C 20 85 FA 60 20 81 FB A9 00 20 FB FC 20 6E F1 4C 71 F3 A0 00 A2 00 18 A9 01 71 -0A 91 0A A0 00 A2 00 B1 0A C9 FF 20 BE FC D0 03 +0C 91 0C A0 00 A2 00 B1 0C C9 FF 20 BE FC D0 03 4C 71 F3 A9 6F A2 FE 20 1A FB A2 00 A9 01 4C A8 -F4 20 AC F4 A0 01 91 0A C9 01 20 B8 FC D0 C9 A2 +F4 20 AC F4 A0 01 91 0C C9 01 20 B8 FC D0 C9 A2 00 A9 00 A0 06 20 29 FD A0 07 20 BE FB E0 03 D0 02 C9 E8 20 D7 FC F0 03 4C 9E F3 4C AA F3 A0 06 A2 00 A9 01 20 75 FA 4C 88 F3 A9 01 20 D8 FB 20 -C9 F4 A0 01 A2 00 B1 0A C9 01 20 B8 FC D0 03 4C +C9 F4 A0 01 A2 00 B1 0C C9 01 20 B8 FC D0 03 4C D0 F3 A9 65 A2 FE 20 1A FB A2 00 A9 01 4C A8 F4 -A0 05 A2 00 B1 0A C9 AA 20 B8 FC D0 03 4C E7 F3 -A2 00 A9 01 4C A8 F4 A2 00 A9 00 A0 00 91 0A A0 -00 A2 00 B1 0A C9 FF 20 BE FC D0 03 4C 0D F4 A9 +A0 05 A2 00 B1 0C C9 AA 20 B8 FC D0 03 4C E7 F3 +A2 00 A9 01 4C A8 F4 A2 00 A9 00 A0 00 91 0C A0 +00 A2 00 B1 0C C9 FF 20 BE FC D0 03 4C 0D F4 A9 55 A2 FE 20 1A FB A2 00 A9 01 4C A8 F4 20 EB F5 -A0 01 91 0A A0 01 A2 00 B1 0A C9 02 20 D7 FC D0 -03 4C 2B F4 20 08 F6 A0 01 91 0A A2 00 A9 00 A0 +A0 01 91 0C A0 01 A2 00 B1 0C C9 02 20 D7 FC D0 +03 4C 2B F4 20 08 F6 A0 01 91 0C A2 00 A9 00 A0 06 20 29 FD A0 07 20 BE FB E0 03 D0 02 C9 E8 20 D7 FC F0 03 4C 4A F4 4C 56 F4 A0 06 A2 00 A9 01 -20 75 FA 4C 34 F4 A0 00 A2 00 18 A9 01 71 0A 91 -0A A0 01 A2 00 B1 0A C9 00 20 B8 FC D0 81 A2 00 +20 75 FA 4C 34 F4 A0 00 A2 00 18 A9 01 71 0C 91 +0C A0 01 A2 00 B1 0C C9 00 20 B8 FC D0 81 A2 00 A9 00 A0 06 20 29 FD A0 07 20 BE FB E0 03 D0 02 C9 E8 20 D7 FC F0 03 4C 8D F4 4C 99 F4 A0 06 A2 00 A9 01 20 75 FA 4C 77 F4 A9 01 20 D8 FB 20 71 F5 A2 00 A9 00 4C A8 F4 20 AE FB 60 A2 00 A9 00 -20 FB FC A2 00 86 0C 86 0D A9 00 20 0B FC A2 00 +20 FB FC A2 00 86 0E 86 0F A9 00 20 0B FC A2 00 A9 94 20 43 F1 4C C8 F4 60 20 11 FD 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 FB FC A2 01 A9 00 85 0C A9 00 -85 0D A9 AA 20 0B FC A2 00 A9 86 20 CE F0 A0 01 +F2 A2 00 A9 08 20 FB FC A2 01 A9 00 85 0E A9 00 +85 0F A9 AA 20 0B FC A2 00 A9 86 20 CE F0 A0 01 20 BE 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 96 FB 60 20 11 FD 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 FB FC A2 00 -86 0C 86 0D A9 00 20 0B FC A2 00 A9 00 20 CE F0 +86 0E 86 0F A9 00 20 0B FC A2 00 A9 00 20 CE F0 A0 01 20 BE 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 96 FB 60 20 11 FD 20 51 FB A2 00 A9 FF 20 3F F2 A2 00 -A9 00 20 33 F2 A2 00 A9 FF 20 3F F2 A0 00 91 0A -A0 00 A2 00 B1 0A C9 FF 20 B8 FC D0 03 4C B1 F5 +A9 00 20 33 F2 A2 00 A9 FF 20 3F F2 A0 00 91 0C +A0 00 A2 00 B1 0C C9 FF 20 B8 FC D0 03 4C B1 F5 4C A3 F5 A2 00 A9 FF 20 3F F2 C9 FF 20 B8 FC D0 -F2 A2 00 A9 3A 20 FB FC A2 00 86 0C 86 0D A9 00 +F2 A2 00 A9 3A 20 FB FC A2 00 86 0E 86 0F A9 00 20 0B FC A2 00 A9 00 20 CE F0 A0 02 20 BE 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 A4 FB 60 A2 00 A9 37 20 -FB FC A2 00 86 0C 86 0D A9 00 20 0B FC A2 00 A9 +FB FC A2 00 86 0E 86 0F A9 00 20 0B FC A2 00 A9 00 20 43 F1 4C 07 F6 60 A2 00 A9 29 20 FB FC A2 -00 86 0C A9 40 85 0D A9 00 20 0B FC A2 00 A9 00 +00 86 0E A9 40 85 0F A9 00 20 0B FC A2 00 A9 00 20 43 F1 4C 26 F6 60 20 11 FD 20 74 FB A0 03 A2 -00 B1 0A 4C 36 F6 A0 0E 20 85 FA 60 20 11 FD A9 +00 B1 0C 4C 36 F6 A0 0E 20 85 FA 60 20 11 FD A9 00 20 FB FC 20 5A FB A2 00 A9 00 A0 00 20 29 FD A0 01 20 BE FB E0 02 20 D7 FC F0 03 4C 62 F6 4C C4 F6 A9 79 A2 FE 20 11 FD A0 06 20 BE FB A0 00 20 B3 FB 20 11 FD A0 07 A2 00 A9 01 20 75 FA A0 -04 20 E6 FA A0 02 A2 00 B1 0A C9 1F 20 BE FC D0 +04 20 E6 FA A0 02 A2 00 B1 0C C9 1F 20 BE FC D0 03 4C A6 F6 A9 7D A2 FE 20 1A FB A2 00 A9 00 A0 -02 91 0A 4C B8 F6 A2 00 A9 20 20 68 F0 A0 02 A2 -00 18 A9 01 71 0A 91 0A A0 00 A2 00 A9 01 20 75 +02 91 0C 4C B8 F6 A2 00 A9 20 20 68 F0 A0 02 A2 +00 18 A9 01 71 0C 91 0C A0 00 A2 00 A9 01 20 75 FA 4C 50 F6 A9 7D A2 FE 20 1A FB 20 A9 FB 60 A0 -00 B1 20 E6 20 D0 02 E6 21 60 AD 3D 92 8D 38 92 +00 B1 22 E6 22 D0 02 E6 23 60 AD 3D 92 8D 38 92 20 7B F7 A9 38 A2 92 20 11 FD 20 F2 FC 4C 02 92 -A5 1E 38 E9 02 85 1E B0 02 C6 1F 60 AD 42 92 D0 +A5 20 38 E9 02 85 20 B0 02 C6 21 60 AD 42 92 D0 11 20 19 F7 4C 98 FA AD 42 92 D0 06 20 19 F7 4C -92 FA 20 19 F7 85 0C 86 0D 20 F0 F6 A0 01 B1 1E -AA 88 B1 1E 60 A0 00 84 12 84 13 B1 20 38 E9 30 -90 2C C9 0A B0 28 20 D3 F6 48 A5 12 A6 13 06 12 -26 13 06 12 26 13 65 12 85 12 8A 65 13 85 13 06 -12 26 13 68 65 12 85 12 90 D1 E6 13 B0 CD A5 12 -A6 13 60 AC 44 92 EE 44 92 99 45 92 60 A9 45 A2 -92 18 6D 44 92 90 01 E8 4C 11 FD A5 22 A6 23 4C +92 FA 20 19 F7 85 0E 86 0F 20 F0 F6 A0 01 B1 20 +AA 88 B1 20 60 A0 00 84 14 84 15 B1 22 38 E9 30 +90 2C C9 0A B0 28 20 D3 F6 48 A5 14 A6 15 06 14 +26 15 06 14 26 15 65 14 85 14 8A 65 15 85 15 06 +14 26 15 68 65 14 85 14 90 D1 E6 15 B0 CD A5 14 +A6 15 60 AC 44 92 EE 44 92 99 45 92 60 A9 45 A2 +92 18 6D 44 92 90 01 E8 4C 11 FD A5 24 A6 25 4C 11 FD 20 DA F6 EE 3E 92 D0 F8 EE 3F 92 D0 F3 60 20 7B F7 AD 59 92 AE 5A 92 20 11 FD AD 5B 92 AE -5C 92 20 11 FD 4C 02 92 84 12 20 0B FC 20 6D F7 -A5 12 4C 3B FC 84 12 20 0B FC 20 6D F7 A5 12 4C -7C FC 48 A0 05 B9 1E 00 99 32 92 88 10 F7 68 85 -1E 86 1F 20 8E FB 85 20 86 21 20 8E FB 85 22 86 -23 A9 00 A8 91 22 C8 91 22 C8 B1 22 8D 03 92 C8 -B1 22 8D 04 92 A5 20 85 12 A5 21 85 13 A0 00 B1 -20 F0 0B C9 25 F0 07 C8 D0 F5 E6 21 D0 F1 98 18 -65 20 85 20 90 02 E6 21 38 E5 12 85 14 A5 21 E5 -13 85 15 05 14 F0 25 20 74 FB A0 05 A5 23 91 0A -88 A5 22 91 0A 88 A5 13 91 0A 88 A5 12 91 0A 88 -A5 15 91 0A 88 A5 14 91 0A 20 02 92 20 CF F6 AA -D0 0B A2 05 BD 32 92 95 1E CA 10 F8 60 C9 25 D0 -09 B1 20 C9 25 D0 09 20 D3 F6 20 DD F6 4C F5 F7 -A9 00 A2 0B 9D 39 92 CA 10 FA B1 20 C9 2D D0 05 +5C 92 20 11 FD 4C 02 92 84 14 20 0B FC 20 6D F7 +A5 14 4C 3B FC 84 14 20 0B FC 20 6D F7 A5 14 4C +7C FC 48 A0 05 B9 20 00 99 32 92 88 10 F7 68 85 +20 86 21 20 8E FB 85 22 86 23 20 8E FB 85 24 86 +25 A9 00 A8 91 24 C8 91 24 C8 B1 24 8D 03 92 C8 +B1 24 8D 04 92 A5 22 85 14 A5 23 85 15 A0 00 B1 +22 F0 0B C9 25 F0 07 C8 D0 F5 E6 23 D0 F1 98 18 +65 22 85 22 90 02 E6 23 38 E5 14 85 16 A5 23 E5 +15 85 17 05 16 F0 25 20 74 FB A0 05 A5 25 91 0C +88 A5 24 91 0C 88 A5 15 91 0C 88 A5 14 91 0C 88 +A5 17 91 0C 88 A5 16 91 0C 20 02 92 20 CF F6 AA +D0 0B A2 05 BD 32 92 95 20 CA 10 F8 60 C9 25 D0 +09 B1 22 C9 25 D0 09 20 D3 F6 20 DD F6 4C F5 F7 +A9 00 A2 0B 9D 39 92 CA 10 FA B1 22 C9 2D D0 05 8E 39 92 F0 19 C9 2B D0 05 8E 3A 92 F0 10 C9 20 D0 05 8E 3B 92 F0 07 C9 23 D0 09 8E 3C 92 20 D3 -F6 4C 7A F8 A2 20 C9 30 D0 06 AA 20 D3 F6 B1 20 +F6 4C 7A F8 A2 20 C9 30 D0 06 AA 20 D3 F6 B1 22 8E 3D 92 C9 2A D0 09 20 D3 F6 20 19 F7 4C C3 F8 20 25 F7 8D 3E 92 8E 3F 92 8C 40 92 8C 41 92 B1 -20 C9 2E D0 1B 20 D3 F6 B1 20 C9 2A D0 09 20 D3 +22 C9 2E D0 1B 20 D3 F6 B1 22 C9 2A D0 09 20 D3 F6 20 19 F7 4C EA F8 20 25 F7 8D 40 92 8E 41 92 -B1 20 C9 7A F0 19 C9 68 F0 15 C9 74 F0 11 C9 6A +B1 22 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 42 92 20 D3 F6 4C F0 F8 8C 44 92 A2 45 8E 59 92 A2 92 8E 5A 92 20 D3 F6 C9 63 D0 0D 20 19 F7 8D 45 92 A2 00 A9 01 4C 1C FA C9 64 F0 04 C9 69 D0 2D A2 00 AD 3B 92 F0 02 A2 20 AD 3A 92 F0 02 A2 2B 8E 43 -92 20 07 F7 A4 0D 30 0B AC 43 92 F0 06 8C 45 92 +92 20 07 F7 A4 0F 30 0B AC 43 92 F0 06 8C 45 92 EE 44 92 A0 0A 20 A8 F7 4C 13 FA C9 6E D0 15 20 -19 F7 85 12 86 13 A0 00 B1 22 91 12 C8 B1 22 91 -12 4C F5 F7 C9 6F D0 27 20 07 F7 AC 3C 92 F0 17 -48 86 1A 05 1A 05 0C 05 0D 0D 40 92 0D 41 92 F0 +19 F7 85 14 86 15 A0 00 B1 24 91 14 C8 B1 24 91 +14 4C F5 F7 C9 6F D0 27 20 07 F7 AC 3C 92 F0 17 +48 86 1C 05 1C 05 0E 05 0F 0D 40 92 0D 41 92 F0 06 A9 30 20 63 F7 68 A0 08 20 A8 F7 4C 13 FA C9 70 D0 0D A2 00 8E 42 92 E8 8E 3C 92 A9 78 D0 27 C9 73 D0 0C 20 19 F7 8D 59 92 8E 5A 92 4C 13 FA @@ -166,66 +166,66 @@ AD 41 92 A8 ED 5C 92 B0 06 8E 5B 92 8C 5C 92 38 AD 3E 92 ED 5B 92 AA AD 3F 92 ED 5C 92 B0 03 A9 00 AA 49 FF 8D 3F 92 8A 49 FF 8D 3E 92 AD 39 92 D0 03 20 85 F7 20 90 F7 AD 39 92 F0 03 20 85 F7 -4C F5 F7 A0 00 18 71 0A 91 0A 48 C8 8A 71 0A 91 -0A AA 68 60 C8 48 18 98 65 0A 85 0A 90 02 E6 0B -68 60 A0 FF E0 80 B0 02 A0 00 84 0C 84 0D 60 E0 +4C F5 F7 A0 00 18 71 0C 91 0C 48 C8 8A 71 0C 91 +0C AA 68 60 C8 48 18 98 65 0C 85 0C 90 02 E6 0D +68 60 A0 FF E0 80 B0 02 A0 00 84 0E 84 0F 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 12 A9 F0 85 -13 A9 00 85 14 A9 92 85 15 A2 CD A9 FF 85 1A A0 -00 E8 F0 0D B1 12 91 14 C8 D0 F6 E6 13 E6 15 D0 -F0 E6 1A D0 EF 60 8C 5D 92 88 88 98 18 65 0A 85 -12 A6 0B 90 01 E8 86 13 A0 01 B1 12 AA 88 B1 12 -20 11 FD A5 12 A6 13 20 D8 FD AC 5D 92 4C 85 FA -85 12 86 13 20 75 F0 4C 1E FB 85 12 86 13 A0 00 -B1 12 F0 0E C8 84 1A 20 68 F0 A4 1A D0 F2 E6 13 +07 A9 52 A2 F0 4C 05 92 60 A9 00 85 14 A9 F0 85 +15 A9 00 85 16 A9 92 85 17 A2 CD A9 FF 85 1C A0 +00 E8 F0 0D B1 14 91 16 C8 D0 F6 E6 15 E6 17 D0 +F0 E6 1C D0 EF 60 8C 5D 92 88 88 98 18 65 0C 85 +14 A6 0D 90 01 E8 86 15 A0 01 B1 14 AA 88 B1 14 +20 11 FD A5 14 A6 15 20 D8 FD AC 5D 92 4C 85 FA +85 14 86 15 20 75 F0 4C 1E FB 85 14 86 15 A0 00 +B1 14 F0 0E C8 84 1C 20 68 F0 A4 1C D0 F2 E6 15 D0 EE 60 E0 00 D0 15 4A AA BD A7 FE 90 05 4A 4A 4A 4A 18 29 0F AA BD 9C FE A2 00 60 38 A9 00 AA -60 A4 0A D0 02 C6 0B C6 0A 60 A5 0A 38 E9 02 85 -0A 90 01 60 C6 0B 60 A5 0A 38 E9 04 85 0A 90 01 -60 C6 0B 60 A5 0A 38 E9 06 85 0A 90 01 60 C6 0B -60 A5 0A 38 E9 07 85 0A 90 01 60 C6 0B 60 A0 01 -B1 0A AA 88 B1 0A E6 0A F0 05 E6 0A F0 03 60 E6 -0A E6 0B 60 A0 03 4C 85 FA A0 05 4C 85 FA A0 08 -4C 85 FA 85 12 86 13 A2 00 B1 12 60 A0 01 B1 0A -AA 88 B1 0A 60 A0 03 B1 0A 85 0D 88 B1 0A 85 0C -88 B1 0A AA 88 B1 0A 60 A2 00 18 65 0A 48 8A 65 -0B AA 68 60 18 49 FF 69 01 48 8A 49 FF 69 00 AA -A5 0C 49 FF 69 00 85 0C A5 0D 49 FF 69 00 85 0D -68 60 A9 00 AA A0 00 84 0C 84 0D 48 20 67 FB A0 -03 A5 0D 91 0A 88 A5 0C 91 0A 88 8A 91 0A 68 88 -91 0A 60 85 1A 20 8E FB 85 14 86 15 85 16 86 17 -20 E4 FC 20 8E FB 85 0C 86 0D 60 20 23 FC A6 0D -A4 1A C0 0A D0 39 A5 0C 05 13 05 12 D0 11 E0 80 -D0 0D A0 0B B9 90 FE 91 14 88 10 F8 4C B3 FC 8A -10 1D A9 2D A0 00 91 14 E6 14 D0 02 E6 15 A5 12 -A6 13 20 E4 FB 85 12 86 13 4C 7F FC 20 23 FC A9 -00 48 A0 20 A9 00 06 12 26 13 26 0C 26 0D 2A C5 -1A 90 04 E5 1A E6 12 88 D0 EC A8 B9 80 FE 48 A5 -12 05 13 05 0C 05 0D D0 D9 A0 00 68 91 14 F0 03 -C8 D0 F8 A5 16 A6 17 60 D0 06 A2 00 8A 60 D0 FA +60 A4 0C D0 02 C6 0D C6 0C 60 A5 0C 38 E9 02 85 +0C 90 01 60 C6 0D 60 A5 0C 38 E9 04 85 0C 90 01 +60 C6 0D 60 A5 0C 38 E9 06 85 0C 90 01 60 C6 0D +60 A5 0C 38 E9 07 85 0C 90 01 60 C6 0D 60 A0 01 +B1 0C AA 88 B1 0C E6 0C F0 05 E6 0C F0 03 60 E6 +0C E6 0D 60 A0 03 4C 85 FA A0 05 4C 85 FA A0 08 +4C 85 FA 85 14 86 15 A2 00 B1 14 60 A0 01 B1 0C +AA 88 B1 0C 60 A0 03 B1 0C 85 0F 88 B1 0C 85 0E +88 B1 0C AA 88 B1 0C 60 A2 00 18 65 0C 48 8A 65 +0D AA 68 60 18 49 FF 69 01 48 8A 49 FF 69 00 AA +A5 0E 49 FF 69 00 85 0E A5 0F 49 FF 69 00 85 0F +68 60 A9 00 AA A0 00 84 0E 84 0F 48 20 67 FB A0 +03 A5 0F 91 0C 88 A5 0E 91 0C 88 8A 91 0C 68 88 +91 0C 60 85 1C 20 8E FB 85 16 86 17 85 18 86 19 +20 E4 FC 20 8E FB 85 0E 86 0F 60 20 23 FC A6 0F +A4 1C C0 0A D0 39 A5 0E 05 15 05 14 D0 11 E0 80 +D0 0D A0 0B B9 90 FE 91 16 88 10 F8 4C B3 FC 8A +10 1D A9 2D A0 00 91 16 E6 16 D0 02 E6 17 A5 14 +A6 15 20 E4 FB 85 14 86 15 4C 7F FC 20 23 FC A9 +00 48 A0 20 A9 00 06 14 26 15 26 0E 26 0F 2A C5 +1C 90 04 E5 1C E6 14 88 D0 EC A8 B9 80 FE 48 A5 +14 05 15 05 0E 05 0F D0 D9 A0 00 68 91 16 F0 03 +C8 D0 F8 A5 18 A6 19 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 A0 01 B1 0A 85 13 88 B1 0A 85 12 4C -96 FB A9 01 4C 0F FD A0 00 B1 0A A4 0A F0 07 C6 -0A A0 00 91 0A 60 C6 0B C6 0A 91 0A 60 A9 00 A2 -00 48 A5 0A 38 E9 02 85 0A B0 02 C6 0B A0 01 8A -91 0A 68 88 91 0A 60 A0 00 91 0A C8 48 8A 91 0A -68 60 85 14 86 15 20 E4 FC B1 12 D1 14 D0 0C AA -F0 10 C8 D0 F4 E6 13 E6 15 D0 EE B0 03 A2 FF 60 -A2 01 60 85 14 86 15 A2 00 A0 00 B1 14 F0 08 C8 -D0 F9 E6 15 E8 D0 F4 98 60 85 12 86 13 85 14 86 -15 A0 00 B1 12 F0 14 20 37 FB 29 02 F0 06 B1 12 -69 20 91 12 C8 D0 EC E6 13 D0 E8 A5 14 A6 15 60 -20 8E FB 85 14 86 15 E8 8E 31 92 AA E8 8E 30 92 -20 E4 FC 20 8E FB 85 16 86 17 A0 00 84 1A B1 16 -18 65 14 91 16 C8 B1 16 65 15 91 16 CE 30 92 F0 -11 A4 1A B1 12 C8 D0 02 E6 13 84 1A 20 68 F0 4C -BC FD CE 31 92 D0 EA 60 85 12 86 13 A9 00 8D 2A -92 8D 2B 92 A0 01 B1 0A AA 88 B1 0A 20 11 FD A0 -02 A9 2A 91 0A C8 A9 92 91 0A A5 12 A6 13 20 C2 -F7 AD 2A 92 AE 2B 92 60 A9 32 85 12 A9 92 85 13 -A9 00 A8 A2 00 F0 0A 91 12 C8 D0 FB E6 13 CA D0 -F6 C0 2C F0 05 91 12 C8 D0 F7 60 62 61 64 20 74 +00 8A 2A 60 A0 01 B1 0C 85 15 88 B1 0C 85 14 4C +96 FB A9 01 4C 0F FD A0 00 B1 0C A4 0C F0 07 C6 +0C A0 00 91 0C 60 C6 0D C6 0C 91 0C 60 A9 00 A2 +00 48 A5 0C 38 E9 02 85 0C B0 02 C6 0D A0 01 8A +91 0C 68 88 91 0C 60 A0 00 91 0C C8 48 8A 91 0C +68 60 85 16 86 17 20 E4 FC B1 14 D1 16 D0 0C AA +F0 10 C8 D0 F4 E6 15 E6 17 D0 EE B0 03 A2 FF 60 +A2 01 60 85 16 86 17 A2 00 A0 00 B1 16 F0 08 C8 +D0 F9 E6 17 E8 D0 F4 98 60 85 14 86 15 85 16 86 +17 A0 00 B1 14 F0 14 20 37 FB 29 02 F0 06 B1 14 +69 20 91 14 C8 D0 EC E6 15 D0 E8 A5 16 A6 17 60 +20 8E FB 85 16 86 17 E8 8E 31 92 AA E8 8E 30 92 +20 E4 FC 20 8E FB 85 18 86 19 A0 00 84 1C B1 18 +18 65 16 91 18 C8 B1 18 65 17 91 18 CE 30 92 F0 +11 A4 1C B1 14 C8 D0 02 E6 15 84 1C 20 68 F0 4C +BC FD CE 31 92 D0 EA 60 85 14 86 15 A9 00 8D 2A +92 8D 2B 92 A0 01 B1 0C AA 88 B1 0C 20 11 FD A0 +02 A9 2A 91 0C C8 A9 92 91 0C A5 14 A6 15 20 C2 +F7 AD 2A 92 AE 2B 92 60 A9 32 85 14 A9 92 85 15 +A9 00 A8 A2 00 F0 0A 91 14 C8 D0 FB E6 15 CA D0 +F6 C0 2C F0 05 91 14 C8 D0 F7 60 62 61 64 20 74 6F 6B 65 6E 3A 20 25 78 0D 0A 00 53 75 63 63 65 73 73 0D 0A 00 45 72 72 6F 72 0D 0A 00 53 74 61 72 74 0D 0A 00 6F 70 5F 63 6F 6E 64 20 65 72 72 diff --git a/hw/efinix_fpga/super6502.xml b/hw/efinix_fpga/super6502.xml index 14035dc..21a4bd2 100644 --- a/hw/efinix_fpga/super6502.xml +++ b/hw/efinix_fpga/super6502.xml @@ -1,5 +1,5 @@ - + diff --git a/sw/bios/boot2.s b/sw/bios/boot2.s index d3a8fb5..fc723ef 100644 --- a/sw/bios/boot2.s +++ b/sw/bios/boot2.s @@ -17,7 +17,8 @@ tbase: .res 2 tlen: .res 2 dbase: .res 2 dlen: .res 2 - +olen: .res 1 +otype: .res 1 .segment "BOOTLOADER" @@ -39,6 +40,7 @@ O65_BLEN = $12 O65_ZBASE = $14 O65_ZLEN = $16 O65_STACK = $18 +O65_OPT_START = $1A _start: lda #filebuf jsr _SD_printBuf - lda #word_str - jsr pushax ldy #O65_TBASE lda filebuf,y sta tbase iny ldx filebuf,y stx tbase + 1 - jsr pushax - ldy #$4 - jsr _cprintf - lda #word_str - jsr pushax ldy #O65_TLEN lda filebuf,y sta tlen iny ldx filebuf,y stx tlen + 1 - jsr pushax - ldy #$4 - jsr _cprintf - lda #word_str - jsr pushax ldy #O65_DBASE lda filebuf,y sta dbase iny ldx filebuf,y stx dbase + 1 - jsr pushax - ldy #$4 - jsr _cprintf - lda #word_str - jsr pushax ldy #O65_DLEN lda filebuf,y sta dlen iny ldx filebuf,y stx dlen + 1 + + ldy #O65_OPT_START +@opt_len: + lda #opt_str jsr pushax - ldy #$4 + lda filebuf,y + beq @opt_end + sta olen + phy + jsr pusha0 + ply + iny + lda filebuf,y + sta otype + phy + jsr pusha0 + ply + ldy #$6 jsr _cprintf +@opt_end: + ; do something @end: bra @end @@ -234,4 +234,6 @@ _start: str: .asciiz "boot2\r\n" kernel_str: .asciiz "KERNEL O65" _good: .asciiz "Found KERNEL\r\n" -word_str: .asciiz "Word Value: %x\r\n" \ No newline at end of file +word_str: .asciiz "Word Value: %x\r\n" + +opt_str: .asciiz "Opt Len: %x, Opt Type: %x\r\n" \ No newline at end of file From 4b2b1a425e3abacdb30d098e36dafdaa15d88191 Mon Sep 17 00:00:00 2001 From: Byron Lathi Date: Fri, 25 Aug 2023 21:26:28 -0700 Subject: [PATCH 3/4] Parse options properly --- sw/bios/boot2.s | 27 ++++++++++++++++++++++++--- sw/script/o65dump.py | 3 +++ 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/sw/bios/boot2.s b/sw/bios/boot2.s index fc723ef..4dd9e42 100644 --- a/sw/bios/boot2.s +++ b/sw/bios/boot2.s @@ -205,10 +205,12 @@ _start: stx dlen + 1 ldy #O65_OPT_START + phy @opt_len: lda #opt_str jsr pushax + ply lda filebuf,y beq @opt_end sta olen @@ -220,12 +222,30 @@ _start: sta otype phy jsr pusha0 - ply ldy #$6 jsr _cprintf + lda #word_str + jsr pushax + + pla + adc olen + dec + dec + pha + bra @opt_len + @opt_end: - ; do something + iny ; account for reading size + phy + lda #opt_done + jsr pushax + pla + jsr pusha0 + ldy #$4 + jsr _cprintf @end: bra @end @@ -236,4 +256,5 @@ kernel_str: .asciiz "KERNEL O65" _good: .asciiz "Found KERNEL\r\n" word_str: .asciiz "Word Value: %x\r\n" -opt_str: .asciiz "Opt Len: %x, Opt Type: %x\r\n" \ No newline at end of file +opt_str: .asciiz "Opt Len: %x, Opt Type: %x\r\n" +opt_done: .asciiz "Options done. total option length: %x\r\n" \ No newline at end of file diff --git a/sw/script/o65dump.py b/sw/script/o65dump.py index 637de94..4318bb8 100755 --- a/sw/script/o65dump.py +++ b/sw/script/o65dump.py @@ -37,6 +37,9 @@ class O65(): self.options.append((olen, otype, obytes)) olen = int.from_bytes(_file.read(1)) + text_offs = _file.tell() + print(f"Text offset: {text_offs}") + self.text = _file.read(self.header["tlen"]) self.data = _file.read(self.header["dlen"]) From d2700a64fbf6d2f426a3fc5c142dade23a1d2280 Mon Sep 17 00:00:00 2001 From: Byron Lathi Date: Sat, 26 Aug 2023 08:10:20 -0700 Subject: [PATCH 4/4] Read entire file into memory --- hw/efinix_fpga/init_hex.mem | 358 +++++++++++++++++------------------ hw/efinix_fpga/super6502.xml | 2 +- sw/bios/boot2.s | 68 ++++++- 3 files changed, 241 insertions(+), 187 deletions(-) diff --git a/hw/efinix_fpga/init_hex.mem b/hw/efinix_fpga/init_hex.mem index 96ab0e9..6302032 100644 --- a/hw/efinix_fpga/init_hex.mem +++ b/hw/efinix_fpga/init_hex.mem @@ -1,247 +1,247 @@ @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 90 FD 00 00 -00 00 A2 FF 9A D8 A9 00 85 0C A9 DF 85 0D 20 08 +26 92 20 FF FF A0 FF D0 E8 60 00 00 CC FD 00 00 +00 00 A2 FF 9A D8 A9 00 85 0E A9 DF 85 0F 20 44 FE 20 B9 FA 20 52 F0 58 20 69 F2 6C FC FF 20 AD 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 0C AA A9 1B 20 4F F2 +0D 20 4F F2 60 DA 5A A8 B2 0E AA A9 1B 20 4F F2 A9 5B 20 4F F2 98 20 4F F2 A9 3B 20 4F F2 8A 20 4F F2 A9 48 20 4F F2 7A FA 60 DA A9 1B 20 4F F2 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 0C 09 40 20 3F F2 88 B1 0C 20 3F F2 88 10 +04 B1 0E 09 40 20 3F F2 88 B1 0E 20 3F F2 88 10 F8 68 09 01 20 3F F2 20 A9 FB 60 A2 08 A9 FF 20 -3F F2 C9 FF D0 03 CA D0 F4 60 85 14 86 15 20 EB -F0 92 14 A9 FF 20 3F F2 A0 01 91 14 20 96 FB 60 -AA 20 E4 FC A9 FF 20 3F F2 92 14 E6 14 D0 02 E6 -15 CA D0 F0 60 85 14 86 15 20 EB F0 C9 02 B0 12 -E6 14 D0 02 E6 14 A5 14 A6 15 20 11 FD A9 04 20 +3F F2 C9 FF D0 03 CA D0 F4 60 85 16 86 17 20 EB +F0 92 16 A9 FF 20 3F F2 A0 01 91 16 20 96 FB 60 +AA 20 20 FD A9 FF 20 3F F2 92 16 E6 16 D0 02 E6 +17 CA D0 F0 60 85 16 86 17 20 EB F0 C9 02 B0 12 +E6 16 D0 02 E6 16 A5 16 A6 17 20 4D FD 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 16 86 17 A9 FF 92 16 20 E4 -FC A5 0C 85 18 A5 0D 85 19 20 51 FB A0 00 B1 18 -91 0C C8 B1 18 91 0C C8 B1 18 91 0C C8 B1 18 91 -0C A9 FF 20 3F F2 A9 00 20 33 F2 A9 FF 20 3F F2 -A9 11 A0 04 91 0C A9 00 20 CE F0 20 EB F0 C9 FF -F0 3F 85 1E A0 00 A9 FF 20 3F F2 85 1D A5 1D C9 +D0 FD CA D0 F8 60 85 18 86 19 A9 FF 92 18 20 20 +FD A5 0E 85 1A A5 0F 85 1B 20 51 FB A0 00 B1 1A +91 0E C8 B1 1A 91 0E C8 B1 1A 91 0E C8 B1 1A 91 +0E A9 FF 20 3F F2 A9 00 20 33 F2 A9 FF 20 3F F2 +A9 11 A0 04 91 0E A9 00 20 CE F0 20 EB F0 C9 FF +F0 3F 85 20 A0 00 A9 FF 20 3F F2 85 1F A5 1F C9 FF D0 05 C8 D0 F0 80 23 A2 02 A0 00 A9 FF 20 3F -F2 92 14 E6 14 D0 02 E6 15 88 D0 F0 A0 00 CA D0 -EB A9 FF 20 3F F2 A9 FF 20 3F F2 A5 1D 92 16 A5 -1E 48 A9 FF 20 3F F2 A9 00 20 39 F2 A9 FF 20 3F +F2 92 16 E6 16 D0 02 E6 17 88 D0 F0 A0 00 CA D0 +EB A9 FF 20 3F F2 A9 FF 20 3F F2 A5 1F 92 18 A5 +20 48 A9 FF 20 3F F2 A9 00 20 39 F2 A9 FF 20 3F 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 74 FB A2 00 86 0E -86 0F A9 00 20 0B FC 20 5A FB A9 4D A2 FE 20 1A -FB 20 3A F3 C9 00 20 B8 FC D0 03 4C 98 F2 A9 45 -A2 FE 20 1A FB 4C 2E F3 A9 3B A2 FE 20 1A FB A0 -05 20 C7 FB 20 0B FC AD 00 92 AE 01 92 20 11 FD -A9 0C 20 D8 FB 20 96 F1 A0 07 91 0C A0 07 A2 00 -B1 0C C9 00 20 BE FC D0 03 4C DC F2 A0 06 A2 00 -B1 0C C9 FE 20 BE FC F0 03 4C E5 F2 A2 00 A9 00 +00 60 AD E7 EF A2 00 60 60 20 74 FB A2 00 86 10 +86 11 A9 00 20 0B FC 20 5A FB A9 89 A2 FE 20 1A +FB 20 3A F3 C9 00 20 B8 FC D0 03 4C 98 F2 A9 81 +A2 FE 20 1A FB 4C 2E F3 A9 77 A2 FE 20 1A FB A0 +05 20 C7 FB 20 0B FC AD 00 92 AE 01 92 20 4D FD +A9 0C 20 D8 FB 20 96 F1 A0 07 91 0E A0 07 A2 00 +B1 0E C9 00 20 BE FC D0 03 4C DC F2 A0 06 A2 00 +B1 0E C9 FE 20 BE 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 3C F6 4C 2B F3 A0 06 A2 00 B1 0C -A2 00 29 F0 20 9F FA D0 03 4C 16 F3 A9 45 A2 FE -20 1A FB 4C 2B F3 A9 2B A2 FE 20 11 FD A0 08 A2 -00 B1 0C 20 11 FD A0 04 20 E6 FA 6C 00 92 4C 31 +92 AE 01 92 20 3C F6 4C 2B F3 A0 06 A2 00 B1 0E +A2 00 29 F0 20 9F FA D0 03 4C 16 F3 A9 81 A2 FE +20 1A FB 4C 2B F3 A9 67 A2 FE 20 4D FD A0 08 A2 +00 B1 0E 20 4D FD A0 04 20 E6 FA 6C 00 92 4C 31 F3 4C 31 F3 A0 0C 20 85 FA 60 20 81 FB A9 00 20 -FB FC 20 6E F1 4C 71 F3 A0 00 A2 00 18 A9 01 71 -0C 91 0C A0 00 A2 00 B1 0C C9 FF 20 BE FC D0 03 -4C 71 F3 A9 6F A2 FE 20 1A FB A2 00 A9 01 4C A8 -F4 20 AC F4 A0 01 91 0C C9 01 20 B8 FC D0 C9 A2 -00 A9 00 A0 06 20 29 FD A0 07 20 BE FB E0 03 D0 +37 FD 20 6E F1 4C 71 F3 A0 00 A2 00 18 A9 01 71 +0E 91 0E A0 00 A2 00 B1 0E C9 FF 20 BE FC D0 03 +4C 71 F3 A9 AB A2 FE 20 1A FB A2 00 A9 01 4C A8 +F4 20 AC F4 A0 01 91 0E C9 01 20 B8 FC D0 C9 A2 +00 A9 00 A0 06 20 65 FD A0 07 20 BE FB E0 03 D0 02 C9 E8 20 D7 FC F0 03 4C 9E F3 4C AA F3 A0 06 A2 00 A9 01 20 75 FA 4C 88 F3 A9 01 20 D8 FB 20 -C9 F4 A0 01 A2 00 B1 0C C9 01 20 B8 FC D0 03 4C -D0 F3 A9 65 A2 FE 20 1A FB A2 00 A9 01 4C A8 F4 -A0 05 A2 00 B1 0C C9 AA 20 B8 FC D0 03 4C E7 F3 -A2 00 A9 01 4C A8 F4 A2 00 A9 00 A0 00 91 0C A0 -00 A2 00 B1 0C C9 FF 20 BE FC D0 03 4C 0D F4 A9 -55 A2 FE 20 1A FB A2 00 A9 01 4C A8 F4 20 EB F5 -A0 01 91 0C A0 01 A2 00 B1 0C C9 02 20 D7 FC D0 -03 4C 2B F4 20 08 F6 A0 01 91 0C A2 00 A9 00 A0 -06 20 29 FD A0 07 20 BE FB E0 03 D0 02 C9 E8 20 +C9 F4 A0 01 A2 00 B1 0E C9 01 20 B8 FC D0 03 4C +D0 F3 A9 A1 A2 FE 20 1A FB A2 00 A9 01 4C A8 F4 +A0 05 A2 00 B1 0E C9 AA 20 B8 FC D0 03 4C E7 F3 +A2 00 A9 01 4C A8 F4 A2 00 A9 00 A0 00 91 0E A0 +00 A2 00 B1 0E C9 FF 20 BE FC D0 03 4C 0D F4 A9 +91 A2 FE 20 1A FB A2 00 A9 01 4C A8 F4 20 EB F5 +A0 01 91 0E A0 01 A2 00 B1 0E C9 02 20 D7 FC D0 +03 4C 2B F4 20 08 F6 A0 01 91 0E A2 00 A9 00 A0 +06 20 65 FD A0 07 20 BE FB E0 03 D0 02 C9 E8 20 D7 FC F0 03 4C 4A F4 4C 56 F4 A0 06 A2 00 A9 01 -20 75 FA 4C 34 F4 A0 00 A2 00 18 A9 01 71 0C 91 -0C A0 01 A2 00 B1 0C C9 00 20 B8 FC D0 81 A2 00 -A9 00 A0 06 20 29 FD A0 07 20 BE FB E0 03 D0 02 +20 75 FA 4C 34 F4 A0 00 A2 00 18 A9 01 71 0E 91 +0E A0 01 A2 00 B1 0E C9 00 20 B8 FC D0 81 A2 00 +A9 00 A0 06 20 65 FD A0 07 20 BE FB E0 03 D0 02 C9 E8 20 D7 FC F0 03 4C 8D F4 4C 99 F4 A0 06 A2 00 A9 01 20 75 FA 4C 77 F4 A9 01 20 D8 FB 20 71 F5 A2 00 A9 00 4C A8 F4 20 AE FB 60 A2 00 A9 00 -20 FB FC A2 00 86 0E 86 0F A9 00 20 0B FC A2 00 -A9 94 20 43 F1 4C C8 F4 60 20 11 FD A2 00 A9 FF +20 37 FD A2 00 86 10 86 11 A9 00 20 0B FC A2 00 +A9 94 20 43 F1 4C C8 F4 60 20 4D FD 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 FB FC A2 01 A9 00 85 0E A9 00 -85 0F A9 AA 20 0B FC A2 00 A9 86 20 CE F0 A0 01 +F2 A2 00 A9 08 20 37 FD A2 01 A9 00 85 10 A9 00 +85 11 A9 AA 20 0B FC A2 00 A9 86 20 CE F0 A0 01 20 BE 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 96 FB 60 20 -11 FD 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 FB FC A2 00 -86 0E 86 0F A9 00 20 0B FC A2 00 A9 00 20 CE F0 +4D FD 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 37 FD A2 00 +86 10 86 11 A9 00 20 0B FC A2 00 A9 00 20 CE F0 A0 01 20 BE 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 96 FB -60 20 11 FD 20 51 FB A2 00 A9 FF 20 3F F2 A2 00 -A9 00 20 33 F2 A2 00 A9 FF 20 3F F2 A0 00 91 0C -A0 00 A2 00 B1 0C C9 FF 20 B8 FC D0 03 4C B1 F5 +60 20 4D FD 20 51 FB A2 00 A9 FF 20 3F F2 A2 00 +A9 00 20 33 F2 A2 00 A9 FF 20 3F F2 A0 00 91 0E +A0 00 A2 00 B1 0E C9 FF 20 B8 FC D0 03 4C B1 F5 4C A3 F5 A2 00 A9 FF 20 3F F2 C9 FF 20 B8 FC D0 -F2 A2 00 A9 3A 20 FB FC A2 00 86 0E 86 0F A9 00 +F2 A2 00 A9 3A 20 37 FD A2 00 86 10 86 11 A9 00 20 0B FC A2 00 A9 00 20 CE F0 A0 02 20 BE 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 A4 FB 60 A2 00 A9 37 20 -FB FC A2 00 86 0E 86 0F A9 00 20 0B FC A2 00 A9 -00 20 43 F1 4C 07 F6 60 A2 00 A9 29 20 FB FC A2 -00 86 0E A9 40 85 0F A9 00 20 0B FC A2 00 A9 00 -20 43 F1 4C 26 F6 60 20 11 FD 20 74 FB A0 03 A2 -00 B1 0C 4C 36 F6 A0 0E 20 85 FA 60 20 11 FD A9 -00 20 FB FC 20 5A FB A2 00 A9 00 A0 00 20 29 FD +37 FD A2 00 86 10 86 11 A9 00 20 0B FC A2 00 A9 +00 20 43 F1 4C 07 F6 60 A2 00 A9 29 20 37 FD A2 +00 86 10 A9 40 85 11 A9 00 20 0B FC A2 00 A9 00 +20 43 F1 4C 26 F6 60 20 4D FD 20 74 FB A0 03 A2 +00 B1 0E 4C 36 F6 A0 0E 20 85 FA 60 20 4D FD A9 +00 20 37 FD 20 5A FB A2 00 A9 00 A0 00 20 65 FD A0 01 20 BE FB E0 02 20 D7 FC F0 03 4C 62 F6 4C -C4 F6 A9 79 A2 FE 20 11 FD A0 06 20 BE FB A0 00 -20 B3 FB 20 11 FD A0 07 A2 00 A9 01 20 75 FA A0 -04 20 E6 FA A0 02 A2 00 B1 0C C9 1F 20 BE FC D0 -03 4C A6 F6 A9 7D A2 FE 20 1A FB A2 00 A9 00 A0 -02 91 0C 4C B8 F6 A2 00 A9 20 20 68 F0 A0 02 A2 -00 18 A9 01 71 0C 91 0C A0 00 A2 00 A9 01 20 75 -FA 4C 50 F6 A9 7D A2 FE 20 1A FB 20 A9 FB 60 A0 -00 B1 22 E6 22 D0 02 E6 23 60 AD 3D 92 8D 38 92 -20 7B F7 A9 38 A2 92 20 11 FD 20 F2 FC 4C 02 92 -A5 20 38 E9 02 85 20 B0 02 C6 21 60 AD 42 92 D0 +C4 F6 A9 B5 A2 FE 20 4D FD A0 06 20 BE FB A0 00 +20 B3 FB 20 4D FD A0 07 A2 00 A9 01 20 75 FA A0 +04 20 E6 FA A0 02 A2 00 B1 0E C9 1F 20 BE FC D0 +03 4C A6 F6 A9 B9 A2 FE 20 1A FB A2 00 A9 00 A0 +02 91 0E 4C B8 F6 A2 00 A9 20 20 68 F0 A0 02 A2 +00 18 A9 01 71 0E 91 0E A0 00 A2 00 A9 01 20 75 +FA 4C 50 F6 A9 B9 A2 FE 20 1A FB 20 A9 FB 60 A0 +00 B1 24 E6 24 D0 02 E6 25 60 AD 3D 92 8D 38 92 +20 7B F7 A9 38 A2 92 20 4D FD 20 2E FD 4C 02 92 +A5 22 38 E9 02 85 22 B0 02 C6 23 60 AD 42 92 D0 11 20 19 F7 4C 98 FA AD 42 92 D0 06 20 19 F7 4C -92 FA 20 19 F7 85 0E 86 0F 20 F0 F6 A0 01 B1 20 -AA 88 B1 20 60 A0 00 84 14 84 15 B1 22 38 E9 30 -90 2C C9 0A B0 28 20 D3 F6 48 A5 14 A6 15 06 14 -26 15 06 14 26 15 65 14 85 14 8A 65 15 85 15 06 -14 26 15 68 65 14 85 14 90 D1 E6 15 B0 CD A5 14 -A6 15 60 AC 44 92 EE 44 92 99 45 92 60 A9 45 A2 -92 18 6D 44 92 90 01 E8 4C 11 FD A5 24 A6 25 4C -11 FD 20 DA F6 EE 3E 92 D0 F8 EE 3F 92 D0 F3 60 -20 7B F7 AD 59 92 AE 5A 92 20 11 FD AD 5B 92 AE -5C 92 20 11 FD 4C 02 92 84 14 20 0B FC 20 6D F7 -A5 14 4C 3B FC 84 14 20 0B FC 20 6D F7 A5 14 4C -7C FC 48 A0 05 B9 20 00 99 32 92 88 10 F7 68 85 -20 86 21 20 8E FB 85 22 86 23 20 8E FB 85 24 86 -25 A9 00 A8 91 24 C8 91 24 C8 B1 24 8D 03 92 C8 -B1 24 8D 04 92 A5 22 85 14 A5 23 85 15 A0 00 B1 -22 F0 0B C9 25 F0 07 C8 D0 F5 E6 23 D0 F1 98 18 -65 22 85 22 90 02 E6 23 38 E5 14 85 16 A5 23 E5 -15 85 17 05 16 F0 25 20 74 FB A0 05 A5 25 91 0C -88 A5 24 91 0C 88 A5 15 91 0C 88 A5 14 91 0C 88 -A5 17 91 0C 88 A5 16 91 0C 20 02 92 20 CF F6 AA -D0 0B A2 05 BD 32 92 95 20 CA 10 F8 60 C9 25 D0 -09 B1 22 C9 25 D0 09 20 D3 F6 20 DD F6 4C F5 F7 -A9 00 A2 0B 9D 39 92 CA 10 FA B1 22 C9 2D D0 05 +92 FA 20 19 F7 85 10 86 11 20 F0 F6 A0 01 B1 22 +AA 88 B1 22 60 A0 00 84 16 84 17 B1 24 38 E9 30 +90 2C C9 0A B0 28 20 D3 F6 48 A5 16 A6 17 06 16 +26 17 06 16 26 17 65 16 85 16 8A 65 17 85 17 06 +16 26 17 68 65 16 85 16 90 D1 E6 17 B0 CD A5 16 +A6 17 60 AC 44 92 EE 44 92 99 45 92 60 A9 45 A2 +92 18 6D 44 92 90 01 E8 4C 4D FD A5 26 A6 27 4C +4D FD 20 DA F6 EE 3E 92 D0 F8 EE 3F 92 D0 F3 60 +20 7B F7 AD 59 92 AE 5A 92 20 4D FD AD 5B 92 AE +5C 92 20 4D FD 4C 02 92 84 16 20 0B FC 20 6D F7 +A5 16 4C 3B FC 84 16 20 0B FC 20 6D F7 A5 16 4C +7C FC 48 A0 05 B9 22 00 99 32 92 88 10 F7 68 85 +22 86 23 20 8E FB 85 24 86 25 20 8E FB 85 26 86 +27 A9 00 A8 91 26 C8 91 26 C8 B1 26 8D 03 92 C8 +B1 26 8D 04 92 A5 24 85 16 A5 25 85 17 A0 00 B1 +24 F0 0B C9 25 F0 07 C8 D0 F5 E6 25 D0 F1 98 18 +65 24 85 24 90 02 E6 25 38 E5 16 85 18 A5 25 E5 +17 85 19 05 18 F0 25 20 74 FB A0 05 A5 27 91 0E +88 A5 26 91 0E 88 A5 17 91 0E 88 A5 16 91 0E 88 +A5 19 91 0E 88 A5 18 91 0E 20 02 92 20 CF F6 AA +D0 0B A2 05 BD 32 92 95 22 CA 10 F8 60 C9 25 D0 +09 B1 24 C9 25 D0 09 20 D3 F6 20 DD F6 4C F5 F7 +A9 00 A2 0B 9D 39 92 CA 10 FA B1 24 C9 2D D0 05 8E 39 92 F0 19 C9 2B D0 05 8E 3A 92 F0 10 C9 20 D0 05 8E 3B 92 F0 07 C9 23 D0 09 8E 3C 92 20 D3 -F6 4C 7A F8 A2 20 C9 30 D0 06 AA 20 D3 F6 B1 22 +F6 4C 7A F8 A2 20 C9 30 D0 06 AA 20 D3 F6 B1 24 8E 3D 92 C9 2A D0 09 20 D3 F6 20 19 F7 4C C3 F8 20 25 F7 8D 3E 92 8E 3F 92 8C 40 92 8C 41 92 B1 -22 C9 2E D0 1B 20 D3 F6 B1 22 C9 2A D0 09 20 D3 +24 C9 2E D0 1B 20 D3 F6 B1 24 C9 2A D0 09 20 D3 F6 20 19 F7 4C EA F8 20 25 F7 8D 40 92 8E 41 92 -B1 22 C9 7A F0 19 C9 68 F0 15 C9 74 F0 11 C9 6A +B1 24 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 42 92 20 D3 F6 4C F0 F8 8C 44 92 A2 45 8E 59 92 A2 92 8E 5A 92 20 D3 F6 C9 63 D0 0D 20 19 F7 8D 45 92 A2 00 A9 01 4C 1C FA C9 64 F0 04 C9 69 D0 2D A2 00 AD 3B 92 F0 02 A2 20 AD 3A 92 F0 02 A2 2B 8E 43 -92 20 07 F7 A4 0F 30 0B AC 43 92 F0 06 8C 45 92 +92 20 07 F7 A4 11 30 0B AC 43 92 F0 06 8C 45 92 EE 44 92 A0 0A 20 A8 F7 4C 13 FA C9 6E D0 15 20 -19 F7 85 14 86 15 A0 00 B1 24 91 14 C8 B1 24 91 -14 4C F5 F7 C9 6F D0 27 20 07 F7 AC 3C 92 F0 17 -48 86 1C 05 1C 05 0E 05 0F 0D 40 92 0D 41 92 F0 +19 F7 85 16 86 17 A0 00 B1 26 91 16 C8 B1 26 91 +16 4C F5 F7 C9 6F D0 27 20 07 F7 AC 3C 92 F0 17 +48 86 1E 05 1E 05 10 05 11 0D 40 92 0D 41 92 F0 06 A9 30 20 63 F7 68 A0 08 20 A8 F7 4C 13 FA C9 70 D0 0D A2 00 8E 42 92 E8 8E 3C 92 A9 78 D0 27 C9 73 D0 0C 20 19 F7 8D 59 92 8E 5A 92 4C 13 FA C9 75 D0 0B 20 FC F6 A0 0A 20 B5 F7 4C 13 FA C9 78 F0 04 C9 58 D0 29 48 AD 3C 92 F0 0A A9 30 20 63 F7 A9 58 20 63 F7 20 FC F6 A0 10 20 B5 F7 68 -C9 78 D0 09 AD 59 92 AE 5A 92 20 69 FD 4C 13 FA -4C F5 F7 AD 59 92 AE 5A 92 20 53 FD 8D 5B 92 8E +C9 78 D0 09 AD 59 92 AE 5A 92 20 A5 FD 4C 13 FA +4C F5 F7 AD 59 92 AE 5A 92 20 8F FD 8D 5B 92 8E 5C 92 AD 40 92 0D 41 92 F0 15 AE 40 92 EC 5B 92 AD 41 92 A8 ED 5C 92 B0 06 8E 5B 92 8C 5C 92 38 AD 3E 92 ED 5B 92 AA AD 3F 92 ED 5C 92 B0 03 A9 00 AA 49 FF 8D 3F 92 8A 49 FF 8D 3E 92 AD 39 92 D0 03 20 85 F7 20 90 F7 AD 39 92 F0 03 20 85 F7 -4C F5 F7 A0 00 18 71 0C 91 0C 48 C8 8A 71 0C 91 -0C AA 68 60 C8 48 18 98 65 0C 85 0C 90 02 E6 0D -68 60 A0 FF E0 80 B0 02 A0 00 84 0E 84 0F 60 E0 +4C F5 F7 A0 00 18 71 0E 91 0E 48 C8 8A 71 0E 91 +0E AA 68 60 C8 48 18 98 65 0E 85 0E 90 02 E6 0F +68 60 A0 FF E0 80 B0 02 A0 00 84 10 84 11 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 14 A9 F0 85 -15 A9 00 85 16 A9 92 85 17 A2 CD A9 FF 85 1C A0 -00 E8 F0 0D B1 14 91 16 C8 D0 F6 E6 15 E6 17 D0 -F0 E6 1C D0 EF 60 8C 5D 92 88 88 98 18 65 0C 85 -14 A6 0D 90 01 E8 86 15 A0 01 B1 14 AA 88 B1 14 -20 11 FD A5 14 A6 15 20 D8 FD AC 5D 92 4C 85 FA -85 14 86 15 20 75 F0 4C 1E FB 85 14 86 15 A0 00 -B1 14 F0 0E C8 84 1C 20 68 F0 A4 1C D0 F2 E6 15 -D0 EE 60 E0 00 D0 15 4A AA BD A7 FE 90 05 4A 4A -4A 4A 18 29 0F AA BD 9C FE A2 00 60 38 A9 00 AA -60 A4 0C D0 02 C6 0D C6 0C 60 A5 0C 38 E9 02 85 -0C 90 01 60 C6 0D 60 A5 0C 38 E9 04 85 0C 90 01 -60 C6 0D 60 A5 0C 38 E9 06 85 0C 90 01 60 C6 0D -60 A5 0C 38 E9 07 85 0C 90 01 60 C6 0D 60 A0 01 -B1 0C AA 88 B1 0C E6 0C F0 05 E6 0C F0 03 60 E6 -0C E6 0D 60 A0 03 4C 85 FA A0 05 4C 85 FA A0 08 -4C 85 FA 85 14 86 15 A2 00 B1 14 60 A0 01 B1 0C -AA 88 B1 0C 60 A0 03 B1 0C 85 0F 88 B1 0C 85 0E -88 B1 0C AA 88 B1 0C 60 A2 00 18 65 0C 48 8A 65 -0D AA 68 60 18 49 FF 69 01 48 8A 49 FF 69 00 AA -A5 0E 49 FF 69 00 85 0E A5 0F 49 FF 69 00 85 0F -68 60 A9 00 AA A0 00 84 0E 84 0F 48 20 67 FB A0 -03 A5 0F 91 0C 88 A5 0E 91 0C 88 8A 91 0C 68 88 -91 0C 60 85 1C 20 8E FB 85 16 86 17 85 18 86 19 -20 E4 FC 20 8E FB 85 0E 86 0F 60 20 23 FC A6 0F -A4 1C C0 0A D0 39 A5 0E 05 15 05 14 D0 11 E0 80 -D0 0D A0 0B B9 90 FE 91 16 88 10 F8 4C B3 FC 8A -10 1D A9 2D A0 00 91 16 E6 16 D0 02 E6 17 A5 14 -A6 15 20 E4 FB 85 14 86 15 4C 7F FC 20 23 FC A9 -00 48 A0 20 A9 00 06 14 26 15 26 0E 26 0F 2A C5 -1C 90 04 E5 1C E6 14 88 D0 EC A8 B9 80 FE 48 A5 -14 05 15 05 0E 05 0F D0 D9 A0 00 68 91 16 F0 03 -C8 D0 F8 A5 18 A6 19 60 D0 06 A2 00 8A 60 D0 FA +07 A9 52 A2 F0 4C 05 92 60 A9 00 85 16 A9 F0 85 +17 A9 00 85 18 A9 92 85 19 A2 CD A9 FF 85 1E A0 +00 E8 F0 0D B1 16 91 18 C8 D0 F6 E6 17 E6 19 D0 +F0 E6 1E D0 EF 60 8C 5D 92 88 88 98 18 65 0E 85 +16 A6 0F 90 01 E8 86 17 A0 01 B1 16 AA 88 B1 16 +20 4D FD A5 16 A6 17 20 14 FE AC 5D 92 4C 85 FA +85 16 86 17 20 75 F0 4C 1E FB 85 16 86 17 A0 00 +B1 16 F0 0E C8 84 1E 20 68 F0 A4 1E D0 F2 E6 17 +D0 EE 60 E0 00 D0 15 4A AA BD E3 FE 90 05 4A 4A +4A 4A 18 29 0F AA BD D8 FE A2 00 60 38 A9 00 AA +60 A4 0E D0 02 C6 0F C6 0E 60 A5 0E 38 E9 02 85 +0E 90 01 60 C6 0F 60 A5 0E 38 E9 04 85 0E 90 01 +60 C6 0F 60 A5 0E 38 E9 06 85 0E 90 01 60 C6 0F +60 A5 0E 38 E9 07 85 0E 90 01 60 C6 0F 60 A0 01 +B1 0E AA 88 B1 0E E6 0E F0 05 E6 0E F0 03 60 E6 +0E E6 0F 60 A0 03 4C 85 FA A0 05 4C 85 FA A0 08 +4C 85 FA 85 16 86 17 A2 00 B1 16 60 A0 01 B1 0E +AA 88 B1 0E 60 A0 03 B1 0E 85 11 88 B1 0E 85 10 +88 B1 0E AA 88 B1 0E 60 A2 00 18 65 0E 48 8A 65 +0F AA 68 60 18 49 FF 69 01 48 8A 49 FF 69 00 AA +A5 10 49 FF 69 00 85 10 A5 11 49 FF 69 00 85 11 +68 60 A9 00 AA A0 00 84 10 84 11 48 20 67 FB A0 +03 A5 11 91 0E 88 A5 10 91 0E 88 8A 91 0E 68 88 +91 0E 60 85 1E 20 8E FB 85 18 86 19 85 1A 86 1B +20 20 FD 20 8E FB 85 10 86 11 60 20 23 FC A6 11 +A4 1E C0 0A D0 39 A5 10 05 17 05 16 D0 11 E0 80 +D0 0D A0 0B B9 CC FE 91 18 88 10 F8 4C B3 FC 8A +10 1D A9 2D A0 00 91 18 E6 18 D0 02 E6 19 A5 16 +A6 17 20 E4 FB 85 16 86 17 4C 7F FC 20 23 FC A9 +00 48 A0 20 A9 00 06 16 26 17 26 10 26 11 2A C5 +1E 90 04 E5 1E E6 16 88 D0 EC A8 B9 BC FE 48 A5 +16 05 17 05 10 05 11 D0 D9 A0 00 68 91 18 F0 03 +C8 D0 F8 A5 1A A6 1B 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 A0 01 B1 0C 85 15 88 B1 0C 85 14 4C -96 FB A9 01 4C 0F FD A0 00 B1 0C A4 0C F0 07 C6 -0C A0 00 91 0C 60 C6 0D C6 0C 91 0C 60 A9 00 A2 -00 48 A5 0C 38 E9 02 85 0C B0 02 C6 0D A0 01 8A -91 0C 68 88 91 0C 60 A0 00 91 0C C8 48 8A 91 0C -68 60 85 16 86 17 20 E4 FC B1 14 D1 16 D0 0C AA -F0 10 C8 D0 F4 E6 15 E6 17 D0 EE B0 03 A2 FF 60 -A2 01 60 85 16 86 17 A2 00 A0 00 B1 16 F0 08 C8 -D0 F9 E6 17 E8 D0 F4 98 60 85 14 86 15 85 16 86 -17 A0 00 B1 14 F0 14 20 37 FB 29 02 F0 06 B1 14 -69 20 91 14 C8 D0 EC E6 15 D0 E8 A5 16 A6 17 60 -20 8E FB 85 16 86 17 E8 8E 31 92 AA E8 8E 30 92 -20 E4 FC 20 8E FB 85 18 86 19 A0 00 84 1C B1 18 -18 65 16 91 18 C8 B1 18 65 17 91 18 CE 30 92 F0 -11 A4 1C B1 14 C8 D0 02 E6 15 84 1C 20 68 F0 4C -BC FD CE 31 92 D0 EA 60 85 14 86 15 A9 00 8D 2A -92 8D 2B 92 A0 01 B1 0C AA 88 B1 0C 20 11 FD A0 -02 A9 2A 91 0C C8 A9 92 91 0C A5 14 A6 15 20 C2 -F7 AD 2A 92 AE 2B 92 60 A9 32 85 14 A9 92 85 15 -A9 00 A8 A2 00 F0 0A 91 14 C8 D0 FB E6 15 CA D0 -F6 C0 2C F0 05 91 14 C8 D0 F7 60 62 61 64 20 74 -6F 6B 65 6E 3A 20 25 78 0D 0A 00 53 75 63 63 65 -73 73 0D 0A 00 45 72 72 6F 72 0D 0A 00 53 74 61 -72 74 0D 0A 00 6F 70 5F 63 6F 6E 64 20 65 72 72 -6F 72 0D 0A 00 49 46 20 43 6F 6E 64 0D 0A 00 47 -6F 20 49 44 4C 45 0D 0A 00 25 32 78 00 0D 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 00 00 00 00 00 00 00 00 00 00 +00 8A 2A 60 20 0D FD A6 1B F0 13 B1 16 91 18 C8 +B1 16 91 18 C8 D0 F4 E6 17 E6 19 CA D0 ED A6 1A +F0 08 B1 16 91 18 C8 CA D0 F8 4C 8E FB 85 1A 86 +1B 20 20 FD C8 B1 0E AA 86 19 88 B1 0E 85 18 60 +A0 01 B1 0E 85 17 88 B1 0E 85 16 4C 96 FB A9 01 +4C 4B FD A0 00 B1 0E A4 0E F0 07 C6 0E A0 00 91 +0E 60 C6 0F C6 0E 91 0E 60 A9 00 A2 00 48 A5 0E +38 E9 02 85 0E B0 02 C6 0F A0 01 8A 91 0E 68 88 +91 0E 60 A0 00 91 0E C8 48 8A 91 0E 68 60 85 18 +86 19 20 20 FD B1 16 D1 18 D0 0C AA F0 10 C8 D0 +F4 E6 17 E6 19 D0 EE B0 03 A2 FF 60 A2 01 60 85 +18 86 19 A2 00 A0 00 B1 18 F0 08 C8 D0 F9 E6 19 +E8 D0 F4 98 60 85 16 86 17 85 18 86 19 A0 00 B1 +16 F0 14 20 37 FB 29 02 F0 06 B1 16 69 20 91 16 +C8 D0 EC E6 17 D0 E8 A5 18 A6 19 60 20 8E FB 85 +18 86 19 E8 8E 31 92 AA E8 8E 30 92 20 20 FD 20 +8E FB 85 1A 86 1B A0 00 84 1E B1 1A 18 65 18 91 +1A C8 B1 1A 65 19 91 1A CE 30 92 F0 11 A4 1E B1 +16 C8 D0 02 E6 17 84 1E 20 68 F0 4C F8 FD CE 31 +92 D0 EA 60 85 16 86 17 A9 00 8D 2A 92 8D 2B 92 +A0 01 B1 0E AA 88 B1 0E 20 4D FD A0 02 A9 2A 91 +0E C8 A9 92 91 0E A5 16 A6 17 20 C2 F7 AD 2A 92 +AE 2B 92 60 A9 32 85 16 A9 92 85 17 A9 00 A8 A2 +00 F0 0A 91 16 C8 D0 FB E6 17 CA D0 F6 C0 2C F0 +05 91 16 C8 D0 F7 60 62 61 64 20 74 6F 6B 65 6E +3A 20 25 78 0D 0A 00 53 75 63 63 65 73 73 0D 0A +00 45 72 72 6F 72 0D 0A 00 53 74 61 72 74 0D 0A +00 6F 70 5F 63 6F 6E 64 20 65 72 72 6F 72 0D 0A +00 49 46 20 43 6F 6E 64 0D 0A 00 47 6F 20 49 44 +4C 45 0D 0A 00 25 32 78 00 0D 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 diff --git a/hw/efinix_fpga/super6502.xml b/hw/efinix_fpga/super6502.xml index 21a4bd2..1e3a032 100644 --- a/hw/efinix_fpga/super6502.xml +++ b/hw/efinix_fpga/super6502.xml @@ -1,5 +1,5 @@ - + diff --git a/sw/bios/boot2.s b/sw/bios/boot2.s index 4dd9e42..8495f16 100644 --- a/sw/bios/boot2.s +++ b/sw/bios/boot2.s @@ -20,6 +20,8 @@ dlen: .res 2 olen: .res 1 otype: .res 1 +userptr: .res 2 + .segment "BOOTLOADER" sectors_per_cluster = $800D @@ -133,6 +135,7 @@ _start: ldy #$1d ; load file size (256) lda (ptr3),y lsr ; divide by 2 to get file size (512) + sta filesiz jsr pusha0 ldy #$4 jsr _cprintf @@ -158,23 +161,39 @@ _start: adc data_start ; add that to low data start bcc @5 ; handle carry inx -@5: stz sreg - stz sreg+1 - phx - pha +@5: sta cluster + stx cluster + 1 - jsr pusheax lda #filebuf + sta userptr + stx userptr + 1 + +@read_sd: + lda cluster + ldx cluster + 1 + stz sreg + stz sreg+1 + jsr pusheax + lda userptr + ldx userptr + 1 jsr pushax lda #ptr1 jsr _SD_readSingleBlock - lda #filebuf + lda userptr + ldx userptr + 1 jsr _SD_printBuf + dec filesiz + bmi @doneload + inc cluster + inc userptr + 1 + inc userptr + 1 + bra @read_sd + +@doneload: ldy #O65_TBASE lda filebuf,y sta tbase @@ -243,13 +262,48 @@ _start: ldx #>opt_done jsr pushax pla + pha jsr pusha0 ldy #$4 jsr _cprintf + pla + ldx #>filebuf + adc #word_str + jsr pushax + lda userptr + ldx userptr + 1 + jsr pushax + ldy #$4 + jsr _cprintf + + ;void* __fastcall__ memcpy (void* dest, const void* src, size_t count); + + lda tbase + ldx tbase + 1 + jsr pushax + lda userptr + ldx userptr + 1 + jsr pushax + lda tlen + ldx tlen + 1 + jsr _memcpy + + lda #<$1000 + ldx #>$1000 + jsr _SD_printBuf + @end: bra @end +filesiz: .res 1 +cluster: .res 2 str: .asciiz "boot2\r\n" kernel_str: .asciiz "KERNEL O65"