Lobsters retrocomputing - 13 Sep 2026

Page 8 of 8

To make our replacement code useful, we should provide some quality-of-life features. We'll make it autostart into a transfer so that all you have to do is load up the program into your Xmodem sender and reset the VZ200, and after a polite delay it will pull down and run the program automatically. We'll also let you load multiple times if you want instead of immediately trying to execute the current file being transferred. We'll also finally put that routine in memory for the slower but more forgiving memory fill operation, and enable the VZ sticks by default in case we find something that really needs them. But more important than those, we should also let you drop back into BASIC and use the SD card loader normally without having to pop the card out. That requires us to include a copy of the actual VZDOS.VZ which we will embed in our replacement code.

This adds an additional complication, because the 2.32 slushware (the most current as of this writing) is already 8068 bytes long minus the .VZ header, leaving us only a little over 2K for our own code. Moreover, if we're over 8192 bytes (and it's inevitable we will be), the loading process will overwrite at least 100 bytes of our code with the trampoline and fail to copy the rest. We'll solve this by immediately copying the remainder as the first step in our binary, and then post-processing the object to yield a new VZDOS.VZ with a 128 byte hole between the first 8K and the last 2K (remember it gets loaded to $8000, so we have plenty of space there). Part of this code will be used to make a jump table entry for our slower fill so the call will stay constant with future updates, if any. That looks like this:

di

jp uentry

; any jump table entries we want should go here, and then be

; pulled out from VZDOS's offset below

jp sloclr ; slow hires clear for bad video RAM

; include original VZDOS but jump to our code

; start at a different offset, skipping the first three

; instructions which are never called again, so we can do them

; elsewhere

binclude "vzdos.vz_232", 35

uentry ;;; this code must all be under the 8K mark ;;;

; copy remaining 2K from its "safe" location + 128

ld hl,0a080h

ld de,06000h

ld bc,00800h

ldir

uentryb ;;; end code that must be under the 8K mark ;;;

; ensure ROM reloads

ld a,0

ld (08000h),a

; patch our VZDOS to not try to reload itself

ld a,201 ; "ret"

ld (04046h),a ; only valid for 2.32

Since we are embedding VZDOS but we need to keep all its relative offsets intact, we skip the first 7 bytes and the .VZ header, and run those instructions later just before we jump back into it (if we do). We also do a couple patches so that VZDOS will reload (us) on a reset, but not when we execute the embedded copy, and still use an unmodified 2.32 so that you can see there's nothing up my sleeve.

Time for our fill routine.

; acts like ldir but does it manually (assume hl, de, bc set, and

; byte is in a). save the byte somewhere! don't save it in VRAM!

sloclr ld (slobyte),a

sloclrl ld (hl),a

inc de ; make it real

inc hl

ld (hl),a ; double store to emulate 7000->7001, etc.

dec bc

ld a,c

or b

ld a,(slobyte) ; flags kept

jr nz,sloclrl

ret

This is pretty simple-minded, but it works. We stash the fill byte somewhere not in VRAM, then do everything LDIR would and leave the routine with A, HL, DE and BC set as they would be at the end. (We do set the Z flag on exit, but most routines won't care about this.) Then our Invaders example, which was

; Subroutine: Size=36, CC=1.

; Called by: LBL1[8254h], LBL4[8F3Bh].

; Calls: -

8C9E SUB40:

8C9E ld hl,7000h ; 28672

8CA1 ld (DATA47),hl ; 8DCEh

8CA4 ld de,7001h ; 28673

8CA7 ld bc,081Fh ; 2079

8CAA ld (hl),00h ; 0

8CAC ldir

8CAE xor a

can be patched by overwriting the two instructions at $8caa with ld a,0:call 04008h.

Ta-daaaaa! (In fact, since A is preserved, we don't even need the xor a and could just nop it.) Now, I'll note that this isn't foolproof. One interesting case is Super Snake, written for DSE by "S. Bjelic" (I couldn't cursorily find out more about this person), who also did Invaders and a number of other software releases for DSE under contract. The game mostly plays properly except scrolling the attract-mode screen, because unavoidably we'll scroll up the stuck bit. I don't think there's a good general way around that. Fortunately it's purely cosmetic, and most games I converted in this fashion seemed to work fine without any glitches. For its last bit of polish, let's give it a nice menu screen when it autostarts. You get around three seconds before it goes into the automatic load sequence (slightly less on an NTSC VZ200 because we use the end-of-frame IRQ to count, and the program can't tell the difference), but any key will interrupt it. You can also immediately (L)oad, return to (B)ASIC by jumping into VZDOS, or toggle VZ (J)oysticks or whether the program auto-e(X)ecutes.

We'll now create that loadable version of Wordpro as a useful hack and stress test, which by being over 96 blocks should unmask any insidious framing errors in BFL caused by long transfer drift. (The resulting WORDPRO.VZ can also be placed on the card and run from there as we did previously, though doing so doesn't enable file operations either.) You'll need copies of the actual ROMs, which do circulate. The entirety of the code - really a disguised linker script - looks like this:

org 07fe8h

; emit .vz header (24 bytes)

