Creating large-scale high-resolution Maps from various Sources

Everyone knows services such as Google Earth or Microsoft Maps. They are great for exploring but they are not so great when it comes to creating large-scale high-resolution images, e.g. for a wall poster or alike. Also, they have their shortcomings when it is about comparing maps or images from different sources to “pick the best”.

So I went out searching… and here is a little process to share. The task is: to create a single-image map of Mallorca with a high-level map resolution. So let’s see…

The software I am using for this is called SAS.Planet – and it seems to be a Russian-built piece of software (so my first installation came up all Cyrillic…). I ended up downloading a copy from “somewhere” and then used the internal Help -> Check for Updates feature to grab the latest release.

So this is all of Mallorca (using a Google Maps layer) but not the level of detail I want… which is more like this:

So in general, I have a choice of seeing “all of it at lower level” or “seeing more detail but lesser area”. Let’s change that: zoom back out until you see the whole of the island. Then use the Rectangular Selection tool to draw a map around it.

A window will open that allows for a couple of options. In general, I have had the best experience with downloading the required tiles first, then stitching them together. So on the Download tab, all I do is to download all tiles of Zoom Level 15 and click Start.

If you want to monitor the download process, you may switch on Tile Shading using View – Cached Tiles Maps and select the level you are downloading – z15.

This will display each tile downloaded for that Zoom Level to appear with a gray shading. In addition, you can monitor the progress in the Download Window. Now, you need some patience and wait…some tile servers are faster, some are slower.

When all tiles have been downloaded, go back to your current selection via Operations -> Selection Manager -> Last Selection and switch to the Stitch tab.

Enter a file name and location in Save to and select the appropriate Zoom Level (15 in our example). Then click Start.

The image that is now created is roughly 10 MB in size – the dimensions are 15000 x 11000 px – so pretty large.

Of course, one cannot see much at this magnification but zooming in anywhere onto this picture shows the true level of detail:

Another nice feature: if I do not like the map that has been produced, SAS.Planet allows me to switch to a different tile server but maintain the current selections. So let’s use Google’s Landscape Tiles instead to see if we can get a better result on the mountain region of the island.

You can see: the selection box is still present so I go back to the Selection Manager and download the tiles for Level 15 of Google’s Landscape Layer – same procedure as above.

When I go back to create the stitched image from the downloaded tiles, the result again is a file of 19 MB, same dimensions as the first one.

The level of detail, again, will only reveal itself when zooming in but the overall representation is more what I think I would like to have on the wall… the hills are showing as a well defined relief…

There are plenty of other layers available in SAS.Planet – using the OpenTopo Tile Server provides yet a different view for the map:

And of course – if I do not like a map-type of poster on my wall, I can always switch to the various satellite image providers – mainly Google Earth and Microsoft Bing. Here is a comparison between the image quality of the two – Microsoft on the left, Google on the right.

It comes down to a matter of taste at this level – on a higher level of detail, the Microsoft tiles are more crisp but the Google tiles are more up-to-date.

 

Posted in Allgemein | Leave a comment

The Beauty of PI

“Pi, the ratio of the circumference of a circle to its diameter, and this is just the beginning; it keeps on going, forever, without ever repeating. Which means that contained within this string of decimals, is every single other number. Your birthdate, combination to your locker, your social security number, it’s all in there, somewhere. And if you convert these decimals into letters, you would have every word that ever existed in every possible combination; the first syllable you spoke as a baby, the name of your latest crush, your entire life story from beginning to end, everything we ever say or do; all of the world’s infinite possibilities rest within this one simple circle. Now what you do with that information; what it’s good for, well that would be up to you.”

– from “Person of Interest, Season 2, Episode 11

I was watching this episode casually – but this statement did intrigue me. If true, I would have wished for my math lessons back in school to let me explore things like this and provide information beyond the pure presentation of facts… spark my imagination! Make me want to challange and discover! Let me experiment!…

So let’s see how much truth the statement up there holds: yes, Pi is an irrational number which means it cannot be expressed as a/b. Pi never ends… and it never infinitely repeats… so far, the statement above is correct. Wether it contains all possible combinations of digits somewhere within is beyond my knowledge to say… but one thing to keep in mind is that no matter how many digits we compute for Pi, the chance of finding a specific complex pattern in the digits known today is unbelievably small – but if Pi never ends and never repeats itself, somewhere in there…

