/* KST20.TXT - KS TOPS-20 system installation on KLH10
*/
/* $Id: kst20.txt,v 2.3 2001/11/10 21:24:21 klh Exp $
*/
/*  Copyright © 2001 Kenneth L. Harrenstien
**  All Rights Reserved
**
**  This file is part of the KLH10 Distribution.  Use, modification, and
**  re-distribution is permitted subject to the terms in the file
**  named "LICENSE", which contains the full text of the legal notices
**  and should always accompany this Distribution.
*/

This file contains several sections:

    KS TOPS-20 INSTALLATION (including tape and disk boot scripts)
    KS T20 BOOT BUG NOTES
    KS T20 MONITOR BUG


KS TOPS-20 INSTALLATION
=======================

	Once you have installed the KLH10 binaries, you will need to
install a PDP-10 operating system on the KN10's virtual disks.  This
file documents the basic procedure for TOPS-20 on a KS10 (2020).

Although the TOPS-20 installation procedures were certainly listed
somewhere in Digital's documentation, I'm not sure what references to
provide; they may be difficult or impossible to find.  In any case,
some of the steps on a KN10 will be different.

(NB: the field service documentation files "red20.hlp" and "red20.mem"
helped me, but they were not intended for customers.)

You will need an "installation" tape or tape image to get started, and
almost certainly will want to install the accompanying sources and
tools.  You should already have a valid TOPS-20 license (personal or
otherwise) in order to use them.

These are the tapes containing the last known DEC TOPS-20 distribution
for the KS10 (DEC-2020), which was TOPS-20 V4.1:

	BB-D867E-BM     TOPS-20 V4.1 2020 INSTL 16MT9   1983
	BB-D868E-BM     T-20 V4.1 2020 DIST 16MT9 1/2   1983
	BB-V895A-BM     T-20 V4.1 2020 DIST 16MT9 2/2   1983 ("1/9/85")
	BB-J710B-BM     TOPS-20 V4.1 TOOLS 16MT9        1983 ("3/27/85")
	Tops-20 V4.1 TP#12  "Exec Src Mod"      Gidney TU78     21-Nov-85
	Tops-20 V4.1 TP#12  "Monitor Sources"   Gidney TU78     21-Nov-85

It should be possible to obtain these from www.trailing-edge.com.  In
particular, start with the first of these, which is the installation
tape:

ftp://ftp.trailing-edge.com/pub/pdp10/bb-d867e-bm_tops20_v41_2020_instl.tap.gz

The script that follows assumes you have uncompressed this into the
somewhat more manageable name of "bb-d867e-bm.tap" in your $KLH10_HOME.

In the transcript that follows, all notes are prefaced by triple
semicolons (;;;), and user input is presented in lowercase where
possible -- note that the monitor sometimes echoes typein in
uppercase.  Where there might be some confusion, a note such as "Type
CR" will identify what you need to type.

	=====================================================

QUICK SUMMARY:

$ ./kn10-ks inst-kst20.ini	;;; Configure and load tape bootstrap
				;;; (normally smmtbt-k.sav, entry 40000)
KLH10> go
MTBOOT>/l		;;; Load rest of monitor
MTBOOT>/g143		;;; Start at FS-creation entry point
			;;; (/g147 if a filesystem already exists)
	;;; After quiets down, ^C to get MEXEC, and carry on

	;;; After installation finished:
$ ./kn10-ks klh10.ini		;;; Configure and load disk bootstrap
KLH10> go
BOOT>				;;; Type CR to load and start MONITR.EXE

	=====================================================

FULL SCRIPT:

	;;; Here we go... 
	;;;
$ ./kn10-ks inst-kst20.ini 		;;; You type this
KLH10 V2.0 beta (MyKS) built Nov 10 2001 02:14:29
    Copyright © 2001 Kenneth L. Harrenstien -- All Rights Reserved.
This program comes "AS IS" with ABSOLUTELY NO WARRANTY.

Compiled for LINUX on I386 with word model USEHWD
Emulated config:
         CPU: KS10   SYS: T20   Pager: KL  APRID: 759
         Memory: 1024 pages of 512 words  (SHARED)
         Time interval: INTRP   Base: OSGET
         Interval default: 60Hz
         Internal clock: OSINT
         Other: JPC DEBUG PCCACHE CTYINT IMPINT EVHINT
         Devices: RH11 RPXX(DP) TM03(DP)
[MEM: Allocating 1024 pages shared memory, clearing...done]

KLH10> ; This is a sample KLH10 config file for a KS10 running TOPS-20.
KLH10> 
KLH10> ; Define basic KS10 device config - two RH11s each on its own Unibus
KLH10> 
KLH10> devdef rh0  ub1   rh11   addr=776700 br=6 vec=254
KLH10> devdef rh1  ub3   rh11   addr=772440 br=6 vec=224
KLH10> 
KLH10> ; Provide one disk, one tape in config T20 expects
KLH10> 
KLH10> devdef dsk0 rh0.0 rp     type=rp06 format=dbd9 path=T20-RP06.0-dbd9 iodly=0
KLH10> [dprpxx: WARNING! sigpend 37, 40, 43, 44, 45, 46, 47, 48, 49, 63]
[Creating RP06 disk file "T20-RP06.0-dbd9"]
devdef mta0 rh1.0 tm03  fmtr=tm03 type=tu45
KLH10> 
KLH10> ; Mount installation tape, skipping past ucode and defective boot
KLH10> devmount mta0 bb-d867e-bm.tap fskip=2
Mount requested: "bb-d867e-bm.tap"
[dptm03: WARNING! sigpend 33, 35, 37, 39, 40, 42, 44, 46, 48, 50, 63]
KLH10> 
[mta0: Tape online]
KLH10> ; Load fixed tape bootstrap directly
KLH10> load smmtbt-k.sav
Using word format "c36"...
Loaded "smmtbt-k.sav":
Format: DEC-CSAV
Data: 1017, Symwds: 0, Low: 040000, High: 044010, Startaddress: 040000
Entvec: JRST (120 ST: 0, 124 RE: 0, 137 VR: 0,,0)
KLH10> 
KLH10> ; Now ready to GO
KLH10> [EOF on inst-kst20.ini]	;;; Init file now done.
KLH10> go			;;; Boot is loaded, type "go" to start KN10! 
Starting KN10 at loc 040000...

MTBOOT>/l			;;; Type "/l" to load monitor

MTBOOT>/g143			;;; Now type "/g143" to start monitor
uba_read: Bad unibus IO addr: 760540	;;; KN10 reports probes of non-ex
uba_read: Bad unibus IO addr: 760010	;;; devices; these are harmless.


[FOR ADDITIONAL INFORMATION TYPE "?" TO ANY OF THE FOLLOWING QUESTIONS.]

DO YOU WANT TO REPLACE THE FILE SYSTEM ON THE PUBLIC STRUCTURE? Y

DO YOU WANT TO DEFINE THE PUBLIC STRUCTURE? Y

HOW MANY PACKS ARE IN THIS STRUCTURE: 1

ON WHICH "CHANNEL,UNIT" IS LOGICAL PACK # 0 MOUNTED: 0,0

DO YOU WANT THE DEFAULT SWAPPING SPACE? Y

DO YOU WANT THE DEFAULT SIZE FRONT END FILE SYSTEM? Y	;;; Unnec but OK

DO YOU WANT THE DEFAULT SIZE BOOTSTRAP AREA? Y

[STRUCTURE "PS" SUCCESSFULLY DEFINED]

[PS MOUNTED]
?PS UNIT 0 HAS NO BAT BLOCKS.
DO YOU WANT TO WRITE A SET OF PROTOTYPE BAT BLOCKS? Y
uba_read: Bad unibus IO addr: 775400
uba_read: Bad unibus IO addr: 777160

%%NO SETSPD

