PDP-6 / JOSS-II

JOSS Supervisor for PDP-6 source. Being typed from RAND's PDFs.
4 stars 2 forks source link

Parts wanted #4

Open PashPaw opened 4 years ago

PashPaw commented 4 years ago
larsbrinkhoff commented 4 years ago
PashPaw commented 4 years ago

DDT and DECtape. The Monitor (TOPS-10) was only used for staging.

As per josinit.mac:

"; INITIALIZATION DIALOG FOR JOSS STARTUP.

; THIS CODE MUST BE LOADED LAST, DIRECTLY ; PRECEDED BY DDT; A (THE ARITHMETIC) MUST ; BE LOADED FIRST TO PRESERVE A DDT ENTRY AT 140."

The designers' guide mentions that the Monitor was stored on a separate DECtape but was only used as a way to develop the system. JOSS had its own DECtape.

PashPaw commented 4 years ago

The official answer: 32K DECDMP with DDT. Stanford has a copy of the JOSS: Scheduling and Resource Allocation memo on their library's website. Appendix A contains the operating instructions.

larsbrinkhoff commented 4 years ago

Good find, that's a very useful document.

PashPaw commented 4 years ago

@larsbrinkhoff You're welcome.

Although, I still have two more things to add now. There is a version of DECDMP on SAILDART but it looks like it was mangled to support the KL and I don't know if that will work. The other is DDT. Outside of ITS and TOPS-20, were there any other standalone versions of DDT?

larsbrinkhoff commented 4 years ago

@rcornwell, do you have any old (close to PDP-6) versions of DDT and DECDMP?

rcornwell commented 4 years ago

I have DDT for TSExec 1.9 and there is also DDT for 3.4, and 4.5. All of these will run on PDP6. I need a copy of DECDMP that has the directory block at block 1 instead of 110. I might find a copy in some of the Saildart tapes... I will keep you posted.

rcornwell commented 4 years ago

I have macro V37 that I am working on converting back to source.

larsbrinkhoff commented 4 years ago

JOSS: Console Service Routines says:

JOSS software is composed of four major components and several subcomponents.

The major components are: 1) The monitor which handles resource allocation (except for disc space), scheduling, queueing, accounting, internally generated signals, and all console and teletype input-output (I/O) buffers; 2) The distributor, which handles all I/O to and fro the JOSS consoles and teletypes (except the PDP-6 control teletype); 3) The interpreter, which does all of the processing of user programs; 4) An off-line disc maintenance program, which provides facilities for dump/restore via tape, updates, reallocation, and various other service functions.

The several subcomponents include: 1) The arithmetic processor, which contains all of the arithmetic and function evaluation routines and various other subroutines. This package is a subcomponent of the interpreter and has no interface with the monitor. 2) The on-line disc processor, which handles all I/O to and from the disc. It is a subcomponent of the interpreter. However, communication paths are established via signals to the monitor.

PashPaw commented 4 years ago

Correct. We likely have the Interpreter and arithmetic modules. If you look through the TOPS-10/20 CUSPs, they're similar to the coding style of the RAND monitor and refer to themselves as JOSS.

In kmon.mac from @rcornwell's files for AID, there are a few very interesting lines of code:

"SUXRET: DPB C,1(E)

CAIE C,15       ;CARRIAGE RETURN?
JRST SULP       ;NO, GO FOR MORE
MOVSI A,400000
MOVEM A,2(E)        ;TTY FLAG (FOR JOSS USE)
JRST MONEXIT        ;BACK TO JOSS"

...

" ;SIMULATION OF JOSS DISK ROUTINES

DCONT: HRRZ B,ACTION ;GET REQUEST CAILE B,5 ;LEGAL? HALT START ;NO EXCH B,ACTION ;GET & RESET FIRST-TIME FLAG JRST .+1(B) HALT START JRST DDREAD JRST DDWRI JRST DDDEL JRST ITMLST JRST DDOPEN "

....

"ENTSW: JRST SU ;SWITCH TO USER JRST GBUF ;GET A BUFFER JRST MONEXIT ;RETURN A BUFFER JRST TU ;TRANSMIT BUFFER TO STATION JRST TLSU ;TL AND SU JRST MONEXIT ;BREAK POINT JRST MONEXIT ;REQUEST DISK JRST DCONT ;CONTINUE DISK ACTION JRST DCOMP ;DISK ACTION COMPLETE JRST MORCOR ;GET ANOTHER BLK OF CORE JRST MORCI ;IMPERATIVE MORE CORE JRST SENDFF ;MAKE UP AND SEND FORMFEED HALT MONEXIT ;GET USER OFF JRST RCOR ;RETURN BLOCKS OF CORE HALT MONEXIT ;PAUSE FOR E SECONDS L.ETSW==.-ENTSW+1 ;LENGTH OF THE SWITCH"

