AltairZ80: wd179x: Code cleanup and fix MSVC /W4 warnings.
This commit is contained in:
parent
7cca92ce28
commit
75f11a8e3d
1 changed files with 80 additions and 79 deletions
|
@ -84,6 +84,8 @@
|
||||||
#define WD179X_STAT_DRQ (1 << 1)
|
#define WD179X_STAT_DRQ (1 << 1)
|
||||||
/*#define WD179X_STAT_BUSY (1 << 0) */
|
/*#define WD179X_STAT_BUSY (1 << 0) */
|
||||||
|
|
||||||
|
#define WD179X_SECTOR_LEN_BYTES (unsigned)(128 << wd179x_info->fdc_sec_len)
|
||||||
|
|
||||||
typedef union {
|
typedef union {
|
||||||
uint8 raw[WD179X_SECTOR_LEN];
|
uint8 raw[WD179X_SECTOR_LEN];
|
||||||
} SECTOR_FORMAT;
|
} SECTOR_FORMAT;
|
||||||
|
@ -238,6 +240,9 @@ static REG wd179x_reg[] = {
|
||||||
#define WD179X_NAME "Western Digital FDC Core"
|
#define WD179X_NAME "Western Digital FDC Core"
|
||||||
|
|
||||||
static const char* wd179x_description(DEVICE *dptr) {
|
static const char* wd179x_description(DEVICE *dptr) {
|
||||||
|
if (dptr == NULL) {
|
||||||
|
return (NULL);
|
||||||
|
}
|
||||||
return WD179X_NAME;
|
return WD179X_NAME;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -284,6 +289,7 @@ DEVICE wd179x_dev = {
|
||||||
/* Used to generate INDEX pulses in response to a FORCE_INTR command */
|
/* Used to generate INDEX pulses in response to a FORCE_INTR command */
|
||||||
t_stat wd179x_svc (UNIT *uptr)
|
t_stat wd179x_svc (UNIT *uptr)
|
||||||
{
|
{
|
||||||
|
if (uptr == NULL) return SCPE_IERR;
|
||||||
|
|
||||||
if (wd179x_info->index_pulse_wait == TRUE) {
|
if (wd179x_info->index_pulse_wait == TRUE) {
|
||||||
wd179x_info->index_pulse_wait = FALSE;
|
wd179x_info->index_pulse_wait = FALSE;
|
||||||
|
@ -427,7 +433,7 @@ t_stat wd179x_attach(UNIT *uptr, CONST char *cptr)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Set the correct number of sides for this disk image. */
|
/* Set the correct number of sides for this disk image. */
|
||||||
wd179x_info->drive[i].nheads = imdGetSides(wd179x_info->drive[i].imd);
|
wd179x_info->drive[i].nheads = (uint8)imdGetSides(wd179x_info->drive[i].imd);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
wd179x_info->drive[i].imd = NULL;
|
wd179x_info->drive[i].imd = NULL;
|
||||||
|
@ -445,7 +451,7 @@ t_stat wd179x_attach(UNIT *uptr, CONST char *cptr)
|
||||||
t_stat wd179x_detach(UNIT *uptr)
|
t_stat wd179x_detach(UNIT *uptr)
|
||||||
{
|
{
|
||||||
t_stat r;
|
t_stat r;
|
||||||
int8 i;
|
int32 i;
|
||||||
|
|
||||||
i = find_unit_index(uptr);
|
i = find_unit_index(uptr);
|
||||||
|
|
||||||
|
@ -460,10 +466,7 @@ t_stat wd179x_detach(UNIT *uptr)
|
||||||
return r;
|
return r;
|
||||||
|
|
||||||
r = detach_unit(uptr); /* detach unit */
|
r = detach_unit(uptr); /* detach unit */
|
||||||
if (r != SCPE_OK)
|
|
||||||
return r;
|
return r;
|
||||||
|
|
||||||
return SCPE_OK;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -474,7 +477,7 @@ static int32 wd179xdev(const int32 port, const int32 io, const int32 data)
|
||||||
if (io) {
|
if (io) {
|
||||||
sim_debug(VERBOSE_MSG, &wd179x_dev, "WD179X: " ADDRESS_FORMAT " %s, Port 0x%02x Data 0x%02x\n",
|
sim_debug(VERBOSE_MSG, &wd179x_dev, "WD179X: " ADDRESS_FORMAT " %s, Port 0x%02x Data 0x%02x\n",
|
||||||
PCX, io ? "OUT" : " IN", port, data);
|
PCX, io ? "OUT" : " IN", port, data);
|
||||||
WD179X_Write(port, data);
|
WD179X_Write(port, (uint8)data);
|
||||||
} else {
|
} else {
|
||||||
result = WD179X_Read(port);
|
result = WD179X_Read(port);
|
||||||
sim_debug(VERBOSE_MSG, &wd179x_dev, "WD179X: " ADDRESS_FORMAT " %s, Port 0x%02x Data 0x%02x\n",
|
sim_debug(VERBOSE_MSG, &wd179x_dev, "WD179X: " ADDRESS_FORMAT " %s, Port 0x%02x Data 0x%02x\n",
|
||||||
|
@ -595,14 +598,14 @@ uint8 WD179X_Read(const uint32 Addr)
|
||||||
}
|
}
|
||||||
|
|
||||||
wd179x_info->fdc_sector ++;
|
wd179x_info->fdc_sector ++;
|
||||||
sim_debug(RD_DATA_MSG, &wd179x_dev, "WD179X[%d]: " ADDRESS_FORMAT " MULTI_READ_REC, T:%2d/S:%d/N:%2d, %s, len=%d\n", wd179x_info->sel_drive, PCX, pDrive->track, wd179x_info->fdc_head, wd179x_info->fdc_sector, wd179x_info->ddens ? "DD" : "SD", 128 << wd179x_info->fdc_sec_len);
|
sim_debug(RD_DATA_MSG, &wd179x_dev, "WD179X[%d]: " ADDRESS_FORMAT " MULTI_READ_REC, T:%2d/S:%d/N:%2d, %s, len=%d\n", wd179x_info->sel_drive, PCX, pDrive->track, wd179x_info->fdc_head, wd179x_info->fdc_sector, wd179x_info->ddens ? "DD" : "SD", WD179X_SECTOR_LEN_BYTES);
|
||||||
|
|
||||||
status = sectRead(pDrive->imd,
|
status = sectRead(pDrive->imd,
|
||||||
pDrive->track,
|
pDrive->track,
|
||||||
wd179x_info->fdc_head,
|
wd179x_info->fdc_head,
|
||||||
wd179x_info->fdc_sector,
|
wd179x_info->fdc_sector,
|
||||||
sdata.raw,
|
sdata.raw,
|
||||||
128 << wd179x_info->fdc_sec_len,
|
WD179X_SECTOR_LEN_BYTES,
|
||||||
&flags,
|
&flags,
|
||||||
&readlen);
|
&readlen);
|
||||||
|
|
||||||
|
@ -610,7 +613,7 @@ uint8 WD179X_Read(const uint32 Addr)
|
||||||
wd179x_info->fdc_status = (WD179X_STAT_DRQ | WD179X_STAT_BUSY); /* Set DRQ, BUSY */
|
wd179x_info->fdc_status = (WD179X_STAT_DRQ | WD179X_STAT_BUSY); /* Set DRQ, BUSY */
|
||||||
wd179x_info->drq = 1;
|
wd179x_info->drq = 1;
|
||||||
wd179x_info->intrq = 0;
|
wd179x_info->intrq = 0;
|
||||||
wd179x_info->fdc_datacount = 128 << wd179x_info->fdc_sec_len;
|
wd179x_info->fdc_datacount = WD179X_SECTOR_LEN_BYTES;
|
||||||
wd179x_info->fdc_dataindex = 0;
|
wd179x_info->fdc_dataindex = 0;
|
||||||
wd179x_info->fdc_read = TRUE;
|
wd179x_info->fdc_read = TRUE;
|
||||||
wd179x_info->fdc_read_addr = FALSE;
|
wd179x_info->fdc_read_addr = FALSE;
|
||||||
|
@ -802,7 +805,7 @@ static uint8 Do1793Command(uint8 cCommand)
|
||||||
wd179x_info->sel_drive, PCX, pDrive->track,
|
wd179x_info->sel_drive, PCX, pDrive->track,
|
||||||
wd179x_info->fdc_head, wd179x_info->fdc_sector,
|
wd179x_info->fdc_head, wd179x_info->fdc_sector,
|
||||||
wd179x_info->fdc_multiple ? "Multiple" : "Single",
|
wd179x_info->fdc_multiple ? "Multiple" : "Single",
|
||||||
wd179x_info->ddens ? "DD" : "SD", 128 << wd179x_info->fdc_sec_len);
|
wd179x_info->ddens ? "DD" : "SD", WD179X_SECTOR_LEN_BYTES);
|
||||||
|
|
||||||
if (testMode(pDrive)) {
|
if (testMode(pDrive)) {
|
||||||
wd179x_info->fdc_status |= WD179X_STAT_NOT_FOUND; /* Sector not found */
|
wd179x_info->fdc_status |= WD179X_STAT_NOT_FOUND; /* Sector not found */
|
||||||
|
@ -815,14 +818,14 @@ static uint8 Do1793Command(uint8 cCommand)
|
||||||
wd179x_info->fdc_head,
|
wd179x_info->fdc_head,
|
||||||
wd179x_info->fdc_sector,
|
wd179x_info->fdc_sector,
|
||||||
sdata.raw,
|
sdata.raw,
|
||||||
128 << wd179x_info->fdc_sec_len,
|
WD179X_SECTOR_LEN_BYTES,
|
||||||
&flags,
|
&flags,
|
||||||
&readlen);
|
&readlen);
|
||||||
|
|
||||||
if (status == SCPE_OK) {
|
if (status == SCPE_OK) {
|
||||||
wd179x_info->fdc_status |= (WD179X_STAT_DRQ); /* Set DRQ */
|
wd179x_info->fdc_status |= (WD179X_STAT_DRQ); /* Set DRQ */
|
||||||
wd179x_info->drq = 1;
|
wd179x_info->drq = 1;
|
||||||
wd179x_info->fdc_datacount = 128 << wd179x_info->fdc_sec_len;
|
wd179x_info->fdc_datacount = WD179X_SECTOR_LEN_BYTES;
|
||||||
wd179x_info->fdc_dataindex = 0;
|
wd179x_info->fdc_dataindex = 0;
|
||||||
wd179x_info->fdc_write = FALSE;
|
wd179x_info->fdc_write = FALSE;
|
||||||
wd179x_info->fdc_write_track = FALSE;
|
wd179x_info->fdc_write_track = FALSE;
|
||||||
|
@ -856,7 +859,7 @@ static uint8 Do1793Command(uint8 cCommand)
|
||||||
" CMD=WRITE_REC, T:%2d/S:%d/N:%2d, %s.\n", wd179x_info->sel_drive, PCX, pDrive->track, wd179x_info->fdc_head, wd179x_info->fdc_sector, (cCommand & 0x10) ? "Multiple" : "Single");
|
" CMD=WRITE_REC, T:%2d/S:%d/N:%2d, %s.\n", wd179x_info->sel_drive, PCX, pDrive->track, wd179x_info->fdc_head, wd179x_info->fdc_sector, (cCommand & 0x10) ? "Multiple" : "Single");
|
||||||
wd179x_info->fdc_status |= (WD179X_STAT_DRQ); /* Set DRQ */
|
wd179x_info->fdc_status |= (WD179X_STAT_DRQ); /* Set DRQ */
|
||||||
wd179x_info->drq = 1;
|
wd179x_info->drq = 1;
|
||||||
wd179x_info->fdc_datacount = 128 << wd179x_info->fdc_sec_len;
|
wd179x_info->fdc_datacount = WD179X_SECTOR_LEN_BYTES;
|
||||||
wd179x_info->fdc_dataindex = 0;
|
wd179x_info->fdc_dataindex = 0;
|
||||||
wd179x_info->fdc_write = TRUE;
|
wd179x_info->fdc_write = TRUE;
|
||||||
wd179x_info->fdc_write_track = FALSE;
|
wd179x_info->fdc_write_track = FALSE;
|
||||||
|
@ -916,10 +919,10 @@ static uint8 Do1793Command(uint8 cCommand)
|
||||||
sim_debug(FMT_MSG, &wd179x_dev, "WD179X[%d]: " ADDRESS_FORMAT
|
sim_debug(FMT_MSG, &wd179x_dev, "WD179X[%d]: " ADDRESS_FORMAT
|
||||||
" CMD=WRITE_TRACK, T:%2d/S:%d/N:%d.\n", wd179x_info->sel_drive,
|
" CMD=WRITE_TRACK, T:%2d/S:%d/N:%d.\n", wd179x_info->sel_drive,
|
||||||
PCX, pDrive->track, wd179x_info->fdc_head,
|
PCX, pDrive->track, wd179x_info->fdc_head,
|
||||||
128 << wd179x_info->fdc_sec_len);
|
WD179X_SECTOR_LEN_BYTES);
|
||||||
wd179x_info->fdc_status |= (WD179X_STAT_DRQ); /* Set DRQ */
|
wd179x_info->fdc_status |= (WD179X_STAT_DRQ); /* Set DRQ */
|
||||||
wd179x_info->drq = 1;
|
wd179x_info->drq = 1;
|
||||||
wd179x_info->fdc_datacount = 128 << wd179x_info->fdc_sec_len;
|
wd179x_info->fdc_datacount = WD179X_SECTOR_LEN_BYTES;
|
||||||
wd179x_info->fdc_dataindex = 0;
|
wd179x_info->fdc_dataindex = 0;
|
||||||
wd179x_info->fdc_write = FALSE;
|
wd179x_info->fdc_write = FALSE;
|
||||||
wd179x_info->fdc_write_track = TRUE;
|
wd179x_info->fdc_write_track = TRUE;
|
||||||
|
@ -952,7 +955,6 @@ static uint8 Do1793Command(uint8 cCommand)
|
||||||
wd179x_info->index_pulse_wait = TRUE;
|
wd179x_info->index_pulse_wait = TRUE;
|
||||||
if (wd179x_info->sel_drive < WD179X_MAX_DRIVES) {
|
if (wd179x_info->sel_drive < WD179X_MAX_DRIVES) {
|
||||||
sim_activate (wd179x_unit, ((wd179x_info->drive[wd179x_info->sel_drive].imd->ntracks % 77) == 0) ? CROMFDC_8IN_ROT : CROMFDC_5IN_ROT); /* Generate INDEX pulse */
|
sim_activate (wd179x_unit, ((wd179x_info->drive[wd179x_info->sel_drive].imd->ntracks % 77) == 0) ? CROMFDC_8IN_ROT : CROMFDC_5IN_ROT); /* Generate INDEX pulse */
|
||||||
/* sim_printf("Drive %d Num tracks=%d\n", wd179x_info->sel_drive, wd179x_info->drive[wd179x_info->sel_drive].imd->ntracks); */
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
wd179x_info->intrq = 1;
|
wd179x_info->intrq = 1;
|
||||||
|
@ -1037,7 +1039,6 @@ uint8 max_sectors_per_track[2][7] = {
|
||||||
uint8 WD179X_Write(const uint32 Addr, uint8 cData)
|
uint8 WD179X_Write(const uint32 Addr, uint8 cData)
|
||||||
{
|
{
|
||||||
WD179X_DRIVE_INFO *pDrive;
|
WD179X_DRIVE_INFO *pDrive;
|
||||||
/* uint8 disk_read = 0; */
|
|
||||||
uint32 flags = 0;
|
uint32 flags = 0;
|
||||||
uint32 writelen;
|
uint32 writelen;
|
||||||
|
|
||||||
|
@ -1095,14 +1096,14 @@ uint8 WD179X_Write(const uint32 Addr, uint8 cData)
|
||||||
}
|
}
|
||||||
|
|
||||||
sim_debug(WR_DATA_MSG, &wd179x_dev, "WD179X[%d]: " ADDRESS_FORMAT
|
sim_debug(WR_DATA_MSG, &wd179x_dev, "WD179X[%d]: " ADDRESS_FORMAT
|
||||||
" Writing sector, T:%2d/S:%d/N:%2d, Len=%d\n", wd179x_info->sel_drive, PCX, pDrive->track, wd179x_info->fdc_head, wd179x_info->fdc_sector, 128 << wd179x_info->fdc_sec_len);
|
" Writing sector, T:%2d/S:%d/N:%2d, Len=%d\n", wd179x_info->sel_drive, PCX, pDrive->track, wd179x_info->fdc_head, wd179x_info->fdc_sector, WD179X_SECTOR_LEN_BYTES);
|
||||||
|
|
||||||
sectWrite(pDrive->imd,
|
sectWrite(pDrive->imd,
|
||||||
pDrive->track,
|
pDrive->track,
|
||||||
wd179x_info->fdc_head,
|
wd179x_info->fdc_head,
|
||||||
wd179x_info->fdc_sector,
|
wd179x_info->fdc_sector,
|
||||||
sdata.raw,
|
sdata.raw,
|
||||||
128 << wd179x_info->fdc_sec_len,
|
WD179X_SECTOR_LEN_BYTES,
|
||||||
&flags,
|
&flags,
|
||||||
&writelen);
|
&writelen);
|
||||||
|
|
||||||
|
@ -1204,7 +1205,7 @@ uint8 WD179X_Write(const uint32 Addr, uint8 cData)
|
||||||
pDrive->track,
|
pDrive->track,
|
||||||
wd179x_info->fdc_head,
|
wd179x_info->fdc_head,
|
||||||
wd179x_info->fdc_fmt_sector_count,
|
wd179x_info->fdc_fmt_sector_count,
|
||||||
128 << wd179x_info->fdc_sec_len,
|
WD179X_SECTOR_LEN_BYTES,
|
||||||
wd179x_info->fdc_sectormap,
|
wd179x_info->fdc_sectormap,
|
||||||
wd179x_info->ddens ? 3 : 0, /* data mode */
|
wd179x_info->ddens ? 3 : 0, /* data mode */
|
||||||
sdata.raw[0],
|
sdata.raw[0],
|
||||||
|
|
Loading…
Add table
Reference in a new issue