System restarting, wait...
ENTER CURRENT DATE AND TIME: 30-SEP-2001 0605	;;; Must enter time, sigh

YOU HAVE ENTERED SUNDAY, 30-SEPTEMBER-2001 6:05AM,
 IS THIS CORRECT (Y,N) Y
WHY RELOAD? NEW					;;; Type "new" or whatever.

<SYSTEM>ACCOUNTS-TABLE.BIN NOT FOUND - ACCOUNT VALIDATION IS DISABLED
uba_read: Bad unibus IO addr: 760540

RUNNING DDMP


NO SYSJOB
			;;; After you get "NO SYSJOB" you can type either
			;;; a ^C to get to the MEXEC prompt ("MX>").
NO EXEC
MX>GET FILE MTA0:	;;; Type just "g" then "mta0:" and CR.

INTERRUPT AT 0		;;; Monitor will read an EOF and do nothing.
MX>GET FILE MTA0:	;;; Repeat, to read EXEC.EXE from tape.
MX>START		;;; Type just "s" then CR.

 TOPS-20 Command processor 5.1(1354)
@TER NO RAI		;;; Success!  Let's stop uppercasing our input,
@ena			;;; and must get enabled.
$run mta0:		;;; Now read and start DLUSER.EXE from tape.
DLUSER>load mta0:	;;; Now read DLUSER data to set up directories.

DONE.
DLUSER>exit		;;; Get out.
$run mta0:		;;; Now read and start DUMPER.EXE from tape.
DUMPER>tape mta0:	;;; Point to tape drive and start restoring files!
			;;; Note in the next command it is important to
			;;; explicitly specify "<system>", otherwise the
			;;; files will be restored into "<NEW-SYSTEM>".
DUMPER>restore <*>*.*.* (TO) <system>*.*.* 


DUMPER tape # 1, "SYSTEM files for TOPS-20 V4.1", Thursday,  7-Apr-83 17
21
Loading file(s) into PS:<SYSTEM>

End of saveset
			;;; Note in the next command it is important to
			;;; explicitly specify "<system>", otherwise the
			;;; files will be restored into "<NEW-SYSTEM>".
DUMPER>restore <*>*.*.* (TO) <subsys>*.*.* 


DUMPER tape # 1, "SUBSYS files for TOPS-20 V4.1", Thursday,  7-Apr-83 17
23
Loading file(s) into PS:<SUBSYS>

End of saveset
			;;; The last saveset is optional and can be skipped.
			;;; If you want the UETP stuff, do:
DUMPER>restore <*>*.*.* (TO) <*>*.*.* 


DUMPER tape # 1, "UETP files for TOPS-20 V4.1", Thursday,  7-Apr-83 1726
Loading file(s) into PS:<UETP.LIB>

End of saveset
DUMPER>exit			;;; Done, with or without UETP.
$conn <system>
$vdir				;;; Check out what we have in <SYSTEM>

   PS:<SYSTEM>
 2020-ARPA-MONMED.EXE.1;P777700 321 164352(36)  6-Apr-83 00:28:29 PURRET
TA 
 2020-ARPA-MONSML.EXE.1;P777700 321 164352(36)  6-Apr-83 00:24:37 PURRET
