555 lines
30 KiB
Text
555 lines
30 KiB
Text
1 ; BOOT LOADER CODE
|
|
2 ;
|
|
3 ; REBASE HIGHER LINK/BOT:140000
|
|
4 ; WANT PERFORMANCE COUNTER - CLOCK TICKS TO DO SOMETHING?
|
|
5
|
|
6 177776 PSW = 177776
|
|
7 177564 DL11XCSR = 177564
|
|
8 000064 DL11VEC = 64
|
|
9
|
|
10 177546 KW11LKS = 177546
|
|
11 000100 KW11VEC = 100
|
|
12
|
|
13 .ASECT
|
|
14 140000 .=140000
|
|
15 140000 000005 START: RESET ; 140000
|
|
16 140002 005037 177776 CLR @#PSW
|
|
17 140006 012706 140000 MOV #START,SP
|
|
18 140012 005037 177564 CLR @#DL11XCSR ; CLEAR THE XCSR
|
|
19 140016 012700 141121 MOV #BANNER,R0
|
|
20 140022 004767 140150' JSR PC,PRINT
|
|
21 140026 012737 140124 000100 MOV #CLKAST,@#KW11VEC
|
|
22 140034 012737 000340 000102 MOV #340,@#KW11VEC+2
|
|
23 140042 052737 000100 177546 BIS #100,@#KW11LKS ; SET CLOCK TICKING
|
|
24
|
|
25 140050 012700 141254 MOV #PROMPT,R0
|
|
26 140054 004767 140150' JSR PC,PRINT
|
|
27 140060 162706 000256 SUB #256,SP
|
|
28 140064 010600 MOV SP,R0
|
|
29 140066 004767 140244' JSR PC,INPUT
|
|
30 140072 005000 CLR R0
|
|
31 140074 000001 1$: WAIT
|
|
32 140076 005200 INC R0
|
|
33 140100 005767 140120' TST LGHTON
|
|
34 140104 001773 BEQ 1$
|
|
35 140106 012746 054000 MOV #054000,-(SP) ; SUPER PRIORITY 0 ALT REG
|
|
36 140112 016746 140120' MOV LGHTON,-(SP) ; CALL SUPER LOOP START
|
|
37 140116 000002 RTI
|
|
38
|
|
39 140120 000000 LGHTON: .WORD 0
|
|
40 140122 000000 CLKTIC: .WORD 0
|
|
41
|
|
42 CLKAST: ; 140124
|
|
43 140124 005267 140122' INC CLKTIC
|
|
44 140130 000002 RTI
|
|
45
|
|
46 ONECHR:
|
|
47 140132 105737 177564 TSTB @#DL11XCSR ; 140132
|
|
48 140136 100375 BPL ONECHR
|
|
49 140140 110037 177566 MOVB R0,@#177566
|
|
50 140144 000207 RTS PC
|
|
51
|
|
52 140146 000000 PRTPTR: .WORD 0 ; 140146
|
|
53
|
|
54 PRINT: ; 140150
|
|
55 140150 132737 000100 177564 BITB #100,@#DL11XCSR
|
|
56 140156 001374 BNE PRINT
|
|
57 140160 010067 140146' MOV R0,PRTPTR
|
|
58 140164 012737 140210 000064 MOV #PRTAST,@#DL11VEC
|
|
59 140172 012737 000200 000066 MOV #200,@#DL11VEC+2
|
|
60 140200 152737 000100 177564 BISB #100,@#DL11XCSR
|
|
61 140206 000207 RTS PC
|
|
62
|
|
63 PRTAST: ; 140210
|
|
64 140210 105777 140146' TSTB @PRTPTR
|
|
65 140214 001406 BEQ 2$
|
|
66 140216 117737 140146' 177566 MOVB @PRTPTR,@#177566
|
|
67 140224 005267 140146' INC PRTPTR
|
|
68 140230 000002 RTI
|
|
69 140232 105037 177564 2$: CLRB @#177564
|
|
70 140236 000002 RTI
|
|
71
|
|
72 140240 000000 BUFFER: .WORD 0 ; INPUT BUFFER POINTER
|
|
73 140242 000000 LENGTH: .WORD 0 ; INPUT BUFFER LENGTH
|
|
74
|
|
75 INPUT:
|
|
76 140244 010067 140240' MOV R0,BUFFER ; 140244
|
|
77 140250 005067 140242' CLR LENGTH
|
|
78 140254 012737 140300 000060 MOV #INPAST,@#60
|
|
79 140262 012737 000200 000062 MOV #200,@#62
|
|
80 140270 152737 000100 177560 BISB #100,@#177560
|
|
81 140276 000207 RTS PC
|
|
82
|
|
83 INPAST: ; 140300
|
|
84 140300 010046 MOV R0,-(SP)
|
|
85 140302 113700 177562 MOVB @#177562,R0
|
|
86 140306 120027 000015 CMPB R0,#15
|
|
87 140312 001455 BEQ 7$ ; CARRIAGE RETURN
|
|
88 140314 120027 000177 CMPB R0,#127.
|
|
89 140320 001403 BEQ 2$ ; <DEL>
|
|
90 140322 120027 000010 CMPB R0,#10
|
|
91 140326 001012 BNE 4$ ; BACK SPACE
|
|
92 140330 005767 140242' 2$: TST LENGTH ; DATA IN BUFFER?
|
|
93 140334 001406 BEQ 3$
|
|
94 140336 005367 140242' DEC LENGTH ; LENGTH
|
|
95 140342 012700 141037 MOV #DEL,R0
|
|
96 140346 004767 140150' JSR PC,PRINT
|
|
97 140352 000453 3$: BR 9$
|
|
98 140354 120027 000040 4$: CMPB R0,#40
|
|
99 140360 002450 BLT 9$ ; BELOW SPACE
|
|
100 140362 120027 000177 CMPB R0,#177
|
|
101 140366 002045 BGE 9$ ; SKIP STUFF TOO BIG
|
|
102 140370 004767 140132' JSR PC,ONECHR ; ECHO CHAR
|
|
103 140374 120027 000172 CMPB R0,#172
|
|
104 140400 003005 BGT 5$ ; ABOVE Z
|
|
105 140402 120027 000141 CMPB R0,#141
|
|
106 140406 002402 BLT 5$ ; BELOW A
|
|
107 140410 142700 000040 BICB #40,R0 ; CONVERT TO UPPER CASE
|
|
108 140414 026727 140242' 000254 5$: CMP LENGTH,#254
|
|
109 140422 002027 BGE 9$
|
|
110 140424 110046 MOVB R0,-(SP)
|
|
111 140426 016700 140240' MOV BUFFER,R0
|
|
112 140432 066700 140242' ADD LENGTH,R0
|
|
113 140436 112610 MOVB (SP)+,(R0)
|
|
114 140440 005267 140242' INC LENGTH
|
|
115 140444 000416 BR 9$
|
|
116
|
|
117 140446 016700 140240' 7$: MOV BUFFER,R0
|
|
118 140452 066700 140242' ADD LENGTH,R0
|
|
119 140456 105010 CLRB (R0)
|
|
120 140460 012737 140506 000240 MOV #CMD,@#240 ; CALL CMD AT PRIORITY 2
|
|
121 140466 012737 000100 000242 MOV #100,@#242
|
|
122 140474 012737 002000 177772 MOV #2000,@#177772
|
|
123 140502 012600 9$: MOV (SP)+,R0
|
|
124 140504 000002 RTI
|
|
125
|
|
126 CMD: ; 140506
|
|
127 140506 005037 177772 CLR @#177772 ; NO MORE PIR CALLS
|
|
128 140512 010046 MOV R0,-(SP)
|
|
129 140514 010146 MOV R1,-(SP)
|
|
130 140516 010246 MOV R2,-(SP)
|
|
131 140520 010346 MOV R3,-(SP)
|
|
132 140522 010446 MOV R4,-(SP)
|
|
133 140524 012700 141034 MOV #EOL,R0
|
|
134 140530 004767 140150' JSR PC,PRINT
|
|
135 140534 132737 000100 177564 1$: BITB #100,@#177564
|
|
136 140542 001374 BNE 1$
|
|
137 140544 005004 CLR R4
|
|
138 140546 012703 141043 MOV #CMDLST,R3 ; CMD LIST
|
|
139 140552 112300 3$: MOVB (R3)+,R0
|
|
140 140554 001431 BEQ 13$
|
|
141 140556 016702 140240' MOV BUFFER,R2 ; USER CMD
|
|
142 140562 112201 4$: MOVB (R2)+,R1
|
|
143 140564 001431 BEQ 15$ ; NULL COMMAND?
|
|
144 140566 120127 000040 CMPB R1,#40
|
|
145 140572 001773 BEQ 4$ ; SKIP SPACE
|
|
146 140574 120001 5$: CMPB R0,R1
|
|
147 140576 001010 BNE 7$
|
|
148 140600 112300 MOVB (R3)+,R0
|
|
149 140602 001412 BEQ 9$
|
|
150 140604 112201 MOVB (R2)+,R1
|
|
151 140606 001410 BEQ 9$
|
|
152 140610 120127 000040 CMPB R1,#40
|
|
153 140614 001367 BNE 5$
|
|
154 140616 000404 BR 9$
|
|
155 140620 112300 7$: MOVB (R3)+,R0
|
|
156 140622 001376 BNE 7$
|
|
157 140624 005204 INC R4
|
|
158 140626 000751 BR 3$
|
|
159 140630 006304 9$: ASL R4
|
|
160 140632 004774 140700 JSR PC,@CMDTBL(R4) ; EXECUTE
|
|
161 140636 000404 BR 15$
|
|
162
|
|
163 140640 012700 141077 13$: MOV #UNKMSG,R0
|
|
164 140644 004767 140150' JSR PC,PRINT
|
|
165
|
|
166 140650 005067 140242' 15$: CLR LENGTH
|
|
167 140654 012700 141254 MOV #PROMPT,R0
|
|
168 140660 004767 140150' JSR PC,PRINT
|
|
169 140664 012604 MOV (SP)+,R4
|
|
170 140666 012603 MOV (SP)+,R3
|
|
171 140670 012602 MOV (SP)+,R2
|
|
172 140672 012601 MOV (SP)+,R1
|
|
173 140674 012600 MOV (SP)+,R0
|
|
174 140676 000002 RTI
|
|
175
|
|
176
|
|
177 140700 142154 141350 141364 CMDTBL: .WORD BOOT,HALT,TEST,LIGHTS,HELP
|
|
140706 141470 141336
|
|
178 140712 103 117 115 HLPMSG: .ASCIZ 'COMMANDS ARE BOOT, HALT, LIGHTS, TEST AND HELP'<15><12>'BOOT DEVICES ARE RK? RL? OR RP?'<15><12>
|
|
140715 115 101 116
|
|
140720 104 123 040
|
|
140723 101 122 105
|
|
140726 040 102 117
|
|
140731 117 124 054
|
|
140734 040 110 101
|
|
140737 114 124 054
|
|
140742 040 114 111
|
|
140745 107 110 124
|
|
140750 123 054 040
|
|
140753 124 105 123
|
|
140756 124 040 101
|
|
140761 116 104 040
|
|
140764 110 105 114
|
|
140767 120 015 012
|
|
140772 102 117 117
|
|
140775 124 040 104
|
|
141000 105 126 111
|
|
141003 103 105 123
|
|
141006 040 101 122
|
|
141011 105 040 122
|
|
141014 113 077 040
|
|
141017 122 114 077
|
|
141022 040 117 122
|
|
141025 040 122 120
|
|
141030 077 015 012
|
|
141033 000
|
|
179 141034 015 012 000 EOL: .BYTE 15,12,0
|
|
180 141037 010 040 010 DEL: .BYTE 10,40,10,0
|
|
141042 000
|
|
181 141043 102 117 117 CMDLST: .ASCIZ 'BOOT'
|
|
141046 124 000
|
|
182 141050 110 101 114 .ASCIZ 'HALT'
|
|
141053 124 000
|
|
183 141055 124 105 123 .ASCIZ 'TEST'
|
|
141060 124 000
|
|
184 141062 114 111 107 .ASCIZ 'LIGHTS'
|
|
141065 110 124 123
|
|
141070 000
|
|
185 141071 110 105 114 .ASCIZ 'HELP'
|
|
141074 120 000
|
|
186 141076 000 .BYTE 0
|
|
187 141077 125 116 113 UNKMSG: .ASCIZ 'UNKNOWN COMMAND'<12><15>
|
|
141102 116 117 127
|
|
141105 116 040 103
|
|
141110 117 115 115
|
|
141113 101 116 104
|
|
141116 012 015 000
|
|
188 141121 120 104 120 BANNER: .ASCIZ 'PDP-11 BOOT TEST FOR PDPjs'<12><15>'ADAPTED FROM CODE BY PAUL NANKERVIS <PAULNANK@HOTMAIL.COM>'<12><15><12><15>
|
|
141124 055 061 061
|
|
141127 040 102 117
|
|
141132 117 124 040
|
|
141135 124 105 123
|
|
141140 124 040 106
|
|
141143 117 122 040
|
|
141146 120 104 120
|
|
141151 152 163 012
|
|
141154 015 101 104
|
|
141157 101 120 124
|
|
141162 105 104 040
|
|
141165 106 122 117
|
|
141170 115 040 103
|
|
141173 117 104 105
|
|
141176 040 102 131
|
|
141201 040 120 101
|
|
141204 125 114 040
|
|
141207 116 101 116
|
|
141212 113 105 122
|
|
141215 126 111 123
|
|
141220 040 074 120
|
|
141223 101 125 114
|
|
141226 116 101 116
|
|
141231 113 100 110
|
|
141234 117 124 115
|
|
141237 101 111 114
|
|
141242 056 103 117
|
|
141245 115 076 012
|
|
141250 015 012 015
|
|
141253 000
|
|
189 141254 102 117 117 PROMPT: .ASCIZ 'BOOT> '
|
|
141257 124 076 040
|
|
141262 000
|
|
190 141263 125 116 113 BADBOO: .ASCIZ 'UNKNOWN BOOT DEVICE'<12><15>
|
|
141266 116 117 127
|
|
141271 116 040 102
|
|
141274 117 117 124
|
|
141277 040 104 105
|
|
141302 126 111 103
|
|
141305 105 012 015
|
|
141310 000
|
|
191 141311 040 040 040 PERMSG: .ASCIZ ' CLOCK TICKS'<12><15>
|
|
141314 040 040 040
|
|
141317 103 114 117
|
|
141322 103 113 040
|
|
141325 124 111 103
|
|
141330 113 123 012
|
|
141333 015 000
|
|
192
|
|
193 141335 000 .EVEN
|
|
194
|
|
195 HELP: ; 141244
|
|
196 141336 012700 140712 MOV #HLPMSG,R0
|
|
197 141342 004767 140150' JSR PC,PRINT
|
|
198 141346 000207 RTS PC
|
|
199
|
|
200 HALT: ; 141260
|
|
201 141350 000000 HALT
|
|
202 141352 012700 141034 MOV #EOL,R0
|
|
203 141356 004767 140150' JSR PC,PRINT
|
|
204 141362 000207 RTS PC
|
|
205
|
|
206 TEST: ; 141272
|
|
207 141364 005067 140122' CLR CLKTIC
|
|
208
|
|
209 141370 012705 015000 MOV #15000,R5
|
|
210 141374 010537 177570 10$: MOV R5,@#177570 ; DISPLAY
|
|
211 141400 010504 MOV R5,R4
|
|
212 141402 006204 ASR R4
|
|
213 141404 005000 15$: CLR R0
|
|
214 141406 010501 MOV R5,R1
|
|
215 141410 071004 DIV R4,R0
|
|
216 141412 010002 MOV R0,R2
|
|
217 141414 070204 MUL R4,R2
|
|
218 141416 060301 ADD R3,R1
|
|
219 141420 020105 CMP R1,R5
|
|
220 141422 001401 BEQ 20$
|
|
221 141424 000000 HALT
|
|
222 141426 077412 20$: SOB R4,15$
|
|
223 141430 077517 SOB R5,10$
|
|
224
|
|
225 141432 012700 141316 MOV #PERMSG+5,R0
|
|
226 141436 016703 140122' MOV CLKTIC,R3
|
|
227
|
|
228 141442 005002 25$: CLR R2 ; 141350
|
|
229 141444 071227 000010 DIV #10,R2
|
|
230 141450 062703 000060 ADD #'0,R3
|
|
231 141454 110340 MOVB R3,-(R0)
|
|
232 141456 010203 MOV R2,R3
|
|
233 141460 001370 BNE 25$
|
|
234
|
|
235 141462 004767 140150' JSR PC,PRINT
|
|
236 141466 000207 RTS PC
|
|
237
|
|
238
|
|
239 177572 MMR0=177572
|
|
240 177574 MMR1=177574
|
|
241 177576 MMR2=177576
|
|
242 172516 MMR3=172516
|
|
243
|
|
244 LIGHTS: ; 141376
|
|
245 141470 012703 077406 MOV #77406,R3 ; DEFAULT PDR
|
|
246 141474 005002 CLR R2
|
|
247 141476 005001 CLR R1
|
|
248 141500 012700 000010 MOV #8.,R0
|
|
249 141504 010361 172300 1$: MOV R3,172300(R1) ; KERNEL I PDR
|
|
250 141510 010261 172340 MOV R2,172340(R1) ; KERNEL I PAR
|
|
251 141514 010361 172320 MOV R3,172320(R1) ; KERNEL D PDR
|
|
252 141520 010261 172360 MOV R2,172360(R1) ; KERNEL D PAR
|
|
253 141524 010361 172200 MOV R3,172200(R1) ; SUPER I PDR
|
|
254 141530 010261 172240 MOV R2,172240(R1) ; SUPER I PAR
|
|
255 141534 010361 172220 MOV R3,172220(R1) ; SUPER D PDR
|
|
256 141540 010261 172260 MOV R2,172260(R1) ; SUPER D PAR
|
|
257 141544 010361 177600 MOV R3,177600(R1) ; USER I PDR
|
|
258 141550 010261 177640 MOV R2,177640(R1) ; USER I PAR
|
|
259 141554 010361 177620 MOV R3,177620(R1) ; USER D PDR
|
|
260 141560 010361 177660 MOV R3,177660(R1) ; USER D PAR
|
|
261 141564 062702 000200 ADD #200,R2
|
|
262 141570 062701 000002 ADD #2,R1
|
|
263 141574 077035 SOB R0,1$
|
|
264 141576 052737 176000 172376 BIS #176000,@#172376 ; KERNEL D POINTS TO I/O SPACE
|
|
265 141604 052737 176000 172276 BIS #176000,@#172276 ; SUPER D POINTS TO I/O SPACE
|
|
266 141612 052737 176000 177676 BIS #176000,@#177676 ; USER D POINTS TO I/O SPACE
|
|
267 141620 012737 000077 172516 MOV #77,@#MMR3 ; 77 FOR 22 BIT
|
|
268 141626 012737 000001 177572 MOV #1,@#MMR0
|
|
269
|
|
270 141634 012737 001700 172244 MOV #1700,@#172244 ; BASE SUPER I (PAR 2) #40000 AT #170000
|
|
271 141642 012737 001700 172264 MOV #1700,@#172264 ; BASE SUPER D (PAR 2) #40000 AT #170000
|
|
272 141650 012737 010000 177776 MOV #010000,@#177776 ; SET PM TO SUPER
|
|
273
|
|
274 141656 012703 040200 MOV #40200,R3 ; SUPER CODE ADDRESS
|
|
275 141662 012702 141710 MOV #SUPERS,R2 ; ADDRESS SUPER CODE
|
|
276 141666 012246 10$: MOV (R2)+,-(SP)
|
|
277 141670 006623 MTPI (R3)+
|
|
278 141672 020227 142154 CMP R2,#SUPERE
|
|
279 141676 103773 BLO 10$
|
|
280
|
|
281 141700 012767 040200 140120' MOV #40200,LGHTON ; CHANGE IDLE TASK
|
|
282 141706 000207 RTS PC
|
|
283
|
|
284 ;
|
|
285 ; TO BE COPIED TO SUPER #40200 AT PHYSICAL #170000
|
|
286 ; #40000 TO #40200 FOR WAIT & JMP INSTRUCTIONS
|
|
287 ;
|
|
288 SUPERS: ; 141616
|
|
289 141710 012700 000037 MOV #37,R0 ; LOAD PATTERN
|
|
290 141714 012701 174000 MOV #174000,R1
|
|
291 141720 032737 000001 177570 BIT #1,@#177570
|
|
292 141726 001414 BEQ 10$
|
|
293 141730 012700 007417 MOV #7417,R0
|
|
294 141734 010001 MOV R0,R1
|
|
295 141736 005101 COM R1
|
|
296 141740 032737 000002 177570 BIT #2,@#177570
|
|
297 141746 001404 BEQ 10$
|
|
298 141750 012700 036163 MOV #36163,R0
|
|
299 141754 012701 037000 MOV #37000,R1
|
|
300 141760 010102 10$: MOV R1,R2
|
|
301 141762 162702 000002 SUB #2,R2
|
|
302 141766 042702 000001 BIC #1,R2 ; WAIT ADDRESS
|
|
303 141772 010203 MOV R2,R3
|
|
304 141774 042703 177701 BIC #177701,R3 ; ADDRESS OFFSET
|
|
305 142000 012763 000001 040000 MOV #0000001,40000(R3) ; WRITE WAIT
|
|
306 142006 062703 000002 ADD #2,R3
|
|
307 142012 012763 000113 040000 MOV #0000113,40000(R3) ; WRITE JMP (R3)
|
|
308
|
|
309 142020 010204 MOV R2,R4
|
|
310 142022 072427 177772 ASH #-6,R4
|
|
311 142026 042704 177600 BIC #177600,R4
|
|
312 142032 012705 001700 MOV #1700,R5
|
|
313 142036 160405 SUB R4,R5 ; PAR ADDRESS BASE FOR WAIT
|
|
314 142040 010204 MOV R2,R4
|
|
315 142042 072427 177764 ASH #-12.,R4
|
|
316 142046 042704 177761 BIC #177761,R4 ; PAR SELECT OFFSET
|
|
317 142052 010564 172240 MOV R5,172240(R4) ; SUPER I SPACE
|
|
318
|
|
319 142056 010103 MOV R1,R3
|
|
320 142060 072327 177764 ASH #-12.,R3
|
|
321 142064 042703 177761 BIC #177761,R3 ; PAR SELECT OFFSET
|
|
322 142070 020304 CMP R3,R4 ; SAME PAR
|
|
323 142072 001412 BEQ 30$
|
|
324 142074 010104 MOV R1,R4
|
|
325 142076 072427 177772 ASH #-6,R4
|
|
326 142102 042704 177600 BIC #177600,R4
|
|
327 142106 012705 001700 MOV #1700,R5
|
|
328 142112 160405 SUB R4,R5 ; PAR ADDRESS BASE FOR JMP
|
|
329 142114 010563 172240 MOV R5,172240(R3) ; SUPER I SPACE
|
|
330 30$:
|
|
331 142120 012704 000003 MOV #3,R4
|
|
332 142124 063704 177570 ADD @#177570,R4
|
|
333 142130 012703 000002 MOV #2,R3
|
|
334 142134 060703 ADD PC,R3
|
|
335 142136 000112 40$: JMP (R2)
|
|
336 142140 077402 SOB R4,40$
|
|
337 142142 010002 MOV R0,R2
|
|
338 142144 006002 ROR R2 ; ROTATE PATTERN
|
|
339 142146 006101 ROL R1
|
|
340 142150 006000 ROR R0
|
|
341 142152 000702 BR 10$
|
|
342 SUPERE:
|
|
343
|
|
344 BOOT: ; 142062
|
|
345 142154 005003 CLR R3 ; UNIT
|
|
346 142156 112201 1$: MOVB (R2)+,R1
|
|
347 142160 001545 BEQ BOOTRK ; DEFAULT DEVICE IS RK0
|
|
348 142162 120127 000040 CMPB R1,#40
|
|
349 142166 001773 BEQ 1$
|
|
350 142170 120127 000122 CMPB R1,#'R
|
|
351 142174 001405 BEQ 5$
|
|
352
|
|
353 142176 012700 141263 MOV #BADBOO,R0
|
|
354 142202 004767 140150' JSR PC,PRINT
|
|
355 142206 000207 RTS PC
|
|
356
|
|
357 142210 112201 5$: MOVB (R2)+,R1 ; HOPEFULLY K, L OR P
|
|
358 142212 112200 7$: MOVB (R2)+,R0 ; DIGIT
|
|
359 142214 001416 BEQ 9$
|
|
360 142216 120027 000040 CMPB R0,#40
|
|
361 142222 001413 BEQ 9$
|
|
362 142224 120027 000067 CMPB R0,#'7
|
|
363 142230 003031 BGT 11$
|
|
364 142232 162700 000060 SUB #'0,R0
|
|
365 142236 002426 BLT 11$
|
|
366 142240 006303 ASL R3
|
|
367 142242 006303 ASL R3
|
|
368 142244 006303 ASL R3
|
|
369 142246 050003 BIS R0,R3 ; PUT DIGIT INTO UNIT
|
|
370 142250 000760 BR 7$
|
|
371 142252 005002 9$: CLR R2
|
|
372 142254 012722 000137 MOV #137,(R2)+
|
|
373 142260 012722 140000 MOV #START,(R2)+
|
|
374 142264 012722 140000 MOV #START,(R2)+
|
|
375 142270 005022 CLR (R2)+
|
|
376 142272 120127 000113 CMPB R1,#'K
|
|
377 142276 001476 BEQ BOOTRK
|
|
378 142300 120127 000114 CMPB R1,#'L
|
|
379 142304 001410 BEQ BOOTRL
|
|
380 142306 120127 000120 CMPB R1,#'P
|
|
381 142312 001517 BEQ BOOTRP
|
|
382
|
|
383 142314 012700 141077 11$: MOV #UNKMSG,R0
|
|
384 142320 004767 140150' JSR PC,PRINT
|
|
385 142324 000207 RTS PC
|
|
386
|
|
387 174400 RLCS=174400
|
|
388 BOOTRL: ; 142234
|
|
389 142326 000005 RESET
|
|
390 142330 000303 SWAB R3 ; UNIT NUMBER
|
|
391 142332 012701 174400 MOV #RLCS,R1 ; CSR
|
|
392 142336 012761 000013 000004 MOV #13,4(R1) ; CLR ERR
|
|
393 142344 052703 000004 BIS #4,R3 ; UNIT+GSTAT
|
|
394 142350 010311 MOV R3,(R1) ; ISSUE CMD
|
|
395 142352 105711 TSTB (R1) ; WAIT
|
|
396 142354 100376 BPL .-2
|
|
397 142356 105003 CLRB R3
|
|
398 142360 052703 000010 BIS #10,R3 ; UNIT+RDHDR
|
|
399 142364 010311 MOV R3,(R1) ; ISSUE CMD
|
|
400 142366 105711 TSTB (R1) ; WAIT
|
|
401 142370 100376 BPL .-2
|
|
402 142372 016102 000006 MOV 6(R1),R2 ; GET HDR
|
|
403 142376 042702 000077 BIC #77,R2 ; CLR SECTOR
|
|
404 142402 005202 INC R2 ; MAGIC BIT
|
|
405 142404 010261 000004 MOV R2,4(R1) ; SEEK TO 0
|
|
406 142410 105003 CLRB R3
|
|
407 142412 052703 000006 BIS #6,R3 ; UNIT+SEEK
|
|
408 142416 010311 MOV R3,(R1) ; ISSUE CMD
|
|
409 142420 105711 TSTB (R1) ; WAIT
|
|
410 142422 100376 BPL .-2
|
|
411 142424 005061 000002 CLR 2(R1) ; CLR BA
|
|
412 142430 005061 000004 CLR 4(R1) ; CLR DA
|
|
413 142434 012761 177000 000006 MOV #-512.,6(R1) ; SET WC
|
|
414 142442 105003 CLRB R3
|
|
415 142444 052703 000014 BIS #14,R3 ; UNIT+READ
|
|
416 142450 010311 MOV R3,(R1) ; ISSUE CMD
|
|
417 142452 105711 TSTB (R1) ; WAIT
|
|
418 142454 100376 BPL .-2
|
|
419 142456 042711 000377 BIC #377,(R1)
|
|
420 142462 005002 CLR R2
|
|
421 142464 005003 CLR R3
|
|
422 142466 005004 CLR R4
|
|
423 142470 005005 CLR R5
|
|
424 142472 005007 CLR PC
|
|
425
|
|
426 177412 RKDA=177412
|
|
427 000005 READGO=5
|
|
428 BOOTRK:
|
|
429 142474 000005 RESET ; 142402
|
|
430 142476 000303 SWAB R3 ; UNIT NUMBER
|
|
431 142500 006303 ASL R3
|
|
432 142502 006303 ASL R3
|
|
433 142504 006303 ASL R3
|
|
434 142506 006303 ASL R3
|
|
435 142510 006303 ASL R3
|
|
436 142512 012701 177412 MOV #RKDA,R1 ; CSR
|
|
437 142516 010311 MOV R3,(R1) ; LOAD DA
|
|
438 142520 005041 CLR -(R1) ; CLEAR BA
|
|
439 142522 012741 177000 MOV #-256.*2,-(R1) ; LOAD WC
|
|
440 142526 012741 000005 MOV #READGO,-(R1) ; READ & GO
|
|
441 142532 005002 CLR R2
|
|
442 142534 005003 CLR R3
|
|
443 142536 005004 CLR R4
|
|
444 142540 005005 CLR R5
|
|
445 142542 105711 TSTB (R1)
|
|
446 142544 100376 BPL .-2
|
|
447 142546 105011 CLRB (R1)
|
|
448 142550 005007 CLR PC
|
|
449
|
|
450 176700 RPCSR=0176700
|
|
451 BOOTRP: ; 142460
|
|
452 142552 000005 RESET
|
|
453 142554 012701 176700 MOV #RPCSR, R1
|
|
454 142560 012761 000040 000010 MOV #0000040, 10(R1) ; RESET
|
|
455 142566 010361 000010 MOV R3, 10(R1) ; SET UNIT
|
|
456 142572 012711 000021 MOV #0000021, (R1) ; PACK ACK
|
|
457 142576 012761 010000 000032 MOV #0010000, 32(R1) ; 16B MODE
|
|
458 142604 012761 177000 000002 MOV #-512., 2(R1) ; SET WC
|
|
459 142612 005061 000004 CLR 4(R1) ; CLR BA
|
|
460 142616 005061 000006 CLR 6(R1) ; CLR DA
|
|
461 142622 005061 000034 CLR 34(R1) ; CLR CYL
|
|
462 142626 012711 000071 MOV #0000071, (R1) ; READ
|
|
463 142632 105711 TSTB (R1) ; WAIT
|
|
464 142634 100376 BPL .-2
|
|
465 142636 105011 CLRB (R1)
|
|
466 142640 010300 MOV R3,R0
|
|
467 142642 005007 CLR PC
|
|
468
|
|
469 .END START
|
|
469
|