11

The V-Tech Laser 128 is an Apple II clone. This machine uses a clean-room copy of the Apple II BIOS and was intended to be compatible with Apple software. However, Brøderbund's games stored with the RWTS18 filesystem didn't run on this machine. I understand why it wouldn't run on an emulator, but why doesn't it run on a clone with an original disk?

  • 1
    I found a bit of information here, but it doesn't seem to answer the question. – wizzwizz4 Feb 8 '17 at 21:28
  • Which games don't work? What is your source for that info? – Nick Westgate Feb 8 '17 at 23:42
14

I don't know how these rumors get started in the first place.

I have originals of:

Hardware

  • Laser 128, ROM Version 4.5
  • Laser 128EX, ROM Version 4.5

Software

Brøderbund RW18 games:

  • [m] Airheart
  • [X] Wings of Fury (works)
  • [X] Where in the USA is Carmen San Diego?
  • [X] Where in Europe is Carmen San Diego?
  • [X] Where in the World is Carmen San Diego?

Broderbund non-RW18 games:

  • [no] Choplifter (loads then fails machine check)
  • [X] Drol
  • [?] Gumball (fails to load, shows ROM GR test screen!)
  • [X] Spare Change

I've tagged games:

  • that work with [X],
  • that don't with [ ],
  • that can work with modifications [m],
  • that need investigation with [?].

I verified every game boots and plays either on //e or //c to make sure the disk is good.

I am one of the AppleWin's developers and can provide a definitive answer to end this stupid confusion over the Laser 128 and Roland Gustafsson's RW18 code, hopefully, for once and for all.

W.R.T. to Airheart:

  • It DOES work on my Laser 128.
  • It does NOT work on my Laser 128EX.

Since these two Lasers have the exact same ROM this tells me it is NOT a disk-drive machine incompatibility but sloppy code in Airheart.

As emulator maintainers we come across all sorts of bugs and stupid "hacks" including, but not limited to:

  • using illegal 6502 opcodes -- Lock-N-Chase
  • does a ROM checks -- Airheart, Choplifter, etc.
  • using uninitialized memory such as the RNG RND -- Pooyan (IIRC)

These prevent original disks working on emulators and clones. At the time Mr. Freeze's ROM was a (popular?) ROM mod to make Ctrl-Reset always stop the CPU and enter into the built-in ROM debugger, aka, the Apple 2 System Monitor. Game developers started getting aggressive to prevent people from "ROM dumping" the disk image.

Let's fire up Airheart and see what happens on our Laser 128EX. It prints this message ...

    REQUIRES //C OR 128K //E

... and hangs.

The code in question is @ $0946

    0946:A0 00          LDY #$0
    0948:B9 53 09       LDA $0953,Y
    094B:F0 FE          BEQ $094B       ; Hang on end-of-string
    094D:99 28 06       STA $0628       ; putchar() on Row 13
    0950:C8             INY
    0951:D0 F5          BNE $0948       ; always -- assumes string is < 256 length
    0953:
    0953:               MSB ON
    0953:               ASC "REQUIRES //C OR 128K //E"
    0953:D2
    0954:C5 D1 D5 C9
    0958:D2 C5 D3 A0
    095C:AF AF C3 A0
    0960:CF D2 A0 B1
    0964:B2 B8 CB A0
    0968:AF AF C5
    096B:               DFB 0
    096B:00

How the heck did I know that?

If we were to boot trace this on a //e or //c we could normally do:

    CALL-151
    9600<C600.C6FFM
    96FA:9F
    9F01:60
    9600G

Unfortunately, the Laser 128EX P5 PROM for the disk controller is hard-coded to run at address $C600 along with using the firmware expansion at $C800. We need to manually "patch-up" the boot stage 0 firmware code.

Specifically, we need to "page" in the firmware ROM and copy it, then fix up all the calls to $C6xx or $C8xx.

    C600:0
    9800<C800.C8FFM
    960D:98
    9610:98
    9660:98
    9669:98
    9696:96
    96D7:98
    96EA:98

Putting it all together:

    CALL-151
    C600:0
    9800<C800.C8FFM
    9600<C600.C6FFM
    96FA:9F
    9F01:60

    960D:98
    9610:98
    9660:98
    9669:98
    9696:96
    96D7:98
    96EA:98

    9600G

Inspecting the boot sector and back-tracing how the PC (Program Counter) ends up at $092F we see this machine check at $08D7:

    08D7:AD 81 C0       LDA $C081       ; Turn off Language Card RAM @ $D000 .. $FFF
    08DA:AD 81 C0       LDA $C081       ; Re-enable ROM bank @ $D000 .. $FFFF
    08DD:AD B3 FB       LDA $FBB3       ; MachineId byte
    08E0:C9 06          CMP #$06        ; 
    08E2:D0 4B          BNE $092F       ; Laser 128EX = $06 = pass
    08E4:2C 17 C0       BIT $C017       ; SLOTC3ROM
    08E7:30 46          BMI $092F       ; <- Clone triggers this

In case you are curious you can find a list of the Apple 2 I/O softswitches at Jon Relay's site:

We can "patch" this check to skip the BNE and BMI by changing them to LDA #immediate via:

    8E2:A9
    8E7:A9

