Jump to content
IGNORED

Colecovision Module for Laser 2001/Salora Manager/CreatiVision - BIOS DUMPED AND SHARED!


Recommended Posts

Thanks to the massive help from Sydney (Australia) based gentleman Mr Mark McDougall, the BIOS of the mega rare Colecovision converter for Laser 2001 has finally been dumped!

 

For those who don't know it - the module is 'the holy grail' for CreatiVision and Colecovision collectors, being originally designed to work on the CreatiVision but then never really released. The few units manufactured were then modified to make it compatible with the Laser 2001 computer (the successor to the CreatiVision and hardware compatible). But then again the Laser 2001 didn't sell well so most units found home in Finland, where the Laser 2001 sold a little bit more, rebranded as "Salora Manager".

 

The unit in question is a Salora Manager-branded module, however the BIOS reads "Laser 2001 Expansion Module #1" in its boot message.

 

I bought the module about 8 years for an insane price. Loose. And consider myself extremely lucky to have it working, with a full Salora Manager complete with floppy disk drive and original sofrtware.

 

I always had in mind to have the BIOS dumped and share it with the community of retro-enthusiasts, and make sure it was preserved!

 

My friend Mark recently offered to dump the BIOS for me as he had access to professional equipment. But it was no easy task as one of the two EPROMs where the BIOS is stored had a little issue. So The dump of the lower EPROM ($0000-$0800) came uncomplete: one bit of every byte was 'stuck' always to 1, suggesting that the microwire of one of the 8 data lines was somehow detached. The upper EPROM ($0801-$1fff) was perfect and the dump was good.

 

With a little tweaks (basically, heating the lower EPROM a little bit to re-join the loose microwire), the dump came perfect and stable. Dumped several times and always getting the same result. 🙂

 

I have tested the BIOS on two old emulators (Virtual Coleco 2.11 and Project Colecovision 0.12) basically by replacing the standard Colecovision BIOS with this one and was able to play Donkeey Kong and Q*Bert quite well! The only problem seems to be with the mapping of the keypad. Key 1 doesn't seem to respond and this suggests that the input table of the L2001 module is probably shifted in comparison to that in the normal BIOS.

 

I believe this can be sorted out by creating and ad-hoc driver to support this BIOS in any Colecovision emulator.

 

Anyway, I have decided to share the file here - hoping that someone familiar with Z80 ASM can give the ROM a look and checks if it really is a good one or does it look potentially damaged/bad.  Once confirmed, I will share the file with the MAME team for inclusion in MAME.

 

Pls contact me (contact details in the included README.TXT) to discuss.

1.jpg

2.jpg

3.jpg

4.jpg

l2cvbios_v2.zip

Edited by MADrigal
  • Like 9
  • Thanks 2
Link to comment
Share on other sites

Posted (edited)

And... (note the joystick ports are on the side and you can connect 2x joystick on Atari connector, however the Salora Manager joysticks have 2 independent buttons - which make them perfect for this adaptor!)

5.jpg

6.jpg

Edited by MADrigal
  • Like 6
Link to comment
Share on other sites

On 8/14/2024 at 3:27 AM, MADrigal said:

Thanks to the massive help from Sydney (Australia) based gentleman Mr Mark McDougall, the BIOS of the mega rare Colecovision converter for Laser 2001 has finally been dumped!

 

For those who don't know it - the module is 'the holy grail' for CreatiVision and Colecovision collectors, being originally designed to work on the CreatiVision but then never really released. The few units manufactured were then modified to make it compatible with the Laser 2001 computer (the successor to the CreatiVision and hardware compatible). But then again the Laser 2001 didn't sell well so most units found home in Finland, where the Laser 2001 sold a little bit more, rebranded as "Salora Manager".

 

The unit in question is a Salora Manager-branded module, however the BIOS reads "Laser 2001 Expansion Module #1" in its boot message.

 

I bought the module about 8 years for an insane price. Loose. And consider myself extremely lucky to have it working, with a full Salora Manager complete with floppy disk drive and original sofrtware.

 

