Bug 33818

Summary: Bootable ITS image for KLH-10 PDP-10 emulator
Product: Ports & Packages Reporter: kstailey <kstailey>
Component: Individual Port(s)Assignee: freebsd-ports-bugs (Nobody) <ports-bugs>
Status: Closed FIXED    
Severity: Affects Only Me CC: alane
Priority: Normal    
Version: Latest   
Hardware: Any   
OS: Any   

Description kstailey 2002-01-12 19:10:00 UTC
	Bootable ITS image for KLH-10 PDP-10 emulator.  Disregart prior
submission.  The image is rather large.  45MB compressed download and
170MB uncompressed.  The port tries not to store two uncompressed copies
during installation ever.

Fix: 

__________________________________________________
Do You Yahoo!?
Send FREE video emails in Yahoo! Mail!
http://promo.yahoo.com/videomail/--YuMQAVYrNM3Xm1V9DHhzYwQKI6vYLxdKMpQ5nGDJ7umS31n2
Content-Type: text/plain; name="file.shar"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="file.shar"

# This is a shell archive.  Save it in a file, remove anything before
# this line, and then unpack it by entering "sh file".  Note, it may
# create directories; files and directories will be owned by you and
# have default permissions.
#
# This archive contains:
#
#	its
#	its/pkg-comment
#	its/Makefile
#	its/distinfo
#	its/pkg-plist
#	its/pkg-descr
#	its/files
#	its/files/its.sh
#
echo c - its
mkdir -p its > /dev/null 2>&1
echo x - its/pkg-comment
sed 's/^X//' >its/pkg-comment << 'END-of-its/pkg-comment'
XBootable ITS filesystem for KLH-10 PDP-10 emulator
END-of-its/pkg-comment
echo x - its/Makefile
sed 's/^X//' >its/Makefile << 'END-of-its/Makefile'
X# New ports collection makefile for:   its
X# Date created:        11 January 2002
X# Whom:                kstailey
X#
X# $FreeBSD$
X#
X
XPORTNAME=	its
XPORTVERSION=	a11110
XCATEGORIES=	emulators
XMASTER_SITES=	ftp://ftp.its.os.org/its/klh10/
XDISTNAME=	pi-${PORTNAME}-${PORTVERSION}
XEXTRACT_SUFX=	.tar
X
XMAINTAINER=	kstailey@yahoo.com
X
XBUILD_DEPENDS=	${KLH10_HOME}/kn10-ks:${PORTSDIR}/emulators/klh10
X
XONLY_FOR_ARCHS=	i386	# really the emulator has this problem.
X
XNO_WRKSUBDIR=
XNO_BUILD=
X
XKLH10_HOME=	${PREFIX}/libexec/klh10-ks-its
XIMAGE_NAME=	PI-ITS-RP06.0-dbd9
X
Xpost-patch:
X	@zcat ${WRKDIR}/${IMAGE_NAME}.gz > ${KLH10_HOME}/${IMAGE_NAME}
X	@ ${SED} -e "s;@KLH10_HOME@;${KLH10_HOME};g" \
X		${FILESDIR}/its.sh >${WRKSRC}/its
X
Xdo-install:
X	@ ${INSTALL_SCRIPT} ${WRKSRC}/its ${PREFIX}/bin
X
X.include <bsd.port.mk>
END-of-its/Makefile
echo x - its/distinfo
sed 's/^X//' >its/distinfo << 'END-of-its/distinfo'
XMD5 (pi-its-a11110.tar) = 277494d17643ca2d90ff04122be4e993
END-of-its/distinfo
echo x - its/pkg-plist
sed 's/^X//' >its/pkg-plist << 'END-of-its/pkg-plist'
Xbin/its
Xlibexec/klh10-ks-its/PI-ITS-RP06.0-dbd9
END-of-its/pkg-plist
echo x - its/pkg-descr
sed 's/^X//' >its/pkg-descr << 'END-of-its/pkg-descr'
XThis is an image of a PI (Public ITS) filesystem that can be booted on
Xthe klh10 PDP-10 emulator.
END-of-its/pkg-descr
echo c - its/files
mkdir -p its/files > /dev/null 2>&1
echo x - its/files/its.sh
sed 's/^X//' >its/files/its.sh << 'END-of-its/files/its.sh'
X#!/bin/sh
X#
X# $FreeBSD$
X
Xif [ `id -un` != root ]; then
X    echo WARNING: networking only works when you start this script as root
Xfi
X
Xcase "$1" in
Xklh10-md.ini)
X#	MD == Mostly Development MIT AI lab machine
X	echo WARNING: using the MD configuration with IP addr = 192.168.0.203
X	INI=$1 ; shift
X;;
Xklh10-pi.ini)
X#	PI == Public ITS
X	echo WARNING: using the PI configuration with IP addr = 199.34.53.51
X	INI=$1 ; shift
X;;
X*)
X#	what does KN stand for?
X	echo INFO: using the KN configuration with IP addr = 10.134.198.236
X	INI=klh10-kn.ini
X;;
Xesac
X
Xcd @KLH10_HOME@
Xexec ./kn10-ks $INI "$@"
END-of-its/files/its.sh
exit
How-To-Repeat: 	N/A
Comment 1 Alan Eldridge 2002-01-12 19:24:00 UTC
On Sat, Jan 12, 2002 at 11:01:03AM -0800, Kenneth Stailey wrote:
>
>>Number:         33818
>>Category:       ports
>>Synopsis:       Bootable ITS image for KLH-10 PDP-10 emulator

THIS PR SUPERCEDES 33817. You should reply to 33817 and say it has been
superceded by 33818.

>XKLH10_HOME=	${PREFIX}/libexec/klh10-ks-its
>XIMAGE_NAME=	PI-ITS-RP06.0-dbd9
>X
>Xpost-patch:
>X	@zcat ${WRKDIR}/${IMAGE_NAME}.gz > ${KLH10_HOME}/${IMAGE_NAME}
>X	@ ${SED} -e "s;@KLH10_HOME@;${KLH10_HOME};g" \
>X		${FILESDIR}/its.sh >${WRKSRC}/its

Umm, nope. Violates style convention. Badly. Soonest you can do this
is in the pre-install or do-install.

If I say "make", you're gonna do part of the install. No way is that
gonna happen.

Typically you wouldn't even do the gzip directly. But, in view of the
size of the file, which you should comment right here, it's reasonable.

Don't use zcat. There are macros for unzipping things.

How about this:

do-install:
	@${GUNZIP_CMD} -c ${WRKDIR}/${IMAGE_NAME}.gz \
		> ${KLH10_HOME}/${IMAGE_NAME}
	@${CHMOD} ${LIBMODE} ${KLH10_HOME}/${IMAGE_NAME}
	@${CHOWN} ${LIBOWN}:${LIBGRP} ${KLH10_HOME}/${IMAGE_NAME}
	@ ${SED} -e "s;@KLH10_HOME@;${KLH10_HOME};g" \
		${FILESDIR}/its.sh >${WRKSRC}/its
	@ ${INSTALL_SCRIPT} ${WRKSRC}/its ${PREFIX}/bin


-- 
Alan Eldridge
Pmmfmffmmfmp mmmpppppffmpmfpmpppff PmpMpmMpp ppfppp MpfpffmppmppMmpFmmMpm 
mfpmmmmmfpmpmpppff.
Comment 2 Alan Eldridge 2002-01-12 19:29:55 UTC
On Sat, Jan 12, 2002 at 11:01:03AM -0800, Kenneth Stailey wrote:
>
>>Description:
>	Bootable ITS image for KLH-10 PDP-10 emulator.  Disregart prior
>submission.  The image is rather large.  45MB compressed download and
>170MB uncompressed.  The port tries not to store two uncompressed copies
>during installation ever.

Urghh ... you know that all the stuff in libexec is read-only, right?

Just thought of that....

How's this supposed to be run? Root only?

Maybe you ought to put the disk image in, oh, ${PREFIX}/spool/klh10/images.
Then at least it's somewhere that's expected to be writable.

