Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Parts wanted #4

Open
2 of 5 tasks
PashPaw opened this issue Feb 29, 2020 · 18 comments
Open
2 of 5 tasks

Parts wanted #4

PashPaw opened this issue Feb 29, 2020 · 18 comments

Comments

@PashPaw
Copy link
Collaborator

PashPaw commented Feb 29, 2020

  • MACRO-6. MACRO-10 v47 should work according to the documentation but it would be nice to have the real compiler.
  • Assistance. @larsbrinkhoff and @sebras had been working on it also.
  • The actual interpreter. I THINK AID (the term for JOSS on TOPS-10/20) is running on top of a simulator for JOSS's supervisor because of KMON.MAC. There's no way to tell unless we try.
  • Find a copy of DECDMP. There appears to be one at SAILDART but it looks mangled to support the KL.
  • Find DDT.
PashPaw added a commit that referenced this issue Mar 1, 2020
Added pages 15 and 16.
@larsbrinkhoff
Copy link
Member

  • Something to boot the supervisor. How does TOPS-10 do it, TENDMP or something?
  • Does the supervisor include a command line user interface, or is it a separate program? Or is it AID?

@PashPaw
Copy link
Collaborator Author

PashPaw commented Mar 1, 2020

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
Copy link
Collaborator Author

PashPaw commented Mar 2, 2020

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
Copy link
Member

Good find, that's a very useful document.

@PashPaw
Copy link
Collaborator Author

PashPaw commented Mar 2, 2020

@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
Copy link
Member

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

@rcornwell
Copy link

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
Copy link

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

@larsbrinkhoff
Copy link
Member

larsbrinkhoff commented Mar 4, 2020

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
Copy link
Collaborator Author

PashPaw commented Mar 4, 2020

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
Copy link
Member

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
Copy link
Member

@larsbrinkhoff
Copy link
Member

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
Copy link
Member

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

@larsbrinkhoff
Copy link
Member

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
Copy link
Collaborator Author

PashPaw commented May 31, 2022

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
Copy link
Member

@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
Copy link
Collaborator Author

PashPaw commented Jul 6, 2024 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants