diff --git a/sim_disk.c b/sim_disk.c index 654fbe0d..1c8a2a27 100644 --- a/sim_disk.c +++ b/sim_disk.c @@ -1110,8 +1110,7 @@ static t_offset get_ods2_filesystem_size (UNIT *uptr) DEVICE *dptr; t_addr saved_capac; struct disk_context *ctx = (struct disk_context *)uptr->disk_ctx; -t_addr temp_capac = (sim_toffset_64 ? (t_addr)0xFFFFFFFFu : (t_addr)0x7FFFFFFFu); /* Make sure we can access the largest sector */ -uint32 capac_factor; +t_offset temp_capac = (sim_toffset_64 ? (t_addr)0xFFFFFFFFu : (t_addr)0x7FFFFFFFu); /* Make sure we can access the largest sector */ ODS2_HomeBlock Home; ODS2_FileHeader Header; ODS2_Retreval *Retr; @@ -1123,9 +1122,8 @@ t_seccnt sects_read; if ((dptr = find_dev_from_unit (uptr)) == NULL) return ret_val; -capac_factor = ((dptr->dwidth / dptr->aincr) == 16) ? 2 : 1; /* save capacity units (word: 2, byte: 1) */ saved_capac = uptr->capac; -uptr->capac = (t_addr)(temp_capac/(capac_factor*((dptr->flags & DEV_SECTORS) ? 1 : 512))); +uptr->capac = temp_capac; if ((sim_disk_rdsect (uptr, 512 / ctx->sector_size, (uint8 *)&Home, §s_read, sizeof (Home) / ctx->sector_size)) || (sects_read != (sizeof (Home) / ctx->sector_size))) goto Return_Cleanup; @@ -1198,7 +1196,6 @@ DEVICE *dptr; t_addr saved_capac; struct disk_context *ctx = (struct disk_context *)uptr->disk_ctx; t_addr temp_capac = (sim_toffset_64 ? (t_addr)0xFFFFFFFFu : (t_addr)0x7FFFFFFFu); /* Make sure we can access the largest sector */ -uint32 capac_factor; ODS1_HomeBlock Home; ODS1_FileHeader Header; ODS1_Retreval *Retr; @@ -1211,9 +1208,8 @@ t_seccnt sects_read; if ((dptr = find_dev_from_unit (uptr)) == NULL) return ret_val; -capac_factor = ((dptr->dwidth / dptr->aincr) == 16) ? 2 : 1; /* save capacity units (word: 2, byte: 1) */ saved_capac = uptr->capac; -uptr->capac = (t_addr)(temp_capac/(capac_factor*((dptr->flags & DEV_SECTORS) ? 1 : 512))); +uptr->capac = temp_capac; if ((sim_disk_rdsect (uptr, 512 / ctx->sector_size, (uint8 *)&Home, §s_read, sizeof (Home) / ctx->sector_size)) || (sects_read != (sizeof (Home) / ctx->sector_size))) goto Return_Cleanup; @@ -1275,7 +1271,6 @@ DEVICE *dptr; t_addr saved_capac; struct disk_context *ctx = (struct disk_context *)uptr->disk_ctx; t_addr temp_capac = (sim_toffset_64 ? (t_addr)0xFFFFFFFFu : (t_addr)0x7FFFFFFFu); /* Make sure we can access the largest sector */ -uint32 capac_factor; uint8 sector_buf[512]; ultrix_disklabel *Label = (ultrix_disklabel *)(sector_buf + sizeof (sector_buf) - sizeof (ultrix_disklabel)); t_offset ret_val = (t_offset)-1; @@ -1285,9 +1280,8 @@ t_seccnt sects_read; if ((dptr = find_dev_from_unit (uptr)) == NULL) return ret_val; -capac_factor = ((dptr->dwidth / dptr->aincr) == 16) ? 2 : 1; /* save capacity units (word: 2, byte: 1) */ saved_capac = uptr->capac; -uptr->capac = (t_addr)(temp_capac/(capac_factor*((dptr->flags & DEV_SECTORS) ? 1 : 512))); +uptr->capac = temp_capac; if ((sim_disk_rdsect (uptr, 31 * (512 / ctx->sector_size), sector_buf, §s_read, 512 / ctx->sector_size)) || (sects_read != (512 / ctx->sector_size))) goto Return_Cleanup; @@ -1394,7 +1388,6 @@ DEVICE *dptr; t_addr saved_capac; struct disk_context *ctx = (struct disk_context *)uptr->disk_ctx; t_addr temp_capac = (sim_toffset_64 ? (t_addr)0xFFFFFFFFu : (t_addr)0x7FFFFFFFu); /* Make sure we can access the largest sector */ -uint32 capac_factor; uint8 sector_buf[1024]; RT11_HomeBlock Home; t_seccnt sects_read; @@ -1409,9 +1402,8 @@ t_offset ret_val = (t_offset)-1; if ((dptr = find_dev_from_unit (uptr)) == NULL) return ret_val; -capac_factor = ((dptr->dwidth / dptr->aincr) == 16) ? 2 : 1; saved_capac = uptr->capac; -uptr->capac = (t_addr)(temp_capac / (capac_factor * ((dptr->flags & DEV_SECTORS) ? 1 : 512))); +uptr->capac = temp_capac; for (part = 0; part < RT11_MAXPARTITIONS; part++) { uint16 seg_highest; @@ -2018,10 +2010,14 @@ if (container_size && (container_size != (t_offset)-1)) { if ((container_size < current_unit_size) && ((DKUF_F_VHD == DK_GET_FMT (uptr)) || (0 != (uptr->flags & UNIT_RO)))) { if (!sim_quiet) { + int32 saved_switches = sim_switches; + + sim_switches = SWMASK ('R'); uptr->capac = (t_addr)(container_size/(ctx->capac_factor*((dptr->flags & DEV_SECTORS) ? 512 : 1))); sim_printf ("%s%d: non expandable disk container '%s' is smaller than simulated device (%s < ", sim_dname (dptr), (int)(uptr-dptr->units), cptr, sprint_capac (dptr, uptr)); uptr->capac = saved_capac; sim_printf ("%s)\n", sprint_capac (dptr, uptr)); + sim_switches = saved_switches; } sim_disk_detach (uptr); return SCPE_OPENERR;