source: thomson/code/3rdparty/sources5-hmel/TO-SNAP/SNAP-SP.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 100755
File size: 16.3 KB
Line 
1 TITLE TO-PHOTO:S/P
2* ---------------------------------
3 PAGE
4
5****************************************
6* *
7* S/P *
8* *
9****************************************
10
11
12*=======================================
13* S/P prise en compte d'une adresse
14* de déroutement
15*=======================================
16FIXIT EQU *
17*---------------------------------------
18 LDB #255
19 LDX #BUF
20 JSR FENLCZ
21 BCS FIXIT0 ->
22 RTS
23
24FIXIT0 LDD #$0000
25 LDY #$FFFF
26 JSR HEXBIN
27 TFR D,U
28
29 CLR $E7E4
30 LDA $E7E6 autorise écritur
31 ORA #$40 cartouche
32 STA $E7E6
33
34 STU ADRIT
35
36 LDA $E7E6 interdit écritur
37 ANDA #$BF cartouche
38 STA $E7E6
39 RTS
40
41
42*=======================================
43* S/P activation dela tache sous
44* déroutement
45*=======================================
46
47ACTIT EQU *
48*---------------------------------------
49 ORCC #$50
50
51 CLR $E7E4
52 LDA $E7E6 autorise écritur
53 ORA #$40 cartouche
54 STA $E7E6
55
56 ANDA #$3F
57 STA BKSNAP
58 STA BKDSNA
59
60 LDD ADRIT défaut pour
61 STD ADITFQ dérout. buffer
62
63 LDX #VECTMM
64 LDA #5
65 LSLA
66 LDD A,X
67 STD VFDER
68
69 LDA TYPDER
70 BEQ ACTIT0 FIRQ ->
71 CMPA #1
72 BEQ ACTIT0 RESETP ->
73 CMPA #14
74 BEQ ACTIT0 BUFCLV ->
75 CMPA #2
76 BNE ACTIT1 ->
77* LDX TIMEMM
78 LDX #KBIN
79 STX VFDER
80 BRA ACTIT0 ->
81
82ACTIT1 LDX #VECTMM
83 LDA TYPDER
84 SUBA #3
85 LSLA
86 LDD A,X
87 STD VFDER
88
89ACTIT0 LDA $E7E6 interdit écritur
90 ANDA #$BF cartouche
91 STA $E7E6
92
93 LDA TYPDER
94 CMPA #2
95 BGE BACITX ->
96
97* FIRQ et RESETP !!!
98
99 LDX #ITSNAP
100 LDY ADRIT
101BACIT0 LDA ,X+
102 STA ,Y+
103 CMPX #FINIT
104 BNE BACIT0 ->
105
106 LDA $E7C3
107 EORA #1
108 STA $E7C3
109
110 LDX #ITSNAP
111 LDY ADRIT
112CACIT0 LDA ,X+
113 STA ,Y+
114 CMPX #FINIT
115 BNE CACIT0 ->
116
117 LDD ADRIT
118 TST TYPDER
119 BEQ BACITG ->
120 STD RESETP+1
121 LDA #$7E JMP
122 STA RESETP
123 LBRA BACITF ->
124BACITG STD >FIRQPT
125 LBRA BACITY ->
126
127* timer + vecteurs + buffer clav !!!
128
129BACITX LDX #DRSNAP
130 LDY ADRIT
131BACIT1 LDA ,X+
132 STA ,Y+
133 CMPX #FINDER
134 BNE BACIT1 ->
135
136 LDA $E7C3
137 EORA #1
138 STA $E7C3
139
140 LDX #DRSNAP
141 LDY ADRIT
142CACIT1 LDA ,X+
143 STA ,Y+
144 CMPX #FINDER
145 BNE CACIT1 ->
146
147 LDU ADRIT
148 LDA TYPDER
149 CMPA #14
150 BEQ BACIT3 ->
151 SUBA #3
152 BMI BACIT2 ->
153 LSLA vecteurs
154 LDX #$6000
155 STU A,X
156 BRA BACITY ->
157BACIT2 STU TIMEPT timer
158 LDA STATUS
159 ORA #$20
160 STA STATUS
161 BRA BACITY ->
162BACIT3 LDD #$600A buffer clav.
163 STD BUFCLV
164 CLR REACLV
165 CLR WRICLV
166
167 LDX #DRBUF
168 LDY #$5F8E
169BACIT4 LDA ,X+
170 STA ,Y+
171 CMPX #FDRBUF
172 BNE BACIT4 ->
173
174 LDA $E7C3
175 EORA #1
176 STA $E7C3
177
178 LDX #DRBUF
179 LDY #$5F8E
180BACIT5 LDA ,X+
181 STA ,Y+
182 CMPX #FDRBUF
183 BNE BACIT5 ->
184
185* programmation PIA système pour
186* détection à partir prise crayon
187* (hors RESETP !)
188
189BACITY LDA >$E7CB RAZ IT
190 ORA #$40
191 STA >$E7CB
192 LDA <$E7C9
193 LDA >$E7CB 6821 pour \/
194 ANDA #$FC par prise crayon
195 TST TYPDER
196 BNE BACIT9 ->
197 ORA #$01 (IT sur \/ CB1)
198BACIT9 STA >$E7CB
199
200BACITF ANDCC #$AF
201 RTS
202
203
204*=======================================
205* S/P tache a implanter pour acquisition
206* sous FIRQ et RESETP
207*=======================================
208
209ITSNAP EQU *
210*---------------------------------------
211 LDA #0 posit bank TO-SNAP
212BKSNAP EQU *-1
213 STA >$E7E6
214 JMP XSNAP activation ->
215FINIT EQU *
216
217
218*=======================================
219* S/P tache a implanter pour acquisition
220* sous déroutement système
221*=======================================
222
223DRSNAP EQU *
224*---------------------------------------
225 TST >$E7CB
226 BPL FDER ->
227 LDA #0 posit bank TO-SNAP
228BKDSNA EQU *-1
229 STA >$E7E6
230 JMP XSNAP activation ->
231FDER JMP $FFFF
232VFDER EQU *-2
233FINDER EQU *
234
235
236*=======================================
237* S/P tache a implanter pour acquisition
238* sous déroutement buffer clavier
239* (l'entrée de $5F dans le buffer
240* clavier dérouté sur l'indirection
241* GETCH génère une adresse $5F8E
242* à la place de l'adresse défaut
243* $FF8E...
244* A l'appel de GETCH suivant, ceci
245* va générer un appel vers l'implant
246* DRBUF qui va armer un déroutement
247* de GETCH traditionnel ...
248* NB: $5F = code de _ au clavier
249* (obligatoire avant toute autre
250* saisie, :
251* NB: L'implant est donc obligatoir.
252* ement en $5F8E !!!
253* et sur les deux pages
254*=======================================
255
256DRBUF EQU * (en $5F8E !!!)
257*---------------------------------------
258 PSHS A,CC
259 ORCC #$50
260 LDD #$0000 déroute GETC
261ADITFQ EQU *-2
262 STD $600A
263
264 LDB #$82 buffer clav std
265 STB BUFCLV+1
266
267 CLRB
268 CLR [BUFCLV]
269 CLR REACLV
270 CLR WRICLV
271
272 ANDCC #$AF
273 PULS A,CC,PC ->>
274FDRBUF EQU *
275
276
277*=======================================
278* S/P lecture des applications disponib.
279*=======================================
280
281LECAPL EQU *
282*---------------------------------------
283
284* Pas d'appli. par défaut
285
286 LDX #APLTAB
287 LDA #6
288 LDB #$FF
289BRAZAP STB ,X
290 LEAX 33,X
291 DECA
292 BNE BRAZAP ->
293
294* Chargement en RAM du programme de
295* lecture des appli. disponibles
296
297 LDA BKMANO
298 STA BANKC
299 LDX #DEBLEC
300 LDY #$A000
301BECRPG LDA ,X+
302 STA ,Y+
303 CMPX #FINLEC
304 BNE BECRPG ->
305
306* Lecture des appli. disponibles
307
308 JSR $A000
309
310 RTS ->>
311
312
313*=======================================
314* S/P lecture des appli disp
315* (à charger en RAM hors cartouche!)
316*=======================================
317DEBLEC EQU *
318 LEAS -1,S
319MEME6 SET 0 memo $E7E6
320*---------------------------------------
321 CLR $E7E4
322 LDA $E7E6
323 STA MEME6,S
324 CLR $E7E6 cartouche=ROM
325
326* voir slot 1 (cartouche externe)
327
328 LDB $E7C3
329 ANDB #$FB
330 STB $E7C3
331 LDU #APLTAB+1
332 LDY #0
333 LBSR VERSOC
334 BCS SUIAP0 pas cartouche ->
335 LDA #$30
336 STA ,-U
337
338* voir slot 0 bank 0 (basic 512)
339
340SUIAP0 LDB $E7C3
341 ORB #4
342 STB $E7C3
343 STA $0000
344 LDU #APLTAB+33+1
345 LDY #0
346 LBSR VERSOC
347 BCS SUIAP1 pas basic ! ->
348 LDA #$00
349 STA ,-U
350
351* voir slot 0 bank 2 (basic 1)
352
353SUIAP1 STA $0002
354 LDU #APLTAB+33*2+1
355 LDY #0
356 LBSR VERSOC
357 BCS SUIAP2 pas basic ! ->
358 LDA #$02
359 STA ,-U
360
361* voir slot 0 bank 3 (fichiers...)
362
363SUIAP2 STA $0003
364 LDU #APLTAB+33*3+1
365 LDY #0
366 LBSR VERSOC
367 BCS SUIAP3 pas fichiers! ->
368 LDA #$03
369 STA ,-U
370
371* Rechercher 'Réglages et préférences'
372* petits pb de visu et pas utile !
373
374 BRA SUIAP4 ->
375SUIAP3 LDU #APLTAB+33*4+1
376 LDY #$2000
377BRREG LDD ,Y
378 CMPD #$2052
379 BNE SRREG ->
380 LDD 2,Y
381 CMPD #$8567
382 BNE SRREG ->
383 LBSR VERSOC
384 BCS SRREG ->
385 LDA #$03
386 STA ,-U
387 BRA SUIAP4 ->
388SRREG LEAY 1,Y
389 CMPY #$4000
390 BNE BRREG ->
391
392* Rechercher 'Appel de programmes'
393
394SUIAP4 LDU #APLTAB+33*4+1
395 LDY #$2000
396BRPGM LDD ,Y
397 CMPD #$2041
398 BNE SRPGM ->
399 LDD 2,Y
400 CMPD #$7070
401 BNE SRPGM ->
402 LBSR VERSOC
403 BCS SRPGM ->
404 LDA #$03
405 STA ,-U
406 BRA SUIAP5 ->
407SRPGM LEAY 1,Y
408 CMPY #$4000
409 BNE BRPGM ->
410
411* revenir sur RAM/cartouche
412
413SUIAP5 LDA MEME6,S
414 STA $E7E6
415 LEAS 1,S
416 RTS
417
418
419*=======================================
420* S/P vérification de la présence d'une
421* application
422* Entrée: Y @ ROM candidate
423* U @ rangement
424* Sortie CY 0 si ok
425*=======================================
426VERSOC PSHS D,X,Y,U
427*---------------------------------------
428 LDA #26 lecture mnémo
429 LDX #$55
430BVSO0 LDB ,Y+
431 STB ,U+
432 ABX
433 CMPB #$04
434 BNE SVSO00 ->
435 CLR -1,U
436SVSO00 CMPB #$85
437 BNE SVSO01 ->
438 LDB #$65 minuscules codée
439 STB -1,U
440SVSO01 DECA
441 BNE BVSO0 ->
442
443 TFR X,D verif soco
444 ANDB #$DF erreur soc appel
445 PSHS B pgm
446 LDB ,Y+
447 STB ,U+
448 ANDB #$DF
449 CMPB ,S+
450 BNE SVSO0 pas cartouche ->
451 LDA #5
452BVSO1 LDB ,Y+
453 STB ,U+
454 DECA
455 BNE BVSO1 ->
456 ANDCC #$FE
457 PULS D,X,Y,U,PC
458SVSO0 ORCC #1
459 PULS D,X,Y,U,PC
460FINLEC EQU *
461
462
463*=======================================
464* S/P fenetre de lancement applic.
465*=======================================
466RZECRN FCB $1B,$69,$1B,$44,$1B,$56
467 FCB $1B,$66,FF,0
468MENLAN EQU *
469*---------------------------------------
470
471 LDX #FENLAN
472 LDD 3,X
473 JSR POPUP
474 JSR FENOUV
475
476* Visu des appli. disponibles
477
478 LDY #APLTAB
479 LDB #$90
480BVIAP JSR FENCH
481 TST ,Y
482 BMI APINT ->
483 LEAX 1,Y
484 JSR FENEDI
485 BRA SUIAP ->
486APINT LDA #INTERD
487 STA VAL,X
488SUIAP LEAY 33,Y
489 INCB
490 CMPB #$95
491 BNE BVIAP ->
492
493
494* Adresse implantation SNAP
495 LDB #255
496 JSR FENCH
497
498* calcul @ pgm
499 LDD ADRIT
500
501 LDX #BUF
502 JSR BINHX2
503 CLR 4,X
504 JSR FENEDI
505
506* visu déroutement courant
507EXEA00 LDB #$53
508 JSR FENCH
509 LDX #TABDER
510 LDA #19
511 LDB TYPDER
512 MUL
513 LEAX D,X
514 JSR FENEDI
515
516* calcul lg pgm
517 LDB #254
518 JSR FENCH
519 LDA TYPDER
520 CMPA #1
521 BGT VISDER ->
522 LDD #FINIT
523 SUBD #ITSNAP
524 BRA VISADD ->
525VISDER LDD #FINDER
526 SUBD #DRSNAP
527VISADD LDX #BUF
528 LDY #2
529 JSR BINDCD
530 JSR FENEDI
531
532EXECA0 JSR FENACT
533
534EXECA1 JSR FEN
535 TSTB
536 BEQ EXECA1 ->
537 CMPB #FF RAZ
538 LBEQ XARET ->
539 CMPB #$53 'S'
540 LBEQ MODSNA ->
541 CMPB #$95 F6
542 LBEQ XBOOT ->
543 CMPB #$90 <F1
544 BLT EXECA1 ->
545 CMPB #$94 >F5
546 BGT EXECA1 ->
547
548*** Lancement soft
549 PSHS B
550 CLR RUNFLG auto ou non
551 LDB #$01
552 JSR FENCH
553 LDA VAL,X
554 CMPA #OFF
555 BEQ XLANC1 ->
556 COM RUNFLG
557XLANC1 LDB ,S
558 SUBB #$90
559 LDA #33
560 MUL
561 LDX #APLTAB
562 LEAX D,X
563 LDA ,X
564 LBMI EXECA1 ->
565 LDU 31,X @ dem. froid
566 PSHS A,U
567 JSR FIXIT
568 JSR FENFIN
569
570 LDA #$FF
571 LDX #TMEMO
572 JSR SETP
573
574 LDA $E7C3 sinon, noir de
575 ANDA #$FE applications
576 STA $E7C3 = 256 !!!
577 CLR $5F40
578
579 CLR $E7E4
580 LDA $E7E6 autorise écritur
581 ORA #$40 cartouche
582 STA $E7E6
583* CLR TFMEMO
584 LDA $E7E6 interdit écritur
585 ANDA #$BF cartouche
586 STA $E7E6
587
588 JSR RSTECR
589
590 JSR ACTIT
591
592 LDB 3,S
593 CMPB #$91
594 BEQ GORAM0 ->
595 CMPB #$93
596 BGE GORAM0 ->
597 LDA #$44 commut.bank
598 STA $6081 ram pia
599 STA $E7E7 (compatibilité)
600
601 CMPB #$90
602 BEQ GORAM0 ->
603* basic 1
604 LDA #$01 init. ctrl dsk
605 STA DKOPC
606 JSR DKCO
607
608 LDA #$20 posit piste 0
609 STA DKOPC
610 JSR DKCO
611
612* une séquence d'effacement appelée
613* par le programme chargé réalise
614* une initialisation d'un zone
615* pointée par $601c à $601e... zone
616* dans laquelle peut justement se
617* trouver le programme (MGT !)
618* les valeurs mises sont celles en
619* vigueur hors extra mon !!!
620
621 LDD #$F001
622 STD $601C
623 LDD #$F017
624 STD $601E
625
626GORAM0 LDA #$FF présence disk
627 STA $6080
628 LDA >$E7C3 moniteur bk 0
629 ANDA #$EF
630 STA >$E7C3
631 PULS A,U
632 LDS #$60CC
633 LDB #$60
634 TFR B,DP
635
636 JSR COMS
637
638*** Boot disquette
639XBOOT JSR FENCH
640 JSR FENIVD
641 JSR FIXIT
642 JSR FENFIN
643
644 LDA #$FF
645 LDX #TMEMO
646 JSR SETP
647
648 CLR $E7E4
649 LDA $E7E6 autorise écritur
650 ORA #$40 cartouche
651 STA $E7E6
652* CLR TFMEMO
653 LDA $E7E6 interdit écritur
654 ANDA #$BF cartouche
655 STA $E7E6
656
657 JSR RSTECR
658
659 LDU #BOOT
660 JSR COMBK2
661
662*** modification du déroutement
663MODSNA JSR FENDES
664 LDB TYPDER
665 INCB
666 CMPB #15
667 BLT ECRDER ->
668 CLRB
669
670ECRDER CLR $E7E4
671 LDA $E7E6 autorise écritur
672 ORA #$40 cartouche
673 STA $E7E6
674 STB TYPDER
675 LDA $E7E6 interdit écritur
676 ANDA #$BF cartouche
677 STA $E7E6
678
679 LBRA EXEA00 ->
680
681* Fin menu lancement
682*---------------------------------------
683
684XARET JSR FIXIT
685 CLRB
686 JSR FENFER car photo peut
687 JSR FENACT
688 RTS
689
690
691*=======================================
692* S/P restore attributs écran
693*=======================================
694RSTECR LDB #$1B
695 JSR PUTC
696 LDB #$69
697 JSR PUTC
698 LDB #$1B
699 JSR PUTC
700 LDB #$44 bleu
701 JSR PUTC
702 LDB #$1B
703 JSR PUTC
704 LDB #$56 sur cyan
705 JSR PUTC
706 LDB #$1B
707 JSR PUTC
708 LDB #$66 tour cyan
709 JSR PUTC
710 LDB #FF
711 JSR PUTC
712 RTS
713
714
715*=======================================
716* S/P destruction logique d'une photo
717*
718* Entrée: A num photo
719*=======================================
720DELPHO PSHS A,X
721*---------------------------------------
722 LDX #TABPHO
723 CLR A,X
724 PULS A,X,PC ->>
725
726
727*=======================================
728* S/P test de localisation de la souris
729* dans un carreau
730* Entrée: XH rangée début ]
731* XL colonne début du carreau
732* YH hauteur ]
733* YL largeur ]
734* Sortie: CY 1 souris dans le carreau
735* 0 ... en dehors
736*=======================================
737
738SOUROK PSHS D,X,Y,U
739 LEAS -5,S
740HORDOT SET 0
741VERDOT SET 2
742MULTH SET 4
743PA SET 5
744PB SET 6
745PXH SET 7
746PXL SET 8
747PYH SET 9
748PYL SET 10
749*---------------------------------------
750
751 LDB #8 coef de * horiz
752 LDA SCRMOD
753 CMPA #$40
754 BNE RGMU ->
755 LDB #4 bit map 16
756RGMU STB MULTH,S
757
758 LDA #8
759 LDB PXH,S
760 MUL
761 STD HORDOT,S
762 CMPD REGY
763 BGT SELDN hors haut ->
764 LDA MULTH,S
765 LDB PXL,S
766 MUL
767 STD VERDOT,S
768 CMPD REGX
769 BGT SELDN hors gauche ->
770 LDA #8
771 LDB PYH,S
772 MUL
773 ADDD HORDOT,S
774 CMPD REGY
775 BLE SELDN hors bas ->
776 LDA MULTH,S
777 LDB PYL,S
778 MUL
779 ADDD VERDOT,S
780 CMPD REGX
781 BLE SELDN hors droit ->
782 ORCC #$01 dedans
783 BRA SELDF ->
784SELDN ANDCC #$FE hors
785
786SELDF LEAS 5,S
787 PULS D,X,Y,U,PC
Note: See TracBrowser for help on using the repository browser.