1 | ****************************************
|
---|
2 | * *
|
---|
3 | * ECHOCAR.ASM *
|
---|
4 | * *
|
---|
5 | * Contacthoms No 13 page 10 *
|
---|
6 | * *
|
---|
7 | *--------------------------------------*
|
---|
8 | * *
|
---|
9 | * Programme en assembleur pour avoir *
|
---|
10 | * l'écho de la souris à l'écran. *
|
---|
11 | * *
|
---|
12 | ****************************************
|
---|
13 |
|
---|
14 | TITLE ECHO DU CARACTERE
|
---|
15 |
|
---|
16 | GETL EQU $E818 Acq. coor. X,Y
|
---|
17 | SELMEM EQU $E7C3 Select. for/color
|
---|
18 | NBCOL EQU $605F 40 ou 80 colonnes
|
---|
19 | MEMECR EQU $4000 Adr deb mem écran
|
---|
20 | *
|
---|
21 | *
|
---|
22 | *
|
---|
23 | ORG $DF00
|
---|
24 | ECHO00 EQU *
|
---|
25 | PSHS X,Y,U,D
|
---|
26 | *
|
---|
27 | * Acquisition coordonnées point visé
|
---|
28 | *
|
---|
29 | ECHO10 EQU *
|
---|
30 | JSR GETL
|
---|
31 | BCS ECHO99
|
---|
32 | *
|
---|
33 | * Le point visé est-il le même ?
|
---|
34 | *
|
---|
35 | TFR Y,D
|
---|
36 | ANDB #$F8
|
---|
37 | PSHS D
|
---|
38 | TFR X,D
|
---|
39 | ANDB #$F8
|
---|
40 | PSHS D
|
---|
41 | CMPD XPREC,PCR
|
---|
42 | BNE ECHO20 NON: inverse
|
---|
43 | LDD 2,S
|
---|
44 | CMPD YPREC,PCR
|
---|
45 | BNE ECHO20 NON: inv mm point
|
---|
46 | LEAS 4,S
|
---|
47 | BRA ECHO10 Attend changement
|
---|
48 | *
|
---|
49 | * Remise point prec en vidéo normal
|
---|
50 | *
|
---|
51 | ECHO20 EQU *
|
---|
52 | LDX XPREC,PCR
|
---|
53 | BMI ECHO30 Première fois
|
---|
54 | LDY YPREC,PCR
|
---|
55 | BSR INVERS
|
---|
56 | *
|
---|
57 | * Met le point en vidéo inverse
|
---|
58 | *
|
---|
59 | ECHO30 EQU *
|
---|
60 | LDX 0,S
|
---|
61 | STX XPREC,PCR
|
---|
62 | LDY 2,S
|
---|
63 | STY YPREC,PCR
|
---|
64 | BSR INVERS
|
---|
65 | LEAS 4,S
|
---|
66 | ECHO99 EQU *
|
---|
67 | PULS X,Y,U,D,PC
|
---|
68 | *
|
---|
69 | * Met un caractère en vidéo inverse
|
---|
70 | *
|
---|
71 | * Entrée x,y coordonnées point
|
---|
72 | * du début du caractère.
|
---|
73 | *
|
---|
74 | INVERS EQU *
|
---|
75 | PSHS X,Y,U,D
|
---|
76 | *
|
---|
77 | * Calcul adresse début du caractère
|
---|
78 | * dans écran.
|
---|
79 | *
|
---|
80 | LDU #MEMECR
|
---|
81 | TFR Y,D
|
---|
82 | LDA #40
|
---|
83 | MUL
|
---|
84 | LEAU D,U
|
---|
85 | TFR X,D
|
---|
86 | LSRA
|
---|
87 | RORB
|
---|
88 | LSRA
|
---|
89 | RORB
|
---|
90 | LSRB
|
---|
91 | LDA #01
|
---|
92 | ORA >SELMEM Force plan forme
|
---|
93 | TST NBCOL 40 ou 80 colonnes
|
---|
94 | BPL INVE20
|
---|
95 | LSRB
|
---|
96 | BCC INVE20 Pair-->forme
|
---|
97 | LDA #$FE 80 col mais col
|
---|
98 | ANDA >SELMEM Impair-->couleur
|
---|
99 | INVE20 EQU *
|
---|
100 | LEAU B,U U=adr deb caract
|
---|
101 | STA >SELMEM
|
---|
102 | *
|
---|
103 | * Met le caractère en vidéo inverse
|
---|
104 | *
|
---|
105 | LDA #8
|
---|
106 | INVE70 EQU *
|
---|
107 | COM ,U
|
---|
108 | LEAU 40,U
|
---|
109 | DECA
|
---|
110 | BNE INVE70
|
---|
111 | *
|
---|
112 | * Fin
|
---|
113 | *
|
---|
114 | INVE99 EQU *
|
---|
115 | PULS X,Y,U,D,PC
|
---|
116 | *
|
---|
117 | *
|
---|
118 | XPREC FDB -1
|
---|
119 | YPREC FDB -1
|
---|
120 | END
|
---|
121 |
|
---|
122 | ****************************************
|
---|
123 | * *
|
---|
124 | * PROGRAMME BASIC D'ACCOMPAGNEMENT: *
|
---|
125 | * *
|
---|
126 | * 10 BANK0:CLEAR,&HDFEF *
|
---|
127 | * 20 LOADM"ECHOCAR.BIN" *
|
---|
128 | * 30 CLS:LOCATE0,0,0 *
|
---|
129 | * 40 ATTRB1:PRINT"EN 40 COLONNES" *
|
---|
130 | * 50 GOSUB 100 *
|
---|
131 | * 60 CONSOLE,,,,1 *
|
---|
132 | * 70 ATTRB1:PRINT"EN 80 COLONNES" *
|
---|
133 | * 80 GOSUB 100 *
|
---|
134 | * 90 CONSOLE,,,,0:SCREEN4,6,6:END *
|
---|
135 | * 100 BANK0 *
|
---|
136 | * 110 DO *
|
---|
137 | * 120 EXEC &HDF00 *
|
---|
138 | * 130 IF MTRIG(0) THEN EXIT *
|
---|
139 | * 140 LOOP *
|
---|
140 | * 150 IF MTRIG(0) THEN 150 *
|
---|
141 | * 160 RETURN *
|
---|
142 | * *
|
---|
143 | ****************************************
|
---|
144 |
|
---|
145 | * Un appui (prolongé !) sur le bouton
|
---|
146 | * gauche de la souris vous fait passer
|
---|
147 | * en 80 colonnes.
|
---|