Anybody else got any ideas on that?
-- 
Alan Eldridge
Pmmfmffmmfmp mmmpppppffmpmfpmpppff PmpMpmMpp ppfppp MpfpffmppmppMmpFmmMpm 
mfpmmmmmfpmpmpppff.
Comment 3 Alan Eldridge 2002-01-12 19:36:20 UTC
On Sat, Jan 12, 2002 at 11:01:03AM -0800, Kenneth Stailey wrote:
>
>>Number:         33818
>>Category:       ports
>>Synopsis:       Bootable ITS image for KLH-10 PDP-10 emulator
>>Description:
>	Bootable ITS image for KLH-10 PDP-10 emulator.  Disregart prior
>submission.  The image is rather large.  45MB compressed download and
>170MB uncompressed.  The port tries not to store two uncompressed copies
>during installation ever.
>

Umm, should this be marked NO_CDROM due to its size?

NO_CDROM=	This is just a really big (45M) data file.

That's a big chunk of real estate on a CD for something that < 1% of the
user population is going to look at.

-- 
Alan Eldridge
Pmmfmffmmfmp mmmpppppffmpmfpmpppff PmpMpmMpp ppfppp MpfpffmppmppMmpFmmMpm 
mfpmmmmmfpmpmpppff.
Comment 4 Alan Eldridge 2002-01-12 19:54:39 UTC
On Sat, Jan 12, 2002 at 11:40:05AM -0800, Alan Eldridge wrote:
> NO_CDROM=	This is just a really big (45M) data file.
> 
> That's a big chunk of real estate on a CD for something that < 1% of the
> user population is going to look at.

That wasn't meant as a value judgement. But it's not like it's
something that has to be compiled, even. It's just a data file,
uncompressed. So I would be concerned about the real estate
issue... unless we're nowhere close to hitting 5 CDROMS in the
distribution package.
 
-- 
Alan Eldridge
Pmmfmffmmfmp mmmpppppffmpmfpmpppff PmpMpmMpp ppfppp MpfpffmppmppMmpFmmMpm 
mfpmmmmmfpmpmpppff.
Comment 5 Alan Eldridge 2002-01-12 20:28:45 UTC
On Sat, Jan 12, 2002 at 03:08:14PM -0500, Ken Stailey wrote:
>Alan Eldridge wrote:
>
>>On Sat, Jan 12, 2002 at 11:01:03AM -0800, Kenneth Stailey wrote:
>>
>>>>Number:         33818
>>>>Category:       ports
>>>>Synopsis:       Bootable ITS image for KLH-10 PDP-10 emulator
>>>>Description:
>>>>
>>>	Bootable ITS image for KLH-10 PDP-10 emulator.  Disregart prior
>>>submission.  The image is rather large.  45MB compressed download and
>>>170MB uncompressed.  The port tries not to store two uncompressed copies
>>>during installation ever.
>>>
>>
>>Umm, should this be marked NO_CDROM due to its size?
>>
>>NO_CDROM=	This is just a really big (45M) data file.
>>
>>That's a big chunk of real estate on a CD for something that < 1% of the
>>user population is going to look at.
>>
>I was asking about that but I guess I didn't know what to ask.
>Isn't
>
>NO_PACKAGE=     ignores cflags  # for now
>

1. That's not a reason to no-package it.

2. No, NO_PACKAGE is not transient.

3. There's not a problem with PACKAGE-ing it. The ftp servers have room.
I'm concerned about putting the package on the CDROM. That's what NO_CDROM
is for.

NO_PACKAGE implies NO_CDROM.
NO_CDROM does not imply NO_PACKAGE.

Why do you want to NO_PACKAGE the klh-10? Is it huge too? (I haven't
looked at it yet.)


-- 
Alan Eldridge
Pmmfmffmmfmp mmmpppppffmpmfpmpppff PmpMpmMpp ppfppp MpfpffmppmppMmpFmmMpm 
mfpmmmmmfpmpmpppff.
Comment 6 Alan Eldridge 2002-01-12 20:35:19 UTC
On Sat, Jan 12, 2002 at 03:22:32PM -0500, Ken Stailey wrote:
>Alan Eldridge wrote:
>>
>>Urghh ... you know that all the stuff in libexec is read-only, right?
>>
>>Just thought of that....
>>
>>How's this supposed to be run? Root only?
>>
>>Maybe you ought to put the disk image in, oh, ${PREFIX}/spool/klh10/images.
>>Then at least it's somewhere that's expected to be writable.
>>
>>Anybody else got any ideas on that?

>In what sense is libexec read-only?  Diskless support?  I suppose you 
>could use a spot under /var.

You saw I did the ${CHOWN} and ${CHMOD}. Stuff in those dirs is supposed
to be ${LIBMODE}. That's read-only.

And yes, libexec could be mounted read-only on NFS, for example. 

You've got a port that really wants to run as a USER, in a private
directory.

Perhaps the way this works needs to be thought out a bit more. Like,
installing the compressed image and providing a "user install" script,
which makes a user directory with the uncompressed image.

If you work on the master image, then what are you supposed to do when
you fsck it up? Reinstall the port? Not a good solution.

COMMITTERS: Suggest changing status of 33816 and 33818 to feedback
pending resolution of installation and other issues.

Oh, Ken, could you do a "Big-R" reply to get the Cc: to gnats in there?

-- 
Alan Eldridge
Pmmfmffmmfmp mmmpppppffmpmfpmpppff PmpMpmMpp ppfppp MpfpffmppmppMmpFmmMpm 
mfpmmmmmfpmpmpppff.
Comment 7 Alan Eldridge 2002-01-12 20:38:50 UTC
On Sat, Jan 12, 2002 at 03:36:20PM -0500, Ken Stailey wrote:

>image.  Support files do not get modified during emulator execution. You 
>could put the emulator image under /var and use a symlink since it does 
>change as ITS runs.  I tested this OK.  Unfortuately, not that many 
>systems have enough /var space to do this I'd imagine.

And ports shouldn't, in general, drop things into /var. Unless they're
log files. Or mail/print spool.

-- 
Alan Eldridge
Pmmfmffmmfmp mmmpppppffmpmfpmpppff PmpMpmMpp ppfppp MpfpffmppmppMmpFmmMpm 
mfpmmmmmfpmpmpppff.
Comment 8 Ken Stailey 2002-01-12 20:44:08 UTC
Alan Eldridge wrote:

>On Sat, Jan 12, 2002 at 03:08:14PM -0500, Ken Stailey wrote:
>
>>Alan Eldridge wrote:
>>
>>>On Sat, Jan 12, 2002 at 11:01:03AM -0800, Kenneth Stailey wrote:
>>>
>>>>>Number:         33818
>>>>>Category:       ports
>>>>>Synopsis:       Bootable ITS image for KLH-10 PDP-10 emulator
>>>>>Description:
>>>>>
>>>>	Bootable ITS image for KLH-10 PDP-10 emulator.  Disregart prior
>>>>submission.  The image is rather large.  45MB compressed download and
>>>>170MB uncompressed.  The port tries not to store two uncompressed copies
>>>>during installation ever.
>>>>
>>>Umm, should this be marked NO_CDROM due to its size?
>>>
>>>NO_CDROM=	This is just a really big (45M) data file.
>>>
>>>That's a big chunk of real estate on a CD for something that < 1% of the
>>>user population is going to look at.
>>>
>>I was asking about that but I guess I didn't know what to ask.
>>Isn't
>>
>>NO_PACKAGE=     ignores cflags  # for now
>>
>
>1. That's not a reason to no-package it.
>
>2. No, NO_PACKAGE is not transient.
>
>3. There's not a problem with PACKAGE-ing it. The ftp servers have room.
>I'm concerned about putting the package on the CDROM. That's what NO_CDROM
>is for.
>
>NO_PACKAGE implies NO_CDROM.
>NO_CDROM does not imply NO_PACKAGE.
>
>Why do you want to NO_PACKAGE the klh-10? Is it huge too? (I haven't
>looked at it yet.)
>
I'm new at this? :)
Anyway it needs this patch to work/klh10-2.0a/src/Mk-fbx86.mk

--- Mk-fbx86.mk.DIST    Sat Jan 12 15:40:10 2002
+++ Mk-fbx86.mk Sat Jan 12 15:40:55 2002
@@ -21,7 +21,7 @@
 
 # Build definitions
 SRC = ../../src
