Subversion Repositories MB01 Project

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
1 - 1
 
2
	;NOLIST
3
 
4
 
5
RomTbl		code_pack
6
; Fill
7
	dw		0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000
8
 
9
; mappa codici ASCII tastiera USA
10
USTBL:
11
	DB		"`", "~"
12
	DB		"1", "!"
13
	DB		"2", "@"
14
	DB		"4", "$"
15
	DB		"3", "#"
16
	DB		"5", "%"
17
	DB		"6", "^"
18
	DB		"7", "&"
19
	DB		"8", "*"
20
	DB		",", "<"
21
	DB		"0", ")"
22
	DB		"9", "("
23
	DB		".", ">"
24
	DB		"/", "?"
25
	DB		";", ":"
26
	DB		"-", "_"
27
	DB		"'", "\""
28
	DB		"[", "{"
29
	DB		"=", "+"
30
	DB		"]", "}"
31
	DB		"\\", "|"
32
 
33
; tabella tasti speciali SHIFT, ALT, CTRL, CTRL+ALT
34
SPCKEY2:
35
	DB		KB_SHIFTPRT, 	KB_ALTPRT,		KB_CTLPRT,		KB_ALTCTLPRT
36
	DB		KB_SHIFTHOME, 	KB_ALTHOME, 	KB_CTLHOME, 	KB_ALTCTLHOME
37
	DB		KB_SHIFTINS, 	KB_ALTINS,		KB_CTLINS,		KB_ALTCTLINS
38
	DB		KB_SHIFTPGUP, 	KB_ALTPGUP,		KB_CTLPGUP,		KB_ALTCTLPGUP
39
	DB		KB_SHIFTPGDWN, 	KB_ALTPGDWN,	KB_CTLPGDWN,	KB_ALTCTLPGDWN
40
	DB		KB_SHIFTEND, 	KB_ALTEND,		KB_CTLEND,		KB_ALTCTLEND
41
	DB		KB_SHIFTDEL, 	KB_ALTDEL,		KB_CTLDEL,		KB_ALTCTLDEL
42
	DB		KB_SHIFTBKS, 	KB_ALTBKS,		KB_CTLBKS,		KB_ALTCTLBKS
43
	DB		0x00,			KB_ALTESC,		KB_CTLESC,		KB_ALTCTLESC
44
	DB		0x00,			KB_ALTTAB,		KB_CTLTAB,		KB_ALTCTLTAB
45
	DB		0x00,			KB_ALTPLUS,		KB_CTLPLUS,		KB_ALTCTLPLUS
46
	DB		0x00,			KB_ALTMINUS,	KB_CTLMINUS,	KB_ALTCTLMINUS
47
 
48
; tabella flag tasti speciali SHIFT, ALT, CTRL, CTRL+ALT
49
SPCKEY3:
50
	DB		0xA0, 0xA0, 0xA0, 0xA0
51
	DB		0xA0, 0xA0, 0xA0, 0xA0
52
	DB		0xA0, 0xA0, 0xA0, 0xA0
53
	DB		0xA0, 0xA0, 0xA0, 0xA0
54
	DB		0xA0, 0xA0, 0xA0, 0xA0
55
	DB		0xA0, 0xA0, 0xA0, 0xC0
56
	DB		0xA0, 0xA0, 0xA0, 0xC0
57
	DB		0xA0, 0xA0, 0xA0, 0xC0
58
	DB		0xA0, 0xA0, 0xA0, 0xC0
59
	DB		0xA0, 0xA0, 0xA0, 0xA0
60
	DB		0xA0, 0xA0, 0xA0, 0xA0
61
	DB		0xA0, 0xA0, 0xA0, 0xA0
62
 
63
; tabella tasti speciali
64
SPCKEY:
65
	DB		KB_PRTSCN
66
	DB		KB_HOME
67
	DB		KB_INSERT
68
	DB		KB_PGUP
69
	DB		KB_PGDOWN
70
	DB		KB_END
71
	DB		KB_DELETE
72
	DB		KB_BACKSPACE
73
	DB		KB_ESCAPE
74
	DB		KB_TAB
75
	DB		'+'
76
	DB		'-'
77
	DB		0xFF
78
 
