Preliminary PET FAQ

From: Larry Anderson & Diane Hare <foxnhare_at_goldrush.com>
Date: Mon Jul 21 23:48:45 1997

I figured I'd shoot this by you guys as I am getting closer to putting
it on my web site. I am sure I will get some good criticism from you
all. If you have any additions/suggestions or additional questions to
include, let me know.

I also plan also to add in a couple texts on disk drive usage some PET
memory maps (gee there are barely any PET maps on the net!) and if I
don't find a link to one, an overview of Commodore PET BASIC (applies to
64 also).

(view with a monospaced font for best results)

THE COMMODORE PET COMPUTER
FREQUENTLY ASKED QUESTIONS FILE - VERSION 1.0beta
---------------------------------------------
BY LARRY ANDERSSON,
COMMODORE COLLECTOR AND PET ENTHUSIAST
---------------------------------------------

WHAT MODELS OF THE PET ARE THERE?

  The PET line was Commodore's first computer line after purchasing MOS
  Technologies the primary design of the computer (as well as its
microprocessor,
  the 6502) was by Chuck Peddle. The line was labeled in series' the
first
  series, the 2001 series, the european 3000 series, and the modern 4000
and
  8000 series, and the final single unit 9000 series which is the
SuperPET.

9" display units (40 column x 25 line character only display):
  PET 2001series:
   Original PET:
    - Steel case - Internal 'datasette' cassette tape
drive
    - Blue on black 9" display - Small 'calculator style' keyboard
    - Small shipment with 4k, most with 8k RAM
    - Original ROMs
  Large Keyboard PETs (no more internal datasette drive):
   PET 2001 xN (x=8,16,or 32 depending on amount or RAM it was shipped
with)
    - Full-size key keyboard w/PET graphic symbols imprinted on keys
    - Upgrade ROMs
    - Many steel cased, some w/molded plastic tops.
    - many with clearer green on black displays
    - Later versions had 4.0 ROMs installed
   PET 2001 xB (labeled as CBM, Commodore Business Machine)
    - Full size xx key keyboard (no graphics symbols printed on keys)
    - Upgrade ROMs (powers up in upper/lower case mode)
    - Later versions had 4.0 ROMs installed
    - Many w/molded plastic tops some steel cased.
   PET/CBM 40xx Series (PET= N keyboard/ROM, CBM= B keyboard/ROM, xx=
RAM)
    - 4.0 ROMs
    - molded plastic top
12" displays - updated video controller (prone to the 'killer poke')
   - internal piezo speaker, audible startup, and right margin sound.
   - 4.0 ROMs
   PET/CBM 40xx (PET= N keyboard/ROM, CBM= B keyboard/ROM, xx= RAM)
    - 40 x 25 display, upgradable to 80 columns
    - lower case availabe by CHR$(14) which also changes line spacing.
 80 column series (can be set to 40 column mode via software.)
   CBM 80xx
    - 80 x 25 display, powers-up in upper/lower case.
    - buisness xx key keyboard
    - later versions had 64k & 96k RAM expansion board options.
    - 4.0 ROMs
   PET SP9000 SuperPET (or Micro Mainframe)
    - 80 x 25 display - 6809 co-processor board
    - 96k RAM - True RS-232 interface
    - Multiple charactersets (for APL, etc.)
    - Avalability of disk Based languages

MOTHERBOARD SERIES

 2000 series(9" CRT) 3000 & 4000 series (8" CRT)
            IEEE user tape #2 IEEE user tape #1
     +------####-####--##-+ +------####-####--##-+
     ! # ! #!
     ! # ! #!
     ! # exp ! #! exp
     ! # bus ! ROMS #! bus
     ! # ! F E D C A B 9 #!
     ! # ! #!
     ! ! ! !
     ! ! ! !
     ! ROMS ! ! !
     ! F E D C A B 9 ! ! !
     ! ! ! !
