Research PDP7 development
[unix-history] / init.s
diff --git a/init.s b/init.s
new file mode 100644 (file)
index 0000000..69284d4
--- /dev/null
+++ b/init.s
@@ -0,0 +1,291 @@
+" init
+
+   -1
+   sys intrp
+   jms init1
+   jms init2
+1:
+   sys rmes
+   sad pid1
+   jmp 1f
+   sad pid2
+   jms init2
+   jmp 1
+1:
+   jms init1
+   jmp 1
+
+init1: 0
+   sys fork
+   jmp 1f
+   sys open; ttyin; 0
+   sys open; ttyout; 1
+   jmp login
+1:
+   dac pid1
+   jmp init1 i
+
+init2: 0
+   sys fork
+   jmp 1f
+   sys open; keybd; 0
+   sys open; displ; 1
+   jmp login
+1:
+   dac pid2
+   jmp init2 i
+
+login:
+   -1
+   sys intrp
+   sys open; password; 0
+   lac d1
+   sys write; m1; m1s
+   jms rline
+   lac ebufp
+   dac tal
+1:
+   jms gline
+   law ibuf-1
+   dac 8
+   law obuf-1
+   dac 9
+2:
+   lac 8 i
+   sac o12
+   lac o72
+   sad 9 i
+   skp
+   jmp 1b
+   sad o72
+   skp
+   jmp 2b
+   lac 9 i
+   sad o72
+   jmp 1f
+   -1
+   tad 9
+   dac 9
+   lac d1
+   sys write; m3; m3s
+   jms rline
+   law ibuf-1
+   dac 8
+2:
+   lac 8 i
+   sad o12
+   lac o72
+   sad 9 i
+   skp
+   jmp error
+   sad o72
+   skp
+   jmp 2b
+1:
+   dzm nchar
+   law dir-1
+   dac 8
+1:
+   lac 9 i
+   sad o72
+   jmp 1f
+   dac char
+   lac nchar
+   sza
+   jmp 2f
+   lac char
+   alss 9
+   xor o40
+   dac 8 i
+   dac nchar
+   jmp 1b
+2:
+   lac 8
+   dac nchar
+   lac nchar i
+   and o777000
+   xor char
+   dac nchar i
+   dzm nchar
+   jmp 1b
+1:
+   dzm nchar
+1:
+   lac 9 i
+   sad o12
+   jmp 2f
+   tad om60
+   lmq
+   lac nchar
+   cll; als 3
+   omq
+   dac nchar
+   jmp 1b
+2:
+   lac nchar
+   sys setuid
+   sys chdir; dd
+   sys chdir; dir
+
+   lac d2
+   sys close
+   sys open; sh; 0
+   sma
+   jmp 1f
+   sys link; system; sh; sh
+   spa
+   jmp error
+   sys open; sh; 0
+   spa
+   jmp error
+   sys unlink; sh
+1:
+   law 017700
+   dac 9
+   law boot-1
+   dac 8
+1:
+   lac 8 i
+   dac 9 i
+   sza
+   jmp 1b
+   jmp 017701
+
+boot:
+   lac d2
+   lmq
+   sys read; 4096; 07700
+   lacq
+   sys close
+   jmp 4096
+   0
+
+rline: 0
+   law ibuf-1
+   dac 8
+1:
+   cla
+   sys read; char; 1
+   lac char
+   lrss 9
+   sad o100
+   jmp rline+1
+   sad o43
+   jmp 2f
+   dac 8 i
+   sad o12
+   jmp rline i
+   jmp 1b
+2:
+   law ibuf-1
+   sad 8
+   jmp 1b
+   -1
+   tad 8
+   dac 8
+   jmp 1b
+
+gline: 0
+   law obuf-1
+   dac 8
+1:
+   jms gchar
+   dac 8 i
+   sad o12
+   jmp gline i
+   jmp 1b
+
+gchar: 0
+   lac tal
+   sad ebufp
+   jmp 1f
+   ral
+   lac tal i
+   snl
+   lrss 9
+   and o777
+   lmq
+   lac tal
+   add o400000
+   dac tal
+   lacq
+   sna
+   jmp gchar+1
+   jmp gchar i
+1:
+   lac bufp
+   dac tal
+1:
+   dzm tal i
+   isz tal
+   lac tal
+   sad ebufp
+   skp
+   jmp 1b
+   lac bufp
+   dac tal
+   lac d2
+   sys tead; buf; 64
+   sna
+   jmp error
+   jmp gchar+1
+
+error:
+   lac d1
+   sys write; m2; m2s
+   lac d1
+   sys smes
+   sys exit
+
+m1:
+   012; <lo>;<gi>;<n;<:;<
+m1s = .-m1
+m2:
+   <?; 012
+m2s = .-m2
+m3:
+   <pa>;<ss>;<wo>;<rd>;<: 040
+m3s = .-m3
+dd:
+   <dd>;040040;040040;040040
+dir:
+   040040;040040;040040;040040
+
+ttyin:
+   <tt>;<yi>;<n 040;040040
+ttyout:
+   <tt>;<yo>;<ut>; 040040
+keybd:
+   <ke>;<yb>;<oa>;<rd>
+displ:
+   <di>;<sp>;<la>;<y 040
+sh: 
+   <sh>; 040040;040040;040040
+system:
+   <sy>;<st>;<em>; 040040
+password:
+   <pa>;<ss>;<wo>;<rd>
+
+d1: 1
+o43: 043
+o100: 0100
+o400000; 0400000
+d2: 2
+o12: 012
+om60: -060
+d3: 3
+ebufp: buf+64
+bufp: buf
+o777: 0777
+o777000: 0777000
+o40: 040
+o72: 072
+
+ibuf: .=.+100
+obuf: .=.+100
+tal: .=.+1
+buf: .=.+64
+char: .=.+1
+nchar: .=.+1
+pid1: .=.+1
+pid2: .=.+1