X1K Interest Group

User avatar
Posts: 1
Joined: Tue Jan 05, 2010 5:27 pm

X1K Interest Group

Post by xorotude »

Interest Group for Owners and Enthusiasts Interested in the AmigaOne X1000. Share your projects and ideas or concept, find people to work on your project, join other's projects.

User avatar
XCore Expert
Posts: 956
Joined: Fri Dec 11, 2009 3:53 am
Location: Sweden, Eskilstuna

Post by lilltroll »

Once upon a time I had the Amiga 500, so it's a little bit nostalgic and intresting to see what happens.
Probably not the most confused programmer anymore on the XCORE forum.
User avatar
XCore Addict
Posts: 238
Joined: Thu Dec 17, 2009 5:15 am

Post by shawn »

It wounderfull to see Xcore out in user land. I used an Atari ST1040 for for years, lots of fun.
Amiga's, Atari's, not Apple or PC. both platforms enabled there developers.Atari's GUI sucked
but was funtional. I choose Atari for it's other potentials. AtariST's internals where wide open
for hardware hack's witch I could list quit a few projects, ploters, video over radio, Tranputer...
I don't think many people are going to be interested in Amga's new box. I guess if you wanted
PowerPC platform with a cool link to develope and connect Xcores and like the price or the fact
the machine is wall bound, dosn't bother you, and you like linux and AOS mixxed then its OK.
That's a lot of if's and abstraction for me, It could be a nice tool for someone whom might want
to throw all that abstraction at Xcore for acedemia or whatever. We'll see if Amiga developers can
realize the potential of Xcore and if they do, perhaps then they could design a more affordable, less
power, less IBM more Xcore Type O Machine with a better abstration. The company still has GONAS
being 1st Xcore to User in markets. Now if they only knew what they have...

Go~go Amigo,
New User
Posts: 2
Joined: Sat Apr 10, 2010 7:50 pm

Post by X603 »

Waiting to get my hands on such board to see how i can exploit that XMOS stuff :)

Being into robotics, and machine prototypying i'll try to find some useful paths for it.
New User
Posts: 2
Joined: Sat Apr 10, 2010 7:50 pm

Post by X603 »

I'm not very good with graphics, but how about this for a start?
User avatar
Posts: 29
Joined: Mon Jul 09, 2012 11:54 pm

Post by Obtuse »

Using the Xena to Nemo GPIO on the AmigaOne X1000.


The on-board Xmos chip, Xena, has a one pin port that is connected

to the PA6T CPUs GPIO controller. This is Xena port P1F on XCORE 1

and is wired to GPIO4 in the CPU on the Nemo motherboard.

This pin and the corresponding GPIO input are normally in the HIGH

state and is considered to be active when set to a logic '0' or LOW.

To use the GPIO from the Xena side it is necessary to first configure

the port for OUTPUT by including a line in your program code as follows,

on stdcore [1] : port out gpio4   = XS1_PORT_1F;

the gpio4 designation can be replaced with whatever you like.

To activate the GPIO output it is only necessary to write a zero to

the port using xc standard code.

gpio4 <: 0;

or variables can be assigned to indicate LOW and HIGH values.

unsigned short setOFF = 1;

unsigned short setON = 0;

and then,

gpio4 <: setOFF;

gpio4 <: setON;

On the Nemo side of things you will need to monitor the PA6Ts GPIO

input register to sense any change applied by Xena. The hardware

address of this register is 0xfc103040 in hexidecimal.

You can view where this register is by using the F key to break the

startup as soon as the Menu appears on the X1000, then enter the

following at the CFE> prompt,

show soc sdc.sdcgpio

Notice the line beginning 0xFC103040 is marked as 'in' at the end.

The Value for that address should end in D5. This value is what we

will be looking at to see if Xena has applied a LOW (0) to the input

of the GPIO controller.

D5 in Hex translates to 1101:0101 in Binary. Also, in Binary the bit

positions are kind of backwards being labeled 7-0 from left to right.




The only bit we are interested in is bit 4. By setting bit 4 LOW the

value becomes 1100:0101 or 0xC5. (Using the 0x before Hex numbers is

a standard way of designation).

We simply want to monitor bit 4 and don't really care about the other

bits so we will use a C method known as 'Bit manipulation' or

'bit twiddling'. To test a bit we use,

bit_field & (1 << bitnumber);

In our case 'bitnumber' is 4. Therefore, bit_field & (1 << 4);

We want to set the bit_field variable to as small an amount as

needed. Unfortunately the smallest integer number we can use is

16 bits wide, however character values are only 8 bits wide, so

we will use the C language 'char' variable and assign it thus,

char gpio4;

Now we have, gpio4 & (1 << 4);

Which says compare bit 4 of gpio4 to 1.

Now we need to set gpio4 char to look at our gpio controller.

gpio4 = *(char*)0xfc103040;

Which sets gpio4 to look at the 8 bit value located at 0xfc103040.

We can now monitor and print out the value of GPIO4 by including

in our Nemo code,

gpio4 char;

gpio4 = *(char*)0xfc103040;

if((gpio4 & (1<<4)))


 IDOS-> Printf("GPIO4=1\n");




 IDOS-> Printf("GPIO4=0\n");



After digging around in CFE to find where the GPIO portion of

the PA6T was I needed a way to determine exactly which bit was

indeed related to GPIO4.

To accomplish this I wrote a small Xmos program that toggled the

pin connected to GPIO4 on and off in 10 second intervals and used

the excellent FileX program by Alfred Faust, available on OS4Depot,

to monitor the GPIO 'in' section.

Using the 'Grab memory' function of FileX and entering values of

Start fc103040 and End fc103044 I could see the first value change

from D5 to C5 in harmony with Xena's toggling of its output port.

(I also toggled the on-board LED in unison with the GPIO port.)

Nemo was designed to use this gpio scheme and as a test of its

durability I ran the Xena toggle program more than 24 hours without


Have Fun

Leonard Karpowicz

mechanic on amigans.net and happy to discuss this. :)