1 | TITLE TO-DEMO: Programme princ.
|
---|
2 | * ---------------------------------
|
---|
3 | PAGE
|
---|
4 |
|
---|
5 | ****************************************
|
---|
6 | * *
|
---|
7 | * TO-DEMO *
|
---|
8 | * *
|
---|
9 | * Programme principal *
|
---|
10 | * *
|
---|
11 | * - Affichage d'un titre *
|
---|
12 | * - Attente action clavier ou souris *
|
---|
13 | * pour afficher un menu en POP-UP *
|
---|
14 | * - selon ce menu, *
|
---|
15 | * Arret *
|
---|
16 | * Menu de gestion fichier *
|
---|
17 | * Ecran de démonstration de *
|
---|
18 | * poussoir 'balise' *
|
---|
19 | * poussoir 'zone' *
|
---|
20 | * poussoir 'rédéfinissable' *
|
---|
21 | * inverseur 'balise' *
|
---|
22 | * inverseur 'zone' *
|
---|
23 | * champ de saisie numérique *
|
---|
24 | * champ de saisie hexa décimal *
|
---|
25 | * *
|
---|
26 | ****************************************
|
---|
27 |
|
---|
28 | DEBUT EQU *
|
---|
29 |
|
---|
30 | * Initialisations
|
---|
31 | *---------------------------------------
|
---|
32 |
|
---|
33 | * Pile et DP
|
---|
34 | LDS #PILE
|
---|
35 | LDD #PAGE0
|
---|
36 | TFR A,DP
|
---|
37 |
|
---|
38 | * Copie des S/P fenêtrage vers RAM
|
---|
39 | LDU #FENRAM
|
---|
40 | JSR COMBK2
|
---|
41 |
|
---|
42 | * Vérification RAM disponible
|
---|
43 | * Ici on suppose un minimum de 6 bank
|
---|
44 | * - 1 de manoeuvre
|
---|
45 | * - 4 pour l'empilement des fenetres
|
---|
46 | * - 1 pour l'application
|
---|
47 |
|
---|
48 | LDA MAXBK
|
---|
49 | DECA ->nb bank disp.
|
---|
50 | CMPA #6
|
---|
51 | BGE OKRAM ->
|
---|
52 | LDB #$1B 'Out of memory'
|
---|
53 | JSR PUTC
|
---|
54 | LDB #$5A
|
---|
55 | JSR PUTC
|
---|
56 | LDB #FF
|
---|
57 | JSR PUTC
|
---|
58 | LDX #MOUT
|
---|
59 | BOUT LDB ,X+
|
---|
60 | BEQ BOUT1
|
---|
61 | JSR PUTC
|
---|
62 | BRA BOUT ->
|
---|
63 | BOUT1 JSR GETC
|
---|
64 | TSTB
|
---|
65 | BEQ BOUT1 ->
|
---|
66 | JMP MENU ->>>>>>
|
---|
67 | OKRAM EQU *
|
---|
68 |
|
---|
69 | * Init. extra moniteur pour turbo-disq
|
---|
70 | LDB #RESETC
|
---|
71 | JSR EXTRA
|
---|
72 |
|
---|
73 | * Initialisation DOS sur zone réservée
|
---|
74 | * (5 disques 2 fichiers)
|
---|
75 | LDD #$7000
|
---|
76 | STD SECBUF
|
---|
77 | ADDD #256
|
---|
78 | STD FATPTR
|
---|
79 | LDA #5
|
---|
80 | LDB #166
|
---|
81 | MUL
|
---|
82 | ADDD FATPTR
|
---|
83 | TFR D,X
|
---|
84 | LDY #5
|
---|
85 | LDA #2
|
---|
86 | LDB #FCBINI
|
---|
87 | JSR EXTRA
|
---|
88 |
|
---|
89 | LDX #DESCOU fichier courant
|
---|
90 | LDD #$2020
|
---|
91 | BRZDC STD ,X++
|
---|
92 | CMPX #DESCOU+8
|
---|
93 | BNE BRZDC ->
|
---|
94 |
|
---|
95 | * Mémorisation de la palette si non
|
---|
96 | * déja fait ! Ceci est un exemple de
|
---|
97 | * mémorisation de données dans la pseudo
|
---|
98 | * cartouche elle meme !
|
---|
99 | LDA TFMEMO
|
---|
100 | CMPA #$FF
|
---|
101 | LBNE SUIXY0 ->
|
---|
102 |
|
---|
103 | CLR $E7E4
|
---|
104 | LDA $E7E6 autorise écritur
|
---|
105 | ORA #$40 cartouche
|
---|
106 | STA $E7E6
|
---|
107 |
|
---|
108 | CLR TFMEMO
|
---|
109 | LDU #TMEMO
|
---|
110 | CLRA
|
---|
111 | BOULNU LDX #$FFFF
|
---|
112 | LDY #0
|
---|
113 | JSR SETP
|
---|
114 | STX ,U++
|
---|
115 | INCA
|
---|
116 | CMPA #16
|
---|
117 | BNE BOULNU ->
|
---|
118 |
|
---|
119 | LDA $E7E6 interdit écritur
|
---|
120 | ANDA #$BF cartouche
|
---|
121 | STA $E7E6
|
---|
122 |
|
---|
123 | SUIXY0 EQU *
|
---|
124 |
|
---|
125 | * Bank RAM
|
---|
126 | LDA #BKMANO
|
---|
127 | STA BANKC
|
---|
128 |
|
---|
129 | * Initialisation propre à l'application!
|
---|
130 |
|
---|
131 | LDA #GRIS
|
---|
132 | STA TOUR
|
---|
133 | CLR MODVID
|
---|
134 |
|
---|
135 | LDB #32
|
---|
136 | LDX #PALDEF
|
---|
137 | LDY #PALETE
|
---|
138 | BPALMA LDA ,X+
|
---|
139 | STA ,Y+
|
---|
140 | DECB
|
---|
141 | BNE BPALMA ->
|
---|
142 |
|
---|
143 | CLRA palette défaut !
|
---|
144 | COMA
|
---|
145 | LDX #PALDEF
|
---|
146 | JSR SETP
|
---|
147 |
|
---|
148 | * Fenêtrage
|
---|
149 | LDB #$1B mode TO7
|
---|
150 | JSR PUTC
|
---|
151 | LDB #$5A
|
---|
152 | JSR PUTC
|
---|
153 |
|
---|
154 | LDX #ZONFEN
|
---|
155 | LDA #PBKPIL
|
---|
156 | LDB #DBKPIL
|
---|
157 | TFR D,U
|
---|
158 | LDA #NOIR
|
---|
159 | LDB #GRIS
|
---|
160 | JSR FENINI
|
---|
161 |
|
---|
162 | * Activation Fenêtre principale
|
---|
163 | * C'est le fond de tout les empilements
|
---|
164 | * ultérieurs. Comme c'est le premier
|
---|
165 | * il ne faut évidemment pas faire
|
---|
166 | * FENOUV qui sauvegarde avant d'affiche
|
---|
167 | *---------------------------------------
|
---|
168 |
|
---|
169 | LDX #FENPRI
|
---|
170 | LDD #0
|
---|
171 | JSR FENRPL
|
---|
172 |
|
---|
173 | * Visualisation du titre
|
---|
174 | * pendant un petit moment ...
|
---|
175 | *---------------------------------------
|
---|
176 |
|
---|
177 | LDX #FENTIT Titre
|
---|
178 | LDD #$0606
|
---|
179 | JSR FENOUV
|
---|
180 |
|
---|
181 | JSR FENACT
|
---|
182 |
|
---|
183 | LDU #400
|
---|
184 | EXEC0 JSR FEN
|
---|
185 | BCS EXEC00 ->
|
---|
186 | TSTB
|
---|
187 | BNE EXEC00 ->
|
---|
188 | LEAU -1,U
|
---|
189 | CMPU #0
|
---|
190 | BNE EXEC0 ->
|
---|
191 |
|
---|
192 | EXEC00 CLRB
|
---|
193 | JSR FENFER
|
---|
194 |
|
---|
195 | * La fenetre que nous activons mainte
|
---|
196 | * nant n'est autre que la fenetre
|
---|
197 | * principale puisque la fenetre titre a
|
---|
198 | * ete refermee !!!
|
---|
199 |
|
---|
200 | EXEC01 JSR FENACT
|
---|
201 |
|
---|
202 | * Attente principale
|
---|
203 | * d'une saisie clavier ou souris
|
---|
204 | * avec déplacement souris et utilisation
|
---|
205 | * du S/P local FENPOP a la place de
|
---|
206 | * l'appel direct à FEN pour pouvoir
|
---|
207 | * visualiser le menu suivant sous la
|
---|
208 | * tortue de pointage !!!
|
---|
209 | *---------------------------------------
|
---|
210 |
|
---|
211 | EXEC1 JSR FENPOP
|
---|
212 | TSTB
|
---|
213 | BEQ EXEC2 ->
|
---|
214 | LBRA MENDEM ->
|
---|
215 |
|
---|
216 | EXEC2 LDA REGCC #Etat pointage
|
---|
217 | TFR A,CC
|
---|
218 | BCC EXEC1 pas clic ->
|
---|
219 | LBRA MENDEM ->
|
---|
220 |
|
---|
221 |
|
---|
222 | *---------------------------------------
|
---|
223 | * Demande de menu
|
---|
224 | *---------------------------------------
|
---|
225 |
|
---|
226 | MENDEM EQU * demande menu
|
---|
227 |
|
---|
228 | * Affichage d'un menu déroulant
|
---|
229 | * POPUP est utilise pour positionner
|
---|
230 | * le menu en fonction de sa taille
|
---|
231 | * et de la position souris !
|
---|
232 |
|
---|
233 | LDX #FENMEN Menu
|
---|
234 | LDD 3,X
|
---|
235 | JSR POPUP
|
---|
236 | JSR FENOUV
|
---|
237 |
|
---|
238 | * Ici on affiche dynamiquement une info
|
---|
239 | * sur la fenetre
|
---|
240 |
|
---|
241 | CLRA
|
---|
242 | LDB BANKC
|
---|
243 | LDX #BUF
|
---|
244 | JSR BINDCG
|
---|
245 | LDD #$010E
|
---|
246 | LDY #$0102
|
---|
247 | JSR FENLOF
|
---|
248 | JSR FENEDI
|
---|
249 |
|
---|
250 | * Ici on active la gestion du menu !
|
---|
251 |
|
---|
252 | MENU0 JSR FENACT
|
---|
253 |
|
---|
254 | * Ici est la boucle d'attente du menu
|
---|
255 |
|
---|
256 | MENU1 JSR FENPOP
|
---|
257 | MENU2 TSTB
|
---|
258 | BEQ MENU1 ->
|
---|
259 | CMPB #'D
|
---|
260 | LBEQ XDEMO ->
|
---|
261 | CMPB #'G
|
---|
262 | LBEQ XGRIL ->
|
---|
263 | CMPB #'F
|
---|
264 | LBEQ XFICH ->
|
---|
265 | CMPB #'Q
|
---|
266 | LBEQ QUIPHO ->
|
---|
267 | CMPB #FF
|
---|
268 | LBNE MENU1 ->
|
---|
269 |
|
---|
270 | * Ici on décide de remonter d'un niveau
|
---|
271 | * en fermant la fenetre
|
---|
272 | * ce qui signifie: en restaurant l'ecran
|
---|
273 | * memorise !
|
---|
274 | * Dans la foulée, on réactive cette
|
---|
275 | * fenetre sans meme avoir a en connaitre
|
---|
276 | * le fonctionnement !
|
---|
277 |
|
---|
278 | CLRB
|
---|
279 | JSR FENFER
|
---|
280 | JSR FENACT
|
---|
281 | LBRA EXEC1 visu principale>
|
---|
282 |
|
---|
283 | * Affichage d'une fenetre de demonstra
|
---|
284 | * tion
|
---|
285 | * Nb: le traitement qui exploite cette
|
---|
286 | * fenetre peut organiser un retour
|
---|
287 | * de plusieurs niveau au niveau de
|
---|
288 | * l'affichage...
|
---|
289 | * Le test en sortie de procedure
|
---|
290 | * permet de synchroniser le code
|
---|
291 | * sur la fenetre restauree
|
---|
292 | *---------------------------------------
|
---|
293 | XDEMO EQU *
|
---|
294 | JSR XXDEMO
|
---|
295 | LBNE EXEC1 ->
|
---|
296 | LBRA MENU0 ->
|
---|
297 |
|
---|
298 | * Affichage d'une fenetre de demonstra
|
---|
299 | * tion pour une grille de saisie
|
---|
300 | *---------------------------------------
|
---|
301 | XGRIL EQU *
|
---|
302 | JSR XXGRIL
|
---|
303 | LBRA MENU0 ->
|
---|
304 |
|
---|
305 | * Sélection FICHIER
|
---|
306 | *---------------------------------------
|
---|
307 | XFICH EQU *
|
---|
308 | JSR MENFIC
|
---|
309 | LBNE EXEC1 ->
|
---|
310 | LBRA MENU0 ->
|
---|
311 |
|
---|
312 | * Quitter
|
---|
313 | *---------------------------------------
|
---|
314 | QUIPHO EQU *
|
---|
315 | LBSR FENCH
|
---|
316 | LBSR FENIVD
|
---|
317 | LDA #BKMANO manoeuvre
|
---|
318 | STA BANKC
|
---|
319 | LDX #ZONTRA
|
---|
320 | LDD REGY a cause clou !
|
---|
321 | CMPD #32
|
---|
322 | BGE QUIPH0 ->
|
---|
323 | ADDD #32
|
---|
324 | STD REGY
|
---|
325 | QUIPH0 LDA #10
|
---|
326 | LDB #22
|
---|
327 | JSR POPUP
|
---|
328 | LBSR TBREAK
|
---|
329 | BCS FINGR ->
|
---|
330 | LDB #$51
|
---|
331 | LBSR FENCH
|
---|
332 | LBSR FENIVD
|
---|
333 | LBRA MENU0 ->
|
---|
334 |
|
---|
335 | * Nettoyages divers
|
---|
336 | *---------------------------------------
|
---|
337 |
|
---|
338 | * Fenêtrage
|
---|
339 | FINGR JSR FENFIN
|
---|
340 |
|
---|
341 | * Attributs de visu.
|
---|
342 | LDB #ESC 40 col
|
---|
343 | JSR PUTC
|
---|
344 | LDB #$5A
|
---|
345 | JSR PUTC
|
---|
346 |
|
---|
347 | CLRA restaure palette
|
---|
348 | COMA
|
---|
349 | LDX #TMEMO (éventuellement
|
---|
350 | * modifiée par
|
---|
351 | JSR SETP appli.)
|
---|
352 |
|
---|
353 | JMP MENU ->>>>>>>
|
---|
354 |
|
---|
355 |
|
---|
356 | *=======================================
|
---|
357 | * S/P FEN avec mémo des param en pseudo
|
---|
358 | * registre
|
---|
359 | *=======================================
|
---|
360 |
|
---|
361 | FENPOP PSHS U
|
---|
362 | LDU #PILFEN mémo retour FEN
|
---|
363 | JSR FEN
|
---|
364 | PSHU CC,D,X,Y
|
---|
365 | PULS U,PC ->>
|
---|
366 |
|
---|
367 |
|
---|
368 | *=======================================
|
---|
369 | * S/P préparation d'une ouverture de
|
---|
370 | * fenètre en pop up
|
---|
371 | *
|
---|
372 | * Entrée: A : hauteur cadre
|
---|
373 | * B : largeur cadre
|
---|
374 | * Sortie: A : coord vert.
|
---|
375 | * B : coord horz.
|
---|
376 | *=======================================
|
---|
377 |
|
---|
378 | POPUP PSHS D
|
---|
379 | LEAS -2,S
|
---|
380 | MAXH SET 0
|
---|
381 | MAXL SET 1
|
---|
382 | PA SET 2
|
---|
383 | PB SET 3
|
---|
384 | *---------------------------------------
|
---|
385 |
|
---|
386 | LDA #24
|
---|
387 | SUBA PA,S
|
---|
388 | STA MAXH,S
|
---|
389 | LDA #39
|
---|
390 | SUBA PB,S
|
---|
391 | STA MAXL,S
|
---|
392 |
|
---|
393 | LDB REGY+1
|
---|
394 | LSRB
|
---|
395 | LSRB
|
---|
396 | LSRB
|
---|
397 | LDA MAXH,S
|
---|
398 | CMPB MAXH,S
|
---|
399 | BLE POPUP0 ->
|
---|
400 | TFR A,B
|
---|
401 | POPUP0 STB PA,S
|
---|
402 | LDD REGX
|
---|
403 | LSRA
|
---|
404 | RORB
|
---|
405 | LSRA
|
---|
406 | RORB
|
---|
407 | LSRB
|
---|
408 | LDA MAXL,S
|
---|
409 | CMPB MAXL,S
|
---|
410 | BLE POPUP1 ->
|
---|
411 | TFR A,B
|
---|
412 | POPUP1 STB PB,S
|
---|
413 |
|
---|
414 | TST PA,S
|
---|
415 | BNE POPUP2 ->
|
---|
416 | INC PA,S
|
---|
417 | POPUP2 TST PB,S
|
---|
418 | BNE POPUP3 ->
|
---|
419 | INC PB,S
|
---|
420 | POPUP3 LEAS 2,S
|
---|
421 | PULS D,PC ->>
|
---|