79
; SEQUENZA E0 12 E0 7C 					PRTSCR DOWN  (SIMULA SHIFT *)
80
; SEQUENZA E0 F0 7C E0 F0 12 			PRTSCR UP
81
; SEQUENXA E1 14 77 E1 F0 14 F0 77     PAUSE (SIMULA L-CTRL NUMLOCK)
82
; E1 indica tasti no-repeat
83
 
84
; PRIORITA' MODIFICATORI: ALT	CTRL	SHIFT	CAPS/NUMLOCK
85
 
86
; Tabella codici prefissati da E1 - Tasto PAUSE (solo make)
87
; scan code: E1 14 77 E1 F0 14 F0 77 - di seguito la sequenza aspettata
88
EXT1TBL:
89
	db		0x14, 0x77, 0xE1, 0xF0, 0x14, 0xF0, 0x77
90
 
91
; Tabella codici estesi (prefisso E0)
92
; NOTA: codice make  PRNT -> E0 12 E0 7C (simula SHIFT *)
93
;       codice break PRNT -> E0 F0 7C E0 F0 12
94
; Tutte le sequenze E0 12 / E0 F0 12 / E0 59 / E0 F0 59
95
; vengono scartate
96
; Per la combinazione CTRL BREAK (E0 7E E0 F0 7E) viene analizzata
97
; solo la parte che simula il rilascio (E0 F0 7E)
98
EXTTBL:
99
	DB		0x7C		; PRNT			RILOCATO $00
100
	DB		0x11		; R-ALT			RILOCATO $10
101
	DB		0x14		; R-CTRL		RILOCATO $0F
102
	DB		0x70		; INS			RILOCATO $13
103
	DB		0x71		; DEL			RILOCATO $08
104
	DB		0x6C		; HOME			RILOCATO $17
105
	DB		0x69		; END			RILOCATO $18
106
	DB		0x7A		; PG-DOWN		RILOCATO $19
107
	DB		0x7D		; PG-UP			RILOCATO $20
108
	DB		0x75		; CSR-UP		RILOCATO $28
109
	DB		0x6B		; CSR-LEFT		RILOCATO $30
110
	DB		0x72		; CSR-DOWN		RILOCATO $38
111
	DB		0x74		; CSR-RIGHT		RILOCATO $39
112
	DB		0x5A		; KP-ENTER		RILOCATO $5A
113
	DB		0x4A		; KP /			RILOCATO $5F
114
	DB		0x1F		; L=GUI			RILOCATO $1F
115
	DB		0x27		; R-GUI			RILOCATO $27
116
	DB		0x2F		; APPS			RILOCATO $2F
117
	DB		0x37		; PWR			RILOCATO $37
118
	DB		0x3F		; SLEEP			RILOCATO $3F
119
	DB		0x5E		; WAKE			RILOCATO $5E
120
	DB		0x7E		; CTRL-BREAK	RILOCATO $48
121
	DB		0xFF		; FINE TABELLA
122
 
123
; Tabella rilocazione codici estesi (prefisso E0)
124
EXTRLTBL:
125
	DB		0x00		; PRNT			RILOCATO $00
126
	DB		0x10		; R-ALT			RILOCATO $10
127
	DB		0x0F		; R-CTRL		RILOCATO $0F
128
	DB		0x13		; INS			RILOCATO $13
129
	DB		0x08		; DEL			RILOCATO $08
130
	DB		0x17		; HOME			RILOCATO $17
131
	DB		0x18		; END			RILOCATO $18
132
	DB		0x19		; PG-DOWN		RILOCATO $19
133
	DB		0x20		; PG-UP			RILOCATO $20
134
	DB		0x28		; CSR-UP		RILOCATO $28
135
	DB		0x30		; CSR-LEFT		RILOCATO $30
136
	DB		0x38		; CSR-DOWN		RILOCATO $38
137
	DB		0x39		; CSR-RIGHT		RILOCATO $39
138
	DB		0x5A		; KP-ENTER		RILOCATO $5A
139
	DB		0x5F		; KP /			RILOCATO $5F
140
	DB		0x1F		; L=GUI			RILOCATO $1F
141
	DB		0x27		; R-GUI			RILOCATO $27
142
	DB		0x2F		; APPS			RILOCATO $2F
