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

Build on classic SIMH v3.

This commit is contained in:
Lars Brinkhoff 2023-10-06 08:24:57 +02:00
parent 4db8d276ae
commit 85c3f4fa33
8 changed files with 1362 additions and 4 deletions

View File

@ -14,7 +14,7 @@ jobs:
fail-fast: false
matrix:
os: [ubuntu-22.04]
emulator: [simh, klh10, pdp10-ka, pdp10-kl, pdp10-ks]
emulator: [simh, klh10, pdp10-ka, pdp10-kl, pdp10-ks, simhv3]
steps:
- uses: actions/checkout@v4
- name: Install dependencies

View File

@ -83,6 +83,7 @@ SIMH=tools/simh/BIN/pdp10
KA10=tools/sims/BIN/pdp10-ka
KL10=tools/sims/BIN/pdp10-kl
KS10=tools/sims/BIN/pdp10-ks
SIMHV3=tools/simhv3/BIN/pdp10
ITSTAR=tools/itstar/itstar
WRITETAPE=tools/tapeutils/tapewrite
MAGFRM=tools/dasm/magfrm
@ -163,8 +164,16 @@ out/pdp10-ks/stamp/emulators: $(GT40) $(VT52)
$(MKDIR) $(OUT)/stamp
$(TOUCH) $@
out/simhv3/stamp/its: $(OUT)/rp0.dsk
$(MKDIR) $(OUT)/stamp
$(TOUCH) $@
out/simhv3/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)
PATH="$(CURDIR)/tools/$(EMULATOR)/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)
@ -256,6 +265,8 @@ out/pdp10-kl/stamp/test:
out/pdp10-ks/stamp/test:
out/simhv3/stamp/test:
start: build/$(EMULATOR)/start
$(LN) -s $< $*
@ -279,6 +290,10 @@ out/pdp10-ks/stamp/pdp10: $(KS10) start
$(MKDIR) $(OUT)/stamp
$(TOUCH) $@
out/simhv3/stamp/pdp10: $(SIMHV3) start
$(MKDIR) $(OUT)/stamp
$(TOUCH) $@
out/klh10/system:
$(MKDIR) $(OUT)/system
x=`echo $(IP) | tr . ,`; \
@ -301,6 +316,10 @@ out/pdp10-ks/system:
$(MKDIR) $(OUT)/system
cp build/pdp10-ks/config.* $(OUT)/system
out/simhv3/system:
$(MKDIR) $(OUT)/system
cp build/simhv3/config.* $(OUT)/system
out/klh10/dskdmp.ini: build/mchn/$(MCHN)/dskdmp.txt Makefile
$(MKDIR) $(OUT)/stamp
$(SED) -e 's/%IP%/$(IP)/' \
@ -343,6 +362,16 @@ $(KL10):
$(KS10):
$(MAKE) -C tools/sims pdp10-ks
$(SIMHV3): tools/simhv3
$(MAKE) -C tools/simhv3 pdp10
tools/simhv3: simhv312-4.zip
unzip $<
mv sim $@
simhv312-4.zip:
$(WGET) http://simh.trailing-edge.com/sources/$@
$(ITSTAR):
$(MAKE) -C tools/itstar

View File

@ -10,7 +10,7 @@ install_linux() {
# For GitLab CI
sudo apt-get install -my git make gcc libncurses-dev autoconf
case "$EMULATOR" in
simh) sudo apt-get install -y libegl1-mesa-dev libgles2-mesa-dev
simh*) sudo apt-get install -y libegl1-mesa-dev libgles2-mesa-dev
sudo apt-get install -y libsdl2-dev;;
pdp10-k?) sudo apt-get install -y libegl1-mesa-dev libgles2-mesa-dev
sudo apt-get install -y libx11-dev libxt-dev libsdl2-dev
@ -33,7 +33,7 @@ install_freebsd() {
install_osx() {
brew update
case "$EMULATOR" in
simh) brew install sdl2;;
simh*) brew install sdl2;;
pdp10-*) brew install sdl2;;
klh10) brew install automake;;
esac

19
build/simhv3/boot Normal file
View File

@ -0,0 +1,19 @@
set console wru=034
set cpu its
set cpu idle
set tim y2k
set ch enabled
set ch node=177002
set ch peer=localhost:44041
att ch 44042
set dz 8b lines=8
at -u dz0 10004
# VT52
at -u dz0 line=7,10018
# GT40
at -u dz0 line=6,10019
# Dial-up
at -u dz0 line=5,10015
set rp0 rp06
at rp0 out/simhv3/rp0.dsk
b rp0

64
build/simhv3/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 pdp10 build/simhv3/init}
setup_timeout
respond "sim>" "show ver\r"
respond "sim>" "b tu1\r"
expect "MTBOOT"
}
proc restart_nsalv {} {
respond "sim>" "b tu1\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 tu0 $tape\r"
respond "sim>" "at tu2 $out/dskdmp.tape\r"
respond "sim>" "b tu2\r"
respond "MTBOOT" "\033g"
}
proc start_its {} {
uplevel #0 {spawn pdp10 build/simhv3/boot}
setup_timeout
}
proc mount_tape {file} {
respond "sim>" "at tu0 $file\r"
respond "sim>" "c\r"
}
proc create_tape {file} {
respond "sim>" "at tu0 $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

1177
build/simhv3/config.202 Normal file

File diff suppressed because it is too large Load Diff

9
build/simhv3/init Normal file
View File

@ -0,0 +1,9 @@
set console wru=034
set cpu its
set tim y2k
set ch enabled
set ch node=177002
at tu0 out/simhv3/minsys.tape
at tu1 out/simhv3/salv.tape
set rp0 rp06
at rp0 out/simhv3/rp0.dsk

60
build/simhv3/start Executable file
View File

@ -0,0 +1,60 @@
#!/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/simh/BIN/pdp11 build/simh/gt40 >gt40.log 2>&1) &
started GT40 "$!"
}
vt52() {
(sleep 2; tools/vt05/vt52 $VT52 telnet localhost 10018 >vt52.log 2>&1) &
started "VT52" "$!"
}
chaosnet() {
(sleep 2; tools/cbridge/cbridge -c build/cbridge.conf >cbridge.log 2>&1) &
started "Chaosnet bridge" "$!"
}
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.
chaosnet - Start a local Chaosnet.
EOF
touch out/simh/nohelp
}
test -f out/simh/nohelp || help
while test -n "$1"; do
"$1"
shift
done
tools/simh/BIN/pdp10 out/simh/boot
exit 0