{"id":20405978,"url":"https://github.com/coldnew/emulator-4917","last_synced_at":"2025-07-26T16:09:56.469Z","repository":{"id":34291175,"uuid":"38183383","full_name":"coldnew/emulator-4917","owner":"coldnew","description":"4917 microprocess emulator in both clojure and clojurescript ","archived":false,"fork":false,"pushed_at":"2015-06-30T16:20:22.000Z","size":152,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-01-15T12:14:30.876Z","etag":null,"topics":["clojure","emulator"],"latest_commit_sha":null,"homepage":null,"language":"Clojure","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"MovingImage24/BehatSilexExtension","license":"epl-1.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/coldnew.png","metadata":{"files":{"readme":"README.org","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":"2015-06-28T02:29:32.000Z","updated_at":"2018-05-29T05:34:07.000Z","dependencies_parsed_at":"2022-08-03T20:15:30.549Z","dependency_job_id":null,"html_url":"https://github.com/coldnew/emulator-4917","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coldnew%2Femulator-4917","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coldnew%2Femulator-4917/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coldnew%2Femulator-4917/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coldnew%2Femulator-4917/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/coldnew","download_url":"https://codeload.github.com/coldnew/emulator-4917/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241950364,"owners_count":20047628,"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":["clojure","emulator"],"created_at":"2024-11-15T05:14:11.423Z","updated_at":"2025-03-05T02:19:01.261Z","avatar_url":"https://github.com/coldnew.png","language":"Clojure","funding_links":[],"categories":[],"sub_categories":[],"readme":"#+TITLE: emulator-4917 - 4917 emulator based on clojure/clojurescript\n\n# Badge\n[[https://www.eclipse.org/legal/epl-v10.html][https://img.shields.io/badge/license-Eclipse-blue.svg]]\n[[https://travis-ci.org/coldnew/emulator-4917][https://travis-ci.org/coldnew/emulator-4917.svg?branch=master]]\n\n4917 microprocess is an 4-bit cpu designed for [[https://en.wikipedia.org/wiki/University_of_New_South_Wales][University of New South Wales\n(UNSW)]] COMP1917.\n\nThis emulator is written by both clojure and clojurescript, I use the Clojure\n1.7 new feature [[http://dev.clojure.org/display/design/Reader%2BConditionals%25EF%25BC%258C%25E4%25B8%2580%25E6%25AC%25A1%25E5%25AF%25A6%25E7%258F%25BE][Reader Conditionals]] to reduce code complexity, you can build\nand running this emulator on JVM or Node.js.\n\nFor those interesting how to write 4917 emulator, I write a tutorial here:\n\n[[http://coldnew.github.io/blog/2015/06/29_clojure4917.html][使用 Clojure 打造 4917 微處理器的模擬器]] (Chinese)\n\nI will update the tutorial in English later.\n\n** Usage (JVM)\n\nTo execute this emulator on JVM, you can use =lein=\n\n: lein run -- examples/countdown.bin\n\nor compile this application to jar and execute\n\n#+BEGIN_EXAMPLE\n  lein uberjar\n  java -jar target/emulator-4917-0.1.0-SNAPSHOT-standalone.jar examples/countdown.bin\n#+END_EXAMPLE\n\n** Usage (Node.js)\n\nTo execute on node.js, one muse compile clojurescript to javascript first\n\n: lein cljsbuild once\n\nThis project use =none= optimization by default, you can use =run.js= to execute\nthe application\n\n: node run.js examples/countdown.bin\n\nor you also can modify the =project.clj= for advanced optimization\n\n#+BEGIN_SRC clojure\n  :optimizations :advanced\n  :pretty-print false\n#+END_SRC\n\nrebuild to javascript again and start application by node\n\n#+BEGIN_SRC sh\n  lein cljsbuild once\n  node target/emulator-4917.js examples/countdown.bin\n#+END_SRC\n\n** Examples\n\nThere are four examples in examples folder: (in binary format)\n\n| file name           | desription            |\n|---------------------+-----------------------|\n| countdown.bin       | countdown from 5 to 1 |\n| countup.bin         | countup from 0        |\n| bell.bin            | ring bell three times |\n| calculate_6+3+1.bin | calculate 6 + 3 + 1   |\n\n** License\n\nCopyright © 2015 Yen-Chin, Lee \u003ccoldnew.tw@gmail.com\u003e\n\nDistributed under the Eclipse Public License either version 1.0 or any later version.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcoldnew%2Femulator-4917","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcoldnew%2Femulator-4917","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcoldnew%2Femulator-4917/lists"}