• Please review our updated Terms and Rules here

Pet Vet & Pet Disk Issues

Hi gubbish,
Good to have you back on the forum. I know how real live can interfere with our classic computer hobby.

When you get a chance, can you check my latest order for another PETVet? Am I moving up in the cue?
-Dave
 
Dave, my computer has the earthing linkbetween the upper (monitor) and lower (motherboard) part of the casing. It is not a braided wire but a simple green/yellow pvc covered earthing wire, but I think that should do the job.

Regarding the PetVet issue that for some reason requires my motherboard's ROMs to operate, although SW1 is OFF on the PetVet board, means there is probably something wrong with the PetVet board which for sure I cannot troubleshoot.

Connecting via a serial cable to a PC and configuring baud rates and bits and parity e.t.c., through a modem program, in order to reolad ROM images e.t.c., has never been my strong point. So I will leave this issue since my 8032 Pet works fine without it. I had bought the PetVet just as an insurance against possible ROM failure. I have now got an EPROM programmer, UV eraser and some 2732s and 2716s EPROMs so that I can, following online instructions make new copies of my ROMs on the EPROMs and have spares for if and when I need them.
 
Dave, my computer has the earthing linkbetween the upper (monitor) and lower (motherboard) part of the casing. It is not a braided wire but a simple green/yellow pvc covered earthing wire, but I think that should do the job.
Actually, that wire isn't very useful for RF, which is what your symptom suggests. That wire is a safety ground, to keep both parts of the case at the same potential in case of an AC or DC short. An RF ground really needs to be a wide braid or something. At the very least, you can get some solder braid from Radio Shack and put that in parallel with the existing ground wire.

RFI was my first thought too, and your description sure makes it sound that way. But, I wonder why the PetVet would be emitting that much RFI, if indeed the problem is only happening when the PetVet is installed.[/QUOTE]
 
I had bought the PetVet just as an insurance against possible ROM failure. I have now got an EPROM programmer, UV eraser and some 2732s and 2716s EPROMs so that I can, following online instructions make new copies of my ROMs on the EPROMs and have spares for if and when I need them.

Nicolas,
That tells me you are serious about keeping your classic PET running. The 2716 will be fine for the 2K Editor ROM, but you should have some 2532 EPROMs as a direct replacement for the other 4K ROMs as the 2732s will need an adapter. If you care to send me a mailing address by this forum's "private messages", I will be glad to send you a set of four blank 2532 EPROMs for your future needs.
-Dave
 
Rfi was my first thought too, and your description sure makes it sound that way. But, i wonder why the petvet would be emitting that much rfi, if indeed the problem is only happening when the petvet is installed.

I agree, but I wish I knew the effects of using a 60 Hz editor ROM in a 50 Hz system. It probably only effects the 'Jiffy Time' correction routine, but are the constants for the CRTC chip different? Would that somehow cause jitter?? There are still a lot of secrets of the PET that I do not know. I wish MikeS was still around the Forum. He is a real PET guru.

-Dave
 
I agree, but I wish I knew the effects of using a 60 Hz editor ROM in a 50 Hz system. It probably only effects the 'Jiffy Time' correction routine, but are the constants for the CRTC chip different? Would that somehow cause jitter??

The CRTC constants are (almost) the only differences between the two roms. It looks like sjgray has already produced .asm disassemblies of the two versions.

50hz ROM

60hz ROM

Incorrect parameters could definitely cause jitter. I've heard that in theory a far enough out-of-range signal can actually damage a monitor (IBM used to warn that attaching the 5151 Mono monitor to a CGA card could damage it, supposedly by overheating the flyback?) but I doubt that's likely in this case.

(That "build your own pet ROM" repository actually has all sorts of interesting things in it, like tweaked CRTC constants to let you drive normal PAL and NTSC monitors.)

