| PortCommodore.com | (site map) - (random page) |
| MAIN - CLASSIC COMPUTING - Commodore PET/CBM Pages - PET Frequently Asked Questions - | |
| portcommodore.com PET/CBM FAQ |
| PET/CBM ROM VERSIONS AND DIFFERENCES |
WHAT ARE ROMS?
ROMs as an acronym for "Read Only Memory" a type of memory that always contain the same value. The computer's ROMs usually contain the programs that the computer needs to start up and perform it's basic operations. On earlier computers like the PET the ROMs contained not only the startup code, but the BASIC programming language, communications routines to work with the tape and disk drives as well as simple printer communications.
Since they weren't easily changed (back then you had to remove and replace the chips, in todays computers there are special electronics that make it so you only need to run a special program) ROMs would have to contain either serious flaws or shortcomings to warrant a new "revision" to be created and sold.
Just like different versions of operating systems today, some programs written for particular ROMs are not compatible with other ROM versions.
THE THREE ROM VERSIONS
The PET/CBM line had three major ROM revisions as well as a few minor ones. Presently this FAQ only covers the major revisions. As to what the version numbers are it can be a bit confusing, some people contend that BASIC version 1.0 never made it out of beta development and the PET line started with version 2.0 ROMs... Commodore on the other hand usually refers to the 'Upgraded ROMs' as V2, or 2.0. For the sake of sanity in this FAQ I will refer to the ROMs as original, upgrade and 4.0 ROMs using those definitions most PET fans will know what you are referring to.
WHAT VERSION OF ROMS DO I HAVE ON MY PET?
You cannot reliably determine the ROMs by looking at the outside of the PET (unless it has a large monitor, then it is definitely 4.0 ROMs). Fortunately there is an easy way to distinguish the three various versions by just turning on the computer and looking at the startup message.
Depending on how your start-up message looks you can determine the ROM version:
*** COMMODORE BASIC *** - Original ROMs
Original ROMs sometimes referred to as 2.0* ROMs. (only found in the older calculator keyboard style PETs) Occupy $C000-$FFFF. The original PET can be upgraded to "Upgrade ROMs"
This was the first general release of the PET, it was the first BASIC implemented by Commodore for the 6502 and there were bugs. Commodore had not yet implemented the IEEE-488 disk routines. Arrays are limited to 256 elements due to a bug in firmware. There is no machine language monitor nor could one use the PEEK command access locations above memory location 49152. The upper/lower case character set was inverted (SHIFT for lower case), due to the way the accumulators were handled you could not have a command such as POKE address,PEEK(address) work reliably. (note: reading my sources there are A LOT of bugs, will take a while to compile them)
### COMMODORE BASIC ### - Upgrade ROMs
Commonly known as the 'Upgrade ROMs' sometimes referred to as 2.0 or 3.0 ROMs depending on who you ask. Occupy $C000-$FFFF
Most Original ROM bugs were squashed. Now includes a tiny ML monitor and IEEE-488 disk operability, also PEEKing to upper memory was permitted. Easter Egg - enter WAIT 6502,x to see 'MICROSOFT!' displayed on the screen x number of times.
This is the BASIC model that was later used fore the Commodore VIC-20 and Commodore 64.
*** COMMODORE BASIC 4.0 *** - 4.0 ROMs
4.0 ROMs The only ROMs that will work on large-screen PETs and cannot work on original PETs. 4.0 ROMs occupy $B000-$FFFF
Based primarily on upgrade ROMs, 4.0 includes the addition of direct Disk operation commands DLOAD, DSAVE, COPY, HEADER, etc. Ability to repeat cursor control characters by holding down keys. Reserved DOS error-channel variables: DS,DS$. And on the large screen PETs the added screen 'window' formatting control characters and "bell" sound.
NOTE: 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.
Also with the 4.0 ROMs it was necessary for Commodore to use some of the RAM allocated for the 2nd datasette interface buffer thus making operation of the second datasette useless.
ADDITIONAL ROMS/EMPTY ROM SOCKETS IN YOUR PET
If you have a later 2001/3000/4000 or 8000 motherboard there will be two or three available ROM sockets. These can be populated with various ROMs either containing programs or in the case of some commercial programs 'protection ROMs' containing code a disk program needs to run (to prevent unauthorized use on multiple computers). If you have a upgrade PET you will have three sockets unpopulated, two ROM sockets are available on a 4000/8000 or 4.0 PETs.
The addresses of the ROMs are
$9000 (36864), $A000(40960), and $B000 (45056) - if Upgrade ROMs are in the PET - each ROM can hold 4096 bytes of information.
Some of the popular ROMs I've heard of are:
If you have extra ROMs in your PET and they are unlabeled or seem like they might be program ROMs you can usually activate them by SYSing the start address of the ROM location. (i.e. enter SYS40960 if a chip is in the $A000 socket) the PET Models FAQ shows the ROM address positions.
DID MICROSOFT REALLY WRITE BASIC FOR THE COMMODORE PET?
Yep. back then Microsoft's main business was BASICs and other languages for microcomputers. In the upgrade ROMs they even placed an easter egg (see above).