Zero Page Protection: The shift towards RISC OS running on multiple cores

posted in: General, Software | 0

A few years ago, RISC OS Open announced that a large number of applications would soon no longer be able to access the ARM vectors, kernel workspace, or any memory in what is known as ‘zero page’, which the memory from addresses 0 to 4095.

Fixing these zero page memory bugs in anything that runs on RISC OS will be a huge step towards allowing RISC OS to move closer to running on multiple cores in modern ARM processors, and to greatly improve system stability by removing a common class of programming mistake when applications use an address of zero by mistake.

Since ROOL’s announcement over three years ago, they’ve announced that over 70 bugs that needed addressing within RISC OS itself have been resolved – while the response from developers in the community has been pretty good, with a good number of popular applications being fixed to avoid huge compatibility issues later on down the line.

With the introduction of RISC OS 5.24, to help with compatibility a largely empty ‘page’ of read-only memory has been positioned where the old ‘zero page’ used to be, so accidental reads will continue to be hidden until any of the few remaining commonly-used buggy applications are fixed.

What’s really good to see here is the community seems to be responding in a very positive way towards upgrading applications now to avoid compatibility issues later on down the line.

Obviously there will still be some problems when RISC OS moves towards utilising multiple cores (or at least laying down the foundations for it), afterall we’re still coming across a few widely used applications that aren’t 32-bit compatible, 16 years after the first 32-bit RISC OS computer came out. For the most part however, it goes to show to that most people involved with RISC OS seem to be working towards a common goal now rather than the ROOL/RISCOSLtd. split that was very prevalent a few years ago.

A list of applications that have been reported and fixed is available on ROOL’s website should you want to take a gander.

A look at RISC OS 5.24 stable

posted in: General | 0

RISC OS 5.24 stable is now out for all to take advantage of the 708 changes since 2015’s 5.22 stable release. 20 or so of those changes would be considered major improvements.

The biggest news is the addition of RISC OS’ ability to handle larger hard drives, JPEG support, monitor EDID support and a number of tweaks to the network stack.

This release incorporates a huge 707 changes for the OMAP3 platform used by the ARMini and 708 changes for OMAP4, used by the PandaRO and ARMiniX computers. Older platforms such as Tungsten (Iyonix PC) and IOMD (RiscPC & A7000 range) have also seen a deludge of changes. For the first time the stable release includes the Raspberry Pi and Titanium ports.

A number of these major improvements have come as the result of the ROOL Bounty scheme, which for those of you that may be unfamiliar, is a RISC OS Open initiative where a list of development items is published on ROOL’s website and people can throw money at the items they’d most like to see come to fruition. This then allows for developers to work on something that they do not have enough spare time to work on in their free-time.

Userland features have also seen some TLC – with Printers, DosFS, Maestro and other utilities getting updates. Access+, Econet support on Omniclient and the NFS client have also seen their first updates in many years. LanManFS has also been updated with some security tweaks as well as the ability to connect to Windows 8 and 10 shares.

In their announcement of 5.24’s arrival, ROOL have also said they’re hoping to see RISC OS back in the NOOBS software for Raspberry Pi, after it was removed a few releases back.

This release has also seen ROOL improve the release process, there is now a more formal set of criteria to verify each platform supported and a traffic light system with statuses of red, amber and green.

Useability & upgrading

From a useability standpoint, the RISC OS experience is exactly the same as it was so there’s no nasty surprises for when you upgrade your machines.

The upgrade process on my Raspberry Pi was very straightforward and pretty quick – ROOL have a nice guide to take you through the upgrade process that is worth checking out.

Computer and board-specific advice relating to the installation and upgrade process for this release is also available on ROOL’s website.

Backwards compatibility is very good, I’ve encounter no issues with running any applications or utilities so far – which is to be expected from a stable release, afterall 5.24 has been a long-time in the making.