I always had in mind to have the BIOS dumped and share it with the community of retro-enthusiasts, and make sure it was preserved!

 

My friend Mark recently offered to dump the BIOS for me as he had access to professional equipment. But it was no easy task as one of the two EPROMs where the BIOS is stored had a little issue. So The dump of the lower EPROM ($0000-$0800) came uncomplete: one bit of every byte was 'stuck' always to 1, suggesting that the microwire of one of the 8 data lines was somehow detached. The upper EPROM ($0801-$1fff) was perfect and the dump was good.

 

With a little tweaks (basically, heating the lower EPROM a little bit to re-join the loose microwire), the dump came perfect and stable. Dumped several times and always getting the same result. 🙂

 

I have tested the BIOS on two old emulators (Virtual Coleco 2.11 and Project Colecovision 0.12) basically by replacing the standard Colecovision BIOS with this one and was able to play Donkeey Kong and Q*Bert quite well! The only problem seems to be with the mapping of the keypad. Key 1 doesn't seem to respond and this suggests that the input table of the L2001 module is probably shifted in comparison to that in the normal BIOS.

 

I believe this can be sorted out by creating and ad-hoc driver to support this BIOS in any Colecovision emulator.

 

Anyway, I have decided to share the file here - hoping that someone familiar with Z80 ASM can give the ROM a look and checks if it really is a good one or does it look potentially damaged/bad.  Once confirmed, I will share the file with the MAME team for inclusion in MAME.

 

Pls contact me (contact details in the included README.TXT) to discuss.

 

I've disassembled the BIOS and I see deep differences in the keypad table. This is from address $0569 of the dump:

 

            	db $0F,$08,$0A,$01  ; $0569
            	db $0B,$09,$03,$0F  ; $056D
            	db $07,$06,$05,$0F  ; $0571
            	db $00,$04,$02,$0F  ; $0575

 

This is the keypad table used by your dump. However, there are several differences from a Colecovision controller. This is from the Colecovision BIOS:

 

        	db $0f,$06,$01,$03	; $10f5
		db $09,$00,$0a,$0f	; $10f9
        	db $02,$0b,$07,$0f 	; $10fd
		db $05,$04,$08,$0f 	; $1101

 

As you can see all the numbers are in different positions, except for the 4. This would have worked great, except many games accessed the hardware directly.

 

I'm glad to see that $0069 contains the 60 value, and $006a-$006d point to bitmap tables for characters.

 

However, it is missing completely the "compatibility" table of Colecovision at the end of the BIOS, containing a table of jumps to the BIOS routines. This makes it totally incompatible with several games using these entry points.

 

I think the dumped EPROM was a work-in-progress, because there is enough space at the end of the BIOS to make a table.

 

Still there could be made a comparison between the address of the routines and the addresses in the Colecovision BIOS just for sake of completeness.

 

Other than that, the disassembled BIOS looks perfectly good. I've attached it to this post in case someone wants to give it a further look.

 

laser_colecovision_bios.txt

  • Like 3
Link to comment
Share on other sites

40 minutes ago, else said:

Would this thing have stood up in court?  By which I mean, are most of the bios routines exactly the same as Coleco's, or is it a complete rewrite?

I think the Laser programmers didn't make a big effort, let us take for example the CONTROLLER_INIT subroutine (located at address $0747):

 

L0747:      	OUT ($C0),A
            	XOR A
            	LD IX,(L8008)
            	INC IX
            	INC IX
            	LD IY,$73D7
            	LD B,$0A
L0758:      	LD (IX+$00),A
            	INC IX
            	LD (IY+$00),A
            	INC IY
            	LD (IY+$00),A
            	INC IY
            	DEC B
            	JR NZ,L0758
            	LD (L73EB),A
            	LD (L73EC),A
            	LD (L73EE),A
            	LD (L73EF),A
            	LD (L73F0),A
            	LD (L73F1),A
            	RET

 

And the following is from the Colecovision Coding Guide.pdf by newcoleco (located at address $1205)

 

