annotate level2/modules/rampak.asm @ 24:01a6e267aa38

Added the Basic09 Reference Manual
author roug
date Sat, 06 Apr 2002 13:34:58 +0000
parents 6641a883d6b0
children
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 * RamPak - Disto RAM Pak device driver
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 * 2 Original Disto version by Brian Lantz BL
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
9 * 3 Removed copyright info, removed useless BGP 98/10/20
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
10 * register saves, optimized, changed port
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
11 * address in descriptor to hold port address
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
12 * of RAM pak instead of MPI.
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
13
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
14 nam RamPak
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
15 ttl Disto RAM Pak device driver
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
16
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
17 * Disassembled 98/04/20 09:57:05 by Disasm v1.5 (C) 1988 by RML
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
18
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
19 ifp1
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
20 use defsfile
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
21 use rbfdefs
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
22 endc
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
23
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
24 tylg set Drivr+Objct
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
25 atrv set ReEnt+rev
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
26 rev set $01
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
27 edition set 3
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
28
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
29 mod eom,name,tylg,atrv,start,size
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
30
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
31 * RBF Data Area
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
32 rmb 129
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
33
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
34 * Free for driver use
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
35 ORGSlot rmb 1
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
36
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
37 size equ .
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
38 fcb $FF
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
39
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
40 name fcs /RamPak/
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
41 fcb edition
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
42 * fcc /(C) 1985 BRIAN A. LANTZ/
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
43 * fcb $0D
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
44 * fcc /LICENSED TO DISTO/
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
45
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
46 start lbra Init
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
47 lbra Read
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
48 lbra Write
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
49 lbra GetStat
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
50 lbra SetStat
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
51 lbra Term
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
52
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
53 * Init
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
54 *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
55 * Entry:
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
56 * Y = address of device descriptor
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
57 * U = address of device memory area
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
58 *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
59 * Exit:
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
60 * CC = carry set on error
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
61 * B = error code
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
62 *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
63 Init ldd #($FF*256)+3
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
64 stb V.NDRV,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
65 leax DRVBEG,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
66 * For each B, compute total sectors...
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
67 Init010 sta V.TRAK,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
68 pshs b,a
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
69 lda IT.CYL+1,y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
70 ldb IT.SCT+1,y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
71 mul
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
72 std DD.TOT+1,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
73 puls b,a
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
74 leax DRVMEM,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
75 decb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
76 bne Init010
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
77 rts
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
78
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
79 * Write
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
80 *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
81 * Entry:
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
82 * B = MSB of the disk's LSN
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
83 * X = LSB of the disk's LSN
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
84 * Y = address of path descriptor
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
85 * U = address of device memory area
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
86 *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
87 * Exit:
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
88 * CC = carry set on error
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
89 * B = error code
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
90 *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
91 Write pshs cc
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
92 bsr SlctSlot
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
93 ldy V.PORT,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
94 WritLoop lda ,x+
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
95 stb ,y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
96 sta 3,y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
97 incb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
98 bne WritLoop
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
99 bra RestSlot
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
100
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
101 * Read
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
102 *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
103 * Entry:
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
104 * B = MSB of the disk's LSN
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
105 * X = LSB of the disk's LSN
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
106 * Y = address of path descriptor
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
107 * U = address of device memory area
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
108 *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
109 * Exit:
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
110 * CC = carry set on error
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
111 * B = error code
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
112 *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
113 Read cmpx #$0000
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
114 beq ReadLSN0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
115
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
116 ReadSect pshs cc
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
117 bsr SlctSlot
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
118 ldy V.PORT,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
119 ReadLoop stb ,y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
120 lda 3,y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
121 sta ,x+
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
122 incb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
123 bne ReadLoop
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
124
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
125 * Restore the original MPI slot value we saved off
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
126 RestSlot lda >ORGSlot,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
127 sta >MPI.Slct
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
128 puls cc
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
129 clrb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
130 rts
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
131
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
132 * Read LSN0 into our path descriptor
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
133 ReadLSN0 pshs y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
134 bsr ReadSect
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
135 puls y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
136 ldx PD.BUF,y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
137 lda <PD.DRV,y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
138 leay DRVBEG,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
139 ldb #DRVMEM
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
140 mul
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
141 leay d,y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
142 ldb #DD.SIZ-1
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
143 LSN0Loop lda b,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
144 sta b,y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
145 decb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
146 bne LSN0Loop
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
147 rts
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
148
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
149
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
150 * This routine selects the MPI slot
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
151 * Exit: X = address of path descriptor buffer
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
152 SlctSlot orcc #IntMasks mask interrupts
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
153 lda >MPI.Slct get current selected slot
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
154 sta >ORGSlot,u save off
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
155 lda PD.DRV,y get drive no.
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
156 ldb #$11
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
157 mul multiply drive no. times $11
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
158 stb >MPI.Slct set new MPI slot no.
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
159 tfr x,d
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
160 sta >$FF42 write LSN hi byte to PAK
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
161 stb >$FF41 write LSN lo byte to PAK
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
162 ldx PD.BUF,y load X with address of path buffer
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
163 clrb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
164 rts
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
165
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
166 * GetStat
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
167 *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
168 * Entry:
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
169 * A = function code
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
170 * Y = address of path descriptor
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
171 * U = address of device memory area
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
172 *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
173 * Exit:
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
174 * CC = carry set on error
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
175 * B = error code
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
176 *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
177 GetStat comb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
178 ldb #E$UnkSvc
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
179 rts
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
180
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
181 SetStat
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
182 * Term
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
183 *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
184 * Entry:
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
185 * U = address of device memory area
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
186 *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
187 * Exit:
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
188 * CC = carry set on error
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
189 * B = error code
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
190 *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
191 Term clrb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
192 rts
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
193
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
194 emod
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
195 eom equ *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
196 end