nbasic_keyboard_notworking
By: a guest | Mar 21st, 2010 | Syntax:
Z80 Assembler | Size: 2.90 KB | Hits: 95 | Expires: Never
// header.bas
asm
.inesprg 1 ;//one PRG bank
.ineschr 1 ;//one CHR bank
.inesmir 0 ;//mirroring type 0
.inesmap 0 ;//memory mapper 0 (none)
.org 32768
.bank 0
endasm
start:
gosub waitvbl
1/>set 8192 %00100000
1/>set 8193 %00011110 //sprites 1/>and bg visible, no sprite 1/>and bg clipping
gosub waitvbl
gosub waitvbl
//--------------------------------------------------------------------------------
//main.bas
// this code is not working - please help
// the idea is being able to display some feedback of familybasic/subor/victor keyboard keys pressed
// dim keymap(32)
array keymap 32
// 1/>set [keymap id] value
// paletb 0,$10,$11,$12,$13
1/>set $2006 $3f
1/>set $2006 $00
1/>set $2007 $10
1/>set $2007 $11
1/>set $2007 $12
1/>set $2007 $13
// paletb 1,$20,$21,$22,$23
1/>set $2006 $3f
1/>set $2006 $04
1/>set $2007 $20
1/>set $2007 $21
1/>set $2007 $22
1/>set $2007 $23
//the main program loop
mainloop:
// writes the keyboard keymap into the keymap array
// based on info from 'Reverse Engineering the Keyboard of Family Computer' Keyboard-english.txt document
1/>set $4016 $05
1/>set x 0
kbd_loop:
1/>set $4016 $04
1/>set temp [$4016]
1/>set temp << temp 3 // would this do 'temp=temp*16' ?
1/>set $4016 $06
1/>set temp2 [$4016]
1/>set temp3 | temp temp2
1/>set [keymap x] temp3
1/>inc x
if x <> 10 branchto kbd_loop
// displaying ascii characters based on the keymap combinations
// i'm still too newbie to code better... (i'd love seeing a binary values list displayed, for example)
1/>set $2006 $21
1/>set $2006 $30
1/>set $2007 [keymap 0]
1/>set $2006 $21
1/>set $2006 $31
1/>set $2007 [keymap 1]
1/>set $2006 $21
1/>set $2006 $32
1/>set $2007 [keymap 2]
1/>set $2006 $21
1/>set $2006 $33
1/>set $2007 [keymap 3]
1/>set $2006 $21
1/>set $2006 $34
1/>set $2007 [keymap 4]
1/>set $2006 $21
1/>set $2006 $35
1/>set $2007 [keymap 5]
1/>set $2006 $21
1/>set $2006 $36
1/>set $2007 [keymap 6]
1/>set $2006 $21
1/>set $2006 $37
1/>set $2007 [keymap 7]
1/>set $2006 $21
1/>set $2006 $38
1/>set $2007 [keymap 8]
1/>set $2006 $21
1/>set $2006 $39
1/>set $2007 [keymap 9]
gosub waitvbl
goto mainloop
//--------------------------------------------------------------------------------
// common.bas
//wait until screen refresh
waitvbl:
asm
lda $2002
bpl waitvbl ;//wait for start of retrace
waitvbl_1:
lda $2002
bmi waitvbl_1 ;//wait for end of retrace
endasm
//1/>set scroll 1/>and PPU base address
1/>set 8197 0
1/>set 8197 0
1/>set 8198 0
1/>set 8198 0
return
//--------------------------------------------------------------------------------
// footer.bas
asm
.bank 1 ;//jump table points to NMI, Reset, and IRQ start points
.org $fffa
.dw start, start, start
.bank 2 ;//include CHR ROM
.org $0000
.incbin "25ch.chr"
.incbin "25ch.chr"
endasm
//--------------------------------------------------------------------------------