CONTROLLER_INIT:
	; Initialize controller to strobe reset out (STRB_RST_PORT),a
	xor a
	ld ix,(CONTROLLER_MAP)
	inc ix
	inc ix
	ld iy,DBNCE_BUFF
	ld b,NUM_DEV*2
CINIT1:
	; Clear controller memory and debounce status buffer ld (ix+000H),a
	inc ix
	ld (iy+000H),a
	inc iy
	ld (iy+000H),a
	inc iy
	dec b
	jr nz,CINIT1
	; Clear remaining variables
	ld (SPIN_SW0_CT),a
	ld (SPIN_SW1_CT),a
	ld (S0_C0),a
	ld (S0_C1),a
	ld (S1_C0),a
	ld (S1_C1),a
	ret
;

 

For the non-technical people, this assembler code gets resolved to exactly the same binary found in the Laser ROM.

 

Whoever did this just didn't realize they could rewrite the same code using other registers (even saving bytes).

 

Let's do a comparison of the difficulty selection routine located at $006e:

 

L006E:      	CALL L1C3D
            	LD HL,$13AD
            	LD BC,$0016
            	LD DE,$1825
            	CALL L1B4F
            	LD HL,$13C3
            	LD BC,$0017
            	LD DE,$1865
            	CALL L1B4F
            	LD HL,$13DA
            	LD DE,$7400
            	LD BC,$0017
            	LDIR
            	LD IX,$7400
            	LD DE,$7400
            	LD IY,$0016
            	LD HL,$18C5
            	CALL L00BD
            	INC IY
            	LD HL,$13F1
            	LD DE,$740C
            	LD BC,$0003
            	LDIR
            	LD A,$31
            	LD (L740A),A
            	LD HL,$19E5
            	LD DE,$7400
L00BD:      	LD B,$04
L00BF:      	PUSH DE
            	PUSH BC
            	PUSH IY
            	POP BC
            	EX DE,HL
            	CALL L1B4F
            	EX DE,HL
            	INC (IX+$00)
            	INC (IX+$0A)
            	POP BC
            	LD DE,$0040
            	ADD HL,DE
            	POP DE
            	DJNZ L00BF
            	RET

L1C3D:      	LD HL,$0000
            	LD DE,$4000
            	XOR A
            	CALL L012E
            	CALL L00FD
            	CALL L1B41
            	LD HL,$1C18
            	LD DE,$182B
            	LD BC,$000A
            	CALL L1B4F
            	LD HL,$1C22
            	LD DE,$1867
            	LD BC,$0013
            	CALL L1B4F
            	LD HL,$1C35
            	LD DE,$19EC
            	LD BC,$0008
            	CALL L1B4F
            	LD HL,$2000
            	LD DE,$0020
            	LD A,$F0
            	JP L012E

            	db $54,$4F,$20,$53  ; $13AD TO SELECT GAME OPTION,
            	db $45,$4C,$45,$43  ; $13B1
            	db $54,$20,$47,$41  ; $13B5
            	db $4D,$45,$20,$4F  ; $13B9
            	db $50,$54,$49,$4F  ; $13BD
            	db $4E,$2C,$50,$52  ; $13C1 PRESS BUTTON ON KEYPAD
            	db $45,$53,$53,$20  ; $13C5
            	db $42,$55,$54,$54  ; $13C9
            	db $4F,$4E,$20,$4F  ; $13CD
            	db $4E,$20,$4B,$45  ; $13D1
            	db $59,$50,$41,$44  ; $13D5
            	db $2E,$31,$20,$3D  ; $13D9 1 = SKILL 1/ONE PLAYERS
            	db $20,$53,$4B,$49  ; $13DD
            	db $4C,$4C,$20,$31  ; $13E1
            	db $2F,$4F,$4E,$45  ; $13E5
            	db $20,$50,$4C,$41  ; $13E9
            	db $59,$45,$52,$53  ; $13ED 
            	db $54,$57,$4F,$03  ; $13F1 TWO

 

