Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

A3010 Econet!

380 views
Skip to first unread message

MarkYoungIW

unread,
Feb 15, 2012, 10:51:26 AM2/15/12
to
I have looked everywhere and it would seem that A3010 Econet is
impossible.

But I have an HCCS Ultimate Expansion System for my A3010 for a while
and it couldnt help escape my notice that it seemed to have been
designed with Econet in mind as there are solder pads for a module and
a din socket.

http://img848.imageshack.us/img848/8117/sdc11134w.jpg

Anyway, a few years pass and curiousity gets the better of me, and I
decide to solder sockets and a din plug where they look like they
should go, and plug an HCCS Econet Podule into the sockets.

http://img4.imageshack.us/img4/534/photo1lwe.jpg

The Econet module has power, and the rest of the Ultimate Expansion
still functions as it should, but Econet is still greyed out in the
configure, so I guess it hadn't worked.

Then I put Uniboot on the machine and configure the network settings
and the network icon appears both in configure and on the iconbar,
but..........................no station number!! I remove the module
off the ultimate and the network icon is still there, so I guess that
the machine still cant see the module.

So............My question is.

I saw a piece by Theo Markettos with regards to connecting a Econet
module to the podule bus:-

http://www.chiark.greenend.org.uk/~theom/riscos/docs/econet-on-a-podule.txt

Has anyone ever done something like this?

I cannot contact anyone from HCCS to see what their intentions were
for Econet on the board, but I am guessing the main problem is that
the A3010 is not looking at the right address for Econet.

All suggestions (clean preferaby!) are welcome.

It would be great to see if this is possible, and I feel by the design
of the interface, HCCS obviously thought they were on to something,
then didnt impliment it.

Theo Markettos

unread,
Feb 15, 2012, 2:17:31 PM2/15/12
to
MarkYoungIW <MarkY...@yahoo.com> wrote:
> Has anyone ever done something like this?
>
> I cannot contact anyone from HCCS to see what their intentions were
> for Econet on the board, but I am guessing the main problem is that
> the A3010 is not looking at the right address for Econet.

I think you're right. The address, which on a RISC OS 3.7 Econet module is
hardcoded and probably is for others too, relates to the address for the
motherboard module. A podule won't have the same address, so it would need
changing.

Andy Armstrong surfaced a while ago
http://web.archive.org/web/20050830204145/http://wonderworks.geekgang.com/hccs/index.html
but seems to have disappeared again.

Since that board has PALs on it, you can't easily figure it out from the
logic. What I'd try is attach a scope to the /ADLC line (the chip select)
on the Econet module. If you don't have a scope, make a little circuit with
a counter (at least 4 bits, more is better) and some LEDs clocked from
/ADLC. The idea is that when the /ADLC line changes state (scope triggers
or LED count changes) you'll have the right address for the Econet module.

Then write a program to step through the addresses
for the podule. You can use Podule_HardwareAddresses to find them, but I
think the mini slot is 0x03240000 in slow mode. Do a read from half of them
- for example
*Memory 03240000+2000
does that cause your LED count to change? If not, read the other half:
*Memory 03242000+2000

Then do a divide-and-conquer on the addresses. So if it flashes when you do
03242000+2000, next try 03242000+1000 and 03243000+1000, and so on. That
should help you whittle down what the address is. It's unlikely to respond
to only one address, but will respond to all addresses in a block.

Once you have the address, you'll need to convert it into synchronous mode.
That I think is based at 0x033C0000 (in other words, add 0x1C0000 to the
address you found). If you have the right address (test it again with
*Memory and your flasher), you can change the Econet module.

I might try the RO3.7 Econet module in preference to the 3.1 version,
because in 3.7 Econet is a podule just like everything else. On Archimedes
hardware Econet has a dedicated FIQ, which means the FIQ number would need
changing. I don't know if the 3.7 module relies on special 3.7-only stuff,
but I'd assume not. On the 3.7 module, the hardware address is loaded into
a register somewhere in the first few hundred bytes of code so it's fairly
easy to patch. I can't remember the exact address on a RPC but it's
something like 0x0302B800.

Hope that gives you some ideas... I haven't looked anything up so my
addresses may be wrong - you might want to read the PRM (Podule chapter) and
podule spec (on my site) for some background.

Theo

Rick Murray

unread,
Feb 15, 2012, 5:28:12 PM2/15/12
to
On Wed, 15 Feb 2012 07:51:26 -0800 (PST), MarkYoungIW
<MarkY...@Yahoo.com> wrote:

> but..........................no station number!! I remove the
module

The images aren't appearing on my phone (WiFi link), browser just
sits until it times out. Then again, the number of half-served images
I've come across in my time, I tend to think of image-shack as
images-hack. :-)

Anyway, first thing to check is what modules are active. Does:
*help netfs
reply anything useful? How about:
*help econet
It's been a while, but I seem to remember Econet wouldn't start if it
couldn't locate hardware.

If you're getting that far, and your problem is Invalid Station
Number, you'll need a special utility called "SetStation". You can't
*config this, nor can you poke it into the CMOS RAM (else smart kids
would wreak havoc with machines).


Best wishes,

Rick.

--

Best wishes,

Rick.

MarkYoungIW

unread,
Feb 16, 2012, 3:32:59 AM2/16/12
to

> Andy Armstrong surfaced a while agohttp://web.archive.org/web/20050830204145/http://wonderworks.geekgang...
> but seems to have disappeared again.

After a good search around, Andy's website is now:- http://www.hexten.net/
I have eMailed him there, but so far no luck.
Sounds good, but a bit out of my league at the moment. I have a cheap
handhelp oscilloscope on its way to me for another project I am doing
(one where the multimeter didnt quite cut it!) I think once the scope
gets here, I may need some further help!!

>
> Anyway, first thing to check is what modules are active. Does:
>    *help netfs
> reply anything useful? How about:
>    *help econet
> It's been a while, but I seem to remember Econet wouldn't start if it
> couldn't locate hardware.
>
>--
>
>
>Best wishes,
>
>
>Rick.

Unfortuantely both of these throw up 'No help found', so Econet is not
starting of its own accord, so I would assume from that it is an
addressing issue (perhaps HCCS intended to add the modified Econet
module to the rom on the Ultimate if it was complete).

Well, this gives me a place to start, I hope I am right in thinking
the card was intended to carry Econet, but was never implemented for
costs reasons or the like!!

Will see where this takes us!

Theo Markettos

unread,
Feb 16, 2012, 6:00:20 AM2/16/12
to
MarkYoungIW <MarkY...@yahoo.com> wrote:
> Sounds good, but a bit out of my league at the moment. I have a cheap
> handhelp oscilloscope on its way to me for another project I am doing
> (one where the multimeter didnt quite cut it!) I think once the scope
> gets here, I may need some further help!!

That's OK, that was the condensed version. I was assuming you would say if
it made no sense!

> Unfortuantely both of these throw up 'No help found', so Econet is not
> starting of its own accord, so I would assume from that it is an
> addressing issue (perhaps HCCS intended to add the modified Econet
> module to the rom on the Ultimate if it was complete).

My other thought is it might have been designed for some addons which used
the Econet port for something else. There was an EcoSCSI, I think there was
an Econet joystick and an Econet sampler as well. Can't remember if HCCS
did one of these. The danger is that not all the pins are wired, if they've
only wired the subset for driving their addon.

> Well, this gives me a place to start, I hope I am right in thinking
> the card was intended to carry Econet, but was never implemented for
> costs reasons or the like!!

Just to, err, comfort you, there's no hope of unmodified Econet working out
of the box on that card because there /is/ an addressing problem
(motherboard Econet lives at a different addressing range than any podule,
and no means to detect that address). So the fact that it doesn't work now
is absolutely expected, and not a cause for concern :)

Theo

MarkYoungIW

unread,
Feb 16, 2012, 6:18:07 AM2/16/12
to
On Feb 16, 11:00 am, Theo Markettos <theom
+n...@chiark.greenend.org.uk> wrote:
Thanks, I didn't really expect it to work out of the box, and reading
your article about the econet podule sort of confirmed that, however
the machine has surprised me before, so it would have been nice!!

Out of interest once the scope is connected up to the chip select,
what am I expecting to see? My electronic knowledge is school basic,
so I was expecting it would be change in voltage when nearly the
correct address is found? I only ask as I have a multimeter sitting
next to me know, and my Oscilloscope is a 'China' 28 days postage and
I am in the mood for fiddling at the moment. : )

The Oscilloscope will be new to me, I only ever used one at school on
a simple capacitor experiment, but I am currently restoring an old
generator set, so wanted a pretty sine wave graphic to put on the web
after the restoration, which is why I had ordered a cheap one).

I am also concerned it may have been for something else, its only
really that the din plug fits the faceplate perfectly that made me
think probably not joysticks, or scsi etc, that and the fact the A3010
already has joysticks and there is a micropodule sampler and I think
there was a scsi cd micropodule for the Ultimate.

The board is a sandwich which makes it impossible to see what is wired
and what isnt, but I thought if I dont try, I wont know, so giving it
a go.

The amazing thing is the fact that the Ultimate Expansion already
gives my A3010 a Digitiser, Sampler, IDE Hard Drive, if it was to give
Econet as well, it really would be the Ultimate!!!

Rick Murray

unread,
Feb 16, 2012, 7:09:13 AM2/16/12
to
On Thu, 16 Feb 2012 03:18:07 -0800 (PST), MarkYoungIW
<MarkY...@Yahoo.com> wrote:

> The board is a sandwich which makes it impossible to see what is
wired
> and what isnt, but I thought if I dont try, I wont know, so giving
it

While we can't do much about addressing if it goes via a PAL, I
wonder if there would be any luck in trying a resistance test? For
example, D0 on the network card ought to go to D0 on the
backplane...though you might need to pick it up on the other side of
a buffer chip... This might give you an idea as to how things are
wired.

My worry with the 'scope, and why Theo mentioned a little counter
circuit, is the pulse might be too quick to see. :-)


