Added PL (Polish) translation.
More cleanups in ZIP/CDROM/DISK code to fix heap trashing (all the heap-trashing changes were done together with OBattler)
This commit is contained in:
@@ -9,7 +9,7 @@
|
|||||||
* Implementation of the Iomega ZIP drive with SCSI(-like)
|
* Implementation of the Iomega ZIP drive with SCSI(-like)
|
||||||
* commands, for both ATAPI and SCSI usage.
|
* commands, for both ATAPI and SCSI usage.
|
||||||
*
|
*
|
||||||
* Version: @(#)zip.c 1.0.24 2018/10/26
|
* Version: @(#)zip.c 1.0.24 2018/10/27
|
||||||
*
|
*
|
||||||
* Authors: Fred N. van Kempen, <decwiz@yahoo.com>
|
* Authors: Fred N. van Kempen, <decwiz@yahoo.com>
|
||||||
* Miran Grca, <mgrca8@gmail.com>
|
* Miran Grca, <mgrca8@gmail.com>
|
||||||
@@ -469,10 +469,7 @@ static const mode_sense_pages_t mode_sense_pages_changeable250 = {
|
|||||||
} };
|
} };
|
||||||
|
|
||||||
|
|
||||||
static void command_complete(zip_t *dev);
|
static void do_callback(void *p);
|
||||||
static void zip_init(zip_t *dev);
|
|
||||||
|
|
||||||
static void zip_callback(void *p);
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef _LOGGING
|
#ifdef _LOGGING
|
||||||
@@ -492,109 +489,6 @@ zip_log(int level, const char *fmt, ...)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
int
|
|
||||||
find_zip_for_channel(uint8_t channel)
|
|
||||||
{
|
|
||||||
uint8_t i = 0;
|
|
||||||
|
|
||||||
for (i = 0; i < ZIP_NUM; i++) {
|
|
||||||
if ((zip_drives[i].bus_type == ZIP_BUS_ATAPI) &&
|
|
||||||
(zip_drives[i].bus_id.ide_channel == channel))
|
|
||||||
return i;
|
|
||||||
}
|
|
||||||
return 0xff;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
int
|
|
||||||
zip_load(zip_t *dev, const wchar_t *fn)
|
|
||||||
{
|
|
||||||
int read_only = dev->drv->ui_writeprot;
|
|
||||||
int size = 0;
|
|
||||||
|
|
||||||
dev->drv->f = plat_fopen(fn, dev->drv->ui_writeprot ? L"rb" : L"rb+");
|
|
||||||
if (!dev->drv->ui_writeprot && !dev->drv->f) {
|
|
||||||
dev->drv->f = plat_fopen(fn, L"rb");
|
|
||||||
read_only = 1;
|
|
||||||
}
|
|
||||||
if (dev->drv->f) {
|
|
||||||
fseek(dev->drv->f, 0, SEEK_END);
|
|
||||||
size = ftell(dev->drv->f);
|
|
||||||
|
|
||||||
if ((size == ((ZIP_SECTORS_250 << 9) + 0x1000)) || (size == ((ZIP_SECTORS << 9) + 0x1000))) {
|
|
||||||
/* This is a ZDI image. */
|
|
||||||
size -= 0x1000;
|
|
||||||
dev->drv->base = 0x1000;
|
|
||||||
} else
|
|
||||||
dev->drv->base = 0;
|
|
||||||
|
|
||||||
if (dev->drv->is_250) {
|
|
||||||
if ((size != (ZIP_SECTORS_250 << 9)) && (size != (ZIP_SECTORS << 9))) {
|
|
||||||
DEBUG("File is incorrect size for a ZIP image\nMust be exactly %i or %i bytes\n",
|
|
||||||
ZIP_SECTORS_250 << 9, ZIP_SECTORS << 9);
|
|
||||||
fclose(dev->drv->f);
|
|
||||||
dev->drv->f = NULL;
|
|
||||||
dev->drv->medium_size = 0;
|
|
||||||
ui_zip_eject(dev->id); /* Make sure the host OS knows we've rejected (and ejected) the image. */
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (size != (ZIP_SECTORS << 9)) {
|
|
||||||
DEBUG("File is incorrect size for a ZIP image\nMust be exactly %i bytes\n",
|
|
||||||
ZIP_SECTORS << 9);
|
|
||||||
fclose(dev->drv->f);
|
|
||||||
dev->drv->f = NULL;
|
|
||||||
dev->drv->medium_size = 0;
|
|
||||||
ui_zip_eject(dev->id); /* Make sure the host OS knows we've rejected (and ejected) the image. */
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
dev->drv->medium_size = size >> 9;
|
|
||||||
|
|
||||||
fseek(dev->drv->f, dev->drv->base, SEEK_SET);
|
|
||||||
|
|
||||||
memcpy(dev->drv->image_path, fn, sizeof(dev->drv->image_path));
|
|
||||||
|
|
||||||
dev->drv->read_only = read_only;
|
|
||||||
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void
|
|
||||||
zip_disk_reload(zip_t *dev)
|
|
||||||
{
|
|
||||||
int ret = 0;
|
|
||||||
|
|
||||||
if (wcslen(dev->drv->prev_image_path) == 0)
|
|
||||||
return;
|
|
||||||
else
|
|
||||||
ret = zip_load(dev, dev->drv->prev_image_path);
|
|
||||||
|
|
||||||
if (ret)
|
|
||||||
dev->unit_attention = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void
|
|
||||||
zip_disk_close(zip_t *dev)
|
|
||||||
{
|
|
||||||
if (dev->drv->f) {
|
|
||||||
fclose(dev->drv->f);
|
|
||||||
dev->drv->f = NULL;
|
|
||||||
|
|
||||||
memcpy(dev->drv->prev_image_path, dev->drv->image_path, sizeof(dev->drv->prev_image_path));
|
|
||||||
memset(dev->drv->image_path, 0, sizeof(dev->drv->image_path));
|
|
||||||
|
|
||||||
dev->drv->medium_size = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
set_callback(zip_t *dev)
|
set_callback(zip_t *dev)
|
||||||
{
|
{
|
||||||
@@ -636,14 +530,18 @@ current_mode(zip_t *dev)
|
|||||||
{
|
{
|
||||||
if (!supports_pio(dev) && !supports_dma(dev))
|
if (!supports_pio(dev) && !supports_dma(dev))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if (supports_pio(dev) && !supports_dma(dev)) {
|
if (supports_pio(dev) && !supports_dma(dev)) {
|
||||||
DEBUG("ZIP %i: Drive does not support DMA, setting to PIO\n", dev->id);
|
DEBUG("ZIP %i: Drive does not support DMA, setting to PIO\n", dev->id);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!supports_pio(dev) && supports_dma(dev))
|
if (!supports_pio(dev) && supports_dma(dev))
|
||||||
return 2;
|
return 2;
|
||||||
|
|
||||||
if (supports_pio(dev) && supports_dma(dev)) {
|
if (supports_pio(dev) && supports_dma(dev)) {
|
||||||
DEBUG("ZIP %i: Drive supports both, setting to %s\n", dev->id, (dev->features & 1) ? "DMA" : "PIO");
|
DEBUG("ZIP %i: Drive supports both, setting to %s\n",
|
||||||
|
dev->id, (dev->features & 1) ? "DMA" : "PIO");
|
||||||
return (dev->features & 1) ? 2 : 1;
|
return (dev->features & 1) ? 2 : 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -655,7 +553,7 @@ current_mode(zip_t *dev)
|
|||||||
static int
|
static int
|
||||||
err_stat_to_scsi(void *p)
|
err_stat_to_scsi(void *p)
|
||||||
{
|
{
|
||||||
zip_t *dev = (zip_t *) p;
|
zip_t *dev = (zip_t *)p;
|
||||||
|
|
||||||
if (dev->status & ERR_STAT)
|
if (dev->status & ERR_STAT)
|
||||||
return SCSI_STATUS_CHECK_CONDITION;
|
return SCSI_STATUS_CHECK_CONDITION;
|
||||||
@@ -665,8 +563,8 @@ err_stat_to_scsi(void *p)
|
|||||||
|
|
||||||
|
|
||||||
/* Translates ATAPI phase (DRQ, I/O, C/D) to SCSI phase (MSG, C/D, I/O). */
|
/* Translates ATAPI phase (DRQ, I/O, C/D) to SCSI phase (MSG, C/D, I/O). */
|
||||||
int
|
static int
|
||||||
zip_atapi_phase_to_scsi(zip_t *dev)
|
atapi_phase_to_scsi(zip_t *dev)
|
||||||
{
|
{
|
||||||
if (dev->status & 8) {
|
if (dev->status & 8) {
|
||||||
switch (dev->phase & 3) {
|
switch (dev->phase & 3) {
|
||||||
@@ -694,38 +592,21 @@ static void
|
|||||||
mode_sense_load(zip_t *dev)
|
mode_sense_load(zip_t *dev)
|
||||||
{
|
{
|
||||||
wchar_t temp[512];
|
wchar_t temp[512];
|
||||||
|
const mode_sense_pages_t *ptr;
|
||||||
FILE *fp;
|
FILE *fp;
|
||||||
int i;
|
|
||||||
|
|
||||||
memset(&dev->ms_pages_saved, 0, sizeof(mode_sense_pages_t));
|
if (dev->drv->is_250) {
|
||||||
|
if (zip_drives[dev->id].bus_type == ZIP_BUS_SCSI)
|
||||||
for (i = 0; i < 0x3f; i++) {
|
ptr = &mode_sense_pages_default250_scsi;
|
||||||
if (dev->drv->is_250) {
|
else
|
||||||
if (mode_sense_pages_default250.pages[i][1] != 0) {
|
ptr = &mode_sense_pages_default250;
|
||||||
if (zip_drives[dev->id].bus_type == ZIP_BUS_SCSI) {
|
} else {
|
||||||
memcpy(dev->ms_pages_saved.pages[i],
|
if (zip_drives[dev->id].bus_type == ZIP_BUS_SCSI)
|
||||||
mode_sense_pages_default250_scsi.pages[i],
|
ptr = &mode_sense_pages_default_scsi;
|
||||||
mode_sense_pages_default250_scsi.pages[i][1] + 2);
|
else
|
||||||
} else {
|
ptr = &mode_sense_pages_default;
|
||||||
memcpy(dev->ms_pages_saved.pages[i],
|
|
||||||
mode_sense_pages_default250.pages[i],
|
|
||||||
mode_sense_pages_default250.pages[i][1] + 2);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (mode_sense_pages_default.pages[i][1] != 0) {
|
|
||||||
if (dev->drv->bus_type == ZIP_BUS_SCSI) {
|
|
||||||
memcpy(dev->ms_pages_saved.pages[i],
|
|
||||||
mode_sense_pages_default_scsi.pages[i],
|
|
||||||
mode_sense_pages_default_scsi.pages[i][1] + 2);
|
|
||||||
} else {
|
|
||||||
memcpy(dev->ms_pages_saved.pages[i],
|
|
||||||
mode_sense_pages_default.pages[i],
|
|
||||||
mode_sense_pages_default.pages[i][1] + 2);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
memcpy(&dev->ms_pages_saved, ptr, sizeof(mode_sense_pages_t));
|
||||||
|
|
||||||
memset(temp, 0, sizeof(temp));
|
memset(temp, 0, sizeof(temp));
|
||||||
if (dev->drv->bus_type == ZIP_BUS_SCSI)
|
if (dev->drv->bus_type == ZIP_BUS_SCSI)
|
||||||
@@ -782,6 +663,7 @@ read_capacity(void *p, uint8_t *cdb, uint8_t *buffer, uint32_t *len)
|
|||||||
buffer[2] = (size >> 8) & 0xff;
|
buffer[2] = (size >> 8) & 0xff;
|
||||||
buffer[3] = size & 0xff;
|
buffer[3] = size & 0xff;
|
||||||
buffer[6] = 2; /* 512 = 0x0200 */
|
buffer[6] = 2; /* 512 = 0x0200 */
|
||||||
|
|
||||||
*len = 8;
|
*len = 8;
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
@@ -942,7 +824,7 @@ command_common(zip_t *dev)
|
|||||||
dev->phase = 1;
|
dev->phase = 1;
|
||||||
dev->pos = 0;
|
dev->pos = 0;
|
||||||
if (dev->packet_status == PHASE_COMPLETE) {
|
if (dev->packet_status == PHASE_COMPLETE) {
|
||||||
zip_callback((void *) dev);
|
do_callback((void *) dev);
|
||||||
dev->callback = 0LL;
|
dev->callback = 0LL;
|
||||||
} else {
|
} else {
|
||||||
if (dev->drv->bus_type == ZIP_BUS_SCSI) {
|
if (dev->drv->bus_type == ZIP_BUS_SCSI) {
|
||||||
@@ -1246,13 +1128,6 @@ zip_blocks(zip_t *dev, int32_t *len, int first_batch, int out)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
|
||||||
zip_insert(zip_t *dev)
|
|
||||||
{
|
|
||||||
dev->unit_attention = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static int
|
static int
|
||||||
pre_execution_check(zip_t *dev, uint8_t *cdb)
|
pre_execution_check(zip_t *dev, uint8_t *cdb)
|
||||||
{
|
{
|
||||||
@@ -1333,7 +1208,7 @@ pre_execution_check(zip_t *dev, uint8_t *cdb)
|
|||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
zip_seek(zip_t *dev, uint32_t pos)
|
do_seek(zip_t *dev, uint32_t pos)
|
||||||
{
|
{
|
||||||
DBGLOG(1, "ZIP %i: Seek %08X\n", dev->id, pos);
|
DBGLOG(1, "ZIP %i: Seek %08X\n", dev->id, pos);
|
||||||
dev->sector_pos = pos;
|
dev->sector_pos = pos;
|
||||||
@@ -1341,19 +1216,19 @@ zip_seek(zip_t *dev, uint32_t pos)
|
|||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
zip_rezero(zip_t *dev)
|
do_rezero(zip_t *dev)
|
||||||
{
|
{
|
||||||
dev->sector_pos = dev->sector_len = 0;
|
dev->sector_pos = dev->sector_len = 0;
|
||||||
zip_seek(dev, 0);
|
do_seek(dev, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
static void
|
||||||
zip_reset(void *p)
|
do_reset(void *p)
|
||||||
{
|
{
|
||||||
zip_t *dev = (zip_t *)p;
|
zip_t *dev = (zip_t *)p;
|
||||||
|
|
||||||
zip_rezero(dev);
|
do_rezero(dev);
|
||||||
|
|
||||||
dev->status = 0;
|
dev->status = 0;
|
||||||
dev->callback = 0LL;
|
dev->callback = 0LL;
|
||||||
@@ -1462,7 +1337,7 @@ buf_free(zip_t *dev)
|
|||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
zip_command(void *p, uint8_t *cdb)
|
do_command(void *p, uint8_t *cdb)
|
||||||
{
|
{
|
||||||
zip_t *dev = (zip_t *)p;
|
zip_t *dev = (zip_t *)p;
|
||||||
int pos = 0, block_desc = 0;
|
int pos = 0, block_desc = 0;
|
||||||
@@ -1564,7 +1439,7 @@ zip_command(void *p, uint8_t *cdb)
|
|||||||
|
|
||||||
case GPCMD_REZERO_UNIT:
|
case GPCMD_REZERO_UNIT:
|
||||||
dev->sector_pos = dev->sector_len = 0;
|
dev->sector_pos = dev->sector_len = 0;
|
||||||
zip_seek(dev, 0);
|
do_seek(dev, 0);
|
||||||
set_phase(dev, SCSI_PHASE_STATUS);
|
set_phase(dev, SCSI_PHASE_STATUS);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -2037,7 +1912,7 @@ atapi_out:
|
|||||||
pos = (cdb[2] << 24) | (cdb[3] << 16) | (cdb[4] << 8) | cdb[5];
|
pos = (cdb[2] << 24) | (cdb[3] << 16) | (cdb[4] << 8) | cdb[5];
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
zip_seek(dev, pos);
|
do_seek(dev, pos);
|
||||||
command_complete(dev);
|
command_complete(dev);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -2143,7 +2018,7 @@ atapi_out:
|
|||||||
DBGLOG(1, "ZIP %i: Phase: %02X, request length: %i\n",
|
DBGLOG(1, "ZIP %i: Phase: %02X, request length: %i\n",
|
||||||
dev->id, dev->phase, dev->request_length);
|
dev->id, dev->phase, dev->request_length);
|
||||||
|
|
||||||
if (zip_atapi_phase_to_scsi(dev) == SCSI_PHASE_STATUS)
|
if (atapi_phase_to_scsi(dev) == SCSI_PHASE_STATUS)
|
||||||
buf_free(dev);
|
buf_free(dev);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2319,7 +2194,7 @@ pio_request(zip_t *dev, uint8_t out)
|
|||||||
|
|
||||||
dev->status = BUSY_STAT;
|
dev->status = BUSY_STAT;
|
||||||
dev->phase = 1;
|
dev->phase = 1;
|
||||||
zip_callback(dev);
|
do_callback(dev);
|
||||||
|
|
||||||
dev->callback = 0LL;
|
dev->callback = 0LL;
|
||||||
set_callback(dev);
|
set_callback(dev);
|
||||||
@@ -2480,7 +2355,7 @@ write_to_dma(zip_t *dev)
|
|||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
zip_callback(void *p)
|
do_callback(void *p)
|
||||||
{
|
{
|
||||||
zip_t *dev = (zip_t *)p;
|
zip_t *dev = (zip_t *)p;
|
||||||
int ret;
|
int ret;
|
||||||
@@ -2497,7 +2372,7 @@ zip_callback(void *p)
|
|||||||
DEBUG("ZIP %i: PHASE_COMMAND\n", dev->id);
|
DEBUG("ZIP %i: PHASE_COMMAND\n", dev->id);
|
||||||
dev->status = BUSY_STAT | (dev->status & ERR_STAT);
|
dev->status = BUSY_STAT | (dev->status & ERR_STAT);
|
||||||
memcpy(dev->atapi_cdb, dev->buffer, 12);
|
memcpy(dev->atapi_cdb, dev->buffer, 12);
|
||||||
zip_command(dev, dev->atapi_cdb);
|
do_command(dev, dev->atapi_cdb);
|
||||||
return;
|
return;
|
||||||
|
|
||||||
case PHASE_COMPLETE:
|
case PHASE_COMPLETE:
|
||||||
@@ -2678,22 +2553,13 @@ packet_write(void *p, uint32_t val, int length)
|
|||||||
dev->status = BUSY_STAT;
|
dev->status = BUSY_STAT;
|
||||||
dev->packet_status = PHASE_COMMAND;
|
dev->packet_status = PHASE_COMMAND;
|
||||||
timer_process();
|
timer_process();
|
||||||
zip_callback((void *) dev);
|
do_callback((void *) dev);
|
||||||
timer_update_outstanding();
|
timer_update_outstanding();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Peform a master init on the entire module. */
|
|
||||||
void
|
|
||||||
zip_global_init(void)
|
|
||||||
{
|
|
||||||
/* Clear the global data. */
|
|
||||||
memset(zip_drives, 0x00, sizeof(zip_drives));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
zip_100_identify(ide_t *ide)
|
zip_100_identify(ide_t *ide)
|
||||||
{
|
{
|
||||||
@@ -2769,7 +2635,7 @@ get_timings(int ide_has_dma, int type)
|
|||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
zip_identify(void *p, int ide_has_dma)
|
do_identify(void *p, int ide_has_dma)
|
||||||
{
|
{
|
||||||
ide_t *ide = (ide_t *)p;
|
ide_t *ide = (ide_t *)p;
|
||||||
zip_t *zip = (zip_t *)ide->p;
|
zip_t *zip = (zip_t *)ide->p;
|
||||||
@@ -2789,7 +2655,7 @@ zip_identify(void *p, int ide_has_dma)
|
|||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
zip_init(zip_t *dev)
|
do_init(zip_t *dev)
|
||||||
{
|
{
|
||||||
dev->requested_blocks = 1;
|
dev->requested_blocks = 1;
|
||||||
dev->sense[0] = 0xf0;
|
dev->sense[0] = 0xf0;
|
||||||
@@ -2800,13 +2666,15 @@ zip_init(zip_t *dev)
|
|||||||
dev->drv->bus_mode |= 2;
|
dev->drv->bus_mode |= 2;
|
||||||
if (dev->drv->bus_type < ZIP_BUS_SCSI)
|
if (dev->drv->bus_type < ZIP_BUS_SCSI)
|
||||||
dev->drv->bus_mode |= 1;
|
dev->drv->bus_mode |= 1;
|
||||||
DEBUG("ZIP %i: Bus type %i, bus mode %i\n", dev->id, dev->drv->bus_type, dev->drv->bus_mode);
|
DEBUG("ZIP %i: Bus type %i, bus mode %i\n",
|
||||||
if (dev->drv->bus_type < ZIP_BUS_SCSI)
|
dev->id, dev->drv->bus_type, dev->drv->bus_mode);
|
||||||
|
if (dev->drv->bus_type == ZIP_BUS_ATAPI)
|
||||||
set_signature(dev);
|
set_signature(dev);
|
||||||
dev->status = READY_STAT | DSC_STAT;
|
dev->status = READY_STAT | DSC_STAT;
|
||||||
dev->pos = 0;
|
dev->pos = 0;
|
||||||
dev->packet_status = 0xff;
|
dev->packet_status = 0xff;
|
||||||
dev->sense[2] = dev->sense[12] = dev->sense[13] = dev->unit_attention = 0;
|
dev->sense[2] = dev->sense[12] = dev->sense[13] = 0;
|
||||||
|
dev->unit_attention = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -2820,22 +2688,23 @@ drive_reset(int c)
|
|||||||
dev = (zip_t *)zip_drives[c].priv;
|
dev = (zip_t *)zip_drives[c].priv;
|
||||||
if (dev == NULL) {
|
if (dev == NULL) {
|
||||||
dev = (zip_t *)mem_alloc(sizeof(zip_t));
|
dev = (zip_t *)mem_alloc(sizeof(zip_t));
|
||||||
memset(dev, 0x00, sizeof(zip_t));
|
|
||||||
zip_drives[c].priv = dev;
|
zip_drives[c].priv = dev;
|
||||||
}
|
}
|
||||||
|
memset(dev, 0x00, sizeof(zip_t));
|
||||||
dev->id = c;
|
dev->id = c;
|
||||||
dev->drv = &zip_drives[c];
|
dev->drv = &zip_drives[c];
|
||||||
|
|
||||||
switch (zip_drives[c].bus_type) {
|
switch (zip_drives[c].bus_type) {
|
||||||
case ZIP_BUS_SCSI:
|
case ZIP_BUS_SCSI:
|
||||||
sd = &scsi_devices[zip_drives[c].bus_id.scsi.id][zip_drives[c].bus_id.scsi.lun];
|
pclog(0,"ZIP: attaching to SCSI device %d:%d\n", dev->drv->bus_id.scsi.id, dev->drv->bus_id.scsi.lun);
|
||||||
|
sd = &scsi_devices[dev->drv->bus_id.scsi.id][dev->drv->bus_id.scsi.lun];
|
||||||
|
|
||||||
sd->p = dev;
|
sd->p = dev;
|
||||||
sd->command = zip_command;
|
sd->command = do_command;
|
||||||
sd->callback = zip_callback;
|
sd->callback = do_callback;
|
||||||
sd->err_stat_to_scsi = err_stat_to_scsi;
|
sd->err_stat_to_scsi = err_stat_to_scsi;
|
||||||
sd->request_sense = request_sense_scsi;
|
sd->request_sense = request_sense_scsi;
|
||||||
sd->reset = zip_reset;
|
sd->reset = do_reset;
|
||||||
sd->read_capacity = read_capacity;
|
sd->read_capacity = read_capacity;
|
||||||
sd->type = SCSI_REMOVABLE_DISK;
|
sd->type = SCSI_REMOVABLE_DISK;
|
||||||
|
|
||||||
@@ -2844,7 +2713,8 @@ drive_reset(int c)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case ZIP_BUS_ATAPI:
|
case ZIP_BUS_ATAPI:
|
||||||
id = ide_drives[zip_drives[c].bus_id.ide_channel];
|
pclog(0,"ZIP: attaching to IDE device %d\n", dev->drv->bus_id.ide_channel);
|
||||||
|
id = ide_drives[dev->drv->bus_id.ide_channel];
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If the IDE channel is initialized, we attach to it,
|
* If the IDE channel is initialized, we attach to it,
|
||||||
@@ -2856,13 +2726,13 @@ drive_reset(int c)
|
|||||||
id->p = dev;
|
id->p = dev;
|
||||||
id->get_max = get_max;
|
id->get_max = get_max;
|
||||||
id->get_timings = get_timings;
|
id->get_timings = get_timings;
|
||||||
id->identify = zip_identify;
|
id->identify = do_identify;
|
||||||
id->set_signature = set_signature;
|
id->set_signature = set_signature;
|
||||||
id->packet_write = packet_write;
|
id->packet_write = packet_write;
|
||||||
id->packet_read = packet_read;
|
id->packet_read = packet_read;
|
||||||
id->stop = NULL;
|
id->stop = NULL;
|
||||||
id->packet_callback = zip_callback;
|
id->packet_callback = do_callback;
|
||||||
id->device_reset = zip_reset;
|
id->device_reset = do_reset;
|
||||||
id->interrupt_drq = 1;
|
id->interrupt_drq = 1;
|
||||||
|
|
||||||
ide_atapi_attach(id);
|
ide_atapi_attach(id);
|
||||||
@@ -2874,6 +2744,15 @@ drive_reset(int c)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Peform a master init on the entire module. */
|
||||||
|
void
|
||||||
|
zip_global_init(void)
|
||||||
|
{
|
||||||
|
/* Clear the global data. */
|
||||||
|
memset(zip_drives, 0x00, sizeof(zip_drives));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
zip_hard_reset(void)
|
zip_hard_reset(void)
|
||||||
{
|
{
|
||||||
@@ -2882,13 +2761,13 @@ zip_hard_reset(void)
|
|||||||
|
|
||||||
for (c = 0; c < ZIP_NUM; c++) {
|
for (c = 0; c < ZIP_NUM; c++) {
|
||||||
if ((zip_drives[c].bus_type != ZIP_BUS_ATAPI) &&
|
if ((zip_drives[c].bus_type != ZIP_BUS_ATAPI) &&
|
||||||
(zip_drives[c].bus_type == ZIP_BUS_SCSI)) continue;
|
(zip_drives[c].bus_type != ZIP_BUS_SCSI)) continue;
|
||||||
|
|
||||||
DEBUG("ZIP hard_reset drive=%d\n", c);
|
DEBUG("ZIP hard_reset drive=%d\n", c);
|
||||||
|
|
||||||
/* Ignore any SCSI ZIP drive that has an out of range ID. */
|
/* Ignore any SCSI ZIP drive that has an out of range ID. */
|
||||||
if ((zip_drives[c].bus_type == ZIP_BUS_SCSI) &&
|
if ((zip_drives[c].bus_type == ZIP_BUS_SCSI) &&
|
||||||
(zip_drives[c].bus_id.scsi.id > SCSI_ID_MAX)) continue;
|
(zip_drives[c].bus_id.scsi.id >= SCSI_ID_MAX)) continue;
|
||||||
|
|
||||||
/* Ignore any ATAPI ZIP drive that has an out of range IDE channel. */
|
/* Ignore any ATAPI ZIP drive that has an out of range IDE channel. */
|
||||||
if ((zip_drives[c].bus_type == ZIP_BUS_ATAPI) &&
|
if ((zip_drives[c].bus_type == ZIP_BUS_ATAPI) &&
|
||||||
@@ -2898,7 +2777,7 @@ zip_hard_reset(void)
|
|||||||
|
|
||||||
dev = (zip_t *)zip_drives[c].priv;
|
dev = (zip_t *)zip_drives[c].priv;
|
||||||
|
|
||||||
zip_init(dev);
|
do_init(dev);
|
||||||
|
|
||||||
if (wcslen(dev->drv->image_path))
|
if (wcslen(dev->drv->image_path))
|
||||||
zip_load(dev, dev->drv->image_path);
|
zip_load(dev, dev->drv->image_path);
|
||||||
@@ -2935,7 +2814,7 @@ zip_reset_bus(int bus)
|
|||||||
|
|
||||||
for (i = 0; i < ZIP_NUM; i++) {
|
for (i = 0; i < ZIP_NUM; i++) {
|
||||||
if ((zip_drives[i].bus_type == bus) && zip_drives[i].priv)
|
if ((zip_drives[i].bus_type == bus) && zip_drives[i].priv)
|
||||||
zip_reset(zip_drives[i].priv);
|
do_reset(zip_drives[i].priv);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2980,3 +2859,96 @@ zip_bus_to_string(int bus)
|
|||||||
|
|
||||||
return(ret);
|
return(ret);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
zip_disk_close(zip_t *dev)
|
||||||
|
{
|
||||||
|
if (dev->drv->f) {
|
||||||
|
fclose(dev->drv->f);
|
||||||
|
dev->drv->f = NULL;
|
||||||
|
|
||||||
|
dev->drv->medium_size = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int
|
||||||
|
zip_load(zip_t *dev, const wchar_t *fn)
|
||||||
|
{
|
||||||
|
int read_only = dev->drv->ui_writeprot;
|
||||||
|
int size = 0;
|
||||||
|
|
||||||
|
dev->drv->f = plat_fopen(fn, dev->drv->ui_writeprot ? L"rb" : L"rb+");
|
||||||
|
if (!dev->drv->ui_writeprot && !dev->drv->f) {
|
||||||
|
dev->drv->f = plat_fopen(fn, L"rb");
|
||||||
|
read_only = 1;
|
||||||
|
}
|
||||||
|
if (dev->drv->f) {
|
||||||
|
fseek(dev->drv->f, 0, SEEK_END);
|
||||||
|
size = ftell(dev->drv->f);
|
||||||
|
|
||||||
|
if ((size == ((ZIP_SECTORS_250 << 9) + 0x1000)) || (size == ((ZIP_SECTORS << 9) + 0x1000))) {
|
||||||
|
/* This is a ZDI image. */
|
||||||
|
size -= 0x1000;
|
||||||
|
dev->drv->base = 0x1000;
|
||||||
|
} else
|
||||||
|
dev->drv->base = 0;
|
||||||
|
|
||||||
|
if (dev->drv->is_250) {
|
||||||
|
if ((size != (ZIP_SECTORS_250 << 9)) && (size != (ZIP_SECTORS << 9))) {
|
||||||
|
DEBUG("File is incorrect size for a ZIP image\nMust be exactly %i or %i bytes\n",
|
||||||
|
ZIP_SECTORS_250 << 9, ZIP_SECTORS << 9);
|
||||||
|
fclose(dev->drv->f);
|
||||||
|
dev->drv->f = NULL;
|
||||||
|
dev->drv->medium_size = 0;
|
||||||
|
ui_zip_eject(dev->id); /* Make sure the host OS knows we've rejected (and ejected) the image. */
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (size != (ZIP_SECTORS << 9)) {
|
||||||
|
DEBUG("File is incorrect size for a ZIP image\nMust be exactly %i bytes\n",
|
||||||
|
ZIP_SECTORS << 9);
|
||||||
|
fclose(dev->drv->f);
|
||||||
|
dev->drv->f = NULL;
|
||||||
|
dev->drv->medium_size = 0;
|
||||||
|
ui_zip_eject(dev->id); /* Make sure the host OS knows we've rejected (and ejected) the image. */
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
dev->drv->medium_size = size >> 9;
|
||||||
|
|
||||||
|
fseek(dev->drv->f, dev->drv->base, SEEK_SET);
|
||||||
|
|
||||||
|
memcpy(dev->drv->image_path, fn, sizeof(dev->drv->image_path));
|
||||||
|
|
||||||
|
dev->drv->read_only = read_only;
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
zip_disk_reload(zip_t *dev)
|
||||||
|
{
|
||||||
|
int ret = 0;
|
||||||
|
|
||||||
|
if (wcslen(dev->drv->prev_image_path) == 0)
|
||||||
|
return;
|
||||||
|
else
|
||||||
|
ret = zip_load(dev, dev->drv->prev_image_path);
|
||||||
|
|
||||||
|
if (ret)
|
||||||
|
dev->unit_attention = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
zip_insert(zip_t *dev)
|
||||||
|
{
|
||||||
|
dev->unit_attention = 1;
|
||||||
|
}
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
* Implementation of the Iomega ZIP drive with SCSI(-like)
|
* Implementation of the Iomega ZIP drive with SCSI(-like)
|
||||||
* commands, for both ATAPI and SCSI usage.
|
* commands, for both ATAPI and SCSI usage.
|
||||||
*
|
*
|
||||||
* Version: @(#)zip.h 1.0.11 2018/10/26
|
* Version: @(#)zip.h 1.0.12 2018/10/26
|
||||||
*
|
*
|
||||||
* Author: Miran Grca, <mgrca8@gmail.com>
|
* Author: Miran Grca, <mgrca8@gmail.com>
|
||||||
*
|
*
|
||||||
@@ -134,7 +134,6 @@ extern void zip_reset_bus(int bus);
|
|||||||
extern int zip_string_to_bus(const char *str);
|
extern int zip_string_to_bus(const char *str);
|
||||||
extern const char *zip_bus_to_string(int bus);
|
extern const char *zip_bus_to_string(int bus);
|
||||||
|
|
||||||
extern void zip_reset(void *p);
|
|
||||||
extern int zip_load(zip_t *dev, const wchar_t *fn);
|
extern int zip_load(zip_t *dev, const wchar_t *fn);
|
||||||
extern void zip_close(void);
|
extern void zip_close(void);
|
||||||
|
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
*
|
*
|
||||||
* Emulation of SCSI (and ATAPI) CD-ROM drives.
|
* Emulation of SCSI (and ATAPI) CD-ROM drives.
|
||||||
*
|
*
|
||||||
* Version: @(#)scsi_cdrom.c 1.0.9 2018/10/25
|
* Version: @(#)scsi_cdrom.c 1.0.10 2018/10/27
|
||||||
*
|
*
|
||||||
* Authors: Fred N. van Kempen, <decwiz@yahoo.com>
|
* Authors: Fred N. van Kempen, <decwiz@yahoo.com>
|
||||||
* Miran Grca, <mgrca8@gmail.com>
|
* Miran Grca, <mgrca8@gmail.com>
|
||||||
@@ -334,12 +334,8 @@ static const mode_sense_pages_t mode_sense_pages_changeable = {
|
|||||||
{ GPMODE_CAPABILITIES_PAGE, 0x12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
|
{ GPMODE_CAPABILITIES_PAGE, 0x12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
|
||||||
} };
|
} };
|
||||||
|
|
||||||
uint8_t scsi_cdrom_read_capacity_cdb[12] = {0x25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
|
|
||||||
|
|
||||||
|
static void do_callback(void *p);
|
||||||
static void command_complete(scsi_cdrom_t *dev);
|
|
||||||
static void mode_sense_load(scsi_cdrom_t *dev);
|
|
||||||
static void scsi_cdrom_callback(void *p);
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef _LOGGING
|
#ifdef _LOGGING
|
||||||
@@ -464,33 +460,25 @@ static void
|
|||||||
mode_sense_load(scsi_cdrom_t *dev)
|
mode_sense_load(scsi_cdrom_t *dev)
|
||||||
{
|
{
|
||||||
wchar_t temp[512];
|
wchar_t temp[512];
|
||||||
|
const mode_sense_pages_t *ptr;
|
||||||
FILE *fp;
|
FILE *fp;
|
||||||
int i;
|
|
||||||
|
|
||||||
memset(&dev->ms_pages_saved, 0, sizeof(mode_sense_pages_t));
|
|
||||||
for (i = 0; i < 0x3f; i++) {
|
|
||||||
if (mode_sense_pages_default.pages[i][1] != 0) {
|
|
||||||
if (dev->drv->bus_type == CDROM_BUS_SCSI)
|
|
||||||
memcpy(dev->ms_pages_saved.pages[i],
|
|
||||||
mode_sense_pages_default_scsi.pages[i],
|
|
||||||
mode_sense_pages_default_scsi.pages[i][1] + 2);
|
|
||||||
else
|
|
||||||
memcpy(dev->ms_pages_saved.pages[i],
|
|
||||||
mode_sense_pages_default.pages[i],
|
|
||||||
mode_sense_pages_default.pages[i][1] + 2);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
memset(temp, 0, sizeof(temp));
|
memset(temp, 0, sizeof(temp));
|
||||||
if (dev->drv->bus_type == CDROM_BUS_SCSI)
|
if (dev->drv->bus_type == CDROM_BUS_SCSI) {
|
||||||
swprintf(temp, sizeof_w(temp),
|
swprintf(temp, sizeof_w(temp),
|
||||||
L"scsi_cdrom_%02i_mode_sense_bin", dev->id);
|
L"scsi_cdrom_%02i_mode_sense_bin", dev->id);
|
||||||
else
|
ptr = &mode_sense_pages_default_scsi;
|
||||||
|
} else {
|
||||||
swprintf(temp, sizeof_w(temp),
|
swprintf(temp, sizeof_w(temp),
|
||||||
L"cdrom_%02i_mode_sense_bin", dev->id);
|
L"cdrom_%02i_mode_sense_bin", dev->id);
|
||||||
|
ptr = &mode_sense_pages_default;
|
||||||
|
}
|
||||||
|
|
||||||
|
memcpy(&dev->ms_pages_saved, ptr, sizeof(mode_sense_pages_t));
|
||||||
|
|
||||||
fp = plat_fopen(nvr_path(temp), L"rb");
|
fp = plat_fopen(nvr_path(temp), L"rb");
|
||||||
if (fp != NULL) {
|
if (fp != NULL) {
|
||||||
(void)fread(dev->ms_pages_saved.pages[GPMODE_CDROM_AUDIO_PAGE],
|
(void)fread(&dev->ms_pages_saved.pages[GPMODE_CDROM_AUDIO_PAGE],
|
||||||
1, 0x10, fp);
|
1, 0x10, fp);
|
||||||
(void)fclose(fp);
|
(void)fclose(fp);
|
||||||
}
|
}
|
||||||
@@ -513,7 +501,7 @@ mode_sense_save(scsi_cdrom_t *dev)
|
|||||||
|
|
||||||
fp = plat_fopen(nvr_path(temp), L"wb");
|
fp = plat_fopen(nvr_path(temp), L"wb");
|
||||||
if (fp != NULL) {
|
if (fp != NULL) {
|
||||||
(void)fwrite(dev->ms_pages_saved.pages[GPMODE_CDROM_AUDIO_PAGE],
|
(void)fwrite(&dev->ms_pages_saved.pages[GPMODE_CDROM_AUDIO_PAGE],
|
||||||
1, 0x10, fp);
|
1, 0x10, fp);
|
||||||
(void)fclose(fp);
|
(void)fclose(fp);
|
||||||
}
|
}
|
||||||
@@ -536,6 +524,7 @@ read_capacity(void *priv, uint8_t *cdb, uint8_t *buffer, uint32_t *len)
|
|||||||
buffer[2] = (size >> 8) & 0xff;
|
buffer[2] = (size >> 8) & 0xff;
|
||||||
buffer[3] = size & 0xff;
|
buffer[3] = size & 0xff;
|
||||||
buffer[6] = 8; /* 2048 = 0x0800 */
|
buffer[6] = 8; /* 2048 = 0x0800 */
|
||||||
|
|
||||||
*len = 8;
|
*len = 8;
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
@@ -716,7 +705,7 @@ command_common(scsi_cdrom_t *dev)
|
|||||||
dev->id, cdrom_speeds[dev->drv->cur_speed].speed);
|
dev->id, cdrom_speeds[dev->drv->cur_speed].speed);
|
||||||
|
|
||||||
if (dev->packet_status == PHASE_COMPLETE) {
|
if (dev->packet_status == PHASE_COMPLETE) {
|
||||||
scsi_cdrom_callback(dev);
|
do_callback(dev);
|
||||||
dev->callback = 0LL;
|
dev->callback = 0LL;
|
||||||
} else {
|
} else {
|
||||||
switch(dev->current_cdb[0]) {
|
switch(dev->current_cdb[0]) {
|
||||||
@@ -1331,7 +1320,7 @@ read_dvd_structure(scsi_cdrom_t *dev, int format, const uint8_t *packet, uint8_t
|
|||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
scsi_cdrom_insert(void *p)
|
do_insert(void *p)
|
||||||
{
|
{
|
||||||
scsi_cdrom_t *dev = (scsi_cdrom_t *)p;
|
scsi_cdrom_t *dev = (scsi_cdrom_t *)p;
|
||||||
|
|
||||||
@@ -1440,7 +1429,7 @@ skip_ready_check:
|
|||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
scsi_cdrom_rezero(scsi_cdrom_t *dev)
|
do_rezero(scsi_cdrom_t *dev)
|
||||||
{
|
{
|
||||||
dev->sector_pos = dev->sector_len = 0;
|
dev->sector_pos = dev->sector_len = 0;
|
||||||
|
|
||||||
@@ -1449,14 +1438,14 @@ scsi_cdrom_rezero(scsi_cdrom_t *dev)
|
|||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
scsi_cdrom_reset(void *p)
|
do_reset(void *p)
|
||||||
{
|
{
|
||||||
scsi_cdrom_t *dev = (scsi_cdrom_t *) p;
|
scsi_cdrom_t *dev = (scsi_cdrom_t *) p;
|
||||||
|
|
||||||
if (dev == NULL)
|
if (dev == NULL)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
scsi_cdrom_rezero(dev);
|
do_rezero(dev);
|
||||||
|
|
||||||
dev->status = 0;
|
dev->status = 0;
|
||||||
dev->callback = 0LL;
|
dev->callback = 0LL;
|
||||||
@@ -1516,7 +1505,7 @@ request_sense(scsi_cdrom_t *dev, uint8_t *buffer, uint8_t alloc_length)
|
|||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
request_sense_for_scsi(void *p, uint8_t *buffer, uint8_t alloc_length)
|
request_sense_scsi(void *p, uint8_t *buffer, uint8_t alloc_length)
|
||||||
{
|
{
|
||||||
scsi_cdrom_t *dev = (scsi_cdrom_t *)p;
|
scsi_cdrom_t *dev = (scsi_cdrom_t *)p;
|
||||||
int ready = 0;
|
int ready = 0;
|
||||||
@@ -1571,8 +1560,8 @@ buf_free(scsi_cdrom_t *dev)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
static void
|
||||||
scsi_cdrom_command(void *p, uint8_t *cdb)
|
do_command(void *p, uint8_t *cdb)
|
||||||
{
|
{
|
||||||
scsi_cdrom_t *dev = (scsi_cdrom_t *) p;
|
scsi_cdrom_t *dev = (scsi_cdrom_t *) p;
|
||||||
int len, max_len, used_len, alloc_length, msf;
|
int len, max_len, used_len, alloc_length, msf;
|
||||||
@@ -2571,7 +2560,8 @@ atapi_out:
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
DBGLOG(1, "CD-ROM %i: Phase: %02X, request length: %i\n", dev->phase, dev->request_length);
|
DBGLOG(1, "CD-ROM %i: Phase: %02X, request length: %i\n",
|
||||||
|
dev->phase, dev->request_length);
|
||||||
|
|
||||||
if (atapi_phase_to_scsi(dev) == SCSI_PHASE_STATUS)
|
if (atapi_phase_to_scsi(dev) == SCSI_PHASE_STATUS)
|
||||||
buf_free(dev);
|
buf_free(dev);
|
||||||
@@ -2702,7 +2692,7 @@ pio_request(scsi_cdrom_t *dev, uint8_t out)
|
|||||||
|
|
||||||
dev->status = BUSY_STAT;
|
dev->status = BUSY_STAT;
|
||||||
dev->phase = 1;
|
dev->phase = 1;
|
||||||
scsi_cdrom_callback(dev);
|
do_callback(dev);
|
||||||
dev->callback = 0LL;
|
dev->callback = 0LL;
|
||||||
set_callback(dev);
|
set_callback(dev);
|
||||||
|
|
||||||
@@ -2745,7 +2735,8 @@ read_from_scsi_dma(uint8_t scsi_id, uint8_t scsi_lun)
|
|||||||
if (dev == NULL)
|
if (dev == NULL)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
DEBUG("Reading from SCSI DMA: SCSI ID %02X, init length %i\n", scsi_id, *BufLen);
|
DEBUG("Reading from SCSI DMA: SCSI ID %02X, init length %i\n",
|
||||||
|
scsi_id, *BufLen);
|
||||||
memcpy(dev->buffer, scsi_devices[scsi_id][scsi_lun].cmd_buffer, *BufLen);
|
memcpy(dev->buffer, scsi_devices[scsi_id][scsi_lun].cmd_buffer, *BufLen);
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
@@ -2858,7 +2849,7 @@ write_to_dma(scsi_cdrom_t *dev)
|
|||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
scsi_cdrom_callback(void *priv)
|
do_callback(void *priv)
|
||||||
{
|
{
|
||||||
scsi_cdrom_t *dev = (scsi_cdrom_t *)priv;
|
scsi_cdrom_t *dev = (scsi_cdrom_t *)priv;
|
||||||
int ret;
|
int ret;
|
||||||
@@ -2875,7 +2866,7 @@ scsi_cdrom_callback(void *priv)
|
|||||||
DEBUG("CD-ROM %i: PHASE_COMMAND\n", dev->id);
|
DEBUG("CD-ROM %i: PHASE_COMMAND\n", dev->id);
|
||||||
dev->status = BUSY_STAT | (dev->status & ERR_STAT);
|
dev->status = BUSY_STAT | (dev->status & ERR_STAT);
|
||||||
memcpy(dev->atapi_cdb, dev->buffer, 12);
|
memcpy(dev->atapi_cdb, dev->buffer, 12);
|
||||||
scsi_cdrom_command(dev, dev->atapi_cdb);
|
do_command(dev, dev->atapi_cdb);
|
||||||
return;
|
return;
|
||||||
|
|
||||||
case PHASE_COMPLETE:
|
case PHASE_COMPLETE:
|
||||||
@@ -3059,7 +3050,7 @@ packet_write(void *priv, uint32_t val, int length)
|
|||||||
dev->status = BUSY_STAT;
|
dev->status = BUSY_STAT;
|
||||||
dev->packet_status = PHASE_COMMAND;
|
dev->packet_status = PHASE_COMMAND;
|
||||||
timer_process();
|
timer_process();
|
||||||
scsi_cdrom_callback(dev);
|
do_callback(dev);
|
||||||
timer_update_outstanding();
|
timer_update_outstanding();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -3067,7 +3058,7 @@ packet_write(void *priv, uint32_t val, int length)
|
|||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
scsi_cdrom_close(void *priv)
|
do_close(void *priv)
|
||||||
{
|
{
|
||||||
scsi_cdrom_t *dev = (scsi_cdrom_t *)priv;
|
scsi_cdrom_t *dev = (scsi_cdrom_t *)priv;
|
||||||
|
|
||||||
@@ -3077,7 +3068,7 @@ scsi_cdrom_close(void *priv)
|
|||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
scsi_cdrom_stop(void *priv)
|
do_stop(void *priv)
|
||||||
{
|
{
|
||||||
scsi_cdrom_t *dev = (scsi_cdrom_t *)priv;
|
scsi_cdrom_t *dev = (scsi_cdrom_t *)priv;
|
||||||
|
|
||||||
@@ -3150,7 +3141,7 @@ get_timings(int ide_has_dma, int type)
|
|||||||
* maybe use a new function cdrom_set_ident() for that? --FvK
|
* maybe use a new function cdrom_set_ident() for that? --FvK
|
||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
scsi_cdrom_identify(void *priv, int ide_has_dma)
|
do_identify(void *priv, int ide_has_dma)
|
||||||
{
|
{
|
||||||
ide_t *ide = (ide_t *)priv;
|
ide_t *ide = (ide_t *)priv;
|
||||||
#ifdef _LOGGING
|
#ifdef _LOGGING
|
||||||
@@ -3184,10 +3175,10 @@ scsi_cdrom_identify(void *priv, int ide_has_dma)
|
|||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
scsi_cdrom_init(scsi_cdrom_t *dev)
|
do_init(scsi_cdrom_t *dev)
|
||||||
{
|
{
|
||||||
/* Do a reset (which will also rezero it). */
|
/* Do a reset (which will also rezero it). */
|
||||||
scsi_cdrom_reset(dev);
|
do_reset(dev);
|
||||||
|
|
||||||
/* Configure the drive. */
|
/* Configure the drive. */
|
||||||
dev->requested_blocks = 1;
|
dev->requested_blocks = 1;
|
||||||
@@ -3241,23 +3232,23 @@ scsi_cdrom_drive_reset(int c)
|
|||||||
dev->drv = drv;
|
dev->drv = drv;
|
||||||
|
|
||||||
/* Link in our local methods. */
|
/* Link in our local methods. */
|
||||||
drv->insert = scsi_cdrom_insert;
|
drv->insert = do_insert;
|
||||||
drv->get_volume = get_volume;
|
drv->get_volume = get_volume;
|
||||||
drv->get_channel = get_channel;
|
drv->get_channel = get_channel;
|
||||||
drv->close = scsi_cdrom_close;
|
drv->close = do_close;
|
||||||
|
|
||||||
scsi_cdrom_init(dev);
|
do_init(dev);
|
||||||
|
|
||||||
if (drv->bus_type == CDROM_BUS_SCSI) {
|
if (drv->bus_type == CDROM_BUS_SCSI) {
|
||||||
/* SCSI CD-ROM, attach to the SCSI bus. */
|
/* SCSI CD-ROM, attach to the SCSI bus. */
|
||||||
sd = &scsi_devices[drv->bus_id.scsi.id][drv->bus_id.scsi.lun];
|
sd = &scsi_devices[drv->bus_id.scsi.id][drv->bus_id.scsi.lun];
|
||||||
|
|
||||||
sd->p = dev;
|
sd->p = dev;
|
||||||
sd->command = scsi_cdrom_command;
|
sd->command = do_command;
|
||||||
sd->callback = scsi_cdrom_callback;
|
sd->callback = do_callback;
|
||||||
sd->err_stat_to_scsi = err_stat_to_scsi;
|
sd->err_stat_to_scsi = err_stat_to_scsi;
|
||||||
sd->request_sense = request_sense_for_scsi;
|
sd->request_sense = request_sense_scsi;
|
||||||
sd->reset = scsi_cdrom_reset;
|
sd->reset = do_reset;
|
||||||
sd->read_capacity = read_capacity;
|
sd->read_capacity = read_capacity;
|
||||||
sd->type = SCSI_REMOVABLE_CDROM;
|
sd->type = SCSI_REMOVABLE_CDROM;
|
||||||
|
|
||||||
@@ -3273,13 +3264,13 @@ scsi_cdrom_drive_reset(int c)
|
|||||||
id->p = dev;
|
id->p = dev;
|
||||||
id->get_max = get_max;
|
id->get_max = get_max;
|
||||||
id->get_timings = get_timings;
|
id->get_timings = get_timings;
|
||||||
id->identify = scsi_cdrom_identify;
|
id->identify = do_identify;
|
||||||
id->set_signature = set_signature;
|
id->set_signature = set_signature;
|
||||||
id->packet_write = packet_write;
|
id->packet_write = packet_write;
|
||||||
id->packet_read = packet_read;
|
id->packet_read = packet_read;
|
||||||
id->stop = scsi_cdrom_stop;
|
id->stop = do_stop;
|
||||||
id->packet_callback = scsi_cdrom_callback;
|
id->packet_callback = do_callback;
|
||||||
id->device_reset = scsi_cdrom_reset;
|
id->device_reset = do_reset;
|
||||||
id->interrupt_drq = 0;
|
id->interrupt_drq = 0;
|
||||||
|
|
||||||
ide_atapi_attach(id);
|
ide_atapi_attach(id);
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
85
src/ui/lang/Extra-PL.txt
Normal file
85
src/ui/lang/Extra-PL.txt
Normal file
@@ -0,0 +1,85 @@
|
|||||||
|
**** Additional strings for the Installer itself ****
|
||||||
|
**** (keep the > lines, add translation after : ****
|
||||||
|
|
||||||
|
|
||||||
|
> Wybierz język instalatora:
|
||||||
|
:
|
||||||
|
|
||||||
|
> Pulpit (w sensie: "Ikony Pulpitu")
|
||||||
|
:
|
||||||
|
|
||||||
|
|
||||||
|
> Wykonuję operacje usuwania plików
|
||||||
|
:
|
||||||
|
|
||||||
|
> Przygotowuję pliki do usunięcia
|
||||||
|
:
|
||||||
|
|
||||||
|
> Odtwarzam usunięte pliki
|
||||||
|
:
|
||||||
|
|
||||||
|
> Wypakowywanie plików z archiwum
|
||||||
|
:
|
||||||
|
|
||||||
|
> Wykonuję usunięcie pliku
|
||||||
|
:
|
||||||
|
|
||||||
|
> Przygotowywuję plik
|
||||||
|
:
|
||||||
|
|
||||||
|
> Odtwarzam plik
|
||||||
|
:
|
||||||
|
|
||||||
|
> Ten pakiet może być uruchomiony tylko z poziomu bootstrappera.
|
||||||
|
:
|
||||||
|
|
||||||
|
|
||||||
|
> Kilka narzędzi linii komend
|
||||||
|
:
|
||||||
|
|
||||||
|
> Zestaw przykładowych konfiguracji na początek.
|
||||||
|
:
|
||||||
|
|
||||||
|
> Zwyczajny klon Turbo-XT.
|
||||||
|
:
|
||||||
|
|
||||||
|
> Oryginalny IBM-PC.
|
||||||
|
:
|
||||||
|
|
||||||
|
> Nowy model IBM-PC
|
||||||
|
:
|
||||||
|
|
||||||
|
> Fonty Segoe UI dla Windows XP
|
||||||
|
:
|
||||||
|
|
||||||
|
|
||||||
|
> Dodatkowe pliki tłumaczeń.
|
||||||
|
:
|
||||||
|
|
||||||
|
> Twoje maszyny wirtualne.
|
||||||
|
:
|
||||||
|
|
||||||
|
> Pliki runtime dla syntezatora MIDI FluidSynth
|
||||||
|
:
|
||||||
|
|
||||||
|
> Różne pliki runtime wymagane przez aplikację.
|
||||||
|
:
|
||||||
|
|
||||||
|
> Obrazy ROM BIOS-ów emulowanych maszyn i urządzeń.
|
||||||
|
:
|
||||||
|
|
||||||
|
> Pliki runtime wymagane przez renderer SDL2.
|
||||||
|
:
|
||||||
|
|
||||||
|
> Aplikacja VARCem we własnej osobie
|
||||||
|
:
|
||||||
|
|
||||||
|
> Umowa Licencyjna
|
||||||
|
:
|
||||||
|
|
||||||
|
> Instalator [ProductName].
|
||||||
|
:
|
||||||
|
|
||||||
|
> Zespół VARCem
|
||||||
|
:
|
||||||
|
|
||||||
401
src/ui/lang/VARCem-PL.str
Normal file
401
src/ui/lang/VARCem-PL.str
Normal file
@@ -0,0 +1,401 @@
|
|||||||
|
/*
|
||||||
|
* VARCem Virtual ARchaeological Computer EMulator.
|
||||||
|
* An emulator of (mostly) x86-based PC systems and devices,
|
||||||
|
* using the ISA,EISA,VLB,MCA and PCI system buses, roughly
|
||||||
|
* spanning the era between 1981 and 1995.
|
||||||
|
*
|
||||||
|
* This file is part of the VARCem Project.
|
||||||
|
*
|
||||||
|
* String definitions for "Polish (Poland)" language.
|
||||||
|
*
|
||||||
|
* Version: @(#)VARCem-PL.str 1.0.1 2018/10/27
|
||||||
|
*
|
||||||
|
* Authors: Ola Hughson, <ohughson@varcem.com>
|
||||||
|
* Fred N. van Kempen, <decwiz@yahoo.com>
|
||||||
|
*
|
||||||
|
* Copyright 2018, Ola Hughson.
|
||||||
|
* Copyright 2017,2018 Fred N. van Kempen.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with
|
||||||
|
* or without modification, are permitted provided that the
|
||||||
|
* following conditions are met:
|
||||||
|
*
|
||||||
|
* 1. Redistributions of source code must retain the entire
|
||||||
|
* above notice, this list of conditions and the following
|
||||||
|
* disclaimer.
|
||||||
|
*
|
||||||
|
* 2. Redistributions in binary form must reproduce the above
|
||||||
|
* copyright notice, this list of conditions and the
|
||||||
|
* following disclaimer in the documentation and/or other
|
||||||
|
* materials provided with the distribution.
|
||||||
|
*
|
||||||
|
* 3. Neither the name of the copyright holder nor the names
|
||||||
|
* of its contributors may be used to endorse or promote
|
||||||
|
* products derived from this software without specific
|
||||||
|
* prior written permission.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
|
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
|
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
|
||||||
|
* PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||||
|
* HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||||
|
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||||
|
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||||
|
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
|
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Main application strings (2000) - DO NOT TRANSLATE! */
|
||||||
|
#define STR_VERSION 1,0,1
|
||||||
|
#define STR_AUTHOR "Ola Hughson"
|
||||||
|
#define STR_EMAIL "ohughson@varcem@gmail.com"
|
||||||
|
#define STR_NAME "VARCem"
|
||||||
|
#define STR_TITLE "Virtual ARchaeological Computer EMulator"
|
||||||
|
|
||||||
|
|
||||||
|
/* Messagebox classes (2100.) */
|
||||||
|
#define STR_2100 "Błąd"
|
||||||
|
#define STR_2101 "Błąd krytyczny"
|
||||||
|
#define STR_2102 "Błąd konfiguracji"
|
||||||
|
#define STR_2103 "Ostrzeżenie"
|
||||||
|
|
||||||
|
|
||||||
|
/* System errors (2200.) */
|
||||||
|
#define STR_2200 "Nie mogę wczytać Akceleratorów Klawiatury!"
|
||||||
|
#define STR_2201 "Nie mogę odczytać surowych danych wejścia!"
|
||||||
|
#define STR_2202 "PCap jest nieustawiony, gdyż nie można go zinicjalizować"
|
||||||
|
#define STR_2203 "Nie znaleziono urządzeń typu PCap"
|
||||||
|
#define STR_2204 "Invalid PCap device"
|
||||||
|
#define STR_2205 "Nie mogę zinicjalizować %s, sprawdź, czy posiadasz bibliotekę '%s' w systemie lub katalogu programu!"
|
||||||
|
|
||||||
|
|
||||||
|
/* Application error messages (2300.) */
|
||||||
|
#define STR_2300 "Brak pamięci!"
|
||||||
|
#define STR_2301 "Nie znaleziono poprawnych obrazów pamięci ROM!"
|
||||||
|
#define STR_2302 "Nie znaleziono poprawnej konfiguracji.\n\nCzy chcesz otworzyć okno Ustawienia, aby ją utworzyć?"
|
||||||
|
#define STR_2303 "Ustawione %ls:\n\n %s\n\nnie jest dostępne.\n\nCzy chcesz otworzyć okno Ustawienia?"
|
||||||
|
#define STR_2304 "Wybrane urządzenie renderowania:\n\n %s\n\nnie jest dostępne. Użyć domyślnego?"
|
||||||
|
#define STR_2305 "Najpierw musisz zapisać ustawienia!"
|
||||||
|
#define STR_2306 "Nie mogę utworzyć pliku mapy bitowej: %ls"
|
||||||
|
#define STR_2307 "USB nie jest jeszcze wspierane"
|
||||||
|
|
||||||
|
|
||||||
|
/* Application messages (2400.) */
|
||||||
|
#define STR_2400 "Czy na pewno chcesz zapisać te ustawienia?\n\n(Może nastąpić restart...)"
|
||||||
|
#define STR_2401 "Zapisano zmiany, proszę zrestartować emulator!"
|
||||||
|
#define STR_2402 "Żądane urządzenie:\n\n %s\n\njest obecnie w trakcie opracowywania i może spowodować problemy.\n\nCzy na pewno chcesz je uruchomić?"
|
||||||
|
#define STR_2403 "Kliknij aby przechwytywać mysz"
|
||||||
|
#define STR_2404 "Wciśnij F8+F12 aby uwolnić mysz"
|
||||||
|
#define STR_2405 "Wciśnij F8+F12 lub środkowy przycisk myszki aby ją uwolnić"
|
||||||
|
#define STR_2406 "Wciśnij CTRL+ALT+PAGE DOWN aby powrócić do trybu okna"
|
||||||
|
|
||||||
|
|
||||||
|
/* Misc application strings (2500.) */
|
||||||
|
#define STR_2500 "Pliki konfiguracyjne\0*.varc\0Wszystkie pliki\0*.*\0"
|
||||||
|
|
||||||
|
|
||||||
|
/* UI: common elements (3000.) */
|
||||||
|
#define STR_OK "OK"
|
||||||
|
#define STR_CANCEL "Poniechaj"
|
||||||
|
#define STR_YES "Tak"
|
||||||
|
#define STR_NO "Nie"
|
||||||
|
#define STR_CONFIGURE "Skonfiguruj"
|
||||||
|
#define STR_BROWSE "Przeglądaj"
|
||||||
|
|
||||||
|
|
||||||
|
/* UI: dialog shared strings (3100.) */
|
||||||
|
#define STR_NONE "Żadne"
|
||||||
|
#define STR_INTERNAL "Wewnętrzny"
|
||||||
|
#define STR_DISABLED "Niesprawny"
|
||||||
|
#define STR_ENABLED "Sprawna"
|
||||||
|
#define STR_OFF "Wyłącz"
|
||||||
|
#define STR_ON "Włącz"
|
||||||
|
#define STR_UNLOCK "Unlock"
|
||||||
|
#define STR_LOCK "Zabezpiecz"
|
||||||
|
#define STR_TYPE "Typ"
|
||||||
|
#define STR_FILENAME "Nazwa pliku:"
|
||||||
|
#define STR_PROGRESS "Postęp:"
|
||||||
|
#define STR_BUS "Magistrala:"
|
||||||
|
#define STR_CHANNEL "Kanał:"
|
||||||
|
#define STR_ID "ID:"
|
||||||
|
#define STR_LUN "LUN:"
|
||||||
|
#define STR_INV_NAME "Proszę wpisać poprawną nazwę pliku"
|
||||||
|
#define STR_IMG_EXIST "Ten obraz istnieje i będzie nadpisany.\nCzy na pewno tego chcesz?"
|
||||||
|
#define STR_OPEN_READ "Nie mogę otworzyć pliku do odczytu"
|
||||||
|
#define STR_OPEN_WRITE "Nie mogę otworzyć pliku do zapisu"
|
||||||
|
#define STR_DEVCONF_1 "Konfiguracja"
|
||||||
|
#define STR_DEVCONF_2 "Urządzenie:"
|
||||||
|
|
||||||
|
|
||||||
|
/* UI dialog: About (3200.) */
|
||||||
|
#define STR_ABOUT "O VARCem.."
|
||||||
|
#define STR_3201 "Autorzy:"
|
||||||
|
#define STR_3202 "Fred N. van Kempen, Miran Grca, Sarah Walker i inni.\nOparte na wcześniejszych pracacch, takich, jak 86Box, PCem, MAME, DOSbox i Qemu."
|
||||||
|
#define STR_3203 "Wypuszczono pod 3-klauzulową licencją BSD, oraz Ogólną Publiczną Licencją GNU (w wersji 2-giej lub wyższej) dla istniejącego, zaimportowanego kodu pochodzącego z innych projektów."
|
||||||
|
#define STR_3204 "Zobacz LICENSE.txt po więcej informacji."
|
||||||
|
|
||||||
|
/* UI dialog: Localization (3210.) */
|
||||||
|
#define STR_LOCALIZE "Tłumaczenie"
|
||||||
|
#define STR_3211 "Tłumaczenia z angielskiego do tych oto języków przekazane przez:"
|
||||||
|
|
||||||
|
/* UI dialog: Status (3225.) */
|
||||||
|
/* (Unused now) */
|
||||||
|
|
||||||
|
/* UI dialog: Sound Gain (3250.) */
|
||||||
|
#define STR_SNDGAIN "Wzmocnienie dźwięku"
|
||||||
|
#define STR_3251 "Wzmocnienie"
|
||||||
|
|
||||||
|
/* UI dialog: New Image (3275.) */
|
||||||
|
#define STR_NEWIMG "Nowy obraz dyskietki"
|
||||||
|
#define STR_3276 "Rozmiar dysku:"
|
||||||
|
#define STR_3277 "Tryb RPM:"
|
||||||
|
#define STR_3278 "Perfekcyjne RPM"
|
||||||
|
#define STR_3279 "1% poniżej perfekcyjnego RPM"
|
||||||
|
#define STR_3280 "1.5% poniżej perfekcyjnego RPM"
|
||||||
|
#define STR_3281 "2% poniżej perfekcyjnego RPM"
|
||||||
|
#define STR_3282 "160 KB"
|
||||||
|
#define STR_3283 "180 KB"
|
||||||
|
#define STR_3284 "320 KB"
|
||||||
|
#define STR_3285 "360 KB"
|
||||||
|
#define STR_3286 "640 KB"
|
||||||
|
#define STR_3287 "720 KB"
|
||||||
|
#define STR_3288 "1.2 MB"
|
||||||
|
#define STR_3289 "1.25 MB"
|
||||||
|
#define STR_3290 "1.44 MB"
|
||||||
|
#define STR_3291 "DMF (klaster o rozmiarze 1024)"
|
||||||
|
#define STR_3292 "DMF (klaster o rozmiarze 2048)"
|
||||||
|
#define STR_3293 "2.88 MB"
|
||||||
|
#define STR_3294 "ZIP 100MB"
|
||||||
|
#define STR_3295 "ZIP 250MB"
|
||||||
|
|
||||||
|
/* UI dialog: Settings (3300.) */
|
||||||
|
#define STR_SETTINGS "Ustawienia"
|
||||||
|
#define STR_3310 "Typ komputera"
|
||||||
|
#define STR_3311 "Ekran"
|
||||||
|
#define STR_3312 "Urządzenia wejścia"
|
||||||
|
#define STR_3313 "Dźwięk"
|
||||||
|
#define STR_3314 "Sieć"
|
||||||
|
#define STR_3315 "Porty (COM & LPT)"
|
||||||
|
#define STR_3316 "Inne urządzenia peryferyjne"
|
||||||
|
#define STR_3317 "Dyski twarde"
|
||||||
|
#define STR_3318 "Dyski elastyczne"
|
||||||
|
#define STR_3319 "Inne urządzenia wymienne"
|
||||||
|
|
||||||
|
/* UI dialog: Settings (Machine, 3325.) */
|
||||||
|
#define STR_3325 "Typ komputera:"
|
||||||
|
#define STR_3326 "Rodzaj mikroprocesora:"
|
||||||
|
#define STR_3327 "Mikroprocesor:"
|
||||||
|
#define STR_3328 "Czasy oczekiwania:"
|
||||||
|
#define STR_3329 "Pamięć:"
|
||||||
|
#define STR_3330 "MB"
|
||||||
|
#define STR_3331 "Synchronizacja czasu:"
|
||||||
|
#define STR_3332 "Włącz jednostkę zmiennoprzecinkową"
|
||||||
|
#define STR_3333 "Dynamiczny rekompilator"
|
||||||
|
#define STR_3334 "KB"
|
||||||
|
#define STR_3335 "Domyślne"
|
||||||
|
#define STR_3336 "Wybrano (UTC)"
|
||||||
|
|
||||||
|
/* UI dialog: Settings (Video, 3350.) */
|
||||||
|
#define STR_3350 "Wideo:"
|
||||||
|
#define STR_3351 "Akcelerator serii Voodoo"
|
||||||
|
|
||||||
|
/* UI dialog: Settings (Input, 3375.) */
|
||||||
|
#define STR_3375 "Mysz:"
|
||||||
|
#define STR_3376 "Joystick:"
|
||||||
|
#define STR_3377 "1-wszy Joystick"
|
||||||
|
#define STR_3378 "2-gi Joystick"
|
||||||
|
#define STR_3379 "3-ci Joystick"
|
||||||
|
#define STR_3380 "4-ty Joystick"
|
||||||
|
|
||||||
|
/* UI dialog: Settings (Sound, 3400.) */
|
||||||
|
#define STR_3400 "Karta dźwiękowa:"
|
||||||
|
#define STR_3401 "Urządzenie wyjścia MIDI:"
|
||||||
|
#define STR_3402 "Samodzielne MPU-401"
|
||||||
|
#define STR_3403 "Użyj Nuked OPL"
|
||||||
|
#define STR_3404 "Użyj dźwięku FLOAT32"
|
||||||
|
|
||||||
|
/* UI dialog: Settings (Network, 3425.) */
|
||||||
|
#define STR_3425 "Typ sieci:"
|
||||||
|
#define STR_3426 "Urządzenie PCap:"
|
||||||
|
#define STR_3427 "Kontroler sieci:"
|
||||||
|
|
||||||
|
/* UI dialog: Settings (Ports, 3450.) */
|
||||||
|
#define STR_3450 "Game port"
|
||||||
|
#define STR_3451 "1-wszy port równoległy"
|
||||||
|
#define STR_3452 "2-gi port równoległy"
|
||||||
|
#define STR_3453 "3-ci port równoległy"
|
||||||
|
#define STR_3454 "1-wszy port szeregowy"
|
||||||
|
#define STR_3455 "2-gi port szeregowy"
|
||||||
|
|
||||||
|
/* UI dialog: Settings (Other Devices, 3475.) */
|
||||||
|
#define STR_3475 "Kontroler SCSI:"
|
||||||
|
#define STR_3476 "Kontroler dysku twardego:"
|
||||||
|
#define STR_3477 "Trzecie IDE"
|
||||||
|
#define STR_3478 "Czwarte IDE"
|
||||||
|
#define STR_3479 "karta ISABugger"
|
||||||
|
#define STR_3480 "Karta rozszerzenia pamięci na złącze ISA"
|
||||||
|
#define STR_3481 "Karta zegara czasu rzeczywistego na złącze ISA"
|
||||||
|
|
||||||
|
/* UI dialog: Settings (Hard Disks, 3500.) */
|
||||||
|
#define STR_3500 "Dyski twarde:"
|
||||||
|
#define STR_3501 "&Nowy.."
|
||||||
|
#define STR_3502 "&Istniejący.."
|
||||||
|
#define STR_3503 "&Usuń"
|
||||||
|
#define STR_3504 "Magistrala"
|
||||||
|
#define STR_3505 "Pliki"
|
||||||
|
#define STR_3506 "C"
|
||||||
|
#define STR_3507 "H"
|
||||||
|
#define STR_3508 "S"
|
||||||
|
#define STR_3509 "MB"
|
||||||
|
#define STR_3510 "MB (CHS: %u, %u, %u)"
|
||||||
|
#define STR_3511 "Własne..."
|
||||||
|
#define STR_3512 "Własne (duże)..."
|
||||||
|
#define STR_3515 "ST506"
|
||||||
|
#define STR_3516 "ESDI"
|
||||||
|
#define STR_3517 "IDE"
|
||||||
|
#define STR_3518 "SCSI"
|
||||||
|
#define STR_3519 "USB"
|
||||||
|
|
||||||
|
/* UI dialog: Settings (Add Hard Disk, 3525.) */
|
||||||
|
#define STR_3525 "Dodaj dysk twardy"
|
||||||
|
#define STR_3526 "Dodaj nowy dysk twardy"
|
||||||
|
#define STR_3527 "Dodaj istniejący dysk twardy"
|
||||||
|
#define STR_3528 "Cylindry:"
|
||||||
|
#define STR_3529 "Głowice:"
|
||||||
|
#define STR_3530 "Sektory:"
|
||||||
|
#define STR_3531 "Rozmiar (MB):"
|
||||||
|
#define STR_3532 "Typ:"
|
||||||
|
#define STR_3533 "Próbujesz stworzyć obraz dysku w formacie HDi większy, niż 4 GB"
|
||||||
|
#define STR_3534 "Próbuję stworzyć przeogromny obraz dysku twardego"
|
||||||
|
#define STR_3535 "Obrazy typów HDI lub HDX z rozmiarem sektora innym, niż 512 bajtów nie są wspierane"
|
||||||
|
#define STR_3536 "Obrazy dysków twardych\0*.hd?;*.im?;*.vhd\0Wszystkie pliki\0*.*\0"
|
||||||
|
#define STR_3537 "pamiętaj o sformatowaniu i spartycjonowaniu nowego dysku"
|
||||||
|
|
||||||
|
/* UI dialog: Settings (Floppy Drives, 3550.) */
|
||||||
|
#define STR_3550 "Napędy dysków elastycznych:"
|
||||||
|
#define STR_3551 "Typ:"
|
||||||
|
#define STR_3552 "Synchronizacja trybu Turbo"
|
||||||
|
#define STR_3553 "Sprawdź BPB"
|
||||||
|
#define STR_3554 "Turbo"
|
||||||
|
#define STR_3555 "Sprawdź BPB"
|
||||||
|
|
||||||
|
/* UI dialog: Settings (Removable Devices, 3575.) */
|
||||||
|
#define STR_3575 "Napędy CD-ROM:"
|
||||||
|
#define STR_3576 "Prędkość:"
|
||||||
|
#define STR_3577 "Napędy ZIP 150MB:"
|
||||||
|
#define STR_3578 "Napędy ZIP 250MB"
|
||||||
|
#define STR_3579 "Prędkość"
|
||||||
|
#define STR_3580 "ATAPI"
|
||||||
|
#define STR_3581 "SCSI"
|
||||||
|
#define STR_3582 "USB"
|
||||||
|
|
||||||
|
|
||||||
|
/* UI: Status Bar (3900.) */
|
||||||
|
#define STR_3900 "(pusty)"
|
||||||
|
#define STR_3901 "(napęd hosta %c:)"
|
||||||
|
#define STR_3902 " [Zabezpieczony przed zapisem]"
|
||||||
|
#define STR_3903 " [Tylko do odczytu]"
|
||||||
|
#define STR_3904 "&Nowy obraz.."
|
||||||
|
#define STR_3905 "Wczytaj &obraz.."
|
||||||
|
#define STR_3906 "&Wczytaj &ponownie poprzedni obraz"
|
||||||
|
#define STR_3907 "&Wysuń"
|
||||||
|
#define STR_3908 "Powiadom o &zmianie dysku"
|
||||||
|
|
||||||
|
#define STR_3910 "Dyskietka %i (%s): %ls"
|
||||||
|
#define STR_3911 "Wszystkie obrazy\0*.0??;*.1??;*.360;*.720;*.86f;*.bin;*.cq?;*.ddi;*.dsk;*.flp;*.hdm;*.im?;*.json;*.td0;*.*fd?;*.xdf\0Zaawansowane obrazy sektorów\0*.imd;*.json;*.td0\0Podstawowe obrazy sektorów\0*.0??;*.1??;*.360;*.720;*.bin;*.cq?;*.ddi;*.dsk;*.flp;*.hdm;*.im?;*.xdf;*.*fd?\0Flux images\0*.fdi\0Obrazy powierzchni\0*.86f\0Wszystkie pliki\0*.*\0"
|
||||||
|
#define STR_3912 "Wszystkie pliki\0*.86f;*.ddi;*.dsk;*.flp;*.im?;*.*fd?\0Podstawowe obrazy sektorów\0*.ddi;*.dsk;*.flp;*.im?;*.img;*.*fd?\0Obrazy powierzchni\0*.86f\0"
|
||||||
|
#define STR_3913 "Obrazy powierzchni\0*.86f\0"
|
||||||
|
#define STR_3914 "Wyeksportuj do &86F..."
|
||||||
|
|
||||||
|
#define STR_3920 "CD-ROM %i (%ls): %ls"
|
||||||
|
#define STR_3921 "Napęd CD/DVD hosta (%c:)"
|
||||||
|
#define STR_3922 "Obrazy CD-ROM\0*.iso;*.cue\0Wszystkie pliki (*.*)\0*.*\0"
|
||||||
|
#define STR_3923 "Wy&cisz"
|
||||||
|
|
||||||
|
#define STR_3930 "Dysk %i (%ls): %ls"
|
||||||
|
|
||||||
|
#define STR_3950 "ZIP%03i %i (%ls): %ls"
|
||||||
|
#define STR_3951 "Obrazy dyskietek ZIP\0*.im?;*.zdi\0Wszystkie pliki\0*.*\0"
|
||||||
|
#define STR_3952 "Obrazy dyskietek ZIP\0*.im?;*.zdi\0"
|
||||||
|
#define STR_3960 "Sieć (%s)"
|
||||||
|
#define STR_3970 "Dźwięk (%s)"
|
||||||
|
|
||||||
|
|
||||||
|
/* UI menu: Action (4000.) */
|
||||||
|
#define STR_ACTION "&Akcja"
|
||||||
|
#define STR_4001 "&Twardy reset"
|
||||||
|
#define STR_4002 "&Ctrl+Alt+Del"
|
||||||
|
#define STR_4003 "Wyślij Ctrl+Alt+&Esc"
|
||||||
|
#define STR_4004 "Wyślij Ctrl+Alt+&Break"
|
||||||
|
#define STR_4005 "&Pauza"
|
||||||
|
#define STR_4006 "&Wyjdź"
|
||||||
|
|
||||||
|
|
||||||
|
/* UI menu: View (4010.) */
|
||||||
|
#define STR_VIEW "&Podejrzyj"
|
||||||
|
#define STR_4011 "&Skalowalne okno"
|
||||||
|
#define STR_4012 "P&amiętaj rozmiar i pozycję"
|
||||||
|
#define STR_4013 "&Pełny ekran\tCtrl+Alt+PageUP"
|
||||||
|
#define STR_4014 "P&rawy CTRL jest lewym ALT-em"
|
||||||
|
|
||||||
|
/* UI menu: View > Renderer (4020.) */
|
||||||
|
#define STR_4020 "Urzą&dzenie renderowania"
|
||||||
|
|
||||||
|
/* UI menu: View > Window Scale Factor (4030.) */
|
||||||
|
#define STR_4030 "&Poziom wyskalowania ekranu"
|
||||||
|
#define STR_4031 "&0.5x"
|
||||||
|
#define STR_4032 "&1x"
|
||||||
|
#define STR_4033 "1.&5x"
|
||||||
|
#define STR_4034 "&2x"
|
||||||
|
|
||||||
|
/* UI menu: View > Fullscreen Stretch Mode (4040.) */
|
||||||
|
#define STR_4040 "Tryb r&ozciągnięcia na pełnym ekranie"
|
||||||
|
#define STR_4041 "Rozci&ągnięcie na pełen ekran"
|
||||||
|
#define STR_4042 "&4:3"
|
||||||
|
#define STR_4043 "&Kwadratowe piksele"
|
||||||
|
#define STR_4044 "&Skala w liczbach całkowitych"
|
||||||
|
#define STR_4045 "&Utrzymuj rozmiar"
|
||||||
|
|
||||||
|
|
||||||
|
/* UI menu: Display (4050.) */
|
||||||
|
#define STR_DISPLAY "&Ekran"
|
||||||
|
#define STR_4051 "&Obrócony ekran"
|
||||||
|
#define STR_4052 "Włącz &overscan"
|
||||||
|
#define STR_4053 "W&ymuś proporcje obrazu 4:3"
|
||||||
|
#define STR_4054 "Zmień &kontrast monitora monochromatycznego"
|
||||||
|
|
||||||
|
/* UI menu: Display > Display Type (4060.) */
|
||||||
|
#define STR_DISPTYPE "&Typ ekranu"
|
||||||
|
#define STR_4061 "Monitor &kolorowy RGB"
|
||||||
|
#define STR_4062 "Monitor w &odcieniach szarości"
|
||||||
|
#define STR_4063 "Monitor &bursztynowy"
|
||||||
|
#define STR_4064 "Monitor &zielony"
|
||||||
|
#define STR_4065 "Monitor &biały"
|
||||||
|
|
||||||
|
/* UI menu: Display > Grayscale Conversion Type (4070.) */
|
||||||
|
#define STR_GRAYSCALE "Typ konwersji w odcienie sz&arości"
|
||||||
|
#define STR_4071 "BT&601 (NTSC/PAL)"
|
||||||
|
#define STR_4072 "BT&709 (HDTV)"
|
||||||
|
#define STR_4073 "&Przeciętny"
|
||||||
|
|
||||||
|
|
||||||
|
/* UI menu: Tools (4080.) */
|
||||||
|
#define STR_TOOLS "&Narzędzia"
|
||||||
|
#define STR_4081 "&Ustawienia"
|
||||||
|
#define STR_4082 "&Język"
|
||||||
|
#define STR_4083 "&Logowanie"
|
||||||
|
#define STR_4084 "Punkt przerwania logowania"
|
||||||
|
#define STR_4085 "Przełącz logowanie %s"
|
||||||
|
#define STR_4086 "Wczytaj &konfigurację"
|
||||||
|
#define STR_4087 "&Zapisz konfigurację"
|
||||||
|
#define STR_4088 "Zrzut &ekranu"
|
||||||
|
|
||||||
|
|
||||||
|
/* UI menu: Help (4090.) */
|
||||||
|
#define STR_HELP "&Pomoc"
|
||||||
|
#define STR_4091 "&O VARCem"
|
||||||
|
|
||||||
|
|
||||||
|
/* End of file. */
|
||||||
@@ -8,7 +8,7 @@
|
|||||||
#
|
#
|
||||||
# Supported Languages database.
|
# Supported Languages database.
|
||||||
#
|
#
|
||||||
# Version: @(#)VARCem.lang 1.0.4 2018/09/26
|
# Version: @(#)VARCem.lang 1.0.5 2018/10/27
|
||||||
#
|
#
|
||||||
# Author: Fred N. van Kempen, <decwiz@yahoo.com>
|
# Author: Fred N. van Kempen, <decwiz@yahoo.com>
|
||||||
#
|
#
|
||||||
@@ -57,6 +57,7 @@ KR,0412,LANG_KOREAN,SUBLANG_KOREAN,Korean
|
|||||||
KZ,043f,LANG_KAZAK,SUBLANG_KAZAK_KAZAKHSTAN,Kazakh
|
KZ,043f,LANG_KAZAK,SUBLANG_KAZAK_KAZAKHSTAN,Kazakh
|
||||||
LT,0427,LANG_LITHUANIAN,SUBLANG_LITHUANIAN_LITHUANIA,Lithuanian
|
LT,0427,LANG_LITHUANIAN,SUBLANG_LITHUANIAN_LITHUANIA,Lithuanian
|
||||||
NO,0414,LANG_NORWEGIAN,SUBLANG_NORWEGIAN_BOKMAL,Norwegian
|
NO,0414,LANG_NORWEGIAN,SUBLANG_NORWEGIAN_BOKMAL,Norwegian
|
||||||
|
PL,0415,LANG_POLISH,SUBLANG_POLISH_POLAND,Polish
|
||||||
RU,0419,LANG_RUSSIAN,SUBLANG_RUSSIAN_RUSSIA,Russian
|
RU,0419,LANG_RUSSIAN,SUBLANG_RUSSIAN_RUSSIA,Russian
|
||||||
SL,0424,LANG_SLOVENIAN,SUBLANG_SLOVENIAN_SLOVENIA,Slovenian
|
SL,0424,LANG_SLOVENIAN,SUBLANG_SLOVENIAN_SLOVENIA,Slovenian
|
||||||
UA,0422,LANG_UKRAINIAN,SUBLANG_UKRAINIAN_UKRAINE,Ukrainian
|
UA,0422,LANG_UKRAINIAN,SUBLANG_UKRAINIAN_UKRAINE,Ukrainian
|
||||||
|
|||||||
Reference in New Issue
Block a user