TA 
 2020-MONMED.EXE.1;P777700 326 166912(36)  5-Apr-83 23:37:27 PURRETTA 
 2020-MONSML.EXE.1;P777700 326 166912(36)  5-Apr-83 23:34:00 PURRETTA 
 4-1-SETSPD.EXE.1;P777700  10 5120(36)    7-Dec-82 16:19:35 PURRETTA  
 BUGS.MAC.1;P777700        50 127461(7)  10-Nov-82 23:09:16 PURRETTA  
 BUGSTRINGS.TXT.1;P777700  10 24240(7)    6-Apr-83 00:28:24 PURRETTA  
 CHECKD.EXE.1;P777700      17 8704(36)    7-Dec-82 16:53:16 PURRETTA  
 DUMP.EXE.1;P777700       1025 524800(36) 13-Feb-80 17:44:06 PURRETTA 
 ERRMES.BIN.1;P777752      16 7717(36)   20-Dec-82 16:18:48 PURRETTA  
 ERROR.SYS.1;P777752        1 23(36)     30-Sep-2001 06:05:03 OPERATOR  
 EXEC.EXE.1;P777752       102 52224(36)   1-Dec-82 02:17:14 PURRETTA  
 FTPSER.EXE.1;P777700      17 8704(36)   15-Apr-82 10:14:40 PURRETTA  
 GALAXY.BWR.1;P777700       2 818(36)    20-Dec-82 16:40:58 PURRETTA  
   .DOC.1;P777700           3 1402(36)   14-Jan-83 22:30:20 WING      
 HSTNAM.TXT.1;P777700       4 9974(7)    12-Aug-82 14:36:51 PURRETTA  
 KS10.RAM.1;P777700        12 6144(36)   20-May-82 10:46:56 PURRETTA  
   .ULD.1;P777700          42 21186(36)   1-Mar-82 16:27:00 PURRETTA  
 MTBOOT.RDI.1;P777700       6 3072(36)   20-May-82 10:47:30 PURRETTA  
 NETSRV.RUN.1;P777700       1 234(7)      3-Nov-81 16:32:05 PURRETTA  
 PROGRAM-NAME-CACHE.TXT.1;P777700   1 78(7)  9-Mar-81 15:24:00 PURRETTA 
 PTYCON.ATO.1;P777700       1 333(7)     29-Mar-82 15:46:43 PURRETTA  
 REAPER.CMD.1;P777700       1 537(7)     22-Aug-79 19:53:37 PURRETTA  
 SMBOOT.EXE.1;P777700       3 1175(36)   13-May-82 12:17:47 PURRETTA  
 SMFILE.EXE.1;P777700      42 21504(36)  19-Feb-79 15:58:00 PURRETTA  
   .HLP.1;P777700           1 163(36)    19-Feb-79 15:42:00 PURRETTA  
 SMMTBT.EXE.1;P777700       3 1030(36)   13-May-82 12:18:15 PURRETTA  
 SYSJOB.EXE.1;P777700       7 3584(36)   20-Dec-82 17:43:24 PURRETTA  
   .HLP.1;P777700           3 5679(7)    29-Mar-82 15:47:02 PURRETTA  
   .RUN.1;P777700           1 340(7)     29-Mar-82 15:46:54 PURRETTA  
 SYSTEM.CMD.1;P777700       1 725(7)      8-May-79 14:46:35 PURRETTA  
 TOPS20.BWR.1;P777700       6 2669(36)    6-Apr-83 16:12:07 PURRETTA  
   .DOC.1;P777700           3 1255(36)    6-Apr-83 16:04:44 PURRETTA  

 Total of 2685 pages in 33 files
$			;;; For convenience, now is a good time to
			;;; make MONITR.EXE be your desired monitor!
$ren 2020-monmed.EXE.* (TO BE) monitr.exe
 2020-MONMED.EXE.1 => MONITR.EXE.1 [OK]
$^Ecease +1		;;; OK, now we can try a disk boot.

[System going down in one minute!!]
$			;;; It really does take a minute.  Patience...
[System down]

Shutdown complete		;;; When you see this, type ^\ (CTRL-\)
[HALTED: FE interrupt]		;;; to return to KLH10
KLH10> shutdown			;;; Then give "shutdown" command.
Continuing KN10 at loc 03...
**HALTED**
[HALTED: Program Halt, PC = 10754]
KLH10> q			;;; OK to quit KLH10 now!
Are you sure you want to quit? [Confirm]
Shutting down...Bye!
$				;;; Back at unix shell prompt



$ ./kn10-ks kst20.ini		;;; Fire it up again, with different ini file
KLH10 V2.0 alpha (MyKS) built Sep 30 2001 05:01:44
    Copyright © 1992-2001 Kenneth L. Harrenstien -- All Rights Reserved.
    Proprietary and Confidential; the copyright notice does not indicate
    actual or intended publication.