EDIT: That said, it sounds like the OP is having screen tearing/corruption even with the PETVET bypassed but in place? (In which case he should be using the "correct" motherboard ROM anyway?) Probably barking up the wrong tree, but maybe it would be worth taking a voltage measurement of the +5v line with the PetVet in place vs. absent? Only theory I can think of is maybe your 5v line is marginal and with the PetVet in place it gets pulled down enough to affect something analog in the video output circuitry?
 
Last edited:
The CRTC constants are (almost) the only differences between the two roms. It looks like sjgray has already produced .asm disassemblies of the two versions.

50hz ROM

60hz ROM

Incorrect parameters could definitely cause jitter.

Thanks Eudi,
From this data it is clear that registers R4 and R5 contain different parameter data in the two versions. Here is what the 6545 spec sheet says:

"The Vertical Total Register (R4) is a 7 bit register containing the total number of character rows (displayed and non displayed) in a frame, minus one. This register, along with R5 (Vertical Total adjust), determines the overall frame rate, which should be close to the line frequency to ensure flicker-free appearance."

Therefore it would seem wise to use the 50Hz Edit ROM in Europe. When ordering a PETVet for a 8032 or newer 4032 for use in Europe, make sure you specify the Edit ROM you need or be prepared to reprogram it. For older PETs without a CRTC, it is not an issue.
-Dave
 
hi everybody

Therefore it would seem wise to use the 50Hz Edit ROM in Europe. When ordering a PETVet for a 8032 or newer 4032 for use in Europe, make sure you specify the Edit ROM you need or be prepared to reprogram it. For older PETs without a CRTC, it is not an issue.
-Dave

Dave,

Is there a Tuto reprogram the petvet ?

Kind regards
 
Is there a Tuto reprogram the petvet ?

Kind regards

The Bitfixer.com webpage has a short description on how to reprogram the PETVet.

http://www.bitfixer.com/bf/petvet/petvet-operation

However creating the load file takes a little effort using a php script interpreter. I could do this for you, but you would have to feel comfortable with performing the reprogramming using an old PC (that has a serial port) running a terminal program and doing an XMODEM transfer. Are you familiar with this type of RS-232 serial transfer? The hardest part will be to find a term program that is new enough to run at 38400 baud, but old enough to still do the XMODEM protocol. Crosstalk XVI from the 1980s will probably work for this and can be found on the web. If none of this is making any sense, you probably should not try it.
-Dave
 
hi dave

creating the load file takes a little effort using a php script interprete
ok php is not my deal !
for wath is the load file ? i thought we just change rom images.

you would have to feel comfortable with performing the reprogramming using an old PC (that has a serial port) running a terminal program and doing an XMODEM transfer

The windows xp hyperterminal can do this as it includes Xmodem Transfer protocols. I use a USB/RS-232 connector on my laptop.

I own a older computer with windows xp but we can use the xp hyperterminal on windows 7 by simple catching 2 files ( hypertrm.exe in C:\Program Files\Windows NT and hypertrm.dll in C:\Windows\System32). I just tested it on My windows 7 64bits for the fun :) it works !

The Bitfixer.com webpage has a short description on how to reprogram the PETVet.

Yes i have read it out but it is not very instructif : It says to connect the petvet to a 5v power source.
Ok this can be easly done with any usb port/charger but it does not explain where to connect the 5V on the petvet or i missed the info ?

In my sens the transfert shoud not be that difficult you expect regarding old programs to use ect..

Kind regards
 
ok php is not my deal !
for wath is the load file ? i thought we just change rom images.

Don't worry about the load file. I will create a binary file called petvetupdate50hz.bin that you can use to reprogram your PETVet. I only need to know the part number of your editor ROM. For 80 columns business and 50Hz I think the part number of the ROM is 901474-04. Is that what you have for the E000 ROM (UD7)?


The windows xp hyperterminal can do this as it includes Xmodem Transfer protocols. I use a USB/RS-232 connector on my laptop.