db 056h,05ah,046h,031h ; "VZF1"

db "WORDPRO\0\0\0\0\0\0\0\0\0\0" ; filename null terminated

db 0f1h

dw entry

entry ; copy code to 6000h and d000h

ld hl,rom1

ld de,06000h

ld bc,0800h

ldir

ld hl,rom1

ld de,0d000h

ld bc,03000h

ldir

jp 06004h

rom1 binclude "vtech_wordpro/wordpro.u3"

rom2 binclude "vtech_wordpro/wordpro.u4"

rom3 binclude "vtech_wordpro/wordpro.u5"

Remember that Wordpro was first and foremost written for the VZ-300, which has 16K of RAM, so its TOM is much higher ($b7ff). The cartridge, because it has full control of the bus, thus maps its much larger ROM in at $d000-$ffff, with 2K of $d000 also mapped to $6000 with the cartridge header sequence. This echo of the main cartridge ROM is what actually autostarts everything since the system ROM doesn't know to check anywhere else but $4000 and $6000. The same scheme works for the VZ-200, except there is no RAM between $9000 and $bfff.

But with the BennVenn cartridge, we have RAM everywhere, so we load to $8000 and copy the Wordpro ROM dumps upon execution to their proper location(s), duplicating $d000-$d7ff to $6000-$67ff like a real one, and jump into the "cartridge" at $6004. This copy operation will destroy BFL-the-slushware, but we can just reset to reload it. Wordpro will get all the RAM it would expect to get on a VZ-300, even on this 4K VZ200.

To verify operation, I also tested it on my Dick Smith VZ-200 as shown here, alternating between the VZ200 and VZ-200 using both macOS and Linux as the host, and using different HW-597-type dongles in my parts drawer. It all seemed to work and I think it will work for you. Downloads at the end.

Now that we can iterate quickly on them, let's patch and play a few more games before we close.

Another outstanding edutainment title is Maths Armada (not Math Armada, which my wife would insists is patentlys incorrects), where you have to load your cannon with the right sum, quotient, etc., aim, and fire. In the video we autoload the new binary with the BFL and the game starts immediately. This one I had to tack on a custom routine; the programmer had been a little too efficient and constructed a general fill subroutine which lots of things called, the screen clear portion being only one of many. (Darn those efficient little assembly language programmers.)

Here's a Pac-Man clone this time, another Dubois and McNamara release slightly improbably called Ghost Hunter. Continuing in that vein is a clone of Burger Time ("we are closed now!"), one of my favourite Intellivision titles, given a solid conversion as Hamburger Sam also by D&M. More recently, Juergen Buchmueller's Defense Command is sort of like a vertical Defender (complete with descending aliens trying to harvest your brood), though it has a curious game deficiency in that the side-to-side entering attackers need never be shot, so you can enter an eternal stalemate by merely sitting there. Still, the action is fast and the animations, albeit small, are decent. This game was written in C using an earlier version of the Z88 Development Kit.

Another Z88DK game is Arkaball by Jason Oakley, an obvious Arkanoid clone, but competently crafted and worth a video.

Finally, a much more modern game is (the vibecoded) VZ-DOOM, a Claude-written raycast Wolfenstein 3D-style game. It fortunately didn't need patching and "just worked." Your mileage may vary as to whether you think the AI usage is cheating, and this blog has a strict no-AI-article-text policy, but it performs as advertised on this NTSC machine and likewise merits a video. VZ-DOOM uses WASD for motion, comma and period to strafe, E to open and SPACE to shoot.

I think that's quite enough for our first foray into the ZWonderful ZWorld of the VZ, so let's finish the history as we customarily do. While VTech items continued to show up in Dick Smith stores, and VTech did make other Laser computers, these "later Lasers" were not closely related nor compatible with the VZ line, or each other, and most of them were much less successful - with the exception of their Apple II clones. The Laser 3000, fresh from its Summer CES 1983 debut, also made it down under to Dick Smith stores as the Dick Smith Cat. It required real Apple II ROMs in an external cartridge for compatibility, which also made it a target for Apple, fresh off their successful victory against Franklin Computer for using substantial portions of the Apple II ROM in the Franklin Ace 1000. Although VTech was still able to sell it elsewhere and the Apple II ROMs were never integrated into the base machine, Apple instead argued that the mere use of the ROMs was an infringement upon its intellectual property regardless, and successfully blocked further imports to the United States.

VTech learned from this just like they learned from EACA, and developed new ROMs that were carefully clean-room reverse-engineered, additionally incorporating a licensed copy of Microsoft BASIC retrofitted to act like Applesoft BASIC. This process provided the legal assurance that not a nybble of Apple's code was even consulted, and VTech used these unencumbered ROMs to create what was introduced at Summer CES 1985 as a redesigned "90% compatible" (per Creative Computing) Laser 3000. In turn, that reworked Laser 3000 was transformed into the 1986 Laser 128, a semi-portable riff on the Apple IIe with an expansion slot and built-in 5.25" floppy (later 3.5"). VTech's work paid off handsomely: reviewers were impressed by its value for money, most software never noticed the difference, and Apple's repeated attempts to prevent its importation and sale all ended in failure. The Laser 128 family's low price and exceptional built-in functionality made them the most widely sold Apple II clones in the United States, finishing on the market as late as 1989 in an upgraded 3.6MHz version with a 3.5" disk drive and over 1MB of RAM.