-CFLAGS = -c -g3 -O -I. -I$(SRC)
+CFLAGS += -c -g3 -O -I. -I$(SRC)
 CFLAGS_LINT = -ansi -pedantic -Wall -Wshadow \
                -Wstrict-prototypes -Wmissing-prototypes \
                -Wmissing-declarations -Wredundant-decls

Then NO_PACKAGE can be removed.  The emulator is pretty small.  The ITS 
filesystem image is the big part.

>
Comment 9 Ken Stailey 2002-01-12 20:58:38 UTC
Ken Stailey wrote:

>The following reply was made to PR ports/33818; it has been noted by GNATS.
>
>From: Ken Stailey <kstailey@surfbest.net>
>To: Alan Eldridge <alane@geeksrus.net>
>Cc: FreeBSD Bugs <freebsd-gnats-submit@freebsd.org>
>Subject: Re: ports/33818: Bootable ITS image for KLH-10 PDP-10 emulator
>Date: Sat, 12 Jan 2002 15:44:08 -0500
>
> Alan Eldridge wrote:
> 
> >On Sat, Jan 12, 2002 at 03:08:14PM -0500, Ken Stailey wrote:
> >
> >>Alan Eldridge wrote:
> >>
> >>>On Sat, Jan 12, 2002 at 11:01:03AM -0800, Kenneth Stailey wrote:
> >>>
> >>>>>Number:         33818
> >>>>>Category:       ports
> >>>>>Synopsis:       Bootable ITS image for KLH-10 PDP-10 emulator
> >>>>>Description:
> >>>>>
> >>>>	Bootable ITS image for KLH-10 PDP-10 emulator.  Disregart prior
> >>>>submission.  The image is rather large.  45MB compressed download and
> >>>>170MB uncompressed.  The port tries not to store two uncompressed copies
> >>>>during installation ever.
> >>>>
> >>>Umm, should this be marked NO_CDROM due to its size?
> >>>
> >>>NO_CDROM=	This is just a really big (45M) data file.
> >>>
> >>>That's a big chunk of real estate on a CD for something that < 1% of the
> >>>user population is going to look at.
> >>>
> >>I was asking about that but I guess I didn't know what to ask.
> >>Isn't
> >>
> >>NO_PACKAGE=     ignores cflags  # for now
> >>
> >
> >1. That's not a reason to no-package it.
> >
> >2. No, NO_PACKAGE is not transient.
> >
> >3. There's not a problem with PACKAGE-ing it. The ftp servers have room.
> >I'm concerned about putting the package on the CDROM. That's what NO_CDROM
> >is for.
> >
> >NO_PACKAGE implies NO_CDROM.
> >NO_CDROM does not imply NO_PACKAGE.
> >
> >Why do you want to NO_PACKAGE the klh-10? Is it huge too? (I haven't
> >looked at it yet.)
> >
> I'm new at this? :)
> Anyway it needs this patch to work/klh10-2.0a/src/Mk-fbx86.mk
> 
> --- Mk-fbx86.mk.DIST    Sat Jan 12 15:40:10 2002
> +++ Mk-fbx86.mk Sat Jan 12 15:40:55 2002
> @@ -21,7 +21,7 @@
>  
>  # Build definitions
>  SRC = ../../src
> -CFLAGS = -c -g3 -O -I. -I$(SRC)
> +CFLAGS += -c -g3 -O -I. -I$(SRC)
>  CFLAGS_LINT = -ansi -pedantic -Wall -Wshadow \
>                 -Wstrict-prototypes -Wmissing-prototypes \
>                 -Wmissing-declarations -Wredundant-decls
> 
> Then NO_PACKAGE can be removed.  The emulator is pretty small.  The ITS 
> filesystem image is the big part.
> 
> >
> 
>
>To Unsubscribe: send mail to majordomo@FreeBSD.org
>with "unsubscribe freebsd-ports" in the body of the message
>
>

# This is a shell archive.  Save it in a file, remove anything before
# this line, and then unpack it by entering "sh file".  Note, it may
# create directories; files and directories will be owned by you and
# have default permissions.
#
# This archive contains:
#
#       klh10/files
#       klh10/files/patch-aa
#
echo c - klh10/files
mkdir -p klh10/files > /dev/null 2>&1
echo x - klh10/files/patch-aa
sed 's/^X//' >klh10/files/patch-aa << 'END-of-klh10/files/patch-aa'
X--- src/Mk-fbx86.mk.DIST  Sat Jan 12 15:40:10 2002
X+++ src/Mk-fbx86.mk       Sat Jan 12 15:40:55 2002
X@@ -21,7 +21,7 @@
X
X # Build definitions
X SRC = ../../src
X-CFLAGS = -c -g3 -O -I. -I$(SRC)
X+CFLAGS += -c -g3 -O -I. -I$(SRC)
X CFLAGS_LINT = -ansi -pedantic -Wall -Wshadow \
X                -Wstrict-prototypes -Wmissing-prototypes \
X                -Wmissing-declarations -Wredundant-decls
X
END-of-klh10/files/patch-aa
exit
Comment 10 Ken Stailey 2002-01-12 21:16:30 UTC
Alan Eldridge wrote:

>
>
>You've got a port that really wants to run as a USER, in a private
>directory.
>
>Perhaps the way this works needs to be thought out a bit more. Like,
>installing the compressed image and providing a "user install" script,
>which makes a user directory with the uncompressed image.
>
>If you work on the master image, then what are you supposed to do when
>you fsck it up? Reinstall the port? Not a good solution.
>
>
Well if there is a master copy of the ITS image it should be compressed.
Some sort of "make-its-user" command would set up the files in a subdir 
of a user's home.
The emulator binary proper, kn10-ks, does not need to be root to run.  A 
subordinate
binary, dpimp, that does networking support for kn10-ks does need to run 
as root.
You can still get console access to ITS without root privs but won't be 
able to use
network command to get in and out of the emulated ITS.

kn10-ks needs to be in a directory with its support files and 
subordinate binaries.  None of these
are modified during execution.  The emulator image or a symlink to it 
needs to be there too.
It does get modified as ITS runs.

hermes# du -ks * | sort -n
1       README
1       flushed
1       klh10-kn.ini
1       klh10-md.ini
1       klh10-pi.ini
9       udlconv
11      wfconv
15      vdkfmt
19      @.ddt-u
19      wxtest
20      dprpxx
22      dpimp
51      tapedd
54      dptm03
64      @.nsalv-260-u
296     itsbin.647kn-u
296     itsbin.647md-u
296     itsbin.647pi-u
304     kn10-ks
344     @.its-647kn-u
344     @.its-647md-u
344     @.its-647pi-u
173712  PI-ITS-RP06.0-dbd9

The port install could put these into ${PREFIX}/libdata as a compressed 
tarball.  A setup-its-user script could
install the tarball in a given directory.  The tarball would be ${LIBMODE}.

Is that OK?

Thanks,
Ken
Comment 11 Ken Stailey 2002-02-16 23:51:12 UTC
So much has changed I'm resubmitting from scratch.