I own a older computer with windows xp but we can use the xp hyperterminal on windows 7 by simple catching 2 files ( hypertrm.exe in C:\Program Files\Windows NT and hypertrm.dll in C:\Windows\System32). I just tested it on My windows 7 64bits for the fun :) it works !

OK, I would use the oldest PC with a normal serial port. You seem very familiar with RS-232. You must be older than I thought. ;)

Yes i have read it out but it is not very instructif : It says to connect the petvet to a 5v power source.
Ok this can be easly done with any usb port/charger but it does not explain where to connect the 5V on the petvet or i missed the info ?

I would use the ISP interface pins to supply the +5V and ground. It is the 6 pin header shown on p.2 of the schematic. Using the photo of the PETVet for reference, the ISP header is just above the RS-232 connector with pin 1 on the top right. +5V is on pin 2 which should be on the bottom right. Ground is on pin 6 on the bottom left. You should do a continuity check to make sure before connecting power. Attached below is a pinout for the ISP header. You can use something like a wire wrap jumper shown below to connect to the 0.1" header post if you do not have a proper female socket for the 6 pin header. Take your time and make sure you understand everything required; I do not want you to break your PETVet.
-Dave

ISP.jpg 11710-01.jpg
 
Thanks KC9UDX, I will get some flat braided wire and have it fitted in parallel with the earthing wire.

I have no clue why my PetVet board creates so much RFI. I have tried it with 2 different 6502 chips but the same problem is present. I also haven't figured out yet why my computer fails to turn on when PetVet in installed and any of the ROMS is not in its socket. There is the odd chance that the two seemingly inexplicable occurrences are related. Maybe one day I will find out the reason and surely post my findings here.
 
Hi dave,

Sorry for delay bu i was away for the week-end !

Don't worry about the load file. I will create a binary file called petvetupdate50hz.bin that you can use to reprogram your PETVet. I only need to know the part number of your editor ROM. For 80 columns business and 50Hz I think the part number of the ROM is 901474-04. Is that what you have for the E000 ROM (UD7)?

Just for my own understanding of what it takes to update the petvet ! Can you please explain why we need php to create our binarys ?
can you explain the steps ? what is exactly in the update.bin file ?

The part N° of UD7 in my pet is : 901498-01

I would use the ISP interface pins to supply the +5V and ground. It is the 6 pin header shown on p.2 of the schematic. Using the photo of the PETVet for reference, the ISP header is just above the RS-232 connector with pin 1 on the top right. +5V is on pin 2 which should be on the bottom right. Ground is on pin 6 on the bottom left. You should do a continuity check to make sure before connecting power. Attached below is a pinout for the ISP header. You can use something like a wire wrap jumper shown below to connect to the 0.1" header post if you do not have a proper female socket for the 6 pin header. Take your time and make sure you understand everything required; I do not want you to break your PETVet.
-Dave

After a little look on shematics and some continuity check on the petvet pcb (just in case) on J6 +5V must be connected on pin 2 and ground to pin 6.
So it should be connected like on the photo below if i'm not completly stupid :)

5V power.jpg

Where red = +5V black = GRND

Normally there should be no problem regarding the update. so just a few points :

Must the 6502 be in place for the update ?
and can you tell about what is exactly in the update file if its not too annoying :)

Anyway i want to say thank you for your precious help and time.

Kind regards, techtatan
 
Last edited:
The part N° of UD7 in my pet is : 901498-01

From this part number, do you have a 40 column display (fat 40), with CRTC, 50 Hz and with the normal graphics keyboard? I'm surprised the 80 column 60 Hz business ROM worked at all. Or what switches did you select on the PETVet?
-Dave
 
hi

From this part number, do you have a 40 column display (fat 40), with CRTC, 50 Hz and with the normal graphics keyboard? I'm surprised the 80 column 60 Hz business ROM worked at all. Or what switches did you select on the PETVet?

