{"id":18474397,"url":"https://github.com/codecop/conways-squasher-coroutine","last_synced_at":"2025-04-08T12:32:15.211Z","repository":{"id":59682254,"uuid":"277823785","full_name":"codecop/Conways-Squasher-Coroutine","owner":"codecop","description":"Reimplementation of Conway's asterisk squasher coroutine in modern assembly.","archived":false,"fork":false,"pushed_at":"2023-07-17T13:35:55.000Z","size":1859,"stargazers_count":6,"open_issues_count":0,"forks_count":2,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-03-23T12:41:29.381Z","etag":null,"topics":["assembly-x86","assembly-x86-64","coroutines","historical","nasm"],"latest_commit_sha":null,"homepage":"https://blog.code-cop.org/2020/06/conways-squasher-coroutine.html","language":"Assembly","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/codecop.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","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":"2020-07-07T13:26:53.000Z","updated_at":"2024-02-26T19:56:57.000Z","dependencies_parsed_at":"2024-11-06T10:48:16.872Z","dependency_job_id":"84e89c63-6f23-499e-8b00-9c57725fb71e","html_url":"https://github.com/codecop/Conways-Squasher-Coroutine","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/codecop%2FConways-Squasher-Coroutine","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codecop%2FConways-Squasher-Coroutine/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codecop%2FConways-Squasher-Coroutine/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codecop%2FConways-Squasher-Coroutine/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/codecop","download_url":"https://codeload.github.com/codecop/Conways-Squasher-Coroutine/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247842754,"owners_count":21005342,"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":["assembly-x86","assembly-x86-64","coroutines","historical","nasm"],"created_at":"2024-11-06T10:29:21.041Z","updated_at":"2025-04-08T12:32:12.520Z","avatar_url":"https://github.com/codecop.png","language":"Assembly","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Conway's Squasher Coroutine\n\nAccording to Donald Knuth, Melvin E. Conway coined the term coroutine in 1958 when he applied it to the construction of an assembly program. He first published it 1963 in his paper [Design of separable transition-diagram compiler](http://www.melconway.com/Home/pdf/compiler.pdf) ([local copy](Melvin%20Conway%20-%20Design%20of%20separable%20transition-diagram%20compiler.pdf)). The paper introduces the coroutine together with its implementation in assembly for the Burroughs model 220, a late vacuum-tube computer.\n\nThis is a reimplementation of Conway's code example, the asterisk squasher subroutine, in modern assembly. Read [my analysis of the code](https://blog.code-cop.org/2020/06/conways-squasher-coroutine.html) for more explanations.\n\nSee also [the follow-up blog post](https://dkandalov.github.io/squasher) by Dmitry with 64-bit assembler and Kotlin.\n\n## General Setup\n\n* GNU `make` to run build script\n* [NASM](https://www.nasm.us/) to compile\n* a linker\n* [Smoke](https://github.com/SamirTalwar/smoke) to run tests\n\n### Setup Windows\n\n* `make` from [MinGW](http://www.mingw.org/) or [standalone](https://sourceforge.net/projects/gnuwin32/files/make/)\n* [GoLink](http://www.godevtool.com/GolinkHelp/GoLink.htm)\n\n### Setup Linux\n\n* [GNU Linker `ld`](https://ftp.gnu.org/old-gnu/Manuals/ld-2.9.1/html_mono/ld.html)\n\n## License\n\n[BSD License](https://opensource.org/licenses/BSD-3-Clause), see `LICENSE.txt` in repository.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodecop%2Fconways-squasher-coroutine","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcodecop%2Fconways-squasher-coroutine","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodecop%2Fconways-squasher-coroutine/lists"}