1 | TITLE TO-GRAPH: Gestion feuille
|
---|
2 | * --------------------------------
|
---|
3 | PAGE
|
---|
4 |
|
---|
5 | ****************************************
|
---|
6 | * *
|
---|
7 | * TO-GRAPH *
|
---|
8 | * *
|
---|
9 | * Gestion feuille *
|
---|
10 | * *
|
---|
11 | ****************************************
|
---|
12 |
|
---|
13 |
|
---|
14 | *=======================================
|
---|
15 | * S/P chargement du bank d'un album
|
---|
16 | *
|
---|
17 | * Entrée: X pt entrée de la table
|
---|
18 | * des albums
|
---|
19 | * Sortie: CY 0 ok
|
---|
20 | * 1 erreur
|
---|
21 | *=======================================
|
---|
22 |
|
---|
23 | CHAALB PSHS D,X,Y
|
---|
24 | LEAS -1,S
|
---|
25 | MEMBK SET 0
|
---|
26 | PD SET 1
|
---|
27 | PX SET 3
|
---|
28 | *---------------------------------------
|
---|
29 |
|
---|
30 | LDA BANKC
|
---|
31 | STA MEMBK,S
|
---|
32 |
|
---|
33 | LDA #SQI ouverture fich
|
---|
34 | STA FILMOD
|
---|
35 |
|
---|
36 | LDY #FILNAM
|
---|
37 | LDB #8
|
---|
38 | BCA0 LDA ,X+
|
---|
39 | STA ,Y+
|
---|
40 | DECB
|
---|
41 | BNE BCA0 ->
|
---|
42 | LDD #$414C
|
---|
43 | STD ,Y++
|
---|
44 | LDA #$42
|
---|
45 | STA ,Y
|
---|
46 |
|
---|
47 | LDB #OPEN
|
---|
48 | JSR EXTRA
|
---|
49 | TSTB
|
---|
50 | BNE FINALR erreur ->
|
---|
51 | LDA ,X
|
---|
52 | STA BANKC
|
---|
53 |
|
---|
54 | * récupérer la longueur du bloc
|
---|
55 |
|
---|
56 | JSR LECFIC
|
---|
57 | BCS FINALR ->
|
---|
58 | TSTA
|
---|
59 | BNE FINARR non 0 en tete ->
|
---|
60 | JSR LECFIC lire longueur
|
---|
61 | BCS FINALR ->
|
---|
62 | TFR A,B
|
---|
63 | JSR LECFIC
|
---|
64 | BCS FINALR ->
|
---|
65 | EXG A,B
|
---|
66 | CMPD #0
|
---|
67 | BEQ FINARR vide ->
|
---|
68 | CMPD #$3FFE
|
---|
69 | BGT FINARR trop grand ->
|
---|
70 | STD $A000
|
---|
71 | TFR D,Y
|
---|
72 |
|
---|
73 | JSR LECFIC passer adr bidon
|
---|
74 | BCS FINALR ->
|
---|
75 | JSR LECFIC
|
---|
76 | BCS FINALR ->
|
---|
77 |
|
---|
78 | * Chargement
|
---|
79 |
|
---|
80 | LDX #$A002
|
---|
81 | JSR LECFIC type écran
|
---|
82 | BCS FINALR ->
|
---|
83 | CMPA #$80
|
---|
84 | BNE FINARR # 80 col. ->
|
---|
85 |
|
---|
86 | BCA1 STA ,X+
|
---|
87 | LEAY -1,Y
|
---|
88 | BEQ FINALC fini ->
|
---|
89 | JSR LECFIC
|
---|
90 | BCS FINALR ->
|
---|
91 | BRA BCA1 ->
|
---|
92 |
|
---|
93 | FINALC LDB #CLOSE
|
---|
94 | JSR EXTRA
|
---|
95 | LDA MEMBK,S
|
---|
96 | STA BANKC
|
---|
97 | ANDCC #$FE
|
---|
98 | LEAS 1,S
|
---|
99 | PULS D,X,Y,PC
|
---|
100 |
|
---|
101 | FINARR LDB #78 'bad picture'
|
---|
102 | JSR DOSERR
|
---|
103 | LDB #CLOSE
|
---|
104 | JSR EXTRA
|
---|
105 | FINALR LDA MEMBK,S
|
---|
106 | STA BANKC
|
---|
107 | LDX PX,S album libre
|
---|
108 | NEG 8,X
|
---|
109 | ORCC #1
|
---|
110 | LEAS 1,S
|
---|
111 | PULS D,X,Y,PC
|
---|
112 |
|
---|
113 |
|
---|
114 | *=======================================
|
---|
115 | * S/P codage d'un dessin
|
---|
116 | *
|
---|
117 | * Entrée: B 0 simple calcul de long.
|
---|
118 | * #0 écriture fichier
|
---|
119 | * Sortie: CY 0 si ok
|
---|
120 | * 1 si erreur
|
---|
121 | * D longueur
|
---|
122 | *=======================================
|
---|
123 |
|
---|
124 | CODDES PSHS D
|
---|
125 | LEAS -267,S
|
---|
126 | LGFIC SET 0
|
---|
127 | TYPDES SET 2
|
---|
128 | LARDES SET 3
|
---|
129 | HAUDES SET 4
|
---|
130 | MEMBK SET 5
|
---|
131 | PBK SET 6
|
---|
132 | TYPBLK SET 7 00: différents
|
---|
133 | * FF: répétition
|
---|
134 | LGBLK SET 8 lg bloc
|
---|
135 | RPTBLK SET 9 bloc en répet
|
---|
136 | PAGEC SET 10
|
---|
137 | BUFCOD SET 11
|
---|
138 | PD SET 267
|
---|
139 | PA SET 267
|
---|
140 | PB SET 268
|
---|
141 | *---------------------------------------
|
---|
142 | LDA BANKC
|
---|
143 | STA MEMBK,S
|
---|
144 |
|
---|
145 | * Calcul de l'adresse RAM début ligne
|
---|
146 | * initiale de la feuille (bank+déplac.)
|
---|
147 | LDA CADRNG *60*8 !
|
---|
148 | LSLA
|
---|
149 | LDB #60*4
|
---|
150 | MUL
|
---|
151 | ADDB CADCOL
|
---|
152 | ADCA #0
|
---|
153 | ADDD <ADF
|
---|
154 | BCC CODE10 ->
|
---|
155 | ADDD #$FFFF-48959
|
---|
156 | CODE10 CMPD #48960
|
---|
157 | BCS CODE11 ->
|
---|
158 | SUBD #48960
|
---|
159 | CODE11 STD <ADPRRL
|
---|
160 | ROLA
|
---|
161 | ROLA
|
---|
162 | ROLA
|
---|
163 | ANDA #3
|
---|
164 | ADDA #PBKTRA
|
---|
165 | STA PBK,S
|
---|
166 | LDD <ADPRRL
|
---|
167 | ANDA #$3F
|
---|
168 | ADDD #$A000
|
---|
169 | STD <ADPRRL
|
---|
170 |
|
---|
171 | * Init. codage
|
---|
172 | CLR LGBLK,S => lecture !
|
---|
173 | CLR PAGEC,S page 0
|
---|
174 | LDY <ADPRRL
|
---|
175 | LDA PBK,S
|
---|
176 | STA BANKC
|
---|
177 | LDA CADHAU
|
---|
178 | STA HAUDES,S
|
---|
179 | LDA CADLAR
|
---|
180 | STA LARDES,S
|
---|
181 | CLRA
|
---|
182 | STA LGFIC,S
|
---|
183 | STA LGFIC+1,S
|
---|
184 |
|
---|
185 | * Boucle de lecture .. Y= ad. RAM
|
---|
186 | * X= ad. buffer blk
|
---|
187 | * U= cpt colonne
|
---|
188 | BCODS0 LDA HAUDES,S # boucle colonne
|
---|
189 | LDB #8
|
---|
190 | MUL
|
---|
191 | TFR D,U
|
---|
192 | BCODS1 TST LGBLK,S # boucle lignes
|
---|
193 | BNE CODS10
|
---|
194 | INC LGBLK,S 1er octet bloc
|
---|
195 | LEAX BUFCOD,S
|
---|
196 | LDA ,Y
|
---|
197 | STA RPTBLK,S
|
---|
198 | STA ,X+
|
---|
199 | LBRA CODSUI ->
|
---|
200 |
|
---|
201 | CODS10 LDA LGBLK,S
|
---|
202 | CMPA #1
|
---|
203 | BNE CODS20 ->
|
---|
204 | INC LGBLK,S 2ème octet bloc
|
---|
205 | LDA ,Y
|
---|
206 | STA ,X+
|
---|
207 | CLR TYPBLK,S
|
---|
208 | CMPA RPTBLK,S
|
---|
209 | LBNE CODSUI ->
|
---|
210 | COM TYPBLK,S
|
---|
211 | LBRA CODSUI ->
|
---|
212 |
|
---|
213 | CODS20 TST TYPBLK,S bloc en cours
|
---|
214 | LBNE CODS40 répet. ->
|
---|
215 | LDA ,Y bloc différent!
|
---|
216 | STA ,X+
|
---|
217 | CMPA -2,X
|
---|
218 | BEQ CODS30 2 car. ident ->
|
---|
219 | INC LGBLK,S
|
---|
220 | LDA LGBLK,S
|
---|
221 | CMPA #255
|
---|
222 | LBNE CODSUI ->
|
---|
223 | LDX LGFIC,S bloc diff plein
|
---|
224 | LDB LGBLK,S
|
---|
225 | ADDB #2
|
---|
226 | ABX
|
---|
227 | STX LGFIC,S
|
---|
228 | TST PB,S
|
---|
229 | BEQ CODS25 ->
|
---|
230 | CLRA écrire bloc diff
|
---|
231 | JSR ECRFIC ->
|
---|
232 | LBCS CODSF
|
---|
233 | LDA LGBLK,S
|
---|
234 | JSR ECRFIC
|
---|
235 | LBCS CODSF ->
|
---|
236 | LEAX BUFCOD,S
|
---|
237 | LDB LGBLK,S
|
---|
238 | CODS21 LDA ,X+
|
---|
239 | JSR ECRFIC
|
---|
240 | LBCS CODSF ->
|
---|
241 | DECB
|
---|
242 | BNE CODS21 ->
|
---|
243 | CODS25 CLR LGBLK,S
|
---|
244 | LBRA CODSUI ->
|
---|
245 | CODS30 DEC LGBLK,S bloc diff. fini
|
---|
246 | LDX LGFIC,S
|
---|
247 | LDB LGBLK,S
|
---|
248 | ADDB #2
|
---|
249 | ABX
|
---|
250 | STX LGFIC,S
|
---|
251 | TST PB,S
|
---|
252 | BEQ CODS35 ->
|
---|
253 | CLRA écrire bloc diff
|
---|
254 | JSR ECRFIC
|
---|
255 | LBCS CODSF ->
|
---|
256 | LDA LGBLK,S
|
---|
257 | JSR ECRFIC
|
---|
258 | LBCS CODSF ->
|
---|
259 | LEAX BUFCOD,S
|
---|
260 | LDB LGBLK,S
|
---|
261 | CODS31 LDA ,X+
|
---|
262 | JSR ECRFIC
|
---|
263 | LBCS CODSF ->
|
---|
264 | DECB
|
---|
265 | BNE CODS31 ->
|
---|
266 | CODS35 LDA #2
|
---|
267 | STA LGBLK,S
|
---|
268 | LDA ,Y
|
---|
269 | STA RPTBLK,S
|
---|
270 | LDA #$FF
|
---|
271 | STA TYPBLK,S
|
---|
272 | LBRA CODSUI ->
|
---|
273 |
|
---|
274 | CODS40 LDA ,Y bloc répetition
|
---|
275 | CMPA RPTBLK,S
|
---|
276 | BNE CODS50 fin identiques>
|
---|
277 | INC LGBLK,S
|
---|
278 | LDA LGBLK,S
|
---|
279 | CMPA #255
|
---|
280 | LBNE CODSUI ->
|
---|
281 | LDD LGFIC,S bloc repet plein
|
---|
282 | ADDD #2
|
---|
283 | STD LGFIC,S
|
---|
284 | TST PB,S
|
---|
285 | BEQ CODS45 ->
|
---|
286 | LDA LGBLK,S écrire bloc rpt
|
---|
287 | JSR ECRFIC
|
---|
288 | LBCS CODSF ->
|
---|
289 | LDA RPTBLK,S
|
---|
290 | JSR ECRFIC
|
---|
291 | LBCS CODSF ->
|
---|
292 | CODS45 CLR LGBLK,S
|
---|
293 | LBRA CODSUI ->
|
---|
294 | CODS50 LDD LGFIC,S fin bloc repet
|
---|
295 | ADDD #2
|
---|
296 | STD LGFIC,S
|
---|
297 | TST PB,S
|
---|
298 | BEQ CODS55 ->
|
---|
299 | LDA LGBLK,S écrire bloc rpt
|
---|
300 | JSR ECRFIC
|
---|
301 | LBCS CODSF ->
|
---|
302 | LDA RPTBLK,S
|
---|
303 | JSR ECRFIC
|
---|
304 | LBCS CODSF ->
|
---|
305 | CODS55 LDA #1
|
---|
306 | STA LGBLK,S
|
---|
307 | LDA ,Y
|
---|
308 | LEAX BUFCOD,S
|
---|
309 | STA ,X+
|
---|
310 | STA RPTBLK,S
|
---|
311 |
|
---|
312 | CODSUI LEAY 60,Y
|
---|
313 | JSR NEXTF
|
---|
314 | LEAU -1,U
|
---|
315 | CMPU #0
|
---|
316 | LBNE BCODS1 ->
|
---|
317 | COM PAGEC,S
|
---|
318 | BMI CODS60
|
---|
319 | LDA PBK,S -> page paire
|
---|
320 | SUBA #3
|
---|
321 | STA PBK,S
|
---|
322 | STA BANKC
|
---|
323 | LDY <ADPRRL
|
---|
324 | LEAY 1,Y
|
---|
325 | JSR NEXTF
|
---|
326 | STY <ADPRRL
|
---|
327 | LDA BANKC
|
---|
328 | STA PBK,S
|
---|
329 | BRA CODS69 ->
|
---|
330 | CODS60 LDA PBK,S
|
---|
331 | ADDA #3
|
---|
332 | STA PBK,S
|
---|
333 | STA BANKC
|
---|
334 | LDY <ADPRRL
|
---|
335 | CODS69 DEC LARDES,S
|
---|
336 | LBNE BCODS0 ->
|
---|
337 |
|
---|
338 | TST LGBLK,S dernier bloc ?
|
---|
339 | LBEQ CODS80 ->
|
---|
340 | TST TYPBLK,S
|
---|
341 | BEQ CODS70 ->
|
---|
342 | LDD LGFIC,S
|
---|
343 | ADDD #2
|
---|
344 | STD LGFIC,S
|
---|
345 | TST PB,S
|
---|
346 | LBEQ CODS80 ->
|
---|
347 | LDA LGBLK,S écrire bloc rpt
|
---|
348 | JSR ECRFIC
|
---|
349 | LBCS CODSF ->
|
---|
350 | LDA RPTBLK,S
|
---|
351 | JSR ECRFIC
|
---|
352 | LBCS CODSF ->
|
---|
353 | BRA CODS80 ->
|
---|
354 |
|
---|
355 | CODS70 LDX LGFIC,S
|
---|
356 | LDB LGBLK,S
|
---|
357 | ADDB #2
|
---|
358 | ABX
|
---|
359 | STX LGFIC,S
|
---|
360 | TST PB,S
|
---|
361 | BEQ CODS80 ->
|
---|
362 | CLRA écrire bloc diff
|
---|
363 | JSR ECRFIC
|
---|
364 | LBCS CODSF ->
|
---|
365 | LDA LGBLK,S
|
---|
366 | JSR ECRFIC
|
---|
367 | LBCS CODSF ->
|
---|
368 | LEAX BUFCOD,S
|
---|
369 | LDB LGBLK,S
|
---|
370 | CODS71 LDA ,X+
|
---|
371 | JSR ECRFIC
|
---|
372 | LBCS CODSF ->
|
---|
373 | DECB
|
---|
374 | BNE CODS71 ->
|
---|
375 |
|
---|
376 | CODS80 LDD LGFIC,S
|
---|
377 | STD PD,S
|
---|
378 | ANDCC #$FE
|
---|
379 | BRA CODSEX fini ->
|
---|
380 |
|
---|
381 | CODSF ORCC #1
|
---|
382 | CODSEX LDA MEMBK,S
|
---|
383 | STA BANKC
|
---|
384 | LEAS 267,S
|
---|
385 | PULS D,PC ->>
|
---|
386 |
|
---|
387 |
|
---|
388 | *=======================================
|
---|
389 | * S/P saisie d'un album
|
---|
390 | *
|
---|
391 | * Entrée: A,B coordonnées fenêtre
|
---|
392 | * X Pt recepteur nom
|
---|
393 | * Sortie: CY 1 Raz
|
---|
394 | * 0 ok
|
---|
395 | * (X) zone nom rendu
|
---|
396 | *=======================================
|
---|
397 |
|
---|
398 | CZIALB PSHS U
|
---|
399 | LDU #XCZIAL
|
---|
400 | JSR COMBK2
|
---|
401 | PULS U,PC
|
---|
402 |
|
---|
403 |
|
---|
404 | *=======================================
|
---|
405 | * S/P ecriture d'un fichier .ALB à
|
---|
406 | * partir d'un album
|
---|
407 | *
|
---|
408 | * Entrée: X pt sur album dans table
|
---|
409 | *=======================================
|
---|
410 |
|
---|
411 | ECRALB PSHS D,X,Y
|
---|
412 | LEAS -1,S
|
---|
413 | MEMBK SET 0
|
---|
414 | *---------------------------------------
|
---|
415 | LDY #FILNAM nom défaut
|
---|
416 | LDA #8
|
---|
417 | ECAL0 LDB ,X+
|
---|
418 | STB ,Y+
|
---|
419 | DECA
|
---|
420 | BNE ECAL0 ->
|
---|
421 | LDD #$414C
|
---|
422 | STD ,Y++
|
---|
423 | LDA #$42
|
---|
424 | STA ,Y+
|
---|
425 |
|
---|
426 | LDA ,X
|
---|
427 | STA MEMBK,S
|
---|
428 |
|
---|
429 | LDX #MCOMAL
|
---|
430 | LDA #8
|
---|
431 | ECAL00 LDB ,X+
|
---|
432 | STB ,Y+
|
---|
433 | DECA
|
---|
434 | BNE ECAL00 ->
|
---|
435 |
|
---|
436 | LDD #$FD22 confirmer nom
|
---|
437 | LBSR FENLOF
|
---|
438 | LDA #BKMANO
|
---|
439 | STA BANKC
|
---|
440 | LDX #ZONTRA
|
---|
441 | LDY #LGZTRA
|
---|
442 | LDU #MVFICH
|
---|
443 | LBSR DOSCZI
|
---|
444 | LBEQ ECALFF RAZ ->
|
---|
445 | LBCS ECALFF erreur ->
|
---|
446 |
|
---|
447 | LDD #$0312 vérifier non
|
---|
448 | LBSR FENLOF existence
|
---|
449 | JSR DOSTST
|
---|
450 | BCS ECALFF existe ->
|
---|
451 |
|
---|
452 | LDB MEMBK,S album->bank ram
|
---|
453 | LDA BANKC
|
---|
454 | STA MEMBK,S
|
---|
455 | STB BANKC
|
---|
456 |
|
---|
457 | LDA #SQO #ouverture
|
---|
458 | STA FILMOD
|
---|
459 | LDA #2
|
---|
460 | STA FILTYP type
|
---|
461 | CLR ASCFLG binaire
|
---|
462 | LDB #OPEN
|
---|
463 | JSR EXTRA
|
---|
464 | TSTB
|
---|
465 | BNE ECALO erreur ->
|
---|
466 |
|
---|
467 | CLRA #en tete bloc
|
---|
468 | JSR ECRFIC
|
---|
469 | BCS ECALF ->
|
---|
470 | LDA $A000 longueur!
|
---|
471 | JSR ECRFIC
|
---|
472 | BCS ECALF ->
|
---|
473 | LDA $A001
|
---|
474 | JSR ECRFIC
|
---|
475 | BCS ECALF ->
|
---|
476 | CLRA
|
---|
477 | JSR ECRFIC
|
---|
478 | BCS ECALF ->
|
---|
479 | JSR ECRFIC
|
---|
480 | BCS ECALF ->
|
---|
481 |
|
---|
482 | LDX #$A002 #données
|
---|
483 | LDY $A000
|
---|
484 | ECAL1 LDA ,X+
|
---|
485 | JSR ECRFIC
|
---|
486 | BCS ECALF erreur ->
|
---|
487 | LEAY -1,Y
|
---|
488 | BNE ECAL1 ->
|
---|
489 |
|
---|
490 | LDA #$FF #bloc fin
|
---|
491 | JSR ECRFIC
|
---|
492 | BCS ECALF ->
|
---|
493 | CLRA
|
---|
494 | LDB #4
|
---|
495 | BECBFI JSR ECRFIC
|
---|
496 | BCS ECALF ->
|
---|
497 | DECB
|
---|
498 | BNE BECBFI ->
|
---|
499 |
|
---|
500 | LDB #CLOSE # fin normale
|
---|
501 | JSR EXTRA
|
---|
502 | BRA ECALF ->
|
---|
503 | ECALO JSR DOSERR # erreur OPEN
|
---|
504 | ECALF LDA MEMBK,S
|
---|
505 | STA BANKC
|
---|
506 | ECALFF LEAS 1,S
|
---|
507 | PULS D,X,Y,PC
|
---|
508 |
|
---|
509 |
|
---|
510 | *=======================================
|
---|
511 | * S/P ecriture d'un dessin limite par
|
---|
512 | * SPCADR sur fichier
|
---|
513 | *=======================================
|
---|
514 |
|
---|
515 | ECRDES PSHS D,X,Y
|
---|
516 | LEAS -1,S
|
---|
517 | MEMBK SET 0
|
---|
518 | *---------------------------------------
|
---|
519 | LDA BANKC
|
---|
520 | STA MEMBK,S
|
---|
521 |
|
---|
522 | LDY #FILNAM nom défaut
|
---|
523 | LDX #DESCOU
|
---|
524 | BECDE0 LDA ,X+
|
---|
525 | STA ,Y+
|
---|
526 | CMPY #FILNAM+8
|
---|
527 | BNE BECDE0 ->
|
---|
528 | LDD #$4D41 '.MAP'
|
---|
529 | STD ,Y++
|
---|
530 | LDA #$50
|
---|
531 | STA ,Y+
|
---|
532 |
|
---|
533 | LDX #MCOMAL
|
---|
534 | LDA #8
|
---|
535 | BECDE1 LDB ,X+
|
---|
536 | STB ,Y+
|
---|
537 | DECA
|
---|
538 | BNE BECDE1 ->
|
---|
539 |
|
---|
540 | LDD #$0313 saisir nom fic.
|
---|
541 | LBSR FENLOF
|
---|
542 | LDA #BKMANO
|
---|
543 | STA BANKC
|
---|
544 | LDX #ZONTRA
|
---|
545 | LDY #LGZTRA
|
---|
546 | LDU #MVFICH
|
---|
547 | LBSR DOSCZI
|
---|
548 | LBEQ ECDEF RAZ ->
|
---|
549 | LBCS ECDEF erreur ->
|
---|
550 |
|
---|
551 | LDD #$0919 vérifier non
|
---|
552 | LBSR FENLOF existence
|
---|
553 | JSR DOSTST
|
---|
554 | LBCS ECDEF existe ->
|
---|
555 |
|
---|
556 | LDA #SQO #ouverture
|
---|
557 | STA FILMOD
|
---|
558 | LDA #2
|
---|
559 | STA FILTYP type
|
---|
560 | CLR ASCFLG binaire
|
---|
561 | LDB #OPEN
|
---|
562 | JSR EXTRA
|
---|
563 | TSTB
|
---|
564 | BNE ECDEO erreur ->
|
---|
565 |
|
---|
566 | CLRA #en tete bloc
|
---|
567 | JSR ECRFIC
|
---|
568 | BCS ECDEF ->
|
---|
569 |
|
---|
570 | CLRB
|
---|
571 | JSR CODDES calcul lgth
|
---|
572 | ADDD #3 (type+larg+haut)
|
---|
573 | ADDD #4 (4 fois 0 en fin
|
---|
574 | JSR ECRFIC
|
---|
575 | BCS ECDEF ->
|
---|
576 | TFR B,A
|
---|
577 | JSR ECRFIC
|
---|
578 | BCS ECDEF ->
|
---|
579 | CLRA
|
---|
580 | JSR ECRFIC
|
---|
581 | BCS ECDEF ->
|
---|
582 | JSR ECRFIC
|
---|
583 | BCS ECDEF ->
|
---|
584 |
|
---|
585 | LDA #$80 80 colonnes
|
---|
586 | JSR ECRFIC
|
---|
587 | BCS ECDEF ->
|
---|
588 |
|
---|
589 | LDA CADLAR largeur - 1
|
---|
590 | DECA
|
---|
591 | JSR ECRFIC
|
---|
592 | BCS ECDEF ->
|
---|
593 |
|
---|
594 | LDA CADHAU hauteur - 1
|
---|
595 | DECA
|
---|
596 | JSR ECRFIC
|
---|
597 | BCS ECDEF ->
|
---|
598 |
|
---|
599 | LDB #1
|
---|
600 | JSR CODDES
|
---|
601 | BCS ECDEF ->
|
---|
602 |
|
---|
603 | LDB #4 fin image
|
---|
604 | CLRA
|
---|
605 | BECFI0 JSR ECRFIC
|
---|
606 | BCS ECDEF ->
|
---|
607 | DECB
|
---|
608 | BNE BECFI0 ->
|
---|
609 |
|
---|
610 | LDA #$FF #bloc fin
|
---|
611 | JSR ECRFIC
|
---|
612 | BCS ECDEF ->
|
---|
613 | CLRA
|
---|
614 | LDB #4
|
---|
615 | BECDFI JSR ECRFIC
|
---|
616 | BCS ECDEF ->
|
---|
617 | DECB
|
---|
618 | BNE BECDFI ->
|
---|
619 |
|
---|
620 | LDB #CLOSE # fin normale
|
---|
621 | JSR EXTRA
|
---|
622 | BRA ECDEF ->
|
---|
623 | ECDEO JSR DOSERR # erreur OPEN
|
---|
624 | ECDEF LDA MEMBK,S
|
---|
625 | STA BANKC
|
---|
626 | LEAS 1,S
|
---|
627 | PULS D,X,Y,PC
|
---|
628 |
|
---|
629 |
|
---|
630 | *=======================================
|
---|
631 | * S/P copie d'une page écran vers la
|
---|
632 | * zone correspondante de la feuille
|
---|
633 | *
|
---|
634 | * Entrée: B 0 page paire
|
---|
635 | * 1 page impaire
|
---|
636 | * RGDECR emplacement écran
|
---|
637 | * CLDECR dans la feuille
|
---|
638 | *=======================================
|
---|
639 |
|
---|
640 | ECRFEU PSHS U
|
---|
641 | LDU #XECRFE
|
---|
642 | JSR COMBK2
|
---|
643 | PULS U,PC
|
---|
644 |
|
---|
645 |
|
---|
646 | *=======================================
|
---|
647 | * S/P ecriture sur fichier
|
---|
648 | *
|
---|
649 | * Entrée: A car. à ecrire
|
---|
650 | * Sortie: CY 0 si ok
|
---|
651 | * 1 si erreur (fichier sera
|
---|
652 | * fermé !)
|
---|
653 | *=======================================
|
---|
654 |
|
---|
655 | ECRFIC PSHS U
|
---|
656 | LDU #XECRFI
|
---|
657 | JSR COMBK2
|
---|
658 | PULS U,PC
|
---|
659 |
|
---|
660 |
|
---|
661 | *=======================================
|
---|
662 | * S/P copie vers une page écran de la
|
---|
663 | * zone correspondante de la feuille
|
---|
664 | *
|
---|
665 | * Entrée: B 0 page paire
|
---|
666 | * 1 page impaire
|
---|
667 | * RGDECR emplacement écran
|
---|
668 | * CLDECR dans la feuille
|
---|
669 | *=======================================
|
---|
670 |
|
---|
671 | FEUECR PSHS U
|
---|
672 | LDU #XFEUEC
|
---|
673 | JSR COMBK2
|
---|
674 | PULS U,PC
|
---|
675 |
|
---|
676 |
|
---|
677 | *=======================================
|
---|
678 | * S/P chargement initial des albums
|
---|
679 | * présents sur la disquette de char.
|
---|
680 | * gement
|
---|
681 | * (fichiers $xxxxxxx.ALB)
|
---|
682 | *=======================================
|
---|
683 |
|
---|
684 | MCALB FCC \Chargementalbum:\
|
---|
685 | FCB 0
|
---|
686 | *---------------------------------------
|
---|
687 | INIALB PSHS D,X,Y,U
|
---|
688 | LEAS -2,S
|
---|
689 | FLGDIR SET 0
|
---|
690 | ALBC SET 1
|
---|
691 | *---------------------------------------
|
---|
692 |
|
---|
693 | * calcul du maxima possible
|
---|
694 | LDA MAXBK
|
---|
695 | DECA ->nb bank disp.
|
---|
696 | SUBA #11
|
---|
697 | LDB #16 maxima!
|
---|
698 | STB MAXALB
|
---|
699 | TSTA
|
---|
700 | BGT BRF000 ->
|
---|
701 | CLR MAXALB
|
---|
702 | LBRA FINIAL ->
|
---|
703 | BRF000 CMPA #16
|
---|
704 | BGE BRF00 ->
|
---|
705 | STA MAXALB
|
---|
706 |
|
---|
707 | BRF00 LDA MAXALB
|
---|
708 | STA ALBC,S
|
---|
709 |
|
---|
710 | * chargement table des albums
|
---|
711 | CLR NBALB
|
---|
712 | CLR FLGDIR,S
|
---|
713 | LDX #TABALB raz tous postes
|
---|
714 | LDA #PBKALB
|
---|
715 | NEGA
|
---|
716 | LDB #16 max !!!
|
---|
717 | BRF0 STA 8,X
|
---|
718 | DECA
|
---|
719 | CLR ,X
|
---|
720 | LEAX 9,X
|
---|
721 | DECB
|
---|
722 | BNE BRF0 ->
|
---|
723 |
|
---|
724 | LDX #FILNAM filtre
|
---|
725 | LDB #$24 $xxxxxxx.ALB
|
---|
726 | STB ,X+
|
---|
727 | BRF1 CLR ,X+
|
---|
728 | CMPX #FILNAM+8
|
---|
729 | BNE BRF1 ->
|
---|
730 | LDD #$414C
|
---|
731 | STD ,X++
|
---|
732 | LDA #$42
|
---|
733 | STA ,X
|
---|
734 |
|
---|
735 | LDX #TABALB
|
---|
736 | BRF2 LDB #DIR0
|
---|
737 | ADDB FLGDIR,S
|
---|
738 | JSR EXTRA
|
---|
739 | TSTB
|
---|
740 | BNE FINIAL erreur ->
|
---|
741 | TST NAMSEC
|
---|
742 | BEQ FINICN fin ->
|
---|
743 | LDY NAMSLT
|
---|
744 | LDA #8
|
---|
745 | BRF3 LDB ,Y+
|
---|
746 | STB ,X+
|
---|
747 | DECA
|
---|
748 | BNE BRF3 ->
|
---|
749 | LEAX 1,X
|
---|
750 | LDA #1
|
---|
751 | STA FLGDIR,S
|
---|
752 | DEC ALBC,S
|
---|
753 | BNE BRF2 suite charg ->
|
---|
754 |
|
---|
755 | * Chargement des albums sélectionné
|
---|
756 | FINICN LDA ALBC,S
|
---|
757 | CMPA MAXALB
|
---|
758 | BEQ FINIAL ->
|
---|
759 | CLR ALBC,S
|
---|
760 | LDU #TABALB
|
---|
761 |
|
---|
762 | BRF4 LDD #$0A18
|
---|
763 | LDX #ZONTRA
|
---|
764 | LDY #LGZTRA
|
---|
765 | JSR SBREAK
|
---|
766 | LBCS FINIAL interrompu ->
|
---|
767 |
|
---|
768 | LDD #$0401 visu chargement
|
---|
769 | LDY #$0120 courant
|
---|
770 | JSR FENLOF
|
---|
771 | LEAX MCALB,PCR
|
---|
772 | JSR FENEDI
|
---|
773 |
|
---|
774 | TST ,U
|
---|
775 | BEQ INIVID ->
|
---|
776 | LDA #8 poste à charger
|
---|
777 | TFR U,X
|
---|
778 | BRF5 LDB ,X+
|
---|
779 | JSR FENPUT
|
---|
780 | DECA
|
---|
781 | BNE BRF5 ->
|
---|
782 |
|
---|
783 | TFR U,X
|
---|
784 | NEG 8,U si erreur sera
|
---|
785 | * inv. par CHAALB
|
---|
786 | JSR CHAALB chargement->bank
|
---|
787 | BCS FINIAL erreur ->
|
---|
788 | STX ALBCOU
|
---|
789 |
|
---|
790 | INC NBALB
|
---|
791 | INIVID LEAU 9,U
|
---|
792 | INC ALBC,S
|
---|
793 | LDA ALBC,S
|
---|
794 | CMPA #16
|
---|
795 | BNE BRF4 suite ->
|
---|
796 |
|
---|
797 | FINIAL LEAS 2,S
|
---|
798 | PULS D,X,Y,U,PC
|
---|
799 |
|
---|
800 |
|
---|
801 | *=======================================
|
---|
802 | * S/P recherche d'un album dans table
|
---|
803 | * (création si inexistant)
|
---|
804 | * Entrée: X pt nom album
|
---|
805 | * Sortie: CY 1 pas de place
|
---|
806 | * 0 ok
|
---|
807 | * X pt dans table si ok
|
---|
808 | *=======================================
|
---|
809 |
|
---|
810 | CHALB PSHS U
|
---|
811 | LDU #XCHALB
|
---|
812 | JSR COMBK2
|
---|
813 | PULS U,PC
|
---|
814 |
|
---|
815 |
|
---|
816 | *=======================================
|
---|
817 | * S/P lecture d'un dessin sur fichier
|
---|
818 | * en la position courante
|
---|
819 | *
|
---|
820 | * Sortie: B 0 si ok
|
---|
821 | * B #0 si erreur
|
---|
822 | *=======================================
|
---|
823 |
|
---|
824 | MERDB FCC \CADRAGEINSUFFISANT\
|
---|
825 | FCB 0
|
---|
826 |
|
---|
827 | LECDES LEAS -11,S
|
---|
828 | LGFIC SET 0
|
---|
829 | TYPDES SET 2
|
---|
830 | LARDES SET 3
|
---|
831 | HAUDES SET 4
|
---|
832 | MEMBK SET 5
|
---|
833 | PBK SET 6
|
---|
834 | TYPBLK SET 7 00: différents
|
---|
835 | * FF: répétition
|
---|
836 | LGBLK SET 8 lg bloc
|
---|
837 | RPTBLK SET 9 bloc en répet
|
---|
838 | PAGEC SET 10
|
---|
839 | *---------------------------------------
|
---|
840 | LDA BANKC
|
---|
841 | STA MEMBK,S
|
---|
842 |
|
---|
843 | LDB #SQI
|
---|
844 | STB FILMOD
|
---|
845 | LDB #OPEN
|
---|
846 | JSR EXTRA
|
---|
847 | TSTB
|
---|
848 | BEQ LEDE0 ->
|
---|
849 | JSR DOSERR
|
---|
850 | LBRA LEDEF ->
|
---|
851 |
|
---|
852 | LEDE0 JSR LECFIC lecture en tete
|
---|
853 | LBCS LEDEF ->
|
---|
854 | TSTA
|
---|
855 | LBNE LEDER ->
|
---|
856 | JSR LECFIC lecture lg zone
|
---|
857 | LBCS LEDEF ->
|
---|
858 | STA LGFIC,S
|
---|
859 | JSR LECFIC
|
---|
860 | LBCS LEDEF ->
|
---|
861 | STA LGFIC+1,S
|
---|
862 | JSR LECFIC passer 2
|
---|
863 | LBCS LEDEF ->
|
---|
864 | JSR LECFIC
|
---|
865 | LBCS LEDEF ->
|
---|
866 | JSR LECFIC lire type image
|
---|
867 | LBCS LEDEF ->
|
---|
868 | TSTA
|
---|
869 | BEQ LEDE1 ->
|
---|
870 | CMPA #$80
|
---|
871 | BEQ LEDE1 ->
|
---|
872 | LBRA LEDER ->
|
---|
873 |
|
---|
874 | LEDE1 STA TYPDES,S
|
---|
875 | JSR LECFIC lire largeur
|
---|
876 | LBCS LEDEF ->
|
---|
877 | INCA
|
---|
878 | STA LARDES,S
|
---|
879 | JSR LECFIC lire hauteur
|
---|
880 | LBCS LEDEF ->
|
---|
881 | INCA
|
---|
882 | STA HAUDES,S
|
---|
883 | ADDA RGDECR
|
---|
884 | CMPA #103
|
---|
885 | LBCC LEDED debord ->
|
---|
886 | LDA CLDECR
|
---|
887 | LSLA
|
---|
888 | ADDA LARDES,S
|
---|
889 | CMPA #121
|
---|
890 | LBCC LEDED debord ->
|
---|
891 |
|
---|
892 | * Calcul de l'adresse RAM début ligne
|
---|
893 | * initiale de la feuille (bank+déplac.)
|
---|
894 | LDA <RGDECR *60*8 !
|
---|
895 | LSLA
|
---|
896 | LDB #60*4
|
---|
897 | MUL
|
---|
898 | ADDB <CLDECR
|
---|
899 | ADCA #0
|
---|
900 | ADDD <ADF
|
---|
901 | BCC LEDE10 ->
|
---|
902 | ADDD #$FFFF-48959
|
---|
903 | LEDE10 CMPD #48960
|
---|
904 | BCS LEDE11 ->
|
---|
905 | SUBD #48960
|
---|
906 | LEDE11 STD <ADPRRL
|
---|
907 | ROLA
|
---|
908 | ROLA
|
---|
909 | ROLA
|
---|
910 | ANDA #3
|
---|
911 | ADDA #PBKTRA
|
---|
912 | STA PBK,S
|
---|
913 | LDD <ADPRRL
|
---|
914 | ANDA #$3F
|
---|
915 | ADDD #$A000
|
---|
916 | STD <ADPRRL
|
---|
917 |
|
---|
918 | * Init. décodage
|
---|
919 | CLR LGBLK,S => lecture !
|
---|
920 | CLR PAGEC,S page 0
|
---|
921 | LDY <ADPRRL
|
---|
922 | LDA PBK,S
|
---|
923 | STA BANKC
|
---|
924 |
|
---|
925 | * Boucle de lecture .. Y= ad. RAM
|
---|
926 | * U= cpt colonne
|
---|
927 | BLEDE0 LDA HAUDES,S # boucle colonne
|
---|
928 | LDB #8
|
---|
929 | MUL
|
---|
930 | TFR D,U
|
---|
931 | BLEDE1 TST LGBLK,S # boucle lignes
|
---|
932 | BNE LEDE25 bloc en cours ->
|
---|
933 | JSR LECFIC bloc a lire
|
---|
934 | LBCS LEDEF ->
|
---|
935 | STA TYPBLK,S
|
---|
936 | STA LGBLK,S
|
---|
937 | JSR LECFIC
|
---|
938 | LBCS LEDEF ->
|
---|
939 | TST TYPBLK,S
|
---|
940 | BEQ LEDE20 bloc diff. ->
|
---|
941 | STA RPTBLK,S bloc repet
|
---|
942 | BRA LEDE25 ->
|
---|
943 | LEDE20 STA LGBLK,S
|
---|
944 | LEDE25 TST TYPBLK,S
|
---|
945 | BEQ LEDE26 bloc diff. ->
|
---|
946 | LDA RPTBLK,S bloc repet
|
---|
947 | BRA LEDE27 ->
|
---|
948 | LEDE26 JSR LECFIC
|
---|
949 | LBCS LEDEF ->
|
---|
950 | LEDE27 DEC LGBLK,S
|
---|
951 | STA ,Y
|
---|
952 | LEAY 60,Y
|
---|
953 | JSR NEXTF
|
---|
954 | LEAU -1,U
|
---|
955 | CMPU #0
|
---|
956 | LBNE BLEDE1 ->
|
---|
957 |
|
---|
958 | COM PAGEC,S
|
---|
959 | BMI LEDE50 ->
|
---|
960 | LDA PBK,S -> page paire
|
---|
961 | SUBA #3
|
---|
962 | STA PBK,S
|
---|
963 | STA BANKC
|
---|
964 | LDY <ADPRRL
|
---|
965 | LEAY 1,Y
|
---|
966 | JSR NEXTF
|
---|
967 | STY <ADPRRL
|
---|
968 | LDA BANKC
|
---|
969 | STA PBK,S
|
---|
970 | BRA LEDE59 ->
|
---|
971 | LEDE50 LDA PBK,S -> page impaire
|
---|
972 | ADDA #3
|
---|
973 | STA PBK,S
|
---|
974 | STA BANKC
|
---|
975 | LDY <ADPRRL
|
---|
976 | LEDE59 DEC LARDES,S
|
---|
977 | LBNE BLEDE0 ->
|
---|
978 |
|
---|
979 | LDB #CLOSE
|
---|
980 | JSR EXTRA
|
---|
981 | CLRB
|
---|
982 | BRA LEDEF fini ->
|
---|
983 |
|
---|
984 | LEDED LEAX MERDB,PCR
|
---|
985 | JSR FENERR
|
---|
986 | BRA LEDEC ->
|
---|
987 | LEDER LDB #78 'Bad picture'
|
---|
988 | JSR DOSERR
|
---|
989 | LEDEC LDB #CLOSE
|
---|
990 | JSR EXTRA
|
---|
991 | LDB #$FF
|
---|
992 | LEDEF LDA MEMBK,S
|
---|
993 | STA BANKC
|
---|
994 | LEAS 11,S
|
---|
995 | RTS
|
---|
996 |
|
---|
997 |
|
---|
998 | *=======================================
|
---|
999 | * S/P lecture sur le fichier courant
|
---|
1000 | *
|
---|
1001 | * Sortie: A car. lu si ok
|
---|
1002 | * CY 0 si ok
|
---|
1003 | * 1 si pb -> erreur traitée
|
---|
1004 | * fichier fermé
|
---|
1005 | *=======================================
|
---|
1006 |
|
---|
1007 | LECFIC PSHS U
|
---|
1008 | LDU #XLECFI
|
---|
1009 | JSR COMBK2
|
---|
1010 | PULS U,PC
|
---|
1011 |
|
---|
1012 |
|
---|
1013 | *=======================================
|
---|
1014 | * S/P test bouclage sur une des pages de
|
---|
1015 | * la feuille
|
---|
1016 | *
|
---|
1017 | * Entrée: Y ad. feuille
|
---|
1018 | * BANKC bank actif feuille
|
---|
1019 | * Sortie: idem !
|
---|
1020 | *=======================================
|
---|
1021 |
|
---|
1022 | NEXTF EQU *
|
---|
1023 | *---------------------------------------
|
---|
1024 | CMPY #$DF40
|
---|
1025 | BCS NEXTFF ->
|
---|
1026 | LDA BANKC
|
---|
1027 | CMPA #PBKTRA+2
|
---|
1028 | BEQ NEXTF0 ->
|
---|
1029 | CMPA #PBKTRA+5
|
---|
1030 | BEQ NEXTF0 ->
|
---|
1031 | CMPY #$E000
|
---|
1032 | BCS NEXTFF ->
|
---|
1033 | LEAY -$4000,Y
|
---|
1034 | INC BANKC
|
---|
1035 | BRA NEXTFF ->
|
---|
1036 | NEXTF0 LEAY -$3F40,Y
|
---|
1037 | SUBA #2
|
---|
1038 | STA BANKC
|
---|
1039 | NEXTFF RTS
|
---|
1040 |
|
---|
1041 |
|
---|
1042 | *=======================================
|
---|
1043 | * S/P pointage d'un album dans table
|
---|
1044 | *
|
---|
1045 | * Entrée: X pt nom album
|
---|
1046 | * Sortie: CY 1 pas trouvé
|
---|
1047 | * 0 ok
|
---|
1048 | * X pt dans table si ok
|
---|
1049 | * non modifié sinon
|
---|
1050 | *=======================================
|
---|
1051 |
|
---|
1052 | PTALB PSHS U
|
---|
1053 | LDU #XPTALB
|
---|
1054 | JSR COMBK2
|
---|
1055 | PULS U,PC
|
---|
1056 |
|
---|
1057 |
|
---|
1058 | *=======================================
|
---|
1059 | * S/P raz de l'écran de travail
|
---|
1060 | *=======================================
|
---|
1061 |
|
---|
1062 | RAZE PSHS U
|
---|
1063 | LDU #XRAZEC
|
---|
1064 | JSR COMBK2
|
---|
1065 | PULS U,PC
|
---|
1066 |
|
---|
1067 |
|
---|
1068 | *=======================================
|
---|
1069 | * S/P raz de la feuille de travail
|
---|
1070 | *=======================================
|
---|
1071 |
|
---|
1072 | RAZF PSHS U
|
---|
1073 | LDU #XRAZFE
|
---|
1074 | JSR COMBK2
|
---|
1075 | PULS U,PC
|
---|
1076 |
|
---|
1077 |
|
---|
1078 | *=======================================
|
---|
1079 | * S/P sélection d'un album préexistant
|
---|
1080 | *
|
---|
1081 | * Entrée: A,B coordonnées fenêtre
|
---|
1082 | * X =0 => visu seule
|
---|
1083 | * =-1 => sélection
|
---|
1084 | * Y nb niv. à remonter si ok
|
---|
1085 | * (aucun si <0 )
|
---|
1086 | * Sortie: CY 1 Raz ou pas d'album
|
---|
1087 | * 0 ok
|
---|
1088 | * X pt dans table si ok
|
---|
1089 | *=======================================
|
---|
1090 |
|
---|
1091 | SELALB PSHS U
|
---|
1092 | LDU #XSELAL
|
---|
1093 | JSR COMBK2
|
---|
1094 | PULS U,PC
|
---|
1095 |
|
---|
1096 |
|
---|
1097 | *=======================================
|
---|
1098 | * S/P visualisation de l'ascenceur bas
|
---|
1099 | *=======================================
|
---|
1100 |
|
---|
1101 | VISASB PSHS U
|
---|
1102 | LDU #XVISAB
|
---|
1103 | JSR COMBK2
|
---|
1104 | PULS U,PC
|
---|
1105 |
|
---|
1106 |
|
---|
1107 | *=======================================
|
---|
1108 | * S/P visualisation de l'ascenceur droit
|
---|
1109 | *=======================================
|
---|
1110 |
|
---|
1111 | VISASD PSHS U
|
---|
1112 | LDU #XVISAD
|
---|
1113 | JSR COMBK2
|
---|
1114 | PULS U,PC
|
---|