{"id":16645877,"url":"https://github.com/xyene/macro8080","last_synced_at":"2025-07-23T17:32:26.104Z","repository":{"id":148497679,"uuid":"155642388","full_name":"Xyene/macro8080","owner":"Xyene","description":"An Intel 8080 emulator implemented entirely in C macros, capable of running Altair BASIC. 😨","archived":false,"fork":false,"pushed_at":"2018-12-13T05:20:27.000Z","size":189,"stargazers_count":8,"open_issues_count":2,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-09T15:57:03.281Z","etag":null,"topics":["basic","cpm","emulator","intel-8080","macro"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Xyene.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2018-11-01T01:00:00.000Z","updated_at":"2024-05-16T17:03:45.000Z","dependencies_parsed_at":null,"dependency_job_id":"8104ac1f-1515-4e09-a719-fc78a8be3073","html_url":"https://github.com/Xyene/macro8080","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Xyene/macro8080","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Xyene%2Fmacro8080","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Xyene%2Fmacro8080/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Xyene%2Fmacro8080/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Xyene%2Fmacro8080/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Xyene","download_url":"https://codeload.github.com/Xyene/macro8080/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Xyene%2Fmacro8080/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266719865,"owners_count":23973852,"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","status":"online","status_checked_at":"2025-07-23T02:00:09.312Z","response_time":66,"last_error":null,"robots_txt_status":null,"robots_txt_updated_at":null,"robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["basic","cpm","emulator","intel-8080","macro"],"created_at":"2024-10-12T08:25:42.500Z","updated_at":"2025-07-23T17:32:26.057Z","avatar_url":"https://github.com/Xyene.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# macro8080\n\nThis repository houses an implementation of an Intel 8080 microprocessor in C, which can run Altair BASIC and several CP/M test ROMs.\n\n\u003cimg src=\"https://i.imgur.com/xz9QXcG.jpg\" width=\"400px\"\u003e\u003c/img\u003e\n\nIt's main target is a Nios II processor (specifically, an Altera DE1-SoC), though it contains shims for full functionality in Unix environments. A barebones PS/2 keyboard driver is implemented for input when running on the DE1-SoC.\n\nThis project was mostly intended as an experiment to see whether the core of an emulator could be implemented entirely using macros, as opposed to modularized code segments. Intuitively, this would provide greater performance at the cost of code size, which empirically appears to be valid.\n\n## Compilation\nTo build for a DE1-SoC, just import `basic.amp`.\n\nTo compile and run on a Unix machine:\n\n```\n$ git clone https://github.com/Xyene/macro8080.git\n$ cd macro8080\n$ make\n$ ./i8080\n```\n\nBy default, 8K Altair BASIC will load. Several macro definitions control further behaviour if macro8080 is built with them:\n\n* `CPM` will load a CPM test ROM and build CP/M BIOS functions\n* `OVERRIDE_INPUT` will automatically feed the source code of Civil War into BASIC (useful for demoing on a DE1-SoC)\n\n## How does it work?\nA short write-up about the methods used to implement the Intel 8080 core entirely in macros [can be found on my blog](https://tbrindus.ca/emulating-microprocessors-with-macros/).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxyene%2Fmacro8080","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fxyene%2Fmacro8080","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxyene%2Fmacro8080/lists"}