open-simh / simh

The Open SIMH simulators package
https://opensimh.org/
Other
482 stars 91 forks source link

microvax1 simulator tape device tq (MUA0:) not working #11

Closed vaxorcist closed 1 year ago

vaxorcist commented 2 years ago

The microvax1 simulator tape device tq (MUA0:) is not working properly. You can INIT a tape, but you cannot MOUNT it.

MicroVAX I (KA610) simulator V4.0-0 Current simh git commit id: 5a7a4c77

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

$ init mua0: test $ mount mua0: test %MOUNT-F-NOTLABELMT, tape is not labeled $

markpizz commented 2 years 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

markpizz commented 2 years ago

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.

vaxorcist commented 2 years ago

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>

markpizz commented 1 year ago

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.

pkoning2 commented 1 year ago

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.

markpizz commented 1 year ago

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.

markpizz commented 1 year ago

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.

vaxorcist commented 1 year ago

So no TK50 support on the MicroVAX I, o.k.