By then, however, the world had moved on from the 8-bits as general purpose computers, and so had VTech, parlaying its experience with the Z80 once again into inexpensive toys and games like the Socrates while turning their explicit computer brand toward the clone Laser PC. Likewise, although Tandy Radio Shack still sold the CoCo 3 and the final incarnations of the original TRS-80, it too was quickly transitioning to more lucrative PC clones like its Tandy 1000 family which it advertised prominently. DSE did much the same, still offering the VZ-300 to budget users, but otherwise more aggressively positioning other PC clones as an OEM reseller. Unlike Tandy, at least initially DSE did not further develop nor rebadge them as a house line and they were typically sold under the manufacturer, the most prominent being Taiwanese system builder Multitech. The machines shown here in my 1987-88 catalogue were among the last to bear that name before the company reformulated under a new brand still used today: Acer.

At DSE Jim Rowe left the company and after a brief stint at Microbee eventually returned to journalism in 1987. Meanwhile, DSE was still selling enough VZ-300s to keep them in this 1987-88 catalogue, and according to Greg Dubois' contacts at Dick Smith even at that late date they continued moving over 100,000 units a year, but in the end it was actually VTech that wanted out: VTech wanted to redirect factory capacity to the Laser PC and wasn't willing to keep producing the older system, and even DSE's offer to double the order couldn't convince them otherwise. Although some software and accessories still appeared in the 1989-90 catalogue, the computer itself did not, and the line disappeared completely by 1991. For a time afterwards DSE sold IBM consumer PCs and even Commodore PC clones in the process of adopting its own DSX PC brand.

In the 2000s the company failed to make a successful transition from its mail order origins to the new world of online sales, and despite several attempts to rework its retail presence Woolworths unloaded Dick Smith to Anchorage Capital Partners in 2012 in a controversial deal where much of the sale price was allegedly financed by Anchorage liquidating DSE's own assets. Anchorage took the company public in 2013, netting tens of millions, but the company did not recover and all 363 remaining stores were closed by May 2016. Greg Dubois passed away in 2025. Today the Dick Smith brand lives on solely as a mark of online retailer Kogan, primarily selling consumer electronics.

The DSE VZ-200 may have been a crap home computer too, but it was Australia's crap home computer, by golly. Much as Sinclair did in the UK and Commodore in the United States, the Aussie VZ-200 and its successor VZ-300 remain as beloved as they are because they introduced a entire generation of Australians to computers who could never buy one before. While a few importers tried to bring the also-rans to the South Pacific (DSE even had Radofin's undead zombie Aquarius in their 1985 catalogue!), the VZ was there first and in large numbers, over 20,000 VZ-200s alone, becoming the down-under standard against which all subsequent cheapo systems were measured. Indeed, when the desperately dire Tandy MC-10 got in front of Australian Personal Computer in December 1983, reviewer Surya commented that when considering it versus the VZ-200 "the MC-10 does not stand up well to this comparison." Legions of user groups and newsletters sprung up to support it, tinkerers designed all manner of expansions for it, and users wrote and sold their own software for it, ironically spawning exactly the sort of hobbyist-driven computer ecosystem post-Dick Smith that Dick Smith-era Dick Smith had previously tried to foster. Ultimately the little Hong Kong desk wedge became more of an Australian computer icon than even some truly homegrown ones.

As for this NTSC VZ200, it should be very possible to clone it because the ROMs are the same as the better-known DSE flavour and it's otherwise all off-the-shelf hardware; moreover, it would be infinitely easier to maintain and repair than the ghastly PCB it's got now. The schematics for the PAL Dick Smiths are widely available and there are even fewer components needed to build an NTSC one. At least one person has already made an NTSC-compatible RC2014 workalike, though that project uses a GAL, and it seems like we could make a more straightforward knockoff just using what the original did - with the exception of the colour encoder, which would be improved and somewhat simplified by using a proper MC1372 instead of the TBA520. I know "Leaded Solder" Mike has his clone CreatiVision, so I look forward to him picking this up as a new challenge. ;)

We'll be doing more with this system and particularly the VZ-300, now safely awaiting my next Southern Hemisphere trip, in future articles - along with a recently-acquired PAL CreatiVision of our own, the basis for the Dick Smith Wizzard, which we need to see if we can get up and running (I do like me a 6502 and a 9918). Meanwhile, David "Bushy" Maunder's VZ website can give you all the articles, technical information and software that you can stick on an SD card.

Just remember: you can never trust anyone mixing tea and solder.

The programs we wrote for this article and their assembler source code are all on Github, including pre-built binaries and ready-to-go Bush Food Loader "slushware" you can use with your own SD card loader, all of which are under the BSD 2-clause license.

Previous page | More Lobsters retrocomputing | Headlines

Original: http://oldvcr.blogspot.com/2026/09/a-dick-smith-vz200-without-dick-smith.html