{"id":32448570,"url":"https://github.com/daniilalpha/11apes","last_synced_at":"2025-10-26T05:58:46.822Z","repository":{"id":284799080,"uuid":"953178266","full_name":"DaniilAlpha/11apes","owner":"DaniilAlpha","description":"This is a bare-bones multithreaded PDP-11 simulator written in C for POSIX-compatible systems. Currently in development.","archived":false,"fork":false,"pushed_at":"2025-07-02T09:39:46.000Z","size":308,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-07-02T10:43:34.671Z","etag":null,"topics":["emulation","emulator","pdp","pdp-11","pdp11","retro","retrocomputing","simulator","term-paper","term-project"],"latest_commit_sha":null,"homepage":"","language":"C","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/DaniilAlpha.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":"2025-03-22T18:43:40.000Z","updated_at":"2025-07-02T09:39:49.000Z","dependencies_parsed_at":"2025-04-11T22:33:19.471Z","dependency_job_id":"4ecd9222-ec14-454e-a222-e144d015f0c0","html_url":"https://github.com/DaniilAlpha/11apes","commit_stats":null,"previous_names":["daniilalpha/sem4-osisp-coursework","daniilalpha/11apes"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/DaniilAlpha/11apes","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DaniilAlpha%2F11apes","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DaniilAlpha%2F11apes/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DaniilAlpha%2F11apes/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DaniilAlpha%2F11apes/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DaniilAlpha","download_url":"https://codeload.github.com/DaniilAlpha/11apes/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DaniilAlpha%2F11apes/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":281064203,"owners_count":26437785,"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-10-26T02:00:06.575Z","response_time":61,"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":["emulation","emulator","pdp","pdp-11","pdp11","retro","retrocomputing","simulator","term-paper","term-project"],"created_at":"2025-10-26T05:57:23.324Z","updated_at":"2025-10-26T05:58:46.817Z","avatar_url":"https://github.com/DaniilAlpha.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 11APES, A Pdp Eleven Simulator\n\nThis is a bare-bones multithreaded PDP-11 simulator written in C for POSIX-compatible systems. Currently in development. It is pretty accurate, except some rare error handling and timing stuff.\n\nIt offers an intwraction through the operator's console, a teletype and a papaertape reader. Though, the console is not simulated in its entirety and UI in general do suck a bit. \n\n## Run the project yourself\n\nI tried to run different absolute format programs, but because of non-compliant error handling or some other bug i was able to run and use successfuly only the BASIC-11 tape. Apart from that, original diagnostic tapes for the PDP-11 seems work, but it is usually hard to tell as they keep running in a loop until the error occures.\n\nThere is no proper UI at this point, so eveyrthing is done though the Operator's Console and `tail`ed files, brougth together in `tmux`, so it may seem a bit inconsistent. \n\nTo run the project follow these simple steps:\n\n - Clone the repo and init submodules\n\n```bash\ngit clone https://github.com/DaniilAlpha/sem4-osisp-coursework.git 11apes\ncd 11apes\ngit submodule update --init\n```\n\n - Install the proper dependencies\n\n   - For Debian/Ubuntu/Mint/anything with `apt`\n\n    ```bash\n    sudo apt install libncurses-dev tmux cmake gcc\n    ```\n\n   - For Fedora/anything with `dnf`\n\n    ```bash\n    sudo dnf install ncurses-devel tmux cmake gcc\n    ```\n\n   - For any other GNU/Linux: find similar packages yourself, it's not that hard\n\n   - For Windows: out of luck - go use GNU/Linux (or at least macOS)\n\n - Build the project\n\n```bash\ncmake -B build/ -S ./\ncmake --build build/\n```\n\n - Now you can run the project\n\n```bash\nchmod +x ./run.sh\n./run.sh # for a dedicate window, multiplexed with tmux \n```\n\n```bash\nbuild/main/main # for a simpler layout, only Operator's Console\n```\n\n## Usage\n\n - To load the Absolute Loader\n   - `P` - to power up the system. CPU is initially halted.\n   - `H` - to enter the halt mode on the console (unblocks interactions).\n   - `B` - to automatically insert the bootloader (can be done manually, but generally just a waste of time).\n   - `H` - to exit the halt mode on the console (won't start the cpu yet).\n   - `T`, `res/papertapes/absolute_loader.ptap`, `Enter` - load the absolute loader paper tape.\n   - `S` - to reset the CPU and start from the last loaded address (in this case, beginning of the bootstrap loader).\n\nThen you can watch several seconds-ish of bootloader loading the Absolute Loader into memory. Then CPU halts, indicating that the read was completed. At this point you should be able to load any Absolute Format tape.\n\n - To load the Absolute Format tape (BASIC-11, in this case)\n   - `T`, `res/papertapes/basic.ptap`, `Enter` - load the BASIC-11 paper tape. \n   - `C` - to continue from the next address (in this case, beginning of the Absolute Loader).\n\nThen you just wait for the program to load (may take around a dozen of seconds) and start automatically. In the case of BASIC-11, you'll see a greeting message in the TTY output. At this point you should be able to press `^I` (or `Tab` if you like) and write BASIC.\n\n## Run tests\n\n- Clone (same as in previous section)\n\n- Install the proper dependencies (same as well)\n\n- Cd into tests\n\n```bash\ncd test/\n```\n\n- Build (same as well)\n\n- Run tests\n\n```bash\nbuild/test\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdaniilalpha%2F11apes","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdaniilalpha%2F11apes","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdaniilalpha%2F11apes/lists"}