source: thomson/code/3rdparty/sources2-hcl/POCK2.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: 18.0 KB
Line 
1****************************************
2* P O C K *
3****************************************
4 * kernel *
5 **********
6
7TEXTE EQU $8000 contenu du scroll
8RANDOM EQU $8A00 table du hasard
9FONTE EQU $9000 lettres du scroll
10LEVELS EQU $90FC gains et vitesses
11DESSIN EQU $9200 morceaux de pièces
12FORME EQU $9344 silhouettes
13CHIFF EQU $949A les 9 chiffres
14PIECES EQU $94E0 7 figures de base
15SYNCRO EQU $95F5 début du code ASM
16DIR EQU $9D accès page direct
17Z EQU $80 pour les variables
18
19RAMA EQU $C14F
20RAMB EQU RAMA-$2000
21COULIB EQU 192 couleur segmt vide
22GHOST EQU 71 brique s'en allant
23BORDER EQU 184 couleur tour carré
24REBDEP EQU 4 anti-rebond direc@
25REBROT EQU 9 anti-rebond rota@
26
27 ORG SYNCRO
28
29 TST $E7E7
30 BPL *-3
31 TST $E7E7
32 BMI *-3
33
34DEFIL LDX #$DE3C scroll ^
35 LDU #DIR*256+Z+23
36 LDA #5
37 ASL ,U+
38 ROL 15,X
39 ROL 14,X
40 ROL 13,X
41 ROL 12,X
42 ROL 11,X
43 ROL 10,X
44 ROL 9,X
45 ROL 8,X
46 ROL 7,X
47 ROL 6,X
48 ROL 5,X
49 ROL 4,X
50 ROL 3,X
51 ROL 2,X
52 ROL 1,X
53 ROL ,X
54 ROL -1,X
55 ROL -2,X
56 ROL -3,X
57 ROL -4,X
58 ROL -5,X
59 ROL -6,X
60 ROL -7,X
61 ROL -8,X
62 ROL -9,X
63 ROL -10,X
64 ROL -11,X
65 ROL -12,X
66 ROL -13,X
67 ROL -14,X
68 ROL -15,X
69 ROL -16,X
70 LEAX 40,X
71 DECA
72 BNE DEFIL+8
73 DEC <Z+28
74 BNE DEFILN
75 LDX <Z+29
76 LDB ,X+
77 BNE *+7
78 LDX #TEXTE
79 BRA *-7
80 STX <Z+29
81 LDA #5
82 MUL
83 LDU #FONTE-5
84 LEAU D,U
85 PULU D,X
86 STD <Z+23
87 STX <Z+25
88 LDA ,U
89 STA <Z+27
90 LDA #8
91 STA <Z+28
92
93DEFILN LDA <Z+31
94 BEQ EFFDEB
95 DEC <Z+31
96 LBNE SYNCRO
97 JMP ,Y
98
99**** Effacement de l'objet ***
100
101EFFDEB LDX <Z+2 adresse écran RAMB
102 LDU <Z+4 silhouette objet
103 LDA #4
104 STA <Z+1
105 LDA #COULIB
106 LDB #4
107 STB <Z
108
109EFFLIG LDB ,U+
110 BEQ EFFVID
111 STA -120,X
112 STA -80,X
113 STA -40,X
114 STA ,X
115 STA 40,X
116 STA 80,X
117 STA 120,X
118 STA 160,X
119EFFVID LEAX 1,X
120 DEC <Z
121 BNE EFFLIG
122 LEAX 316,X
123 DEC <Z+1
124 BNE EFFLIG-4
125
126**** Rotation de l'objet ****
127
128 LDB <Z+13
129 BNE ROTFIN c'est un rebond
130 LDA $E7CD action 0
131 LDX <Z+2
132 LDU <Z+4
133 BITA #64
134 BNE ROTFIN+2
135 LDU -2,U
136 LEAS ,U
137 LDA #4
138 STA <Z
139 LDB #4
140
141ROTLIG LDA ,S+
142 BEQ ROTVID
143 LDA -120,X haut du cube
144 CMPA #COULIB
145 BNE ROTFIN+2
146 LDA 160,X bas du cube
147 CMPA #COULIB
148 BNE ROTFIN+2
149
150ROTVID LEAX 1,X
151 DECB
152 BNE ROTLIG
153 LEAX 316,X
154 DEC <Z
155 BNE ROTLIG-2
156 STU <Z+4
157 LDB #REBROT
158 STB <Z+13
159 BRA *+4
160
161ROTFIN DEC <Z+13
162
163**** Déplacements latéraux ****
164
165 LDA $E7CC joystick 0
166 LDX <Z+2
167 LDU <Z+4
168 BITA #4
169 BNE *+6
170 LEAX -1,X
171 BRA *+8
172 BITA #8
173 BNE DEPFIN
174 LEAX 1,X
175 LEAY ,X
176 DEC <Z+12
177 BGT DEPFIN+2 c'est un rebond
178 LDA #4
179 STA <Z
180 LDB #4
181
182DEPLIG LDA ,U+
183 BEQ DEPVID
184 LDA -120,Y haut du cube
185 CMPA #COULIB
186 BNE DEPFIN
187 LDA 160,Y bas du cube
188 CMPA #COULIB
189 BNE DEPFIN
190
191DEPVID LEAY 1,Y
192 DECB
193 BNE DEPLIG
194 LEAY 316,Y
195 DEC <Z
196 BNE DEPLIG-2
197 STX <Z+2
198 LDB #REBDEP
199 STB <Z+12
200 BRA *+4
201
202DEPFIN CLR <Z+12
203
204**** Chute de l'objet ****
205
206 LDX <Z+2
207 LDA $E7CC
208 BITA #2
209 BNE CHUNAT
210 LDA <Z+14 flag même pression
211 BNE CHUNAT+2
212 LEAX 320,X commandée
213 BRA CHUFIN
214
215CHUNAT CLR <Z+14
216 LDB <Z+8 naturelle
217 CLRA
218 ADDD <Z+6 vitesse de chute
219 STB <Z+8
220 LDB #40
221 MUL
222 LEAX D,X
223CHUFIN STX <Z+2
224
225**** Ajustage si fin de chute ****
226
227 LDU <Z+4 forme de l'objet
228 LDX <Z+2 adresse écran RAMB
229 LEAS 12,U
230 LEAY 1120,X
231 LDA #4
232 STA <Z
233 LEAX ,Y
234 LEAU ,S
235 LDB #4
236
237AJUCOL LDA ,U
238 BEQ AJUVID
239 LDB #1 fin de colonne
240 LDA ,X bas de plancher
241 CMPA #COULIB
242 BEQ AJUVID
243 STB <Z+9 flag fin de chute
244 CLRB
245 LEAX -40,X
246 LDA ,X
247 INCB
248 CMPA #COULIB
249 BNE *-8
250 LDA #40
251 MUL
252 COMA
253 NEGB
254 LDX <Z+2
255 LEAX D,X
256 STX <Z+2
257 BRA AJUFIN
258
259AJUVID LEAX -320,X
260 LEAU -4,U
261 DECB
262 BNE AJUCOL
263 LEAU 17,U
264 LEAY 1,Y colonne suivante
265 LEAS 1,S
266 DEC <Z
267 BNE AJUCOL-6
268AJUFIN
269
270**** Affichage de l'objet ****
271
272 LDX <Z+2 adresse écran RAMB
273 LEAY $2000,X
274 LDS <Z+4 forme de l'objet
275 LDA #4
276 STA <Z+1
277 LDB #4
278 STB <Z
279
280AFFLIG LDB ,S+
281 BEQ AFFVID
282 LDA #6
283 MUL
284 LDU #DESSIN-6
285 LEAU D,U
286 PULU D
287 STA -120,X
288 STA -80,X
289 STA -40,X
290 STA ,X
291 STA 40,X
292 STA 80,X
293 STA 120,X
294 STA 160,X
295 STB -120,Y
296 PULU D
297 STA -80,Y
298 STB -40,Y
299 STB ,Y
300 STB 40,Y
301 STB 80,Y
302 LDD ,U
303 STA 120,Y
304 STB 160,Y
305
306AFFVID LEAX 1,X
307 LEAY 1,Y
308 DEC <Z
309 BNE AFFLIG
310 LEAX 316,X
311 LEAY 316,Y
312 DEC <Z+1
313 BNE AFFLIG-4
314 LDA <Z+9
315 LBEQ SYNCRO
316
317**** Ravages causés par l'objet ****
318
319 CLR <Z+9 aucune ligne faite
320 LDU <Z+2 cube du milieu sur
321 LEAU 1,U la ligne du haut
322 LDA #4
323 STA <Z+1
324RAVCOL LEAX ,U
325 LEAY ,U
326 LDA ,X
327 CMPA #BORDER
328 LBEQ RAVGRU déjà => hors cadre
329 LDA ,X+
330 CMPA #COULIB
331 LBEQ RAVGRU
332 CMPA #BORDER
333 BNE *-10
334 LDA ,-Y couleurs à gauche?
335 CMPA #COULIB
336 LBEQ RAVGRU
337 CMPA #BORDER
338 BNE *-10
339 LDA #10
340 STA <Z
341 LEAX -11,X
342 LEAY $2001,Y
343 INC <Z+9
344 STX <Z+18
345RAVLIG LDA 200,X remodelage dessin
346 CMPA #BORDER des figures pour
347 BEQ RAVSUS cause de chute
348 CLRA
349 LDB 240,Y
350 BEQ *+3
351 INCA
352 STA 200,Y
353RAVSUS LDA -160,X
354 CMPA #BORDER
355 BEQ RAVCUB
356 LDA #$FF
357 STA -160,Y
358 LDB -160,X
359 CMPB -161,X mm couleur gauche?
360 BNE *+8
361 LDB -241,Y
362 BEQ *+4
363 LDA #$7F mais pas de lien .
364 STA -200,Y
365RAVCUB LDA #GHOST blanchir la ligne
366 STA -120,X
367 STA -80,X
368 STA -40,X
369 STA ,X+
370 STA 39,X
371 STA 79,X
372 STA 119,X
373 STA 159,X
374 LDD #$103
375 STA -120,Y
376 STB -80,Y
377 STB -40,Y
378 STB ,Y+
379 STB 39,Y
380 STB 79,Y
381 LDD #$7FFF
382 STA 119,Y
383 STB 159,Y
384 DEC <Z
385 LBNE RAVLIG
386RAVGRU LEAU 320,U
387 DEC <Z+1
388 LBNE RAVCOL
389
390**** Tombée des lignes supérieures ****
391
392 LDA <Z+9
393 LBEQ STATUS rien ne bouge
394 LDY #TOMDEB
395 LDA #5
396 STA <Z+31
397 JMP SYNCRO
398
399TOMDEB LDU <Z+18 source
400 LEAU -120,U haut de la ligne
401 LEAS 5,U destination
402TOMLIG LEAU -320,U
403 LDA ,U
404 CMPA #BORDER haut du cadre
405 BEQ TOMDER
406 CMPA #GHOST
407 BNE TOMCPY
408 BRA TOMLIG
409
410TOMDER LDX #COULIB*256+COULIB
411 LEAY ,X
412 LDB #COULIB
413 LDA <Z+9
414 LDU #RAMB+50
415 PSHU Y,X,B
416 PSHU Y,X,B
417 LEAU 50,U
418 PSHU Y,X,B
419 PSHU Y,X,B
420 LEAU 50,U
421 PSHU Y,X,B
422 PSHU Y,X,B
423 LEAU 50,U
424 PSHU Y,X,B
425 PSHU Y,X,B
426 LEAU 50,U
427 PSHU Y,X,B
428 PSHU Y,X,B
429 LEAU 50,U
430 PSHU Y,X,B
431 PSHU Y,X,B
432 LEAU 50,U
433 PSHU Y,X,B
434 PSHU Y,X,B
435 LEAU 50,U
436 PSHU Y,X,B
437 PSHU Y,X,B
438 LEAU 50,U
439 DECA
440 BNE *-57
441 LDY #SCOMAJ
442 LDA #5
443 STA <Z+31
444 JMP SYNCRO
445
446TOMCPY PULU B,X,Y copie des couleurs
447 PSHS Y,X,B
448 LEAS 45,S
449 PSHS Y,X,B
450 LEAS 45,S
451 PSHS Y,X,B
452 LEAS 45,S
453 PSHS Y,X,B
454 LEAS 45,S
455 PSHS Y,X,B
456 LEAS 45,S
457 PSHS Y,X,B
458 LEAS 45,S
459 PSHS Y,X,B
460 LEAS 45,S
461 PSHS Y,X,B
462 LEAS 10,S
463 PULU X,Y,B
464 PSHS Y,X,B
465 LEAS -35,S
466 PSHS Y,X,B
467 LEAS -35,S
468 PSHS Y,X,B
469 LEAS -35,S
470 PSHS Y,X,B
471 LEAS -35,S
472 PSHS Y,X,B
473 LEAS -35,S
474 PSHS Y,X,B
475 LEAS -35,S
476 PSHS Y,X,B
477 LEAS -35,S
478 PSHS Y,X,B
479
480 LEAU $1FF6,U
481 LEAS $2000,S
482 PULU B,X,Y copie des formes
483 PSHS Y,X,B
484 LEAS 10,S
485 PULU B,X,Y
486 PSHS Y,X,B
487 LEAU 30,U
488 LEAS 40,S
489 PULU B,X,Y
490 PSHS Y,X,B
491 LEAS 45,S
492 PSHS Y,X,B
493 LEAS 45,S
494 PSHS Y,X,B
495 LEAS 45,S
496 PSHS Y,X,B
497 LEAS 45,S
498 PSHS Y,X,B
499 PULU B,X,Y
500 LEAS 10,S
501 PSHS Y,X,B
502 LEAS -35,S
503 PSHS Y,X,B
504 LEAS -35,S
505 PSHS Y,X,B
506 LEAS -35,S
507 PSHS Y,X,B
508 LEAS -35,S
509 PSHS Y,X,B
510 LEAU 190,U
511 LEAS 200,S
512 PULU B,X,Y
513 PSHS Y,X,B
514 LEAS 10,S
515 PULU B,X,Y
516 PSHS Y,X,B
517 LEAU 30,U
518 LEAS 40,S
519 PULU B,X,Y
520 PSHS Y,X,B
521 LEAS 10,S
522 PULU B,X,Y
523 PSHS Y,X,B
524 LEAU -$2122,U
525 LEAS -$2258,S
526 JMP TOMLIG
527
528SCOMAJ LDX <Z+39 score bonifié
529 LDA <Z+9
530 LDB #6
531 MUL
532 LEAX D,X
533 LDU #DIR*256+Z+39
534 LDA #6
535 LDB ,-U
536 ADDB ,-X
537 CMPB #10
538 BLO *+6
539 SUBB #10
540 INC -1,U
541 STB ,U
542 DECA
543 BNE *-15
544 LDA <Z+32 au cas où 10000000
545 CMPA #10
546 BLO *+4
547 CLR <Z+32
548
549 LDS #$60CC
550 LDB <Z+15 lignes du level
551 SUBB <Z+9
552 CMPB #252
553 BLO NBLMAJ-2
554 LDD <Z+41 numéro du level
555 LDU <Z+39 gains associés
556 LEAU 24,U
557 INCB
558 CMPB #10
559 BLO *+24
560 INC <Z+43
561 LDB <Z+43
562 LDX #$CA98 vies ^
563 JSR PUTC
564 LDA <Z+41
565 LDU #LEVELS
566 CLRB
567 INCA
568 CMPA #10
569 BLO *+3
570 CLRA
571 STD <Z+41
572 PULU D
573 STD <Z+6 vitesse associée
574 STU <Z+39
575 LDX #$D4D1 level ^
576 LDB <Z+41
577 BNE *+4
578 LDB #12
579 JSR PUTC
580 LDB <Z+42
581 JSR PUTC
582 LDB #14 lignes / level
583 STB <Z+15
584NBLMAJ LDB <Z+22 nombre de lignes
585 ADDB <Z+9
586 CMPB #9
587 BHI *+6
588 STB <Z+22
589 BRA NBLAFF
590 SUBB #10
591 STB <Z+22
592 LDA <Z+21
593 INCA
594 CMPA #9
595 BHI *+6
596 STA <Z+21
597 BRA NBLAFF
598 SUBA #10
599 STA <Z+21
600 INC <Z+20
601NBLAFF LDX #$D33F lines ^
602 LDB <Z+20
603 JSR PUTC
604 LDB <Z+21
605 JSR PUTC
606 LDB <Z+22
607 JSR PUTC
608
609**** Status lines ****
610
611STATUS LDU #DIR*256+Z+39
612 LDS #$60CC
613 CLRA
614 LDB ,-U
615 INCB
616 CMPB #10
617 BLO *+6
618 STA ,U
619 BRA *-9
620 STB ,U
621SCOAFF LDX #$C5CA score ^
622 LDY #DIR*256+Z+32
623 LDA #7
624 STA <Z
625 LDB ,Y+
626 JSR PUTC
627 DEC <Z
628 BNE *-7
629
630**** Nouvel objet ****
631
632OBJNEW CLR <Z+9
633 LDU <Z+16 ancien "NEXT"
634 STU <Z+4 forme de l'objet
635 LEAS 8,U
636 LDX #RAMB-517
637 STX <Z+2 adresse écran
638 LDX #RAMB+3
639 CLR <Z+8 ordonnée nulle
640 INC <Z+14 flag même pression
641 LDA #2
642 STA <Z
643 LDB #4
644
645OBJLIG LDA ,S+
646 BEQ *+11
647 LDA ,X haut du cube
648 CMPA #COULIB
649 BEQ *+5
650 JMP BLKOBJ l'objet est bloqué
651 LEAX 1,X
652 DECB
653 BNE OBJLIG
654 LEAX 316,X
655 DEC <Z
656 BNE OBJLIG-2
657
658**** Présentation du suivant ****
659
660SUIDEB LDX <Z+10
661 LDB ,X+
662 ANDB #7
663 BNE *+7
664 LDX #RANDOM
665 BRA *-9
666 STX <Z+10
667 LDX #PIECES-2
668 ASLB
669 LDU B,X forme du suivant
670 STU <Z+16
671 LEAS 8,U
672 LDX #$B510 next ^
673 LEAY $2000,X
674 LDA #2
675 STA <Z+1
676 LDB #4
677 STB <Z
678
679SUILIG LDB ,S+
680 BNE SUICUB
681 LDA #COULIB
682 STA -120,X
683 STA -80,X
684 STA -40,X
685 STA ,X
686 STA 40,X
687 STA 80,X
688 STA 120,X
689 STA 160,X
690 BRA SUINEX
691SUICUB LDA #6
692 MUL
693 LDU #DESSIN-6
694 LEAU D,U
695 PULU D
696 STA -120,X
697 STA -80,X
698 STA -40,X
699 STA ,X
700 STA 40,X
701 STA 80,X
702 STA 120,X
703 STA 160,X
704 STB -120,Y
705 PULU D
706 STA -80,Y
707 STB -40,Y
708 STB ,Y
709 STB 40,Y
710 STB 80,Y
711 PULU D
712 STA 120,Y
713 STB 160,Y
714SUINEX LEAX 1,X
715 LEAY 1,Y
716 DEC <Z
717 BNE SUILIG
718 LEAX 316,X
719 LEAY 316,Y
720 DEC <Z+1
721 BNE SUILIG-4
722 JMP SYNCRO
723
724**** La figure est bloquée ****
725
726BLKOBJ DEC <Z
727 BNE BLKFIN
728 LDX #RAMB+123
729 LDY #RAMA+123
730 LEAS 12,U
731 LDA #4
732 STA <Z
733
734BLKLIG LDB ,S+
735 BEQ BLKVID
736 LDA #6
737 MUL
738 LDU #DESSIN-6
739 LEAU D,U
740 PULU D
741 STA -120,X
742 STA -80,X
743 STA -40,X
744 STA ,X
745 STA 40,X
746 STA 80,X
747 STA 120,X
748 STA 160,X
749 STB -120,Y
750 PULU D
751 STA -80,Y
752 STB -40,Y
753 STB ,Y
754 STB 40,Y
755 STB 80,Y
756 PULU D
757 STA 120,Y
758 STB 160,Y
759
760BLKVID LEAX 1,X
761 LEAY 1,Y
762 DEC <Z
763 BNE BLKLIG
764
765BLKFIN LDA #20
766 STA <Z+31
767 LDY #*+7
768 JMP SYNCRO
769 DEC <Z+43
770GETRED LDS #$60CC
771 LDX #$CA98 vies ^
772 LDB <Z+43
773 JSR PUTC
774 TST <Z+43
775 BEQ OVER
776 LDX #$CD32
777 LDY #$40C0
778 LDA #32
779 LDU ,Y++
780 STU -2,X
781 LDU ,Y++
782 STU ,X
783 LDU ,Y++
784 STU 2,X
785 LDU ,Y++
786 STU 4,X
787 LEAX 40,X
788 DECA
789 BNE *-20
790 LEAS -$24FA,X
791 LDU #GHOST*256+GHOST
792 LEAX ,U
793 LEAY ,U
794 LDA #32
795 STA <Z
796 TFR X,D
797 PSHS U,Y,X,D
798 LEAS 48,S
799 DEC <Z
800 BNE *-7
801 LDA $E7CD
802 BITA #64
803 BNE *-5
804 LDB #160
805 LDU #COULIB*256+COULIB
806 LDX #RAMB+4
807 STU -4,X
808 STU -2,X
809 STU ,X
810 STU 2,X
811 STU 4,X
812 LEAX 40,X
813 DECB
814 BNE *-14
815 LDS #$60CC
816 JMP SCOAFF
817
818OVER LDX #$CD33 over ^
819 LDY #$4000
820 LDA #32
821 LDU ,Y++
822 STU -2,X
823 LDU ,Y++
824 STU ,X
825 LDU ,Y++
826 STU 2,X
827 LEAX 40,X
828 DECA
829 BNE *-16
830 LEAS -$24FC,X
831 LDU #GHOST*256+GHOST
832 LEAX ,U
833 LEAY ,U
834 LDA #32
835 PSHS U,Y,X
836 LEAS 46,S
837 DECA
838 BNE *-6
839 LDA $E7CD
840 BITA #64
841 BNE *-5
842 LDS #0
843 RTS
844PUTC LDU #CHIFF
845 LDA #7
846 MUL
847 LEAU D,U
848 PULU D
849 STA -120,X
850 STB -80,X
851 PULU D
852 STA -40,X
853 STB ,X+
854 PULU D
855 STA 39,X
856 STB 79,X
857 LDA ,U
858 STA 119,X
859 RTS
860INITAL STS PUTC-3
861 STD <Z+41 level
862 LDA #26
863 MUL
864 LDU #LEVELS
865 LEAU D,U
866 PULU D
867 STD <Z+6 vitesse
868 STU <Z+39 gains
869 LDD #0
870 STD <Z+31 score
871 STD <Z+33
872 STD <Z+35
873 STD <Z+37
874 STD <Z+20 lines
875 STB <Z+22
876 STA <Z+8 virgule
877 LDB <Z+42
878 LDA #15
879 MUL
880 TST <Z+41
881 BEQ *+4
882 ADDB #150
883 DECB
884 STB <Z+15 lignes / ce level
885 LDA #3
886 STA <Z+43 vies
887 LDX <Z+10
888 LDB ,X+ objet suivant
889 ANDB #7
890 BNE *+7
891 LDX #RANDOM
892 BRA *-9
893 STX <Z+10
894 LDX #PIECES-2
895 ASLB
896 LDU B,X
897 STU <Z+16
898 LDS #$60CC
899 LDX #$D4D1 level ^
900 LDB <Z+41
901 BNE *+4
902 LDB #12
903 JSR PUTC
904 LDB <Z+42
905 JSR PUTC
906 LDX #$D33F lines ^
907 CLRB
908 JSR PUTC
909 CLRB
910 JSR PUTC
911 CLRB
912 JSR PUTC
913 LDB <Z+43
914 LDX #$CA98 vies ^
915 JSR PUTC
916 JMP GETRED
917
918 END
Note: See TracBrowser for help on using the repository browser.