User Tools

Site Tools


playground:playground

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Next revisionBoth sides next revision
playground:playground [2022-03-11 22:24] erhanplayground:playground [2022-03-11 22:46] – old revision restored (2015-10-03 14:50) erhan
Line 1: Line 1:
-====== Scanning the keyboard without joysticks interfere ======+====== PlayGround ======
  
-Converts keycode ($00-$3F) to $DC00-$DC01 values and scans without interfering from joysticks at port 1 or 2. Also keeps history, to detect key press & hold. 
- 
-<code> 
- 
-;64tass format 
-;with default $dc02 - $dc03 values ($ff and $00) 
-;taken from Platoon game, shortened and key history integrated. 
-;code to key conversion table below, from c64-wiki.com 
- 
-;to use inside irq, below code is enough : 
-; lda #$keycode 
-; jsr keyscan 
-; bcc + 
-; inc $d020 
-;+ rts  
- 
-;$00 Inst/Del $10 5 $20 9 $30 £ 
-;$01 Return $11 R $21 I $31 * 
-;$02 Crsr ←→ $12 D $22 J $32 ] 
-;$03 F7/F8 $13 6 $23 0 $33 Clr/Home 
-;$04 F1/F2 $14 C $24 M $34 R.Shift 
-;$05 F3/F4 $15 F $25 K $35 = 
-;$06 F5/F6 $16 T $26 O $36 ↑ 
-;$07 Crsr ↑↓ $17 X $27 N $37 ? 
-;$08 3 $18 7 $28 + $38 1 
-;$09 W $19 Y $29 P $39 ← 
-;$0A A $1A G $2A L $3A Ctrl 
-;$0B 4 $1B 8 $2B − $3B 2 
-;$0C Z $1C B $2C > $3C Space 
-;$0D S $1D H $2D [ $3D Commodore 
-;$0E E $1E U $2E @ $3E Q 
-;$0F L.Shift $1F V $2F < $3F Run/Stop 
- 
- 
- * = $1000 
-  
- lda #$3e ;scan for key "Q" 
- jsr keyscan 
- bcc + 
- inc $d020 ;C=1, this code executed if key is pressed 
-+  
-- lda $d011 
- bpl - 
-- lda $d011 
- bmi - 
-  
- jmp $1000  
-  
-keyscan  
-; sty backy+1 ;remove comment if you need .Y preserved 
- pha 
- lsr 
- lsr 
- lsr 
- tay 
- lda row,y 
- sta $dc00 
- pla 
- and #$07 
- tay 
- lda $dc01 
- and column,y 
- bne nokey 
- lda #$ff ;key is checked 2nd time, to be sure of 
- sta $dc00 ;joy #1 and #2 are not interfering 
- lda $dc01 
- and column,y 
- beq nokey 
-  
- cmp histv ;history value ? 
- bne +  
- clc         ;case #3, key is held down. keep history & set C=0 
- bcc backy 
-  
-nokey asl ;case #1, no keypress, update history value 2x & set C=0 
- clc  
- .byte $24  
-+ sec ;case #2, key pressed&released. update history & set C=1 
- sta histv 
-  
-backy  
-; ldy #$00 ;remove comment if you need .Y preserved 
- lda #$ff 
- sta $dc00 ;set default value 
- lda #$7f 
- sta $dc01 ;set default value 
- rts 
- 
-  
-row .byte $fe,$fd,$fb,$f7,$ef,$df,$bf,$7f 
-column .byte $01,$02,$04,$08,$10,$20,$40,$80  
-histv .byte $00 
- 
-</code> 
playground/playground.txt · Last modified: 2024-03-15 23:51 by ftc