" CALLI B,27 ;MAKE RUN TIME ONLY FOR AID MOVEM B,STTIME ;TIME WHEN STARTED MOVE PP,[XWD -20,PLIST] MOVEM PP,PLIST ;SET UP PUSH-DOWN LIST INIT 1 ;INITIALIZE CONSOLE SIXBIT /TTY/ XWD OB,IB HALT START MOVEI A,BUF1 ;TTY OUT SETUP MOVEM A,.JBFF OUTBUF 1 OUTPUT ;DUMMY OUTPUT MOVEI E,GRTNG ;TYPE GREETING (IN DDT MODE) CALLI E,3"

kmon.mac appears to simulate both the distributor and the online disc processor parts.

interp.mac just calls itself: " TITLE INTERP V.021 24-FEB-70 SUBTTL JOSS INTERPRETER"

arith.mac's only reference to JOSS is this:

"P82.50: JUMPE ASF,P82.52; SF=0 CAMGE AMAG,[DEC 997885258] JRST P82.26; 1-X>EPSILON JRST P82.54; TO "JOSS EVALUATION""

larsbrinkhoff commented 4 years ago

I'm copying this comment.

Page 44 has very specific assembly instructions:

; NOTE THAT PROPER RECOVERY FROM MACHINE ERRORS ; DEPENDS, IN PART, ON A SPECIFIC LOADING ORDER ; FOR JOSS COMPONENTS. IN PARTICULAR, THE ORDER ; SHOULD BE: ARITH,DISTRIB, DISC, SU, CPU, DDT, IU.

larsbrinkhoff commented 2 years ago

Chapter 4 is about AID.
https://usermanual.wiki/Pdf/1970PDP10TimesharingHandbook.647321642/view

larsbrinkhoff commented 2 years ago

Regarding DECDMP commands, here are some hints:

find the DECtape with the current system.  The DECtape will be labeled
with the system name and date.  Mount it on some DECtape drive. 
Find the paper tape labeled 71.5K RIM10B DECDMP and load it into
the paper tape reader (on the PDP-10).  Stop the PDP-6.  Press
RESET and READ IN on the PDP-10.  The tape will be read, and the CTY will
type carriage return and line feed.  Type nL, where n is the number of
the DECtape drive which has the system tape.   The tape will spin for
a while.  Eventually, the CTY will type crlf again.  Type ,,206G to start
the system.  (If the Librascope disk is down, type ,,200G instead.)

https://www.saildart.org/LOAD.PUB[CSP,DOC]

larsbrinkhoff commented 2 years ago

I found a copy of DECDMP without the KL10 additions. I will submit it to this repository: https://github.com/PashPaw/DECDMP

larsbrinkhoff commented 2 years ago

I took a look at the Saildart version of DECDMP. I don't see that it has any file directory at all. It's just a linear core image starting from block 4.

@rcornwell, why do you need a DECDMP with directory in block 1?

PashPaw commented 2 years ago

I think, from my understanding, is that DECDMP is meant to load and start into DDT. From what RAND sent us in page 66 of RM-5216.pdf:

At the end of a normal load, control will be in DDT where parameters may be set or patches may be made. See the section on system cells (pp. 24-25) for the effect of parameter changes at initialization time on subsequent operations. JOSS is started by typing the sequence BEGIN$G.

If I'm reading the PDP-6 Monitor manual right though (see pg. 75), it was possible to start a version of DECDMP from DECtape directly. That may explain why it needed to look for data at block 1 and not block 0.

But, there was also a version that JOSS-II used that was bootstrapped with the RIM loader and paper tape. Again, see pg. 65 in RM-5216.pdf.

larsbrinkhoff commented 4 weeks ago

@Epigenetic got (the first) JOSS running on an emulator. It occurs to me that JOSS II may well have a similar structure, so maybe missing parts can be modeled on the earlier version. Here's a series of articles well worth looking into: https://epigeneticslab.net/

PashPaw commented 4 weeks ago

I’ll take a look.  I do have the last document that was not available on RAND’s site and it looks like it describes the file structures.  I’m away ATM but I’ll figure out how to scan it later.On Jul 6, 2024, at 12:11 PM, Lars Brinkhoff @.***> wrote: @Epigenetic got (the first) JOSS running on an emulator. It occurs to me that JOSS II may well have a similar structure, so maybe missing parts can be modeled on the earlier version. Here's a series of articles well worth looking into: https://epigeneticslab.net/

—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you authored the thread.Message ID: @.***>