PDP-10/waits

Miscellaneous problems

Opened this issue · 15 comments

I'm lumping together various problems I have seen trying to run and use WAITS (1974 disk images) and @rcornwell's KA10 emulator.

  • RUN MTA0: fails for DART.DMP: "ILLEGAL UUO AT USER 20746"
  • RUN DTA1:DART.DMP fails too.
  • Input from DCS sometimes stops, see rcornwell/sims#243
  • System asks for date and time; does the Petit clock work?
  • III display has random pixels at the top.
  • How to initialize a new file structure on a DECtape?
  • Restoring files with DART fails on the second file. Identified: rcornwell/sims#242
  • Building a monitor doesn't work. Fixed: restore COMCSS from tape.
  • Idling doesn't work. Analysis: CPU idling needs update, PMP device prevents idling.

Regarding building monitor. I have examined COMCSS around the REQUE symbol, and CLKSER page 1 and 2, but nothing wrong as far as I can see.

.ALIAS J17,SYS
.LOAD @SYS
 OUTER
FAIL:  STANFO
 JOBDAT
 ALLDAT
 IMPDDB
 LOWCOR
DID YOU REMEMBER TO CHANGE CONFIG?
 PARSER
 SYSINI
 COMCSS
 CLKSER
#####
 CLKSER,  PAGE  1,  LINE  1
COMMENT    VALID 00091 
                       PAGES
APRSER &  REQUE+7
TWO ADDRESS FIELDS OR UNDEF OPCODE
TWO ADDRESS FIELDS OR UNDEF OPCODE
REPLY 'E' - EDIT, [CR] - CONTINUE, [LF] - CONTINUE AUTOMATICALLY

Monitor build problem was due to a damaged COMCSS file.

SOS manual:

