NAME
petcat - convert and display PETSCII or BASIC files
SYNOPSIS
petcat [ -text | -<version> | -w<version> | -k<version> ] [ -l hexaddr ] [ -c | -nc ] [ -o outfile ] [ -skip offset ] [ -- ] [ file list ]
DESCRIPTION
petcat
converts input files from the most common CBM file formats
into printable ASCII form and writes to standard output. The
type of input file is determined automatically, if possible,
and appropriate conversion is performed. Since a few of the
BASIC versions have keywords defined differently, the right
conversion has to be selected on the command line. Where
such confusion cannot happen, automatical recognition of
input is used. This is useful when expanding several files
at once or if the program contains code for several
versions, selected according to the hardware; eg.
Simons’ Basic vs. Basic 7.0.
Please note that each input file is converted individually,
but the output is produced as continuous flow. Also, all
input files that are read trough a pipe, are concatenated
before they reach petcat so any machine language
section in between the BASIC programs causes all consecutive
files to be taken as one machine language program. For that
reason files containing machine language parts attached to
them must be input separately, otherwise the remaining files
won’t be expanded. petcat recognizes normal
PETSCII text files (SEQ), program files containing directory
listing, and BASIC programs. Both the original CBM files and
files with a PC64 ’P00’ header are accepted. The
different BASIC versions are not automatically
distinquished, but standard C64 and C128 versions are used
as default.
In order to tokenize a text file into a BASIC binary file
the desired BASIC version must be exclusively specified so
that correct set of keywords will be used. If line numbers
are not found in the beginning of each program line, the
cruncher creates the missing line numbers by adding 2 to the
numeric value of previous one. Since also line numbers
deviating from strictly ascendind order are accepted, care
must be taken when editing such a program on a C64
again.
Clarification
Since CBM programs usually contain unprintable characters, a
way to specify them has been created. Normally,
petcat uses the same codes as most printers, but for
tokenizing programs scanned from magazines, it can use the
following convention:
{DOWN} |
stands for single control code |
|||
{6 RIGHT} |
contains amout of consecutive codes |
List of valid mnemonics:
{wht} {dish} {ensh} {swlc} {down} {rvon} {home} {del} {esc} {red} {rght} {grn} {blu} {orng} {F1} {F3} {F5} {F7} {F2} {F4} {F6} {F8} {sret} {swuc} {blk} {up} {rvof} {clr} {inst} {brn} {lred} {gry1} {gry2} {lgrn} {lblu} {gry3} {pur} {left} {yel} {cyn}
List of alternate mnemonics:
{wht} {up/lo lock on} {up/lo lock off} {return} {lower case} {down} {rvs on} {home} {delete} {esc} {red} {right} {grn} {blu} {orange} {f1} {f3} {f5} {f7} {f2} {f4} {f6} {f8} {shift return} {upper case} {blk} {up} {rvs off} {clr} {insert} {brown} {lt red} {grey1} {grey2} {lt green} {lt blue} {grey3} {pur} {left} {yel} {cyn}
OPTIONS
-l load_address
Specify load_address (in hex) for tokenized program.
-c |
Causes petcat to interpret also control characters. By default, these strings are the same as used by printers. However, an alternate set is attempted whenever none within the primary set matches. Default is ON, unless text mode is selected. | ||
-nc |
Suppress control codes. | ||
-f |
Force overwrite of existing output file. Default true. | ||
-h |
Print filename and start address for each Basic file expanded. Default true. | ||
-nh |
Suppress file header in printout. | ||
-o file |
Redirect output to the specified file. This option overrules -h. When file has extension ’.P00’ and also -w option is specified, the PC64 file header is written automatically. .P00 file cannot be written on stdout but to a file only. |
-skip offset
Skip offset bytes in the beginning of input file.
-text |
Force text mode even if the input file looks like a Basic program, i.e. the first byte in file is 01. |
-k<version>
Just prints all valid keywords for the specified Basic version. Without any version, all names of supported BASIC versions are listed instead.
-w<version>
Tokenise program listing using keywords set from the specified Basic version.
-<version>
Changes the set of keywords for the specified Basic version and expands tokenized input file. Without this option petcat uses V7.0 keywords in expanding.
Versions
1 |
Basic 1.0 |
|||
2 |
Basic 2.0 |
|||
a |
Basic 2.0 with AtBasic |
|||
t |
Basic 2.0 with Turtle Basic |
|||
super su se |
Basic 2.0 with Super Expander |
|||
simon si |
Basic 2.0 and Simons’ Basic |
|||
speech sp |
Basic 2.0 with Speech Basic v2.7 |
|||
4 |
Basic 4.0 |
|||
4e |
Basic 4.0 Extension |
|||
3 |
Basic 3.5 |
|||
7 |
Basic 7.0 |
|||
10 |
Basic 10.0 |
RESTRICTIONS
Line numbers must be less than 65536. Maximum line length is 255 bytes. Leading white space is ignored. Blank lines and line numbers not followed by any text are rejected. While expanding, Machine Language section concatenated to a BASIC program is ignored. While crunching, control codes that appear outside quotes are not interpreted. The low order byte of load address must be "01".
SEE ALSO
cat(1), tr(1), sed(1), fvcbm(1), petlp(1), cbmconvert(1), iso2asc(1), ascii(7), CBM Tokens Documentation, CBM’s Programmers’ Reference Guide series
AUTHOR
Jouko Valta (jopi [AT] stekt.fi)
Thanks to
Frederik Ekman
(d91fe [AT] lelle.se)
Marko Mäkelä (msmakela [AT] nic.fi)
Russell Alphey (r.alphey [AT] dce.au)
André Fachat (a.fachat [AT] physik.de)
Onno Ebbinge (ebbin200 [AT] hio.NL)
Frank Kontros (jeno [AT] kontr.ua)