1
0
mirror of https://github.com/PDP-10/its.git synced 2026-03-20 00:27:45 +00:00

Build script for KL ITS.

This commit is contained in:
Lars Brinkhoff
2019-06-18 14:08:45 +02:00
parent 9f0f8dd0e9
commit 875d8dbf8a
10 changed files with 334 additions and 5 deletions

View File

@@ -15,6 +15,21 @@ jobs:
timeout: 120m
- store_artifacts:
path: out
build_kl10:
docker:
- image: debian
environment:
EMULATOR: "pdp10-kl"
steps:
- checkout
- run: sh -ex build/dependencies.sh install_linux
- run:
name: build
command: "make check-dirs all EMULATOR=$EMULATOR"
no_output_timeout: 30m
timeout: 120m
- store_artifacts:
path: out
build_klh10:
docker:
- image: debian

View File

@@ -8,12 +8,15 @@ env:
- EMULATOR=simh BASICS=yes
- EMULATOR=klh10 BASICS=yes
- EMULATOR=pdp10-ka BASICS=yes
- EMULATOR=pdp10-kl BASICS=yes
matrix:
exclude:
- os: osx
env: EMULATOR=klh10 BASICS=yes
- os: osx
env: EMULATOR=pdp10-ka BASICS=yes
- os: osx
env: EMULATOR=pdp10-kl BASICS=yes
install: sh -ex build/dependencies.sh install_${TRAVIS_OS_NAME:-linux}
script: make check-dirs all
deploy:

View File

