Giter Site home page Giter Site logo

final_cartridge's Introduction

Final Cartridge

This project is the reverse-engineered and documented Commodore 64 cc65/ca65/cl65 assembly source code of the first bank of the "Final Cartridge III".

When assembled, the resulting binary is identical with the 1988-12 version of bank 0 of the original cartridge ROM.

What is contained?

Bank 0 contains the BASIC and editor extensions, the floppy and tape speeder, fast format, the centronics printer driver, and the monitor. This project does not contain Desktop, the freezer or the BASIC menu bar.

Building

Create fc3.bin:

make

Regression test: create fc3.bin and make sure it's identical to the original ROM:

make test

Why?

Reusing Components

The FC3 contained some great components, like the editor and BASIC extensions, and the excellent machine code monitor.

The source was separated into files with minimal dependencies, so they can be included in other projects.

For example:

make monitor.prg

builds a standalone version of the monitor that can be started with

sys 32768

Creating Derivatives

The existing code is a great starting point to create an improved Final Cartridge. Some ideas:

  • Replace the floppy speeder with a faster one.
  • Disable speeder when it detects non-1541 drives or a high-level emulated drive.
  • Add a fast directory function.
  • Replace PACK and UNPACK with a different engine.
  • Adding disk copy functionality.
  • Add "clear all memory" functionality (like "Zero Fill" in freezer)
  • Monitor: Support illegal opcodes.
  • Monitor: Support screen code.
  • Monitor: Optimize "OD" mode for speed.
  • Monitor: Allow transfering data between computer and drive.
  • Monitor: Allow loading and saving below I/O area.
  • Bundle a user-defined set of standard $0801-based programs in ROM.

This can be done without overflowing bank 0, since it contains plenty of code that can be removed, either because it is of little use these days (printer.s, tape code in speeder.s, format.s) or it is only there to support other banks (freezer.s, vectors.s, desktop_helper.s).

Please be aware of the The Final Replay project, which has similar goals, but is based on a clean reimplementation.

Copyright

The original code is (c) Uwe Stahl and Riska B.V. Home & Personal Computers. The assembly version, the comments, the partitioning into separate files and the linker configuration was done by Michael Steil [email protected]; this work is in the public domain.

final_cartridge's People

Contributors

mist64 avatar

Watchers

 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.