perm filename IOELEV.CNV[KL,SYS] blob sn#209173 filedate 1976-04-03 generic text, type C, neo UTF8
C00001 00001
C00002 00002	Conventions for relations between KLDCP and IOELEV
C00005 ENDMK
Conventions for relations between KLDCP and IOELEV

Core locations -

	3000	KLDCP does JSR PC, here when it has nothing to do
		and 10 is running.  IOELEV should INIT if it hasn't
		already, then go into its main loop.  It should CLC, RTS PC
		if the 10 goes down; KLDCP will print appropriate message.
		To go into temporary KLDCP command mode, SEC, RTS PC.
		If microcode hangs, PMSG <...>, JMP 100004 (CTRLC).

	3004, 3006 - .RAD50 /IOELEV/

	3010, 3012 - random crufty version numbers (not actually used)

	14, 16	BPT vector, I guess it's OK for 11 ddt to use these.

	..	interrupt vectors for various devices are initially set
		up by KLDCP to point to error routine; IOELEV can load
		over these.

	0-400	vectors
	3000-?	IOELEV   (what is 400-3000 used for?)
	?-100000   11 DDT
	100000-?   KLDCP
	?-160000   stack

KLDCP will supply IOELEV with a stack; 11 DDT will have to be modified
to believe it.

Even while the IOELEV main loop is not running, interrupts will be
turned on and IOELEV P.I. level can run.  Various things like "MR" will
do a pdp11 "RESET" instruction and flush this.  This allows the right thing
to happen if the 10 halts, you go to KLDCP, in KLDCP you type DDT, and
now you're back in IOELEV.

Consequently IOELEV has to handle the flavor of teletype that DDT & SALV use.

It's best to do an "RI" before running, e.g., DEC diagnostics.

IOELEV isn't allowed to turn on interrupts for any devices that KLDCP
also uses; mainly, 60-cycle clock and DTE20.  These have to be handled
entirely in the main program and not touched at all at P.I. level (since
IOELEV's P.I. level runs concurrently with KLDCP.)

IOELEV main program level can (and will) use KLDCP's EMT's to hack the DTE20.