AltairZ80: wd179x: Code cleanup and fix MSVC /W4 warnings.

This commit is contained in:
Howard M. Harte 2022-11-23 20:43:25 -08:00 committed by Paul Koning
parent 7cca92ce28
commit 75f11a8e3d

View file

@ -84,6 +84,8 @@
#define WD179X_STAT_DRQ (1 << 1)
/*#define WD179X_STAT_BUSY (1 << 0) */
#define WD179X_SECTOR_LEN_BYTES (unsigned)(128 << wd179x_info->fdc_sec_len)
typedef union {
uint8 raw[WD179X_SECTOR_LEN];
} SECTOR_FORMAT;
@ -238,6 +240,9 @@ static REG wd179x_reg[] = {
#define WD179X_NAME "Western Digital FDC Core"
static const char* wd179x_description(DEVICE *dptr) {
if (dptr == NULL) {
return (NULL);
}
return WD179X_NAME;
}
@ -284,6 +289,7 @@ DEVICE wd179x_dev = {
/* Used to generate INDEX pulses in response to a FORCE_INTR command */
t_stat wd179x_svc (UNIT *uptr)
{
if (uptr == NULL) return SCPE_IERR;
if (wd179x_info->index_pulse_wait == TRUE) {
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. */
wd179x_info->drive[i].nheads = imdGetSides(wd179x_info->drive[i].imd);
wd179x_info->drive[i].nheads = (uint8)imdGetSides(wd179x_info->drive[i].imd);
} else {
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 r;
int8 i;
int32 i;
i = find_unit_index(uptr);
@ -460,10 +466,7 @@ t_stat wd179x_detach(UNIT *uptr)
return r;
r = detach_unit(uptr); /* detach unit */
if (r != SCPE_OK)
return r;
return SCPE_OK;
}
@ -474,7 +477,7 @@ static int32 wd179xdev(const int32 port, const int32 io, const int32 data)
if (io) {
sim_debug(VERBOSE_MSG, &wd179x_dev, "WD179X: " ADDRESS_FORMAT " %s, Port 0x%02x Data 0x%02x\n",
PCX, io ? "OUT" : " IN", port, data);
WD179X_Write(port, data);
WD179X_Write(port, (uint8)data);
} else {
result = WD179X_Read(port);
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 ++;
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,
pDrive->track,
wd179x_info->fdc_head,
wd179x_info->fdc_sector,
sdata.raw,
128 << wd179x_info->fdc_sec_len,
WD179X_SECTOR_LEN_BYTES,
&flags,
&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->drq = 1;
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_read = TRUE;
wd179x_info->fdc_read_addr = FALSE;
@ -802,7 +805,7 @@ static uint8 Do1793Command(uint8 cCommand)
wd179x_info->sel_drive, PCX, pDrive->track,
wd179x_info->fdc_head, wd179x_info->fdc_sector,
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)) {
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_sector,
sdata.raw,
128 << wd179x_info->fdc_sec_len,
WD179X_SECTOR_LEN_BYTES,
&flags,
&readlen);
if (status == SCPE_OK) {
wd179x_info->fdc_status |= (WD179X_STAT_DRQ); /* Set DRQ */
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_write = 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");
wd179x_info->fdc_status |= (WD179X_STAT_DRQ); /* Set DRQ */
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_write = TRUE;
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
" CMD=WRITE_TRACK, T:%2d/S:%d/N:%d.\n", wd179x_info->sel_drive,
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->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_write = FALSE;
wd179x_info->fdc_write_track = TRUE;
@ -952,7 +955,6 @@ static uint8 Do1793Command(uint8 cCommand)
wd179x_info->index_pulse_wait = TRUE;
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_printf("Drive %d Num tracks=%d\n", wd179x_info->sel_drive, wd179x_info->drive[wd179x_info->sel_drive].imd->ntracks); */
}
} else {
wd179x_info->intrq = 1;
@ -1037,7 +1039,6 @@ uint8 max_sectors_per_track[2][7] = {
uint8 WD179X_Write(const uint32 Addr, uint8 cData)
{
WD179X_DRIVE_INFO *pDrive;
/* uint8 disk_read = 0; */
uint32 flags = 0;
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
" 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,
pDrive->track,
wd179x_info->fdc_head,
wd179x_info->fdc_sector,
sdata.raw,
128 << wd179x_info->fdc_sec_len,
WD179X_SECTOR_LEN_BYTES,
&flags,
&writelen);
@ -1204,7 +1205,7 @@ uint8 WD179X_Write(const uint32 Addr, uint8 cData)
pDrive->track,
wd179x_info->fdc_head,
wd179x_info->fdc_fmt_sector_count,
128 << wd179x_info->fdc_sec_len,
WD179X_SECTOR_LEN_BYTES,
wd179x_info->fdc_sectormap,
wd179x_info->ddens ? 3 : 0, /* data mode */
sdata.raw[0],