Videopac G7000 Programs
Last changed: 2007-08-31

In my document about the G7000 / Odyssey² BIOS I explain several simple demo programs. Here you can download the full source code to all of them. They were all written for ASL, for other assemblers you may need to make some changes. To successfully assemble any of the programs you will need my g7000.h include file which is in the "Support files" section. There you can get a copy of the GNU Public Licence, too.

Demo programs for the G7000 / Odyssey²

"HELLO WORLD" using printchar

*hello.a48 Version 1.2

This program uses the printchar routine to print "HELLO WORLD" in white letters.


"HELLO WORLD" using tables

*hellot.a48 Version 1.1

This program prints "HELLO WORLD" in green letters. It uses the table routines for this task.


Joystick and sprites

*joystick.a48 Version 1.3

This programs displays a dot which can be moved around with the joystick. While moving the dot changes into an arrow. Press the fire button to double the size of the dot/arrow.


Collisions and the built-in tunes

*collision.a48 Version 1.3

This program displays the contents of the collision register. You can move the ball with the joystick to collide with both grids, another sprite and a char.


Clock routines

*clock.a48 Version 1.0

This programs demonstrates the use of the clock routines built into the BIOS. The clock can be controlled by the joystick. Moving left stops the clock, moving right restarts it. The direction can be changed by moving up and down. Additionally the program plays a sound every full minute.


Bit fields, keyboard and IRQs (not for Videopac+ G7400)

*bitfield.a48 Version 1.1

This program shows how to use the bit field routines, how to wait for pressed keys on the keyboard and how to use VSYNC and line interrupts. It is a very minimalistic grid editor for the horizontal grid. Use + to edit the next, - to edit the previous bit, 1 to set the current bit and 0 to clear the current bit.

This program does not run on Videopac+ G7400 machines.


Custom sound tunes

*tuneplay.a48 Version 1.0

This program contains a custom tune playing routine that is very similar to the routine used by most commercial games with custom sounds. Press any key to hear a tune play.


Identify machine: PAL or NTSC

*palntsc.a48 Version 1.0

This programs checks if it is running on a PAL or a NTSC machine. This is done by checking the length of the VBLANK pulse.


Videopac+ G7400 features (only for Videopac+ G7400)

*vpplus.a48 Version 1.2

This program shows the additional text and graphics capabilities of the Videopac+ G7400 machines.

This program only works on Videopac+ G7400 machines.


Videopac+ G7400 slideshow (only for Videopac+ G7400 & MegaCART)

*slideshow-1.1.zip Version 1.1

This program shows a slide show on Videopac+ G7400 machines with MegaCART hardware.

This program only works on Videopac+ G7400 machines. It needs a MegaCART or FlashCART cartridge to run.


MegaCART/FlashCART EEPROM editor (only for MegaCART/FlashCART)

*eepromedit-1.0.zip Version 1.0

This program allows to change the EEPROM contents of the MegaCART or FlashCART.

This program needs a MegaCART or FlashCART cartridge to run.


Support files for the demo programs

The GNU Public Licence V2

*gpl-2.0.txt Version 2

This is the licence which defines the conditions under which you can use most of my demo programs. See the individual programs if this licence does apply.


The GNU Public Licence V3

*gpl-3.0.txt Version 3

This is the licence which defines the conditions under which you can use some of my demo programs. See the individual programs if this licence does apply.


The include file used by the other programs

*g7000.h Version 1.3

This file contains symbolic names for all BIOS routines, VDC registers, internal RAM variables and colors.


The include file used for the FlashCART firmware

*flashdefs.h Version 1.0

This file contains the definitions for the FlashCART API.


More demo programs for the G7000 / Odyssey²

The demo programs here are not explained in the BIOS document. Most of them just demonstrate one feature of the machine or were used to verify the accuracy of the o2em emulator. I provide them here as examples, although they are only very badly documented.

Toggle P17: make dark colors bright

*p17.a48 Version 1.0

The program print "HELLO WORLD" on the screen. Then you can use the keys 0 and 1 to clear and set P1 bit 7. This port bit forces the luminance bit of the VDC output to 1 making all dark colors bright, so all 16 colors can be used as background colors.


Demonstrate quad cut off

*quadcut.a48 Version 1.0

This program shows how quad cut off does work. Quad drawing is always controlled by the last char in a quad.

The quad in the top row is cut down to 2 lines by the full block in the last char, the other 3 chars show a filled triangle block 038h with different start positions.

The quad in the bottom row is displayed in full height by showing a full block as last char. The other 3 chars show the slash 02eh with different start positions. The display of these 3 chars does not stop at char end, the display wraps around and shows the full block which is char 02fh.


Show the different chars

*charset.a48 Version 1.0

This program shows one char surrounded by a check-board pattern to make it easier to see which bits in the char are set. Press 1 for the next char or 0 for the previous char.


Print the char bitmap as hex values

*charscan.a48 Version 1.0

This program prints one char and uses a sprite to scan for the bitmap of the char which is then printed. Press 1 for the next char or 0 for the previous char.


Collisions with Videopac+ objects (only for Videopac+ G7400)

*coll-plus.a48 Version 1.0

This program demonstrates how to check for collisions with Videopac+ objects. Most of the display is identical to the collision.a48 demo program. Additionally there is a bright white and a dark red blinking block as Videopac+ graphics. Only bright colors are active for collisions, so the dark red block does not collide.

This program only works on Videopac+ G7400 machines.


Dump the program ROM contents

*romview.a48 Version 1.0

This program shows its own ROM contents on the screen. It supports the following key commands:

0previous bank
1next bank
2previous page
3next page
4previous 8 bytes in page
5next 8 bytes in page

Play the 10 different BIOS tones

*tones.a48 Version 1.0

Press the keys 0-9 to hear all 10 tones included into the BIOS ROM.


Reading back char registers returns junk when GFX is on

*charread.a48 Version 1.0

This program shows that the char registers have a different meaning when read back in gfxon than in gfxoff. The contents while gfxon looks like junk.


More support files

Here you can get additional support files. They are currently not used by any of the released demo programs, but may be useful for programmers.

The Videopac char set as asl codepage

*charset.h Version 1.0

This file does contain the Videopac char set as asl codepage. If you include this into your programs you can write things like:



        codepage videopac
hello   db "HELLO WORLD"
        codepage standard