From ebdc3ddbe6eed61e73d13f98c246bdd8c6982ad4 Mon Sep 17 00:00:00 2001 From: antoniovillena Date: Fri, 24 Mar 2023 17:47:57 +0100 Subject: [PATCH] =?UTF-8?q?A=C3=B1ado=20mapeado=20flash=20ZX3=20y=20compil?= =?UTF-8?q?o=20binario?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- firmware/FIRMWARE.ZX3 | Bin 16384 -> 16384 bytes firmware/formato_a35t.txt | 104 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 104 insertions(+) create mode 100644 firmware/formato_a35t.txt diff --git a/firmware/FIRMWARE.ZX3 b/firmware/FIRMWARE.ZX3 index 8de1686dbde79ae17f19ce5957d6bf0b420da827..2c8c38fa2dd86d1e0db6f13329e98ca6efc4fa13 100644 GIT binary patch delta 5004 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 diff --git a/firmware/formato_a35t.txt b/firmware/formato_a35t.txt new file mode 100644 index 0000000..0427072 --- /dev/null +++ b/firmware/formato_a35t.txt @@ -0,0 +1,104 @@ +000000-004000 Boot Header Xilinx +004000-100000 Firmware-ROMs (61 ROMs) +--(004000-006000) ESXDOS +--(006000-008000) ROM Directory +--(008000-00C000) Firmware-BIOS +--(00C000-100000) 61 Spectrum ROMs +0100000 - Bitstream 1 (longitud 170000) +0270000 - Bitstream 2 +0390000 - Bitstream 3 +04B0000 - Bitstream 4 +05D0000 - Bitstream 5 +06F0000 - Bitstream 6 +0810000 - Bitstream 7 +0930000 - Bitstream 8 +0A50000 - Bitstream 9 +0B70000 - Bitstream 10 +0C90000 - Bitstream 11 +0DB0000 - Bitstream 12 +0ED0000 - Bitstream 13 +0FF0000 - Bitstream 14 +1110000 - Bitstream 15 +1230000 - Bitstream 16 +1350000 - Bitstream 17 +1470000 - Bitstream 18 +1590000 - Bitstream 19 +16B0000 - Bitstream 20 +17D0000 - Bitstream 21 +18F0000 - Bitstream 22 +1A10000 - Bitstream 23 +1B30000 - Bitstream 24 +1C50000 - Bitstream 25 +1D70000 - Bitstream 26 +1E90000 - Bitstream 27 (longitud 170000) + +(006000-008000) ROM Directory +--6000-6F40 61 ROM entries +--7000-8000 Entry index and Bitstream names +----7000-704F Entry index +----7100-74C0 30 Bitstream names of Q256 (32 bytes each) +----74C0-8000 Reserved + +ROM entry + 00 slot offset + 01 slot size + 02 flags 1 + Bits 0-1. Machine timings: 00=48K, 01=128K, 10=Pentagon + Bit 2. NMI DivMMC: 0=disabled, 1=enabled + Bit 3. DivMMC: 0=disabled, 1=enabled + Bit 4. Contention: 0=disabled, 1=enabled + Bit 5. Keyboard issue: 0=issue 2, 1=issue 3 + 03 flags 2 + Bit 0. AY chip: 0=enabled, 1=disabled + Bit 1. 2nd AY chip (TurboSound): 0=enabled, 1=disabled + Bit 2. 7ffd port: 0=enabled, 1=disabled + Bit 3. 1ffd port: 0=enabled, 1=disabled + Bit 4. ROM low bit: 0=enabled, 1=disabled + Bit 5. ROM high bit: 0=enabled, 1=disabled + Bit 6. horizontal MMU in Timex: 0=disabled, 1=enabled + Bit 7. DivMMC and ZXMMC ports: 0=enabled, 1=disabled + 08-0f crc16-ccitt values. Up to 4 16-bit values in reverse order + 10-20 unused + 20-3f Name of ROM in ASCII, space padded + +Tape format + Block 1. 0x51 length header + Block 2,3.. 16Kb length data blocks + Header format: + 00 slot size + 01 flags 1 + Bits 0-1. Machine timings: 00=48K, 01=128K, 10=Pentagon + Bit 2. NMI DivMMC: 0=disabled, 1=enabled + Bit 3. DivMMC: 0=disabled, 1=enabled + Bit 4. Contention: 0=disabled, 1=enabled + Bit 5. Keyboard issue: 0=issue 2, 1=issue 3 + 02 flags 2 or special + Bit 0. AY chip: 0=enabled, 1=disabled + Bit 1. 2nd AY chip (TurboSound): 0=enabled, 1=disabled + Bit 2. 7ffd port: 0=enabled, 1=disabled + Bit 3. 1ffd port: 0=enabled, 1=disabled + Bit 4. ROM low bit: 0=enabled, 1=disabled + Bit 5. ROM high bit: 0=enabled, 1=disabled + Bit 6. horizontal MMU in Timex: 0=disabled, 1=enabled + Bit 7. DivMMC and ZXMMC ports: 0=enabled, 1=disabled + special=0x00 normal core or esxdos + special=0xcb spectrum core + special=0xca firmware + 07-30 crc16-ccitt values. Up to 21 16-bit values in reverse order + 31-50 Name in ASCII, space padded + +Each block follows the .TAP file standard. That is a header with 2+1 bytes +for lenght+type and a tail of one byte with the checksum. For example: + +Lenght+2 Type (always FF) + v v + vvvvv vv + 53 00 FF<01 3C 3C 00 00 00 00 FD 5E 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 5A 58 20 53 70 65 63 74 72 75 6D 20 + 34 38 4B 20 20 20 20 20 20 20 20 20 20 20 20 20 + 20 20 20 20>03 02 40 FF