1
0
mirror of https://github.com/PDP-10/its.git synced 2026-01-26 04:02:06 +00:00

KS10 microcode.

Plus assorted KS10-related documents.
This commit is contained in:
Lars Brinkhoff
2018-06-11 10:13:54 +02:00
parent 6d577568a2
commit 52ef5130b7
16 changed files with 10521 additions and 0 deletions

14
doc/kshack/-read-.-this- Executable file
View File

@@ -0,0 +1,14 @@
This directory contains KS10 specific files for ITS. It contains:
The microcode assembler, microcode source files, etc.
KSDEFS and other KS10-specific documentation and definition files.
The new salvager NSALV.
KSFEDR, the 8080 front-end filesystem manipulation program.
MTBOOT, the KS10 boot tape writing program.
The MINI36 server, used by NSALV to retrieve files over Chaosnet.
Etc.
The KSHACK directory on MC no longer contains the canonical versions of
these files. The KSHACK directory on AI is now the official KS10 hacking
directory. -Alan 12/30/85

2
doc/kshack/1proc.bugs Executable file
View File

@@ -0,0 +1,2 @@
Some floating-point instructions clear all bits in FLG,
they will have to be fixed to only clear some LH bits.

182
doc/kshack/ainote.8 Executable file
View File

@@ -0,0 +1,182 @@
-*- Text -*- This is the file AI:KSHACK;AINOTE >
WHAT TO DO IF AI CRASHES
*******************************************************************************
* Before following these directions, please try to find a system hacker to *
* take a look at the corpse first. *
* *
* If you do -anything- about a crashed ITS, leave an explanation in the log *
* book next to the system console. Include the date and time, your name, *
* what the problem was, what you did, and anything else relevant. And please *
* make it legible; three lines of random scrawls can't help the hackers fix *
* the problem. *
*******************************************************************************
THE SIMPLEST CASE
In the most common sort of crash, AI will type a bug message and go to Exec
DDT. For example:
PI LEVEL 7 BUGHALT. FIND A WIZARD OR CONSIDER TAKING A CRASH DUMP.
THE SYSTEM HAS CRASHED AND CANNOT BE REVIVED WITHOUT EXPERT ATTENTION.
IF YOU CAN'T FIND HELP, RELOAD THE SYSTEM.
YOU ARE NOW IN DDT.
BUGPC/ CAIA PCLSR+3 $Q-1/ PUSHJ P,BUGNIL
If the message says that the bug is "proceedable", you can try typing:
$P
to revive the system. If this works, be glad you don't have to read the rest
of this notice; however, you should still leave a note in the log book.
LESS THAN SIMPLE
If the system cannot be revived, it must be reloaded. To reload, you must get
to DSKDMP. Type:
$U
to leave Exec DDT and start DSKDMP. When DSKDMP starts up it announces itself
by saying:
DSKDMP
If DSKDMP has something to complain about, it will type a error message; its
error messages are explained on the summary of DSKDMP commands taped to AI. If
you don't understand (or like) what DSKDMP is telling you, stop; let someone
who does understand check it out.
CRASH DUMPS
Before reloading, you may want to take a crash dump. Crash dumps are
recommended if anything unusual was happening before the system crashed, or if
the remains look funny. To take a crash dump, get into DSKDMP and type:
D$CRASH;<fn1> <fn2><cr>
where <fn1> <fn2> is somehow descriptive of the problem; AI will linefeed when
the crash has been dumped. You can list the CRASH directory by typing:
U$CRASH;
to see what filenames are already used. If you take a crash dump, send mail to
Bug-ITS giving the filename you used.
RELOADING ITS
Look at AI's "Very Small Bulletin Board" envelope on the front of the system
console. The punch card in front will list which version of ITS is supposed to
be running. If, for instance, it says "NITS", then to reload AI, type:
.;NITS<cr>
This will cause DSKDMP to find the file DSK:.;@ NITS, load it into core, and
start it in Exec DDT -- thus, you will be talking to Exec DDT again, which will
linefeed to indicate it's ready for you.
Now check for any special instructions someone might have left about patching
ITS before starting it. Typically, a patch will appear as a few cryptic
commands scrawled on a scrap of paper stuffed into the VSBB in front on the
punch cards, which must be typed to Exec DDT before you proceed further. If
you find such instructions, but can't figure out what they mean, stop now.
To start ITS, type:
$G
to Exec DDT. ITS starts by running the Salvager over the filesystem, which
causes the disk to make noise -- don't worry, that's supposed to happen -- and
prints a series of messages to indicate its progress. If the Salvager finds
anything terribly wrong with the filesystem, it will refuse to let you bring
the system back up. If this happens, give up and find a hacker.
Next, ITS pokes around to see if there are any surprising holes in its memory.
If it finds any, it will ask if they are OK. If there is a note in the VSBB
predicting the holes exactly, answer affirmatively; otherwise it is time to
find a system hacker.
Now ITS checks whether it knows the time. If it doesn't, it tries to find the
current time from other machines on the local network. This may not work; if
it doesn't, AI will print an attention-getting message (including feeps) as it
comes up. In this case, you must log in and run the PDSET program.
RUNNING PDSET
If ITS tells you to run PDSET, you might as well does this from the system
console. So type:

