Share Pastebin
Guest
Public paste!

nbasic_keyboard_notworking

By: a guest | Mar 21st, 2010 | Syntax: Z80 Assembler | Size: 2.90 KB | Hits: 95 | Expires: Never
Copy text to clipboard
  1. // header.bas
  2. asm
  3.   .inesprg 1 ;//one PRG bank
  4.   .ineschr 1 ;//one CHR bank
  5.   .inesmir 0 ;//mirroring type 0
  6.   .inesmap 0 ;//memory mapper 0 (none)
  7.   .org 32768
  8.   .bank 0
  9. endasm
  10. start:
  11.   gosub waitvbl
  12.   1/>set 8192 %00100000
  13.   1/>set 8193 %00011110 //sprites 1/>and bg visible, no sprite 1/>and bg clipping
  14.   gosub waitvbl
  15.   gosub waitvbl
  16. //--------------------------------------------------------------------------------
  17. //main.bas
  18. // this code is not working - please help
  19. // the idea is being able to display some feedback of familybasic/subor/victor keyboard keys pressed
  20.  
  21. // dim keymap(32)
  22. array keymap 32
  23. // 1/>set [keymap id] value
  24.  
  25. // paletb 0,$10,$11,$12,$13
  26.   1/>set $2006 $3f
  27.   1/>set $2006 $00
  28.   1/>set $2007 $10
  29.   1/>set $2007 $11
  30.   1/>set $2007 $12
  31.   1/>set $2007 $13
  32.  
  33. // paletb 1,$20,$21,$22,$23
  34.   1/>set $2006 $3f
  35.   1/>set $2006 $04
  36.   1/>set $2007 $20
  37.   1/>set $2007 $21
  38.   1/>set $2007 $22
  39.   1/>set $2007 $23
  40.  
  41. //the main program loop
  42. mainloop:
  43.  
  44. // writes the keyboard keymap into the keymap array
  45. // based on info from 'Reverse Engineering the Keyboard of Family Computer' Keyboard-english.txt document
  46.   1/>set $4016 $05
  47.   1/>set x 0
  48. kbd_loop:
  49.   1/>set $4016 $04
  50.   1/>set temp [$4016]
  51.   1/>set temp << temp 3 // would this do 'temp=temp*16' ?
  52.   1/>set $4016 $06
  53.   1/>set temp2 [$4016]
  54.   1/>set temp3 | temp temp2
  55.   1/>set [keymap x] temp3
  56.   1/>inc x
  57.   if x <> 10 branchto kbd_loop
  58.  
  59. // displaying ascii characters based on the keymap combinations
  60. // i'm still too newbie to code better... (i'd love seeing a binary values list displayed, for example)
  61.   1/>set $2006 $21
  62.   1/>set $2006 $30
  63.   1/>set $2007 [keymap 0]
  64.  
  65.   1/>set $2006 $21
  66.   1/>set $2006 $31
  67.   1/>set $2007 [keymap 1]
  68.  
  69.   1/>set $2006 $21
  70.   1/>set $2006 $32
  71.   1/>set $2007 [keymap 2]
  72.  
  73.   1/>set $2006 $21
  74.   1/>set $2006 $33
  75.   1/>set $2007 [keymap 3]
  76.  
  77.   1/>set $2006 $21
  78.   1/>set $2006 $34
  79.   1/>set $2007 [keymap 4]
  80.  
  81.   1/>set $2006 $21
  82.   1/>set $2006 $35
  83.   1/>set $2007 [keymap 5]
  84.  
  85.   1/>set $2006 $21
  86.   1/>set $2006 $36
  87.   1/>set $2007 [keymap 6]
  88.  
  89.   1/>set $2006 $21
  90.   1/>set $2006 $37
  91.   1/>set $2007 [keymap 7]
  92.  
  93.   1/>set $2006 $21
  94.   1/>set $2006 $38
  95.   1/>set $2007 [keymap 8]
  96.  
  97.   1/>set $2006 $21
  98.   1/>set $2006 $39
  99.   1/>set $2007 [keymap 9]
  100.  
  101.   gosub waitvbl
  102.   goto mainloop
  103. //--------------------------------------------------------------------------------
  104. // common.bas
  105. //wait until screen refresh
  106. waitvbl:
  107.   asm
  108.     lda $2002
  109.     bpl waitvbl ;//wait for start of retrace
  110.   waitvbl_1:
  111.     lda $2002
  112.     bmi waitvbl_1 ;//wait for end of retrace
  113.   endasm
  114.   //1/>set scroll 1/>and PPU base address
  115.   1/>set 8197 0
  116.   1/>set 8197 0
  117.   1/>set 8198 0
  118.   1/>set 8198 0
  119.   return
  120. //--------------------------------------------------------------------------------
  121. // footer.bas
  122. asm
  123.   .bank 1 ;//jump table points to NMI, Reset, and IRQ start points
  124.   .org $fffa
  125.   .dw start, start, start
  126.   .bank 2 ;//include CHR ROM
  127.   .org $0000
  128.   .incbin "25ch.chr"
  129.   .incbin "25ch.chr"
  130. endasm
  131. //--------------------------------------------------------------------------------