RISC OS FR : The Raspberry Pie contest

Share an idea, a resource or surprise us and win a Raspberry Pi Model B 512 MB (old model, but 100% new).
We have many Raspberry Pi in stock. So feel free to participate.
For more details: https://www.riscos.fr/raspberrypie.html

1/ Share an idea
Description of an original game with rules and example pictures
Robotics project implementing RISC OS and the Raspberry Pi
Idea of software that could be proposed under RISC OS
Club project around the Raspberry Pi and RISC OS
Educational project for RISC OS
etc.

2/ Share a resource
Original wallpaper about RISC OS, Acorn or the Raspberry Pi (raspberry pies accepted)
Original piece of code for RISC OS or the BBC Basic
Conversion of 8 bit BBC Basic titles to RISC OS 5
Music or graphics made with RISC OS 5
New levels for RISC OS games
etc.

You can win a Raspberry Pi
Your contribution will give you a chance to win one of our Raspberry Pi Model B 512 MB. A classic, delivered with a SD Card (RISC OS RC14 preinstalled), an enclosure, a PSU and some documentation. Perfect for educational projects, but also to (re)discover some RISC OS software, the first generation of the Raspberry Pi being the closest alternative of the Iyonix PC. Nota: while being old models, our Raspberry Pi are 100% new.

We have many Raspberry Pi in stock. So feel free to participate.
All European users are welcome. Just note that the PSU is for UK plugs.

Do not hesitate to ask for more time to finish your project. Your contribution must be original (never published before), free to share and distribute. Any participation implies your full distribution agreement of the provided content on the riscos.fr website (your name will be mentioned)… whether you won or not a Raspberry Pi at the end of the contest.

Here is a modest submission for an application, !Tangle, to demonstrate certain easily grasped topological concepts. !Tangle could be programmed in BASIC, for instance. I myself wrote a preliminary and more limited version in RiscLua using the toolbox two years ago.

!Tangle puts up a window displaying an NxN grid of sprites from the accompanying attached spritefile; N should be configurable by the user, but 32 might be a reasonable default. The sprites are all the same size. Each sprite has two components, each a red or green segment, either horizontal, vertical or diagonal. The sprites should be plotted, initially randomly, so that their common boundaries have matching colours. It will be seen that the resulting picture shows what in mathematics is called a “tangle” or a “link” of red or green threads, each of which is topologically a circle. The user should be able, by clicking on an icon, to change the icon displayed to another, satisfying the same constraint on boundary-colours.

There are 16 sprites in all, so that each picture can by represented by an NxN array of 4-bit values, constituting the “state” of the picture. The user should be able to save this state to a file and to reload it into the window.

This set-up presents a variety of interesting programming challenges, in addition to illustrating graphically some important concepts (for maths teachers for example).

Here are some concepts:

1. The “connected components” of a red or green thread. How to calculate their number, given a “state”?

2. An “orientation” of a connected component. A component acquires an orientation when each of its components is given an orientation.

3. The “winding number” of a pair of oriented links – including a link’s self-winding number. How to calculate these?

4. If the icons at the edge of the window match up, left with right, up with down, then the window can be regarded as a “torus”. Each oriented connected thread then defines a “homology class” of the torus: a pair of integers indicating how many times the thread winds round horizontally and vertically. How to calculate these?

5. Other topologies can be tried. For example, if the opposite edges of the window match up when reversed ( the left edge to the reverse of the right, the top edge to the reverse of the bottom) then the window can be regarded as a real projective plane. We can ask corresponding questions about the homology classes defined by an oriented connected component. Why do the orientations not matter in this case?

Other possibilities lie more in the direction of the thermodynamics of two-dimensional lattices. Assign an “energy” to each icon. What states minimize the total energy? Introduce for each pair of icons in the spritefile a “transition probability”. This will define a Markov process in the space of “states”. Appropriate symmetrical values should give rise to interesting moving pictures of the process.

This one, in a case (there’s fancy! 8~) ) will replace my old one, running RISC OS; I’m thinking about what operating system to put on the old one. I’d quite like to run it as a fileserver – I haven’t managed to get the RISC OS Pi and the Mac to talk to each other directly, so at the moment I transfer files between the two systems by emailing them to myself! A fileserver they could both see would be WONDERFUL…

[edit: well, it seems to drop in in place of the old one and apart from having a case you wouldn’t know the difference, booted up and flying no problem (not that I thought there would be). Now…]

I guess I need an up-to-date LanMan? I’ve got 2.38, 11-Nov-12, OmniClient 2.18, 14-Mar-13. It doesn’t appear to do anything when I attempt to log on to the Mac, which thinks it’s sharing on Samba (whether it really is, I’ve no means of checking…it’s El Capitan on a 2015 Mac Mini).

Edit – I do have a means of checking. Just cranked up my old Vista laptop after finding a power supply for it (its own, and its battery, having popped their clogs), and yes, the Mac is sharing okay.

Both of those statements are true but neither the current LanManFS nor LanMan98 2.06 can connect to the Mac’s Windows shares. A long time ago it was possible but then Apple did their ‘own thing’ with samba which put a stop to it.

We’ve got a NAS – but my LanMan/OmniClient can’t see that either. It’s a Synology DS212+ that our son bought a few years ago – my Mac (and his) can see it okay, and my Windows machine could too. Not sure what (cut down?) OS the Synology is running.

I don’t really want to fork out for another NAS – if I can run something on the spare Pi that can share some space on its SD card that I can access from both Mac and RISC OS Pi, I shall be very happy! Or of course if some version of LanMan/OmniClient could see the Synology.

