Files
pdp7-unix/build/proto
T
Sebastian Rasmussen 5447173fec Space Travel now runs without crashing after reordering input files.
The naive order of the assembly files given to the assembler was to
put the st?.s files first followed by fop.s at the end. This caused
Space Travel to crash, why that happend is explained below.

st1.s through st5.s contain code, while st6. and st7.s contain
constants and data storage respectively. The order of the given
assembler files meant that the code st?.s ended up at 010000 onwards,
while the code in fop.s ended up after the data storage defined in
st7.s. In particular the function fmp ended up immediately after dspl.

At the end of st7.s there is a display list, dspl. At runtime this
list is pointed to by the clistp variable stored at the auto-indexing
memory register at address 017. Auto-indexing means that the pointer
will be incremented after use. However the display list dspl does not
reserve memory for the entire list, instead it assumes that the memory
immediately after dpsl is unused. This conflicts with storing fmp from
fop.s immediately after st7.s!

Despite this conflict the first few frames of space travel could be
rendered because clistp was never referenced. By the time it was
referenced it changed the code in fmp to invalid code. At a later
stage when fmp was called the program crashed.

The solution I chose is to reorder the files at the command-line given
to the assembler; specifically I opted to put fop.s after all the code
in st1.s though st4.s.

This means that Space Travel now runs without crashing!
2020-10-05 17:13:47 +08:00

102 lines
3.3 KiB
Plaintext

# Prototype file for PDP-7 Unix filesystem layout
#
# Entries are one of:
# filename f[r-][w-][r-][w-] uid local_file_to_insert [inumber]
# dirname d[r-][w-][r-][w-] uid [inumber]
# device i[r-][w-][r-][w-] uid inumber
# link l---- inumber
#
# The top directory's name is ignored
# inumbers are in decimal (-1 means previous file)
# uids are in octal
# Contents of each directory ends with a $ on a line by itself
# Format was inspired by 6th Edition mkfs
#
dd drwr- -1 4
core frwrw -1 /dev/null 1
system drwr- -1 3
ttyin irwr- -1 6
keyboard irwr- -1 7
pptin irwr- -1 8
ttyout irwr- -1 11
display irwr- -1 12
pptout irwr- -1 13
password frw-- -1 fs/password
adm frwr- -1 bin/adm
apr frwr- -1 bin/apr
as frwr- -1 bin/as
b frwr- -1 bin/b
cas frwr- -1 bin/cas
cat frwr- -1 bin/cat
check frwr- -1 bin/check
chmod frwr- -1 bin/chmod
chown frwr- -1 bin/chown
chrm frwr- -1 bin/chrm
cp frwr- -1 bin/cp
date frwr- -1 bin/date
db frwr- -1 bin/db
ds frwr- -1 bin/ds
dskres frwr- -1 bin/dskres
dsksav frwr- -1 bin/dsksav
dsw frwr- -1 bin/dsw
ed frwr- -1 bin/ed
init frwr- -1 bin/init
ln frwr- -1 bin/ln
link l---- -1
ls frwr- -1 bin/ls
list l---- -1
moo frwr- -1 bin/moo
mv frwr- -1 bin/mv
nm frwr- -1 bin/nm
od frwr- -1 bin/od
p frwr- -1 bin/p
rm frwr- -1 bin/rm
rn frwr- -1 bin/rn
roff frwr- -1 bin/roff
salv frwr- -1 bin/salv
sh frwr- -1 bin/sh
stat frwr- -1 bin/stat
tm frwr- -1 bin/tm
ttt frwr- -1 bin/ttt
dttt l---- -1
st frwr- -1 bin/st
un frwr- -1 bin/un
$
ken drwr- 12
system l---- 3
sop.s frwr- 12 ../src/sys/sop.s
s1.s frwr- 12 ../src/sys/s1.s
s2.s frwr- 12 ../src/sys/s2.s
s3.s frwr- 12 ../src/sys/s3.s
s4.s frwr- 12 ../src/sys/s4.s
s5.s frwr- 12 ../src/sys/s5.s
s6.s frwr- 12 ../src/sys/s6.s
s7.s frwr- 12 ../src/sys/s7.s
s8.s frwr- 12 ../src/sys/s8.s
maksys.s frwr- 12 ../src/sys/maksys.s
trysys.s frwr- 12 ../src/sys/trysys.s
sys.rc frwr- 12 fs/sys.rc
$
dmr drwr- 14
system l---- 3
as.s frwr- 14 ../src/cmd/as.s
op.s frwr- 14 ../src/cmd/op.s
b_readme frwr- 14 fs/b_readme
bi.s frwr- 14 ../src/cmd/bi.s
bl.s frwr- 14 ../src/cmd/bl.s
db.s frwr- 14 ../src/cmd/db.s
hello.b frwr- 14 ../src/other/hello.b
b.b frwr- 14 ../src/other/b.b
$
doug drwr- 15
system l---- 3
t1.s frwr- 15 ../src/cmd/t1.s
t2.s frwr- 15 ../src/cmd/t2.s
t3.s frwr- 15 ../src/cmd/t3.s
t4.s frwr- 15 ../src/cmd/t4.s
t5.s frwr- 15 ../src/cmd/t5.s
t6.s frwr- 15 ../src/cmd/t6.s
t7.s frwr- 15 ../src/cmd/t7.s
t8.s frwr- 15 ../src/cmd/t8.s
$