143
	DB		0x37		; PWR			RILOCATO $37
144
	DB		0x3F		; SLEEP			RILOCATO $3F
145
	DB		0x5E		; WAKE			RILOCATO $5E
146
	DB		0x48		; CTRL-BREAK	RILOCATO $48
147
 
148
; Codici normali da rilocare
149
; I codici da 70 a 7E vanno rilocati in 60 - 6E
150
DEFTBL:
151
	DB		0x83		; F7			RILOCATO $02
152
	DB		0x84		; ALT SYSREQ	RILOCATO $40
153
	DB		0x66		; BACKSPACE		RILOCATO $47
154
	DB		0x69		; KP 1			RILOCATO $4F
155
	DB		0x6B		; KP 4			RILOCATO $50
156
	DB		0x6C		; KP 7			RILOCATO $51
157
	DB		0x61		; IT <>			RILOCATO $53 (TASTO 45)
158
	DB		0xFF		; FINE TABELLA
159
 
160
; Tabella rilocazione codici normali
161
DEFRLTBL:
162
	DB		0x02		; F7			RILOCATO $02
163
	DB		0x40		; ALT SYSREQ	RILOCATO $40
164
	DB		0x47		; BACKSPACE		RILOCATO $47
165
	DB		0x4F		; KP 1			RILOCATO $4F
166
	DB		0x50		; KP 4			RILOCATO $50
167
	DB		0x51		; KP 7			RILOCATO $51
168
	DB		0x53		; IT <>			RILOCATO $53
169
 
170
; seconda tabella di conversione (da codice scansione rilocato a semi ASCII)
171
; indice accesso da 00 a 6E
172
; la tabella ritorna un codice tra 00 e 7A esclusi 0B, 0F e range 57..60
173
; i codici relativi alle lettere a..z vengono restituiti come 'a'..'z'
174
; i codici 42..56 sono quelli da distinguere tra mappa US e mappa IT
175
; i valori 0xFF indicano codice non valido
176
CVTTBL
177
	DB		PRTCODE		; 00 *PRNT
178
	DB		0x3E		; 01 F9
179
	DB		0x3C		; 02 *F7
180
	DB		0x3A		; 03 F5
181
	DB		0x38		; 04 F3
182
	DB		FNCCODE		; 05 F1
183
	DB		0x37		; 06 F2
184
	DB		0x41		; 07 F12
185
	DB		0x35		; 08 *DEL
186
	DB		0x3F		; 09 F10
187
	DB		0x3D		; 0A F8
188
	DB		0x3B		; 0B F6
189
	DB		0x39		; 0C F4
190
	DB		0x0E		; 0D TAB