This software is provided under a license agreement described by the
accompanying file "LICENSE".  USE OF THIS SOFTWARE CONSTITUTES
ACCEPTANCE OF THE TERMS OF THE LICENSE AGREEMENT.
This program comes "AS IS" with ABSOLUTELY NO WARRANTY.

Compiled for LINUX on I386 with word model USEHWD
Emulated config:
         CPU: KS10   SYS: T20   Pager: KL  APRID: 759
         Memory: 1024 pages of 512 words  (SHARED)
         Time interval: INTRP   Base: OSGET
         Interval default: 60Hz
         Internal clock: OSINT
         Other: JPC DEBUG PCCACHE CTYINT IMPINT EVHINT
         Devices: RH11 RPXX(DP) TM03(DP)
[MEM: Allocating 1024 pages shared memory, clearing...done]

KLH10> ; This is a sample KLH10 config file for a KS10 running TOPS-20.
KLH10> 
KLH10> ; Define basic KS10 device config - two RH11s each on its own Unibus
KLH10> 
KLH10> devdef rh0  ub1   rh11   addr=776700 br=6 vec=254
KLH10> devdef rh1  ub3   rh11   addr=772440 br=6 vec=224
KLH10> 
KLH10> ; Provide one disk, one tape in config T20 expects
KLH10> 
KLH10> devdef dsk0 rh0.0 rp     type=rp06 format=dbd9 path=T20-RP06.0-dbd9 iodly=0
KLH10> [dprpxx: WARNING! sigpend 37, 40, 43, 44, 45, 46, 47, 48, 49, 63]
devdef mta0 rh1.0 tm03  fmtr=tm03 type=tu45
KLH10> 
KLH10> ; Define HOST device hackery if monitor supports it
KLH10> ;devdef idler 700 host
KLH10> 
KLH10> ; For convenience, load up disk bootstrap
KLH10> load smboot-k.sav
Using word format "c36"...
Loaded "smboot-k.sav":
Format: DEC-CSAV
Data: 1162, Symwds: 0, Low: 040000, High: 044010, Startaddress: 040000
Entvec: JRST (120 ST: 0, 124 RE: 0, 137 VR: 0,,0)
KLH10> [EOF on kst20.ini]	;;; Init file now done.
KLH10> go			;;; Boot is loaded, type "go" to start KN10!
Starting KN10 at loc 040000...

BOOT>				;;; Type just CR, will default to MONITR.EXE
uba_read: Bad unibus IO addr: 760540
uba_read: Bad unibus IO addr: 760010


[PS MOUNTED]
uba_read: Bad unibus IO addr: 775400
uba_read: Bad unibus IO addr: 777160

System restarting, wait...
ENTER CURRENT DATE AND TIME: 30-SEP-2001 0611	;;; Must enter time AGAIN!

YOU HAVE ENTERED SUNDAY, 30-SEPTEMBER-2001 6:11AM,
 IS THIS CORRECT (Y,N) Y
WHY RELOAD? OTHER

<SYSTEM>ACCOUNTS-TABLE.BIN NOT FOUND - ACCOUNT VALIDATION IS DISABLED
RUN CHECKD? Y				;;; "Y" for first time is good idea
[CHECKING FILE CONSISTENCY]

[WORKING ON STRUCTURE - PS:]


LOCAL COUNT OF FILE PAGES: 8035
LOCAL COUNT OF OVERHEAD PAGES: 5402
LOCAL COUNT OF USED PAGES: 13437

SYSTEM COUNT BEFORE CHECKD: 13437
SYSTEM COUNT AFTER CHECKD: 13437

THERE ARE NO LOST PAGES.

********************
*BUGINF "UXXFIT" AT 30-SEP-2001 06:11:10
*CHECKPOINT FILE NOT IN CORRECT FORMAT FOR THIS SYSTEM, REBUILDING...
*JOB: 0, USER: OPERATOR
********************
uba_read: Bad unibus IO addr: 760540

