Research PDP7 development
[unix-history] / s9.s
diff --git a/s9.s b/s9.s
new file mode 100644 (file)
index 0000000..a126ec0
--- /dev/null
+++ b/s9.s
@@ -0,0 +1,112 @@
+" s9 -- cold boot
+
+. = coldentry+4
+
+" zero i-list
+
+   dzm ii
+   jms copyz; dskbuf; 64
+1:
+   lac ii
+   jms dskio; 07000
+   isz ii
+   -710
+   tad ii
+   sza
+   jmp 1b
+
+" free rest of disk
+
+1:
+   lac ii
+   jms free
+   isz ii
+   -6400
+   tad ii
+   sza
+   jmp 1b
+
+" read in tapes
+
+   dzm ii
+1:
+   dzm sum
+   jms getw " count
+   sza
+   jmp .+3
+   hlt
+   jmp 1b " 0 count means pause
+   dac xx
+   isz ii
+   lac ii
+   jms iget
+   jms copyz; inode; 12
+   jms getw " flags
+   dac i.flags
+   -1
+   dac i.uid
+   jms getw " number links
+   dac i.nlks
+   -2
+   tad xx
+   dac i.size
+   lac ii
+   dac i.uniq
+   law 4096-1
+   dac 8
+   -1
+   tad i.size
+   cma
+   sna
+   jmp 3f
+   dac xx
+
+2:
+   jms getw
+   dac 8 i
+   isz xx
+   jmp 2b
+3:
+   lac sum
+   dac xx
+   jms getw " checksum
+   sad xx
+   skp
+   jms halt
+   lac i.size
+   dac .+4
+   cla
+   jms iwrite; 4096; ..
+   jms iput
+   cla
+   jmp 1b
+
+getw: 0
+   jms getc
+   alss 12
+   lmq
+   jms getc
+   alss 6
+   omq
+   lmq
+   jms getc
+   omq
+   lmq
+   add sum
+   dac sum
+   lacq
+   jmp getw i
+
+getc: 0
+   iof
+   rsa
+   rsf
+   jmp .-1
+   rrb
+   sna
+   jmp getc+1
+   and o77
+   ion
+   jmp getc i
+xx: 0
+sum:  0