cfgfile_write (f, _T("cd_speed"), _T("%d"), p->cd_speed);
cfgfile_write_bool (f, _T("parallel_on_demand"), p->parallel_demand);
cfgfile_write_bool (f, _T("serial_on_demand"), p->serial_demand);
- cfgfile_write_bool (f, _T("serial_hardware_ctsrts"), p->serial_hwctsrts);
+ cfgfile_write_bool(f, _T("serial_hardware_ctsrts"), p->serial_hwctsrts);
+ cfgfile_write_bool(f, _T("serial_status"), p->serial_rtsctsdtrdtecd);
+ cfgfile_dwrite_bool(f, _T("serial_ri"), p->serial_ri);
cfgfile_write_bool (f, _T("serial_direct"), p->serial_direct);
cfgfile_dwrite (f, _T("serial_stopbits"), _T("%d"), p->serial_stopbits);
cfgfile_dwrite_strarr(f, _T("serial_translate"), serialcrlf, p->serial_crlf);
|| cfgfile_yesno(option, value, _T("parallel_postscript_detection"), &p->parallel_postscript_detection)
|| cfgfile_yesno(option, value, _T("serial_on_demand"), &p->serial_demand)
|| cfgfile_yesno(option, value, _T("serial_hardware_ctsrts"), &p->serial_hwctsrts)
+ || cfgfile_yesno(option, value, _T("serial_status"), &p->serial_rtsctsdtrdtecd)
+ || cfgfile_yesno(option, value, _T("serial_ri"), &p->serial_ri)
|| cfgfile_yesno(option, value, _T("serial_direct"), &p->serial_direct)
|| cfgfile_yesno(option, value, _T("fpu_strict"), &p->fpu_strict)
|| cfgfile_yesno(option, value, _T("comp_nf"), &p->compnf)
p->use_serial = 0;
p->serial_demand = 0;
p->serial_hwctsrts = 1;
+ p->serial_ri = false;
+ p->serial_rtsctsdtrdtecd = true;
p->serial_stopbits = 0;
p->parallel_demand = 0;
p->parallel_matrix_emulation = 0;
bool use_serial;
bool serial_demand;
bool serial_hwctsrts;
+ bool serial_rtsctsdtrdtecd;
+ bool serial_ri;
bool serial_direct;
int serial_stopbits;
int serial_crlf;
#define IDC_KEYBOARD_SWAPHACK 1865
#define IDC_SCSIROM24BITDMA 1866
#define IDC_CUSTOMDATAPATH 1866
+#define IDC_SER_RTSCTSDTRDTECD 1867
+#define IDC_SER_RI 1868
#define ID__FLOPPYDRIVES 40004
#define ID_FLOPPYDRIVES_DF0 40005
#define ID_ST_CONFIGURATION 40010
#define _APS_3D_CONTROLS 1
#define _APS_NEXT_RESOURCE_VALUE 407
#define _APS_NEXT_COMMAND_VALUE 40050
-#define _APS_NEXT_CONTROL_VALUE 1867
+#define _APS_NEXT_CONTROL_VALUE 1869
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif
RTEXT "Sampler:",IDC_STATIC,6,102,57,15,SS_CENTERIMAGE
COMBOBOX IDC_SAMPLERLIST,67,103,317,134,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
CONTROL "Stereo sampler",IDC_SAMPLER_STEREO,"Button",BS_AUTOCHECKBOX | BS_VCENTER | WS_TABSTOP,68,122,149,12
- GROUPBOX "Serial Port",IDC_STATIC,1,145,393,51
+ GROUPBOX "Serial Port",IDC_STATIC,1,145,393,66
COMBOBOX IDC_SERIAL,67,158,317,65,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
- CONTROL "Shared",IDC_SER_SHARED,"Button",BS_AUTOCHECKBOX | BS_VCENTER | WS_TABSTOP,32,179,66,12
- CONTROL "RTS/CTS",IDC_SER_CTSRTS,"Button",BS_AUTOCHECKBOX | BS_VCENTER | WS_TABSTOP,107,179,66,12
+ CONTROL "Shared",IDC_SER_SHARED,"Button",BS_AUTOCHECKBOX | BS_VCENTER | WS_TABSTOP,25,179,66,12
+ CONTROL "Host RTS/CTS",IDC_SER_CTSRTS,"Button",BS_AUTOCHECKBOX | BS_VCENTER | WS_TABSTOP,107,179,66,12
CONTROL "Direct []Use when emulating serial-link games on two PCs running WinUAE",IDC_SER_DIRECT,
"Button",BS_AUTOCHECKBOX | BS_VCENTER | WS_TABSTOP,182,179,83,12
- CONTROL "uaeserial.device",IDC_UAESERIAL,"Button",BS_AUTOCHECKBOX | BS_VCENTER | WS_TABSTOP,274,179,108,12
- GROUPBOX "MIDI",IDC_STATIC,1,199,393,54,BS_LEFT
- RTEXT "Out:",IDC_MIDI,22,210,32,15,SS_CENTERIMAGE
- COMBOBOX IDC_MIDIOUTLIST,58,212,145,130,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
- RTEXT "In:",IDC_MIDI2,204,209,31,15,SS_CENTERIMAGE
- COMBOBOX IDC_MIDIINLIST,239,211,145,134,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
- CONTROL "Route MIDI In to MIDI Out",IDC_MIDIROUTER,"Button",BS_AUTOCHECKBOX | BS_VCENTER | WS_TABSTOP,41,235,170,12
- GROUPBOX "Protection Dongle",IDC_STATIC,1,260,393,41,BS_LEFT
- COMBOBOX IDC_DONGLELIST,58,278,232,130,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
+ CONTROL "uaeserial.device",IDC_UAESERIAL,"Button",BS_AUTOCHECKBOX | BS_VCENTER | WS_TABSTOP,292,179,94,12
+ GROUPBOX "MIDI",IDC_STATIC,1,213,393,54,BS_LEFT
+ RTEXT "Out:",IDC_MIDI,22,224,32,15,SS_CENTERIMAGE
+ COMBOBOX IDC_MIDIOUTLIST,58,226,145,130,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
+ RTEXT "In:",IDC_MIDI2,204,224,31,15,SS_CENTERIMAGE
+ COMBOBOX IDC_MIDIINLIST,239,225,145,134,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
+ CONTROL "Route MIDI In to MIDI Out",IDC_MIDIROUTER,"Button",BS_AUTOCHECKBOX | BS_VCENTER | WS_TABSTOP,41,249,170,12
+ GROUPBOX "Protection Dongle",IDC_STATIC,1,274,393,41,BS_LEFT
+ COMBOBOX IDC_DONGLELIST,58,292,232,130,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
+ CONTROL "Serial status (RTS/CTS/DTR/DTE/CD)",IDC_SER_RTSCTSDTRDTECD,
+ "Button",BS_AUTOCHECKBOX | BS_VCENTER | WS_TABSTOP,25,192,162,12
+ CONTROL "Serial status: Ring Indicator",IDC_SER_RI,"Button",BS_AUTOCHECKBOX | BS_VCENTER | WS_TABSTOP,182,192,202,12
END
IDD_GAMEPORTS DIALOGEX 0, 0, 396, 316
return v;
}
- if (!(status & TIOCM_CAR)) {
- if (!(serbits & 0x20)) {
- serbits |= 0x20;
+ if (currprefs.serial_rtsctsdtrdtecd) {
+ if (!(status & TIOCM_CAR)) {
+ if (!(serbits & 0x20)) {
+ serbits |= 0x20;
#if SERIALHSDEBUG > 0
- write_log ( "SERIAL: CD off\n" );
+ write_log ( "SERIAL: CD off\n" );
#endif
- }
- } else {
- if (serbits & 0x20) {
- serbits &= ~0x20;
+ }
+ } else {
+ if (serbits & 0x20) {
+ serbits &= ~0x20;
#if SERIALHSDEBUG > 0
- write_log ( "SERIAL: CD on\n" );
+ write_log ( "SERIAL: CD on\n" );
#endif
+ }
}
- }
- if (!(status & TIOCM_DSR)) {
- if (!(serbits & 0x08)) {
- serbits |= 0x08;
+ if (!(status & TIOCM_DSR)) {
+ if (!(serbits & 0x08)) {
+ serbits |= 0x08;
#if SERIALHSDEBUG > 0
- write_log ( "SERIAL: DSR off\n" );
+ write_log ( "SERIAL: DSR off\n" );
#endif
- }
- } else {
- if (serbits & 0x08) {
- serbits &= ~0x08;
+ }
+ } else {
+ if (serbits & 0x08) {
+ serbits &= ~0x08;
#if SERIALHSDEBUG > 0
- write_log ( "SERIAL: DSR on\n" );
+ write_log ( "SERIAL: DSR on\n" );
#endif
+ }
}
- }
- if (!(status & TIOCM_CTS)) {
- if (!(serbits & 0x10)) {
- serbits |= 0x10;
+ if (!(status & TIOCM_CTS)) {
+ if (!(serbits & 0x10)) {
+ serbits |= 0x10;
#if SERIALHSDEBUG > 0
- write_log ( "SERIAL: CTS off\n" );
+ write_log ( "SERIAL: CTS off\n" );
#endif
- }
- } else {
- if (serbits & 0x10) {
- serbits &= ~0x10;
+ }
+ } else {
+ if (serbits & 0x10) {
+ serbits &= ~0x10;
#if SERIALHSDEBUG > 0
- write_log ( "SERIAL: CTS on\n" );
+ write_log ( "SERIAL: CTS on\n" );
#endif
+ }
}
}
// SEL == RI
- if (!isprinter()) {
+ if (isprinter()) {
+ serbits &= ~0x04;
+ serbits |= v & 0x04;
+ if (currprefs.serial_ri && (status & TIOCM_RI)) {
+ serbits &= ~0x04;
+ }
+ } else if (currprefs.serial_ri) {
serbits |= 0x04;
+ if (status & TIOCM_RI) {
+ serbits &= ~0x04;
+ }
} else {
serbits &= ~0x04;
serbits |= v & 0x04;
}
- if (status & TIOCM_RI) {
- serbits &= ~0x04;
- }
-
serbits &= 0x04 | 0x08 | 0x10 | 0x20;
oldserbits &= ~(0x04 | 0x08 | 0x10 | 0x20);
oldserbits |= serbits;
#ifdef SERIAL_PORT
if (currprefs.use_serial) {
- if (((oldserbits ^ newstate) & 0x80) && (dir & 0x80)) {
+ if (currprefs.serial_rtsctsdtrdtecd && ((oldserbits ^ newstate) & 0x80) && (dir & 0x80)) {
if (newstate & 0x80)
serial_dtr_off();
else
serial_dtr_on();
}
- if (!currprefs.serial_hwctsrts && (dir & 0x40)) {
+ if (!currprefs.serial_hwctsrts && currprefs.serial_rtsctsdtrdtecd && (dir & 0x40)) {
if ((oldserbits ^ newstate) & 0x40) {
if (newstate & 0x40) {
setserstat(TIOCM_RTS, 0);
if (sermap_data && sermap_enabled) {
uae_u32 flags = 0x80000000;
bool changed = false;
- if (((oldserbits ^ newstate) & 0x80) && (dir & 0x80)) {
+ if (currprefs.serial_rtsctsdtrdtecd && ((oldserbits ^ newstate) & 0x80) && (dir & 0x80)) {
if (!(newstate & 0x80)) {
flags |= 1; // DSR
flags |= 2; // CD
}
changed = true;
}
- if (!currprefs.serial_hwctsrts && (dir & 0x40)) {
+ if (!currprefs.serial_hwctsrts && currprefs.serial_rtsctsdtrdtecd && (dir & 0x40)) {
if ((oldserbits ^ newstate) & 0x40) {
if (!(newstate & 0x40)) {
flags |= 4; // RTS
ew (hDlg, IDC_SWAP, TRUE);
#if !defined (SERIAL_PORT)
- ew (hDlg, IDC_MIDIOUTLIST, FALSE);
- ew (hDlg, IDC_MIDIINLIST, FALSE);
- ew (hDlg, IDC_SHARED, FALSE);
- ew (hDlg, IDC_SER_CTSRTS, FALSE);
- ew (hDlg, IDC_SERIAL_DIRECT, FALSE);
- ew (hDlg, IDC_SERIAL, FALSE);
- ew (hDlg, IDC_UAESERIAL, FALSE);
+ ew(hDlg, IDC_MIDIOUTLIST, FALSE);
+ ew(hDlg, IDC_MIDIINLIST, FALSE);
+ ew(hDlg, IDC_SHARED, FALSE);
+ ew(hDlg, IDC_SER_CTSRTS, FALSE);
+ ew(hDlg, IDC_SER_RTSCTSDTRDTECD, FALSE);
+ ew(hDlg, IDC_SER_RI, FALSE);
+ ew(hDlg, IDC_SERIAL_DIRECT, FALSE);
+ ew(hDlg, IDC_SERIAL, FALSE);
+ ew(hDlg, IDC_UAESERIAL, FALSE);
#else
v = workprefs.use_serial ? TRUE : FALSE;
- ew (hDlg, IDC_SER_SHARED, v);
- ew (hDlg, IDC_SER_CTSRTS, v);
- ew (hDlg, IDC_SER_DIRECT, v);
- ew (hDlg, IDC_UAESERIAL, full_property_sheet);
+ ew(hDlg, IDC_SER_SHARED, v);
+ ew(hDlg, IDC_SER_CTSRTS, v);
+ ew(hDlg, IDC_SER_RTSCTSDTRDTECD, v);
+ ew(hDlg, IDC_SER_RI, v);
+ ew(hDlg, IDC_SER_DIRECT, v);
+ ew(hDlg, IDC_UAESERIAL, full_property_sheet);
#endif
isprinter = true;
issampler = true;
workprefs.sername[0] = 0;
}
workprefs.serial_demand = 0;
- if (ischecked (hDlg, IDC_SER_SHARED))
+ if (ischecked(hDlg, IDC_SER_SHARED))
workprefs.serial_demand = 1;
workprefs.serial_hwctsrts = 0;
- if (ischecked (hDlg, IDC_SER_CTSRTS))
+ if (ischecked(hDlg, IDC_SER_CTSRTS))
workprefs.serial_hwctsrts = 1;
+ workprefs.serial_rtsctsdtrdtecd = 0;
+ if (ischecked(hDlg, IDC_SER_RTSCTSDTRDTECD))
+ workprefs.serial_rtsctsdtrdtecd = 1;
+ workprefs.serial_ri = 0;
+ if (ischecked(hDlg, IDC_SER_RI))
+ workprefs.serial_ri = 1;
workprefs.serial_direct = 0;
- if (ischecked (hDlg, IDC_SER_DIRECT))
+ if (ischecked(hDlg, IDC_SER_DIRECT))
workprefs.serial_direct = 1;
workprefs.uaeserial = 0;
ew (hDlg, IDC_MIDIROUTER, workprefs.win32_midioutdev >= -1 && workprefs.win32_midiindev >= -1);
CheckDlgButton (hDlg, IDC_MIDIROUTER, workprefs.win32_midirouter);
- CheckDlgButton (hDlg, IDC_UAESERIAL, workprefs.uaeserial);
- CheckDlgButton (hDlg, IDC_SER_SHARED, workprefs.serial_demand);
- CheckDlgButton (hDlg, IDC_SER_CTSRTS, workprefs.serial_hwctsrts);
- CheckDlgButton (hDlg, IDC_SER_DIRECT, workprefs.serial_direct);
+ CheckDlgButton(hDlg, IDC_UAESERIAL, workprefs.uaeserial);
+ CheckDlgButton(hDlg, IDC_SER_SHARED, workprefs.serial_demand);
+ CheckDlgButton(hDlg, IDC_SER_CTSRTS, workprefs.serial_hwctsrts);
+ CheckDlgButton(hDlg, IDC_SER_RTSCTSDTRDTECD, workprefs.serial_rtsctsdtrdtecd);
+ CheckDlgButton(hDlg, IDC_SER_RI, workprefs.serial_ri);
+ CheckDlgButton(hDlg, IDC_SER_DIRECT, workprefs.serial_direct);
if(!workprefs.sername[0]) {
xSendDlgItemMessage (hDlg, IDC_SERIAL, CB_SETCURSEL, 0, 0L);
if (isprinter ()) {
closeprinter ();
}
- } else if (wParam == IDC_UAESERIAL || wParam == IDC_SER_SHARED || wParam == IDC_SER_DIRECT || wParam == IDC_SER_CTSRTS || wParam == IDC_PRINTERAUTOFLUSH || wParam == IDC_SAMPLER_STEREO || wParam == IDC_MIDIROUTER) {
+ } else if (wParam == IDC_UAESERIAL || wParam == IDC_SER_SHARED || wParam == IDC_SER_DIRECT || wParam == IDC_SER_CTSRTS || wParam == IDC_SER_RTSCTSDTRDTECD || wParam == IDC_SER_RI ||
+ wParam == IDC_PRINTERAUTOFLUSH || wParam == IDC_SAMPLER_STEREO || wParam == IDC_MIDIROUTER) {
values_from_portsdlg (hDlg);
} else {
if (HIWORD (wParam) == CBN_SELCHANGE) {