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!
102 lines
3.3 KiB
Plaintext
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
|
|
$
|