Now the Colecovision BIOS (again from newcoleco) located at $1979:

 

; *********** Display game option screen ***********
GAME_OPT_:
	; ***************** CLEAR 16K VRAM ***************** ld hl,00000H
	ld de,04000H ld a,000H call FILL_VRAM
	; ************* Set up VDP with mode 1 ************* call MODE_1
	; ************ Set up background color *************
	; Note: 0 = Black (default background color)
	; F = White (default forecolor not used in mode 1)
	ld b,00FH
	ld c,004H
	call WRITE_REGISTER
	; ********** Write out PATTERN_GEN_TABLE *********** call LOAD_ASCII
	; ********** Write out PATTERN_NAME_TABLE ********** ld hl,LINE_1
	ld de,00025H
	ld iy,00016H
	ld a,002H
	call PUT_VRAM
	ld hl,LINE_2
	ld de,00065H
	ld iy,00017H
	ld a,002H
	call PUT_VRAM
	ld de,000C5H
	call WRITE_L3
	ld de,00105H
	call WRITE_L3
	ld de,00145H
	call WRITE_L3
	ld de,00185H
	call WRITE_L3
	ld de,001E5H
	call WRITE_L3
	ld de,00225H
	call WRITE_L3
	ld de,00265H
	call WRITE_L3
	ld de,002A5H
	call WRITE_L3
	ld de,00105H
	call WRITE_L4
	ld de,00145H
	call WRITE_L5
	ld de,00185H
	call WRITE_L6
	ld hl,LINE_7	
	ld de,001E5H
	call WRITE_CHAR
	ld hl,LINE_8
	ld de,00225H
	call WRITE_CHAR
	ld hl,LINE_9
	ld de,00265H
	call WRITE_CHAR
	ld hl,LINE_10
	ld de,002A5H
	call WRITE_CHAR
	ld de,0010FH
	call WRITE_L4
	ld de,0014FH
	call WRITE_L5
	ld de,0018FH
	call WRITE_L6
	ld de,001F1H
	call WRITE_L11
	ld de,00231H
	call WRITE_L11
	ld de,00271H
	call WRITE_L11
	ld de,002B1H
	call WRITE_L11
	ld de,0022FH
	call WRITE_L4
	ld de,0026FH
	call WRITE_L5
	ld de,002AFH
	call WRITE_L6
	ld de,001FBH
	call WRITE_L12
	ld de,0023bH
	call WRITE_L12
	ld de,0027BH
	call WRITE_L12
	ld de,002BBH
	call WRITE_L12
	; *********** Write out COLOR_NAME_TABLE *********** ; Note: F = White, 4 = Blue
	ld hl,(COLORTABLE) ld de,00020H
	ld a,0F4H
	call FILL_VRAM
	; ***************** Enable display ***************** ld b,001H
	ld c,0C0H
	call WRITE_REGISTER
	ret
; ****************** DATA TABLES *******************
LINE_1:
db "TO SELECT GAME OPTION,"
LINE_2:
db "PRESS BUTTON ON KEYPAD."
LINE_3:
db "1 = SKILL 1 / ONE PLAYER"
LINE_4:
db "2"
LINE_5:
db "3"
LINE_6:
db "4"
LINE_7:
db "5"
LINE_8:
db "6"
LINE_9:
db "7"
LINE_10:
db "8"
LINE_11:
db "TWO"
LINE_12:
db "S"
; *************** LOCAL SUBROUTINES ****************
WRITE_L3:
	ld hl,LINE_3
	ld iy,00016H
	ld a,002H
	call PUT_VRAM
	ret
; WRITE_L4:
	ld hl,LINE_4
	jr WRITE_CHAR
; WRITE_L5:
	ld hl,LINE_5
	jr WRITE_CHAR
; WRITE_L6:
	ld hl,LINE_6
WRITE_CHAR:
	ld iy,00001H
	ld a,002H
	call PUT_VRAM
	ret
; WRITE_L11:
	ld hl,LINE_11
	ld iy,00003H
	ld a,002H
	call PUT_VRAM
	ret