Improvements of note

  • Filecore – Reports sector offsets correctly with the *Map command on old format discs. Full directories on long filename discs are now correctly faulted rather than producing an unreadable disc. Filecore can now use up to 21 bits for the disc address, meaning a smaller logical file allocation unit, for more efficient use of space on large discs. Bug fixes to 4kbyte sector support allowing drives up to 2TB in size to be used, instead of the previous limit of 256GB with 512 byte sectors.
  • ADFS – Compatibility with flash drives has been improved, where previously they might report disc error 20.
  • Kernel – A new concept of ‘physical memory pools’ has been added, this is where a dynamic area can set aside lots of physical memory but only use a small window of logical memory, for example to allow a large RAM disc. Extra APIs have also been added to allow low level software to discover features of the ARM processor such as its support for exclusive monitor instructions as and when they are removed depending on the ARM core.Teletext video modes can now have extra characters on each line rather than being constrained to 40 (up to a limit of 255). An extra conversion for OS_ConvertVariform to handle globally unique numbers (GUID). Some preparations and reorganisation for multiple ARM cores have also been made. A new option to configure a MonitorType of EDID which will read the settings from the monitor directly as part of the EDID bounty work.
  • LanManFS – It will now connect to NTLM authenticated shares which is a minimum requirement on many servers to improve security. It also now correctly performs writes over 64kbytes when the server declares a buffer size of larger than this.
  • USBDriver EHCIDriver and OHCIDriver – Scanning keyboards, particularly when hidden behind hubs, at power on in order to do power-on-delete (for example) is now more reliable as part of the USB bounty work. The drivers have been updated where practical from the parent copies in NetBSD

Where to grab it

You can download RISC OS 5.24 for free from ROOL’s website and for purchase on their SD cards. Their ePic card has also been updated with RISC OS 5.24 and latest versions of SparkFS, PhotoDesk, DDE and Impact – you can purchase it from the ROOL store.

Just like magic: RISC OS on the Wandboard

posted in: Hardware | 0

A development image of RISC OS 5.25 for the iMX6-based Wandaboard is now available to download from RISC OS Open’s site, which adds another low-cost board to the ever-growing list of machines that can run RISC OS 5 natively.

The Wandboard i.MX6 is an ultra low-power computer which claims to have ‘high performance multimedia capabilities’. The board is based around the NXP i.MX6 Cortex-A9 processor.

On the Wandboard website, there’s currently four boards available for purchase. There’s the single-core Wandboard Solo, then the dual-core Wandboard Dual, the quad-core Wandaboard Quad and the very deluxe-sounding QuadPLUS – although from their website I can’t actually seem to find out what you get from the QuadPLUS that you don’t already get from the standard Quad!

As RISC OS does not currently support the use of multiple cores, there’s not much point in opting for anything other than the Solo at this point, unless you’re planning on running other operating systems on the board too, in which case opting for the Dual or Quad options could be a good way to go depending on what you want to do.

The Solo currently packs 512MB RAM, on-board audio, serial, USB and HDMI ports. It also has a MicroSD card slot to run your operating system on much in the same way as you would on the Raspberry Pi. All boards have networking capabilities and an expansion header. The Dual and Quad editions have built-in Wi-fi and Bluetooth support (although RISC OS can’t take advantage of this) and the Quad packs a SATA connector too.

Full specs:

Wandboard Solo
Wandboard Dual
Wandboard Quad
  Processor
i.MX6 Solo
i.MX6 DualLite
i.MX6 Quad
  Cores
ARM Cortex-A9
Single core @ 1GHz
ARM Cortex-A9
Dual core
@ 1GHz
ARM Cortex-A9
Quad core
  Memory
512 MB DDR3
1GB DDR3
2 GB DDR3
  Audio
  Optical S/PDIF
  HDMI
  Camera interface
  MicroSD slot
2
2
2
  Serial port
  Expansion Header
  USB
  USB OTG
  SATA connector
Not populated
Not populated
  Gigabit LAN
  WIFI (802.11n)
  Bluetooth

 

The Solo is currently available for $69.00 – so roughly 50gbp. The Dual starts at $89.00 and the Quad weighs in at $119.00.

Just like similar ARM-based boards, the Wandboard ranges of machines will run RISC OS and Linux off the bat. FreeBSD has also recently started supporting the Wandboard.

Overall, the Wandboard looks like a  piece of kit that gives you an awful lot of bang for your buck at a pretty reasonable price. Without getting my hands on one I can’t say how the Cortex-A9 CPU at 1GHz will compare to say a Raspberry Pi 3, but it will undoubtedly be powerful enough to run anything you want RISC OS wise, even with the 512MB RAM that comes with the Solo.

The development image of RISC OS 5.25 for the Wandboard is available for download from here.

Under the Microscope: Aemulor

posted in: Games, General, Software | 2

After the release of the Iyonix PC in 2002, RISC OS started moving from 26-bit architecture towards 32-bit. Nowadays all modern RISC OS machines are 32-bit, but an awful lot of older applications are still not compatible with modern 32-bit RISC OS.