Reminds me, I did (once) want to veroboard up a net podule for my
RiscPC. I might take a look once I've gotten around to JTAGing the
dead OSD.
Theo - could you please tell me the correct name for the podule
socket? I will pop one onto my Farnell order when I do it.


Best wishes,

Rick.

Theo Markettos

unread,
Feb 16, 2012, 8:19:37 AM2/16/12
to
Rick Murray <heyrickma...@yahoo.co.uk> wrote:
> My worry with the 'scope, and why Theo mentioned a little counter
> circuit, is the pulse might be too quick to see. :-)

The trick with the scope is to set the trigger level to about 2.5V and to
trigger on a falling edge (/ADLC is active low). Now put the scope into
'single shot' mode (there's usually a button for this). If /ADLC ever
activates the 'single shot' will fire and it'll show that it's triggered
(either on the screen or a separate LED). If it hasn't activated it'll show
as still waiting for trigger.

However I've been using storage scopes for so long that I just realised this
won't work on an old-fashioned analogue scope. But it should work on any
kind of storage scope (even the slow 5MHz variety).

> Theo - could you please tell me the correct name for the podule
> socket? I will pop one onto my Farnell order when I do it.

DIN41612. The pre-Risc PC version has 64 pins on rows a and c, the Risc PC
version has 96 pins on rows a/b/c. Such are interchangeable - the extra 32
pins just give you more addresses and more data bits on a RPC.

Theo
Message has been deleted

Theo Markettos

unread,
Feb 16, 2012, 12:39:21 PM2/16/12
to
MarkYoungIW <MarkY...@yahoo.com> wrote:
> The scope I ordered is:-
>
> http://www.ebay.co.uk/itm/Portable-V1-5-ARM-Pocket-Size-Digital-Oscilloscope-New-/220885799124?pt=UK_BOI_Electrical_Test_Measurement_Equipment_ET&hash=item336dd1d0d4
>
> As I say, ordered a cheap simple pocket one as its really a learning
> device and from what the seller told me I can take an image of a wave
> from it onto the computer (which I wanted to do for my other project).
>
> Looks like it should play ball for this too........when it arrives!!

That's slower than the RPC's very slow 2MHz bus, but may be able to trigger
sufficiently, particularly since you're hitting the chip select multiple
times (eg doing *memory ...+2000 will cause 2048 cycles). So you should
spot some of them...

Theo

MarkYoungIW

unread,
Feb 16, 2012, 5:04:43 PM2/16/12
to
On Feb 16, 5:39 pm, Theo Markettos <theom+n...@chiark.greenend.org.uk>
wrote:
> MarkYoungIW <MarkYoun...@yahoo.com> wrote:
> > The scope I ordered is:-
>
> >http://www.ebay.co.uk/itm/Portable-V1-5-ARM-Pocket-Size-Digital-Oscil...
>
> > As I say, ordered a cheap simple pocket one as its really a learning
> > device and from what the seller told me I can take an image of a wave
> > from it onto the computer (which I wanted to do for my other project).
>
> > Looks like it should play ball for this too........when it arrives!!
>
> That's slower than the RPC's very slow 2MHz bus, but may be able to trigger
> sufficiently, particularly since you're hitting the chip select multiple
> times (eg doing *memory ...+2000 will cause 2048 cycles).  So you should
> spot some of them...
>
> Theo

Not knowing much about Oscilloscopes I have to admit I didnt really
look at the speed of the this when I ordered it, I checked it could
handle the voltage I needed it too, and that was about it. I was just
looking for a very cheap digital and ideally portable one to
experiment with.

Just had a quick look now though, at cheap alternatives, as I'd
consider buying a different one and returning/selling this one.

Rick Murray

unread,
Feb 16, 2012, 7:41:38 PM2/16/12
to
On Thu, 16 Feb 2012 05:38:15 -0800 (PST), MarkYoungIW
<MarkY...@Yahoo.com> wrote:

> Looks like it should play ball for this too........when it arrives!!

Is that the open-source one in an MP3 player case? [the link is all
messed up here, but it could be my newsreader]

If so, it interested me too. Let me know how you get on with it.


Best wishes,

Rick.

Rick Murray

unread,
Feb 16, 2012, 7:47:37 PM2/16/12
to
On 16 Feb 2012 17:39:21 +0000 (GMT), Theo Markettos
<theom...@chiark.greenend.org.uk> wrote:

> That's slower than the RPC's very slow 2MHz bus,

Ah. Good point. What would you suggest for a hobbyist with small
budget, something in the order of 10MHz? I'm not really up with
scopes, the last time I used one was 1990 at school, a lovely
dead-simple Unilab single-trace model. We had a multi-input (four, if
I remember correctly) storage scope but it was so damn complicated to
set up that it had a thick layer of dust on it to show how often it
saw the light of day...


Best wishes,

Rick.

Theo Markettos

unread,
Feb 17, 2012, 1:41:30 AM2/17/12
to
Rick Murray <heyrickma...@yahoo.co.uk> wrote:
> Ah. Good point. What would you suggest for a hobbyist with small
> budget, something in the order of 10MHz? I'm not really up with
> scopes, the last time I used one was 1990 at school, a lovely
> dead-simple Unilab single-trace model. We had a multi-input (four, if
> I remember correctly) storage scope but it was so damn complicated to
> set up that it had a thick layer of dust on it to show how often it
> saw the light of day...

It really depends what sort of bandwidth you need. Personally I think the
features of an old pro scope (weighing 20kg) will far exceed those of a
cheap modern thing. It's the analogue frontend that costs, and that doesn't
get (much) cheaper as technology improves. It's a bit disappointing the
lower bandwidth available on cheap scopes these days... 5MHz eBay jobs
don't really cut it when a new pro scope is 2.5GHz or more (but a 5 figure
price tag).

But depends what you want to spend... I think you won't get a decent storage
scope below about GBP300. If you really will put up with 10MHz then a
handheld scope or a new ebay Chinese job might do the trick... I have no
idea of the noise performance of these though. I can't see any reason
nowadays why you'd buy an analogue CRT scope any more, but they might have a
niche if you get say a secondhand 400MHz 4-channel analogue scope when you
can only afford a 10MHz 2-channel storage scope.

One danger with secondhand scopes (storage especially) is that the cheaper
older stuff is from the 1980s and is full of custom bits... service manuals
are often available, but if an ASIC or the weird 1980s waveform storage
system goes you've had it. So I recommend testing before you buy. The
other big gotcha is calibration, which can often cost more than the scope
itself. So you'd have to accept that any secondhand unit could be wildly
out of cal.

Of 'big brand' scopes, I quite like the Tektronix portable range (TDS1000,
TDS2000, TDS3000 series). They're easy to use and easy to drag around to
wherever you want to work. Some are also battery powered. They have USB or
CF slots for storage, and are controllable by serial or GPIB (or ethernet on
some). The LCDs are clear, but the low resolution can be a bit limiting
(but you get what you pay for). Possibly the monochrome TDS1000 series are
getting to sensible secondhand prices now.

In theory, data capture cards for PCI/USB/etc should be more cost effective
than a full blown scope but they often aren't, and the user interface of a
scope with physical knobs is much better than a laptop (a fully touch
interface might be a sufficient substitute, I don't know). So I'm not
convinced on that front.

Theo

Stuart

unread,
Feb 17, 2012, 5:05:17 AM2/17/12
to
In article <Awu*M2...@news.chiark.greenend.org.uk>,
Theo Markettos <theom...@chiark.greenend.org.uk> wrote:
> One danger with secondhand scopes (storage especially) is that the
> cheaper older stuff is from the 1980s and is full of custom bits...
> service manuals are often available, but if an ASIC or the weird 1980s
> waveform storage system goes you've had it. So I recommend testing
> before you buy. The other big gotcha is calibration, which can often
> cost more than the scope itself. So you'd have to accept that any
> secondhand unit could be wildly out of cal.

I would recommend you check out:

http://www.telnet.uk.com/index.php

I have no connection with the company other than as a satisfied customer.

--
Stuart Winsor

Only plain text for emails
http://www.asciiribbon.org



Theo Markettos

unread,
Feb 17, 2012, 6:46:57 AM2/17/12
to
Stuart <Spa...@argonet.co.uk> wrote:
> I would recommend you check out:
>
> http://www.telnet.uk.com/index.php

Hmm... they have a spectrum analyser similar to mine there, but at a price
of about 8x what I paid for it (ebay, including the train fare to Scotland
to collect it). So depends what you want, really.

Theo

Stuart

unread,
Feb 17, 2012, 7:19:03 AM2/17/12
to
In article <zwu*m+...@news.chiark.greenend.org.uk>,
I'm sure it does.

I've been round the place a couple of times (about 20mins drive from my
home), two floors rammed with test equipment of every type and vintage.
Price on older kit often "open to negotiation"

Jules Richardson

unread,
Feb 17, 2012, 8:44:00 AM2/17/12
to
On Fri, 17 Feb 2012 06:41:30 +0000, Theo Markettos wrote:

> Rick Murray <heyrickma...@yahoo.co.uk> wrote:
>> Ah. Good point. What would you suggest for a hobbyist with small
>> budget, something in the order of 10MHz? I'm not really up with scopes,
>> the last time I used one was 1990 at school, a lovely dead-simple
>> Unilab single-trace model. We had a multi-input (four, if I remember
>> correctly) storage scope but it was so damn complicated to set up that
>> it had a thick layer of dust on it to show how often it saw the light
>> of day...
>
> It really depends what sort of bandwidth you need. Personally I think
> the features of an old pro scope (weighing 20kg) will far exceed those
> of a cheap modern thing.

I'm still trying to work out how to get a Tek 555 to me from Texas...
total weight with all the plugins is up around the 60kg mark :-) They're
still capable of doing useful work though, despite being 40-odd years old
technology (like you say, it's the analogue side that matters, and that's
not changed *that* much in all that time).

cheers

Jules

Dave Higton

unread,
Feb 17, 2012, 4:30:16 PM2/17/12
to
> I'm still trying to work out how to get a Tek 555 to me from Texas...
> total weight with all the plugins is up around the 60kg mark :-) They're
> still capable of doing useful work though, despite being 40-odd years old
> technology (like you say, it's the analogue side that matters, and that's
> not changed *that* much in all that time).

