1
0
mirror of https://github.com/PDP-10/its.git synced 2026-01-11 23:53:12 +00:00

Build ITS with Cornwell's KS10.

This commit is contained in:
Lars Brinkhoff 2022-01-01 11:12:57 +01:00
parent a43521e001
commit 8db6735d72
9 changed files with 1350 additions and 16 deletions

View File

@ -13,7 +13,7 @@ jobs:
strategy:
matrix:
os: [ubuntu-18.04]
emulator: [simh, klh10, pdp10-ka, pdp10-kl]
emulator: [simh, klh10, pdp10-ka, pdp10-kl, pdp10-ks]
steps:
- uses: actions/checkout@v2
- name: Install dependencies

View File

@ -77,6 +77,7 @@ KLH10=tools/klh10/tmp/bld-ks-its/kn10-ks-its
SIMH=tools/simh/BIN/pdp10
KA10=tools/sims/BIN/pdp10-ka
KL10=tools/sims/BIN/pdp10-kl
KS10=tools/sims/BIN/pdp10-ks
ITSTAR=tools/itstar/itstar
WRITETAPE=tools/tapeutils/tapewrite
MAGFRM=tools/dasm/magfrm
@ -146,6 +147,14 @@ out/pdp10-kl/stamp/emulators: $(VT52) $(TEK)
$(MKDIR) $(OUT)/stamp
$(TOUCH) $@
out/pdp10-ks/stamp/its: $(OUT)/rp0.dsk
$(MKDIR) $(OUT)/stamp
$(TOUCH) $@
out/pdp10-ks/stamp/emulators: $(GT40) $(VT52)
$(MKDIR) $(OUT)/stamp
$(TOUCH) $@
$(OUT)/rp0.dsk: build/simh/init $(OUT)/minsys.tape $(OUT)/minsrc.tape $(OUT)/salv.tape $(OUT)/dskdmp.tape build/build.tcl $(OUT)/sources.tape $(OUT)/stamp/pdp10
PATH="$(CURDIR)/tools/simh/BIN:$$PATH" expect -f build/$(EMULATOR)/build.tcl $(IP) $(GW)
@ -246,6 +255,10 @@ out/pdp10-kl/stamp/pdp10: $(KL10) start
$(MKDIR) $(OUT)/stamp
$(TOUCH) $@
out/pdp10-ks/stamp/pdp10: $(KS10) start
$(MKDIR) $(OUT)/stamp
$(TOUCH) $@
out/klh10/system:
$(MKDIR) $(OUT)/system
cp=0; ca=0; \
@ -268,6 +281,10 @@ out/pdp10-kl/system:
$(MKDIR) $(OUT)/system
cp build/pdp10-kl/config.* $(OUT)/system
out/pdp10-ks/system:
$(MKDIR) $(OUT)/system
cp build/pdp10-ks/config.* $(OUT)/system
out/klh10/dskdmp.ini: build/mchn/$(MCHN)/dskdmp.txt Makefile
cp=';'; ca=''; \
$(TEST) $(CHAOS) != no && cp='' && ca='myaddr=$(CHAOS) $(CHAFRIENDS)'; \
@ -310,6 +327,9 @@ $(KA10):
$(KL10):
$(MAKE) -C tools/sims pdp10-kl
$(KS10):
$(MAKE) -C tools/sims pdp10-ks
$(ITSTAR):
$(MAKE) -C tools/itstar

View File

