Closed vaxorcist closed 1 year ago
This problem is due to an incorrect set of devices being built into the MicroVAX I simulator. Specifically, there never was any tape support for this system. That was due to the fact that system memory was on the Qbus and as such, the inherent scatter-gather functionality of the bus adapters (UBA and QBA) that were available on the other VAX systems was not available to support normal OS driver DMA operations. The RQ devices MSCP functionality was extended to implement scatter gather internally.
Other devices on this system will similarly not work correctly for exactly the same reason: RL, TS, and probably VH
I can provide the MicroVMS V4.6 disk image.
Please provide this some place that I can download it from. I messed around for several hours with trying to come up with a workable set of sysgen parameters on my default VMS v5.5-2 disk that I test most things with. All of these efforts result in an early in the startup sequence crash. Alternatively, if you could provide the output of:
$ run sys$system:sysgen
SYSGEN> SHOW/ALL
on your running VMS 4.6 system.
Thanks.
Here is the RD31 disk image: https://drive.google.com/file/d/1HyEtNFLR2Zhgu0PX0ept91v8AzhbJi8_/view?usp=sharing USERNAME: SYSTEM / no password
This is my SYSGEN output: $ mc sysgen SYSGEN> SHOW/ALL
Parameters in use: Active Parameter Name Current Default Minimum Maximum Unit Dynamic
PFCDEFAULT 16 32 0 127 Pages D
KFILSTCNT 16 4 2 255 Slots
GBLSECTIONS 52 128 20 4095 Sections
GBLPAGES 1415 4096 512 -1 Pages
GBLPAGFIL 1024 1024 128 -1 Pages
MAXPROCESSCNT 12 72 12 8192 Processes
PROCSECTCNT 32 32 5 1024 Sections
MINWSCNT 20 20 10 -1 Pages
PAGFILCNT 2 2 1 63 Files
SWPFILCNT 2 2 0 63 Files
SYSMWCNT 409 250 40 16384 Pages
INTSTKPAGES 2 2 1 -1 Pages
BALSETCNT 10 36 4 1024 Slots
IRPCOUNT 30 60 0 32768 Packets
IRPCOUNTV 800 1000 0 32768 Packets
WSMAX 1000 1024 60 64000 Pages
NPAGEDYN 119808 153600 16384 -1 Bytes
NPAGEVIR 256000 400000 16384 -1 Bytes
PAGEDYN 78336 190000 10240 -1 Bytes
VIRTUALPAGECNT 9096 8192 512 600000 Pages
SPTREQ 2100 896 -1 -1 Pages
LRPCOUNT 8 4 0 4096 Packets
LRPCOUNTV 60 80 0 4096 Packets
LRPSIZE 576 576 256 16384 Bytes
SRPCOUNT 60 120 0 131072 Packets
SRPCOUNTV 1200 1000 0 131072 Packets
QUANTUM 20 20 2 32767 10Ms D
MPW_WRTCLUSTER 96 96 16 120 Pages
MPW_HILIMIT 250 500 0 16384 Pages
MPW_LOLIMIT 120 32 0 16384 Pages
MPW_THRESH 200 200 0 16384 D
MPW_WAITLIMIT 250 500 0 16384 D
PFRATL 0 0 0 -1 Flts/10Sec D
PFRATH 120 120 0 -1 Flts/10Sec D
WSINC 150 150 0 -1 Pages D
WSDEC 35 35 0 -1 Pages D
AWSMIN 50 50 0 -1 Pages D
AWSTIME 20 20 1 -1 10Ms D
SWPOUTPGCNT 80 60 0 -1 Pages D
LONGWAIT 30 30 0 65535 Seconds D
DORMANTWAIT 10 10 0 65535 Seconds D
USERD1 0 0 0 -1 D
USERD2 0 0 0 -1 D
USER3 0 0 0 -1
USER4 0 0 0 -1
EXTRACPU 1000 1000 0 -1 10Ms D
MAXSYSGROUP 8 8 1 32768 UIC Group D
MVTIMEOUT 600 600 1 64000 Seconds D
MAXBUF 1584 1584 1200 64000 Bytes D
DEFMBXBUFQUO 1056 1056 256 64000 Bytes D
DEFMBXMXMSG 256 256 64 64000 Bytes D
DEFMBXNUMMSG 16 16 1 -1 Messages D
FREELIM 32 32 16 -1 Pages
FREEGOAL 120 200 16 -1 Pages
GROWLIM 64 63 0 -1 Pages D
BORROWLIM 120 300 0 -1 Pages D
XFMAXRATE 236 236 0 255 Special D
LAMAPREGS 0 0 0 255 Mapregs
REALTIME_SPTS 0 0 0 -1 Pages
CLISYMTBL 250 250 10 500 Pages D
LOCKIDTBL 40 200 40 65535 Entries
LOCKIDTBL_MAX 65535 800 200 65535 Entries D
RESHASHTBL 20 64 1 8192 Entries
DEADLOCK_WAIT 10 10 0 -1 Seconds D
SCSBUFFCNT 3 50 0 32767 Entries
SCSCONNCNT 4 40 2 32767 Entries
SCSRESPCNT 20 100 0 32767 Entries
SCSMAXDG 576 576 28 985 Bytes
SCSMAXMSG 112 112 52 985 Bytes
SCSFLOWCUSH 1 1 0 16 Credits D
SCSSYSTEMID 0 0 -1 -1 Pure-number
SCSSYSTEMIDH 0 0 -1 -1 Pure-number
SCSNODE " " " " " " "ZZZZ" Ascii
PRCPOLINTERVAL 15 15 1 32767 Seconds D
PASTIMOUT 5 5 1 99 Seconds D
PASTDGBUF 4 4 1 16 Buffers
PANUMPOLL 16 16 1 223 Ports D
PAMAXPORT 15 15 0 223 Port-number D
PAPOLLINTERVAL 5 5 1 32767 Seconds D
PAPOOLINTERVAL 15 15 1 32767 Seconds D
PASANITY 1 1 0 1 Boolean D
PANOPOLL 0 0 0 1 Boolean D
TIMEPROMPTWAIT 65535 -1 0 -1 uFortnights
UDABURSTRATE 0 0 0 31 Longwords
LNMSHASHTBL 128 128 1 16383 Entries
LNMPHASHTBL 128 128 1 16383 Entries
BUGREBOOT 1 1 0 1 Boolean D
CRDENABLE 1 1 0 1 Boolean
DUMPBUG 1 1 0 1 Boolean
BUGCHECKFATAL 0 0 0 1 Boolean D
ACP_MULTIPLE 0 0 0 1 Boolean D
SETTIME 0 0 0 1 Boolean
ACP_SHARE 1 1 0 1 Boolean
UAFALTERNATE 0 0 0 1 Boolean
SAVEDUMP 0 0 0 1 Boolean
CLASS_PROT 0 0 0 1 Boolean D
LGI_BRK_TERM 1 1 0 1 Boolean D
LGI_BRK_DISUSER 0 0 0 1 Boolean D
MOUNTMSG 0 0 0 1 Boolean D
DISMOUMSG 0 0 0 1 Boolean D
TTY_SCANDELTA 10000000 10000000 100000 -1 100Ns
TTY_DIALTYPE 0 0 0 255 Bit-Encoded
TTY_SPEED 15 15 1 16 Special
TTY_RSPEED 0 0 0 16 Special
TTY_PARITY 24 24 0 -1 Special
TTY_BUF 80 80 0 65535 Characters
TTY_DEFCHAR 402657952 402657952 0 -1 Bit-Encoded
TTY_DEFCHAR2 4106 4098 0 -1 Bit-Encoded
TTY_TYPAHDSZ 78 78 0 -1 Bytes
TTY_ALTYPAHD 200 200 0 -1 Bytes
TTY_ALTALARM 64 64 0 -1 Bytes
TTY_DMASIZE 64 64 0 -1 Bytes D
TTY_PROT 65520 65520 0 -1 Protection
TTY_OWNER 65540 65540 0 -1 UIC
TTY_CLASSNAME "TT" "TT" "AA" "ZZ" Ascii
TTY_SILOTIME 8 8 0 255 Ms
TTY_TIMEOUT 900 900 0 -1 Seconds D
TTY_AUTOCHAR 7 7 0 255 Character D
RMS_DFMBC 16 16 1 127 Blocks D
RMS_DFMBFSDK 0 0 0 127 Blocks D
RMS_DFMBFSMT 0 0 0 127 Blocks D
RMS_DFMBFSUR 0 0 0 127 Buffers D
RMS_DFMBFREL 0 0 0 127 Buffers D
RMS_DFMBFIDX 0 0 0 127 Buffers D
RMS_DFMBFHSH 0 0 0 127 Buffers D
RMS_PROLOGUE 0 0 0 3 Prolog-Lvl D
RMS_EXTEND_SIZE 0 0 0 65535 Blocks D
RMS_FILEPROT 64000 64000 0 65535 Prot-mask
RMS_GBLBUFQUO 1024 1024 0 32767 Gbl bufs D
RMS_DFNBC 8 8 1 127 Blocks D
PQL_DASTLM 24 24 -1 -1 Ast D
PQL_MASTLM 4 4 -1 -1 Ast D
PQL_DBIOLM 18 18 -1 -1 I/O D
PQL_MBIOLM 4 4 -1 -1 I/O D
PQL_DBYTLM 8192 8192 -1 -1 Bytes D
PQL_MBYTLM 1024 1024 -1 -1 Bytes D
PQL_DCPULM 0 0 -1 -1 10Ms D
PQL_MCPULM 0 0 -1 -1 10Ms D
PQL_DDIOLM 18 18 -1 -1 I/O D
PQL_MDIOLM 4 4 -1 -1 I/O D
PQL_DFILLM 16 16 -1 -1 Files D
PQL_MFILLM 2 2 -1 -1 Files D
PQL_DPGFLQUOTA 2048 2048 -1 -1 Pages D
PQL_MPGFLQUOTA 512 512 -1 -1 Pages D
PQL_DPRCLM 8 8 -1 -1 Processes D
PQL_MPRCLM 0 0 -1 -1 Processes D
PQL_DTQELM 8 8 -1 -1 Timers D
PQL_MTQELM 0 0 -1 -1 Timers D
PQL_DWSDEFAULT 109 100 -1 -1 Pages
PQL_MWSDEFAULT 109 60 -1 -1 Pages
PQL_DWSQUOTA 218 200 -1 -1 Pages D
PQL_MWSQUOTA 218 60 -1 -1 Pages D
PQL_DWSEXTENT 218 200 -1 -1 Pages D
PQL_MWSEXTENT 218 10 -1 -1 Pages D
PQL_DENQLM 30 30 -1 -1 Locks D
PQL_MENQLM 4 4 -1 -1 Locks D
PQL_DJTQUOTA 1024 1024 -1 -1 Bytes D
PQL_MJTQUOTA 0 0 -1 -1 Bytes D
ACP_MAPCACHE 8 8 1 -1 Pages D
ACP_HDRCACHE 28 128 3 -1 Pages D
ACP_DIRCACHE 28 80 2 -1 Pages D
ACP_DINDXCACHE 7 25 2 -1 Pages D
ACP_WORKSET 0 0 0 -1 Pages D
ACP_FIDCACHE 64 64 0 -1 File-Ids D
ACP_EXTCACHE 64 64 0 -1 Extents D
ACP_EXTLIMIT 100 100 0 1000 Percent/10 D
ACP_QUOCACHE 20 64 0 -1 Users D
ACP_SYSACC 4 8 0 -1 Directories D
ACP_MAXREAD 6 32 1 64 Blocks D
ACP_WINDOW 7 7 1 -1 Pointers D
ACP_WRITEBACK 1 1 0 1 Boolean D
ACP_DATACHECK 2 2 0 3 Bit-mask D
ACP_BASEPRIO 8 8 4 31 Priority D
ACP_SWAPFLGS 14 15 0 15 Bit-mask D
ACP_XQP_RES 1 1 0 1 Boolean
ACP_REBLDSYSD 1 1 0 1 Boolean
DEFPRI 4 4 1 31 Priority D
IJOBLIM 64 64 1 1024 Jobs D
BJOBLIM 16 16 0 1024 Jobs D
NJOBLIM 16 16 0 1024 Jobs D
RJOBLIM 10 16 0 254 Jobs D
DEFQUEPRI 100 100 0 255 Priority D
MAXQUEPRI 100 100 0 255 Priority D
LGI_PWD_TMO 30 30 0 255 Seconds D
LGI_RETRY_LIM 3 3 0 255 Tries D
LGI_RETRY_TMO 20 20 0 255 Seconds D
LGI_BRK_LIM 5 5 0 255 Failures D
LGI_BRK_TMO 0 300 0 -1 Seconds D
LGI_HID_TIM 0 300 0 -1 Seconds D
VAXCLUSTER 0 1 0 2 Coded-value
QUORUM 1 1 1 32767 Votes
VOTES 1 1 0 127 Votes
RECNXINTERVAL 60 60 1 32767 Seconds D
DISK_QUORUM " " " " " " "ZZZZ" Ascii
QDSKVOTES 1 1 0 127 Votes
QDSKINTERVAL 20 20 1 32767 Seconds
ALLOCLASS 0 0 0 255 Pure-number
LOCKDIRWT 1 1 0 255 Pure-number
TAILORED 0 0 0 1 Boolean
WS_OPA0 0 0 0 1 Boolean D
STARTUP_P1 " " " " " " "zzzz" Ascii
STARTUP_P2 " " " " " " "zzzz" Ascii
STARTUP_P3 " " " " " " "zzzz" Ascii
STARTUP_P4 " " " " " " "zzzz" Ascii
STARTUP_P5 " " " " " " "zzzz" Ascii
STARTUP_P6 " " " " " " "zzzz" Ascii
STARTUP_P7 " " " " " " "zzzz" Ascii
STARTUP_P8 " " " " " " "zzzz" Ascii
SYSGEN>
The answer for this question is that there was no tape support for the MicroVAX I, and these devices (TQ, TS and VH) shouldn't be in this simulator. The VMS device drivers for these devices don't know how to do DMA on this system which does not have a scatter gather mapping bus adapter. See: https://github.com/simh/simh/commit/bc5dcedf1dd11c7b606929d5f78040834c718041 where I've removed these devices from the MicroVAX I simulator in the https://github.com/simh/simh repo since they can't be expected to work.
I'm not sure that means they should be removed. Could you build such a config? Presumably yes, the bus allows it. Could an OS create a driver for it? VMS isn't the only OS, so the fact that it doesn't support that doesn't mean it should be excluded entirely. It would be a good reason to default it to disabled and perhaps to add a note in the help or documentation file.
I had a conversation with Bob Supnik about this specific subject around when this issue was raised. He said tapes shouldn't be part of the system.
No other OSes were ever developed for the MicroVAX I system. I've left devices which weren't technically ever supported, but the VMS drivers would work (and VMS itself - not just MicroVMS). These devices would work (LP, CR, TD) since they only operate via programmed I/O. I've left the RL device since I'd guess that someone at DEC used this device while testing their customer driver writing advice about how to tolerate DMA without a scatter/gather bus adapter. The RL devices work correctly, although the boot ROM doesn't know about how to boot from them.
If someone really wanted to write drivers for a 4MB max machine that didn't have a scatter/gather map, they haven't come along in the almost 40 years since the hardware was released. If someone comes along in the future, then adding the devices to their working configuration during development is trivial.
Just to add one more dimension to the discussion "well they could connect to the bus, so just add them - maybe disabled"...
The MicroVAX II (and the PDP11) are the places where anything goes (or could go). They existed in vast numbers with any amount of random third party and user developed devices. None of that was actually true for the small handful of MicroVAX I devices sold.
So no TK50 support on the MicroVAX I, o.k.
The microvax1 simulator tape device tq (MUA0:) is not working properly. You can INIT a tape, but you cannot MOUNT it.
Context
MicroVMS V4.6 This is a severe bug, because the tape drive is not usable.
the output of "sim> SHOW VERSION" while running the simulator which is having the issue
sim> show version MicroVAX I (KA610) simulator V4.0-0 Current Simulator Framework Capabilities: 64b data 64b addresses Threaded Ethernet Packet transports:PCAP:TAP:NAT:UDP Idle/Throttling support is available Virtual Hard Disk (VHD) support RAW disk and CD/DVD ROM support Asynchronous I/O support (Lock free asynchronous event queue) Asynchronous Clock support FrontPanel API Version 12 Host Platform: Compiler: GCC 8.3.0 Simulator Compiled as C arch: x64 (Release Build) on Jun 15 2022 at 09:34:51 Build Tool: simh-makefile Memory Access: Little Endian Memory Pointer Size: 64 bits Large File (>2GB) support SDL Video support: SDL Version 2.0.9, PNG Version 1.6.36, zlib: 1.2.11 PCRE RegEx (Version 8.39 2016-06-14) support for EXPECT commands OS clock resolution: 1ms Time taken by msleep(1): 1ms Ethernet packet info: libpcap version 1.9.0-PRE-GIT (with TPACKET_V3) OS: Linux think 4.19.0-12-amd64 #1 SMP Debian 4.19.152-1 (2020-10-18) x86_64 GNU/Linux Processor Name: Intel(R) Core(TM) i5-2520M CPU @ 2.50GHz tar tool: tar (GNU tar) 1.30 curl tool: curl 7.64.0 (x86_64-pc-linux-gnu) libcurl/7.64.0 OpenSSL/1.1.1n zlib/1.2.11 libidn2/2.0.5 libpsl/0.20.2 (+libidn2/2.0.5) libssh2/1.8.0 nghttp2/1.36.0 librtmp/2.3 simh git commit id: 5a7a4c77 simh git commit time: 2022-05-31T09:47:16-04:00 sim>
how you built the simulator or that you're using prebuilt binaries
$ make microvax1 lib paths are: /lib/ /lib/i386-linux-gnu/ /lib/x86_64-linux-gnu/ /lib32/ /usr/lib/x86_64-linux-gnu/libfakeroot/ /usr/local/lib/ /usr/lib/ include paths are: /usr/lib/gcc/x86_64-linux-gnu/8/include /usr/local/include /usr/lib/gcc/x86_64-linux-gnu/8/include-fixed /usr/include/x86_64-linux-gnu /usr/include using libm: /lib/x86_64-linux-gnu/libm.so using librt: /lib/x86_64-linux-gnu/librt.so using libpthread: /lib/x86_64-linux-gnu/libpthread.so /usr/include/pthread.h using libpcre: /lib/x86_64-linux-gnu/libpcre.so /usr/include/pcre.h using semaphore: /usr/include/semaphore.h using libdl: /lib/x86_64-linux-gnu/libdl.so /usr/include/dlfcn.h using libpng: /lib/x86_64-linux-gnu/libpng.so /usr/include/png.h using zlib: /lib/x86_64-linux-gnu/libz.so /usr/include/zlib.h using mman: /usr/include/x86_64-linux-gnu/sys/mman.h using libSDL2: /usr/include/SDL2/SDL.h using libpcap: /usr/local/include/pcap.h Info Info microvax1 Simulator is being built with Info minimal libpcap networking support Info Info Info Simulators on your Linux platform can also be built with Info extended LAN Ethernet networking support by using VDE Ethernet. Info Info To build simulator(s) with extended networking support you Info should install the vde2 package to provide this Info functionality for your Linux system: Info $ sudo apt-get install libvdeplug-dev Info
microvax1 Simulator being built with: - compiler optimizations and no debugging support. GCC Version: 8.3.0. - dynamic networking support using Linux provided libpcap components. - Local LAN packet transports: PCAP TAP NAT(SLiRP) - video capabilities provided by libSDL2 (Simple Directmedia Layer). - Per simulator tests will be run.
gcc -std=gnu99 -U__STRICT_ANSI__ -O2 -finline-functions -fgcse-after-reload -fpredictive-commoning -fipa-cp-clone -fno-unsafe-loop-optimizations -fno-strict-overflow -DSIM_COMPILER="GCC Version: 8.3.0" -DSIM_BUILD_TOOL=simh-makefile -I . -D_GNU_SOURCE -DUSE_READER_THREAD -DSIM_ASYNCH_IO -DHAVE_PCRE_H -DHAVE_SEMAPHORE -DHAVE_SYS_IOCTL -DHAVE_LINUX_CDROM -DSIM_HAVE_DLOPEN=so -DHAVE_UTIME -DHAVE_LIBPNG -DHAVE_ZLIB -DHAVE_GLOB -DHAVE_SHM_OPEN ./VAX/vax_cpu.c ./VAX/vax_cpu1.c ./VAX/vax_fpa.c ./VAX/vax_cis.c ./VAX/vax_octa.c ./VAX/vax_cmode.c ./VAX/vax_mmu.c ./VAX/vax_sys.c ./VAX/vax_syscm.c ./VAX/vax610_stddev.c ./VAX/vax610_sysdev.c ./VAX/vax610_io.c ./VAX/vax610_syslist.c ./VAX/vax610_mem.c ./VAX/vax_vc.c ./VAX/vax_lk.c ./VAX/vax_vs.c ./VAX/vax_2681.c ./PDP11/pdp11_rl.c ./PDP11/pdp11_rq.c ./PDP11/pdp11_ts.c ./PDP11/pdp11_dz.c ./PDP11/pdp11_lp.c ./PDP11/pdp11_tq.c ./PDP11/pdp11_xq.c ./PDP11/pdp11_vh.c ./PDP11/pdp11_cr.c ./PDP11/pdp11_td.c ./PDP11/pdp11_io_lib.c ./scp.c ./sim_console.c ./sim_fio.c ./sim_timer.c ./sim_sock.c ./sim_tmxr.c ./sim_ether.c ./sim_tape.c ./sim_disk.c ./sim_serial.c ./sim_video.c ./sim_imd.c ./sim_card.c -DVM_VAX -DVAX_610 -DUSE_INT64 -DUSE_ADDR64 -DUSE_SIM_VIDEO -I ./VAX -I ./PDP11 -DHAVE_PCAP_NETWORK -I/usr/local/include/ -DBPF_CONST_STRING -DUSE_SHARED -DHAVE_TAP_NETWORK -Islirp -Islirp_glue -Islirp_glue/qemu -DHAVE_SLIRP_NETWORK -DUSE_SIMH_SLIRP_DEBUG slirp/.c slirp_glue/.c -DHAVE_LIBSDL -DUSE_SIM_VIDEO
/usr/bin/sdl2-config --cflags
/usr/bin/sdl2-config --libs
-o BIN/microvax1 -lm -lrt -lpthread -lpcre -ldl -lpng -lzBIN/microvax1 RegisterSanityCheck /media/ulli/SSD-Backup/gunkies.org/OPEN simh-master/VAX/tests/vax-diag_test.ini </dev/null Running internal register sanity checks on MicroVAX I (KA610) simulator. *** Good Registers in MicroVAX I (KA610) simulator.
MicroVAX I (KA610) simulator V4.0-0 Current simh git commit id: 5a7a4c77
the simulator configuration file (or commands) which were used when the problem occurred.
SET CPU 4M SET CPU CONHALT SET CPU IDLE=VMS SET CPU INSTRUCTIONS=D-FLOAT SET CONSOLE LOG=FRANZ-CLONE_005_bugs.log
SET RQ0 ENA SET RQ0 RD31 ATT RQ0 franz-clone.R31
SET RQ1 ENA SET RQ1 RX50
SET RQ2 ENA SET RQ2 RX50
SET RQ3 RD54 att RQ3 VMS047.R54
SET DZ LINES=4 ATT DZ 6666
SET TQ ENA ATT TQ0 BB-BT05D-BE_VMS4.6_87.tap
SET LPT DIS SET RL ENA SET RL0 RL02 ATT RL0 TEST.RL2
SET TS DIS
SET XQ ENA SET XQ TYPE=DEQNA
;BOOT RQ0
the expected behavior and the actual behavior
Using MicroVMS V4.6: Should be: $ mount/over=id mua0: %MOUNT-I-MOUNTED, VMS046 mounted on _MUA0: $ But is: $ mount/over=id mua0: %MOUNT-F-NOTLABELMT, tape is not labeled $ The microvax2 simulator mounts the same image without problems. The problem in reproducible with the following VMS commands: sim> att tq0 test.tap %SIM-INFO: TQ0: Tape Image 'test.tap' scanned as SIMH format sim> c
$ init mua0: test $ mount mua0: test %MOUNT-F-NOTLABELMT, tape is not labeled $
you may also need to provide specific pointers to data files that may be necessary to demonstrate the problem
I can provide the MicroVMS V4.6 disk image.