File tree 1 file changed +212
-0
lines changed
1 file changed +212
-0
lines changed Original file line number Diff line number Diff line change
1
+ / init -- process control initialization
2
+
3
+
4
+
5
+ sys intr; 0
6
+ sys quit; 0
7
+ sys 38. / get console switches
8
+ cmp r0,$173030
9
+ bne 1f
10
+ help:
11
+ clr r0
12
+ sys close
13
+ mov $1 ,r0
14
+ sys close
15
+ sys open; ctty; 0
16
+ sys open; ctty; 1
17
+ sys exec; shell; shellp
18
+ br help
19
+ 1:
20
+ sys mount; rk1; usr
21
+ sys mount; rk2; ssys
22
+ sys mount; rk3; crp
23
+ mov $'0 ,r1
24
+ 1:
25
+ movb r1,tapx+8
26
+ sys chmod; tapx; 17
27
+ inc r1
28
+ cmp r1,$'8
29
+ blo 1b
30
+ sys creat; utmp; 16
31
+ sys close
32
+ sys unlink; dpdlock
33
+ sys fork
34
+ br daemon
35
+ sys fork
36
+ br dirass
37
+ sys fork
38
+ br dds
39
+ movb $'x ,zero+8.
40
+ jsr pc,wtmprec
41
+ mov $itab,r1
42
+ br 1f
43
+
44
+ daemon:
45
+ sys exec; etcdpd; etcdpdp
46
+ sys exit
47
+
48
+ dirass:
49
+ sys chdir; usrmel
50
+ sys exec; melda; meldap
51
+ sys exit
52
+
53
+ dds:
54
+ sys exec; usrdd; usrddp
55
+ sys exit
56
+
57
+ / create shell processes
58
+
59
+ 1:
60
+ mov (r1)+,r0
61
+ beq pwait
62
+ movb r0,ttyx+8
63
+ jsr pc,dfork
64
+ mov r0,(r1)+
65
+ br 1b
66
+
67
+ / wait for process to die
68
+
69
+ pwait:
70
+ sys wait
71
+ mov $itab,r1
72
+
73
+ / search for process id
74
+
75
+ 2:
76
+ tst (r1)+
77
+ beq pwait
78
+ cmp r0,(r1)+
79
+ bne 2b
80
+
81
+ / take name out of utmp
82
+
83
+ sub $4 ,r1
84
+ mov r1,-(sp)
85
+ mov (r1),r1
86
+ sub $'0 ,r1
87
+ cmp r1,$'a -'0
88
+ blo 2f
89
+ sub $'a -'0 -10. ,r1 / map a-z into 10. on
90
+ 2:
91
+ asl r1
92
+ asl r1
93
+ asl r1
94
+ asl r1
95
+ mov r1,0f
96
+ mov $zero,r1
97
+ 2:
98
+ clr (r1)+
99
+ cmp r1,$zero+16.
100
+ blo 2b
101
+ sys open; utmp; 1
102
+ bes 2f
103
+ mov r0,r1
104
+ sys seek; 0: ..; 0
105
+ mov r1,r0
106
+ sys write; zero; 16.
107
+ mov r1,r0
108
+ sys close
109
+
110
+ / re-create user process
111
+
112
+ 2:
113
+ mov (sp)+,r1
114
+ mov (r1)+,r0
115
+ movb r0,ttyx+8
116
+ movb r0,zero+8.
117
+ jsr pc,wtmprec
118
+ jsr pc,dfork
119
+ mov r0,(r1)+
120
+ br pwait
121
+
122
+ dfork:
123
+ sys fork
124
+ br 1f
125
+ bes dfork
126
+ rts pc
127
+ 1:
128
+ sys quit; 0
129
+ sys intr; 0
130
+ sys chown; ttyx; 0
131
+ sys chmod; ttyx; 15
132
+ sys open; ttyx; 0
133
+ bes help1
134
+ sys open; ttyx; 1
135
+ bes help1
136
+ sys exec; getty; gettyp
137
+ sys exit / HELP!
138
+
139
+ help1:
140
+ jmp help
141
+
142
+ wtmprec:
143
+ mov r1,-(sp)
144
+ sys time
145
+ mov r0,zero+10.
146
+ mov r1,zero+12.
147
+ sys open; wtmp; 1
148
+ bes 2f
149
+ mov r0,r2
150
+ sys seek; 0 ; 2
151
+ mov r2,r0
152
+ sys write; zero; 16.
153
+ mov r2,r0
154
+ sys close
155
+ 2:
156
+ mov (sp)+,r1
157
+ rts pc
158
+
159
+ etcdpdp:
160
+ etcdpd; 0
161
+ meldap:
162
+ melda; 0
163
+ usrddp:
164
+ usrdd; 0
165
+ usrdd: </usr/demo/dds\0>
166
+ melda: </usr/mel/da\0>
167
+ usrmel: </usr/mel\0>
168
+ rk1: </dev/rk1\0>
169
+ rk2: </dev/rk2\0>
170
+ rk3: </dev/rk3\0>
171
+ usr: </usr\0>
172
+ ssys: </sys\0>
173
+ crp: </crp\0>
174
+ ctty: </dev/tty\0>
175
+ shell: </bin/sh\0>
176
+ shellm: <-\0>
177
+ dpdlock:
178
+ </usr/dpd/lock\0>
179
+ etcdpd:
180
+ </etc/dpd\0>
181
+ tapx: </dev/tapx\0>
182
+ utmp: </tmp/utmp\0>
183
+ wtmp: </tmp/wtmp\0>
184
+ ttyx: </dev/ttyx\0>
185
+ getty: </etc/getty\0>
186
+ .even
187
+
188
+ shellp: shellm
189
+ 0
190
+ gettyp: getty
191
+ 0
192
+ itab:
193
+ '0 ; ..
194
+ '1 ; ..
195
+ '2 ; ..
196
+ '3 ; ..
197
+ '4 ; ..
198
+ '5 ; ..
199
+ '6 ; ..
200
+ '7 ; ..
201
+ '8 ; ..
202
+ 'a ; ..
203
+ 'b ; ..
204
+ 0
205
+
206
+ .bss
207
+ offset: .=.+2
208
+ zero: .=.+8. ; .=.+6 ; .=.+2.
209
+
210
+ srmel: </usr/mel\0>
211
+ rk1: </dev/rk1\0>
212
+ rk2: </dev/rk2\0
You can’t perform that action at this time.
0 commit comments