{"id":17217848,"url":"https://github.com/fzipp/oberon","last_synced_at":"2025-04-03T03:11:42.875Z","repository":{"id":36983093,"uuid":"388207125","full_name":"fzipp/oberon","owner":"fzipp","description":"Project Oberon RISC emulator in Go","archived":false,"fork":false,"pushed_at":"2025-01-05T11:01:27.000Z","size":224,"stargazers_count":57,"open_issues_count":0,"forks_count":4,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-03-24T09:04:52.534Z","etag":null,"topics":["emulator","go","golang","oberon","oberon-07","oberon-system","project-oberon","risc","wirth","wirth-oberon"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"isc","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fzipp.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":"2021-07-21T18:13:57.000Z","updated_at":"2025-02-25T08:50:55.000Z","dependencies_parsed_at":"2024-04-27T05:29:15.869Z","dependency_job_id":"eff866a5-f8bc-49c7-9bd3-2d0d6230524c","html_url":"https://github.com/fzipp/oberon","commit_stats":{"total_commits":83,"total_committers":2,"mean_commits":41.5,"dds":"0.28915662650602414","last_synced_commit":"6222b26d3cfe620002b9cb86b793dbd0fe9ba339"},"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fzipp%2Foberon","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fzipp%2Foberon/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fzipp%2Foberon/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fzipp%2Foberon/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fzipp","download_url":"https://codeload.github.com/fzipp/oberon/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246895583,"owners_count":20851295,"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":["emulator","go","golang","oberon","oberon-07","oberon-system","project-oberon","risc","wirth","wirth-oberon"],"created_at":"2024-10-15T03:44:50.276Z","updated_at":"2025-04-03T03:11:42.845Z","avatar_url":"https://github.com/fzipp.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Project Oberon RISC Emulator\n\nThis is an emulator for the\n[Project Oberon (Revised Edition 2013)](https://people.inf.ethz.ch/wirth/ProjectOberon/index.html)\nRISC processor,\nwritten in the [Go programming language](https://go.dev).\nIt is a port of\n[Peter De Wachter's C-based emulator](https://github.com/pdewacht/oberon-risc-emu)\nto Go.\n\nProject Oberon is a design for a complete desktop computer system from scratch,\ncreated by [Niklaus Wirth](https://people.inf.ethz.ch/wirth/)\nand [Jürg Gutknecht](https://en.wikipedia.org/wiki/J%C3%BCrg_Gutknecht).\nIts simplicity and clarity enable a single person\nto understand and implement the entire system,\nmaking Project Oberon an excellent educational tool.\nIt consists of:\n- A RISC CPU design.\n- A programming language with a compiler written in itself.\n- An operating system with a text-oriented,\n  mouse-controlled graphical user interface,\n  written in the Oberon programming language.\n\nIf you find this project interesting,\nyou should also explore\n[this Oberon compiler in Go](https://github.com/fzipp/oberon-compiler),\nwhich is a direct port of Wirth's compiler for the RISC architecture\nfrom Oberon to the Go programming language.\nAdditionally, you can still use the original compiler\nwithin the emulator itself.\n\n## Install\n\n```\n$ go install github.com/fzipp/oberon/cmd/oberon-emu@latest\n```\n\n## Run\n\nFirst, download an Oberon disk image (.dsk file), e.g. from\n[this repository](https://github.com/pdewacht/oberon-risc-emu/tree/master/DiskImage).\n\nNext, initiate the emulator by providing the disk image file\nas a command-line argument:\n\n```\n$ oberon-emu Oberon-2020-08-18.dsk\nVisit http://localhost:8080 in a web browser\n```\nOpen the following link in your web browser: http://localhost:8080.\n\nThis is the Project Oberon user interface right after starting:\n\n![Project Oberon](doc/screenshot1.png?raw=true \"Project Oberon directly after start\")\n\n## Using Oberon\n\n[How to use the Oberon System](https://people.inf.ethz.ch/wirth/ProjectOberon/UsingOberon.pdf) (PDF)\n\nOberon's user interface is designed for use with a three-button mouse,\nbut the emulator also provides the option to\nsimulate all three mouse buttons via the keyboard.\n\n| Mouse button | Function           | Mac keyboard | PC keyboard |\n|--------------|--------------------|--------------|-------------|\n| Left         | Set caret (cursor) | ⌃ control    | Ctrl        |\n| Middle       | Execute command    | ⌥ option     | Alt         |\n| Right        | Select text        | ⌘ command    | Meta (Win)  |\n\n\n| Key   | Function            |\n|-------|---------------------|\n| Esc   | Undo all selections |\n| F1    | Set global marker   |\n\n## About the Oberon language\n\nOberon is the latest programming language\nin Wirth's series of language designs,\nwith predecessors like Pascal and Modula.\nAdditionally, there are various versions and dialects\nof these three languages.\nWirth's goal has always been\nto simplify the language whenever possible.\n\nOberon's grammar is designed in a way that allows for\nimplementation with a single-pass compiler.\nOberon code is organized into modules\nthat can be compiled separately.\nThe language is statically typed\nand incorporates a garbage collector for memory management.\nAccess to low-level and unsafe facilities is possible\nthrough a designated SYSTEM module.\n\nFurthermore, Oberon's influence extends to some aspects of Go,\nas Robert Griesemer,\none of the original creators of Go,\n[explains in this GopherCon 2015 talk](https://www.youtube.com/watch?v=0ReKdcpNyQg\u0026t=1070s)\n\"The Evolution of Go\".\n\n## License\n\nThis project is free and open source software licensed under the\n[ISC License](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffzipp%2Foberon","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffzipp%2Foberon","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffzipp%2Foberon/lists"}