This 2 byte patch will make the game work on any //e+ or //c clone.

Finally, here is TL:DR; version to play Airheart on the Laser 128EX:

    CALL-151
    C600:0
    9800<C800.CFFFM
    9600<C600.C6FFM
    96FA:9F
    9F01:A9 A9 8D E7 08 4C 01 08
    960D:98
    9610:98
    9660:98
    9669:98
    9696:96
    96D7:98
    96EA:98
    9600G

To answer the original question:

  • There is nothing incompatible with the Laser 128 and Laser 128EX disk drive that stops it from running Apple 2 software. The sole reason is a lazy developer doing pointless machine identification checks to stop it form working.

  • There is a problem with the Laser 128EX way it handles the status of the C3 firmware. I have no idea why V-Tech's engineers changed the way SLOTC3ROM works on the Laser 128EX compared to the original Laser 128.

/Oblg. Paul Harvey's "And now you know the rest of the story."

Enjoy!

Meta:

Since Nick's answer has already been "accepted" I have no problems merging this into his answer as long the entire information is keep tact. He is one of our fellow AppleWin developers. He understands the Apple II disk drive controller far better then me.

  • Thanks for the answer. Keep in mind that accepted answers can and do change; this is more the sort of answer that I would accept. I'll unaccept Nick Westgate's for now (I don't think he'll mind the 0.6% reputation loss) and make a decision after re-reviewing them. – wizzwizz4 Mar 26 '17 at 0:07
  • So Michael, do the other titles you have (listed) all work without modification? That's interesting info about Airheart. I'm a little surprised as it appears in the Laser compatibility list I linked to in my answer. Cracking skills come in handy even if you don't want to copy it. ; - ) – Nick Westgate Mar 26 '17 at 3:19
  • @NickWestgate I've updated the status of the Laser 128EX. I'll get around to testing Gumball on the original Laser 128 and post those results later. – Michaelangel007 Mar 26 '17 at 3:59
  • @NickWestgate Looks like Gumball also does not boot on the original Laser 128 as well -- it partially boots then shows a GR test pattern. I'll boot trace this code later and once I have a work-around will update my original answer. – Michaelangel007 Mar 27 '17 at 15:32
  • UGH Boot-tracing Gumball is going to be a real witch ... thankfully I have 4am's Gumball crack docs to follow along ... – Michaelangel007 Mar 29 '17 at 17:30
13

Update: From my research the Laser 128 series was compatible with Broderbund's 18 sector titles.

A friend (thanks Michael!) has tested Wings of Fury on his Laser 128EX, and I've tested Airheart on an Apple //e with a VTech Universal Disk Controller, both successfully. VTech manufactured the Laser 128 series and the UDC and used similar ASIC chips in all of them to get around Apple's patents.

The techniques used in RW18 were no trickier or more timing sensitive than DOS itself. Disk timing is tight, so any emulation of Woz's sequencer design should either work or fail for pretty much everything. The use of 18 sectors was originally a cost-saving measure for the game producers, then an extra hurdle and headache for pirates simply because it required complete understanding of the software's disk layout and took extra effort to convert into a standard 16 sector format.

Note that Bank Street Writer III, Prince of Persia, and Wings of Fury use an extra level of protection which is more sensitive to timing and the implementation of the sequencer, yet we know that at least two of these work on the Laser series.

The entry for Laser 128 in Wikipedia says: (based on this 1986 source)

Central Point claimed in 1986 that testing had found that only Choplifterꟸ [1982], David's Midnight Magicꟸ [1982], and Serpentineꟸ [1982] did not run on the clone, because of Broderbund's copy protection.

However, I don't think those games are 18 sector. Titles that I know are 18 sector:

  • Airheartꟸ (1986)
  • Bank Street Writer IIIꟸ (1986 - well, the Scholastic version is 18 sector)
  • Prince of Persia (1989)
  • Where in the USA is Carmen San Diego?ꟸ (1986)
  • Wings of Fury (1987)

But this 1988 Laser 128 Series Compatible Software List has most titles above that existed at the time. (The titles present in this list are marked with ꟸ).

Another user compiled list from 1990 mentions ROM version 4.2, and also has Choplifter and Serpentine, so I think that the ROM is what caused any incompatibility, not disk problems.

To seal the deal, in qkumba's 2012 crack write-up for Choplifter he notes:

;perform check of ROM code 
;Choplifter does not work on some systems because of this 

This was common practice in protection to prevent the use of crackers' modified ROMs.

  • 2
    same deal for David's Midnight Magic (see hackzapple.com/phpBB2/viewtopic.php?t=1186) – peter ferrie Feb 12 '17 at 1:12
  • Yeah, thanks Peter. Checking main ROM and slots for RAM (Wildcards etc) was pretty common. – Nick Westgate Feb 12 '17 at 1:49
  • right, and don't get me started on what Spiradisc did. – peter ferrie Feb 12 '17 at 1:54
  • Did your friend test the official 18 sector Wings of Fury or, perhaps, a cracked 16 sector version? – cbmeeks Feb 15 '17 at 21:24
  • @cbmeeks: Originals of course. – Nick Westgate Feb 15 '17 at 21:27

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.