# This is a shell archive.  Save it in a file, remove anything before
# this line, and then unpack it by entering "sh file".  Note, it may
# create directories; files and directories will be owned by you and
# have default permissions.
#
# This archive contains:
#
#	its
#	its/pkg-comment
#	its/Makefile
#	its/distinfo
#	its/pkg-plist
#	its/pkg-descr
#	its/files
#	its/files/its.sh
#	its/files/MIT-ITS-papers
#	its/files/README.FIRST
#
echo c - its
mkdir -p its > /dev/null 2>&1
echo x - its/pkg-comment
sed 's/^X//' >its/pkg-comment << 'END-of-its/pkg-comment'
XBootable ITS filesystem for KLH-10 PDP-10 emulator
END-of-its/pkg-comment
echo x - its/Makefile
sed 's/^X//' >its/Makefile << 'END-of-its/Makefile'
X# New ports collection makefile for:   its
X# Date created:        11 January 2002
X# Whom:                kstailey
X#
X# $FreeBSD$
X#
X
XPORTNAME=	its
XPORTVERSION=	a11110
XCATEGORIES=	emulators
XMASTER_SITES=	ftp://ftp.its.os.org/its/klh10/
XDISTNAME=	pi-${PORTNAME}-${PORTVERSION}
XEXTRACT_SUFX=	.tar
X
XMAINTAINER=	kstailey@yahoo.com
X
XBUILD_DEPENDS=	kn10-ks:${PORTSDIR}/emulators/klh10
XRUN_DEPENDS=	kn10-ks:${PORTSDIR}/emulators/klh10
X
XONLY_FOR_ARCHS=	i386	# really KLH10 has this problem.
X
XNO_WRKSUBDIR=	yes
XNO_BUILD=	yes
XNO_PACKAGE=	PI ITS RP06 disk image is too big.
XNO_CDROM=	PI ITS RP06 disk image is too big.
X
X# KLH10_HOME must be set to the same location that the klh10 port uses
XKLH10_DIR=	klh10-ks-its
XKLH10_HOME=	${PREFIX}/share/${KLH10_DIR}
XIMAGE_HOME?=	${KLH10_HOME}
XIMAGE_NAME=	PI-ITS-RP06.0-dbd9
XIMAGE_OWN?=	${LIBOWN}
XIMAGE_GRP?=	${LIBGRP}
XIMAGE_MODE?=	666
XDOCDIR=		${PREFIX}/share/doc/${KLH10_DIR}
XPLIST_SUB+=	IMAGE_HOME=${IMAGE_HOME}
X
Xdo-install:
X	@ ${ECHO} Installing PI ITS RP06 disk image in ${IMAGE_HOME}
X	@ ${ECHO} owned by ${IMAGE_OWN}:${IMAGE_GRP}, mode ${IMAGE_MODE}.
X.if (${IMAGE_HOME} == ${KLH10_HOME})
X	@ ${ECHO} Use IMAGE_HOME=/my/directory to relocate.
X.else
X	@ ${LN} -s ${IMAGE_HOME}/${IMAGE_NAME} ${KLH10_HOME}/${IMAGE_NAME}
X.endif
X.if (${IMAGE_OWN} == ${LIBOWN})
X	@ ${ECHO} Use IMAGE_OWN=fred IMAGE_GRP=staff to set ownership.
X.endif
X.if (${IMAGE_MODE} == 666)
X	@ ${ECHO} Use IMAGE_MODE=octal-mode to set the permissions.
X.endif
X	@ ${MKDIR} ${IMAGE_HOME}
X	@ ${GUNZIP_CMD} -c ${WRKDIR}/${IMAGE_NAME}.gz \
X		> ${IMAGE_HOME}/${IMAGE_NAME}
X	@ ${CHMOD} ${IMAGE_MODE} ${IMAGE_HOME}/${IMAGE_NAME}
X	@ ${CHOWN} ${IMAGE_OWN}:${IMAGE_GRP} ${IMAGE_HOME}/${IMAGE_NAME}
X	@ ${SED} -e "s;@KLH10_HOME@;${KLH10_HOME};g" \
X		 -e "s;@PI-IMAGE@;${IMAGE_HOME}/${IMAGE_NAME};g" \
X		 -e 's;@BIN@;${PREFIX}/bin;' \
X		${FILESDIR}/its.sh >${WRKSRC}/its
X	@ ${INSTALL_SCRIPT} ${WRKSRC}/its ${PREFIX}/bin
X	@ ${SED} -e "s;@PREFIX@;${PREFIX};g" \
X		${FILESDIR}/README.FIRST >${WRKSRC}/README.FIRST
X	@ ${INSTALL_MAN} ${FILESDIR}/MIT-ITS-papers ${DOCDIR}
X	@ ${INSTALL_MAN} ${WRKSRC}/README.FIRST ${DOCDIR}
X	@ ${ECHO} "***  Please read ${DOCDIR}/README.FIRST"
X.include <bsd.port.mk>
END-of-its/Makefile
echo x - its/distinfo
sed 's/^X//' >its/distinfo << 'END-of-its/distinfo'
XMD5 (pi-its-a11110.tar) = 277494d17643ca2d90ff04122be4e993
END-of-its/distinfo
echo x - its/pkg-plist
sed 's/^X//' >its/pkg-plist << 'END-of-its/pkg-plist'
Xbin/its
X%%PORTDOCS%%share/doc/klh10-ks-its/MIT-ITS-papers
X%%PORTDOCS%%share/doc/klh10-ks-its/README.FIRST
Xshare/klh10-ks-its/PI-ITS-RP06.0-dbd9
X@unexec rm -f %%IMAGE_HOME%%/PI-ITS-RP06.0-dbd9
X
END-of-its/pkg-plist
echo x - its/pkg-descr
sed 's/^X//' >its/pkg-descr << 'END-of-its/pkg-descr'
XThis is an image of a PI (Public ITS) filesystem that can be booted on
Xthe KLH10 PDP-10 emulator.
X
XThe emulator image is about 45MB compressed and 170MB uncompressed.
XThe installation needs to have a minimum of 45MB in ports/disfiles
Xplus 45MB in its/work plus 170MB in the installation directory which
Xdefaults to /usr/local/share/klh10-ks-its.  That's about 260MB total
Xbut it's possible to split across filesystems.
X
XFor more information about ITS see WWW: http://www.its.os.org/
END-of-its/pkg-descr
echo c - its/files
mkdir -p its/files > /dev/null 2>&1
echo x - its/files/its.sh
sed 's/^X//' >its/files/its.sh << 'END-of-its/files/its.sh'
X#!/bin/sh
X#
X# $FreeBSD$
X#
X# Run KLH10 with KS-ITS hardware configuration and ITS OS configuration
X# to bring up MIT Incompatible Timesharing System emulation.
X
Xcd @KLH10_HOME@
Xexec lockf -t 0 -k @PI-IMAGE@ @BIN@/kn10-ks klh10-kn-freebsd.ini
END-of-its/files/its.sh
echo x - its/files/MIT-ITS-papers
sed 's/^X//' >its/files/MIT-ITS-papers << 'END-of-its/files/MIT-ITS-papers'
XITS Status report (includes architecture info) from 1972
Xftp://publications.ai.mit.edu/ai-publications/0-499/AIM-238.ps
X
XITS reference manual from 1969:
Xftp://publications.ai.mit.edu/ai-publications/0-499/AIM-161A.ps
X
XMidas macro assembler documentation from 1965:
Xftp://publications.ai.mit.edu/ai-publications/0-499/AIM-090.ps
X
XDDT debugger ("system apex procedure" i.e. "shell") from 1968
Xftp://publications.ai.mit.edu/ai-publications/0-499/AIM-147.ps
X
XEmacs text editor (original ITS version)
Xftp://publications.ai.mit.edu/ai-publications/500-999/AIM-519A.ps
X
XThese files may be converted to PDF or gzipped to save space:
X$ ps2pdf13 AIM-238.ps AIM-238.pdf
END-of-its/files/MIT-ITS-papers
echo x - its/files/README.FIRST
sed 's/^X//' >its/files/README.FIRST << 'END-of-its/files/README.FIRST'
XTo start ITS run the its(1) command.  It takes no arguments.
X
XConsider adding firewall protection for the emulator before ever
Xrunning it.  See @PREFIX@/share/doc/its/pubits/adm directory for
Xsamples.  The emulator uses IP address 10.134.198.236 by default.
XIf this is a problem edit @PREFIX@/games/klh10-ks-its/klh10-kn-freebsd.ini
Xwhere it says ipaddr=10.134.198.236
X
XThe first time the system boots it will not know the time.  To set the
Xclock you must create a file with root permission so become root and then
Xrun the its command.  The system will display this message:
X
XThe time could not be set because:
XNo host responded.
XIt will be necessary for someone to set the time
Xmanually by logging in and running :PDSET.
X
XTell ITS to activate the apex procedure, DDT, by typing a Ctrl-Z.
XWhen you type that you will see:
X
XKN ITS.1647. DDT.1545.
XTTY 0
XYou're all alone, Fair share = 0%
X
X(ITS does not know the date, so messages cannot be reviewed right now.)
X
XThen run PDSET by typing (colon and all)
X
X:pdset
X
XITS will suggest that you log in but you don't have to.
X
X(Please Log In)
X___002 PDSET  IOTLSR  
X
XNow enter the time and save it.  First the century:
X
X20C
X
XNext the YYMMDD:
X
X020215D
X
XThen the HHMMSS (try to time it so you have some lead time because it
Xwill become active when you save it.)
X
X205115T
X
XNow save the time:
X
X!.
X
XNow exit PDSET
X
XX
X
XYou will have no feedback from the exit operation except that new
Xcommands will be echoed in lower case.  Now bring down ITS so you can
Xstart it without being root:
X
X:lock
X(Please Log In)
X LOCK.154  
X_
X
Xthe _ is a prompt, do not type it.  Type
X
X_5down
X
XLOCK is very picky about typos so be careful.  It does not need the
XEnter key--don't use it.
X
XDO YOU REALLY WANT THE SYSTEM TO GO DOWN?
X
XType "y"
X
Xy
X___004 
X       PLEASE ENTER A BRIEF MESSAGE TO USERS, ENDED BY ^C
XLOCK   SYS    DOWN   MAIL   WRITE  21:13:17
X
XJust type Ctrl-C
X
XKN ITS going down in 5:00
XCULPRIT =  ___004 LOCK   21:13:38
X
X
X_
XKN ITS 1647 NOT IN OPERATION 21:13:38
XPFTHMG DRAGON CHANNA _DRGN_ TIMES  WRITE  21:13:38
XPFTHMG DRAGON CHANNA LOGOUT TIMES  DELRNM 21:13:38
X
XBe patient and it will finish with:
X
XSHUTDOWN COMPLETE  
XPI LEVEL 7 BUGDDT.  TYPE <ALTMODE>P TO CONTINUE.
XYOU ARE NOW IN DDT.
XBUGPC/   CAIA COFFI4+1   $Q-2/   JRST COFFI7   
X
XIf ITS gets stuck shutting down for more than five minutes just
Xcontinue from here:
X
XAt this point type Ctrl-\ to abort KLH10 back to the monitor.
X
X[HALTED: FE interrupt]
XKLH10> 
X
Xand quit KLH10
X
XKLH10> quit
XAre you sure you want to quit? [Confirm]y
XShutting down...Bye!
X$ 
X
XITS uses DEL for erasing characters.  ITS defaults to dumb hardcopy
Xterminal settings.  This is a pain so you want to configure ITS to
Xuse something nicer.  ITS knows about VT52.  If you are using xterm
Xfrom XFree86 you can get into VT52 mode by running a script like this:
X
X#! /bin/sh
X
Xawk 'END {printf "%c[?2l", 27}' </dev/null
X
XFrom ITS run
X:tctyp vt52 scroll
X
XOn your VT52 mode terminal emulator.
X
XAn alternative is that you can use vt100 mode via the CRTSTY program
Xwhich is a bit like window(1) in that you end up on something like a
Xpty but only one full screen window is available and it does terminal
Xemulation on it.  You will be automatically logged in a second time on
Xthe same terminal as a crufty side-effect.
X
X:crtsty vt100 speed 9600
END-of-its/files/README.FIRST
exit
Comment 12 Ken Stailey 2002-02-17 19:17:42 UTC
More docs

