1
0
mirror of https://github.com/rcornwell/sims.git synced 2026-01-13 15:27:04 +00:00

SEL32: Correct TIO return CC's.

SEL32: Adjust UDP/DPII disk timing.
SEL32: Add missing seek to 0 in SCSI disk boot code.
SEL32: Add MPX/UTX self installing .ini and .tap files.
SEL32: Update README.md to reflect new test images.
This commit is contained in:
James C. Bevier 2021-12-30 11:12:28 -07:00
parent 595ab1d8b8
commit bc3a49d18c
27 changed files with 262 additions and 66 deletions

View File

@ -10,7 +10,8 @@ added in the future.
# SEL Concept/32
This simulator is capable of running UTX2.1A, UTX2.1B, MPX 1.5F, MPX 3.4,
MPX 3.5, and MPX 3.6. It is capable of creating a disk image for the
MPX 3.5, MPX 3.6, and SEL diagnostics. Actually any software using the SEL
instruction set should work. It is capable of creating a disk image for the
O/S from a UTX or MPX SDT tape. The disk image can be booted, initialized,
and can run many of the UTX and MPX utilities and programs. Ethernet is
supported on UTX and will be added to MPX in the future. Eight terminals
@ -20,54 +21,177 @@ support for excess 64 floating point arithmetic and passes the 32/27 and
ported to the V6 and V9 processors. UTX utilizes the basemode instruction
set and a virtual memory system supported by the V6 & V9 CPUs. The system
needs further testing to solidify the SEL32 simulator code in all of the
supported environmenets.
supported environmenets and hardware configurations.
The sim32disk.gz file is a prebuilt MPX 1.5F system disk. It can be
uncompressed and booted with the sel32.27.sim32.disk.ini initialization
file. The sim32sdt.tap.gz file can also be uncompressed and started with
the sel32.27.sim32.tape.ini initialization file to do a sdt install to
disk from tape. There are three test versions of UTX. Utxtest1a.ini,
utxtest1b.ini, utxtest1c.ini are three initialization files to build a
UTX 2.1A system. Utxtest1a.ini builds and loads the root filesystem on
/dev/dk0a. Utxtest1b.ini boots the new root file system from disk and
builds the usr file system on /dev/dk0d. Utxtest1c.ini boots the UTX
system from disk and enters multi-user mode. Utxtest2[a-c].ini files
do the same thing for UTX 2.1B. Utxscsi[a-c].ini builds a MFP SCSI disk
UTX 2.1B system. There is also auto installation command files to do
an MPX/UTX installation from tape to disk without intervention. For
UTX21a use load21a.ini to install. Use run21a.ini to run the installed
system. For UTX21b use load21b.ini to install. Use run21b.ini to run
the installed system. For MPX1X use load1x67 to install MPX 1.5F. Use
run1x67.ini to run the installed system. For MPX3X use load3x67.ini to
install MPX 3.4. Use run3x67.ini to run the installed system. Another
MPX install file is user36esdtp2.ini which will install an MPX 3.6
system along with the current development NBC software. Use the file
user36erunp2.ini to run the system. These files are located in the
tests directory in the https://github.com/AZBevier/sims archive. The
install tapes are in the tests/tapes directory.
Note: Not all of the command files described below may be in the tests
directory for the github.com/AZBevier/SEL32-rcsim repository. All will
be in the github.com/AZBevier/sims repository along with any new versions
that are being tested. Feel free to copy them to your local tests
directory. They may be added to the SEL32-rcsim repositary at some
later date.
In the tests directory there are multiple auto installation command files
that do MPX/UTX installs from user distribution tapes. This replaces the
prebuilt disks from previous releases. This allows more versions to be
supplied in the minimum amount of storage space. Minimal or no user input
is required to create the bootable system. The command files are in pairs,
one to do the install and one to execute the installed system. Some MPX
systems also contain some of the NBC software environment. See the NBC
project at github.com/AZBevier/nbc for all of the NBC software.
# SEL32 installation configuration files in the tests directory:
#sel32_test.ini - diag.tap; type "../sel32_test.ini" or run from makefile.
Auto run by sel32 makefile to validate build or can be run at any time
to validate system functionality.
#diag.ini - diag.tap; type "../sel32 diag.ini" to run.
This is the SEL32 memory diagnostic that validates the SEL32 instruction
set and memory management sumulated hardware. Any errors are reported
to the terminal. Different cpu models can be configured to test various
cpu model features.
--------------------
The rest of the command files are zipped to reduce project storage space.
The software distribution tape files are also zipped in the tapes
directory. All zipped files must be unzipped to be useable. See the
MPX manuals at bitsavers.org/pdf/sel/sel32_mpx for using MPX 1X or 3X.
--------------------
#sel32load1x.ini - sel32sdt.tap; type "../sel32 sel32load1x.ini
This is a minimal MPX 1.5F installation to a UDP/DPII 300 MB disk. It
will initialize the disk and install MPX bootable software. The disk
image is in the dsk directory named sel32disk.
#sel32run1x.ini - dsk/sel32disk; type "../sel32 sel32run1x.ini" to run.
The disk is booted up to the TSM> prompt logged in as "SYSTEM". Use
@@A to log in to the system console.
--------------------
#loaddma1x67.ini - mpx1xsdt.tap; type "../sel32 loaddma1x67.ini
This is an MPX 1.5F installation to a UDP/DPII 300 MB disk. It will
initialize the disk and install MPX bootable software. The disk
image is in the dsk directory named mpx1xdma0. Once the MPX software
is loaded an MPX command file is executed that runs the SYSGEN program
to create a new MPX O/S image. That system is then restarted to
install the new image to the disk as the new bootable image. The
system reboots to the new image, logs in as SYSTEM and exits TSM.
Use @@A to relogin to the console.
#rundma1x67.ini - dsk/mpx1xdma0; type "../sel32 rundma1x67.ini" to run.
The disk is booted up to the TSM> prompt and logged in as "SYSTEM".
MPX can be accessed from a second Linux screen by using the command
"telnet locallhost 4747". This will bring up the "ENTER OWNERNAME
AND KEY:". Any name is valid, but SYSTEM should be used. At the
"TSM>" prompt, type "EXIT" to exit TSM. Use ^G to get the login
prompt when the "RING IN FOR SERVICE" message is displayed.
--------------------
#loaddma21b.ini - utx21b1.tap, utx21b2.tap, utx21b3.tap;
type "../sel32 loaddma21b.ini" to install UTX 21b to UDP/DPII disk.
This is an automated installation of UTX 21b to disk. Two disks,
21bdisk0.dma and 21bdisk1.dma are initialized and then the file
systems are created and loaded. Tape 1 loads "/" and tape 2 and 3
loads "/usr.POWERNODE" filesystems. The system boots from tape and
installs the root filesystem. The system restarts and boots from
the new root filesystem where the 2nd & 3rd tapes are then loaded to
/usr.POWERNODE. A third empty file system is created and mounted
as /usr/POWERNODE/src. The second disk is one large filesystem and is
mounted under /home. Several files are modified during installation
to allow the system to be booted into multiuser mode. Only the user
"root" is created and is the only allowable user login.
#rundma21b.ini - dsk/21bdisk0.dma & dsk/21bdisk1.dma;
type "../sel32 rundma21b.ini" to run the installed UTX system.
The disk is booted up to the "login:" prompt for the user to login
as "root" in multi-user mode.
--------------------
#loadscsi21b.ini - utx21b1.tap, utx21b2.tap, utx21b3.tap;
type "../sel32 loadscsi21b.ini" to install UTX 21b to MFP SCSI disks.
This is an automated installation of UTX 21b to disk. Two disks,
scsidiska0 and scsidiska1 are initialized and then the file systems
are created and loaded. Tape 1 loads root "/" and tapes 2 and 3
loads "/usr.POWERNODE" filesystem. The system boots from tape and
installs the root filesystem. The system restarts and boots from
the new root filesystem where the 2nd & 3rd tapes are then loaded to
/usr.POWERNODE. A third empty file system is created and mounted
as /usr/POWERNODE/src. The second disk is one large filesystem and is
mounted under /home. Several files are modified during installation
to allow the system to be booted into multiuser mode. Only the user
"root" is created and is the only allowable user login.
#rundscsi21b.ini - dsk/scsidiska0 & dsk/scsidiska1;
type "../sel32 rundscsi21b.ini" to run the installed UTX system.
The disk is booted up to the "login:" prompt for the user to login
as "root" in multi-user mode.
--------------------
#loadscsi3x.ini - mpxsdt69.tap;
type "../sel32 loadscsi3x.ini" to install MPX 3.4 to MFP SCSI disks.
This is an automated installation of MPX 3.4 to disk. Two 300MB disks,
mpx3xsba0.dsk and mpx3xsbb0.dsk are initialized and then the file
systems are created and loaded. The user sdt tape contains system
and user files that are loaded to multiple directories. The second
disk is initialized and formatted and only a system directory defined.
The install is exited and @@A is used to login into MPX. The username
SYSTEM is used to login into TSM without a password.
#runscsi3x.ini - dsk/mpx3xsba0.dsk & dsk/mpx3csbb0.dsk;
# - dsk/scsi35m1disk0 & dsk/scsi35m2disk0;
type "../sel32 rundscsi3x.ini" to run the installed MPX system.
The disk is booted up to the MPX message "Press Attention for TSM".
Use @@A to get login prompt. Login as SYSTEM. The WORK volume will
be mounted along with the SYSTEM volume and the system is ready for
use. MPX can be accessed from a second Linux screen by using the
command "telnet locallhost 4747". This will bring up the "Connected
to the SEL-32 simulator COMC device, line 0". Use ^G as the wakeup
character to get the "ENTER YOUR OWNERNAME:" login prompt. Any name
is valid, but SYSTEM should be used. At the "TSM>" prompt, type
"EXIT" to exit TSM. Use ^G to get the login prompt when the "RING
IN FOR SERVICE" message is displayed.
--------------------
#user36esdtp2.ini - user36esdtp2.tap;
type "../sel32 user36esdtp2.ini" to install MPX 3.6 to HSDP disks.
This is an automated installation of MPX 3.6 to disk. A 300MB system
disk volume (user36p2udp0) and a 600MB work disk volume (user36s1udp1)
are initialized and then the file systems are created and loaded using
the volumgr. The user sdt tape contains system and user files that
are loaded to multiple directories. The second disk is initialized
and formatted and only a system directory defined. The disk is mounted
as the volume "work" as the 2nd disk drive. The installed MPX system
also has 2 scsi disks configured into the system. Two 700MB SCSI disks
are created, but they are not initialized and no directories are
created. The usage of these disks is left as an exercise for the user.
A third HSDP 600MD disk is also configured in MPX, but not used. The
user can provide other data volumes that can be mounted for use on the
system. The install is exited and @@A can be used to login into MPX.
The username SYSTEM is used to login into TSM without a password. Any
username is valid until an m.key file is created for valid user login.
#user36erunp2.ini - dsk/user36p2udp0 & dsk/user36s1udp1;
type "../sel32 user36erunp2.ini" to run the installed MPX 3.6 system.
The disk is booted up to the MPX message "Press Attention for TSM".
@@A is used to get the login prompt and the user is logged in as SYSTEM.
The WORK volume will be mounted along with the SYSTEM volume and the
system is ready for use at the TSM> prompt. The install tape also has
some of the NBC development system. A complete installation tape is
available at github.com/azbevier/nbc.
--------------------
Available tap tools in taptools directory:
./taptools - set of tools to work with .tap formatted tapes. Also tools
to convert between MPX and UNIX file formats. See README
file and source for descriptions.
Available disk images:
sim32disk.gz - bootable 300mb disk with MPX1.5F installed. Unzip before
any attempt to use it. Use sel32.27.sim32.disk.ini command
file to start MPX 1.5. Type "./sel32 sel32.27.sim32.disk.ini"
Available configuration SDT tapes:
sim32sdt.tap - MPX 1.5f user SDT install tape. Uses 300mb disk, IOP 8-line
serial terminals via telnet port 4747. Line printer, 4 mag
tapes and console terminal. Terminal wakeup chan is ^G and
console wakeup chars are @@A. Install using TSM from console
after exiting opcom. Use filemgr to restore files from tape.
TSM> A3 IN=M91000,TAP
TSM> A4 SLO=UT
TSM> FILEMGR
FIL> RESTORE
FIL> X
file in the taptools directory and source for descriptions.
Available Level One Diagnostic boot tape in tests directory:
diag.ini - command file to start diags. Type "./sel32 tests/diag.ini"
@ -101,16 +225,6 @@ diag.tap - bootable level one diagnostic tape w/auto testing.
Testing is extremely difficult without any source for the
diagnostics. Updates to follow as tests are corrected.
Available UTX-21a install tape for testing:
utxtest1a.ini command file to start UTX install tape. "./sel32 utxtest1a.ini"
utx21a1.tap bootable UTX install tape for testing basemode. The current
V6 & V9 will boot UTX into single/multi user mode. You can run
the full set of the commands that are on the installation tapes.
Prep, the disk preparation UTX program, can format a disk
drive. Other file systems can be created and saves restored.
All basemode instructions have been tested with the CV.BRD diag.
The virtual memory has been fully tested with the VM.MMM diag.
Other MPX verions support:
I have recently received some old MPX 3.X save tapes. Using these
I have been able to hand build a MPX3.6 SDT tape that can be used
@ -118,8 +232,11 @@ Other MPX verions support:
a new user SDT tape and install it elsewhere. Both based and non-
based O/S images can be created. More images for installation will
be made available in the future as I work my way through the save
tapes.
tapes. I still do not have a master SDT tape for any of the MPX 1.X
or MPX 3.X systems. I have a 1600/6250 BPI tape drive that can read
9 track tapes and convert them to .tap files. If you have a master
SDT, I would be very thankfull. Please keep looking.
James C. Bevier
08/25/2021
12/29/2021