The supplied archive contains a directory structure to support a number of 8-bit educational titles running natively on the Raspberry Pi under RISCOS pico. All the programs are accessed through a MODE7 menu structure reminiscent of systems in use in the eighties. Some of them are still valid today for educational use in schools.

In the eighties the name Anita Straker was synonymous with quality mathematics and logic puzzle software. She was a prolific program writer and was known for the elegant simplicity of her MODE7 programs.

Genetics links to a suite of Biology programs from the Warwick Science Simulations, published by Longmans. These are exceptionally well-written and allow experimentation with genetics concepts. They were notable for the quality graphics they used.

The Lasermaths title is one of my own. It was written in 1981-82 under the Logical Educational Software label. Its claim to fame was twofold; shortly after it was released it featured on the BBC program “Pebble Mill at One” as an example of high quality educational software and latterly it proved to be one of the most-copied pieces of software throughout Derbyshire, Nottinghamshire and Leicestershire. At that time Education Authorities paid little attention to software copyright. Over the years I had lost this title and it was only when I was wading through over a 1000 floppy discs I had been loaned to archive that it came to light.

In the mid-eighties a company called CommunITel produced an amazing viewdata emulation system that had the ability to create and search viewdata databases. Viewdata was the world wide web of its day and spawned numerous bulletin boards. The software would run under emulation on the old Archimedes computers using !65Host but would not run natively on the Raspberry Pi as the software used 6502 code.

Since the BBCBASIC on the Raspberry Pi is pretty quick under RISCOS I re-engineered the search software to run natively in BASIC V. The Viewdata option from the menu can access and display two databases that I have collected, the original CommuITel demonstration database and an Econet manager’s database from Acorn. I added to the original software functionality to allow the command D to switch between databases.

I have many more of these programs that will readily convert to RISCOS and I am still collecting. As well as educational titles I am looking to port some games. The Sphinx Adventure is one ready to roll out. All that is required is that the software be well-written, that the software does not use direct disc access to load files and that any machine code is generic and does not rely on the presence of BBC micro hardware.

RISC OS Synthesiser / Sound Engine. Codename ‘Pluto’. This is a derivative work from Wavebox – A program written between 2000 and 2004 on Windows. Here is an archive of the latest version (it still works on Windows 10): https://www.riscos.fr/fichiers/contests/waveboxv21b.zip

The sound engine is not the same as in Wavebox, although the code is based on the Wavebox DSP. Wavebox was based on a conventional virtual analogue synthesiser/sampler. For Pluto, inspiration is drawn from the BBC Micro, Amiga, Commodore 64 and some own analogue synthesiser collection to try and create something distinct and geared towards ‘chip tunes’ and sound effects.

Current state: 8 channel sound engine implemented as a standalone executable. Needs debugging/fixing, moving to a RISC OS Module and integration with SharedSound. This underlying RISC OS sound module will be free with source code included. A commercial tracker could be provided too.

Thanks forgot about the Pluto e-mail client. There’s a tradition for synthesisers to be named after classical gods e.g. Juno 6, Jupiter 8, Erebus. I’ll consider ROSSE. Sounds like it’s in the RISC OS group naming tradition.

Chris works on a new version of the Othello game for RISC OS Desdemona. The first update since 2006. Welcome back Chris! This version will include better computer players, better graphics and a streamlined interface. It’s currently being finished off, and it’ll be released as a free download. Another game, Islands, could be updated later too.

Well for an idea:
Using the RPi B (rev 2) to control a Prusa i3 type 3D printer, with RISC OS running single tasking outside of the desktop, and BBCBASIC being used to decode the G-CODE and drive the output, I am already doing it, though my code is not production quality (does not support all possible RepRap GCODE).

To do this we use 7 pins where the upper 3 are wired to a 4 to 16 demux, and the lower four are used to output the stepper state, which is latched in 6 D type transparrent latches, this is capable of going faster than the printer can handle, so some timing is important, remember that 1/100th of a second is to long to wait.

Then we have the drivers wired to the output of the D type transparent latches, with a secondary power supply for that.

Other wise just a couple passive components to make a Delta Sigma ADC for sampling the thermisistors (bed and extruder tempurature), and four pins used for detecting the end stop switch states (one of which is an autoleveler for the bed, that just adjusts the z output as it prints to compensate for the super fine bed unlevel issues, so fine they only realy matter with an initial layer thinner than 0.025mm).

Just a simple idea, that is easy to implement. It has its issues, though not as many as getting all tempuratures, and speeds set perfectly to print in what material you use in the climate you are in.

It is something. I wish I could afford a camera, though I can not even afford another RPi, so oh well.

I only did my 3D printer out of need, I could not afford to live if it was not for the money saved by my 3D printer, that and making my own filament (PLA pellets are a lot cheaper than PLA filament, same goes for ABS, PETT, etc, etc, and I can mix in chopped up failed prints to recycle).

David uses a Raspberry Pi to control a Prusa i3 type 3D printer. The software runs on RISC OS in single tasking mode. BBCBASIC is used to decode the G-code and control the output ports. The program scans the strings line per line, reads the G-code and calls a PROC for each supported command. This is interleaved with the output code that is sent to the I/O ports.

To drive the printer, the software uses 7 GPIO pins, where the upper 3 are wired to a 4 to 16 demux, and the lower 4 are used to output the stepper state, which is latched in 6 D-type transparent latches. Both are capable of going faster than the printer can handle. Then we have the drivers wired to the output of the D-type transparent latches, with a dedicated power supply.

A couple of passive components is used to make a Delta Sigma ADC for sampling the thermistors (bed and extruder temperature), and four pins are used for detecting the end/stop switch states.

It works, although the code is not production quality (it does not support all possible RepRap G-code).