Beam Software produced a version of Breakout for the 1K ZX80 named Double Breakout and released it in 1981. It was sold on pre-recorded cassette and was later released for the ZX81 and ZX80 with the 8K BASIC ROM upgrade. Note that the game will only work with a UK (50 Hz) version of the ZX80, but it can easily be modified to run on a USA model (60 Hz) as detailed later.

The ZX80 Double Breakout cassette can be seen in the photo below:

ZX80 Double Breakout Cassette

The game file is available from the downloads section.


The 1K version of Double Breakout implements a 18 row by 31 column cut-down version of the arcade classic.

Screenshot of the menu for ZX80 Double Breakout Screenshot of ZX80 Double Breakout
ZX80 Double Breakout - Menu ZX80 Double Breakout - Game

There are two walls of bricks and the player must bounce a ball against the walls to knock out the bricks. There are a total of nine balls per game, with the number of balls remaining shown above the playing area. The player moves the bat up and down using keys 5 or 6 and down using keys 8 or 3, and a ball is lost if it is not bounced back by the bat. The program supports multiple ball angles, adding to the difficulty of the game. The game will continue even once all bricks have been knocked out, and will automatically restart when all balls have been lost. The game supports seven skill levels (very fast to very slow).

An advert for the game appears below (source: Your Computer magazine, Vol. 1 No. 1, June/July 1981):

The game was also sold by SoftSync Inc. and an advert appeared in Sync magazine (Vol 1. No. 6, Novemeber/December 1981, page 3) which mentions that the Double Breakout game was renamed to Wall Busters.


The video generation routine for Double Breakout is shown below:

OUT  ($FF),A   ; Vertical sync generator off.

; Generate the top border and main display area.

LD   A,$EC     ; First scan line timing counter.
LD   B,$19     ; 24 rows and 1 for the top border.
LD   HL,$C1A2  ; Display file address (bit 15 set).
LD   C,$30     ; 48 lines in the top border.
CALL $4020     ; Produce the top border and main area.

; Generate the bottom border.

LD   A,$E8     ; First scan line timing counter.
INC  B         ; Set the row count to $01.
DEC  HL        ; Point back to the last HALT.
LD   C,$2F     ; 47 lines in the bottom border.
CALL $4020     ; Produce the bottom border.


; $4020 - Scan line generation routine.

LD   R,A       ; Left border width of the first line.
LD   A,$DD     ; Border timing for subsequent lines.
EI             ; Enable interupts.
JP   (HL)      ; Execute the display file echo.
ZX80 Double Breakout Video Routine

The game has its display file located at $41A2 and hence its video generation routine specifies the display file address as $C1A2. Note that the game could have called the ROM routine at $01B0 instead of reproducing it at $4020.


The program listing for Double Breakout is shown below:

Program Listing of ZX80 Double Breakout

The program stores the game machine code within numeric array A(210), and includes a small transfer routine to relocate the game code to address $4000. An array in the ZX80 can contain at most 256 elements (indexed from 0) and each consists of a 2 byte integer. This yields a code size of 211*2=422 bytes.

The game can be modified to run on a USA (60 Hz) model of the ZX80 as follows: delete line 100, type LET A(5)=6158, type LET A(10)=-13033, insert 100 REM X and then start the program.


Details to follow...


Click here to download 1K ZX80 (4K ROM) Double Breakout in .O program format. Run the game using GO TO 1.
Click here to download a disassembly of the 1K ZX80 (4K ROM) Double Breakout game.

Contact Me
  -   Disclaimer