@ -52,9 +52,9 @@ we'd be delighted to test this on a real KS10.
To build ITS with this repository, you need some tools installed; see
the table below. Ensure all submodules are checked out, and then type
`make EMULATOR=simh`, `make EMULATOR=pdp10-ka`, `make
EMULATOR=pdp10-kl`, or `make EMULATOR=klh10`. This will leave built
files in the `out` directory, some of which are disk images with ITS
installed.
EMULATOR=pdp10-kl`, `make EMULATOR=pdp10-ks`, or `make
EMULATOR=klh10`. This will leave built files in the `out` directory,
some of which are disk images with ITS installed.
| Emulator | Dependencies |
| --- | --- |
@ -62,6 +62,7 @@ installed.
| simh | git, c compiler, make, expect, curses, autoconf, sdl2
| pdp10-ka | git, c compiler, make, expect, curses, autoconf, sdl2, sdl2-image, sdl2-net, gtk3
| pdp10-kl | git, c compiler, make, expect, curses, autoconf, sdl2, sdl2-image, gtk3
| pdp10-ks | git, c compiler, make, expect, curses, autoconf, sdl2
### Usage
@ -108,17 +109,17 @@ along with ITS. They can be started conveniently with the `start`
script, or separately. Not all terminal emulators are set up to work
with all PDP-10 emulators by default.
| Name | Description | Type | klh10 | pdp10-ka | pdp10-kl | simh
| ------- | ----------------- | ------ | ----- | -------- | -------- | ----
| type340 | Type 340 | vector | no | yes | no | no
| gt40 | GT40 PDP-11 | vector | no | yes | no | yes
| imlac | Imlac PDS-1 | vector | no | yes | no | no
| simh_imlac | Imlac PDS-1 | vector | no | yes | no | no
| tv11 | Knight TV PDP-11 | cpu | no | yes | no | no
| tvcon | Knight TV console | raster | no | yes | no | no
| datapoint | Datapoint 3300 | text | no | yes | no | no
| vt52 | VT52 | text | no | yes | yes | yes
| tek | Tektronix 4010 | vector | no | yes | yes | no
| Name | Description | Type | klh10 | pdp10-ka | pdp10-kl | pdp10-ks | simh
| ------- | ----------------- | ------ | ----- | -------- | -------- | -------- | ----
| type340 | Type 340 | vector | no | yes | no | no | no
| gt40 | GT40 PDP-11 | vector | no | yes | no | yes | yes
| imlac | Imlac PDS-1 | vector | no | yes | no | no | no
| simh_imlac | Imlac PDS-1 | vector | no | yes | no | no | no
| tv11 | Knight TV PDP-11 | cpu | no | yes | no | no | no
| tvcon | Knight TV console | raster | no | yes | no | no | no
| datapoint | Datapoint 3300 | text | no | yes | no | no | no
| vt52 | VT52 | text | no | yes | yes | yes | yes
| tek | Tektronix 4010 | vector | no | yes | yes | no | no
### Documentation

12
build/pdp10-ks/boot Normal file
View File

@ -0,0 +1,12 @@
set console wru=034
set cpu its
set cpu idle
set dz 8b lines=8
at dz0 10004
# VT52
at dz0 line=7,10018
# GT40
at dz0 line=6,10019
set rpa0 rp06
at rpa0 out/pdp10-ks/rp0.dsk
b rpa0

64
build/pdp10-ks/build.tcl Normal file
View File

@ -0,0 +1,64 @@
set build [pwd]/build
set out "out/$env(EMULATOR)"
set emulator_escape "\034"
proc start_salv {} {
uplevel #0 {spawn ./tools/sims/BIN/pdp10-ks build/pdp10-ks/init}
setup_timeout
respond "sim>" "show ver\r"
respond "sim>" "b tua1\r"
expect "MTBOOT"
}
proc restart_nsalv {} {
respond "sim>" "b tua1\r"
expect "MTBOOT"
}
proc start_dskdmp args {
global out
set tape ""
if {[llength $args] == 1} {
set tape [lindex $args 0]
} {
set tape "$out/sources.tape"
}
respond "sim>" "at tua0 $tape\r"
respond "sim>" "at tua2 $out/dskdmp.tape\r"
respond "sim>" "b tua2\r"
respond "MTBOOT" "\033g"
}
proc start_its {} {
uplevel #0 {spawn ./tools/sims/BIN/pdp10-ks build/pdp10-ks/boot}
setup_timeout
}
proc mount_tape {file} {
respond "sim>" "at tua0 $file\r"
respond "sim>" "c\r"
}
proc create_tape {file} {
respond "sim>" "at tua0 $file\r"
respond "sim>" "c\r"
}
proc quit_emulator {} {
respond "sim>" "q\r"
expect eof
}
proc initialize_comsat {} {
# commented out because you cannot run COMSAT initialization without network
# support
#respond "*" ":job comsat\r"
#respond "*" ":load .mail.;comsat launch\r"
#respond "*" "debug/-1\r"
#type "mfinit\033g"
}
source build/ks10/include.tcl
source build/mchn/$mchn/mchn.tcl
source build/build.tcl

1176
build/pdp10-ks/config.202 Normal file

File diff suppressed because it is too large Load Diff

7
build/pdp10-ks/init Normal file
View File

@ -0,0 +1,7 @@
set console wru=034
set cpu its
set tim y2k
at tua0 out/pdp10-ks/minsys.tape
at tua1 out/pdp10-ks/salv.tape
set rpa0 rp06
at rpa0 out/pdp10-ks/rp0.dsk

54
build/pdp10-ks/start Executable file
View File

@ -0,0 +1,54 @@
#!/bin/sh
#Defaults.
VT52=${VT52:--B -b 9600}
EXIT=:
trap "" QUIT INT TERM
started() {
EXIT="$EXIT;stop $1 $2"
trap "$EXIT" EXIT
echo "$1 started, pid $2"
}
stop() {
echo -n "Stopping $1... "
kill "$2" 2> /dev/null
sleep 2
kill -9 "$2" 2> /dev/null
echo "OK"
}
gt40() {
(sleep 3; tools/sim-h/BIN/pdp11 build/pdp10-ks/gt40 >gt40.log 2>&1) &
started GT40 "$!"
}
vt52() {
(sleep 2; tools/vt05/vt52 $VT52 telnet localhost 10018 >vt52.log 2>&1) &
started "VT52" "$!"
}
help() {
cat <<EOF
This start script takes several command line arguments:
help - Display this help text.
gt40 - Start a GT40 emulator.
vt52 - Start a VT52 emulator.
EOF
touch out/pdp10-ks/nohelp
}
test -f out/pdp10-ks/nohelp || help
while test -n "$1"; do
"$1"
shift
done
tools/sims/BIN/pdp10-ks build/pdp10-ks/boot
exit 0

@ -1 +1 @@
Subproject commit 39ff585eea3ce5833ed4c9a22602fd92c053b5e1
Subproject commit a5c53fd2f80c0f2b78367090fb6c38789fe939d2