From bb230590606559ab4f0ff4fd97dfc78914121db7 Mon Sep 17 00:00:00 2001 From: richardg867 Date: Mon, 18 Jul 2022 16:15:29 -0300 Subject: [PATCH 01/75] Move debug builds (v3.5) --- dev/builds.rst | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/dev/builds.rst b/dev/builds.rst index 2058e61..df9498a 100644 --- a/dev/builds.rst +++ b/dev/builds.rst @@ -18,13 +18,13 @@ Variants * x64 (64-bit) allows for emulating more than 2 GB of RAM on some later machines and using larger soundfonts with FluidSynth, at a slight performance loss. -* The regular variant (**86Box**) is recommended; it is compiled with the ``--preset=regular`` CMake flag, enabling the default feature set. +* On **Linux**, select the correct architecture for your system, as most distributions lack x64-to-x86 and ARM64-to-ARM32 backwards compatibility by default. - * Release versions of 86Box are based on this variant. +* On **macOS**, **Universal** supports both Intel and Apple Silicon Macs. -* The debug variant (**86Box-Debug**) is compiled with the ``--preset=debug`` CMake flag, which provides debug symbols and no optimizations, to allow for debugging with ``gdb`` and other tools. + * The New Recompiler is always used on Apple Silicon due to its ARM architecture, even if the Old Recompiler is selected. - * This variant runs slower than the standard one due to the removal of optimizations and addition of debugging features. +.. note:: Debug variants have been moved to a `special page on the 86Box website `_ as of July 18th 2022 due to constant misuse. Discontinued variants ^^^^^^^^^^^^^^^^^^^^^ From f6cf510531263b4c974917cd83d07551546f2286 Mon Sep 17 00:00:00 2001 From: richardg867 Date: Mon, 18 Jul 2022 16:15:48 -0300 Subject: [PATCH 02/75] Move debug builds (v3.6) --- dev/builds.rst | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/dev/builds.rst b/dev/builds.rst index 2058e61..df9498a 100644 --- a/dev/builds.rst +++ b/dev/builds.rst @@ -18,13 +18,13 @@ Variants * x64 (64-bit) allows for emulating more than 2 GB of RAM on some later machines and using larger soundfonts with FluidSynth, at a slight performance loss. -* The regular variant (**86Box**) is recommended; it is compiled with the ``--preset=regular`` CMake flag, enabling the default feature set. +* On **Linux**, select the correct architecture for your system, as most distributions lack x64-to-x86 and ARM64-to-ARM32 backwards compatibility by default. - * Release versions of 86Box are based on this variant. +* On **macOS**, **Universal** supports both Intel and Apple Silicon Macs. -* The debug variant (**86Box-Debug**) is compiled with the ``--preset=debug`` CMake flag, which provides debug symbols and no optimizations, to allow for debugging with ``gdb`` and other tools. + * The New Recompiler is always used on Apple Silicon due to its ARM architecture, even if the Old Recompiler is selected. - * This variant runs slower than the standard one due to the removal of optimizations and addition of debugging features. +.. note:: Debug variants have been moved to a `special page on the 86Box website `_ as of July 18th 2022 due to constant misuse. Discontinued variants ^^^^^^^^^^^^^^^^^^^^^ From 9cb5e85fb0613365c9dd627394b3caae1fa3d7dd Mon Sep 17 00:00:00 2001 From: richardg867 Date: Mon, 18 Jul 2022 21:14:07 -0300 Subject: [PATCH 03/75] Update builds.rst --- dev/builds.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev/builds.rst b/dev/builds.rst index df9498a..1114aca 100644 --- a/dev/builds.rst +++ b/dev/builds.rst @@ -24,7 +24,7 @@ Variants * The New Recompiler is always used on Apple Silicon due to its ARM architecture, even if the Old Recompiler is selected. -.. note:: Debug variants have been moved to a `special page on the 86Box website `_ as of July 18th 2022 due to constant misuse. +.. note:: Debug variants have been moved to a `special page on the 86Box website `_ as of July 18th 2022. Discontinued variants ^^^^^^^^^^^^^^^^^^^^^ From fe7443d68200afbaae8d725b9925af794a681020 Mon Sep 17 00:00:00 2001 From: richardg867 Date: Mon, 18 Jul 2022 21:14:37 -0300 Subject: [PATCH 04/75] Update builds.rst --- dev/builds.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev/builds.rst b/dev/builds.rst index df9498a..1114aca 100644 --- a/dev/builds.rst +++ b/dev/builds.rst @@ -24,7 +24,7 @@ Variants * The New Recompiler is always used on Apple Silicon due to its ARM architecture, even if the Old Recompiler is selected. -.. note:: Debug variants have been moved to a `special page on the 86Box website `_ as of July 18th 2022 due to constant misuse. +.. note:: Debug variants have been moved to a `special page on the 86Box website `_ as of July 18th 2022. Discontinued variants ^^^^^^^^^^^^^^^^^^^^^ From b3385351a687e35b22292cec81145ede775931ef Mon Sep 17 00:00:00 2001 From: RichardG867 Date: Sun, 31 Jul 2022 21:29:41 -0300 Subject: [PATCH 05/75] Missed preference on 3.6 --- usage/menubar.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/usage/menubar.rst b/usage/menubar.rst index ad7c8ad..c851d8a 100644 --- a/usage/menubar.rst +++ b/usage/menubar.rst @@ -82,6 +82,7 @@ Tools * **Language:** select a language for the 86Box user interface. * **Icon set:** select an icon theme for the :doc:`status bar ` and :doc:`Settings window <../settings/index>`. + * **Mouse sensitivity:** adjust the emulated mouse's tracking sensitivity. * **MCA devices**: open the *MCA devices* window, which lists the IDs and required `Adapter Definition Files `_ of all Micro Channel devices installed on the emulated machine. This option will only be available when emulating a Micro Channel Architecture-based machine. From da8ef7074c97c8cbbe18dc0e9cb04f2712efe00c Mon Sep 17 00:00:00 2001 From: RichardG867 Date: Tue, 2 Aug 2022 15:39:13 -0300 Subject: [PATCH 06/75] D3D9 renderer on v3.6 --- usage/menubar.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/usage/menubar.rst b/usage/menubar.rst index c851d8a..921677f 100644 --- a/usage/menubar.rst +++ b/usage/menubar.rst @@ -26,7 +26,7 @@ View * **Renderer:** select a graphical renderer for the emulated display. * **SDL (Hardware)** is recommended in most cases. - * **SDL (Software)**, **SDL (OpenGL)** and **Vulkan** are known to perform better on some host systems. Try these if your system is struggling to maintain 100% emulation speed. + * **SDL (Software)**, **SDL (OpenGL)**, **Vulkan** and **Direct3D 9** are known to perform better on some host systems. Try these if your system is struggling to maintain 100% emulation speed. * **OpenGL (3.0 Core)** allows for shader effects to be applied to the emulated display, however, it is not compatible with older integrated GPUs. * **Renderer options:** open a window to configure the *OpenGL (3.0 Core)* renderer. This option will be available if that renderer is selected. From e6c350982e565129cc7ab98ab2893befb26bd0cf Mon Sep 17 00:00:00 2001 From: RichardG867 Date: Tue, 2 Aug 2022 15:39:28 -0300 Subject: [PATCH 07/75] D3D9 renderer on v3.7 --- usage/menubar.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/usage/menubar.rst b/usage/menubar.rst index 75ed5c1..6dbda9a 100644 --- a/usage/menubar.rst +++ b/usage/menubar.rst @@ -27,7 +27,7 @@ View * **Renderer:** select a graphical renderer for the emulated display. * **SDL (Hardware)** is recommended in most cases. - * **SDL (Software)**, **SDL (OpenGL)** and **Vulkan** are known to perform better on some host systems. Try these if your system is struggling to maintain 100% emulation speed. + * **SDL (Software)**, **SDL (OpenGL)**, **Vulkan** and **Direct3D 9** are known to perform better on some host systems. Try these if your system is struggling to maintain 100% emulation speed. * **OpenGL (3.0 Core)** allows for shader effects to be applied to the emulated display, however, it is not compatible with older integrated GPUs. * **Renderer options:** open a window to configure the *OpenGL (3.0 Core)* renderer. This option will be available if that renderer is selected. From 4fdf61d3348321f301cca5eb57a94f90e17b59f8 Mon Sep 17 00:00:00 2001 From: richardg867 Date: Sat, 15 Oct 2022 23:08:45 -0300 Subject: [PATCH 08/75] HiDPI scaling off-by-one notice on v3.7 --- usage/menubar.rst | 3 +++ 1 file changed, 3 insertions(+) diff --git a/usage/menubar.rst b/usage/menubar.rst index 6dbda9a..3e83477 100644 --- a/usage/menubar.rst +++ b/usage/menubar.rst @@ -46,6 +46,9 @@ View * **Window scale factor:** scale the emulated display to half (*0.5x*), normal (*1x*), 50% larger (*1.5x*) or double (*2x*) sizes. * **Filter method:** select the filtering method (*Nearest* or *Linear*) to be used when scaling the emulated display. * **HiDPI scaling:** automatically scale the emulated display to real size if your host system has a HiDPI display. This option can be used alongside *Window scale factor* above. + +.. note:: If HiDPI scaling is disabled on a host with a HiDPI display, the emulated display's size may be off by one pixel due to an integer scaling limitation. + * **Fullscreen:** enter full screen mode. Press *Ctrl+Alt+Page Down* to go back to windowed mode. You can also enter full screen mode by pressing *Ctrl+Alt+Page Up*. * **Fullscreen stretch mode:** select the picture mode to use when in full screen mode. From 3402803f2da9b015c468bb499012a5b5ba909d1a Mon Sep 17 00:00:00 2001 From: richardg867 Date: Sat, 15 Oct 2022 23:09:06 -0300 Subject: [PATCH 09/75] HiDPI scaling off-by-one notice on v3.6 --- usage/menubar.rst | 3 +++ 1 file changed, 3 insertions(+) diff --git a/usage/menubar.rst b/usage/menubar.rst index 921677f..9de4fe2 100644 --- a/usage/menubar.rst +++ b/usage/menubar.rst @@ -45,6 +45,9 @@ View * **Window scale factor:** scale the emulated display to half (*0.5x*), normal (*1x*), 50% larger (*1.5x*) or double (*2x*) sizes. * **Filter method:** select the filtering method (*Nearest* or *Linear*) to be used when scaling the emulated display. * **HiDPI scaling:** automatically scale the emulated display to real size if your host system has a HiDPI display. This option can be used alongside *Window scale factor* above. + +.. note:: If HiDPI scaling is disabled on a host with a HiDPI display, the emulated display's size may be off by one pixel due to an integer scaling limitation. + * **Fullscreen:** enter full screen mode. Press *Ctrl+Alt+Page Down* to go back to windowed mode. You can also enter full screen mode by pressing *Ctrl+Alt+Page Up*. * **Fullscreen stretch mode:** select the picture mode to use when in full screen mode. From e149f31ed51b6d56a0ece37cdc8fee334ea2edb1 Mon Sep 17 00:00:00 2001 From: richardg867 Date: Sat, 15 Oct 2022 23:09:40 -0300 Subject: [PATCH 10/75] HiDPI scaling off-by-one notice on v3.5 --- usage/menubar.rst | 3 +++ 1 file changed, 3 insertions(+) diff --git a/usage/menubar.rst b/usage/menubar.rst index c97530f..299295a 100644 --- a/usage/menubar.rst +++ b/usage/menubar.rst @@ -45,6 +45,9 @@ View * **Window scale factor:** scale the emulated display to half (*0.5x*), normal (*1x*), 50% larger (*1.5x*) or double (*2x*) sizes. * **Filter method:** select the filtering method (*Nearest* or *Linear*) to be used when scaling the emulated display. * **HiDPI scaling:** automatically scale the emulated display to real size if your host system has a HiDPI display. This option can be used alongside *Window scale factor* above. + +.. note:: If HiDPI scaling is disabled on a host with a HiDPI display, the emulated display's size may be off by one pixel due to an integer scaling limitation. + * **Fullscreen:** enter full screen mode. Press *Ctrl+Alt+Page Down* to go back to windowed mode. You can also enter full screen mode by pressing *Ctrl+Alt+Page Up*. * **Fullscreen stretch mode:** select the picture mode to use when in full screen mode. From e96274a23dd0b408925d622b59923a9bcc8c3f51 Mon Sep 17 00:00:00 2001 From: richardg867 Date: Sat, 15 Oct 2022 23:10:00 -0300 Subject: [PATCH 11/75] HiDPI scaling off-by-one notice on v3.4 --- usage/menubar.rst | 3 +++ 1 file changed, 3 insertions(+) diff --git a/usage/menubar.rst b/usage/menubar.rst index 8d67a13..9386f2b 100644 --- a/usage/menubar.rst +++ b/usage/menubar.rst @@ -45,6 +45,9 @@ View * **Window scale factor:** scale the emulated display to half (*0.5x*), normal (*1x*), 50% larger (*1.5x*) or double (*2x*) sizes. * **Filter method:** select the filtering method (*Nearest* or *Linear*) to be used when scaling the emulated display. * **HiDPI scaling:** automatically scale the emulated display to real size if your host system has a HiDPI display. This option can be used alongside *Window scale factor* above. + +.. note:: If HiDPI scaling is disabled on a host with a HiDPI display, the emulated display's size may be off by one pixel due to an integer scaling limitation. + * **Fullscreen:** enter full screen mode. Press *Ctrl+Alt+Page Down* to go back to windowed mode. You can also enter full screen mode by pressing *Ctrl+Alt+Page Up*. * **Fullscreen stretch mode:** select the picture mode to use when in full screen mode. From 214d00489b4bd4bbeb57716682b15387d4c0ccef Mon Sep 17 00:00:00 2001 From: richardg867 Date: Sat, 15 Oct 2022 23:10:24 -0300 Subject: [PATCH 12/75] HiDPI scaling off-by-one notice on v3.3 --- usage/menubar.rst | 3 +++ 1 file changed, 3 insertions(+) diff --git a/usage/menubar.rst b/usage/menubar.rst index 7c74c01..3252889 100644 --- a/usage/menubar.rst +++ b/usage/menubar.rst @@ -45,6 +45,9 @@ View * **Window scale factor:** scale the emulated display to half (*0.5x*), normal (*1x*), 50% larger (*1.5x*) or double (*2x*) sizes. * **Filter method:** select the filtering method (*Nearest* or *Linear*) to be used when scaling the emulated display. * **HiDPI scaling:** automatically scale the emulated display to real size if your host system has a HiDPI display. This option can be used alongside *Window scale factor* above. + +.. note:: If HiDPI scaling is disabled on a host with a HiDPI display, the emulated display's size may be off by one pixel due to an integer scaling limitation. + * **Fullscreen:** enter full screen mode. Press *Ctrl+Alt+Page Down* to go back to windowed mode. You can also enter full screen mode by pressing *Ctrl+Alt+Page Up*. * **Fullscreen stretch mode:** select the picture mode to use when in full screen mode. From 7cc49134cc4f380bd5b603040fbeb5d6ac85d9f9 Mon Sep 17 00:00:00 2001 From: richardg867 Date: Sun, 16 Oct 2022 00:47:50 -0300 Subject: [PATCH 13/75] LPT4 fix for v3.7 --- settings/ports.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/settings/ports.rst b/settings/ports.rst index d36a978..7794f49 100644 --- a/settings/ports.rst +++ b/settings/ports.rst @@ -45,6 +45,6 @@ Enable emulation of serial ports ranging from COM1 to COM4. Any ports not provid Parallel port 1-4 ----------------- -Enable emulation of parallel ports ranging from LPT1 to LPT3. Any ports not provided by the machine's motherboard will be emulated as generic ISA or VLB parallel cards. +Enable emulation of parallel ports ranging from LPT1 to LPT4. Any ports not provided by the machine's motherboard will be emulated as generic ISA or VLB parallel cards. -.. note:: The 4th parallel port is not widely supported. It is located at I/O port 268h. +.. note:: The 4th parallel port is not widely supported. It is located at I/O port `0x268`. From 0d3c1c8c5e022ee41ab95be53f4d04203d31d32c Mon Sep 17 00:00:00 2001 From: richardg867 Date: Sun, 16 Oct 2022 00:48:08 -0300 Subject: [PATCH 14/75] LPT4 fix for v3.6 --- settings/ports.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/settings/ports.rst b/settings/ports.rst index d36a978..7794f49 100644 --- a/settings/ports.rst +++ b/settings/ports.rst @@ -45,6 +45,6 @@ Enable emulation of serial ports ranging from COM1 to COM4. Any ports not provid Parallel port 1-4 ----------------- -Enable emulation of parallel ports ranging from LPT1 to LPT3. Any ports not provided by the machine's motherboard will be emulated as generic ISA or VLB parallel cards. +Enable emulation of parallel ports ranging from LPT1 to LPT4. Any ports not provided by the machine's motherboard will be emulated as generic ISA or VLB parallel cards. -.. note:: The 4th parallel port is not widely supported. It is located at I/O port 268h. +.. note:: The 4th parallel port is not widely supported. It is located at I/O port `0x268`. From 7c489ecf320e10a7ce91326d59b2a3381394e1db Mon Sep 17 00:00:00 2001 From: richardg867 Date: Sun, 16 Oct 2022 00:48:27 -0300 Subject: [PATCH 15/75] LPT4 fix for v3.5 --- settings/ports.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/settings/ports.rst b/settings/ports.rst index d36a978..7794f49 100644 --- a/settings/ports.rst +++ b/settings/ports.rst @@ -45,6 +45,6 @@ Enable emulation of serial ports ranging from COM1 to COM4. Any ports not provid Parallel port 1-4 ----------------- -Enable emulation of parallel ports ranging from LPT1 to LPT3. Any ports not provided by the machine's motherboard will be emulated as generic ISA or VLB parallel cards. +Enable emulation of parallel ports ranging from LPT1 to LPT4. Any ports not provided by the machine's motherboard will be emulated as generic ISA or VLB parallel cards. -.. note:: The 4th parallel port is not widely supported. It is located at I/O port 268h. +.. note:: The 4th parallel port is not widely supported. It is located at I/O port `0x268`. From 8ea26e1dabf11338ac974611cb07b789ac1350c3 Mon Sep 17 00:00:00 2001 From: richardg867 Date: Sun, 16 Oct 2022 00:48:44 -0300 Subject: [PATCH 16/75] LPT4 fix for v3.4 --- settings/ports.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/settings/ports.rst b/settings/ports.rst index d36a978..7794f49 100644 --- a/settings/ports.rst +++ b/settings/ports.rst @@ -45,6 +45,6 @@ Enable emulation of serial ports ranging from COM1 to COM4. Any ports not provid Parallel port 1-4 ----------------- -Enable emulation of parallel ports ranging from LPT1 to LPT3. Any ports not provided by the machine's motherboard will be emulated as generic ISA or VLB parallel cards. +Enable emulation of parallel ports ranging from LPT1 to LPT4. Any ports not provided by the machine's motherboard will be emulated as generic ISA or VLB parallel cards. -.. note:: The 4th parallel port is not widely supported. It is located at I/O port 268h. +.. note:: The 4th parallel port is not widely supported. It is located at I/O port `0x268`. From 6dc8eb065bff81a9391f25f33773861a33549843 Mon Sep 17 00:00:00 2001 From: richardg867 Date: Sun, 16 Oct 2022 00:49:04 -0300 Subject: [PATCH 17/75] LPT4 fix for v3.3 --- settings/ports.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/settings/ports.rst b/settings/ports.rst index 6fcd3b2..40f885f 100644 --- a/settings/ports.rst +++ b/settings/ports.rst @@ -45,6 +45,6 @@ Enable emulation of serial ports ranging from COM1 to COM4. Any ports not provid Parallel port 1-4 ----------------- -Enable emulation of parallel ports ranging from LPT1 to LPT3. Any ports not provided by the machine's motherboard will be emulated as generic ISA or VLB parallel cards. +Enable emulation of parallel ports ranging from LPT1 to LPT4. Any ports not provided by the machine's motherboard will be emulated as generic ISA or VLB parallel cards. -.. note:: The 4th parallel port is not widely supported. It is located at I/O port 268h. +.. note:: The 4th parallel port is not widely supported. It is located at I/O port `0x268`. From 824ec353a6c25c877ba23972fbc3c66bd4a501bd Mon Sep 17 00:00:00 2001 From: richardg867 Date: Sun, 16 Oct 2022 00:49:23 -0300 Subject: [PATCH 18/75] LPT4 fix for v3.2 --- settings/ports.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/settings/ports.rst b/settings/ports.rst index 6fcd3b2..40f885f 100644 --- a/settings/ports.rst +++ b/settings/ports.rst @@ -45,6 +45,6 @@ Enable emulation of serial ports ranging from COM1 to COM4. Any ports not provid Parallel port 1-4 ----------------- -Enable emulation of parallel ports ranging from LPT1 to LPT3. Any ports not provided by the machine's motherboard will be emulated as generic ISA or VLB parallel cards. +Enable emulation of parallel ports ranging from LPT1 to LPT4. Any ports not provided by the machine's motherboard will be emulated as generic ISA or VLB parallel cards. -.. note:: The 4th parallel port is not widely supported. It is located at I/O port 268h. +.. note:: The 4th parallel port is not widely supported. It is located at I/O port `0x268`. From a911bb4028c2c79605f26c6e783fd3b9b4e4eea6 Mon Sep 17 00:00:00 2001 From: RichardG867 Date: Sun, 16 Apr 2023 15:16:50 -0300 Subject: [PATCH 19/75] Correct renderer names for v3.7 --- usage/menubar.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/usage/menubar.rst b/usage/menubar.rst index 3e83477..448dbcb 100644 --- a/usage/menubar.rst +++ b/usage/menubar.rst @@ -26,8 +26,8 @@ View * **Remember size & position:** automatically save the size and position of the 86Box window to the emulated machine's configuration file. * **Renderer:** select a graphical renderer for the emulated display. - * **SDL (Hardware)** is recommended in most cases. - * **SDL (Software)**, **SDL (OpenGL)**, **Vulkan** and **Direct3D 9** are known to perform better on some host systems. Try these if your system is struggling to maintain 100% emulation speed. + * **Qt (Software)** is recommended in most cases. + * **Qt (OpenGL)**, **Vulkan** and **Direct3D 9** are known to perform better on some host systems. Try these if your system is struggling to maintain 100% emulation speed. *Vulkan* may not be available if the host GPU is not Vulkan-capable, and *Direct3D 9* is only available on Windows hosts. * **OpenGL (3.0 Core)** allows for shader effects to be applied to the emulated display, however, it is not compatible with older integrated GPUs. * **Renderer options:** open a window to configure the *OpenGL (3.0 Core)* renderer. This option will be available if that renderer is selected. From fef7aa6336d253fb2ae958a6c2e4995fd1b65995 Mon Sep 17 00:00:00 2001 From: RichardG867 Date: Sun, 16 Apr 2023 15:18:56 -0300 Subject: [PATCH 20/75] Correct renderer names for v3.6 --- usage/menubar.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/usage/menubar.rst b/usage/menubar.rst index 9de4fe2..3b7d02a 100644 --- a/usage/menubar.rst +++ b/usage/menubar.rst @@ -25,8 +25,8 @@ View * **Remember size & position:** automatically save the size and position of the 86Box window to the emulated machine's configuration file. * **Renderer:** select a graphical renderer for the emulated display. - * **SDL (Hardware)** is recommended in most cases. - * **SDL (Software)**, **SDL (OpenGL)**, **Vulkan** and **Direct3D 9** are known to perform better on some host systems. Try these if your system is struggling to maintain 100% emulation speed. + * **Qt (Software)** is recommended in most cases. + * **Qt (OpenGL)**, **Vulkan** and **Direct3D 9** are known to perform better on some host systems. Try these if your system is struggling to maintain 100% emulation speed. *Vulkan* may not be available if the host GPU is not Vulkan-capable, and *Direct3D 9* is only available on Windows hosts. * **OpenGL (3.0 Core)** allows for shader effects to be applied to the emulated display, however, it is not compatible with older integrated GPUs. * **Renderer options:** open a window to configure the *OpenGL (3.0 Core)* renderer. This option will be available if that renderer is selected. From 6a6b5828d9cb8f696b73c64e9cea49f7dfdce303 Mon Sep 17 00:00:00 2001 From: RichardG867 Date: Sun, 16 Apr 2023 15:20:22 -0300 Subject: [PATCH 21/75] Correct renderer names for v3.5 --- usage/menubar.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/usage/menubar.rst b/usage/menubar.rst index 299295a..5490e4d 100644 --- a/usage/menubar.rst +++ b/usage/menubar.rst @@ -25,8 +25,8 @@ View * **Remember size & position:** automatically save the size and position of the 86Box window to the emulated machine's configuration file. * **Renderer:** select a graphical renderer for the emulated display. - * **SDL (Hardware)** is recommended in most cases. - * **SDL (Software)**, **SDL (OpenGL)** and **Vulkan** are known to perform better on some host systems. Try these if your system is struggling to maintain 100% emulation speed. + * **Qt (Software)** is recommended in most cases. + * **Qt (OpenGL)** and **Vulkan** are known to perform better on some host systems. Try these if your system is struggling to maintain 100% emulation speed. *Vulkan* may not be available if the host GPU is not Vulkan-capable. * **OpenGL (3.0 Core)** allows for shader effects to be applied to the emulated display, however, it is not compatible with older integrated GPUs. * **Renderer options:** open a window to configure the *OpenGL (3.0 Core)* renderer. This option will be available if that renderer is selected. From 222fc7f16a05419690acefc8f3bfd27b2a09a881 Mon Sep 17 00:00:00 2001 From: RichardG867 Date: Sun, 16 Apr 2023 15:21:53 -0300 Subject: [PATCH 22/75] Correct renderer names for v3.4 --- usage/menubar.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/usage/menubar.rst b/usage/menubar.rst index 9386f2b..4a4b188 100644 --- a/usage/menubar.rst +++ b/usage/menubar.rst @@ -25,8 +25,8 @@ View * **Remember size & position:** automatically save the size and position of the 86Box window to the emulated machine's configuration file. * **Renderer:** select a graphical renderer for the emulated display. - * **SDL (Hardware)** is recommended in most cases. - * **SDL (Software)** and **SDL (OpenGL)** are known to perform better on some host systems. Try these if your system is struggling to maintain 100% emulation speed. + * **Qt (Software)** is recommended in most cases. + * **Qt (OpenGL)** is known to perform better on some host systems. Try it if your system is struggling to maintain 100% emulation speed. * **OpenGL (3.0 Core)** allows for shader effects to be applied to the emulated display, however, it is not compatible with older integrated GPUs. * **Renderer options:** open a window to configure the *OpenGL (3.0 Core)* renderer. This option will be available if that renderer is selected. From 935fc182d5373629e8eba0d9b0378d00b77d47d1 Mon Sep 17 00:00:00 2001 From: RichardG867 Date: Sun, 16 Apr 2023 15:22:55 -0300 Subject: [PATCH 23/75] Correct renderer names for v3.3 --- usage/menubar.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/usage/menubar.rst b/usage/menubar.rst index 3252889..1196292 100644 --- a/usage/menubar.rst +++ b/usage/menubar.rst @@ -25,8 +25,8 @@ View * **Remember size & position:** automatically save the size and position of the 86Box window to the emulated machine's configuration file. * **Renderer:** select a graphical renderer for the emulated display. - * **SDL (Hardware)** is recommended in most cases. - * **SDL (Software)** and **SDL (OpenGL)** are known to perform better on some host systems. Try these if your system is struggling to maintain 100% emulation speed. + * **Qt (Software)** is recommended in most cases. + * **Qt (OpenGL)** is known to perform better on some host systems. Try it if your system is struggling to maintain 100% emulation speed. * **OpenGL (3.0 Core)** allows for shader effects to be applied to the emulated display, however, it is not compatible with older integrated GPUs. * **Renderer options:** open a window to configure the *OpenGL (3.0 Core)* renderer. This option will be available if that renderer is selected. From 0c1950119695733738de5184ec6f3a096b81f7b7 Mon Sep 17 00:00:00 2001 From: RichardG867 Date: Sun, 16 Apr 2023 15:26:35 -0300 Subject: [PATCH 24/75] Correct renderer names for v3.2, I'm going this far back! --- usage/menubar.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/usage/menubar.rst b/usage/menubar.rst index 5702325..5db8612 100644 --- a/usage/menubar.rst +++ b/usage/menubar.rst @@ -25,8 +25,8 @@ View * **Remember size & position:** automatically save the size and position of the 86Box window to the emulated machine's configuration file. * **Renderer:** select a graphical renderer for the emulated display. - * **SDL (Hardware)** is recommended in most cases. - * **SDL (Software)** and **SDL (OpenGL)** are known to perform better on some host systems. Try these if your system is struggling to maintain 100% emulation speed. + * **SDL (Hardware)** (on Windows) or **Qt (Software)** (on Linux) is recommended in most cases. + * **SDL (Software)**, **SDL (OpenGL)** (both Windows only) and **Qt (OpenGL)** (Linux only) are known to perform better on some host systems. Try these if your system is struggling to maintain 100% emulation speed. * **OpenGL (3.0 Core)** allows for shader effects to be applied to the emulated display, however, it is not compatible with older integrated GPUs. .. note:: The **OpenGL (3.0 Core)** renderer and its shader support are not available on Linux in this release. From d4119572c987784b49b3e6acc1018b0f31f32750 Mon Sep 17 00:00:00 2001 From: RichardG867 Date: Fri, 13 Oct 2023 23:25:11 -0300 Subject: [PATCH 25/75] Port extended scale factors to v3.11 --- usage/menubar.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/usage/menubar.rst b/usage/menubar.rst index 64b2123..520c953 100644 --- a/usage/menubar.rst +++ b/usage/menubar.rst @@ -43,7 +43,7 @@ View * **Specify dimensions:** open a window where an exact size (in pixels) for the emulated display can be set. If checked, the *Lock to this size* box prevents changes in the emulated display's resolution from overriding the specified size. * **Force 4:3 display ratio:** stretch the emulated display to a 4:3 aspect ratio, independently of the emulated machine's screen resolution. -* **Window scale factor:** scale the emulated display to half (*0.5x*), normal (*1x*), 50% larger (*1.5x*) or double (*2x*) sizes. +* **Window scale factor:** scale the emulated display to half (*0.5x*), normal (*1x*), 50% larger (*1.5x*), double (*2x*) or larger (up to *8x*) sizes. * **Filter method:** select the filtering method (*Nearest* or *Linear*) to be used when scaling the emulated display. * **HiDPI scaling:** automatically scale the emulated display to real size if your host system has a HiDPI display. This option can be used alongside *Window scale factor* above. From 8bb0621312dded50c85c6ae40804b0631ac1ac03 Mon Sep 17 00:00:00 2001 From: RichardG867 Date: Fri, 11 Oct 2024 16:21:06 -0300 Subject: [PATCH 26/75] Replace 86F spec with v2.12 --- dev/formats/86f.rst | 168 ++++++++++++++++++++++++++++---------------- 1 file changed, 107 insertions(+), 61 deletions(-) diff --git a/dev/formats/86f.rst b/dev/formats/86f.rst index 024358b..fd0eb72 100644 --- a/dev/formats/86f.rst +++ b/dev/formats/86f.rst @@ -3,69 +3,115 @@ A floppy disk surface image format which stores data in FM- or MFM-encoded transitions. -Preliminary specification for v2.20 ------------------------------------ +Specification for v2.12 +----------------------- -All offsets are in hexadecimal. This specification is subject to change before its final release. +All offsets are in hexadecimal. .. code-block:: none - 00000000: Magic 4 bytes ("86BF") - 00000004: Minor version (0x14) - 00000005: Major version (0x02) - 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) - Bit 5 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 6 Revolutions (0 = one revolution, 1 track has 16-bit number of revolutions) - 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.). - The table of the offsets of tracks is 2048 bytes long, each track offset is an unigned 32-bit - integer. An offset of 00000000 indicates the track is not present in the file. - As an example, an 86F representing a disk with 80 thin tracks and 2 sides per track, where all - the tracks are present in the file, would have the first 160 offsets filled in, same for a disk - with 40 thick tracks and 2 sides. Same with only 1 side but only the offsets at 0000000, 0000008, - etc. (so every second offset) would be filled in. - - Track offset + 00000000: Track flags (16-bit) - 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. - The RPM is determined from track length and data rate. - Track offset + 00000002: Total bit cells count (32-bit) - 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) +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.). - If this is a multi-revolution 86F, then track offset + 00000000 has a 16-bit number of track revolutions, - and the track header + data appears for each revolution, while surface description data, if present, - can appear any number of times, but only once per encoding + bit rate combination. - This needs work to properly make surface data work with flexible multi-revolution support. - - Track lengths: - The total bit cells count is always present. - The track is stored as (bit cells >> 8) bytes, with one extra bit cells if the number of bit cells - is not divisible by 8. +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. From 111e3ac37e61a1d30863de0892e17acabb89fe42 Mon Sep 17 00:00:00 2001 From: RichardG867 Date: Fri, 11 Oct 2024 16:21:06 -0300 Subject: [PATCH 27/75] Replace 86F spec with v2.12 --- dev/formats/86f.rst | 168 ++++++++++++++++++++++++++++---------------- 1 file changed, 107 insertions(+), 61 deletions(-) diff --git a/dev/formats/86f.rst b/dev/formats/86f.rst index 024358b..fd0eb72 100644 --- a/dev/formats/86f.rst +++ b/dev/formats/86f.rst @@ -3,69 +3,115 @@ A floppy disk surface image format which stores data in FM- or MFM-encoded transitions. -Preliminary specification for v2.20 ------------------------------------ +Specification for v2.12 +----------------------- -All offsets are in hexadecimal. This specification is subject to change before its final release. +All offsets are in hexadecimal. .. code-block:: none - 00000000: Magic 4 bytes ("86BF") - 00000004: Minor version (0x14) - 00000005: Major version (0x02) - 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) - Bit 5 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 6 Revolutions (0 = one revolution, 1 track has 16-bit number of revolutions) - 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.). - The table of the offsets of tracks is 2048 bytes long, each track offset is an unigned 32-bit - integer. An offset of 00000000 indicates the track is not present in the file. - As an example, an 86F representing a disk with 80 thin tracks and 2 sides per track, where all - the tracks are present in the file, would have the first 160 offsets filled in, same for a disk - with 40 thick tracks and 2 sides. Same with only 1 side but only the offsets at 0000000, 0000008, - etc. (so every second offset) would be filled in. - - Track offset + 00000000: Track flags (16-bit) - 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. - The RPM is determined from track length and data rate. - Track offset + 00000002: Total bit cells count (32-bit) - 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) +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.). - If this is a multi-revolution 86F, then track offset + 00000000 has a 16-bit number of track revolutions, - and the track header + data appears for each revolution, while surface description data, if present, - can appear any number of times, but only once per encoding + bit rate combination. - This needs work to properly make surface data work with flexible multi-revolution support. - - Track lengths: - The total bit cells count is always present. - The track is stored as (bit cells >> 8) bytes, with one extra bit cells if the number of bit cells - is not divisible by 8. +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. From 499319b80bdb6e51a80c5c1b4020e87dd116ab1b Mon Sep 17 00:00:00 2001 From: RichardG867 Date: Fri, 11 Oct 2024 16:21:06 -0300 Subject: [PATCH 28/75] Replace 86F spec with v2.12 --- dev/formats/86f.rst | 168 ++++++++++++++++++++++++++++---------------- 1 file changed, 107 insertions(+), 61 deletions(-) diff --git a/dev/formats/86f.rst b/dev/formats/86f.rst index 024358b..fd0eb72 100644 --- a/dev/formats/86f.rst +++ b/dev/formats/86f.rst @@ -3,69 +3,115 @@ A floppy disk surface image format which stores data in FM- or MFM-encoded transitions. -Preliminary specification for v2.20 ------------------------------------ +Specification for v2.12 +----------------------- -All offsets are in hexadecimal. This specification is subject to change before its final release. +All offsets are in hexadecimal. .. code-block:: none - 00000000: Magic 4 bytes ("86BF") - 00000004: Minor version (0x14) - 00000005: Major version (0x02) - 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) - Bit 5 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 6 Revolutions (0 = one revolution, 1 track has 16-bit number of revolutions) - 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.). - The table of the offsets of tracks is 2048 bytes long, each track offset is an unigned 32-bit - integer. An offset of 00000000 indicates the track is not present in the file. - As an example, an 86F representing a disk with 80 thin tracks and 2 sides per track, where all - the tracks are present in the file, would have the first 160 offsets filled in, same for a disk - with 40 thick tracks and 2 sides. Same with only 1 side but only the offsets at 0000000, 0000008, - etc. (so every second offset) would be filled in. - - Track offset + 00000000: Track flags (16-bit) - 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. - The RPM is determined from track length and data rate. - Track offset + 00000002: Total bit cells count (32-bit) - 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) +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.). - If this is a multi-revolution 86F, then track offset + 00000000 has a 16-bit number of track revolutions, - and the track header + data appears for each revolution, while surface description data, if present, - can appear any number of times, but only once per encoding + bit rate combination. - This needs work to properly make surface data work with flexible multi-revolution support. - - Track lengths: - The total bit cells count is always present. - The track is stored as (bit cells >> 8) bytes, with one extra bit cells if the number of bit cells - is not divisible by 8. +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. From ede5dbb0f82913b6fc955c1806033f3c9f266e62 Mon Sep 17 00:00:00 2001 From: RichardG867 Date: Fri, 11 Oct 2024 16:21:06 -0300 Subject: [PATCH 29/75] Replace 86F spec with v2.12 --- dev/formats/86f.rst | 168 ++++++++++++++++++++++++++++---------------- 1 file changed, 107 insertions(+), 61 deletions(-) diff --git a/dev/formats/86f.rst b/dev/formats/86f.rst index 024358b..fd0eb72 100644 --- a/dev/formats/86f.rst +++ b/dev/formats/86f.rst @@ -3,69 +3,115 @@ A floppy disk surface image format which stores data in FM- or MFM-encoded transitions. -Preliminary specification for v2.20 ------------------------------------ +Specification for v2.12 +----------------------- -All offsets are in hexadecimal. This specification is subject to change before its final release. +All offsets are in hexadecimal. .. code-block:: none - 00000000: Magic 4 bytes ("86BF") - 00000004: Minor version (0x14) - 00000005: Major version (0x02) - 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) - Bit 5 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 6 Revolutions (0 = one revolution, 1 track has 16-bit number of revolutions) - 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.). - The table of the offsets of tracks is 2048 bytes long, each track offset is an unigned 32-bit - integer. An offset of 00000000 indicates the track is not present in the file. - As an example, an 86F representing a disk with 80 thin tracks and 2 sides per track, where all - the tracks are present in the file, would have the first 160 offsets filled in, same for a disk - with 40 thick tracks and 2 sides. Same with only 1 side but only the offsets at 0000000, 0000008, - etc. (so every second offset) would be filled in. - - Track offset + 00000000: Track flags (16-bit) - 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. - The RPM is determined from track length and data rate. - Track offset + 00000002: Total bit cells count (32-bit) - 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) +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.). - If this is a multi-revolution 86F, then track offset + 00000000 has a 16-bit number of track revolutions, - and the track header + data appears for each revolution, while surface description data, if present, - can appear any number of times, but only once per encoding + bit rate combination. - This needs work to properly make surface data work with flexible multi-revolution support. - - Track lengths: - The total bit cells count is always present. - The track is stored as (bit cells >> 8) bytes, with one extra bit cells if the number of bit cells - is not divisible by 8. +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. From 165afea45e06f5b412ac9e52115c66117abfbb25 Mon Sep 17 00:00:00 2001 From: RichardG867 Date: Fri, 11 Oct 2024 16:21:06 -0300 Subject: [PATCH 30/75] Replace 86F spec with v2.12 --- dev/formats/86f.rst | 168 ++++++++++++++++++++++++++++---------------- 1 file changed, 107 insertions(+), 61 deletions(-) diff --git a/dev/formats/86f.rst b/dev/formats/86f.rst index 024358b..fd0eb72 100644 --- a/dev/formats/86f.rst +++ b/dev/formats/86f.rst @@ -3,69 +3,115 @@ A floppy disk surface image format which stores data in FM- or MFM-encoded transitions. -Preliminary specification for v2.20 ------------------------------------ +Specification for v2.12 +----------------------- -All offsets are in hexadecimal. This specification is subject to change before its final release. +All offsets are in hexadecimal. .. code-block:: none - 00000000: Magic 4 bytes ("86BF") - 00000004: Minor version (0x14) - 00000005: Major version (0x02) - 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) - Bit 5 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 6 Revolutions (0 = one revolution, 1 track has 16-bit number of revolutions) - 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.). - The table of the offsets of tracks is 2048 bytes long, each track offset is an unigned 32-bit - integer. An offset of 00000000 indicates the track is not present in the file. - As an example, an 86F representing a disk with 80 thin tracks and 2 sides per track, where all - the tracks are present in the file, would have the first 160 offsets filled in, same for a disk - with 40 thick tracks and 2 sides. Same with only 1 side but only the offsets at 0000000, 0000008, - etc. (so every second offset) would be filled in. - - Track offset + 00000000: Track flags (16-bit) - 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. - The RPM is determined from track length and data rate. - Track offset + 00000002: Total bit cells count (32-bit) - 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) +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.). - If this is a multi-revolution 86F, then track offset + 00000000 has a 16-bit number of track revolutions, - and the track header + data appears for each revolution, while surface description data, if present, - can appear any number of times, but only once per encoding + bit rate combination. - This needs work to properly make surface data work with flexible multi-revolution support. - - Track lengths: - The total bit cells count is always present. - The track is stored as (bit cells >> 8) bytes, with one extra bit cells if the number of bit cells - is not divisible by 8. +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. From 32330aff245ce7a612cda12f27ed591038c08cc0 Mon Sep 17 00:00:00 2001 From: RichardG867 Date: Fri, 11 Oct 2024 16:21:06 -0300 Subject: [PATCH 31/75] Replace 86F spec with v2.12 --- dev/formats/86f.rst | 168 ++++++++++++++++++++++++++++---------------- 1 file changed, 107 insertions(+), 61 deletions(-) diff --git a/dev/formats/86f.rst b/dev/formats/86f.rst index 024358b..fd0eb72 100644 --- a/dev/formats/86f.rst +++ b/dev/formats/86f.rst @@ -3,69 +3,115 @@ A floppy disk surface image format which stores data in FM- or MFM-encoded transitions. -Preliminary specification for v2.20 ------------------------------------ +Specification for v2.12 +----------------------- -All offsets are in hexadecimal. This specification is subject to change before its final release. +All offsets are in hexadecimal. .. code-block:: none - 00000000: Magic 4 bytes ("86BF") - 00000004: Minor version (0x14) - 00000005: Major version (0x02) - 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) - Bit 5 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 6 Revolutions (0 = one revolution, 1 track has 16-bit number of revolutions) - 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.). - The table of the offsets of tracks is 2048 bytes long, each track offset is an unigned 32-bit - integer. An offset of 00000000 indicates the track is not present in the file. - As an example, an 86F representing a disk with 80 thin tracks and 2 sides per track, where all - the tracks are present in the file, would have the first 160 offsets filled in, same for a disk - with 40 thick tracks and 2 sides. Same with only 1 side but only the offsets at 0000000, 0000008, - etc. (so every second offset) would be filled in. - - Track offset + 00000000: Track flags (16-bit) - 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. - The RPM is determined from track length and data rate. - Track offset + 00000002: Total bit cells count (32-bit) - 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) +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.). - If this is a multi-revolution 86F, then track offset + 00000000 has a 16-bit number of track revolutions, - and the track header + data appears for each revolution, while surface description data, if present, - can appear any number of times, but only once per encoding + bit rate combination. - This needs work to properly make surface data work with flexible multi-revolution support. - - Track lengths: - The total bit cells count is always present. - The track is stored as (bit cells >> 8) bytes, with one extra bit cells if the number of bit cells - is not divisible by 8. +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. From e3f4032079099305ae9ae1accd86b81a0071db51 Mon Sep 17 00:00:00 2001 From: RichardG867 Date: Fri, 11 Oct 2024 16:21:06 -0300 Subject: [PATCH 32/75] Replace 86F spec with v2.12 --- dev/formats/86f.rst | 168 ++++++++++++++++++++++++++++---------------- 1 file changed, 107 insertions(+), 61 deletions(-) diff --git a/dev/formats/86f.rst b/dev/formats/86f.rst index 024358b..fd0eb72 100644 --- a/dev/formats/86f.rst +++ b/dev/formats/86f.rst @@ -3,69 +3,115 @@ A floppy disk surface image format which stores data in FM- or MFM-encoded transitions. -Preliminary specification for v2.20 ------------------------------------ +Specification for v2.12 +----------------------- -All offsets are in hexadecimal. This specification is subject to change before its final release. +All offsets are in hexadecimal. .. code-block:: none - 00000000: Magic 4 bytes ("86BF") - 00000004: Minor version (0x14) - 00000005: Major version (0x02) - 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) - Bit 5 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 6 Revolutions (0 = one revolution, 1 track has 16-bit number of revolutions) - 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.). - The table of the offsets of tracks is 2048 bytes long, each track offset is an unigned 32-bit - integer. An offset of 00000000 indicates the track is not present in the file. - As an example, an 86F representing a disk with 80 thin tracks and 2 sides per track, where all - the tracks are present in the file, would have the first 160 offsets filled in, same for a disk - with 40 thick tracks and 2 sides. Same with only 1 side but only the offsets at 0000000, 0000008, - etc. (so every second offset) would be filled in. - - Track offset + 00000000: Track flags (16-bit) - 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. - The RPM is determined from track length and data rate. - Track offset + 00000002: Total bit cells count (32-bit) - 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) +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.). - If this is a multi-revolution 86F, then track offset + 00000000 has a 16-bit number of track revolutions, - and the track header + data appears for each revolution, while surface description data, if present, - can appear any number of times, but only once per encoding + bit rate combination. - This needs work to properly make surface data work with flexible multi-revolution support. - - Track lengths: - The total bit cells count is always present. - The track is stored as (bit cells >> 8) bytes, with one extra bit cells if the number of bit cells - is not divisible by 8. +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. From 40577cb0b216a149624409f7e890155bf63b5296 Mon Sep 17 00:00:00 2001 From: RichardG867 Date: Fri, 11 Oct 2024 16:21:06 -0300 Subject: [PATCH 33/75] Replace 86F spec with v2.12 --- dev/formats/86f.rst | 168 ++++++++++++++++++++++++++++---------------- 1 file changed, 107 insertions(+), 61 deletions(-) diff --git a/dev/formats/86f.rst b/dev/formats/86f.rst index 024358b..fd0eb72 100644 --- a/dev/formats/86f.rst +++ b/dev/formats/86f.rst @@ -3,69 +3,115 @@ A floppy disk surface image format which stores data in FM- or MFM-encoded transitions. -Preliminary specification for v2.20 ------------------------------------ +Specification for v2.12 +----------------------- -All offsets are in hexadecimal. This specification is subject to change before its final release. +All offsets are in hexadecimal. .. code-block:: none - 00000000: Magic 4 bytes ("86BF") - 00000004: Minor version (0x14) - 00000005: Major version (0x02) - 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) - Bit 5 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 6 Revolutions (0 = one revolution, 1 track has 16-bit number of revolutions) - 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.). - The table of the offsets of tracks is 2048 bytes long, each track offset is an unigned 32-bit - integer. An offset of 00000000 indicates the track is not present in the file. - As an example, an 86F representing a disk with 80 thin tracks and 2 sides per track, where all - the tracks are present in the file, would have the first 160 offsets filled in, same for a disk - with 40 thick tracks and 2 sides. Same with only 1 side but only the offsets at 0000000, 0000008, - etc. (so every second offset) would be filled in. - - Track offset + 00000000: Track flags (16-bit) - 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. - The RPM is determined from track length and data rate. - Track offset + 00000002: Total bit cells count (32-bit) - 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) +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.). - If this is a multi-revolution 86F, then track offset + 00000000 has a 16-bit number of track revolutions, - and the track header + data appears for each revolution, while surface description data, if present, - can appear any number of times, but only once per encoding + bit rate combination. - This needs work to properly make surface data work with flexible multi-revolution support. - - Track lengths: - The total bit cells count is always present. - The track is stored as (bit cells >> 8) bytes, with one extra bit cells if the number of bit cells - is not divisible by 8. +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. From b101a8b5e10b99b0609e0468185f5fe70c30db1f Mon Sep 17 00:00:00 2001 From: RichardG867 Date: Fri, 11 Oct 2024 16:21:06 -0300 Subject: [PATCH 34/75] Replace 86F spec with v2.12 --- dev/formats/86f.rst | 168 ++++++++++++++++++++++++++++---------------- 1 file changed, 107 insertions(+), 61 deletions(-) diff --git a/dev/formats/86f.rst b/dev/formats/86f.rst index 024358b..fd0eb72 100644 --- a/dev/formats/86f.rst +++ b/dev/formats/86f.rst @@ -3,69 +3,115 @@ A floppy disk surface image format which stores data in FM- or MFM-encoded transitions. -Preliminary specification for v2.20 ------------------------------------ +Specification for v2.12 +----------------------- -All offsets are in hexadecimal. This specification is subject to change before its final release. +All offsets are in hexadecimal. .. code-block:: none - 00000000: Magic 4 bytes ("86BF") - 00000004: Minor version (0x14) - 00000005: Major version (0x02) - 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) - Bit 5 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 6 Revolutions (0 = one revolution, 1 track has 16-bit number of revolutions) - 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.). - The table of the offsets of tracks is 2048 bytes long, each track offset is an unigned 32-bit - integer. An offset of 00000000 indicates the track is not present in the file. - As an example, an 86F representing a disk with 80 thin tracks and 2 sides per track, where all - the tracks are present in the file, would have the first 160 offsets filled in, same for a disk - with 40 thick tracks and 2 sides. Same with only 1 side but only the offsets at 0000000, 0000008, - etc. (so every second offset) would be filled in. - - Track offset + 00000000: Track flags (16-bit) - 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. - The RPM is determined from track length and data rate. - Track offset + 00000002: Total bit cells count (32-bit) - 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) +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.). - If this is a multi-revolution 86F, then track offset + 00000000 has a 16-bit number of track revolutions, - and the track header + data appears for each revolution, while surface description data, if present, - can appear any number of times, but only once per encoding + bit rate combination. - This needs work to properly make surface data work with flexible multi-revolution support. - - Track lengths: - The total bit cells count is always present. - The track is stored as (bit cells >> 8) bytes, with one extra bit cells if the number of bit cells - is not divisible by 8. +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. From 6385ec6a44495ab97c93fc6de774721cce16d2ec Mon Sep 17 00:00:00 2001 From: RichardG867 Date: Sun, 15 Dec 2024 19:28:33 -0300 Subject: [PATCH 35/75] Fix inaccurate residfp credit --- settings/sound.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/settings/sound.rst b/settings/sound.rst index b8cee23..d4b9ce2 100644 --- a/settings/sound.rst +++ b/settings/sound.rst @@ -50,7 +50,7 @@ Innovation SSI-2001 Emulate the **Innovation SSI-2001** ISA sound card, based on the MOS Technology 6581 chip (commonly known as the Commodore SID) and supported by a limited number of games. -SID emulation is provided by the `reSID `_ library. +SID emulation is provided by the reSIDfp component of the `libsidplayfp `_ library. CMS / Game Blaster ------------------ From 5f5cf6087bc9668f0c6bcb7a33eebcd4ab6e02da Mon Sep 17 00:00:00 2001 From: RichardG867 Date: Sun, 15 Dec 2024 19:28:50 -0300 Subject: [PATCH 36/75] Fix inaccurate residfp credit --- settings/sound.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/settings/sound.rst b/settings/sound.rst index 844789c..630a7e3 100644 --- a/settings/sound.rst +++ b/settings/sound.rst @@ -50,7 +50,7 @@ Innovation SSI-2001 Emulate the **Innovation SSI-2001** ISA sound card, based on the MOS Technology 6581 chip (commonly known as the Commodore SID) and supported by a limited number of games. -SID emulation is provided by the `reSID `_ library. +SID emulation is provided by the reSIDfp component of the `libsidplayfp `_ library. CMS / Game Blaster ------------------ From ddb3826c3436ef51200bdd2318bbffee93b3493c Mon Sep 17 00:00:00 2001 From: RichardG867 Date: Sun, 15 Dec 2024 19:29:01 -0300 Subject: [PATCH 37/75] Fix inaccurate residfp credit --- settings/sound.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/settings/sound.rst b/settings/sound.rst index 066069c..0cadcca 100644 --- a/settings/sound.rst +++ b/settings/sound.rst @@ -50,7 +50,7 @@ Innovation SSI-2001 Emulate the **Innovation SSI-2001** ISA sound card, based on the MOS Technology 6581 chip (commonly known as the Commodore SID) and supported by a limited number of games. -SID emulation is provided by the `reSID `_ library. +SID emulation is provided by the reSIDfp component of the `libsidplayfp `_ library. CMS / Game Blaster ------------------ From 919a24562c7fad65c4e4d9824931aa4846c58cf4 Mon Sep 17 00:00:00 2001 From: RichardG867 Date: Sun, 15 Dec 2024 19:29:36 -0300 Subject: [PATCH 38/75] Fix inaccurate residfp credit --- settings/sound.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/settings/sound.rst b/settings/sound.rst index 4caabc3..9a6cba4 100644 --- a/settings/sound.rst +++ b/settings/sound.rst @@ -50,7 +50,7 @@ Innovation SSI-2001 Emulate the **Innovation SSI-2001** ISA sound card, based on the MOS Technology 6581 chip (commonly known as the Commodore SID) and supported by a limited number of games. -SID emulation is provided by the `reSID `_ library. +SID emulation is provided by the reSIDfp component of the `libsidplayfp `_ library. CMS / Game Blaster ------------------ From b724dda5517aa8c1584b70178f84eb7c6d454d3d Mon Sep 17 00:00:00 2001 From: RichardG867 Date: Sun, 15 Dec 2024 19:29:43 -0300 Subject: [PATCH 39/75] Fix inaccurate residfp credit --- settings/sound.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/settings/sound.rst b/settings/sound.rst index 4caabc3..9a6cba4 100644 --- a/settings/sound.rst +++ b/settings/sound.rst @@ -50,7 +50,7 @@ Innovation SSI-2001 Emulate the **Innovation SSI-2001** ISA sound card, based on the MOS Technology 6581 chip (commonly known as the Commodore SID) and supported by a limited number of games. -SID emulation is provided by the `reSID `_ library. +SID emulation is provided by the reSIDfp component of the `libsidplayfp `_ library. CMS / Game Blaster ------------------ From fc5b05bbfda8955bf2c547173284fb490964ad4e Mon Sep 17 00:00:00 2001 From: RichardG867 Date: Sun, 15 Dec 2024 19:29:51 -0300 Subject: [PATCH 40/75] Fix inaccurate residfp credit --- settings/sound.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/settings/sound.rst b/settings/sound.rst index 4caabc3..9a6cba4 100644 --- a/settings/sound.rst +++ b/settings/sound.rst @@ -50,7 +50,7 @@ Innovation SSI-2001 Emulate the **Innovation SSI-2001** ISA sound card, based on the MOS Technology 6581 chip (commonly known as the Commodore SID) and supported by a limited number of games. -SID emulation is provided by the `reSID `_ library. +SID emulation is provided by the reSIDfp component of the `libsidplayfp `_ library. CMS / Game Blaster ------------------ From c295992d0f38c89014d5d57c7b4054cfa0caeaf2 Mon Sep 17 00:00:00 2001 From: RichardG867 Date: Sun, 15 Dec 2024 19:30:00 -0300 Subject: [PATCH 41/75] Fix inaccurate residfp credit --- settings/sound.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/settings/sound.rst b/settings/sound.rst index 6693729..0a600d2 100644 --- a/settings/sound.rst +++ b/settings/sound.rst @@ -50,7 +50,7 @@ Innovation SSI-2001 Emulate the **Innovation SSI-2001** ISA sound card, based on the MOS Technology 6581 chip (commonly known as the Commodore SID) and supported by a limited number of games. -SID emulation is provided by the `reSID `_ library. +SID emulation is provided by the reSIDfp component of the `libsidplayfp `_ library. CMS / Game Blaster ------------------ From ccec97f4bd3ebe679e4bf0f6dda06c1faabbb2ed Mon Sep 17 00:00:00 2001 From: RichardG867 Date: Sun, 15 Dec 2024 19:30:06 -0300 Subject: [PATCH 42/75] Fix inaccurate residfp credit --- settings/sound.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/settings/sound.rst b/settings/sound.rst index e82222e..ca32529 100644 --- a/settings/sound.rst +++ b/settings/sound.rst @@ -50,7 +50,7 @@ Innovation SSI-2001 Emulate the **Innovation SSI-2001** ISA sound card, based on the MOS Technology 6581 chip (commonly known as the Commodore SID) and supported by a limited number of games. -SID emulation is provided by the `reSID `_ library. +SID emulation is provided by the reSIDfp component of the `libsidplayfp `_ library. CMS / Game Blaster ------------------ From 35d57a58a0ea3fbdd5dee1f9bf1975b4761becdb Mon Sep 17 00:00:00 2001 From: RichardG867 Date: Sun, 15 Dec 2024 19:36:14 -0300 Subject: [PATCH 43/75] 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. From 26181aff8e93319ac52170208a4f3a6b5e3337f2 Mon Sep 17 00:00:00 2001 From: RichardG867 Date: Sun, 30 Mar 2025 18:42:37 -0300 Subject: [PATCH 44/75] Add note about 3-button mouse release --- settings/input.rst | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/settings/input.rst b/settings/input.rst index b5afc74..da7a7b3 100644 --- a/settings/input.rst +++ b/settings/input.rst @@ -16,7 +16,9 @@ Emulate a pointing device. The following types are supported: The *Configure* button opens a new window with settings specific to the selected device type, such as the number of buttons, or the serial port for a serial mouse or tablet. -.. note:: Serial pointing devices require the configured serial port to be enabled on the :ref:`Ports tab `. +.. note:: + * Serial pointing devices require the configured serial port to be enabled on the :ref:`Ports page `. + * The middle button cannot be used to release mouse capture when emulating a mouse with 3 or more buttons. Joystick -------- From ec9a985aee85f0e4d27c3eb0a666cb76fcbdb517 Mon Sep 17 00:00:00 2001 From: RichardG867 Date: Sun, 30 Mar 2025 18:45:21 -0300 Subject: [PATCH 45/75] Add note about 3-button mouse release --- settings/input.rst | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/settings/input.rst b/settings/input.rst index 4c3bec2..28b018c 100644 --- a/settings/input.rst +++ b/settings/input.rst @@ -11,11 +11,15 @@ Mouse Emulate a pointing device. The following mouse types are supported: * **Bus mouse:** ISA expansion card with a mouse interface. The I/O port and IRQ used by the card are configurable. -* **Serial mouse:** connected to the serial port of your choosing. The selected serial port must be enabled on the :ref:`Ports tab `. +* **Serial mouse:** connected to the serial port of your choosing. * **PS/2 mouse:** connected to the PS/2 port. Only available on machines with a PS/2 mouse port. The *Configure* button opens a new window with settings specific to the selected mouse type, such as the number of buttons, or the serial port for a serial mouse. +.. note:: + * Serial pointing devices require the configured serial port to be enabled on the :ref:`Ports page `. + * The middle button cannot be used to release mouse capture when emulating a mouse with 3 or more buttons. + Joystick -------- From 2b71bee38965316d288dd6d27565ece083d44dfb Mon Sep 17 00:00:00 2001 From: RichardG867 Date: Sun, 30 Mar 2025 18:46:48 -0300 Subject: [PATCH 46/75] Add note about 3-button mouse release --- settings/input.rst | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/settings/input.rst b/settings/input.rst index 2fcd136..d850568 100644 --- a/settings/input.rst +++ b/settings/input.rst @@ -11,11 +11,15 @@ Mouse Emulate a pointing device. The following mouse types are supported: * **Bus mouse:** ISA expansion card with a mouse interface. The I/O port and IRQ used by the card are configurable. -* **Serial mouse:** connected to the serial port of your choosing. The selected serial port must be enabled on the :ref:`Ports tab `. +* **Serial mouse:** connected to the serial port of your choosing. * **PS/2 mouse:** connected to the PS/2 port. Only available on machines with a PS/2 mouse port. The *Configure* button opens a new window with settings specific to the selected mouse type, such as the number of buttons, or the serial port for a serial mouse. +.. note:: + * Serial pointing devices require the configured serial port to be enabled on the :ref:`Ports page `. + * The middle button cannot be used to release mouse capture when emulating a mouse with 3 or more buttons. + Joystick -------- From a1027f899eef25a4ba8ee6cdf19e34e599357f89 Mon Sep 17 00:00:00 2001 From: RichardG867 Date: Sun, 30 Mar 2025 18:47:07 -0300 Subject: [PATCH 47/75] Add note about 3-button mouse release --- settings/input.rst | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/settings/input.rst b/settings/input.rst index 2fcd136..d850568 100644 --- a/settings/input.rst +++ b/settings/input.rst @@ -11,11 +11,15 @@ Mouse Emulate a pointing device. The following mouse types are supported: * **Bus mouse:** ISA expansion card with a mouse interface. The I/O port and IRQ used by the card are configurable. -* **Serial mouse:** connected to the serial port of your choosing. The selected serial port must be enabled on the :ref:`Ports tab `. +* **Serial mouse:** connected to the serial port of your choosing. * **PS/2 mouse:** connected to the PS/2 port. Only available on machines with a PS/2 mouse port. The *Configure* button opens a new window with settings specific to the selected mouse type, such as the number of buttons, or the serial port for a serial mouse. +.. note:: + * Serial pointing devices require the configured serial port to be enabled on the :ref:`Ports page `. + * The middle button cannot be used to release mouse capture when emulating a mouse with 3 or more buttons. + Joystick -------- From 887ec88b5b0a0c39317921ed78648f1ff9021eb6 Mon Sep 17 00:00:00 2001 From: RichardG867 Date: Sun, 30 Mar 2025 18:45:03 -0300 Subject: [PATCH 48/75] Add note about 3-button mouse release --- settings/input.rst | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/settings/input.rst b/settings/input.rst index 436d299..aa53966 100644 --- a/settings/input.rst +++ b/settings/input.rst @@ -11,11 +11,15 @@ Mouse Emulate a pointing device. The following mouse types are supported: * **Bus mouse:** ISA expansion card with a mouse interface. The I/O port and IRQ used by the card are configurable. -* **Serial mouse:** connected to the serial port of your choosing. The selected serial port must be enabled on the :ref:`Ports tab `. +* **Serial mouse:** connected to the serial port of your choosing. * **PS/2 mouse:** connected to the PS/2 port. Only available on machines with a PS/2 mouse port. The *Configure* button opens a new window with settings specific to the selected mouse type, such as the number of buttons, or the serial port for a serial mouse. +.. note:: + * Serial pointing devices require the configured serial port to be enabled on the :ref:`Ports page `. + * The middle button cannot be used to release mouse capture when emulating a mouse with 3 or more buttons. + Joystick -------- From dbd978a4a4c0bc9c93b977f37e2e635e428dbd17 Mon Sep 17 00:00:00 2001 From: RichardG867 Date: Sun, 30 Mar 2025 18:44:40 -0300 Subject: [PATCH 49/75] Add note about 3-button mouse release --- settings/input.rst | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/settings/input.rst b/settings/input.rst index 436d299..aa53966 100644 --- a/settings/input.rst +++ b/settings/input.rst @@ -11,11 +11,15 @@ Mouse Emulate a pointing device. The following mouse types are supported: * **Bus mouse:** ISA expansion card with a mouse interface. The I/O port and IRQ used by the card are configurable. -* **Serial mouse:** connected to the serial port of your choosing. The selected serial port must be enabled on the :ref:`Ports tab `. +* **Serial mouse:** connected to the serial port of your choosing. * **PS/2 mouse:** connected to the PS/2 port. Only available on machines with a PS/2 mouse port. The *Configure* button opens a new window with settings specific to the selected mouse type, such as the number of buttons, or the serial port for a serial mouse. +.. note:: + * Serial pointing devices require the configured serial port to be enabled on the :ref:`Ports page `. + * The middle button cannot be used to release mouse capture when emulating a mouse with 3 or more buttons. + Joystick -------- From f9a1a9549c10d7f88d725a263522bcb039d833d0 Mon Sep 17 00:00:00 2001 From: RichardG867 Date: Sun, 30 Mar 2025 18:44:26 -0300 Subject: [PATCH 50/75] Add note about 3-button mouse release --- settings/input.rst | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/settings/input.rst b/settings/input.rst index 436d299..aa53966 100644 --- a/settings/input.rst +++ b/settings/input.rst @@ -11,11 +11,15 @@ Mouse Emulate a pointing device. The following mouse types are supported: * **Bus mouse:** ISA expansion card with a mouse interface. The I/O port and IRQ used by the card are configurable. -* **Serial mouse:** connected to the serial port of your choosing. The selected serial port must be enabled on the :ref:`Ports tab `. +* **Serial mouse:** connected to the serial port of your choosing. * **PS/2 mouse:** connected to the PS/2 port. Only available on machines with a PS/2 mouse port. The *Configure* button opens a new window with settings specific to the selected mouse type, such as the number of buttons, or the serial port for a serial mouse. +.. note:: + * Serial pointing devices require the configured serial port to be enabled on the :ref:`Ports page `. + * The middle button cannot be used to release mouse capture when emulating a mouse with 3 or more buttons. + Joystick -------- From 45fcf1105a1d81928c3f88e4e8d0a08050d07e4e Mon Sep 17 00:00:00 2001 From: RichardG867 Date: Sun, 30 Mar 2025 18:44:17 -0300 Subject: [PATCH 51/75] Add note about 3-button mouse release --- settings/input.rst | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/settings/input.rst b/settings/input.rst index 436d299..aa53966 100644 --- a/settings/input.rst +++ b/settings/input.rst @@ -11,11 +11,15 @@ Mouse Emulate a pointing device. The following mouse types are supported: * **Bus mouse:** ISA expansion card with a mouse interface. The I/O port and IRQ used by the card are configurable. -* **Serial mouse:** connected to the serial port of your choosing. The selected serial port must be enabled on the :ref:`Ports tab `. +* **Serial mouse:** connected to the serial port of your choosing. * **PS/2 mouse:** connected to the PS/2 port. Only available on machines with a PS/2 mouse port. The *Configure* button opens a new window with settings specific to the selected mouse type, such as the number of buttons, or the serial port for a serial mouse. +.. note:: + * Serial pointing devices require the configured serial port to be enabled on the :ref:`Ports page `. + * The middle button cannot be used to release mouse capture when emulating a mouse with 3 or more buttons. + Joystick -------- From f4583d3ca8e1d5f554b4bc4633da9dde3b0de171 Mon Sep 17 00:00:00 2001 From: RichardG867 Date: Sun, 30 Mar 2025 18:43:49 -0300 Subject: [PATCH 52/75] Add note about 3-button mouse release --- settings/input.rst | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/settings/input.rst b/settings/input.rst index 436d299..aa53966 100644 --- a/settings/input.rst +++ b/settings/input.rst @@ -11,11 +11,15 @@ Mouse Emulate a pointing device. The following mouse types are supported: * **Bus mouse:** ISA expansion card with a mouse interface. The I/O port and IRQ used by the card are configurable. -* **Serial mouse:** connected to the serial port of your choosing. The selected serial port must be enabled on the :ref:`Ports tab `. +* **Serial mouse:** connected to the serial port of your choosing. * **PS/2 mouse:** connected to the PS/2 port. Only available on machines with a PS/2 mouse port. The *Configure* button opens a new window with settings specific to the selected mouse type, such as the number of buttons, or the serial port for a serial mouse. +.. note:: + * Serial pointing devices require the configured serial port to be enabled on the :ref:`Ports page `. + * The middle button cannot be used to release mouse capture when emulating a mouse with 3 or more buttons. + Joystick -------- From 0f547133ec5027b20629686351c4fc9cdc582311 Mon Sep 17 00:00:00 2001 From: RichardG867 Date: Sun, 13 Apr 2025 09:59:25 -0300 Subject: [PATCH 53/75] Backport environment updates from v4.3 --- .readthedocs.yaml | 11 +++++++---- conf.py | 4 ++-- requirements.txt | 6 +++--- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/.readthedocs.yaml b/.readthedocs.yaml index c485e54..aec4fdc 100644 --- a/.readthedocs.yaml +++ b/.readthedocs.yaml @@ -1,12 +1,15 @@ version: 2 build: - os: "ubuntu-22.04" + os: "ubuntu-24.04" tools: - python: "3.11" - -formats: all + python: "3.13" python: install: - requirements: requirements.txt + +sphinx: + configuration: conf.py + +formats: all diff --git a/conf.py b/conf.py index 88baf48..ebe4508 100644 --- a/conf.py +++ b/conf.py @@ -3,7 +3,7 @@ # This file only contains a selection of the most common options. For a full # list see the documentation: # https://www.sphinx-doc.org/en/master/usage/configuration.html -import sphinx_rtd_theme +import sphinx_rtd_theme, time # -- Path setup -------------------------------------------------------------- @@ -19,7 +19,7 @@ import sphinx_rtd_theme # -- Project information ----------------------------------------------------- project = '86Box' -copyright = '2020-2023, 86Box Project' +copyright = f'2020-{time.strftime("%Y")}, 86Box Project' author = '86Box Project' diff --git a/requirements.txt b/requirements.txt index ef0c43d..d0d58e7 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,3 @@ -Sphinx==4.3.0 -sphinx-rtd-theme==1.0.0 -linuxdoc==20211220 +Sphinx==7.4.7 +sphinx-rtd-theme==3.0.2 +linuxdoc==20240924 From df551e25cb403426d3a6d7769ace3fed181c606a Mon Sep 17 00:00:00 2001 From: RichardG867 Date: Sun, 13 Apr 2025 09:59:40 -0300 Subject: [PATCH 54/75] Backport environment updates from v4.3 --- .readthedocs.yaml | 10 +++++++++- conf.py | 4 ++-- requirements.txt | 6 +++--- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/.readthedocs.yaml b/.readthedocs.yaml index a6bc2c2..aec4fdc 100644 --- a/.readthedocs.yaml +++ b/.readthedocs.yaml @@ -1,7 +1,15 @@ version: 2 -formats: all +build: + os: "ubuntu-24.04" + tools: + python: "3.13" python: install: - requirements: requirements.txt + +sphinx: + configuration: conf.py + +formats: all diff --git a/conf.py b/conf.py index f65b846..ebe4508 100644 --- a/conf.py +++ b/conf.py @@ -3,7 +3,7 @@ # This file only contains a selection of the most common options. For a full # list see the documentation: # https://www.sphinx-doc.org/en/master/usage/configuration.html -import sphinx_rtd_theme +import sphinx_rtd_theme, time # -- Path setup -------------------------------------------------------------- @@ -19,7 +19,7 @@ import sphinx_rtd_theme # -- Project information ----------------------------------------------------- project = '86Box' -copyright = '2020-2022, 86Box Project' +copyright = f'2020-{time.strftime("%Y")}, 86Box Project' author = '86Box Project' diff --git a/requirements.txt b/requirements.txt index ef0c43d..d0d58e7 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,3 @@ -Sphinx==4.3.0 -sphinx-rtd-theme==1.0.0 -linuxdoc==20211220 +Sphinx==7.4.7 +sphinx-rtd-theme==3.0.2 +linuxdoc==20240924 From c4c0611523d1a53809632b2e371ae4524c55438a Mon Sep 17 00:00:00 2001 From: RichardG867 Date: Sun, 13 Apr 2025 09:59:57 -0300 Subject: [PATCH 55/75] Backport environment updates from v4.3 --- .readthedocs.yaml | 10 +++++++++- conf.py | 4 ++-- requirements.txt | 6 +++--- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/.readthedocs.yaml b/.readthedocs.yaml index a6bc2c2..aec4fdc 100644 --- a/.readthedocs.yaml +++ b/.readthedocs.yaml @@ -1,7 +1,15 @@ version: 2 -formats: all +build: + os: "ubuntu-24.04" + tools: + python: "3.13" python: install: - requirements: requirements.txt + +sphinx: + configuration: conf.py + +formats: all diff --git a/conf.py b/conf.py index f65b846..ebe4508 100644 --- a/conf.py +++ b/conf.py @@ -3,7 +3,7 @@ # This file only contains a selection of the most common options. For a full # list see the documentation: # https://www.sphinx-doc.org/en/master/usage/configuration.html -import sphinx_rtd_theme +import sphinx_rtd_theme, time # -- Path setup -------------------------------------------------------------- @@ -19,7 +19,7 @@ import sphinx_rtd_theme # -- Project information ----------------------------------------------------- project = '86Box' -copyright = '2020-2022, 86Box Project' +copyright = f'2020-{time.strftime("%Y")}, 86Box Project' author = '86Box Project' diff --git a/requirements.txt b/requirements.txt index ef0c43d..d0d58e7 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,3 @@ -Sphinx==4.3.0 -sphinx-rtd-theme==1.0.0 -linuxdoc==20211220 +Sphinx==7.4.7 +sphinx-rtd-theme==3.0.2 +linuxdoc==20240924 From 88f4d90f9c9c8326c3998fa77d80abc531f50261 Mon Sep 17 00:00:00 2001 From: RichardG867 Date: Sun, 13 Apr 2025 10:00:12 -0300 Subject: [PATCH 56/75] Backport environment updates from v4.3 --- .readthedocs.yaml | 10 +++++++++- conf.py | 4 ++-- requirements.txt | 6 +++--- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/.readthedocs.yaml b/.readthedocs.yaml index a6bc2c2..aec4fdc 100644 --- a/.readthedocs.yaml +++ b/.readthedocs.yaml @@ -1,7 +1,15 @@ version: 2 -formats: all +build: + os: "ubuntu-24.04" + tools: + python: "3.13" python: install: - requirements: requirements.txt + +sphinx: + configuration: conf.py + +formats: all diff --git a/conf.py b/conf.py index f65b846..ebe4508 100644 --- a/conf.py +++ b/conf.py @@ -3,7 +3,7 @@ # This file only contains a selection of the most common options. For a full # list see the documentation: # https://www.sphinx-doc.org/en/master/usage/configuration.html -import sphinx_rtd_theme +import sphinx_rtd_theme, time # -- Path setup -------------------------------------------------------------- @@ -19,7 +19,7 @@ import sphinx_rtd_theme # -- Project information ----------------------------------------------------- project = '86Box' -copyright = '2020-2022, 86Box Project' +copyright = f'2020-{time.strftime("%Y")}, 86Box Project' author = '86Box Project' diff --git a/requirements.txt b/requirements.txt index ef0c43d..d0d58e7 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,3 @@ -Sphinx==4.3.0 -sphinx-rtd-theme==1.0.0 -linuxdoc==20211220 +Sphinx==7.4.7 +sphinx-rtd-theme==3.0.2 +linuxdoc==20240924 From 4e83cf9887be3ef0844f0e3f551aeaee249f469d Mon Sep 17 00:00:00 2001 From: RichardG867 Date: Sun, 13 Apr 2025 10:00:30 -0300 Subject: [PATCH 57/75] Backport environment updates from v4.3 --- .readthedocs.yaml | 10 +++++++++- conf.py | 4 ++-- requirements.txt | 6 +++--- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/.readthedocs.yaml b/.readthedocs.yaml index a6bc2c2..aec4fdc 100644 --- a/.readthedocs.yaml +++ b/.readthedocs.yaml @@ -1,7 +1,15 @@ version: 2 -formats: all +build: + os: "ubuntu-24.04" + tools: + python: "3.13" python: install: - requirements: requirements.txt + +sphinx: + configuration: conf.py + +formats: all diff --git a/conf.py b/conf.py index f65b846..ebe4508 100644 --- a/conf.py +++ b/conf.py @@ -3,7 +3,7 @@ # This file only contains a selection of the most common options. For a full # list see the documentation: # https://www.sphinx-doc.org/en/master/usage/configuration.html -import sphinx_rtd_theme +import sphinx_rtd_theme, time # -- Path setup -------------------------------------------------------------- @@ -19,7 +19,7 @@ import sphinx_rtd_theme # -- Project information ----------------------------------------------------- project = '86Box' -copyright = '2020-2022, 86Box Project' +copyright = f'2020-{time.strftime("%Y")}, 86Box Project' author = '86Box Project' diff --git a/requirements.txt b/requirements.txt index ef0c43d..d0d58e7 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,3 @@ -Sphinx==4.3.0 -sphinx-rtd-theme==1.0.0 -linuxdoc==20211220 +Sphinx==7.4.7 +sphinx-rtd-theme==3.0.2 +linuxdoc==20240924 From e1317dba8599e5170ae124c8be2727ff8952a632 Mon Sep 17 00:00:00 2001 From: RichardG867 Date: Sun, 13 Apr 2025 10:00:42 -0300 Subject: [PATCH 58/75] Backport environment updates from v4.3 --- .readthedocs.yaml | 10 +++++++++- conf.py | 4 ++-- requirements.txt | 6 +++--- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/.readthedocs.yaml b/.readthedocs.yaml index a6bc2c2..aec4fdc 100644 --- a/.readthedocs.yaml +++ b/.readthedocs.yaml @@ -1,7 +1,15 @@ version: 2 -formats: all +build: + os: "ubuntu-24.04" + tools: + python: "3.13" python: install: - requirements: requirements.txt + +sphinx: + configuration: conf.py + +formats: all diff --git a/conf.py b/conf.py index f65b846..ebe4508 100644 --- a/conf.py +++ b/conf.py @@ -3,7 +3,7 @@ # This file only contains a selection of the most common options. For a full # list see the documentation: # https://www.sphinx-doc.org/en/master/usage/configuration.html -import sphinx_rtd_theme +import sphinx_rtd_theme, time # -- Path setup -------------------------------------------------------------- @@ -19,7 +19,7 @@ import sphinx_rtd_theme # -- Project information ----------------------------------------------------- project = '86Box' -copyright = '2020-2022, 86Box Project' +copyright = f'2020-{time.strftime("%Y")}, 86Box Project' author = '86Box Project' diff --git a/requirements.txt b/requirements.txt index ef0c43d..d0d58e7 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,3 @@ -Sphinx==4.3.0 -sphinx-rtd-theme==1.0.0 -linuxdoc==20211220 +Sphinx==7.4.7 +sphinx-rtd-theme==3.0.2 +linuxdoc==20240924 From 7288a3b82c89790cad036b74c887b4a6df252f06 Mon Sep 17 00:00:00 2001 From: RichardG867 Date: Sun, 13 Apr 2025 10:01:05 -0300 Subject: [PATCH 59/75] Backport environment updates from v4.3 --- .readthedocs.yaml | 10 +++++++++- conf.py | 4 ++-- requirements.txt | 5 +++-- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/.readthedocs.yaml b/.readthedocs.yaml index a6bc2c2..aec4fdc 100644 --- a/.readthedocs.yaml +++ b/.readthedocs.yaml @@ -1,7 +1,15 @@ version: 2 -formats: all +build: + os: "ubuntu-24.04" + tools: + python: "3.13" python: install: - requirements: requirements.txt + +sphinx: + configuration: conf.py + +formats: all diff --git a/conf.py b/conf.py index f628c57..865927a 100644 --- a/conf.py +++ b/conf.py @@ -3,7 +3,7 @@ # This file only contains a selection of the most common options. For a full # list see the documentation: # https://www.sphinx-doc.org/en/master/usage/configuration.html -import sphinx_rtd_theme +import sphinx_rtd_theme, time # -- Path setup -------------------------------------------------------------- @@ -19,7 +19,7 @@ import sphinx_rtd_theme # -- Project information ----------------------------------------------------- project = '86Box' -copyright = '2020-2022, 86Box Project' +copyright = f'2020-{time.strftime("%Y")}, 86Box Project' author = '86Box Project' diff --git a/requirements.txt b/requirements.txt index e75e102..d0d58e7 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,2 +1,3 @@ -Sphinx==4.3.0 -sphinx-rtd-theme==1.0.0 +Sphinx==7.4.7 +sphinx-rtd-theme==3.0.2 +linuxdoc==20240924 From c80fbef82d2e4740d8d66c73f558096f29efe86e Mon Sep 17 00:00:00 2001 From: RichardG867 Date: Sun, 13 Apr 2025 10:01:23 -0300 Subject: [PATCH 60/75] Backport environment updates from v4.3 --- .readthedocs.yaml | 10 +++++++++- conf.py | 4 ++-- requirements.txt | 5 +++-- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/.readthedocs.yaml b/.readthedocs.yaml index a6bc2c2..aec4fdc 100644 --- a/.readthedocs.yaml +++ b/.readthedocs.yaml @@ -1,7 +1,15 @@ version: 2 -formats: all +build: + os: "ubuntu-24.04" + tools: + python: "3.13" python: install: - requirements: requirements.txt + +sphinx: + configuration: conf.py + +formats: all diff --git a/conf.py b/conf.py index f628c57..865927a 100644 --- a/conf.py +++ b/conf.py @@ -3,7 +3,7 @@ # This file only contains a selection of the most common options. For a full # list see the documentation: # https://www.sphinx-doc.org/en/master/usage/configuration.html -import sphinx_rtd_theme +import sphinx_rtd_theme, time # -- Path setup -------------------------------------------------------------- @@ -19,7 +19,7 @@ import sphinx_rtd_theme # -- Project information ----------------------------------------------------- project = '86Box' -copyright = '2020-2022, 86Box Project' +copyright = f'2020-{time.strftime("%Y")}, 86Box Project' author = '86Box Project' diff --git a/requirements.txt b/requirements.txt index e75e102..d0d58e7 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,2 +1,3 @@ -Sphinx==4.3.0 -sphinx-rtd-theme==1.0.0 +Sphinx==7.4.7 +sphinx-rtd-theme==3.0.2 +linuxdoc==20240924 From 8a2580eb8529eb9b274b5c315a62ea20fd7fadbc Mon Sep 17 00:00:00 2001 From: RichardG867 Date: Sun, 13 Apr 2025 10:01:37 -0300 Subject: [PATCH 61/75] Backport environment updates from v4.3 --- .readthedocs.yaml | 10 +++++++++- conf.py | 4 ++-- requirements.txt | 5 +++-- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/.readthedocs.yaml b/.readthedocs.yaml index a6bc2c2..aec4fdc 100644 --- a/.readthedocs.yaml +++ b/.readthedocs.yaml @@ -1,7 +1,15 @@ version: 2 -formats: all +build: + os: "ubuntu-24.04" + tools: + python: "3.13" python: install: - requirements: requirements.txt + +sphinx: + configuration: conf.py + +formats: all diff --git a/conf.py b/conf.py index f628c57..865927a 100644 --- a/conf.py +++ b/conf.py @@ -3,7 +3,7 @@ # This file only contains a selection of the most common options. For a full # list see the documentation: # https://www.sphinx-doc.org/en/master/usage/configuration.html -import sphinx_rtd_theme +import sphinx_rtd_theme, time # -- Path setup -------------------------------------------------------------- @@ -19,7 +19,7 @@ import sphinx_rtd_theme # -- Project information ----------------------------------------------------- project = '86Box' -copyright = '2020-2022, 86Box Project' +copyright = f'2020-{time.strftime("%Y")}, 86Box Project' author = '86Box Project' diff --git a/requirements.txt b/requirements.txt index e75e102..d0d58e7 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,2 +1,3 @@ -Sphinx==4.3.0 -sphinx-rtd-theme==1.0.0 +Sphinx==7.4.7 +sphinx-rtd-theme==3.0.2 +linuxdoc==20240924 From ee0ff496e26285b35b8ede86d704f2e4acf02da5 Mon Sep 17 00:00:00 2001 From: RichardG867 Date: Sun, 13 Apr 2025 10:57:47 -0300 Subject: [PATCH 62/75] Backport Sphinx 8 upgrade --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index d0d58e7..47ed188 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,3 @@ -Sphinx==7.4.7 +Sphinx==8.2.3 sphinx-rtd-theme==3.0.2 linuxdoc==20240924 From 4c274bf716b01ad608356532385804ce0c3d254d Mon Sep 17 00:00:00 2001 From: RichardG867 Date: Sun, 13 Apr 2025 10:57:56 -0300 Subject: [PATCH 63/75] Backport Sphinx 8 upgrade --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index d0d58e7..47ed188 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,3 @@ -Sphinx==7.4.7 +Sphinx==8.2.3 sphinx-rtd-theme==3.0.2 linuxdoc==20240924 From 2229e2c1af484fdadd46c8c4e8b8c4babc47a78b Mon Sep 17 00:00:00 2001 From: RichardG867 Date: Sun, 13 Apr 2025 10:58:01 -0300 Subject: [PATCH 64/75] Backport Sphinx 8 upgrade --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index d0d58e7..47ed188 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,3 @@ -Sphinx==7.4.7 +Sphinx==8.2.3 sphinx-rtd-theme==3.0.2 linuxdoc==20240924 From 9505fa594ca1c3fdcc9dfe906542b0620b44121d Mon Sep 17 00:00:00 2001 From: RichardG867 Date: Sun, 13 Apr 2025 10:58:06 -0300 Subject: [PATCH 65/75] Backport Sphinx 8 upgrade --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index d0d58e7..47ed188 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,3 @@ -Sphinx==7.4.7 +Sphinx==8.2.3 sphinx-rtd-theme==3.0.2 linuxdoc==20240924 From 8b43192090b69d72a87b53caafcf28e40fe3e5b5 Mon Sep 17 00:00:00 2001 From: RichardG867 Date: Sun, 13 Apr 2025 10:58:11 -0300 Subject: [PATCH 66/75] Backport Sphinx 8 upgrade --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index d0d58e7..47ed188 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,3 @@ -Sphinx==7.4.7 +Sphinx==8.2.3 sphinx-rtd-theme==3.0.2 linuxdoc==20240924 From fe7ba0d9047238d15fbadedf5db812babf17c880 Mon Sep 17 00:00:00 2001 From: RichardG867 Date: Sun, 13 Apr 2025 10:58:16 -0300 Subject: [PATCH 67/75] Backport Sphinx 8 upgrade --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index d0d58e7..47ed188 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,3 @@ -Sphinx==7.4.7 +Sphinx==8.2.3 sphinx-rtd-theme==3.0.2 linuxdoc==20240924 From 095902a77b78529f9244a30797790c53753a267e Mon Sep 17 00:00:00 2001 From: RichardG867 Date: Sun, 13 Apr 2025 10:58:22 -0300 Subject: [PATCH 68/75] Backport Sphinx 8 upgrade --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index d0d58e7..47ed188 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,3 @@ -Sphinx==7.4.7 +Sphinx==8.2.3 sphinx-rtd-theme==3.0.2 linuxdoc==20240924 From 62b1392501bf5d2af91910c96c8790b0e31d0519 Mon Sep 17 00:00:00 2001 From: RichardG867 Date: Sun, 13 Apr 2025 10:58:29 -0300 Subject: [PATCH 69/75] Backport Sphinx 8 upgrade --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index d0d58e7..47ed188 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,3 @@ -Sphinx==7.4.7 +Sphinx==8.2.3 sphinx-rtd-theme==3.0.2 linuxdoc==20240924 From 2982956126304dc557e7565afd46916925446c09 Mon Sep 17 00:00:00 2001 From: RichardG867 Date: Sun, 13 Apr 2025 10:58:35 -0300 Subject: [PATCH 70/75] Backport Sphinx 8 upgrade --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index d0d58e7..47ed188 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,3 @@ -Sphinx==7.4.7 +Sphinx==8.2.3 sphinx-rtd-theme==3.0.2 linuxdoc==20240924 From c5b7eead65494cac61a61c8e7caf13c2cea66045 Mon Sep 17 00:00:00 2001 From: RichardG867 Date: Tue, 15 Apr 2025 15:08:07 -0300 Subject: [PATCH 71/75] CD-ROM count increase --- settings/floppycdrom.rst | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/settings/floppycdrom.rst b/settings/floppycdrom.rst index df0cabb..441864a 100644 --- a/settings/floppycdrom.rst +++ b/settings/floppycdrom.rst @@ -26,11 +26,13 @@ Floppy disk images can be inserted and removed through the :ref:`status bar ` or :ref:`Media menu `. From 0ed0e63c228d13101e4051e66ba2016825ca92d2 Mon Sep 17 00:00:00 2001 From: RichardG867 Date: Wed, 16 Apr 2025 17:26:17 -0300 Subject: [PATCH 72/75] MT-32 display --- usage/statusbar.rst | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/usage/statusbar.rst b/usage/statusbar.rst index ffb9bc7..856e95f 100644 --- a/usage/statusbar.rst +++ b/usage/statusbar.rst @@ -86,6 +86,13 @@ Monitor sleep mode The *Monitor in sleep mode* message will be displayed if the emulated monitor has been put into DPMS sleep mode by the operating system. Pressing a key or moving the mouse is often enough to wake the monitor up. +MT-32 display +^^^^^^^^^^^^^ + +Any text messages sent to the LCD screen of an :ref:`emulated Roland MT-32/CM-32L synthesizer ` are displayed here. + +.. note:: MT-32 display functionality is currently only available on **Linux** hosts. + ISABugger ^^^^^^^^^ @@ -96,4 +103,4 @@ POST card The leftmost hexadecimal value is the most recent POST code reported, while the rightmost value is the second most recent code, like on a real dual-display POST card. A value of ``--`` indicates that no POST code has been reported yet. -.. note:: The additional information area can only be used by one component at a time. If both the ISABugger and the POST card are enabled simultaneously, the POST card takes over whenever a POST code is reported, and the ISABugger takes over whenever one of its registers is written to. The *Monitor in sleep mode* message is high-priority and will override all other components. +.. note:: The additional information area can only be used by one component at a time. The MT-32 display has the highest priority, followed by the monitor sleep mode message, then the ISABugger and POST card with the same priority (taking over whenever they're written to). From d6ff6959f71c7658995b9239d59db369baa9e942 Mon Sep 17 00:00:00 2001 From: RichardG867 Date: Wed, 16 Apr 2025 17:27:21 -0300 Subject: [PATCH 73/75] Status bar priority stuff from later versions --- usage/statusbar.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/usage/statusbar.rst b/usage/statusbar.rst index ffb9bc7..cc567bf 100644 --- a/usage/statusbar.rst +++ b/usage/statusbar.rst @@ -96,4 +96,4 @@ POST card The leftmost hexadecimal value is the most recent POST code reported, while the rightmost value is the second most recent code, like on a real dual-display POST card. A value of ``--`` indicates that no POST code has been reported yet. -.. note:: The additional information area can only be used by one component at a time. If both the ISABugger and the POST card are enabled simultaneously, the POST card takes over whenever a POST code is reported, and the ISABugger takes over whenever one of its registers is written to. The *Monitor in sleep mode* message is high-priority and will override all other components. +.. note:: The additional information area can only be used by one component at a time. The monitor sleep mode message takes priority over the ISABugger and POST card, which have the same priority (taking over whenever they're written to). From a2e678d0328d3070a482078fed1c5a8d8e973571 Mon Sep 17 00:00:00 2001 From: RichardG867 Date: Wed, 16 Apr 2025 17:34:06 -0300 Subject: [PATCH 74/75] Remove Qt UI MT-32 notice --- usage/statusbar.rst | 2 -- 1 file changed, 2 deletions(-) diff --git a/usage/statusbar.rst b/usage/statusbar.rst index 856e95f..f545080 100644 --- a/usage/statusbar.rst +++ b/usage/statusbar.rst @@ -91,8 +91,6 @@ MT-32 display Any text messages sent to the LCD screen of an :ref:`emulated Roland MT-32/CM-32L synthesizer ` are displayed here. -.. note:: MT-32 display functionality is currently only available on **Linux** hosts. - ISABugger ^^^^^^^^^ From 9264786d5fe1a14a2897963936a3ddd449cf43d5 Mon Sep 17 00:00:00 2001 From: RichardG867 Date: Wed, 16 Apr 2025 17:39:40 -0300 Subject: [PATCH 75/75] Clear a small merge incident --- settings/ports.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/settings/ports.rst b/settings/ports.rst index d17f924..8ff8f25 100644 --- a/settings/ports.rst +++ b/settings/ports.rst @@ -47,4 +47,4 @@ Parallel port 1-4 Enable emulation of parallel ports ranging from LPT1 to LPT4. Any ports not provided by the machine's motherboard will be emulated as generic ISA or VLB parallel cards. -.. note:: The 4th parallel port is not widely supported. It is located at I/O port `0x268`. +.. note:: The 4th parallel port is not widely supported. It is located at I/O port 268h.