Ready64 Forum
Commodore 64 => Programmazione, Grafica e Musica => Topic aperto da: iAN CooG - 21 Dicembre 2004, 01:45:46
-
Per visualizzare il contenuto della ram da 0 a 999
POKE 53272,4
invece quella da 2048 a 3047
POKE53272,36
in tutti questi anni non ci avevo mai pensato :D
-
Ci stava troppo dentro un programmino fatto al volo per sfruttare questa meraviglia (ROTFL)
;----------------------------------------------------------
; Sfruttiamo il registro VIC $D018 (53272) per visualizzare
; la memoria, semplicemente premendo i tasti funzione
; Compilare con dasm
; iAN CooG/HokutoForce
;----------------------------------------------------------
org $0801
irq = $0334
.word eop
.word 7102
.byte $9e
.byte "2059"
eop .byte 0
;----------------------------------------------------------
ldy #0
;metto la routine residente nel tapebuffer
rloop
lda relocme,y
sta irq,y
iny
cpy #(endreloc-relocme)
bne rloop
;setto il nuovo vettore
lda #<irq
ldx #>irq
sei
sta $0314
stx $0315
cli
rts
;----------------------------------------------------------
relocme
rorg irq
jsr keyloop
jmp $ea31
keyloop
; salvo lo stato di $dc00
lda $dc00
pha
; imposto la lettura dei tasti funzione
; direttamente dalla keymatrix
lda #$fe
sta $dc00
lda $dc01
; salvo il valore letto
sta $02
; ripristino $dc00
pla
sta $dc00
; ora confrontiamo se e' stato premuto un fkey
ldx #3
ck
lda $02
cmp table,x
beq setthis
dex
bpl ck
; nessun tasto dei 4 previsti, esci
rts
setthis
; ora ho l'indice 0-3
; devo settare $04,$14,$24,$34
txa
asl;*2
asl;*4
asl;*8
asl;*16
clc
adc #04
sta $d018
rts
;----------------------------------------------------------
table
.byte $ef;f1
.byte $df;f3
.byte $bf;f5
.byte $f7;f7
rend
endreloc
-
:metallica: ;)
-
Veramente interessante, non ci avevo pensato! ;)
Grande iAN!
-
Piccola modifica per sfruttare anche combinazioni di Shift e C= con i tasti funzione, arrivando a coprire tutti i 16 valori possibili.
relocme
rorg irq
; salvo lo stato di $dc00
lda $dc00
pha
; imposto la lettura dei tasti funzione
; direttamente dalla keymatrix
lda #$fe
sta $dc00
lda $dc01
; salvo il valore letto
sta $02
; ripristino $dc00
pla
sta $dc00
; ora confrontiamo se e' stato premuto un fkey
ldx #3
ck
lda $02
cmp table,x
beq setthis
dex
bpl ck
; nessun tasto dei 4 previsti, esci
BMI EXIT
setthis
; ora ho l'indice 0-3
; devo settare $04,$14,$24,$34
; +shift $44,$54,$64,$74
; +cbm $84,$94,$a4,$b4
; +shift+cbm $c4,$d4,$e4,$f4
txa
asl;*2
asl;*4
asl;*8
asl;*16
sta $02
lda $028D;: shift status
asl
asl
asl
asl
asl
asl;*64
clc
adc $02
adc #04
sta $d018
;solo per debug, dal colore so se setto
;il nybble alto correttamente
;lsr
;lsr
;lsr
;lsr
;sta $d020
EXIT
jmp $ea31