diff -ur its/files/README.FIRST /usr/ports/emulators/its/files/README.FIRST
--- its/files/README.FIRST	Sun Feb 17 10:32:05 2002
+++ /usr/ports/emulators/its/files/README.FIRST	Sun Feb 17 13:38:56 2002
@@ -122,7 +122,7 @@
 awk 'END {printf "%c[?2l", 27}' </dev/null
 
 From ITS run
-:tctyp vt52 scroll
+:tctyp vt52
 
 On your VT52 mode terminal emulator.
 
@@ -133,3 +133,55 @@
 the same terminal as a crufty side-effect.
 
 :crtsty vt100 speed 9600
+
+Run :info and look at the introductory information about the
+filesystem.  I did not find that it covers directory operations very
+well so here is what I have found out.  ITS does have a process tree
+(try the PEEK command) but does not have a directory tree.  There is a
+Master File Directory MFD (try DSKUSE * or DIRED and then MFD.  Use
+"Q" to quit after either of those.) and User File Directories UFDs one
+level deep only.  The only way to remove a directory is to delete its
+contents and run the salvager. The salvager is the ITS equivalent of
+fsck and will automatically be run at boot time.  To create a new
+directory provide certain options to the open UUO (ITS equivalent of
+system call; try the DOC UUO command.)  Since the PRINT command calls
+the open UUO you can create a directory using print:
+
+:print ..new. (udir) dirnam;
+
+Where dirnam; is the name of the directory to be created.  Directory
+names are limited to six characters.
+
+Missing from this ITS distribution is the INQUIR database.  It
+contains user information.  There were too many personal details in it
+and no one has been able to scrub it so it was left out.  This means
+you cannot have a complete user account yet.  The best you can do is
+to pick a user name and make yourself a directory with that name and
+put a login script in it.  In this example the user "user" is created:
+
+:login user
+:print ..new. (udir) user;
+:emacs login user
+[add startup code like ":tctyp vt52" and ^X^S to save ^X^C to exit]
+
+You log out with <ALTMODE><ALTMODE>u which is [Esc][Esc]u and
+represented in the documentation as $$u
+
+The ITS equivalent of $PATH is implemented by scanning all
+directories for files for files with TS as the first name and
+the second name set to the command you issued.  By convention
+most commands are in the SYS; SYS1; ... SYSN; directories.
+ITS supports symlinks via the LINK command and TS name is often
+a symlink.
+
+ITS equivalent of job control works by typing ^Z to interrupt the
+current program.  To get back to the DDT prompt "*" use $^K
+
+Don't like DDT as the shell?  Try MONMOD to use monitor mode where
+the colon is printed for you.  DDTMOD get you back.  Or try SHELL
+to bring up a UNIX-like shell.
+
+Zork was developed in MDL (muddle) on an ITS system but apparently it
+suffered from being too popular.  Try the ZORK command to see what
+happened.  A scrap of MDL source code is left (:find @muddle) but I
+don't know how to MIDAS it.
Comment 13 Ken Stailey 2002-02-19 14:30:16 UTC
Changed to support its-user-install(1) command.  Resubmitted whole
because "diff -ur" patches can't add files *sigh*