So let’s try and find my birthday in Pi – 14.07.1972 – and I am looking for the representation in the German date scheme: 14071972. And hey, it is in there… starting at the 10.266.360 decimal digit. (see http://www.subidiom.com/pi/)

Let’s try something else – let’s search the string “Pi” itself. Obviously, Pi only contains decimals and a string is not a decimal. But we can find a way to convert a string into a decimal (actually, we can find multiple ways to do so).

We could simply fall back to the ASCII Code where each character is represented by a number: “P” is 80 (decimal), “i” is 105 (decimal). So looking for the ASCII representation, we could be searching for “80105” (and would find it at the 18.098th digit).

So how about my name, Andreas. You can use an online ASCII Calculator to make your life easier (http://www.branah.com/ascii-converter) and so, my name would be represented as “65 110 100 114 101 97 115” decimal. Now, this already is a complex pattern and I am not lucky enough to find “myself” in the first 2 billion digits of Pi. But shorter names like “Tom” (at decimal 16.524.559) and “Sam” (at decimal 4.246.411) and “Max” (at decimal 5.245.782) can be found.

However, if I take a different coding scheme (counting a letter’s position in the alphabet where A=1, B=2 and so on), “Andreas” comes out as “1 14 4 18 5 1 19” and this sequence is present at decimal 1.593.228.194…

Germany does not have a social security number but we have a tax number – I don’t tell you mine but it is an 11-digit number. Again, no luck – pattern too complex for just the first 2 billion digits. So let’s try at which point I get lucky… and that happened faster than I though: I only had to take off the last 2 digits (make it a 9-digit number) to find the beginning of my tax number in Pi.

And so it goes on:

  • all my (4-digit) PIN numbers for credit cards are in there (na, I am not going to tell you where!),
  • my bank account number is in there (send me money to the digits starting around decimal 548.684.250),
  • my wife’s birthday is in there (somewhere around digit 108.242.600), actually all of the dirthdays of all of my family members I tried are in there.
  • my telephone number (without area code) is in there, and
  • my cell phone number (without provider code) is in there

As you can see – as long as the pattern is relatively small (less than 10 digits), your chances of finding it within the first 2 Billion digits is relatively good. And given that Pi goes on forever, we would just need more digits (actually, many more digits!) to find almost anything you are looking for… somewhere.

By the way, Pi is also nice to create passwords and PINs: just come up with a number (say your birthday) and take the numbers of that particular digit as password or PIN: taking 10 digits starting at position 14071972 gives me “1109437165”. You could look it up almost anywhere you are (given you have a Smartphone) and you would of couse NOT use your birthday but some other “secret” number as starting point for your sequence…

So even if the discussed scene is more poetic and dramatic than maybe mathematically correct it still sparks imagination – it makes people curios. And maybe that is exactly the initiator someone needs to start thinking and exploring…

Posted in Allgemein | Leave a comment

Astronomy on your own Computer – where it all began

Sometimes, you just need luck. For quite a while now, I have been looking for an old computer program called Skyplot. Next to some very cold nights out under a clear Bavarian sky back in 1985, this is probably what sparked my initial interest in the skies above – and although I did not touch a Schneider CPC Computer for more than 30 years, I never forgot about Skyplot.

The program is rare – I found some people on the Classic Computer Forum and they rendered some help (including the offer to send a copy over on a 3″ Disk) but I was after the original listing (or at least a scan thereof). And then I bought ZX81 Magazine on eBay. And it just crossed my mind to see what else the seller had on sale – a couple of CPC Magazines along. And then, there was a copy of a magazine from Austria – released in January 1987… I took a look… and there it was… right on the cover!

From the Magazine to the PC…

I have written about getting the code from the magazine into the system using Scanning, OCR and Notepad++ – I am not going to repeat the story here. I placed the initial, uncleaned text file right in Subversion to have a baseline in case anything goes wrong and started cleaning the code in Notepad++.

Code 01 - Uncleaned VersionYou may already be able to pick up some of the more obvious problem areas:

  • Percent-Characters (“%”) have not been OCR-ed properly…
  • Spaces (” “) in places they should not be in…
  • Ampersand-Characters (“&”) not properly OCR-ed…
  • The number “1” and the character “l” are not properly OCR-ed which is extremely difficult to see in the result… and so are the number “0” and the character “O”.

… and into the CPC Emulator

So here we are – the code is in the PC, possibly written using a tool like Notepad++ and has been reviewed and corrected. Now what?

With a little bit of help from the author, I managed to use JavaCPC Version 2.2b and it’s AutopType feature to get the code over – important hint was to use the “As BASIC” option. Paste the code into the AutoType window, select the “As BASIC” option and hit the Send to CPC button. It will take a while but it will bring your code into the emulated CPC.

JavaCPC 01 - AutoType as BASICOnce the auto-typing feature is done (after a few minutes for a listing of this size) we are able to use the emulated CPC and look at the first line of code within. For a better overview, I have switched to MODE 2.

JavaCPC 02 - The CodeNow, some 28 years after it has been published, the cleaned and imported code (hopefully) runs again.

Skyplot 01 - Main MenuI have left the program in German as this is the original language it was published in. Just for a quick functional check I will ask Skyplot to draw us a map of the stars today, Thursday, October 3rd, 2013.

Skyplot 02 - Full Map of the SkyBut I am more curios about the exactness of the calculations of a software almost 30 years old – so the next thing to ask for is a map of the visible sky for November 15th, 2013 at 22:00 local time for 50°N.

Skyplot 03 - Visible Sky mid NovemberA comparison with astronomical literature reveals: spot-on! Except, of course, two objects that have been of interest when Skyplot was published in the mid 1980s – but not today: Pluto can still be seen among the planets and Comet Halley is also on the screen – of course, not visible today…

And – if you look closely: there is a bug somewhere 😉 – but I’ll leave that for the next session…

Posted in CPC | Tagged , | Leave a comment

ZX81 – The Oregon Trail

Although the ZX81 was not much of a computer and any game or program it was capable of running looks primitive today, some just kept their place in history – The Oregon Trail was one of these items (maybe because I cannot remember ever having succeeded at the time).

Educational Software

There are some sites out there that blame The Oregon Trail to be boring and stupid. But one thing should be kept in mind: the purpose behind the game was probably more education than solid economical calculation – Wikipedia holds a bit of the background story.

The Oregon Trail on the ZX81

Unlike other computers of the time, such as the Apple II or the Commodore C64, the ZX81 did not have much or a graphical output to offer – and the game shows it.

01 - Opening ScreenSo that is the outfit – 700$ to start with and a choice of five good to buy. Unfortunately, there is not much information on what the individual item gives you but in the course of the game, I found the following:

  • Oxen most likely add to the speed you can travel at and influence the miles traveled each round. This is based on the guess that the message “a lame ox slowed you down” is the negative side of things.
  • Food is required and can either be purchased or hunted – it decreases by the amount of food you are willing to spend each round and intermediate losses.
  • Bullets are required for hunting and self-defense – no bullets, no shooting…
  • Clothes seem to be required for cold-weather situations – there is a random event in the game that calls for “cold weather” and checks if enough cloths are available.
  • Supplies are general-purpose-goods which need be be present for a variety of incidents from illness to repairs.

Before the game play starts, you are allowed to practice a little bit on the rifle range – it is easier these days as you only need to hold down the key that is indicated in the middle of the target. The faster you kill, the better the results are (in hunting and defense)

02 - Shooting RangeNext is the initial outfit – basically spending some of the 700$ on the five categories of items discussed above. Under the assumption that I want a fast travel and that is mostly based upon the number of Oxen and large food rations, I have opted for the following:

03 - OutfitterHaving done this, I am all set to head west – each round is started with a presentation of the current resources (except the Oxen, which I cannot see anywhere).

04 - Getting ready to goSo we are leaving on March 29th, 1847 with a remaining cash-base of 250$ and a choice to stop for shopping (1), hunting (2) or moving forward (3). To me, it is not clear if hunting or shopping reduces the amount of miles gained for the turn (it would seem logical but I am not sure about it). Since I am well established on resources, my choice is to continue.

The next choice to make each round is the size of the food rations – from 1 (low rations) to 10 (feasts). Under the assumption “the more, the merrier” I try to keep up the 10s.

05 - Food RationsAfter taking care of the meals, the next event each round seems to be a randomized “you have met someone” event – in this case, a bunch of characters that “do look hostile”.

06 - EncountersBeing no coward (and knowing that the “shooting” will be much easier than on the original ZX81 keyboard) I decide to take a stand and fight.

07 - FightingThe result is evaluated (I hit them hard) and additional randomized events occur which will effect the speed and/or my inventory.

08 - End of RoundIn my case, I have lost some time and supplies but fought off the attackers. This basically concludes the round and I am back on my original opening screen for each round (“Shop”, “Hunt”, or “Continue” – where shopping is not always available).

09 - Next Opening ScreenAnd – whohoo – I made a full 129 Miles in two weeks! I continue the next round and decide on hunting the round afterwards. Again, hunting is performed by pressing the indicated keys as quickly as possible – the sooner the four different keys are found, the better the result of the hunt.

10 - HuntingSo it continues like that – here is a list of different random events occurring:

  • “Wagon swamped, stuck in river”
  • “Child missing – but found safe”
  • “Wild animals attack” – another “shoot’em up round
  • “You were slightly ill”
  • “Rattlesnake – you killed it!”
  • “Wild Mountain Trail – slow progress on rough ground”
  • “Blizzard – Time and Supplies lost”
  • “Wagon damaged – Time and Supplies lost”
  • “Fire in Wagon – Food and Supplies lost”
  • “Hailstorm – Supplies damaged”
  • “Thick Fog – Lost your way and Time”
  • “Time lost finding stray Oxen”
  • “Slow travel with lame oxen”
  • “Your child broke an arm, you used supplies for a splint”
  • “Bad water – you found a spring”
  • “Cold weather in the mountains”

Making good progress with my approach, I managed to get through to Oregon (reached when 2000 Miles have accumulated) in time (max. 40 weeks, 20 rounds per 2 weeks).

11 - Winning ScreenSo far so good, but I would like to see a bit more of the program code – finally… as mentioned in my previous post,  there is a utility called p2txt – but it is an old 16 bit program from 1993 – modern 64bit Windows environments will not run it. Which is why we have VMWare and Windows XP for.

Looking at the Source Code

p2txt works like a charm – and I can finally look at the source code of Oregon Trail. The first thing that comes to mind: “Wow – just 505 lines of code!”

Code 01 - The SourceIt is pretty straight forward – what I am interested in is what type of influence on the score the various events and settings have.

Speed of Travel

First of all, what influences the miles traveled per round? There is exactly one line of code that adds to the miles:

LET M = M + 80 + (G(1) + 20) / 2 + RND * 10

That’s it – in every other line of code M is used (which is the total Mileage) it is reduced due to adverse events. So the Mileage is influenced by two factors: a random parameter and G(1) – which is the amount spent on Oxen. In other words: the more Oxen, the faster you are. And nothing else matters…

Feed your Family…

Sounds nice, doesn’t it? But reality (or rather: the code) shows that there is no effect based upon the food rations you serve other than the speed at which your food supplies are drained. At a minimum, you will “eat” up 13 supplies per round – and believe it or not: if you serve the lowest possible rations, there is nothing in the code that suggests negative effects… so be cruel, this seems to be a psychological setting… keep serving small!

…and keep them warm

Clothes can be bought and can be lost in some of the random events – but they are only used in two events:

  • “Cold Weather in the Mountains” evaluates against your stock of clothes – based upon a random number between 0 and 22 (which needs to be smaller than your supply of clothes).
  • “Blizzard – Time and Supplies lost” also evaluates against your stock of clothes: this time, you need at least 18, 20 at max.

So it seems to be a good strategy to keep the amount of clothes above 40-45 but not to be excessive – the maximum you can lose in one round is around 20 when your wagon is swamped.

General Purpose Supplies

Supplies in general are needed in a couple of cases, mostly as medicine where you will need a stock of 5 (when you are “rather ill”) or 15 (when you are “in fact very ill”).

Supplies are lost in many way – when you run from strangers (15), when you continue and the strangers are not harmless (between 1 and 21), when you “Wagon is damaged” (8) or when “your child broke an arm” (2-5). “In heavy rain” you will also have to give up a part of your supplies (15) and so on – at the max, one round might cost you around 20-30 when worse comes to worst. So keep an eye on these supplies!

Bullets

No matter how fast you are on the shooting range – if there are no bullets left, you cannot defend yourself or hunt. Bullets are the only one of the five goods that are re-calculated from the dollars spent: 1 Dollar gets you 50 Bullets.

It is hard to say how many you will spend as the amount of bullets needed for hunting to to defend against bandits directly depends on how quickly you can kill. On the other side, there are a few events that also cost you bullets – at the max, 500 bullets can be lost in bad weather, for example. I would think a supply of anywhere between 3000 and 5000 bullets should serve you well. (that is 60$ – 100$).

One final game

Under these assumptions, I will play my very last game of The Oregon Trail on my ZX81: of my 700$, I will spend 600$ (keeping 100$ for the Doctor if needed!):

  • 350$ on Oxen
  • 30$ on Food
  • 75$ on Bullets
  • 45$ on Clothes
  • 100$ on Supplies

And I have to say: although the events thrown at me where a bad combination, things worked out.

Video Cover Image

Posted in ZX-81 | Tagged | Leave a comment

ZX81 – Code from the past, coding with the tools of today

Some time back, I posted an article on the ZX81 Computer I got off eBay and how coding of old listing was done way back when.

CHIP CoverNow, that last article was dealing with a listing retrieved from an old CHIP Magazine, by now, I have gotten my hands on a second one and once more would like to bring one of these old listings “back to life”.

One thing I certainly don’t want to do though is to suffer through the same ordeal than thirty years ago: typing in those listing using the ZX81 Keyboard was tedious, slow and error-prone.

Using an emulator again, I could at least eliminate the frequent crashes and involuntary reboots of the true ZX81 when you – accidentially – touched one of the cables the wrong way. So what is out there to help?

EightyOne – the Emulator of choice (still!)

First of all, of course, the emulator itself. I still stick to EightyOne (available here) as the emulator of choice. Although released in 2006, it runs perfectly stable, even in my Windows 8 environment.

EightyOne

One thing, however, it cannot do: it cannot accept a cut & paste of text to bring in those BASIC Listings. So if I would just look for a stable environment and then type the listings in myself, I would be well served. But that ain’t no good.

Coding outside the Emulator Environment

Listing - Page 2I have randomly picked a listing from the CHIP Magazine, and I have no intentions to type it in the ZX81 emulator.

Wouldn’t it be nice if I could just type the code into a modern text editor, probably use features like syntax highlighting and cut & paste and any of the cool features modern source code editors have?

I could also use existing tools such as Subversion for revision control, etc.

So let’s give it a try – the editor of choice is Notepad++, which – if you have not seen it yet – is certainly something you should have a look at. You can find it here and trust me: it is by far the best editor (personal gusto) that you can have when it comes to a generic text file editor.

NotepadPP - The first few LinesSo here are the first few lines of code in Notepad++ – I have already stepped ahead a little bit and enabled syntax highlighting as well – I will show you later, how it was done.

Getting the ASCII Text into the Emulator

And just how do we get the listing into the emulator now? The answer is a little tool called TXText2P – a command-line utility that can convert a text file into a P-File that can then be loaded by the ZX81 Emulator. In my case, the listing was saved to a file called uboot.bas so my command line is

zxtext2p -o uboot.p uboot.bas

And that is all… in EightyOne, the file can now be loaded by File > Open Tape… and selecting the resulting uboot.p file.

ZX81 - The first few LinesSo I am half way there – I can code and control from outside the ZX81 emulator, then bring the listings into the ZX81 environment and run them there.

On a side node, I would like to mention the Retro Isle website from where I was able to retrieve a copy of ZXText2P – thanks guys for the site and the download!

Avoid Typing altogether

At the end of the day, programmers are lazy – which is probably why they have become programmers: if you can simplify or automate a task, we can do it. And typing listings into text editors is certainly something to automate!

The tool of choice here – for me at least – is ABBEY FineReader. FineReader is an OCR Program that allows to manipulate the recognition engine in many ways.

In the case of my listing, I have two scanned pages with the listing itself – so I pull my two scans into FineReader for processing.

FineReader - The blank pagesIn the next step, I tell FineReader where the interesting text is and how I want it processed. I could automate this but given that there are only two pages, I go the “manual way”. Then, I ask FineReader to “read” the text areas.

FineReader - OCRThe easiest way to get the text into Notepad++ is to simply save it as Text File, then rename it to a BAS-File (just for organization) and then open it in Notepad++.

Cleaning up the OCR Result

A comment first: when code was lost in the old days, it was mostly due to the computer (especially the ZX 81) giving in to the circumstances (in this case: an involuntary restart because of a brief loss of power). These days, the loss of code (especially with lots of re-working) is more on unvoluntary overwrites  – so storing the result in some sort of source code control system (e.g. Subversion) is a good idea.

First Round of Cleaning

A first look at the OCR Result can be disappointing – but consider this: it is probably easier to clean the code up than to type it from scartch, especially since many clean-up steps can be done via search & replace.

NotepadPP - Initial OCR ResultFirst of all: just how yo do the clean-up is entirely up to you. I will go through line by line, check the line visually, remove the blank lines and line-breaks and also some spaces within.

NotepadPP - The first Cleanup

This hardly takes any time – after about 20 minutes or so, the BASIC listing is in a much better shape – each line has now been processed, blank lines have been removed and the first large errors have been eliminated. Now, fine-tunig is asked.

Line-by-Line Comparison

Next, is a line-by-line comparison of the code, which unfortunately cannot be avoided. Fortunately, I have a dual monitor environment so having the code on the one side and the listing (scanned) on the other makes it a bit easier.

The other thing to look at is the “built-in editing instructions” – you may have noticed the following line:

20 PRINT "SIE SIND DER KAPITAEN EIN ES{5*<SPC>}...

Noticed the Escape Sequence – {5*<SPC>}? This is no BASIC Code the ZX 81 would be able to interpret – this is an inline ediging instruction that simply says “place five spaces here”.

There are other such occurances – and they are a bit harder to come by: the ZX 81 featured “block graphics” characters – take a look at the keyboard:

ZX81 Keyboard

The block graphic symbols are on the lower right of many of the keys – if they would have been printed one to one in the listings (and some magazines did that) they had been a bit hard to distinguish from each other – so this magazine used more escape sequences to provide “help”:

2020 PRINT AT 4 ,0;"{10*<SPC>} <<G4>> <<1>>{25*<SPC>}...

Next to the already known ten spaces, the <<…>> escape sequence means “whenever you find something in between << and >>, insert the graphic symbol of the respective key” – this code is not only hard for the OCR to process – it is also extremly painful for the programmer to properly type in.

Enough talking – let’s continue to clean up the code. Another 40 Minutes later, all is done… time to run the program.

The first Start

Printed in 1985 and brought back to the emulator some 28 years later, it is not necessarily but possibly a very rare one out there. Running the program through ZXText2p and then loading it into the emulator is quickly done.

ZX81 - Code Listing 1Not too bad – looking for some example of those escape sequences resolved?

ZX81 - Code Listing 2As you can see, this is about the only thing that might have been easier in 1985 – you could directly see the outcome of the block graphics (if you factored in the “shift” caused by the preceeding command PRINT AT…) – Let’s run the program:

Running - IntroAfter the opening screen and the selection of a single-player game, I am presented the introduction screen – which is telling me that there are exactly three options throughout the game: the key “S” (for Periscope), “T” (for Torpedo), and “F” for “Diving”. So here we go – let’s do “S” for the Periscope.

Running - DestroyerDarn – I found a Destroyer… shall we attack or dive away? – I think, we just duck away… “F” to dive.

Running - SurvivedLooks like I survived the Destroyer attack – a quick look into the code reveals that, when ducking away from a Destroyer, I have a 66% chance of survival. If I’d fire a torpedo, I have a 10% chance to hit (and spend one Torpedo) – if I do not hit the Destroyer, I can still dive away (and take my 66% chance). So best strategy: fire first, then dive! Now let’s get back up again and see if there is anything else out there.

Running - FrighterOK – a 69000 Ton Freighter – obviously, time to spend some torpedos (“T” Key). I fire two Torpedos.

Running - MissedMissed 🙁 – good for the sailors, bad for me. Looking at the code… I only have a 25% chance to hit with a torpedo (on a freighter) – that is a bit disappointing! I fire two more torpedos.

Running - Missed againMissed again! By now, the frighter has outrun me and I cannot fire any more torpedos. So back to the periscope (“S” Key) – another freighter, only 6500 tons though. One torpedo is sufficient.

Running - ScoredThis time, I manage to score a hit – and add 6500 tons to my score. Next up is – again – a Destroyer, I fire a Torpedo, miss it and – in return – was hit by the destroyer.

Running - SunkThis one is ugly – the English translation is “Unfortunately, you have been hit and sunk. Have a nice rest on the ocean floor…” – Pfft!

“Playing” the game, by the way, turns out to be pretty tedious, the program is extremely picky on the commands issued: if you forget to press “T” first before you specify that you want to send “2” torpedos results in an immediate decommission… you find a freighter and accidentially hit “F” to dive… decommissioned.

I continue to play a bit, just to also see the bomber attack that I noticed in the code – here it is:

Running - AircraftSo my only choice is to dive away – “F” key! – and hope and pray. To keep the spirits high, the program is running 10 rounds (each round ends with your sinking) and shows a high-score table.

Running - ScoreboardAnd that is about it 🙂 – those was the content and quality of programs from computer magazines back then. This also was what the ZX81 was capable of. Still, we had plenty of fun those days and in all honesty: would anyone have shown us what computers would be like some 30 years later, we would not have believed it! But then imagine what computers will be in 30 years from now – in 2040…

Posted in ZX-81 | Tagged | Leave a comment