The petvet switches are set to Basic4.0 80 colum, CRT(PET 8032).
The keyboard is the UK (50HZ) buisness keyboard :
IMG_0036.jpg

The screen is a large screen :

IMG_0037.jpg

I have read out the following on zimmer's : http://www.zimmers.net/cbmpics/cbm/PETx/petfaq.html

*** COMMODORE BASIC 4.0 ***
- 4.0 ROMs The only ROMs that will work on
large-screen PETs. Occupy $B000-$FFFF

* The small screen-and large screen versions of these ROMs differ and
some software developed for the small-screen 4.0 ROMS crash on the large
screen units. This is due to the necessary changes made for the newer video
controller of the 12" display PETs.

Is there any problem or not ussual sets of roms ? at least the basic 4 80 colums roms from petvet works the same as my original roms.

Note: above the assy N° 8032080 there is written 80 CLUMN CPU.
But the BA0-BA10 jumpers are set to 40 COLUMN on mother board. regarding shematics :

8032080-7.jpg


Hope this clarify everything !
Kind regards, techtatan
 
Hope this clarify everything !

Yes, all is fine. The 901498-01 Edit ROM is the one I will use to build the update load file. You have the BASIC 4 with a 40 character screen with a normal graphics keyboard, 50 Hz and with CRTC. I will modify the php source file and will post it here so you can see that the only difference will be when you choose option sw1 OFF, sw 2 ON, and sw3 OFF you will get the ROM set needed for your PET including the 901498-01 EDIT ROM.
-Dave
 
PETVet php script file for 50Hz BASIC 4 PETs

PETVet php script file for 50Hz BASIC 4 PETs

OK, I modified Mike's convertroms.php script file to use the 901498-01 EDIT ROM for 40 column BASIC 4 PETS with CRTC and 50 Hz. Read at about the 50th line for the key change of commenting out the 80 column EDIT ROM and replacing with the 40 column 50 Hz ROM. I will also see if I can attach the binary load file later.
-Dave

Code:
<?php
/*
    convertroms.php
    Convert binary ROM files into a data structure for the PETvet device
    Copyright (C) 2012 Michael Hill


    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.


    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.


    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
    
    Contact the author at bitfixer@bitfixer.com
    http://bitfixer.com
*/


$roms = array();


// ====================
// begin ROM specification
// modify this to create custom ROM sets for the PETvet
// first specify all ROMs you want included
// 
// for each ROM, include a line in the format
// $roms[<ROMNUMBER>] = array("<ROMFILENAME>",<ROMSIZE>,<DESTROMADDR>);
// ROMSIZE is the size of the rom in bytes
// DESTROMADDR is the address where this ROM will be loaded into the PETvet's memory. 


// add ROMs to list
// basic 4.0 set
$roms[0] = array("basic-4-b000.901465-23.bin",4096,0xb000);
$roms[1] = array("basic-4-c000.901465-20.bin",4096,0xc000);
$roms[2] = array("basic-4-d000.901465-21.bin",4096,0xd000);
$roms[3] = array("edit-4-n.901447-29.bin",2048, 0xe000);
$roms[4] = array("kernal-4.901465-22.bin",4096, 0xf000);


// basic 2.0 set
$roms[5] = array("basic-2-c000.901465-01.bin",4096,0xc000);
$roms[6] = array("basic-2-d000.901465-02.bin",4096,0xd000);
$roms[7] = array("edit-2-n.901447-24.bin",2048,0xe000);
$roms[8] = array("kernal-2.901465-03.bin",4096,0xf000);


// 80 col screen editor 60 Hz
// $roms[9] = array("edit-4-80-b-60Hz.901474-03.bin",2048,0xe000);


// 40 col screen editor with CRTC and 50 Hz
$roms[9] = array("edit-4-40-n-50Hz.901498-01.bin",2048,0xe000);


// Selectable ROM sets
$romsets = array();


// Now define the ROM sets which will be selectable by jumpers on the PETvet
// To specify a set of ROMs, add a line in the format:
// $romsize["<ROMSETNAME>"] = array(<ROM1>,<ROM2>,...);
// The ROMSETNAME is a text name of 10 characters or less which describes this ROM set. This is just for your own reference.
// ROM1,ROM2,etc are the indices of previously specified ROMS. 


// basic 2.0 set
$romsets["BASIC2"] = array(5,6,7,8);
$romsets["BASIC4 40C"] = array(0,1,2,3,4);
$romsets["BASIC4 80C"] = array(0,1,2,9,4);


// memory mapping
// define the memory map for the 64k address space
// memory settings for each segment include:
// "PASSTHROUGH"    - disable PETvet for this segment and just pass reads and writes through
// "WRITETHROUGH"   - enable PETvet for writes, and pass these writes through to the mainboard as well
// "READONLY"       - enable PETvet for reading only, disable for writes. Used for ROM segments
// "REPLACE"        - enable PETvet for both reads and writes, isolating CPU from mainboard


// each segment of the memory map is defined:
// $map[] = array(<SETTING>, <STARTADDR>, <ENDADDR>);
// after defining the full memory map, add it to the list of memory maps like so:
// $memorymaps[<index>] = 


$memorymaps = array();


$map = array();
// addresses 0x0000-0x7fff - enable SRAM and isolate from mainboard
$map[] = array("REPLACE",       0x0000, 0x7fff);
// addresses 0x8000-0x8fff - writethrough to capture video memory
$map[] = array("WRITETHROUGH",  0x8000, 0x8fff);
// addresses 0x9000-0xafff - readonly ROM segment
$map[] = array("READONLY",      0x9000, 0xe7ff);
// addresses 0xe800-0xefff - I/O space, passthrough all reads and writes
$map[] = array("PASSTHROUGH",   0xe800, 0xefff);
// addresses 0xf000-0xffff - readonly ROM segment
$map[] = array("READONLY",      0xf000, 0xffff);


$memorymaps[0] = $map;


$map = array();
// addresses 0x0000-0x7fff - enable SRAM and isolate from mainboard
$map[] = array("REPLACE",       0x0000, 0x3fff);
$map[] = array("READONLY",      0x4000, 0x7fff);
// addresses 0x8000-0x8fff - writethrough to capture video memory
$map[] = array("WRITETHROUGH",  0x8000, 0x8fff);
// addresses 0x9000-0xafff - readonly ROM segment
$map[] = array("READONLY",      0x9000, 0xe7ff);
// addresses 0xe800-0xefff - I/O space, passthrough all reads and writes
$map[] = array("PASSTHROUGH",   0xe800, 0xefff);
// addresses 0xf000-0xffff - readonly ROM segment
$map[] = array("READONLY",      0xf000, 0xffff);


$memorymaps[1] = $map;


// now define the memory map settings for each jumper position
$memorymapsettings = array();
$memorymapsettings[0] = 0;
$memorymapsettings[1] = 1;
$memorymapsettings[2] = 0;




$filename = "romsets.bin";


// end ROM specification
// ==================
// generate binary file for ROM sets


// filename for petvet code binary
// specify the binary file which contains the PETvet main program
$code_binary_filename = "petvetcodev10.bin";
// output filename for the new binary update file
// this is the file that will be sent to the PETvet over XMODEM
$output_binary_filename = "petvetupdate50Hz.bin";


$total_rom_settings = 8;
$header_filename = "romsets.h";


function calculate_header_length($romset)
{
    $num_roms = sizeof($romset);
    // 2 bytes per address
    $address_size = $num_roms * 2;
    // add fixed length - set ID, name, and number of roms, plus 2 bytes for memory map address
    $header_length = $address_size + 12 + 2; 
    
    return $header_length;
}


$romsets_index = array();
$index = 0;
foreach($romsets as $name=>$rs)
{
    $romsets_index[$index] = array("name"=>$name, "roms"=>$rs);
    $index++;
}


