From 2dc4fb7ceaea5d9e8104b5f8325a944491bf025f Mon Sep 17 00:00:00 2001 From: RichardG867 Date: Sun, 17 Nov 2024 22:29:06 -0300 Subject: [PATCH 1/3] Fix 86F spec formatting --- dev/formats/86f.rst | 213 ++++++++++++++++++++++---------------------- 1 file changed, 107 insertions(+), 106 deletions(-) diff --git a/dev/formats/86f.rst b/dev/formats/86f.rst index fd0eb72..578731e 100644 --- a/dev/formats/86f.rst +++ b/dev/formats/86f.rst @@ -9,109 +9,110 @@ Specification for v2.12 All offsets are in hexadecimal. .. code-block:: none - -00000000: Magic 4 bytes ("86BF") -00000004: Minor version (0C) -00000005: Major version (02) -00000006: Disk flags (16-bit) - Bit 0 Has surface description data (1 = yes, 0 = no) - This data indicates if the corresponding bit on the FM/MFM - encoded surface is a normal bit or a special bit (weak bit - or hole, depending on the other bit): - 0 = The corresponding FM/MFM encoded surface bit is normal - 1 = The corresponding FM/MFM encoded surface bit is either - a weak bit or a hole: - Corresponding FM/MFM encoded bit is 0: - Hole (noise on read, not overwritable) - Corresponding FM/MFM encoded bit is 1: - Weak bit (noise on read, overwritable) - Bits 2, 1 Hole (3 = ED + 2000 kbps, 2 = ED, 1 = HD, 0 = DD) - Bit 3 Sides (1 = 2 sides, 0 = 1 side) - Bit 4 Write protect (1 = yes, 0 = no) - Bits 6, 5 RPM slowdown (3 = 2%, 2 = 1.5%, 1 = 1%, 0 = 0%) - Bit 7 Bitcell mode (1 = Extra bitcells count specified after - disk flags, 0 = No extra bitcells) - The maximum number of extra bitcells is 1024 (which - after decoding translates to 64 bytes) - Bit 8 Disk type (1 = Zoned, 0 = Fixed RPM) - Bits 10, 9 Zone type (3 = Commodore 64 zoned, 2 = Apple zoned, - 1 = Pre-Apple zoned #2, 0 = Pre-Apple zoned #1) - Ignore if disk type is 0 (fixed RPM) - Bit 11 Data and surface bits are stored in reverse byte endianness - Bit 12 If set: - If bits 6, 5 are not 0, they specify % of speedup instead - of slowdown; - If bits 6, 5 are 0, and bit 7 is 1, the extra bitcell count - specifies the entire bitcell count - For converting other stuff to 86F, I recommend to set this bit - and bit 7 and clear bits 6 and 5, - and just specify the entire bitcell count. -00000008: Offsets of tracks - Note that thick-track (eg. 360k) disks will have (tracks * 2) tracks, with each - pair of tracks being identical to each other. - Each side of each track is stored as its own track, in order (so, track 0 side 0, - track 0 side 1, track 1 side 0, track 1 side 0, etc.). - -Track offset + 00000000: Track flags (16-bit) - Bits 7, 6, 5 RPM: - 000 = 300 rpm - 001 = 360 rpm - Bits 4, 3 Encoding: - 00 = FM - 01 = MFM - 10 = M2FM - 11 = GCR - Bits 2, 1, 0 Bit rate, if encoding is MFM: - 000 = 500 kbps - 001 = 300 kbps - 010 = 250 kbps - 011 = 1000 kbps - 101 = 2000 kbps - If encoding is FM, the bit rate is half that. -If the bitcell count is present: - Track offset + 00000002: Extra (or total, depending on disk flags) bit cells count (32-bit) - If this specifies extra bit cells rather than total, it is a signed - integer, and when negative, makes the track smaller. - Track offset + 00000006: Bit cell where index hole is (32-bit) - Track offset + 0000000A: FM/MFM/M2FM/GCR-encoded data (track length bytes) - Track offset + 0000000A + track length: Surface description data if present (track length bytes) -Else: - Track offset + 00000002: Bit cell where index hole is (32-bit) - Track offset + 00000006: FM/MFM/M2FM/GCR-encoded data (track length bytes) - Track offset + 00000006 + track length: Surface description data if present (track length bytes) - -Track lengths if the bitcell count is not present or it does not represent total bit cells: - Hole 0 (DD) or 1 (HD): - 2.0% RPM slowdown: 12750 words - 1.5% RPM slowdown: 12687 words - 1.0% RPM slowdown: 12625 words - 0.0% RPM slowdown/speedup: 12500 words - 1.0% RPM speedup : 12376 words - 1.5% RPM speedup : 12315 words - 2.0% RPM speedup : 12254 words - Hole 2 (ED): - 2.0% RPM slowdown: 25250 words - 1.5% RPM slowdown: 25375 words - 1.0% RPM slowdown: 25250 words - 0.0% RPM slowdown/speedup: 25000 words - 1.0% RPM speedup : 24752 words - 1.5% RPM speedup : 24630 words - 2.0% RPM speedup : 24509 words - Hole 3 (ED + 2000 kbps): - 2.0% RPM slowdown: 51000 words - 1.5% RPM slowdown: 50750 words - 1.0% RPM slowdown: 50500 words - 0.0% RPM slowdown/speedup: 50000 words - 1.0% RPM speedup : 49504 words - 1.5% RPM speedup : 49261 words - 2.0% RPM speedup : 49019 words - 1 word = 2 bytes (so 16 bits) - If extra bit cells count is present and it indicates extra bit cells count: - Track length = (Track length << 4) + Extra bitcells count - If (Track length & 15) - Track length + (Track length >> 4) + 1 - Else - Track length + (Track length >> 4) - If extra bit cells count is present and it indicates total bit cells count, - then the total bit cells count become the track length, padded upwards to the - nearest word in the file. + + 00000000: Magic 4 bytes ("86BF") + 00000004: Minor version (0C) + 00000005: Major version (02) + 00000006: Disk flags (16-bit) + Bit 0 Has surface description data (1 = yes, 0 = no) + This data indicates if the corresponding bit on the FM/MFM + encoded surface is a normal bit or a special bit (weak bit + or hole, depending on the other bit): + 0 = The corresponding FM/MFM encoded surface bit is normal + 1 = The corresponding FM/MFM encoded surface bit is either + a weak bit or a hole: + Corresponding FM/MFM encoded bit is 0: + Hole (noise on read, not overwritable) + Corresponding FM/MFM encoded bit is 1: + Weak bit (noise on read, overwritable) + Bits 2, 1 Hole (3 = ED + 2000 kbps, 2 = ED, 1 = HD, 0 = DD) + Bit 3 Sides (1 = 2 sides, 0 = 1 side) + Bit 4 Write protect (1 = yes, 0 = no) + Bits 6, 5 RPM slowdown (3 = 2%, 2 = 1.5%, 1 = 1%, 0 = 0%) + Bit 7 Bitcell mode (1 = Extra bitcells count specified after + disk flags, 0 = No extra bitcells) + The maximum number of extra bitcells is 1024 (which + after decoding translates to 64 bytes) + Bit 8 Disk type (1 = Zoned, 0 = Fixed RPM) + Bits 10, 9 Zone type (3 = Commodore 64 zoned, 2 = Apple zoned, + 1 = Pre-Apple zoned #2, 0 = Pre-Apple zoned #1) + Ignore if disk type is 0 (fixed RPM) + Bit 11 Data and surface bits are stored in reverse byte endianness + Bit 12 If set: + If bits 6, 5 are not 0, they specify % of speedup instead + of slowdown; + If bits 6, 5 are 0, and bit 7 is 1, the extra bitcell count + specifies the entire bitcell count + For converting other stuff to 86F, I recommend to set this bit + and bit 7 and clear bits 6 and 5, + and just specify the entire bitcell count. + 00000008: Offsets of tracks + Note that thick-track (eg. 360k) disks will have (tracks * 2) tracks, with each + pair of tracks being identical to each other. + Each side of each track is stored as its own track, in order (so, track 0 side 0, + track 0 side 1, track 1 side 0, track 1 side 0, etc.). + + Track offset + 00000000: Track flags (16-bit) + Bits 7, 6, 5 RPM: + 000 = 300 rpm + 001 = 360 rpm + Bits 4, 3 Encoding: + 00 = FM + 01 = MFM + 10 = M2FM + 11 = GCR + Bits 2, 1, 0 Bit rate, if encoding is MFM: + 000 = 500 kbps + 001 = 300 kbps + 010 = 250 kbps + 011 = 1000 kbps + 101 = 2000 kbps + If encoding is FM, the bit rate is half that. + If the bitcell count is present: + Track offset + 00000002: Extra (or total, depending on disk flags) bit cells count (32-bit) + If this specifies extra bit cells rather than total, it is a signed + integer, and when negative, makes the track smaller. + Track offset + 00000006: Bit cell where index hole is (32-bit) + Track offset + 0000000A: FM/MFM/M2FM/GCR-encoded data (track length bytes) + Track offset + 0000000A + track length: Surface description data if present (track length bytes) + Else: + Track offset + 00000002: Bit cell where index hole is (32-bit) + Track offset + 00000006: FM/MFM/M2FM/GCR-encoded data (track length bytes) + Track offset + 00000006 + track length: Surface description data if present (track length bytes) + + Track lengths if the bitcell count is not present or it does not represent total bit cells: + Hole 0 (DD) or 1 (HD): + 2.0% RPM slowdown: 12750 words + 1.5% RPM slowdown: 12687 words + 1.0% RPM slowdown: 12625 words + 0.0% RPM slowdown/speedup: 12500 words + 1.0% RPM speedup : 12376 words + 1.5% RPM speedup : 12315 words + 2.0% RPM speedup : 12254 words + Hole 2 (ED): + 2.0% RPM slowdown: 25250 words + 1.5% RPM slowdown: 25375 words + 1.0% RPM slowdown: 25250 words + 0.0% RPM slowdown/speedup: 25000 words + 1.0% RPM speedup : 24752 words + 1.5% RPM speedup : 24630 words + 2.0% RPM speedup : 24509 words + Hole 3 (ED + 2000 kbps): + 2.0% RPM slowdown: 51000 words + 1.5% RPM slowdown: 50750 words + 1.0% RPM slowdown: 50500 words + 0.0% RPM slowdown/speedup: 50000 words + 1.0% RPM speedup : 49504 words + 1.5% RPM speedup : 49261 words + 2.0% RPM speedup : 49019 words + 1 word = 2 bytes (so 16 bits) + If extra bit cells count is present and it indicates extra bit cells count: + Track length = (Track length << 4) + Extra bitcells count + If (Track length & 15) + Track length + (Track length >> 4) + 1 + Else + Track length + (Track length >> 4) + If extra bit cells count is present and it indicates total bit cells count, + then the total bit cells count become the track length, padded upwards to the + nearest word in the file. + \ No newline at end of file From 047826214f54f78abc3d8cf868634ffcf1d90c52 Mon Sep 17 00:00:00 2001 From: RichardG867 Date: Sun, 17 Nov 2024 22:41:35 -0300 Subject: [PATCH 2/3] Add IBM PC and XT machine note anchors for the PCem migration guide --- hardware/machinespecific.rst | 2 ++ 1 file changed, 2 insertions(+) diff --git a/hardware/machinespecific.rst b/hardware/machinespecific.rst index 3b3ea6d..5a44c09 100644 --- a/hardware/machinespecific.rst +++ b/hardware/machinespecific.rst @@ -8,6 +8,7 @@ This page contains important notes related to specific machine models emulated b 8088 ---- +.. _ibmpc: .. rubric:: IBM PC * The 1981 and 1982 variants correspond to the `earlier 16KB-64KB and later 64KB-256KB revisions of the motherboard `_, with different BIOS versions and memory size limits. @@ -19,6 +20,7 @@ This page contains important notes related to specific machine models emulated b * Some applications may shift the display slightly to one side due to unconventional use of the PCjr video hardware. Unchecking the **Apply overscan deltas** option accessible through the internal video's :ref:`Configure button ` can help bring the display back into position. * Hard disks are not supported, as a PCjr-compatible hard disk controller is not emulated by 86Box. +.. _ibmxt: .. rubric:: IBM XT * The 1982 and 1986 variants correspond to the `earlier 64-256KB and later 256-640KB revisions of the motherboard `_, with different BIOS versions and memory size limits. From b3fdaf1f259eb4620640ee87662a376a26d2f650 Mon Sep 17 00:00:00 2001 From: RichardG867 Date: Sun, 15 Dec 2024 19:37:56 -0300 Subject: [PATCH 3/3] Add missing residfp credit --- settings/sound.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/settings/sound.rst b/settings/sound.rst index 18c9fec..1e71b04 100644 --- a/settings/sound.rst +++ b/settings/sound.rst @@ -14,7 +14,7 @@ Sound cards to emulate. Up to 4 different sound cards are supported. Only cards The *Configure* button opens a new window with settings specific to the selected sound card, such as the I/O ports, IRQ and DMA channels for ISA cards. -Emulation for the Yamaha OPL series of synthesizers (used by many of the emulated cards) is provided by a modified `Nuked OPL3 `_ or `ymfm `_ library, per the :ref:`selection below `. +Emulation for the Yamaha OPL series of synthesizers (used by many of the emulated cards) is provided by a modified `Nuked OPL3 `_ or `ymfm `_ library, per the :ref:`selection below `. MOS Technology 6581 SID emulation for the Innovation SSI-2001 is provided by the reSIDfp component of the `libsidplayfp `_ library. .. note:: The **Innovation SSI-2001**, **CMS / Game Blaster** and **Gravis Ultrasound** are now selectable here, replacing the previous separate options for each.