OpenCores
URL https://opencores.org/ocsvn/eco32/eco32/trunk

Subversion Repositories eco32

[/] [eco32/] [tags/] [eco32-0.22/] [monitor/] [monitor/] [keyboard.s] - Blame information for rev 135

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 16 hellwig
;
2
; keyboard.s -- a PC keyboard as input device
3
;
4
 
5
;***************************************************************
6
 
7
        .set    kbdbase,0xF0200000      ; keyboard base address
8
 
9
;       .import cout
10
;       .import byteout
11
 
12
        .import xltbl1                  ; kbd translation table 1
13
        .import xltbl2                  ; kbd translation table 2
14
 
15
        .export kbdinit                 ; initialize keyboard
16
        .export kbdinchk                ; check if input available
17
        .export kbdin                   ; do keyboard input
18
 
19
;***************************************************************
20
 
21
        .code
22
        .align  4
23
 
24
kbdinit:
25
        jr      $31
26
 
27
kbdinchk:
28
        add     $8,$0,kbdbase
29
        ldw     $2,$8,0
30
        and     $2,$2,1
31
        jr      $31
32
 
33
kbdin:
34
        sub     $29,$29,12
35
        stw     $31,$29,8
36
        stw     $16,$29,4
37
        stw     $17,$29,0
38
kbdin0:
39
        jal     kbdinp
40
        add     $16,$2,$0                ; key1 in $16
41
        add     $8,$0,0xF0
42
        bne     $16,$8,kbdin2
43
kbdin1:
44
        jal     kbdinp
45
        j       kbdin0
46
kbdin2:
47
        jal     kbdinp
48
        add     $17,$2,$0                ; key2 in $17
49
        beq     $17,$16,kbdin2
50
        add     $8,$0,0xF0
51
        beq     $17,$8,kbdin3
52
        j       kbdin5
53
kbdin3:
54
        jal     kbdinp
55
        bne     $2,$16,kbdin2
56
kbdin4:
57
        add     $4,$16,$0
58
        add     $5,$0,xltbl1
59
        jal     xlat
60
        j       kbdx
61
kbdin5:
62
        jal     kbdinp
63
        add     $8,$0,0xF0
64
        bne     $2,$8,kbdin5
65
kbdin6:
66
        jal     kbdinp
67
        beq     $2,$16,kbdin7
68
        beq     $2,$17,kbdin9
69
        j       kbdin5
70
kbdin7:
71
        jal     kbdinp
72
        add     $8,$0,0xF0
73
        bne     $2,$8,kbdin7
74
kbdin8:
75
        jal     kbdinp
76
        bne     $2,$17,kbdin7
77
        j       kbdin11
78
kbdin9:
79
        jal     kbdinp
80
        add     $8,$0,0xF0
81
        bne     $2,$8,kbdin9
82
kbdin10:
83
        jal     kbdinp
84
        bne     $2,$16,kbdin9
85
        j       kbdin11
86
kbdin11:
87
        add     $8,$0,0x12               ; left shift key
88
        beq     $16,$8,kbdin12
89
        add     $8,$0,0x59               ; right shift key
90
        bne     $16,$8,kbdin13
91
kbdin12:
92
        add     $4,$17,$0
93
        add     $5,$0,xltbl2
94
        jal     xlat
95
        j       kbdx
96
kbdin13:
97
        add     $4,$16,$0
98
        add     $5,$0,xltbl1
99
        jal     xlat
100
        j       kbdx
101
kbdx:
102
        ldw     $17,$29,0
103
        ldw     $16,$29,4
104
        ldw     $31,$29,8
105
        add     $29,$29,12
106
        jr      $31
107
 
108
kbdinp:
109
        add     $8,$0,kbdbase
110
kbdinp1:
111
        ldw     $9,$8,0
112
        and     $9,$9,1
113
        beq     $9,$0,kbdinp1
114
        ldw     $2,$8,4
115
        add     $9,$0,0xE0
116
        beq     $2,$9,kbdinp1
117
        add     $9,$0,0xE1
118
        beq     $2,$9,kbdinp1
119
        jr      $31
120
 
121
xlat:
122
        sub     $29,$29,8
123
        stw     $31,$29,4
124
        stw     $16,$29,0
125
        and     $16,$4,0xFF
126
        add     $8,$16,$5
127
        ldbu    $2,$8,0
128
        bne     $2,$0,xlat1
129
;       add     $4,$0,'<'
130
;       jal     cout
131
;       add     $4,$16,$0
132
;       jal     byteout
133
;       add     $4,$0,'>'
134
;       jal     cout
135
        add     $2,$16,$0
136
xlat1:
137
        ldw     $16,$29,0
138
        ldw     $31,$29,4
139
        add     $29,$29,8
140
        jr      $31

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.