I'm stunned that anyone can suggest such a bizarre thing without
appearing to jest.

Dave

Chris Evans

unread,
Feb 20, 2012, 8:03:26 AM2/20/12
to
In article <almarsoft.6991...@news.orange.fr>, Rick Murray
http://www.cjemicros.co.uk/micros/individual/newprodpages/prodinfo.php?prodcode=COM-DIN41612CRA-1

http://www.cjemicros.co.uk/micros/individual/newprodpages/prodinfo.php?prodcode=COM-DIN41612C-1

I know we have one of them in stock, but I can't recall which it was when I
looked at them on Friday!

Chris Evans

--
CJE Micro's / 4D 'RISC OS Specialists'
Telephone: 01903 523222 Fax: 01903 523679
ch...@cjemicros.co.uk http://www.cjemicros.co.uk/
78 Brighton Road, Worthing, West Sussex, BN11 2EN
The most beautiful thing anyone can wear, is a smile!

Andrew Wickham

unread,
Feb 22, 2012, 11:30:28 AM2/22/12
to
On Feb 16, 11:00 am, Theo Markettos <theom
+n...@chiark.greenend.org.uk> wrote:
>
> My other thought is it might have been designed for some addons which used
> the Econet port for something else.  There was an EcoSCSI, I think there was
> an Econet joystick and an Econet sampler as well.  Can't remember if HCCS
> did one of these.  The danger is that not all the pins are wired, if they've
> only wired the subset for driving their addon.
>
> Theo

EcoSCSI was a Hugo Fiennes / The Serial Port production, labelled
"A5000 floptical
interface" and designed for the motherboard econet socket. So
presumably its software
would be looking for the same hardware address as a motherboard econet
- but
would that info be any more visible in the SCSI modules than in the
econet driver?

Andrew

Theo Markettos

unread,
Feb 22, 2012, 2:35:16 PM2/22/12
to
Andrew Wickham <ajw...@yahoo.co.uk> wrote:
> EcoSCSI was a Hugo Fiennes / The Serial Port production, labelled "A5000
> floptical interface" and designed for the motherboard econet socket. So
> presumably its software would be looking for the same hardware address as
> a motherboard econet - but would that info be any more visible in the SCSI
> modules than in the econet driver?

No need, the Archimedes Econet hardware address is published in the TRM. It's
0x033A0000. I think that's the same for all IOC hardware (ie everything
pre-RPC).

Since I have the TRM open, the address of the A3000 internal podule in sync
mode (ie the right mode for the Econet controller) is 0x033C4000.

Theo

MarkYoungIW

unread,
Feb 23, 2012, 4:47:59 AM2/23/12
to
>
> Since I have the TRM open, the address of the A3000 internal podule in sync
> mode (ie the right mode for the Econet controller) is 0x033C4000.
>
> Theo

That wasn't for me was it? I'm still awaiting Oscilloscope. : \
Message has been deleted

MarkYoungIW

unread,
Feb 24, 2012, 4:14:34 AM2/24/12
to
Had an eMail yesterday afternoon from China saying there had been a
problem with dispatch and they had refunded me!

Hmm......Brought something else instead. 20mhz was the best I could
find quickly and cheaply as I dont want to let things slow down to
much, I would
like to get this done to find out if HCCS did indeed have Econet in
mind.


Then I'll have to get my BBC back off a friend to test it!

MarkYoungIW

unread,
Feb 27, 2012, 8:16:19 AM2/27/12
to
Scope has arrived!! So I will start on this tonight when I have no
distractions!!

To confirm:-

The ADLC is the 3rd pin from the end opposite to the pins connected to
the Din on the econet module......if you see what I mean below!!

-------------------
| ..... |
| ADLC |
| | |
| ..o.............. |
-------------------

I will attach the probe on the scope to this, and set the trigger to
about 2.5v on the falling edge Single Shot (best start reading the
manual!!)

Having checked the TRM for the A3010 at:-

http://www.drobe.co.uk/archives/backwater.vetonline.vic.edu.au/pdf/A3020trm.pdf?4

Theo's post above was indeed for me showing the address for the
internal podule in 'Sync' mode is 0x033C4000

Now.........programming!

As simple as:-

*Memory 033C4000+2000

Then if nothing on that:-

*Memory 033C6000+2000

Then keep dividing which ever side works until a block of addresses is
found?

Thanks again for all the help

Mark

Theo Markettos

unread,
Feb 27, 2012, 10:41:14 AM2/27/12
to
MarkYoungIW <MarkY...@yahoo.com> wrote:
> Scope has arrived!! So I will start on this tonight when I have no
> distractions!!
>
> To confirm:-
[snip]

Without looking things up to confirm, that all sounds sensible...

Theo

MarkYoungIW

unread,
Feb 27, 2012, 5:20:56 PM2/27/12
to
Right, I set the scope up, had a couple of false starts, but!!

In the end I have come down the an address block of around:-

033C6716 to 033C6999

The reason I say around is because 033C6716, 033C6717, 033C618 and
033C6998 dont always trigger the scope.

Dont know if this is because somehow they are creeping between
samples, or perhaps something I know nothing about.......yet! : )

Massive sense of excitement when things start working as Theo
described!! Dont know if that makes me a little sad or perhaps TV
really is that bad now!!

Theo Markettos

unread,
Feb 27, 2012, 5:32:33 PM2/27/12
to
MarkYoungIW <MarkY...@yahoo.com> wrote:
> Right, I set the scope up, had a couple of false starts, but!!
>
> In the end I have come down the an address block of around:-
>
> 033C6716 to 033C6999
>
> The reason I say around is because 033C6716, 033C6717, 033C618 and
> 033C6998 dont always trigger the scope.

Hmm.. that's odd. You are doing this in hex, aren't you? So the address
after 033C6999 is 033C699A not 033C7000?

What I would expect is it to respond to a block like 033C6800 to 033C6FFF
inclusive, of some size you'd need to find out. In other words, it pays
attention to everything except address bits 0 to N where N is 10 in that
example.

Within that block, it depends what the address lines are connected to. For
example, if they're wired to LA2 and LA3, you'd see:

033C6800 = register 0
033C6804 = register 1
033C6808 = register 2
033C680C = register 3
033C6810 = register 0
etc

but if they're wired to LA8 and LA9 you'd see:
033C68xx = register 0
033C69xx = register 1
033C6Axx = register 2
033C6Bxx = register 3
033C6Cxx = register 0
etc

*Memory should show you if the same values are repeated over and over, or if
they're in larger blocks. Some chips have identifiable registers (eg chip
version ID) that can be used to check your guesses are sane, but the ADLC
only has 4 addresses so it's not easy to detect for sure.

Theo

MarkYoungIW

unread,
Feb 27, 2012, 6:33:04 PM2/27/12
to
Working in Hex (although made that mistake to start with!). Wondering
if I am having a problem with the speed of the scope. It seems if I
get it to read the same address over and over again eg:-

10 *MEMORY 033C6704
20 GOTO 10

It then eventually triggers the scope after 5-10 seconds.

I have done this on addresses back to 033C6704 and then 033C6703
doesnt trigger no matter how long you leave it, so going to have to
take the same approach heading forwards!

MarkYoungIW

unread,
Feb 27, 2012, 7:06:52 PM2/27/12
to
Taking the same principle as above the very last address I can get
with this method is 033C6BFF

So the range seems to be:-

033C6704 - 033C6BFF

For whatever reason the scope doesnt trigger so well at either end of
the range, it triggers on the first call in the middle of the range.

I think its time to pick it up in the morning.

Rick Murray

unread,
Feb 28, 2012, 12:10:27 AM2/28/12
to
On 27 Feb 2012 22:32:33 +0000 (GMT), Theo Markettos
<theom...@chiark.greenend.org.uk> wrote:

> example, if they're wired to LA2 and LA3, you'd see:

> 033C6800 = register 0
> 033C6804 = register 1

Just to expand upon this - such a thing is normal on RISC OS/ARM, so
you can access byte-wide registers with a word-wide processor and not
suffer undesirable side effects.


Best wishes,

Rick.

MarkYoungIW

unread,
Feb 28, 2012, 4:20:32 AM2/28/12
to
I think I found the problem with the addresses either end of the block
before I gave up last night. I think I had a bad ground, as when I
rectified that the addresses at either end of the block triggered as
well as all the others. I dont know exactly why this is, but it does
seem to have solved that.

However the block I have is still 033C6704 - 033C6BFF (1275)

I was expecting a block 1024 or 2048 long or something like that, but
I dont seem to be able to get it.

I will have a go this morning in case I have done something silly last
night (other than the not starting in hex and the bad ground throwing
the referencing off).

Stupidly I was working half in the dark last night, so very square
eyes this morning!!

Theo Markettos

unread,
Feb 28, 2012, 4:32:57 AM2/28/12
to
MarkYoungIW <MarkY...@yahoo.com> wrote:
> I think I found the problem with the addresses either end of the block
> before I gave up last night. I think I had a bad ground, as when I
> rectified that the addresses at either end of the block triggered as
> well as all the others. I dont know exactly why this is, but it does
> seem to have solved that.
>
> However the block I have is still 033C6704 - 033C6BFF (1275)
>
> I was expecting a block 1024 or 2048 long or something like that, but
> I dont seem to be able to get it.

Silly question #2... what size block are you using for *Memory? For
example, if you do *Memory 033C6704+100 then that'll hit all addresses from
033C6704 to 033C6800 (inclusive). So if it decodes at 033C6800 only then
you'll see a trigger because you're scanning the whole address space. But
if you do *Memory 033C6704+4 it won't trigger, because there's nothing at
033C6704 and no other address are scanned.

From the above I'd put my money on it being between 033C6800 to 033C6BFF,
which means you can use 033C6800 as the base address in the Econet module.
Then from the values returned you can try to work out how the registers are
spaced. Again I'd put my money on them being connected to LA2 and LA3, so
each word is a difficult register.

Theo

Theo Markettos

unread,
Feb 28, 2012, 4:39:27 AM2/28/12
to
The alternative is rather more cunning. If you have
033C68xx = register 0
033C69xx = register 1
etc

you can do a:
MOV r12,#&033C6800 ; (or the equivalent)
LDMIA r12,{r0-r7}

and fetch 8 consecutive words from register 0. If this register is buffered
such that each fetch gives you a new word from the buffer (eg as on IDE
controllers and serial ports) this can work out quicker than doing:

MOV r12,#&033C6800
LDR r0,[r12]
LDR r1,[r12]
LDR r2,[r12]
etc

Or it is on ARM2/3/6/7 - things get more complex on StrongARM and later.

Theo

MarkYoungIW

unread,
Feb 28, 2012, 4:57:13 AM2/28/12
to
Sounds like I am making a mistake.....perhaps.

I'm feeling a touch cloth headed this morning, but I have got it down
to:-

*MEMORY 033C5803+1000 and *MEMORY 033C6CAA+1000 doesnt trigger.

*MEMORY 033C5804+1000 and *MEMORY 033C6BFF+1000 does trigger.

This is where I got my range of 033C6704-033C6BFF from.

I feel that doesnt sound right now this morning!!

MarkYoungIW

unread,
Feb 28, 2012, 5:07:46 AM2/28/12
to
Yep, you are correct again!! It is block size!! Sure enough its
033C6800 to 033C6BFF

So now.........the modules. I dont have RO3.7 but I will have a look
through the !Boot dirs as its probably there.

MarkYoungIW

unread,
Feb 28, 2012, 5:27:53 AM2/28/12
to
Hmm.......Think I might have to do a bit of surfing. I dont have the
3.7 module.

MarkYoungIW

unread,
Feb 28, 2012, 8:57:06 AM2/28/12
to
On Feb 28, 10:27 am, MarkYoungIW <MarkYoun...@Yahoo.com> wrote:
> Hmm.......Think I might have to do a bit of surfing.  I dont have the
> 3.7 module.

I can't seem to find the module for RO3.7 Has anybody got a copy, or
can point me in the right direction.

Thanks
Message has been deleted
Message has been deleted

MarkYoungIW

unread,
Mar 2, 2012, 6:57:05 AM3/2/12
to
Google Groups, where have you been!?

I'm still moduleless if anyone can help.


Daft as it sounds, which module contains the detection? Net or NetI
or
both?


For interest this is what I got through the whole address range (now
I've worked out how to use the scope with the computer too!!)


http://img205.imageshack.us/img205/6027/triggerm.jpg


Not sure if I said in the end, but I brought a cheap OsziFOX. Old,
but seems to work well and is very portable, the only problem I had
was getting the software to work on Vista and getting it to work with
a USB to Serial adaptor, but after a few goes, it works!!!

Rick Murray

unread,
Mar 2, 2012, 4:39:27 PM3/2/12
to
On Fri, 2 Mar 2012 03:54:45 -0800 (PST), MarkYoungIW
<MarkY...@Yahoo.com> wrote:

> Google Groups, where have you been!?

Probably being tweaked for Google's new "All your base are mine"
policy.


> Daft as it sounds, which module contains the detection? Net or NetI

No quoting - we were talking Econet, right? Then perhaps the Econet
module. I would imagine it starts up and if no 'net found, quits.
Don't have the source handy (it's on some SD card or other) to check.


Best wishes,

Rick.

MarkYoungIW

unread,
Mar 2, 2012, 5:13:00 PM3/2/12
to
I feel like I'm going a little odd here. I have got RO3.7 now running
on RPCEmu so to extract the module I would do it the easy way by
loading up ZAP, then going Create->Get module-> and get whatever
module it is I need. Right?

If so I see no Econet. What am I doing wrong.
Message has been deleted

Theo Markettos

unread,
Mar 2, 2012, 7:46:17 PM3/2/12
to
You're right, it's Econet that talks to the hardware. The module is in ROM
in 3.7, but doesn't show up because it can't detect the Econet hardware, so
it stays dormant. According to my modules list:
http://www.chiark.greenend.org.uk/~theom/riscos/mods/370.html
it's between Draw and FileCore, so if you use *Modules to find out their
addresses and *Save out the region between them, you'll find the Econet
module (and BBCEconet too) from which you can extract it.

Do you have the Norcroft compiler? If so, instead you might want to try
building the Econet module yourself (as part of a ROOL RISC OS 5 build).
Sources in ROOL's tree here:

https://www.riscosopen.org/viewer/view/castle/RiscOS/Sources/Networking/Econet/

In particular you want to change the definition EconetController and build
it with PoduleCapable turned off (but possibly also change the FIQ number).
EconetController is defined in one of the platform files here:
https://www.riscosopen.org/viewer/view/castle/RiscOS/Sources/Programmer/HdrSrc/hdr/IO/
(think you want IOC-A1, though I'm not completely clear how you force a
build for that hardware)

It's a bit of a palaver to build - but you can now run RO5 in RPCEmu which
runs the whole build OK - might be better to make sure you get a module
built with the right options (eg that doesn't expect Risc PC stuff to be
available)

Build documentation here:
https://www.riscosopen.org/wiki/documentation/show/Technical%20notes

If that's too daunting, it might be a useful guide to navigating the
disassembly. This should be the exact source for the RO3.7 version.
https://www.riscosopen.org/viewer/view/castle/RiscOS/Sources/Networking/Econet/?only_with_tag=Econet-5_72#dirlist
Start at s/Module (pulls in other files at the bottom).

HTH,
Theo

Rick Murray

unread,
Mar 2, 2012, 9:32:00 PM3/2/12
to
On Fri, 2 Mar 2012 13:56:29 -0800 (PST), MarkYoungIW
<MarkY...@Yahoo.com> wrote:

> Hmm.....That makes it harder still!! I cant find a module called
> 'Econet', only in older machines. I will look again!

As I said, if it can't find the hardware, it kills itself off.
Completely. As in you won't see it.

As Theo said, you might need to save out a chunk of memory to get it
to be visible.


Look, just fired up RedSquirrel for you...

*ROMModules
[...snip...]
27 System ROM BBCEconet 0.16 Dormant
28 System ROM Econet 5.72 Dormant
[...]
46 - NetFS dormant
47 - NetFiler active
48 - NetPrint dormant
49 - NetStatus active
50 - NetUtils active

;-)


RISC OS 3.7?

Try:
*Save $.EconetMod &39369E8 +&3260


Best wishes,

Rick

MarkYoungIW

unread,
Mar 3, 2012, 3:58:05 AM3/3/12
to
Rick & Theo, what would I do without you.

OK, I will start with extracting the module from RO3.7

Module extracted.

I looked at the source of S.Module on Rick's site:- http://www.heyrick.co.uk/econet/
and looking at it the module is using #&03000000 as
=Podule_BaseAddressANDMask

Given that the address shows up in ZAP, so I will start with that and
see what happens.

Unfortuantely the disk drive has just given up on the actual hardware,
so I am just going to dig through my spare parts and find another. As
soon as I have the module on the actual hardware I will let you know
what happens.

Not sure if I have Norcroft compiler. I have loads of discs, but
can't remember that one. I will have a look.

MarkYoungIW

unread,
Mar 3, 2012, 9:24:07 AM3/3/12
to
On Mar 3, 8:58 am, MarkYoungIW <MarkYoun...@Yahoo.com> wrote:
> Rick & Theo, what would I do without you.
>
> OK, I will start with extracting the module from RO3.7
>
> Module extracted.
>
> I looked at the source of S.Module on Rick's site:-http://www.heyrick.co.uk/econet/
> and looking at it the module is using #&03000000 as
> =Podule_BaseAddressANDMask
>
> Given that the address shows up in ZAP, so I will start with that and
> see what happens.
>
> Unfortuantely the disk drive has just given up on the actual hardware,
> so I am just going to dig through my spare parts and find another.  As
> soon as I have the module on the actual hardware I will let you know
> what happens.
>
> Not sure if I have Norcroft compiler.  I have loads of discs, but
> can't remember that one.  I will have a look.
>
>

Ignore my last, I took a glance as I was shooting out and it seems
what it says in the source is not what I read!!

From what I see the ADLC address is stored in R10. What I can't
easily see is how it gets loaded there. I cant see
netslot_base=&0303B000 anywhere, so have nowhere I can see to directly
put my ADLC address.

The instruction where it first appears to look for the hardware is a
macro?

PHPSEI r5


I can see a podule loop

MarkYoungIW

unread,
Mar 3, 2012, 2:18:31 PM3/3/12
to
I see in a previous post Theo has noted a possible Typo in the TRM's:-

http://www.drobe.co.uk/archives/backwater.vetonline.vic.edu.au/pdf/RPCtrm.pdf?4

It would appear the RiscPC's network interface starts at:- &0302B0000
instead of the TRM's stated &0303B0000.

Unfortuantely this still leads me no closer as I cant see any
reference to this address in the module.

I see in your other post you mention once the module has checked
through the podule slots and found nothing it falls back to Archimedes
Econet Address &33A0000.

Again I can find nothing in the module relating to this address
either.

I feel I am missing yet another 'something obvious', but at the moment
I cannot see any addresses in the module, other than the:-

CMP r10, #&03000000

which I assume is to shorten the addresses down in R10 and then shove
it back in there? (which way round does it work?)

This still doesn't help me though, I am worried that this is the
easier option (and I can't manage that!!)

Rick Murray

unread,
Mar 3, 2012, 3:11:25 PM3/3/12
to
On Sat, 3 Mar 2012 06:24:07 -0800 (PST), MarkYoungIW
<MarkY...@Yahoo.com> wrote:

> The instruction where it first appears to look for the hardware is a
> macro?

Yes, I remember reading this years back and thinking "huh?". I can't
look for the macro on the live CVS as it got as far as
/castle/riscos/sources and seems to have died. So...

Okay, R11 would be non-zero if the module was loaded from a podule
(would be I/O address). All that code you see is to find Econet on a
podule version, and the code may not even be in the real module.
Skip all that rubbish. Go to the "AddressKnown" label, and a few
lines down you'll see the "or otherwise do this" code, namely:
LDR r10, =EconetController
This isn't present in my online docs (might be defined in the IOMD
header or somesuch) so looking at the module itself... oh, all that
podule stuff is there.
Okay, on a normal system we'd quickly drop through the podule check
to +&C8 which loads the ADLC address from +&424. It is &033A0000. We
then set some flags in Control Register 1 (hardware+0) then Control
Register 2 (hardware+4), and then read from Status Register 1
(hardware+0). We expect to see certain flags set/unset. Anything else
means no/incorrect hardware.
I would suggest ripping out that bit of code (r10=address and the
following seven instructions) to see if you can get your ADLC to
respond... but only once you know the address to activate the thing.

Hook your probe to the !CS pin on the ADLC and will go LOW when the
memory decode selects the chip. That's pin #9 (ninth down on the left
side). This would be pin #3 on the network interface socket.

It might work, for now, to take out the network card and just hook
your scope directly to the socket. Pin 3 will go to logic LOW when
the network chip would be selected. When you see that, you've found
your address...


Best wishes,

Rick.

Rick Murray

unread,
Mar 3, 2012, 3:28:59 PM3/3/12
to
On Sat, 3 Mar 2012 11:18:31 -0800 (PST), MarkYoungIW
<MarkY...@Yahoo.com> wrote:

> It would appear the RiscPC's network interface starts at:-
&0302B0000

I wonder if the decode is the same for Econet, or if that is more
aimed at the Ethernet module?


> Econet Address &33A0000.

Correct.


> Again I can find nothing in the module relating to this address
> either.

It's there. Read my post carefully. The +&xxx stuff give the
addresses where you'll find these things relative to the start of the
module. You *are* looking at it in !Zap (or StrongEd), right?


But as I said in my next post, it would be best for you to remove the
network card and simply look for the address that triggers the chip
select line. Can you see the podule circuit board clearly? Can you
work this backwards to determine an address? It is most likely going
to lie within the memory range of the podule itself, so I doubt
poking random other locations would be any point.

*Podules will tell you the podule number.
Then use:
SYS "Podule_HardwareAddresses" ,,,<podulenumber> TO base%
to get the podule base address.

Then you can either try reading words in turn from that address
(don't use *Memory, it'll be tedious), or you could try the
"Podule_RawRead" call? Don't worry about the network card yet. It
means *nothing* until you can determine the correct address to talk
to it.


Best wishes,

Rick.

MarkYoungIW

unread,
Mar 4, 2012, 8:15:40 AM3/4/12
to
On Mar 3, 8:28 pm, Rick Murray <heyrickmail-use...@yahoo.co.uk> wrote:
> On Sat, 3 Mar 2012 11:18:31 -0800 (PST), MarkYoungIW
>
I am using !ZAP at the moment for the module.


Haven't I already discovered the (ADLC/CS/68B54) address?

>Yep, you are correct again!! It is block size!! Sure enough its
>033C6800 to 033C6BFF

This is the address range that using *Memory triggered Pin 3 on the
econet board, no other addresses in the Podule range had an effect.

I will have another play with the module now, I did look at the 'If
not from a podule part' but I will have a much closer look.

MarkYoungIW

unread,
Mar 4, 2012, 9:30:44 AM3/4/12
to
OK. I have ZAP open with the Econet 5.72 loaded, and this is what I
see at +&C8 and the next 7 lines of code (have included a couple
either side).

000000C0 : BEQ &000000CC
000000C4 : B &00000088
------------------------------------
000000C8 : LDR R10,&00000424
000000CC : MOV R0,#&F8
000000D0 : STRB R0,[R10,#0}
000000D4 : MOV R0,#&7F
000000D8 : STRB R0,[R10,04]
000000DC : LDRB R1,[R10,#0]
000000E0 : TST R1,#&ED
000000E4 : BNE &00000168
------------------------------------
000000E8 : MOV R0,#&7F
000000EC : STRB R0,[R10,#4]

Theo Markettos

unread,
Mar 4, 2012, 12:35:28 PM3/4/12
to
MarkYoungIW <MarkY...@yahoo.com> wrote:
> OK. I have ZAP open with the Econet 5.72 loaded, and this is what I
> see at +&C8 and the next 7 lines of code (have included a couple
> either side).
[snip code]

That matches up with line 221 and following in:
https://www.riscosopen.org/viewer/view/castle/RiscOS/Sources/Networking/Econet/s/Module?rev=4.5;content-type=text%2Fx-cvsweb-markup

One thought I had was to change the podule detection code so it looks for an
HCCS Multipodule, but that code seems to use Podule_ReadInfo which isn't
present on RO3.1. I think my HAL26 module - see the Other Software page on
my website - provides it. If you wanted to take that route, you
want to change the code corresponding to line 220:

TEQEQ r14, #ProdType_Econet

(ProdType_Econet = 7)
to be whatever the numeric product type for the HCCS podule is (as returned
by various Podule SWIs).

Alternatively, more simply, change word &424 to be the address that you
found for the ADLC and try that. It appears that it does some probing of
the Econet chip - lines 225-307 in the source - so any of these tests
failing will cause the module not to initialise. If that's the case, the
spacing of the registers may be wrong.

If it initialises but doesn't work, there may be a problem with interrupt
numbering.

Theo

MarkYoungIW

unread,
Mar 4, 2012, 12:40:21 PM3/4/12
to
Still not getting this. I cannot see how to get my ADLC address
(033C6800) into R10.

I can't see how &33A0000 got into +&424 in the first place either.

I definately think my skill level is is far too low and rusty for
this. I was thinking I was going to ADR my address into R10 at +&C8 ,
but for the life of me can't get it right.

I really did think the ADLC address would be held in a string or SWI
or something.........too simple!?

MarkYoungIW

unread,
Mar 4, 2012, 12:53:42 PM3/4/12
to
> Alternatively, more simply, change word &424 to be the address that you
> found for the ADLC and try that.

Just to clarify I am using ZAP right (as I always used to use ArmDebug
but cant find it now)

Changing:-

000000C8 : LDR R10,&00000424

To:-

000000C8 : LDR R10,&033C6800

Brings back a 'Bad Instruction: Bad address offset' in ZAP.

cfe...@freeremoveuk.com.invalid

unread,
Mar 4, 2012, 3:32:19 PM3/4/12
to
In message
<932b9213-8d6d-4b74...@k29g2000yqc.googlegroups.com>
MarkYoungIW <MarkY...@Yahoo.com> wrote:

> > Alternatively, more simply, change word &424 to be the address that
> > you found for the ADLC and try that.
>
> Just to clarify I am using ZAP right (as I always used to use ArmDebug
> but cant find it now)

> Changing:-
>
> 000000C8 : LDR R10,&00000424
>
When you highlight 000000C8 in !Zap - press the right arrow key and you
will go to the number that is loaded into R10.


--
Colin Ferris Cornwall UK
Message has been deleted

Rick Murray

unread,
Mar 4, 2012, 4:03:30 PM3/4/12
to
On Sun, 4 Mar 2012 06:30:44 -0800 (PST), MarkYoungIW
<MarkY...@Yahoo.com> wrote:

> 000000C8 : LDR R10,&00000424

That's right. You're loading R10, the hardware address, from offset
+&424 in the module. If you look at that, you'll see it is the
well-known Econet address...


Best wishes,

Rick.

MarkYoungIW

unread,
Mar 4, 2012, 4:19:16 PM3/4/12
to
On Mar 4, 9:03 pm, Rick Murray <heyrickmail-use...@yahoo.co.uk> wrote:
> On Sun, 4 Mar 2012 06:30:44 -0800 (PST), MarkYoungIW
>
> <MarkYoun...@Yahoo.com> wrote:
> > 000000C8 : LDR  R10,&00000424
>
> That's right. You're loading R10, the hardware address, from offset
> +&424 in the module. If you look at that, you'll see it is the
> well-known Econet address...
>
> Best wishes,
>
> Rick.
>
>

Thanks Rick,
I am so sorry its taken me so long to open my eyes properly!

Interesting the Internal error: undefined instruction at &018A7AFC
That seemed to be a one off, and now I get:-

Internal error: undefined instruction at &0183DB5C (from cold start)
or
Internal error: undefined instruction at &018A7AFC (if I run the
module for a second, third after a ctrl+break).

The module wont run without a restart or ctrl+break after it has gone
wrong once.

Rick Murray

unread,
Mar 4, 2012, 4:22:45 PM3/4/12
to
On Sun, 4 Mar 2012 05:15:40 -0800 (PST), MarkYoungIW
<MarkY...@Yahoo.com> wrote:

>>033C6800 to 033C6BFF
> This is the address range that using *Memory triggered Pin 3 on the
> econet board, no other addresses in the Podule range had an effect.

That's a range of 1024 bytes, and normal podules only have 4K to play
with. It might be worth seeing if you could narrow it down any. You
don't want to trample on other stuff.

I would suggest you use something like:

; pseudocode - I'm writing this on my phone ;-)
DIM code% 64
P% = code%
[ OPT 3
SWI "OS_EnterOS"
LDR R0, [R1]
MOV PC, R14 ; might need to be MOVS to quit SVC mode?
]

addr% = &033C6800
REPEAT
PRINT "Testing &"+STR$~addr%
B% = addr%
CALL code%
A = GET
addr% = addr% + 4
UNTIL (addr% > &033C6BFF)
PRINT "Done."
END

Probably loads of bugs, but you get the general idea.


Once you've got the addresses that actually trigger the chip select
line, change the LDR to be an STR and see if this causes the R/!W to
change. If this works, then we're good to go for putting in the
Econet module.

You can then either code up the module check (five minutes work) or
just bung the new address into the Econet module at offset 424 (or
whatever it was). I would suggest you code the check as you can keep
an eye on what is going on, where with Econet it's a bit of an
all-or-nothing.


Best wishes,

Rick.

MarkYoungIW

unread,
Mar 4, 2012, 4:25:46 PM3/4/12
to
Thats odd, I think there is something wrong with my laptop.

I posted before the last comment to say firstly, sorry Rick for being
so blind, I see clearly now the content of +&424 and dont know why I
was missing it before. I have changed it to my ADLC address and now
have the module initialising and bringing up:-


Configured network station number is invalid, using 1 instead.

Interesting the Internal error: undefined instruction at &018A7AFC
(only got this once)

Internal error: undefined instruction at &0183DB5C (from cold start)
or
Internal error: undefined instruction at &018A7AFC (if I run the
module for a second, third after a ctrl+break).

So, things have got a little further, but help is still much needed.
Message has been deleted

Rick Murray

unread,
Mar 4, 2012, 4:36:24 PM3/4/12
to
On Sun, 4 Mar 2012 09:40:21 -0800 (PST), MarkYoungIW
<MarkY...@Yahoo.com> wrote:

>> 000000C8 : LDR  R10,&00000424
> Still not getting this. I cannot see how to get my ADLC address
> (033C6800) into R10.
> I can't see how &33A0000 got into +&424 in the first place either.
> I definately think my skill level is is far too low and rusty for
> this. I was thinking I was going to ADR my address into R10 at
+&C8 ,
> but for the life of me can't get it right.

Ah..... I feel an ARMwiki tutorial coming on. ;-)

Okay, I'll keep it brief.

There is no such thing as ADR. All it does is take the current value
of PC (more or less "here", anything more complicated is a
distraction) and fiddle it with ADD or SUB to generate an address
pointing to something nearby. Like a string to pass to a SWI, that
sort of thing.

What you are trying to do is MOVE an immediate value (that'd be your
address) into R10. For this you might think you would need the MOV
instruction. However you simply cannot encode a MOV instruction to be
capable of addressing the entire 32 bit addressing range as you need
space for the instruction itself. Therefore MOV comes with a bunch of
complications when using big numbers.

This takes us to LDR. LoaD Register. If we assume the following:
LDR Rx, [Ry]
then what we are telling the processor is to take the word at Ry and
stuff its value into Rx.

There are many variants of LDR, don't concern yourself with them for
the moment.


In reality, we have:
LDR R10, +&424
which is asking for the word at &424 to be placed into R10.

Therefore, to alter the address used, simply alter the word stored at
offset &424.


Best wishes,

Rick.

MarkYoungIW

unread,
Mar 4, 2012, 4:48:25 PM3/4/12
to
Word at &424 changed.

Module starts but errors.

Configured network station number is invalid, using 1 instead.


Interesting the Internal error: undefined instruction at &018A7AFC
(only got this once)
or
Internal error: undefined instruction at &0183DB5C (from cold start)
or
Internal error: undefined instruction at &018A7AFC (if I run the
module for a second, third after a ctrl+break).

I think we might be typing too fast here for Google to keep up with.

cfe...@freeremoveuk.com.invalid

unread,
Mar 4, 2012, 6:23:08 PM3/4/12
to
In message
<54755d7b-c63a-42d4...@p7g2000yqk.googlegroups.com>
MarkYoungIW <MarkY...@Yahoo.com> wrote:

> On Mar 4, 8:32 pm, cfer...@freeRemoveuk.com.invalid wrote:
> > In message
> > <932b9213-8d6d-4b74-a548-26be7bec7...@k29g2000yqc.googlegroups.com>
> > MarkYoungIW <MarkYoun...@Yahoo.com> wrote:
> >
[snip]
>
> I couldn't work out how to change it in ZAP (which I am going back to
> now as I like it, although had never really used it until recently)
>
Highlight the number you wish to change.
Press return - note at bottom of page - the number.
Ctrl U
Type 'EQUD &FFFFFFF' or what ever number you want.
Rtn

Theo Markettos

unread,
Mar 4, 2012, 7:54:00 PM3/4/12
to
Rick Murray <heyrickma...@yahoo.co.uk> wrote:
> On Sun, 4 Mar 2012 05:15:40 -0800 (PST), MarkYoungIW
> <MarkY...@Yahoo.com> wrote:
>
> >>033C6800 to 033C6BFF
> > This is the address range that using *Memory triggered Pin 3 on the
> > econet board, no other addresses in the Podule range had an effect.
>
> That's a range of 1024 bytes, and normal podules only have 4K to play
> with. It might be worth seeing if you could narrow it down any. You
> don't want to trample on other stuff.

It's a range of 1K words, or 256 byte-wide quantities (the other three bytes
being garbage). A podule has 16K words, or 4K byte-wide quantities. 1/16th
of a podule seems like a sensible amount of address space for it to have
(1/2 for the ROM, rest of address space diced up for ROM latch, interrupt
status/control, individual micropodules).

Theo

Rick Murray

unread,
Mar 4, 2012, 8:20:30 PM3/4/12
to
On 05 Mar 2012 00:54:00 +0000 (GMT), Theo Markettos
<theom...@chiark.greenend.org.uk> wrote:

> A podule has 16K words, or 4K byte-wide quantities. 1/16th

Ah, I see. The 4Kb mentioned in the PRM is bytes mapped to words.
Marvellous, the docs tell you absolutely not to touch Extension ROMs
and then goes into a lot of detail about said ROMs, but something
like this isn't made particularly clear...
[and that Joiner program - yeuch, what horrid looking code...]


Best wishes,

Rick.

Theo Markettos

unread,
Mar 4, 2012, 8:24:59 PM3/4/12
to
MarkYoungIW <MarkY...@yahoo.com> wrote:
> Using Arm_Debug which I understand.........I now have
>
> Configured network station number 1 is invalid, using 1 instead.

OK, that's promising, it hasn't fallen over due to lack of ADLC (so it
detected it fine), it's fallen over because the station number byte in CMOS
is wrong. That can be fixed with !Configure when the card is fully working.

> Internal error: undefined instruction at &018A7AFC

So something else has gone wrong. The trouble is, that address is only
meaningful to your machine unless you tell us where the base of the Econet
module is (ie the first number given by *Modules, starting 018....). But if
it's crashing you might not be able to run *Modules, or the module might not
stay around long enough to show up in *Modules.

Justin Fletcher wrote a tool called 'addr' that would display where such an
address came from, but I can't seem to find it at the moment. I'm not sure
if there's a better way to find out the correct location of the address.

One thing that's still wrong is the FIQ number. It's econet_FIQ_bit here:
https://www.riscosopen.org/viewer/view/castle/RiscOS/Sources/Networking/Econet/s/Module?rev=4.5
Motherboard Econet uses bit 2 (ie 1<<2=4) and podules use bit 6 (ie
1<<6=64), so you'll need to change it to 64. Since the RO3.7 module is
built with the PoduleCapable conditional assembly flag turned on, you just
need to change it once in the instruction found on line 444 (search for
XPodule_ReadInfo in disassembly to find the address).

There's also a FIQ-to-IRQ downgrade bit. I'm confused as to how this works.
Here's the list:
http://www.chiark.greenend.org.uk/~theom/riscos/docs/interrupt-sources.txt

OS FIQ downgrade is IRQ register A bit 7, and that's what Econet uses (line
965). But there's also a podule FIQ downgrade, bit 0 of register B. Line
965 uses the bit from register A, which is what you'd expect for a
motherboard card. Given that the Econet module also supports a podule I
think you might be safe without changes, but I'm just flagging this up as
it's not completely clear.

Anyway, you've made some progress...

Theo

MarkYoungIW

unread,
Mar 5, 2012, 4:48:12 AM3/5/12
to
> > Internal error: undefined instruction at &018A7AFC
>
> So something else has gone wrong.  The trouble is, that address is only
> meaningful to your machine unless you tell us where the base of the Econet
> module is (ie the first number given by *Modules, starting 018....).  But if
> it's crashing you might not be able to run *Modules, or the module might not
> stay around long enough to show up in *Modules.
>
> Justin Fletcher wrote a tool called 'addr' that would display where such an
> address came from, but I can't seem to find it at the moment.  I'm not sure
> if there's a better way to find out the correct location of the address.

I don't have this either, but looks like it might need finding.

> One thing that's still wrong is the FIQ number.  It's econet_FIQ_bit here:https://www.riscosopen.org/viewer/view/castle/RiscOS/Sources/Networki...
> Motherboard Econet uses bit 2 (ie 1<<2=4) and podules use bit 6 (ie
> 1<<6=64), so you'll need to change it to 64.  Since the RO3.7 module is
> built with the PoduleCapable conditional assembly flag turned on, you just
> need to change it once in the instruction found on line 444 (search for
> XPodule_ReadInfo in disassembly to find the address).
>
> Theo

OK, XPodule_ReadInfo doesn't appear, but I am pretty sure this is the
right selection of code, with line 444 relating to +&214

00000214 MOV R1,#4
00000218 STMDB R13!,{R0,R1}
0000021C MOV R0,#&06000000
00000220 MOV R1,R13
00000224 MOV R2,#8
00000228 MOV R3,R10
0000022C SWI XPodule_13

ZAP wont allow #4 to be changed to #64. Is this where you meant?

Thanks

Theo Markettos

unread,
Mar 5, 2012, 10:28:08 AM3/5/12
to
MarkYoungIW <MarkY...@yahoo.com> wrote:
> OK, XPodule_ReadInfo doesn't appear, but I am pretty sure this is the
> right selection of code, with line 444 relating to +&214

Ah yes, it won't disassemble right because the SWI doesn't exist on RO3.1
machines.

> 00000214 MOV R1,#4
> 00000218 STMDB R13!,{R0,R1}
> 0000021C MOV R0,#&06000000
> 00000220 MOV R1,R13
> 00000224 MOV R2,#8
> 00000228 MOV R3,R10
> 0000022C SWI XPodule_13
>
> ZAP wont allow #4 to be changed to #64. Is this where you meant?

Yes, that looks like the right place. Surprised Zap won't let you change it.
You are highlighting the correct line by clicking on it, then pressing
Return and editing it in the line at the bottom of the window?

Theo