SOS is capable of using the full 128 character character set  through
Teletype  keyboards.   To do this it uses ? to give each character on
the teletype a second meaning.   Thus,  typing  ?2  on  the  teletype
causes ↔ to be entered into the file (octal code 027).  Similarly a ↔
in the file will type out as ?2 on the teletype.  To enter  a  ?  one
must   type   ??.    To   enter  lower  case  characters  through  an
upper-case-only keyboard, precede each letter with a "?", or use  the
shift  commands  (←LOWER and ←UPPER, see Section 4).  Below is a list
of the alternate meanings of the various non-alphabetic characters.
                {=?[    ?=??    α=?"    ∩=?-
                }=?]    ¬=?%    β=?#    ∪=?.
                ≤=?<    ~=?4    ε=?&    ⊂=?+
                ≥=?>    |=?:    λ=?(    ⊃=?,
                ≠=?=    _=?9    π=?'    ↓=?!
                ≡=?7    ⊗=?1    ∀=?/    →=?6
                ∧=?$    ∂=?*    ∃=?0    ↔=?2
                ∨=?8    '=?@    ∞=?)

To get the monitor refresh dialogue, change two IFN 0*FTDISK in ONCE and the COMMENT around REFRESH in DSKSER.

III displays random pixels.
iii

Run MTA0: works for COPY.DMP (size 6.5K), but not DART.DMP (size 16K).

Logs from RUN MTA0: with DART.DMP in 128-word records. My comments are inserted.

;At this point the first 31 words have been read fine.

DBG(373137400)> MTC DETAIL: MTC0 read data 000000037777   
DBG(373137400)> DCT DATA: DCT Write 000000037777, 0 124021   
DBG(373137424)> DCT DATAIO: DCT 200 DATI 000000037777 0  PC=5

DBG(373137820)> MTC DETAIL: MTC0 read data 000000000000   
DBG(373137820)> DCT DATA: DCT Write 000000000000, 0 124021   
DBG(373137844)> DCT DATAIO: DCT 200 DATI 000000000000 0  PC=5

DBG(373138240)> MTC DETAIL: MTC0 read data 000000000000   
DBG(373138240)> DCT DATA: DCT Write 000000000000, 0 124021   
DBG(373138264)> DCT DATAIO: DCT 200 DATI 000000000000 0  PC=5

DBG(373138660)> MTC DETAIL: MTC0 read data 000000000000   
DBG(373138660)> DCT DATA: DCT Write 000000000000, 0 124021   
DBG(373138684)> DCT DATAIO: DCT 200 DATI 000000000000 0  PC=5

DBG(373139080)> MTC DETAIL: MTC0 read data 000000000000   
DBG(373139080)> DCT DATA: DCT Write 000000000000, 0 124021   
DBG(373139104)> DCT DATAIO: DCT 200 DATI 000000000000 0  PC=5

DBG(373139500)> MTC DETAIL: MTC0 read data 000000000000   
DBG(373139500)> DCT DATA: DCT Write 000000000000, 0 124021   
DBG(373139524)> DCT DATAIO: DCT 200 DATI 000000000000 0  PC=5

;So far so good.  The first 37 words have been read now.

;This is CONSZ at MTDCN1+1.
DBG(373139537)> DCT CONI: DCT 202 CONI 000000124021 0 PC=107003

;Next word is read off tape, but there's no DATAI to fetch it.
DBG(373139920)> MTC DETAIL: MTC0 read data 266240000200   
DBG(373139920)> DCT DATA: DCT Write 266240000200, 0 124021

;Next word, and now we're in trouble.  The DCT buffer is full, so we get an EOR error.
DBG(373140340)> MTC DETAIL: MTC0 read data 000000000000   
DBG(373140340)> DCT DATA: DCT Write 000000000000, 0 121021
DBG(373140760)> MTC DETAIL: MTC0 read data 000000000000
DBG(373140760)> MTC DETAIL: MTC0 read eor 200 04040004

It seems MTDCN1 (in MTCSER) is called when the BLKI runs out. So maybe only ~40 or so words are read by the BLKI, although that seems a bit small.

Oh EOR is just end of record, isn't it?

Reducing record size to 32, I get this. 37777 is the last word in the record, so EOR is set.

After that, some confusing things are happening. Space forward, why? The next record is read by still EOR?

Is the EOR condition not cleared between records?

DBG(356394556)> DCT DATA: DCT Write 000000037777, 0 124021
DBG(356394556)> MTC DETAIL: MTC0 read eor 160 04040004
DBG(356394565)> MTC CONI: MTC CONI 226 status 000004040006 0 04040004 PC=000635
DBG(356394582)> DCT DATAIO: DCT 200 DATI 000000037777 0  PC=1013
DBG(356394644)> DCT CONI: DCT 202 CONI 000000124021 0 PC=107023
DBG(356394647)> MTC CONI: MTC CONI 226 status 000004040006 0 04040004 PC=107025
DBG(356394660)> DCT CONI: DCT 202 CONI 000000124021 0 PC=107035
DBG(356394670)> DCT CONI: DCT 202 CONI 000000124021 0 PC=107042
DBG(356394689)> DCT CONO: DCT 203 CONO 004021 0 PC=107045 004021
DBG(356394692)> DCT DATAIO: DCT 200 DATI 000000000001 0  PC=107046
DBG(356394712)> DCT CONO: DCT 203 CONO 000000 0 PC=107054 000000
DBG(356394715)> MTC CONI: MTC CONI 226 status 000004040006 0 04040004 PC=107055
DBG(356394750)> MTC CONI: MTC CONI 226 status 000004040006 0 04040004 PC=107200
DBG(356394757)> MTC CONI: MTC CONI 226 status 000004040006 0 04040004 PC=107203
DBG(356394801)> DCT CONO: DCT 203 CONO 000000 0 PC=107115 000000
DBG(356394844)> MTC CONI: MTC CONI 226 status 000004040006 0 04040004 PC=107200
DBG(356394850)> MTC CONI: MTC CONI 226 status 000004040006 0 04040004 PC=107203
DBG(356394904)> MTC CONO: MTC CONO 227 status 000000000001 0 01040004 PC=107323
DBG(356394986)> MTC DETAIL: MTC0 EOR 00000000
DBG(356394995)> MTC CONI: MTC CONI 226 status 000001040007 0 01040004 PC=000635
DBG(356395210)> MTC CONI: MTC CONI 226 status 000001040007 0 01040004 PC=107200
DBG(356395217)> MTC CONI: MTC CONI 226 status 000001040007 0 01040004 PC=107203
DBG(356395252)> MTC CONO: MTC CONO 227 status 000000000000 0 00040004 PC=107142
DBG(356395255)> MTC CONO: MTC CONO 223 start 0 4000000000004 PC=107143
DBG(356395504)> MTC DETAIL: MTC0 Done 00000000 00040004
DBG(356395504)> MTC DETAIL: MTC0 stoping 4 00040004
DBG(356397693)> MTC CONO: MTC CONO 223 start 0 4000000000004 PC=106671
DBG(356397696)> MTC CONO: MTC CONO 227 status 000000000002 0 02040004 PC=106672
DBG(356397699)> MTC CONI: MTC CONI 226 status 000002040007 0 02040004 PC=106673
DBG(356397702)> MTC CONI: MTC CONI 226 status 000002040007 0 02040004 PC=106675
DBG(356397705)> MTC CONI: MTC CONI 226 status 000002040007 0 02040004 PC=106676
DBG(356397708)> MTC CONI: MTC CONI 226 status 000002040007 0 02040004 PC=106700
DBG(356397711)> MTC CONI: MTC CONI 226 status 000002040007 0 02040004 PC=106702
DBG(356397756)> MTC CONI: MTC CONI 226 status 000002040007 0 02040004 PC=106535
DBG(356397864)> MTC CONO: MTC CONO 223 start 0 4000000073004 PC=106576
DBG(356397864)> MTC CONO: MTC CONO 223 starting 0
DBG(356397870)> MTC CONO: MTC CONO 227 status 000000040000 0 10040000 PC=106600
DBG(356397885)> MTC CONI: MTC CONI 226 status 000010040000 0 10040000 PC=000635
DBG(356397968)> MTC CONO: MTC CONO 227 status 000000000001 0 01040000 PC=107323
DBG(356398874)> MTC DETAIL: MTC0 space 6
DBG(356398874)> MTC STR: rd_lntf: st: 0, lnt: 160, pos: 336
DBG(356409844)> MTC DETAIL: MTC0 EOR 00000000
DBG(356409853)> MTC CONI: MTC CONI 226 status 000001040007 0 01040004 PC=000635
DBG(356409929)> MTC CONI: MTC CONI 226 status 000001040007 0 01040004 PC=107133
DBG(356409976)> MTC CONI: MTC CONI 226 status 000001040007 0 01040004 PC=107200
DBG(356409983)> MTC CONI: MTC CONI 226 status 000001040007 0 01040004 PC=107203
DBG(356410016)> MTC CONO: MTC CONO 227 status 000000000000 0 00040004 PC=107142
DBG(356410019)> MTC CONO: MTC CONO 223 start 0 4000000000004 PC=107143
DBG(356410344)> MTC DETAIL: MTC0 Done 00000000 00040004
DBG(356410344)> MTC DETAIL: MTC0 stoping 4 00040004

DART RESTORE problem identified, see rcornwell/sims#242 (comment)

DECtape figured out. SIMH's DTC1 corresponds to WAITS' DTA1:

RUN DTA1:DART.DMP says:

?
257K OF CORE NEEDED
^C

If I copy the file to DSK and RUN it from there, it works.

III random pixels identified. There are stuff going on above the display, and it's clamped to the top line.

Pushing everything down 10 pixels or so, we get this nicer picture.
iii-2

Note, no "random" pixels at the top, and the text displays without tiny gaps.

But wait, there's more! The III keeps giving. Here's a snapshot of an upcoming vector display emulator of mine. Surprisingly, there's an entire line of text not visible in the SIMH III simulation.
iii-3