Research V6 development
[unix-history] / usr / source / mdec / uboot.s
CommitLineData
7c5f70a1
KT
1/ disk boot program to load and transfer
2/ to a unix entry
3
4/ entry is made by jsr pc,*$0
5/ so return can be rts pc
6
7core = 24.
8.. = [core*2048.]-512.
9start:
10 mov $..,sp
11 mov sp,r1
12 cmp pc,r1
13 bhis 2f
14 reset
15 clr r0
16 cmp (r0),$407
17 bne 1f
18 mov $20,r0
191:
20 mov (r0)+,(r1)+
21 cmp r1,$end
22 blo 1b
23 jmp (sp)
24
252:
26 mov $inod,r0
271:
28 clr (r0)+
29 cmp r0,sp
30 blo 1b
31 jsr pc,getc
32 cmp r0,$'k
33 bne 3f
34 mov $rkblk,r0
35 br 1f
363:
37 cmp r0,$'p
38 bne 2b
39 mov $rpblk,r0
401:
41 mov r0,rxblk
42 mov $'\n,r0
43 jsr pc,putc
44 mov $names,r1
45
461:
47 mov r1,r2
482:
49 jsr pc,getc
50 cmp r0,$'\n
51 beq 1f
52 cmp r0,$'/
53 beq 3f
54 movb r0,(r2)+
55 br 2b
563:
57 cmp r1,r2
58 beq 2b
59 add $14.,r1
60 br 1b
611:
62 mov $names,r1
63 mov $1,r0
641:
65 clr bno
66 jsr pc,iget
67 tst (r1)
68 beq 1f
692:
70 jsr pc,rmblk
71 br start
72 mov $buf,r2
733:
74 mov r1,r3
75 mov r2,r4
76 add $16.,r2
77 tst (r4)+
78 beq 5f
794:
80 cmpb (r3)+,(r4)+
81 bne 5f
82 cmp r4,r2
83 blo 4b
84 mov -16.(r2),r0
85 add $14.,r1
86 br 1b
875:
88 cmp r2,$buf+512.
89 blo 3b
90 br 2b
911:
92 clr r1
931:
94 jsr pc,rmblk
95 br 1f
96 mov $buf,r2
972:
98 mov (r2)+,(r1)+
99 cmp r2,$buf+512.
100 blo 2b
101 br 1b
1021:
103 clr r0
104 cmp (r0),$407
105 bne 2f
1061:
107 mov 20(r0),(r0)+
108 cmp r0,sp
109 blo 1b
1102:
111 jsr pc,*$0
112 br start
113
114iget:
115 add $31.,r0
116 mov r0,r5
117 ash $-4.,r0
118 jsr pc,rblk
119 bic $!17,r5
120 ash $5.,r5
121 add $buf,r5
122 mov $inod,r4
1231:
124 mov (r5)+,(r4)+
125 cmp r4,$addr+16.
126 blo 1b
127 rts pc
128
129rmblk:
130 add $2,(sp)
131 mov bno,r0
132 inc bno
133 bit $LRG,mode
134 bne 1f
135 asl r0
136 mov addr(r0),r0
137 bne rblk
1382:
139 sub $2,(sp)
140 rts pc
1411:
142 clr -(sp)
143 movb r0,(sp)
144 clrb r0
145 swab r0
146 asl r0
147 mov addr(r0),r0
148 beq 2b
149 jsr pc,rblk
150 mov (sp)+,r0
151 asl r0
152 mov buf(r0),r0
153 beq 2b
154
155rblk:
156 mov r1,-(sp)
157 mov r0,r1
158 clr r0
159 jmp *rxblk
160
161rpda = 176724
162rpblk:
163 div $10.,r0
164 mov r1,-(sp)
165 mov r0,r1
166 clr r0
167 div $20.,r0
168 bisb r1,1(sp)
169 mov $rpda,r1
170 mov (sp)+,(r1)
171 br 1f
172
173rkda = 177412
174rkblk:
175 div $12.,r0
176 ash $4.,r0
177 bis r1,r0
178 mov $rkda+2,r1
179
1801:
181 mov r0,-(r1)
182 mov $buf,-(r1)
183 mov $-256.,-(r1)
184 mov $5,-(r1)
1851:
186 tstb (r1)
187 bge 1b
188 mov (sp)+,r1
189 rts pc
190
191tks = 177560
192tkb = 177562
193getc:
194 mov $tks,r0
195 inc (r0)
1961:
197 tstb (r0)
198 bge 1b
199 mov tkb,r0
200 bic $!177,r0
201 cmp r0,$'A
202 blo 1f
203 cmp r0,$'Z
204 bhi 1f
205 add $40,r0
2061:
207 cmp r0,$'\r
208 bne putc
209 mov $'\n,r0
210
211tps = 177564
212tpb = 177566
213putc:
214 tstb tps
215 bge putc
216 cmp r0,$'\n
217 bne 1f
218 mov $'\r,r0
219 jsr pc,putc
220 mov $'\n+200,r0
221 jsr pc,putc
222 clr r0
223 jsr pc,putc
224 mov $'\n,r0
225 rts pc
2261:
227 mov r0,tpb
228 rts pc
229
230end:
231inod = ..-1024.
232mode = inod
233addr = inod+8.
234buf = inod+32.
235bno = buf+514.
236rxblk = bno+2
237names = rxblk+2
238LRG = 10000
239reset = 5