MarkYoungIW

unread,
Mar 5, 2012, 10:46:37 AM3/5/12
to
On Mar 5, 3:28 pm, Theo Markettos <theom+n...@chiark.greenend.org.uk>
wrote:
When I change the #4 to #64 as soon as I press return, Zap changes it
to #&40

This does make a difference to the way it crashes though. With #4 in
the module errors, and then wont run again without freezing. With
#&40 in the module will run and error over and over again!

Still no closer to finding !addr I've had a good look through my
collection and on various internet archives.

Rick Murray

unread,
Mar 5, 2012, 11:37:53 AM3/5/12
to
On Mon, 5 Mar 2012 07:46:37 -0800 (PST), MarkYoungIW
<MarkY...@Yahoo.com> wrote:

> When I change the #4 to #64 as soon as I press return, Zap changes
it
> to #&40

That's correct.

Disassemblies show you stuff in hex. You're giving a base 10.

64 = &40

If you meant 64 decimal (it's a flag/bit setting, yes?), then &40 is
good.

If you meant it in hex, specify "&64".

Before you reply, please take a few moments to brush up on
hexadecimal numbers. This might help:
http://www.mathsisfun.com/hexadecimals.html


Best wishes,

Rick.

MarkYoungIW

unread,
Mar 5, 2012, 12:27:17 PM3/5/12
to
Hi Rick,
Thanks for the pointer to the Hex page. I had been using a Hex
calculator to double check my hex working when I was looking for the
ADLC addresses as I do keep stumbling back into decimal (which is
obviously showing!!)

I think what I was expecting was that as 4 didnt show a '&' then 64
would be the same no &. Certainly the jump from #4 to #&40 was what
threw me, although the 64 being 40 in hex makes sense when you say it,
just a shame my brain didn't clock on to it.

Now to find a way of finding what the 'undefined instruction at'
relates to. Still searching for !addr......lots of disc errors in my
old floppies and reading through various Acorn sites it seems
unfortunately Justin Fletchers site has long gone

Theo Markettos

unread,
Mar 5, 2012, 7:58:01 PM3/5/12
to
MarkYoungIW <MarkY...@yahoo.com> wrote:
> Now to find a way of finding what the 'undefined instruction at'
> relates to. Still searching for !addr......lots of disc errors in my
> old floppies and reading through various Acorn sites it seems
> unfortunately Justin Fletchers site has long gone

Here's an idea. Try this code:

filename$="$.Econet"
SYS "OS_File",5,filename$ TO ,,,,length%
SYS "OS_Module",6,length%+4 TO ,,mem%
!mem%=length%
SYS "OS_File",12,filename$,mem%+4,0,""
PRINT "Base &";~(mem%+4)
SYS "OS_Module",10,mem%+4

What this does is claims a block in RMA, prints the address, loads the
module into it and then tries to link it into the module chain. That will
fail, but you'll then have the address to calculate the offset for.

In traditional Usenet style, completely untested.

Theo

MarkYoungIW

unread,
Mar 6, 2012, 3:40:01 AM3/6/12
to
On Mar 6, 12:58 am, Theo Markettos <theom+n...@chiark.greenend.org.uk>
wrote:
Hi Theo, thanks for the program. I have given it a go and..

Program freezes computer if:-

!mem%=length%

Program runs but corrupts the fonts to something resembling a QR Bar
Code if:-

mem%=length%

druck

unread,
Mar 6, 2012, 4:41:36 AM3/6/12
to
On 04/03/2012 17:53, MarkYoungIW wrote:
>> Alternatively, more simply, change word&424 to be the address that you
>> found for the ADLC and try that.
>
> Just to clarify I am using ZAP right (as I always used to use ArmDebug
> but cant find it now)
>
> Changing:-
>
> 000000C8 : LDR R10,&00000424
>
> To:-
>
> 000000C8 : LDR R10,&033C6800
>
> Brings back a 'Bad Instruction: Bad address offset' in ZAP.

First, the address in an LDR can only be a small offset from the current
PC, something like +/- 10 bits, with wrapping around 0.

Second you don't want to load the word from &033C68000, you want put the
value &033C6800 at the location &424, so it's loaded in to R10.

---druck

druck

unread,
Mar 6, 2012, 4:51:58 AM3/6/12
to
On 04/03/2012 20:59, MarkYoungIW wrote:
> Thank you Colin, I had given up tonight then saw you message, and
> although it wasn't completely the solution, it brought me back to what
> Rick has been saying all along about reading thoroughly!! When I went
> back to +&424 the econet address was there staring at me!
>
> I couldn't work out how to change it in ZAP (which I am going back to
> now as I like it, although had never really used it until recently)#

Change ZAP to word mode in order to alter a 32bit value, then switch
back in to assembler mode.

> So having found Arm_Debug which I understand I have changed the value
> and now have.....
>
> -----------------------------------------------------------------
>
> Configured network station number 1 is invalid, using 1 instead.
>
> Internal error: undefined instruction at&018A7AFC
>
> ------------------------------------------------------------------

You need to use the where command line utility at
http://www.armclub.org.uk/32bit/ It will tell you the offset in to the
module of the error, then you can check what you've managed to bugger up.

> Then when I OK I get diffent errors/freezes each time.

When messing with assembler modules, it has to be 100% correct, anything
less and difficult to track down random crashes will haunt you forever.

> So, now to look at this new problem.........and learn a bit more about
> ZAP it seems!!

I think a bit more assembler knowledge is need too. Peter Crockerell's
ARM Assembly Languages Programming is a good start for the old 26bit
ARMs we are playing with here. It's online at

http://www.peter-cockerell.net/aalp/

---druck

MarkYoungIW

unread,
Mar 6, 2012, 5:48:38 AM3/6/12
to
On Mar 6, 9:51 am, druck <n...@druck.org.uk> wrote:
> On 04/03/2012 20:59, MarkYoungIW wrote:
>
> > Thank you Colin, I had given up tonight then saw you message, and
> > although it wasn't completely the solution, it brought me back to what
> > Rick has been saying all along about reading thoroughly!!  When I went
> > back to +&424 the econet address was there staring at me!
>
> > I couldn't work out how to change it in ZAP (which I am going back to
> > now as I like it, although had never really used it until recently)#
>
> Change ZAP to word mode in order to alter a 32bit value, then switch
> back in to assembler mode.
>
> > So having found Arm_Debug which I understand I have changed the value
> > and now have.....
>
> > -----------------------------------------------------------------
>
> > Configured network station number 1 is invalid, using 1 instead.
>
> > Internal error: undefined instruction at&018A7AFC
>
> > ------------------------------------------------------------------
>
> You need to use the where command line utility athttp://www.armclub.org.uk/32bit/It will tell you the offset in to the
> module of the error, then you can check what you've managed to bugger up.

Unfortuantely it seems Econet errors then kills itself as 'Where'
reports no module at the address. ('Where' does get the address Econet
errored at though)

> I think a bit more assembler knowledge is need too. Peter Crockerell's
> ARM Assembly Languages Programming is a good start for the old 26bit
> ARMs we are playing with here. It's online at
>
> http://www.peter-cockerell.net/aalp/
>
> ---druck
>
>

I couldn't agree with you more. I am re-reading my original Assembler
books, but the link you have given looks really good too, so I will
certainly have a look at that too.

Theo Markettos

unread,
Mar 6, 2012, 6:16:29 AM3/6/12
to
MarkYoungIW <MarkY...@yahoo.com> wrote:
> On Mar 6, 12:58 am, Theo Markettos <theom+n...@chiark.greenend.org.uk>
> wrote:
> > MarkYoungIW <MarkYoun...@yahoo.com> wrote:
> > > Now to find a way of finding what the 'undefined instruction at'
> > > relates to.  Still searching for !addr......lots of disc errors in my
> > > old floppies and reading through various Acorn sites it seems
> > > unfortunately Justin Fletchers site has long gone
> >
> > Here's an idea.  Try this code:
> >
> > filename$="$.Econet"
> > SYS "OS_File",5,filename$ TO ,,,,length%
> > SYS "OS_Module",6,length%+4 TO ,,mem%
> > !mem%=length%
> > SYS "OS_File",12,filename$,mem%+4,0,""
> > PRINT "Base &";~(mem%+4)
> > SYS "OS_Module",10,mem%+4

Oops, third line should be:
SYS "OS_Module",6,,,length%+4 TO ,,mem%
and line 4 is correct (ie it does need a ! ).

You can insert a:
PRINT "Claimed block of &" ~length% " bytes at &" ~mem%
after line 3 if you like, as that would check that the block is being
claimed OK.

Theo
(Remote debugging via Usenet... who needs gdb? :-)

MarkYoungIW

unread,
Mar 6, 2012, 6:29:04 AM3/6/12
to
On Mar 6, 11:16 am, Theo Markettos <theom+n...@chiark.greenend.org.uk>
OK, that seems to have worked. It has come back with:-

Claimed block of &3280 bytes at &185A884
Base &185A888

And then Econet has:-
Undefined instruction at &0185B080

MarkYoungIW

unread,
Mar 6, 2012, 7:54:46 AM3/6/12
to
Right, the offset then I take it is 7FB

This is fairly hard to track down in the source code, but it appears
to be in the section:-

1027: ReInit ; Violently re-initialise things, take no chances

I can trace the code down to &7BC which appears to match up to 1043,
then it all gets a little hazy.

MarkYoungIW

unread,
Mar 6, 2012, 8:14:53 AM3/6/12
to
7F8 Even!!

Rick Murray

unread,
Mar 6, 2012, 11:04:56 AM3/6/12
to
On Tue, 6 Mar 2012 04:54:46 -0800 (PST), MarkYoungIW
<MarkY...@Yahoo.com> wrote:

> 1027: ReInit ; Violently re-initialise things, take no chances

This is why I suggested taking some of the ADLC startup code and
writing it into a short program to talk directly to the chip. The
Econet module needs everything to be EXACTLY correct, or else it'll
come unstuck. What you see is the unstuck part.

