Basic Interpreter With Shared Variables

I expanded the BASIC script interpreter in basicscript-03.zip to include an example of how you can share variables between your program and the script. For example, you can set a counter in your program, pass that value to the script, and have the script update the value, and then use the new value in your program. Note that since the make file is for Qt, I suggest you compile with g++ *.cpp -o basicscript.

The example ConsoleBasic class now shares two variables with the script, in addition to the CLS command we added in the previous post. An integer variable counter and a string in name$ are now read and modified in the sharedvariable.b sample script.

Continue reading Basic Interpreter With Shared Variables

Basic interpreter with custom command

I expanded the BASIC script interpreter in http://8bitcoder.com/downloads/basicscript-02.zip to include an example of how you can extend the interpreter and add your own commands to it. Sorry about the Makefile depending on Qt. I’ll create a generic Makefile next version I release.

I created a ConsoleBasic object, then added the cls command. You can see I add it in the constructor, then in execAddonCommand I check the token that is passed in to figure out what command I should execute, which in this case can only be one command, then clear the screen via ANSI escape codes.

Next example will show how to make your C++ variables available to BASIC.

class ConsoleBasic : public SmallBasic
{
private:
    int m_cls;
public:
    ConsoleBasic(const char* pszFilename)
        : SmallBasic(pszFilename),m_cls(0)
    {
        m_cls = addCommand("cls");
    }

    bool execAddonCommand(const int tok)
    {
        if(tok == m_cls)
            printf("\x1b[2J\x1b[0;0H");
        return true;
    }
};

Basic Interpreter for Embedded scripts

I had a few people interested in my BASIC interpreter that I was using as an embedded script interpreter. I had started using it in my MUD but pulled it out and made a stand alone example. It still needs a little cleanup and i still need to create an example of how to add more commands to it. See basicscript-01.zip. You can run the script with “basicscript hello.b“. hello.b uses a few commands and shows how you can use labels instead of line numbers. Line numbers are supported as well. Don’t be too hard on the code, I wrote it back in 2001!

6809 CPU Emulator project started

CpuEmulator is a CPU emulator project that aims to emulate a CPU (the 6809 to start with), it’s registers, and system memory. It will allow you to monitor registers, flags and memory as you step through code. Having done SharpiEmu for the Sharp PC–1360 Pocket Computer, the concept seems pretty simple. The 6809 has a number of addressing modes, and different opcodes for the same mnemonic. So I’m expecting it to be somewhat more of a challenge.

Initial version will emulate the CPU, memory, and text video mode.

Features

  • Emulate 6809 instructions
  • Emulate 32×16 & 80×24 text modes
  • Emulate the Coco3’s MMU
  • 4K all the way up to 512KB memory options
  • Debugger that steps through code, shows current state of registers, selected memory block, and source code from a listing file.
  • Break points. They are remembered between runs.
  • Memory watcher. When memory at a certain addresses are modified, a breakpoint is triggered so you can see what modified it.

Continue reading 6809 CPU Emulator project started

Bouncy Ball 2 Progress Report #1

Bouncy Ball 2 Progress Report 1. First things first. We need to get the Coco 3 into it’s high resolution graphics mode, then display a little something. To start out small, I decided to create a program that sets the video mode, uses the MMU to map in the video memory, then clears the screen. That part was easy, although understanding the MMU was a little whacky.

Continue reading Bouncy Ball 2 Progress Report #1

Bouncy Ball 2 Announcement

I’m happy to announce that Bouncy Ball 2 development has started! Design is underway, and the sound system already sounds awesome. We have been able to make the Orchestra 90 sound mad. It’s using full stereo sound, mixing 4 channels, and uses hardly any CPU. We have a lot to learn about the Coco 3. Join us every week or two on the BB2 development blog to watch our progress. We are Lee, Simon, and Paul.

Orchestra 90 CC Stereo Music Synthesizer

Radio Shack Catalog Number 26–3143. The Orchestra–90 CC is a stereo 8-bit audio player for the Color Computer. It works by mapping two addresses in the Coco’s address space to two 8-bit DACs. $FF7A is for left, and $FF7B is for the right. This is the first time I have been able to use this cart, never mind program it! So far, it’s pretty easy to program.

Continue reading Orchestra 90 CC Stereo Music Synthesizer

Bouncy Ball Version 1 Available

Bouncy Ball version 1.0 has been released, and in time for the 2016 25th Cocofest. I was working on a timer bug, and RGB mapping, while Simon was working on the end game sequence. I owe him a case of beer for his efforts, staying up till 2am his time, on a work day! I am so looking forward to watching people play on my Coco 3.

Continue reading Bouncy Ball Version 1 Available

My Raspberry Pi and the weather

After a successful (and surprisingly easy) setup of my Raspberry Pi 1 model B+ (also called an RPi), I decided to start working on a little weather app. While I like the look of the stock weather app on the iPhone, it is always missing, some bit of information I want. Like how much snow is expected in a couple days, and what the chance of snow is. As a result, I find myself going to Weather Underground to get the rest of the info I want. So, I decided to put my RPi 1 to work and create a system that will automatically download the weather and send me an email in the morning with a complete report.

Continue reading My Raspberry Pi and the weather

Bouncy Ball Public Beta 1

Bouncy Ball Beta 1 is here. See the downloads. This has the lightening fast rendering routine that Simon and myself optimized. Originally a 7 fps C routine to a 50 fps inline assembly routine. I am now running at the Coco’s stock speed of (just under) 1MHz instead of using the 2X speed up on the Coco 3. This also means Bouncy Ball should run on a Coco 2, but I have not tested it yet. The frame rate is buttery smooth but not vsync’ed yet. Some sounds have been added to the game, but in game ball bounce sound is not there yet. And best of all you can now use the keyboard to play!

Continue reading Bouncy Ball Public Beta 1

Optimization, inside the mind of a mad man

In this article I talk about optimizing the level rendering routine for my game Bouncy Ball for the Color Computer. With the help of the mad man Simon Jonassen, I was able to take the render routine from 7 fps to 50 fps! I was quite surprised at the results. I made a video at the end of this article, and explain things in detail here. I also list a couple resources you might want to have in your back pocket.

Continue reading Optimization, inside the mind of a mad man