Rare Pre-Production VIC-20 Cartridges

History and Preservation Issues

Moderator: Moderators

User avatar
nbla000
Salmon Run
Posts: 2582
Joined: Thu Oct 13, 2005 8:58 am
Location: Italy

Post by nbla000 »

ral-clan wrote:Okay, thanks. I am beginning to understand this.

So, what memory blocks does this program work with (I'm thinking the standard $A0 and $20?). What if a cartridge only uses one of these blocks, will that be a problem?
Normally they just use block #5 ($A000-$BFFF) btw you may dump all blocks and then we will check which file images are required.

I've an easy alternative method to save memory blocks, please follow this table:

Code: Select all

Block #   Hex Address     Poke 43,x   Poke 44,x    Poke 45,x  Poke 46,x 
     5       $a000-bfff      x = 0       x = 160      x = 0      x = 192 
     3       $6000-7fff      x = 0       x = 96       x = 0      x = 128 
     2       $4000-5fff      x = 0       x = 64       x = 0      x = 96 
     1       $2000-3fff      x = 0       x = 32       x = 0      x = 64 
This is an example on how to save block 2:

Code: Select all

POKE43,0:POKE44,64:POKE45,0:POKE46,96
SAVE"IMAGENAME-40",8,1
Mega-Cart: the cartridge you plug in once and for all.
User avatar
Mayhem
High Bidder
Posts: 3026
Joined: Mon May 24, 2004 7:03 am
Website: http://www.mayhem64.co.uk
Location: London

Post by Mayhem »

Yeah, I think NBLA's method is how I dumped Key Quest and Frogman...
Lie with passion and be forever damned...
User avatar
Mike
Herr VC
Posts: 4816
Joined: Wed Dec 01, 2004 1:57 pm
Location: Munich, Germany
Occupation: electrical engineer

Post by Mike »

nbla000 wrote:I've an easy alternative method to save memory blocks, ...
Which, I'd like to add, will screw up a running BASIC program.

I've put those (only slightly more complicated) routines into the ROM calls thread, because they not only work when used in direct mode, but also from within a program without the necessity of those weird constructions like:

Code: Select all

IFA=0THENA=1:LOAD"<some ML code>",8,1
IFA=1THENA=2:LOAD"<some more ML code>",8,1
[etc.]
just because the LOAD inadvertently (read: without being asked for) diverts control flow back to the start of the BASIC program.

Likewise, if you save a block of memory with the POKE43..46,...:SAVE method, you'll relocate the pointer to start of variables. If used inside a program this will lead to a crash.

Michael
Last edited by Mike on Mon Apr 20, 2009 1:54 pm, edited 1 time in total.
User avatar
Mike
Herr VC
Posts: 4816
Joined: Wed Dec 01, 2004 1:57 pm
Location: Munich, Germany
Occupation: electrical engineer

Post by Mike »

O.K., I've cooled down a bit. ;)

Since this question tends to crop up every now, and then, anyway... I'd like to present:

EASYDUMP, and EASYRUN. :)

Just press any of the keys '1', '2', '3', or '5' to dump the respective BLK:

Code: Select all

10 POKE55,0:POKE56,30:CLR
11 PRINT"{CLR}VIC-20 CARTRIDGE DUMP"
12 INPUT"NAME";N$:N$=LEFT$(N$,12)
13 PRINT"PRESS 1,2,3, OR 5 TO SAVE"
14 PRINT"THE CORRESPONDING BLOCK."
15 GETA$
16 IFA$="1"THENS=32:E=64:S$="2000":GOSUB21
17 IFA$="2"THENS=64:E=96:S$="4000":GOSUB21
18 IFA$="3"THENS=96:E=128:S$="6000":GOSUB21
19 IFA$="5"THENS=160:E=192:S$="A000":GOSUB21
20 GOTO15
21 PRINT"SAVING BLK"A$" ..."
22 SYS57809(N$+S$),8,1:POKE193,0:POKE194,S
23 POKE780,193:POKE781,0:POKE782,E:SYS65496
24 RETURN
25 :
26 REM ** EASYDUMP
The second program just blindingly tries to load every possible suffix (it doesn't stop if one of these isn't there, just make sure the whole cartridge contents have been dumped):

Code: Select all

10 POKE55,0:POKE56,30:CLR
11 PRINT"{CLR}VIC-20 CARTRIDGE RUN"
12 INPUT"NAME";N$:N$=LEFT$(N$,12)
13 S$="2000":GOSUB16:S$="4000":GOSUB16
14 S$="6000":GOSUB16:S$="A000":GOSUB16
15 SYS64802
16 SYS57809(N$+S$),8,1:POKE780,0:SYS65493
17 RETURN
18 :
19 REM ** EASYRUN
Greetings,

