From 68ff523b10421267cfc73563e92a950dd4ec37e3 Mon Sep 17 00:00:00 2001 From: Byron Lathi Date: Tue, 15 Aug 2023 19:30:11 -0700 Subject: [PATCH] Use actual values from sd card --- hw/efinix_fpga/init_hex.mem | 112 +++++++++++++++++------------------ hw/efinix_fpga/super6502.xml | 2 +- sw/bios/bootloader.s | 34 ++++++++--- sw/bios/link.ld | 2 +- 4 files changed, 84 insertions(+), 66 deletions(-) diff --git a/hw/efinix_fpga/init_hex.mem b/hw/efinix_fpga/init_hex.mem index 7d8cbd9..078a383 100644 --- a/hw/efinix_fpga/init_hex.mem +++ b/hw/efinix_fpga/init_hex.mem @@ -1,10 +1,10 @@ @00000000 -00 80 4C 00 00 8D 13 90 8E 14 90 8D 1A 90 8E 1B -90 88 B9 FF FF 8D 24 90 88 B9 FF FF 8D 23 90 8C -26 90 20 FF FF A0 FF D0 E8 60 00 00 90 FD 00 00 -00 00 A2 FF 9A D8 A9 00 85 00 A9 E0 85 01 20 08 +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 00 A9 DF 85 01 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 90 60 AD FF +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 00 AA A9 1B 20 4F F2 A9 5B 20 4F F2 98 20 4F F2 A9 3B 20 4F F2 8A 20 @@ -41,15 +41,15 @@ DA EF AD DB EF 30 FB AD D9 EF 60 8D E6 EF 60 48 86 03 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 90 AE 01 90 20 11 FD +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 00 A0 07 A2 00 B1 00 C9 00 20 BE FC D0 03 4C DC F2 A0 06 A2 00 B1 00 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 -90 AE 01 90 20 3C F6 4C 2B F3 A0 06 A2 00 B1 00 +92 AE 01 92 20 3C F6 4C 2B F3 A0 06 A2 00 B1 00 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 00 20 11 FD A0 04 20 E6 FA 6C 00 90 4C 31 +00 B1 00 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 00 91 00 A0 00 A2 00 B1 00 C9 FF 20 BE FC D0 03 @@ -108,74 +108,74 @@ C4 F6 A9 79 A2 FE 20 11 FD A0 06 20 BE FB A0 00 02 91 00 4C B8 F6 A2 00 A9 20 20 68 F0 A0 02 A2 00 18 A9 01 71 00 91 00 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 16 E6 16 D0 02 E6 17 60 AD 3D 90 8D 38 90 -20 7B F7 A9 38 A2 90 20 11 FD 20 F2 FC 4C 02 90 -A5 14 38 E9 02 85 14 B0 02 C6 15 60 AD 42 90 D0 -11 20 19 F7 4C 98 FA AD 42 90 D0 06 20 19 F7 4C +00 B1 16 E6 16 D0 02 E6 17 60 AD 3D 92 8D 38 92 +20 7B F7 A9 38 A2 92 20 11 FD 20 F2 FC 4C 02 92 +A5 14 38 E9 02 85 14 B0 02 C6 15 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 02 86 03 20 F0 F6 A0 01 B1 14 AA 88 B1 14 60 A0 00 84 08 84 09 B1 16 38 E9 30 90 2C C9 0A B0 28 20 D3 F6 48 A5 08 A6 09 06 08 26 09 06 08 26 09 65 08 85 08 8A 65 09 85 09 06 08 26 09 68 65 08 85 08 90 D1 E6 09 B0 CD A5 08 -A6 09 60 AC 44 90 EE 44 90 99 45 90 60 A9 45 A2 -90 18 6D 44 90 90 01 E8 4C 11 FD A5 18 A6 19 4C -11 FD 20 DA F6 EE 3E 90 D0 F8 EE 3F 90 D0 F3 60 -20 7B F7 AD 59 90 AE 5A 90 20 11 FD AD 5B 90 AE -5C 90 20 11 FD 4C 02 90 84 08 20 0B FC 20 6D F7 +A6 09 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 18 A6 19 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 08 20 0B FC 20 6D F7 A5 08 4C 3B FC 84 08 20 0B FC 20 6D F7 A5 08 4C -7C FC 48 A0 05 B9 14 00 99 32 90 88 10 F7 68 85 +7C FC 48 A0 05 B9 14 00 99 32 92 88 10 F7 68 85 14 86 15 20 8E FB 85 16 86 17 20 8E FB 85 18 86 -19 A9 00 A8 91 18 C8 91 18 C8 B1 18 8D 03 90 C8 -B1 18 8D 04 90 A5 16 85 08 A5 17 85 09 A0 00 B1 +19 A9 00 A8 91 18 C8 91 18 C8 B1 18 8D 03 92 C8 +B1 18 8D 04 92 A5 16 85 08 A5 17 85 09 A0 00 B1 16 F0 0B C9 25 F0 07 C8 D0 F5 E6 17 D0 F1 98 18 65 16 85 16 90 02 E6 17 38 E5 08 85 0A A5 17 E5 09 85 0B 05 0A F0 25 20 74 FB A0 05 A5 19 91 00 88 A5 18 91 00 88 A5 09 91 00 88 A5 08 91 00 88 -A5 0B 91 00 88 A5 0A 91 00 20 02 90 20 CF F6 AA -D0 0B A2 05 BD 32 90 95 14 CA 10 F8 60 C9 25 D0 +A5 0B 91 00 88 A5 0A 91 00 20 02 92 20 CF F6 AA +D0 0B A2 05 BD 32 92 95 14 CA 10 F8 60 C9 25 D0 09 B1 16 C9 25 D0 09 20 D3 F6 20 DD F6 4C F5 F7 -A9 00 A2 0B 9D 39 90 CA 10 FA B1 16 C9 2D D0 05 -8E 39 90 F0 19 C9 2B D0 05 8E 3A 90 F0 10 C9 20 -D0 05 8E 3B 90 F0 07 C9 23 D0 09 8E 3C 90 20 D3 +A9 00 A2 0B 9D 39 92 CA 10 FA B1 16 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 16 -8E 3D 90 C9 2A D0 09 20 D3 F6 20 19 F7 4C C3 F8 -20 25 F7 8D 3E 90 8E 3F 90 8C 40 90 8C 41 90 B1 +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 16 C9 2E D0 1B 20 D3 F6 B1 16 C9 2A D0 09 20 D3 -F6 20 19 F7 4C EA F8 20 25 F7 8D 40 90 8E 41 90 +F6 20 19 F7 4C EA F8 20 25 F7 8D 40 92 8E 41 92 B1 16 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 90 20 -D3 F6 4C F0 F8 8C 44 90 A2 45 8E 59 90 A2 90 8E -5A 90 20 D3 F6 C9 63 D0 0D 20 19 F7 8D 45 90 A2 +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 90 F0 02 A2 20 AD 3A 90 F0 02 A2 2B 8E 43 -90 20 07 F7 A4 03 30 0B AC 43 90 F0 06 8C 45 90 -EE 44 90 A0 0A 20 A8 F7 4C 13 FA C9 6E D0 15 20 +AD 3B 92 F0 02 A2 20 AD 3A 92 F0 02 A2 2B 8E 43 +92 20 07 F7 A4 03 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 08 86 09 A0 00 B1 18 91 08 C8 B1 18 91 -08 4C F5 F7 C9 6F D0 27 20 07 F7 AC 3C 90 F0 17 -48 86 10 05 10 05 02 05 03 0D 40 90 0D 41 90 F0 +08 4C F5 F7 C9 6F D0 27 20 07 F7 AC 3C 92 F0 17 +48 86 10 05 10 05 02 05 03 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 90 E8 8E 3C 90 A9 78 D0 27 -C9 73 D0 0C 20 19 F7 8D 59 90 8E 5A 90 4C 13 FA +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 90 F0 0A A9 30 20 +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 90 AE 5A 90 20 69 FD 4C 13 FA -4C F5 F7 AD 59 90 AE 5A 90 20 53 FD 8D 5B 90 8E -5C 90 AD 40 90 0D 41 90 F0 15 AE 40 90 EC 5B 90 -AD 41 90 A8 ED 5C 90 B0 06 8E 5B 90 8C 5C 90 38 -AD 3E 90 ED 5B 90 AA AD 3F 90 ED 5C 90 B0 03 A9 -00 AA 49 FF 8D 3F 90 8A 49 FF 8D 3E 90 AD 39 90 -D0 03 20 85 F7 20 90 F7 AD 39 90 F0 03 20 85 F7 +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 +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 00 91 00 48 C8 8A 71 00 91 00 AA 68 60 C8 48 18 98 65 00 85 00 90 02 E6 01 68 60 A0 FF E0 80 B0 02 A0 00 84 02 84 03 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 90 60 A9 00 85 08 A9 F0 85 -09 A9 00 85 0A A9 90 85 0B A2 CD A9 FF 85 10 A0 +07 A9 52 A2 F0 4C 05 92 60 A9 00 85 08 A9 F0 85 +09 A9 00 85 0A A9 92 85 0B A2 CD A9 FF 85 10 A0 00 E8 F0 0D B1 08 91 0A C8 D0 F6 E6 09 E6 0B D0 -F0 E6 10 D0 EF 60 8C 5D 90 88 88 98 18 65 00 85 +F0 E6 10 D0 EF 60 8C 5D 92 88 88 98 18 65 00 85 08 A6 01 90 01 E8 86 09 A0 01 B1 08 AA 88 B1 08 -20 11 FD A5 08 A6 09 20 D8 FD AC 5D 90 4C 85 FA +20 11 FD A5 08 A6 09 20 D8 FD AC 5D 92 4C 85 FA 85 08 86 09 20 75 F0 4C 1E FB 85 08 86 09 A0 00 B1 08 F0 0E C8 84 10 20 68 F0 A4 10 D0 F2 E6 09 D0 EE 60 E0 00 D0 15 4A AA BD A7 FE 90 05 4A 4A @@ -216,14 +216,14 @@ A2 01 60 85 0A 86 0B A2 00 A0 00 B1 0A F0 08 C8 D0 F9 E6 0B E8 D0 F4 98 60 85 08 86 09 85 0A 86 0B A0 00 B1 08 F0 14 20 37 FB 29 02 F0 06 B1 08 69 20 91 08 C8 D0 EC E6 09 D0 E8 A5 0A A6 0B 60 -20 8E FB 85 0A 86 0B E8 8E 31 90 AA E8 8E 30 90 +20 8E FB 85 0A 86 0B E8 8E 31 92 AA E8 8E 30 92 20 E4 FC 20 8E FB 85 0C 86 0D A0 00 84 10 B1 0C -18 65 0A 91 0C C8 B1 0C 65 0B 91 0C CE 30 90 F0 +18 65 0A 91 0C C8 B1 0C 65 0B 91 0C CE 30 92 F0 11 A4 10 B1 08 C8 D0 02 E6 09 84 10 20 68 F0 4C -BC FD CE 31 90 D0 EA 60 85 08 86 09 A9 00 8D 2A -90 8D 2B 90 A0 01 B1 00 AA 88 B1 00 20 11 FD A0 -02 A9 2A 91 00 C8 A9 90 91 00 A5 08 A6 09 20 C2 -F7 AD 2A 90 AE 2B 90 60 A9 32 85 08 A9 90 85 09 +BC FD CE 31 92 D0 EA 60 85 08 86 09 A9 00 8D 2A +92 8D 2B 92 A0 01 B1 00 AA 88 B1 00 20 11 FD A0 +02 A9 2A 91 00 C8 A9 92 91 00 A5 08 A6 09 20 C2 +F7 AD 2A 92 AE 2B 92 60 A9 32 85 08 A9 92 85 09 A9 00 A8 A2 00 F0 0A 91 08 C8 D0 FB E6 09 CA D0 F6 C0 2C F0 05 91 08 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 diff --git a/hw/efinix_fpga/super6502.xml b/hw/efinix_fpga/super6502.xml index b25c71e..dcc0ef1 100644 --- a/hw/efinix_fpga/super6502.xml +++ b/hw/efinix_fpga/super6502.xml @@ -1,5 +1,5 @@ - + diff --git a/sw/bios/bootloader.s b/sw/bios/bootloader.s index f97acc8..8afc8df 100644 --- a/sw/bios/bootloader.s +++ b/sw/bios/bootloader.s @@ -5,12 +5,18 @@ .feature string_escapes .MACPACK generic +.MACPACK longbranch _console_clear = $0 _console_read_char = $2 _console_write_char = $4 _sd_readblock = $6 +sectors_per_cluster = $800D +reserved_sectors = $800E +fat_count = $8010 +sectors_per_fat = $8024 + buf = $8200 addrh = $0000 addrl = $0000 @@ -34,15 +40,26 @@ _main: ldx #>str jsr _cputs - ; we need to read from data segment 0, that will be the first directory entry - ; that has sector offset $00ef_e000 + lda #<_addr + ldx #>_addr + jsr pushax - lda #$00 - sta sreg - lda #$00 - sta sreg+1 - lda #$f0 - ldx #$77 + lda fat_count + cmp #$2 + jne @fail + lda sectors_per_fat + asl + pha + lda sectors_per_fat + 1 + rol + tax + pla + adc reserved_sectors + bcc @a + inx +@a: jsr pushax + stz sreg + stz sreg+1 jsr pusheax lda #buf @@ -167,6 +184,7 @@ _boot2_str: .asciiz "BOOT2 BIN" _fail: .asciiz "not bootloader\r\n" _good: .asciiz "found bootloader!\r\n" _cluster: .asciiz "cluster: %lx\r\n" +_addr: .asciiz "addr: %x\r\n" _end: .res (440+_start-_end) diff --git a/sw/bios/link.ld b/sw/bios/link.ld index 53739f5..59a987a 100644 --- a/sw/bios/link.ld +++ b/sw/bios/link.ld @@ -2,7 +2,7 @@ MEMORY { ZP: start = $0, size = $100, type = rw, define = yes; KERNEL: start = $1000, size = $7000, type = rw, define = yes; - SDRAM: start = $9000, size = $5000, type = rw, define = yes; + SDRAM: start = $9200, size = $4d00, type = rw, define = yes; BOOTSECTOR: start = $8000, size = $200, type = rw, define = yes, file = "bootloader.bin"; BOOTLOADER: start = $8200, size = $1000, type = rw, define = yes, file = "boot2.bin"; ROM: start = $F000, size = $1000, file = %O;