annotate level1/modules/scdpp.asm @ 1890:1021c2fd0c67

virtual disk descriptor program for DragonPlus add-on
author afra
date Wed, 12 Oct 2005 01:09:22 +0000
parents 613d93786303
children 2e37b5a0d4b3
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1839
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
1 *
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
2 * Paralell Printer device for Dragon 32/64/Alpha.
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
3 *
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
4 * Disassembled from the Alpha OS-9 2005-06-14, P.Harvey-Smith.
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
5 *
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
6
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
7 nam Printer
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
8 ttl Dragon Paralell Printer Driver
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
9
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
10 * Disassembled 1900/00/00 00:08:11 by Disasm v1.5 (C) 1988 by RML
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
11
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
12 ifp1
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
13 use defsfile.dragon
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
14 endc
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
15
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
16 tylg set Drivr+Objct
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
17 atrv set ReEnt+rev
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
18 rev set $01
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
19 edition set 3
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
20 mod eom,name,tylg,atrv,start,size
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
21
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
22 u0000 rmb 29
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
23 size equ .
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
24
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
25 fcb $03
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
26 name equ *
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
27 fcs /PRINTER/
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
28 fcb edition
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
29
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
30 start equ *
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
31 lbra Init
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
32 lbra Read
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
33 lbra Write
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
34 lbra GetStat
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
35 lbra SetStat
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
36 lbra Term
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
37
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
38 * Init
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
39 *
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
40 * Entry:
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
41 * Y = address of device descriptor
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
42 * U = address of device memory area
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
43 *
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
44 * Exit:
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
45 * CC = carry set on error
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
46 * B = error code
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
47 *
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
48 Init pshs cc
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
49 orcc #$50 ; Disable Inturrupts
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
50 ldx #PIA1DA ; Point to PIA1DA
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
51 ldb 1,x ; Get CRA
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
52 clr 1,x ; Zero CR and select DDRA
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
53 lda #$FE ; Set bit 0 as input (cassette in), all others as input
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
54 sta ,x
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
55 stb 1,x ; Restore CRA
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
56 ldx #PIA1DB ; Point at PIA1DB
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
57 ldb 1,x ; Save CRB
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
58 clr 1,x ; Zero CR and select DDRB
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
59 lda ,x ; get DDRB
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
60 anda #$FE ; Set bit 0 as input (printer busy), all others leave alone
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
61 sta ,x
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
62 stb 1,x ; restore CRB
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
63 puls cc
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
64 clrb ; Flag no error
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
65 rts
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
66
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
67 * Read
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
68 *
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
69 * Entry:
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
70 * B = MSB of the disk's LSN
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
71 * X = LSB of the disk's LSN
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
72 * Y = address of path descriptor
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
73 * U = address of device memory area
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
74 *
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
75 * Exit:
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
76 * CC = carry set on error
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
77 * B = error code
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
78 *
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
79
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
80 Read ldb #$CB ; Ilegal mode, cannot read from printer !
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
81 orcc #$01
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
82 rts
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
83
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
84 * Write
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
85 *
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
86 * Entry:
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
87 * B = MSB of the disk's LSN
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
88 * X = LSB of the disk's LSN
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
89 * Y = address of path descriptor
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
90 * U = address of device memory area
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
91 *
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
92 * Exit:
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
93 * CC = carry set on error
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
94 * B = error code
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
95 *
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
96
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
97 Write pshs a
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
98 L0053 ldb #$08 ; retry count
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
99 L0055 lda >PIA1DB ; Get printer busy flag
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
100 lsra ; Get busy bit into carry
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
101 bcc WriteNotBusy ; Not busy : continue
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
102 nop ; wait a little while
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
103 nop
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
104 decb ; decrement retry counter
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
105 bne L0055 ; Non zero : check flag again
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
106
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
107 pshs x ; Still busy: send calling process to sleep
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
108 ldx #$0001
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
109 os9 F$Sleep
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
110 puls x
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
111 bra L0053 ; When we wake, poll busy again
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
112
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
113 WriteNotBusy
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
114 puls a
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
115 pshs cc
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
116 orcc #$50 ; disable inturrupts
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
117 sta >PIA0DB ; Send character to printer
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
118 lda >PIA1DA ; Toggle printer strobe line
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
119 ora #$02 ; high
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
120 sta >PIA1DA
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
121 anda #$FD ; and low again
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
122 sta >PIA1DA
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
123 puls pc,cc ; restore and return
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
124
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
125 * GetStat
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
126 *
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
127 * Entry:
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
128 * A = function code
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
129 * Y = address of path descriptor
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
130 * U = address of device memory area
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
131 *
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
132 * Exit:
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
133 * CC = carry set on error
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
134 * B = error code
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
135 *
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
136 GetStat
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
137 cmpa #$01
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
138 bne L008A
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
139 L0088 clrb
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
140 rts
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
141
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
142 L008A cmpa #$06
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
143 beq L0088
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
144 *
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
145 * SetStat
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
146 *
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
147 * Entry:
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
148 * A = function code
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
149 * Y = address of path descriptor
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
150 * U = address of device memory area
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
151 *
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
152 * Exit:
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
153 * CC = carry set on error
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
154 * B = error code
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
155 *
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
156 SetStat
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
157 comb
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
158 ldb #$D0
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
159 rts
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
160 *
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
161 * Term
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
162 *
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
163 * Entry:
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
164 * U = address of device memory area
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
165 *
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
166 * Exit:
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
167 * CC = carry set on error
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
168 * B = error code
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
169 *
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
170
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
171 Term rts
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
172
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
173 emod
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
174 eom equ *
613d93786303 Paralell printer driver for Dragon 32/64/Alpha
afra
parents:
diff changeset
175 end