1
0
mirror of https://github.com/PDP-10/its.git synced 2026-02-28 17:29:10 +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 5d6febdfe0
14 changed files with 356 additions and 7 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 {} {
}

View File

@@ -1,7 +1,11 @@
set console wru=034
set cpu its
set cpu 512k
set pd off
dis rpa
dis rpb
dis tua
dis fha
dis dpb
at ptr bin/ka10/boot/dskdmp.rim
at mta0 out/pdp10-ka/minsrc.tape
at dpa0 out/pdp10-ka/rp03.2

View File

@@ -3,7 +3,11 @@ set cpu its
set cpu 1024k
set cpu mpx
set cpu ten11
set pd off
dis rpa
dis rpb
dis tua
dis fha
dis dpb
at ptr bin/ka10/boot/dskdmp.rim
at mta0 out/pdp10-ka/sources.tape
set mta mpx=7

View File

@@ -1,6 +1,11 @@
set console wru=034
set cpu its
set cpu 512k
dis rpa
dis rpb
dis tua
dis fha
dis dpb
at mta0 out/pdp10-ka/magdmp.tap
at mta5 out/pdp10-ka/ka-minsys.tape
at dpa0 out/pdp10-ka/rp03.2

View File

@@ -3,6 +3,11 @@ set cpu its
set cpu 1024k
set cpu idle
set cpu mpx
dis rpa
dis rpb
dis tua
dis fha
dis dpb
set pd enabled
set pd on
set dpy enabled

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

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

@@ -0,0 +1,9 @@
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.0
at rpa1 out/pdp10-kl/rp04.1
at rpa2 out/pdp10-kl/rp04.2
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