[Coco] How to detect a key pressed in OS-9
Bill Pierce
ooogalapasooo at aol.com
Tue Apr 23 22:26:17 EDT 2013
Mr Gault,
Thanks, I had forgotten the code for inkey and syscall were in the manual. I knew there was a getstat call that would sense a key but hadnt't thought of doing a read afterwards. Also, in both cases, the getstt and the read nead the path in A which would be STDIN (0). The full code would be:
InASM:
buffer rmb 1
clra
ldb #SS.Ready
OS9 I$GetStt
bsc Exit no then exit
clra
leax buffer,pcr
ldy #1
OS9 I$Read go read one character
Exit rts
In C:
Registers regs;
char mbuffer[32];
char buffer;
regs.rg_a = 0;
regs.rg_b = SS_READY;
regs.rg_x = *mbuffer /* 32 byte buffer address for getstt data */
if(_os9( I_GETSTT,®s); == 0) {
read(STDIN,buffer,1);
}
I think that is right. I haven't had to use an inkey type loop in my programs lately, so I'm basing this on the Basic09 inkey call.
Bill Pierce
My Music from the Tandy/Radio Shack Color Computer 2 & 3
https://sites.google.com/site/dabarnstudio/
Co-Webmaster of The TRS-80 Color Computer Archive
http://www.colorcomputerarchive.com/
Co-Contributor, Co-Editor for CocoPedia
http://www.cocopedia.com/wiki/index.php/Main_Page
E-Mail: ooogalapasooo at aol.com
-----Original Message-----
From: Robert Gault <robert.gault at att.net>
To: CoCoList for Color Computer Enthusiasts <coco at maltedmedia.com>
Sent: Tue, Apr 23, 2013 9:58 pm
Subject: Re: [Coco] How to detect a key pressed in OS-9
Bill Pierce wrote:
>
> Luis,
> I think Inkey for Basic09 acts just like Basic's INKEY$.
Not only is that true, but the source code for the Basic09 INKEY$ routine is
listed in the owner's manual in the Basic09 section, Appendix B.
The gist of the code is
ldb #SS.Ready
OS9 I$GetStt
bsc Exit no then exit
ldy #1
OS9 I$Read go read one character
rts
--
Coco mailing list
Coco at maltedmedia.com
http://five.pairlist.net/mailman/listinfo/coco
More information about the Coco
mailing list