This commit is contained in:
dg
2023-05-10 18:31:42 +00:00
19 changed files with 378 additions and 122 deletions

View File

@@ -118,7 +118,7 @@ choices because they can store multiple types of file system.
| [`atarist`](doc/disk-atarist.md) | Atari ST: Almost PC compatible | 🦄 | 🦄 | |
| [`bk`](doc/disk-bk.md) | BK: 800kB 5.25"/3.5" 80-track 10-sector DSDD | 🦖 | 🦖 | |
| [`brother`](doc/disk-brother.md) | Brother word processors: GCR family | 🦄 | 🦄 | BROTHER120 FATFS |
| [`commodore`](doc/disk-commodore.md) | Commodore: 1541, 1581, and variations | 🦄 | 🦄 | CBMFS |
| [`commodore`](doc/disk-commodore.md) | Commodore: 1541, 1581, 8050 and variations | 🦄 | 🦄 | CBMFS |
| [`eco1`](doc/disk-eco1.md) | VDS Eco1: CP/M; 1210kB 77-track mixed format DSHD | 🦖 | | CPMFS |
| [`epsonpf10`](doc/disk-epsonpf10.md) | Epson PF-10: CP/M; 3.5" 40-track DSDD | 🦖 | | CPMFS |
| [`f85`](doc/disk-f85.md) | Durango F85: 461kB 5.25" 77-track SS | 🦖 | | |

View File

@@ -1,9 +1,10 @@
<!-- This file is automatically generated. Do not edit. -->
# 1541, 1581, and variations
# 1541, 1581, 8050 and variations
Commodore 64 disks come in two varieties: GCR, which are the overwhelming
majority; and MFM, only used on the 1571 and 1581. The latter were (as far as I
can tell) standard IBM PC format disks with a slightly odd sector count.
Commodore 8-bit computer disks come in two varieties: GCR, which are the
overwhelming majority; and MFM, only used on the 1571 and 1581. The latter were
(as far as I can tell) standard IBM PC format disks with a slightly odd sector
count.
The GCR disks are much more interesting. They could store 170kB on a
single-sided disk (although later drives were double-sided), using a proprietary
@@ -21,11 +22,20 @@ computer](https://ilesj.wordpress.com/2014/05/14/1541-why-so-complicated/) of
300 bytes per second (!). (The drive itself could transfer data reasonably
quickly.)
A standard 1541 disk has 35 tracks of 17 to 21 sectors, each 256 bytes long
(sometimes 40 tracks).
- a 1541 disk has 35 tracks of 17 to 21 sectors, each 256 bytes long
(sometimes 40 tracks), and uses GCR encoding.
A standard 1581 disk has 80 tracks and two sides, each with 10 sectors, 512
bytes long.
- a standard 1581 disk has 80 tracks and two sides, each with 10 sectors, 512
bytes long, and uses normal IBM encoding.
- an 8050 disk has 77 tracks and two sides, with four speed zones; the number
of sectors varies from 23 to 29, using GCR encoding. These will store
1042kB. These drives are peculiar because they are 100tpi and therefore the
disks cannot be read in normal 96tpi drives.
- a CMD FD2000 disk (a popular third-party Commodore disk drive) has 81
tracks and two sides, each with 10 1024-byte sectors, for a massive 1620kB
of storage. This also uses IBM encoding.
A CMD FD2000 disk (a popular third-party Commodore disk drive)

View File

@@ -44,7 +44,7 @@ message ConfigProto
optional RangeProto tracks = 6;
optional RangeProto heads = 7;
optional int32 tpi = 16 [ (help) = "TPI of image; if 0, use TPI of drive" ];
optional float tpi = 16 [ (help) = "TPI of image; if 0, use TPI of drive" ];
optional FilesystemProto filesystem = 17;

View File

@@ -32,7 +32,7 @@ message DriveProto
];
optional int32 head_width = 10
[ default = 1, (help) = "Width of the head (in tracks)" ];
optional int32 tpi = 11 [ default = 96, (help) = "TPI of drive" ];
optional float tpi = 11 [ default = 96, (help) = "TPI of drive" ];
optional double rotational_period_ms = 12
[ default = 0, (help) = "Rotational period of the drive in milliseconds (0 to autodetect)"];

