1 | TITLE SPRINT
|
---|
2 | * V1.0 du 10.11.91
|
---|
3 | * Guyot daniel 73 83 09 43
|
---|
4 | * Machine TO et imprimante Citizen 120D+
|
---|
5 | ECRIT EQU $0800
|
---|
6 | CLOSE EQU $10
|
---|
7 | OPEN EQU $40
|
---|
8 | STAD EQU $4000
|
---|
9 | ENDAD EQU $5F40
|
---|
10 | * basic 1.0
|
---|
11 | LECVIR EQU $08F3
|
---|
12 | SNERRO EQU $0900 $07F3
|
---|
13 | LECVAR EQU $1108 $0EB8
|
---|
14 | LEVAR1 EQU $111A $0EF1
|
---|
15 | INTERP EQU $201D $2B38
|
---|
16 | *
|
---|
17 | RSOPC EQU $602B
|
---|
18 | SCRMOD EQU $605F
|
---|
19 | NBSUP EQU $6773
|
---|
20 | TABSUP EQU $6774
|
---|
21 | ADRSUP EQU $6776
|
---|
22 | *
|
---|
23 | PRC EQU $E7C3
|
---|
24 | RSCO EQU $E812
|
---|
25 |
|
---|
26 | ORG $9000
|
---|
27 |
|
---|
28 | EXEC LDA #1
|
---|
29 | STA NBSUP
|
---|
30 | TFR PC,D
|
---|
31 | ADDD #$0014
|
---|
32 | STD TABSUP D -> TABFON
|
---|
33 | ADDD #$0006
|
---|
34 | STD ADRSUP D -> INTFON
|
---|
35 | ADDD #$001E
|
---|
36 | STD ADRFON,PCR D -> SPRINT
|
---|
37 | RTS
|
---|
38 |
|
---|
39 | TABFON FCC "SPRIN"
|
---|
40 | FCB $80+'T
|
---|
41 |
|
---|
42 | ADRFON RMB 2
|
---|
43 |
|
---|
44 | INTFON SUBA #$F9 $F9=$80+$79
|
---|
45 | CMPA #$00 fonction non
|
---|
46 | BLO INT2 implantée
|
---|
47 | LDD #$0F00
|
---|
48 | LEAX TAB5,PCR
|
---|
49 | INT1 STB ,X+ mise à 0 des
|
---|
50 | DECA buffeurs
|
---|
51 | BNE INT1
|
---|
52 | LEAX ADRFON,PCR
|
---|
53 | JMP INTERP
|
---|
54 | INT2 JMP SNERRO
|
---|
55 |
|
---|
56 | SPRINT CMPA #$00 Copie simple
|
---|
57 | BEQ START
|
---|
58 | CMPA #$2C , -> var suite
|
---|
59 | BEQ SPR1
|
---|
60 | CMPA #$3A : -> fin instr
|
---|
61 | BEQ START
|
---|
62 | JSR LECVAR
|
---|
63 | CMPB #$01 copie simple
|
---|
64 | BLO INT2
|
---|
65 | CMPB #$03 copie triple
|
---|
66 | BHI INT2 à venir
|
---|
67 | DECB
|
---|
68 | STB TAB5,PCR mode copie
|
---|
69 | CMPA #$2C
|
---|
70 | BNE START
|
---|
71 | SPR1 JSR LECVIR
|
---|
72 | BEQ SPR2
|
---|
73 | JSR LECVAR
|
---|
74 | CMPB #$00 0 colonne
|
---|
75 | BLO INT2
|
---|
76 | CMPB #$20 32 colonnes
|
---|
77 | BHI INT2
|
---|
78 | STB TAB5+2,PCR nb colonnes
|
---|
79 | CMPA #$2C
|
---|
80 | BNE START
|
---|
81 | SPR2 JSR LEVAR1
|
---|
82 | CMPB #$00 0 ligne
|
---|
83 | LBLO INT2
|
---|
84 | CMPB #$2F 47 lignes
|
---|
85 | LBHI INT2
|
---|
86 | STB TAB5+3,PCR nb lignes
|
---|
87 |
|
---|
88 | START PSHS U,Y,X,DP,B,A,CC
|
---|
89 | LEAX TAB0,PCR initialisation
|
---|
90 | LBSR FOR0
|
---|
91 | LDA #OPEN ouverture //
|
---|
92 | STA RSOPC
|
---|
93 | LBSR IMP0
|
---|
94 | LDD #ECRIT écrit caracter
|
---|
95 | STA RSOPC
|
---|
96 | LBSR IMP0
|
---|
97 | LDB SCRMOD
|
---|
98 | CMPB #$80 mode 80/40 col
|
---|
99 | BNE STA0 0 -> 40 col
|
---|
100 | INC TAB5+5,PCR 1 -> 80 col
|
---|
101 | STA0 TST TAB5,PCR
|
---|
102 | BEQ SCOP copie simple
|
---|
103 |
|
---|
104 | LBRA DCOP copie double
|
---|
105 |
|
---|
106 | TAB0 FCB 23
|
---|
107 | FCB $48,$1B dblfp off
|
---|
108 | FCB $46,$1B gras off
|
---|
109 | FCB $00,$78,$1B nql off
|
---|
110 | FCB $01,$55,$1B undir on
|
---|
111 | FCB $42,$43,$1B lpag 66
|
---|
112 | FCB $50,$1B pica
|
---|
113 | FCB $39,$1B
|
---|
114 | FCB $00,$35,$7E,$1B epson
|
---|
115 | FCB $40,$1B raz
|
---|
116 | * interligne 24/216 pouce
|
---|
117 | TAB1 FCB 3
|
---|
118 | FCB $18,$33,$1B
|
---|
119 | * lg ligne 256+231=2*200+87(marge)
|
---|
120 | TAB2 FCB 5
|
---|
121 | FCB $01,$E7,$05,$2A,$1B
|
---|
122 | * lg ligne 256+64=320 (marge=0)
|
---|
123 | TAB3 FCB 5
|
---|
124 | FCB $01,$40,$05,$2A,$1B
|
---|
125 | TAB4 FCB 13
|
---|
126 | FCB $0A,$0D LF CR
|
---|
127 | FCB $40,$1B
|
---|
128 | FCB $00,$55,$1B undir off
|
---|
129 | * pica espacement normal
|
---|
130 | FCB $00,$33,$7E,$1B
|
---|
131 | FCB $32,$1B 1/6 pouce
|
---|
132 | TAB5 RMB 15
|
---|
133 |
|
---|
134 | SCOP LDX #$0000
|
---|
135 | LDA #$05 72p/p max 576
|
---|
136 | STA TAB3+3,PCR
|
---|
137 | TST TAB5+5,PCR
|
---|
138 | BEQ SCO1
|
---|
139 |
|
---|
140 | LDA #$07 144p/p max1152
|
---|
141 | STA TAB3+3,PCR
|
---|
142 | LEAX $140,X 320 pts
|
---|
143 |
|
---|
144 | SCO1 LEAX $140,X 320 pts
|
---|
145 | LDB #$08
|
---|
146 | LDA TAB5+2,PCR nb colonnes
|
---|
147 | TST TAB5+5,PCR
|
---|
148 | BEQ SCO2
|
---|
149 |
|
---|
150 | ASLA
|
---|
151 | SCO2 MUL
|
---|
152 | LEAX D,X
|
---|
153 | STX TAB3+1,PCR
|
---|
154 | STD TAB5+1,PCR
|
---|
155 |
|
---|
156 | LDA #$0A
|
---|
157 | STA TAB5+4,PCR
|
---|
158 |
|
---|
159 | LDX #STAD
|
---|
160 | STX TAB5+7,PCR
|
---|
161 | LDD TAB5+3,PCR nb ligne
|
---|
162 | TSTA
|
---|
163 | BEQ SDE1
|
---|
164 | LBSR FOR2
|
---|
165 | SDE1 PSHS X
|
---|
166 | LEAX TAB1,PCR interligne
|
---|
167 | LBSR FOR0
|
---|
168 | LEAX TAB3,PCR longueur lg
|
---|
169 | LBSR FOR0
|
---|
170 | PULS X
|
---|
171 |
|
---|
172 | LDD TAB5+1,PCR nb colonnes
|
---|
173 | PSHS A
|
---|
174 | TFR B,A
|
---|
175 | TSTA
|
---|
176 | BEQ SDE2
|
---|
177 | CLRB
|
---|
178 | LBSR FOR2
|
---|
179 | SDE2 PULS A
|
---|
180 | TSTA
|
---|
181 | BEQ SDE3
|
---|
182 | DECA
|
---|
183 | PSHS A
|
---|
184 | LDA #$FF
|
---|
185 | LBSR FOR2
|
---|
186 | LBSR IMP0
|
---|
187 | BRA SDE2
|
---|
188 |
|
---|
189 | SDE3 CLR TAB5+10,PCR
|
---|
190 |
|
---|
191 | SDE4 LDA #$08
|
---|
192 | STA TAB5+11,PCR
|
---|
193 | SDE5 CLR TAB5+12,PCR
|
---|
194 | CLR TAB5+13,PCR
|
---|
195 | LDB TAB5+10,PCR
|
---|
196 | LDX TAB5+7,PCR
|
---|
197 | LEAX B,X
|
---|
198 | SDE6 LDA TAB5+11,PCR
|
---|
199 | STA TAB5+14,PCR
|
---|
200 |
|
---|
201 | TST TAB5+6,PCR
|
---|
202 | BNE SDE7
|
---|
203 | LBSR RAMA 0 -> ramA
|
---|
204 | BRA SDE8
|
---|
205 | SDE7 LBSR RAMB 1 -> ramB
|
---|
206 |
|
---|
207 | SDE8 LDB ,X
|
---|
208 |
|
---|
209 | SDE9 RORB
|
---|
210 | TFR CC,A
|
---|
211 | DEC TAB5+14,PCR
|
---|
212 | BNE SDE9
|
---|
213 | TFR A,CC
|
---|
214 |
|
---|
215 | SDE10 ROL TAB5+13,PCR
|
---|
216 | INC TAB5+12,PCR
|
---|
217 | LDA TAB5+12,PCR
|
---|
218 | CMPA #$08 fin col caract
|
---|
219 | BEQ SDE11
|
---|
220 | LEAX $28,X ligne suivante
|
---|
221 | BRA SDE6
|
---|
222 |
|
---|
223 | SDE11 DEC TAB5+11,PCR -1 col caract
|
---|
224 | LDB TAB5+13,PCR bits col carac
|
---|
225 |
|
---|
226 | BSR IMP0 ecrit col car
|
---|
227 |
|
---|
228 | LDA TAB5+11,PCR
|
---|
229 | BNE SDE5 si>0 continuer
|
---|
230 |
|
---|
231 |
|
---|
232 | TST TAB5+5,PCR flag scrmod
|
---|
233 | BEQ COL0
|
---|
234 | TST TAB5+6,PCR flag ram ecran
|
---|
235 | BNE COL0
|
---|
236 | INC TAB5+6,PCR
|
---|
237 | BRA SDE4
|
---|
238 |
|
---|
239 | COL0 CLR TAB5+6,PCR
|
---|
240 |
|
---|
241 | INC TAB5+10,PCR
|
---|
242 | LDA TAB5+10,PCR
|
---|
243 | CMPA #$28 nb colonnes
|
---|
244 | LBNE SDE4
|
---|
245 |
|
---|
246 | INC TAB5+9,PCR
|
---|
247 |
|
---|
248 | LDB #$0D fin de ligne
|
---|
249 | BSR IMP0
|
---|
250 | PSHS X
|
---|
251 | LEAX TAB1,PCR interligne
|
---|
252 | BSR FOR0
|
---|
253 | PULS X
|
---|
254 | LDB #$0A
|
---|
255 | BSR IMP0
|
---|
256 |
|
---|
257 | LDA TAB5+9,PCR
|
---|
258 | CMPA #$19 nb lignes
|
---|
259 | LBEQ FIN2 fin ecran
|
---|
260 |
|
---|
261 | LDD #$0140
|
---|
262 | LDX TAB5+7,PCR
|
---|
263 | LEAX D,X
|
---|
264 | STX TAB5+7,PCR
|
---|
265 | LBRA SDE1
|
---|
266 |
|
---|
267 | FOR0 LDA ,X transf tab(s)
|
---|
268 | FOR1 LDB A,X
|
---|
269 | BSR IMP0
|
---|
270 | DECA
|
---|
271 | BNE FOR1
|
---|
272 | RTS
|
---|
273 | FOR2 BSR IMP0
|
---|
274 | DECA
|
---|
275 | BNE FOR2
|
---|
276 | RTS
|
---|
277 |
|
---|
278 | RAMA LDA PRC ecran forme
|
---|
279 | ORA #$01
|
---|
280 | STA PRC
|
---|
281 | RTS
|
---|
282 |
|
---|
283 | RAMB LDA PRC ecran fond
|
---|
284 | ANDA #$FE
|
---|
285 | STA PRC
|
---|
286 | RTS
|
---|
287 |
|
---|
288 | IMP0 JMP RSCO
|
---|
289 |
|
---|
290 | DCOP LDD #$060A
|
---|
291 | STD TAB5+3,PCR
|
---|
292 | LDD #$5700
|
---|
293 | STD TAB5+1,PCR
|
---|
294 | DDE0 LDX #STAD
|
---|
295 | LEAX -40,X
|
---|
296 | STX TAB5+7,PCR flag limite ecr
|
---|
297 | LDY #ENDAD
|
---|
298 | LEAY -40,Y
|
---|
299 | LDD TAB5+3,PCR
|
---|
300 | BSR FOR2
|
---|
301 | DDE2 CLR TAB5+9,PCR 4bits poid fort
|
---|
302 | DDE3 PSHS X
|
---|
303 | LEAX TAB1,PCR interligne
|
---|
304 | BSR FOR0
|
---|
305 | LEAX TAB2,PCR longueur lg
|
---|
306 | BSR FOR0
|
---|
307 | PULS X
|
---|
308 |
|
---|
309 | LDD TAB5+1,PCR
|
---|
310 | BSR FOR2
|
---|
311 | TFR Y,X Y->X adr octet
|
---|
312 |
|
---|
313 | GPL0 TST TAB5+6,PCR flag ram ecran
|
---|
314 | BNE GPL1
|
---|
315 | BSR RAMA 0 -> ramA
|
---|
316 | BRA GPL2
|
---|
317 | GPL1 BSR RAMB 1 -> ramB
|
---|
318 | GPL2 LDA ,X
|
---|
319 | TST TAB5+5,PCR flag scrmod
|
---|
320 | BEQ GPL3
|
---|
321 | TFR A,B
|
---|
322 | BRA IMP1
|
---|
323 | GPL3 CLRB
|
---|
324 | TST TAB5+9,PCR flag passe
|
---|
325 | BEQ GPL4
|
---|
326 | ROLA
|
---|
327 | ROLA
|
---|
328 | ROLA
|
---|
329 | ROLA
|
---|
330 | GPL4 ROLA
|
---|
331 | BCS GPL8
|
---|
332 | GPL5 ROLA
|
---|
333 | BCS GPL9
|
---|
334 | GPL6 ROLA
|
---|
335 | BCS GPL10
|
---|
336 | GPL7 ROLA
|
---|
337 | BCS GPL11
|
---|
338 | BRA IMP1
|
---|
339 | GPL8 LDB #$C0
|
---|
340 | BRA GPL5
|
---|
341 | GPL9 ADDB #$30
|
---|
342 | BRA GPL6
|
---|
343 | GPL10 ADDB #$0C
|
---|
344 | BRA GPL7
|
---|
345 | GPL11 ADDB #$03
|
---|
346 |
|
---|
347 | IMP1 LBSR IMP0 copie
|
---|
348 | LBSR IMP0
|
---|
349 | LEAX -40,X on remonte 1 lg
|
---|
350 | CMPX TAB5+7,PCR borne 3FD8/4000
|
---|
351 | BNE GPL2 2eme passe
|
---|
352 | LDB #$0D FIN2 de lg
|
---|
353 | LBSR IMP0
|
---|
354 | PSHS X
|
---|
355 | LEAX TAB1,PCR interlg
|
---|
356 | LBSR FOR0
|
---|
357 | PULS X
|
---|
358 | LDB #$0A
|
---|
359 | LBSR IMP0
|
---|
360 | TST TAB5+5,PCR
|
---|
361 | BEQ IMP2
|
---|
362 | INC TAB5+9,PCR
|
---|
363 | IMP2 TST TAB5+9,PCR
|
---|
364 | BNE COL1 si S=1 -> COL 0
|
---|
365 | INC TAB5+9,PCR 4 b poid faible
|
---|
366 | LBRA DDE3
|
---|
367 |
|
---|
368 | COL1 TST TAB5+5,PCR flag scrmod
|
---|
369 | BEQ COL3
|
---|
370 | TST TAB5+6,PCR flag ram ecran
|
---|
371 | BNE COL2 si 1 -> RAMA
|
---|
372 | INC TAB5+6,PCR
|
---|
373 | LBRA DDE2
|
---|
374 | COL2 CLR TAB5+6,PCR
|
---|
375 | COL3 LEAY 1,Y
|
---|
376 | CMPY #ENDAD
|
---|
377 | BEQ FIN2
|
---|
378 | INC TAB5+8,PCR
|
---|
379 | LBRA DDE2
|
---|
380 |
|
---|
381 | FIN2 LEAX TAB4,PCR
|
---|
382 | LBSR FOR0
|
---|
383 | LDA CLOSE
|
---|
384 | STA RSOPC
|
---|
385 | LBSR IMP0
|
---|
386 | PULS U,Y,X,DP,B,A,CC,PC
|
---|
387 | END
|
---|