Code Monkey home page Code Monkey logo

rc9918lib's Introduction

rc9918lib

A C library for using the TMS9918A video board on a RC2014 retrocomputer.

This library is still very much a work in progress. It has been tested against the rc9918 rev 1 board on a RC2014 running RomWBW v2.9.1-pre.5.

Links

Building

To build this library, you first must have the z88dk Z80 cross compiler installed.

Right now, only the examples can be built as stand alone CP/M apps. To build all examples, in the repository's root directory type:

make all

The build examples will be placed in the examples/bin directory.

Basic Design

The library created around a context handle, which is created when you initialize a board. To the user, the context handle is opaque, but internally it contains state of the rc9918 board it was configured for. This means it is possible to have more than one active context in an application. Each context should be initialized to an unique set of ports. Right now the library is set up to permit only 2 active contexts, but more can be enabled by setting a higher value to the compiler macro RC9918_CONTEXT_ARRAY_SIZE.

Each call to the library requires that a context handle be passed to it, and the function will operate on the board that context represents.

To Do

  1. Complete library for all graphic modes of the TMS9918A, possibly rethinking the library's API.
  2. Create and example or two for each graphics mode.
  3. Update library for forthcoming revision 3 of the rc9918 board, notably to enable interrupts.
  4. Update library to take advantage of the VDP interrupts for syncing screen updates
  5. Update Makefile to allow compile time overriding of RC9918_CONTEXT_ARRAY_SIZE value.
  6. Optimize, optimize, optimize
  7. Make default fonts optionally compiled to save space if not needed

Acknowledgements

Much of the code in this library was heavily inspired by the code examples provide by J. B. Langston in his RC9918 Board repository.

rc9918lib's People

Contributors

michaelkamprath avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  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.