; WRITE_L12:
	ld hl,LINE_12
	ld iy,00001H
	ld a,002H
	call PUT_VRAM
	ret

 

In this one we can see the Laser's programmer optimized the original routine to use a lot less memory (and use some extra bytes in RAM at $7400-$7416, not compatible with 1K Colecovision).

 

My current deduction is that the programmers indeed disassembled the Colecovision BIOS and reassembled it, and as time allowed they recoded the subroutines, but this would haven't stand the court. The only way would be as Compaq did (and defended successfully again IBM), someone making a full spec of the Colecovision BIOS, and a separate team reimplementing it from scratch. This way they wouldn't have duplicate binary subroutines.

 

 

  • Like 3
Link to comment
Share on other sites

I'm not sure. Both many of the Apple II clones and Commodore 1541 disk drive clones used the trick to swap instructions whose order didn't matter, or move entire routines in the memory map as long as those were not entry points. If the judge had access to a technician who could explain what was done, it might not hold in court but if they only compared binary output, the files would look different enough. I know Apple hunted clones fiercely (and ironically, VTech was the first to release an Apple clone that didn't use Apple ROM, the Laser 128).

 

But the question is why VTech even felt it desirable to have a Z80 module. If they had the connections with game companies to make or port games for the native system, there would be barely any demand for a module that could play ColecoVision games instead. Now, I know that the original CreatiVision library only consists of more or less half hearted clones (though many look very nice visually) released through VTech themselves. MADrigal can correct me, but I can't think of any 3rd party support until homebrewers 30++ years later. Given that the CreatiVision received quite a lot of good press after being displayed at CES, they should have focused on getting more games for a possible US release.

Link to comment
Share on other sites

Interesting read thus far, thanks! I'm currently working on a complete RE of this BIOS (using IDAPro) and although I'm very experienced in Z80 RE I know next-to-nothing about the Colecovision at this point. It's also years since I did any work with 9918 family (I RE'd Lode Runner on the MSX to port to the TRS-80). I'm only a few hours into it at this point, having covered most of the start-up code. In fact my next task was to look for some sort of BIOS routine entry table, aka "compatibility table"... which is reportedly not there?!? That makes me wonder whether the BIOS routines here are at the same "well-known" locations as the original BIOS, because if not, there's no way they could be called - and further RE would be a moot point, no?

Anyway, early days. I'm sure I'll have to re-learn some of what I've already gleaned in the little time I've had to work on it (I've already found some "questionable" information on the net). And FTR I am using the Colecovision BIOS disassembly as a reference.

  • Like 1
Link to comment
Share on other sites

7 minutes ago, tcdev said:

Interesting read thus far, thanks! I'm currently working on a complete RE of this BIOS (using IDAPro) and although I'm very experienced in Z80 RE I know next-to-nothing about the Colecovision at this point. It's also years since I did any work with 9918 family (I RE'd Lode Runner on the MSX to port to the TRS-80). I'm only a few hours into it at this point, having covered most of the start-up code. In fact my next task was to look for some sort of BIOS routine entry table, aka "compatibility table"... which is reportedly not there?!? That makes me wonder whether the BIOS routines here are at the same "well-known" locations as the original BIOS, because if not, there's no way they could be called - and further RE would be a moot point, no?

Anyway, early days. I'm sure I'll have to re-learn some of what I've already gleaned in the little time I've had to work on it (I've already found some "questionable" information on the net). And FTR I am using the Colecovision BIOS disassembly as a reference.

I think you can find all the routines in the Laser ROM and make yourself the routine entry table. It was the last missing piece for a reasonable Colecovision compatibility.

 

Here is a link to the Coleco BIOS disassembled: https://www.smspower.org/forums/download.php?id=23477

 

Edit: I saw already you have it as a reference. I need to read more throughly. :)

 

Link to comment
Share on other sites

4 minutes ago, nanochess said:

I think you can find all the routines in the Laser ROM and make yourself the routine entry table. It was the last missing piece for a reasonable Colecovision compatibility.

 

