{"id":22920928,"url":"https://github.com/michaelkamprath/rc9918lib","last_synced_at":"2025-05-12T20:25:16.038Z","repository":{"id":136211757,"uuid":"142897529","full_name":"michaelkamprath/rc9918lib","owner":"michaelkamprath","description":"A C library for using the TMS9918A video board on a RC2014 retrocomputer.","archived":false,"fork":false,"pushed_at":"2020-11-28T01:38:25.000Z","size":44,"stargazers_count":8,"open_issues_count":0,"forks_count":0,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-05-12T20:25:14.007Z","etag":null,"topics":["rc2014","tms9918a","z80","z80asm"],"latest_commit_sha":null,"homepage":null,"language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/michaelkamprath.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2018-07-30T15:57:50.000Z","updated_at":"2024-04-15T20:20:45.000Z","dependencies_parsed_at":null,"dependency_job_id":"a3c50952-17a4-4251-9604-e3e9cc5be8e2","html_url":"https://github.com/michaelkamprath/rc9918lib","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/michaelkamprath%2Frc9918lib","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/michaelkamprath%2Frc9918lib/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/michaelkamprath%2Frc9918lib/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/michaelkamprath%2Frc9918lib/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/michaelkamprath","download_url":"https://codeload.github.com/michaelkamprath/rc9918lib/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253815165,"owners_count":21968583,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["rc2014","tms9918a","z80","z80asm"],"created_at":"2024-12-14T07:17:39.697Z","updated_at":"2025-05-12T20:25:16.031Z","avatar_url":"https://github.com/michaelkamprath.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# rc9918lib\nA C library for using the [TMS9918A video board](https://github.com/jblang/rc9918) on a [RC2014 retrocomputer](https://rc2014.co.uk).\n\nThis 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.\n\n## Links\n* [RC9918 Board](https://github.com/jblang/rc9918)\n* [RC2014 Retrocomputer](https://rc2014.co.uk)\n* [z88dk Z80 Cross Compiler](https://www.z88dk.org/)\n\n## Building\nTo build this library, you first must have the [z88dk Z80 cross compiler](https://www.z88dk.org/) installed. \n\nRight now, only the examples can be built as stand alone CP/M apps. To build all examples, in the repository's root directory type:\n```\nmake all\n```\nThe build examples will be placed in the `examples/bin` directory. \n\n## Basic Design\nThe 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`. \n\nEach call to the library requires that a `context` handle be passed to it, and the function will operate on the board that `context` represents. \n\n## To Do\n\n1. Complete library for all graphic modes of the TMS9918A, possibly rethinking the library's API.\n2. Create and example or two for each graphics mode.\n3. Update library for forthcoming revision 3 of the rc9918 board, notably to enable interrupts.\n4. Update library to take advantage of the VDP interrupts for syncing screen updates\n5. Update Makefile to allow compile time overriding of `RC9918_CONTEXT_ARRAY_SIZE` value. \n6. Optimize, optimize, optimize \n7. Make default fonts optionally compiled to save space if not needed\n\n## Acknowledgements\n\nMuch of the code in this library was heavily inspired by the code examples provide by J. B. Langston in his [RC9918 Board repository](https://github.com/jblang/rc9918/tree/master/examples).  \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmichaelkamprath%2Frc9918lib","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmichaelkamprath%2Frc9918lib","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmichaelkamprath%2Frc9918lib/lists"}