{"id":21324138,"url":"https://github.com/mcejp/lux","last_synced_at":"2025-07-12T05:32:01.059Z","repository":{"id":40270831,"uuid":"506391099","full_name":"mcejp/lux","owner":"mcejp","description":"Synthesizable Uxn CPU","archived":false,"fork":false,"pushed_at":"2022-07-14T17:33:04.000Z","size":281,"stargazers_count":13,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2023-03-09T23:32:13.519Z","etag":null,"topics":["fpga","uxn"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mcejp.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}},"created_at":"2022-06-22T20:09:26.000Z","updated_at":"2022-12-04T02:31:16.000Z","dependencies_parsed_at":"2022-08-25T07:41:05.967Z","dependency_job_id":null,"html_url":"https://github.com/mcejp/lux","commit_stats":null,"previous_names":[],"tags_count":null,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mcejp%2Flux","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mcejp%2Flux/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mcejp%2Flux/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mcejp%2Flux/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mcejp","download_url":"https://codeload.github.com/mcejp/lux/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225798822,"owners_count":17525941,"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":["fpga","uxn"],"created_at":"2024-11-21T20:28:48.462Z","updated_at":"2024-11-21T20:28:49.018Z","avatar_url":"https://github.com/mcejp.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"This is the repository of the Lux CPU project.\n\nCurrently it only implements one core, _Aurora-20_, which will serve as the basis of the LUX120A CPU. Documentation is TBD.\n\nAfter cloning the repository, you can execute\n\n    make test\n\nto run some tests. You will need `unxasm` and Python 3.9ish in your PATH.\n\nTo recompile the ucode you will also need the `hy` package (precompiled ucode is provided for convenience).\n\n![datasheet](_img/datasheet.png)\n\n## Details\n\nThe core microarchitecture is implemented in `aurora_sim.py`.\n\nIt can be executed in two ways:\n\n    ./aurora_sim.py \u003crom\u003e           # Console output (#18 DEO) goes directly to stdout\n    ./aurora_sim.py -hex \u003crom\u003e      # output is printed in hexadecimal, handy for tests\n\nNo other I/O is implemented.\n\n_aurora_sim_ assumes that `fw/fw.rom` had been built (it contains implementation of DIV/DIV2 instructions). Makefile will normally take care of this. Note that the address range 0xFF80~0xFFFF is taken up by these routines.\n\nNot yet implemented:\n- stack under/overflow traps\n- _k_ \u0026 _r_ variants of DIV/DIV2\n- error code on DIV/0 trap\n\nImplemented only as high-level model:\n- microcode sequencing\n- multiplication\n\nUnlikely to make it into Aurora:\n- hardware division\n- stack remapping to RAM\n\nNote that I/O Devices are outside the scope of this project. An address/data bus will be exposed to attach them, though.\n\nIf you are interested in the microarchitectural details, you can also generate a readable listing of the entire microcode: `make ucode_au20.html`\n\n![ucode](_img/ucode.png)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmcejp%2Flux","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmcejp%2Flux","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmcejp%2Flux/lists"}