global: Make Makefile better and some small fixes
[h316.git] / systems / build_super3_8k.sh
CommitLineData
204c6755 1#!/bin/sh
2
3TARGET_SYS=$SUPER3_8K_SYS
4TARGET_SLST=$SUPER3_8K_SLST
5
6CORESIZE=8
7
8echo "TARGET_SYS --> $TARGET_SYS"
9echo "TARGET_SLST --> $TARGET_SLST"
10
11LAST_LOC=$((($CORESIZE*1024)-1))
12BASE=$(($CORESIZE*1024-010000))
13RESTART_BASE=$(($BASE+02000))
14
15SUPER_BASE=$RESTART_BASE
16LAST_USER_LOC=$(($SUPER_BASE-1))
17
18CLEANUP2_BASE=$(($BASE+02100))
19PRNTNZ_BASE=$(($BASE+02200))
20
21LOADER_BASE=$(($BASE+03000))
22LOADER_LAST_CLEAR_LOC=$(($LOADER_BASE+077))
23LOADER_LIMIT=$(($LOADER_BASE+02000))
24LOADER_START=$(($LOADER_BASE+03000))
25
26BINAL_BASE=$(($BASE+07000))
27PAL_AP_BASE=$BINAL_BASE
28PUNCH_BASE=$BINAL_BASE
29PUNCH_LAST_LOC=$(($BINAL_BASE+0577))
30
31LDR8_BASE=013000
32LDR8_START=016000
33LDR8_RESTART=016003
34LDR8_MAP=016002
35
36LOAD_LDR_APM=true
37LOAD_CLEANUP2=true
38LOAD_RESTART=true
39LOAD_PRNTNZ=true
40LOAD_PAL_AP=true
41LOAD_BINAL=
42
43DO_FILE=super3_8k.do
44
45octalize(){
46 for n in $*; do
47 eval "$n=\`printf \"0%o\" \$$n\`"
48 eval "printf \"%23s --> %05o\n\" $n \$$n"
49 done
50}
51
52FRESH_LOAD="true"
53
54load(){
55 printf "Load: %20s --> %o\n" $1 $2
56
57 ST=$LDR8_RESTART
58 if [ "$FRESH_LOAD" ]; then
59 ST=$LDR8_START
60 FRESH_LOAD=
61 fi
62
63 cat >>$DO_FILE <<EOF
64 echo *** Loading $1 --> $2 $ST
65 at ptr $1
66 d a $2
67 d p $ST
68 go
69 go
70EOF
71}
72
73boot(){
74 echo "Boot: $1"
75 cat > $DO_FILE <<EOF
76 at ptr $1
77 boot ptr
78EOF
79}
80
81process(){
82 for n in $*; do
83 cmd="if [ \"\$LOAD_$n\" ]; then load \"\$$n\" \$${n}_BASE; fi"
84# echo "Process command: " $cmd
85 eval $cmd
86 done
87}
88
89echo "\nAutomatic address generation:\n--------------"
90octalize BASE RESTART_BASE CLEANUP2_BASE PRNTNZ_BASE LOADER_BASE \
91 LOADER_START LOADER_LIMIT BINAL_BASE PAL_AP_BASE \
92 LDR8_BASE LDR8_START LDR8_RESTART LDR8_MAP \
93 LAST_USER_LOC LAST_LOC SUPER_BASE PUNCH_BASE PUNCH_LAST_LOC \
94 LOADER_LAST_CLEAR_LOC
95echo "--------------\n\n"
96
97
98# Determine if we have to load LDR-APM to somewhere else than
99# the default location where it comes from the original 8K tape. # This will load LDR-APM whenever something else than 8K memory is
100# requested.
101
102if [ $LOADER_BASE = $LDR8_BASE ]; then
103 echo "LDR-APM will be in the right place at once."
104 LOAD_LDR_APM=
105else
106 echo "LDR-APM will be loaded."
107 LOAD_LDR_APM=true
108fi
109
110if [ ! "$MAKE" ]; then
111 echo "Not run from within Makefile!"
112 exit 4
113fi
114
115rm -f $DO_FILE
116
117boot $LDR_APM_8K
118
119echo Patching loader for high memory load support...
120cat >> $DO_FILE <<EOF
121; enter high loader address for loading above itself
122d 15000 77777
123EOF
124
125process LDR_APM
126
127process RESTART CLEANUP2 PRNTNZ BINAL PAL_AP
128
129cat >> $DO_FILE <<EOF
130
131; Patching final loader.
132d $LOADER_LIMIT $LAST_USER_LOC
133
134; Print memory map
135go $LDR8_MAP
136
137; Clear memory
138d 20-$LAST_USER_LOC 0
139d $LOADER_BASE-$LOADER_LAST_CLEAR_LOC 0
140
141d a 0
142d b $LAST_LOC
143go $PRNTNZ_BASE
144
145; Settings for immediate load after sys restore
146r
147d p $LOADER_START
148
149save $TARGET_SYS
150
151at ptp $TARGET_SLST
152d a $0
153go $PUNCH_BASE
154d a $SUPER_BASE
155go
156d a $PUNCH_LAST_LOC
157go
158echo Complete.
159q
160EOF
161
162rm -f $TARGET_SLST
163h316 $DO_FILE
6b022f35 164rm -f $DO_FILE