Here is a link to the Coleco BIOS disassembled: https://www.smspower.org/forums/download.php?id=23477

Thanks for the link, I think I only had the txt version of that disassembly. But this is a fantastic all-in-one resource!

Without the compatibility table, how did they even test the routines? Odd, but yes, would be great to produce an "enhanced" BIOS that included the table!

  • Like 1
Link to comment
Share on other sites

13 hours ago, carlsson said:

I'm not sure. Both many of the Apple II clones and Commodore 1541 disk drive clones used the trick to swap instructions whose order didn't matter, or move entire routines in the memory map as long as those were not entry points. If the judge had access to a technician who could explain what was done, it might not hold in court but if they only compared binary output, the files would look different enough. I know Apple hunted clones fiercely (and ironically, VTech was the first to release an Apple clone that didn't use Apple ROM, the Laser 128).

 

But the question is why VTech even felt it desirable to have a Z80 module. If they had the connections with game companies to make or port games for the native system, there would be barely any demand for a module that could play ColecoVision games instead. Now, I know that the original CreatiVision library only consists of more or less half hearted clones (though many look very nice visually) released through VTech themselves. MADrigal can correct me, but I can't think of any 3rd party support until homebrewers 30++ years later. Given that the CreatiVision received quite a lot of good press after being displayed at CES, they should have focused on getting more games for a possible US release.

You are right. There is not a single game for Creativision to have been produced by 3rd parties. Everything was done internally by VTech themselves. I guess they tried to extend the game library by including Colecovision games as they could not have titles such as Donkey Kong, Turbo, QBert and other arcades.

Link to comment
Share on other sites

9 hours ago, nanochess said:

I think you can find all the routines in the Laser ROM and make yourself the routine entry table. It was the last missing piece for a reasonable Colecovision compatibility.

 

Here is a link to the Coleco BIOS disassembled: https://www.smspower.org/forums/download.php?id=23477

 

Edit: I saw already you have it as a reference. I need to read more throughly. :)

 

From a quick reading, I do not find anything interesting in this bios. 

Or better, nothing worth reusing nowadays 

Link to comment
Share on other sites

2 minutes ago, artrag said:

From a quick reading, I do not find anything interesting in this bios. 

Or better, nothing worth reusing nowadays 

It was dumped to preserve it. It is an extremely rare item worth preserving, even if it has little practical use.

  • Like 2
Link to comment
Share on other sites

Rather than a jump table, there is a table of ROM routine addresses from $1D48-$1DB1. Interestingly, the routines appear to be in the exact opposite order to the original. Caveat: I'm still only a few routines into filling it out.

But it will greatly speed up the identification of routines in this BIOS; in the little bit I have done the code has mostly been rewritten.
 

Not enough to provide any sort of compatibility though of course.
 

Either way, it's not surprising that there's nothing ground-breaking in here, as the only function is to provide the ability to run Colecovision games.

  • Like 2
Link to comment
Share on other sites

I'm somewhere between 1/4 and 1/3 of the way through the disassembly. At this point I'm just adding all the labels and commenting ports and flags from the original BIOS listing to the disassembly using IDAPro.

 

For the most part, the routines are the same, but with subroutines and branched code within each module in a different order. I suspect this was to make the BIOS as 'different' as possible. There are a few tweaks to the logic, like conditional returns rather than jumping to the RET at the end of the routine. I did come across one routine - WRITE_VRAMQ - which is broken. The code starts and then is truncated - running straight into a data block.

Ultimately this BIOS is only superficially different... off the top of my head I'm thinking the original BIOS would work in this adapter, except for the controller mappings?!?

There is easily enough room at the end of the ROM to add a 'compatibility' (jump) table to the BIOS. That is something that could be done quite easily once the disassembly is done. WRITE_VRAMQ could also be fixed in the process.

  • Like 1
Link to comment
Share on other sites

I've finished the disassembly of the Laser 2001 Expansion Module BIOS. You can find the preliminary version here.

 

