Log inRegister an accountBrowse CSDbHelp & documentationFacts & StatisticsThe forumsAvailable RSS-feeds on CSDbSupport CSDb Commodore 64 Scene Database
You are not logged in - nap
CSDb User Forums


Forums > C64 Coding > cursor-control.
2003-04-04 07:16
Testicle
Account closed

Registered: Sep 2002
Posts: 131
cursor-control.

well, for a diskmag-system i want the user to be able to use both joystick and/or cursor-keys to choose chapters.

joystick is no problem, but then i tried to implement the cursor-function:

.keyboard lda $c5
cmp #7
beq .leftright
cmp #2
beq .updown
cmp #1
beq .jfire
rts
.leftright lda $028d
and #1
bne .jleft
jmp .jright
.updown lda $028d
and #1
bne .jup
jmp .jdown


first i used this function during the irq, but it didn't work. now i use this function beside my irq-routines, but nothing happens.

do i have to set special registers to get access to the cursor-keys or something like that?!?
 
... 18 posts hidden. Click here to view all posts....
 
2003-04-07 07:58
Oswald

Registered: Apr 2002
Posts: 5017
krill: oh well, then Im a weenie :)) but why would I sit down and code a keyboard scan routine, if its just about 2 jsr ? :)

$ea31 will call several kernal routines, cursor blinking, scnkey and the likes..

$ea81 is just: pla tay pla tax pla rti
$ea7e is a bit better with lda $dc0d in front of the earlier :)
2003-04-07 08:17
Testicle
Account closed

Registered: Sep 2002
Posts: 131
@Oswald: yes, i looked at the kernel and saw the differences. now i've got another question: is it necessary to end a raster-irq-routine with jmp $ea7e (or whatever) or can i directly use "rti" instead? i'm not sure, if the three missing pla's (from jmp $ea7e/81) would do any harm?

well, ofcourse i could give it (the "rti" i mean) a try, but then i would probably not know, if it really works or if it was just pure chance that nothing went wrong...
2003-04-07 09:07
MagerValp

Registered: Dec 2001
Posts: 1055
It'd just crash with a bare RTI, as in the beginning of the IRQ routine you have PHA TXA PHA TYA PHA. You have to restore them before exiting.
2003-04-07 10:50
Ninja

Registered: Jan 2002
Posts: 404
Krill: Well, I think some troubles are unavoidable using Joy1 and Keyboard even with data-direction registers. If the joy is pressed up and so the line is low, how can you check if e.g. "DEL" is pressed at the same time?
2003-04-07 11:51
Testicle
Account closed

Registered: Sep 2002
Posts: 131
@MagerValp: ah, understand! thanks! :-)
2003-04-07 13:41
Oswald

Registered: Apr 2002
Posts: 5017
testicle:
the kernal irq at its start pushes a,x,y regs to the stack on top of the return address, if you dont pull those values out, the code will continue to run un some random location, instead of the correct return addy...

ofcourse you can have your own irq routine, just
turn back the kernal when you want to use it, and jsr it..

(when not in irq we have $35 in $01, using fffe/ffff as vectors)

irq pha
txa
pha
tya
pha
...

lda #$36
sta $01
jsr kernal
lda #$35
sta $01
pla
tay
pla
tax
pla
rti

sorry, if this is was too straightforward 2 you :)
2020-04-26 23:23
Digger

Registered: Mar 2005
Posts: 421
@Oswald: Hmmm, I've tried your last example with JSR $ffe4 but it just returns $00 all the time, what am I doing wrong? Cheers!
2020-04-26 23:31
JackAsser

Registered: Jun 2002
Posts: 1989
@digger: necro-poster of the year! Congrats! :)

For custom keyscan I recommend Codebase and TLR’s routine.
2020-04-27 09:08
Oswald

Registered: Apr 2002
Posts: 5017
Quote: @Oswald: Hmmm, I've tried your last example with JSR $ffe4 but it just returns $00 all the time, what am I doing wrong? Cheers!

ffe4 is getin, reads a character from the input buffer.

but you also need to call SCNKEY (ff9f) from a raster irq (or with similar frequency), SCNKEY does scan the keyboard and fills up the input buffer.

(2nd post in here I explain same thing :P )
2020-04-27 10:59
Digger

Registered: Mar 2005
Posts: 421
@Oswald: Ahhh makes sense, thx!

@JackAsser: Hehe, still within this millennium though. I wanted to avoid any foreign code to save some bytes, since I don't need to read all the keys. Will give it a go. Kernal's SCNKEY seems to take a lot of rastertime actually.
Previous - 1 | 2 | 3 - Next
RefreshSubscribe to this thread:

You need to be logged in to post in the forum.

Search the forum:
Search   for   in  
All times are CET.
Search CSDb
Advanced
Users Online
Rick/F4CG
curtcool
cba
Bansai/BSILabs
Røly/Mayday!
wil
Mason/Unicess
TheEnemy/TREX/THD
Gordian
St0rmfr0nt/Quantum
Oswald/Resource
Guests online: 148
Top Demos
1 Next Level  (9.8)
2 Mojo  (9.7)
3 Coma Light 13  (9.7)
4 Edge of Disgrace  (9.6)
5 Comaland 100%  (9.6)
6 No Bounds  (9.6)
7 Uncensored  (9.6)
8 Wonderland XIV  (9.6)
9 Bromance  (9.6)
10 Memento Mori  (9.6)
Top onefile Demos
1 It's More Fun to Com..  (9.7)
2 Party Elk 2  (9.7)
3 Cubic Dream  (9.6)
4 Copper Booze  (9.5)
5 Rainbow Connection  (9.5)
6 TRSAC, Gabber & Pebe..  (9.5)
7 Onscreen 5k  (9.5)
8 Wafer Demo  (9.5)
9 Dawnfall V1.1  (9.5)
10 Quadrants  (9.5)
Top Groups
1 Oxyron  (9.3)
2 Nostalgia  (9.3)
3 Booze Design  (9.3)
4 Censor Design  (9.3)
5 Crest  (9.3)
Top Fullscreen Graphicians
1 Carrion  (9.8)
2 Joe  (9.8)
3 Duce  (9.8)
4 Mirage  (9.7)
5 Facet  (9.7)

Home - Disclaimer
Copyright © No Name 2001-2024
Page generated in: 0.042 sec.