From d778e11a8b610d41ad03a9d1bd4d251565f8aec2 Mon Sep 17 00:00:00 2001 From: Richard Cornwell Date: Wed, 4 Mar 2020 20:57:59 -0500 Subject: [PATCH] KA10: Add support for DBD9 and DLD9 format for RP01-7 disks. --- PDP10/kx10_disk.c | 289 +++++++++++++++++++++++++ PDP10/kx10_disk.h | 81 +++++++ PDP10/kx10_dp.c | 41 ++-- PDP10/kx10_rp.c | 40 ++-- Visual Studio Projects/PDP10-KA.vcproj | 8 + Visual Studio Projects/PDP10-KI.vcproj | 8 + Visual Studio Projects/PDP10-KL.vcproj | 8 + Visual Studio Projects/PDP6.vcproj | 4 + doc/ka10_doc.doc | Bin 225792 -> 230400 bytes doc/ki10_doc.doc | Bin 154112 -> 158720 bytes doc/kl10_doc.doc | Bin 161280 -> 164352 bytes makefile | 25 ++- 12 files changed, 444 insertions(+), 60 deletions(-) create mode 100644 PDP10/kx10_disk.c create mode 100644 PDP10/kx10_disk.h diff --git a/PDP10/kx10_disk.c b/PDP10/kx10_disk.c new file mode 100644 index 0000000..0d40405 --- /dev/null +++ b/PDP10/kx10_disk.c @@ -0,0 +1,289 @@ +/* kx10_disk.c: Disk translator. + + Copyright (c) 2020, Richard Cornwell + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + RICHARD CORNWELL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +*/ + +#include "kx10_defs.h" +#include "kx10_disk.h" + +/* + * SIMH format is number words per sector stored as a 64 bit word. + * + * DBD9 format is: 9 character per pair of words. + * + * 0 - B0 1 2 3 4 5 6 7 + * 0 - 8 9 10 11 12 13 14 15 + * 0 - 16 17 18 19 20 21 22 23 + * 0 - 24 25 26 27 28 29 30 31 + * 0 - 32 33 34 35 B0 1 2 3 + * 1 - 4 5 6 7 8 9 10 11 + * 1 - 12 13 14 15 16 17 18 19 + * 1 - 20 21 22 23 24 25 26 27 + * 1 - 28 29 30 31 32 33 34 35 + * + * + * DLD9 format is: 9 character per pair of words. + * + * 0 - 28 29 30 31 32 33 34 35 + * 0 - 20 21 22 23 24 25 26 27 + * 0 - 12 13 14 15 16 17 18 19 + * 0 - 4 5 6 7 8 9 10 11 + * 0 - 32 33 34 35 B0 1 2 3 + * 1 - 24 25 26 27 28 29 30 31 + * 1 - 16 17 18 19 20 21 22 23 + * 1 - 8 9 10 11 12 13 14 15 + * 1 - B0 1 2 3 4 5 6 7 + */ + + +struct disk_formats { + uint32 mode; + const char *name; +}; + +static struct disk_formats fmts[] = { + {SIMH, "SIMH"}, + {DBD9, "DBD9"}, + {DLD9, "DLD9"}, + {0, 0}, +}; + +t_stat +disk_read(UNIT *uptr, uint64 *buffer, int sector, int wps) +{ + int da; + int wc; + int bc; + int wp; + uint64 temp; + uint8 conv_buff[2048]; + switch(GET_FMT(uptr->flags)) { + case SIMH: + da = sector * wps; + (void)sim_fseek(uptr->fileref, da * sizeof(uint64), SEEK_SET); + wc = sim_fread (buffer, sizeof(uint64), wps, uptr->fileref); + while (wc < wps) + buffer[wc++] = 0; + break; + case DBD9: + bc = (wps / 2) * 9; + da = sector * bc; + (void)sim_fseek(uptr->fileref, da, SEEK_SET); + wc = sim_fread (&conv_buff, 1, bc, uptr->fileref); + while (wc < bc) + conv_buff[wc++] = 0; + for (wp = wc = 0; wp < wps;) { + temp = ((uint64)conv_buff[wc++]) << 28; + temp |= ((uint64)conv_buff[wc++]) << 20; + temp |= ((uint64)conv_buff[wc++]) << 12; + temp |= ((uint64)conv_buff[wc++]) << 4; + temp |= ((uint64)conv_buff[wc]) >> 4; + buffer[wp++] = temp; + temp = ((uint64)conv_buff[wc++] & 0xf) << 32; + temp |= ((uint64)conv_buff[wc++]) << 24; + temp |= ((uint64)conv_buff[wc++]) << 16; + temp |= ((uint64)conv_buff[wc++]) << 8; + temp |= ((uint64)conv_buff[wc++]); + buffer[wp++] = temp; + } + break; + + case DLD9: + bc = (wps / 2) * 9; + da = sector * bc; + (void)sim_fseek(uptr->fileref, da, SEEK_SET); + wc = sim_fread (&conv_buff, 1, bc, uptr->fileref); + while (wc < bc) + conv_buff[wc++] = 0; + for (wp = wc = 0; wp < wps;) { + temp = ((uint64)conv_buff[wc++]); + temp |= ((uint64)conv_buff[wc++]) << 8; + temp |= ((uint64)conv_buff[wc++]) << 16; + temp |= ((uint64)conv_buff[wc++]) << 24; + temp |= ((uint64)conv_buff[wc] & 0xf) << 32; + buffer[wp++] = temp; + temp = ((uint64)conv_buff[wc++] & 0xf0) >> 4; + temp |= ((uint64)conv_buff[wc++]) << 4; + temp |= ((uint64)conv_buff[wc++]) << 12; + temp |= ((uint64)conv_buff[wc++]) << 20; + temp |= ((uint64)conv_buff[wc++]) << 28; + buffer[wp++] = temp; + } + break; + } + return SCPE_OK; +} + +t_stat +disk_write(UNIT *uptr, uint64 *buffer, int sector, int wps) +{ + int da; + int wc; + int bc; + int wp; + uint64 temp; + uint8 conv_buff[2048]; + switch(GET_FMT(uptr->flags)) { + case SIMH: + da = sector * wps; + (void)sim_fseek(uptr->fileref, da * sizeof(uint64), SEEK_SET); + wc = sim_fwrite (buffer, sizeof(uint64), wps, uptr->fileref); + break; + case DBD9: + bc = (wps / 2) * 9; + for (wp = wc = 0; wp < wps;) { + temp = buffer[wp++]; + conv_buff[wc++] = (uint8)((temp >> 28) & 0xff); + conv_buff[wc++] = (uint8)((temp >> 20) & 0xff); + conv_buff[wc++] = (uint8)((temp >> 12) & 0xff); + conv_buff[wc++] = (uint8)((temp >> 4) & 0xff); + conv_buff[wc] = (uint8)((temp & 0xf) << 4); + temp = buffer[wp++]; + conv_buff[wc++] |= (uint8)((temp >> 32) & 0xf); + conv_buff[wc++] = (uint8)((temp >> 24) & 0xff); + conv_buff[wc++] = (uint8)((temp >> 16) & 0xff); + conv_buff[wc++] = (uint8)((temp >> 8) & 0xff); + conv_buff[wc++] = (uint8)(temp & 0xff); + } + da = sector * bc; + (void)sim_fseek(uptr->fileref, da, SEEK_SET); + wc = sim_fwrite (&conv_buff, 1, bc, uptr->fileref); + return SCPE_OK; + case DLD9: + bc = (wps / 2) * 9; + for (wp = wc = 0; wp < wps;) { + temp = buffer[wp++]; + conv_buff[wc++] = (uint8)(temp & 0xff); + conv_buff[wc++] = (uint8)((temp >> 8) & 0xff); + conv_buff[wc++] = (uint8)((temp >> 16) & 0xff); + conv_buff[wc++] = (uint8)((temp >> 24) & 0xff); + conv_buff[wc] = (uint8)((temp >> 32) & 0xf); + temp = buffer[wp++]; + conv_buff[wc++] |= (uint8)((temp << 4) & 0xf0); + conv_buff[wc++] = (uint8)((temp >> 4) & 0xff); + conv_buff[wc++] = (uint8)((temp >> 12) & 0xff); + conv_buff[wc++] = (uint8)((temp >> 20) & 0xff); + conv_buff[wc++] = (uint8)((temp >> 28) & 0xff); + } + da = sector * bc; + (void)sim_fseek(uptr->fileref, da, SEEK_SET); + wc = sim_fwrite (&conv_buff, 1, bc, uptr->fileref); + return SCPE_OK; + } + return SCPE_OK; +} + + +/* Set disk format */ +t_stat disk_set_fmt (UNIT *uptr, int32 val, CONST char *cptr, void *desc) +{ + int f; + + if (uptr == NULL) return SCPE_IERR; + if (cptr == NULL) return SCPE_ARG; + for (f = 0; fmts[f].name != 0; f++) { + if (strcmp (cptr, fmts[f].name) == 0) { + uptr->flags &= ~UNIT_FMT; + uptr->flags |= SET_FMT(fmts[f].mode); + return SCPE_OK; + } + } + return SCPE_ARG; +} + +/* Show disk format */ + +t_stat disk_show_fmt (FILE *st, UNIT *uptr, int32 val, CONST void *desc) +{ + int fmt = GET_FMT(uptr->flags); + int f; + + for (f = 0; fmts[f].name != 0; f++) { + if (fmt == fmts[f].mode) { + fprintf (st, "%s format", fmts[f].name); + return SCPE_OK; + } + } + fprintf (st, "invalid format"); + return SCPE_OK; +} + + +/* Device attach */ +t_stat disk_attach (UNIT *uptr, CONST char *cptr) +{ + t_stat r; + char gbuf[30]; + + /* Reset to SIMH format on attach */ + uptr->flags &= ~UNIT_FMT; + /* Pickup optional format specifier during RESTORE */ + cptr = get_sim_sw (cptr); + if (sim_switches & SWMASK ('F')) { /* format spec? */ + cptr = get_glyph (cptr, gbuf, 0); /* get spec */ + if (*cptr == 0) return SCPE_2FARG; /* must be more */ + if (disk_set_fmt (uptr, 0, gbuf, NULL) != SCPE_OK) + return SCPE_ARG; + } + + r = attach_unit (uptr, cptr); + if (r != SCPE_OK) + return r; + return SCPE_OK; +} + +/* Device detach */ + +t_stat disk_detach (UNIT *uptr) +{ + return detach_unit (uptr); +} + +t_stat disk_attach_help(FILE *st, DEVICE *dptr, UNIT *uptr, int32 flag, const char *cptr) +{ + fprintf (st, "%s Disk Attach Help\n\n", dptr->name); + + fprintf (st, "Disk container files can be one of 3 different types:\n\n"); + fprintf (st, " SIMH A disk is an unstructured binary file of 64bit integers\n"); + fprintf (st, " DBD9 Compatible with KLH10 is a packed big endian word\n"); + fprintf (st, " DLD9 Compatible with KLH10 is a packed little endian word\n"); + + if (dptr->numunits > 1) { + uint32 i; + + for (i=0; (i < dptr->numunits); ++i) + if ((dptr->units[i].flags & UNIT_ATTABLE) && + !(dptr->units[i].flags & UNIT_DIS)) { + fprintf (st, " sim> ATTACH {switches} %s%d diskfile\n", dptr->name, i); + } + } + else + fprintf (st, " sim> ATTACH {switches} %s diskfile\n", dptr->name); + fprintf (st, "\n%s attach command switches\n", dptr->name); + fprintf (st, " -R Attach Read Only.\n"); + fprintf (st, " -E Must Exist (if not specified an attempt to create the indicated\n"); + fprintf (st, " disk container will be attempted).\n"); + fprintf (st, " -F Open the indicated disk container in a specific format (default\n"); + fprintf (st, " is SIMH), other options are DBD9 and DLD9\n"); + fprintf (st, " -Y Answer Yes to prompt to overwrite last track (on disk create)\n"); + fprintf (st, " -N Answer No to prompt to overwrite last track (on disk create)\n"); + return SCPE_OK; +} diff --git a/PDP10/kx10_disk.h b/PDP10/kx10_disk.h new file mode 100644 index 0000000..21bf9bc --- /dev/null +++ b/PDP10/kx10_disk.h @@ -0,0 +1,81 @@ +/* kx10_disk.h: Disk translator. + + Copyright (c) 2020, Richard Cornwell + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + RICHARD CORNWELL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +*/ + + +/* Flags in the unit flags word */ + +#define UNIT_V_WLK (UNIT_V_UF + 0) /* write locked */ +#define UNIT_WLK (1 << UNIT_V_WLK) +#define UNIT_WPRT (UNIT_WLK | UNIT_RO) /* write protect */ +#define UNIT_V_FMT (UNIT_V_UF + 8) +#define UNIT_M_FMT 7 +#define GET_FMT(x) (((x) >> UNIT_V_FMT) & UNIT_M_FMT) +#define SET_FMT(x) (((x) & UNIT_M_FMT) << UNIT_V_FMT) +#define UNIT_FMT (UNIT_M_FMT << UNIT_V_FMT) + +#define SIMH 0 /* Default raw uint64 word format */ +#define DBD9 1 /* KLH10 Disb Big End Double */ +#define DLD9 2 /* KLH10 Disb Little End Double */ + +/* + * SIMH format is number words per sector stored as a 64 bit word. + * + * DBD9 format is: 9 character per pair of words. + * + * 0 - B0 1 2 3 4 5 6 7 + * 0 - 8 9 10 11 12 13 14 15 + * 0 - 16 17 18 19 20 21 22 23 + * 0 - 24 25 26 27 28 29 30 31 + * 0 - 32 33 34 35 B0 1 2 3 + * 1 - 4 5 6 7 8 9 10 11 + * 1 - 12 13 14 15 16 17 18 19 + * 1 - 20 21 22 23 24 25 26 27 + * 1 - 28 29 30 31 32 33 34 35 + * + * + * DLD9 format is: 9 character per pair of words. + * + * 0 - 28 29 30 31 32 33 34 35 + * 0 - 20 21 22 23 24 25 26 27 + * 0 - 12 13 14 15 16 17 18 19 + * 0 - 4 5 6 7 8 9 10 11 + * 0 - 32 33 34 35 B0 1 2 3 + * 1 - 24 25 26 27 28 29 30 31 + * 1 - 16 17 18 19 20 21 22 23 + * 1 - 8 9 10 11 12 13 14 15 + * 1 - B0 1 2 3 4 5 6 7 + */ + + +t_stat disk_read(UNIT *uptr, uint64 *buffer, int sector, int wps); +t_stat disk_write(UNIT *uptr, uint64 *buffer, int sector, int wps); +/* Set disk format */ +t_stat disk_set_fmt (UNIT *uptr, int32 val, CONST char *cptr, void *desc); +/* Show disk format */ +t_stat disk_show_fmt (FILE *st, UNIT *uptr, int32 val, CONST void *desc); +/* Device attach */ +t_stat disk_attach (UNIT *uptr, CONST char *cptr); +/* Device detach */ +t_stat disk_detach (UNIT *uptr); +/* Print attach help */ +t_stat disk_attach_help(FILE *st, DEVICE *dptr, UNIT *uptr, int32 flag, const char *cptr); diff --git a/PDP10/kx10_dp.c b/PDP10/kx10_dp.c index e0df6ae..a7b38ea 100644 --- a/PDP10/kx10_dp.c +++ b/PDP10/kx10_dp.c @@ -22,6 +22,7 @@ */ #include "kx10_defs.h" +#include "kx10_disk.h" #ifndef NUM_DEVS_DP #define NUM_DEVS_DP 0 @@ -39,13 +40,10 @@ /* Flags in the unit flags word */ #define DEV_WHDR (1 << DEV_V_UF) /* Enable write headers */ -#define UNIT_V_WLK (UNIT_V_UF + 0) /* write locked */ #define UNIT_V_DTYPE (UNIT_V_UF + 1) /* disk type */ #define UNIT_M_DTYPE 3 -#define UNIT_WLK (1 << UNIT_V_WLK) #define UNIT_DTYPE (UNIT_M_DTYPE << UNIT_V_DTYPE) #define GET_DTYPE(x) (((x) >> UNIT_V_DTYPE) & UNIT_M_DTYPE) -#define UNIT_WPRT (UNIT_WLK | UNIT_RO) /* write protect */ /* Parameters in the unit descriptor */ @@ -271,6 +269,7 @@ MTAB dp_mod[] = { {UNIT_DTYPE, (RP03_DTYPE << UNIT_V_DTYPE), "RP03", "RP03", &dp_set_type }, {UNIT_DTYPE, (RP02_DTYPE << UNIT_V_DTYPE), "RP02", "RP02", &dp_set_type }, {UNIT_DTYPE, (RP01_DTYPE << UNIT_V_DTYPE), "RP01", "RP01", &dp_set_type }, + {MTAB_XTD|MTAB_VUN, 0, "FORMAT", "FORMAT", NULL, &disk_show_fmt }, {0}, }; @@ -602,7 +601,7 @@ t_stat dp_svc (UNIT *uptr) int cyl = (uptr->UFLAGS >> 20) & 0777; DEVICE *dptr = dp_devs[ctlr]; struct df10 *df10 = &dp_df10[ctlr]; - int diff, diffs, wc; + int diff, diffs; int r; sect &= 017; @@ -646,12 +645,8 @@ t_stat dp_svc (UNIT *uptr) if (cmd != WR) { /* Read the block */ int da = ((cyl * dp_drv_tab[dtype].surf + surf) - * dp_drv_tab[dtype].sect + sect) * RP_NUMWD; - (void)sim_fseek(uptr->fileref, da * sizeof(uint64), SEEK_SET); - wc = sim_fread (&dp_buf[ctlr][0], sizeof(uint64), RP_NUMWD, - uptr->fileref); - for (; wc < RP_NUMWD; wc++) - dp_buf[ctlr][wc] = 0; + * dp_drv_tab[dtype].sect + sect); + (void)disk_read(uptr, &dp_buf[ctlr][0], da, RP_NUMWD); uptr->hwmark = RP_NUMWD; uptr->DATAPTR = 0; sect = sect + 1; @@ -694,13 +689,11 @@ t_stat dp_svc (UNIT *uptr) if (uptr->DATAPTR >= RP_NUMWD || r == 0 ) { if (cmd == WR) { int da = ((cyl * dp_drv_tab[dtype].surf + surf) - * dp_drv_tab[dtype].sect + sect) * RP_NUMWD; + * dp_drv_tab[dtype].sect + sect); /* write block the block */ for (; uptr->DATAPTR < RP_NUMWD; uptr->DATAPTR++) dp_buf[ctlr][uptr->DATAPTR] = 0; - (void)sim_fseek(uptr->fileref, da * sizeof(uint64), SEEK_SET); - wc = sim_fwrite(&dp_buf[ctlr][0],sizeof(uint64), RP_NUMWD, - uptr->fileref); + (void)disk_write(uptr, &dp_buf[ctlr][0], da, RP_NUMWD); uptr->STATUS |= SRC_DONE; sect = sect + 1; if (sect >= dp_drv_tab[dtype].sect) { @@ -779,13 +772,11 @@ t_stat dp_svc (UNIT *uptr) uptr->DATAPTR++; if (uptr->DATAPTR >= RP_NUMWD || r == 0 ) { int da = ((cyl * dp_drv_tab[dtype].surf + surf) - * dp_drv_tab[dtype].sect + sect) * RP_NUMWD; + * dp_drv_tab[dtype].sect + sect); /* write block the block */ for (; uptr->DATAPTR < RP_NUMWD; uptr->DATAPTR++) dp_buf[ctlr][uptr->DATAPTR] = 0; - (void)sim_fseek(uptr->fileref, da * sizeof(uint64), SEEK_SET); - wc = sim_fwrite(&dp_buf[ctlr][0],sizeof(uint64), RP_NUMWD, - uptr->fileref); + (void)disk_write(uptr, &dp_buf[ctlr][0], da, RP_NUMWD); uptr->STATUS |= SRC_DONE; sect = sect + 1; if (sect >= dp_drv_tab[dtype].sect) { @@ -930,8 +921,7 @@ dp_boot(int32 unit_num, DEVICE * dptr) addr = (MEMSIZE - 512) & RMASK; for (sect = 4; sect <= 7; sect++) { - (void)sim_fseek(uptr->fileref, (sect * RP_NUMWD) * sizeof(uint64), SEEK_SET); - (void)sim_fread (&dp_buf[0][0], sizeof(uint64), RP_NUMWD, uptr->fileref); + (void)disk_read(uptr, &dp_buf[0][0], sect, RP_NUMWD); ptr = 0; for(wc = RP_NUMWD; wc > 0; wc--) M[addr++] = dp_buf[0][ptr++]; @@ -949,10 +939,10 @@ t_stat dp_attach (UNIT *uptr, CONST char *cptr) DIB *dib; int ctlr; - uptr->capac = dp_drv_tab[GET_DTYPE (uptr->flags)].size; - r = attach_unit (uptr, cptr); - if (r != SCPE_OK) + r = disk_attach (uptr, cptr); + if (r != SCPE_OK || (sim_switches & SIM_SW_REST) != 0) return r; + uptr->capac = dp_drv_tab[GET_DTYPE (uptr->flags)].size; dptr = find_dev_from_unit(uptr); if (dptr == 0) return SCPE_OK; @@ -961,7 +951,7 @@ t_stat dp_attach (UNIT *uptr, CONST char *cptr) uptr->CUR_CYL = 0; uptr->UFLAGS = (NO << 3) | SEEK_DONE | (ctlr >> 2); dp_df10[ctlr].status |= PI_ENABLE; - set_interrupt(DP_DEVNUM + (ctlr), dp_df10[ctlr >> 2].status); + set_interrupt(DP_DEVNUM + (ctlr), dp_df10[ctlr].status); return SCPE_OK; } @@ -973,7 +963,7 @@ t_stat dp_detach (UNIT *uptr) return SCPE_OK; if (sim_is_active (uptr)) /* unit active? */ sim_cancel (uptr); /* cancel operation */ - return detach_unit (uptr); + return disk_detach (uptr); } t_stat dp_help (FILE *st, DEVICE *dptr, UNIT *uptr, int32 flag, const char *cptr) @@ -982,6 +972,7 @@ fprintf (st, "RP10 RP01/2/3 Disk Pack Drives (DP)\n\n"); fprintf (st, "The DP controller implements the RP10 disk drives. RP\n"); fprintf (st, "options include the ability to set units write enabled or write locked, to\n"); fprintf (st, "set the drive type to one of three disk types.\n"); +disk_attach_help(st, dptr, uptr, flag, cptr); fprint_set_help (st, dptr); fprint_show_help (st, dptr); fprintf (st, "\nThe type options can be used only when a unit is not attached to a file.\n"); diff --git a/PDP10/kx10_rp.c b/PDP10/kx10_rp.c index 80b3552..166d58d 100644 --- a/PDP10/kx10_rp.c +++ b/PDP10/kx10_rp.c @@ -22,6 +22,7 @@ */ #include "kx10_defs.h" +#include "kx10_disk.h" #ifndef NUM_DEVS_RP #define NUM_DEVS_RP 0 @@ -36,14 +37,11 @@ /* Flags in the unit flags word */ -#define UNIT_V_WLK (UNIT_V_UF + 0) /* write locked */ #define UNIT_V_DTYPE (UNIT_V_UF + 1) /* disk type */ #define UNIT_M_DTYPE 7 -#define UNIT_WLK (1 << UNIT_V_WLK) #define UNIT_DTYPE (UNIT_M_DTYPE << UNIT_V_DTYPE) #define DTYPE(x) (((x) & UNIT_M_DTYPE) << UNIT_V_DTYPE) #define GET_DTYPE(x) (((x) >> UNIT_V_DTYPE) & UNIT_M_DTYPE) -#define UNIT_WPRT (UNIT_WLK | UNIT_RO) /* write protect */ /* Parameters in the unit descriptor */ #define CMD u3 @@ -345,6 +343,7 @@ MTAB rp_mod[] = { {UNIT_DTYPE, (RP07_DTYPE << UNIT_V_DTYPE), "RP07", "RP07", &rp_set_type }, {UNIT_DTYPE, (RP06_DTYPE << UNIT_V_DTYPE), "RP06", "RP06", &rp_set_type }, {UNIT_DTYPE, (RP04_DTYPE << UNIT_V_DTYPE), "RP04", "RP04", &rp_set_type }, + {MTAB_XTD|MTAB_VUN, 0, "FORMAT", "FORMAT", NULL, &disk_show_fmt }, {0} }; @@ -834,8 +833,6 @@ t_stat rp_svc (UNIT *uptr) } if (BUF_EMPTY(uptr)) { - int wc; - if (GET_SC(uptr->DA) >= rp_drv_tab[dtype].sect || GET_SF(uptr->DA) >= rp_drv_tab[dtype].surf) { uptr->CMD |= (ER1_IAE << 16)|DS_ERR|DS_DRY|DS_ATA; @@ -846,12 +843,8 @@ t_stat rp_svc (UNIT *uptr) } sim_debug(DEBUG_DETAIL, dptr, "%s%o read (%d,%d,%d)\n", dptr->name, unit, cyl, GET_SF(uptr->DA), GET_SC(uptr->DA)); - da = GET_DA(uptr->DA, dtype) * RP_NUMWD; - (void)sim_fseek(uptr->fileref, da * sizeof(uint64), SEEK_SET); - wc = sim_fread (&rp_buf[ctlr][0], sizeof(uint64), RP_NUMWD, - uptr->fileref); - while (wc < RP_NUMWD) - rp_buf[ctlr][wc++] = 0; + da = GET_DA(uptr->DA, dtype); + (void)disk_read(uptr, &rp_buf[ctlr][0], da, RP_NUMWD); uptr->hwmark = RP_NUMWD; uptr->DATAPTR = 0; /* On read headers, transfer 2 words to start */ @@ -945,10 +938,8 @@ rd_end: if (uptr->DATAPTR == RP_NUMWD) { sim_debug(DEBUG_DETAIL, dptr, "%s%o write (%d,%d,%d)\n", dptr->name, unit, cyl, GET_SF(uptr->DA), GET_SC(uptr->DA)); - da = GET_DA(uptr->DA, dtype) * RP_NUMWD; - (void)sim_fseek(uptr->fileref, da * sizeof(uint64), SEEK_SET); - (void)sim_fwrite (&rp_buf[ctlr][0], sizeof(uint64), RP_NUMWD, - uptr->fileref); + da = GET_DA(uptr->DA, dtype); + (void)disk_write(uptr, &rp_buf[ctlr][0], da, RP_NUMWD); uptr->DATAPTR = 0; CLR_BUF(uptr); if (sts) { @@ -1023,11 +1014,10 @@ rp_boot(int32 unit_num, DEVICE * rptr) #if KL int sect; /* KL does not support readin, so fake it by reading in sectors 4 to 7 */ - /* Possible in future fine boot loader in FE file system */ + /* Possible in future find boot loader in FE file system */ addr = (MEMSIZE - 512) & RMASK; for (sect = 4; sect <= 7; sect++) { - (void)sim_fseek(uptr->fileref, (sect * RP_NUMWD) * sizeof(uint64), SEEK_SET); - (void)sim_fread (&rp_buf[0][0], sizeof(uint64), RP_NUMWD, uptr->fileref); + disk_read(uptr, &rp_buf[0][0], sect, RP_NUMWD); ptr = 0; for(wc = RP_NUMWD; wc > 0; wc--) { word = rp_buf[0][ptr++]; @@ -1036,8 +1026,7 @@ rp_boot(int32 unit_num, DEVICE * rptr) } word = (MEMSIZE - 512) & RMASK; #else - (void)sim_fseek(uptr->fileref, 0, SEEK_SET); - (void)sim_fread (&rp_buf[0][0], sizeof(uint64), RP_NUMWD, uptr->fileref); + disk_read(uptr, &rp_buf[0][0], 0, RP_NUMWD); addr = rp_buf[0][ptr] & RMASK; wc = (rp_buf[0][ptr++] >> 18) & RMASK; while (wc != 0) { @@ -1071,7 +1060,7 @@ t_stat rp_attach (UNIT *uptr, CONST char *cptr) int ctlr; uptr->capac = rp_drv_tab[GET_DTYPE (uptr->flags)].size; - r = attach_unit (uptr, cptr); + r = disk_attach (uptr, cptr); if (r != SCPE_OK) return r; rptr = find_dev_from_unit(uptr); @@ -1082,11 +1071,13 @@ t_stat rp_attach (UNIT *uptr, CONST char *cptr) if (rh[ctlr].dev == rptr) break; } + if (uptr->flags & UNIT_WLK) + uptr->CMD |= DS_WRL; + if (sim_switches & SIM_SW_REST) + return SCPE_OK; uptr->DA = 0; uptr->CMD &= ~DS_VV; uptr->CMD |= DS_DPR|DS_MOL|DS_DRY; - if (uptr->flags & UNIT_WLK) - uptr->CMD |= DS_WRL; rp_rh[ctlr].status |= PI_ENABLE; set_interrupt(dib->dev_num, rp_rh[ctlr].status); return SCPE_OK; @@ -1101,7 +1092,7 @@ t_stat rp_detach (UNIT *uptr) if (sim_is_active (uptr)) /* unit active? */ sim_cancel (uptr); /* cancel operation */ uptr->CMD &= ~(DS_VV|DS_WRL|DS_DPR|DS_DRY); - return detach_unit (uptr); + return disk_detach (uptr); } t_stat rp_help (FILE *st, DEVICE *dptr, UNIT *uptr, int32 flag, const char *cptr) @@ -1111,6 +1102,7 @@ fprintf (st, "The RP controller implements the Massbus family of large disk driv fprintf (st, "options include the ability to set units write enabled or write locked, to\n"); fprintf (st, "set the drive type to one of six disk types or autosize, and to write a DEC\n"); fprintf (st, "standard 044 compliant bad block table on the last track.\n\n"); +disk_attach_help(st, dptr, uptr, flag, cptr); fprint_set_help (st, dptr); fprint_show_help (st, dptr); fprintf (st, "\nThe type options can be used only when a unit is not attached to a file.\n"); diff --git a/Visual Studio Projects/PDP10-KA.vcproj b/Visual Studio Projects/PDP10-KA.vcproj index 692fff6..dab7b7c 100644 --- a/Visual Studio Projects/PDP10-KA.vcproj +++ b/Visual Studio Projects/PDP10-KA.vcproj @@ -273,6 +273,10 @@ RelativePath="..\PDP10\kx10_dk.c" > + + @@ -621,6 +625,10 @@ RelativePath="..\PDP10\kx10_defs.h" > + + diff --git a/Visual Studio Projects/PDP10-KI.vcproj b/Visual Studio Projects/PDP10-KI.vcproj index 90ad3c0..f3fcd50 100644 --- a/Visual Studio Projects/PDP10-KI.vcproj +++ b/Visual Studio Projects/PDP10-KI.vcproj @@ -221,6 +221,10 @@ RelativePath="..\PDP10\kx10_dk.c" > + + @@ -541,6 +545,10 @@ RelativePath="..\PDP10\kx10_defs.h" > + + diff --git a/Visual Studio Projects/PDP10-KL.vcproj b/Visual Studio Projects/PDP10-KL.vcproj index c8cdec2..e4df28c 100644 --- a/Visual Studio Projects/PDP10-KL.vcproj +++ b/Visual Studio Projects/PDP10-KL.vcproj @@ -221,6 +221,10 @@ RelativePath="..\PDP10\kx10_df.c" > + + @@ -497,6 +501,10 @@ RelativePath="..\PDP10\kx10_defs.h" > + + diff --git a/Visual Studio Projects/PDP6.vcproj b/Visual Studio Projects/PDP6.vcproj index 7e0891c..b11cd9c 100644 --- a/Visual Studio Projects/PDP6.vcproj +++ b/Visual Studio Projects/PDP6.vcproj @@ -245,6 +245,10 @@ RelativePath="..\PDP10\pdp6_mtc.c" > + + diff --git a/doc/ka10_doc.doc b/doc/ka10_doc.doc index a3e39bf100df15eaf2250a7cc6877a1ae3753b1f..8110df02322ade20d1c405a73112e71e517f4446 100644 GIT binary patch delta 22080 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 delta 20372 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 E1B(oD@c;k- diff --git a/doc/ki10_doc.doc b/doc/ki10_doc.doc index c772f57e215d953360eb1ae7760700aa480941c5..d202f9ea2e899555deb5c938301a0483301b1722 100644 GIT binary patch delta 15244 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 diff --git a/doc/kl10_doc.doc b/doc/kl10_doc.doc index e1184954786c3cb26d7098634dbc1acef5f3cf3a..9fe1eb6990bf4ca12c8e985b4d057b4d8b5a6be0 100644 GIT binary patch delta 15102 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 delta 13810 zcmc)Re_T~%p1|?vIU*t>B!q}`y#lErDWVx;W{8MJbR!}na?FT`h{()b#~c!e%*>D_ zFT){*Wy~QX*D(TyOGHSnLyQr_u#V%HYebBhFNY!47vrSM?&o{ML`{vq7GCemx#yhc z{Cdu>@AG}wu+e?PsnG>t`p56i`c&)iY7gW6QC@~p>NZ3|bx!{ANc&$#PjXG@FP}8O zyLw>sO3$&sOI6B6DT~bczx>#LJ~F^w=4S~Bo1oOxNlKMYQ7R=$slphg+~bt;eL|_q z=akyBRjIUJE4BF(d(nu{9Ob4|lrIYkR4U^RrRo+kE5%~48LjYMq*N-}5f`o0F8C}~ zDiOQUi>M_^tw$>Y?o=uhZmc>TTTqMR@VQH=1mxr3T`EUK#PS98Fz!|=7|T(FHf*;k z)rHCTurO4h2Xok`Y&5~`UZvtu44-(VmSG1@Bl13_HYIQza0tQob6ik}-urXd(?nK+ zF1SCS)Ldj?2aduoiG?E*<>*52gGwb~6WZXHtW+LaF!mvK0L3^2|D_x$iT}YgyLw9I+RvnvJaEC3bid)wNkE&sUVnY2+jFRSsbuE8I%mZ&PZU zojoa3D%xZrud||3rOI|F6;ZBKKD7Go`5gB{KI44=bi3@bwz9z!1T@ge$f8dE(u5o0|#l*mCbO3(`B$zjB; z$ifP|fi|>b#C1wd!A)3-Y^=w-Xu>|6#)z>>jl^6;V+mfHO_gH*NIvYT)y0$E7-@fh z%2fNWrnuUpp7WLA>R(L>9g%aFl&~oE-Xx_?aI@GpgTsZp!<4#m|FlsXGbtWwjtgtk0HJ*RL@qWn=#wp7_5 z_MRWjpl#aI|8LtcLbgEZ>bW6rxn3`KUimRNAkLrPrB?Tam5#XOK6;-@5N&mSARHX!3cZ7NNd&Hmqyz+#Jr+s+ZR4J-rgCx)$W$%%iovn z+p{e8J0f4Tr#$Uf?GgR;sBJcjvE>uH)pnzY^X~6l8;8msXAAOrf^VF2JQA*RUSg&8 zpW9xT#!W?evpwA|-_9(b$EI@E8NsQ1J!b=3HqV!f-yZ04gZ~}lxjeaw-mxlmiaCEt zjdL4O?@zV=+%0@uatKcY3e->MgkbdVSlDeKePx<^wQWWJ2z%kPHv7zAS9?Z`FLSw8SFW0D zsb2Z7J0q(te>`C5fa-Vtbl>z^SDiMZ*3btHuK}K(VlMS|8wTEe^akxn8?CjUse|+l zIfdLYico@5gmB?chuj$Ye7LsYKaMjQR%}2nHex3#unW7f2V*%*-tfVEL?9CK7>>qH zRA3j{e7Q5VGthy9IE1-W&^*jX9O99HL?odWb*RS}KkgqG3vc*fHP&D)T5tfZXhS>X z72>SwJ0ZX73)BBbeLP3T&Bh!Qp%^77MHvR5{JAQy6w9z2DM-bBG@}K^4O|d#g&W+F zg%wzdMl@j`_M`a*4ni>Zo)An&J_@i6g($)qe1mhaP2`{;0f|UL9qQ456F7w)^r8=m zob5?SMlLpCGqxbl%2xC+(2G7;xg>%x8B@&(Q}mZP^3D~EEyzPY>d}ZM?8AOc4PZWm zAQ{WB94Sb}el(*6K7qViz#sC0X2k~NVk0`yjpKnFAh{`@L~IZT0C6ZlA&O9p5}d;T z)QucWgkd)3ARI*~MhVVAO{T`+0#{@p6InQj!#FaT19X&uV~Cu>xr}HOqtu*mla9-I zokx|cn|{De8*ci#5t;ow+J=6A;F9lEJQs&f_qyc!3hr}5r+>`lIP`n)(C;o`=JA`f ze~!Ermti}0z=hk8E8MUIv9KWy@u)%#YH=E8@D0vk04X<7Ye+*jHXs)pu?fd<0w-Yv zQ%kPFtPJiLgB4hbRoIBl*n&LdV;c&w2bG8pWm+WDkh_ptLMh6z6Sa_c`2A?cQ5-`j zx)xHMK2e-c2t^oXV-A+Uh7>b!nqD}nu1@h=XFfSiN8~hnU3_S#T=G4aN8!*z{~6Dk z@4mZ)#m?k0I3jcY(6J*p4^)fEqPYto4e6-B9yDPeycctYAq3NrfMjGM3%gJ`nU8(gj~<-H09=+(mvD!V z`EH25J|~;OT$G{=2hfgg9EbHzt|!dHd}Lr1R^udGV^}2oVL>oLFdd;tgM?Houo9ag z;ng+}>2ZmiJ^y>we0HY3(M-8n`?~k59)7=2pMGlYx>+aXNKjYj-Xe$5cqf7>3zc28kZikd8t~Bw30ww4&{9PN)tB*4mhWGDw(N zk7MYBgq-IPa1VESNcb6nRHQ*d(G4iaPDog~A184N5~51jeMbH5a^?#&w7csW=QMN6 z3_ZvEaE4xxBlCx0HYB`Fz*?+>gu2COKqDmVJqDM1IcXpv@Ko3k2MLE)pb$ln(6|cj z@!WUdjoC=XQV=rdsC5jKVLK##-iKcFL1O8#_fczzfW*}u4^!okC^Z-%NI)XiAsZzq zMI)N95B-p+)<1=_91)02d72~3Ksqu|iOG+#SIEK&ti+NuwiwG$0tt(&P=h|4hWq2} zC1N2Vb1KrX3$9Oa3wc7B&)%$On7^2*XPSS!MNc*VHj~R&8c6~Wgj{Sy5w>Foj0}!A z3Nsmpa_qux^q?05FrK1D;Ep+vP(2ETHj5(#4-L8x#2R=Y9qUf6d>_(&Ig!^gjQ%k*A8;GE+~?@llV)@?P$?DAtc5KlOlY zL<7dI=H!Pj{IGNlFT+@i18BtwoJ7P=xt-x8PN5H{v1BcGEF@zoQjm%o)S`JUN3w;1 zLpTh}^V~-fiZH|=7J1l)LL9>WpHUbsIDwOh%;ut7&&D7Up}8yro#;j{PNU#OmW2VR zoQ+&GSb?KBhKQF~0HpoLhE*@~+(8$*k+7L_2{ow2zE{{FoY=yKApTY6K}sGcF{C9? z>a|~e%^#<)&VSBl#CKn$I=@z(pQ^9Fc2?Y9)L+z}zWeRJWT;=66}RXRvx90h|2j*L z%}JCswc!Y)k;*ln7opeKdaS`(6r%*vfE9yS>_9mV;V`D#IebV!A_~w6qmauQuJDB) zA`pp~Lh3S^fu-1hTr{HIaIUoji>I`xTI z*bs+2w4wtCbNDF!B{v+DV-MQV0k=|abeIEarkjVxH`oxI!8cgGgAKr16rmWUkS4w9 zzh(ol1kx&e_P=>gkdNb3DMR8B=P2jM!O@>H;k!B2=jXrnD2C3;gdXSMx63*|qg#Be zi&_rlxrj?M+)c|B`Y;#lAAhVT=R72GuLkFn>2fEP-){Ap{L<8t>N$D@&nBg~NpfGbn60*zVYNQwtKVNXz}6ZiB_~hnnk3!Bg*mcJpF6EP?|QR^+H-G zq!mJ18l>ewS_h;BK%#sJ-f zkl;!Jt2omu;lfUNOIj!%5^G7EwJX~6j@5s@(sn(h7msDG-H>QZA~7G+E9uHR@)!jc zvk#DPO+vNAs}_(wm;6)`B%qUEZud1y>}IY#sDwm&z1J$?A-S(UNKEK%dMwjNue8q( z>qIKYYuS}|Qnp!gXd93V2_UKdYm|_TTN@1vN-%4M1heU;SC;N`eRtG*o_9_%{}81u=Kn@% zPjkUDdauRx9_2e(-<7TvKQ0pMW3Qgu!``*tYiSvr5=o2MK$R zUwu}Ih)+NwVxPONx&aa_`$B@{gsaagadaXij?QP+wR)l+={z20*z>yGQ{w6ZNL+pJ zs*9R%kXa5vLT(ASCDfKMJHqr>%Ue`@w)U3~5BuNdY&UyWXb*Ed_lNT3n1Zm{biFqB|2|_MCZocm+gv&MC&e)Xg%2BvGJ0nOYj~73Er1q zK3QV<6i6&zbopcn?TaCyecNS|CrbXf9Y>I23q+Cv=!_` z#o+h~hIc{Q44mx+gX5*$pcm2>;A{tQcooX>r9B`V(k9?+4;UOT?E>o|Z3B&H8XPa} z1N(3c&h`O^SBWe~+6mktZ3WJDg2D09UXTE3GjO&S433v}gAz#FfwUX=IK0YbIg)1g zg|s0!+YcOGJ7m11-j_p~5}eHlgX5(+p&Zhr;A~D9952lZ{g9>wXS0ICtAgcBljeme zL}Lj;6L^>+8EIGpN$VGzx5pV%9ry0h?`lsOu^IU&OfWqw^<$%-b9rUVL)ZP*5@Ygo zzRmnBN{?~ut<($kIO!2kgId%E|IR+;G-PT~}L z;C?^bkKp^wm7Uzo=GEv&FO+uhWRBBjZ=Uw>A0@pHLNFb(F&EMs;U8wCyR5gJ>vKV^ zj<`_Vbgq1FEnDm_bEYBj~1wp$IjoLl1g!pBdT3tIvWi z?hUqj{nU_xP4&E^OpuxS;GIYe@Y~J&LxY~BC&-+!NJl2h zAU!OuS$ZF@Pkzj}1A9<~PDs~`YZi8{TITFV4^G4F0jdW-thCHI1{MS%9MT=+nx$K0 z!z+Or0>c_6@B3HiXJC3 z9YZ%x!Z(Q*EYquv(EHm;zS1haq+5(Xf-xQOQY!nh6QYe1Vw`lJNkAgfAzf)MobmTw zT4--OC%d=IRDf+LM0t{VbB(r`3l4IP+}@$XFD=Fex*K=6aZSb%g9l70;~#33F@!&yKQ1(sqRvaueU zhO+?aoU{cEXhaj*hO+?a+0=n^7=TLVy5+H)d~C-~)Iqvo4L$W2)H~mQ?l9v!SiHSX z`wUs=w|6`#asXX80re2~bPR7X9#X^`!3Z@yy7aE0YwFT5+G{0~R%0`ykJ#|mFhPox zU=OO$4C!Vz%*9BN!#If^crWF0#xNHnMJxzGC~T0qv%9Gq}Sds7b8W~PdK#j!yHJ*zhN#$ibNm=ama=A9USIjq(~l$ zP>OaO#xNHnMUJ2wCt+R2yCjCW7%38rFoa_jqz~lK$K8SkuG$$c*UMEKc;PY{`lca8 zvau1HQ2^;iIn2dKkrGs*79BW(p^Lfl>yFHM6z5<(%zi=oaQ?8;GUsf>BN>|@y+40g zX_>PCdr%9>$VtD^A5?mr%y|r*ShJkBrAK&MGRL_aYrpq!2T7h!a(t5COM>M0B)3-v z$?KhY#9TSXus9;d82hxpWca>;C54wFL?HuJDW=um2zSJL8kIVziZL~)g{1o=%~u6U z^GS-YG|dcMW=wP3J=XZG_LpQ|86?>!iN1bFqR;mD;4-~gW}u|};vgx%-PnUlxI95H zgdj(tkMWrfk~E*B_%=b(d#)KA1Gu9QMH!|w!B}J_`xrNICjQ7_`WjE_iPHJ@l+2RJ z;vreTK1jAN+%eJ5_(EGH<2M(Q<;%~alCTZO(3$1n0CeeT(tB4jdy>^NR&bd=!*PXV z@k$}tJIUPrj~VD^OmIY5j7IG*Bf20dJW1azg=Fk1pB+2|RynMayQ_la>&C9)CIlZ8 zV>jwonbx^Rykk{>k*_C6*Wm_8Hm?W0kc^(y3=A+PnltRl7^EMoTT0)<(2|Txy2**Mb19-ylApH;f{<@qgeY(-|AkB*~l4-pa#9@!Sw|r(qJ0$%mX~$BOLDG)@ zGz0y)Oe3N>r-EdJ3@Ml46w9V%zJ3>$S;x z+ZfXhNi_DuR>B$iOTHt#)M1U2^-5xKE(#&ZMM)}3LNOI(I~>+{nMtyVl1U7Mr12z$ zR|QGmMU*?ZkJ8#8IlM?n4lnjiR)pqES_ZW8Xy_GsJDjBCAqw4 zNG?zEcy(w;a>dZOB%!wylF*Z6-XTab&-V6^xkBYX8R8I+IseX`>K!h<8kSW{V1aq> z@koWF`gXkM;DOYkt&;C6hvfQZ*HaMTker|GeTQ|q92Og2G8%ZS!RG_c6If7+vJV{A z6lR(t|2$ES!#ILY1T}I-A_Ve}6|_u|u5v`AQf>Y+VhysfAI)gNxyHduFOB0ECI5>t z0JWE6fb}Rt2O^s|f3Y3)=)=MP;I!P&W%)a*4zA74N3UsFK-6^p!{70%bmLL&>DtT% z0Z$}0o3zY-ZvH*Pn5^AQpC^q|o{5Z4!ZK7eJ3KRuK+UwUr;K*b3dZe1C5(?Qo+ke= z;({?)eaW=dj9UZgXYbi^aXHTx?lbU3$;Hz`gxJAA^PscglSYtdmN-Oi9 WFBmy`%v;Z|H?+1m*5w$RjQ;~Iefh-z diff --git a/makefile b/makefile index 6c3371a..1a4cd19 100644 --- a/makefile +++ b/makefile @@ -1978,11 +1978,11 @@ ifneq (,$(BESM6_BUILD)) endif SEL32D = ${SIMHD}/SEL32 -SEL32 = ${SEL32D}/sel32_cpu.c ${SEL32D}/sel32_sys.c ${SEL32D}/sel32_defs.h \ - ${SEL32D}/sel32_chan.c ${SEL32D}/sel32_iop.c ${SEL32D}/sel32_com.c \ - ${SEL32D}/sel32_con.c ${SEL32D}/sel32_clk.c ${SEL32D}/sel32_mt.c \ - ${SEL32D}/sel32_lpr.c ${SEL32D}/sel32_scfi.c ${SEL32D}/sel32_fltpt.c \ - ${SEL32D}/sel32_disk.c ${SEL32D}/sel32_hsdp.c +SEL32 = ${SEL32D}/sel32_cpu.c ${SEL32D}/sel32_sys.c ${SEL32D}/sel32_chan.c \ + ${SEL32D}/sel32_iop.c ${SEL32D}/sel32_com.c ${SEL32D}/sel32_con.c \ + ${SEL32D}/sel32_clk.c ${SEL32D}/sel32_mt.c ${SEL32D}/sel32_lpr.c \ + ${SEL32D}/sel32_scfi.c ${SEL32D}/sel32_fltpt.c ${SEL32D}/sel32_disk.c \ + ${SEL32D}/sel32_hsdp.c SEL32_OPT = -I $(SEL32D) -DSEL32 #SEL32_OPT = -I $(SEL32D) -DUSE_INT64 -DSEL32 @@ -2012,7 +2012,8 @@ PDP6 = ${PDP6D}/kx10_cpu.c ${PDP6D}/kx10_sys.c ${PDP6D}/kx10_cty.c \ ${PDP6D}/kx10_lp.c ${PDP6D}/kx10_pt.c ${PDP6D}/kx10_cr.c \ ${PDP6D}/kx10_cp.c ${PDP6D}/pdp6_dct.c ${PDP6D}/pdp6_dtc.c \ ${PDP6D}/pdp6_mtc.c ${PDP6D}/pdp6_dsk.c ${PDP6D}/pdp6_dcs.c \ - ${PDP6D}/kx10_dpy.c ${PDP6D}/pdp6_slave.c ${DISPLAYL} ${DISPLAY340} + ${PDP6D}/kx10_dpy.c ${PDP6D}/pdp6_slave.c ${PDP6D}/kx10_disk.c \ + ${DISPLAYL} ${DISPLAY340} PDP6_OPT = -DPDP6=1 -DUSE_INT64 -I ${PDP6D} -DUSE_SIM_CARD ${DISPLAY_OPT} ${PDP6_DISPLAY_OPT} KA10D = ${SIMHD}/PDP10 @@ -2031,8 +2032,8 @@ KA10 = ${KA10D}/kx10_cpu.c ${KA10D}/kx10_sys.c ${KA10D}/kx10_df.c \ $(KA10D)/ka10_pmp.c ${KA10D}/ka10_dkb.c ${KA10D}/pdp6_dct.c \ ${KA10D}/pdp6_dtc.c ${KA10D}/pdp6_mtc.c ${KA10D}/pdp6_dsk.c \ ${KA10D}/pdp6_dcs.c ${KA10D}/ka10_dpk.c ${KA10D}/kx10_dpy.c \ - ${PDP10D}/ka10_ai.c ${KA10D}/ka10_iii.c ${DISPLAYL} ${DISPLAY340} \ - ${DISPLAYIII} + ${PDP10D}/ka10_ai.c ${KA10D}/ka10_iii.c ${KA10D}/kx10_disk.c \ + ${DISPLAYL} ${DISPLAY340} ${DISPLAYIII} KA10_OPT = -DKA=1 -DUSE_INT64 -I ${KA10D} -DUSE_SIM_CARD ${NETWORK_OPT} ${DISPLAY_OPT} ${KA10_DISPLAY_OPT} ifneq (${PANDA_LIGHTS},) # ONLY for Panda display. @@ -2051,7 +2052,8 @@ KI10 = ${KI10D}/kx10_cpu.c ${KI10D}/kx10_sys.c ${KI10D}/kx10_df.c \ ${KI10D}/kx10_rh.c ${KI10D}/kx10_rp.c ${KI10D}/kx10_rc.c \ ${KI10D}/kx10_dt.c ${KI10D}/kx10_dk.c ${KI10D}/kx10_cr.c \ ${KI10D}/kx10_cp.c ${KI10D}/kx10_tu.c ${KI10D}/kx10_rs.c \ - ${KI10D}/kx10_imp.c ${KI10D}/kx10_dpy.c ${DISPLAYL} ${DISPLAY340} + ${KI10D}/kx10_imp.c ${KI10D}/kx10_dpy.c ${KI10D}/kx10_disk.c \ + ${DISPLAYL} ${DISPLAY340} KI10_OPT = -DKI=1 -DUSE_INT64 -I ${KI10D} -DUSE_SIM_CARD ${NETWORK_OPT} ${DISPLAY_OPT} ${KI10_DISPLAY_OPT} ifneq (${PANDA_LIGHTS},) # ONLY for Panda display. @@ -2065,7 +2067,8 @@ KL10 = ${KL10D}/kx10_cpu.c ${KL10D}/kx10_sys.c ${KL10D}/kx10_df.c \ ${KL10D}/kx10_mt.c ${KL10D}/kx10_dc.c ${KL10D}/kx10_rh.c \ ${KL10D}/kx10_rp.c ${KL10D}/kx10_tu.c ${KL10D}/kx10_rs.c \ ${KL10D}/kx10_imp.c ${KL10D}/kl10_fe.c ${KL10D}/ka10_pd.c \ - ${KL10D}/ka10_ch10.c ${KL10D}/kx10_lp.c ${KL10D}/kl10_nia.c + ${KL10D}/ka10_ch10.c ${KL10D}/kx10_lp.c ${KL10D}/kl10_nia.c \ + ${KL10D}/kx10_disk.c KL10_OPT = -DKL=1 -DUSE_INT64 -I $(KL10D) -DUSE_SIM_CARD ${NETWORK_OPT} ATT3B2D = ${SIMHD}/3B2 @@ -2142,7 +2145,7 @@ ALL = pdp1 pdp4 pdp7 pdp8 pdp9 pdp15 pdp11 pdp10 \ scelbi 3b2 i701 i704 i7010 i7070 i7080 i7090 \ sigma uc15 pdp10-ka pdp10-ki pdp6 -ALL = b5500 i701 i704 i7010 i7070 i7080 i7090 pdp10-ka pdp10-ki pdp10-kl ibm360 ibm360_32 icl1900 pdp6 sel32 +ALL = b5500 i701 i704 i7010 i7070 i7080 i7090 pdp10-ka pdp10-ki pdp10-kl pdp6 ibm360 ibm360_32 icl1900 sel32 all : ${ALL}