Remove the UNIT_RAW flag and deprecate the UNIT_TEXT flag (made the value 0).
This commit is contained in:
parent
19c4ccbf10
commit
4a5b7a78c5
5 changed files with 60 additions and 9 deletions
|
@ -2158,9 +2158,8 @@ else { /* Bottom End (After I/O processing) */
|
|||
if (err != 0) { /* error? */
|
||||
if (rq_dte (cp, uptr, ST_DRV)) /* post err log */
|
||||
rq_rw_end (cp, uptr, EF_LOG, ST_DRV); /* if ok, report err */
|
||||
perror ("RQ I/O error");
|
||||
if (!(uptr->flags & UNIT_RAW))
|
||||
clearerr (uptr->fileref);
|
||||
sim_disk_perror (uptr, "RQ I/O error");
|
||||
sim_disk_clearerr (uptr);
|
||||
return SCPE_IOERR;
|
||||
}
|
||||
ba = ba + tbc; /* incr bus addr */
|
||||
|
|
6
scp.c
6
scp.c
|
@ -3983,7 +3983,7 @@ for (i = 1; (dptr = sim_devices[i]) != NULL; i++) { /* flush attached files
|
|||
if (uptr->io_flush) /* unit specific flush routine */
|
||||
uptr->io_flush (uptr);
|
||||
else
|
||||
if (!(uptr->flags & UNIT_RAW) && /* not raw, */
|
||||
if (!(uptr->dynflags & UNIT_NO_FIO) && /* is FILE *, */
|
||||
!(uptr->flags & UNIT_RO)) /* not read only? */
|
||||
fflush (uptr->fileref);
|
||||
}
|
||||
|
@ -4543,7 +4543,7 @@ for (i = 0, j = addr; i < sim_emax; i++, j = j + dptr->aincr) {
|
|||
else {
|
||||
if (!(uptr->flags & UNIT_ATT))
|
||||
return SCPE_UNATT;
|
||||
if (uptr->flags & UNIT_RAW)
|
||||
if (uptr->dynflags & UNIT_NO_FIO)
|
||||
return SCPE_NOFNC;
|
||||
if ((uptr->flags & UNIT_FIX) && (j >= uptr->capac)) {
|
||||
reason = SCPE_NXM;
|
||||
|
@ -4634,7 +4634,7 @@ for (i = 0, j = addr; i < count; i++, j = j + dptr->aincr) {
|
|||
else {
|
||||
if (!(uptr->flags & UNIT_ATT))
|
||||
return SCPE_UNATT;
|
||||
if (uptr->flags & UNIT_RAW)
|
||||
if (uptr->dynflags & UNIT_NO_FIO)
|
||||
return SCPE_NOFNC;
|
||||
if ((uptr->flags & UNIT_FIX) && (j >= uptr->capac))
|
||||
return SCPE_NXM;
|
||||
|
|
|
@ -424,10 +424,11 @@ struct sim_unit {
|
|||
#define UNIT_ROABLE 0001000 /* read only ok */
|
||||
#define UNIT_DISABLE 0002000 /* disable-able */
|
||||
#define UNIT_DIS 0004000 /* disabled */
|
||||
#define UNIT_RAW 0010000 /* raw mode */
|
||||
#define UNIT_TEXT 0020000 /* text mode */
|
||||
#define UNIT_IDLE 0040000 /* idle eligible */
|
||||
|
||||
/* Unused/meaningless flags */
|
||||
#define UNIT_TEXT 0000000 /* text mode - no effect */
|
||||
|
||||
#define UNIT_UFMASK_31 (((1u << UNIT_V_RSV) - 1) & ~((1u << UNIT_V_UF_31) - 1))
|
||||
#define UNIT_UFMASK (((1u << UNIT_V_RSV) - 1) & ~((1u << UNIT_V_UF) - 1))
|
||||
#define UNIT_RFLAGS (UNIT_UFMASK|UNIT_DIS) /* restored flags */
|
||||
|
@ -438,6 +439,7 @@ struct sim_unit {
|
|||
|
||||
#define UNIT_ATTMULT 0000001 /* Allow multiple attach commands */
|
||||
#define UNIT_TM_POLL 0000002 /* TMXR Polling unit */
|
||||
#define UNIT_NO_FIO 0000004 /* fileref is NOT a FILE * */
|
||||
|
||||
/* Register data structure */
|
||||
|
||||
|
|
50
sim_disk.c
50
sim_disk.c
|
@ -273,6 +273,7 @@ static void sim_vhd_disk_flush (FILE *f);
|
|||
static t_addr sim_vhd_disk_size (FILE *f);
|
||||
static t_stat sim_vhd_disk_rdsect (UNIT *uptr, t_lba lba, uint8 *buf, t_seccnt *sectsread, t_seccnt sects);
|
||||
static t_stat sim_vhd_disk_wrsect (UNIT *uptr, t_lba lba, uint8 *buf, t_seccnt *sectswritten, t_seccnt sects);
|
||||
static t_stat sim_vhd_disk_clearerr (UNIT *uptr);
|
||||
static t_stat sim_vhd_disk_set_dtype (FILE *f, const char *dtype);
|
||||
static const char *sim_vhd_disk_get_dtype (FILE *f);
|
||||
static t_stat sim_os_disk_implemented_raw (void);
|
||||
|
@ -1121,7 +1122,8 @@ sim_disk_clr_async (uptr);
|
|||
if (uptr->io_flush)
|
||||
uptr->io_flush (uptr); /* flush buffered data */
|
||||
|
||||
uptr->flags = uptr->flags & ~(UNIT_ATT | UNIT_RO | UNIT_RAW);
|
||||
uptr->flags &= ~(UNIT_ATT | UNIT_RO);
|
||||
uptr->dynflags &= ~UNIT_NO_FIO;
|
||||
free (uptr->filename);
|
||||
uptr->filename = NULL;
|
||||
uptr->fileref = NULL;
|
||||
|
@ -1206,6 +1208,39 @@ AIO_UPDATE_QUEUE;
|
|||
return SCPE_OK;
|
||||
}
|
||||
|
||||
t_stat sim_disk_perror (UNIT *uptr, const char *msg)
|
||||
{
|
||||
if (!(uptr->flags & UNIT_ATTABLE)) /* not attachable? */
|
||||
return SCPE_NOATT;
|
||||
switch (DK_GET_FMT (uptr)) { /* case on format */
|
||||
case DKUF_F_STD: /* SIMH format */
|
||||
case DKUF_F_VHD: /* VHD format */
|
||||
case DKUF_F_RAW: /* Raw Physical Disk Access */
|
||||
perror (msg);
|
||||
default:
|
||||
;
|
||||
}
|
||||
return SCPE_OK;
|
||||
}
|
||||
|
||||
t_stat sim_disk_clearerr (UNIT *uptr)
|
||||
{
|
||||
if (!(uptr->flags & UNIT_ATTABLE)) /* not attachable? */
|
||||
return SCPE_NOATT;
|
||||
switch (DK_GET_FMT (uptr)) { /* case on format */
|
||||
case DKUF_F_STD: /* SIMH format */
|
||||
clearerr (uptr->fileref);
|
||||
break;
|
||||
case DKUF_F_VHD: /* VHD format */
|
||||
sim_vhd_disk_clearerr (uptr);
|
||||
break;
|
||||
default:
|
||||
;
|
||||
}
|
||||
return SCPE_OK;
|
||||
}
|
||||
|
||||
|
||||
/* Factory bad block table creation routine
|
||||
|
||||
This routine writes a DEC standard 044 compliant bad block table on the
|
||||
|
@ -1974,6 +2009,11 @@ static t_stat sim_vhd_disk_rdsect (UNIT *uptr, t_lba lba, uint8 *buf, t_seccnt *
|
|||
return SCPE_IOERR;
|
||||
}
|
||||
|
||||
static t_stat sim_vhd_disk_clearerr (UNIT *uptr)
|
||||
{
|
||||
return SCPE_IOERR;
|
||||
}
|
||||
|
||||
static t_stat sim_vhd_disk_wrsect (UNIT *uptr, t_lba lba, uint8 *buf, t_seccnt *sectswritten, t_seccnt sects)
|
||||
{
|
||||
return SCPE_IOERR;
|
||||
|
@ -3488,6 +3528,14 @@ struct disk_context *ctx = (struct disk_context *)uptr->disk_ctx;
|
|||
return ReadVirtualDiskSectors(hVHD, buf, sects, sectsread, ctx->sector_size, lba);
|
||||
}
|
||||
|
||||
static t_stat sim_vhd_disk_clearerr (UNIT *uptr)
|
||||
{
|
||||
VHDHANDLE hVHD = (VHDHANDLE)uptr->fileref;
|
||||
|
||||
clearerr (hVHD->File);
|
||||
return SCPE_OK;
|
||||
}
|
||||
|
||||
static t_bool
|
||||
BufferIsZeros(void *Buffer, size_t BufferSize)
|
||||
{
|
||||
|
|
|
@ -80,6 +80,8 @@ t_stat sim_disk_show_capac (FILE *st, UNIT *uptr, int32 val, void *desc);
|
|||
t_stat sim_disk_set_asynch (UNIT *uptr, int latency);
|
||||
t_stat sim_disk_clr_asynch (UNIT *uptr);
|
||||
t_stat sim_disk_reset (UNIT *uptr);
|
||||
t_stat sim_disk_perror (UNIT *uptr, const char *msg);
|
||||
t_stat sim_disk_clearerr (UNIT *uptr);
|
||||
t_bool sim_disk_isavailable (UNIT *uptr);
|
||||
t_bool sim_disk_isavailable_a (UNIT *uptr, DISK_PCALLBACK callback);
|
||||
t_bool sim_disk_wrp (UNIT *uptr);
|
||||
|
|
Loading…
Add table
Reference in a new issue