Defends a domed base standing on a strip of ground, with a “LASER 5” counter at the top of the screen. BASIC draws the dome, the figure inside it and the ground from block graphics, then hands control to a machine-code routine that runs the game in FAST mode, reading the keyboard directly and using laser sights to aim. When the routine returns, the program waits about five seconds and restarts itself with RUN. The whole program fits in about 1K.
This is the hybrid BASIC and machine-code shooter by Raymond Fowkes published in Sync, July/August 1982, where it was described as having laser sights and a flicker-free display. The cassette is labeled by hand “ZX DEFENDERS”, but the program’s own REM title is “ZX DESTROYER”.
Program Analysis
Program Structure
- Line 1: a REM holding about 400 bytes of Z80 code, starting at 16514. The bytes include
IN A,(254)keyboard reads. - Lines 100–170: the playfield, printed once: the dome outline, a figure built from block graphics, and a two-row stippled ground strip.
- Lines 180–200:
POKEs to 16516, 16519 and 16524 reset values inside the REM code before each game. - Lines 210–250:
FAST,RAND USR 16526to run the game,PAUSE 300, thenSLOWandRUNfor a new game.
Notable Techniques
- BASIC only draws the static scene; all movement, firing and the laser count are handled by the machine code, with the BASIC
POKEs acting as a reset of its variables. - Ending with
RUNinstead ofGOTOmakes each game start from a clean state.
Source Code
1 REM ▘▀ # COPY TO #### ▖<>5▙RNDPEEK COPYE£RNDACS UNPLOT ▘3▘Y CLSLN [P]▝F▘▝;Y SCROLLLN [P]▝F▘3▘Y SCROLLLN [P]▝Y#<= RETURN3SQR Y SCROLL<= RETURN▒<>#▝[B]4#▞7/Z<>P 4#<>#▘W<># <>#▀<>#▖▞▘E£RND,,Q ACS F#ACS <;#▄<>#▀Q▌;ACS 7ACS 7;Y#W[Y]▞▖4~~<>#▖ GOSUB #<>#▖▞▘▒#▒<>#▀ACS #4▝LEN £ACS #4▝CHR$ £LEN [=]<>[Y]▌4[C]<>Q▝▘A▘<>#▀)5 ; GOSUB #£RND,,6[▒]RNDQ▌▞1/#)5 E[▒]RND;<>O▝<>ACS ▝#4XY$▞$[Y]Q▌4+ FAST<>Q▌ TO 5▛ GOSUB #£RND,,PY0[Y] LPRINT COS ▞▀( RETURNY:<>[Y]▝▞=4?<>Q▝█E[▒]RND)# RETURN;▞3Q 6[▒]RND/)Q Y[$]▞7<>[Y]▝4 LIST ▞7<>Q▝ ( RETURN[J]<>[Y]~~C#E[~~]RNDQ ) TO COPY;Y▌▞0[Y]CD6[~~]RND<>O~~Y▞▞-[Y]C6S/Y(▞=<>[Y]~~C)Y$▞<<>[Y]~~STQ▘▞)/NQ <>Q~~ /F▞#2 CLEARQ ;( CLSTAN ▒ACS #▞64;<>Q~~▘<>#▌A COPY) TO COPY; GOSUB #(RND,,6[~~]RNDQ▘▞/▒( RETURN<>P"▞#48<>Q"▞E£RND)$▘;###7▘* GOSUB [K]>)4 ;###F:* GOSUB [S]>▞~~( RETURN<>#▌- COPYE(RND;Q ) ▒ACS #4▘.ACS #4▘<;[J][Q]▞<C▞ GOSUB #▞)2 Q$( RETURN<>#▌▄<>#▌#[>]RND
10 REM "ZX DESTROYER"
90 CLS
100 PRINT "LASER 5";TAB 15;"▄▄"
110 PRINT TAB 12;"▄▀▀ ▀▀▄"
120 PRINT TAB 10;"▗▀";TAB 20;"▀▖"
130 PRINT TAB 9;"▗▘";TAB 21;"▝▖"
140 PRINT TAB 9;"▞ █▌ ▚"
150 PRINT TAB 8;"▐ ▜▘ ▌"
160 PRINT TAB 8;"▌ ▗▜▚ ▐"
170 PRINT TAB 8;"▌ ▞▖ ▐";TAB 4;"▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒";TAB 4;"▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒"
180 POKE 16516,0
190 POKE 16519,223
200 POKE 16524,0
210 FAST
220 RAND USR 16526
230 PAUSE 300
240 SLOW
250 RUNNote: Type-in program listings on this website use ZMAKEBAS notation for graphics characters.

