1 | ****************************************
|
---|
2 | * E A S Y S C R O L L E R *
|
---|
3 | * (c) Doctor Lô of HCL for Micro-News *
|
---|
4 | ****************************************
|
---|
5 |
|
---|
6 | TEXTE EQU $DF30 Le début du texte
|
---|
7 | SCREEN EQU $5E00 Position à l'écran
|
---|
8 | VARPGE EQU $DF Page des variables
|
---|
9 | FONT76 EQU $F4 Les 8 lignes de la
|
---|
10 | FONT54 EQU $F6 lettre courante
|
---|
11 | FONT32 EQU $F8 (lue à l'envers->
|
---|
12 | FONT10 EQU $FA ligne 7 à ligne 0)
|
---|
13 | NBPASS EQU $FC compteur passages
|
---|
14 | SPEED EQU $FD vitesse (de 1 à 8)
|
---|
15 | COLUMN EQU $FE compteur colonnes
|
---|
16 |
|
---|
17 |
|
---|
18 | ORG $DF30
|
---|
19 | G PSHS U,Y,X,DP,B,A,CC Sauve regs
|
---|
20 | ORCC #80 Interruptions OFF
|
---|
21 | LDA $E7C3 Partie "points" de
|
---|
22 | ORA #1 la mémoire écran
|
---|
23 | STA $E7C3 sélectionnée
|
---|
24 | LDB #VARPGE Pour accès direct
|
---|
25 | TFR B,DP aux "variables"
|
---|
26 | LDY #TEXTE A faire défiler
|
---|
27 |
|
---|
28 | SYNCRO LDA $E7E7 Boucle tant que
|
---|
29 | BPL *-3 spot dans le bord
|
---|
30 | LDA $E7E7 Boucle tant que
|
---|
31 | BMI *-3 spot dans l'écran
|
---|
32 |
|
---|
33 | LDB <SPEED Vitesse du scroll
|
---|
34 | STB <NBPASS ->nombre de passes
|
---|
35 | SCROLL LDX #SCREEN+20 Position écran
|
---|
36 | LDU #VARPGE*256+FONT10+2 CHR$
|
---|
37 | LDA #8 Hauteur du scroll
|
---|
38 | DOLINE ASL ,-U Décalage ds buffer
|
---|
39 | ROL 19,X Décalage à l'écran
|
---|
40 | ROL 18,X des 40 octets qui
|
---|
41 | ROL 17,X forment une ligne.
|
---|
42 | ROL 16,X Il est beaucoup
|
---|
43 | ROL 15,X plus rapide de
|
---|
44 | ROL 14,X faire comme ici 40
|
---|
45 | ROL 13,X décalages indexés
|
---|
46 | ROL 12,X par rapport au
|
---|
47 | ROL 11,X centre de la ligne
|
---|
48 | ROL 10,X courante, que de
|
---|
49 | ROL 9,X faire une boucle
|
---|
50 | ROL 8,X avec un compteur
|
---|
51 | ROL 7,X décrémenté 40 fois
|
---|
52 | ROL 6,X qui répéterait
|
---|
53 | ROL 5,X une instruction de
|
---|
54 | ROL 4,X décalage avec pré-
|
---|
55 | ROL 3,X décrémentation du
|
---|
56 | ROL 2,X registre d'index :
|
---|
57 | ROL 1,X { LDB #40
|
---|
58 | ROL ,X ROL ,-X
|
---|
59 | ROL -1,X DECB
|
---|
60 | ROL -2,X BNE *-3 }
|
---|
61 | ROL -3,X =562 microsecondes
|
---|
62 | ROL -4,X tandis que la
|
---|
63 | ROL -5,X méthode ci-contre
|
---|
64 | ROL -6,X n'utilise que
|
---|
65 | ROL -7,X 279 microsecondes!
|
---|
66 | ROL -8,X
|
---|
67 | ROL -9,X Evidemment,le code
|
---|
68 | ROL -10,X s'en trouve bien
|
---|
69 | ROL -11,X rallongé, mais ne
|
---|
70 | ROL -12,X sacrifierait-on
|
---|
71 | ROL -13,X pas volontiers
|
---|
72 | ROL -14,X quelques octets
|
---|
73 | ROL -15,X à une routine
|
---|
74 | ROL -16,X permettant une
|
---|
75 | ROL -17,X animation 2 fois
|
---|
76 | ROL -18,X plus rapide ?!
|
---|
77 | ROL -19,X - Oh YES!, Doc' !
|
---|
78 | ROL -20,X
|
---|
79 | LEAX 40,X Descend d'1 ligne
|
---|
80 | DECA 8 lignes décalées?
|
---|
81 | BNE DOLINE Non: on continue !
|
---|
82 |
|
---|
83 |
|
---|
84 | DEC <COLUMN 8 colonnes passées
|
---|
85 | BNE EOPASS Non: fin de passe
|
---|
86 | LDA #8 Ré-initialise le
|
---|
87 | STA <COLUMN compteur à 8 cols.
|
---|
88 | NXTCHR LDB ,-Y Lettre suivante
|
---|
89 | BPL CHAROK >0: lettre normale
|
---|
90 | COMB <0: code=255-code
|
---|
91 | BNE NEWSPD >0: pas "The_End"
|
---|
92 | LDY #TEXTE Recommence au tout
|
---|
93 | BRA NXTCHR début du texte...
|
---|
94 |
|
---|
95 | NEWSPD STB <SPEED -> considère comme
|
---|
96 | BRA NXTCHR nouvelle vitesse !
|
---|
97 |
|
---|
98 | CHAROK MUL Offset=(ASC-32)*8
|
---|
99 | LDU >$60CF Début des fontes
|
---|
100 | LEAU D,U + offset du CHR$
|
---|
101 | PULU D,X Copie du graphisme
|
---|
102 | STD <FONT76 de notre lettre
|
---|
103 | STX <FONT54 dans le buffer,
|
---|
104 | PULU D,X où il sera décalé
|
---|
105 | STD <FONT32 huit fois vers la
|
---|
106 | STX <FONT10 gauche.
|
---|
107 |
|
---|
108 |
|
---|
109 | EOPASS DEC <NBPASS Vitesse atteinte ?
|
---|
110 | LBNE SCROLL Non: autre passage
|
---|
111 | LDA $E7C8 touche frappée ?
|
---|
112 | LBEQ SYNCRO Non: continue...
|
---|
113 | PULS CC,A,B,DP,X,Y,U,PC *FIN*
|
---|
114 |
|
---|
115 | ORG VARPGE*256+FONT76
|
---|
116 | FDB 0,0,0,0 lettre courante
|
---|
117 | FCB 0,6,1,0 *,vitesse,colonnes
|
---|
118 |
|
---|
119 | END
|
---|