$total_specified_roms = sizeof($romsets);
$total_header_length = 0;


print_r($romsets_index);


// calculate total header length for ROM sets
for ($r = 0; $r < $total_rom_settings; $r++)
{
    if ($r < $total_specified_roms)
    {   
        $romset_index = $r;
    }
    else
    {
        $romset_index = 0;
    }
    
    $romlist = $romsets_index[$romset_index]["roms"];
    $hl = calculate_header_length($romlist);
    $total_header_length += $hl;
    
    //print "hl $hl\n";
}


print "Total header length: $total_header_length\n";


// calculate start addresses for ROMs
$curr_addr = $total_header_length;
$rom_start_addr = array();
foreach($roms as $i=>$rom)
{
    print "Rom $i\n";
    $this_rom_length = $rom[1];
    print "Length $this_rom_length\n";
    print "Start Address: $curr_addr\n";
    $rom_start_addr[] = $curr_addr;
    
    // increment address
    $curr_addr += ($this_rom_length + 4);
}


// now calculate start addresses for memory maps
$memmap_start_addr = array();
foreach($memorymaps as $i=>$mm)
{
    print "Memory Map $i\n";
    print "Start Address: $curr_addr\n";
    $memmap_start_addr[] = $curr_addr;
    
    // increment the address by the size of a memory map
    $curr_addr += 128;
}


//print_r($rom_start_addr);
$fp = fopen($filename, "wb");


// now write out header
for ($i = 0; $i < $total_rom_settings; $i++)
{
    if ($i < $total_specified_roms)
    {
        $index = $i;
    }
    else
    {
        $index = 0;
    }
    //print "index is $index\n";
    
    $ri = $romsets_index[$index];
    //print_r($ri);


    $thisname = $ri["name"];
    $num_roms = sizeof($ri["roms"]);
    
    print "name $thisname\n";
    print "nr $num_roms\n";
    
    $addresses = array();
    
    foreach($ri["roms"] as $romindex)
    {
        $addresses[] = $rom_start_addr[$romindex];
    }
    
    print_r($addresses);
    
    // now write out data
    // 1 byte: set index
    fwrite($fp, pack('C', $i));


    // 10 bytes: set name
    for($b = 0; $b < 10; $b++)
    {
        if ($b >= strlen($thisname))
        {
            fwrite($fp, ' ');
        }
        else
        {
            fwrite($fp, $thisname[$b]);
        }
    }
    // 1 byte: number of ROMs
    fwrite($fp, pack('C', $num_roms));
    
    // 2 bytes per rom address
    foreach($addresses as $addr)
    {
        // back big endian unsigned short
        fwrite($fp, pack('n', $addr));
    }
    
    // 2 bytes: address of memory map
    fwrite($fp, pack('n', $memmap_start_addr[$memorymapsettings[$i]]));
}


// now write out ROM contents
foreach ($roms as $rom)
{
    // write 4 byte header for this rom
    // first 2 byte destination address
    fwrite($fp, pack('n', $rom[2]));
    // then 2 byte ROM length
    fwrite($fp, pack('n', $rom[1]));


    // get contents of this ROM and write out
    $romcontents = file_get_contents($rom[0]);
    // write each byte
    for ($i = 0; $i < $rom[1]; $i++)
    {
        fwrite($fp, $romcontents[$i]);
    }
}


