Are BASIC days over?

  • It's funy how things progress. I actually grew up with BASIC and I can say as much as I have changed my view what BASIC is. But it took quiet some time. I was an early adopter of JavaScript back in 1996 becuase I was crazy about scriptlanguages during this "hyperlink and multmedia craze". I learned it quet well but it did not feel anywhere close to BASIC to me at that point. I was not following the crowd and pointed it out as a toy language, I could see the potential.

    But as soon as everything was simplified with the big HTML5 step, things suddely changed, it was now optimized for graphics and sound. People saw the good and bad parts of languages and especilally in JavaScript, so I started to see it in a simpler way too. If you ask me today, then I would say that JavaScript is certainly the "BASIC" of today.

    I would also say the same about Python even though I don't use it myself. And it has such an emmense avantage with its collection of librarries and the ability to function as a scripting langauge and do all kinds of practical things. Python is certainly also the "BASIC" of today.
    No wonder workshops are full of both of both of them. They come in micro versions even..
    Using such as Cerberus-X has certainly helped my greatly to see this evolution happening even clearer.

    All other langauges evolve, so why not BASIC? Some features gets added, some gets discarded.

  • They say "everything evolves into crabs..", and in the world of programming languages, Object-Oriented (OO) has certainly been that crab. But at the same time languages that don't evolve become outdated, so we continuously borrow good features from our environment, to survive that same environment..

    So I guess it's up to what BASIC should be defined as. I would define it as "A Turing machine that does not hurt your brain".

  • A good example of how modern BASICs fails today is that they retain all the nice constructions but when you use the API's you need to talk to but the bureaucracy surrounding it all explodes into some kind of monster.

    At the end you will have a few nice BASIC commands are sitting atop a large tower of shite.

  • Just for fun I got a 1984 ZX Spectrum Plus and as I was searching for books and tools, I was surprised to see people did publish books only few years ago to teach Sinclair BASIC and there are some modern tools for Windows, Mac and Linux to develop for the ZX Spectrum.

    I don’t have a lot of history with BASIC but indeed Sinclair BASIC seems very friendly. With the ability to draw shapes and graphics on the screen with just a simple line, as a kid I would have spent hours coding nothing but graphics.


    Even today it is pretty fun to be honest. Unfortunately the machine I have is overheating, so I guess I’m going to be forced to fall back to an emulator very soon.

  • Nice. I loved doing graphics animation on my C64C and Amiga all day long actually. You had to use Machinecode though on the C64C the in-built BASIC was not enough for what I wanted to do, but it was not too difficult to make simple games and apps. I made my own GameMaker kind of thing, with sound, and animation parts. I planned to do music and other tools too but I never got that far.

    In Cerberus-X I built (or still building kinda) an engine (if you can call it an engine bc I wanted it to be supersimple) and with it I get that nice and smooth experience that I used to have with my retro machines when using machinecode.

    Of course, now it's closer to Neo Geo, Wii and Playstation in quality and in what can be done. But I made it so I also can get the same simple experience that I had with my dear retro computers whenever I want.

    I was planning to build some "Retro Game maker" tools also in Cerberus-X. I just love the concept to have different customized tools.

  • Last year I have purchased a C64 replica with very high hopes of developing games for the C64, but I did find programming for it a bit beyond my head, it was nothing like what I was hoping. The only thing I managed to do is draw and move a sprite across the screen but then I was discouraged from going any further.

    With ZX Spectrum it is the opposite, after just a week I managed to put together a tic-tac-toe game and a simple shooter thing, can’t really call it a game and it is not fast graphics, animation is a bit choppy but it is the buty of the Spectrum games and I am super inspired to go further and develop for the ZX Spectrum.

    What is interesting there are even tools, game makers available for Windows, Mac, Linux to develop for the ZX Spectrum. One such project is ZX Basic. But there are others too.

  • I avoid replicas like the plague, you never know what kind of experience they will deliver. Some might be good but most of them do a poor job. They are more or less just an emulator in with a bad HD graphical menu instead of the real deal. You want the directness and roughness of a retro screen quality. Those newer thing just does not work for me. But I'm always looking for new ones, because at some point these new toys *will* catch up, I'm sure.

    I'm working on a shader in Cerberus-X among other things, that tries to emulate a retro but high quality CRT (and later I will do a LCD like Game & watch and also glowing vectorlines). I'm exploring if it is possible to make them feel alive. We'll see.. It's difficult and I mostly just doing experiments.

    My friend grew up with the spectrum and I grew up with the c64, and I remember how we both could appriciate both of the machines, I kind of like the limitations of the spectrum graphics. It gave the games a certain quality.

  • The primary reason I picked the replica over the original hardware was the fact the old hardware tend to break often which I can’t fix.

    Unfortunately the ZX Spectrum prove this. First I got a 48k but after couple days stopped working. The seller fortunately offered me a refund. Then I went and bought a Plus model but it is overheat after 20 minutes after which I need to wait 5-10 minutes to use it an other 20 minutes again. This seller this time was ignorant claimed he only stated it is power on which is true. It does power on.

    But regardless it is pretty fun. I am seriously inspired to make retro games either for the original hardware in Sinclair Basic or for modern hardware using other tools. I love the simplicity of the 8 bit graphics and the games. So much less clutter and detail to think about. Of course people want shiny HD candy today do I don’t expect making any commercial success, I do it only because I enjoy it.

    Some retro shaders in CX would certainly be really awesome.

  • I'm getting really obsessed with the ZX Spectrum and being able to use my machine only 20 minutes at the time is not enough, I decided to take a look at ZX Basic.

    It is basically just a compiler to compile Sinclair BASIC code/text in to either a binary or tape images. I am certain the language has many benefits and the fact we can write our code in VS Code is very convenient and familiar. But in order to run what we did we do need an emulator. Since we need an emulator anyway, personally I find it much more convenient to just use the emulator to code for the ZX Spectrum the classic way using all the annoying keyboard shortcuts and combinations. I think it is just a nice classic experience and the emulator basically offer an all-in-one development environment where we can write and run the program and we can also save/export it in to tape image files to share it with others. Not only that but using a good old cassette recorder connected to a headphone jack, we can also record the tape from the emulator on to the cassette and play it on real hardware.

    I have just ordered my 3rd ZX Spectrum because I continue to prefer to use real hardware over the emulator. Asked the seller specifically if the machine continue to operate after longer period of time. Answer was Yes. Let's hope it is going to last at least a few months. In the mean time I am also inspired to learn a bit about electronics and see if maybe I could fix the faulty one. I am certain it does not have a serious problem. Maybe need to swap only a capacitor or a chip, I also learned that overheating was common with these machines and people often install a heat sink to help with that. Maybe this is all I need to do.

    So how could Cerberus-x come in to this picture?

    Since ZX Basic allow us to simply compile BASIC code in to tape images, I can't see why CX could not generate Sinclair BASIC code and then use ZX Basic to split out a tape image. Of course limitations of the ZX Spectrum need to be taken in to account and maybe offer some ZX Basic specific commands, for example the platform is limited to only 8 colors so CX could potentially offer some constants like ZXBlack, ZXYellow, ZXWhite....etc

    So Why would someone use CX instead of the emulator or just ZX Basic?

    Obviously there are not many people who interested in targeting a vintage platform and to use a classic programming language, on the top of that coding on the ZX Spectrum is a weird experience because you don't type the commands letter by letter, but you need to use key combinations which can quickly scare people away. Forexample key P is PRINT, key F is FOR and Key Shift + F is TO..etc

    So CX could offer the convenience to use a more modern programming language and environment instead of a classic and more limited one. On the top of that we could also preview the project using mojo, but when we export it for the ZX Spectrum platform it would split out ZX Basic code which could potentially look a bit different in emulators and on original hardware. Limitations of the target platform certainly need to be kept in mind and considerd when someone use CX to develop for it.

    Why the ZX Spectrum and not C64, Amiga?

    Frankly it seems to me the ZX Spectrum is a bit overlooked, the community seems very small, there is not a huge demand for ZX Spectrum games and hardware so I don't really have a good answer for this one. Maybe the only reason I can say is that ZX Basic is written in Python and super simple to use to compile tape images.

    Personally I really enjoy the limitations of the ZX platform, some games not even have audio only a beep sound for the weapon and that's it. As I mentioned the platform support only 8 colors which is create a unique ZX Spectrum look and feel that sit somewhere between an Atari 2600 and a NES. Some games are extremely minimalistic, only few pixels, only single colors while other games maybe a bit more colorful. ZX Spectrum offer a wide range of experiences because as far as I can tell ZX Spectrum machines are backward compatible so you can play ZX80 games on ZX Spectrum 16, you can play ZXS16 games on ZXS48, you can play ZXS48 games on ZXS Plus 128 and Plus 2. Not sure if Plus 3 is backward compatible though, it uses a completely different cartridge. But up to ZX Spectrum Plus 2, you have an extremely huge collection of games to choose from going back to the ZX80 which supported only 2 colors black and white. So the range of games you can find for the ZX Spectrum platform is pretty big depends on which ZX computer was the main target platform.

  • I feel that I want to mention that as I have a love for retro machines I actually have been working on a minimal "engine" for retro graphics inside Cerberus-X. I would never call it an engine bc it's too simple. What it does is it allows me to use retro resolutions on Android iOS macOS Windows Linux and Web (maybe Pi later on). Without a shader or overlay this is of course just a simple mechanism that everyone uses in their games nowadays. But i wanted to start there.

    I can simply select a centred pixelperfect scale, perfectscreenscale, cover 100% screen, or 1:1 native pixels. I plan to use shader on this to simulate my favorite machines. On top of this I took the C64, the Amiga, the Spectrum, the MSX and a few more that I love, up to Neogeo and I analyzed what kind of graphics they use, how it is limited and how they are similiar and unique and I made myself a fake retro machine out of this in a way. I simply had the insight.. it does not have to be very special or complex at all.

    The biggest thing is things like palettes. Palettes for sprites, for tiles and characters etc. Posssibility to change it every frame to fade cycle etc. I wen through all the features of each machine and took out the main idea of each one so the resultis ridicusly simple. Still, it is and it feels like a retro machine to me. I code Cerberus-X using that code wheneverI want to have that kind of base. The palette is a shader that uses a secondary texture to make its thing. It allows instant change of any col.

    I made a outline shader just for fun, it makes a pixelperfect outline around sprites. I intend to use palettes in Cerberus-X for tiles (much like spectrum but not 2 cols but instead 4+ cols per tile). NeoGeo solve its graphics in a very simple way, no layers, no chars, 100% sprites and LOTS of them. Cerberus-X can easily make spectrum or C64 /Amiga tiles also using neogeo techniques. I decided to draw the line around Playstation because it feels more 3d than 2d. But polygons is part of Amiga so to draw non-aa triangles that you can animate is def. part of a retro engine.

    Cerberus-X is practically set up already to handle this kind of thing so the code is minimalisitc. It becomes more like a template.

  • Btw I ofund out that emulating a particular machinewould actually take more effort from me than just coding a dream retro machine that combines all the features I love from each platform. So that's what I did.

    Right now I'm working on something but I plan to get back to this at some point

  • I feel that I want to mention that as I have a love for retro machines I actually have been working on a minimal "engine" for retro graphics inside Cerberus-X. I would never call it an engine bc it's too simple. What it does is it allows me to use retro resolutions on Android iOS macOS Windows Linux and Web (maybe Pi later on). Without a shader or overlay this is of course just a simple mechanism that everyone uses in their games nowadays. But i wanted to start there.

    I can simply select a centred pixelperfect scale, perfectscreenscale, cover 100% screen, or 1:1 native pixels. I plan to use shader on this to simulate my favorite machines. On top of this I took the C64, the Amiga, the Spectrum, the MSX and a few more that I love, up to Neogeo and I analyzed what kind of graphics they use, how it is limited and how they are similiar and unique and I made myself a fake retro machine out of this in a way. I simply had the insight.. it does not have to be very special or complex at all.

    Sounds like you did put in lot of effort in to this project. The only thing I have done to sort of emulate the look is I draw everything on to small 320x200 canvas and scale it up to whatever the actual screen size is.

    I always felt like CX need more 3rd party projects like this. Libs, engines, frameworks that offer basic building blocks ready to use. I did also worked on an “engine” kind of thing but as always I lose motivation half way in and Mikes Fantom engine was already better than what I have done.

    But what you have done sounds pretty interesting. Maybe worth sharing on itch with documentation if you feel motivated to do so. Could also drive more attention toward CX.

  • To compile Cerberus-X to specific syntaxes to run on specific hardware sounds like an exciting challenge. Personally I don't know enough to do that the "proper way" yet.

    Maybe I am looking at it with untrained eyes from a wrong perspective but with ZX Basic doing the hard work, I imagine CX only need to translate CX code to BASIC possibly ignoring mojo specific commands. I am playing with the idea for a long time to write some sort of translator and tools for this but I always get distracted and of course I also lack knowledge, it would involve lot of experiments and unoptimal solutions on my part.

  • You are probably not wrong at all; it could definitely be done that way. In fact, that's actually how I would do it. It might be a bit like "cheating", but it would work definitevly. It would involve writing Cerberus-X code that performs string manipulation and uses macros to create .bas or .bin files.

    I made a 6502 assembler/disassembler that way, and it took 1-2 screens of Cerberus-X code. I think it would be feasible to make it handle its own commands (e.g., .cxs files) and output the correct Sinclair BASIC, along with assembler calls and routines, to makek sure that you get the abs best speed in the games

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!