@@ -43,7 +43,7 @@ MINSRC = midas system $(DDT) $(SALV) $(KSFEDR) $(DUMP)
# These are not included on the tape.
DOCIGNORE=-e '\.(jpeg|pdf|info|md)$$' -e '^(dcg|github)$$'
# These are on the minsys tape.
BINIGNORE=-e '^(ka10|ks10|minsys)$$'
BINIGNORE=-e '^(ka10|kl10|ks10|minsys)$$'
# These are on the minsrc tape.
SRCIGNORE=-e '^(system|midas)$$'
@@ -57,6 +57,7 @@ DSKDMP = bin/ks10/boot/dskdmp.rp06
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-ka
ITSTAR=tools/itstar/itstar
WRITETAPE=tools/tapeutils/tapewrite
MAGFRM=tools/dasm/magfrm
@@ -85,15 +86,24 @@ out/simh/stamp: $(OUT)/rp0.dsk $(GT40)
out/pdp10-ka/stamp: $(OUT)/rp03.2 $(OUT)/rp03.3 $(GT40) $(TV11) $(PDP6)
$(TOUCH) $@
out/pdp10-kl/stamp: $(OUT)/rp04.1
$(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 build/$(EMULATOR)/stamp
PATH="$(CURDIR)/tools/simh/BIN:$$PATH" expect -f build/$(EMULATOR)/build.tcl $(IP) $(GW)
$(OUT)/rp03.2 $(OUT)/rp03.3: $(OUT)/ka-minsys.tape $(OUT)/minsrc.tape $(OUT)/magdmp.tap $(OUT)/sources.tape
$(EXPECT) -f build/$(EMULATOR)/build.tcl $(IP) $(GW)
$(OUT)/rp04.1: $(OUT)/kl-minsys.tape $(OUT)/minsrc.tape $(OUT)/kl-magdmp.tap $(OUT)/sources.tape
$(EXPECT) -f build/$(EMULATOR)/build.tcl $(IP) $(GW)
$(OUT)/magdmp.tap: $(MAGFRM)
cd bin/ka10/boot; ../../../$(MAGFRM) magdmp.bin @.ddt @.salv > ../../../$@
$(OUT)/kl-magdmp.tap: $(MAGFRM)
cd bin/kl10/boot; ../../../$(MAGFRM) magdmp.bin @.ddt salv.bin > ../../../$@
$(OUT)/minsrc.tape: $(ITSTAR)
$(MKDIR) $(OUT)
$(ITSTAR) -cf $@ -C src $(MINSRC)
@@ -109,6 +119,11 @@ $(OUT)/ka-minsys.tape: $(ITSTAR) $(OUT)/system
$(ITSTAR) -cf $@ -C bin/ka10 _ sys
$(ITSTAR) -rf $@ -C bin/minsys sys
$(OUT)/kl-minsys.tape: $(ITSTAR) $(OUT)/system
$(MKDIR) $(OUT)
$(ITSTAR) -cf $@ -C bin/kl10 _ sys
$(ITSTAR) -rf $@ -C bin/minsys sys
$(OUT)/sources.tape: $(ITSTAR) build/$(EMULATOR)/stamp $(OUT)/syshst/$(H3TEXT)
$(MKDIR) $(OUT)
$(RM) -f src/*/*~
@@ -156,6 +171,9 @@ build/simh/stamp: $(SIMH) start
build/pdp10-ka/stamp: $(KA10) start
$(TOUCH) $@
build/pdp10-kl/stamp: $(KL10) start
$(TOUCH) $@
out/klh10/system:
$(MKDIR) $(OUT)/system
cp=0; ca=0; \
@@ -174,6 +192,10 @@ out/pdp10-ka/system:
$(MKDIR) $(OUT)/system
cp build/pdp10-ka/config.* $(OUT)/system
out/pdp10-kl/system:
$(MKDIR) $(OUT)/system
cp build/pdp10-kl/config.* $(OUT)/system
build/klh10/dskdmp.ini: build/klh10/dskdmp.txt Makefile
cp=';'; ca=''; \
$(TEST) $(CHAOS) != no && cp='' && ca='myaddr=$(CHAOS) $(CHAFRIENDS)'; \
@@ -207,6 +229,9 @@ $(SIMH):
$(KA10):
$(MAKE) -C tools/sims pdp10-ka TYPE340=y
$(KL10):
$(MAKE) -C tools/sims pdp10-ka
$(ITSTAR):
$(MAKE) -C tools/itstar

View File

@@ -1,9 +1,161 @@
make_ntsddt {} {
proc start_dskdmp_its {} {
start_dskdmp build/pdp10-kl/boot
respond "DSKDMP" "ddt\r"
respond "\n" "\033l"
respond " " "its bin\r"
respond "\n" "\033\033l"
respond " " "salv bin\r"
respond "\n" "\033y"
respond " " "its\r"
patch_its_and_go
}
proc mark_packs {} {
respond "\n" "mark\033g"
respond "UNIT #" "0"
respond "#0?" "y"
respond "NO =" "0\r"
respond "ALLOC =" "3000\r"
respond "PACK ID =" "0\r"
}
proc prepare_frontend {} {
}
proc frontend_bootstrap {} {
}
proc its_switches {} {
respond "MACHINE NAME =" "KL\r"
}
proc make_ntsddt {} {
# KL10 NTSDDT.
respond "*" ":midas dsk0:.;@ ntsddt_system;ddt\r"
respond "cpusw=" "2\r"
respond "*" ":midas dsk0:.;@ ddt_system;ddt\r"
respond "cpusw=" "0\r"
respond "ndsk=" "1\r"
respond "dsksw=" "3\r"
respond "1PRSW=" "1\r"
respond "1PRSW=" "0\r"
expect ":KILL"
}
proc make_salv {} {
respond "*" ":midas dsk0:.;_system;salv\r"
respond "time-sharing?" "n\r"
respond "machine?" "KL\r"
expect ":KILL"
}
proc make_dskdmp {} {
respond "*" ":midas dsk0:.;@ dskdmp_system;dskdmp\r"
expect "Configuration"
respond "?" "ASK\r"
respond "HRIFLG=" "N\r"
respond "BOOTSW=" "N\r"
respond "RP06P=" "N\r"
respond "RP07P=" "N\r"
respond "RM03P=" "N\r"
respond "RM80P=" "N\r"
respond "RH10P=" "Y\r"
respond "NUDSL=" "500.\r"
respond "KS10P=" "N\r"
respond "KL10P=" "N\r"
expect ":KILL"
}
proc dump_switches {} {
respond "WHICH MACHINE?" "KL\r"
}
proc peek_switches {} {
respond "with ^C" "\003"
}
proc dump_nits {} {
# Run the new DSKDMP from disk here, to check that it works.
respond "DSKDMP" "dskdmp\r"
respond "DSKDMP" "l\033ddt\r"
# Dump an executable @ SALV.
respond "\n" "t\033salv bin\r"
respond "\n" "\033y"
respond " " "salv\r"
# Now dump the new ITS.
respond "\n" "\033l"
respond " " "its bin\r"
respond "\n" "\033\033l"
respond " " "salv bin\r"
respond "\n" "\033y"
respond " " "nits\r"
}
proc magdmp_switches {} {
respond "KL10P=" "n\r"
respond "TM10BP=" "y\r"
respond "340P=" "n\r"
}
proc bootable_tapes {} {
global emulator_escape
global out
respond "*" ":midas .;magdmp bin.kl_syseng;magdmp\r"
respond "PTRHRI=" "n\r"
magdmp_switches
expect ":KILL"
respond "*" $emulator_escape
create_tape "$out/magdmp.tape"
type ":magfrm\r"
respond "?" "KL\r"
respond "?" "Y"
respond "_" "W"
respond "FROM" ".; @ DDT\r"
respond "FILE" "@ DDT\r"
respond "_" "W"
respond "FROM" ".; @ SALV\r"
respond "FILE" "@ SALV\r"
respond "_" "W"
respond "FROM" ".; @ DSKDMP\r"
respond "FILE" "@ DSKDMP\r"
respond "_" "Q"
expect ":KILL"
}
proc update_microcode {} {
}
proc clib_switches {} {
### UFA or FIX?!? Probably the latter.
respond "with ^C" "\003"
}
proc patch_lisp {} {
respond "*" ":job lisp\r"
respond "*" ":load .; @ lisp\r"
respond "*" "33777//\031"
respond "*" "\033q\033,777777\033\033z"
respond "*" "pitele+13/"
respond "FSC" "push p,b\n"
respond "FSC" "jrst patch\r"
respond "\n" "patch/"
respond "0" "move b,echocc\n"
respond "0" "add b,ticc\n"
respond "0" "dpb b,.+3\n"
respond "0" "pop p,b\n"
respond "0" "jrst pitele+15\n"
respond "0" "331000,,a\r"
respond "\n" "\033y"
respond " " "dsk0:.;@ lisp\r"
respond "*" ":kill\r"
}
proc translate_diagnostics {} {
}
proc patch_clib_16 {} {
}

8
build/pdp10-kl/boot Normal file
View File

@@ -0,0 +1,8 @@
set console wru=034
set cpu its
set cpu 512k
set pd off
at ptr bin/kl10/boot/dskdmp.rim
at mta0 out/pdp10-kl/minsrc.tape
at rpa0 out/pdp10-kl/rp04.1
b ptr

8
build/pdp10-kl/boot2 Normal file
View File

@@ -0,0 +1,8 @@
set console wru=034
set cpu its
set cpu 512k
set pd off
at ptr bin/kl10/boot/dskdmp.rim
at mta0 out/pdp10-kl/sources.tape
at rpa0 out/pdp10-kl/rp04.1
b ptr

60
build/pdp10-kl/build.tcl Normal file
View File

@@ -0,0 +1,60 @@
set build [pwd]/build
set out "out/$env(EMULATOR)"
set emulator_escape "\034"
proc start_salv {} {
uplevel #0 {spawn ./tools/sims/BIN/pdp10-ka build/pdp10-kl/init}
setup_timeout
respond "MAGDMP\r\n" "l\033ddt\r"
respond "\n" "t\033salv bin\r"
}
proc start_dskdmp args {
quit_emulator
set ini ""
if {[llength $args] == 1} {
set ini [lindex $args 0]
} {
set ini "build/pdp10-kl/boot2"
}
set foo "spawn ./tools/sims/BIN/pdp10-ka $ini"
uplevel #0 $foo
setup_timeout
}
proc mount_tape {file} {
respond "sim>" "at mta0 $file\r"
respond "sim>" "c\r"
expect -timeout 2 "BUGPC/" {
type "\033P"
} timeout {
;
}
}
proc create_tape {file} {
respond "sim>" "at mta0 $file\r"
respond "sim>" "c\r"
expect -timeout 2 "BUGPC/" {
type "\033P"
} timeout {
;
}
}
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/kl10/include.tcl
source build/build.tcl

8
build/pdp10-kl/init Normal file
View File

@@ -0,0 +1,8 @@
set console wru=034
set cpu its
set cpu 512k
at mta0 out/pdp10-kl/kl-magdmp.tap
at mta5 out/pdp10-kl/kl-minsys.tape
set rpa rp04
at rpa0 out/pdp10-kl/rp04.1
b mta0

7
build/pdp10-kl/run Normal file
View File

@@ -0,0 +1,7 @@
set console wru=034
set cpu its
set cpu 512k
at ptr bin/kl10/boot/dskdmp.rim
set rpa rp04
at rpa0 out/pdp10-kl/rp04.1
b ptr

43
build/pdp10-kl/start Executable file
View File

@@ -0,0 +1,43 @@
#!/bin/sh
TVCON=${TVCON:--2}
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/simh/BIN/pdp11 build/pdp10-ka/gt40 >gt40.log 2>&1) &
started GT40 "$!"
}
tv11() {
(sleep 3; tools/tv11/tv11 -p 10011 localhost >tv11.log 2>&1) &
started TV-11 "$!"
}
tvcon() {
(sleep 4; tools/tv11/tvcon/tvcon $TVCON localhost >tvcon.log 2>&1) &
started "TV-console" "$!"
}
while test -n "$1"; do
"$1"
shift
done
tools/sims/BIN/pdp10-ka build/pdp10-ka/run
exit 0