annotate level1/modules/boot_1773.asm @ 0:6641a883d6b0

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