source: thomson/code/3rdparty/sources5-hmel/TO-GRAPH/GRAPH-F.ASM@ ceffc47

main
Last change on this file since ceffc47 was ceffc47, checked in by Adrien Destugues <pulkomandy@…>, 10 years ago

Add that collection of 3rdparty source I had lying on my disk for some time...

git-svn-id: svn://localhost/thomson@51 85ae3b6b-dc8f-4344-a89d-598714f2e4e5

  • Property mode set to 100644
File size: 23.9 KB
Line 
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
23CHAALB PSHS D,X,Y
24 LEAS -1,S
25MEMBK SET 0
26PD SET 1
27PX 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
38BCA0 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
86BCA1 STA ,X+
87 LEAY -1,Y
88 BEQ FINALC fini ->
89 JSR LECFIC
90 BCS FINALR ->
91 BRA BCA1 ->
92
93FINALC 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
101FINARR LDB #78 'bad picture'
102 JSR DOSERR
103 LDB #CLOSE
104 JSR EXTRA
105FINALR 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
124CODDES PSHS D
125 LEAS -267,S
126LGFIC SET 0
127TYPDES SET 2
128LARDES SET 3
129HAUDES SET 4
130MEMBK SET 5
131PBK SET 6
132TYPBLK SET 7 00: différents
133* FF: répétition
134LGBLK SET 8 lg bloc
135RPTBLK SET 9 bloc en répet
136PAGEC SET 10
137BUFCOD SET 11
138PD SET 267
139PA SET 267
140PB 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
156CODE10 CMPD #48960
157 BCS CODE11 ->
158 SUBD #48960
159CODE11 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
188BCODS0 LDA HAUDES,S # boucle colonne
189 LDB #8
190 MUL
191 TFR D,U
192BCODS1 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
201CODS10 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
213CODS20 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
238CODS21 LDA ,X+
239 JSR ECRFIC
240 LBCS CODSF ->
241 DECB
242 BNE CODS21 ->
243CODS25 CLR LGBLK,S
244 LBRA CODSUI ->
245CODS30 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
261CODS31 LDA ,X+
262 JSR ECRFIC
263 LBCS CODSF ->
264 DECB
265 BNE CODS31 ->
266CODS35 LDA #2
267 STA LGBLK,S
268 LDA ,Y
269 STA RPTBLK,S
270 LDA #$FF
271 STA TYPBLK,S
272 LBRA CODSUI ->
273
274CODS40 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 ->
292CODS45 CLR LGBLK,S
293 LBRA CODSUI ->
294CODS50 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 ->
305CODS55 LDA #1
306 STA LGBLK,S
307 LDA ,Y
308 LEAX BUFCOD,S
309 STA ,X+
310 STA RPTBLK,S
311
312CODSUI 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 ->
330CODS60 LDA PBK,S
331 ADDA #3
332 STA PBK,S
333 STA BANKC
334 LDY <ADPRRL
335CODS69 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
355CODS70 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
370CODS71 LDA ,X+
371 JSR ECRFIC
372 LBCS CODSF ->
373 DECB
374 BNE CODS71 ->
375
376CODS80 LDD LGFIC,S
377 STD PD,S
378 ANDCC #$FE
379 BRA CODSEX fini ->
380
381CODSF ORCC #1
382CODSEX 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
398CZIALB 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
411ECRALB PSHS D,X,Y
412 LEAS -1,S
413MEMBK SET 0
414*---------------------------------------
415 LDY #FILNAM nom défaut
416 LDA #8
417ECAL0 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
431ECAL00 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
484ECAL1 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
495BECBFI JSR ECRFIC
496 BCS ECALF ->
497 DECB
498 BNE BECBFI ->
499
500 LDB #CLOSE # fin normale
501 JSR EXTRA
502 BRA ECALF ->
503ECALO JSR DOSERR # erreur OPEN
504ECALF LDA MEMBK,S
505 STA BANKC
506ECALFF 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
515ECRDES PSHS D,X,Y
516 LEAS -1,S
517MEMBK SET 0
518*---------------------------------------
519 LDA BANKC
520 STA MEMBK,S
521
522 LDY #FILNAM nom défaut
523 LDX #DESCOU
524BECDE0 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
535BECDE1 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
605BECFI0 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
615BECDFI JSR ECRFIC
616 BCS ECDEF ->
617 DECB
618 BNE BECDFI ->
619
620 LDB #CLOSE # fin normale
621 JSR EXTRA
622 BRA ECDEF ->
623ECDEO JSR DOSERR # erreur OPEN
624ECDEF 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
640ECRFEU 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
655ECRFIC 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
671FEUECR 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
684MCALB FCC \Chargementalbum:\
685 FCB 0
686*---------------------------------------
687INIALB PSHS D,X,Y,U
688 LEAS -2,S
689FLGDIR SET 0
690ALBC 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 ->
703BRF000 CMPA #16
704 BGE BRF00 ->
705 STA MAXALB
706
707BRF00 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 !!!
717BRF0 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+
727BRF1 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
736BRF2 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
745BRF3 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é
756FINICN LDA ALBC,S
757 CMPA MAXALB
758 BEQ FINIAL ->
759 CLR ALBC,S
760 LDU #TABALB
761
762BRF4 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
778BRF5 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
791INIVID LEAU 9,U
792 INC ALBC,S
793 LDA ALBC,S
794 CMPA #16
795 BNE BRF4 suite ->
796
797FINIAL 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
810CHALB 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
824MERDB FCC \CADRAGEINSUFFISANT\
825 FCB 0
826
827LECDES LEAS -11,S
828LGFIC SET 0
829TYPDES SET 2
830LARDES SET 3
831HAUDES SET 4
832MEMBK SET 5
833PBK SET 6
834TYPBLK SET 7 00: différents
835* FF: répétition
836LGBLK SET 8 lg bloc
837RPTBLK SET 9 bloc en répet
838PAGEC 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
852LEDE0 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
874LEDE1 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
903LEDE10 CMPD #48960
904 BCS LEDE11 ->
905 SUBD #48960
906LEDE11 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
927BLEDE0 LDA HAUDES,S # boucle colonne
928 LDB #8
929 MUL
930 TFR D,U
931BLEDE1 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 ->
943LEDE20 STA LGBLK,S
944LEDE25 TST TYPBLK,S
945 BEQ LEDE26 bloc diff. ->
946 LDA RPTBLK,S bloc repet
947 BRA LEDE27 ->
948LEDE26 JSR LECFIC
949 LBCS LEDEF ->
950LEDE27 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 ->
971LEDE50 LDA PBK,S -> page impaire
972 ADDA #3
973 STA PBK,S
974 STA BANKC
975 LDY <ADPRRL
976LEDE59 DEC LARDES,S
977 LBNE BLEDE0 ->
978
979 LDB #CLOSE
980 JSR EXTRA
981 CLRB
982 BRA LEDEF fini ->
983
984LEDED LEAX MERDB,PCR
985 JSR FENERR
986 BRA LEDEC ->
987LEDER LDB #78 'Bad picture'
988 JSR DOSERR
989LEDEC LDB #CLOSE
990 JSR EXTRA
991 LDB #$FF
992LEDEF 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
1007LECFIC 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
1022NEXTF 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 ->
1036NEXTF0 LEAY -$3F40,Y
1037 SUBA #2
1038 STA BANKC
1039NEXTFF 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
1052PTALB 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
1062RAZE 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
1072RAZF 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
1091SELALB 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
1101VISASB 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
1111VISASD PSHS U
1112 LDU #XVISAD
1113 JSR COMBK2
1114 PULS U,PC
Note: See TracBrowser for help on using the repository browser.