MADrigal Posted August 14 Share Posted August 14 (edited) 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. l2cvbios_v2.zip Edited August 14 by MADrigal 9 2 Quote Link to comment https://forums.atariage.com/topic/370936-colecovision-module-for-laser-2001salora-managercreativision-bios-dumped-and-shared/ Share on other sites More sharing options...
MADrigal Posted August 14 Author Share Posted August 14 (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!) Edited August 14 by MADrigal 6 Quote Link to comment https://forums.atariage.com/topic/370936-colecovision-module-for-laser-2001salora-managercreativision-bios-dumped-and-shared/#findComment-5515708 Share on other sites More sharing options...
RayXambeR Posted August 14 Share Posted August 14 Fantastic work Luca (as always!). Amazing piece preserved. Congrats to you and the helpers that allow it a reality! 1 Quote Link to comment https://forums.atariage.com/topic/370936-colecovision-module-for-laser-2001salora-managercreativision-bios-dumped-and-shared/#findComment-5515952 Share on other sites More sharing options...
+nanochess Posted August 15 Share Posted August 15 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 3 Quote Link to comment https://forums.atariage.com/topic/370936-colecovision-module-for-laser-2001salora-managercreativision-bios-dumped-and-shared/#findComment-5516431 Share on other sites More sharing options...
else Posted August 15 Share Posted August 15 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? Quote Link to comment https://forums.atariage.com/topic/370936-colecovision-module-for-laser-2001salora-managercreativision-bios-dumped-and-shared/#findComment-5516512 Share on other sites More sharing options...
+nanochess Posted August 15 Share Posted August 15 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. 3 Quote Link to comment https://forums.atariage.com/topic/370936-colecovision-module-for-laser-2001salora-managercreativision-bios-dumped-and-shared/#findComment-5516536 Share on other sites More sharing options...
carlsson Posted August 15 Share Posted August 15 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. Quote Link to comment https://forums.atariage.com/topic/370936-colecovision-module-for-laser-2001salora-managercreativision-bios-dumped-and-shared/#findComment-5516549 Share on other sites More sharing options...
tcdev Posted August 16 Share Posted August 16 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. 1 Quote Link to comment https://forums.atariage.com/topic/370936-colecovision-module-for-laser-2001salora-managercreativision-bios-dumped-and-shared/#findComment-5516656 Share on other sites More sharing options...
+nanochess Posted August 16 Share Posted August 16 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. Quote Link to comment https://forums.atariage.com/topic/370936-colecovision-module-for-laser-2001salora-managercreativision-bios-dumped-and-shared/#findComment-5516657 Share on other sites More sharing options...
tcdev Posted August 16 Share Posted August 16 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! 1 Quote Link to comment https://forums.atariage.com/topic/370936-colecovision-module-for-laser-2001salora-managercreativision-bios-dumped-and-shared/#findComment-5516661 Share on other sites More sharing options...
MADrigal Posted August 16 Author Share Posted August 16 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. Quote Link to comment https://forums.atariage.com/topic/370936-colecovision-module-for-laser-2001salora-managercreativision-bios-dumped-and-shared/#findComment-5516805 Share on other sites More sharing options...
MADrigal Posted August 16 Author Share Posted August 16 Thanks @nanochess for your massive effort on this! 1 Quote Link to comment https://forums.atariage.com/topic/370936-colecovision-module-for-laser-2001salora-managercreativision-bios-dumped-and-shared/#findComment-5516806 Share on other sites More sharing options...
artrag Posted August 16 Share Posted August 16 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 Quote Link to comment https://forums.atariage.com/topic/370936-colecovision-module-for-laser-2001salora-managercreativision-bios-dumped-and-shared/#findComment-5516824 Share on other sites More sharing options...
MADrigal Posted August 16 Author Share Posted August 16 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. 2 Quote Link to comment https://forums.atariage.com/topic/370936-colecovision-module-for-laser-2001salora-managercreativision-bios-dumped-and-shared/#findComment-5516825 Share on other sites More sharing options...
tcdev Posted August 18 Share Posted August 18 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. 2 Quote Link to comment https://forums.atariage.com/topic/370936-colecovision-module-for-laser-2001salora-managercreativision-bios-dumped-and-shared/#findComment-5517919 Share on other sites More sharing options...
tcdev Posted August 19 Share Posted August 19 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. 1 Quote Link to comment https://forums.atariage.com/topic/370936-colecovision-module-for-laser-2001salora-managercreativision-bios-dumped-and-shared/#findComment-5518433 Share on other sites More sharing options...
tcdev Posted August 22 Share Posted August 22 (edited) 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 August 22 by tcdev 1 Quote Link to comment https://forums.atariage.com/topic/370936-colecovision-module-for-laser-2001salora-managercreativision-bios-dumped-and-shared/#findComment-5520373 Share on other sites More sharing options...
tcdev Posted August 22 Share Posted August 22 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. 1 Quote Link to comment https://forums.atariage.com/topic/370936-colecovision-module-for-laser-2001salora-managercreativision-bios-dumped-and-shared/#findComment-5520400 Share on other sites More sharing options...
tcdev Posted August 23 Share Posted August 23 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. Quote Link to comment https://forums.atariage.com/topic/370936-colecovision-module-for-laser-2001salora-managercreativision-bios-dumped-and-shared/#findComment-5520808 Share on other sites More sharing options...
tcdev Posted August 23 Share Posted August 23 Ultimately the best solution would be to patch the original Colecovision BIOS with the keyboard table changes... and maybe change the text... 1 Quote Link to comment https://forums.atariage.com/topic/370936-colecovision-module-for-laser-2001salora-managercreativision-bios-dumped-and-shared/#findComment-5520811 Share on other sites More sharing options...
MADrigal Posted August 23 Author Share Posted August 23 It looks like the Laser 2001 Colecovision converter is really not as compatible as one would think... Quote Link to comment https://forums.atariage.com/topic/370936-colecovision-module-for-laser-2001salora-managercreativision-bios-dumped-and-shared/#findComment-5520821 Share on other sites More sharing options...
Captain Cozmos Posted August 23 Share Posted August 23 (edited) 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. Zaxxon is off color and crashes as you said. Edited August 23 by Captain Cozmos Quote Link to comment https://forums.atariage.com/topic/370936-colecovision-module-for-laser-2001salora-managercreativision-bios-dumped-and-shared/#findComment-5520832 Share on other sites More sharing options...
MADrigal Posted August 23 Author Share Posted August 23 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). 1 Quote Link to comment https://forums.atariage.com/topic/370936-colecovision-module-for-laser-2001salora-managercreativision-bios-dumped-and-shared/#findComment-5520844 Share on other sites More sharing options...
Captain Cozmos Posted August 23 Share Posted August 23 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. 1 1 Quote Link to comment https://forums.atariage.com/topic/370936-colecovision-module-for-laser-2001salora-managercreativision-bios-dumped-and-shared/#findComment-5520895 Share on other sites More sharing options...
ColecoFan1981 Posted August 23 Share Posted August 23 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 Quote Link to comment https://forums.atariage.com/topic/370936-colecovision-module-for-laser-2001salora-managercreativision-bios-dumped-and-shared/#findComment-5520904 Share on other sites More sharing options...
Recommended Posts
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.