Code Monkey home page Code Monkey logo

xcbm's Introduction

-------------------------------------------------------------------------------

             README File for 'xcbm', the Commodore C64 emulator

               (c) 1994-2022 Andre Fachat, [email protected]

                       Version 0.2.x / 24.7.2022

-------------------------------------------------------------------------------


xcbm is an emulator for the commodore 8 bit computer cbm 8032 and c64.

The programm is copyrighted by Andre Fachat and is covered by the
GNU Public license. For copying this programm see the file 'COPYING'
included in this package.

This programm comes with absolutely no warranty of any kind for what 
happens due to this programm. 

The current version number is 0.x. This means, that not much has been
tested and it definitely has lots of bugs. And it lacks lots of
stuff to really emulate. 
On the other hand the programm can run some BASIC and machine language
programms in c64 mode that do not require that much hardware simulation.
Also, it runs the PET ROM code and BASIC programs without the need for
any traps (i.e. keyboard and IEEE488 are hardware-emulated)

Note that the (new) purpose of the program is to run test versions of
my GeckOS operating system in various memory configurations (that
still need to be implemented). For example, I plan to implement the
CS/A memory configuration with MMU, or the Micro- and Ultra-PET
memory configurations.
Also, it is specifically limited to console output, and not being 
cycle accurate, and never will be.

For any decent emulation of the real Commodore machines, use the
VICE emulator.

To run the emulator, you have to get the ROM images from the C64.
For text mode you need the basic and the kernel ROM. They have to 
have a leading load address, i.e. these two address bytes to tell
a normal C64 where to load the stuff. However, they have to be there
but are ignored by the emulator. To get them try (on an original C64):

10 open 1,8,1,"c64basic.rom"
30 for i=10*4096 to 12*4096-1
40 print#1,chr$(peek(i));
50 next
60 close1

(This is from my mind, but I think it is correct). For the kernel,
change the loop to "for i=14*4096 to 65535" and of course the filename. 
The character ROM is also not included, but for curses modes, it is not 
necessary.

This emulator lacks all necessary optimization. 
This would have been a problem in earlier times, but as PC speed has increased
as much, it is probably not worth it putting in the effort of more optimization.

Andre Fachat


-------------------------------------------------------------------------------

BUGS/FEATURES (don't expect too much): 

- no doc available yet. see the file "MODES" on what is planned.
  see the file TODO for a brief introduction what has to be done.
  unfortunately the source is not documented very well.

- no undocumented opcodes (still exits) and no CMOS opcodes (remind me
  to create a CMOS command line switch)

- curses is hard to try: block graphic characters are not emulated,
  colors only very buggy, I don't understand it that much at the moment.

- In the C64 emu, CIA only partially emulated, VIC only regs 24 and 33, no SID
  C64 emu uses the old timer handler, which is in the process of being
  replaced with the alarm handler.

- In the PET emu, only partial VIA emulation, but IEEE488 and keyboard are
  emulated as hardware devices, not using traps.

- CPU speed is managed using nano-waits in the operating system.
  So, you can - in principle - set different emulation speeds, 
  but there is no command line switch or online key available yet

- Can use Un*x filesystem subdirectories as disks. At the moment, the 
  current directory for unit 8, drive 0 is ".". You can set this at
  command line. no real disk command ("R","S",...) is emulated.
  (what is a second disk for? ;-), no just kidding, it should be
  possible in the future, but low priority for now)

- The current ROM directory is "/var/lib/xcbm" 

- sigint not yet trapped, i.e. no run/stop possible. curses gave me some 
  more trouble when trying to get some special keys (e.g. shift pos1 to
  emulated the clear key doesn't work ????)
  Ctrl-D now works as STOP key.

- I have a function "logout" that gives output to the file "c64.log".
  here you can read some info on what this programm is doing and you
  can put some debug info there, if you want.

- In the C64 emu, exrom and game lines not yet used in memory management.

- the misc directory contains a programm to list basic files to stdout

- compiling: go to the src directory and type 'make clean;make dep; make'. 
  This puts the binary in the now empty bin directory.


xcbm's People

Contributors

fachat avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.