For instance, are we sure it is wired up that each register is on a
+4 address? Remember this isn't a flat Econet podule, it's a part of
something else, so while it *should* be simple, life has a habit of
being otherwise...


Best wishes,

Rick.

MarkYoungIW

unread,
Mar 6, 2012, 11:28:20 AM3/6/12
to
Just looking at the code it would seem that the error is either in
ReInit or Reset:-

The notes for these state:-

Note that this and the next entry point are also used as an exit from
FIQ code after an error so it has to EXIT with RTFIQ

I did have a go at taking part of the ADLC startup code and putting it
into its own program, but was unsure what I was trying to achieve with
this other than triggering ADLC.

The bad news is I am away for 10 days from tomorrow morning, and
unfortuantely dont have room in my cases for the A3010. The good news
is I have room for some reading material for the plane!

Theo Markettos

unread,
Mar 6, 2012, 11:33:15 AM3/6/12
to
MarkYoungIW <MarkY...@yahoo.com> wrote:
> 7F8 Even!!

Aha, found it. In the SetFIQ macro (see Macros.s)
https://www.riscosopen.org/viewer/view/castle/RiscOS/Sources/Networking/Econet/s/Macros?rev=4.4
the macro uses MRS and MSR instructions to switch into FIQ32 mode - because
ARM6 and later has two kinds of FIQ mode, 26 and 32 bit mode. RISC OS
normally runs in 26 bit user/supervisor mode, but uses 32 bit mode for FIQs.
ARM2 doesn't have any 32 bit modes, or MRS/MSR intructions, which is why
it's falling over.

This is the code:

212: [ {TRUE} ; ; Cope with
32bit CPUs
213: MRS $regc, CPSR ; Switch to
_32 mode with IRQs and FIQs off
214: ORR $regb, $regc, #I32_bit :OR: F32_bit ; Has to be
done in two stages because RISC OS
215: MSR CPSR_cxsf, $regb ; can't
return to a 32bit mode and interrupts
216: ORR $regb, $regb, #2_10000 ; can occur
after the MSR but before the following
217: MSR CPSR_cxsf, $regb ;
instruction.
218: ]
219: ADR $rega, FIQVector
220: LDR $regb, =&E51FF004 ; LDR pc, .+4
= LDR pc, [ pc, #-4 ]
221: STR $regb, [ $rega ], #4
222: [ {TRUE} ; ; Cope with
32bit CPUs
223: ; And switch back
224: MSR CPSR_cxsf, $regc
225: ]
226: [ StrongARM
227: ; Local version of OS_SynchroniseCodeAreas, because it's far too
much hassle
228: ; calling a SWI in these circumstances
229: MRC ARM_config_cp, 0, $regc, ARM_ID_reg, C0, 0
230: AND $regc,$regc,#&F000
231: TEQS $regc,#&A000
232: BNE %FT01 ; not StrongARM
233: ; We want to clean the (32-byte) data cache line containing
234: ; the FIQVector word.
235: ADR $regc, FIQVector
236: MCR ARM_config_cp, 0, $regc, ARM8A_cache_reg, C10, 1 ; clean DC
entry
237: MCR ARM_config_cp, 0, $regc, ARM8A_cache_reg, C10, 4 ; drain WB
238: MCR ARM_config_cp, 0, $regc, ARM8A_cache_reg, C5, 0 ; flush IC
239: ; Normally 4 NOPs could be required to make sure the
240: ; modified instruction wasn't in the pipeline. Fortunately
241: ; we know that the FIQ vector can't be called within 3
242: ; instructions of here (and if an FIQ were to go off, the
243: ; pipeline would be flushed anyway).
244: 1
245: [ ARM810support
246: SUB PC,PC,#4 ; flushes branch predict on ARM810 (local
equivalent of OS_SynchroniseCodeAreas)
247: ]
248: ]

First, you don't need lines 226-248, so you can NOP those out (replace each
instruction with MOV r0,r0 so the length is the same). I think you'll get
the StrongARM code, but not the ARM810.

Now, lines 213-217 set svc32 mode with IRQs and FIQs off. I think this will
work as a replacement to turn off IRQs and FIQs (since ARM2 doesn't have a
svc32 mode, only svc mode):

MOV $regc, pc
ORR $regb, $regc, #(1<<26) OR (1<<27)
TEQP $regb, #0

then lines 219-221, then replace 222-225 with:

TEQP $regc, pc
(replacing spare instructions with MOV r0,r0)

This is where it gets messy. You'll need to replace every instance of
SetFIQ with the same code. I've written the above in macro form, because
each macro instance may use different registers. Note that it's invoked in
other source files too, like Background.s

I /think/ that should be it (ie there's no other MSR/MRS instructions in
Macros. But I may well have missed something.

Theo

MarkYoungIW

unread,
Mar 6, 2012, 12:22:28 PM3/6/12
to
Sounds good...........out of myt depth, but good!!

The NOPing is no problem. I can see the code pretty clearly at +&7F4
- +&810.

The lines of code for 213-217

The rest......I'm not understanding how I will be getting this into
the module, I am guessing as you have done it in Macro format it needs
something more than ZAP to make the amendments.

For interest just NOPing the lines of code for 226-248 has allowed the
module to load and stay loaded with no errors other than 'Configured
Network Station Number is Invalid, using 1 instead'. It has also
meant that 'Net' in Configure is no longer greyed out.

MarkYoungIW

unread,
Mar 6, 2012, 2:49:25 PM3/6/12
to
Well,
I've had a play, and everything seems to load up as if its expecting
the interface to work, so I guess all thats left to do is get my BBC
back and set up a network and see if they can talk. (unless there is
another way of testing in the interim).

Think I'm lacking a few econet components too, so will have to get on
that.

As far as it goes, everything else still seems to be behaving, I can't
see any side effects yet.

Theo Markettos

unread,
Mar 6, 2012, 6:09:08 PM3/6/12
to
MarkYoungIW <MarkY...@yahoo.com> wrote:
> The rest......I'm not understanding how I will be getting this into
> the module, I am guessing as you have done it in Macro format it needs
> something more than ZAP to make the amendments.

All I mean by that is that a macro defined as
201: MACRO
202: $a SetFIQ $dest,$rega,$regb,$style,$init,$regc
203: ; $dest is the label of the code to jump to
204: ; $rega is the register to use for the pointer
205: ; $regb is the register to use for the instruction
206: ; $regc is an extra register required to preserve the mode
during initialisation

and invoked by:

1074: SetFIQ StartReception, r8, r9, Long, Init, r10 ; Inits the LDR pc, .+4 instruction as well

Means that $dest should be replaced by StartReception, $rega with r8, $regb
with r9, $style with Long, etc etc. In other words, it assembles the code
within the macro (lines 201-275 in Macros.s in this case), replacing the
$parameters with those defined by the invocation of the macro. So in the
above macro invocation the line:
216: ORR $regb, $regb, #2_10000 ; can occur after the MSR but before the following

would be assembled as ORR r8, r8, #&10. But if the macro was invoked
with something else from r8 as the second parameter, you'd use that instead.

> For interest just NOPing the lines of code for 226-248 has allowed the
> module to load and stay loaded with no errors other than 'Configured
> Network Station Number is Invalid, using 1 instead'. It has also
> meant that 'Net' in Configure is no longer greyed out.

That's promising. But with FIQs off you won't receive any data, so you do
need to get them working.

Theo

MarkYoungIW

unread,
Mar 6, 2012, 6:22:58 PM3/6/12
to
On Mar 6, 11:09 pm, Theo Markettos <theom+n...@chiark.greenend.org.uk>
wrote:
Thanks for the explanation Theo, Will give me something to look
forward to when I get back. Hopefully I should have brushed up a bit
by then.

Thanks again for all the help, it does feel like progress. Hopefully
it will work!

Regards
Message has been deleted

MarkYoungIW

unread,
Mar 29, 2012, 4:28:51 AM3/29/12
to
OK, everything is here, so I will put a crude network together this
evening with the BBC and the A3010. For the testing side of things I
see RO3.1 does not have the notify command, so just wondering what
people would recommend for the best way to simply test data transfer.

I have an iCubed disc with Level 4 Advanced on it, not actually sure
what to do with it, but I guess I could set that up on the A3010 (if I
can work out how), and use it to serve Chuckie Egg to the BBC or
something.

I did attach the clock to the A3010 breifly last night and *Station
provides 'Station 5: No Clock' when the clock isn't attached, and
'Station 5' when the clock is attached, so that looks promising!
Message has been deleted
Message has been deleted
Message has been deleted
Message has been deleted

MarkYoungIW

unread,
Mar 30, 2012, 5:21:07 PM3/30/12
to
Hi Theo really sorry about this, after rereading your post above I
think infact your amendments were meant to be carried out as I have
done below, I now have another internal error which seems to offset at
1D64 which I fairly sure is Line 25 in S.Recieve

https://www.riscosopen.org/viewer/view/castle/RiscOS/Sources/Networking/Econet/s/Receive?rev=4.4;content-type=text%2Fx-cvsweb-markup

07D0 MOV R10,PC
07D4 ORR R9,R10,#&0C000000
07D8 TEQP R9,#0
07DC MOV R0,R0
07E0 MOV R0,R0
07E4 MOV R10,PC
07E8 ORR R9,R10,#&0C000000
07EC TEQP R9,#0
07F0 TEQP R10,PC

2CB0 MOV R2,PC
2CB4 ORR R1,R2,#&0C000000
2CB8 TEQP R1,#0
2CBC MOV R0,R0
2CC0 MOV R0,R0
2CC4 MOV R2,PC
2CC8 ORR R1,R2,#&0C000000
2CCC TEQP R1,#0
2CD0 TEQP R2,PC

318C MOV R13,PC
3190 ORR R9,R13,#&0C000000
3194 TEQP R9,#0
3198 MOV R0,R0
319C MOV R0,R0
31A0 MOV R13,PC
31A4 ORR R9,R13,#&0C000000
31A8 TEQP R9,#0
31AC TEQP R13,PC
Message has been deleted
Message has been deleted
It is loading more messages.
0 new messages