# This is a shell archive.  Save it in a file, remove anything before
# this line, and then unpack it by entering "sh file".  Note, it may
# create directories; files and directories will be owned by you and
# have default permissions.
#
# This archive contains:
#
#	its
#	its/pkg-comment
#	its/Makefile
#	its/distinfo
#	its/pkg-plist
#	its/pkg-descr
#	its/files
#	its/files/its.sh
#	its/files/MIT-ITS-papers
#	its/files/README.FIRST
#	its/files/klh10-kn-freebsd.ini.in
#	its/files/its-user-install.sh
#
echo c - its
mkdir -p its > /dev/null 2>&1
echo x - its/pkg-comment
sed 's/^X//' >its/pkg-comment << 'END-of-its/pkg-comment'
XBootable ITS filesystem for KLH-10 PDP-10 emulator
END-of-its/pkg-comment
echo x - its/Makefile
sed 's/^X//' >its/Makefile << 'END-of-its/Makefile'
X# New ports collection makefile for:   its
X# Date created:        11 January 2002
X# Whom:                kstailey
X#
X# $FreeBSD$
X#
X
XPORTNAME=	its
XPORTVERSION=	a11110
XCATEGORIES=	emulators
XMASTER_SITES=	ftp://ftp.its.os.org/its/klh10/
XDISTNAME=	pi-${PORTNAME}-${PORTVERSION}
XEXTRACT_SUFX=	.tar
X
XMAINTAINER=	kstailey@yahoo.com
X
XBUILD_DEPENDS=	kn10-ks:${PORTSDIR}/emulators/klh10
XRUN_DEPENDS=	kn10-ks:${PORTSDIR}/emulators/klh10
X
XONLY_FOR_ARCHS=	i386	# really KLH10 has this problem.
X
XNO_WRKSUBDIR=	yes
XNO_BUILD=	yes
XNO_PACKAGE=	PI ITS RP06 disk image is too big.
XNO_CDROM=	PI ITS RP06 disk image is too big.
X
X# KLH10_HOME and DRIVER_DIR must be set to the same locations
X# that the klh10 port uses
XKLH10_DIR=	klh10-ks-its
XKLH10_HOME=	${PREFIX}/share/${KLH10_DIR}
XDRIVER_DIR=	${PREFIX}/libexec/${KLH10_DIR}
XIMAGE_HOME?=	${KLH10_HOME}
XIMAGE_NAME=	PI-ITS-RP06.0-dbd9
XIMAGE_GZ=	${IMAGE_NAME}.gz
XDOCDIR=		${PREFIX}/share/doc/${KLH10_DIR}
XPLIST_SUB+=	IMAGE_HOME=${IMAGE_HOME}
X
Xdo-install:
X	@ ${ECHO} Installing compressed PI ITS RP06 disk image in ${IMAGE_HOME}
X.if (${IMAGE_HOME} == ${KLH10_HOME})
X	@ ${ECHO} Use IMAGE_HOME=/my/directory to relocate.
X.endif
X	@ ${MKDIR} ${IMAGE_HOME}
X	@ ${INSTALL_DATA} ${WRKDIR}/${IMAGE_GZ} ${IMAGE_HOME}/${IMAGE_GZ}
X	@ ${INSTALL_DATA} ${FILESDIR}/klh10-kn-freebsd.ini.in ${KLH10_HOME}
X	@ ${INSTALL_SCRIPT} ${FILESDIR}/its.sh ${PREFIX}/bin/its
X	@ ${SED} -e "s;@PI-IMG@;${IMAGE_NAME};g" \
X		 -e "s;@KLH-SHARE@;${KLH10_HOME};g" \
X		 -e "s;@KLH-LIBEX@;${DRIVER_DIR};g" \
X		${FILESDIR}/its-user-install.sh > ${WRKSRC}/its-user-install
X	@ ${INSTALL_SCRIPT} ${WRKSRC}/its-user-install ${PREFIX}/bin
X	@ ${INSTALL_MAN} ${FILESDIR}/MIT-ITS-papers ${DOCDIR}
X	@ ${SED} -e "s;@PREFIX@;${PREFIX};g" \
X		${FILESDIR}/README.FIRST >${WRKSRC}/README.FIRST
X	@ ${INSTALL_MAN} ${WRKSRC}/README.FIRST ${DOCDIR}
X	@ ${ECHO} "***  Please read ${DOCDIR}/README.FIRST"
X.include <bsd.port.mk>
END-of-its/Makefile
echo x - its/distinfo
sed 's/^X//' >its/distinfo << 'END-of-its/distinfo'
XMD5 (pi-its-a11110.tar) = 277494d17643ca2d90ff04122be4e993
END-of-its/distinfo
echo x - its/pkg-plist
sed 's/^X//' >its/pkg-plist << 'END-of-its/pkg-plist'
Xbin/its
Xbin/its-user-install
X%%PORTDOCS%%share/doc/klh10-ks-its/MIT-ITS-papers
X%%PORTDOCS%%share/doc/klh10-ks-its/README.FIRST
Xshare/klh10-ks-its/klh10-kn-freebsd.ini.in
X@unexec rm -f %%IMAGE_HOME%%/PI-ITS-RP06.0-dbd9.gz
END-of-its/pkg-plist
echo x - its/pkg-descr
sed 's/^X//' >its/pkg-descr << 'END-of-its/pkg-descr'
XThis is an image of a PI (Public ITS) filesystem that can be booted on
Xthe KLH10 PDP-10 emulator.
X
XThe emulator image is about 45MB compressed and 170MB uncompressed.
XThe installation needs to have a minimum of 45MB in ports/disfiles
Xplus 45MB in its/work plus 45MB in the installation directory which
Xdefaults to /usr/local/share/klh10-ks-its.  That's about 135MB total
Xbut "make clean" will delete 45MB and "make distclean" will delete
Xanother 45MB leaving you with only 45MB.  After "make install" you
Xmust run the "its-user-install" script as a regular user to install an
Xuncompressed 170MB RP06 filesystem image and setup emulator support
Xfiles.
X
XFor more information about ITS see WWW: http://www.its.os.org/
END-of-its/pkg-descr
echo c - its/files
mkdir -p its/files > /dev/null 2>&1
echo x - its/files/its.sh
sed 's/^X//' >its/files/its.sh << 'END-of-its/files/its.sh'
X#!/bin/sh
X#
X# $FreeBSD$
X#
X# Run KLH10 with KS-ITS hardware configuration and ITS OS configuration
X# to bring up MIT Incompatible Timesharing System emulation.
X
Xif [ ! -r ~/.itsrc ]; then
X    echo its: My config file '(~/.itsrc)' is missing!
X    echo its: Did you remember to run its-user-install\?
X    echo its: Terminating.
X    exit 1
Xfi
X
Xset -e   # croak on corrupt config file.
X. ~/.itsrc
Xset +e
X
Xif [ "$KLH10_HOME" = "" ]; then
X    echo its: KLH10_HOME is missing from my config file.
X    echo its: terminating.
X    exit 1
Xelif [ ! -d "$KLH10_HOME" ]; then
X    echo its: $KLH10_HOME is not a directory.
X    echo its: terminating.
X    exit 1
Xfi
X
Xif [ "$PI_IMAGE" = "" ]; then
X    echo its: PI_IMAGE is missing from my config file.
X    echo its: Terminating.
X    exit 1
Xelif [ ! -w "$PI_IMAGE" ]; then
X    echo its: $PI_IMAGE is not a writable file.
X    echo its: Terminating.
X    exit 1
Xfi
X
Xcd $KLH10_HOME
Xexec lockf -t 0 -k $PI_IMAGE kn10-ks klh10-kn-freebsd.ini
END-of-its/files/its.sh
echo x - its/files/MIT-ITS-papers
sed 's/^X//' >its/files/MIT-ITS-papers << 'END-of-its/files/MIT-ITS-papers'
XITS Status report (includes architecture info) from 1972
Xftp://publications.ai.mit.edu/ai-publications/0-499/AIM-238.ps
X
XITS reference manual from 1969:
Xftp://publications.ai.mit.edu/ai-publications/0-499/AIM-161A.ps
X
XMidas macro assembler documentation from 1965:
Xftp://publications.ai.mit.edu/ai-publications/0-499/AIM-090.ps
X
XDDT debugger ("system apex procedure" i.e. "shell") from 1968
Xftp://publications.ai.mit.edu/ai-publications/0-499/AIM-147.ps
X
XEmacs text editor (original ITS version)
Xftp://publications.ai.mit.edu/ai-publications/500-999/AIM-519A.ps
X
XThese files may be converted to PDF or gzipped to save space:
X$ ps2pdf13 AIM-238.ps AIM-238.pdf
END-of-its/files/MIT-ITS-papers
echo x - its/files/README.FIRST
sed 's/^X//' >its/files/README.FIRST << 'END-of-its/files/README.FIRST'
XConsider adding firewall protection for the KLH-10 emulator before
Xever running it.  See @PREFIX@/share/doc/its/pubits/adm directory for
Xsamples.
X
XTo setup the emulator you must run the its-user-install(1) command.
XIt takes no arguments.  It is best to run it as a regular (non-root)
Xuser.  Once that has been done to start ITS run the its(1) command.
XIt also takes no arguments.
X
XThe first time the ITS boots it will not know the time of day.  ITS
Xwill display this message:
X
XThe time could not be set because:
XNo host responded.
XIt will be necessary for someone to set the time
Xmanually by logging in and running :PDSET.
X
XTell ITS to activate the apex procedure, DDT, by typing a Ctrl-Z.
XWhen you type that you will see:
X
XKN ITS.1647. DDT.1545.
XTTY 0
XYou're all alone, Fair share = 0%
X
X(ITS does not know the date, so messages cannot be reviewed right now.)
X
XThen run PDSET by typing (colon and all)
X
X:pdset
X
XITS will suggest that you log in but you don't have to.
X
X(Please Log In)
X___002 PDSET  IOTLSR  
X
XNow enter the time and save it.  First the century:
X
X20C
X
XNext the YYMMDD:
X
X020219D
X
XThen the HHMMSS (try to time it so you have some lead time because it
Xwill become active when you save it.)
X
X235115T
X
XNow save the time:
X
X!.
X
XNow exit PDSET
X
XX
X
XYou will have no feedback from the exit operation except that new
Xcommands will be echoed in lower case.  Now bring down ITS so you can
Xstart it without being root:
X
X:lock
X(Please Log In)
X LOCK.154  
X_
X
Xthe _ is a prompt, do not type it.  Type
X
X5down
X
XLOCK is very picky about typos so be careful.  It does not need the
XEnter key so don't use it.
X
XDO YOU REALLY WANT THE SYSTEM TO GO DOWN?
X
XType "y"
X
Xy
X___004 
X       PLEASE ENTER A BRIEF MESSAGE TO USERS, ENDED BY ^C
XLOCK   SYS    DOWN   MAIL   WRITE  21:13:17
X
XJust type Ctrl-C for the message unless you have a burning desire to
Xtalk to yourself via ITS.
X
XKN ITS going down in 5:00
XCULPRIT =  ___004 LOCK   21:13:38
X
X
X_
XKN ITS 1647 NOT IN OPERATION 21:13:38
XPFTHMG DRAGON CHANNA _DRGN_ TIMES  WRITE  21:13:38
XPFTHMG DRAGON CHANNA LOGOUT TIMES  DELRNM 21:13:38
X
XAfter the "NOT IN OPERATION" message only very special programs like
Xthe accounting dragon, PFTHMG DRAGON, may run.  Be patient and it will
Xfinish with:
X
XSHUTDOWN COMPLETE  
XPI LEVEL 7 BUGDDT.  TYPE <ALTMODE>P TO CONTINUE.
XYOU ARE NOW IN DDT.
XBUGPC/   CAIA COFFI4+1   $Q-2/   JRST COFFI7   
X
XIf ITS gets stuck shutting down for more than five minutes just
Xcontinue from here:
X
XAt this point type Ctrl-\ to abort KLH10 back to the monitor.
X
X[HALTED: FE interrupt]
XKLH10> 
X
Xand quit KLH10
X
XKLH10> quit
XAre you sure you want to quit? [Confirm]y
XShutting down...Bye!
X$ 
X
XITS uses DEL for erasing characters.  ITS defaults to dumb hardcopy
Xterminal settings.  This is a pain so you want to configure ITS to
Xuse something nicer.  ITS knows about VT52.  If you are using xterm
Xfrom XFree86 you can get into VT52 mode by running a script like this:
X
X#! /bin/sh
X
Xawk 'END {printf "%c[?2l", 27}' </dev/null
X
XFrom ITS run
X:tctyp vt52
X
XOn your VT52 mode terminal emulator.
X
XAn alternative is that you can use vt100 mode via the CRTSTY program
Xwhich is a bit like window(1) in that you end up on something like a
Xpty but only one full screen window is available and it does terminal
Xemulation on it.  You will be automatically logged in a second time on
Xthe same terminal as a crufty side-effect.
X
X:crtsty vt100 speed 9600
X
XRun :info and look at the introductory information about the
Xfilesystem.  I did not find that it covers directory operations very
Xwell so here is what I have found out.  ITS does have a process tree
X(try the PEEK command) but does not have a directory tree.  There is a
XMaster File Directory MFD (try DSKUSE * or DIRED and then MFD.  Use
X"Q" to quit after either of those.) and User File Directories UFDs one
Xlevel deep only.  The only way to remove a directory is to delete its
Xcontents and run the salvager. The salvager is the ITS equivalent of
Xfsck and will automatically be run at boot time.  To create a new
Xdirectory provide certain options to the open UUO (ITS equivalent of
Xsystem call; try the DOC UUO command.)  Since the PRINT command calls
Xthe open UUO you can create a directory using print:
X
X:print ..new. (udir) dirnam;
X
XWhere dirnam; is the name of the directory to be created.  Directory
Xnames are limited to six characters.
X
XMissing from this ITS distribution is the INQUIR database.  It
Xcontains user information.  There were too many personal details in it
Xand no one has been able to scrub it so it was left out.  This means
Xyou cannot have a complete user account yet.  The best you can do is
Xto pick a user name and make yourself a directory with that name and
Xput a login script in it.  In this example the user "user" is created:
X
X:login user
X:print ..new. (udir) user;
X:emacs login user
X[add startup code like ":tctyp vt52" and ^X^S to save ^X^C to exit]
X
XYou log out with <ALTMODE><ALTMODE>u which is [Esc][Esc]u and
Xrepresented in the documentation as $$u
X
XThe ITS equivalent of $PATH is implemented by scanning all
Xdirectories for files for files with TS as the first name and
Xthe second name set to the command you issued.  By convention
Xmost commands are in the SYS; SYS1; ... SYSN; directories.
XITS supports symlinks via the LINK command and TS name is often
Xa symlink.
X
XITS equivalent of job control works by typing ^Z to interrupt the
Xcurrent program.  To get back to the DDT prompt "*" use $^K
X
XDon't like DDT as the shell?  Try MONMOD to use monitor mode where the
Xcolon is printed for you.  DDTMOD gets you back.  Or try SHELL to
Xbring up a UNIX-like shell.
X
XZork was developed in MDL (muddle) on an ITS system but apparently it
Xsuffered from being too popular.  Try the ZORK command to see what
Xhappened.  A scrap of MDL source code is left (:find @muddle) but I
Xdon't know how to MIDAS it.
END-of-its/files/README.FIRST
echo x - its/files/klh10-kn-freebsd.ini.in
sed 's/^X//' >its/files/klh10-kn-freebsd.ini.in << 'END-of-its/files/klh10-kn-freebsd.ini.in'
X; KLH10 emulator configuration for KN ITS system from FreeBSD ports collection..
X
X; Define basic KS10 device config - two RH11s each on its own Unibus
X
Xdevdef rh0  ub1   rh11   addr=776700 br=6 vec=254
Xdevdef rh1  ub3   rh11   addr=772440 br=6 vec=224
X
X; Provide one disk, one tape in config ITS expects
X
Xdevdef dsk0 rh0.0 rp     type=rp06 format=dbd9 path=@KLH-HOME@/PI-ITS-RP06.0-dbd9 iodly=0
Xdevdef mta0 rh1.0 tm02   fmtr=tm03 type=tu45
X
X; ITS wants a 60Hz clock, allow it.  Need this until defaults OK.
Xset clk_ithzfix=60
X
X; Define IMP for KN
Xdevdef imp ub3 lhdh addr=767600 br=6 vec=250 ipaddr=@IPADDR@ gwaddr=@GWADDR@
X
X; Dummy definitions.  Only one DZ is still (apparently) needed.
Xdevdef dz0  ub3   dz11   addr=760010 br=5 vec=340
X;devdef dz1  ub3   dz11   addr=760020 br=5 vec=350
X;devdef chaos ub3  ch11   addr=764140 br=5 vec=270
X
X; Define new HOST device hackery
Xdevdef idler ub3 host addr=777000
X
X; Preload ITS for convenience
Xload @.its-647kn-u
X
X; Use "GO 774000" to start DDT, else just "GO" to start ITS
X
END-of-its/files/klh10-kn-freebsd.ini.in
echo x - its/files/its-user-install.sh
sed 's/^X//' >its/files/its-user-install.sh << 'END-of-its/files/its-user-install.sh'
X#! /bin/sh
X
X# $FreeBSD$
X
X# 1) zcat the PI fs image into a user's directory (the compressed
X#    image location is also configurable via "make install")
X#
X# 2) copy or lndir the /usr/local/share/klh10-ks-its/* (this location
X#    is immutable) bits into a user's directory
X#
X# 3) generate the klh-kn-its-freebsd .ini file for the user
X#
X# 4) generate ~/.itsrc file for its(1) command so that multple users
X#    can use its(1) with different filesystem images.
X
Xumask 022
X
X# remove symlinks in cleanup()?
X
Xcleanup() {
X    rm -f $KLH10_HOME/@PI-IMG@
X    echo its-install-user: Terminating.
X    exit 1
X}
X
Xtrap cleanup 1 2 3 15
X
Xvalidate_ip() {
X    echo $1 | grep -q -s '[^0-9\.]'
X    if [ $? != 1 ]; then
X	echo its-install-user: IP address must be digits and periods only.
X	return 1
X    fi
X    echo $1 | grep -q -s '\..*\..*\.'
X    if [ $? != 0 ]; then
X	echo its-install-user: IP address must have at least three periods.
X	return 1
X    fi
X    echo $1 | grep -q -s '\..*\..*\..*\.'
X    if [ $? = 0 ]; then
X	echo its-install-user: IP address must not exceed three periods.
X	return 1
X    fi
X    echo $1 | grep -q -s '\.\.'
X    if [ $? = 0 ]; then
X	echo its-install-user: IP address must not have consecutive periods.
X	return 1
X    fi
X    OLDIFS="$IFS"
X    IFS=.
X    set $1
X    for i in $* ; do
X	if [ $1 -gt 255 ]; then
X	    echo its-install-user: Octet of IP address must not exceed 255.
X	    IFS="$OLDIFS"
X	    return 1 
X	fi
X    done
X    IFS="$OLDIFS"
X    return 0
X}
X
Xif [ ! -d @KLH-SHARE@ ]; then
X    echo its-install-user: Can\'t find the emulator directory.
X    cleanup
Xfi
X
Xcd @KLH-SHARE@
X
Xif [ ! -r @PI-IMG@.gz ]; then
X    echo its-install-user: The compressed PI disk image is missing.
X    cleanup
Xfi
X
Xvalid_input=false
Xwhile [ $valid_input = false ]; do
X    KLH10_HOME=~/klh10-its-home
X    echo Where do you want to install the 170MB filesystem image\?
X    echo -n "[default: $KLH10_HOME]: "
X    read ans
X    if [ "$ans" != "" ]; then
X	KLH10_HOME=$ans
X    fi
X
X    if [ -e $KLH10_HOME -a ! -d $KLH10_HOME ]; then
X	echo There already is a non-directory $KLH10_HOME in the filesystem.
X	continue
X    fi
X    if [ ! -d $KLH10_HOME ]; then
X	echo -n "$KLH10_HOME is not an existing directory.  Create it? (y/n) "
X	read yorn
X	case "$yorn" in
X	y|Y)
X	    if ! mkdir -p $KLH10_HOME ; then
X		echo its-install-user: Can\'t make the target directory.
X		cleanup
X	    else
X		valid_input=true
X	    fi
X	;;
X	n|N)
X	    echo Type the interupt key to quit or try again.
X	;;
X	*)
X	    echo "I do not recognize your answer. ($yorn)"
X	;;
X	esac
X    elif [ ! -w $KLH10_HOME ]; then
X	if ! chmod u+w $KLH10_HOME || chmod g+w $KLH10_HOME; then
X	    echo its-install-user: Can\'t write in $KLH10_HOME
X	elif [ ! -w $KLH10_HOME ]; then
X		echo its-install-user: Can\'t write in $KLH10_HOME
X	else
X	    valid_input=true
X	fi
X    else
X	valid_input=true
X    fi
Xdone
X
Xecho Extracting @PI-IMG@.gz into $KLH10_HOME
Xzcat @PI-IMG@.gz > $KLH10_HOME/@PI-IMG@
X
Xif [ $? != 0 ]; then
X    echo its-install-user: What a mess--the extract failed.
X    cleanup
Xfi
X
Xecho Linking up the emulator support files.
Xfor i in *; do
X    case $i in
X    @PI-IMG@.gz)  # exclusions
X    ;;
X    *)
X        rm -f $KLH10_HOME/$i && ln -s @KLH-SHARE@/$i $KLH10_HOME
X        if [ $? != 0 ]; then
X	    echo its-install-user: Failed to make symlinks.
X	    cleanup
X	fi
X    ;;
X    esac
Xdone
Xcd @KLH-LIBEX@
Xfor i in *; do
X    rm -f $KLH10_HOME/$i && ln -s @KLH-LIBEX@/$i $KLH10_HOME
X    if [ $? != 0 ]; then
X	echo its-install-user: Failed to make symlinks.
X	cleanup
X    fi
Xdone
Xcd $KLH10_HOME
X
XEM_IP=10.134.198.236
Xvalid_input=false
Xwhile [ $valid_input = false ]; do
X    echo -n "What is the IP address for the emulated PDP-10? [$EM_IP]: "
X    read ans
X    if [ "$ans" != "" ]; then
X	if validate_ip $ans ; then
X	    valid_input=true
X	    EM_IP=$ans
X	fi
X    else
X	valid_input=true
X    fi
Xdone
X
XGW_IP=10.0.0.1
Xvalid_input=false
Xwhile [ $valid_input = false ]; do
X    echo -n "What is the IP address for the gateway' [$GW_IP]: "
X    read ans
X    if [ "$ans" != "" ]; then
X	if validate_ip $ans ; then
X	    valid_input=true
X	    GW_IP=$ans
X	fi
X    else
X	valid_input=true
X    fi
Xdone
X
Xsed -e "s;@IPADDR@;$EM_IP;g" \
X    -e "s;@GWADDR@;$GW_IP;g" \
X    -e "s;@KLH-HOME@;$KLH10_HOME;g" \
X    < klh10-kn-freebsd.ini.in > klh10-kn-freebsd.ini
Xif [ $? != 0 ]; then
X    echo its-install-user: Failed to generate ini file.
X    cleanup
Xfi
Xrm -f klh10-kn-freebsd.ini.in
X
Xrm -f ~/itsrc
Xecho KLH10_HOME=$KLH10_HOME > ~/.itsrc
Xecho PI_IMAGE=$KLH10_HOME/@PI-IMG@ >> ~/.itsrc
Xif [ $? != 0 ]; then
X    echo its-install-user: Failed to generate rc file.
X    cleanup
Xfi
END-of-its/files/its-user-install.sh
exit
Comment 14 Ken Stailey 2002-02-19 14:57:46 UTC
Patched to prevent unprivleged users from running dpimp.  Users must
now be in group network in order to use a networked KLH-10 and ITS.
Non-networked versions may still be used.  Also fixed a few typos.