View File

@ -1744,7 +1744,8 @@ t_stat testxio(uint16 lchsa, uint32 *status) { /* test XIO */
WMW(chan_icb+20, 0x80000000); /* post CC1 & sw addr 0 in ICB+5w & reset CCs */
*status = CC4BIT; /* FIX FOR DIAG */ /* request accepted, not busy, so CC4 */
#else
/// WMW(chan_icb+20, 0x80000001); /* post sw addr 0 in ICB+5w & reset CCs */
/* MPX 1X requires CC1 to be returned instead of CC2 or CC4 */
/* MPX 1X will hang on boot if set to CC2 */
WMW(chan_icb+20, 0x80000000); /* post sw addr 0 in ICB+5w & reset CCs */
*status = CC1BIT; /* request accepted, no status, so CC1 */
#endif

View File

@ -1042,6 +1042,11 @@ t_stat disk_startcmd(UNIT *uptr, uint16 chan, uint8 cmd)
/* when value was 30, UTX would get a spontainous interrupt */
/* when starting cron */
/* changed to 25 from 30 121420 */
//utx21asim_activate(uptr, 20); /* start things off */
/* changed to 15 from 20 12/17/2021 to fix utx21a getting */
/* "panic: ioi: tis_busy - bad cc" during root fsck on boot */
/* changed back to 20 from 15 12/18/2021 to refix utx21a getting */
/* "panic: ioi: tis_busy - bad cc" during root fsck on boot */
sim_activate(uptr, 20); /* start things off */
/* when using 500, UTX gets "ioi: sio at 801 failed, cc3, retry=0" */
#else
@ -1658,7 +1663,7 @@ iha_error:
"disk_srv seeking unit=%02x to %04x/%02x/%02x from cyl %04x (%04x)\n",
unit, cyl, trk, buf[3], tcyl, diff);
#ifdef FAST_FOR_UTX
sim_activate(uptr, 15); /* start things off */
sim_activate(uptr, 15); /* start us off */
#else
sim_activate(uptr, 400+diff); /* start us off */
#endif
@ -2042,7 +2047,7 @@ if ((chp->ccw_addr == 0x3cde0) && (buf[0] == 0x4a)) {
"DISK sector read complete, %x bytes to go from diskfile %04x/%02x/%02x\n",
chp->ccw_count, STAR2CYL(uptr->CHS), ((uptr->CHS) >> 8)&0xff, (uptr->CHS&0xff));
#ifdef FAST_FOR_UTX
sim_activate(uptr, 10); /* start things off */
sim_activate(uptr, 10); /* wait to read next sector */
#else
sim_activate(uptr, 300); /* wait to read next sector */
#endif
@ -2255,7 +2260,7 @@ if ((chp->ccw_addr == 0x3cde0) && (buf[0] == 0x4a)) {
}
#ifdef FAST_FOR_UTX
sim_activate(uptr, 15); /* start things off */
sim_activate(uptr, 15); /* wait to read next sector */
#else
sim_activate(uptr, 300); /* wait to read next sector */
#endif