View File

@@ -21,6 +21,7 @@ extern std::map<std::string, const google::protobuf::FieldDescriptor*>
extern ConfigProto parseConfigBytes(const std::string_view& bytes);
extern ConfigProto config;
extern const std::map<std::string, const ConfigProto*> formats;
#endif

View File

@@ -1,13 +1,14 @@
shortname: 'Commodore'
comment: '1541, 1581, and variations'
comment: '1541, 1581, 8050 and variations'
read_support_status: UNICORN
write_support_status: UNICORN
documentation:
<<<
Commodore 64 disks come in two varieties: GCR, which are the overwhelming
majority; and MFM, only used on the 1571 and 1581. The latter were (as far as I
can tell) standard IBM PC format disks with a slightly odd sector count.
Commodore 8-bit computer disks come in two varieties: GCR, which are the
overwhelming majority; and MFM, only used on the 1571 and 1581. The latter were
(as far as I can tell) standard IBM PC format disks with a slightly odd sector
count.
The GCR disks are much more interesting. They could store 170kB on a
single-sided disk (although later drives were double-sided), using a proprietary
@@ -25,11 +26,20 @@ computer](https://ilesj.wordpress.com/2014/05/14/1541-why-so-complicated/) of
300 bytes per second (!). (The drive itself could transfer data reasonably
quickly.)
A standard 1541 disk has 35 tracks of 17 to 21 sectors, each 256 bytes long
(sometimes 40 tracks).
- a 1541 disk has 35 tracks of 17 to 21 sectors, each 256 bytes long
(sometimes 40 tracks), and uses GCR encoding.
A standard 1581 disk has 80 tracks and two sides, each with 10 sectors, 512
bytes long.
- a standard 1581 disk has 80 tracks and two sides, each with 10 sectors, 512
bytes long, and uses normal IBM encoding.
- an 8050 disk has 77 tracks and two sides, with four speed zones; the number
of sectors varies from 23 to 29, using GCR encoding. These will store
1042kB. These drives are peculiar because they are 100tpi and therefore the
disks cannot be read in normal 96tpi drives.
- a CMD FD2000 disk (a popular third-party Commodore disk drive) has 81
tracks and two sides, each with 10 1024-byte sectors, for a massive 1620kB
of storage. This also uses IBM encoding.
A CMD FD2000 disk (a popular third-party Commodore disk drive)
>>>
@@ -217,6 +227,58 @@ option_group {
}
}
option {
name: "1042"
comment: "1042kB 8051"
config {
layout {
sides: 2
tracks: 77
layoutdata {
sector_size: 256
}
layoutdata {
track: 0
up_to_track: 38
physical {
start_sector: 0
count: 29
}
}
layoutdata {
track: 39
up_to_track: 52
physical {
start_sector: 0
count: 27
}
}
layoutdata {
track: 53
up_to_track: 63
physical {
start_sector: 0
count: 25
}
}
layoutdata {
track: 64
up_to_track: 76
physical {
start_sector: 0
count: 23
}
}
}
tpi: 100
decoder {
c64 {}
}
}
}
option {
name: "1620"
comment: "1620kB, CMD FD2000"

View File

@@ -1,5 +1,7 @@
ifneq ($(shell $(WX_CONFIG) --version),)
include src/gui/drivetypes/build.mk
FLUXENGINE_GUI_SRCS = \
src/gui/browserpanel.cc \
src/gui/customstatusbar.cc \
@@ -40,6 +42,7 @@ $(call use-pkgconfig, $(FLUXENGINE_GUI_BIN), $(FLUXENGINE_GUI_OBJS), fmt)
$(call use-library, $(FLUXENGINE_GUI_BIN), $(FLUXENGINE_GUI_OBJS), LIBARCH)
$(call use-library, $(FLUXENGINE_GUI_BIN), $(FLUXENGINE_GUI_OBJS), LIBFLUXENGINE)
$(call use-library, $(FLUXENGINE_GUI_BIN), $(FLUXENGINE_GUI_OBJS), LIBFORMATS)
$(call use-library, $(FLUXENGINE_GUI_BIN), $(FLUXENGINE_GUI_OBJS), LIBDRIVETYPES)
$(call use-library, $(FLUXENGINE_GUI_BIN), $(FLUXENGINE_GUI_OBJS), LIBUSBP)
$(call use-library, $(FLUXENGINE_GUI_BIN), $(FLUXENGINE_GUI_OBJS), PROTO)
$(call use-library, $(FLUXENGINE_GUI_BIN), $(FLUXENGINE_GUI_OBJS), FATFS)

View File

@@ -0,0 +1,6 @@
comment: '3.5" 40 track 67.5tpi'
drive {
tpi: 67.5
}

View File

@@ -0,0 +1,6 @@
comment: '3.5" 80 track 135tpi'
drive {
tpi: 135
}

View File

@@ -0,0 +1,6 @@
comment: '5.25" 40 track 48tpi'
drive {
tpi: 48
}

View File

@@ -0,0 +1,6 @@
comment: '5.25" 80 track 96tpi'
drive {
tpi: 96
}

View File

@@ -0,0 +1,6 @@
comment: '8" 38 track 32tpi'
drive {
tpi: 32
}

View File

@@ -0,0 +1,6 @@
comment: '8" 77 track 48tpi'
drive {
tpi: 48
}

View File

@@ -0,0 +1,31 @@
DRIVETYPES = \
35_80 \
35_40 \
525_80 \
525_40 \
8_77 \
8_38 \
apple2 \
$(OBJDIR)/src/gui/drivetypes/drivetype_%.o: $(OBJDIR)/src/gui/drivetypes/drivetype_%.cc
$(OBJDIR)/src/gui/drivetypes/drivetype_%.cc: $(OBJDIR)/protoencode_ConfigProto.exe src/gui/drivetypes/%.textpb
@mkdir -p $(dir $@)
@echo PROTOENCODE $*
@$^ $@ drivetypes_$*_pb
$(OBJDIR)/src/gui/drivetypes/table.cc: scripts/mktable.sh src/gui/drivetypes/build.mk \
$(patsubst %,src/gui/drivetypes/%.textpb,$(DRIVETYPES))
@mkdir -p $(dir $@)
@echo MKTABLE $@
@scripts/mktable.sh drivetypes $(DRIVETYPES) > $@
LIBDRIVETYPES_SRCS = \
$(patsubst %, $(OBJDIR)/src/gui/drivetypes/drivetype_%.cc, $(DRIVETYPES)) \
$(OBJDIR)/src/gui/drivetypes/table.cc
LIBDRIVETYPES_OBJS = $(patsubst %.cc, %.o, $(LIBDRIVETYPES_SRCS))
.PRECIOUS: $(LIBDRIVETYPES_SRCS)
LIBDRIVETYPES_LIB = $(OBJDIR)/libgui/drivetypes.a
LIBDRIVETYPES_LDFLAGS = $(LIBDRIVETYPES_LIB)
$(LIBDRIVETYPES_LIB): $(LIBDRIVETYPES_OBJS)

View File

@@ -3,6 +3,7 @@
#include <wx/wx.h>
class ConfigProto;
class ExecEvent;
class DiskFlux;
class TrackFlux;
@@ -13,6 +14,8 @@ extern void runOnUiThread(std::function<void()> callback);
extern void runOnWorkerThread(std::function<void()> callback);
extern bool isWorkerThread();
extern const std::map<std::string, const ConfigProto*> drivetypes;
wxDECLARE_EVENT(UPDATE_STATE_EVENT, wxCommandEvent);
template <typename R>

View File

@@ -20,12 +20,10 @@
#include ".obj/extras/fluxfile.h"
#include ".obj/extras/imagefile.h"
extern const std::map<std::string, const ConfigProto*> formats;
#define CONFIG_SELECTEDSOURCE "SelectedSource"
#define CONFIG_DEVICE "Device"
#define CONFIG_DRIVE "Drive"
#define CONFIG_FORTYTRACK "FortyTrack"
#define CONFIG_DRIVETYPE "DriveType"
#define CONFIG_HIGHDENSITY "HighDensity"
#define CONFIG_FORMAT "Format"
#define CONFIG_FORMATOPTIONS "FormatOptions"
@@ -194,27 +192,6 @@ public:
FlagGroup::applyOption(e.second);
}
/* Merge in any custom config. */
for (auto setting : split(_extraConfiguration, '\n'))
{
setting = trimWhitespace(setting);
if (setting.size() == 0)
continue;
if (setting[0] == '#')
continue;
auto equals = setting.find('=');
if (equals != std::string::npos)
{
auto key = setting.substr(0, equals);
auto value = setting.substr(equals + 1);
setProtoByString(&config, key, value);
}
else
FlagGroup::parseConfigFile(setting, formats);
}
/* Locate the device, if any. */
auto serial = _selectedDevice;
@@ -232,9 +209,7 @@ public:
case SELECTEDSOURCE_REAL:
{
config.mutable_drive()->set_high_density(_selectedHighDensity);
if (_selectedFortyTrack)
FlagGroup::parseConfigFile("40track_drive", formats);
config.MergeFrom(*_selectedDriveType);
std::string filename = _selectedDrive ? "drive:1" : "drive:0";
FluxSink::updateConfigForFilename(
@@ -263,6 +238,27 @@ public:
break;
}
}
/* Merge in any custom config. */
for (auto setting : split(_extraConfiguration, '\n'))
{
setting = trimWhitespace(setting);
if (setting.size() == 0)
continue;
if (setting[0] == '#')
continue;
auto equals = setting.find('=');
if (equals != std::string::npos)
{
auto key = setting.substr(0, equals);
auto value = setting.substr(equals + 1);
setProtoByString(&config, key, value);
}
else
FlagGroup::parseConfigFile(setting, formats);
}
}
const wxBitmap GetBitmap() override
@@ -298,9 +294,13 @@ private:
_config.Read(CONFIG_HIGHDENSITY, &s);
_selectedHighDensity = wxAtoi(s);
s = "0";
_config.Read(CONFIG_FORTYTRACK, &s);
_selectedFortyTrack = wxAtoi(s);
s = "";
_config.Read(CONFIG_DRIVETYPE, &s);
auto it = drivetypes.find(s.ToStdString());
if (it != drivetypes.end())
_selectedDriveType = it->second;
else
_selectedDriveType = drivetypes.begin()->second;
/* Flux image block. */
@@ -372,8 +372,11 @@ private:
_config.Write(CONFIG_DRIVE, wxString(std::to_string(_selectedDrive)));
_config.Write(
CONFIG_HIGHDENSITY, wxString(std::to_string(_selectedHighDensity)));
_config.Write(
CONFIG_FORTYTRACK, wxString(std::to_string(_selectedFortyTrack)));
for (auto it : drivetypes)
{
if (_selectedDriveType == it.second)
_config.Write(CONFIG_DRIVETYPE, wxString(it.first));
}
/* Flux image block. */
@@ -442,13 +445,24 @@ private:
OnControlsChanged(e);
});
panel->fortyTrackDriveToggle->SetValue(_selectedFortyTrack);
panel->fortyTrackDriveToggle->Bind(
wxEVT_COMMAND_CHECKBOX_CLICKED,
int i = 0;
for (auto& driveConfig : drivetypes)
{
panel->driveTypeChoice->Append(
driveConfig.second->comment());
if (driveConfig.second == _selectedDriveType)
panel->driveTypeChoice->SetSelection(i);
i++;
}
panel->driveTypeChoice->Bind(wxEVT_CHOICE,
[=](wxCommandEvent& e)
{
_selectedFortyTrack =
panel->fortyTrackDriveToggle->GetValue();
auto it = drivetypes.begin();
std::advance(
it, panel->driveTypeChoice->GetSelection());
_selectedDriveType = it->second;
OnControlsChanged(e);
});
@@ -679,7 +693,7 @@ private:
int _selectedSource;
std::string _selectedDevice;
int _selectedDrive;
bool _selectedFortyTrack;
const ConfigProto* _selectedDriveType;
bool _selectedHighDensity;
std::string _selectedFluxfilename;
std::string _selectedImagefilename;

View File

@@ -1,5 +1,5 @@
///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version 3.10.1-1fa5400)
// C++ code generated with wxFormBuilder (version 3.10.1-234-gd93c9fc0-dirty)
// http://www.wxformbuilder.org/
//
// PLEASE DO *NOT* EDIT THIS FILE!
@@ -1040,8 +1040,23 @@ HardwareSourcePanelGen::HardwareSourcePanelGen( wxWindow* parent, wxWindowID id,
bSizer3->Add( highDensityToggle, 0, wxALL|wxEXPAND, 5 );
fortyTrackDriveToggle = new wxCheckBox( this, wxID_ANY, wxT("I'm using a 40-track drive"), wxDefaultPosition, wxDefaultSize, 0 );
bSizer3->Add( fortyTrackDriveToggle, 0, wxALL, 5 );
wxFlexGridSizer* fgSizer14;
fgSizer14 = new wxFlexGridSizer( 0, 2, 0, 0 );
fgSizer14->AddGrowableCol( 1 );
fgSizer14->SetFlexibleDirection( wxBOTH );
fgSizer14->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
m_staticText29 = new wxStaticText( this, wxID_ANY, wxT("Drive type:"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticText29->Wrap( -1 );
fgSizer14->Add( m_staticText29, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
wxArrayString driveTypeChoiceChoices;
driveTypeChoice = new wxChoice( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, driveTypeChoiceChoices, 0 );
driveTypeChoice->SetSelection( 0 );
fgSizer14->Add( driveTypeChoice, 0, wxALL|wxEXPAND, 5 );
bSizer3->Add( fgSizer14, 1, wxEXPAND, 5 );
this->SetSizer( bSizer3 );

View File

@@ -6266,67 +6266,147 @@
</object>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxALL</property>
<property name="proportion">0</property>
<object class="wxCheckBox" expanded="1">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer"></property>
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="caption"></property>
<property name="caption_visible">1</property>
<property name="center_pane">0</property>
<property name="checked">0</property>
<property name="close_button">1</property>
<property name="context_help"></property>
<property name="context_menu">1</property>
<property name="default_pane">0</property>
<property name="dock">Dock</property>
<property name="dock_fixed">0</property>
<property name="docking">Left</property>
<property name="drag_accept_files">0</property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="floatable">1</property>
<property name="font"></property>
<property name="gripper">0</property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="label">I&apos;m using a 40-track drive</property>
<property name="max_size"></property>
<property name="maximize_button">0</property>
<property name="maximum_size"></property>
<property name="min_size"></property>
<property name="minimize_button">0</property>
<property name="flag">wxEXPAND</property>
<property name="proportion">1</property>
<object class="wxFlexGridSizer" expanded="1">
<property name="cols">2</property>
<property name="flexible_direction">wxBOTH</property>
<property name="growablecols">1</property>
<property name="growablerows"></property>
<property name="hgap">0</property>
<property name="minimum_size"></property>
<property name="moveable">1</property>
<property name="name">fortyTrackDriveToggle</property>
<property name="pane_border">1</property>
<property name="pane_position"></property>
<property name="pane_size"></property>
<property name="permission">public</property>
<property name="pin_button">1</property>
<property name="pos"></property>
<property name="resize">Resizable</property>
<property name="show">1</property>
<property name="size"></property>
<property name="style"></property>
<property name="subclass">; ; forward_declare</property>
<property name="toolbar_pane">0</property>
<property name="tooltip"></property>
<property name="validator_data_type"></property>
<property name="validator_style">wxFILTER_NONE</property>
<property name="validator_type">wxDefaultValidator</property>
<property name="validator_variable"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<property name="name">fgSizer14</property>
<property name="non_flexible_grow_mode">wxFLEX_GROWMODE_SPECIFIED</property>
<property name="permission">none</property>
<property name="rows">0</property>
<property name="vgap">0</property>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxALIGN_CENTER_VERTICAL|wxALL</property>
<property name="proportion">0</property>
<object class="wxStaticText" expanded="1">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer"></property>
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="caption"></property>
<property name="caption_visible">1</property>
<property name="center_pane">0</property>
<property name="close_button">1</property>
<property name="context_help"></property>
<property name="context_menu">1</property>
<property name="default_pane">0</property>
<property name="dock">Dock</property>
<property name="dock_fixed">0</property>
<property name="docking">Left</property>
<property name="drag_accept_files">0</property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="floatable">1</property>
<property name="font"></property>
<property name="gripper">0</property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="label">Drive type:</property>
<property name="markup">0</property>
<property name="max_size"></property>
<property name="maximize_button">0</property>
<property name="maximum_size"></property>
<property name="min_size"></property>
<property name="minimize_button">0</property>
<property name="minimum_size"></property>
<property name="moveable">1</property>
<property name="name">m_staticText29</property>
<property name="pane_border">1</property>
<property name="pane_position"></property>
<property name="pane_size"></property>
<property name="permission">protected</property>
<property name="pin_button">1</property>
<property name="pos"></property>
<property name="resize">Resizable</property>
<property name="show">1</property>
<property name="size"></property>
<property name="style"></property>
<property name="subclass">; ; forward_declare</property>
<property name="toolbar_pane">0</property>
<property name="tooltip"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<property name="wrap">-1</property>
</object>
</object>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxALL|wxEXPAND</property>
<property name="proportion">0</property>
<object class="wxChoice" expanded="1">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer"></property>
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="caption"></property>
<property name="caption_visible">1</property>
<property name="center_pane">0</property>
<property name="choices"></property>
<property name="close_button">1</property>
<property name="context_help"></property>
<property name="context_menu">1</property>
<property name="default_pane">0</property>
<property name="dock">Dock</property>
<property name="dock_fixed">0</property>
<property name="docking">Left</property>
<property name="drag_accept_files">0</property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="floatable">1</property>
<property name="font"></property>
<property name="gripper">0</property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="max_size"></property>
<property name="maximize_button">0</property>
<property name="maximum_size"></property>
<property name="min_size"></property>
<property name="minimize_button">0</property>
<property name="minimum_size"></property>
<property name="moveable">1</property>
<property name="name">driveTypeChoice</property>
<property name="pane_border">1</property>
<property name="pane_position"></property>
<property name="pane_size"></property>
<property name="permission">public</property>
<property name="pin_button">1</property>
<property name="pos"></property>
<property name="resize">Resizable</property>
<property name="selection">0</property>
<property name="show">1</property>
<property name="size"></property>
<property name="style"></property>
<property name="subclass">; ; forward_declare</property>
<property name="toolbar_pane">0</property>
<property name="tooltip"></property>
<property name="validator_data_type"></property>
<property name="validator_style">wxFILTER_NONE</property>
<property name="validator_type">wxDefaultValidator</property>
<property name="validator_variable"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
</object>
</object>
</object>
</object>
</object>

View File

@@ -1,5 +1,5 @@
///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version 3.10.1-1fa5400)
// C++ code generated with wxFormBuilder (version 3.10.1-234-gd93c9fc0-dirty)
// http://www.wxformbuilder.org/
//
// PLEASE DO *NOT* EDIT THIS FILE!
@@ -496,11 +496,12 @@ class HardwareSourcePanelGen : public wxPanel
protected:
wxStaticText* m_staticText30;
wxStaticText* m_staticText29;
public:
wxStaticText* label;
wxCheckBox* highDensityToggle;
wxCheckBox* fortyTrackDriveToggle;
wxChoice* driveTypeChoice;
HardwareSourcePanelGen( wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxTAB_TRAVERSAL, const wxString& name = wxEmptyString );