Aemulor, originally a commercial application but now free to download, is a software emulator that allows RISC OS applications which were written for a 26-bit ARM systems to be used on more recent CPUs that provide only 32-bit addressing modes. RISC OS itself is unaware that there is anything unusual about the 26-bit applications that are running under Aemulor, to RISC OS they appear as normal applications – they appear on the icon bar and can communicate fully with other 26 or 32-bit applications.

The way I use RISC OS tends to steer me towards using more recent 32-bit applications – for example my email client, web browser and SSH terminal that I spend most on my time on the RISC OS desktop with are all 32-bit. My use case is definitely not typical though, I use RISC OS for a number of my regular tasks because I’ve used the operating system for many years and I’m comfortable in using in it – there isn’t anything in particular on RISC OS that I can’t get elsewhere.

From reading the RISC OS forums and newsgroups it seems to me that legacy applications is actually a big reason as to why people are still using the OS. So for these people, Aemulor is essential kit for say, running that version of Impression that you just can’t get yourself to move away from, or that CAD software that does exactly what you need it to do but it hasn’t been updated in two decades.

So I thought I’d take a look into what the experience is like running older legacy software on modern machines, and whether it really is enough to satisfy those that are tied to RISC OS for particular applications.

How does it work?

Aemulor in a sense is a compatibility layer that sits between the 26-bit applications/modules and 32-bit RISC OS 5. There are two main components to Aemulor – the 26-bit CPU emulation, and the RISC OS 4 API emulation.

The CPU emulation element determines the speed at which 26-bit programs will execute. Emulation of the RISC OS 4 API largely determines which applications will work and which won’t.

Not all 26-bit applications will run under Aemulor, although for the most part the success rate is pretty high. Essentially, the more low-level a program is, the less likely it is to work correctly under Aemulor. An example would be, device drivers that directly access hardware are unlikely to work, drivers that use the documented RISC OS APIs however are more likely to work.

Compatibility

Aemulor builds are available for most modern RISC OS computers, including the Raspberry Pi as well as CJE Micro’s and R-Comp’s current range. A (potentially unstable) A9Home version is available by request from its developer Adrian Lees.

Useability

So while I’ve used Aemulor in the past, mainly on an Iyonix, it’s not graced my Raspberry Pi before. To test it out I thought I’d chuck a few old school games at it as well as a few legacy applications to see how it handles them on my Pi 2 running RISC OS 5.22.

First up was Elite, which at first wouldn’t run at all unless I enabled ARM3 emulation – this then allowed the game to play but it would throw up some pretty unplayable graphics issues. A quick Google search pulled back this ROOL Forum thread however, which fixed the problem by using a custom MDF screen mode setting. This fix does seem to not work for everyone however, Elite runs fine on my end when run in ArcEm so that’s always an option available to you should you need to get your space-exploration fix.

Very old titles such as DinoSaw, Zarch and Big Bang didn’t run at all through Aemulor – while Chaos Engine, Heroes of Might and Magic 2, BotKiller 2 and Wizard’s Apprentice all ran fine with no noticeable performance issues at all.

Aside from games, I don’t have an awful lot of RISC OS applications that aren’t already 32-bit compatible – pretty much everything I use for word processing, email, web browsing etc. is all compatible with the Raspberry Pi and other ARMv7 machines. I did however boot up a very old copy of Impression Junior and a slightly younger, but still very old 26-bit only copy of PhotoDesk, both worked without a hitch.

So overall, although a few games, mainly older Archimedes-era (pre-1996 or so) titles, wouldn’t start at all – for the most part, Aemulor will run a good chunk of the 26-bit software you throw at it. Once it has successfully run an application, I find things are generally pretty stable – apart from the screen mode issues with Elite of course.

You can grab Aemulor, free of charge, from here.

Running a web server with WebJames

posted in: Software | 0

When you think of web servers, your mind instantly turns to Unix-like operating systems such as Linux or some form of BSD – the vast majority of websites on the Internet run on a Unix-like server, they’re renowned for being ridiculously stable and never having to be rebooted. Linux/BSD web servers are usually run in a completely bare bones, command-line only mode in order to keep resource requirements to a minimum and minimising the amount of stuff you’re running that could be vulnerable to attack.

What’s had me thinking however is, I find RISC OS to be just as stable and it is capable of operating with very little memory and little resources – it’ll do all of this while throwing a graphical interface your way at the same time.