// now write out memory maps
foreach ($memorymaps as $mm)
{
    $thismap = array();
    foreach ($mm as $memseg)
    {
        // get this segment of memory
        $segtype = $memseg[0];
        $startaddr = $memseg[1];
        $endaddr = $memseg[2];
        
        // show information
        print "$segtype: $startaddr, $endaddr\n";
        
        // get start and end indices into the memory map
        $startind = floor($startaddr / 512);
        $endind = floor($endaddr / 512);
        
        print "s $startind, e $endind\n";
        
        // generate memory map for this segment
        for ($i = $startind; $i < $endind; $i += 2)
        {
            // write mapping bytes for the selected type
            if ($segtype == "PASSTHROUGH")
            {
                $thismap[$i] = 0x00;
                $thismap[$i+1] = 0x00;
            }
            else if ($segtype == "WRITETHROUGH")
            {
                $thismap[$i] = 0x08;
                $thismap[$i+1] = 0x00;
            }
            else if ($segtype == "READONLY")
            {
                $thismap[$i] = 0x00;
                $thismap[$i+1] = 0x09;
            }
            else if ($segtype == "REPLACE")
            {
                $thismap[$i] = 0x09;
                $thismap[$i+1] = 0x09;
            }
        }
    }


    // write the memory map
    for ($a = 0; $a < 128; $a++)
    {
        //print $thismap[$a]." $a\n";
        fwrite($fp, pack('C', $thismap[$a]));
    }
}


fclose($fp);


// also write header for inclusion in source code
$fpheader = fopen($header_filename, "w");
fprintf($fpheader, "unsigned char romdata[] __attribute__ ((section (\".ROMdata\"))) =\n");
fprintf($fpheader, "{\n");


$bincontents = file_get_contents($filename);
$numbytes = strlen($bincontents);
print "num bytes: $numbytes\n";
for ($i = 0; $i < $numbytes; $i++)
{
    $byte = $bincontents[$i];
    //print "byte: $byte\n";
    
    $dec = unpack('C', $byte);
    $dec = $dec[1];
    
    $hex = dechex($dec);
    $addrhex = dechex($i);
    fprintf($fpheader, "\t0x$hex,\t//address $i (0x$addrhex)\n");
    
    // split into two arrays
    if ($i == 32765)
    {
        fprintf($fpheader, "};\n\n");
        fprintf($fpheader, "unsigned char romdata2[] __attribute__ ((section (\".ROMdata2\"))) =\n");
        fprintf($fpheader, "{\n");
    }
}


fprintf($fpheader, "};\n");
fclose($fpheader);


// now create new firmware binary for updating PETvet
// attach code segment to ROM contents


// open code segment
$codebin = file_get_contents($code_binary_filename);
$output_bin = $codebin . $bincontents;


$fp_output = fopen($output_binary_filename, "wb");
fwrite($fp_output, $output_bin);
fclose($fp_output);






?>
 
PETVet load file for BASIC 4 40 column CRTC 50 Hz only

PETVet load file for BASIC 4 40 column CRTC 50 Hz only

Here is the link to download the load file called "petvetupdste50Hz.bin". This is used to reprogram the PETVet FLASH memory using its built-in loader.

Follow the directions from the bitfixer.com website. One must use a serial port set at 38400 baud, N81. The PETVet must be removed from the PET and supplied with +5V power. The XMODEM protocol is used for the upload transfer.

Note: I personally have not reprogrammed a PETVet using this method. I have only used an AVR programmer to program the chip directly with the petvetupdate load file.

techtatan - I think the 6502 does not need to be in place to upload the file into the ATMEGA controller, but I have not tried it that way.
-Dave
 
Last edited:
The PETVet must be removed from the PET and supplied with +5V power.
No it doesn't. It's much easier to use the PET's own 5V supply, just leave it in place. I checked this with Mike at the time and he agreed. Also, if you're going to start reprogramming it yourself, it's much easier to fit a switch. You can use a 3-pin fan header cable from a PC like the photo attached. I use a freeware version of AbsoluteTelnet, works great on Windows 7 with a USB->Serial converter cable.

I didn't read the whole thread regarding 50/60hz but if it's just to get it working you can usually ignore it. 50hz roms work in 60hz machines and vice-versa. You may get some minor shake, but that's all.

Rob
 

Attachments

  • MyPetVet.jpg
    MyPetVet.jpg
    86.7 KB · Views: 1
Back
Top