Michael
User avatar
nbla000
Salmon Run
Posts: 2582
Joined: Thu Oct 13, 2005 8:58 am
Location: Italy

Post by nbla000 »

Great job Mike, thanks a lot from all the community :P
Mega-Cart: the cartridge you plug in once and for all.
User avatar
Mike
Herr VC
Posts: 4816
Joined: Wed Dec 01, 2004 1:57 pm
Location: Munich, Germany
Occupation: electrical engineer

I know, I took myself too serious

Post by Mike »

I didn't know you had the Trademark on the EASY... prefix. ;) :P
User avatar
ral-clan
plays wooden flutes
Posts: 3702
Joined: Thu Jan 26, 2006 2:01 pm
Location: Canada

Post by ral-clan »

dragos wrote:I am truly at a loss to understand why on earth you would volunteer to do something and possess none of the knowledge required to do it....
1) When the original poster asked for volunteers I explained that while I have the equipment and have dumped cartridges before, there were people on Denial far more qualified than me to do this - but that I would dump them as a last resort (because I would need help). Read my post in this thread from March 16th.

2) No one else offered to dump the cartridges so the original poster approached me to do it.

3) If I don't do it, it won't get done at all.

4) Denial members have kindly answered my questions about dumping cartridges and now I can do it.

5) It's called co-operation.
User avatar
nbla000
Salmon Run
Posts: 2582
Joined: Thu Oct 13, 2005 8:58 am
Location: Italy

Post by nbla000 »

ral-clan wrote:It's called co-operation.
Yeah, I love this community :oops:
Mega-Cart: the cartridge you plug in once and for all.
User avatar
ral-clan
plays wooden flutes
Posts: 3702
Joined: Thu Jan 26, 2006 2:01 pm
Location: Canada

Post by ral-clan »

Thanks guys. So far it's working and I'm dumping them as we speak. I'll post the binaries when done.
User avatar
ral-clan
plays wooden flutes
Posts: 3702
Joined: Thu Jan 26, 2006 2:01 pm
Location: Canada

Post by ral-clan »

Here are the dumped cartridges:

http://www3.sympatico.ca/clarke-santin/ ... rchive.zip

Grab this archive while you can, it won't be up long. I took detailed photos of the cartridges too, but they made the archive too big (however, there are some good photos posted earlier in this thread).

The only cartridges that seemed a little different were the two versions of GORF. When dumps of these cartridges are started in VICE, this credit screen appears a few seconds after the title screen is displayed and stays on screen until the game is started:

Image

Although strangely when the same cartridges are plugged into a real VIC-20, this screen does not show up and the game goes into demo mode after a few seconds.

I am interested in hearing the results of binary comparison.
Luzur
Vic 20 Hobbyist
Posts: 113
Joined: Fri May 02, 2008 1:22 pm

Post by Luzur »

wasnt Bill Wade boss of the programmers for awhile?

i recognise the name but he isnt mentioned in On The Edge so i must have read about him somewhere else.
"Are you keeping up with Commodore? cuz Commodore is keeping up with you!" ;)

Image
User avatar
nbla000
Salmon Run
Posts: 2582
Joined: Thu Oct 13, 2005 8:58 am
Location: Italy

Post by nbla000 »

ral-clan wrote:Here are the dumped cartridges:
...
I am interested in hearing the results of binary comparison.
I've just downloaded files, i will compare them asap, maybe a couple of hours :wink:
Mega-Cart: the cartridge you plug in once and for all.
User avatar
nbla000
Salmon Run
Posts: 2582
Joined: Thu Oct 13, 2005 8:58 am
Location: Italy

Post by nbla000 »

ral-clan wrote:The only cartridges that seemed a little different were the two versions of GORF.
Ok for both Gorf versions you need just the a000 file because it uses just 8k on blk5.

The file gorf-apra000 is exactly the same of the final commercial version that you may download from zimmer:
http://www.zimmers.net/anonftp/pub/cbm/ ... k/Gorf.prg

The file gorfeproma000 is a little bit different so i will investigate futher for differences but the credit screen page is the same, tonight/tomorrow i will also check with the 6502dude's NV-RAM cart for lacking credit screen page on real hardware.

Stay tuned :wink:
Mega-Cart: the cartridge you plug in once and for all.
User avatar
nbla000
Salmon Run
Posts: 2582
Joined: Thu Oct 13, 2005 8:58 am
Location: Italy

Post by nbla000 »

OK, here there are the differences between the final commercial version and the gorfeproma000 file version.

Code: Select all