Lately I’d been toying around with the idea of running a basic web server on my home network that provides an interface that links me into the various services I run around my house – my email server, media server, file server etc. Remembering the details to access these services’ various web interfaces is a pain as I have to remember the IP address of the system as well as the port number that web interface is running on.

So seeing as I had a Raspberry Pi running as a VNC server for remotely accessing my RISC OS box from work, I figured I’d take a look at running a web server on it so that I can just point my browser to that web server and click into my various services from there.

From digging around, I found three HTTP web server software offerings to chose from, there are no applications out there that support HTTPS as far as I can see.

While there are alternatives out there such as Netplex from Warm Silence Software and h11p, the most widely used server of choice on RISC OS seems to be WebJames, and from the short amount of time I spent setting it up, I can see why. For the most part, it just works straight out of the box, you just decompress it from the Zip file it’s packaged in then you execute it – just as easy as setting up Apache or something on a Unix server.

Originally developed by Hernik Bjerregaard Pedersen, Web James is a HTTP web server that is compatible with all modern 32-bit RISC OS 5 systems and supports the below features:

  • Supports GET, POST, HEAD, PUT and DELETE requests
  • Content negotiation
  • Cache for recently requested files
  • Configurable logging of all requests
  • Password protection
  • Redirection
  • Customisable error reports
  • Standard CGI interface
  • Custom CGI interface which allows multi-tasking scripts
  • Supports Server Side Includes (SSI)
  • Built in handler for PHP
  • Support for name-based virtual hosts

Setting up WebJames

The installation process is as easy as you think, download the Zip file and unarchive it using SparkPlug or a similar application, drag and drop the !WebJames application into whatever location on your storage drive you want to keep it.

You’ll most likely want to ensure that !WebJames automatically runs whenever the machine boots into RISC OS just in case of any unexpected reboots. Editing the ‘PreDesk’ configuration file located here will provide this functionality – !Boot.Choices.Boot.PreDesk.

When run, WebJames will tick away in the background and respond to any HTTP requests it receives over port 80.

The files displayed by your webpage will be stored in the ‘Site’ directory within the directory you’ve saved !WebJames in. This is where your HTML files and anything else you want accessible via your web server will live.

If you’d rather not write your website manually via a text editor, you could use something like HTML3 to design the website that will run on your WebJames server. Alternatively, if you’ve already got a pre-designed website or something similar ready to upload from another machine, you can use something like Samba so that files can be dropped onto the RISC OS system running WebJames.

Just by running the !WebJames program, your web server should be running. By default, the webpage displayed in the screenshot at the bottom of this article will be displayed unless you’ve modified it. To make sure your web server is running, visit http://127.0.0.1 in a web browser on the system you’re running WebJames on, this should bring up your website.

If you ever need to troubleshoot issues with people accessing your website, or if you want to keep tabs on what IP addresses are connecting to you – there’s a log text file inside !WebJames named ‘clf’.

Local network configuration

If you want to access your website from an external network (i.e. via the Internet) then you’ll need to enable the firewall your web server is passing through to allow connections on port 80 (the HTTP port). With most setups this can be achieved by adding a port forwarding rule in your router’s firewall to allow TCP connections over port 80.

Should you decide you don’t require access to your web server from an external network – for example, you only need to connect to it from devices in your home so that you can easily link through to other servers/services on your home network – then you don’t need to do anything, traffic should pass over port 80 without a problem unless you have device-specific firewalls blocking this port (you’ll probably know about it if this is the case).

Accessing your website

Once your web server is setup and running on RISC OS, you can remotely access it by pointing any web browser to the IP address designated to your RISC OS machine running WebJames, or alternatively if you’ve configured a domain name to point to your IP address, you can visit the domain name.

LAN Access – If you’re accessing it from a device connected to the same local network as your server, then you can specify the LAN IP address for your device (e.g. 192.168.0.2) – it’s worth setting up a static LAN IP address in your router’s DHCP settings to ensure this stays the same. If you will be accessing the server from your local network and from external connections, then following the steps in the ‘WAN Access’ section below will be your best bet.

WAN Access – If your website needs to be accessed from machines outside your home network, then web browsers will need to point to your WAN IP address, which will be assigned to your Broadband modem. You can find out your IP address by searching ‘My IP’ using most major search engines,(click here for a pre-configured search query) or or alternatively if you’ve configured a domain name to point to your IP address, you can visit the domain name.

There we have it! You’re running a web server on your RISC OS computer.