and after AI greets you, type:
:PDSET<cr>
to run the PDSET program. PDSET starts by warning you that what it does is
potentially dangerous. To set the date and time type:
yymmddD
hhmmssT
!.
where "yymmdd" is the date ("850520" for May 20, 1985) and "hhmmss" is the time
in 24-hour time ("145900" for 2:59 PM). At the instant you type the ".", PDSET
will set the time to what you specified.
To leave PDSET type:
Q
and then log out:
$$U
IF AI HALTS
If the processor halts, the 8080 front-end will print a halt code and a PC.
These will look something like:
%HLTD/000001 PC/704000,,071101
Write these numbers in the log book. Also, if you take a crash dump, mention
these numbers in the mail you send to Bug-ITS.
You should now be talking to the 8080 front-end. To check this, type a
linefeed or two; you should see the prompt:
KS10>
Now type:
ST 777700<cr>
and the 8080 will try to start DSKDMP. If this works, DSKDMP will announce
itself, and you should go back to the middle of "Less Than Simple" and proceed
from there.
If DSKDMP does not start up, cold boot the machine.
COLD BOOTING
Push the white "BOOT" switch on the front of AI. This should initialize
everything, and load and start DSKDMP. DSKDMP will announce itself by typing:
DSKDMP
If nothing happens, make sure that some loser hasn't set the white "LOCK"
switch, also be sure that the "WRITE PROTECT" switch on the disk isn't set.
Now go back to "Reloading ITS" and proceed from there.
ITS IS CLEARLY BROKEN, BUT IT'S STILL RUNNING
Are you sure? Make sure it is really the case that nobody is getting any work
done. Check people on both network terminals and hardwired lines. If you are
certain, then type:

