swh:1:snp:2ca5d6eff8f04a671c0d5b13646cede522c64b7d
Raw File
Tip revision: 69f28986ad97c1e3d55279d696d1884c963f530e authored by Ken Thompson on 30 June 1970, 10:00:00 UTC
Research PDP7 development
Tip revision: 69f2898
init.s
" 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
back to top