tape # RAM MEMORY ! tape # RAM MEMORY !
 #1 # ! #2 # !
     +--------------------+ +--------------------+

 4000/8000 series (12" CRT)
            IEEE user tape #1
     +------####-####--##-+
     ! # # tape
     ! # # #2
     ! R exp bus # !
     ! A #! 2000 Series
     ! M 9 #! circa 1977/78 Max RAM - 8k
     ! A #! [daughterboard exp to 32k]
     ! M R B !
     ! E O C ! 3000 & 4000 Series
     ! M M D ! circa 1979/80 Max RAM - 32k
     ! O S E !
     ! R F ! 4000 & 8000 Series
     ! Y ! circa 1981 Max RAM - 32k*
     ! spkr! [daughterboard exp to 96k]
     +--------------------+

WHAT VERSION OF ROMS DO I HAVE ON MY PET?

  The PET/CBM line had three major ROM revisions as well as a few minor
ones,
  you cannot reliably determine the ROMs by looking at the outside of
the PET
  (unless it has a large monitor). Fortunately there is an easy way to
  distinguish the three various versions by just turning on the
computer.
  Depending on how your start-up message looks you can determine the ROM
  version:

  *** COMMODORE BASIC *** - Original ROMs sometimes referred to as 2.0*
ROMs.
                             (only found in the older calculator
keyboard style
                             PETs) Occupy $C000-$FFFF

  ### COMMODORE BASIC ### - Commonly known as the 'Upgrade ROMs'
sometimes
                             referred to as 2.0 or 3.0 ROMs depending on
who
                             you ask. Occupy $C000-$FFFF

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

   * 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 'Upgrade ROMs' as V2, or
2.0.
     For the sake of sanity in this FAQ I will refer to them as original
and
     upgrade ROMs, and as for an opinion I will go with the company's
numbering
     (which leaves V 3.0 out of the picture).

WHAT ARE THE DIFFERENCES AND/OR BUGS OF MY VERSION OF BASIC?

 Original ROMs
  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 the PEEK command access locations above memory
location
  49152. The upper/lower case character set was inverted (SHIFT for
lower
  case) (note: reading my sources there are ALOT of bugs, will take a
while to
  compile them)

 Upgrade ROMs
  Many Original ROM bugs were squashed. BASIC commands and capabilities
very
  much like the Commodore 64's. Now includes a tiny ML monitor and
IEEE-488
  disk operability. Easter Egg - enter WAIT 6502,x to see MICROSOFT!'
displayed
  on the screen x number of times.

 4.0 ROMs*
  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$. Added screen 'window' formatting
control
  characters.
  * 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 new
video
  controller of the 12" display PETs.

CAN I RUN VIC-20, 64, 128, PLUS/4, OR C-16 SOFTWARE ON MY PET?

  Maybe. Any program that is all BASIC that does not use hi-res
graphics or
  sound and contains no POKES should work readily on a PET. Of course
if it
  contains POKEs, sound commands, and Machine Language conversion will
be
  nessasary. If it rely on more than one voice of sound, hi-res
grpahics,
  programmable character sets or color, it may not be worth converting
because
  those features aren't present on the PETs.

  NOTE: Many early VIC, 64, and Plus/4 BASIC games and programs were
converted
        PET games.

HOW DO I GET 64 (VIC, PLUS/4, ETC.) BASIC PROGRAMS ON MY PET?

  Unlike the later 8-bit Commodores,the PET always loads programs into
the
  memory address they were saved at (i.e. no loading ,8 and ,8,1 as on
the
  later machines), which means BASIC programs saved on VICs, 64s, 128s,
etc,
  will not load in the right location on the PET to be seen by the BASIC
  interpreter. PET BASIC starts at location 1025 ($0401 in hex) and the
later
  Commodore machines have different, higher starting locations. (see
table x)

 There are a couple ways to get a BASIC program to load properly into
memory,

 Disk Track/Sector Editors:
  My preferred method of conversion is using a disk track/sector editing
utility
  to change the 'load address bytes' of the file directly on the disk.
This is
  not an easy process to 'explain' and I hope to write it up at a later
time.

 BASIC Line Relocation Method:
  Here is a way to get the BASIC editor to do it for you; of course you
will
  need to have an upgrade ROM or later PET (which has a ML monitor) or
load in
  a monitor for your original ROM PET first. It involves 'linking' the
higher
  located BASIC program to a line starting in regular BASIC, when you
delete
  that line, the editor will move your program to where it belongs in
memory.

  1. Enter NEW to erase any programs already in memory.
  2. Enter: 0 REM
  3. LOAD the program you want converted (i.e. LOAD"program name",1 for
tape)
  4. When loaded, enter the machine language monitor by entering SYS
1024
  5. display the first part of the BASIC you first typed:
     M 0401 0408
  6. Change the line-link to the memory location of the program to be
moved;
     use cursor keys to move up and change the first two two-digit
numbers to
     read:
     :0401 01 08 00 00 8F 00 00 00
           ^^ ^^ (for a program from a 64, otherwise, see table x)
  7. Press return to change the bytes then enter X to exit the monitor.
  8. Type LIST, you should see the 0 REM followed by the program.
  9. Enter 0 to delete line 0 which will move the BASIC to its proper
place.
 10. Save the program.

  TABLE X - Load Addresses for BASIC files:

       Saved under Start of BASIC
        Computer load load change
         Model/ addr. addr. bytes
      configuration dec. hex. to:
      ------------- ---- ----- -----
      PET/CBM 1025 $0401 N/A
      VIC-20 unex. 4097 $1001 01 10
      VIC-20 +3k 1025 $0401 N/A
      VIC-20 8k+ 4609 $1201 01 12
      Commodore 64 2049 $0801 01 08
      B-128 0003 $0003 *
      Plus/4-C16 4097 $1001 01 10
      Plus/4-C16** 8193 $2001 01 20
      C128 mode 7169 $1C01 01 1C
      C128 mode** 16384 $4001 01 40

  * The BASIC RAM of the B128 is located in a separate bank of RAM
memory,
    which starts at a VERY low address and will be difficilt to convert
without
    a track/sector editor or saving it special on a B-128 itself.
  ** When hi-res GRAPHICS mode space has been allocated.

WHAT KIND OF DRIVES CAN I USE?
  Tape Drives
    Tape Drives for the VIC, 64 and 128 work well on the PET. In fact
you can
    hook up 2 tape drives on the PET (the second connector is inside the
case,
    on the edge of the motherboard.) and can be accessed as device #2.
    Commodore Models:
    SANYO - First drives, power supply section cut out and modified for
            PET datasette cable/plug.
    C2N - Box look, black or cream colored case.
    1530 - Rounded low-profile, counter & 'save' indicator light.
  Commodore IEEE-488 5.25" models
    2020 - (first drive design, bugs may be present)
    2040 - Updated ROMS, resembles a 1541 format & readbable on 1541/71s
    4040 - Read/Write compatible with 1541/1571s.
    2031 - Read/Write compatible with 1541/1571s.
    8050 - Single Sided/Quad Density format, 512k per disk side.
    8250 - Double Sided/Quad Density format, 1mb per disk
    SFD-1001 - Same as 8250, but single drive unit.
   Commodore IEEE-488 8"
    8280 - 1 MB or 512k per Drive (little info on this one...)
   Commodore IEEE-488 Hard Disk Drives
    9060 - Five Magabyte Hard Disk Unit
    9090 - Seven Megabyte Hard Disk Unit
   3rd party
    MSD-SD1 ** The MSD SD1&2 offer both IEEE-488 and
    MSD-SD2 ** VIC/64/128/+4 Serial bus interfaces.
   Modified 1541
PRINTERS?
  Commodore Model IEEE-488 Printers
   4022
   4023
   8023
  Some companies produced printers with IEEE-488 interface options
(Epson was one)

HOW CAN I GET PET PROGRAMS FROM DISK TO TAPE?

  You can just LOAD the program from tape and and SAVE them to disk one
after
  another, of course, if you are using a VIC/64/128, etc. the loading
address
  will get messed up. Fortunately there is a wonderful fily copy
utility
  available for PET (4.0), VIC, and Commodore 64/128, called 'Unicopy'.
  Unicopy (written by the famous Commodore enthusiast, Jim Butterfield)
allows
  you to copy from disk directly to tape. This of course preserves the
loading
  address and makes things mauch easier. (also it performs multiple
file copies
  instead of just one program at a time).

HOW CAN I GET PET TAPE PROGRAMS TO DISK?

  Again you can do LOAD and SAVE as I mentioned or use a handy little
utility I
  had discovered for the 64. This program will automatically LOAD each
file off
  of tape and subsequently SAVE it to disk and continue until you stop
it (or a
  disk error occurs when it attempts to save a file with the same name
as one
  already on disk, disk full, or end of tape.

HOW DO I HEAR/PLAY SOUND ON MY PET?

  Like many other microcomputers of the time the PET was not originally
designed
  to produce sound. A few methods of sound generation have been
developed but
  the most popular employs the use of parallel user port pin M which
generates....
  The latest 4000/8000 (large screen PET) motherboards have a built-in
piezo
  speaker and also have a bell sound accessible with a print: chr$(7)

   Sound Interface Diagrams here...

WHAT ARE THE BASIC COMMANDS FOR MY PET?
  For the most part the BASIC on the 64 is identical to the upgrade ROM
PETs and
  it only varys by a few commands and features between original and 4.0
ROMs.
  On the other hand the 'memory map', the locations you POKE numbers
into, vary
  quite a bit between ROM revisions. Memory Maps are available for all
the
  versions...

HOW DO I ACCESS THE PET's M/L MONITOR?

  The 'timy machine language monitor' (known as TIM to some) is
available on all
  PETs but the original ROM version. TIM is invoked by executing a BRK
  instruction by SYSing any memory location containing a zero (0), most
people
  enter SYS 1024, as it almost always contains a 0.

WHAT ARE THE COMMANDS FOR THE M/L MONITOR?
  G - Execute M/L: G programaddress (i.e. G 033C)
  L - Load: L "filename",dev (i.e. L "PACMAN",08)
  S - Save: S "filename",dev,startaddress,endaddress
             (i.e. S "FLASH ATTACK",02,027A,2000)
  R - Display Processor Registers
  X - Exit Tiny Mon
  M - Memory Display: M startaddress endaddress (i.e. M 0400 04A0)
  : - Modify Memory (supplied in memory dumps using the M command)
  ; - Modify Processor Registers (supplied in the processor register, P
command)

CAN I GET A BETTER M/L MONITOR FOR MY PET?

  Yes, there are two that I know of that are readily avaiable. The most
popular
  (and universal among the Commodore 8-bits) is Jim Butterfield's
Supermon.
  There are versions available for all ROM revisions including original
ROM PETS
  and offer a mini Assembler and Disassembler among other useful
memory/ML
  commands. The other, similar to Supermon is called Extramon. There
are other
  versions many of wich are commercial but I have little information on
them.


I HAVE A PROGRAM THAT CAN USE JOYSTICKS, WHERE CAN I GET/MAKE THEM?

  The PET was not initially designed for joysticks but a determined user
had
  devised a dual-joystick interface employing the parallel port. This
interface
  allows you to plug in standard Atari/Commodore compatible
joysticks....

  Interface Diagram Here

HOW COME MY PET CAN'T READ A TAPE FROM MY PLUS/4 OR COMMODORE 16 OR
VISA-VERSA?

  You are quite a collector, aren't you? When Commodore designed the
Plus/4 and
  Commodore 16 they broke alot of standards they had previously
established for
  their 8-bits (and fortunately went back to in the C128); besides the
plug
  designs, they changed the sound-frequency of the signals used to
record on
  tape. Though the the format is identical to the PET and the other
8-bits,
  the sound is only readable on the Plus/4 and Commodore 16. My
sggestion would
  be to record the program on disk (1541) and then read it on a 4040 or
2031, or
  copy them from the 1541 to tape using a 64 or 128.

WHAT IS THE 'KILLER POKE' AND SHOULD I WORRY ABOUT IT?

  This is THE POKE of computer lore, the command that WILL physically
break a
  computer! Of course other commands and methods are known that can
  potentially cause damage (usually to disks, hard drives or other
mechanical
  units), but this is the most notable mainly because it was a command
somewhat
  commonly used and it affects solid-state circuitry.

 History of 'the killer poke'
  When the first PETs (small 9" screen) models came out, the display
wasnt all
  that fast. It wasn't too long before someone learned they could
impove the
  character printing speed via a poke to location 59458; which would set
the
  video controller into a faster mode. It was a noticible improvement
of speed
  on programs using PRINT often, it was kind of like a free upgrade. It
was
  mentioned in a few publications and used in many programs that relied
on
  printing to the screen. I had learned of the poke through Cursor
Magazine,
  a monthly tape-based publication. They printed the command in one of
the
  'newsletter' flyers included with an issue which you could insert into
their
  game "joust" to make it play faster.

  Later on, when Commodore released the larger display (14") PETs, they
had
 improved display speed which made that POKE unnecessary. An
unfortunate side
  effect was that the POKE to 59458 still caused the already faster
controller
  to run even faster, in fact too-fast, which could result in damaging
the PETs
  video curcuitry when left running. I discovered it by accident after
our
  school received some large-screen 4016s. When active, the screen
starts to
  warp after about the third line and the display stops around the
fifth, the
  keyboard is also unresponsive. When a PET is in this mode, the only
solution
  is to turn it off, quickly! Fortunately none of the school's PETs
were
  damaged due to this POKE. Later Cursor Magazine published a 'fix'
that would
  allow older PETs to use the poke and keep the large-screen units from
frying.
  Unfortunately there are still many programs that do not have this fix.

 Prevention
  Make sure to check BASIC programs (especially games) when running them
on a
  large-screen PET and be ready with the power switch when you first run
it.
  I have usually found the 'killer poke' statement looking like this:

  POKE 59458,PEEK(59458)OR 32.

  The fix is to put an if-then conditional to determine if the poke is
needed
  for the PET running the program, here is the code:

  IF PEEK(50000) THEN POKE 59458,PEEK(59458)OR 32

CAN I HOOK UP AN EXTERNAL MONITOR TO MY PET?

  With the help of the following circuit you can get a composite singnal
from
  the user port...

  Insert Video Diagram here....

WHAT ARE THE PINOUTS SO I CAN BUILD AN IEEE-488 CABLE FOR MY PET TO MY
DRIVE.

WHERE CAN I GET SOFTWARE FOR MY PET?

WHERE CAN I GET CONNECTORS THAT FIT THE USER/IEEE-488 PORTS?

IS THERE A MODEM AVAILABLE FOR MY PET?

  I know of only one company that prosuced a modem and IEEE-488
interface, the
  company is TNW, and I think they also built the Commoodre 8010, an
acoustic
  modem for the PET. I have some notes on using the device but have
never
  actually seen one.

                Larry Anderson

-- 
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
    Visit our web page at: http://www.goldrush.com/~foxnhare/
Call our BBS (Silicon Realms BBS 300-2400 baud) at: (209) 754-1363
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Received on Mon Jul 21 1997 - 23:48:45 BST

This archive was generated by hypermail 2.3.0 : Fri Oct 10 2014 - 23:30:27 BST