VIC 20 Emulator
Pfau Zeh for Linux
Documentation
Version 0.8 (24.11.97)
(C) 1998 Arne Bockholdt
This documentation should help you to use the VIC 20 Emulator Pfau Zeh for Linux. You can read it with all available WWW Browsers. To display the included picture, you need a graphical browser like Netscape etc.
Pfau Zeh for Linux is :
PFAU ZEH FOR LINUX IS DISTRIBUTED "AS IS". NO WARRANTY OF ANY KIND IS EXPRESSED OR IMPLIED. YOU USE AT YOUR OWN RISK. THE AUTHOR WILL NOT BE LIABLE FOR DATA LOSS, DAMAGES, LOSS OF PROFITS OR ANY OTHER KIND OF LOSS WHILE USING OR MISUSING THIS SOFTWARE.
Arne Bockholdt
Table of contents :
What's new in version 0.8 :
Requirements to run Pfau Zeh for Linux
Hardware :
Software :
Installation
First of all, please extract the Pfau Zeh
for Linux package with
. It will create a directory structure like this :
In the ROMS/ directors there're the following
ROM files: :
PAL Kernel ROM, 8 KB
NTSC Kernel ROM, 8 KB
Character generator ROM, 4 KB
Basic interpreter ROM, 8 KB
You can find these ROM sets on this FTP Server
:
The ROMs are copyrighted by Commodore Business Machines.
That's all ! Please compile your Linux kernel with sound driver enabled to get sound output and install the Linux joystick module to control the VIC 20 games with a real joystick.
Command line options
Pfau Zeh for Linux got the following command line options :
Displays a help text with command line parameters and keys
$a000-$bfff will be RAM instead of ROM (default : $a000-$bfff is ROM)
Using defaults instead of settings in configuration file
Disables sound emulation (default : Sound emulation is enabled)
Enables television sound emulation (default : TV emulation is disabled)
Enables joystick emulation with /dev/js0 (default : joystick emulation with key control)
Enables the scaling option for the Pfau Zeh for Linux window. You need a screen resolution >= 800x600 and a very fast computer.
When you use this command line parameter all startup messages will be displayed. Only necessary if the startup of Pfau Zeh for Linux fails.
load CRT file to address $a000 (8 kb file) and $6000 (16 kb file)
load game to address $x000
loads game to address in file header (default : $a000)
You can specify more than one image at the command line. All images will be loaded into VIC memory.
Menu options
The Pfau Zeh for Linux menus gives you the possibility to control Pfau Zeh for Linux in various ways. Here is a short description of the menus and their functions :
File menu :
This is the only way to load or save your BASIC programs. You must enter the name of the file or choose the file in the file selector dialog. The file will be checked for the right memory expansion for this program. If you got the wrong memory expansion inserted you must reset the VIC and load the program again. Now you can type "RUN" to start the program ;-)
To load a BASIC program you must wait till the VIC has finished his "POST" and the VIC starting screen has been displayed !
Default :
Hot Keys :
This is the second way to insert a cartridge into the VIC 20. It uses the same code to find out the starting address like the command line. To start a cartridge with auto-start sequence please reset the VIC !
Default :
Hot Keys :
When you want to start another cart or if you want to enter a BASIC program, you must remove the inserted cartridges. You can manage this with this option. All inserted carts will be removed and the VIC 20 will be resetted.
Default :
Hot Keys :
Pfau Zeh for Linux uses a configuration file for your settings called "pfauzeh.rc". If you choose this option your current settings will be saved to this file and will be taken from this file with every start of Pfau Zeh for Linux. Use "-nocfg" to override this.
Default :
Hot Keys :
If you want to turn of the VIC 20, please turn this switch off.
Default :
Hot Keys :
Options menu :
Memory ... :
This is the amount of expansion memory you want
to give your VIC 20. Some programs need a special amount
of memory. Unexpanded means the standard 3.5 kb RAM.
The emulator will be resetted when you
change this setting.
Default :
Hot keys :
This is the same setting as the command line parameter "-ram". With this setting you can declare the $a000-$bfff VIC 20 memory locations as RAM instead of ROM. At least one game (Amidar) needs this because its cartridge seems to have RAM memory.
Default :
Hot Key :
Speed ... :
This setting tells Pfau Zeh for Linux how often it should render a new frame. A real VIC 20 displays 50 frames per second (PAL) or 60 fps (NTSC). This is the setting 1/1. Rendering frames costs very much CPU power, so you should lower the rate if you find that the VIC 20 runs to slow. There should be no visible difference with 1/2 frame rate compared with 1/1 but it needs nearly half the CPU-time !
Default :
Hot keys :
This is a delay value. For fast computers (>166 MHz) it is necessary to slow down Pfau Zeh for Linux. The higher this value is, the slower the emulation is. Please set the frame rate to 1/1 first, instead of delaying the emulation.
Default :
Hot Key :
Video ... :
This is a very important setting to run some programs successfully. Please refer to the video emulation section for further details. The emulator will reset when you change this setting.
Default :
Hot Key :
You can choose how much VIC 20 lines the video emulation don't display at the top of the screen. Some programs need this setting set to 9 lines to see the whole screen. The emulator will reset when you change this setting.
Default :
Hot Key :
Reset VIC 20... :
To apply some settings, start a cartridge or to start over with the VIC you must reset the VIC. It's a cold start, all data in the VIC memory gets lost (except carts in $a000-$bfff)
Default :
Hot Keys :
File format support
Here's a list of supported file formats :
Type :
Size :
Address :
How to load :
Type :
Size :
Address :
How to load :
Type :
Size :
Address :
How to load :
Type :
Size :
Address :
How to load :
Type :
Size :
Address :
How to load :
Type :
Size :
Address :
How to load :
Not supported are :
Video emulation
There are two different video modes for two different TV systems. The german VC 20 used the PAL system and the american VIC 20 used the NTSC system.
You can choose the emulated video system with
the Video timing option in the Option/Video menu. Some
games needs the PAL timing, others the NTSC timing. Here's a
small table with a comparison between this two timings.
Timing : | PAL | NTSC |
Lines per frame : | 312 | 261 |
Frame rate : | 50 | 60 |
Screen width : | 233 | 210 |
Screen height : | 284(9 lines), 265 (28 lines) | 233 (9 lines), 214 (28 lines) |
The position of the output screen in the window
depends from the video timing and the sound is different too. If
the position of the frame in the window isn't correct with your
program, try the other video mode!
The kernel ROM file will be reloaded when you
change the video timing !
You can double the height and the width of the Pfau Zeh window with the "-highres" parameter but it needs 4 times the CPU time to display one frame. You need a very fast computer to use this option...
Sound emulation
The VIC 20 produces 3 melodic and 1 noise voice. There's a volume control for this voices too. Pfau Zeh for Linux emulates all of this sound features with help of the DSP on your sound card. This sounds much better compared with FM synthesis or something like that but it costs much more CPU time to produce this samples.
Pfau Zeh for Linux renders 8 Bit mono samples with 44.1 khz sampling rate.
If you want to hear this sounds you must have a
sound card with Linux driver in the Linux kernel. All PC sound
cards should be able to play this kind of samples.
If you don't have a sound card you can disable
the sound output with the
command line parameter, but Pfau Zeh for Linux tests the presence of a sound card each time it starts, so there should be no need for this option...
If you want to get a more realistic sound output use the
command line parameter. You will get a smoother
sound with some noise like on a real VIC 20 with an old TV.
Please mail me your comments about this "feature" !!!!
The TV sound emulation needs much more CPU time as
the normal sound emulation because it renders two more voices and
uses another wave form for the melodic voices.
Keyboard emulation
The VIC 20 has got a nice
keyboard very similar to a PC keyboard. Here's a picture of the
VIC 20.
On this picture you see the differences between the VIC keyboard and the keys Pfau Zeh for Linux uses for the emulation. Here's a list :
RUN-STOP = TAB key
Control = Left Control key
CBM = Left ALT key
Home = Home (Pos 1) Key
£ = Insert Key
Cursor Down = Page Down Key
Cursor Right = Page Up Key
Arrow Up = End Key
Restore = F12
Remember : The keys F2, F4, F6 and F8 are accessed by pressing F1, F3, F5 and F7 with one of the shift keys !!!!
Pfau Zeh for Linux is developed for US-layout keyboards, so if you use another one (e.g. german ;-) ) you can't use all keys.
Joystick emulation
You can emulate the VIC 20 Joystick in two different ways :
-joy
option. You must center the joystick when you start the emulator because Pfau Zeh for Linux tries to calibrate it for its use. This option disables the keyboard joystick emulation !
Fire :
Right control key
Directions :
Cursor keys or Cursor keys on Numblock with Numlock enabled
Paddles emulation
Pfau Zeh for Linux got a simple paddles emulation. Some games needs this controller type. Use the following keys for the paddles :
Left : Numblock end (1)
Right : Numblock page down (3)
Fire : Cursor key left
Left : Numblock pos1 (7)
Right : Numblock page up ( 9)
Fire : Cursor key right
To use the directions of the paddles you need to numlock the number block ! The fire keys are the same as the left/right directions of the keyboard joystick emulation.
Light Pen emulation
The Light pen emulation is implemented with
help of the mouse. You can choose the desired position on the
Pfau Zeh for Linux screen with the mouse cursor and press any
button of the mouse.
Position : Mouse
Fire : any mouse button
There aren't many programs for the VIC 20 that use a light pen. The only one I know is "Commodore Artist". It seems to work well in NTSC mode. If you find other programs with light pen control, please send them to me !!!!!!
Comparison Pfau Zeh for Linux => VIC 20
This section should inform you about the "quality" of Pfau Zeh for Linux. It tells you which parts of a real VIC 20 are emulated from Pfau Zeh for Linux.
6502 :
- Legal opcodes
- Illegal opcodes
- Timings
- Interrupt, NMI
- should be 100 % !
VIA 1:
- Ports A/B
- DDRs
- ACR
- PCR
- IRQ
- Timer 1/2 incl. latches
- Joystick
- Restore key
VIA 2
- Ports A/B
- DDRs
- PCR
- ACR
- IRQ
- Timer 1/2 incl. latches
- Keyboard
- Joystick
VIC
- All graphic modes
- 16 Colors
- Screen origin registers
- TV raster beam
- Paddles
- Light pen
- Sound (3 melodic + 1 noise + volume)
- Inverted mode
- etc.
Misc.
- memory expansions
- PAL/NTSC version of VIC 20
- VIC 20 Keyboard
- Joystick
- Light Pen
- Paddles
- Reset button
- etc
VIA 1
- Shift register
- Parts of RS 232 / User Port
- Parts of Tape control
VIA 2
- Shift register
- Parts of serial interface
- Parts of Tape control
VIC
- Interlaced mode (NTSC only)
- NTSC first line at the bottom of the screen
Misc.
- Tape emulation
- Disc emulation
To do...
Here's the list of things that I plan to
implement / enhance / change in Pfau Zeh for Linux for the
future :
- speed up code
Compatibility
Here're the programs I've tested with the current version of Pfau Zeh for Linux and the results I get. If you've got corrections or additions, please mail them to me. Thank you !
These programs should work fine with Pfau Zeh for Linux :
Name of tested program : | Comment : |
AE | |
Aggressor | |
Alien Blitz | |
Alien Side-Step | |
Amidar | use -ram parameter and PAL timing |
Andes Attack | |
Andromeda | |
Ape Escape | |
Apple Panic | |
Arachnoid | |
Arrow of Death | |
Artillery Duel | |
Astro Blitz | |
Astro Panic | |
Atlantis | needs NTSC timing |
Attack of the mutant camels | |
Avenger | |
Bandits | needs NTSC timing |
Battle Zone | |
Bewitched | ROM version needs SYS 40985 |
Black Hole | |
Buck Rogers | needs NTSC timing |
Bumper Bash | |
Car Race | |
Catch a Snatch | |
Caterpilla | |
Cave in | |
Centipede | |
Chariot Race | |
Choplifter | |
Chuck Norris Superkicks | |
Cloudburst | needs PAL timing |
Clowns | |
Commodore Artist | needs NTSC timing |
Computer War | |
Congo Bongo | |
Cosmic Cruncher | |
Cosmic Firebirds | |
Cosmic Jailbreak | |
Crawler | |
Creepy Corridors | |
Crossfire | |
Dancing Bear | |
Dark Dungeons | |
Deadly Duck | |
Defender | |
Dig Dug | |
Donkey Kong | |
Doolhof | |
ET | needs SYS 43762 from BASIC |
Face Maker | |
Fast Eddie | |
Final Orbit | needs NTSC timing |
Flightpath 737 | |
Football Manager | |
Forth Encounter | |
Fort Knox | |
Frogger | |
Galactic Abductors | |
Galaxian | |
Garden Wars | |
Ghost Manors | needs NTSC timing |
Gold Fever | |
Gorf | |
Grandmaster | |
Gridder | |
Gridrunner | |
Guardian | |
Hellgate | |
Hesmon | |
Heswriter | |
Home Babysitter | |
ICBM | |
In the Chips | |
Jawbreaker | |
Jawbreaker II | |
Jelly Monster | use the "fixed" version from ftp.funet.fi |
JetPac | |
Jungle Hunt | |
Jupiter Defender | |
Kids on Keys | |
K-Razy Antiks | |
Loderunner | |
Lunar Leeper | |
Mad Boogie | |
Mastertype | |
Matrix | |
Menagerie | |
Meteors | |
Mets | |
Miner 2049'er | |
Mole Attack | |
Money Wars | needs NTSC timing |
Monster Maze | |
Moon Patrol | |
Moons of Jupiter | |
Mosquito Infestation | needs PAL timing |
Mountain King | |
Ms. Pac Man | |
Munchman | |
Music Composer | |
Mutant Herd | |
Number Nabber Shape Grabber | |
Omega Race | |
Orbis | |
Outworld | |
Pac Man | |
Paratrooper | |
Perils of Willy | |
Personal Finance | |
Pharaohs Curse | |
Pinball | |
Pipes | |
Poker | |
Polaris | |
Pole Position | needs NTSC timing |
Predator | |
Princess and Frog | needs NTSC timing |
Programmers Aid | Start Pfau Zeh for Linux, choose 24 KB memory expansion, reset VIC, load cart, don't reset !, type SYS 28681 |
Protector | |
Q-Bert | |
Quackers | needs PAL timing |
Radar Rat Race | |
Rat Hotel | |
Renaissance | |
River Rescue | my first game on a VIC ! |
Road Race | |
Robin Hood | |
Robotron | |
Sargon II | |
Satellite Patrol | |
Satellites and Meteorites | |
Scorpion | |
Sea Wolve | |
Seeschlacht | |
Serpentine | |
Sir Lancelot | |
Skibberen | |
Skramble | seems to use illegal opcodes ! |
Sky Blazer | |
Snake Byte | |
Speed Math | |
Spiders of Mars | |
Spike's Peak | needs NTSC timing |
Star Battle | |
Star Patrol | |
Star Post | needs NTSC timing |
Star Trek | |
Sub Chase | |
Super Amok | |
Synthsong | |
Synthsound | |
Tank Atak | |
Terraguard | needs PAL timing |
Threshold | |
Thriller | needs PAL timing |
Titan | |
Tomarc the Barbarian | |
Tooth Invaders | needs PAL timing |
Topper | needs NTSC timing |
Tower of Evil | |
Trashman | |
Traxx | needs PAL timing |
Tron | |
Turmoil | needs NTSC timing |
Type Attack | |
VIC Blitz | |
VIC Boogie | |
VIC Chess | |
VIC Color Test | Load BASIC, reset VIC |
VIC Graph | |
VIC Super Lander | |
VIC Super Slot | |
Video Man | |
Video Vermin | |
Wacky Waiters | |
Wordcraft | needs >= 8 kb memory expansion |
World at War | |
Xeno II | needs PAL timing |
These programs have some problems with Pfau Zeh for Linux :
Arcadia | needs PAL timing, game timer seems too fast |
Bongo | needs PAL timing, problems with keyboard emulation |
Demon Attack | needs PAL timing, minor graphic problems |
Dragonfire | needs PAL timing, minor graphic problems |
Krell | problems with keyboard emulation, use joystick instead |
Meteor Run | Seems to work correct, I don't know the original |
Robot Panic | seems to have some timing problems ??? |
Star Defence | needs PAL timing, start screen is invisible, press fire button to start |
These programs don't work with Pfau Zeh for Linux :
Cannonball Blitz | program jumps into empty RAM, maybe a corrupted image file |
Plasma from VVV (PAL timing) | Pfau Zeh for Linux got serious problems with this but NTSC version seems to work |
Questions and answers :
Question : | Answer : |
The screen position of a program isn't right. What is wrong ? | Perhaps you use the wrong video timing for this program. Please change this setting in the Video menu. |
I can't run Pfau Zeh for Linux and I get only a message "failed" at startup. Why ? | Use the "-verbose" parameter to see why Pfau Zeh for Linux fails to start. |
Program XXXX seems not to work correctly with Pfau Zeh. What can I do ? | Have a look at the compatibility list in this file for a comment to this game. Change the video timing. If this doesn't help, please send me the game for testing |
Pfau Zeh for Linux fails when it tried to allocate colors. Why? | You run another program which uses much colors. Please close it first and try again. |
Pfau Zeh for Linux is too fast. What can I do ? | Set the frame rate to a higher value or/and increase the slow down delay. Use a higher resolution with "-highres" parameter |
Pfau Zeh for Linux is too slow. What can I do ? | Set the frame rate to a lower value and set the slow down delay to 0. Use the normal resolution. You can disable the sound with -nosound parameter or the -tvsound option. You should use the key joystick control because it's faster than the /dev/js0 joystick emulation. And last but not least buy a faster computer ;-) |
Where can I find the joystick driver for Linux ? | Try this URL
:
I think the latest version is 0.8.0. There's a patch for kernel versions 2.1.X too. |
Will there be ports of Pfau Zeh for Linux for other OS ? | A Win32 port is available. It runs with Win95/98 or WinNT. Perhaps there will be other ports, too. If you want to port it to other operating systems feel free to contact me ! |
Where can I find games or tools ? | Download them from : |
What the hell does Pfau Zeh for Linux means ? | Well, a good question. At the very beginning it was a joke name for my project. The german VIC 20 was called VC 20, I think the reason for that name was the similarity to VW (Volkswagen, a german car manufacturer), the VC 20 should be the VolksComputer, a computer for everybody (like the Volkswagen, a car for everybody). You pronounce the "V" in german like "Pfau" and the "C" like "Zeh". Pfau Zeh simply means "VC" like the german name for the VIC ! |
Reporting bugs, problems, comments and mailing list:
If you got problems to run Pfau Zeh for Linux or if you find any bugs in it, please contact me and send me a mail to my address :
Any kind of comments are welcome, too. If you find a program which doesn't work with Pfau Zeh for Linux or got any glitches, please send it to me. Thank you in advance !
There's also a mailing list where I announce new version of Pfau Zeh for Linux. Please send me an email and I will put you on the list.
New releases and Pfau Zeh for Linux home page:
You can find new releases on the Pfau Zeh for Linux home page at :
http://www.classicgaming.com/pfauzeh
If you want to be notified if a new version has been released I can put you on the Pfau Zeh for Linux Mailing list. For further information see above.
History :
Pfau Zeh is a project I started at the 1st. October 1996. It's the first emulator project I've made and the first program for X-Windows, too
The Commodore VC 20 (the german version of the
VIC) was the first home computer I've seen in my life. I've
played "River Rescue" on the VIC of a good friend.
That's one of the main reasons for me to develop this emulator.
And I'm very happy to see that River Rescue runs on Pfau Zeh,
it's a very nostalgic feeling, my first computer game ever...
In the past Pfau Zeh was called Pfau Zeh
(ASP) but this is obsolete now...
Well, here's the changes since version 0.1beta :
V0.8, build date 24.11.97
V0.7, build date 29.07.97
V0.6, build date 07.07.97
V0.55, build date 28.05.97
V0.5, build date 12.04.97
V0.41 release, build date 24.3.97
V0.4 release, build date 24.3.97
6502 :
VIA :
VIC :
Misc. :
V0.4 beta1, build date 15.3.97
V0.3 release, build date 9.3.97
V0.3 beta2, build date 10.2.97
V0.3 beta1, build date 2.2.97
V0.2 release, build date 30.1.97
V0.2 beta2, build date 22.1.97
V0.2 beta1, build date 12.1.97
V0.1 release, build date 8.1.97
V0.1 beta4, build date 16.12.96
V0.1 beta3, build date 13.12.96
V0.1 beta2, Build date 27.11.96
Thanks to...
I would like to thank for their help on this
project :
Author of the VIC 20 emulator V20 for DOS for lots of help and for his great documentation.
For his very accurate VIA/VIC/6502 documentation, some suggestions to improve Pfau Zeh and for bug reporting.
Author of Thriller for his permission to include Thriller in the Pfau Zeh package and for his beta testing
Author of many emulators, in my case I must
thank him for his DASM (6502 disassembler) program. It
helps me debugging my emulator.
For his nice 6510 test suite. I've tested my
6502 emulation with it. Unfortunately he stopped the
developing of his PC64 emulator...
I've taken the VIC 20 picture from her VIC 20
Page. URL : The World of JAZ
Have a lot of nostalgic feelings !
Pfau Zeh for Linux V0.8 rev.2 Copyright 19987 Arne Bockholdt pfauzeh@classicgaming.com