Begin forwarded message:
Date: Thu, 28 May 2020 15:40:18 +1200
From: Ronald <rona...@zoho.com>
To: gccsdk mailing list <gcc@gccsdk.riscos.info>
Subject: Lost key codes __os.s ?
I am wondering if the recipe file --os.s is part of the unixlib
module build or if I am in the right area.
I cant remember if building Native outputs the unixlib module.
I would like to try altering the following snippet
.global __os_inkey
NAME __os_inkey
__os_inkey:
MOV ip, a1
MOV a1, #0x81
AND a2, ip, #0xff
MOV a3, ip, LSR #8
SWI XOS_Byte
MVNVS a1, #0
MOVVS pc, lr
TEQ a3, #0
MOVEQ a1, a2
MVNNE a1, #0
MOV pc, lr
DECLARE_FUNCTION __os_inkey
I haven't worked out what the #0x81 or the XOS_Byte is doing yet.
But the end goal is to get keyboard values (maybe all above
0x100) or at least the arrow key area OR'd with 0x10 to get them back
to what they should be.
Currently these keys are EOR'd and shifting down by 0x10.
The arrow keys (0x18c-18f are not getting converted to a readable byte,
and the Up key higher shifted value of 0x19c appears as 0x8c instead.
I had no copy of this post sent back, so I'm forwarding my copy with
a further post.
I built this program to use OsByte129 with both unixlib and libscl and
the output result is the same wrong codes. I guess it would be
interesting if the Norcroft compiler would do it differently, but if we
are stuck with it, maybe will have to just add ox10 to arrow/page etc
values
#include <oslib/os.h>
#include <oslib/osbyte.h>
#include <stdio.h>
int main (void) {
int r1_in;
int r2_in;
int *r1_out;
int *r2_out;
while (1) {
r1_in = 64;
r2_in = 68;
xos_byte(129,r1_in,r2_in,r1_out,r2_out);
printf("%d &%02X %d\n",*r1_out,*r1_out,*r2_out);
}
return 0;
}
I just took a guess at the r1 and r2 in (timer) values, seems to have
worked for this exercise.
Is there a way to build unixlib module separately from RONATIVE?
Ronald
_______________________________________________
GCCSDK mailing list gcc@gccsdk.riscos.info
Bugzilla: http://www.riscos.info/bugzilla/index.cgi
List Info: http://www.riscos.info/mailman/listinfo/gcc
Main Page: http://www.riscos.info/index.php/GCCSDK