Crossword On BBC/Electron Games

By Dave E

Originally published in EUG #51

Not for the first time, EUG includes a bumper crop of utilities this issue, spread over two menus. The majority of them are written by Chris Warburton, a new reader of EUG, who will shortly introduce himself. The remainder come from yours truly, although only the Crossword utility requires separate documentation.

U.CROSSWO
This is a variation of the crossword puzzle utility created from Will Watts' crossword that appeared in EUG #1. It's an easy game to fathom, written completely in BASIC, and with a bit of manipulation (and some planning beforehand), you can create your own crosswords too!

Where in EUG #1, you got a very easy crossword relating to Electron BASIC commands, all the clues within this crossword relate to Electron software, making it either very difficult to complete unless you're a real guru.

The puzzle is shown to the top of the screen and you must attempt to complete each clue by entering its number. Note that laying some words will obscure uncompleted clue numbers so type in CHECK at the 'Attempt:' prompt to see which clues you still need to answer!

You can also type QUIT if you get stuck. Over to Chris for the rest of them...

Dave E, EUG #51

The Rest Of Them

Hi! My name's Chris and I have been a programmer for a lot of years now. Since I've recently heard of the Electron User Group and did quite a lot of Electron/BBC commercial code in my early years, I have decided to contribute. Although most of the games I write now are for the PC and Playstation, I remember how much I enjoyed 6502 coding on the Acorn Electron and BBC.

Although I don't have a vast amount of time to spend coding these machines, I am willing to help anyone who has any questions relating to them or is having problems with code. I have and written and worked on many well-known titles but I actually became a bit obsessed with protection systems: Turbo-tape loaders, ROM formats, packing algorithms and major disk protection techniques.

If anyone out there has a spare 80 Track 5.25" disk drive they would be willing to sell or loan me, I would be most grateful. Then I can get down to writing a decent Disk Doctor ROM that should do ADFS/DFS with protected formats.

At the current time, I am writing a major Disassembler ROM which, when complete, I will release to EUG all along with its complete source code. To being with however, I have written some simple code examples for you all to have a play around with.

U.BIGTEXT
This technique was actually something I saw in Repton or Repton 2; I can't remember! Anyway I decided to code my own one and this was the result. It's a fairly standard way of intercepting the WRCHV and doubling each character's height using OSWORD 10. It's fairly well optimised, but it does have a bug, as I'll explain...

When characters disappear off the right hand side of the screen, the text automatically drops to a newline. However since this newline is not a character and therefore does not pass through the WRite CHaracter Vector, my routine only drops the one line instead of two!!! I don't think there is a simple way to fix this problem as it's hardware controlled and not operating system controlled, but if anyone out there has a bright idea then please let me know! It would be possible to fix this problem by reading screen position addresses, but that would make the code Mode-dependant (although you could feasibly do this for all modes!)

U.SCROLL1
This code demonstrates a way of doing a smooth scroll routine by rotating the characters across their cells using their carry bits. There are a couple of points to note however about this code. Firstly, it's full screen and secondly, the scroll text can be of ANY length. Doing a scroller whose character definitions have to be read before being printed is a little more complex than standard 1-pixel scrollers.

U.SCROLL2
This is actually a very simple example of a 1-pixel scroller using the same technique as above. It is far simpler because its text is pre-printed and therefore no character rendering has to be done. Also wraparound is far simpler for this technique. The main advantage of this method of smooth scroller is its size!

U.TEXT1
This routine is quite possibly the smallest way of producing double width characters. It allows Mode 5 looking characters in Mode 4, for example. It's roughly the same technique as a smooth scroller, using rotation to double the character definitions horizontally. Consider it a challenge to optimise it further!

U.TEXT2
The smallest method I've written for producing double height characters! Everyone has seen routines that do this, but can you make one smaller???

Chris Warburton, EUG #51