Skip to content

Instantly share code, notes, and snippets.

@hashmal
Created April 11, 2012 16:41
Show Gist options
  • Save hashmal/2360441 to your computer and use it in GitHub Desktop.
Save hashmal/2360441 to your computer and use it in GitHub Desktop.
Convert key codes to ASCII characters
;set z, 0x9010
set z, 0x8000
:loop
jsr raw_key
ife x, 0
set pc, loop
ife x, 0x8
set pc, onkey_del
jsr code2ascii
set [z], x
ifn x, 0x10
set pc, advance_buffer
set pc, loop
:code2ascii
set a, x
add a, KEYCODES
set x, [a]
ife [z], 0x10
set PC, code2ascii_maj
shl x, 8
shr x, 8
set PC, pop
:code2ascii_maj
shr x, 8
set pc, pop
:advance_buffer
add z, 1
set [z], 0
set pc, loop
:onkey_del
ifn [z], 0x10
sub z, 1
set [z], 0
set pc, loop
:raw_key
set a, [keypointer]
add a, 0x9000
set x, [a]
ife x, 0
set pc, raw_key_end
set [a], 0
add [keypointer], 1
and [keypointer], 0xf
:raw_key_end
set pc, pop
:keypointer
dat 0
:KEYCODES
dat 0 ;00
dat 0 ;01 LEFT
dat 0 ;02 RIGHT
dat 0 ;03 UP
dat 0 ;04 DOWN
dat 0 ;05
dat 0 ;06
dat 0 ;07
dat 0 ;08
dat 0 ;09 TAB
dat 0x000a ;0a RETURN
dat 0 ;0b
dat 0 ;0c
dat 0 ;0d
dat 0 ;0e
dat 0 ;0f
dat 0x0010 ;10 SHIFT
dat 0 ;11 CTRL L
dat 0 ;12 ALT
dat 0 ;13
dat 0 ;14 CAPS LOCK
dat 0 ;15
dat 0 ;16
dat 0 ;17
dat 0 ;18
dat 0 ;19
dat 0 ;1a
dat 0 ;1b
dat 0 ;1c
dat 0 ;1d
dat 0 ;1e
dat 0 ;1f
dat 0x0020 ;20 SPACE
dat 0 ;21
dat 0 ;22
dat 0 ;23
dat 0 ;24
dat 0 ;25
dat 0 ;26
dat 0 ;27
dat 0 ;28
dat 0 ;29
dat 0 ;2a
dat 0 ;2b
dat 0 ;2c
dat 0 ;2d
dat 0 ;2e
dat 0 ;2f
dat 0x2930 ;30 0
dat 0x2131 ;31 1
dat 0x4032 ;32 2
dat 0x2333 ;33 3
dat 0x2434 ;34 4
dat 0x2535 ;35 5
dat 0x5e36 ;36 6
dat 0x2637 ;37 7
dat 0x2a38 ;38 8
dat 0x2839 ;39 9
dat 0 ;3a
dat 0 ;3b
dat 0 ;3c
dat 0 ;3d
dat 0 ;3e
dat 0 ;3f
dat 0 ;40
dat 0x4161 ;41 A
dat 0x4262 ;42 B
dat 0x4363 ;43 C
dat 0x4464 ;44 D
dat 0x4565 ;45 E
dat 0x4666 ;46 F
dat 0x4767 ;47 G
dat 0x4868 ;48 H
dat 0x4969 ;49 I
dat 0x4a6a ;4a J
dat 0x4b6b ;4b K
dat 0x4c6c ;4c L
dat 0x4d6d ;4d M
dat 0x4e6e ;4e N
dat 0x4f6f ;4f O
dat 0x5070 ;50 P
dat 0x5171 ;51 Q
dat 0x5272 ;52 R
dat 0x5373 ;53 S
dat 0x5474 ;54 T
dat 0x5575 ;55 U
dat 0x5676 ;56 V
dat 0x5777 ;57 W
dat 0x5878 ;58 X
dat 0x5979 ;59 Y
dat 0x5a7a ;5a Z
dat 0 ;5b CMD L
dat 0 ;5c
dat 0 ;5d CMD R
dat 0 ;5e
dat 0 ;5f
dat 0 ;60
dat 0 ;61
dat 0 ;62
dat 0 ;63
dat 0 ;64
dat 0 ;65
dat 0 ;66
dat 0 ;67
dat 0 ;68
dat 0 ;69
dat 0 ;6a
dat 0 ;6b
dat 0 ;6c
dat 0 ;6d
dat 0 ;6e
dat 0 ;6f
dat 0 ;70
dat 0 ;71
dat 0 ;72
dat 0 ;73
dat 0 ;74
dat 0 ;75
dat 0 ;76
dat 0 ;77
dat 0 ;78
dat 0 ;79
dat 0 ;7a
dat 0 ;7b
dat 0 ;7c
dat 0 ;7d
dat 0 ;7e
dat 0 ;7f
dat 0 ;80
dat 0 ;81
dat 0 ;82
dat 0 ;83
dat 0 ;84
dat 0 ;85
dat 0 ;86
dat 0 ;87
dat 0 ;88
dat 0 ;89
dat 0 ;8a
dat 0 ;8b
dat 0 ;8c
dat 0 ;8d
dat 0 ;8e
dat 0 ;8f
dat 0 ;90
dat 0 ;91
dat 0 ;92
dat 0 ;93
dat 0 ;94
dat 0 ;95
dat 0 ;96
dat 0 ;97
dat 0 ;98
dat 0 ;99
dat 0 ;9a
dat 0 ;9b
dat 0 ;9c
dat 0 ;9d
dat 0 ;9e
dat 0 ;9f
dat 0 ;a0
dat 0 ;a1
dat 0 ;a2
dat 0 ;a3
dat 0 ;a4
dat 0 ;a5
dat 0 ;a6
dat 0 ;a7
dat 0 ;a8
dat 0 ;a9
dat 0 ;aa
dat 0 ;ab
dat 0 ;ac
dat 0 ;ad
dat 0 ;ae
dat 0 ;af
dat 0 ;b0
dat 0 ;b1
dat 0 ;b2
dat 0 ;b3
dat 0 ;b4
dat 0 ;b5
dat 0 ;b6
dat 0 ;b7
dat 0 ;b8
dat 0 ;b9
dat 0x3a3b ;ba ;
dat 0x2b3d ;bb =
dat 0x3c2c ;bc ,
dat 0x5f2d ;bd -
dat 0x3e2e ;be .
dat 0x3f2f ;bf /
dat 0x7e60 ;c0 `
dat 0 ;c1
dat 0 ;c2
dat 0 ;c3
dat 0 ;c4
dat 0 ;c5
dat 0 ;c6
dat 0 ;c7
dat 0 ;c8
dat 0 ;c9
dat 0 ;ca
dat 0 ;cb
dat 0 ;cc
dat 0 ;cd
dat 0 ;ce
dat 0 ;cf
dat 0 ;d0
dat 0 ;d1
dat 0 ;d2
dat 0 ;d3
dat 0 ;d4
dat 0 ;d5
dat 0 ;d6
dat 0 ;d7
dat 0 ;d8
dat 0 ;d9
dat 0 ;da
dat 0x7b5b ;db [
dat 0x7c5c ;dc \
dat 0x7d5d ;dd ]
dat 0x2227 ;de '
dat 0 ;df
dat 0 ;e0
dat 0 ;e1
dat 0 ;e2
dat 0 ;e3
dat 0 ;e4
dat 0 ;e5
dat 0 ;e6
dat 0 ;e7
dat 0 ;e8
dat 0 ;e9
dat 0 ;ea
dat 0 ;eb
dat 0 ;ec
dat 0 ;ed
dat 0 ;ee
dat 0 ;ef
dat 0 ;f0
dat 0 ;f1
dat 0 ;f2
dat 0 ;f3
dat 0 ;f4
dat 0 ;f5
dat 0 ;f6
dat 0 ;f7
dat 0 ;f8
dat 0 ;f9
dat 0 ;fa
dat 0 ;fb
dat 0 ;fc
dat 0 ;fd
dat 0 ;fe
dat 0 ;ff
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment