Mercurial > hg > Members > kono > nitros9-code
comparison level1/modules/boot_1773.asm @ 0:6641a883d6b0
Initial revision
author | boisy |
---|---|
date | Thu, 04 Apr 2002 16:34:12 +0000 |
parents | |
children | cdfe69117a2f |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:6641a883d6b0 |
---|---|
1 ******************************************************************** | |
2 * Boot - OS-9 Level One V2 Boot for WD1773 | |
3 * | |
4 * $Id$ | |
5 * | |
6 * Ed. Comments Who YY/MM/DD | |
7 * ------------------------------------------------------------------ | |
8 * 1 Tandy/Microware original version | |
9 | |
10 nam Boot | |
11 ttl OS-9 Level One V2 Boot for WD1773 | |
12 | |
13 ifp1 | |
14 use defsfile | |
15 use rbfdefs | |
16 endc | |
17 | |
18 tylg set Systm+Objct | |
19 atrv set ReEnt+rev | |
20 rev set $01 | |
21 edition set $01 | |
22 | |
23 mod eom,name,tylg,atrv,start,size | |
24 | |
25 u0000 rmb 2 | |
26 u0002 rmb 2 | |
27 u0004 rmb 1 | |
28 size equ . | |
29 | |
30 name fcs /Boot/ | |
31 fcb edition | |
32 | |
33 * First, we make a stack... (5 bytes deep) | |
34 start clra | |
35 ldb #$05 | |
36 MakeStak pshs a | |
37 decb | |
38 bne MakeStak | |
39 | |
40 tfr s,u | |
41 ldx #DPort | |
42 leax $08,x | |
43 lda #$D0 | |
44 sta ,x | |
45 lbsr L0174 | |
46 lda ,x | |
47 lda #$FF | |
48 sta u0004,u | |
49 leax >L010E,pcr | |
50 stx >$010A | |
51 lda #$7E | |
52 sta >$0109 | |
53 lda #$08 | |
54 sta >DPort | |
55 ldd #$C350 | |
56 L0042 nop | |
57 nop | |
58 subd #$0001 | |
59 bne L0042 | |
60 | |
61 * search for a free page (to use as a 256 byte disk buffer) | |
62 pshs u,x,b,a | |
63 clra | |
64 clrb | |
65 ldy #$0001 | |
66 ldx <D.FMBM start of bitmap | |
67 ldu <D.FMBM+2 end of bitmap | |
68 os9 F$SchBit | |
69 bcs L009B | |
70 exg a,b | |
71 ldu $04,s | |
72 std u0002,u | |
73 clrb | |
74 | |
75 * go get LSN0 | |
76 ldx #$0000 | |
77 bsr L00B0 | |
78 bcs L009B | |
79 | |
80 * get bootfile size from LSN0 and allocate memory for it | |
81 ldd <DD.BSZ,y | |
82 std ,s | |
83 os9 F$SRqMem | |
84 bcs L009B | |
85 stu $02,s | |
86 ldu $04,s | |
87 ldx $02,s | |
88 stx u0002,u | |
89 ldx <DD.BT+1,y get starting sector | |
90 ldd <DD.BSZ,y and bootfile size | |
91 beq L0094 | |
92 | |
93 * this loop reads a sector at a time from the bootfile | |
94 RdSctLp pshs x,b,a | |
95 clrb | |
96 * X = sector # | |
97 bsr L00B0 | |
98 bcs L0099 | |
99 puls x,b,a | |
100 inc u0002,u | |
101 leax $01,x | |
102 subd #256 | |
103 bhi RdSctLp | |
104 L0094 clrb | |
105 puls b,a | |
106 bra L009D | |
107 L0099 leas $04,s | |
108 L009B leas $02,s | |
109 L009D puls u,x | |
110 leas 5,s restore stack | |
111 rts return to OS9 | |
112 | |
113 L00A2 clr ,u | |
114 clr u0004,u | |
115 lda #$05 | |
116 lbsr L013A | |
117 ldb #$03 | |
118 lbra L015F | |
119 | |
120 L00B0 lda #$91 | |
121 cmpx #$0000 | |
122 bne L00C8 | |
123 bsr L00C8 | |
124 bcs L00BF | |
125 ldy u0002,u | |
126 clrb | |
127 L00BF rts | |
128 | |
129 L00C0 bcc L00C8 | |
130 pshs x,b,a | |
131 bsr L00A2 | |
132 puls x,b,a | |
133 | |
134 L00C8 pshs x,b,a | |
135 bsr L00D3 | |
136 puls x,b,a | |
137 bcc L00BF | |
138 lsra | |
139 bne L00C0 | |
140 L00D3 bsr L011D | |
141 bcs L00BF | |
142 ldx u0002,u | |
143 orcc #FIRQMask+IRQMask | |
144 pshs y | |
145 ldy #$FFFF | |
146 ldb #$80 | |
147 stb >DPort+8 | |
148 ldb #$39 | |
149 stb >DPort | |
150 lbsr L0174 | |
151 ldb #$B9 | |
152 lda #$02 | |
153 L00F2 bita >DPort+8 | |
154 bne L0104 | |
155 leay -$01,y | |
156 bne L00F2 | |
157 lda #$09 | |
158 sta >DPort | |
159 puls y | |
160 bra L0119 | |
161 | |
162 L0104 lda >DPort+$0B | |
163 sta ,x+ | |
164 stb >DPort | |
165 bra L0104 | |
166 L010E leas $0C,s | |
167 puls y | |
168 ldb >DPort+8 | |
169 bitb #$04 | |
170 beq L0159 | |
171 L0119 comb | |
172 ldb #E$Read E$READ error | |
173 rts | |
174 | |
175 L011D clr ,u | |
176 tfr x,d | |
177 cmpd #$0000 | |
178 beq L0136 | |
179 clr ,-s | |
180 bra L012D | |
181 L012B inc ,s | |
182 L012D subd #$0012 | |
183 bcc L012B | |
184 addb #$12 | |
185 puls a | |
186 L0136 incb | |
187 stb >DPort+$0A | |
188 L013A ldb u0004,u | |
189 stb >DPort+9 | |
190 cmpa u0004,u | |
191 beq L0157 | |
192 sta u0004,u | |
193 sta >DPort+$0B | |
194 ldb #$13 | |
195 bsr L015F | |
196 pshs x | |
197 ldx #$222E | |
198 L0151 leax -1,x | |
199 bne L0151 | |
200 puls x | |
201 L0157 clrb | |
202 rts | |
203 | |
204 L0159 bitb #$98 | |
205 bne L0119 | |
206 clrb | |
207 rts | |
208 | |
209 L015F bsr L0172 | |
210 L0161 ldb >DPort+8 | |
211 bitb #$01 | |
212 bne L0161 | |
213 rts | |
214 | |
215 L0169 lda #$09 | |
216 sta >DPort | |
217 stb >DPort+8 | |
218 rts | |
219 | |
220 L0172 bsr L0169 | |
221 | |
222 * Some type of delay?? | |
223 L0174 lbsr L0177 | |
224 L0177 lbsr L017A | |
225 L017A rts | |
226 | |
227 emod | |
228 eom equ * |