BIN
SEL32/sel32_doc.doc Normal file

Binary file not shown.

View File

@ -1054,6 +1054,15 @@ doread:
"SCSI READ reading CMD %08x chsa %04x tstart %04x buffer %06x count %04x\n",
uptr->CMD, chsa, tstart, chp->ccw_addr, chp->ccw_count);
/* just seek to the location where we will r/w data */
if ((sim_fseek(uptr->fileref, tstart*SSB(type), SEEK_SET)) != 0) { /* seek r/w sec */
sim_debug(DEBUG_DETAIL, dptr,
"scsi_srv READ, Error on seek to %08x\n", tstart*SSB(type));
uptr->CMD &= LMASK; /* remove old status bits & cmd */
chan_end(chsa, SNS_CHNEND|SNS_DEVEND|SNS_UNITCHK);
return SCPE_OK;
}
/* read in a sector of data from disk */
if ((len=sim_fread(buf, 1, ssize, uptr->fileref)) != ssize) {
sim_debug(DEBUG_CMD, dptr,
@ -1250,6 +1259,16 @@ dowrite:
}
if (uptr->CMD & DSK_WRITING) { /* see if we are writing data */
tstart = uptr->CHS; /* get sector offset */
/* just seek to the location where we will r/w data */
if ((sim_fseek(uptr->fileref, tstart*SSB(type), SEEK_SET)) != 0) { /* seek r/w sec */
sim_debug(DEBUG_EXP, dptr,
"scsi_srv WRITE, Error on seek to %08x\n", tstart*SSB(type));
uptr->CMD &= LMASK; /* remove old status bits & cmd */
chan_end(chsa, SNS_CHNEND|SNS_DEVEND|SNS_UNITCHK);
return SCPE_OK;
}
/* process the next sector of data */
len = 0; /* used here as a flag for short read */
for (i=0; i<ssize; i++) {
@ -1468,7 +1487,12 @@ t_stat scsi_rschnlio(UNIT *uptr) {
t_stat scsi_reset(DEVICE *dptr)
{
UNIT *uptr = dptr->units;
uint16 chsa = GET_UADDR(uptr->CMD);
/* add reset code here */
sim_debug(DEBUG_EXP, dptr,
"scsi_reset chsa %04x\n", chsa);
return SCPE_OK;
}
@ -1974,6 +1998,11 @@ t_stat scsi_boot(int32 unit_num, DEVICE *dptr) {
return SCPE_UNATT; /* attached? */
}
/* seek to sector 0 */
if ((sim_fseek(uptr->fileref, 0, SEEK_SET)) != 0) { /* seek home */
printf("SCSI Disk Boot Error on seek to 0\n");
}
SPAD[0xf4] = GET_UADDR(uptr->CMD); /* put boot device chan/sa into spad */
SPAD[0xf8] = 0xF000; /* show as F class device */
return chan_boot(GET_UADDR(uptr->CMD), dptr); /* boot the ch/sa */

View File

@ -1,5 +1,27 @@
;======================================================
; SEL32 System Engineering Labs 32 bit computer
; MPX/UTX CPU diagnostic hardware configuration
; CPU - 32/67 4M Sel32 Concept/32
; IOP - 7e00 Model 8001 IOP Processor Controller
; DMA - 0800 2311/2314 Disk Processor II (N/U)
; dma0 - N/U
; dma0 <-> detached
; LPR - 7ef8/7ef9 Model 924X High Speed Line Printer
; COM - 7ec0 8512 8-line async communications (N/U)
; CON - 7efc/7efd Console Terminal
; RTC - 7f06 60 HZ Real-Time clock
; ITM - 7f04 38.4MS Interval timer
; MT - 1000 8051 Buffered Tape Processor
; mta0 <- diag.tap
; EC - 0e00 Model 8516 Ethernet (not supported)
;======================================================
; Set hostname
set env HOST=sel32
; Set local IP address
; set env IP=192.168.1.5 (N/U)
;======================================================
; Set debug output
set debug -n sel.log
;set debug -n sel.log
;set debug stderr
;
; CPU type and memory

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -1,6 +1,28 @@
cd %~p0
;======================================================
; SEL32 System Engineering Labs 32 bit computer
; MPX/UTX CPU Diagnostic hardware configuration
; CPU - 32/67 4M Sel32 Concept/32
; IOP - 7e00 Model 8001 IOP Processor Controller
; DMA - 0800 2311/2314 Disk Processor II
; dma0 (N/U)
; dma0 (Not Assigned)
; LPR - 7ef8/7ef9 Model 924X High Speed Line Printer
; COM - 7ec0 8512 8-line async communications (N/U)
; CON - 7efc/7efd Console Terminal
; RTC - 7f06 60 HZ Real-Time clock
; ITM - 7f04 38.4MS Interval timer
; MT - 1000 8051 Buffered Tape Processor
; mta0 <- diag.tap
; EC - 0e00 Model 8516 Ethernet (not supported)
;======================================================
; Set hostname
set env HOST=sel32
; Set local IP address
; set env IP=192.168.1.5 (N/U)
;======================================================
; Set debug output
set debug -n sel.log
;set debug -n sel.log
;set debug stderr
;
; CPU type and memory
@ -75,7 +97,7 @@ at comc 4747
;set lpr debug=cmd;detail
set lpr enable
; LPR output file
at lpr lprout
;at lpr lprout
;
; CON Console
;set con debug=cmd;exp;detail
@ -105,8 +127,8 @@ set mta0 dev=1000
;at mta0 sim32sdt.tap
at mta0 diag.tap
set mta0 locked
at mta1 temptape.tap
at mta2 output.tap
;at mta1 temptape.tap
;at mta2 output.tap
;
; DMA disk processor II/UDP
; enable DMA to change channel

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.