191
	DB		0x42		; 0E `~		IT \|
192
	DB		0x04		; 0F *R-CTRL
193
	DB		0x05		; 10 *R-ALT
194
	DB		0x02		; 11 L- ALT
195
	DB		0x00		; 12 L-SHIFT
196
	DB		INSCODE		; 13 *INS
197
	DB		0x01		; 14 L-CTRL
198
	DB		'q'			; 15 qQ
199
	DB		0x43		; 16 1!		IT 1!
200
	DB		0x32		; 17 *HOME
201
	DB		0x2C		; 18 *END
202
	DB		0x2E		; 19 *PG-DOWN
203
	DB		'z'			; 1A zZ
204
	DB		's'			; 1B sS
205
	DB		'a'			; 1C aA
206
	DB		'w'			; 1D wW
207
	DB		0x44		; 1E 2@		IT 2"
208
	DB		0x1C		; 1F *L-GUI
209
	DB		0x34		; 20 *PG-UP
210
	DB		'c'			; 21 cC
211
	DB		'x'			; 22 xX
212
	DB		'd'			; 23 dD
213
	DB		'e'			; 24 eE
214
	DB		0x45		; 25 4$		IT 4$
215
	DB		0x46		; 26 3#		IT 3 LIRA
216
	DB		0x1B		; 27 *R-GUI
217
	DB		0x33		; 28 *CSR-UP
218
	DB		0x14		; 29 SPACE
219
	DB		'v'			; 2A vV
220
	DB		'f'			; 2B fF
221
	DB		't'			; 2C tT
222
	DB		'r'			; 2D rR
223
	DB		0x47		; 2E 5%		IT 5% (EURO)
224
	DB		0x1D		; 2F *APPS
225
	DB		0x2F		; 30 *CSR-LEFT
226
	DB		'n'			; 31 nN
227
	DB		'b'			; 32 bB
228
	DB		'h'			; 33 hH
229
	DB		'g'			; 34 gG
230
	DB		'y'			; 35 yY
231
	DB		0x48		; 36 6^		IT 6&
232
	DB		0x1A		; 37 *PWR
233
	DB		0x2D		; 38 *CSR-DOWN
234
	DB		0x31		; 39 *CSR-RIGHT
235
	DB		'm'			; 3A mM
236
	DB		'j'			; 3B jJ
237
	DB		'u'			; 3C uU
238
	DB		0x49		; 3D 7&		IT 7/
239
	DB		0x4A		; 3E 8*		IT 8(
240
	DB		0x19		; 3F *SLEEP
241
	DB		SYSCODE		; 40 *ALT SYSREQ
242
	DB		0x4B		; 41 ,<		IT ,:
243
	DB		'k'			; 42 kK
244
	DB		'i'			; 43 iI
245
	DB		'o'			; 44 oO
246
	DB		0x4C		; 45 0)		IT 0=
247
	DB		0x4D		; 46 9(		IT 9)
248
	DB		0x15		; 47 *BACKSPACE
249
	DB		CBRKCODE	; 48 *CTRL-BREAK
250
	DB		0x4E		; 49 .>		IT .:
251
	DB		0x4F		; 4A /?		IT -_
252
	DB		'l'			; 4B lL
253
	DB		0x50		; 4C ;:		IT oc@
254
	DB		'p'			; 4D pP
255
	DB		0x51		; 4E -_		IT '?
256
	DB		0x21		; 4F *KP 1
257
	DB		0x24		; 50 *KP 4
258
	DB		0x27		; 51 *KP 7
259
	DB		0x52		; 52 '"		IT ao#
260
	DB		0x0C		; 53 *IT <>
261
	DB		0x53		; 54 [{		IT ee[{
262
	DB		0x54		; 55 =+		IT i^
263
	DB		0xFF		; 56
264
	DB		0xFF		; 57
265
	DB		CAPSCODE	; 58 CAPS LOCK
266
	DB		0x03		; 59 R-SHIFT
267
	DB		CRCODE		; 5A ENTER <*KP ENTER>
268
	DB		0x55		; 5B ]}		IT +*]}
269
	DB		0xFF		; 5C
270
	DB		0x56		; 5D \|		IT paragrafo u
271
	DB		0x18		; 5E *WAKE
272
	DB		KPBARCODE	; 5F *<KP />
273
	DB		KP0CODE		; 60 *KP 0
274
	DB		0x2A		; 61 *KP .
275
	DB		0x22		; 62 *KP 2
276
	DB		0x25		; 63 *KP 5
277
	DB		0x26		; 64 *KP 6
278
	DB		0x28		; 65 *KP 8
279
	DB		ESCCODE		; 66 *ESC
280
	DB		0x07		; 67 *NUM-LOCK
281
	DB		0x40		; 68 *F11
282
	DB		0x11		; 69 *KP +
283
	DB		0x23		; 6A *KP 3
284
	DB		0x12		; 6B *KP -
285
	DB		0x13		; 6C *KP *
286
	DB		0x29		; 6D *KP 9
287
	DB		0x08		; 6E *SCROLL-LOCK
288
	DB		0xFF
289
 
290
; tabella flag RptSt per tasti NO REPEAT
291
RPTTBL:
292
	DB		WAKEM		; WAKE UP
293
	DB		SLEEPM		; SLEEP
294
	DB		PWRM		; POWER
295
	DB		RGUIM		; R-GUI
296
	DB		LGUIM		; L-GUI
297
	DB		GUIAPPM		; GUI APP
298
	DB		PRINTM		; PRINT SCRN
299
	DB		ESCAPEM		; ESC
300
 
301
; tabella conversione codici restituiti da CVTTBL a tasti effettivi
302
KEYTBL:
303
; questi indici impostano i flag di CtlSt e ShfSt
304
; rispecchiano lo stato di pressione/rilascio tasti SHIFT,ALT e CTRL
305
	DB		LSHFM			; 00 L-SHIFT
306
	DB		LCTLM			; 01 L-CTRL
307
	DB		LALTM			; 02 L-ALT
308
	DB		RSHFM			; 03 R-SHIFT
309
	DB		RCTLM			; 04 R-CTRL
310
	DB		RALTM			; 05 R-ALT
311
 
312
; questi indici impostano i flag di TglSt
313
; rispecchiano lo stato dei tasti CAPS-LOCK/NUM-LOCK/SCROLL-LOCK/PAUSE
314
; NOTA: PAUSE non ha codice di rilascio
315
	DB		CAPSM			; 06 CAPS-LOCK
316
	DB		NUMLM			; 07 NUM-LOCK
317
	DB		SCRLM			; 08 SCROLL-LOCK
318
; il tasto PAUSE va trattato come un tasto toggle
319
	DB		PAUSM			; 09 PAUSE
320
 
321
; i tasti seguenti vanno testati con lo shift
322
	DB		KB_CR			; 0A ENTER
323
	DB		KB_SHCR			; 0B SHIFT ENTER
324
	DB		'<'				; 0C IT <
325
	DB		'>'				; 0D SHIFT IT >
326
	DB		KB_TAB			; 0E TAB
327
	DB		KB_SHTAB		; 0F SHIFT TAB
328
 
329
; questi indici non vanno trattati eccetto ESC/PRINT SCRN
330
; per il tasto esc va impostato il flag premuto/rilasciato
331
	DB		'/'				; 10 KP /
332
	DB		'+'				; 11 KP +
333
	DB		'-'				; 12 KP -
334
	DB		'*'				; 13 KP *
335
	DB		' '				; 14 SPACE
336
	DB		KB_BACKSPACE	; 15 BACKSPACE
337
	DB		KB_CTRLBREAK	; 16 CTRL BREAK
338
	DB		KB_ALTSYSREQ	; 17 ALT SYS REQ
339
	DB		KB_WAKE			; 18 WAKE
340
	DB		KB_SLEEP		; 19 SLEEP
341
	DB		KB_PWR			; 1A PWR
342
	DB		KB_RIGHTGUI		; 1B R-GUI
343
	DB		KB_LEFTGUI		; 1C L-GUI
344
	DB		KB_GUIMENU		; 1D APPS/MENU
345
	DB		KB_PRTSCN		; 1E PRTSCN/SYSRQ
346
	DB		KB_ESCAPE		; 1F ESC
347
 
348
; tasti numerici vanno trattati specialmente
349
	DB		'0'				; 20 KP 0
350
	DB		'1'				; 21 KP 1
351
	DB		'2'				; 22 KP 2
352
	DB		'3'				; 23 KP 3
353
	DB		'4'				; 24 KP 4
354
	DB		'5'				; 25 KP 5
355
	DB		'6'				; 26 KP 6
356
	DB		'7'				; 27 KP 7
357
	DB		'8'				; 28 KP 8
358
	DB		'9'				; 29 KP 9
359
	DB		'.'				; 2A KP .
360
 
361
; tasti cursore: INSERT va trattato specialmente (toggle bit)
362
	DB		KB_INSERT		; 2B INS
363
	DB		KB_END			; 2C END
364
	DB		KB_CSRDOWN		; 2D CSR DOWN
365
	DB		KB_PGDOWN		; 2E PG DOWN
366
	DB		KB_CSRLEFT		; 2F CSR LEFT
367
	DB		0x00			; 30 - TASTO NULL
368
	DB		KB_CSRRIGHT		; 31 CSR RIGHT
369
	DB		KB_HOME			; 32 HOME
370
	DB		KB_CSRUP		; 33 CSR UP
371
	DB		KB_PGUP			; 34 PG UP
372
	DB		KB_DELETE		; 35 DEL
373
 
374
; tasti funzione
375
	DB		KB_F1			; 36 F1
376
	DB		KB_F2			; 37 F2
377
	DB		KB_F3			; 38 F3
378
	DB		KB_F4			; 39 F4
379
	DB		KB_F5			; 3A F5
380
	DB		KB_F6			; 3B F6
381
	DB		KB_F7			; 3C F7
382
	DB		KB_F8			; 3D F8
383
	DB		KB_F9			; 3E F9
384
	DB		KB_F10			; 3F F10
385
	DB		KB_F11			; 40 F11
386
	DB		KB_F12			; 41 F12
387
 
388
; tabella flag codice corrispondente a KEYTBL
389
; 0x00 -> codice ASCII
390
; 0x10 -> codice ASCII + flag toggle 4 bit low
391
; 0x80 -> invia status shift/alt/ctrl
392
; 0x90 -> invia status toggle
393
; 0xA0 -> codice di controllo
394
; 0xB0 -> codice di controllo + flag toggle 4 bit low
395
; 0xC0 -> codice tasto NMI
396
FLGTBL:
397
	; questi valori non sono usati - il tasto viene trattato a parte
398
	DB		0x80			; 00 L-SHIFT
399
	DB		0x80			; 01 L-CTRL
400
	DB		0x80			; 02 L-ALT
401
	DB		0x80			; 03 R-SHIFT
402
	DB		0x80			; 04 R-CTRL
403
	DB		0x80			; 05 R-ALT
404
	DB		0x90			; 06 CAPS-LOCK
405
	DB		0x90			; 07 NUM-LOCK
406
	DB		0x90			; 08 SCROLL-LOCK
407
	DB		0x90			; 09 PAUSE
408
	DB		0x00			; 0A ENTER
409
	DB		0xA0			; 0B SHIFT ENTER
410
	DB		0x00			; 0C IT <
411
	DB		0x00			; 0D SHIFT IT >
412
	DB		0x00			; 0E TAB
413
	DB		0xA0			; 0F SHIFT TAB
414
	DB		0x00			; 10 KP /
415
	DB		0x00			; 11 KP +
416
	DB		0x00			; 12 KP -
417
	DB		0x00			; 13 KP *
418
	DB		0x00			; 14 SPACE
419
	DB		0xA0			; 15 BACKSPACE
420
	DB		0xC0			; 16 CTRL BREAK
421
	DB		0xC0			; 17 ALT SYS REQ
422
	DB		0xC0			; 18 WAKE
423
	DB		0xC0			; 19 SLEEP
424
	DB		0xC0			; 1A PWR
425
	DB		0xA0			; 1B R-GUI
426
	DB		0xA0			; 1C L-GUI
427
	DB		0xA0			; 1D APPS/MENU
428
	DB		0xB0			; 1E PRTSCN/SYSRQ
429
	DB		0x10			; 1F ESC
430
	DB		0x00			; 20 KP 0
431
	DB		0x00			; 21 KP 1
432
	DB		0x00			; 22 KP 2
433
	DB		0x00			; 23 KP 3
434
	DB		0x00			; 24 KP 4
435
	DB		0x00			; 25 KP 5
436
	DB		0x00			; 26 KP 6
437
	DB		0x00			; 27 KP 7
438
	DB		0x00			; 28 KP 8
439
	DB		0x00			; 29 KP 9
440
	DB		0x00			; 2A KP .
441
	DB		0xB0			; 2B INS
442
	DB		0xA0			; 2C END
443
	DB		0xA0			; 2D CSR DOWN
444
	DB		0xA0			; 2E PG DOWN
445
	DB		0xA0			; 2F CSR LEFT
446
	DB		0xA0			; 30 - TASTO NULL
447
	DB		0xA0			; 31 CSR RIGHT
448
	DB		0xA0			; 32 HOME
449
	DB		0xA0			; 33 CSR UP
450
	DB		0xA0			; 34 PG UP
451
	DB		0xA0			; 35 DEL
452
	DB		0xA0			; 36 F1
453
	DB		0xA0			; 37 F2
454
	DB		0xA0			; 38 F3
455
	DB		0xA0			; 39 F4
456
	DB		0xA0			; 3A F5
457
	DB		0xA0			; 3B F6
458
	DB		0xA0			; 3C F7
459
	DB		0xA0			; 3D F8
460
	DB		0xA0			; 3E F9
461
	DB		0xA0			; 3F F10
462
	DB		0xA0			; 40 F11
463
	DB		0xA0			; 41 F12
464