source: thomson/code/3rdparty/sources1-hmel/DEMO-PR.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: 9.0 KB
Line 
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
28DEBUT 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
59BOUT LDB ,X+
60 BEQ BOUT1
61 JSR PUTC
62 BRA BOUT ->
63BOUT1 JSR GETC
64 TSTB
65 BEQ BOUT1 ->
66 JMP MENU ->>>>>>
67OKRAM 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
91BRZDC 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
111BOULNU 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
123SUIXY0 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
138BPALMA 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
184EXEC0 JSR FEN
185 BCS EXEC00 ->
186 TSTB
187 BNE EXEC00 ->
188 LEAU -1,U
189 CMPU #0
190 BNE EXEC0 ->
191
192EXEC00 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
200EXEC01 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
211EXEC1 JSR FENPOP
212 TSTB
213 BEQ EXEC2 ->
214 LBRA MENDEM ->
215
216EXEC2 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
226MENDEM 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
252MENU0 JSR FENACT
253
254* Ici est la boucle d'attente du menu
255
256MENU1 JSR FENPOP
257MENU2 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*---------------------------------------
293XDEMO 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*---------------------------------------
301XGRIL EQU *
302 JSR XXGRIL
303 LBRA MENU0 ->
304
305* Sélection FICHIER
306*---------------------------------------
307XFICH EQU *
308 JSR MENFIC
309 LBNE EXEC1 ->
310 LBRA MENU0 ->
311
312* Quitter
313*---------------------------------------
314QUIPHO 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
325QUIPH0 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
339FINGR 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
361FENPOP 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
378POPUP PSHS D
379 LEAS -2,S
380MAXH SET 0
381MAXL SET 1
382PA SET 2
383PB 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
401POPUP0 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
412POPUP1 STB PB,S
413
414 TST PA,S
415 BNE POPUP2 ->
416 INC PA,S
417POPUP2 TST PB,S
418 BNE POPUP3 ->
419 INC PB,S
420POPUP3 LEAS 2,S
421 PULS D,PC ->>
Note: See TracBrowser for help on using the repository browser.