/[projet1]/public/atari/tools/rembrandt/ACCESSOR/REMB_ACC.S
Defence Force logotype

Contents of /public/atari/tools/rembrandt/ACCESSOR/REMB_ACC.S

Parent Directory Parent Directory | Revision Log Revision Log


Revision 67 - (show annotations)
Sat Apr 25 18:10:46 2009 UTC (10 years, 7 months ago) by dbug
File size: 3275 byte(s)
Added Rembrandt and Forgotten Bits
1 ;
2 ; Un programme qui communique avec Rembrandt !!!
3 ;
4
5
6 opt o+,w-
7
8 include gemmacro.i
9
10 start move.l #mystack,a7 must have a stack!
11
12 appl_init
13 move.w d0,ap_id store the application id
14
15 menu_register ap_id,#nom_menu start by installing me in the Desk menu
16
17 * the main loop of the application
18 * the only interesting events are messages
19 waitforevent
20 evnt_mesag #messagebuf
21 move.l #messagebuf,a0
22 move.w (a0),d0 message type
23 cmp.w #40,d0
24 beq open_acc
25 cmp.w #$1234,d0
26 beq pipe_message_recu
27 * check others here
28 bra.s waitforevent
29
30
31 * here when I have to Open
32 open_acc
33 appl_find #nom_rembrandt
34 cmp #-1,d0
35 beq affiche_inactif
36 move d0,id_rembrandt
37
38 affiche_actif
39 *
40 * Invoque le fileselect
41 *
42 ; blalalalalalalbalal
43 *
44 * Pr‚pare la ligne de message
45 *
46 lea buffer,a0
47
48 move #$1234,(a0)+ $1234 -> Demande d'informations
49 move ap_id,(a0)+ Identificateur de l'accessoire
50 clr (a0)+ Longueur du message
51 move.l #'NeXT',(a0)+ Message d'identification
52 move.l #'Pipe',(a0)+
53 appl_write id_rembrandt,#16,#buffer
54 bra waitforevent
55
56 affiche_inactif
57 form_alert #1,#alerte_rembrandt_inactif
58 bra waitforevent
59
60
61
62
63 ***[PIPE]***
64 *
65 * a0->Pointe sur le message buffer.
66 *
67 * Si l'on re‡oit un message diff‚rent de celui-la, on signale une erreur.
68 *
69 * 1 +0 $1234 -> Demande d'infos
70 * 2 +2 -> Ap Id
71 * 3 +4 0 -> 16 octets
72 * 4/5 +6 'NeXT'
73 * 6/7 +10 'Pipe'
74 *
75 pipe_message_recu
76 lea buffer_message,a0
77 move 2(a0),id_acc M‚morise l'APP_ID de l'accessoire
78 addq #6,a0 Longueur du message (on s'en tape !)
79
80 cmp.l #'NeXT',(a0)+
81 bne .message_foireux
82 cmp.l #'Pipe',(a0)+
83 bne .message_foireux
84 move.l (a0)+,liste_routines
85
86 move #640,largeur_image On attribue par d‚faut une image 320x200
87 move #200,hauteur_image
88 bsr.l pr‚pare_buffer_image
89
90 rts
91
92 .message_foireux
93 form_alert #1,#alert_message_foireux
94 rts
95
96 liste_routines ds.l 1 Pointe sur les routines de Rembrandt
97 message_pipe ds.b 16
98 id_acc ds.w 1
99
100 rsreset
101 combien_m‚moire rs.l 1
102 r‚serve_bloc rs.l 1
103 libŠre_bloc rs.l 1
104 pr‚pare_buffer_image rs.l 1
105
106
107 alert_message_foireux
108 dc.b "[1][R‚ception d'un message|de type inconnu.][ECHEC]",0
109
110 alert_message_ok
111 dc.b "[1][R‚ception d'un message|compris.][Yeah !!!]",0
112
113 even
114
115
116
117
118 SECTION DATA
119
120 * all C strings must end in a null
121 nom_menu dc.b ' Rembrandt-pipe !!!',0
122
123 nom_rembrandt dc.b "REMBRAND",0
124
125 alerte_envoie dc.b "[1][J'envoie la sauce !!!][ OK ]",0
126 alerte_termine dc.b "[1][C'est fait...][ OK ]",0
127
128 alerte_recoie dc.b "[1][J'ai la r‚ponse ???][ OK ]",0
129
130 alerte_rembrandt_inactif dc.b '[1][Rembrandt est inactif][ OK ]',0
131
132 even
133 image incbin 'test.tg1'
134
135 * global constants
136 SECTION BSS
137
138 ap_id ds.w 1
139 id_rembrandt ds.w 1
140 messagebuf ds.b 16
141 buffer ds.b 16
142
143 ds.l 100 stack space
144 mystack ds.w 1 (stacks go backwards)
145
146
147 * if not linking then include the run-times
148
149 IFEQ __LK
150 include aeslib.s
151 ENDC
152
153 END
154
155 Structure d'un message:
156
157 1) +0 Type de message
158 2) +2 APP_ID de l'application qui envoie le message (Si '1', c'est le Screen Manager)
159 3) +4 Taille du message en octets -16. (Si '0', c'est que le message fait 16 octets au maximum)
160 ~~~
161 4) +6 Selon l'application
162 5) +8
163 6) +10
164 7) +12
165 8) +14

  ViewVC Help
Powered by ViewVC 1.1.26