RUNNING DDMP


SYSJOB 5(20) STARTED AT 30-SEP-2001 0611
RUN SYS:ORION
RUN SYS:QUASAR
RUN SYS:MOUNTR
RUN SYS:INFO
RUN SYS:MAILER
RUN SYS:MAPPER
RUN SYS:LPTSPL
RUN SYS:LPTSPL
RUN SYS:CDRIVE
RUN SYS:SPRINT
JOB 0 /LOG OPERATOR XX OPERATOR
ENA
^ESET LOGIN PSEUDO
^ESET LOGIN CONSOLE
^ESET OPERATOR
PTYCON
GET SYSTEM:PTYCON.ATO
/
JOB 1 /LOG OPERATOR XX OPERATOR
ENA
RUN SYS:BATCON
/
SJ  0: @LOG OPERATOR OPERATOR
SJ  1: @LOG OPERATOR OPERATOR
SJ  0:  JOB 1 ON TTY43 30-SEP-2001 06:11:20
SJ  0: @ENA
SJ  0: $^ESET LOGIN PSEUDO
SJ  0: $^ESET LOGIN CONSOLE
SJ  0: $^ESET OPERATOR
SJ  0: $PTYCON
SJ  1:  JOB 2 ON TTY44 30-SEP-2001 06:11:21
SJ  1: @ENA
SJ  1: $RUN SYS:BATCON
SJ  0: PTYCON> GET SYSTEM:PTYCON.ATO
SJ  0: PTYCON> SILENCE

[From OPERATOR on line 45 to all: SYSTEM IN OPERATION]
SJ  0: PTYCON.LOG.1
SJ  0: PTYCON> W ALL
SJ  0: OPR(0)     3          OPERATOR   OPR        TI         0:0:0
SJ  0: PTYCON> CONN OPR
SJ  0: [CONNECTED TO SUBJOB OPR(0)]
			;;; When things seem quiet, type CR to get an EXEC.

 TOPS-2020 MEDIUM SYSTEM, TOPS-20 Monitor 4.1(5471)
@TER NO RAI
@log operator  		;;; Try logging in, pwd "DEC-20" 
 Job 4 on TTY42 30-Sep-2001 06:11:53
@ena
$			;;; Now do whatever you wish...


	=====================================================

Other things you probably want to do at some point:


$copy tty: monnam.txt		;;; Set the system name
MyKS TOPS-20 System
^Z
$copy tty: 4-1-config.cmd	;;; Set timezone here for now
timezone 8
^Z
$^Ecreate <operator>		;;; Change operator password
$$password tqbfjotld		;;; (use something better)
$$
$^Ecreate <me>			;;; Create your account
$$password nittfagmtc2taotp	;;; (or something better)
$$wheel
$$working 10000
$$permanent 10000
$$
$

There are large manuals devoted to TOPS-20 system maintenance, but
this is enough to make you dangerous.

KS T20 BOOT BUG NOTES
=====================

BOOT
----
	The magtape bootstrap source is BOOT.MAC, which was still used
to build both KL and KS bootstraps as of V4.1 of TOPS-20 (but at some
point thereafter, and certainly as of V6.0, there were big changes --
the KS code no longer exists in the last TOPS-20 BOOT.MAC).
	For the KS10, BOOT is assembled into either SMBOOT.EXE (for
booting from disk) or SMMTBT.EXE (for booting from tape), both in
CSAVE format.  There is also SMBOOT.I?? which is SMBOOT.EXE converted
into FE-loadable format, which the KLH10 does not use.