diff -ur its/files/its-user-install.sh /usr/ports/emulators/its/files/its-user-install.sh
--- its/files/its-user-install.sh	Tue Feb 19 09:32:15 2002
+++ /usr/ports/emulators/its/files/its-user-install.sh	Tue Feb 19 09:50:44 2002
@@ -50,8 +50,8 @@
     IFS=.
     set $1
     for i in $* ; do
-	if [ $1 -gt 255 ]; then
-	    echo its-install-user: Octet of IP address must not exceed 255.
+	if [ $i -gt 255 ]; then
+	    echo its-install-user: Octets of IP address must not exceed 255.
 	    IFS="$OLDIFS"
 	    return 1 
 	fi
@@ -59,6 +59,23 @@
     IFS="$OLDIFS"
     return 0
 }
+
+in_network=false
+for i in `groups`; do
+    if [ $i = network ]; then
+	in_network=true
+	break
+    fi
+done
+
+if [ `whoami` = root ]; then
+    in_network=true
+fi
+
+if [ $in_network = false ]; then
+    echo WARNING: You must be in group network in order to run a networked ITS.
+    echo WARNING: You may still run a non-networked ITS.
+fi
 
 if [ ! -d @KLH-SHARE@ ]; then
     echo its-install-user: Can\'t find the emulator directory.
diff -ur its/files/its.sh /usr/ports/emulators/its/files/its.sh
--- its/files/its.sh	Tue Feb 19 09:32:15 2002
+++ /usr/ports/emulators/its/files/its.sh	Tue Feb 19 09:38:07 2002
@@ -5,6 +5,23 @@
 # Run KLH10 with KS-ITS hardware configuration and ITS OS configuration
 # to bring up MIT Incompatible Timesharing System emulation.
 
+in_network=false
+for i in `groups`; do
+    if [ $i = network ]; then
+	in_network=true
+	break
+    fi
+done
+
+if [ `whoami` = root ]; then
+    in_network=true
+fi
+
+if [ $in_network = false ]; then
+    echo WARNING: You must be in group network in order to run a networked ITS.
+    echo WARNING: You may still run a non-networked ITS.
+fi
+
 if [ ! -r ~/.itsrc ]; then
     echo its: My config file '(~/.itsrc)' is missing!
     echo its: Did you remember to run its-user-install\?
Comment 15 Edwin Groothuis freebsd_committer freebsd_triage 2003-02-05 06:21:25 UTC
State Changed
From-To: open->closed

If I'm not mistaken, this one is done with ports/39912.