Final commercial version:
b7b6   A0 FF      LDY #$FF
b7b8   60         RTS
b7b9   AD 50 1D   LDA $1D50
b7bc   C5 7D      CMP $7D
b7be   90 F6      BCC $B7B6
b7c0   A5 7E      LDA $7E    <-- 
b7c2   CD 4A 1D   CMP $1D4A
b7c5   F0 09      BEQ $B7D0
b7c7   B0 ED      BCS $B7B6

gorfeproma000 version:
b7b6   A0 FF      LDY #$FF
b7b8   60         RTS
b7b9   AD 50 1D   LDA $1D50
b7bc   C5 7D      CMP $7D
b7be   90 F6      BCC $B7B6
b7c0   A5 00      LDA $00    <-- 
b7c2   CD 4A 1D   CMP $1D4A
b7c5   F0 09      BEQ $B7D0
b7c7   B0 ED      BCS $B7B6


Final commercial version:
b925   C9 08      CMP #$08
b927   D0 04      BNE $B92D
b929   A9 46      LDA #$46
b92b   D0 0E      BNE $B93B
b92d   C9 10      CMP #$10
b92f   D0 0D      BNE $B93E
b931   A9 FF      LDA #$FF    <-- 
b933   99 3C 03   STA $033C,Y
b936   99 24 1D   STA $1D24,Y
b939   A9 35      LDA #$35
b93b   99 56 03   STA $0356,Y
b93e   A6 BF      LDX $BF
b940   FE 24 1D   INC $1D24,X <--
b943   60         RTS
b944   30 02      BMI $B948
b946   C6 31      DEC $31
b948   C9 FF      CMP #$FF
b94a   D0 07      BNE $B953


gorfeproma000 version:
b925   C9 08      CMP #$08
b927   D0 04      BNE $B92D
b929   A9 46      LDA #$46
b92b   D0 0E      BNE $B93B
b92d   C9 10      CMP #$10
b92f   D0 0D      BNE $B93E
b931   A9 00      LDA #$00    <--
b933   99 3C 03   STA $033C,Y
b936   99 24 1D   STA $1D24,Y
b939   A9 35      LDA #$35
b93b   99 56 03   STA $0356,Y
b93e   A6 BF      LDX $BF
b940   70 24      BVS $B966   <-- it seems a bug
b942   1D 60 30   ORA $3060,X
..
b944   30 02      BMI $B948
b946   C6 31      DEC $31
b948   C9 FF      CMP #$FF
b94a   D0 07      BNE $B953


Final commercial version:
bae0   A5 A4      LDA $A4
bae2   18         CLC
bae3   69 0E      ADC #$0E
bae5   85 A4      STA $A4
bae7   A9 0A      LDA #$0A
bae9   85 A3      STA $A3
baeb   D0 E5      BNE $BAD2
baed   A9 0A      LDA #$0A
baef   85 BE      STA $BE    <--
baf1   20 8E B9   JSR $B98E
baf4   C6 BE      DEC $BE
baf6   D0 F9      BNE $BAF1
baf8   60         RTS

gorfeproma000 version:
bae0   A5 A4      LDA $A4
bae2   18         CLC
bae3   69 0E      ADC #$0E
bae5   85 A4      STA $A4
bae7   A9 0A      LDA #$0A
bae9   85 A3      STA $A3
baeb   D0 E5      BNE $BAD2
baed   A9 0A      LDA #$0A
baef   85 00      STA $00    <--
baf1   20 8E B9   JSR $B98E
baf4   C6 BE      DEC $BE
baf6   D0 F9      BNE $BAF1
baf8   60         RTS


from bb02 there are just data 

Final commercial version:
bbd0  20 60    fb    a0 ec    fb    a0 ec a0 20 a0 a0  20 60 cc 8f

gorfeproma000 version:
bbd0  20 60    00    a0 ec    00    a0 ec a0 20 a0 a0  20 60 cc 8f
Thus just few bytes are different, my opinion is that gorfeproma000 file version is a pre-release version with some bug after fixed with the approved version, nothing else, no strange messages or ram protection, nothing so exacting ;)

The byte on $b940 seems really a bug, i may investigate further on $B98E and check on $1D4A location but i really don't think to find something but just some small fixes.

Btw this is my opinion, someone wants to investigate further ?


I will check the other file images...
Mega-Cart: the cartridge you plug in once and for all.
User avatar
nbla000
Salmon Run
Posts: 2582
Joined: Thu Oct 13, 2005 8:58 am
Location: Italy

Post by nbla000 »

For Omega Race you need just the a000 file because it uses just 8k on blk5.

The file omegaracea000 is exactly the same of the final commercial version that you may download from zimmer:
http://www.zimmers.net/anonftp/pub/cbm/ ... e-orig.prg

It is the ram protected version of course.
Mega-Cart: the cartridge you plug in once and for all.
Post Reply