{"id":34243731,"url":"https://github.com/tomharte/clk","last_synced_at":"2026-02-20T20:00:55.303Z","repository":{"id":35075706,"uuid":"39225788","full_name":"TomHarte/CLK","owner":"TomHarte","description":"A latency-hating emulator of: the Acorn Electron, BBC Micro and Archimedes, Amstrad CPC, Apple II/II+/IIe and early Macintosh, Atari 2600 and ST, ColecoVision, Enterprise 64/128, Commodore Vic-20 and Amiga, MSX 1/2, Oric 1/Atmos, early PC compatibles, Sega Master System, Sinclair ZX80/81 and ZX Spectrum.","archived":false,"fork":false,"pushed_at":"2026-02-14T16:56:17.000Z","size":389682,"stargazers_count":1080,"open_issues_count":92,"forks_count":58,"subscribers_count":29,"default_branch":"master","last_synced_at":"2026-02-15T01:04:36.998Z","etag":null,"topics":["acorn-electron","amstrad-cpc","apple2","appleii","archimedes","atari-st","atari2600","colecovision","composite-video","emulator","ibmpc","m68k","master-system","msx","oric","riscos","vic20","zx-spectrum","zx80","zx81"],"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/TomHarte.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":null,"patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":["https://www.amazon.com/hz/wishlist/ls/8WPVFLQQDPTA"]}},"created_at":"2015-07-16T23:46:52.000Z","updated_at":"2026-02-13T12:22:01.000Z","dependencies_parsed_at":"2024-01-16T22:47:55.754Z","dependency_job_id":"65c4a9e8-37a0-4bde-b45b-1fd6b1dfda39","html_url":"https://github.com/TomHarte/CLK","commit_stats":null,"previous_names":[],"tags_count":141,"template":false,"template_full_name":null,"purl":"pkg:github/TomHarte/CLK","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TomHarte%2FCLK","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TomHarte%2FCLK/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TomHarte%2FCLK/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TomHarte%2FCLK/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/TomHarte","download_url":"https://codeload.github.com/TomHarte/CLK/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TomHarte%2FCLK/sbom","scorecard":{"id":142622,"data":{"date":"2025-08-11","repo":{"name":"github.com/TomHarte/CLK","commit":"246d34e072583e2289f9230bdbab7b6f50d96833"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4,"checks":[{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/build.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Code-Review","score":0,"reason":"Found 0/2 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Maintained","score":10,"reason":"30 commit(s) and 2 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact 2025-03-20 not signed: https://api.github.com/repos/TomHarte/CLK/releases/207270843","Warn: release artifact 2025-03-05 not signed: https://api.github.com/repos/TomHarte/CLK/releases/203965066","Warn: release artifact 2025-02-26 not signed: https://api.github.com/repos/TomHarte/CLK/releases/201745611","Warn: release artifact 2024-10-19 not signed: https://api.github.com/repos/TomHarte/CLK/releases/174449808","Warn: release artifact 2024-09-08 not signed: https://api.github.com/repos/TomHarte/CLK/releases/174039483","Warn: release artifact 2025-03-20 does not have provenance: https://api.github.com/repos/TomHarte/CLK/releases/207270843","Warn: release artifact 2025-03-05 does not have provenance: https://api.github.com/repos/TomHarte/CLK/releases/203965066","Warn: release artifact 2025-02-26 does not have provenance: https://api.github.com/repos/TomHarte/CLK/releases/201745611","Warn: release artifact 2024-10-19 does not have provenance: https://api.github.com/repos/TomHarte/CLK/releases/174449808","Warn: release artifact 2024-09-08 does not have provenance: https://api.github.com/repos/TomHarte/CLK/releases/174039483"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build.yml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/TomHarte/CLK/build.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/build.yml:15: update your workflow using https://app.stepsecurity.io/secureworkflow/TomHarte/CLK/build.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build.yml:30: update your workflow using https://app.stepsecurity.io/secureworkflow/TomHarte/CLK/build.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build.yml:67: update your workflow using https://app.stepsecurity.io/secureworkflow/TomHarte/CLK/build.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build.yml:104: update your workflow using https://app.stepsecurity.io/secureworkflow/TomHarte/CLK/build.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/build.yml:106: update your workflow using https://app.stepsecurity.io/secureworkflow/TomHarte/CLK/build.yml/master?enable=pin","Info:   0 out of   4 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   2 third-party GitHubAction dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 30 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-16T08:32:00.803Z","repository_id":35075706,"created_at":"2025-08-16T08:32:00.803Z","updated_at":"2025-08-16T08:32:00.803Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29662557,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-20T19:49:36.704Z","status":"ssl_error","status_checked_at":"2026-02-20T19:44:05.372Z","response_time":59,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["acorn-electron","amstrad-cpc","apple2","appleii","archimedes","atari-st","atari2600","colecovision","composite-video","emulator","ibmpc","m68k","master-system","msx","oric","riscos","vic20","zx-spectrum","zx80","zx81"],"created_at":"2025-12-16T05:08:48.003Z","updated_at":"2026-02-20T20:00:55.253Z","avatar_url":"https://github.com/TomHarte.png","language":"C++","funding_links":["https://www.amazon.com/hz/wishlist/ls/8WPVFLQQDPTA"],"categories":[],"sub_categories":[],"readme":"# Clock Signal\n\n\u003cimg align=\"left\" src=\"READMEImages/Icon.png\" alt=\"Clock Signal Application Icon\" /\u003e Clock Signal ('CLK') is an emulator that seeks to be invisible. Users directly launch classic software, avoiding the learning curves associated with emulators and with classic machines.\n\nmacOS and source releases are [hosted on GitHub](https://github.com/TomHarte/CLK/releases). A Qt-based Linux build is available as a [Snap](https://snapcraft.io/clock-signal). \n\nThis emulator seeks to offer:\n\n* single-click load of any piece of source media for any supported platform;\n* with a heavy signal processing tilt for accurate reproduction of original outputs;\n* avoiding latency as much as possible.\n\nIt currently contains emulations of the:\n\n* Acorn Electron;\n* Amstrad CPC;\n* Apple II/II+ and IIe;\n* Atari 2600;\n* Atari ST;\n* BBC Micro;\n* ColecoVision;\n* Commodore Vic-20;\n* Enterprise 64/128;\n* Macintosh 128K, 512K, 512Ke, and Plus;\n* MSX 1 and 2;\n* Oric 1/Atmos;\n* Sega Master System;\n* Sinclair ZX80/81; and\n* Sinclair ZX Spectrum.\n\nAlso present but very much upcoming are the:\n\n* Acorn Archimedes;\n* Commodore Plus 4;\n* Commodore Amiga; and\n* early PC compatible.\n\nOn the Mac it is a native Cocoa and Metal application; under Linux, BSD and other UNIXes and UNIX-alikes it uses OpenGL and can be built either with Qt or with SDL.\n\n## Single-step Loading\n\nThrough static and runtime analysis CLK seeks automatically to select and configure the appropriate machine to run any provided disk, tape or ROM; to issue any commands necessary to run the software contained on the disk, tape or ROM; and to provide accelerated loading where feasible.\n\nWith CLK installed the full process of loading a piece of software — even if you've never used the machine it runs on before — is:\n\n1. locate it in your OS;\n2. double click it.\n\n![Loading a piece of software](READMEImages/JustDoubleClick.gif)\n\nThere's no need to wade through creating a new machine, inserting media into it or figuring out which loading command goes with this piece of software, and no import procedure — CLK does not attempt to take ownership of your files or to usurp your OS.\n\nKeep your emulated titles on your desktop, in your dock, or wherever else you usually prefer to launch software from, and launch in a single step. Just like any other piece of desktop software.\n\n## Signal Processing\n\nConsider an ordinary, unmodified Commodore Vic-20. Its only video output is composite. Therefore the emulated machine's only video output is composite. In order to display the video output, your GPU must decode composite video. Therefore composite video artefacts are present and correct — not because of a post hoc filter but because the real signal is really being processed.\n\nSimilar effort is put into audio generation. If the real machine normally generates audio at 192Khz then the emulator generates a 192Khz source signal and filters it down to whatever the host machine can output.\n\n### Samples\n\n\u003ctable\u003e\n\t\u003ctbody\u003e\n\t\u003ctr\u003e\n\t\t\u003cth\u003e1:1 Pixel Copying\u003c/th\u003e\n\t\t\u003cth\u003eComposite Decoded\u003c/th\u003e\n\t\u003c/tr\u003e\u003ctr\u003e\n\t\t\u003ctd width=50%\u003e\u003cimg alt=\"The Electron start screen, with a classic 1:1 pixel emulation\" src=\"READMEImages/NaiveElectron.png\"\u003e\u003c/td\u003e\n\t\t\u003ctd width=50%\u003e\u003cimg alt=\"The Electron start screen, decoded from an interlaced composite feed\" src=\"READMEImages/CompositeElectron.png\"\u003e\u003c/td\u003e\n\t\u003c/tr\u003e\u003ctr\u003e\n\t\t\u003ctd width=50%\u003e\u003cimg alt=\"Repton 3 in game, with a classic 1:1 pixel emulation\" src=\"READMEImages/NaiveRepton3.png\"\u003e\u003c/td\u003e\n\t\t\u003ctd width=50%\u003e\u003cimg alt=\"Repton 3 in game, decoded from an interlaced composite feed\" src=\"READMEImages/CompositeRepton3.png\"\u003e\u003c/td\u003e\n\t\u003c/tr\u003e\u003ctr\u003e\n\t\t\u003ctd width=50%\u003e\u003cimg alt=\"Stormlord with a classic 1:1 pixel emulation\" src=\"READMEImages/NaiveStormlord.png\"\u003e\u003c/td\u003e\n\t\t\u003ctd width=50%\u003e\u003cimg alt=\"Stormlord decoded from a composite feed\" src=\"READMEImages/CompositeStormlord.png\"\u003e\u003c/td\u003e\n\t\u003c/tr\u003e\u003ctr\u003e\n\t\t\u003ctd width=50%\u003e\u003cimg alt=\"Road Fighter with a classic 1:1 pixel emulation\" src=\"READMEImages/NaiveRoadFighter.png\"\u003e\u003c/td\u003e\n\t\t\u003ctd width=50%\u003e\u003cimg alt=\"Road Fighter decoded from a composite feed\" src=\"READMEImages/CompositeRoadFighter.png\"\u003e\u003c/td\u003e\n\t\u003c/tr\u003e\u003ctr\u003e\n\t\t\u003ctd width=50%\u003e\u003cimg alt=\"A segment of the ColecoVision Donkey Kong title screen with a classic 1:1 pixel emulation\" src=\"READMEImages/NaivePresentsDonkeyKong.png\"\u003e\u003c/td\u003e\n\t\t\u003ctd width=50%\u003e\u003cimg alt=\"A segment of the ColecoVision Donkey Kong title screen decoded from a composite feed\" src=\"READMEImages/CompositePresentsDonkeyKong.png\"\u003e\u003c/td\u003e\n\t\u003c/tr\u003e\u003ctr\u003e\n\t\t\u003ctd width=50%\u003e\u003cimg alt=\"Sonic the Hedgehog with a classic 1:1 pixel emulation\" src=\"READMEImages/NaiveSonic.jpeg\"\u003e\u003c/td\u003e\n\t\t\u003ctd width=50%\u003e\u003cimg alt=\"Sonic the Hedgehog screen PAL decoded from a composite feed\" src=\"READMEImages/CompositeSonic.png\"\u003e\u003c/td\u003e\n\t\u003c/tr\u003e\n\t\u003c/tbody\u003e\n\u003c/table\u003e\n\n\u003ctable\u003e\n\t\u003ctbody\u003e\n\t\u003ctr\u003e\n\t\t\u003cth\u003e1:1 Pixel Copying\u003c/th\u003e\n\t\t\u003cth\u003eCorrect Aspect Ratio, Filtered\u003c/th\u003e\n\t\u003c/tr\u003e\u003ctr\u003e\n\t\t\u003ctd width=50%\u003e\u003cimg alt=\"Amstrad text, with a classic 1:1 pixel emulation\" src=\"READMEImages/NaiveCPC.png\"\u003e\u003c/td\u003e\n\t\t\u003ctd width=50%\u003e\u003cimg alt=\"Amstrad text, with correct aspect ratio and subject to a lowpass filter\" src=\"READMEImages/FilteredCPC.png\"\u003e\u003c/td\u003e\n\t\u003c/tr\u003e\u003ctr\u003e\n\t\t\u003ctd width=50%\u003e\u003cimg alt=\"The Amstrad CPC version of Stormlord, with a classic 1:1 pixel emulation\" src=\"READMEImages/NaiveCPCStormlord.png\"\u003e\u003c/td\u003e\n\t\t\u003ctd width=50%\u003e\u003cimg alt=\"The Amstrad CPC version of Stormlord, with correct aspect ratio and subject to a lowpass filter\" src=\"READMEImages/CPCStormlord.png\"\u003e\u003c/td\u003e\n\t\u003c/tr\u003e\n\t\u003c/tbody\u003e\n\u003c/table\u003e\n\n\n## Low Latency\n\nThe display produced is an emulated CRT, with phosphor decay. Therefore if you have a 140Hz 4k monitor it can produce 140 distinct frames per second at 4k resolution. Latency is dictated by the host hardware, not the emulated machine or emulator.\n\nAudio latency is disjoint from frame rate and is generally restrained to 5–10ms.\n\n## Accurate Emulation\n\nAccuracy is a user-experience issue; the more accurate an emulator, the more likely that a user can run every piece of software they're interested in without further intervention.\n\nThis emulator attempts cycle-accurate emulation of all supported machines. In some cases it succeeds.\n\n## Additional Screenshots\n\u003ctable\u003e\n\t\u003ctbody\u003e\n\t\u003ctr\u003e\n\t\t\u003ctd width=50%\u003e\u003cimg alt=\"Apple IIe Prince of Persia\" src=\"READMEImages/AppleIIPrinceOfPersia.png\"\u003e\u003c/td\u003e\n\t\t\u003ctd width=50%\u003e\u003cimg alt=\"Archimedes Star Fighter 3000\" src=\"READMEImages/StarFighter3000.png\"\u003e\u003c/td\u003e\n\t\u003c/tr\u003e\u003ctr\u003e\n\t\t\u003ctd width=50%\u003e\u003cimg alt=\"Apple Macintosh MusicWorks\" src=\"READMEImages/MusicWorks.png\"\u003e\u003c/td\u003e\n\t\t\u003ctd width=50%\u003e\u003cimg alt=\"Atari ST Stunt Car Racer\" src=\"READMEImages/STStuntCarRacer.png\"\u003e\u003c/td\u003e\n\t\u003c/tr\u003e\u003ctr\u003e\n\t\t\u003ctd width=50%\u003e\u003cimg alt=\"Amiga Indianapolis 500\" src=\"READMEImages/AmigaIndy500.png\"\u003e\u003c/td\u003e\n\t\t\u003ctd width=50%\u003e\u003cimg alt=\"Acorn Electron Chuckie Egg\" src=\"READMEImages/ElectronChuckieEgg.png\"\u003e\u003c/td\u003e\n\t\u003c/tr\u003e\u003ctr\u003e\n\t\t\u003ctd width=50%\u003e\u003cimg alt=\"Amstrad CPC Chase HQ\" src=\"READMEImages/CPCChaseHQ.png\"\u003e\u003c/td\u003e\n\t\t\u003ctd width=50%\u003e\u003cimg alt=\"MSX 2 Space Manbow\" src=\"READMEImages/MSX2SpaceManbow.png\"\u003e\u003c/td\u003e\n\t\u003c/tr\u003e\u003ctr\u003e\n\t\t\u003ctd width=50%\u003e\u003cimg alt=\"Amiga James Pond II\" src=\"READMEImages/AmigaJamesPondII.png\"\u003e\u003c/td\u003e\n\t\t\u003ctd width=50%\u003e\u003cimg alt=\"Atari 2600 Solaris\" src=\"READMEImages/Atari2600Solaris.png\"\u003e\u003c/td\u003e\n\t\u003c/tr\u003e\u003ctr\u003e\n\t\t\u003ctd width=50%\u003e\u003cimg alt=\"Microsoft Flight Simulator\" src=\"READMEImages/PCFlightSimulator.png\"\u003e\u003c/td\u003e\n\t\t\u003ctd width=50%\u003e\u003cimg alt=\"BBC Micro Elite\" src=\"READMEImages/BBCElite.png\"\u003e\u003c/td\u003e\n\t\u003c/tr\u003e\u003ctr\u003e\n\t\t\u003ctd width=50%\u003e\u003cimg alt=\"ColecoVision Galaxian\" src=\"READMEImages/ColecoVisionGalaxian.png\"\u003e\u003c/td\u003e\n\t\t\u003ctd width=50%\u003e\u003cimg alt=\"SG1000 Chack'n'Pop\" src=\"READMEImages/SGChackNPop.png\"\u003e\u003c/td\u003e\n\t\u003c/tr\u003e\u003ctr\u003e\n\t\t\u003ctd width=50%\u003e\u003cimg alt=\"ZX81 3D Monster Maze\" src=\"READMEImages/ZX81MonsterMaze.png\"\u003e\u003c/td\u003e\n\t\t\u003ctd width=50%\u003e\u003cimg alt=\"ZX80 Kong\" src=\"READMEImages/ZX80Kong.png\"\u003e\u003c/td\u003e\n\t\u003c/tr\u003e\u003ctr\u003e\n\t\t\u003ctd width=50%\u003e\u003cimg alt=\"Vic-20 Gridrunner\" src=\"READMEImages/Vic20Gridrunner.png\"\u003e\u003c/td\u003e\n\t\t\u003ctd width=50%\u003e\u003cimg alt=\"ZX Spectrum Chromatrons Attack\" src=\"READMEImages/ZXSpectrumChromatronsAttack.png\"\u003e\u003c/td\u003e\n\t\u003c/tr\u003e\u003ctr\u003e\n\t\t\u003ctd width=50%\u003e\u003cimg alt=\"ZX Spectrum Menu\" src=\"READMEImages/ZXSpectrumMenu.png\"\u003e\u003c/td\u003e\n\t\t\u003ctd width=50%\u003e\u003cimg alt=\"VIC-20 BASIC\" src=\"READMEImages/Vic20BASIC.png\"\u003e\u003c/td\u003e\n\t\u003c/tr\u003e\u003ctr\u003e\n\t\t\u003ctd width=50%\u003e\u003cimg alt=\"MS-DOS Prompt\" src=\"READMEImages/MSDOSPrompt.png\"\u003e\u003c/td\u003e\n\t\t\u003ctd width=50%\u003e\u003cimg alt=\"RISC OS\" src=\"READMEImages/RISCOS.png\"\u003e\u003c/td\u003e\n\t\u003c/tr\u003e\n\t\u003c/tbody\u003e\n\u003c/table\u003e\n\n\n![macOS Version](READMEImages/MultipleSystems.png)\n![Qt Version](READMEImages/MultipleSystems-Ubuntu.png)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftomharte%2Fclk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftomharte%2Fclk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftomharte%2Fclk/lists"}