1
0
mirror of https://gitlab.com/camelot/kickc.git synced 2024-12-20 23:30:43 +00:00

Added keyboard space check test program.

This commit is contained in:
Jesper Gravgaard 2018-03-20 00:52:55 +01:00
parent b796a248c0
commit cfd0e836ce
6 changed files with 1976 additions and 0 deletions

View File

@ -45,6 +45,11 @@ public class TestPrograms {
AsmFragmentTemplateUsages.logUsages(log, false, false, false, false, false, false);
}
@Test
public void testKeyboardSpace() throws IOException, URISyntaxException {
compileAndCompare("test-keyboard-space");
}
@Test
public void testKeyboard() throws IOException, URISyntaxException {
compileAndCompare("test-keyboard");

View File

@ -0,0 +1,14 @@
// Test keyboard input - test the space bar
import "keyboard.kc"
void main() {
keyboard_init();
while(true) {
do {} while (*RASTER!=$ff);
if(keyboard_key_pressed(KEY_SPACE)!=0) {
*BGCOL = GREEN;
} else {
*BGCOL = BLUE;
}
}
}

View File

@ -0,0 +1,52 @@
.pc = $801 "Basic"
:BasicUpstart(main)
.pc = $80d "Program"
.label RASTER = $d012
.label BGCOL = $d021
.label CIA1_PORT_A = $dc00
.label CIA1_PORT_B = $dc01
.label CIA1_PORT_A_DDR = $dc02
.label CIA1_PORT_B_DDR = $dc03
.const GREEN = 5
.const BLUE = 6
.const KEY_SPACE = $3c
jsr main
main: {
jsr keyboard_init
b4:
lda RASTER
cmp #$ff
bne b4
jsr keyboard_key_pressed
cmp #0
beq b5
lda #GREEN
sta BGCOL
jmp b4
b5:
lda #BLUE
sta BGCOL
jmp b4
}
keyboard_key_pressed: {
jsr keyboard_matrix_read
and keyboard_matrix_col_bitmask+(KEY_SPACE&7)
rts
}
keyboard_matrix_read: {
.const rowid = KEY_SPACE>>3
lda keyboard_matrix_row_bitmask+rowid
sta CIA1_PORT_A
lda CIA1_PORT_B
eor #$ff
rts
}
keyboard_init: {
lda #$ff
sta CIA1_PORT_A_DDR
lda #0
sta CIA1_PORT_B_DDR
rts
}
keyboard_matrix_row_bitmask: .byte $fe, $fd, $fb, $f7, $ef, $df, $bf, $7f
keyboard_matrix_col_bitmask: .byte 1, 2, 4, 8, $10, $20, $40, $80

View File

@ -0,0 +1,63 @@
@begin: scope:[] from
[0] phi() [ ] ( )
to:@5
@5: scope:[] from @begin
[1] phi() [ ] ( )
[2] call main param-assignment [ ] ( )
to:@end
@end: scope:[] from @5
[3] phi() [ ] ( )
main: scope:[main] from @5
[4] phi() [ ] ( main:2 [ ] )
[5] call keyboard_init param-assignment [ ] ( main:2 [ ] )
to:main::@1
main::@1: scope:[main] from main main::@10 main::@5
[6] if(true) goto main::@4 [ ] ( main:2 [ ] )
to:main::@return
main::@return: scope:[main] from main::@1
[7] return [ ] ( main:2 [ ] )
to:@return
main::@4: scope:[main] from main::@1 main::@4
[8] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@4 [ ] ( main:2 [ ] )
to:main::@9
main::@9: scope:[main] from main::@4
[9] phi() [ ] ( main:2 [ ] )
[10] call keyboard_key_pressed param-assignment [ keyboard_key_pressed::return#0 ] ( main:2 [ keyboard_key_pressed::return#0 ] )
[11] (byte) keyboard_key_pressed::return#2 ← (byte) keyboard_key_pressed::return#0 [ keyboard_key_pressed::return#2 ] ( main:2 [ keyboard_key_pressed::return#2 ] )
to:main::@14
main::@14: scope:[main] from main::@9
[12] (byte~) main::$2 ← (byte) keyboard_key_pressed::return#2 [ main::$2 ] ( main:2 [ main::$2 ] )
[13] if((byte~) main::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@5 [ ] ( main:2 [ ] )
to:main::@10
main::@10: scope:[main] from main::@14
[14] *((const byte*) BGCOL#0) ← (const byte) GREEN#0 [ ] ( main:2 [ ] )
to:main::@1
main::@5: scope:[main] from main::@14
[15] *((const byte*) BGCOL#0) ← (const byte) BLUE#0 [ ] ( main:2 [ ] )
to:main::@1
keyboard_key_pressed: scope:[keyboard_key_pressed] from main::@9
[16] phi() [ ] ( main:2::keyboard_key_pressed:10 [ ] )
[17] call keyboard_matrix_read param-assignment [ keyboard_matrix_read::return#0 ] ( main:2::keyboard_key_pressed:10 [ keyboard_matrix_read::return#0 ] )
[18] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 [ keyboard_matrix_read::return#2 ] ( main:2::keyboard_key_pressed:10 [ keyboard_matrix_read::return#2 ] )
to:keyboard_key_pressed::@2
keyboard_key_pressed::@2: scope:[keyboard_key_pressed] from keyboard_key_pressed
[19] (byte~) keyboard_key_pressed::$1 ← (byte) keyboard_matrix_read::return#2 [ keyboard_key_pressed::$1 ] ( main:2::keyboard_key_pressed:10 [ keyboard_key_pressed::$1 ] )
[20] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$1 & *((const byte[]) keyboard_matrix_col_bitmask#0+(const byte) KEY_SPACE#0&(byte/signed byte/word/signed word/dword/signed dword) 7) [ keyboard_key_pressed::return#0 ] ( main:2::keyboard_key_pressed:10 [ keyboard_key_pressed::return#0 ] )
to:keyboard_key_pressed::@return
keyboard_key_pressed::@return: scope:[keyboard_key_pressed] from keyboard_key_pressed::@2
[21] return [ keyboard_key_pressed::return#0 ] ( main:2::keyboard_key_pressed:10 [ keyboard_key_pressed::return#0 ] )
to:@return
keyboard_matrix_read: scope:[keyboard_matrix_read] from keyboard_key_pressed
[22] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0+(const byte) keyboard_matrix_read::rowid#0) [ ] ( main:2::keyboard_key_pressed:10::keyboard_matrix_read:17 [ ] )
[23] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) [ keyboard_matrix_read::return#0 ] ( main:2::keyboard_key_pressed:10::keyboard_matrix_read:17 [ keyboard_matrix_read::return#0 ] )
to:keyboard_matrix_read::@return
keyboard_matrix_read::@return: scope:[keyboard_matrix_read] from keyboard_matrix_read
[24] return [ keyboard_matrix_read::return#0 ] ( main:2::keyboard_key_pressed:10::keyboard_matrix_read:17 [ keyboard_matrix_read::return#0 ] )
to:@return
keyboard_init: scope:[keyboard_init] from main
[25] *((const byte*) CIA1_PORT_A_DDR#0) ← (byte/word/signed word/dword/signed dword) 255 [ ] ( main:2::keyboard_init:5 [ ] )
[26] *((const byte*) CIA1_PORT_B_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2::keyboard_init:5 [ ] )
to:keyboard_init::@return
keyboard_init::@return: scope:[keyboard_init] from keyboard_init
[27] return [ ] ( main:2::keyboard_init:5 [ ] )
to:@return

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,59 @@
(label) @5
(label) @begin
(label) @end
(byte*) BGCOL
(const byte*) BGCOL#0 BGCOL = ((byte*))(word/dword/signed dword) 53281
(byte) BLUE
(const byte) BLUE#0 BLUE = (byte/signed byte/word/signed word/dword/signed dword) 6
(byte*) CIA1_PORT_A
(const byte*) CIA1_PORT_A#0 CIA1_PORT_A = ((byte*))(word/dword/signed dword) 56320
(byte*) CIA1_PORT_A_DDR
(const byte*) CIA1_PORT_A_DDR#0 CIA1_PORT_A_DDR = ((byte*))(word/dword/signed dword) 56322
(byte*) CIA1_PORT_B
(const byte*) CIA1_PORT_B#0 CIA1_PORT_B = ((byte*))(word/dword/signed dword) 56321
(byte*) CIA1_PORT_B_DDR
(const byte*) CIA1_PORT_B_DDR#0 CIA1_PORT_B_DDR = ((byte*))(word/dword/signed dword) 56323
(byte) GREEN
(const byte) GREEN#0 GREEN = (byte/signed byte/word/signed word/dword/signed dword) 5
(byte) KEY_SPACE
(const byte) KEY_SPACE#0 KEY_SPACE = (byte/signed byte/word/signed word/dword/signed dword) 60
(byte*) RASTER
(const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) 53266
(void()) keyboard_init()
(label) keyboard_init::@return
(byte()) keyboard_key_pressed((byte) keyboard_key_pressed::key)
(byte~) keyboard_key_pressed::$1 reg byte a 4.0
(label) keyboard_key_pressed::@2
(label) keyboard_key_pressed::@return
(byte) keyboard_key_pressed::key
(byte) keyboard_key_pressed::return
(byte) keyboard_key_pressed::return#0 reg byte a 4.333333333333333
(byte) keyboard_key_pressed::return#2 reg byte a 22.0
(byte[]) keyboard_matrix_col_bitmask
(const byte[]) keyboard_matrix_col_bitmask#0 keyboard_matrix_col_bitmask = { (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 2, (byte/signed byte/word/signed word/dword/signed dword) 4, (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 16, (byte/signed byte/word/signed word/dword/signed dword) 32, (byte/signed byte/word/signed word/dword/signed dword) 64, (byte/word/signed word/dword/signed dword) 128 }
(byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid)
(label) keyboard_matrix_read::@return
(byte) keyboard_matrix_read::return
(byte) keyboard_matrix_read::return#0 reg byte a 1.3333333333333333
(byte) keyboard_matrix_read::return#2 reg byte a 4.0
(byte) keyboard_matrix_read::row_pressed_bits
(byte) keyboard_matrix_read::rowid
(const byte) keyboard_matrix_read::rowid#0 rowid = (const byte) KEY_SPACE#0>>(byte/signed byte/word/signed word/dword/signed dword) 3
(byte[8]) keyboard_matrix_row_bitmask
(const byte[8]) keyboard_matrix_row_bitmask#0 keyboard_matrix_row_bitmask = { (byte/word/signed word/dword/signed dword) 254, (byte/word/signed word/dword/signed dword) 253, (byte/word/signed word/dword/signed dword) 251, (byte/word/signed word/dword/signed dword) 247, (byte/word/signed word/dword/signed dword) 239, (byte/word/signed word/dword/signed dword) 223, (byte/word/signed word/dword/signed dword) 191, (byte/signed byte/word/signed word/dword/signed dword) 127 }
(void()) main()
(byte~) main::$2 reg byte a 22.0
(label) main::@1
(label) main::@10
(label) main::@14
(label) main::@4
(label) main::@5
(label) main::@9
(label) main::@return
reg byte a [ keyboard_key_pressed::return#2 ]
reg byte a [ main::$2 ]
reg byte a [ keyboard_matrix_read::return#2 ]
reg byte a [ keyboard_key_pressed::$1 ]
reg byte a [ keyboard_key_pressed::return#0 ]
reg byte a [ keyboard_matrix_read::return#0 ]