{"id":21710243,"url":"https://github.com/rhthomas/dobby","last_synced_at":"2026-06-08T16:03:16.517Z","repository":{"id":81147448,"uuid":"81550735","full_name":"rhthomas/dobby","owner":"rhthomas","description":"University of Southampton second year ELEC2204 Computer Engineering coursework.","archived":false,"fork":false,"pushed_at":"2018-01-08T13:52:00.000Z","size":418,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-08-17T03:43:18.044Z","etag":null,"topics":["architecture","c","emulator"],"latest_commit_sha":null,"homepage":"https://rhthomas.github.io/docs/dobby/","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rhthomas.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}},"created_at":"2017-02-10T09:45:07.000Z","updated_at":"2023-02-03T23:59:47.000Z","dependencies_parsed_at":null,"dependency_job_id":"999e885d-c0a9-42d8-863f-e65a700fdcbb","html_url":"https://github.com/rhthomas/dobby","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/rhthomas/dobby","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rhthomas%2Fdobby","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rhthomas%2Fdobby/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rhthomas%2Fdobby/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rhthomas%2Fdobby/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rhthomas","download_url":"https://codeload.github.com/rhthomas/dobby/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rhthomas%2Fdobby/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34069501,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-08T02:00:07.615Z","response_time":111,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","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":["architecture","c","emulator"],"created_at":"2024-11-25T23:14:19.310Z","updated_at":"2026-06-08T16:03:16.497Z","avatar_url":"https://github.com/rhthomas.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# dobby\n\nUniversity of Southampton second year ELEC2204 Computer Engineering coursework.\n\n## Directory structure\n\n```\n.\n├── Doxyfile\n├── Makefile\n├── README.md\n├── inc\n│   ├── alu.h\n│   ├── decoder.h\n│   ├── dobby.h\n│   ├── examples.h\n│   ├── global.h\n│   ├── memory.h\n│   ├── opcodes.h\n│   ├── print.h\n│   └── registers.h\n└── src\n    ├── alu.c\n    ├── decoder.c\n    ├── dobby.c\n    ├── examples.c\n    ├── memory.c\n    ├── print.c\n    └── registers.c\n```\n\n## Build instructions\n\nFor this project I have made a Makefile to simplify compilation of the files\nand their dependencies. This means that if one or two files are changed the\ncompiler only rebuilds the changed files, thus reducing compile time. To run the\nMakefile there are a number of options,\n* `make`, builds code to `dobby` executable.\n* `make debug`, builds the same as `make` but invokes the DEBUG flag which\nwrites internal signal values to `dobby.log` on each processor tick.\n* `make clean`, cleans directory of build files (`build/`, `dobby` and\n`doxygen/`).\n* `make docs`, calls Doxygen to generate code documentation.\n* `make open`, opens generated Doxygen in web browser.\n\n```\n CC     src/alu.c\n CC     src/decoder.c\n CC     src/dobby.c\n CC     src/examples.c\n CC     src/memory.c\n CC     src/print.c\n CC     src/registers.c\n```\n\n## Example assembly\n\nIn `examples.c` there are a number of example assembly programs. These programs\nare then stored in an array called `*examples`. The examples are then copied\ninto memory when the user presses certain number keys.\n\n## Output\n\n`dobby.c` uses and ncurses interface to display the current state of the cpu,\nvalues on the data/address bus, inputs and operations passed to the ALU, data\nin particular addresses in memory as well as the data stored in the program\ncounter, instruction register and accumulator.\n\nBy pressing `\u003center\u003e` (actually, any key besides `\u003cq\u003e`) the system will step\nthrough to the next state of operation. This is to help debug the operation of\nthe CPU.\n\nThe `\u003cu\u003e` and `\u003cd\u003e` keys move the memory table up/down. It is unrealistic to\nprint all 256 addresses to the screen at the same time.\n\n### Start up instructions\n\n```\nDobby debugging suite.\nOther keys increment program counter.\nu: Move address list up.\nd: Move address list down.\nq: Quit program.\n1: Program #1\n2: Program #2\n```\n\n### Documention\n\nFuther documentation in the form of a compiled doxygen website can be found [here](https://rhthomas.github.io/docs/dobby/).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frhthomas%2Fdobby","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frhthomas%2Fdobby","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frhthomas%2Fdobby/lists"}