mirror of
https://github.com/PDP-10/klh10.git
synced 2026-01-11 23:52:54 +00:00
Add klh10-2.0a-aux.tgz.
This commit is contained in:
parent
742b43d025
commit
00b977cfde
78
READaux
Normal file
78
READaux
Normal file
@ -0,0 +1,78 @@
|
||||
/* READaux - README file for KLH10 Auxiliary Distribution
|
||||
*/
|
||||
/* $Id: klh10aux.rdm,v 2.1 2001/11/10 10:38:16 klh Exp $
|
||||
*/
|
||||
/* Copyright © 2001 Kenneth L. Harrenstien
|
||||
**
|
||||
** This file is part of and describes the "Auxiliary Distribution"
|
||||
** package, built and released as a companion to the KLH10 Distribution.
|
||||
** The legal text is contained below.
|
||||
*/
|
||||
|
||||
----------------------------
|
||||
|
||||
The KLH10 Auxiliary Distribution consists of all the components (both
|
||||
software and documentation) residing in the "contrib" and "run"
|
||||
directories of a typical installation of the KLH10 Distribution.
|
||||
|
||||
The KLH10 Distribution license does NOT apply to these components.
|
||||
They are derived from several sources, each of which may have its own
|
||||
licensing terms. They are included solely for the convenience of
|
||||
users, and in order to avoid licensing conflicts have been made
|
||||
available in the form of a separate "Auxiliary Distribution" package.
|
||||
They are subject to removal if their inclusion causes any legal
|
||||
problems.
|
||||
|
||||
The Auxiliary Distribution package includes the following specific
|
||||
components:
|
||||
|
||||
[1] PDP-10 software (bootstrap and diagnostic binaries) from Digital
|
||||
Equipment Corporation (now Compaq Corporation). These may be used
|
||||
only with a valid Digital license such as the "Home Hobbyist License"
|
||||
(see <http://pdp-10.trailing-edge.com/#license>).
|
||||
The specific components are identified by various README files in
|
||||
the following subdirectories.
|
||||
|
||||
run/dfkfb/ - Digital (KL10) DFKFB timing test diagnostic binary
|
||||
run/klnic/ - Digital (KL10 SRI-NIC) bootstrap binaries
|
||||
run/klt10/ - Digital (KL10 TOPS-10) bootstrap binaries
|
||||
run/klt20/ - Digital (KL10 TOPS-20) bootstrap binaries
|
||||
run/kst10/ - Digital (KS10 TOPS-10) bootstrap binaries
|
||||
run/kst20/ - Digital (KS10 TOPS-20) bootstrap binaries
|
||||
|
||||
|
||||
[2] PDP-10 software derived from the MIT ITS systems. These are
|
||||
believed to be usable on terms similar to those of the GNU Public
|
||||
License.
|
||||
The specific components are listed in the file "run/ksits/README".
|
||||
|
||||
run/ksits/ - MIT (KS10 ITS) system binaries
|
||||
|
||||
|
||||
[3] Utility software from other contributors, where terms were not
|
||||
specifically stated but are believed to be similar to those of
|
||||
the "BSD" style licenses (e.g. FreeBSD, NetBSD).
|
||||
More detail is provided in the file "contrib/README" and the
|
||||
individual subdirectories.
|
||||
|
||||
contrib/supdup/ - Unix SUPDUP client and server
|
||||
contrib/read20/ - Unix DUMPER tape image reader
|
||||
|
||||
|
||||
Disclaimer:
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
IN NO EVENT SHALL KENNETH L. HARRENSTIEN BE LIABLE FOR ANY CLAIM,
|
||||
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
|
||||
OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
|
||||
THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
----------------------------
|
||||
|
||||
To reiterate: If there is any likelihood that your intended use may
|
||||
violate any of the licensing terms of the separate components, you
|
||||
should NOT use them. If any of the original copyright holders object
|
||||
to this packaging, I will remove the offending components or simply
|
||||
stop providing the Auxiliary Distribution altogether.
|
||||
10
contrib/README
Normal file
10
contrib/README
Normal file
@ -0,0 +1,10 @@
|
||||
The following directories contain programs of uncertain lineage where
|
||||
the original authors gave no explicit instructions as to the terms of
|
||||
use or redistribution.
|
||||
|
||||
Based on history and e-mail exchanges I believe that "BSD" style
|
||||
licensing terms are probably what was intended, but could be wrong.
|
||||
|
||||
supdup/ (Unix C version of ITS SUPDUP)
|
||||
read20/ (Unix utility to read TOPS-20 DUMPER tape images)
|
||||
|
||||
23
contrib/read20/Makefile
Normal file
23
contrib/read20/Makefile
Normal file
@ -0,0 +1,23 @@
|
||||
# Quick and dirty makefile for read20.
|
||||
# Invoke with appropriate system, e.g. "make freebsd"
|
||||
|
||||
SRCS= dump.h read20.c
|
||||
OBJS= read20.o
|
||||
|
||||
usage:
|
||||
@echo 'Use appropriate system as target, eg "make freebsd"'
|
||||
|
||||
freebsd:
|
||||
cc -g -O -o read20 read20.c -lcompat
|
||||
|
||||
osfaxp:
|
||||
cc -g -O -std1 -o read20 read20.c
|
||||
|
||||
linux:
|
||||
cc -g -O -o read20 read20.c
|
||||
|
||||
solaris:
|
||||
gcc -g -O -o read20 read20.c
|
||||
|
||||
solaris-cc:
|
||||
/opt/SUNWspro/bin/cc -g -O -o read20 read20.c
|
||||
489
contrib/read20/dump.h
Normal file
489
contrib/read20/dump.h
Normal file
@ -0,0 +1,489 @@
|
||||
/* Note: the source for DUMPER.MAC changed considerably between v.419, which
|
||||
implemented formats 3,4,5, and v.563 which implemented 4,5,6.
|
||||
What follows is a synthesis of info gleaned from both.
|
||||
*/
|
||||
|
||||
/* COMMENT
|
||||
|
||||
F O R M A T O F D U M P E R T A P E S
|
||||
===========================================
|
||||
|
||||
|
||||
EACH PHYSICAL RECORD WRITTEN BY DUMPER CONTAINS ONE OR MORE
|
||||
LOGICAL RECORDS, EACH OF WHICH IS 518 (1006 OCTAL) WORDS LONG.
|
||||
|
||||
EACH LOGICAL RECORD HAS THE FOLLOWING FORMAT:
|
||||
|
||||
!=======================================================!
|
||||
CHKSUM ! CHECKSUM OF ENTIRE 518-WORD RECORD ! +0
|
||||
!-------------------------------------------------------!
|
||||
ACCESS ! PAGE ACCESS BITS (CURRENTLY NOT USED) ! +1
|
||||
!-------------------------------------------------------!
|
||||
TAPNO !SCD! SAVESET NUMBER ! TAPE NUMBER ! +2
|
||||
!-------------------------------------------------------!
|
||||
PAGNO !F1!F2! FILE # IN SET ! PAGE # IN FILE ! +3
|
||||
!-------------------------------------------------------!
|
||||
TYP ! RECORD TYPE CODE (NEGATED) ! +4
|
||||
!-------------------------------------------------------!
|
||||
SEQ ! RECORD SEQUENCE NUMBER (INCREASES BY 1) ! +5
|
||||
!=======================================================!
|
||||
! !
|
||||
! CONTENTS OF FILE PAGE IF DATA RECORD !
|
||||
! OTHER TYPES HAVE OTHER INFORMATION HERE !
|
||||
! !
|
||||
!=======================================================!
|
||||
|
||||
|
||||
TYPE VALUE MEANING
|
||||
---- ----- -------
|
||||
DATA 0 CONTENTS OF FILE PAGE
|
||||
TPHD 1 NON-CONTINUED SAVESET HEADER
|
||||
FLHD 2 FILE HEADER (CONTAINS FILESPEC, FDB)
|
||||
FLTR 3 FILE TRAILER
|
||||
TPTR 4 TAPE TRAILER (OCCURS ONLY AFTER LAST SAVESET)
|
||||
USR 5 USER DIRECTORY INFORMATION
|
||||
CTPH 6 CONTINUED SAVESET HEADER
|
||||
FILL 7 NO MEANING, USED FOR PADDING
|
||||
|
||||
|
||||
SCD (3 BITS) - 0=NORMAL SAVE, 1=COLLECTION, 2=ARCHIVE, 3=MIGRATION
|
||||
|
||||
F1 F2 MEANING
|
||||
-- -- -------
|
||||
0 0 OLD-FORMAT TAPE (NO FILE # IN PAGNO BITS 2-17)
|
||||
1 1 OLD-FORMAT TAPE, CONTINUED FILE
|
||||
0 1 NEW-FORMAT TAPE (FILE # IN PAGNO BITS 2-17)
|
||||
1 0 NEW-FORMAT TAPE, CONTINUED FILE
|
||||
|
||||
A DUMPER TAPE IS A COLLECTION OF RECORDS ORGANIZED IN THE
|
||||
FOLLOWING FASHION:
|
||||
|
||||
|
||||
!=======================================================!
|
||||
! HEADER FOR FIRST SAVESET (TPHD) !
|
||||
!-------------------------------------------------------!
|
||||
! USER INFO (USR) OR FILE (SEE BELOW) !
|
||||
!-------------------------------------------------------!
|
||||
! USER INFO OR FILE !
|
||||
!-------------------------------------------------------!
|
||||
! . !
|
||||
! . !
|
||||
! . !
|
||||
!=======================================================!
|
||||
! HEADER FOR SECOND SAVESET (TPHD) !
|
||||
!-------------------------------------------------------!
|
||||
! USER INFO (USR) OR FILE (SEE BELOW) !
|
||||
!-------------------------------------------------------!
|
||||
! USER INFO OR FILE !
|
||||
!-------------------------------------------------------!
|
||||
! . !
|
||||
! . !
|
||||
! . !
|
||||
!=======================================================!
|
||||
! !
|
||||
! SUBSEQUENT SAVESETS !
|
||||
! !
|
||||
!=======================================================!
|
||||
! !
|
||||
! LAST SAVESET !
|
||||
! !
|
||||
!=======================================================!
|
||||
! TAPE TRAILER (TPTR) !
|
||||
!=======================================================!
|
||||
|
||||
|
||||
NOTES:
|
||||
|
||||
1. ON LABELED TAPES, THE TPTR RECORD APPEARS ONLY IF
|
||||
THE SAVESET IS CONTINUED ON ANOTHER TAPE.
|
||||
|
||||
2. SOLITARY TAPE MARKS (EOF'S) ARE IGNORED ON INPUT.
|
||||
TWO CONSECUTIVE TAPE MARKS ARE INTERPRETED AS TPTR.
|
||||
|
||||
3. ON LABELED TAPES, EACH SAVESET OCCUPIES EXACTLY ONE FILE.
|
||||
|
||||
4. THE FIRST RECORD OF A CONTINUED SAVESET IS CTPH
|
||||
INSTEAD OF TPHD.
|
||||
|
||||
A DISK FILE SAVED ON A DUMPER TAPE ALWAYS HAS THIS
|
||||
SEQUENCE OF RECORDS:
|
||||
|
||||
!=======================================================!
|
||||
! FILE HEADER (FLHD) !
|
||||
!-------------------------------------------------------!
|
||||
! DATA RECORD: 1 PAGE OF FILE (DATA) !
|
||||
!-------------------------------------------------------!
|
||||
! DATA RECORD: 1 PAGE OF FILE (DATA) !
|
||||
!-------------------------------------------------------!
|
||||
! . !
|
||||
! . !
|
||||
! . !
|
||||
!-------------------------------------------------------!
|
||||
! FILE TRAILER (FLTR) !
|
||||
!=======================================================!
|
||||
|
||||
END COMMENT
|
||||
*/
|
||||
|
||||
/* Additional notes from DUMPER version 563:
|
||||
|
||||
CURFMT==6 ;CURRENT FORMAT NUMBER, DO NOT CHANGE
|
||||
;6 GAINED "TONEXT" RECORD TYPE
|
||||
;5 GAINED PASSWORD ENCRYPTION AND OTHER CRDIR%oids
|
||||
;4 IS THE LOWEST LEGAL TAPE TYPE
|
||||
|
||||
Old DUMPERs used record offset 1 (now .FLAG) for a "page access"
|
||||
word. In all cases it was set to a canned value on write and ignored
|
||||
on read. This not being very useful, the word has been usurped for a
|
||||
flag word in tape version 6. However, the bit values of H.HIST must
|
||||
never be used as flags, since old DUMPERs always set them.
|
||||
|
||||
Record type 7 WHEN WRITTEN ON TAPE is always a Filler record and
|
||||
implies that the rest of the physical record can be discarded. GETREC
|
||||
does not pass these records back. If GETREC does return record type 7,
|
||||
it is the SAVEEN (end of saveset) record. Be careful of the
|
||||
difference. SAVEEN records are generated by reading into an EOF.
|
||||
|
||||
Current record header format:
|
||||
.CHKSM checksum of entire record. Ignore if FL.NCK is set in .FLAG
|
||||
.FLAG flags (FL.???). FL.HIS is always set for historical reasons.
|
||||
.TAPNO <STYP>B2 + <SavesetNumber>B17+<TapeNumber>
|
||||
.PAGNO <OLDFLG>B1 + <FileNumber>B17 + <PageNumberInFile>
|
||||
.TYP negated record type
|
||||
.SEQ sequence number (usually increases by one)
|
||||
|
||||
STYP = 0 Normal Save, 1 Collection, 2 Archival, 3 Migration
|
||||
OLDFLG = 1B0 on an old style tape in a TAPEEN (4) record if it isn't *really*
|
||||
the end of the file, but in fact means to go to the next tape.
|
||||
|
||||
The Saveset number is only filled in in
|
||||
Archival/Collection/Migration savesets.
|
||||
|
||||
If, on reading a tape, a sequence number does not increase, but
|
||||
stays the same or goes down (on tapes with more than one logical
|
||||
record per physical record), an error was encountered while writing
|
||||
the tape that didn't show up while reading it. The second physical
|
||||
record is ignored.
|
||||
|
||||
|
||||
Tape format
|
||||
|
||||
Tapes are a group of Savesets, ended by a end-of-tape record
|
||||
(either TONEXT, indicating the data continued on another tape, or
|
||||
TAPEEN, meaning end of all data).
|
||||
|
||||
They are written as
|
||||
saveset sequence
|
||||
EOF (on some types of tapes)
|
||||
saveset sequence
|
||||
EOF (on some types of tapes)
|
||||
...
|
||||
TAPEEN or TONEXT
|
||||
EOF
|
||||
EOF (logical EOT)
|
||||
|
||||
Where a saveset sequence consists of
|
||||
Saveset header (SAVEST)
|
||||
File header (FILEST) | for each
|
||||
File data (DATA) |for each page of data | file in the
|
||||
File trailer (FILEEN) | saveset.
|
||||
|
||||
A TONEXT record can occur at ANY point, indicating the next tape
|
||||
is needed to read the next record. The next tape will start with a
|
||||
CONTST record (continued saveset).
|
||||
|
||||
And also: old tapes will have a FILEST record after a CONTST
|
||||
record if mid-file, which should be ignored; and FILEEN tapes with
|
||||
PG.CON set in .PAGNO are treated as TONEXT records (and are handled
|
||||
that way by GETREC).
|
||||
|
||||
Any physical record on tape is made up of 1-15. logical records
|
||||
(always the same number of records per physical record for any given
|
||||
tape). SAVEST, CONTST and TAPEEN records are always the first in
|
||||
their physical records (previous physical records being padded with
|
||||
FILLER records if needed to accomplish this).
|
||||
|
||||
|
||||
*/
|
||||
|
||||
/* DUMPER formats */
|
||||
#define DFMTV0 0 /* BBN TENEX DUMPER format */
|
||||
/* 1 */
|
||||
/* 2 */
|
||||
#define DFMTV3 3 /* T20 V2 - FDB changes, structures, etc. */
|
||||
#define DFMTV4 4 /* T20 V3 - new GTDIR blocks */
|
||||
#define DFMTV5 5 /* T20 V6 - bigger GTDIR blocks, pwd encryption */
|
||||
#define DFMTV6 6 /* T20 V7 - record type 8, randomness */
|
||||
|
||||
|
||||
/*
|
||||
EACH PHYSICAL RECORD WRITTEN BY DUMPER CONTAINS ONE OR MORE
|
||||
LOGICAL RECORDS, EACH OF WHICH IS 518 (1006 OCTAL) WORDS LONG.
|
||||
|
||||
(Note: max blocking factor is 15., i.e. no more than 15 logical records
|
||||
per physical record.)
|
||||
*/
|
||||
|
||||
/* Header of every DUMPER logical record */
|
||||
#define RECHDR_CKSUM 0 /* Checksum */
|
||||
#define RECHDR_FLAG 1 /* DV6: flags, previously ACCESS */
|
||||
#define RECHDR_TAPNO 2 /* Tape number */
|
||||
#define RECHDR_PAGNO 3 /* Page number */
|
||||
#define RECHDR_TYP 4 /* Record type (RECTYP_xxx), negated */
|
||||
#define RECHDR_SEQ 5 /* Record sequence # */
|
||||
#define RECHDR_LEN 6 /* Header size (# words) */
|
||||
|
||||
/* Fields in FLAG:
|
||||
FL.HIS==(170000);Always set in .FLAG (historical, old page access bits)
|
||||
FL.NCK==1B0 ; ([563],V6) No real checksum in .CHKSM
|
||||
*/
|
||||
/* Fields in TAPNO:
|
||||
700000,,0 ; high 3 bits are saveset type:
|
||||
; 0 normal, 1 Collection, 2 Archival, 3 Migration
|
||||
77777,,0 ; Saveset number
|
||||
0,,777777 ; Tape number
|
||||
*/
|
||||
/* Fields in PAGNO:
|
||||
400000,,0 ; PGNCFL - continued tape file
|
||||
; (set in 3(FLTR), 4(TPTR), 2(FLHD))
|
||||
; [563] PG.CON means TONEXT
|
||||
200000,,0 ; PGNNFL - File # is valid, if complement of PGNCFL
|
||||
; [563] PG.NFN always set, even if PG.CON set too.
|
||||
177777,,0 ; File number (in saveset)
|
||||
0,,777777 ; Page number in file
|
||||
|
||||
F1 F2 MEANING
|
||||
-- -- -------
|
||||
0 0 OLD-FORMAT TAPE (NO FILE # IN PAGNO BITS 2-17)
|
||||
1 1 OLD-FORMAT TAPE, CONTINUED FILE
|
||||
0 1 NEW-FORMAT TAPE (FILE # IN PAGNO BITS 2-17)
|
||||
1 0 NEW-FORMAT TAPE, CONTINUED FILE
|
||||
*/
|
||||
|
||||
/* Record types (values negated in header) */
|
||||
/* [419] [563] */
|
||||
#define RECTYP_DATA 0 /* DATA DATA data record, file contents */
|
||||
#define RECTYP_TPHD 1 /* TPHD SAVEST Tape/saveset header */
|
||||
#define RECTYP_FLHD 2 /* FLHD FILEST File header */
|
||||
#define RECTYP_FLTR 3 /* FLTR FILEEN File trailer/end */
|
||||
#define RECTYP_TPTR 4 /* TPTR TAPEEN Tape trailer, saveset end */
|
||||
#define RECTYP_USR 5 /* USR DIRECT User directory info */
|
||||
#define RECTYP_CTPH 6 /* CTPH CONTST Continued saveset header */
|
||||
#define RECTYP_FILL 7 /* FILL FILL,SAVEEN Filler record */
|
||||
#define RECTYP_FLCT 8 /* TONEXT To next tape rec */
|
||||
/* (continued file) */
|
||||
|
||||
/* Record data formats (512 words following header) */
|
||||
|
||||
/* Type 0 (DATA) - File data page, all 512 words */
|
||||
|
||||
/* Types 1 and 6 (TPHD, CTPH) - Tape/saveset headers */
|
||||
/*
|
||||
0: <tape format> ; FMT - A DFMTVn value
|
||||
1: <ptr to saveset name> ; PNT - either 3 or 20
|
||||
2: <TAD of dump> ; TAD
|
||||
|
||||
In V4,V5 the saveset name starts at 3.
|
||||
In V6 there is more data:
|
||||
3: <sixbit VolID of tape> ; VOL (not used on read)
|
||||
4: <edit # of DUMPER> ; EDT
|
||||
20: start of saveset name ; MSG
|
||||
*/
|
||||
|
||||
/* Type 2 (FLHD) - File header */
|
||||
/*
|
||||
0: <start of ASCIZ filename spec>
|
||||
200: <start of FDB block>
|
||||
*/
|
||||
|
||||
/* Type 3 (FLTR) - File trailer */
|
||||
/*
|
||||
0: <start of FDB block> - modified to reflect file dumped
|
||||
|
||||
;[554] For ARCHIVed files, a tape written by 4.1 DUMPER will have
|
||||
;[554] 30 FDB words, 10 words for author name, 10 words for last
|
||||
;[554] writer, then 7 words of archive information. A tape written
|
||||
;[554] by 6.0 DUMPER has 37 words of FDB, then the author, last writer,
|
||||
;[554] and archive information. So, check the tape format so we account
|
||||
;[554] for the correct number of words from FDB-start when looking for
|
||||
;[554] the archive information.
|
||||
|
||||
Note: the 37-word FDB appears to have its own length (in wds) as
|
||||
the first word.
|
||||
*/
|
||||
|
||||
/* Type 4 (TPTR) - Tape trailer */
|
||||
/*
|
||||
Data portion unused
|
||||
*/
|
||||
|
||||
/* Type 5 (USR) - User directory info */
|
||||
/*
|
||||
May be only a user name, or full directory info if dumped under
|
||||
right conditions (wheel, etc).
|
||||
|
||||
0: <GTDIR info block> ; V6 fixes all ptrs to offsets before writing;
|
||||
; V4/V5 only fix for PSW and ACT.
|
||||
40: <username string> ; UHNAM
|
||||
60: <password string> ; UHPSW
|
||||
100: <acct string> ; UHACT
|
||||
200: <user groups array> ; CDUG (0200 words)
|
||||
400: <dir groups array> ; CDDG (0200 words)
|
||||
600: <subdir groups array> ; CDSG (0200 words)
|
||||
|
||||
*/
|
||||
|
||||
/* Type 7 (FILL) - Filler record (to fill out physical record) */
|
||||
/*
|
||||
Data portion unused
|
||||
*/
|
||||
|
||||
/* Type 8 (FLCT) - TONEXT, file continuation (new in V6)
|
||||
Note: this value was used internally in DUMPER 419 as a made-up
|
||||
type called SSND (saveset end), returned when physical EOFs
|
||||
were encountered. DUMPER 563 re-used 7 (FILL) internally for that
|
||||
purpose.
|
||||
*/
|
||||
/*
|
||||
Data portion apparently unused
|
||||
*/
|
||||
|
||||
/* 5 bytes per 36-bit word */
|
||||
/* 518 word logical blocks */
|
||||
#define TAPEBLK 518*5 /* Size of one logical block */
|
||||
|
||||
/* Checksum is first word */
|
||||
#define WdoffChecksum 0
|
||||
#define BtoffChecksum 0
|
||||
#define BtlenChecksum 36
|
||||
/* Page access bits is second word */
|
||||
#define WdoffAccess 1
|
||||
#define BtoffAccess 0
|
||||
#define BtlenAccess 36
|
||||
/* SCD, first 3 bits in next word */
|
||||
#define WdoffSCD 2
|
||||
#define BtoffSCD 0
|
||||
#define BtlenSCD 3
|
||||
/* Number of saveset on tape */
|
||||
#define WdoffSaveSetNum 2
|
||||
#define BtoffSaveSetNum 3
|
||||
#define BtlenSaveSetNum 15
|
||||
/* Tape number of dump */
|
||||
#define WdoffTapeNum 2
|
||||
#define BtoffTapeNum 18
|
||||
#define BtlenTapeNum 18
|
||||
/* F1, F2 Flag bits */
|
||||
#define WdoffF1F2 3
|
||||
#define BtoffF1F2 0
|
||||
#define BtlenF1F2 2
|
||||
/* File Number in Set (new format only) */
|
||||
#define WdoffFileNum 3
|
||||
#define BtoffFileNum 2
|
||||
#define BtlenFileNum 16
|
||||
/* Page Number in file */
|
||||
#define WdoffPageNum 3
|
||||
#define BtoffPageNum 18
|
||||
#define BtlenPageNum 18
|
||||
/* Record type (2's complement) */
|
||||
#define WdoffRectype 4
|
||||
#define BtoffRectype 0
|
||||
#define BtlenRectype 36
|
||||
/* Record sequence number */
|
||||
#define WdoffRecseq 5
|
||||
#define BtoffRecseq 0
|
||||
#define BtlenRecseq 36
|
||||
|
||||
#define RecHdrlen 6 /* # words in logical record header */
|
||||
|
||||
/* SCD Values */
|
||||
#define SCDNormal 0
|
||||
#define SCDCollection 1
|
||||
#define SCDArchive 2
|
||||
#define SCDMigration 3
|
||||
|
||||
/* F1, F2 Values */
|
||||
#define F1F2Old 0
|
||||
#define F1F2OldContinue 3
|
||||
#define F1F2New 1
|
||||
#define F1F2NewContinue 2
|
||||
|
||||
/* Record type values */
|
||||
#define RectypeData 0
|
||||
#define RectypeTphd 1
|
||||
#define RectypeFlhd 2
|
||||
#define RectypeFltr 3
|
||||
#define RectypeTptr 4
|
||||
#define RectypeUsr 5
|
||||
#define RectypeCtph 6
|
||||
#define RectypeFill 7
|
||||
#define RectypeTonext 8 /* V6: "to next tape" */
|
||||
|
||||
char *rectypes[] = {
|
||||
"DATA",
|
||||
"ISSH",
|
||||
"FLHD",
|
||||
"FLTR",
|
||||
"TPTR",
|
||||
"UDIR",
|
||||
"CSSH",
|
||||
"FILL",
|
||||
"NEXT"
|
||||
};
|
||||
|
||||
#define BtoffWord 0
|
||||
#define BtlenWord 36
|
||||
|
||||
/* Word offsets for saveset header data (Record types 1, 6) */
|
||||
#define WdoffSSFormat RecHdrlen+0 /* Saveset format (DUMPER fmt) */
|
||||
#define WdoffSSNamoff RecHdrlen+1 /* Saveset name offset */
|
||||
#define WdoffSSDate RecHdrlen+2 /* Saveset date (TAD) */
|
||||
|
||||
#define WdoffFLName 6 /* Filename offset (type 2) */
|
||||
#define WdoffFDB 134 /* FDB offset (type 2) */
|
||||
|
||||
#define WdoffFDB_CTL 01+WdoffFDB /* Control word .FBCTL */
|
||||
|
||||
#define BtoffFDB_Arc 11 /* archived */
|
||||
#define BtlenFDB_Arc 1
|
||||
|
||||
#define BtoffFDB_Inv 12 /* invisible */
|
||||
#define BtlenFDB_Inv 1
|
||||
|
||||
#define BtoffFDB_Off 13 /* offline */
|
||||
#define BtlenFDB_Off 1
|
||||
|
||||
#define WdoffFDB_PRT 04+WdoffFDB /* protection */
|
||||
#define BtoffFDB_PRT 18
|
||||
#define BtlenFDB_PRT 18
|
||||
|
||||
#define WdoffFDB_BSZ 011+WdoffFDB /* Number of bits per byte */
|
||||
#define BtoffFDB_BSZ 6
|
||||
#define BtlenFDB_BSZ 6
|
||||
|
||||
#define WdoffFDB_PGC 011+WdoffFDB /* Number of pages in the file */
|
||||
#define BtoffFDB_PGC 18
|
||||
#define BtlenFDB_PGC 18
|
||||
|
||||
#define WdoffFDB_Size 012+WdoffFDB /* Number of bytes in the file */
|
||||
|
||||
#define BtoffFDB_Size 0
|
||||
#define BtlenFDB_Size 36
|
||||
|
||||
#define WdoffFDB_Wrt 014+WdoffFDB /* Date of last write to file */
|
||||
|
||||
#define WdoffFDB_Ref 015+WdoffFDB /* read time */
|
||||
|
||||
#define WdoffFDB_PGC_A 022+WdoffFDB /* Pagecount before archive */
|
||||
|
||||
#define WdoffFDB_TP1 033+WdoffFDB /* Tape ID for archive run 1 */
|
||||
|
||||
#define WdoffFDB_SS1 034+WdoffFDB /* Saveset # for archive run 1 */
|
||||
#define BtoffFDB_SS 0
|
||||
#define BtlenFDB_SS 18
|
||||
#define WdoffFDB_TF1 034+WdoffFDB /* Tape file # for archive run 1 */
|
||||
#define BtoffFDB_TF 18
|
||||
#define BtlenFDB_TF 18
|
||||
|
||||
#define WdoffFDB_TP2 035+WdoffFDB /* Tape ID for archive run 2 */
|
||||
#define WdoffFDB_SS2 036+WdoffFDB /* Saveset # for archive run 2 */
|
||||
#define WdoffFDB_TF2 036+WdoffFDB /* Tape file # for archive run 2 */
|
||||
1536
contrib/read20/read20.c
Normal file
1536
contrib/read20/read20.c
Normal file
File diff suppressed because it is too large
Load Diff
28
contrib/supdup/COPYING
Normal file
28
contrib/supdup/COPYING
Normal file
@ -0,0 +1,28 @@
|
||||
Date: Wed, 03 Oct 2001 14:17:49 -0400
|
||||
From: dab@froghouse.org
|
||||
To: klh@alum.mit.edu
|
||||
Message-ID: <87y9msy4du.wl@ariki.froghouse.org>
|
||||
|
||||
At Wed, 3 Oct 2001 11:43:45 EDT,
|
||||
Ken Harrenstien <klh@panix.com> wrote:
|
||||
|
||||
> Dave, any problems with redistributing this code, or some version of
|
||||
> supdup, along with the KLH10 distribution? You have the original
|
||||
> copyright even if it's not explicitly stated. It is probably a good
|
||||
> idea to add something that clearly says what rights others have (GPL
|
||||
> or whatever). I can send you the latest if you like.
|
||||
|
||||
If I'd thought about it at the time I probably would have used the old
|
||||
MIT copyright, the same that we put on PC/IP and the C Gateway.
|
||||
From what I hear, not having actually looked into any of this, the BSD
|
||||
copyright is pretty much the same thing.
|
||||
|
||||
Anyway, you're certainly welcome to redistribute the code as far as
|
||||
I'm concerned.
|
||||
|
||||
Oh, I remember now why I didn't put a copyright on it. It was because
|
||||
I used the BSD telnet sources as a starting point for the supdup
|
||||
programs and the BSD code was not free at the time. Not very much
|
||||
telnet code survived in the end but it is where I started from.
|
||||
|
||||
-Dave
|
||||
32
contrib/supdup/INFO
Normal file
32
contrib/supdup/INFO
Normal file
@ -0,0 +1,32 @@
|
||||
This file contains information on know problems, bugs, and misfeatures of
|
||||
supdup, as well as any other random pieces of information that need to
|
||||
be somewhere.
|
||||
|
||||
SUPDUPD needs a new /bin/login because the standard login trashes the
|
||||
environment. The /bin/login that we use is included. The only
|
||||
requirement is that the TERMCAP (and TERMINFO if you're using it) gets
|
||||
passed through as well as the TERM environment variable.
|
||||
|
||||
The server should do the same optimization with character insert and
|
||||
delete that it does with line insert and delete.
|
||||
|
||||
I probably should make use of scroll regions. But this is a pain.
|
||||
|
||||
If TTYLOC is defined, then the SUPDUP location feature uses Romkey's
|
||||
ttyloc code. This could easily be replaced by whatever your
|
||||
particular machine does about tty location, or left out all together
|
||||
of course. The user supdup doesn't yet send TTYLOC information.
|
||||
|
||||
The banner should tell you to turn off overstrike if necessary.
|
||||
|
||||
3600's have this bug where if you position the cursor at the beginning
|
||||
of the line and do a newline, the first character of the line is erased.
|
||||
I have programmed around this bug to some extent, but it sometimes
|
||||
reappears. They also have a bug that if you type a meta character the
|
||||
character that gets sent is shifted and if you type meta shift character
|
||||
it sends a lowercase character. There is nothing I can do about this.
|
||||
|
||||
For some reason talk, amoung a few other things, core dumps when
|
||||
supduping in from a lisp machine (either a 3600 or a cadr). I've seen
|
||||
the same bug a BBN bitgraph. It seems to be a bug with programs which
|
||||
use curses and is evoked by large screen sizes.
|
||||
44
contrib/supdup/Makefile
Normal file
44
contrib/supdup/Makefile
Normal file
@ -0,0 +1,44 @@
|
||||
# Makefile for the supdup server and user.
|
||||
|
||||
# Definitions for supdupd.
|
||||
# TERMINFO Does setup for terminfo.
|
||||
# TTYLOC Sets your ttyloc from supdup. The code included is specific
|
||||
# to borax. You would probably want to replace the code in
|
||||
# those sections with whatever you do locally for ttyloc.
|
||||
# BANNER
|
||||
# SBANNER
|
||||
# DEBUG
|
||||
#
|
||||
# Definitions for supdup.
|
||||
# TERMCAP Uses the termcap database.
|
||||
# TERMINFO Uses the terminfo database. Exactly one of TERMCAP or
|
||||
# TERMINFO must be defined and the corresponding library
|
||||
# (-ltermcap or -lterminfo) must be linked in.
|
||||
# DEBUG
|
||||
|
||||
# This printf string is send as the supdup server's greeting.
|
||||
# Its `arguments' are the local and remote host names.
|
||||
# It should output ASCII
|
||||
sbanner = "%s SUPDUP from %s.\r\nBugs to bug-unix-supdup@ai.mit.edu"
|
||||
|
||||
# This printf string is sent before /bin/login is invoked.
|
||||
# Its `argument' is the local host name.
|
||||
# It should output SUPDUP codes (eg #o207 rather than #o15 #o10 for newline)
|
||||
banner ="SunOS Unix (%s)\207%s"
|
||||
|
||||
#Uncomment next line if your host isn't running in the ancient past
|
||||
#lresolv = -lresolv
|
||||
lresolv =
|
||||
|
||||
all: supdup supdupd supdup-login
|
||||
|
||||
supdup: supdup.c termcaps.h
|
||||
cc -g -o supdup -DTERMCAP supdup.c -ltermcap ${lresolv}
|
||||
|
||||
supdupd: supdupd.c supdup.h
|
||||
cc -g -o supdupd supdupd.c ${lresolv} '-DBANNER=${banner}' '-DSBANNER=${sbanner}' -DMIT -DTTYLOC -DKEEPALIVE -DBSD4_3
|
||||
|
||||
#in.supdupd: supdupd
|
||||
|
||||
supdup-login: supdup-login.c
|
||||
cc -g -o supdup-login supdup-login.c
|
||||
1
contrib/supdup/sd.tc
Normal file
1
contrib/supdup/sd.tc
Normal file
@ -0,0 +1 @@
|
||||
setenv TERMCAP 'SD|supdup|SUPDUP virtual terminal:co#132:li#52:am:vb=\177\023:nd=\177\020:MT:cl=\177\022:so=\177\031:se=\177\032:pt:ce=\177\005:ec=\177\006:cd=\175\004:bs:up=\177\041:cm=\177\021%+ %+ :do=\177\014:nl=\177\014:al=\177\025\001:dl=\177\026\001:AL=\177\025%.:DL=\177\026%.:ns:km:pc=\000'
|
||||
676
contrib/supdup/supdup-login.c
Normal file
676
contrib/supdup/supdup-login.c
Normal file
@ -0,0 +1,676 @@
|
||||
/* Lucid changes and supdup changes merged into
|
||||
vanilla quotaless sun /bin/login by Mly 9-Jul-87 16:17:01
|
||||
|
||||
supdup changes:
|
||||
pass on envvar TERMCAP if TERM is "supdup"
|
||||
|
||||
lucid changes (kdo):
|
||||
disconnect after > 5 failed login attempts
|
||||
|
||||
always prompt for password when insecure login
|
||||
|
||||
if compiled with -DPARANOIA, disallows passwords
|
||||
of length < 6 when insecure !!!!! This includes
|
||||
null passwords.
|
||||
*/
|
||||
|
||||
/*
|
||||
* login [ name ]
|
||||
* login -r hostname (for rlogind)
|
||||
* login -h hostname (for telnetd, etc.)
|
||||
*/
|
||||
#include <sys/param.h>
|
||||
#include <sys/stat.h>
|
||||
#include <sys/time.h>
|
||||
#include <sys/resource.h>
|
||||
#include <fcntl.h>
|
||||
|
||||
#include <sgtty.h>
|
||||
#include <utmp.h>
|
||||
#include <signal.h>
|
||||
#include <pwd.h>
|
||||
#include <stdio.h>
|
||||
#include <lastlog.h>
|
||||
#include <errno.h>
|
||||
#include <syslog.h>
|
||||
|
||||
#define SCPYN(a, b) strncpy(a, b, sizeof(a))
|
||||
|
||||
#define NMAX sizeof(utmp.ut_name)
|
||||
|
||||
#define FALSE 0
|
||||
#define TRUE -1
|
||||
|
||||
char QUOTAWARN[] = "/usr/ucb/quota"; /* warn user about quotas */
|
||||
char CANTRUN[] = "login: Can't run ";
|
||||
|
||||
char nolog[] = "/etc/nologin";
|
||||
char qlog[] = ".hushlogin";
|
||||
char securetty[] = "/etc/securetty";
|
||||
char maildir[30] = "/usr/spool/mail/";
|
||||
char lastlog[] = "/usr/adm/lastlog";
|
||||
struct passwd nouser = {"", "nope", -1, -1, -1, "", "", "", "" };
|
||||
struct sgttyb ttyb;
|
||||
struct utmp utmp;
|
||||
char minusnam[16] = "-";
|
||||
/*
|
||||
* This bounds the time given to login. We initialize it here
|
||||
* so it can be patched on machines where it's too small.
|
||||
*/
|
||||
int timeout = 60;
|
||||
|
||||
char homedir[64] = "HOME=";
|
||||
char shell[64] = "SHELL=";
|
||||
char term[64] = "TERM=";
|
||||
char user[20] = "USER=";
|
||||
char logname[23] = "LOGNAME=";
|
||||
|
||||
/* NOTE WELL extra zero at the end of envinit
|
||||
they are for possible TERMCAP */
|
||||
char *envinit[] =
|
||||
{ homedir, shell,
|
||||
"PATH=:/usr/ucb:/bin:/usr/bin",
|
||||
user, logname,
|
||||
term,
|
||||
/* May be filled in by TERMCAP */
|
||||
0,
|
||||
0 };
|
||||
|
||||
#define LOG_SECURITY LOG_CRIT
|
||||
|
||||
struct passwd *pwd;
|
||||
struct passwd *getpwnam();
|
||||
char *strcat(), *rindex(), *index();
|
||||
int setpwent();
|
||||
int timedout();
|
||||
char *ttyname();
|
||||
char *crypt();
|
||||
char *getpass();
|
||||
char *stypeof();
|
||||
extern char **environ;
|
||||
extern int errno;
|
||||
|
||||
struct tchars tc = {
|
||||
CINTR, CQUIT, CSTART, CSTOP, CEOT, CBRK
|
||||
};
|
||||
struct ltchars ltc = {
|
||||
CSUSP, CDSUSP, CRPRNT, CFLUSH, CWERASE, CLNEXT
|
||||
};
|
||||
|
||||
int rflag;
|
||||
char rusername[NMAX+1], lusername[NMAX+1];
|
||||
char rpassword[NMAX+1];
|
||||
char name[NMAX+1];
|
||||
char *rhost;
|
||||
|
||||
main(argc, argv)
|
||||
char *argv[];
|
||||
{
|
||||
register char *namep;
|
||||
int t, f, c, i;
|
||||
int invalid, quietlog;
|
||||
/* loseit */
|
||||
int ttysecure = 0;
|
||||
/* loseit */
|
||||
FILE *nlfd;
|
||||
char *ttyn, *tty;
|
||||
int ldisc = NTTYDISC, zero = 0;
|
||||
int locl = LCRTBS|LCTLECH|LDECCTQ;
|
||||
|
||||
signal(SIGALRM, timedout);
|
||||
alarm(timeout);
|
||||
signal(SIGQUIT, SIG_IGN);
|
||||
signal(SIGINT, SIG_IGN);
|
||||
setpriority(PRIO_PROCESS, 0, 0);
|
||||
for (t = getdtablesize(); t > 3; t--)
|
||||
close(t);
|
||||
/*
|
||||
* -r is used by rlogind to cause the autologin protocol;
|
||||
* -h is used by other servers to pass the name of the
|
||||
* remote host to login so that it may be placed in utmp and wtmp
|
||||
*/
|
||||
if (argc > 1) {
|
||||
if (strcmp(argv[1], "-r") == 0) {
|
||||
rflag = doremotelogin(argv[2]);
|
||||
SCPYN(utmp.ut_host, argv[2]);
|
||||
argc = 0;
|
||||
}
|
||||
if (strcmp(argv[1], "-h") == 0 && getuid() == 0) {
|
||||
SCPYN(utmp.ut_host, argv[2]);
|
||||
argc = 0;
|
||||
}
|
||||
}
|
||||
ioctl(0, TIOCLSET, &zero);
|
||||
ioctl(0, TIOCNXCL, 0);
|
||||
ioctl(0, FIONBIO, &zero);
|
||||
ioctl(0, FIOASYNC, &zero);
|
||||
ioctl(0, TIOCGETP, &ttyb);
|
||||
/*
|
||||
* If talking to an rlogin process,
|
||||
* propagate the terminal type and
|
||||
* baud rate across the network.
|
||||
*/
|
||||
if (rflag)
|
||||
doremoteterm(term, &ttyb);
|
||||
if (ttyb.sg_ospeed >= B1200)
|
||||
locl |= LCRTERA|LCRTKIL;
|
||||
ioctl(0, TIOCLSET, &locl);
|
||||
ioctl(0, TIOCSLTC, <c);
|
||||
ioctl(0, TIOCSETC, &tc);
|
||||
ioctl(0, TIOCSETP, &ttyb);
|
||||
ttyn = ttyname(0);
|
||||
if (ttyn == (char *)0)
|
||||
ttyn = "/dev/tty??";
|
||||
tty = rindex(ttyn, '/');
|
||||
if (tty == NULL)
|
||||
tty = ttyn;
|
||||
else
|
||||
tty++;
|
||||
/* loseit */
|
||||
t = 0;
|
||||
/* loseit */
|
||||
do {
|
||||
ldisc = 0;
|
||||
ioctl(0, TIOCSETD, &ldisc);
|
||||
invalid = FALSE;
|
||||
SCPYN(utmp.ut_name, "");
|
||||
/*
|
||||
* Name specified, take it.
|
||||
*/
|
||||
if (argc > 1) {
|
||||
SCPYN(utmp.ut_name, argv[1]);
|
||||
argc = 0;
|
||||
}
|
||||
/*
|
||||
* If remote login take given name,
|
||||
* otherwise prompt user for something.
|
||||
*/
|
||||
if (rflag) {
|
||||
SCPYN(utmp.ut_name, lusername);
|
||||
/* autologin failed, prompt for passwd */
|
||||
if (rflag == -1)
|
||||
rflag = 0;
|
||||
} else
|
||||
getloginname(&utmp);
|
||||
if (!strcmp(pwd->pw_shell, "/bin/csh")) {
|
||||
ldisc = NTTYDISC;
|
||||
ioctl(0, TIOCSETD, &ldisc);
|
||||
}
|
||||
/*
|
||||
* If no remote login authentication and
|
||||
* a password exists for this user, prompt
|
||||
* for one and verify it.
|
||||
*/
|
||||
/* loseit */
|
||||
ttysecure = rootterm(tty); /* See if tty believed secure */
|
||||
/* loseit */
|
||||
|
||||
if (!rflag && (*pwd->pw_passwd != '\0'
|
||||
/* loseit */
|
||||
/* Always prompt for password if insecure */
|
||||
|| !ttysecure
|
||||
/* loseit */
|
||||
)) {
|
||||
char *pp;
|
||||
|
||||
setpriority(PRIO_PROCESS, 0, -4);
|
||||
pp = getpass("Password:");
|
||||
namep = crypt(pp, pwd->pw_passwd);
|
||||
setpriority(PRIO_PROCESS, 0, 0);
|
||||
/* loseit */
|
||||
#ifdef PARANOIA
|
||||
/* If not secure check that password is long enough
|
||||
and don't allow no-password logins */
|
||||
if (!ttysecure) {
|
||||
if (strlen(pp)<6) invalid = TRUE;
|
||||
if (*pwd->pw_passwd == '\0') invalid = TRUE;
|
||||
}
|
||||
#endif /* loseit PARANOIA */
|
||||
if (strcmp(namep, pwd->pw_passwd))
|
||||
invalid = TRUE;
|
||||
}
|
||||
/*
|
||||
* If user not super-user, check for logins disabled.
|
||||
*/
|
||||
if (pwd->pw_uid != 0 && (nlfd = fopen(nolog, "r")) > 0) {
|
||||
while ((c = getc(nlfd)) != EOF)
|
||||
putchar(c);
|
||||
fflush(stdout);
|
||||
sleep(5);
|
||||
exit(0);
|
||||
}
|
||||
/*
|
||||
* If valid so far and root is logging in,
|
||||
* see if root logins on this terminal are permitted.
|
||||
*/
|
||||
if (!invalid && pwd->pw_uid == 0 &&
|
||||
!ttysecure) {
|
||||
syslog(LOG_SECURITY, "ROOT LOGIN REFUSED %s", tty);
|
||||
invalid = TRUE;
|
||||
}
|
||||
if (invalid) {
|
||||
printf("Login incorrect\n");
|
||||
/* loseit */
|
||||
if (++t >= 5)
|
||||
{
|
||||
syslog(LOG_SECURITY,
|
||||
"REPEATED LOGIN FAILURES %s, %s",
|
||||
tty, utmp.ut_name);
|
||||
ioctl(0, TIOCHPCL, (struct sgttyb *) 0);
|
||||
close(0), close(1), close(2);
|
||||
sleep(10);
|
||||
exit(1);
|
||||
}
|
||||
/* loseit */
|
||||
}
|
||||
if (*pwd->pw_shell == '\0')
|
||||
pwd->pw_shell = "/bin/sh";
|
||||
if (chdir(pwd->pw_dir) < 0 && !invalid ) {
|
||||
if (chdir("/") < 0) {
|
||||
printf("No directory!\n");
|
||||
invalid = TRUE;
|
||||
} else {
|
||||
printf("No directory! %s\n",
|
||||
"Logging in with home=/");
|
||||
pwd->pw_dir = "/";
|
||||
}
|
||||
}
|
||||
/*
|
||||
* Remote login invalid must have been because
|
||||
* of a restriction of some sort, no extra chances.
|
||||
*/
|
||||
if (rflag && invalid)
|
||||
exit(1);
|
||||
} while (invalid);
|
||||
/* committed to login turn off timeout */
|
||||
alarm(0);
|
||||
time(&utmp.ut_time);
|
||||
t = ttyslot();
|
||||
if (t > 0 && (f = open("/etc/utmp", O_WRONLY)) >= 0) {
|
||||
lseek(f, (long)(t*sizeof(utmp)), 0);
|
||||
SCPYN(utmp.ut_line, tty);
|
||||
write(f, (char *)&utmp, sizeof(utmp));
|
||||
close(f);
|
||||
}
|
||||
if (t > 0 && (f = open("/usr/adm/wtmp", O_WRONLY|O_APPEND)) >= 0) {
|
||||
write(f, (char *)&utmp, sizeof(utmp));
|
||||
close(f);
|
||||
}
|
||||
quietlog = access(qlog, F_OK) == 0;
|
||||
if ((f = open(lastlog, O_RDWR)) >= 0) {
|
||||
struct lastlog ll;
|
||||
|
||||
lseek(f, (long)pwd->pw_uid * sizeof (struct lastlog), 0);
|
||||
if (read(f, (char *) &ll, sizeof ll) == sizeof ll &&
|
||||
ll.ll_time != 0 && !quietlog) {
|
||||
printf("Last login: %.*s ",
|
||||
24-5, (char *)ctime(&ll.ll_time));
|
||||
if (*ll.ll_host != '\0')
|
||||
printf("from %.*s\n",
|
||||
sizeof (ll.ll_host), ll.ll_host);
|
||||
else
|
||||
printf("on %.*s\n",
|
||||
sizeof (ll.ll_line), ll.ll_line);
|
||||
}
|
||||
lseek(f, (long)pwd->pw_uid * sizeof (struct lastlog), 0);
|
||||
time(&ll.ll_time);
|
||||
SCPYN(ll.ll_line, tty);
|
||||
SCPYN(ll.ll_host, utmp.ut_host);
|
||||
write(f, (char *) &ll, sizeof ll);
|
||||
close(f);
|
||||
}
|
||||
chown(ttyn, pwd->pw_uid, pwd->pw_gid);
|
||||
chmod(ttyn, 0622);
|
||||
setgid(pwd->pw_gid);
|
||||
strncpy(name, utmp.ut_name, NMAX);
|
||||
name[NMAX] = '\0';
|
||||
initgroups(name, pwd->pw_gid);
|
||||
setuid(pwd->pw_uid);
|
||||
strncat(homedir, pwd->pw_dir, sizeof(homedir)-6);
|
||||
strncat(shell, pwd->pw_shell, sizeof(shell)-7);
|
||||
if (term[strlen("TERM=")] == 0)
|
||||
strncat(term, stypeof(ttyn), sizeof(term)-6);
|
||||
strncat(user, pwd->pw_name, sizeof(user)-6);
|
||||
strncat(logname, pwd->pw_name, sizeof(user)-9);
|
||||
environ = envinit;
|
||||
if ((namep = rindex(pwd->pw_shell, '/')) == NULL)
|
||||
namep = pwd->pw_shell;
|
||||
else
|
||||
namep++;
|
||||
strcat(minusnam, namep);
|
||||
umask(022);
|
||||
if (tty[sizeof("tty")-1] == 'd')
|
||||
syslog(LOG_INFO, "DIALUP %s, %s", tty, pwd->pw_name);
|
||||
if (pwd->pw_uid == 0)
|
||||
syslog(LOG_SECURITY, "ROOT LOGIN %s", tty);
|
||||
if (!quietlog) {
|
||||
int pid, w;
|
||||
struct stat st;
|
||||
|
||||
showmotd();
|
||||
strcat(maildir, pwd->pw_name);
|
||||
if (stat(maildir, &st) == 0 && st.st_size != 0)
|
||||
printf("You have %smail.\n",
|
||||
(st.st_mtime > st.st_atime) ? "new " : "");
|
||||
if ((pid = vfork()) == 0) {
|
||||
execl(QUOTAWARN, QUOTAWARN, (char *)0);
|
||||
write(2, CANTRUN, sizeof(CANTRUN));
|
||||
_perror(QUOTAWARN);
|
||||
_exit(127);
|
||||
} else if (pid == -1) {
|
||||
fprintf(stderr, CANTRUN);
|
||||
perror(QUOTAWARN);
|
||||
} else {
|
||||
while ((w = wait((int *)NULL)) != pid && w != -1)
|
||||
;
|
||||
}
|
||||
}
|
||||
signal(SIGALRM, SIG_DFL);
|
||||
signal(SIGQUIT, SIG_DFL);
|
||||
signal(SIGINT, SIG_DFL);
|
||||
signal(SIGTSTP, SIG_IGN);
|
||||
execlp(pwd->pw_shell, minusnam, (char *)0);
|
||||
perror(pwd->pw_shell);
|
||||
printf("No shell\n");
|
||||
exit(0);
|
||||
}
|
||||
|
||||
getloginname(up)
|
||||
register struct utmp *up;
|
||||
{
|
||||
register char *namep;
|
||||
char c;
|
||||
|
||||
while (up->ut_name[0] == '\0') {
|
||||
namep = up->ut_name;
|
||||
printf("login: ");
|
||||
while ((c = getchar()) != '\n') {
|
||||
if (c == ' ')
|
||||
c = '_';
|
||||
if (c == EOF)
|
||||
exit(0);
|
||||
if (namep < up->ut_name+NMAX)
|
||||
*namep++ = c;
|
||||
}
|
||||
}
|
||||
strncpy(lusername, up->ut_name, NMAX);
|
||||
lusername[NMAX] = 0;
|
||||
setpwent();
|
||||
if ((pwd = getpwnam(lusername)) == NULL)
|
||||
pwd = &nouser;
|
||||
endpwent();
|
||||
}
|
||||
|
||||
timedout()
|
||||
{
|
||||
|
||||
printf("Login timed out after %d seconds\n", timeout);
|
||||
exit(0);
|
||||
}
|
||||
|
||||
int stopmotd;
|
||||
catch()
|
||||
{
|
||||
|
||||
signal(SIGINT, SIG_IGN);
|
||||
stopmotd++;
|
||||
}
|
||||
|
||||
rootterm(tty)
|
||||
char *tty;
|
||||
{
|
||||
register FILE *fd;
|
||||
char buf[100];
|
||||
|
||||
if ((fd = fopen(securetty, "r")) == NULL)
|
||||
return(1);
|
||||
while (fgets(buf, sizeof buf, fd) != NULL) {
|
||||
buf[strlen(buf)-1] = '\0';
|
||||
if (strcmp(tty, buf) == 0) {
|
||||
fclose(fd);
|
||||
return(1);
|
||||
}
|
||||
}
|
||||
fclose(fd);
|
||||
return(0);
|
||||
}
|
||||
|
||||
showmotd()
|
||||
{
|
||||
FILE *mf;
|
||||
register c;
|
||||
|
||||
signal(SIGINT, catch);
|
||||
if ((mf = fopen("/etc/motd","r")) != NULL) {
|
||||
while ((c = getc(mf)) != EOF && stopmotd == 0)
|
||||
putchar(c);
|
||||
fclose(mf);
|
||||
}
|
||||
signal(SIGINT, SIG_IGN);
|
||||
}
|
||||
|
||||
#undef UNKNOWN
|
||||
#define UNKNOWN "su"
|
||||
|
||||
char *
|
||||
stypeof(ttyid)
|
||||
char *ttyid;
|
||||
{
|
||||
static char typebuf[16];
|
||||
char buf[50];
|
||||
register FILE *f;
|
||||
register char *p, *t, *q;
|
||||
|
||||
if (ttyid == NULL)
|
||||
return (UNKNOWN);
|
||||
/*
|
||||
* CJL's kludge to make supdup win: If TERM is supdup,
|
||||
* preserve TERM and TERMCAP. SUPDUP sets them up the right way.
|
||||
*/
|
||||
t = (char *) getenv("TERM");
|
||||
|
||||
if (t && !strcmp ("supdup", t))
|
||||
{
|
||||
p = (char *) getenv ("TERMCAP");
|
||||
if (p)
|
||||
{
|
||||
char **ep;
|
||||
for (ep = envinit; *ep; ep++);
|
||||
*ep = p-strlen("TERMCAP=");
|
||||
}
|
||||
return (t);
|
||||
}
|
||||
f = fopen("/etc/ttytype", "r");
|
||||
if (f == NULL)
|
||||
return (UNKNOWN);
|
||||
/* split off end of name */
|
||||
for (p = q = ttyid; *p != 0; p++)
|
||||
if (*p == '/')
|
||||
q = p + 1;
|
||||
|
||||
/* scan the file */
|
||||
while (fgets(buf, sizeof buf, f) != NULL) {
|
||||
for (t = buf; *t != ' ' && *t != '\t'; t++)
|
||||
if (*t == '\0')
|
||||
goto next;
|
||||
*t++ = 0;
|
||||
while (*t == ' ' || *t == '\t')
|
||||
t++;
|
||||
for (p = t; *p > ' '; p++)
|
||||
;
|
||||
*p = 0;
|
||||
if (strcmp(q,t) == 0) {
|
||||
strcpy(typebuf, buf);
|
||||
fclose(f);
|
||||
return (typebuf);
|
||||
}
|
||||
next: ;
|
||||
}
|
||||
fclose (f);
|
||||
return (UNKNOWN);
|
||||
}
|
||||
|
||||
doremotelogin(host)
|
||||
char *host;
|
||||
{
|
||||
FILE *hostf;
|
||||
int first = 1;
|
||||
char domain[256];
|
||||
|
||||
if (getdomainname(domain, sizeof(domain)) < 0) {
|
||||
fprintf(stderr, "login: getdomainname system call missing\n");
|
||||
goto bad;
|
||||
}
|
||||
getstr(rusername, sizeof (rusername), "remuser");
|
||||
getstr(lusername, sizeof (lusername), "locuser");
|
||||
getstr(term+5, sizeof(term)-5, "Terminal type");
|
||||
if (getuid()) {
|
||||
pwd = &nouser;
|
||||
goto bad;
|
||||
}
|
||||
setpwent();
|
||||
pwd = getpwnam(lusername);
|
||||
endpwent();
|
||||
if (pwd == NULL) {
|
||||
pwd = &nouser;
|
||||
goto bad;
|
||||
}
|
||||
hostf = pwd->pw_uid ? fopen("/etc/hosts.equiv", "r") : 0;
|
||||
again:
|
||||
if (hostf) {
|
||||
char ahost[32];
|
||||
int hostmatch, usermatch;
|
||||
|
||||
while (fgets(ahost, sizeof (ahost), hostf)) {
|
||||
char *user;
|
||||
|
||||
if ((user = index(ahost, '\n')) != 0)
|
||||
*user++ = '\0';
|
||||
if ((user = index(ahost, ' ')) != 0)
|
||||
*user++ = '\0';
|
||||
if (ahost[0] == '+' && ahost[1] == 0)
|
||||
hostmatch = 1;
|
||||
else if (ahost[0] == '+' && ahost[1] == '@')
|
||||
hostmatch = innetgr(ahost + 2, host,
|
||||
(char *)NULL, domain);
|
||||
else if (ahost[0] == '-' && ahost[1] == '@') {
|
||||
if (innetgr(ahost+2, host, (char *)NULL,
|
||||
domain))
|
||||
break;
|
||||
}
|
||||
else if (ahost[0] == '-') {
|
||||
if (!strcmp(host, ahost+1))
|
||||
break;
|
||||
}
|
||||
else
|
||||
hostmatch = !strcmp(host, ahost);
|
||||
if (user) {
|
||||
if (user[0] == '+' && user[1] == 0)
|
||||
usermatch = 1;
|
||||
else if (user[0] == '+' && user[1] == '@')
|
||||
usermatch = innetgr(user+2, (char *)NULL,
|
||||
rusername, domain);
|
||||
else if (user[0] == '-' && user[1] == '@') {
|
||||
if (innetgr(user+2, (char *)NULL,
|
||||
rusername, domain))
|
||||
break;
|
||||
}
|
||||
else if (user[0] == '-') {
|
||||
if (!strcmp(user+1, rusername))
|
||||
break;
|
||||
}
|
||||
else
|
||||
usermatch = !strcmp(user, rusername);
|
||||
}
|
||||
else
|
||||
usermatch = !strcmp(rusername, lusername);
|
||||
if (hostmatch && usermatch) {
|
||||
fclose(hostf);
|
||||
return (1);
|
||||
}
|
||||
}
|
||||
fclose(hostf);
|
||||
}
|
||||
if (first == 1) {
|
||||
char *rhosts = ".rhosts";
|
||||
struct stat sbuf;
|
||||
|
||||
first = 0;
|
||||
if (chdir(pwd->pw_dir) < 0)
|
||||
goto again;
|
||||
if (lstat(rhosts, &sbuf) < 0)
|
||||
goto again;
|
||||
if ((sbuf.st_mode & S_IFMT) == S_IFLNK) {
|
||||
printf("login: .rhosts is a soft link.\r\n");
|
||||
goto bad;
|
||||
}
|
||||
hostf = fopen(rhosts, "r");
|
||||
fstat(fileno(hostf), &sbuf);
|
||||
if (sbuf.st_uid && sbuf.st_uid != pwd->pw_uid) {
|
||||
printf("login: Bad .rhosts ownership.\r\n");
|
||||
fclose(hostf);
|
||||
goto bad;
|
||||
}
|
||||
goto again;
|
||||
}
|
||||
bad:
|
||||
return (-1);
|
||||
}
|
||||
|
||||
getstr(buf, cnt, err)
|
||||
char *buf;
|
||||
int cnt;
|
||||
char *err;
|
||||
{
|
||||
char c;
|
||||
|
||||
do {
|
||||
if (read(0, &c, 1) != 1)
|
||||
exit(1);
|
||||
if (--cnt < 0) {
|
||||
printf("%s too long\r\n", err);
|
||||
exit(1);
|
||||
}
|
||||
*buf++ = c;
|
||||
} while (c != 0);
|
||||
}
|
||||
|
||||
char *speeds[] =
|
||||
{ "0", "50", "75", "110", "134", "150", "200", "300",
|
||||
"600", "1200", "1800", "2400", "4800", "9600", "19200", "38400" };
|
||||
#define NSPEEDS (sizeof (speeds) / sizeof (speeds[0]))
|
||||
|
||||
doremoteterm(term, tp)
|
||||
char *term;
|
||||
struct sgttyb *tp;
|
||||
{
|
||||
char *cp = index(term, '/');
|
||||
register int i;
|
||||
|
||||
if (cp) {
|
||||
*cp++ = 0;
|
||||
for (i = 0; i < NSPEEDS; i++)
|
||||
if (!strcmp(speeds[i], cp)) {
|
||||
tp->sg_ispeed = tp->sg_ospeed = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
tp->sg_flags = ECHO|CRMOD|ANYP|XTABS;
|
||||
}
|
||||
|
||||
#ifdef 0
|
||||
/* Use syslog instead */
|
||||
logerr(fmt, a1, a2, a3)
|
||||
char *fmt, *a1, *a2, *a3;
|
||||
{
|
||||
#ifdef LOGERR
|
||||
FILE *cons = fopen("/dev/console", "w");
|
||||
|
||||
if (cons != NULL) {
|
||||
fprintf(cons, fmt, a1, a2, a3);
|
||||
fprintf(cons, "\n\r");
|
||||
fclose(cons);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
#endif /* 0 */
|
||||
1723
contrib/supdup/supdup.c
Normal file
1723
contrib/supdup/supdup.c
Normal file
File diff suppressed because it is too large
Load Diff
111
contrib/supdup/supdup.h
Normal file
111
contrib/supdup/supdup.h
Normal file
@ -0,0 +1,111 @@
|
||||
/*
|
||||
* Characters output from user programs are checked for \b, \r, and \n.
|
||||
* These are translated into SUPDUP cursor movement. Thus this disallows
|
||||
* the use of these 3 SAIL characters.
|
||||
* SUPDUP display codes are passed through, but looked at to determine
|
||||
* the current cursor position. This is necessary for simulating \b, \n, \r
|
||||
* and the TDBS and TDUP fake SUPDUP codes supplied in the termcap entries.
|
||||
* Input from the network is checked for ITP escapes, mainly for bucky
|
||||
* bits and terminal location string.
|
||||
*/
|
||||
|
||||
/* Losing unix doesn't know about the -real- control bit
|
||||
|
||||
* there should be some way to conditionalize this on the basis
|
||||
* of %TOFCI -- except that the existing supdup server loses this information!
|
||||
* It isn't clear-cut what to do in the server, as %tofci means that the user
|
||||
* can generate full 9-bit MIT characters, which isn't what the `km' termcap
|
||||
* flag means. On the other hand, being able to generate 8-bit characters
|
||||
* (which is sort of what `km' is) isn't the same as %tofci.
|
||||
* I think the problem is fundamental and cultural and irresolvable.
|
||||
|
||||
* unix supdup server uses 0237 as a control escape.
|
||||
* c-a 001
|
||||
* m-a 341
|
||||
* c-m-a 201
|
||||
* c-1 237 061
|
||||
* m-1 261
|
||||
* c-m-1 237 261
|
||||
* c-m-_ 237 237
|
||||
*/
|
||||
|
||||
/*
|
||||
* Since various parts of UNIX just can't hack the 0200 bit, we define
|
||||
* a fake lead-in escape - 0177, to avoid a sail graphic that is used
|
||||
* sometimes...
|
||||
*/
|
||||
#define KLUDGE_ESCAPE 0177
|
||||
|
||||
/* ITP bits (from the 12-bit character set */
|
||||
#define ITP_ASCII 00177 /* ascii part of character */
|
||||
#define ITP_CTL 00200 /* CONTROL key depressed */
|
||||
#define ITP_MTA 00400 /* META key depressed */
|
||||
#define ITP_TOP 04000 /* TOP key depressed */
|
||||
#define CTL_PREFIX 0237 /* c-m-_ is control prefix */
|
||||
#define ITP_CHAR(char1,char2) (((char1 & 037) << 7) + char2)
|
||||
#define ITP_ESCAPE 034 /* ITS ITP codes follow */
|
||||
|
||||
#define ITP_CURSORPOS 020 /* user sends vpos/hpos */
|
||||
#define ITP_FLOW_CONTROL_START 032 /* Set buffer to zero -- ignored */
|
||||
#define ITP_FLOW_CONTROL_INCREASE 001 /* increase buffer size -- ignored */
|
||||
#define ITP_FLOW_CONTROL_END 009 /* Set buffer to infinity -- ignored */
|
||||
#define ITP_PIATY 003 /* user says her screen is messed-up
|
||||
we don't (can't) hack this */
|
||||
#define ITP_STOP_OUTPUT 023 /* Ignore it */
|
||||
#define ITP_RESTART_OUTPUT 022 /* Ignore it */
|
||||
|
||||
#define ASCII_CTL_MASK ~(0177-037)
|
||||
#define ASCII_ESCAPE 033
|
||||
#define ASCII_PART(char) (char & ITP_ASCII)
|
||||
|
||||
#define SUPDUP_ESCAPE 0300
|
||||
#define SUPDUP_LOGOUT 0301
|
||||
#define SUPDUP_LOCATION 0302
|
||||
#define SUPDUP_ESCAPE_KEY 04101
|
||||
#define SUPDUP_SUSPEND_KEY 04102
|
||||
#define SUPDUP_CLEAR_KEY 04103
|
||||
#define SUPDUP_HELP_KEY 04110
|
||||
|
||||
#define TDMOV 0200
|
||||
#define TDMV1 0201 /* not defined in supdup spec AIM 644 */
|
||||
#define TDEOF 0202
|
||||
#define TDEOL 0203
|
||||
#define TDDLF 0204
|
||||
#define TDCRL 0207
|
||||
#define TDNOP 0210
|
||||
#define TDBS 0211 /* not defined in supdup spec AIM 644 */
|
||||
#define TDLF 0212 /* not defined in supdup spec AIM 644 */
|
||||
#define TDCR 0213 /* not defined in supdup spec AIM 644 */
|
||||
#define TDORS 0214
|
||||
#define TDQOT 0215
|
||||
#define TDFS 0216
|
||||
#define TDMV0 0217
|
||||
#define TDCLR 0220
|
||||
#define TDBEL 0221
|
||||
#define TDILP 0223
|
||||
#define TDDLP 0224
|
||||
#define TDICP 0225
|
||||
#define TDDCP 0226
|
||||
#define TDBOW 0227
|
||||
#define TDRST 0230
|
||||
#define TDGRF 0231
|
||||
#define TDSCU 0232 /* Scroll region up */
|
||||
#define TDSCD 0233 /* Scroll region down */
|
||||
|
||||
#define TDUP 0237 /* Interpreted locally, not in supdup spec at all */
|
||||
|
||||
/* These variables are set at initial connection time */
|
||||
char ttyopt[6];
|
||||
#define TOERS (ttyopt[0] & 4) /* Terminal can erase */
|
||||
#define TOMVB (ttyopt[0] & 1) /* can move backwards */
|
||||
#define TOOVR (ttyopt[1] & 010) /* Over printing */
|
||||
#define TOMVU (ttyopt[1] & 4) /* can move up */
|
||||
#define TOFCI (ttyopt[2] & 010) /* Terminal can transmit full 12-bit MIT ascii */
|
||||
#define TOLID (ttyopt[2] & 2) /* Line insert/delete */
|
||||
#define TOCID (ttyopt[2] & 1) /* Character insert/delete */
|
||||
#define TOSA1 (ttyopt[1] & 020) /* send SAIL characters direct */
|
||||
#define TOMOR (ttyopt[1] & 2) /* Do more processing */
|
||||
#define TOROL (ttyopt[1] & 1) /* Do scrolling */
|
||||
#define TPPRN (ttyopt[4] & 2) /* Swap parens and brackets (ignored)*/
|
||||
short ttyrol; /* How much the terminal scrolls by */
|
||||
|
||||
2160
contrib/supdup/supdup.mss
Normal file
2160
contrib/supdup/supdup.mss
Normal file
File diff suppressed because it is too large
Load Diff
1487
contrib/supdup/supdupd.c
Normal file
1487
contrib/supdup/supdupd.c
Normal file
File diff suppressed because it is too large
Load Diff
171
contrib/supdup/termcap.h
Normal file
171
contrib/supdup/termcap.h
Normal file
@ -0,0 +1,171 @@
|
||||
|
||||
/*
|
||||
* termcap.h -- definitions of the variables in which
|
||||
* the termcap info is kept
|
||||
*/
|
||||
|
||||
#define TCAPDEFS \
|
||||
TCFLG(am, "has automatic margins"),\
|
||||
TCFLG(bs, "has ^H backspace"),\
|
||||
TCFLG(hc, "hardcopy term"),\
|
||||
TCFLG(km, "has meta key"),\
|
||||
TCFLG(mi, "safe to move in insert mode"),\
|
||||
TCFLG(nc, "no working CR"),\
|
||||
TCFLG(pt, "has hardware tabs"),\
|
||||
TCFLG(ul, "underscore can overstrike"),\
|
||||
TCFLG(ns, "wraps rather than scrolls"),\
|
||||
TCFLG(MT, "has meta key (xterm)"),\
|
||||
\
|
||||
TCSTR(al, "Add new blank line"),\
|
||||
TCSTR(le, "Move back one position"),\
|
||||
TCSTR(bt, "Back tab"),\
|
||||
TCSTR(cd, "Clear to end of display"),\
|
||||
TCSTR(ce, "Clear to end of line"),\
|
||||
TCSTR(ch, "Like CM but horizontal motion only"),\
|
||||
TCSTR(cl, "Clear screen"),\
|
||||
TCSTR(cm, "Cursor motion"),\
|
||||
TCSTR(cr, "Carriage return (default '^M')"),\
|
||||
TCSTR(cs, "Change scrolling region (vt100), like CM"),\
|
||||
TCSTR(cv, "Like CM but vertical only"),\
|
||||
TCSTR(dc, "Delete character"),\
|
||||
TCSTR(dl, "Delete line"),\
|
||||
TCSTR(dm, "Delete mode"),\
|
||||
TCSTR(do, "Down one line"),\
|
||||
TCSTR(ed, "End delete mode"),\
|
||||
TCSTR(ei, "End insert mode"),\
|
||||
TCSTR(ho, "Home cursor"),\
|
||||
TCSTR(ic, "Insert character"),\
|
||||
TCSTR(im, "Insert mode (enter)"),\
|
||||
TCSTR(is, "Terminal initialization string"),\
|
||||
TCSTR(ll, "Last line, first column"),\
|
||||
TCSTR(nd, "Non-destructive space (cursor right)"),\
|
||||
TCSTR(nw, "Newline (behave like CR + LF)"),\
|
||||
TCSTR(pc, "Pad character"),\
|
||||
TCSTR(sf, "Scroll forward"),\
|
||||
TCSTR(sr, "Scroll reverse"),\
|
||||
TCSTR(ta, "Tab (other than '^I' or with padding)"),\
|
||||
TCSTR(te, "String to end programs that use CM"),\
|
||||
TCSTR(ti, "String to begin programs that use CM"),\
|
||||
TCSTR(up, "Upline (cursor up)"),\
|
||||
TCSTR(vb, "Visible bell"),\
|
||||
TCSTR(ve, "Sequence to end open/visual mode"),\
|
||||
TCSTR(vs, "Sequence to start open/visual mode"),\
|
||||
TCSTR(se, "End standout mode"),\
|
||||
TCSTR(so, "Begin standout mode"),\
|
||||
TCSTR(DC, "Delete n characters"),\
|
||||
TCSTR(IC, "Insert n characters"),\
|
||||
TCSTR(DL, "Delete n lines"),\
|
||||
TCSTR(AL, "xInsert n lines),\"
|
||||
\
|
||||
TCNUM(co, "Number of columns in a line"),\
|
||||
TCNUM(dB, "Backspace delay"),\
|
||||
TCNUM(dC, "Carriage return delay"),\
|
||||
TCNUM(dN, "Newline delay"),\
|
||||
TCNUM(dT, "Tab delay "),\
|
||||
TCNUM(li, "Number of lines on screen")
|
||||
|
||||
|
||||
enum tcaps {
|
||||
#define TCSTR(tc,comm) TC_##tc##_s
|
||||
#define TCNUM(tc,comm) TC_##tc##_n
|
||||
#define TCFLG(tc,comm) TC_##tc##_f
|
||||
TCAPDEFS
|
||||
#undef TCSTR
|
||||
#undef TCNUM
|
||||
#undef TCFLG
|
||||
};
|
||||
|
||||
/* Actually declare the vars now */
|
||||
#define TCSTR(tc,comm) static char *TC_##tc##_s = NULL;
|
||||
#define TCNUM(tc,comm) static int TC_##tc##_n = 0;
|
||||
#define TCFLG(tc,comm) static int TC_##tc##_f = 0;
|
||||
TCAPDEFS
|
||||
#undef TCSTR
|
||||
#undef TCNUM
|
||||
#undef TCFLG
|
||||
|
||||
struct tcent {
|
||||
char *tcname;
|
||||
int tctyp;
|
||||
void *tcval;
|
||||
};
|
||||
struct tcent tcaptab[] = {
|
||||
#define TCSTR(tc,comm) {#tc, TCTYP_STR, (void *)&TC_##tc##_s}
|
||||
#define TCNUM(tc,comm) {#tc, TCTYP_NUM, (void *)&TC_##tc##_n}}
|
||||
#define TCFLG(tc,comm) {#tc, TCTYP_FLG, (void *)&TC_##tc##_f}}
|
||||
TCAPDEFS
|
||||
#undef TCSTR
|
||||
#undef TCNUM
|
||||
#undef TCFLG
|
||||
}
|
||||
|
||||
#define TCSTR(tc) (TC_##tc##_s)
|
||||
#define TCNUM(tc) (TC_##tc##_n)
|
||||
#define TCFLG(tc) (TC_##tc##_f)
|
||||
|
||||
#define auto_right_margin TCFLG(am) /* Terminal has automatic margins */
|
||||
#define BS TCFLG(bs) /* Terminal can backspace with '^H' */
|
||||
#define hard_copy TCFLG(hc) /* Hardcopy terminal */
|
||||
#define has_meta_key TCFLG(km) /* Has meta key */
|
||||
#define move_insert_mode TCFLG(mi) /* Safe to move while in insert mode */
|
||||
#define NC TCFLG(nc) /* No correctly working carriage ret */
|
||||
#define PT TCFLG(pt) /* Has hardware tabs */
|
||||
#define transparent_underline TCFLG(ul) /* '_' overstrikes */
|
||||
#define no_scroll TCFLG(ns) /* Wraps rather than scrolls */
|
||||
#define also_has_meta_key TCFLG(MT) /* KLH: Another flag for meta key */
|
||||
/* (xterm is fond of this one) */
|
||||
|
||||
#define insert_line TCSTR(al) /* Add new blank line */
|
||||
#define cursor_left TCSTR(le) /* Move back one position */
|
||||
#define back_tab TCSTR(bt) /* Back tab */
|
||||
#define clr_eos TCSTR(cd) /* Clear to end of display */
|
||||
#define clr_eol TCSTR(ce) /* Clear to end of line */
|
||||
#define CH TCSTR(ch) /* Like CM but horiz motion only */
|
||||
#define clear_screen TCSTR(cl) /* Clear screen */
|
||||
#define cursor_address TCSTR(cm) /* Cursor motion */
|
||||
#define carriage_return TCSTR(cr) /* Carriage return (default '^M') */
|
||||
#define CS TCSTR(cs) /* Change scrolling region (vt100), like CM */
|
||||
#define CV TCSTR(cv) /* Like CM but vertical only */
|
||||
#define delete_character TCSTR(dc) /* Delete character */
|
||||
#define delete_line TCSTR(dl) /* Delete line */
|
||||
#define DM TCSTR(dm) /* Delete mode */
|
||||
#define cursor_down TCSTR(do) /* Down one line */
|
||||
#define ED TCSTR(ed) /* End delete mode */
|
||||
#define EI TCSTR(ei) /* End insert mode */
|
||||
#define cursor_home TCSTR(ho) /* Home cursor */
|
||||
#define insert_character TCSTR(ic) /* Insert character */
|
||||
#define IM TCSTR(im) /* Insert mode (enter) */
|
||||
#define IS TCSTR(is) /* Terminal initialization string */
|
||||
#define LL TCSTR(ll) /* Last line, first column */
|
||||
#define cursor_right TCSTR(nd) /* Non-destructive space (cursor right) */
|
||||
#if 0 /* Broken? */
|
||||
# define fresh_line TCSTR(nw) /* Move to start of fresh line */
|
||||
#endif
|
||||
#define PC TCSTR(pc) /* Pad character */
|
||||
#define SF TCSTR(sf) /* Scroll forward */
|
||||
#define SR TCSTR(sr) /* Scroll reverse */
|
||||
#define TA TCSTR(ta) /* Tab (other than '^I' or with padding) */
|
||||
#define TE TCSTR(te) /* String to end programs that use CM */
|
||||
#define TI TCSTR(ti) /* String to begin programs that use CM */
|
||||
#define cursor_up TCSTR(up) /* Upline (cursor up) */
|
||||
#define flash_screen TCSTR(vb) /* Visible bell */
|
||||
#define VE TCSTR(ve) /* Sequence to end open/visual mode */
|
||||
#define VS TCSTR(vs) /* Sequence to start open/visual mode */
|
||||
#define exit_standout_mode TCSTR(se) /* End standout mode */
|
||||
#define enter_standout_mode TCSTR(so) /* Begin standout mode */
|
||||
#define parm_dch TCSTR(DC) /* Delete n characters */
|
||||
#define parm_ich TCSTR(IC) /* Insert n characters */
|
||||
#define parm_delete_line TCSTR(DL) /* Delete n lines */
|
||||
#define parm_insert_line TCSTR(AL) /* Insert n lines */
|
||||
|
||||
#define columns TCNUM(co) /* co Number of columns in a line */
|
||||
#define BSdelay TCNUM(dB) /* dB Backspace delay */
|
||||
#define CRdelay TCNUM(dC) /* dC Carriage return delay */
|
||||
#define NLdelay TCNUM(dN) /* dN Newline delay */
|
||||
#define TAdelay TCNUM(dT) /* dT Tab delay */
|
||||
#define lines TCNUM(li) /* li Number of lines on screen */
|
||||
|
||||
|
||||
/* Things defined to look more like TERMINFO */
|
||||
#define over_strike 0
|
||||
#define bell 0
|
||||
178
contrib/supdup/termcaps.h
Normal file
178
contrib/supdup/termcaps.h
Normal file
@ -0,0 +1,178 @@
|
||||
|
||||
/*
|
||||
* termcaps.h -- definitions of the variables in which
|
||||
* the termcap info is kept
|
||||
* KLH: Totally revised to keep things in sync
|
||||
*/
|
||||
|
||||
/* Define macro of all interesting caps. If compiler chokes,
|
||||
de-macro it into separate file which can be included multiple times.
|
||||
*/
|
||||
#define TCAPDEFS \
|
||||
TCFLG(am, "has automatic margins"),\
|
||||
TCFLG(bs, "has ^H backspace"),\
|
||||
TCFLG(hc, "hardcopy term"),\
|
||||
TCFLG(km, "has meta key"),\
|
||||
TCFLG(mi, "safe to move in insert mode"),\
|
||||
TCFLG(nc, "no working CR"),\
|
||||
TCFLG(pt, "has hardware tabs"),\
|
||||
TCFLG(ul, "underscore can overstrike"),\
|
||||
TCFLG(ns, "wraps rather than scrolls"),\
|
||||
TCFLG(MT, "has meta key (xterm)"),\
|
||||
\
|
||||
TCSTR(al, "Add new blank line"),\
|
||||
TCSTR(le, "Move back one position"),\
|
||||
TCSTR(bt, "Back tab"),\
|
||||
TCSTR(cd, "Clear to end of display"),\
|
||||
TCSTR(ce, "Clear to end of line"),\
|
||||
TCSTR(ch, "Like CM but horizontal motion only"),\
|
||||
TCSTR(cl, "Clear screen"),\
|
||||
TCSTR(cm, "Cursor motion"),\
|
||||
TCSTR(cr, "Carriage return (default '^M')"),\
|
||||
TCSTR(cs, "Change scrolling region (vt100), like CM"),\
|
||||
TCSTR(cv, "Like CM but vertical only"),\
|
||||
TCSTR(dc, "Delete character"),\
|
||||
TCSTR(dl, "Delete line"),\
|
||||
TCSTR(dm, "Delete mode"),\
|
||||
TCSTR(do, "Down one line"),\
|
||||
TCSTR(ed, "End delete mode"),\
|
||||
TCSTR(ei, "End insert mode"),\
|
||||
TCSTR(ho, "Home cursor"),\
|
||||
TCSTR(ic, "Insert character"),\
|
||||
TCSTR(im, "Insert mode (enter)"),\
|
||||
TCSTR(is, "Terminal initialization string"),\
|
||||
TCSTR(ll, "Last line, first column"),\
|
||||
TCSTR(nd, "Non-destructive space (cursor right)"),\
|
||||
TCSTR(nw, "Newline (behave like CR + LF)"),\
|
||||
TCSTR(pc, "Pad character"),\
|
||||
TCSTR(sf, "Scroll forward"),\
|
||||
TCSTR(sr, "Scroll reverse"),\
|
||||
TCSTR(ta, "Tab (other than '^I' or with padding)"),\
|
||||
TCSTR(te, "String to end programs that use CM"),\
|
||||
TCSTR(ti, "String to begin programs that use CM"),\
|
||||
TCSTR(up, "Upline (cursor up)"),\
|
||||
TCSTR(vb, "Visible bell"),\
|
||||
TCSTR(ve, "Sequence to end open/visual mode"),\
|
||||
TCSTR(vs, "Sequence to start open/visual mode"),\
|
||||
TCSTR(se, "End standout mode"),\
|
||||
TCSTR(so, "Begin standout mode"),\
|
||||
TCSTR(DC, "Delete n characters"),\
|
||||
TCSTR(IC, "Insert n characters"),\
|
||||
TCSTR(DL, "Delete n lines"),\
|
||||
TCSTR(AL, "xInsert n lines"),\
|
||||
\
|
||||
TCNUM(co, "Number of columns in a line"),\
|
||||
TCNUM(dB, "Backspace delay"),\
|
||||
TCNUM(dC, "Carriage return delay"),\
|
||||
TCNUM(dN, "Newline delay"),\
|
||||
TCNUM(dT, "Tab delay "),\
|
||||
TCNUM(li, "Number of lines on screen")
|
||||
|
||||
|
||||
/* Define indices into table. Note type distinction is reflected
|
||||
in index names, so as to catch improper references.
|
||||
*/
|
||||
enum tcaps {
|
||||
#define TCSTR(tc,comm) TCI_##tc##_s
|
||||
#define TCNUM(tc,comm) TCI_##tc##_n
|
||||
#define TCFLG(tc,comm) TCI_##tc##_f
|
||||
TCAPDEFS
|
||||
#undef TCSTR
|
||||
#undef TCNUM
|
||||
#undef TCFLG
|
||||
};
|
||||
|
||||
struct tcent {
|
||||
char *tcname;
|
||||
int tctyp;
|
||||
union {
|
||||
char *str;
|
||||
int num;
|
||||
int flg;
|
||||
} tcval;
|
||||
};
|
||||
#define TCTYP_STR 0
|
||||
#define TCTYP_NUM 1
|
||||
#define TCTYP_FLG 2
|
||||
|
||||
struct tcent tcaptab[] = {
|
||||
#define TCSTR(tc,comm) {#tc, TCTYP_STR}
|
||||
#define TCNUM(tc,comm) {#tc, TCTYP_NUM}
|
||||
#define TCFLG(tc,comm) {#tc, TCTYP_FLG}
|
||||
TCAPDEFS
|
||||
#undef TCSTR
|
||||
#undef TCNUM
|
||||
#undef TCFLG
|
||||
};
|
||||
|
||||
#define TCSTR(tc) (tcaptab[TCI_##tc##_s].tcval.str)
|
||||
#define TCNUM(tc) (tcaptab[TCI_##tc##_n].tcval.num)
|
||||
#define TCFLG(tc) (tcaptab[TCI_##tc##_f].tcval.flg)
|
||||
|
||||
#define auto_right_margin TCFLG(am) /* Terminal has automatic margins */
|
||||
#define BS TCFLG(bs) /* Terminal can backspace with '^H' */
|
||||
#define hard_copy TCFLG(hc) /* Hardcopy terminal */
|
||||
#define has_meta_key TCFLG(km) /* Has meta key */
|
||||
#define move_insert_mode TCFLG(mi) /* Safe to move while in insert mode */
|
||||
#define NC TCFLG(nc) /* No correctly working carriage ret */
|
||||
#define PT TCFLG(pt) /* Has hardware tabs */
|
||||
#define transparent_underline TCFLG(ul) /* '_' overstrikes */
|
||||
#define no_scroll TCFLG(ns) /* Wraps rather than scrolls */
|
||||
#define also_has_meta_key TCFLG(MT) /* KLH: Another flag for meta key */
|
||||
/* (xterm is fond of this one) */
|
||||
#define insert_line TCSTR(al) /* Add new blank line */
|
||||
#define cursor_left TCSTR(le) /* Move back one position */
|
||||
#define back_tab TCSTR(bt) /* Back tab */
|
||||
#define clr_eos TCSTR(cd) /* Clear to end of display */
|
||||
#define clr_eol TCSTR(ce) /* Clear to end of line */
|
||||
#define CH TCSTR(ch) /* Like CM but horiz motion only */
|
||||
#define clear_screen TCSTR(cl) /* Clear screen */
|
||||
#define cursor_address TCSTR(cm) /* Cursor motion */
|
||||
#define carriage_return TCSTR(cr) /* Carriage return (default '^M') */
|
||||
#define CS TCSTR(cs) /* Change scrolling region (vt100), like CM */
|
||||
#define CV TCSTR(cv) /* Like CM but vertical only */
|
||||
#define delete_character TCSTR(dc) /* Delete character */
|
||||
#define delete_line TCSTR(dl) /* Delete line */
|
||||
#define DM TCSTR(dm) /* Delete mode */
|
||||
#define cursor_down TCSTR(do) /* Down one line */
|
||||
#define ED TCSTR(ed) /* End delete mode */
|
||||
#define EI TCSTR(ei) /* End insert mode */
|
||||
#define cursor_home TCSTR(ho) /* Home cursor */
|
||||
#define insert_character TCSTR(ic) /* Insert character */
|
||||
#define IM TCSTR(im) /* Insert mode (enter) */
|
||||
#define IS TCSTR(is) /* Terminal initialization string */
|
||||
#define LL TCSTR(ll) /* Last line, first column */
|
||||
#define cursor_right TCSTR(nd) /* Non-destructive space (cursor right) */
|
||||
#if 0 /* Broken? */
|
||||
# define fresh_line TCSTR(nw) /* Move to start of fresh line */
|
||||
#else
|
||||
# define fresh_line (0) /* Move to start of fresh line */
|
||||
#endif
|
||||
#define PC TCSTR(pc) /* Pad character */
|
||||
#define SF TCSTR(sf) /* Scroll forward */
|
||||
#define SR TCSTR(sr) /* Scroll reverse */
|
||||
#define TA TCSTR(ta) /* Tab (other than '^I' or with padding) */
|
||||
#define TE TCSTR(te) /* String to end programs that use CM */
|
||||
#define TI TCSTR(ti) /* String to begin programs that use CM */
|
||||
#define cursor_up TCSTR(up) /* Upline (cursor up) */
|
||||
#define flash_screen TCSTR(vb) /* Visible bell */
|
||||
#define VE TCSTR(ve) /* Sequence to end open/visual mode */
|
||||
#define VS TCSTR(vs) /* Sequence to start open/visual mode */
|
||||
#define exit_standout_mode TCSTR(se) /* End standout mode */
|
||||
#define enter_standout_mode TCSTR(so) /* Begin standout mode */
|
||||
#define parm_dch TCSTR(DC) /* Delete n characters */
|
||||
#define parm_ich TCSTR(IC) /* Insert n characters */
|
||||
#define parm_delete_line TCSTR(DL) /* Delete n lines */
|
||||
#define parm_insert_line TCSTR(AL) /* Insert n lines */
|
||||
|
||||
#define columns TCNUM(co) /* co Number of columns in a line */
|
||||
#define BSdelay TCNUM(dB) /* dB Backspace delay */
|
||||
#define CRdelay TCNUM(dC) /* dC Carriage return delay */
|
||||
#define NLdelay TCNUM(dN) /* dN Newline delay */
|
||||
#define TAdelay TCNUM(dT) /* dT Tab delay */
|
||||
#define lines TCNUM(li) /* li Number of lines on screen */
|
||||
|
||||
|
||||
/* Things defined to look more like TERMINFO */
|
||||
#define over_strike 0
|
||||
#define bell 0
|
||||
1010
contrib/supdup/terminfo.text
Normal file
1010
contrib/supdup/terminfo.text
Normal file
File diff suppressed because it is too large
Load Diff
1
contrib/supdup/tsd.tc
Normal file
1
contrib/supdup/tsd.tc
Normal file
@ -0,0 +1 @@
|
||||
setenv TERMCAP 'SD|supdup|SUPDUP virtual terminal:co#79:li#48:am:vb=\177\023:nd=\177\020:cl=\177\022:so=\177\031:se=\177\032:pt:ce=\177\005:ec=\177\006:cd=\177\004:bs:up=\177\041:cm=\177\021%+ %+ :nl=\177\014:al=\177\025\001:dl=\177\026\001:AL=\177\025%.:DL=\177\026%.:mi:im=:ei=:ic=\177\027\001:dc=\177\030\001:dm=:ed=:ns:km:'
|
||||
6
run/dfkfb/README
Normal file
6
run/dfkfb/README
Normal file
@ -0,0 +1,6 @@
|
||||
The following file is derived from Digital software and subject to
|
||||
Digital licensing requirements:
|
||||
|
||||
dfkfb-all.savh (DFKFB diagnostic)
|
||||
|
||||
For usage and KL data, see the documentation file "doc/dfkfb.txt".
|
||||
BIN
run/dfkfb/dfkfb-all.savh
Normal file
BIN
run/dfkfb/dfkfb-all.savh
Normal file
Binary file not shown.
19
run/dfkfb/dfkfb.ini
Normal file
19
run/dfkfb/dfkfb.ini
Normal file
@ -0,0 +1,19 @@
|
||||
; KLH10 init file for
|
||||
; DFKFB - KL10 timing test diagnostic
|
||||
; Normal load requires DIAMON+SUBKL+DFKFB but all of these are
|
||||
; already combined in dfkfb-all.savh.
|
||||
|
||||
devdef dte0 200 dte master
|
||||
; Make sure clock is at rate DFKFB expects
|
||||
set clk_ithzfix=60
|
||||
|
||||
set ld_fmt=h36
|
||||
load dfkfb-all.savh
|
||||
set sw=400100,,0
|
||||
|
||||
; Hi-ho, hi-ho
|
||||
go
|
||||
|
||||
; Quit when done
|
||||
quit
|
||||
|
||||
6
run/klnic/README
Normal file
6
run/klnic/README
Normal file
@ -0,0 +1,6 @@
|
||||
The following files are derived from Digital software and subject to
|
||||
Digital licensing requirements:
|
||||
|
||||
boot-nic.sav (disk bootstrap)
|
||||
mtboot-nic.sav (tape bootstrap)
|
||||
|
||||
BIN
run/klnic/boot-nic.sav
Normal file
BIN
run/klnic/boot-nic.sav
Normal file
Binary file not shown.
21
run/klnic/dist-klnic.ini
Normal file
21
run/klnic/dist-klnic.ini
Normal file
@ -0,0 +1,21 @@
|
||||
; This file is KLH10.INI -- the KLH10 init file that is read and executed
|
||||
; by default when the KLH10 starts up.
|
||||
|
||||
; Define basic device config - one DTE, one disk, one tape
|
||||
devdef dte0 200 dte master
|
||||
devdef rh0 540 rh20
|
||||
devdef dsk0 rh0.0 rp type=rp06 format=dbd9 path=NICDIST-RP06-0.dbd9 dpdma=on
|
||||
devdef mta0 rh0.1 tm03 fmtr=tm03 type=tu45
|
||||
|
||||
; Add one more disk for use as KLH:
|
||||
devdef rh1 544 rh20
|
||||
;devdef dsk1 rh1.0 rp type=rp06 format=dbd9 path=KLH-RP06.dbd9
|
||||
|
||||
; Define KLNI with address that monitor expects
|
||||
devdef ni0 564 ni20 ipaddr=192.168.0.251
|
||||
|
||||
; Define new HOST device hackery
|
||||
devdef idler 700 host
|
||||
|
||||
; Load disk bootstrap for convenience
|
||||
load boot-nic.sav
|
||||
21
run/klnic/dist51-klnic.ini
Normal file
21
run/klnic/dist51-klnic.ini
Normal file
@ -0,0 +1,21 @@
|
||||
; This file is KLH10.INI -- the KLH10 init file that is read and executed
|
||||
; by default when the KLH10 starts up.
|
||||
|
||||
; Define basic device config - one DTE, one disk, one tape
|
||||
devdef dte0 200 dte master
|
||||
devdef rh0 540 rh20
|
||||
devdef dsk0 rh0.0 rp type=rp06 format=dbd9 path=NICDIST-RP06-0.dbd9 dpdma=on
|
||||
devdef mta0 rh0.1 tm03 fmtr=tm03 type=tu45
|
||||
|
||||
; Add one more disk for use as KLH:
|
||||
devdef rh1 544 rh20
|
||||
;devdef dsk1 rh1.0 rp type=rp06 format=dbd9 path=KLH-RP06.dbd9
|
||||
|
||||
; Define KLNI with address that monitor expects
|
||||
devdef ni0 564 ni20 ipaddr=10.0.0.51
|
||||
|
||||
; Define new HOST device hackery
|
||||
devdef idler 700 host
|
||||
|
||||
; Load disk bootstrap for convenience
|
||||
load boot-nic.sav
|
||||
21
run/klnic/klh10.ini
Normal file
21
run/klnic/klh10.ini
Normal file
@ -0,0 +1,21 @@
|
||||
; This file is KLH10.INI -- the KLH10 init file that is read and executed
|
||||
; by default when the KLH10 starts up.
|
||||
|
||||
; Define basic device config - one DTE, one disk, one tape
|
||||
devdef dte0 200 dte master
|
||||
devdef rh0 540 rh20
|
||||
devdef dsk0 rh0.0 rp type=rp06 format=dbd9 path=RP06-NIC-0.dbd9 dpdma=on
|
||||
devdef mta0 rh0.1 tm03 fmtr=tm03 type=tu45
|
||||
|
||||
; Add one more disk for use as KLH:
|
||||
devdef rh1 544 rh20
|
||||
devdef dsk1 rh1.0 rp type=rp06 format=dbd9 path=RP06-KLH.dbd9
|
||||
|
||||
; Define KLNI with address that monitor expects
|
||||
devdef ni0 564 ni20 ipaddr=192.168.0.251
|
||||
|
||||
; Define new HOST device hackery
|
||||
devdef idler 700 host
|
||||
|
||||
; Load disk bootstrap for convenience
|
||||
load boot-nic.sav
|
||||
BIN
run/klnic/mtboot-nic.sav
Normal file
BIN
run/klnic/mtboot-nic.sav
Normal file
Binary file not shown.
6
run/klt10/README
Normal file
6
run/klt10/README
Normal file
@ -0,0 +1,6 @@
|
||||
The following files are derived from Digital software and subject to
|
||||
Digital licensing requirements:
|
||||
|
||||
klbddt.exe (bootstrap with DDT)
|
||||
klboot.exe (disk/tape bootstrap)
|
||||
|
||||
BIN
run/klt10/klbddt.exe
Normal file
BIN
run/klt10/klbddt.exe
Normal file
Binary file not shown.
BIN
run/klt10/klboot.exe
Normal file
BIN
run/klt10/klboot.exe
Normal file
Binary file not shown.
18
run/klt10/klt10.ini
Normal file
18
run/klt10/klt10.ini
Normal file
@ -0,0 +1,18 @@
|
||||
; Sample KLH10.INI for initial installation
|
||||
|
||||
; Define basic device config - one DTE, one disk, one tape.
|
||||
; Use two RH20s because TOPS-10 doesn't like mixing disk and tape on
|
||||
; the same controller (TOPS-20 is fine).
|
||||
|
||||
; T10 needs DTE ACK delay
|
||||
devdef dte0 200 dte master ackdly=5
|
||||
devdef rh0 540 rh20
|
||||
devdef rh1 544 rh20
|
||||
devdef dsk0 rh0.0 rp type=rp06 format=dbd9
|
||||
devdef mta0 rh1.0 tm03 type=tu77
|
||||
|
||||
; For DECNET if desired
|
||||
;
|
||||
devdef ni0 564 ni20 dedic=0 decnet=1 doarp=0 enaddr=aa:00:04:00:ac:60 dpdelay=12 c3dly=2 rdtmo=3
|
||||
|
||||
load klboot.exe
|
||||
5
run/klt20/README
Normal file
5
run/klt20/README
Normal file
@ -0,0 +1,5 @@
|
||||
The following files are derived from Digital software and subject to
|
||||
Digital licensing requirements:
|
||||
|
||||
boot.sav (disk bootstrap)
|
||||
mtboot.sav (tape bootstrap)
|
||||
BIN
run/klt20/boot.sav
Normal file
BIN
run/klt20/boot.sav
Normal file
Binary file not shown.
23
run/klt20/inst-klt20.ini
Normal file
23
run/klt20/inst-klt20.ini
Normal file
@ -0,0 +1,23 @@
|
||||
; Sample KLH10.INI for initial installation
|
||||
|
||||
; Define basic device config - one DTE, one disk, one tape.
|
||||
; Use two RH20s because TOPS-10 doesn't like mixing disk and tape on
|
||||
; the same controller (TOPS-20 is fine).
|
||||
|
||||
devdef dte0 200 dte master
|
||||
devdef rh0 540 rh20
|
||||
devdef rh1 544 rh20
|
||||
devdef dsk0 rh0.0 rp type=rp06 format=dbd9
|
||||
devdef mta0 rh1.0 tm03 type=tu45
|
||||
|
||||
; Need KLNI to avoid LAPRBF BUGCHKs - use valid address if known
|
||||
;
|
||||
devdef ni0 564 ni20 ipaddr=10.0.0.51
|
||||
|
||||
; Mount installation tape (no ucode or boot to skip)
|
||||
devmount mta0 bb-h137f-bm.tap
|
||||
|
||||
; Load tape bootstrap directly
|
||||
load mtboot.sav
|
||||
|
||||
; Now ready to GO
|
||||
20
run/klt20/klt20.ini
Normal file
20
run/klt20/klt20.ini
Normal file
@ -0,0 +1,20 @@
|
||||
; Sample KLH10.INI for initial installation
|
||||
|
||||
; Define basic device config - one DTE, one disk, one tape.
|
||||
; Use two RH20s because TOPS-10 doesn't like mixing disk and tape on
|
||||
; the same controller (TOPS-20 is fine).
|
||||
|
||||
devdef dte0 200 dte master
|
||||
devdef rh0 540 rh20
|
||||
devdef rh1 544 rh20
|
||||
devdef dsk0 rh0.0 rp type=rp06 format=dbd9
|
||||
devdef mta0 rh1.0 tm03 type=tu45
|
||||
|
||||
; Need KLNI to avoid LAPRBF BUGCHKs - use valid address if known
|
||||
;
|
||||
devdef ni0 564 ni20 ipaddr=10.0.0.51
|
||||
|
||||
; Load disk bootstrap directly
|
||||
load boot.sav
|
||||
|
||||
; Now ready to GO
|
||||
BIN
run/klt20/mtboot.sav
Normal file
BIN
run/klt20/mtboot.sav
Normal file
Binary file not shown.
BIN
run/ksits/@.ddt-u
Normal file
BIN
run/ksits/@.ddt-u
Normal file
Binary file not shown.
BIN
run/ksits/@.its-647kn-u
Normal file
BIN
run/ksits/@.its-647kn-u
Normal file
Binary file not shown.
BIN
run/ksits/@.its-647md-u
Normal file
BIN
run/ksits/@.its-647md-u
Normal file
Binary file not shown.
BIN
run/ksits/@.its-647pi-u
Normal file
BIN
run/ksits/@.its-647pi-u
Normal file
Binary file not shown.
BIN
run/ksits/@.nsalv-260-u
Normal file
BIN
run/ksits/@.nsalv-260-u
Normal file
Binary file not shown.
18
run/ksits/README
Normal file
18
run/ksits/README
Normal file
@ -0,0 +1,18 @@
|
||||
The following files are derived from MIT ITS software and subject to
|
||||
their licensing requirements:
|
||||
|
||||
@.ddt-u (DDT standalone)
|
||||
@.nsalv-260-u (NSALV standalone)
|
||||
@.its-647pi-u (PI ITS monitor bootstrap)
|
||||
@.its-647kn-u (KN ITS monitor bootstrap)
|
||||
@.its-647md-u (MD ITS monitor bootstrap)
|
||||
itsbin.647pi-u (PI ITS alone, no DDT or SALV)
|
||||
itsbin.647kn-u (KN ITS alone, no DDT or SALV)
|
||||
itsbin.647md-u (MD ITS alone, no DDT or SALV)
|
||||
|
||||
The "pubits" directory contains various notes left over from the
|
||||
Public ITS project. One file in particular has been updated:
|
||||
|
||||
pubits/doc/distrib.its - various notes on bringing up a new ITS
|
||||
|
||||
Read it!
|
||||
BIN
run/ksits/itsbin.647kn-u
Normal file
BIN
run/ksits/itsbin.647kn-u
Normal file
Binary file not shown.
BIN
run/ksits/itsbin.647md-u
Normal file
BIN
run/ksits/itsbin.647md-u
Normal file
Binary file not shown.
BIN
run/ksits/itsbin.647pi-u
Normal file
BIN
run/ksits/itsbin.647pi-u
Normal file
Binary file not shown.
31
run/ksits/klh10-kn.ini
Normal file
31
run/ksits/klh10-kn.ini
Normal file
@ -0,0 +1,31 @@
|
||||
; KLH10 emulator configuration for KN ITS system.
|
||||
|
||||
; Define basic KS10 device config - two RH11s each on its own Unibus
|
||||
|
||||
devdef rh0 ub1 rh11 addr=776700 br=6 vec=254
|
||||
devdef rh1 ub3 rh11 addr=772440 br=6 vec=224
|
||||
|
||||
; Provide one disk, one tape in config ITS expects
|
||||
|
||||
devdef dsk0 rh0.0 rp type=rp06 format=dbd9 path=PI-ITS-RP06.0-dbd9 iodly=0
|
||||
devdef mta0 rh1.0 tm02 fmtr=tm03 type=tu45
|
||||
|
||||
; ITS wants a 60Hz clock, allow it. Need this until defaults OK.
|
||||
set clk_ithzfix=60
|
||||
|
||||
; Define IMP for MD
|
||||
devdef imp ub3 lhdh addr=767600 br=6 vec=250 ipaddr=10.134.198.236 gwaddr=10.0.0.1
|
||||
|
||||
; Dummy definitions. Only one DZ is still (apparently) needed.
|
||||
devdef dz0 ub3 dz11 addr=760010 br=5 vec=340
|
||||
;devdef dz1 ub3 dz11 addr=760020 br=5 vec=350
|
||||
;devdef chaos ub3 ch11 addr=764140 br=5 vec=270
|
||||
|
||||
; Define new HOST device hackery
|
||||
devdef idler ub3 host addr=777000
|
||||
|
||||
; Preload ITS for convenience
|
||||
load @.its-647kn-u
|
||||
|
||||
; Use "GO 774000" to start DDT, else just "GO" to start ITS
|
||||
|
||||
31
run/ksits/klh10-md.ini
Normal file
31
run/ksits/klh10-md.ini
Normal file
@ -0,0 +1,31 @@
|
||||
; KLH10 emulator configuration for MD ITS system.
|
||||
|
||||
; Define basic KS10 device config - two RH11s each on its own Unibus
|
||||
|
||||
devdef rh0 ub1 rh11 addr=776700 br=6 vec=254
|
||||
devdef rh1 ub3 rh11 addr=772440 br=6 vec=224
|
||||
|
||||
; Provide one disk, one tape in config ITS expects
|
||||
|
||||
devdef dsk0 rh0.0 rp type=rp06 format=dbd9 path=PI-ITS-RP06.0-dbd9 iodly=0
|
||||
devdef mta0 rh1.0 tm02 fmtr=tm03 type=tu45
|
||||
|
||||
; ITS wants a 60Hz clock, allow it. Need this until defaults OK.
|
||||
set clk_ithzfix=60
|
||||
|
||||
; Define IMP for MD
|
||||
devdef imp ub3 lhdh addr=767600 br=6 vec=250 ipaddr=192.168.0.203 gwaddr=192.168.0.2
|
||||
|
||||
; Dummy definitions. Only one DZ is still (apparently) needed.
|
||||
devdef dz0 ub3 dz11 addr=760010 br=5 vec=340
|
||||
;devdef dz1 ub3 dz11 addr=760020 br=5 vec=350
|
||||
;devdef chaos ub3 ch11 addr=764140 br=5 vec=270
|
||||
|
||||
; Define new HOST device hackery
|
||||
devdef idler ub3 host addr=777000
|
||||
|
||||
; Preload ITS for convenience
|
||||
load @.its-647md-u
|
||||
|
||||
; go 774000 ; to start DDT, else "go" to start ITS
|
||||
|
||||
31
run/ksits/klh10-pi.ini
Normal file
31
run/ksits/klh10-pi.ini
Normal file
@ -0,0 +1,31 @@
|
||||
; KLH10 emulator configuration for PI ITS system.
|
||||
|
||||
; Define basic KS10 device config - two RH11s each on its own Unibus
|
||||
|
||||
devdef rh0 ub1 rh11 addr=776700 br=6 vec=254
|
||||
devdef rh1 ub3 rh11 addr=772440 br=6 vec=224
|
||||
|
||||
; Provide one disk, one tape in config ITS expects
|
||||
|
||||
devdef dsk0 rh0.0 rp type=rp06 format=dbd9 path=PI-ITS-RP06.0-dbd9 iodly=0
|
||||
devdef mta0 rh1.0 tm02 fmtr=tm03 type=tu45
|
||||
|
||||
; ITS wants a 60Hz clock, allow it. Need this until defaults OK.
|
||||
set clk_ithzfix=60
|
||||
|
||||
; Define IMP for PI on ITS.JOSS.COM
|
||||
devdef imp ub3 lhdh addr=767600 br=6 vec=250 ipaddr=199.34.53.51 gwaddr=199.34.53.50
|
||||
|
||||
; Dummy definitions. Only one DZ is still (apparently) needed.
|
||||
devdef dz0 ub3 dz11 addr=760010 br=5 vec=340
|
||||
;devdef dz1 ub3 dz11 addr=760020 br=5 vec=350
|
||||
;devdef chaos ub3 ch11 addr=764140 br=5 vec=270
|
||||
|
||||
; Define new HOST device hackery
|
||||
devdef idler ub3 host addr=777000
|
||||
|
||||
; Preload ITS for convenience
|
||||
load @.its-647pi-u
|
||||
|
||||
; go 774000 ; to start DDT, else "go" to start ITS
|
||||
|
||||
21
run/ksits/pubits/adm/hosts.its
Normal file
21
run/ksits/pubits/adm/hosts.its
Normal file
@ -0,0 +1,21 @@
|
||||
|
||||
# Per RFC 1918, there are 3 IP address space blocks assigned for private nets,
|
||||
# which will never (and can never) be used on the external Internet:
|
||||
# 10.0.0.0 - 10.255.255.255 (10/8 prefix) 1 class A net
|
||||
# 172.16.0.0 - 172.31.255.255 (172.16/12 prefix) 16 class B nets
|
||||
# 192.168.0.0 - 192.168.255.255 (192.168/16 prefix) 256 class C nets
|
||||
#
|
||||
# IP conventions:
|
||||
# 0 and 255 reserved for broadcast (IP standard)
|
||||
|
||||
# Addresses for setup of Public ITS in Doug Humphrey's co-location facility.
|
||||
# Reserved 8-address block from 199.34.53.48-55 inclusive.
|
||||
# .48 # Old bcast
|
||||
# .49 # Router/Gateway
|
||||
199.34.53.50 its.joss.com its # Native system
|
||||
199.34.53.51 pi.its.os.org pi # Public ITS (virtual)
|
||||
199.34.53.52 dx.its.os.org dx # Digex ITS (virtual)
|
||||
199.34.53.53 du.its.os.org du # Hack ITS (virtual)
|
||||
199.34.53.54 unknown.its.os.org # Reserved
|
||||
# .55 # Subnet broadcast
|
||||
|
||||
188
run/ksits/pubits/adm/its.ipfw
Normal file
188
run/ksits/pubits/adm/its.ipfw
Normal file
@ -0,0 +1,188 @@
|
||||
#!/bin/sh -
|
||||
|
||||
# Paranoid ipfw configuration for its.os.org box
|
||||
|
||||
[ -f /etc/rc.conf ] && . /etc/rc.conf
|
||||
ipfw="/sbin/ipfw"
|
||||
[ "x$firewall_quiet" = "xYES" ] && ipfw="$ipfw -q"
|
||||
|
||||
#### configure ####
|
||||
|
||||
# 199.34.53.48/29
|
||||
# 255.255.255.248 <netmask>
|
||||
# .48 <reserved (old bcast?)>
|
||||
# 199.34.53.49 <gateway>
|
||||
# 199.34.53.50 its.joss.com (NATIVE SYSTEM)
|
||||
# 199.34.53.51 pi.its.os.org (VIRTUAL ITS)
|
||||
# 199.34.53.52 dx.its.os.org (VIRTUAL ITS)
|
||||
# 199.34.53.53 du.its.os.org (VIRTUAL ITS)
|
||||
# 199.34.53.54 ??.its.os.org (VIRTUAL ITS)
|
||||
# .55 <reserved for bcast>
|
||||
#
|
||||
|
||||
# Addresses. "me" is its.joss.com
|
||||
#
|
||||
us=199.34.53.48/29
|
||||
b0=199.34.53.48
|
||||
gw=199.34.53.49
|
||||
me=199.34.53.50
|
||||
pi=199.34.53.51
|
||||
dx=199.34.53.52
|
||||
du=199.34.53.53
|
||||
qq=199.34.53.54
|
||||
b1=199.34.53.55
|
||||
|
||||
# Name of our interface to the outside world (ethernet, presumably)
|
||||
#
|
||||
if=de0
|
||||
|
||||
###################
|
||||
|
||||
# Clean slate
|
||||
#
|
||||
$ipfw -f flush
|
||||
|
||||
# Do not accept source routed traffic under any circumstances
|
||||
#
|
||||
$ipfw add deny log all from any to any ipoptions ssrr,lsrr,rr
|
||||
|
||||
# Allow everything on loopback interface
|
||||
#
|
||||
$ipfw add pass all from any to any via lo0
|
||||
|
||||
## IP rules ##
|
||||
|
||||
# Loopback addresses on non-loopback interfaces are spoofed
|
||||
#
|
||||
$ipfw add deny log all from any to 127.0.0.0/8
|
||||
$ipfw add deny log all from 127.0.0.0/8 to any
|
||||
|
||||
# As far as I know there is no reason for any traffic to or from
|
||||
# any kind of broadcast, class D, class E, or RFC-1597 private
|
||||
# address to appear on this subnet.
|
||||
#
|
||||
# Tuez les tous, Dieu reconnaitra les siens.
|
||||
#
|
||||
$ipfw add deny log all from $b0 to any
|
||||
$ipfw add deny log all from $b1 to any
|
||||
$ipfw add deny log all from 0.0.0.0 to any
|
||||
$ipfw add deny log all from 224.0.0.0/3 to any
|
||||
$ipfw add deny log all from 255.255.255.255 to any
|
||||
$ipfw add deny log all from any to $b0
|
||||
$ipfw add deny log all from any to $b1
|
||||
$ipfw add deny log all from any to 0.0.0.0
|
||||
$ipfw add deny log all from any to 224.0.0.0/3
|
||||
$ipfw add deny log all from any to 255.255.255.255
|
||||
$ipfw add deny log all from 10.0.0.0/8 to any
|
||||
$ipfw add deny log all from 172.16.0.0/12 to any
|
||||
$ipfw add deny log all from 192.168.0.0/16 to any
|
||||
$ipfw add deny log all from any to 10.0.0.0/8
|
||||
$ipfw add deny log all from any to 172.16.0.0/12
|
||||
$ipfw add deny log all from any to 192.168.0.0/16
|
||||
|
||||
# Don't let anybody else pretend to be this unix machine
|
||||
#
|
||||
$ipfw add deny log all from $me to any in recv any
|
||||
|
||||
# If anybody actually figures out how to hack ITS into spoofing, we
|
||||
# probably ought to sign that person up on the spot, but just in case
|
||||
# some total loser gets lucky, let's make it a little harder for
|
||||
# spoofed packets to escape from ITS
|
||||
# Note: this also prevents a misconfigured ITS from causing trouble.
|
||||
#
|
||||
$ipfw add deny log all from not $us to any in recv 'tun*'
|
||||
$ipfw add deny log all from $gw to any in recv 'tun*'
|
||||
|
||||
# Last, a little protection in case our first-hop router isn't checking
|
||||
# addresses as carefully as we are
|
||||
#
|
||||
$ipfw add deny log all from any to not $us in recv $if
|
||||
$ipfw add deny log all from $pi to any in recv $if
|
||||
$ipfw add deny log all from $dx to any in recv $if
|
||||
$ipfw add deny log all from $du to any in recv $if
|
||||
$ipfw add deny log all from $qq to any in recv $if
|
||||
|
||||
# Add any other rules to discard known bogus addresses here
|
||||
|
||||
## TCP rules
|
||||
|
||||
# We do our TCP connection checking on setup, so just let
|
||||
# any established connection go through
|
||||
# Most TCP traffic matches this rule, so put it as early as possible
|
||||
#
|
||||
$ipfw add pass tcp from any to any established
|
||||
|
||||
# Allow TELNET and FTP into the ITS machines
|
||||
# Don't allow TELNET or FTP to the unix machine
|
||||
# ITS doesn't support PASV FTP, so neither do we
|
||||
#
|
||||
$ipfw add reset log tcp from any to $me telnet,ftp setup
|
||||
$ipfw add pass tcp from any to any telnet,ftp setup
|
||||
|
||||
# Allow SSH & SMTP into the unix box
|
||||
#
|
||||
$ipfw add pass tcp from any to $me ssh,smtp setup
|
||||
|
||||
# Any connection initiated by the unix machine is ok
|
||||
#
|
||||
$ipfw add pass tcp from $me to any setup
|
||||
|
||||
# Don't allow any other connections to the unix machine
|
||||
#
|
||||
$ipfw add reset log from any to $me setup
|
||||
|
||||
# ITS machines are not allowed to initiate connections to the outside world
|
||||
# Anything else coming from an ITS machine is ok
|
||||
#
|
||||
$ipfw add reset log tcp from any to any setup out recv 'tun*' xmit $if
|
||||
$ipfw add pass tcp from any to any setup recv 'tun*'
|
||||
|
||||
# Silently drop IDENT traffic
|
||||
# (Gee, Dr. Bernstein, let's launch a denial-of-service attack on ourselves!)
|
||||
#
|
||||
$ipfw add reset tcp from any to any ident setup
|
||||
|
||||
# No other TCP connections allowed
|
||||
#
|
||||
$ipfw add reset log tcp from any to any setup
|
||||
|
||||
# Please don't even think about turning on SunRPC or NFS
|
||||
#
|
||||
$ipfw add deny log udp from any to any sunrpc,nfs
|
||||
|
||||
# Don't accept inbound syslog from the outside world
|
||||
# (no known useful purpose, so don't let bozos fill our log directory)
|
||||
#
|
||||
$ipfw add deny log udp from any to any syslog in recv $if
|
||||
|
||||
# We need DNS and NTP
|
||||
#
|
||||
$ipfw add pass udp from any dns,ntp to any
|
||||
$ipfw add pass udp from any to any dns,ntp
|
||||
|
||||
# Allow useful cases of syslog. Heck, maybe ITS should use it
|
||||
#
|
||||
$ipfw add pass udp from $us to $us syslog
|
||||
|
||||
# Allow the useful ICMP messages:
|
||||
# Echo (types 0 & 8, for ping and traceroute)
|
||||
# Destination Unreachable (type 3)
|
||||
# Time Exceeded (type 11, primarily for traceroute)
|
||||
#
|
||||
# We should NOT accept ICMP Redirects (we're a router)
|
||||
$ipfw add pass icmp from any to any icmptypes 0,3,8,11
|
||||
$ipfw add deny icmp from any to any out recv $if xmit 'tun*'
|
||||
$ipfw add pass icmp from any to any out xmit 'tun*'
|
||||
|
||||
# Silently discard ICMP Router Discovery strobes
|
||||
#
|
||||
$ipfw add deny icmp from any to any icmptypes 10
|
||||
|
||||
# Deny and log everything else. If this turns out to be too
|
||||
# verbose, consider adding rules to silently drop stuff that
|
||||
# we understand but don't want. Anything we don't understand
|
||||
# probably ought to be logged.
|
||||
#
|
||||
# If you don't understand it, it's dangerous.
|
||||
#
|
||||
$ipfw add deny log all from any to any
|
||||
211
run/ksits/pubits/adm/rc.firewall-its
Normal file
211
run/ksits/pubits/adm/rc.firewall-its
Normal file
@ -0,0 +1,211 @@
|
||||
#!/bin/sh -
|
||||
## Paranoid ipfw configuration for its.os.org box
|
||||
|
||||
# Suck in the configuration variables.
|
||||
if [ -f /etc/defaults/rc.conf ]; then
|
||||
. /etc/defaults/rc.conf
|
||||
elif [ -f /etc/rc.conf ]; then
|
||||
. /etc/rc.conf
|
||||
fi
|
||||
|
||||
############
|
||||
# Set quiet mode if requested
|
||||
if [ "x$firewall_quiet" = "xYES" ]; then
|
||||
fwcmd="/sbin/ipfw -q"
|
||||
else
|
||||
fwcmd="/sbin/ipfw"
|
||||
fi
|
||||
|
||||
#### configure ####
|
||||
|
||||
# 199.34.53.48/29
|
||||
# 255.255.255.248 <netmask>
|
||||
# .48 <reserved (old bcast?)>
|
||||
# 199.34.53.49 <gateway>
|
||||
# 199.34.53.50 its.joss.com (NATIVE SYSTEM)
|
||||
# 199.34.53.51 pi.its.os.org (VIRTUAL ITS)
|
||||
# 199.34.53.52 dx.its.os.org (VIRTUAL ITS)
|
||||
# 199.34.53.53 du.its.os.org (VIRTUAL ITS)
|
||||
# 199.34.53.54 ??.its.os.org (VIRTUAL ITS)
|
||||
# .55 <reserved for bcast>
|
||||
#
|
||||
|
||||
# Addresses. "me" is its.joss.com
|
||||
#
|
||||
us=199.34.53.48/29
|
||||
b0=199.34.53.48
|
||||
gw=199.34.53.49
|
||||
me=199.34.53.50
|
||||
pi=199.34.53.51
|
||||
dx=199.34.53.52
|
||||
du=199.34.53.53
|
||||
qq=199.34.53.54
|
||||
b1=199.34.53.55
|
||||
|
||||
# Name of our interface to the outside world (ethernet, presumably)
|
||||
#
|
||||
oif=de0
|
||||
|
||||
###################
|
||||
|
||||
# Clean slate
|
||||
#
|
||||
$fwcmd -f flush
|
||||
|
||||
# Do not accept source routed traffic under any circumstances
|
||||
#
|
||||
$fwcmd add deny log all from any to any ipoptions ssrr,lsrr,rr
|
||||
|
||||
# Allow everything on loopback interface
|
||||
#
|
||||
$fwcmd add pass all from any to any via lo0
|
||||
|
||||
## IP rules ##
|
||||
|
||||
# Loopback addresses on non-loopback interfaces are spoofed
|
||||
#
|
||||
$fwcmd add deny log all from any to 127.0.0.0/8
|
||||
$fwcmd add deny log all from 127.0.0.0/8 to any
|
||||
|
||||
# As far as I know there is no reason for any traffic to or from
|
||||
# any kind of broadcast, class D, class E, or RFC-1597 private
|
||||
# address to appear on this subnet.
|
||||
#
|
||||
# Tuez les tous, Dieu reconnaitra les siens.
|
||||
#
|
||||
$fwcmd add deny log all from $b0 to any
|
||||
$fwcmd add deny log all from $b1 to any
|
||||
$fwcmd add deny log all from 0.0.0.0 to any
|
||||
$fwcmd add deny log all from 224.0.0.0/3 to any
|
||||
$fwcmd add deny log all from 255.255.255.255 to any
|
||||
$fwcmd add deny log all from any to $b0
|
||||
$fwcmd add deny log all from any to $b1
|
||||
$fwcmd add deny log all from any to 0.0.0.0
|
||||
$fwcmd add deny log all from any to 224.0.0.0/3
|
||||
$fwcmd add deny log all from any to 255.255.255.255
|
||||
$fwcmd add deny log all from 10.0.0.0/8 to any
|
||||
$fwcmd add deny log all from 172.16.0.0/12 to any
|
||||
#KLH $fwcmd add deny log all from 192.168.0.0/16 to any
|
||||
$fwcmd add deny log all from any to 10.0.0.0/8
|
||||
$fwcmd add deny log all from any to 172.16.0.0/12
|
||||
#KLH $fwcmd add deny log all from any to 192.168.0.0/16
|
||||
|
||||
# Don't let anybody else pretend to be this unix machine
|
||||
#
|
||||
$fwcmd add deny log all from $me to any in recv any
|
||||
|
||||
# If anybody actually figures out how to hack ITS into spoofing, we
|
||||
# probably ought to sign that person up on the spot, but just in case
|
||||
# some total loser gets lucky, let's make it a little harder for
|
||||
# spoofed packets to escape from ITS
|
||||
# Note: this also prevents a misconfigured ITS from causing trouble.
|
||||
#
|
||||
$fwcmd add deny log all from not $us to any in recv 'tun*'
|
||||
$fwcmd add deny log all from $gw to any in recv 'tun*'
|
||||
|
||||
# Last, a little protection in case our first-hop router isn't checking
|
||||
# addresses as carefully as we are. Prohibit any packets coming into
|
||||
# the interface which are from our own subnet, except for ICMPs from
|
||||
# the gateway.
|
||||
$fwcmd add pass icmp from $gw to $us recv $oif icmptypes 0,3,8,11
|
||||
$fwcmd add deny log all from $us to any in recv $oif
|
||||
$fwcmd add deny log all from any to not $us in recv $oif
|
||||
|
||||
# Add any other rules to discard known bogus addresses here
|
||||
|
||||
## TCP rules
|
||||
|
||||
# We do our TCP connection checking on setup, so just let
|
||||
# any established connection go through
|
||||
# Most TCP traffic matches this rule, so put it as early as possible
|
||||
#
|
||||
$fwcmd add pass tcp from any to any established
|
||||
|
||||
#####################
|
||||
# The intent of the following rules is:
|
||||
# The only way to access the Unix system from outside is via SSH,
|
||||
# and later SMTP after mailer is configured.
|
||||
# The only outside access to PI ITS is via TELNET/SUPDUP.
|
||||
# (Later FTP? Note ITS doesn't support PASV FTP.)
|
||||
# Nothing from outside to DU/DX (the dev ITS systems). Access has
|
||||
# to be via SSH to unix and thence to DU/DX.
|
||||
# PI cannot go anywhere, either outside or locally.
|
||||
# Unix and DU/DX can go anywhere, both outside & locally.
|
||||
|
||||
|
||||
# Access from outside - permit only these things
|
||||
# Allow TELNET/SUPDUP into PI ITS.
|
||||
# Allow SSH into the unix box. Add SMTP later after mailer is configured.
|
||||
#
|
||||
$fwcmd add pass tcp from any to $pi telnet,supdup setup
|
||||
$fwcmd add pass tcp from any to $me ssh setup
|
||||
|
||||
# Any connection initiated by the unix machine or DU, DX is okay.
|
||||
# All three have full access to all systems plus outside world.
|
||||
#
|
||||
$fwcmd add pass tcp from $me to any setup
|
||||
$fwcmd add pass tcp from $dx to any setup
|
||||
$fwcmd add pass tcp from $du to any setup
|
||||
|
||||
# Don't allow any other connections.
|
||||
#
|
||||
$fwcmd add reset log tcp from any to any setup
|
||||
|
||||
# For possible later use:
|
||||
# ITS machines are not allowed to initiate connections to the outside world
|
||||
# Anything else coming from an ITS machine is ok
|
||||
#
|
||||
# $fwcmd add reset log tcp from any to any setup out recv 'tun*' xmit $oif
|
||||
# $fwcmd add pass tcp from any to any setup recv 'tun*'
|
||||
|
||||
# KLH: what's the point of this when the next rule refuses it anyway?
|
||||
# Silently drop IDENT traffic
|
||||
# (Gee, Dr. Bernstein, let's launch a denial-of-service attack on ourselves!)
|
||||
#
|
||||
$fwcmd add reset tcp from any to any ident setup
|
||||
|
||||
# No other TCP connections allowed
|
||||
#
|
||||
$fwcmd add reset log tcp from any to any setup
|
||||
|
||||
# Please don't even think about turning on SunRPC or NFS
|
||||
#
|
||||
$fwcmd add deny log udp from any to any sunrpc,nfs
|
||||
|
||||
# Don't accept inbound syslog from the outside world
|
||||
# (no known useful purpose, so don't let bozos fill our log directory)
|
||||
#
|
||||
$fwcmd add deny log udp from any to any syslog in recv $oif
|
||||
|
||||
# We need DNS (domain) and NTP
|
||||
#
|
||||
$fwcmd add pass udp from any domain,ntp to any
|
||||
$fwcmd add pass udp from any to any domain,ntp
|
||||
|
||||
# Allow useful cases of syslog. Heck, maybe ITS should use it
|
||||
#
|
||||
$fwcmd add pass udp from $us to $us syslog
|
||||
|
||||
# Allow the useful ICMP messages:
|
||||
# Echo (types 0 & 8, for ping and traceroute)
|
||||
# Destination Unreachable (type 3)
|
||||
# Time Exceeded (type 11, primarily for traceroute)
|
||||
#
|
||||
# We should NOT accept ICMP Redirects (we're a router)
|
||||
$fwcmd add pass icmp from any to any icmptypes 0,3,8,11
|
||||
$fwcmd add deny icmp from any to any out recv $oif xmit 'tun*'
|
||||
$fwcmd add pass icmp from any to any out xmit 'tun*'
|
||||
|
||||
# Silently discard ICMP Router Discovery strobes
|
||||
#
|
||||
$fwcmd add deny icmp from any to any icmptypes 10
|
||||
|
||||
# Deny and log everything else. If this turns out to be too
|
||||
# verbose, consider adding rules to silently drop stuff that
|
||||
# we understand but don't want. Anything we don't understand
|
||||
# probably ought to be logged.
|
||||
#
|
||||
# If you don't understand it, it's dangerous.
|
||||
#
|
||||
$fwcmd add deny log all from any to any
|
||||
|
||||
9
run/ksits/pubits/adm/router.notes
Normal file
9
run/ksits/pubits/adm/router.notes
Normal file
@ -0,0 +1,9 @@
|
||||
|
||||
In order to test PI ITS configured for its future home, need to
|
||||
add explicit routing table entries:
|
||||
|
||||
On ITS.JOSS.COM:
|
||||
# route add -net 192.168.0.0 -interface 199.34.53.50
|
||||
|
||||
On other machines:
|
||||
# route add -net 199.34.53.0 -interface 192.168.0.xx (own address)
|
||||
132
run/ksits/pubits/doc/bootload.files
Normal file
132
run/ksits/pubits/doc/bootload.files
Normal file
@ -0,0 +1,132 @@
|
||||
NX .
|
||||
FREE BLOCKS #0=24927
|
||||
0 . LOGIN 1 ! 4/5/77 14:11:08
|
||||
0 @ AI-ITS 59 ! 12/17/92 17:04:48
|
||||
0 @ DDT 4 ! 5/31/89 04:59:14
|
||||
0 @ ITS 63 ! 12/17/92 17:05:37
|
||||
0 @ NSALV 13 ! 12/17/92 17:05:03
|
||||
0 @ SALV38 13 ! 6/4/92 12:32:09
|
||||
0 AIDSKD 212BIN 3 ! 3/30/86 23:36:29
|
||||
0 AIDSKD 212BT 1 ! 3/30/86 23:39:54
|
||||
0 AIITS 644BIN 52 ! 2/26/90 19:46:46
|
||||
0 AIITS 644ERR 1 ! 2/26/90 19:46:46
|
||||
0 AISALV 238ERR 1 ! 6/3/88 02:18:28
|
||||
0 AISALV 253BIN 12 ! 2/26/90 19:37:07
|
||||
0 AISALV 253ERR 1 ! 2/26/90 19:37:07
|
||||
0 AISALV 328BIN 12 ! 6/3/88 02:18:28
|
||||
0 DDT 068BIN 4 ! 7/19/92 13:53:44
|
||||
0 DSKDMP 216BIN 3 ! 7/20/92 04:35:00
|
||||
0 DSKDMP 216BT 1 ! 7/20/92 04:35:16
|
||||
0 ITS 645BIN 53 ! 7/20/92 04:34:15
|
||||
0 NSALV 260BIN 12 ! 7/20/92 04:35:29
|
||||
L SALV BIN . NSALV 260BIN
|
||||
0 TS REDRCT 3 ! 7/15/87 01:36:25
|
||||
|
||||
DDT= 774000 Start addr of DDT (DDT data can precede this)
|
||||
MACDMP= 777700 Loc of bootstrap loader (and start addr)
|
||||
MACCR= 777777 Loc of ?
|
||||
|
||||
0 @ AI-ITS 59 ! 12/17/92 17:04:48
|
||||
ITSMCH= 'AI' ITSVRS= '1644' 213000(SALV:VERSHN)/ '253'
|
||||
Has DDT, no bootstrap; start addr is BEG.
|
||||
This was the last MIT AI KS10 system.
|
||||
|
||||
0 @ DDT 4 ! 5/31/89 04:59:14
|
||||
Assembled by ALAN on 05/31/89 05:00:12
|
||||
Assembled from file AI: SYSTEM; DDT 68
|
||||
|
||||
0 @ ITS 63 ! 12/17/92 17:05:37
|
||||
ITSMCH= 'NX' ITSVRS= '1645' 213000(SALV:VERSHN)/ '260'
|
||||
Has DDT, no bootstrap; start addr is BEG.
|
||||
|
||||
0 @ NSALV 13 ! 12/17/92 17:05:03
|
||||
VERSHN/ '260'
|
||||
Has DDT, no bootstrap; start addr is DDT
|
||||
|
||||
0 @ SALV38 13 ! 6/4/92 12:32:09
|
||||
VERSHN/ '238'
|
||||
Has DDT, no bootstrap; start addr is DDT
|
||||
Assembled from SYSTEM;SALV 238, retained just in case NSALV
|
||||
someday encounters a bug that SALV doesn't have.
|
||||
|
||||
0 AIDSKD 212BIN 3 ! 3/30/86 23:36:29
|
||||
Assembled by ALAN on 03/30/86 23:37:03
|
||||
Assembled from file AI: SYSTEM; DSKDMP 212
|
||||
Retained for backup and posterity. Doesn't work on KLH10 due to
|
||||
I/O race bug.
|
||||
|
||||
0 AIDSKD 212BT 1 ! 3/30/86 23:39:54
|
||||
Assembled by ALAN on 03/30/86 23:40:20
|
||||
Assembled from file AI: SYSTEM; DSKDMP 212
|
||||
Retained for backup and posterity.
|
||||
|
||||
0 AIITS 644BIN 52 ! 2/26/90 19:46:46
|
||||
Assembled by ALAN5 on 02/26/90 19:59:44
|
||||
Assembled from file AI: SYSTEM; ITS 1644
|
||||
Last MIT AI KS10 system.
|
||||
0 AIITS 644ERR 1 ! 2/26/90 19:46:46
|
||||
|
||||
0 AISALV 238ERR 1 ! 6/3/88 02:18:28
|
||||
Retained to document @ SALV38.
|
||||
|
||||
0 AISALV 253BIN 12 ! 2/26/90 19:37:07
|
||||
Assembled by ALAN5 on 02/26/90 19:40:13
|
||||
Assembled from file AI: KSHACK; NSALV 253
|
||||
AI config, retained for additional backup to NSALV 260.
|
||||
0 AISALV 253ERR 1 ! 2/26/90 19:37:07
|
||||
|
||||
0 DDT 068BIN 4 ! 7/19/92 13:53:44
|
||||
Assembled by KLH on 07/19/92 13:54:01
|
||||
Assembled from file AI: SYSTEM; DDT 68
|
||||
|
||||
0 DSKDMP 216BIN 3 ! 7/20/92 04:35:00
|
||||
Assembled by KLH on 07/20/92 04:35:06
|
||||
Assembled from file NX: SYSTEM; DSKDMP 216
|
||||
|
||||
0 DSKDMP 216BT 1 ! 7/20/92 04:35:16
|
||||
Assembled by KLH on 07/20/92 04:35:20
|
||||
Assembled from file NX: SYSTEM; DSKDMP 216
|
||||
|
||||
0 ITS 645BIN 53 ! 7/20/92 04:34:15
|
||||
Assembled by KLH on 07/20/92 04:33:50
|
||||
Assembled from file NX: SYSTEM; ITS 1645
|
||||
|
||||
0 NSALV 260BIN 12 ! 7/20/92 04:35:29
|
||||
Assembled by KLH on 07/20/92 04:35:57
|
||||
Assembled from file NX: KSHACK; NSALV 260
|
||||
|
||||
0 TS REDRCT 3 ! 7/15/87 01:36:25
|
||||
Assembled by ALAN on 07/15/87 01:36:46
|
||||
Assembled from file AI: SYSNET; REDRCT 21
|
||||
This is a utility to manage the gateway tables
|
||||
inside the running system.
|
||||
|
||||
OLD AI snapshot files, version # listed here so as to satisfy
|
||||
any lingering curiousity about the contents.
|
||||
|
||||
All contain DDT, no DSKDMP bootstrap, and start addr of DDT except for
|
||||
ITS which starts at BEG.
|
||||
|
||||
0 @ ODDT 4 ! 1/18/87 13:42:01
|
||||
Assembled by MOON on 01/18/87 13:43:13
|
||||
Assembled from file AI: SYSTEM; DDT 51
|
||||
0 @ NSALV 13 ! 3/19/89 21:15:01 VERSHN/ '245'
|
||||
0 @ OOSALV 13 ! 3/26/86 23:30:01 VERSHN/ '211'
|
||||
0 @ OSALV 13 ! 12/1/86 00:00:00 VERSHN/ '229'
|
||||
0 @ SALV 13 ! 6/2/88 23:42:15 VERSHN/ '238'
|
||||
0 @ XSALV 13 ! 9/1/90 22:53:26 VERSHN/ '215'
|
||||
0 @ ITS 58 ! 2/5/90 03:27:50
|
||||
ITSMCH= 'AI' ITSVRS= '1643' 213000(SALV:VERSHN)/ '238'
|
||||
0 @ NITS 58 ! 2/28/90 13:05:37
|
||||
ITSMCH= 'AI' ITSVRS= '1644' 213000(SALV:VERSHN)/ '238'
|
||||
0 @ OITS 58 ! 1/25/90 20:45:27
|
||||
ITSMCH= 'AI' ITSVRS= '1633' 213000(SALV:VERSHN)/ '238'
|
||||
0 @ XITS 55 ! 9/1/90 22:53:22
|
||||
ITSMCH= 'MD' ITSVRS= '1576' 213000(SALV:VERSHN)/ '215'
|
||||
|
||||
0 KSTEST BIN 7 ! 1/22/86 23:49:52
|
||||
Assembled by JTW on 01/22/86 23:50:47
|
||||
Assembled from file MC: JTW; KSTEST 179
|
||||
This is just a standalone hack to allow invoking various
|
||||
device status or action routines with DDT and $X.
|
||||
It's not really a diagnostic program.
|
||||
823
run/ksits/pubits/doc/distrib.its
Normal file
823
run/ksits/pubits/doc/distrib.its
Normal file
@ -0,0 +1,823 @@
|
||||
ITS distribution notes:
|
||||
|
||||
Lots of random stuff in random order, some old, some new. Most of it
|
||||
was personal notes to myself, only vaguely intended for publication,
|
||||
which I never had time to clean up.
|
||||
|
||||
As you read through this stuff, you should be thinking in the back of
|
||||
your head, "How can we get all this (%*@(%!# crap to work better?"
|
||||
|
||||
Here's one suggestion.
|
||||
|
||||
Ideally there would be a single file containing all of the runtime
|
||||
site-dependent config stuff (hostname, address, params for various
|
||||
progs, etc). Can maintain numerous configs in a single directory
|
||||
called SYSCNF with a link pointing from the default of "@ DEFS" to
|
||||
to the file actually in effect, which would be SYSCNF;<machname> <ver>.
|
||||
|
||||
ITS would then check this default file on startup for its identity.
|
||||
Can also force use of a specific config file by depositing something
|
||||
with DDT in an otherwize zero location prior to startup (its machname
|
||||
for example, from which the SYSCNF file can be found). This location
|
||||
can even be known and set by the KLH10 init file!
|
||||
|
||||
|
||||
Notes on system-dependent config stuff:
|
||||
|
||||
If you are generating a NEW instance of ITS with a new name,
|
||||
there are a lot of things you have to do. Read through this
|
||||
whole section!
|
||||
|
||||
To rebuild ITS, do:
|
||||
:MIDAS SYSTEM;_ITS
|
||||
and then type the desired machine name, in UPPERCASE.
|
||||
There are a lot of undefined symbols in EVSYMS at the end;
|
||||
these can be ignored.
|
||||
|
||||
You may want to rename the resulting ITS BIN to ITS <ver><name>, eg
|
||||
:rename its bin, its 645pi
|
||||
in order to avoid clobbering it with the next assembly.
|
||||
|
||||
To get a KLH10-loadable executable from that:
|
||||
Extract it from ITS with either:
|
||||
[a] FTP it out (use image mode) to a file, eg "itsbin.645pi"
|
||||
[b] Virtual magtape (copy to MT0:, uses coredump mode)
|
||||
KLH10: devmount mta0 tapeout rw fmt=raw
|
||||
ITS: :copy system;its 645pi, mt0:
|
||||
(If get RH11 ERROR, ignore and try again)
|
||||
KLH10: devunmount mta0
|
||||
Convert to format of choice, normally U36, with one of:
|
||||
FTP: ./wfconv -fu < itsbin.645pi > itsbin.645pi-u
|
||||
Tape: ./wfconv -cu < tapeout.tpr > itsbin.645pi-u
|
||||
In a fresh KLH10, no config needed:
|
||||
./kn10-ks /dev/null
|
||||
load @.ddt-u
|
||||
load @.nsalv-260-u
|
||||
load itsbin.645pi-u
|
||||
dump @.its-645pi-u
|
||||
quit
|
||||
Thereafter you can just load @.its-whatever and go.
|
||||
|
||||
|
||||
NEW SYSTEM
|
||||
==========
|
||||
|
||||
Things that must be edited for each new ITS system/machine.
|
||||
|
||||
ITS MACHINE NAME:
|
||||
Pick a good one.
|
||||
Historically all ITS machine names have been exactly two characters.
|
||||
Someday we may have a list of just what things actually depend on
|
||||
this or some other limit, as well as whether digits are permitted.
|
||||
@DEV - requires 2 characters for other ITSes.
|
||||
MLDEV - requires 2 characters for other ITSes.
|
||||
LISP - requires 3 characters due to CAIE checks. Code could
|
||||
easily be fixed for 6.
|
||||
|
||||
Build new ITS
|
||||
-------------
|
||||
Modify these files and then rebuild ITS per above instructions.
|
||||
|
||||
SET NAME:
|
||||
The ITS machine name, two characters.
|
||||
SYSTEM;CONFIG > - define chunk of params for each name.
|
||||
SYSTEM;ITS > - add to comment at start? Not really needed.
|
||||
|
||||
SET NET ADDRESS:
|
||||
SYSTEM;CONFIG >
|
||||
IMPUS3 - the IP address.
|
||||
NM%IMP - Subnet mask for IMPUS3.
|
||||
IMPUS - old IMP address. Set it to low-order byte of IMPUS3
|
||||
to avoid breaking any old semi-working stuff..
|
||||
TTY TABLE:
|
||||
SYSTEM;TTYTYP >
|
||||
Machine-name conditionalized; must have machine-specific
|
||||
entries for hard-wired terminal lines.
|
||||
|
||||
|
||||
Build user config files and programs
|
||||
------------------------------------
|
||||
|
||||
HOSTNAME: Very important -- COMSAT and other things will break if
|
||||
they can't find their own system name in the host tables!
|
||||
|
||||
First edit this file to add hostname(s):
|
||||
SYSHST;H3TEXT >
|
||||
Although this used to be dynamically generated, it must now
|
||||
be done by hand.
|
||||
Then run:
|
||||
SYSHST;H3MAKE BIN
|
||||
which snarfs up H3TEXT and compiles it into SYSBIN;HOSTS3 >.
|
||||
This can take quite a while depending on how large H3TEXT is.
|
||||
|
||||
TELSER: SYSNET;TELSER >
|
||||
TELSER has hard-coded greeting messages based on hostname. If
|
||||
it doesn't recognize its own hostname, it uses "Unknown ITS PDP-10".
|
||||
This can be modified if desired (just before TCPOL:) for hack value.
|
||||
:MIDAS SYSBIN;_SYSNET;TELSER
|
||||
|
||||
MLDEV: SYSEN2:MLDEV >
|
||||
There are two places in this program which have a hardcoded list
|
||||
of ITS machines. The name of the new ITS must be added here
|
||||
if you wish to use the MLDEV device to access the filesystems
|
||||
of other machines.
|
||||
These names must exist in HOSTS3 as it uses NETWRK"HSTLOOK to find
|
||||
the corresponding IP addresses.
|
||||
Also set DEVICE;JOBDEV <name> symlinked to DEVICE;ATSIGN MLDEV.
|
||||
|
||||
MLDEV/MLSLV and known job devices in general:
|
||||
The maximum size of a device name is 6 SIXBIT characters, although
|
||||
very old programs sometimes assume 3.
|
||||
Whenever a program uses a device name that ITS doesn't have
|
||||
built in, the system runs the "unknown device handler"
|
||||
which is SYS;ATSIGN DEVICE (source SYSENG;@DEV >).
|
||||
(Note the binary is a SBLK file -- it exists too briefly)
|
||||
It then processes this device name as follows:
|
||||
If "<" or ">" - Returns "No such device" error.
|
||||
If DSK:DEVICE;JOBDEV <dev> exists - loads and starts that program.
|
||||
This overrides all the rest of this stuff and is the
|
||||
preferable way of configuring things.
|
||||
Otherwise @DEV goes through a lot of trouble to figure out a plausible
|
||||
interpretation of the device name, using a semi-built-in table of
|
||||
known "foreign filesystems" and DIR device names, that it checks to
|
||||
map the device into one of four possible devices:
|
||||
DSK:DEVICE;ATSIGN DIRDEV - SYSENG;DIRDEV >
|
||||
DSK:DEVICE;ATSIGN MLDEV - SYSEN2;MLDEV >
|
||||
DSK:DEVICE;ATSIGN R.I.P. - SYSEN2;RIPDEV >
|
||||
DSK:DEVICE;ATSIGN RMTDEV - GZ;RMTDEV >
|
||||
(All are or should be PDUMPed binaries)
|
||||
These tables are checked as follows:
|
||||
If either table contains an exact match, use that.
|
||||
Else if the first 2 chars of the name match something in the foreign
|
||||
filesys table (here's one 2-char dependency!), it tries
|
||||
DEVICE;JOBDEV <ffsys>, then DEVICE;ATSIGN MLDEV.
|
||||
The foreign system will presumably interpret the rest of
|
||||
the device name (typically DIR or ARC, etc).
|
||||
The other table is mostly DIR<foo> where <foo> is one of
|
||||
<ffsys>,DSK,SYS,COM,DIR,DNR.
|
||||
If there's still no match, it checks for a secondary pack name
|
||||
using a table of machine names (AI and MX for now) and
|
||||
a subtable of pack names for each. This seems to be only
|
||||
for the purpose of returning a "Pack not mounted" error
|
||||
if the pack is known to normally exist, as opposed to
|
||||
a "no such device" error.
|
||||
If still no match, it checks the last letter -- if it's a digit,
|
||||
it strips it off and starts all over again.
|
||||
FINALLY, it checks to see whether the request is to open the
|
||||
directory of a known non-directory device (ie if the
|
||||
FN1 and FN2 are ".FILE. (DIR)") and cobbles together
|
||||
a simple reply if so. The known devices for this hack are:
|
||||
lpt,ptr,ptp,plt,cod,dis,nvd,pdp,tab,stk
|
||||
|
||||
MLDEV, when invoked, checks its real device name and performs
|
||||
some additional munching. It knows about a list of
|
||||
ITS systems, and for each <ff> in the list:
|
||||
X<ff> is transformed into <ff>.
|
||||
DIR<ff> is transformed into <ff>DIR (for consistency?)
|
||||
The 1st 2 chars (another dependency!) are then checked
|
||||
and if they match a <ff>, that system is contacted.
|
||||
<ff> list: AI ML DM MC MX MD KL KS
|
||||
If there's no match to any of these, then MLDEV tries one
|
||||
more table before giving up. If the full device name is
|
||||
one of the following, it substitutes a <ff>dev:
|
||||
XGP => AIXGP
|
||||
GLP => MXGLP
|
||||
DVR => MCDVR
|
||||
DVS => MCDVS
|
||||
TPL => MLTPL
|
||||
Otherwise, it returns "no such device". This means no
|
||||
foreign filesystem can be contacted unless it IS IN
|
||||
THE HARDWIRED TABLE of MLDEV!
|
||||
If <ff> is known, then it uses NETWRK"HSTLOOK to find the
|
||||
IP address and proceeds to make a connection.
|
||||
|
||||
OTHER:
|
||||
Various programs automatically re-init and PDUMP themselves out when
|
||||
they detect that the machine name or system version has changed
|
||||
since the last binary was created. Among these are:
|
||||
SYS;TS NAME
|
||||
SYS;TS PEEK
|
||||
SYS;TS PROBE
|
||||
SYS1;TS METER
|
||||
SYS1;TS PRUFD
|
||||
SYS1;TS SYSMSG
|
||||
SYS2;TS XXFILE
|
||||
SYSBIN;FIDO BIN
|
||||
|
||||
Other programs that don't automatically repurify themselves, but need to
|
||||
be invoked properly after assembling:
|
||||
SYS;TS MIDAS (sblk orig in SYSBIN;MIDAS *BIN, start at PURIFY)
|
||||
.MAIL.;COMSAT LAUNCH (orig in SYSNET;COMSAT BIN, start at PURIFY)
|
||||
|
||||
|
||||
DUMP remembers the name of the machine it was assembled on, and
|
||||
complains if the current system isn't it. Just rebuild.
|
||||
This can be bypassed by setting variable WRONG back to zero
|
||||
after it's started up.
|
||||
DUMP needs SYSENG;FSDEFS > and SYSNET;NETWRK > to assemble.
|
||||
DUMP hacks the file SYSENG;MACRO TAPES.
|
||||
Also hacks .TAPE0; etc??
|
||||
|
||||
FTPS is patched so it doesn't try (and fail) to look up its own host name.
|
||||
MAINIT+25/ MOVEI A,[ASCIZ /MIT-NX.US.ORACLE.COM/] ? NOP
|
||||
|
||||
Patched in SYSBIN;FTPS BIN.
|
||||
Original binary in SYSBIN;FTPS ORGBIN.
|
||||
|
||||
This patch is unnecessary if the NETWRK hostname lookup software
|
||||
is working (see HOSTS3 below), but the NETHST syscall is buggy
|
||||
cuz it returns the value of IMPUS, not IMPUS3. Before fixing this,
|
||||
have to be sure nothing else will break! Sigh!
|
||||
|
||||
SYS;NET MAIL - Telnet/supdup server announcement.
|
||||
Revised for NX, original in NET OMAIL.
|
||||
Note: there is a long-standing bug in the TELSER/STY interaction such
|
||||
that the initial %TDORS for a supdup connection happens halfway through
|
||||
a longish greeting message (NET MAIL) and wipes the rest out after
|
||||
the 105th char. Note 23 chars in machine greeting, plus a CRLF
|
||||
or so, to make 130 chars. This may be STY buffer size?
|
||||
|
||||
SYS;SYSTEM MAIL - universal DDT startup announcement, if any.
|
||||
Flushed, original in SYSTEM OMAIL.
|
||||
|
||||
SYS;RECORD TIME - Checked & updated to see how long ITS has run.
|
||||
|
||||
Various programs that check machine name specially:
|
||||
DUMP (as noted above)
|
||||
SYSEN1;PWORD - has table of per-machine specs
|
||||
INQUIR;INQUIR - similar check
|
||||
MACLSP - tries to map predefined atom or something, at UDIRSE.
|
||||
Checks for AI,ML,MC,MD,MX.
|
||||
MLDEV - checks for known machines using 2-char assumption.
|
||||
SYSNET;TELSER - Checks machine name to select greeting header.
|
||||
SYSEN1;SENDER - Checks machine name to see if sending to a known ITS
|
||||
or not. (Doesn't bother to use host table to check sys type!)
|
||||
|
||||
ITS edits or patches:
|
||||
|
||||
See also "modlog" which may have more details.
|
||||
|
||||
FIXED in SYSTEM;ITS 1646
|
||||
Quantum timer patch:
|
||||
This is an ITS bug that skews the quantum counter timing.
|
||||
UTRNTR+2/ LDB A, [
|
||||
125603/ SETZ Q,UPQUAN(U) 044000,,UPQUAN(u)
|
||||
]
|
||||
FIXED in SYSTEM;IMP 367
|
||||
NETHST patch:
|
||||
ANETH2+3/ MOVE B,NIFIPA (from MOVEI B,IMPUS)
|
||||
|
||||
Not a bugfix, just a crude firewall patch:
|
||||
TCPO4+23/ JRST OPNL6 (from CALL PKTGFI)
|
||||
(prevents outbound TCP opens)
|
||||
|
||||
|
||||
FIXED in SYSTEM;TIME 951
|
||||
Y2K patch. Replace:
|
||||
CLCQDT+2/
|
||||
PUSH P,E-1
|
||||
PUSH P,E
|
||||
MOVE E-1,FYEAR
|
||||
IDIVI E-1,100.
|
||||
DPB E,[330700,,QDATE] ;YEAR
|
||||
POP P,E
|
||||
POP P,E-1
|
||||
with:
|
||||
PUSH P,E
|
||||
MOVE E,FYEAR
|
||||
SUBI E,1900.
|
||||
DPB E,[331000,,QDATE] ;YEAR
|
||||
POP P,E
|
||||
|
||||
NSALV bug:
|
||||
This code in NSALV (part of the INIT startup) is sorta buggy
|
||||
in that when NDRIVE is 1 it is asking for a reverse BLT...
|
||||
|
||||
SETOM DRIVE ;For now, assume all drives on-line.
|
||||
MOVE A,[DRIVE,,DRIVE+1]
|
||||
BLT A,DRIVE+NDRIVE-1
|
||||
|
||||
DSKDMP bug:
|
||||
I forget where this is but am making a note so I remember to
|
||||
someday come back and document it.
|
||||
There is a race condition on booting where DSKDMP initiates a
|
||||
disk transfer that clobbers the code it is about to execute
|
||||
next. It works on a real machine because the CPU is much
|
||||
faster than the disk.
|
||||
Patched, but not really needed now that KLH10 can load ITS directly.
|
||||
|
||||
|
||||
DIRECTORY STATUS
|
||||
================
|
||||
(NNF = No New Files since final AI/MC snapshot)
|
||||
|
||||
OK . - Boot load files. See "bootload.files" for more info.
|
||||
Most of old AI stuff flushed as useless.
|
||||
OK .INFO. - NNF, restore all
|
||||
OK .MAIL. - Empty, must fill for COMSAT (and flush old useless files)
|
||||
OK .MSGS. - Empty, old msgs all obsolete & discarded.
|
||||
OK .TAPE0 - Empty is OK; contains some gubbish from KLH dumps.
|
||||
OK .TECO. - NNF, restore all
|
||||
OK .TEMP. - NNF, restore all (empty except for a -READ- -THIS- file)
|
||||
|
||||
? C - only partially restored
|
||||
OK CHANNA - NNF, Restore all
|
||||
OK CRASH - Empty. Note COMSAT crashes will leave a BURNUP file here,
|
||||
and each use of CRTSTY adds one line to CRTSTY LOG.
|
||||
OK DEVICE - NNF, Restore all (but not all are needed)
|
||||
However, file CHAOS HOST# isn't present in Alan's snapshot.
|
||||
OK DRAGON - NNF, Restore (but not all are needed; lots of junk!)
|
||||
OK EMACS - NNF, Restore all
|
||||
OK GREN - PERSONAL, NX-only. Flushed from distrib.
|
||||
? HACK - New, retain for NX, not needed for distrib
|
||||
(but update or remove messages)
|
||||
OK INFO - NNF, Restore all
|
||||
OK INQUIR - NNF, Restore all
|
||||
OK JLV - PERSONAL, NX-only. Flushed from distrib.
|
||||
OK KLH - PERSONAL, NX-only, but may be a few sources that need
|
||||
to be included for distrib: OUT,NUUOS,OUTDOC,MACROS.
|
||||
Move to KSC.
|
||||
(problem; need to update .INSRTs of other progs?)
|
||||
OK KSC - NNF, restore all.
|
||||
? KSHACK - Mostly new files. Perhaps restore others?
|
||||
Note the DEC ucode source is proprietary; exclude it?
|
||||
OK LISP - NNF, Restore all (needed for INQUIR, sigh)
|
||||
OK MAINT - NNF, Restore all
|
||||
This contains DEC diagnostic binaries but leave it for now.
|
||||
OK MIDAS - NNF except for bugfix: TSRTNS 234
|
||||
OK MRC - PERSONAL, NX-only. Flushed from distrib.
|
||||
OK SYS - Mostly NNF, restore all. Lots of possibly superfluous
|
||||
large PURQIO files, ugh. But don't know which progs might
|
||||
use which of them...
|
||||
OK SYS1 - NNF, Restore all
|
||||
OK SYS2 - NNF, Restore all
|
||||
OK SYS3 - NNF, Restore all
|
||||
OK SYSBIN - Mostly NNF, restore. Lots of OBINs that could flush.
|
||||
OK SYSDOC - NNF, restore all
|
||||
OK SYSEN1 - NNF, restore all
|
||||
OK SYSEN2 - NNF, restore all
|
||||
OK SYSENG - NNF, restore all except for MACRO TAPES (site-specific)
|
||||
OK SYSHST - Mostly NNF, restore all (new versions of H3TEXT).
|
||||
OK SYSNET - Mostly NNF, restore all (new version of TELSER).
|
||||
OK SYSTEM - Several new files; should clean out old versions.
|
||||
|
||||
FILE UPDATES AND CHANGES:
|
||||
========================
|
||||
|
||||
This list contains all files added or modified since NX first came up
|
||||
from the original AI/MC snapshot, with descriptive notes. It does NOT
|
||||
contain links; many links have a creation time postdating this but
|
||||
they are almost certainly artifacts of the way link restoral was done.
|
||||
|
||||
See "nxmodfiles" for a complete list of all files or links that
|
||||
postdate the creation of NX.
|
||||
|
||||
NX:C;
|
||||
NX:CHANNA;
|
||||
NX:CRASH;
|
||||
0 CRTSTY LOG 0 +333 ! 9/24/99 18:46:17 (9/24/99) KLH
|
||||
NX:DEVICE;
|
||||
NX:DRAGON;
|
||||
0 DRAGON HOARD 4 +90 ! 6/11/92 02:56:32 (15/31/127) -??-
|
||||
0 RAKASH PFTHMG 4 +578 ! 6/11/92 02:56:32 (10/23/99) -??-
|
||||
NX:EMACS;
|
||||
NX:GREN;
|
||||
0 GREN LOGIN 0 +489 ! 7/23/93 18:50:26 (8/17/93)
|
||||
0 GREN OSENDS 0 +44 ! 7/23/93 18:55:38 (7/23/93)
|
||||
0 GREN PLAN 0 +8 ! 7/29/93 12:10:33 (8/17/93)
|
||||
NX:HACK;
|
||||
0 KLH10 MSG 3 +157 ! 11/8/92 01:46:07 (11/10/92) -??-
|
||||
0 KLH10 NEWS 0 +660 ! 5/25/93 15:52:15 (5/25/93) KLH
|
||||
0 NX NEWS 0 +275 ! 5/3/93 14:24:31 (7/22/93) KLH
|
||||
NX:INFO;
|
||||
NX:INQUIR;
|
||||
NX:KLH;
|
||||
0 COM INFO 0 +229 ! 1/29/93 00:31:09 (5/20/93)
|
||||
0 CONFIG 1 7 +1 ! 11/7/92 13:41:12 (9/24/99) -??-
|
||||
0 CONFIG 2 7 +1 ! 9/24/99 04:04:03 (9/24/99)
|
||||
0 CONFIG 3 6+1016 ! 9/24/99 04:07:38 (9/24/99)
|
||||
0 DDT NBIN 3 +458 ! 1/5/93 17:15:15 (5/20/93)
|
||||
0 DDT NEW 3 +449 ! 1/5/93 17:08:04 (5/20/93)
|
||||
0 DDT TORIG 3 +458 ! 1/5/93 17:08:45 (4/5/93)
|
||||
0 FIRST EMACS 0 +3 ! 11/8/92 01:29:21 (10/3/99)
|
||||
0 ITS BIN 56 +346 ! 10/28/93 11:35:05 (10/28/93)
|
||||
0 KLH MAIL 1 +86 ! 7/23/93 18:45:00 (10/24/99) .MAIL.
|
||||
0 KLH10 ARCHIV 0 +866 ! 5/25/93 16:00:15 (10/3/99) .MAIL.
|
||||
0 KLH10 PEOPLE 0 +384 ! 8/5/93 12:29:21 (8/23/93)
|
||||
0 MAIL FRMHQM 0 +22 ! 11/9/92 20:42:04 (5/20/93) -??-
|
||||
0 TEMP FILE 0 +13 ! 7/19/92 10:40:14 (11/8/92)
|
||||
0 WALL 1 5 +152 ! 12/23/92 15:09:31 (12/23/92)
|
||||
0 WALL 2 0 ! 1/14/93 00:44:45 (1/14/93)
|
||||
0 WALL 3 8 +15 ! 1/14/93 00:54:11 (1/14/93)
|
||||
0 WALL 4 8 +15 ! 1/14/93 03:41:59 (1/14/93)
|
||||
0 WALL 5 0 +133 ! 1/16/93 06:13:50 (1/16/93)
|
||||
0 WALL 6 7 +992 ! 1/16/93 06:16:51 (1/16/93)
|
||||
0 WALL 7 7 +992 ! 1/16/93 06:43:49 (1/16/93)
|
||||
0 XLINKS 1 2 +12 ! 11/8/92 01:20:54 (12/9/92) -??-
|
||||
0 _FTPU_ OUTPUT 0 ! 1/28/93 17:58:51 (1/28/93)
|
||||
|
||||
NX:KSC;
|
||||
TS ZOTZ - New, just a ZOTZ BIN patched for 50K (not 500K) loop count
|
||||
0 TS ZOTZ 3 +317 ! 12/16/92 16:51:33 (9/24/99) KLH
|
||||
NX:KSHACK;
|
||||
0 NSALV BIN 11 +437 ! 7/20/92 04:35:29 (7/20/92) KLH
|
||||
0 NXBOOT ALLFS 0 +22 ! 1/16/93 06:16:18 (4/9/93) KLH
|
||||
0 NXBOOT FILES 0 +42 ! 1/16/93 06:11:07 (4/9/93) KLH
|
||||
NX:MAINT;
|
||||
|
||||
NX:MIDAS;
|
||||
0 TS NMIDAS 22 +357 ! 6/23/92 15:10:28 (4/9/93) -??-
|
||||
0 TSRTNS 234 27 +612 ! 6/23/92 17:23:37 (4/9/93) -??-
|
||||
|
||||
NX:MRC;
|
||||
|
||||
NX:SYS;
|
||||
NET MAIL - Telnet/supdup server announcement. Revised for NX,
|
||||
original in NET OMAIL.
|
||||
:MSGS TIMES - Used by DDT's :MSGS command to remember the last
|
||||
time each user invoked it; data file of uname/datim pairs.
|
||||
TS MIDAS - New, version 458. Old version (433) renamed to TS OMIDAS.
|
||||
0 :MSGS TIMES 4 ! 10/24/99 01:53:05 (10/24/99) KLH
|
||||
0 NET MAIL 0 +16 ! 5/3/93 14:28:10 (10/24/99) KLH
|
||||
0 RECORD TIME 0 ! 6/19/92 17:19:49 (9/24/99) KLH
|
||||
0 TS MIDAS 22 +357 ! 4/9/93 21:36:42 (9/24/99) KLH
|
||||
0 TS NAME 16 +108 ! 4/15/93 19:07:13 (10/3/99) KLH
|
||||
0 TS PEEK 14 +726 ! 4/7/93 19:03:07 (10/24/99) KLH
|
||||
0 TS PROBE 7 +8 ! 7/23/93 18:54:38 (7/23/93) GREN
|
||||
NX:SYS1;
|
||||
0 TS METER 3 +398 ! 5/19/93 19:12:17 (5/20/93) MRC
|
||||
0 TS PRUFD 0 +506 ! 4/6/93 17:23:25 (4/6/93) KLH
|
||||
0 TS SYSMSG 2 +568 ! 6/7/93 13:04:43 (6/21/93) KLH
|
||||
NX:SYS2;
|
||||
0 TS XXFILE 5 +982 ! 4/5/93 19:59:23 (4/5/93) KLH
|
||||
NX:SYS3;
|
||||
|
||||
NX:SYSBIN;
|
||||
FTPS BIN Patched with new IP address; orig is FTPS ORGBIN.
|
||||
MIDAS 458BIN New version, latest.
|
||||
0 FIDO BIN 3 +430 ! 5/11/93 13:39:52 (5/11/93) KLH
|
||||
0 FTPS BIN 10 +367 ! 11/7/92 13:40:41 (5/19/93) KLH
|
||||
0 HOSTS3 2002 68 +757 ! 5/19/93 12:51:50 (10/24/99) KLH
|
||||
0 MIDAS 458BIN 17 +108 ! 4/9/93 21:26:11 (4/9/93) KLH
|
||||
0 TELSER BIN 3 +87 ! 5/3/93 13:53:46 (10/24/99) KLH
|
||||
New version (TELSER 173) with NX greeting.
|
||||
Old file renamed to TELSER AIBIN.
|
||||
|
||||
NX:SYSDOC;
|
||||
NX:SYSEN1;
|
||||
NX:SYSEN2;
|
||||
|
||||
NX:SYSENG;
|
||||
Must flush this site-specific weirdo; it will conflict with version
|
||||
from dump! DUMP maintains this as a directory of all macro tapes
|
||||
written on the system.
|
||||
0 MACRO TAPES 40 ! 3/1/93 21:43:22
|
||||
0 MACRO TAPES 39 +64 ! 9/24/99 04:32:12 (9/24/99) KLH
|
||||
|
||||
NX:SYSHST;
|
||||
New versions of H3TEXT >.
|
||||
0 H3TEXT 2000 82 +412 ! 5/17/93 18:36:38 (5/17/93) -??-
|
||||
0 H3TEXT 2002 74 +35 ! 5/17/93 19:33:08 (5/19/93) KLH
|
||||
|
||||
NX:SYSNET;
|
||||
0 TELSER 173 7 +886 ! 5/3/93 13:53:31 (5/3/93) KLH
|
||||
New version with NX greeting.
|
||||
|
||||
NX:SYSTEM;
|
||||
Several new files; should clean out old versions.
|
||||
0 CHAOS 289 16 +328 ! 7/19/92 09:31:21 (7/19/92) KLH
|
||||
0 CONFIG 197 6+1008 ! 7/19/92 11:00:02 (9/24/99) KLH
|
||||
0 CONFIG 198 6+1016 ! 9/24/99 04:07:38 (9/24/99) KLH
|
||||
0 DDT BIN 3 +671 ! 7/19/92 13:53:44 (7/19/92) KLH
|
||||
0 DSKDMP 216 9 +809 ! 7/19/92 13:56:53 (4/21/93) KLH
|
||||
0 DSKDMP BIN 2 +296 ! 7/20/92 04:35:00 (7/20/92) KLH
|
||||
0 DSKDMP BT 0 +885 ! 7/20/92 04:35:16 (7/20/92) KLH
|
||||
0 IMP 366 6 +216 ! 7/20/92 04:20:41 (9/24/99) KLH
|
||||
0 INET 139 9 +838 ! 7/20/92 04:58:30 (9/24/99) KLH
|
||||
0 ITS 1645 118 +583 ! 7/19/92 06:12:26 (9/24/99) KLH
|
||||
0 ITS 645BIN 56 +345 ! 7/20/92 04:30:13 (11/23/92) KLH
|
||||
0 ITS 645NX 56 +346 ! 9/24/99 04:09:48 (9/24/99) KLH
|
||||
0 ITS BIN 56 +346 ! 9/24/99 19:00:59 (9/24/99) KLH
|
||||
0 ITS OBIN 56 +345 ! 1/28/93 00:16:44 (1/28/93) KLH
|
||||
0 NET 33 2 +725 ! 7/19/92 06:06:21 (9/24/99) KLH
|
||||
0 TM03S DEFS5 1 +65 ! 7/20/92 04:23:56 (9/24/99) KLH
|
||||
0 TTYTYP 315 3 +69 ! 7/19/92 11:45:53 (9/24/99) KLH
|
||||
|
||||
NX:.;
|
||||
0 @ AI-ITS 58 +29 ! 12/17/92 17:04:48 (4/9/93) -??-
|
||||
0 @ ITS 62 +464 ! 12/17/92 17:05:37 (1/14/93) -??-
|
||||
0 @ NSALV 12 +675 ! 12/17/92 17:05:03 (4/19/93) -??-
|
||||
0 @ SALV38 12 +540 ! 6/4/92 12:32:09 (1/14/93) -??-
|
||||
0 DDT 068BIN 3 +671 ! 7/19/92 13:53:44 (4/9/93) -??-
|
||||
0 DSKDMP 216BIN 2 +296 ! 7/20/92 04:35:00 (4/9/93) -??-
|
||||
0 DSKDMP 216BT 0 +885 ! 7/20/92 04:35:16 (4/9/93) -??-
|
||||
0 ITS 645BIN 52 +240 ! 7/20/92 04:34:15 (4/9/93) -??-
|
||||
0 NSALV 260BIN 11 +437 ! 7/20/92 04:35:29 (4/19/93) -??-
|
||||
NX:.INFO.;
|
||||
|
||||
NX:.MAIL.;
|
||||
Empty until COMSAT launched for first time.
|
||||
Most of the old files were useless, but some saved
|
||||
for posterity.
|
||||
0 ID 14 0 ! 5/19/93 18:45:58 (7/23/93) KLH
|
||||
0 LIST EQV 2 +191 ! 5/24/93 15:58:39 (7/23/93)
|
||||
0 LIST QUEUE 0 +203 ! 5/24/93 15:58:39 (5/24/93)
|
||||
0 LIST MASTER 0 +203 ! 5/24/93 15:58:39 (8/20/93)
|
||||
0 LIST REMIND 0 +201 ! 5/19/93 18:45:58 (5/24/93) KLH
|
||||
0 LISTS MSGS 0 ! 5/19/93 18:45:58 (5/24/93) KLH
|
||||
0 COMSAT LAUNCH 32 +463 ! 5/19/93 18:45:44 (10/23/99) KLH
|
||||
0 NAMED ERR000 0 +8 ! 5/19/93 18:46:00 (5/19/93) KLH
|
||||
0 NAMED ERR001 0 +8 ! 5/24/93 15:58:39 (5/24/93)
|
||||
0 NAMES 2000 1 +32 ! 5/19/93 17:03:19 (5/24/93) KLH
|
||||
0 NAMES 2001 1 +59 ! 5/24/93 15:56:18 (8/20/93) KLH
|
||||
0 STATS 1 1 +738 ! 10/23/99 00:29:02 (10/23/99) -??-
|
||||
0 XLIST EQV 2 +137 ! 5/19/93 17:04:49 (5/19/93) KLH
|
||||
0 XLIST MSGS 0 +201 ! 5/19/93 17:07:49 (5/19/93)
|
||||
0 XLIST QUEUE 0 +201 ! 5/19/93 17:23:04 (5/19/93) KLH
|
||||
0 XLIST MASTER 0 +203 ! 5/19/93 17:23:04 (5/19/93) KLH
|
||||
0 XLIST REMIND 0 +201 ! 5/19/93 17:04:47 (5/19/93) KLH
|
||||
0 XNAMED ERR064 0 +9 ! 5/19/93 16:13:18 (5/19/93) KLH
|
||||
0 XNAMED ERR065 0 +9 ! 5/19/93 17:04:49 (5/19/93) KLH
|
||||
L XNAMES 1062 .MAIL.;NAMES 1062 5/17/93 14:55:27 (5/17/93) KLH
|
||||
0 XNAMES 1064 0 +391 ! 5/17/93 16:53:36 (5/19/93) KLH
|
||||
0 XNAMES 1065 1 +32 ! 5/19/93 17:03:19 (5/19/93) KLH
|
||||
0 XSTATS 1 3 +166 ! 5/19/93 18:31:57 (5/19/93) KLH
|
||||
NX:.TAPE0;
|
||||
L LAST USE KLH;LIST 990924 9/24/99 04:32:19 (9/24/99) KLH
|
||||
0 TAPE 0 0 +46 ! 9/24/99 04:32:13 (9/24/99) KLH
|
||||
0 TAPE 1 0 +10 ! 4/19/93 18:47:27 (4/19/93) -??-
|
||||
0 TAPE 2 3 +687 ! 4/19/93 18:35:28 (4/19/93) -??-
|
||||
0 TAPE 3 0 +484 ! 4/21/93 21:07:36 (4/21/93) -??-
|
||||
NX:.TECO.;
|
||||
NX:.TEMP.;
|
||||
|
||||
Note fucking DUMP gubbish to do FS save/restore properly:
|
||||
|
||||
To save stuff, use:
|
||||
DUMP FULL LINKS
|
||||
|
||||
To restore stuff, use:
|
||||
RELOAD LINKS CRDIR SORRY ???
|
||||
(Don't use LOAD, use RELOAD!!!)
|
||||
|
||||
Fucking DUMP also appears to lose when loading up a new dir when the
|
||||
first file is a link, even if the CRDIR option is set!!!
|
||||
Need to create the dir by hand, then continue.
|
||||
|
||||
|
||||
Idea for new DUMP format to preserve stuff better:
|
||||
|
||||
Extend file header to 9 words.
|
||||
Move Dump-check and don't-reap bits to LH of link,,pack#
|
||||
Add sixbit author name at end.
|
||||
|
||||
Must modify:
|
||||
NSALV - to handle bits and potentially convert author to index.
|
||||
Potentially store MFD if found, use to generate new
|
||||
UFDs as needed.
|
||||
DUMP - to output and read in extended format.
|
||||
ITS - add new syscall to read/write bytesize and file length?
|
||||
RFSIZE, SFSIZE arg1 - bytesize, arg2 - # bytes
|
||||
|
||||
For SFSIZE, # bytes must be within last word or at start of
|
||||
next, else error.
|
||||
if (BS <= 0 || 36 < BS) error;
|
||||
BPW = 36/BS;
|
||||
if (((# + BPW-1) / BPW) != FILLEN) error;
|
||||
|
||||
|
||||
Date: Wed, 21 Apr 93 19:10:33 -0400
|
||||
From: Alan Bawden <Alan@lcs.mit.edu>
|
||||
To: klh@us
|
||||
Subject: ITS Turist Tips
|
||||
|
||||
Date: Wed, 21 Apr 1993 9:34:08 BST
|
||||
From: Ken Harrenstien <klh@us.oracle.com>
|
||||
Sure, but why not run it? The statistics are sometimes interesting.
|
||||
Also PFTHMG runs hourly, daily, monthly and yearly batch jobs, which
|
||||
is a useful service in general...
|
||||
|
||||
I guess. Now you have to explain what those various batch jobs are
|
||||
doing there...
|
||||
|
||||
Let's see... (Wow, there seem to be more of these than I remember!)
|
||||
On AI, hourly we have:
|
||||
|
||||
DRAGON;HOURLY CNAVRL ==> .MAIL.;COMSAT LAUNCH
|
||||
|
||||
Just makes sure COMSAT doesn't stay dead for long.
|
||||
|
||||
DRAGON;HOURLY GCMAIL
|
||||
|
||||
This is something SRA wrote to garbage collect files from the .MAIL.
|
||||
directory. I don't remember exactly what it does -- perhaps it deletes
|
||||
OSTATS files that are older than a few days or something. I do remember
|
||||
that there was some disagreement about how aggressive this should be.
|
||||
Penny didn't want it as aggressive as SRA did. Penny won.
|
||||
|
||||
DRAGON;HOURLY H3GET
|
||||
|
||||
This is something I wrote that keeps the host tables on all the ITS
|
||||
machines in sync. It checks the host tables on other ITS machines, and if
|
||||
it finds one that is newer than the local copy, it sucks it over.
|
||||
|
||||
DRAGON;HOURLY MODEMS ==> CHANNA;TS MODEMS
|
||||
|
||||
This does the same thing as CHANNA;RAKASH MODEMS, this way the damn things
|
||||
only stay broken for at most an hour.
|
||||
|
||||
DRAGON;HOURLY TMPKIL ==> SYS2;TS TMPKIL
|
||||
|
||||
I think this has something to do with cleaning up the files on .TEMP. -- I
|
||||
don't know its algorithm.
|
||||
|
||||
DRAGON;HOURLY UPTIME ==> BAWDEN;UPTIME BIN
|
||||
|
||||
This is just a little personal hack I wrote to keep track of system uptime.
|
||||
It just stores the current system uptime in the creation date of some file
|
||||
on my directory.
|
||||
|
||||
Then every night soon after midnight we run:
|
||||
|
||||
DRAGON;DAILY BDAY
|
||||
|
||||
This mails out the daily birthday greetings mail.
|
||||
|
||||
DRAGON;DAILY EXPIRE ==> SYS2;TS GMSGS
|
||||
|
||||
This cleans out the expired system messages on .MSGS..
|
||||
|
||||
DRAGON;DAILY NO.TS
|
||||
|
||||
This searches for files named GUEST*;TS * and USER*;TS * and deletes them.
|
||||
(People sharing a directory shouldn't create TS files for each other to
|
||||
trip over by accident.)
|
||||
|
||||
On the first of the month, and the first of the year we run:
|
||||
|
||||
DRAGON;MNTHLY MNTHLY ==> DRAGON;YEARLY YEARLY
|
||||
DRAGON;YEARLY YEARLY
|
||||
|
||||
This just sends mail to Alan to let him know that Puff has actually run the
|
||||
monthly and yearly batch jobs, even though normally these are the only
|
||||
entries.
|
||||
|
||||
On MC, we also have HOURLY DIGEST, which is the mailing list digestifier
|
||||
(and maybe some others I don't remember).
|
||||
|
||||
And what's PANDA?
|
||||
|
||||
RWK;TS PANDA is the administrator's interface to PWORD. Its lets you turn
|
||||
people's accounts on and off and stuff like that. Since you aren't going
|
||||
to run PWORD, you don't need it.
|
||||
|
||||
|
||||
Host table madness:
|
||||
|
||||
Several programs will die on startup if they cannot find their own
|
||||
host address or look up their name using this address.
|
||||
Amongst them are FTPS.
|
||||
|
||||
SYSHST;H3MAKE > - source for a small program that DRAGON is supposed to run
|
||||
periodically. It invokes
|
||||
SYSHST;HOSTS3 BIN (compiled from SYSHST;HOSTS3 >)
|
||||
with appropriate non-trivial args that cause it to snarf up the file
|
||||
SYSHST;H3TEXT >
|
||||
and compile it into the binary-format file
|
||||
SYSBIN;HOSTS3 >
|
||||
which is used by everything else on ITS to look up host names
|
||||
via this package:
|
||||
SYSNET;NETWRK >
|
||||
|
||||
Note that COMSAT uses a new roundabout mechanism. Instead of the NETWRK
|
||||
library it now uses
|
||||
SYSNET;RESOLV >
|
||||
which replaces all NETWRK calls and invokes the DQ device, installed as
|
||||
DEVICE;JOBDEV DQ
|
||||
compiled from
|
||||
SYSNET;DQXDEV >
|
||||
which itself uses NETWRK to look up HOSTS3 information. This DQ
|
||||
device was intended to be a temporary but more reliable replacement
|
||||
for
|
||||
SYSNET;DQDEV >
|
||||
which is a CSTACY product attempting to do real DNS lookups via UDP.
|
||||
|
||||
MIT-NX changes:
|
||||
A new H3TEXT > was pulled over from
|
||||
lcs.mit.edu:/hosts/.misc/hosts3.txt
|
||||
This file is generated automatically by a batch job.
|
||||
It was edited to remove X-terminals and chaosnet hosts, and
|
||||
some NX-local names added.
|
||||
|
||||
COMSAT configuration:
|
||||
|
||||
Must eventually flush its HN$ symbols.
|
||||
|
||||
At BUGHST/ must put the IP address of the host that deals with
|
||||
(BUG RANDOM-PROGRAM) messages.
|
||||
|
||||
At DOMGAT/ must put the IP address of a mail relay host. This
|
||||
host will receive all mail for addresses that we can't
|
||||
resolve ourselves.
|
||||
|
||||
At TCPGAT/ can put IP address of a mail relay to handle *all*
|
||||
external TCP/IP traffic. This is needed when there is
|
||||
a firewall host like gatekeeper.us.oracle.com, sigh.
|
||||
|
||||
NX .MAIL.
|
||||
FREE BLOCKS #0=18478
|
||||
0 ID 703539 0 ! 4/23/85 10:27:26 FLUSHED
|
||||
0 ID 723380 0 ! 4/23/85 10:27:26 FLUSHED
|
||||
0 LIST EQV 15 ! 4/19/90 17:41:08 FLUSHED
|
||||
0 LIST QUEUE 2 ! 4/20/90 11:07:06 FLUSHED
|
||||
0 LIST MASTER 5 ! 4/20/90 11:05:48 FLUSHED
|
||||
0 LIST REMIND 1 ! 11/19/85 18:46:42 FLUSHED
|
||||
0 LISTS MSGS 361 ! 4/20/90 11:05:47 FLUSHED
|
||||
0 LOCK UNIQUE 1 ! 4/23/85 10:27:24
|
||||
0 *MSG EXP 2 ! 1/30/90 20:26:07
|
||||
0 -READ- -THIS- 1 ! 12/19/86 13:47:38
|
||||
0 .AIOLD NAMES 17 ! 7/27/85 16:35:38
|
||||
0 .DM NAMES 3 ! 7/22/83 13:31:25
|
||||
0 .MCNEW NAMES 19 ! 5/17/86 00:45:39
|
||||
0 .MCOLD NAMES 24 ! 5/5/86 13:41:19
|
||||
0 .MLOLD NAMES 9 ! 2/21/84 00:53:15
|
||||
0 BBOARD INFO 1 ! 4/29/84 18:01:28
|
||||
0 COMSAT BIN 31 ! 12/23/89 16:01:35
|
||||
0 COMSAT LAUNCH Patched with:
|
||||
BUGHST/ self
|
||||
DOMGAT,TCPGAT/gateway
|
||||
0 COMSAT LUNCH 33 ! 9/19/90 16:17:58 AI Original
|
||||
0 COMSAT OBIN 28 ! 11/10/89 17:55:53
|
||||
0 COMSAT OLAUNC 33 ! 11/10/89 17:56:40 FLUSHED (pure version of OBIN)
|
||||
0 FAILED STUFF 24 ! 3/29/90 22:36:45 FLUSHED
|
||||
0 MAIL 1 1 ! 9/20/90 18:15:55 FLUSHED (random ALAN stuff)
|
||||
0 MAIL 2 1 ! 9/20/90 18:15:55 FLUSHED
|
||||
0 MAILIN 1 1 ! 4/20/90 11:16:56 FLUSHED
|
||||
0 NAMED ERR094 1 ! 4/5/90 22:19:22 FLUSHED
|
||||
0 NAMED ERR096 1 ! 4/14/90 02:10:28 FLUSHED
|
||||
0 NAMED ERR097 1 ! 4/19/90 17:41:08 FLUSHED
|
||||
0 NAMES 1096 7 ! 4/14/90 02:06:27 FLUSHED
|
||||
0 NAMES 1097 7 ! 4/19/90 17:36:00 Renamed to .AIKS NAMES
|
||||
0 NAMES INFO 3 ! 7/24/89 23:41:25
|
||||
0 OSTATS 1634 51 ! 4/18/90 16:31:55 FLUSHED
|
||||
0 OSTATS 1635 51 ! 4/19/90 23:07:52 FLUSHED
|
||||
0 XID 22 0 ! 10/30/89 19:12:43 FLUSHED
|
||||
0 XLIST EQV 1 ! 10/30/89 22:30:30 FLUSHED
|
||||
0 XLIST MSGS 0 ! 10/31/89 01:40:09 FLUSHED
|
||||
0 XLIST QUEUE 1 ! 12/23/89 16:08:06 FLUSHED
|
||||
0 XLIST MASTER 1 ! 12/23/89 16:08:06 FLUSHED
|
||||
0 XLIST REMIND 1 ! 10/30/89 19:18:24 FLUSHED
|
||||
0 XLOCK UNIQUE 1 ! 10/30/89 19:12:40 FLUSHED
|
||||
0 XNAMED ERR062 1 ! 10/30/89 19:20:18 FLUSHED
|
||||
0 XNAMED ERR063 1 ! 10/30/89 22:30:29
|
||||
L XNAMES 1062 .MAIL. NAMES 1062
|
||||
0 XNAMES 1063 1 ! 10/30/89 22:23:34
|
||||
0 XSTATS 1 3 ! 12/23/89 16:18:39
|
||||
|
||||
NX SYSBIN
|
||||
FREE BLOCKS #0=18565
|
||||
0 BIG 0DAT 15 ! 4/20/90 11:26:41
|
||||
L -READ- -THIS- SYSENG -READ- -THIS-
|
||||
0 AP BIN 1 ! 3/13/84 05:25:26
|
||||
0 BOLIO 174 63 ! 12/13/82 20:16:15
|
||||
0 BOLIO 177 67 ! 12/7/83 03:56:14
|
||||
0 BOLIOP 191.1 1 ! 1/25/83 03:34:24
|
||||
0 BOLIOP 191.2 1 ! 4/7/83 00:20:25
|
||||
0 BOLIOP 191.3 1 ! 6/7/83 20:05:15
|
||||
0 BOLIOP 191PAT 1 ! 6/7/83 20:06:01
|
||||
0 BOLIOP 195PAT 1 ! 12/7/83 03:55:56
|
||||
0 BRANDX 45 58 ! 12/20/82 18:05:01
|
||||
0 BX45 (PDIR) 1 ! 12/20/82 18:04:59
|
||||
0 BXL23 (PDIR) 1 ! 8/31/81 01:52:02
|
||||
0 BXLSB 30 92 ! 12/20/82 18:20:08
|
||||
0 CHTN BIN 4 ! 10/22/86 22:02:55
|
||||
0 CNVRT BIN 2 ! 9/29/76 02:35:32
|
||||
0 CRTSTY BIN 30 ! 8/2/89 20:58:34
|
||||
0 CRTSTY OBIN 27 ! 7/22/85 13:18:43
|
||||
0 CTN BIN 28 ! 12/31/84 11:07:05
|
||||
0 CTN OBIN 28 ! 12/31/83 08:42:22
|
||||
0 CTN SCRTST 25 ! 3/17/82 04:28:57
|
||||
0 DDT 545BIN 27 ! 11/26/88 16:04:38
|
||||
0 DUMP 420BIN 14 ! 6/2/88 17:59:35
|
||||
0 DUMP 422BIN 14 ! 9/20/88 14:46:06
|
||||
0 DUMP 442BIN 14 ! 8/4/89 15:17:23
|
||||
L DUMP BIN SYSBIN DUMP >
|
||||
0 FIDO BIN 4 ! 5/11/93 13:39:52
|
||||
0 FILE BIN 8 ! 12/19/86 17:12:14
|
||||
0 FILE NBIN 8 ! 2/20/89 18:08:25
|
||||
0 FTPS BIN 11 ! 11/7/92 13:40:41
|
||||
0 FTPS OBIN 12 ! 8/2/89 21:16:07
|
||||
0 FTPS ORGBIN 11 ! 11/27/89 00:33:06
|
||||
0 FTPU BIN 11 ! 8/2/89 21:12:42
|
||||
0 FTPU OBIN 11 ! 3/5/89 15:00:03
|
||||
0 GMSGS OBIN 3 ! 2/17/89 03:02:49
|
||||
0 HOST1 OLD548 3 ! 3/15/83 19:00:48
|
||||
0 HOSTS2 29 23 ! 5/2/85 19:22:53
|
||||
0 HOSTS2 31 24 ! 6/16/85 01:54:29
|
||||
0 HOSTS3 1560 72 ! 4/16/90 05:44:54 FLUSHED
|
||||
0 HOSTS3 1561 72 ! 4/18/90 05:16:33 FLUSHED
|
||||
0 HOSTS3 1562 72 ! 4/20/90 05:31:08 Renamed to HOSTS3 AI1562
|
||||
0 HOSTS3 OLD 82 ! 2/24/89 04:48:23
|
||||
0 HOSTS3 OLDOLD 71 ! 4/21/87 19:51:20
|
||||
0 HST3BD 2 53 ! 8/23/85 01:48:56
|
||||
|
||||
40
run/ksits/pubits/doc/dumpsys.help
Normal file
40
run/ksits/pubits/doc/dumpsys.help
Normal file
@ -0,0 +1,40 @@
|
||||
Instructions for making a system-boot dump tape for ITS:
|
||||
|
||||
[0] Remember to write-mount a tape-file name with the KLH10 "W" command.
|
||||
|
||||
[1] After starting up DUMP in ITS, patch it so the variable WRONG is 0.
|
||||
This allows writing on the tape. Sigh.
|
||||
|
||||
dump^K!
|
||||
DUMP .442
|
||||
*** WRONG VERSION OF DUMP--ASSEMBLED FOR AI BUT RUNNING ON NX ***
|
||||
*** CERTAIN TAPE OPERATIONS WON'T BE ALLOWED ***
|
||||
_
|
||||
6146) .IOT 5,1 $^K
|
||||
*wrong/'DUMPER$: -1 0
|
||||
$p
|
||||
|
||||
[2] Give the command:
|
||||
DUMP LIST,LINKS ; Make a WALL > listing, and include links.
|
||||
At the first FILE= prompt, type "KSHACK;NXBOOT FILES ^F".
|
||||
This should read in a list of files to dump. (also see note below)
|
||||
|
||||
[3] Type RETURN and RETURN to start it going.
|
||||
|
||||
[4] When done, do a REWIND, to ensure the tape-file is finalized.
|
||||
|
||||
|
||||
NOTE:
|
||||
If ^F doesn't work or the file "NXBOOT FILES" doesn't exist, enter the
|
||||
following directories in response to "FILE=":
|
||||
.
|
||||
SYS, SYS1, SYS2, SYS3, SYSBIN
|
||||
KSHACK, SYSTEM, MIDAS
|
||||
SYSENG, CHANNA, DEVICE, DRAGON
|
||||
MAINT (the file MAINT;PART A is a good test program)
|
||||
|
||||
If creating a general "core system" dump and not just a minimal boot
|
||||
set, also add these directories:
|
||||
EMACS, INFO, INQUIR, KSC
|
||||
SYSDOC, SYSEN1, SYSEN2, SYSHST, SYSNET
|
||||
|
||||
5
run/kst10/README
Normal file
5
run/kst10/README
Normal file
@ -0,0 +1,5 @@
|
||||
The following files are derived from Digital software and subject to
|
||||
Digital licensing requirements:
|
||||
|
||||
ksbddt.exe (bootstrap with DDT)
|
||||
ksboot.exe (disk/tape bootstrap)
|
||||
BIN
run/kst10/ksbddt.exe
Normal file
BIN
run/kst10/ksbddt.exe
Normal file
Binary file not shown.
BIN
run/kst10/ksboot.exe
Normal file
BIN
run/kst10/ksboot.exe
Normal file
Binary file not shown.
5
run/kst20/README
Normal file
5
run/kst20/README
Normal file
@ -0,0 +1,5 @@
|
||||
The following files are derived from Digital software and subject to
|
||||
Digital licensing requirements:
|
||||
|
||||
smboot-k.sav (disk bootstrap)
|
||||
smmtbt-k.sav (tape bootstrap)
|
||||
19
run/kst20/inst-kst20.ini
Normal file
19
run/kst20/inst-kst20.ini
Normal file
@ -0,0 +1,19 @@
|
||||
; This is a sample KLH10 config file for a KS10 running TOPS-20.
|
||||
|
||||
; Define basic KS10 device config - two RH11s each on its own Unibus
|
||||
|
||||
devdef rh0 ub1 rh11 addr=776700 br=6 vec=254
|
||||
devdef rh1 ub3 rh11 addr=772440 br=6 vec=224
|
||||
|
||||
; Provide one disk, one tape in config T20 expects
|
||||
|
||||
devdef dsk0 rh0.0 rp type=rp06 format=dbd9 path=T20-RP06.0-dbd9 iodly=0
|
||||
devdef mta0 rh1.0 tm03 fmtr=tm03 type=tu45
|
||||
|
||||
; Mount installation tape, skipping past ucode and defective boot
|
||||
devmount mta0 bb-d867e-bm.tap fskip=2
|
||||
|
||||
; Load fixed tape bootstrap directly
|
||||
load smmtbt-k.sav
|
||||
|
||||
; Now ready to GO
|
||||
17
run/kst20/kst20.ini
Normal file
17
run/kst20/kst20.ini
Normal file
@ -0,0 +1,17 @@
|
||||
; This is a sample KLH10 config file for a KS10 running TOPS-20.
|
||||
|
||||
; Define basic KS10 device config - two RH11s each on its own Unibus
|
||||
|
||||
devdef rh0 ub1 rh11 addr=776700 br=6 vec=254
|
||||
devdef rh1 ub3 rh11 addr=772440 br=6 vec=224
|
||||
|
||||
; Provide one disk, one tape in config T20 expects
|
||||
|
||||
devdef dsk0 rh0.0 rp type=rp06 format=dbd9 path=T20-RP06.0-dbd9 iodly=0
|
||||
devdef mta0 rh1.0 tm03 fmtr=tm03 type=tu45
|
||||
|
||||
; Define HOST device hackery if monitor supports it
|
||||
;devdef idler 700 host
|
||||
|
||||
; For convenience, load up disk bootstrap
|
||||
load smboot-k.sav
|
||||
BIN
run/kst20/smboot-k.sav
Normal file
BIN
run/kst20/smboot-k.sav
Normal file
Binary file not shown.
BIN
run/kst20/smmtbt-k.sav
Normal file
BIN
run/kst20/smmtbt-k.sav
Normal file
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user