/[projet1]/users/coco/origa/main.c
Defence Force logotype

Contents of /users/coco/origa/main.c

Parent Directory Parent Directory | Revision Log Revision Log


Revision 719 - (show annotations)
Fri Nov 4 21:49:17 2011 UTC (8 years, 6 months ago) by coco
File MIME type: text/plain
File size: 5758 byte(s)


1 //
2 // TOWER OF ORIGA
3 // Programmation : 25/07/2011 > xx/08/2011
4 // Programme principal
5 //
6
7 //#define Oric 1
8 //#define Debug 1
9
10 #include <origa.h>
11 //#include <stdio.h>
12
13 // --------------------------------------------------------------
14 // Variables et fonctions de ROUT_DIVERS.S
15
16 extern unsigned char Random ;
17 void InitRandomize();
18 void GetRandomize(); // Retourne en A et Random (2 octets) la valeur
19
20 // --------------------------------------------------------------
21 // Variables et fonctions de ROUT_KEYBOARD.S
22
23 /**********************************************/
24 /* Example program for reading the Oric's */
25 /* keyboard. All keys are scanned and a */
26 /* virtual matrix of 8 bytes is updated at */
27 /* each IRQ. */
28 /* */
29 /* Idea: Dbug */
30 /* Main code: Twiligthe */
31 /* Adaptation & final implementation: Chema */
32 /* */
33 /* 2010 */
34 /**********************************************/
35 /* Virtual keyboard matrix */
36 /* Organized as follows: */
37 /* byte is row number (selected through AY) */
38 /* bit in byte indicates the row (selected */
39 /* through the VIA port B) numbered 76543210 */
40 /* For mapping actual keys see: */
41 /* http://wiki.defence-force.org/doku.php?id=oric:hardware:oric_keyboard */
42
43 extern char KeyBank[8];
44 extern char tmpTime; /* Compteur de 1/25e de seconde */
45 extern void InitISR(); /* Initialization of ISR */
46 void dump_matrix(); /* Function to dump the matrix into screen */
47 extern char ReadKey();
48 extern char ReadKeyNoBounce();
49 extern char oldKey ;
50
51 // --------------------------------------------------------------
52 // Variables et fonctions en mode text ROUT_TEXT.S
53
54 void TextPlot(char x_pos,char y_pos,const char *ptr_message); // Affiche une chaine de caracteres
55 void TextClear(); // Efface la page écran TEXT
56 void CharCopyText(); // Recopie le jeu de caracteres en mode TEXT
57 void CharCopyHires(); // Recopie le jeu de caracteres en mode HIRES
58 void HiresLocal();
59 void TextLocal();
60
61 // --------------------------------------------------------------
62 //Variables et fonctions en mode haute resolution ROUT_HIRES.S
63
64 void HiresClear(); // Efface la page graphique
65 void HiresClearText(); // Efface les 3 lignes de texte de la page graphique
66 void ScreenCopyHires(); // Transfere à l'écran une zone graphique
67
68 // --------------------------------------------------------------
69 //Variables et fonctions en mode haute resolution ROUT_HIRES.S
70
71 void HiresClear(); // Efface la page graphique
72 void HiresClearText(); // Efface les 3 lignes de texte de la page graphique
73 void FlipToScreen();
74
75 // --------------------------------------------------------------
76 // Declaration des fonctions C
77
78
79
80 // --------------------------------------------------------------
81 // Fonctions intégrées au programme
82 //
83
84 /* Routine to dump the matrix into screen */
85 void dump_matrix()
86 {
87 char * start;
88 char i,j;
89 char mask=1;
90
91 start=(char *)(0xbfe0-350);
92 for (j=0;j<8;j++)
93 {
94 for(i=0;i<8;i++)
95 {
96 *start = (KeyBank[j] & mask ? '1' : '0');
97 start--;
98 mask=mask<<1;
99 }
100
101 mask=1;
102 start+=(48);
103 }
104 }
105
106 // --------------------------------------------------------
107 // Attente de touche fonction, retourne le code de la touche
108 unsigned char get_functionkey() // demande un clavier non presse, retourne une touche
109 {
110 unsigned char iii=0;
111 while (peek(0x209)!=0x38)
112 {
113 iii=peek(0x209);
114 }
115 do
116 {
117 iii=peek(0x209);
118 }
119 while (iii==0x38);
120 return iii;
121 }
122
123 /*
124 Programme principal
125 */
126
127 void main()
128 {
129 // Variables
130 unsigned char alea=0;
131 unsigned char iii=0;
132 unsigned char touche=0;
133
134 // Programme
135
136 InitISR(); // Initialisation du clavier
137 CharCopyText(); // MAJ du jeu de caracteres
138 InitRandomize(); // Initialisation du générateur de nombres aléatoires
139 alea=peek(&Random+1); // Initialisation des nombres aleatoires
140
141 TextClear(); // Effacer l'ecran text en noir, encre non définie
142
143 TextPlot (10,01,"\4Tower of Origa V0.00");
144 TextPlot (01,04,"\6Origa vous souhaite la bienvenue !");
145 TextPlot (01,06,"\6Le monde ne sera bientot plus car");
146 TextPlot (01,07,"\6avec mon mariage avec Ki, et la");
147 TextPlot (01,8,"\6reunification des royaumes des");
148 TextPlot (01,9,"\6tenebres la legende sera enfin");
149 TextPlot (01,10,"\6realisee et mon regne durera a jamais");
150 TextPlot (05,18,"\3----------------------------");
151 TextPlot (05,19,"\3Pressez SHIFT pour continuer");
152 TextPlot (05,20,"\3----------------------------");
153 TextPlot (06,26,"\6 (c) 2011 DMA CONCEPT");
154
155 do
156 {
157 touche=ReadKeyNoBounce();
158 }
159 while (touche!=7 && touche!=8) ;
160
161 TextClear();
162 HiresLocal();
163 CharCopyHires();
164 ScreenCopyHires();
165
166 do
167 {
168 touche=ReadKeyNoBounce();
169 }
170 while (touche!=7 && touche!=8) ;
171
172 HiresClear();
173 CharCopyHires();
174 TextPlot (5,25,"\6Tower of Origa V0.00");
175
176 /*
177 // demande de la saisie de la touche LSHIFT ou RSHIFT
178 do
179 {
180 touche = get_functionkey();
181 }
182 while(touche!=164 && touche!=167);
183 */
184
185 do
186 {
187 touche=ReadKeyNoBounce();
188 }
189 while (touche!=7 && touche!=8) ;
190 TextLocal();
191 CharCopyText();
192 TextClear();
193 TextPlot (10,01,"\4Tower of Origa V0.00");
194
195 do
196 {
197 touche=ReadKeyNoBounce();
198 }
199 while (touche!=7 && touche!=8) ;
200
201 }

  ViewVC Help
Powered by ViewVC 1.1.26