Notes:

* Routines have been reordered with completely different entry addresses to the original Colecovision BIOS

* Some routines have portions of code slightly modified to improve efficiency

* POWER-UP and LOGO display code is significantly different

* CONTOLLER_INIT is implemented but never called

* WRITE_VRAMQ is broken - it falls into a data section rather than VRAM_WRITE

* There is no 'compatibility' jump table at the end of the ROM

* The RST38 routine takes an original BIOS routine address and executes that routine via an address table lookup

* There is adequate room at the end of the BIOS to insert a compatibility jump table

 

Edited by tcdev
  • Thanks 1
Link to comment
Share on other sites

I've got Donkey Kong running in MAME with the Laser 2001 Expansion module BIOS, re-assembled from source (produces the exact same binary).

 

Zaxxon crashes when trying to jump to GAME_OPT in the compatibility table.

 

Next chance I get I'll add the compatibility table for this ROM to the source, and re-build.

  • Like 1
Link to comment
Share on other sites

I've added the jump table to the end of the BIOS. Zaxxon gets further now until it calls WRITE_VRAMQ, which is broken. Patching the BIOS to fix this allows Zaxxon to get into the game and put graphics on the screen, but still far from running.

 

TBH I suspect there are more bugs in the BIOS when they moved things around and tried to optimise a little. That and/or Zaxxon is jumping directly into ROM routines rather than going via the table. Either way, it's too difficult to work out exactly where things are going wrong, without a detailed analysis. Not really worth the effort considering.

 

Some games do run better (flawless?) with the patched BIOS, like Frogger and BC's Quest for Tires.

 

I've also created a version with the DEC_KBD_TBL from the Colecovision BIOS so that this BIOS can be run/tested in Coleco emulators.

I've uploaded the disassembly of the Laser BIOS and source (asm) code with enhancements to github. The code has build-time options for original/fixed and coleco/laser keyboard table.

Link to comment
Share on other sites

Does Smurf Rescue work?
 

VRAM_WRITEQ is part of the Pascal calls function.

I rewrote Smurf Rescue to exclude all pascal functions, I can do the same for Zaxxon and even the earlier versions of Donkey Kong or anything else that used Pascal calls.
I could also rewrite this BIOS to handle the Pascal calls if you guys want it the other way around.

 

Just as a test, try the Smurf Rescue and let me know the results.

 

 

 

 

EDIT:

Never Mind about the Smurf Test.  I just tested the release (not mine) it and it works fine, just slower than a regular NTSC.
I did try the no pascal version, it played just fine except slower like the release.

 

Screenshot(44).thumb.png.ba3754f32c5a865f2288f38647120b3f.pngScreenshot(46).thumb.png.4ae91165be09e3e8fe5aae0b11ac2177.png

 

 

 

Zaxxon is off color and crashes as you said.

 

Screenshot(43).thumb.png.a5ef841b3f788b5ffc9e089170744acf.png

Edited by Captain Cozmos
Link to comment
Share on other sites

FYI the background on the boot screen appears purple on ColEm and (from memory) another old Colecovision emulator for PC (don't remember which)

However the boot screen on the real hardware is black. A couple of other Colecovisoon emulators for PC (again I don' remember which ones) show it correcrly (black).

  • Like 1
Link to comment
Share on other sites

I went ahead and disassembled Zaxxon last night as well as the LASER rom

 

What I have found is that the programmers of Zaxxon perform a direct jump through jp (ix) to an area in the Coleco BIOS which is in between jump tables.

 

A no no that breaks their own rules.

 

 

 

 

  • Like 1
  • Thanks 1
Link to comment
Share on other sites

21 minutes ago, Captain Cozmos said:

I went ahead and disassembled Zaxxon last night as well as the LASER rom

 

What I have found is that the programmers of Zaxxon perform a direct jump through jp (ix) to an area in the Coleco BIOS which is in between jump tables.

 

A no no that breaks their own rules.

 

 

 

 

Oh, wow... I learn something new every day.

 

~Ben

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...