to get the attention of the 8080 front-end. It should prompt you with:
KS10>
(if it doesn't, make sure the white "LOCK" switch hasn't accidently been set).
Type:
SH<cr>
to make the 8080 ask ITS to stop and go to Exec DDT. If this works, AI will
print a PI LEVEL 7 BUG message; go back to "Less Than Simple" and proceed from
there.
If ITS ignores the 8080's request, type "" again and this time follow it
with:
HA<cr>
This should force the processor to halt, so go back to "If AI Halts" and
proceed from there. If this does not work, cold boot the machine.
CALLING DEC
If you determine that the machine needs to be serviced by DEC, call them at
895-5711. Tell them we have "2020 system number 84019009N" and describe the
problem. If they claim they can't find the system in their records, be
insistent; the field service people can find the machine even if the phone
answering people can't. They will ask for the name and phone number of someone
to contact; it doesn't matter whose you give them -- the field service people
know MIT well enough that they don't need those.
BRINGING AI DOWN
You should only bring AI down with good reason, e.g. the machine room is over
80, or it's time for PM. First, log in:
<your uname here>$U
(for instance, "DEC$U" if you're here to run PM.) Then run
:LOCK
It will prompt
_
type
nDOWN
where "n" is an integer not less than five; this will make AI bring itself down
in "n" minutes (LOCK sees numbers in octal only). This interval must be at
least five minutes to give people a chance to clean up. LOCK will ask you for
a message explaining why you're bringing AI down; type in a short explanation
and include your UNAME (so the users know who to blame) and end with

Then
Q
to get out of LOCK and
$$U
to log out. Then just wait.

134
doc/kshack/consol.24 Executable file
View File

@@ -0,0 +1,134 @@
-*- Text -*- This is the file AI:KSHACK;CONSOL >
Useful Console Commands
Talking to the 8080:
 Start talking to the 8080
 Stops whatever the 8080 is doing
 Stop talking to the 8080
Multiple commands can be given on a command line separated by commas. If
the RP command is the last command in the line, then the line will be
repeated. It stops when you type any character. An argument to RP causes
it to repeat the command roughly that many times. Useful are: "PM,RP",
"SI,RP", "EN,RP".
Booting the machine:
BT BooT
Resets the machine and boots from disk.
Normally this loads and starts DSKDMP.
MT MagTape boot
Resets the machine and boots from magtape.
DS Disk Select
Selects which disk drive to boot from.
MS Magtape Select
Selects which tape drive to boot from.
Debugging PDP-10 code:
ST pc STart
DDT starts at 774000.
DSKDMP starts at 777700.
SH SHutdown (Stop! Hold!)
Like raising switch 0 on a machine that has one.
HA HAlt
CO COntinue
SI Single Instruction
LA addr Load Address
DM data Deposit Memory
DN data Deposit Next
EM [addr] Examine Memory
EN Examine Next
EX inst EXecute instruction
ZM Zero Memory
This is VERY slow. It starts with low addresses, so ZM
followed by  is good enough to clear most memory that
you care about.
Debugging microcode:
SM [upc] Start Microcode
0 (the default) is the normal starting address. 1 just
writes a halt status block.
MR Master Reset
Resets everything (whatever that is).
CH Clock Halt
Stops the microcode in its tracks.
CS Clock Start
Start the microcode up again.
CP [steps] Clock Pulse
Single steps the microcode one or many steps.
EJ Examine Jumps
Prints current upc and how the next upc is being computed.
PM Pulse Machine
Like "CP,EJ".
TR upc TRace
Like "PM,RP" except it stops when the current upc gets to
the specified value. Also uses twice as much paper.
TE [state] Timer Enable
"TE 0" turns the timer off. Makes it possible to single
step the microcode with paging enabled without looping
taking timer interrupts. "TE 1" turns the timer on. Just
"TE" tells you what its state is.
CE [state] Cache Enable
Turns the cache on and off.
TP [state] Traps & Paging
Turns traps and paging on and off.
Halt Status Block:
[ Note that the DEC microcode wants to write the halt status block
starting at 376000. ]
500: MAG 506: BRX 514: PI
501: PC 507: ONE 515: XWD1
502: HR 510: EBR 516: T0
503: AR 511: UBR 517: T1
504: ARX 512: MASK 520: VMA
505: BR 513: FLG
It does -not- work to start the machine and read the halt status block
using DDT, you have to read it using the 8080.
Halt Codes:
0: Power Up 102: Bad Interrupt Table Pointer
1: Halt Instruction 1000: Bad BWRITE Function
2: Halted by 8080 1004: Bad NICOND Dispatch
100: I/O Page Fail 1005: Failed Multiply Self-test
101: Bad Interrupt Instruction 777777: Halted after "SM 1" command

BIN
doc/kshack/dec124.doc Executable file

Binary file not shown.

BIN
doc/kshack/ks-cha.txt Executable file

Binary file not shown.