Unfortunately the KS10 BOOT cannot be used as-is without either
patching it or playing tricks in the emulator.  It has at least
three bugs:

  [1] The most serious is the following:
	40120/	J3+6/	WRCSTM [77B5]
	  should be:	WRCSTM [77B5]-ENT(16)
	  (or better yet set up with a MOVSI 1,770000 ? WRCSTM 1)

	This fails because at the time it is executed it has been
	moved into high core and the literal is no longer at that
	address!  It ends up loading the CST mask with 0 which
	causes an infinite page failure loop when the code turns
	paging on for the first time.

	It is not clear how a real KS10 managed to get past this bug.

	For now, this has been patched:
		40120/	702540,,40127  =>  702540,,774127
	(Start address remains 40000.)

  [2] In the code starting at FNDDEV there is the instruction
		SETZM KLIOWD	(zeros loc 35, KLINIK output word)
	which causes a page trap because at this point page 0 is unmapped.
	This instruction should either be done before turning paging on,
	or after low pages have been mapped.

	It was probably never noticed because the page fault handler
	merely continues at .+1.  

  [3] The disk bootstrap (SMBOOT) also has a bug of its own:
		CHKCHN:	CAIG P,MAXCHN1   (CAIG 17,2)
	should be:	CAIG P1,MAXCHN-1 (CAIG 10,1)
	
	Note there are two independent typo bugs in that one instruction!
	Geez.  First, the compare to P instead of P1 is clearly wrong.
	Second, MAXCHN1 is undefined; the assembler does not distinguish
	symbols beyond the first 6 characters so MAXCHN is silently being
	used, with a value of 2.  This causes the loop to check 3 channels
	(0,1,2) but only 2 channels are provided for in the RH11CH table!
	Trying to check the 3rd channel results in referencing the wrong
	words of a valid channel, or worse.

	This probably worked in real life because the first RH11
	always existed and was always used for the boot.

	For now, this has been patched:
	SMMTBT:	41335/	307740,,2  => 307400,,1
	SMBOOT: 41441/	307740,,2  => 307400,,1

FIXED VERSIONS
--------------

The patched versions of these binaries have been dumped out as:

	SMBOOT: smboot-k.sav	(c36 CSAVE format)
	SMMTBT: smmtbt-k.sav	(c36 CSAVE format)


MONITOR BOOT BUG
----------------

	There is a T20 monitor bug with the G/143 boot code that
prevents simply loading monitr.exe directly into the KLH10 and
starting it.
	When the monitor gets around to executing its first PXCT at
KISLOD+2 to set up the user ACs, it actually clobbers its own ACs.
The reason for this is that no WRUBR was ever done to set the
previous-context AC block; the emulator initializes both contexts to
AC block 0.  Several WRUBRs have been executed prior to this, but none
of them ever set the AC block fields.  One of them (at PGRON+3)
doesn't even set the base address either; they mostly seem to be used
as the CLHWPT macro to clear the cache and paging hardware, and refer
to an argument of KIPGW0 or KIPGWD which in the source (APRSRV.MAC)
don't have the set-ac-block flag set.
	This appears to have worked in the past because BOOT, which
is expected to load monitr.exe, has already set the previous-context-AC
block to 6.
	For now, this can be avoided by always using SMBOOT or SMMTBT.
One solution would be for the KLH10 FE to provide a "monitor load"
command that did this previous-context AC block setting (and any other
setup that might be found necessary) in addition to doing a normal
binary load.

KS T20 MONITOR BUG
------------------

	There seems to be a timing race condition when outputting to
the CTY.  Normally the KLH10 responds instantly to a KS->FE interrupt
request by gobbling a valid output char and sending a FE->KS interrupt.
This causes output to wedge after the first bufferful until another
FE->KS interrupt is given.
	This happens because of the code in the tty driver that
tries to turn interrupts off and then on while initiating output of the
first char.  It actually doesn't do any good and the entire buffer is
emptied at interrupt level before the first call returns!


KS T20 MONITOR SOURCE GLITCH
----------------------------

	My copy of the "Monitor Sources" tape has a bad record data
header which resulted in problems with the "sources.cmd" file; it
either has its last page clobbered or has 444 zero words appended.
	Shoppa's copy may not have this problem.  Fortunately it isn't
an essential file.
