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/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/Makefile b/hw/efinix_fpga/simulation/Makefile index 5b97507..612d07f 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) @@ -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/hw/efinix_fpga/simulation/src/sim_top.sv b/hw/efinix_fpga/simulation/src/sim_top.sv index a01f70c..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(1000000) @(r_clk_cpu); + repeat(5000000) @(r_clk_cpu); $finish(); end 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/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/bios/boot2.s b/sw/bios/boot2.s index 01c14ff..6fd2cce 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 @@ -158,10 +158,16 @@ _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 - asl ; multiply cluster num (minus 2) by 8 - asl - asl + phx + ldx sectors_per_cluster ; multiply cluster num (minus 2) by sectors_per_cluster + lda #$00 +@8: adc tmp1 + dex + bne @8 + plx clc adc data_start ; add that to low data start bcc @5 ; handle carry @@ -187,9 +193,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 @@ -254,9 +260,9 @@ _start: jsr pushax pla + clc adc olen dec - dec pha bra @opt_len @@ -272,6 +278,7 @@ _start: ldy #$4 jsr _cprintf + clc pla ldx #>filebuf adc #$1000 - jsr _SD_printBuf + ; lda #<$1000 + ; ldx #>$1000 + ; jsr _SD_printBuf + clc lda userptr + 1 adc tlen + 1 tax diff --git a/sw/bios/bootloader.s b/sw/bios/bootloader.s index da6a20f..0b4c721 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) @@ -118,10 +118,16 @@ _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 - asl ; multiply cluster num (minus 2) by 8 - asl - asl + phx + ldx sectors_per_cluster ; multiply cluster num (minus 2) by sectors_per_cluster + lda #$00 +@4: adc tmp1 + dex + bne @4 + plx clc adc data_start ; add that to low data start bcc @3 ; handle carry 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)) { 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 $@ 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) ; --------------------------------------------------------------------------- diff --git a/sw/kernel/kernel.c b/sw/kernel/kernel.c index 2a111a8..ef18f01 100644 --- a/sw/kernel/kernel.c +++ b/sw/kernel/kernel.c @@ -13,7 +13,10 @@ char* longstring = \ int main() { char* string = "this is a shorter string"; - + 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); 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)}")