This program is released as SHAREWARE and is therefore freely distributable, although you may not charge anyone for more than the actual cost of the distribution. The meaning of SHAREWARE is that, if you use a program regularly, you should strongly consider registering it. When you register a program, it means that you are actually buying it.
The installation and use of this product is done completely under your own responsibility. Under no circumstances should the producers of this product be held responsible for any damages or costs that this product in any way could cause you or your equipment.
Welcome to the world of CCS64. This a software emulator of the Commodore 64 computer. You may say this is not the first program trying to emulate the C64, but this is planned to be the finale C64 emulator. I have worked for several years to create this software, studying the C64 into its inner-most secrets. It should run perfectly with all games or demos.
As this is SHAREWARE, if you like and use this program regularly, you should register it. At the moment the register fee is 30 USD, or an equivalent amount in EURO, GBP, or SEK. Credit cards or cheques CANNOT be used. Please consult your local Post Office or bank for proper ways of sending money to Sweden.
To register, send your cash, together with your name, address, and/or e-mail address, to:
Per Håkan Sundell
Box 916
SE-501 10 BORÅS
SWEDEN
Or use the on-line registration utility, called Kagi, register.exe .
Or you can transfer the money directly to my bank account. Please pay via Euro-Giro or Swift to the Sundell Consulting account number 607 85 52-4 with Postgirot Bank AB (publ) S-105 06 Stockholm, Sweden. Swift address is: PGSI SESS.You can also register on-line using credit card at http://order.kagi.com/?QRN .
The product will be continously updated as long as there are any features or bugs that need to be fixed.
WIN32 version:
Supported operating systems:
- Windows 2000/XP/Vista/7 with DirectX v9.0 or later.
- Separate Release: Windows 98/ME with DirectX v9.0 or later.
Hardware requirements:
- Pentium processor or better.
- 16 Mb of internal memory or more.
- SVGA graphics or better.
Additional support:
- Windows compatible sound card.
- Windows compatible joystick.
- Windows compatible mouse.
- HardSID sound add-on card.
Emulation compatibility:
C64 main console:
- 99.9% CPU 6510, MMU 82S100. All imaginable programs should work. The emulation of the CPU is cycle-exact and considers all strange side-effects.
- 99.9% VIC 6566/6567/6569. All imaginable graphics modes and effect should work. The emulation of VIC is pixel-exact and considers all strange effects, both known and un-known, as it emulates the inner workings of the VIC chip.
- SID 6581/8581. Nearly perfect, regarding the digital core emulation. Approximated emulation regarding the filters and analog amplifier output. The emulation of SID is cycle-exact and constructs fully synthetic samples in 8- or 16-bit resolutions.
- 99.9% CIA 6526. All features of the I/O circuits. The emulation of CIA is cycle-exact.
- Keyboard. All keys, including Restore.
1541 disk drive:
- 99.9% CPU 6502. All imaginable programs should work. The emulation of CPU is cycle-exact and considers all strange side-effects.
- 99.9% VIA 6522. All features of the I/O circuits. The emulation of VIA is cycle-exact.
- 99% GCR Read/Write electronics. Handles different densities and all kind of syncronization patterns.
- Head step motor. Handles 84 half-tracks.
- Disk rotation motor.
C2N cassette recorder:
- Read/Write electronics. The pulse generation is cycle-exact.
- Tape motor.
- Play button sense.
Printer equipment:
- Printer at serial port with device number from 4 to 7 are emulated at kernel level. Normal file operation from BASIC also.
C64 expansion port equipment:
- 1764 RAM Expansion Unit (REU). Configurable in steps from 128 Kb to 16 Mb. Emulation is cycle-exact.
- ROM/RAM Cartridges with custom hardware. Besides from normal kind of cartridges, many other types of custom hardware are also emulated.
C64 joystick port equipment:
- Digital joystick. Supports up to three fire buttons.
- Mouse C1351.
- Paddles.
1541 disk drive expansion:
- 99% Parallel cable connected between the C64 user port and the 1541 disk drive.
- RAM Expansion. Configurable at any size at locations $2000-$C000.
Combinations:
- Up to four connected 1541 disk drives.
- Can combine REU and normal cartridges.
User Interface:
- Control menu.
- PAL TV emulation.
- Graphics display with DirectX in either exclusive mode (full-screen) or normal mode (windowed).
- Sound output for Windows-compatible sound card, in quality up to the maximum that the sound card can manage.
- Sound output for HardSID sound add-on card using a variety of sound mix-modes.
- Screen snap-shot, saves an image of the whole current C64 screen (maximum 504x312 pixels for PAL, 520x263 for NTSC) in 16-, 256- or 16777216-bit colors.
- Joystick emulation, both with keys and real PC joysticks. Also supports joystick adapter that allows the use of original C64 joysticks.
- Cartridge emulation using file format .CRT. Currently supporting normal (plain ROM/RAM without I/O) types of cartridge, and the following cartridges: Action Replay, KCS Power Cartridge, Final Cartridge I & III, Simons Basic, Ocean Games, Fun Play, Super Games, Atomic Power, Epyx Fastload, Westermann, Rex, C64 Game System, WarpSpeed, Dinamic, Zaxxon, Expert, Magic Desk, Super Snapshot 5, Comal 80, Magic Formel, Ross, Structured BASIC, and Dela-EP64.
- True tape emulation including turbo-tape and tape images (use originals on tape). Sorry but for the true tape images, it is a little hard to create them, as I use special hardware and program on my AMIGA computer, see the CCS64 Homepage. But there are programs available for PC developed by other people, that could use a commercial PC to C2N connector or a high-quality audio sampling connector.
- Pause mode, where you could single-step screen frames and look at inter-laced pictures.
- Freeze function, to save or re-store the status of the emulator.
- Machine code monitor. Inspect the C64 status internally at machine-code level.
- Making WAVe-files from C64 music.
- Speed control.
- Maximum 1541 speed, when enabled the emulator gives the emulation of the 1541 100% priority when it is actively reading/writing.
- Speed-o-meter, 1541 status, and C2N status display.
- Support for different ROM sets.
- Support for file images in formats: .PRG, .P00, .T64 .TAP, .D64, .G41, and .G64.
- Saving of AVI (Audio + Video) files from the user's session.
- Saving of WAV (Audio) files from the user's session.
- Multi-play over Internet of .T64, .D64, and .PRG files, using the Kaillera client.
Starting
WIN32 version:
To start the program just run the file named CCS.EXE.
Using
To do anything meaningful, you should got the textual menu system, by pressing the [F9] key. Some options are also implemented in the graphical menu system. The textual menu system is the main menu system and has all options within it (and is here-after referred to as 'the menu').
To use PC joysticks, you have to calibrate them first. Calibration is selected from the Options/Input sub-menu within the menu.
If you have any problems with the settings and want the factory-default settings back, just delete the 'C64.CFG' configuration file in your CCS64 installation folder, and it will be re-stored back to default values, next time you run CCS64.Menu
To use the menu, press the [F9] key, and then use the cursor keys to select different options. Use the [Right Cursor] or [Enter] keys to enter a choice. Use the [Escape] key to go back to the previous menu from within a sub-menu. Use the Up/Down Cursor keys to change the selection. Use the [Left/Right Cursor] keys to change a value. Where specified at the bottom, you could also use the Functions keys. When a selection can by applied, the [Enter] key can also be used.
In a directory listing you could also use the [Page Up/Down] keys to scroll faster through the listing. To get directly to the first file-name, which starts with a specific letter, you can press [CTRL] + [Letter].In some (sub-)menus, you could also select an option by pressing the first letter in the option name, like [S] for the option "Select Disk".
Keyboard
The keyboard is emulated almost like a real C64 keyboard and follows the C64 keyboard layout, except for these keys:
C64 key
Emulation key
C= (Commodore) [Left CTRL] RUN/STOP [Escape] RESTORE [Page Up]. Observe that you must HIT this key like on a real C64! CLR/HOME [Home] Arrow Up [Delete] Pound [Insert] Control [Tab] The user interface uses the following keys during the emulation session.
Key
Description
[F9] Control menu. Always continues from the sub-menu where you left. [F10] Control menu. [F11] Restores a frozen emulator state with the file-name "freeze.c64". [F12] Freezes (saves) the emulator state with the filename "freeze.c64". [Print Screen] Captures the screen as a 16-bit color image. [Scroll Lock] Reinitialize screen mode. Sometime Windows manages to distort colors when switching between programs. The user interface uses the following fast-keys during the emulation session and from the menu.
Fast-Key
Description
[ALT] + [8] Menu for 1541 device 8. Press twice for Status Menu. [ALT] + [9] Menu for 1541 device 9. Press twice for Status Menu. [ALT] + [0] Menu for 1541 device 10. Press twice for Status Menu. [ALT] + [+] Menu for 1541 device 11. Press twice for Status Menu. [ALT] + [1] Menu for Tape device 1. Press twice for Status Menu. [ALT] + [SHIFT] + [8] Status Menu for 1541 device 8. [ALT] + [SHIFT] + [9] Status Menu for 1541 device 9. [ALT] + [SHIFT] + [0] Status Menu for 1541 device 10. [ALT] + [SHIFT] + [+] Status Menu for 1541 device 11. [ALT] + [SHIFT] + [1] Status Menu for Tape device 1. [ALT] + [R] Re-set (Soft). [ALT] + [SHIFT] + [R] Re-set (Hard). [ALT] + [O] Options Menu. [ALT] + [V] Video Menu. [ALT] + [I] Input Menu. [ALT] + [M] MC (Machine Code) Monitor. [ALT] + [E] Special Menu. [ALT] + [S] Sound Menu. [ALT] + [C] Cartridge Menu. [ALT] + [T] State Menu. [ALT] + [F] Cartridge Freeze button. [ALT] + [P] Pause on/off. In pause mode, you can press [I] to see the next interlaced frame, or [N] to step between frames. [ALT] + [SHIFT] + [P] PAL TV filter emulation on/off. [ALT] + [Q/X] Quit. [ALT] + [F1] Save 16-bit color screen-shot. [ALT] + [SHIFT] + [F1] Save PAL/RGB color screen-shot. [ALT] + [F2] Save 256-bit color screen-shot. [ALT] + [F3] Toggle Speed (100 - 500 %). [ALT] + [F4] Quit. [ALT] + [F5] Insert next .D64/.G64 disk image into device 8. [ALT] + [F6] Insert previous .D64/.G64 disk image into device 8. [ALT] + [F7] Select next input device/mode in C64 game port 1. [ALT] + [F8] Select next input device/mode in C64 game port 2. [ALT] + [F10] Exchange (switch) input device/mode settings between C64 game port 1 and 2. [ALT] + [F11] Loads a frozen emulator state from selectable file-name. [ALT] + [F12] Saves a frozen emulator state to selectable file-name. [ALT] + [SHIFT] + [F2] Screen-shot current text menu display. [ALT] + [SHIFT] + [F3] Toggles the warp speed (maximum emulation speed) option. [ALT] + [K] Insert special C64 key-stroke. [ALT] + [SHIFT] + [S] Toggles the recording of sound to a WAV file. [ALT] + [SHIFT] + [V] Toggles the recording of video+sound to an AVI file. The default joystick emulation in keys is as follows:
C64 Joystick Port 1
Key
Up [Keypad %] Down [Keypad 5] Left [Keypad 7] Right [Keypad 9] Fire button 1 [Right Alt] ([Alt Gr]) Fire button 2 Fire button 3
C64 Joystick Port 2
Key
Up [Keypad 8] Down [Keypad 2] Left [Keypad 4] Right [Keypad 6] Fire button 1 [Right CTRL] Fire button 2 Fire button 3
Multi-Play Over Internet
From the main menu, enter the sub-menu of Device 1 or 1541 Device 8-11. Enter the directory that contains the .T64, .D64, or .PRG files that you want to be able to use for multi-play over Internet. Use the [Cursor Up/Down] keys to high-light the "." directory, then press the [F3] key. Using the Kaillera client, you can now connect to a server, and from there, either create a new game or join in to an existing one. Remember to not start your created game until enough people have joined. If you join an existing game, the game will start as soon as the game creator has started. To be able to join an existing game, you have to have started the multi-play menu from a directory which contains exactly the same file as the one that the game creator has.
During the multi-play session, no menu setting can be reached. Therefore, remember to set correct settings for input devices etcetera, before entering the multi-play menu. The multi-play session is ended by pressing either the [F9] or [F10] keys.
The following fast-keys work and are distributed to all players:
[ALT] + [F5] Insert next .D64/.G64 disk image into device 8. [ALT] + [F6] Insert previous .D64/.G64 disk image into device 8. The following fast-keys work and are only local to the current player:
[ALT] + [F7] Select next input device/mode in C64 game port 1. [ALT] + [F8] Select next input device/mode in C64 game port 2. [ALT] + [F10] Exchange (switch) input device/mode settings between C64 game port 1 and 2. Tape Device Noise - Raw-Tape (TAP) Files
You can listen to the tape drive noise that would be generated whilst loading raw-tape (TAP) files. This can be fun or just help pass the time away! Simply perform the following steps:
- In the Special... sub-menu, ensure that the C2N Noise option is set to On.
- Set the SID volume to the maximum. Type POKE 54296,15 from BASIC.
- Issue the BASIC LOAD command. Type LOAD from BASIC.
- Select the desired raw-tape (TAP) file, in the usual manner.
C64 Key-Strokes
This useful feature allows you to easily type anything that you could have typed on a real C64 keyboard. Many users find it hard sometimes to find a particular C64 character or C64 character combination, because these may reside on a completely different place on the PC keyboard. By pressing [ALT] + [K], then using the cursors keys, you can choose between every possible C64 key-stroke, press the [Enter] or [Space] keys, and then the key-stroke will be automatically typed. This saves you pressing long-winded combinations of keys on the PC keyboard, in order to emulate the pressing of a special key on the equivalent C64 keyboard.
Automatic Joystick Detection (Experimental)
This feature has nothing to do with real Joysticks. It is all about the problem that some C64 games use Joystick Port 1 and some others use Joystick Port 2. This feature tries to detect at run-time which Joystick Port the running program is currently using. In other words, you don’t have to keep pressing [ALT] + [F10], in order to switch Joystick Ports - this is done automatically. This feature also avoids the interference between joysticks and the keyboard on the C64 – if the game only uses the keyboard, joystick input (real or emulated) to the C64 is disabled. In the Special... sub-menu, ensure that the Joystick Detection option is set to On.
Additional Windows/Graphical Enhancements
The following additional enhancements have been made that take advantage specifically of the Windows/DirectX environment/functionality and other graphical techniques:
- The ability to select a custom re-fresh rate for graphics. This depends upon the support for this in your graphics card/driver.
- The ability to rotate the graphics through 90, 180, or 270 degrees.
- Various graphical filters - Scale (based upon Scale2x), Scan-Lines, and Anti-Alias.
- Drag-and-drop support for program files, which automatically performs a default load/run of the image file dragged-and-dropped. Only works in windowed mode.
- For any valid Commodore 64 file format that is associated with CCS64 in the Windows Registry, double-clicking on that Commodore 64 format file will automatically start it within CCS64.
MC (Machine Code) Monitor
The native MC Monitor can be invoked either from the Menu or by using the fast-key. As the monitor is native it doesn't affect the current emulated program in any way, all memory is untouched - unless you do a change yourself, that is. The monitor is exited with the Escape key. The following commands are supported:
Command syntax
Description
A <xxxx> <mnemonic> Assemble. Example:
A 1000 LDA #$09BANK [<xx>] Bank change 0-7 for different C64 MMU maps, 8-11 for the 1541 device. B Show break-points. BA <xxxx>[-<yyyy>] [RWX] [<xx>[-<yy>]] Adds a break-point at the specified address [xxxx] or within the specified address range [xxxx-yyyy]. It is triggered when the address [xxxx] or anywhere within the address range [xxx - yyyy] is Read from, Written to, or Executed. Default is any access triggers the break-point. Example:
BA D012 W F7-FF
- This will only trigger the break-point whenever a program writes a value between F7 to FF to address D012.BR <xx> Remove the specified break-point. Example:
BR 0
- This will remove the first break-point.C <xxxx> <yyyy> <zzzz> Compare memory. CD [<path>] Changes directory to the specified path or prints the current working directory if no path is specified. MS-DOS path-names can be used and Long path-names can be used (if the Long path-name is enclosed in " signs). The / sign can be used instead of the \ sign. D <xxxx> [<yyyy>] Dis-assemble. DIR [<path>] Displays the contents of the directory path specified or prints the contents of the current working directory if no path is specified. MS-DOS path-names can be used and Long path-names can be used (if the Long path-name is enclosed in " signs). The / sign can be used instead of the \ sign. Directory listings can be interrupted by pressing <ESC>. F <xxxx> <yyyy> <xx> ... Fill memory with Hex values or ASCII strings. Example:
F 1000 2000 "HELLO" 0D 0AHD <xxxx> <yyyy> <string> Hunt dis-assembly output textually for patterns. Wild-cards are expressed with *. Example:
HD A000 B000 "LDA*$*Y"H <xxxx> <yyyy> <xx> ... Hunt memory for Hex values, ASCII and wilds (XX). Example:
H 1000 2000 10 XX "LEVEL"I <xxxx> [<yyyy>] Interpret memory as ASCII. L "<filename>" <xxxx> [<yyyy>] Loads memory from binary file (not .prg). Example:
L "Hack" 0800 1000LP "<filename>" <xxxx> [<yyyy>] Loads memory from binary program file (.prg). Example:
LP "Hack.prg"M <xxxx> [<yyyy>] Shows memory as Hex values. P <xx> Printer re-direct. Re-directs output of next D or M commands to the specified printer device (4-7). Q <xxxx> Quick-traces until the PC reaches a certain address. R <reg> <xx..> ... Register. Changes the contents of the named CPU register. Example:
R PC FCE2 A 0
- This will set the PC to FCE2 and A to 0.S "<filename>" <xxxx> <yyyy> Saves memory to binary file (not .prg). Example:
S "Picture" 2000 3F40SP "<filename>" <xxxx> <yyyy> Saves memory to binary program file (.prg). Example:
SP "Demo.prg" 2000 3F40T <xxxx> <yyyy> <zzzz> Transfer memory. Copies the contents of a memory region into another. W [<xxxx>] Traces with single-step. X Exits monitor. : <xxxx> <xx> ... Changes memory from Hex values. , <xxxx> <xx> ... Changes memory from dis-assemble Hex values. * [<xx>] Bank change 0-7 for different C64 MMU maps, 8-11 for the 1541 device. ? <expression> Evaluate a numeric expression and display the result in decimal and hexa-decimal. The syntax of the expression is as follows:
expr ::= hexnr | '$' hexnr | '#' decnr | '-' expr | expr '+' expr | expr '-' expr | expr '*' expr | expr '/' expr | expr '%' expr | '(' expr ')'
Example:
?23+(56%7+55*(#23-7/3))Some of the commands that produce several lines of output, like the M command, can be manually continued by scrolling up/down with the [Cursor Up/Down] keys to the screen limits, or using the [Page Up/Down] keys. To get a free line to enter a new command, just press the [Enter] key.
You can also get up on-line help and status page by pressing the function keys [F1] to [F4].
[F1] - Help
[F2] - VIC Status
[F3] - CIA1 Status
[F4] - CIA2 StatusYou can swap to one of the 8 different session screens by pressing the [ALT] key together with one of the keys [1] to [8].
[ALT] + [1] - Session 1
[ALT] + [2] - Session 2
...
[ALT] + [8] - Session 8Command-Line Options
To get a syntax description of the current available command-line options, just run the program from a command-window with the argument "?". Example:
CCS ?
This will probably give an output like: CCS [filename.{prg/p00/p01/t64/d64/g41/tap/crt}[,index]] [-cfg filename] [-fastload] [-normalload] [-autorun] [-manualrun] [-window] [-hardsid id]
Explanation:
[] - means that this option is optional and has not to be given.
{opt1,opt2,...} - means one of the options.
filename.{prg/ p00/ p01/ t64/ d64/ g41/ tap/ crt}[,index] A file-name that describes a disk/tape/cartridge image to be loaded at the start of CCS64. The optional index tells which individual file inside of a disk/tape images that should be loaded (default is the first one).
Example: mygame.d64,3-cfg filename Change the file-name of the config file to be used (default is c64.cfg). -fastload Turns on the fast-load feature when loading from disk or tape file images. Can be less accurate. -normalload Turns on the most accurate emulation of the disk drive when loading from disk or tape file images. -autorun Automatically starts the program that are loaded at the start of CCS64. -manualrun Do not start the program that are loaded at the start of CCS64. -window Force the emulator to use the windowed mode of the DirectX graphics display. -hardsid id Select the correct id for the HardSID sound card. Example:
CCS C:\TheBestGames.D64,2 -window -autorun
- This will run CCS64 in windowed mode, and select the disk file image named TheBestGames.D64 as the current inserted floppy disk into disk drive with device 8, and then load the 2nd file from the directory of that floppy disk, and automatically start it.Configuration
To change your configuration you could either use the program menu or edit the configuration file C64.CFG manually.
Parameter name
Description
$RGBCOLOR0=
$RGBCOLOR1=
...
$RGBCOLOR15=The RGB color values that should be used for emulating the C64 colors.
$SCREENMODE= If you change to a mode that doesn't work (or look nice) on your equipment, immediately (this is VERY important, or your equipment may be damaged) quit CCS64. Screen modes are detected dynamically and are hardware/driver dependent. $WINDOWSIZEX= The width of the 'Window 1x' window in pixels, when CCS64 is run in Windowed mode. This value, once saved, will be retained.
$WINDOWSIZEY= The height of the 'Window 1x' window in pixels, when CCS64 is run in Windowed mode. This value, once saved, will be retained.
$SAMPLEBITS= 16 - Tries to use 16 bits samples, otherwise uses 8.
8 - 8 bits samples.$SAMPLEFREQ= 11111, 22222, 45454, or any other value, if your sound card can manage it. $SOUNDENABLE= YES - Sound output on.
NO - Sound output off.$LOADPATH= The path where you have your C64 games and demos. $SHIFTKEYAUTO= LEFT - Use the key, in order to emulate the C64 cursor up/left keys.
RIGHT - Use thekey, in order to emulate the C64 cursor up/left keys. Common Problems
Sometimes special games on .D64 images will behave badly, when you use the 'Run (Fast)' or 'Boot (Fast)' feature (this is default). To solve these kind of problems, use the 'Run (Normal)' or 'Boot (Normal)' features instead; otherwise, perform the following:
1) Re-set the C64.
2) Enter the 1541 Device 8 menu, high-light the correct .D64, the select the Insert Disk option.
3) From the BASIC type:
LOAD"*",8,1
If you do not have a CD-ROM in your CD-ROM drive or a floppy disk in your floppy disk drive, the emulator will hang, if you select this device in the menu. So please, always be sure that you have an initialized (sometimes you have to wait some seconds after instering it) disk in your drive, before trying to use that device from within the menu.
The option Load As Turbo-Tape should only be used when you get a message like "PRESS PLAY ON TAPE" on your C64-screen, and you're sure about that the second part should be loaded as turbo-tape. Otherwise, nothing useful will happen.
Note that when your sampling the C64's audio output to a .WAV file, the sample rate and bit resolution will be the same as selected in the C64.CFG file.
Note that on a German keyboard, the keys [Y] and [Z] will have swapped, when using under CCS64.
When you use the Screen-Shot function, the image will be saved as CCS0.BMP, CCS1.BMP, CCS2.BMP, and so on.
When you use the Sound Sampling function, the audio file will be saved as CCS0.WAV, CCS1.WAV, CCS2.WAV, and so on.
When you use the Video Sampling function, the video file will be saved as CCS0.AVI, CCS1.AVI, CCS2.AVI, and so on.
NOTE: AVI files are un-compressed, i.e. very large; therefore they should be re-compressed, using video editing software, prior to further distribution.
When you use the printer emulation, the output will be saved as PRINTER4.TXT, PRINTER5.TXT, and so on.
When you use the HardSID support, the "Channels 1-4 Burst" and "Channels 1-4 Buffered" modes are recommended for faster CPUs; the "Channels 1-3 Burst & Channel 4 Emulated" mode is recommended for slower CPUs.
If you have some problems with the configuration of CCS64, and want to go back to the factory-default settings, just delete the C64.CFG file from within the CCS64 installation directory.
Using the emulator under Windows with old and out-dated sound drivers can sometimes cause the system to hang or for there to be no sound at all.
The C64 and 1541 ROMs are (C) Commodore Business Machines. If you don't want these original ROMs, you should replace the files KERNAL.ROM, BASIC.ROM, C1541.ROM, and CHAR.ROM with alternative ROM images.
PAL TV filter emulation by John 'Graham' Selck and Philip 'Pepto' Timmermann.
SID filter emulation contributed by Michael Kleps.
CCS64 Keyboard Layout (PDF) document by Stilianos 'Stello' Doussis.
If you have any emulation problems or suggestions, please contact me. Note that I get a lot of e-mail, so you cannot count on me reply to your message. But, of course, I will read it.
E-Mail: phs@ccs64.com
CCS64 Homepage: http://www.ccs64.com
Computerbrains Homepage: http://www.computerbrains.com
Note that these addresses may change in the future, so you can find my new addresses by searching the Internet.