mirror of
https://github.com/david-schmidt/gsport.git
synced 2024-06-02 03:41:30 +00:00
Replacing file descriptor read/write calls with FILE fread/fwrite calls for a little more standard portability.
This commit is contained in:
parent
5f858c9e94
commit
13183e4ce7
119
src/config.c
119
src/config.c
|
@ -707,7 +707,7 @@ config_load_roms()
|
||||||
int more_than_8mb;
|
int more_than_8mb;
|
||||||
int changed_rom;
|
int changed_rom;
|
||||||
int len;
|
int len;
|
||||||
int fd;
|
FILE *file;
|
||||||
int ret;
|
int ret;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
@ -724,18 +724,18 @@ config_load_roms()
|
||||||
g_config_control_panel = 1;
|
g_config_control_panel = 1;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
fd = open(&g_cfg_tmp_path[0], O_RDONLY | O_BINARY);
|
file = fopen(&g_cfg_tmp_path[0], "rb");
|
||||||
if(fd < 0) {
|
if(!file) {
|
||||||
fatal_printf("Open ROM file %s failed:%d, errno:%d\n",
|
fatal_printf("Open ROM file %s failed; errno:%d\n",
|
||||||
&g_cfg_tmp_path[0], fd, errno);
|
&g_cfg_tmp_path[0], errno);
|
||||||
g_config_control_panel = 1;
|
g_config_control_panel = 1;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = fstat(fd, &stat_buf);
|
ret = stat(&g_cfg_tmp_path[0], &stat_buf);
|
||||||
if(ret != 0) {
|
if(ret != 0) {
|
||||||
fatal_printf("fstat returned %d on fd %d, errno: %d\n",
|
fatal_printf("stat returned %d; errno: %d\n",
|
||||||
ret, fd, errno);
|
ret, errno);
|
||||||
g_config_control_panel = 1;
|
g_config_control_panel = 1;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -746,11 +746,11 @@ config_load_roms()
|
||||||
g_mem_size_base = 256*1024;
|
g_mem_size_base = 256*1024;
|
||||||
memset(&g_rom_fc_ff_ptr[0], 0, 2*65536);
|
memset(&g_rom_fc_ff_ptr[0], 0, 2*65536);
|
||||||
/* Clear banks fc and fd to 0 */
|
/* Clear banks fc and fd to 0 */
|
||||||
ret = read(fd, &g_rom_fc_ff_ptr[2*65536], len);
|
ret = fread(&g_rom_fc_ff_ptr[2*65536], 1, len, file);
|
||||||
} else if(len == 256*1024) {
|
} else if(len == 256*1024) {
|
||||||
g_rom_version = 3;
|
g_rom_version = 3;
|
||||||
g_mem_size_base = 1024*1024;
|
g_mem_size_base = 1024*1024;
|
||||||
ret = read(fd, &g_rom_fc_ff_ptr[0], len);
|
ret = fread(&g_rom_fc_ff_ptr[0], 1, len, file);
|
||||||
} else {
|
} else {
|
||||||
fatal_printf("The ROM size should be 128K or 256K, this file "
|
fatal_printf("The ROM size should be 128K or 256K, this file "
|
||||||
"is %d bytes\n", len);
|
"is %d bytes\n", len);
|
||||||
|
@ -764,7 +764,7 @@ config_load_roms()
|
||||||
g_config_control_panel = 1;
|
g_config_control_panel = 1;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
close(fd);
|
fclose(file);
|
||||||
|
|
||||||
memset(&g_rom_cards_ptr[0], 0, 256*16);
|
memset(&g_rom_cards_ptr[0], 0, 256*16);
|
||||||
|
|
||||||
|
@ -795,16 +795,15 @@ config_load_roms()
|
||||||
names_ptr);
|
names_ptr);
|
||||||
|
|
||||||
if(g_cfg_tmp_path[0] != 0) {
|
if(g_cfg_tmp_path[0] != 0) {
|
||||||
fd = open(&(g_cfg_tmp_path[0]), O_RDONLY | O_BINARY);
|
file = fopen(&(g_cfg_tmp_path[0]), "rb");
|
||||||
if(fd < 0) {
|
if(!file) {
|
||||||
fatal_printf("Open card ROM file %s failed: %d "
|
fatal_printf("Open card ROM file %s failed; errno:%d\n",
|
||||||
"err:%d\n", &g_cfg_tmp_path[0], fd,
|
&g_cfg_tmp_path[0], errno);
|
||||||
errno);
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
len = 256;
|
len = 256;
|
||||||
ret = read(fd, &g_rom_cards_ptr[i*0x100], len);
|
ret = fread(&g_rom_cards_ptr[i*0x100], 1, len, file);
|
||||||
|
|
||||||
if(ret != len) {
|
if(ret != len) {
|
||||||
fatal_printf("While reading card ROM %s, file "
|
fatal_printf("While reading card ROM %s, file "
|
||||||
|
@ -812,8 +811,7 @@ config_load_roms()
|
||||||
"read %d bytes\n", errno, len, ret);
|
"read %d bytes\n", errno, len, ret);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
close(fd);
|
fclose(file);
|
||||||
fd = 0;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1105,7 +1103,7 @@ config_generate_config_kegs_name(char *outstr, int maxlen, Disk *dsk,
|
||||||
|
|
||||||
str = outstr;
|
str = outstr;
|
||||||
|
|
||||||
if(with_extras && dsk->fd < 0) {
|
if(with_extras && (!dsk->file)) {
|
||||||
snprintf(str, maxlen - (str - outstr), "#");
|
snprintf(str, maxlen - (str - outstr), "#");
|
||||||
str = &outstr[strlen(outstr)];
|
str = &outstr[strlen(outstr)];
|
||||||
}
|
}
|
||||||
|
@ -1265,7 +1263,7 @@ insert_disk(int slot, int drive, const char *name, int ejected, int force_size,
|
||||||
dsk->just_ejected = 0;
|
dsk->just_ejected = 0;
|
||||||
dsk->force_size = force_size;
|
dsk->force_size = force_size;
|
||||||
|
|
||||||
if(dsk->fd >= 0) {
|
if(!dsk->file) {
|
||||||
eject_disk(dsk);
|
eject_disk(dsk);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1304,11 +1302,11 @@ insert_disk(int slot, int drive, const char *name, int ejected, int force_size,
|
||||||
|
|
||||||
if(ejected) {
|
if(ejected) {
|
||||||
/* just get out of here */
|
/* just get out of here */
|
||||||
dsk->fd = -1;
|
dsk->file = 0;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
dsk->fd = -1;
|
dsk->file = 0;
|
||||||
can_write = 1;
|
can_write = 1;
|
||||||
|
|
||||||
if((name_len > 3) && (strcmp(&name_ptr[name_len - 3], ".gz") == 0)) {
|
if((name_len > 3) && (strcmp(&name_ptr[name_len - 3], ".gz") == 0)) {
|
||||||
|
@ -1334,9 +1332,8 @@ insert_disk(int slot, int drive, const char *name, int ejected, int force_size,
|
||||||
ret = system(system_str);
|
ret = system(system_str);
|
||||||
if(ret == 0) {
|
if(ret == 0) {
|
||||||
/* successfully ran */
|
/* successfully ran */
|
||||||
dsk->fd = open(uncomp_ptr, O_RDONLY | O_BINARY, 0x1b6);
|
dsk->file = fopen(uncomp_ptr, "rb");
|
||||||
iwm_printf("Opening .gz file %s is fd: %d\n",
|
iwm_printf("Opening .gz file %s\n", uncomp_ptr);
|
||||||
uncomp_ptr, dsk->fd);
|
|
||||||
|
|
||||||
/* and, unlink the temporary file */
|
/* and, unlink the temporary file */
|
||||||
(void)unlink(uncomp_ptr);
|
(void)unlink(uncomp_ptr);
|
||||||
|
@ -1348,20 +1345,18 @@ insert_disk(int slot, int drive, const char *name, int ejected, int force_size,
|
||||||
name_len -= 3;
|
name_len -= 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(dsk->fd < 0 && can_write) {
|
if((!dsk->file) && can_write) {
|
||||||
dsk->fd = open(name_ptr, O_RDWR | O_BINARY, 0x1b6);
|
dsk->file = fopen(name_ptr, "rb+");
|
||||||
}
|
}
|
||||||
|
|
||||||
if(dsk->fd < 0 && can_write) {
|
if((!dsk->file) && can_write) {
|
||||||
printf("Trying to open %s read-only, errno: %d\n", name_ptr,
|
printf("Trying to open %s read-only, errno: %d\n", name_ptr,
|
||||||
errno);
|
errno);
|
||||||
dsk->fd = open(name_ptr, O_RDONLY | O_BINARY, 0x1b6);
|
dsk->file = fopen(name_ptr, "rb");
|
||||||
can_write = 0;
|
can_write = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
iwm_printf("open returned: %d\n", dsk->fd);
|
if(!dsk->file) {
|
||||||
|
|
||||||
if(dsk->fd < 0) {
|
|
||||||
fatal_printf("Disk image %s does not exist!\n", name_ptr);
|
fatal_printf("Disk image %s does not exist!\n", name_ptr);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -1379,10 +1374,10 @@ insert_disk(int slot, int drive, const char *name, int ejected, int force_size,
|
||||||
dsk->image_start = 0;
|
dsk->image_start = 0;
|
||||||
|
|
||||||
/* See if it is in 2IMG format */
|
/* See if it is in 2IMG format */
|
||||||
ret = read(dsk->fd, (char *)&buf_2img[0], 512);
|
ret = fread((char *)&buf_2img[0], 1, 512, dsk->file);
|
||||||
size = force_size;
|
size = force_size;
|
||||||
if(size <= 0) {
|
if(size <= 0) {
|
||||||
size = cfg_get_fd_size(dsk->fd);
|
size = cfg_get_fd_size(name_ptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Try to guess that there is a Mac Binary header of 128 bytes */
|
/* Try to guess that there is a Mac Binary header of 128 bytes */
|
||||||
|
@ -1483,14 +1478,14 @@ insert_disk(int slot, int drive, const char *name, int ejected, int force_size,
|
||||||
g_highest_smartport_unit);
|
g_highest_smartport_unit);
|
||||||
|
|
||||||
if(partition_name != 0 || part_num >= 0) {
|
if(partition_name != 0 || part_num >= 0) {
|
||||||
ret = cfg_partition_find_by_name_or_num(dsk->fd,
|
ret = cfg_partition_find_by_name_or_num(dsk->file,
|
||||||
partition_name, part_num, dsk);
|
partition_name, part_num, dsk);
|
||||||
printf("partition %s (num %d) mounted, wr_prot: %d\n",
|
printf("partition %s (num %d) mounted, wr_prot: %d\n",
|
||||||
partition_name, part_num, dsk->write_prot);
|
partition_name, part_num, dsk->write_prot);
|
||||||
|
|
||||||
if(ret < 0) {
|
if(ret < 0) {
|
||||||
close(dsk->fd);
|
fclose(dsk->file);
|
||||||
dsk->fd = -1;
|
dsk->file = 0;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1546,7 +1541,7 @@ void
|
||||||
eject_named_disk(Disk *dsk, const char *name, const char *partition_name)
|
eject_named_disk(Disk *dsk, const char *name, const char *partition_name)
|
||||||
{
|
{
|
||||||
|
|
||||||
if(dsk->fd < 0) {
|
if(!dsk->file) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1581,7 +1576,7 @@ eject_disk(Disk *dsk)
|
||||||
int motor_on;
|
int motor_on;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
if(dsk->fd < 0) {
|
if(!dsk->file) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1616,7 +1611,7 @@ eject_disk(Disk *dsk)
|
||||||
dsk->trks = 0;
|
dsk->trks = 0;
|
||||||
|
|
||||||
/* close file, clean up dsk struct */
|
/* close file, clean up dsk struct */
|
||||||
close(dsk->fd);
|
fclose(dsk->file);
|
||||||
|
|
||||||
dsk->image_start = 0;
|
dsk->image_start = 0;
|
||||||
dsk->image_size = 0;
|
dsk->image_size = 0;
|
||||||
|
@ -1624,22 +1619,22 @@ eject_disk(Disk *dsk)
|
||||||
dsk->disk_dirty = 0;
|
dsk->disk_dirty = 0;
|
||||||
dsk->write_through_to_unix = 0;
|
dsk->write_through_to_unix = 0;
|
||||||
dsk->write_prot = 1;
|
dsk->write_prot = 1;
|
||||||
dsk->fd = -1;
|
dsk->file = 0;
|
||||||
dsk->just_ejected = 1;
|
dsk->just_ejected = 1;
|
||||||
|
|
||||||
/* Leave name_ptr valid */
|
/* Leave name_ptr valid */
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
cfg_get_fd_size(int fd)
|
cfg_get_fd_size(char *filename)
|
||||||
{
|
{
|
||||||
struct stat stat_buf;
|
struct stat stat_buf;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
ret = fstat(fd, &stat_buf);
|
ret = stat(filename, &stat_buf);
|
||||||
if(ret != 0) {
|
if(ret != 0) {
|
||||||
fprintf(stderr,"fstat returned %d on fd %d, errno: %d\n",
|
fprintf(stderr,"stat %s returned errno: %d\n",
|
||||||
ret, fd, errno);
|
filename, errno);
|
||||||
stat_buf.st_size = 0;
|
stat_buf.st_size = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1647,18 +1642,18 @@ cfg_get_fd_size(int fd)
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
cfg_partition_read_block(int fd, void *buf, int blk, int blk_size)
|
cfg_partition_read_block(FILE *file, void *buf, int blk, int blk_size)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
ret = lseek(fd, blk * blk_size, SEEK_SET);
|
ret = fseek(file, blk * blk_size, SEEK_SET);
|
||||||
if(ret != blk * blk_size) {
|
if(ret != 0) {
|
||||||
printf("lseek: %08x, wanted: %08x, errno: %d\n", ret,
|
printf("fseek: wanted: %08x, errno: %d\n",
|
||||||
blk * blk_size, errno);
|
blk * blk_size, errno);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = read(fd, (char *)buf, blk_size);
|
ret = fread((char *)buf, 1, blk_size, file);
|
||||||
if(ret != blk_size) {
|
if(ret != blk_size) {
|
||||||
printf("ret: %08x, wanted %08x, errno: %d\n", ret, blk_size,
|
printf("ret: %08x, wanted %08x, errno: %d\n", ret, blk_size,
|
||||||
errno);
|
errno);
|
||||||
|
@ -1668,7 +1663,7 @@ cfg_partition_read_block(int fd, void *buf, int blk, int blk_size)
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
cfg_partition_find_by_name_or_num(int fd, const char *partnamestr, int part_num,
|
cfg_partition_find_by_name_or_num(FILE *file, const char *partnamestr, int part_num,
|
||||||
Disk *dsk)
|
Disk *dsk)
|
||||||
{
|
{
|
||||||
Cfg_dirent *direntptr;
|
Cfg_dirent *direntptr;
|
||||||
|
@ -1676,7 +1671,7 @@ cfg_partition_find_by_name_or_num(int fd, const char *partnamestr, int part_num,
|
||||||
int num_parts;
|
int num_parts;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
num_parts = cfg_partition_make_list(fd);
|
num_parts = cfg_partition_make_list(dsk->name_ptr, file);
|
||||||
|
|
||||||
if(num_parts <= 0) {
|
if(num_parts <= 0) {
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -1711,7 +1706,7 @@ cfg_partition_find_by_name_or_num(int fd, const char *partnamestr, int part_num,
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
cfg_partition_make_list(int fd)
|
cfg_partition_make_list(char *filename, FILE *file)
|
||||||
{
|
{
|
||||||
Driver_desc *driver_desc_ptr;
|
Driver_desc *driver_desc_ptr;
|
||||||
Part_map *part_map_ptr;
|
Part_map *part_map_ptr;
|
||||||
|
@ -1734,7 +1729,7 @@ cfg_partition_make_list(int fd)
|
||||||
|
|
||||||
blk_bufptr = (word32 *)malloc(MAX_PARTITION_BLK_SIZE);
|
blk_bufptr = (word32 *)malloc(MAX_PARTITION_BLK_SIZE);
|
||||||
|
|
||||||
cfg_partition_read_block(fd, blk_bufptr, 0, block_size);
|
cfg_partition_read_block(file, blk_bufptr, 0, block_size);
|
||||||
|
|
||||||
driver_desc_ptr = (Driver_desc *)blk_bufptr;
|
driver_desc_ptr = (Driver_desc *)blk_bufptr;
|
||||||
sig = GET_BE_WORD16(driver_desc_ptr->sig);
|
sig = GET_BE_WORD16(driver_desc_ptr->sig);
|
||||||
|
@ -1751,13 +1746,13 @@ cfg_partition_make_list(int fd)
|
||||||
|
|
||||||
map_blks = 1;
|
map_blks = 1;
|
||||||
cur_blk = 0;
|
cur_blk = 0;
|
||||||
size = cfg_get_fd_size(fd);
|
size = cfg_get_fd_size(filename);
|
||||||
cfg_file_add_dirent(&g_cfg_partitionlist, "None - Whole image",
|
cfg_file_add_dirent(&g_cfg_partitionlist, "None - Whole image",
|
||||||
is_dir=0, size, 0, -1);
|
is_dir=0, size, 0, -1);
|
||||||
|
|
||||||
while(cur_blk < map_blks) {
|
while(cur_blk < map_blks) {
|
||||||
cur_blk++;
|
cur_blk++;
|
||||||
cfg_partition_read_block(fd, blk_bufptr, cur_blk, block_size);
|
cfg_partition_read_block(file, blk_bufptr, cur_blk, block_size);
|
||||||
part_map_ptr = (Part_map *)blk_bufptr;
|
part_map_ptr = (Part_map *)blk_bufptr;
|
||||||
sig = GET_BE_WORD16(part_map_ptr->sig);
|
sig = GET_BE_WORD16(part_map_ptr->sig);
|
||||||
if(cur_blk <= 1) {
|
if(cur_blk <= 1) {
|
||||||
|
@ -1809,16 +1804,16 @@ int
|
||||||
cfg_maybe_insert_disk(int slot, int drive, const char *namestr)
|
cfg_maybe_insert_disk(int slot, int drive, const char *namestr)
|
||||||
{
|
{
|
||||||
int num_parts;
|
int num_parts;
|
||||||
int fd;
|
FILE *file;
|
||||||
|
|
||||||
fd = open(namestr, O_RDONLY | O_BINARY, 0x1b6);
|
file = fopen(namestr, "rb");
|
||||||
if(fd < 0) {
|
if(!file) {
|
||||||
fatal_printf("Cannot open disk image: %s\n", namestr);
|
fatal_printf("Cannot open disk image: %s\n", namestr);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
num_parts = cfg_partition_make_list(fd);
|
num_parts = cfg_partition_make_list((char*)namestr, file);
|
||||||
close(fd);
|
fclose(file);
|
||||||
|
|
||||||
if(num_parts > 0) {
|
if(num_parts > 0) {
|
||||||
printf("Choose a partition\n");
|
printf("Choose a partition\n");
|
||||||
|
|
|
@ -877,12 +877,9 @@ get_remaining_operands(word32 addr, word32 opcode, word32 psr, Fplus *fplus_ptr)
|
||||||
check_breakpoints(addr); \
|
check_breakpoints(addr); \
|
||||||
} \
|
} \
|
||||||
if((addr & 0xfffff0) == 0x00c700) { \
|
if((addr & 0xfffff0) == 0x00c700) { \
|
||||||
/* Removing this as it causes non-standard \
|
|
||||||
booting behavior... \
|
|
||||||
if(addr == 0xc700) { \
|
if(addr == 0xc700) { \
|
||||||
FINISH(RET_C700, 0); \
|
FINISH(RET_C700, 0); \
|
||||||
} else \
|
} else \
|
||||||
*/ \
|
|
||||||
if(addr == 0xc70a) { \
|
if(addr == 0xc70a) { \
|
||||||
FINISH(RET_C70A, 0); \
|
FINISH(RET_C70A, 0); \
|
||||||
} else if(addr == 0xc70d) { \
|
} else if(addr == 0xc70d) { \
|
||||||
|
|
26
src/iwm.c
26
src/iwm.c
|
@ -101,7 +101,7 @@ iwm_init_drive(Disk *dsk, int smartport, int drive, int disk_525)
|
||||||
dsk->name_ptr = 0;
|
dsk->name_ptr = 0;
|
||||||
dsk->partition_name = 0;
|
dsk->partition_name = 0;
|
||||||
dsk->partition_num = -1;
|
dsk->partition_num = -1;
|
||||||
dsk->fd = -1;
|
dsk->file = 0;
|
||||||
dsk->force_size = 0;
|
dsk->force_size = 0;
|
||||||
dsk->image_start = 0;
|
dsk->image_start = 0;
|
||||||
dsk->image_size = 0;
|
dsk->image_size = 0;
|
||||||
|
@ -284,14 +284,14 @@ iwm_flush_disk_to_unix(Disk *dsk)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = lseek(dsk->fd, unix_pos, SEEK_SET);
|
ret = fseek(dsk->file, unix_pos, SEEK_SET);
|
||||||
if(ret != unix_pos) {
|
if(ret != 0) {
|
||||||
halt_printf("lseek 525: %08x, errno: %d\n", ret, errno);
|
halt_printf("fseek 525: errno: %d\n", errno);
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = write(dsk->fd, &(buffer[0]), unix_len);
|
ret = fwrite(&(buffer[0]), 1, unix_len, dsk->file);
|
||||||
if(ret != unix_len) {
|
if(ret != unix_len) {
|
||||||
printf("write: %08x, errno:%d, qtrk: %02x, disk: %s\n",
|
printf("fwrite: %08x, errno:%d, qtrk: %02x, disk: %s\n",
|
||||||
ret, errno, j, dsk->name_ptr);
|
ret, errno, j, dsk->name_ptr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -356,8 +356,8 @@ iwm_show_stats()
|
||||||
iwm.drive_select, g_c031_disk35,
|
iwm.drive_select, g_c031_disk35,
|
||||||
iwm.iwm_phase[0], iwm.iwm_phase[1], iwm.iwm_phase[2],
|
iwm.iwm_phase[0], iwm.iwm_phase[1], iwm.iwm_phase[2],
|
||||||
iwm.iwm_phase[3]);
|
iwm.iwm_phase[3]);
|
||||||
printf("iwm.drive525[0].fd: %d, [1].fd: %d\n",
|
printf("iwm.drive525[0].file: %p, [1].file: %p\n",
|
||||||
iwm.drive525[0].fd, iwm.drive525[1].fd);
|
iwm.drive525[0].file, iwm.drive525[1].file);
|
||||||
printf("iwm.drive525[0].last_phase: %d, [1].last_phase: %d\n",
|
printf("iwm.drive525[0].last_phase: %d, [1].last_phase: %d\n",
|
||||||
iwm.drive525[0].last_phase, iwm.drive525[1].last_phase);
|
iwm.drive525[0].last_phase, iwm.drive525[1].last_phase);
|
||||||
}
|
}
|
||||||
|
@ -1730,14 +1730,14 @@ disk_unix_to_nib(Disk *dsk, int qtr_track, int unix_pos, int unix_len,
|
||||||
}
|
}
|
||||||
|
|
||||||
if(unix_pos >= 0) {
|
if(unix_pos >= 0) {
|
||||||
ret = lseek(dsk->fd, unix_pos, SEEK_SET);
|
ret = fseek(dsk->file, unix_pos, SEEK_SET);
|
||||||
if(ret != unix_pos) {
|
if(ret != 0) {
|
||||||
printf("lseek of disk %s len 0x%x ret: %d, errno: %d\n",
|
printf("fseek of disk %s len 0x%x errno: %d\n",
|
||||||
dsk->name_ptr, unix_pos, ret, errno);
|
dsk->name_ptr, unix_pos, errno);
|
||||||
must_clear_track = 1;
|
must_clear_track = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
len = read(dsk->fd, track_buf, unix_len);
|
len = fread(track_buf, 1, unix_len, dsk->file);
|
||||||
if(len != unix_len) {
|
if(len != unix_len) {
|
||||||
printf("read of disk %s q_trk %d ret: %d, errno: %d\n",
|
printf("read of disk %s q_trk %d ret: %d, errno: %d\n",
|
||||||
dsk->name_ptr, qtr_track, ret, errno);
|
dsk->name_ptr, qtr_track, ret, errno);
|
||||||
|
|
|
@ -19,10 +19,6 @@
|
||||||
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef INCLUDE_RCSID_C
|
|
||||||
const char rcsid_iwm_h[] = "@(#)$KmKId: iwm.h,v 1.14 2004-10-20 17:29:38-04 kentd Exp $";
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define MAX_TRACKS (2*80)
|
#define MAX_TRACKS (2*80)
|
||||||
#define MAX_C7_DISKS 32
|
#define MAX_C7_DISKS 32
|
||||||
|
|
||||||
|
@ -50,7 +46,7 @@ struct _Disk {
|
||||||
char *name_ptr;
|
char *name_ptr;
|
||||||
char *partition_name;
|
char *partition_name;
|
||||||
int partition_num;
|
int partition_num;
|
||||||
int fd;
|
FILE *file;
|
||||||
int force_size;
|
int force_size;
|
||||||
int image_start;
|
int image_start;
|
||||||
int image_size;
|
int image_size;
|
||||||
|
|
|
@ -19,10 +19,6 @@
|
||||||
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef INCLUDE_IWM_RCSID_C
|
|
||||||
const char rcsdif_iwm_35_525_h[] = "@(#)$KmKId: iwm_35_525.h,v 1.14 2004-12-01 19:45:02-05 kentd Exp $";
|
|
||||||
#endif
|
|
||||||
|
|
||||||
int
|
int
|
||||||
IWM_READ_ROUT (Disk *dsk, int fast_disk_emul, double dcycs)
|
IWM_READ_ROUT (Disk *dsk, int fast_disk_emul, double dcycs)
|
||||||
{
|
{
|
||||||
|
@ -238,9 +234,9 @@ IWM_WRITE_ROUT (Disk *dsk, word32 val, int fast_disk_emul, double dcycs)
|
||||||
int sdiff;
|
int sdiff;
|
||||||
int prev_bits;
|
int prev_bits;
|
||||||
|
|
||||||
if(dsk->fd < 0 || dsk->trks == 0) {
|
if((!dsk->file) || dsk->trks == 0) {
|
||||||
halt_printf("Tried to write to type: %d, drive: %d, fd: %d!\n",
|
halt_printf("Tried to write to type: %d, drive: %d!\n",
|
||||||
IWM_DISK_525, dsk->drive, dsk->fd, dsk->trks);
|
IWM_DISK_525, dsk->drive, dsk->trks);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
12
src/protos.h
12
src/protos.h
|
@ -19,10 +19,6 @@
|
||||||
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef INCLUDE_RCSID_C
|
|
||||||
const char rcsid_protos_h[] = "@(#)$KmKId: protos.h,v 1.188 2004-12-06 19:08:34-05 kentd Exp $";
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* xdriver.c and macdriver.c and windriver.c */
|
/* xdriver.c and macdriver.c and windriver.c */
|
||||||
int x_show_alert(int is_fatal, const char *str);
|
int x_show_alert(int is_fatal, const char *str);
|
||||||
int win_nonblock_read_stdin(int fd, char *bufptr, int len);
|
int win_nonblock_read_stdin(int fd, char *bufptr, int len);
|
||||||
|
@ -174,12 +170,12 @@ void insert_disk(int slot, int drive, const char *name, int ejected, int force_s
|
||||||
void eject_named_disk(Disk *dsk, const char *name, const char *partition_name);
|
void eject_named_disk(Disk *dsk, const char *name, const char *partition_name);
|
||||||
void eject_disk_by_num(int slot, int drive);
|
void eject_disk_by_num(int slot, int drive);
|
||||||
void eject_disk(Disk *dsk);
|
void eject_disk(Disk *dsk);
|
||||||
int cfg_get_fd_size(int fd);
|
int cfg_get_fd_size(char *filename);
|
||||||
int cfg_partition_read_block(int fd, void *buf, int blk, int blk_size);
|
int cfg_partition_read_block(FILE *file, void *buf, int blk, int blk_size);
|
||||||
int cfg_partition_find_by_name_or_num(int fd, const char *partnamestr, int part_num, Disk *dsk);
|
int cfg_partition_find_by_name_or_num(FILE *file, const char *partnamestr, int part_num, Disk *dsk);
|
||||||
int cfg_partition_make_list(int fd);
|
|
||||||
int cfg_maybe_insert_disk(int slot, int drive, const char *namestr);
|
int cfg_maybe_insert_disk(int slot, int drive, const char *namestr);
|
||||||
int cfg_stat(char *path, struct stat *sb);
|
int cfg_stat(char *path, struct stat *sb);
|
||||||
|
int cfg_partition_make_list(char *filename, FILE *file);
|
||||||
void cfg_htab_vtab(int x, int y);
|
void cfg_htab_vtab(int x, int y);
|
||||||
void cfg_home(void);
|
void cfg_home(void);
|
||||||
void cfg_cleol(void);
|
void cfg_cleol(void);
|
||||||
|
|
|
@ -218,7 +218,7 @@ do_c70d(word32 arg0)
|
||||||
return;
|
return;
|
||||||
} else if(unit > 0 && status_code == 0) {
|
} else if(unit > 0 && status_code == 0) {
|
||||||
/* status for unit x */
|
/* status for unit x */
|
||||||
if(unit > MAX_C7_DISKS || iwm.smartport[unit-1].fd < 0){
|
if(unit > MAX_C7_DISKS || (!iwm.smartport[unit-1].file)){
|
||||||
stat_val = 0x80;
|
stat_val = 0x80;
|
||||||
size = 0;
|
size = 0;
|
||||||
} else {
|
} else {
|
||||||
|
@ -242,7 +242,7 @@ do_c70d(word32 arg0)
|
||||||
disk_printf("just finished unit %d, stat 0\n", unit);
|
disk_printf("just finished unit %d, stat 0\n", unit);
|
||||||
return;
|
return;
|
||||||
} else if(status_code == 3) {
|
} else if(status_code == 3) {
|
||||||
if(unit > MAX_C7_DISKS || iwm.smartport[unit-1].fd < 0){
|
if(unit > MAX_C7_DISKS || (!iwm.smartport[unit-1].file)){
|
||||||
stat_val = 0x80;
|
stat_val = 0x80;
|
||||||
size = 0;
|
size = 0;
|
||||||
} else {
|
} else {
|
||||||
|
@ -535,8 +535,8 @@ do_read_c7(int unit_num, word32 buf, int blk)
|
||||||
register word32 start_time;
|
register word32 start_time;
|
||||||
register word32 end_time;
|
register word32 end_time;
|
||||||
word32 val;
|
word32 val;
|
||||||
|
FILE *file;
|
||||||
int len;
|
int len;
|
||||||
int fd;
|
|
||||||
int image_start;
|
int image_start;
|
||||||
int image_size;
|
int image_size;
|
||||||
int ret;
|
int ret;
|
||||||
|
@ -548,11 +548,11 @@ do_read_c7(int unit_num, word32 buf, int blk)
|
||||||
return 0x28;
|
return 0x28;
|
||||||
}
|
}
|
||||||
|
|
||||||
fd = iwm.smartport[unit_num].fd;
|
file = iwm.smartport[unit_num].file;
|
||||||
image_start = iwm.smartport[unit_num].image_start;
|
image_start = iwm.smartport[unit_num].image_start;
|
||||||
image_size = iwm.smartport[unit_num].image_size;
|
image_size = iwm.smartport[unit_num].image_size;
|
||||||
if(fd < 0) {
|
if(!file) {
|
||||||
printf("c7_fd == %d!\n", fd);
|
printf("c7_file is null!\n");
|
||||||
#if 0
|
#if 0
|
||||||
if(blk != 2 && blk != 0) {
|
if(blk != 2 && blk != 0) {
|
||||||
/* don't print error if only reading directory */
|
/* don't print error if only reading directory */
|
||||||
|
@ -563,23 +563,23 @@ do_read_c7(int unit_num, word32 buf, int blk)
|
||||||
return 0x2f;
|
return 0x2f;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = lseek(fd, image_start + blk*0x200, SEEK_SET);
|
ret = fseek(file, image_start + blk*0x200, SEEK_SET);
|
||||||
if(ret != image_start + blk*0x200) {
|
if(ret != 0) {
|
||||||
halt_printf("lseek returned %08x, errno: %d\n", ret, errno);
|
halt_printf("fseek errno: %d\n", errno);
|
||||||
smartport_error();
|
smartport_error();
|
||||||
return 0x27;
|
return 0x27;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(ret >= image_start + image_size) {
|
if(image_start + blk*0x200 > image_start + image_size) {
|
||||||
halt_printf("Tried to read from pos %08x on disk, (blk:%04x)\n",
|
halt_printf("Tried to read from pos %08x on disk, (blk:%04x)\n",
|
||||||
ret, blk);
|
image_start + blk*0x200, blk);
|
||||||
smartport_error();
|
smartport_error();
|
||||||
return 0x27;
|
return 0x27;
|
||||||
}
|
}
|
||||||
|
|
||||||
len = read(fd, &local_buf[0], 0x200);
|
len = fread(&local_buf[0], 1, 0x200, file);
|
||||||
if(len != 0x200) {
|
if(len != 0x200) {
|
||||||
printf("read returned %08x, errno:%d, blk:%04x, unit: %02x\n",
|
printf("fread returned %08x, errno:%d, blk:%04x, unit: %02x\n",
|
||||||
len, errno, blk, unit_num);
|
len, errno, blk, unit_num);
|
||||||
halt_printf("name: %s\n", iwm.smartport[unit_num].name_ptr);
|
halt_printf("name: %s\n", iwm.smartport[unit_num].name_ptr);
|
||||||
smartport_error();
|
smartport_error();
|
||||||
|
@ -616,9 +616,9 @@ do_write_c7(int unit_num, word32 buf, int blk)
|
||||||
word32 *ptr;
|
word32 *ptr;
|
||||||
word32 val1, val2;
|
word32 val1, val2;
|
||||||
word32 val;
|
word32 val;
|
||||||
|
FILE *file;
|
||||||
int len;
|
int len;
|
||||||
int ret;
|
int ret;
|
||||||
int fd;
|
|
||||||
int image_start;
|
int image_start;
|
||||||
int image_size;
|
int image_size;
|
||||||
int i;
|
int i;
|
||||||
|
@ -630,11 +630,11 @@ do_write_c7(int unit_num, word32 buf, int blk)
|
||||||
}
|
}
|
||||||
|
|
||||||
dsk = &(iwm.smartport[unit_num]);
|
dsk = &(iwm.smartport[unit_num]);
|
||||||
fd = dsk->fd;
|
file = dsk->file;
|
||||||
image_start = dsk->image_start;
|
image_start = dsk->image_start;
|
||||||
image_size = dsk->image_size;
|
image_size = dsk->image_size;
|
||||||
if(fd < 0) {
|
if(!file) {
|
||||||
halt_printf("c7_fd == %d!\n", fd);
|
halt_printf("c7_file is null!\n");
|
||||||
smartport_error();
|
smartport_error();
|
||||||
return 0x28;
|
return 0x28;
|
||||||
}
|
}
|
||||||
|
@ -653,14 +653,14 @@ do_write_c7(int unit_num, word32 buf, int blk)
|
||||||
*ptr++ = val;
|
*ptr++ = val;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = lseek(fd, image_start + blk*0x200, SEEK_SET);
|
ret = fseek(file, image_start + blk*0x200, SEEK_SET);
|
||||||
if(ret != image_start + blk*0x200) {
|
if(ret != 0) {
|
||||||
halt_printf("lseek returned %08x, errno: %d\n", ret, errno);
|
halt_printf("fseek errno: %d\n", errno);
|
||||||
smartport_error();
|
smartport_error();
|
||||||
return 0x27;
|
return 0x27;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(ret >= image_start + image_size) {
|
if(image_start + blk*0x200 > image_start + image_size) {
|
||||||
halt_printf("Tried to write to %08x\n", ret);
|
halt_printf("Tried to write to %08x\n", ret);
|
||||||
smartport_error();
|
smartport_error();
|
||||||
return 0x27;
|
return 0x27;
|
||||||
|
@ -676,9 +676,9 @@ do_write_c7(int unit_num, word32 buf, int blk)
|
||||||
return 0x00;
|
return 0x00;
|
||||||
}
|
}
|
||||||
|
|
||||||
len = write(fd, (byte *)&local_buf[0], 0x200);
|
len = fwrite((byte *)&local_buf[0], 1, 0x200, file);
|
||||||
if(len != 0x200) {
|
if(len != 0x200) {
|
||||||
halt_printf("write ret %08x bytes, errno: %d\n", len, errno);
|
halt_printf("fwrite ret %08x bytes, errno: %d\n", len, errno);
|
||||||
smartport_error();
|
smartport_error();
|
||||||
return 0x27;
|
return 0x27;
|
||||||
}
|
}
|
||||||
|
@ -694,6 +694,7 @@ do_format_c7(int unit_num)
|
||||||
{
|
{
|
||||||
byte local_buf[0x1000];
|
byte local_buf[0x1000];
|
||||||
Disk *dsk;
|
Disk *dsk;
|
||||||
|
FILE *file;
|
||||||
int len;
|
int len;
|
||||||
int ret;
|
int ret;
|
||||||
int sum;
|
int sum;
|
||||||
|
@ -701,7 +702,6 @@ do_format_c7(int unit_num)
|
||||||
int max;
|
int max;
|
||||||
int image_start;
|
int image_start;
|
||||||
int image_size;
|
int image_size;
|
||||||
int fd;
|
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
if(unit_num < 0 || unit_num > MAX_C7_DISKS) {
|
if(unit_num < 0 || unit_num > MAX_C7_DISKS) {
|
||||||
|
@ -711,11 +711,11 @@ do_format_c7(int unit_num)
|
||||||
}
|
}
|
||||||
|
|
||||||
dsk = &(iwm.smartport[unit_num]);
|
dsk = &(iwm.smartport[unit_num]);
|
||||||
fd = dsk->fd;
|
file = dsk->file;
|
||||||
image_start = dsk->image_start;
|
image_start = dsk->image_start;
|
||||||
image_size = dsk->image_size;
|
image_size = dsk->image_size;
|
||||||
if(fd < 0) {
|
if(!file) {
|
||||||
halt_printf("c7_fd == %d!\n", fd);
|
halt_printf("c7_file is null!\n");
|
||||||
smartport_error();
|
smartport_error();
|
||||||
return 0x28;
|
return 0x28;
|
||||||
}
|
}
|
||||||
|
@ -724,9 +724,9 @@ do_format_c7(int unit_num)
|
||||||
local_buf[i] = 0;
|
local_buf[i] = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = lseek(fd, image_start, SEEK_SET);
|
ret = fseek(file, image_start, SEEK_SET);
|
||||||
if(ret != image_start) {
|
if(ret != 0) {
|
||||||
halt_printf("lseek returned %08x, errno: %d\n", ret, errno);
|
halt_printf("fseek errno: %d\n", errno);
|
||||||
smartport_error();
|
smartport_error();
|
||||||
return 0x27;
|
return 0x27;
|
||||||
}
|
}
|
||||||
|
@ -746,7 +746,7 @@ do_format_c7(int unit_num)
|
||||||
|
|
||||||
while(sum < total) {
|
while(sum < total) {
|
||||||
max = MIN(0x1000, total-sum);
|
max = MIN(0x1000, total-sum);
|
||||||
len = write(fd, &local_buf[0], max);
|
len = fwrite(&local_buf[0], 1, max, file);
|
||||||
if(len != max) {
|
if(len != max) {
|
||||||
halt_printf("write ret %08x, errno:%d\n", len, errno);
|
halt_printf("write ret %08x, errno:%d\n", len, errno);
|
||||||
smartport_error();
|
smartport_error();
|
||||||
|
|
|
@ -19,8 +19,6 @@
|
||||||
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
*/
|
*/
|
||||||
|
|
||||||
const char rcsid_sound_c[] = "@(#)$KmKId: sound.c,v 1.108 2004-10-31 00:56:07-04 kentd Exp $";
|
|
||||||
|
|
||||||
#include "defc.h"
|
#include "defc.h"
|
||||||
|
|
||||||
#define INCLUDE_RCSID_C
|
#define INCLUDE_RCSID_C
|
||||||
|
@ -248,7 +246,7 @@ sound_init()
|
||||||
void
|
void
|
||||||
sound_init_general()
|
sound_init_general()
|
||||||
{
|
{
|
||||||
#if !defined(_WIN32) && !defined(__CYGWIN__) && !defined(MAC)
|
#if !defined(_WIN32) && !defined(__CYGWIN__) && !defined(MAC) && !defined(__OS2__)
|
||||||
int pid;
|
int pid;
|
||||||
int shmid;
|
int shmid;
|
||||||
int tmp;
|
int tmp;
|
||||||
|
@ -258,7 +256,7 @@ sound_init_general()
|
||||||
int size;
|
int size;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
#if !defined(_WIN32) && !defined(__CYGWIN__) && !defined(MAC)
|
#if !defined(_WIN32) && !defined(__CYGWIN__) && !defined(MAC) && !defined(__OS2__)
|
||||||
if(!g_use_shmem) {
|
if(!g_use_shmem) {
|
||||||
if(g_audio_enable < 0) {
|
if(g_audio_enable < 0) {
|
||||||
printf("Defaulting audio off for slow X display\n");
|
printf("Defaulting audio off for slow X display\n");
|
||||||
|
@ -425,6 +423,7 @@ sound_shutdown()
|
||||||
{
|
{
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
win32snd_shutdown();
|
win32snd_shutdown();
|
||||||
|
#elif defined(__OS2__)
|
||||||
#else
|
#else
|
||||||
if((g_audio_enable != 0) && g_pipe_fd[1] != 0) {
|
if((g_audio_enable != 0) && g_pipe_fd[1] != 0) {
|
||||||
close(g_pipe_fd[1]);
|
close(g_pipe_fd[1]);
|
||||||
|
@ -611,6 +610,8 @@ send_sound(int real_samps, int size)
|
||||||
#if defined(MAC) || defined(_WIN32)
|
#if defined(MAC) || defined(_WIN32)
|
||||||
ret = 0;
|
ret = 0;
|
||||||
child_sound_playit(tmp);
|
child_sound_playit(tmp);
|
||||||
|
#elif defined(__OS2__)
|
||||||
|
|
||||||
#else
|
#else
|
||||||
/* Although this looks like a big/little-endian issue, since the */
|
/* Although this looks like a big/little-endian issue, since the */
|
||||||
/* child is also reading an int, it just works with no byte swap */
|
/* child is also reading an int, it just works with no byte swap */
|
||||||
|
|
|
@ -19,8 +19,6 @@
|
||||||
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
*/
|
*/
|
||||||
|
|
||||||
const char rcsid_sound_driver_c[] = "@(#)$KmKId: sound_driver.c,v 1.17 2004-09-21 10:37:15-04 kentd Exp $";
|
|
||||||
|
|
||||||
#include "defc.h"
|
#include "defc.h"
|
||||||
#include "sound.h"
|
#include "sound.h"
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user