1 |
|
/* |
2 |
|
* IEC.cpp - IEC bus routines, 1541 emulation (DOS level) |
3 |
|
* |
4 |
< |
* Frodo (C) 1994-1997,2002-2003 Christian Bauer |
4 |
> |
* Frodo (C) 1994-1997,2002-2004 Christian Bauer |
5 |
|
* |
6 |
|
* This program is free software; you can redistribute it and/or modify |
7 |
|
* it under the terms of the GNU General Public License as published by |
68 |
|
if (ThePrefs.DriveType[i] == DRVTYPE_DIR) |
69 |
|
drive[i] = new FSDrive(this, ThePrefs.DrivePath[i]); |
70 |
|
else if (ThePrefs.DriveType[i] == DRVTYPE_D64) |
71 |
< |
drive[i] = new D64Drive(this, ThePrefs.DrivePath[i]); |
71 |
> |
drive[i] = new ImageDrive(this, ThePrefs.DrivePath[i]); |
72 |
|
else |
73 |
|
drive[i] = new T64Drive(this, ThePrefs.DrivePath[i]); |
74 |
|
} |
120 |
|
if (prefs->DriveType[i] == DRVTYPE_DIR) |
121 |
|
drive[i] = new FSDrive(this, prefs->DrivePath[i]); |
122 |
|
else if (prefs->DriveType[i] == DRVTYPE_D64) |
123 |
< |
drive[i] = new D64Drive(this, prefs->DrivePath[i]); |
123 |
> |
drive[i] = new ImageDrive(this, prefs->DrivePath[i]); |
124 |
|
else |
125 |
|
drive[i] = new T64Drive(this, prefs->DrivePath[i]); |
126 |
|
} |
210 |
|
* Read one byte |
211 |
|
*/ |
212 |
|
|
213 |
< |
uint8 IEC::In(uint8 *byte) |
213 |
> |
uint8 IEC::In(uint8 &byte) |
214 |
|
{ |
215 |
|
if (talker_active && (received_cmd == CMD_DATA)) |
216 |
|
return data_in(byte); |
217 |
|
|
218 |
< |
*byte = 0; |
218 |
> |
byte = 0; |
219 |
|
return ST_TIMEOUT; |
220 |
|
} |
221 |
|
|
388 |
|
* Read byte from channel |
389 |
|
*/ |
390 |
|
|
391 |
< |
uint8 IEC::data_in(uint8 *byte) |
391 |
> |
uint8 IEC::data_in(uint8 &byte) |
392 |
|
{ |
393 |
|
return talker->Read(sec_addr, byte); |
394 |
|
} |
451 |
|
sprintf(error_buf, Errors_1541[error], track, sector); |
452 |
|
error_ptr = error_buf; |
453 |
|
error_len = strlen(error_buf); |
454 |
+ |
current_error = error; |
455 |
|
|
456 |
|
// Set drive condition |
457 |
|
if (error != ERR_OK && error != ERR_SCRATCHED) |