{"id":13344441,"url":"https://github.com/robhagemans/basicode-interpreter","last_synced_at":"2025-04-27T03:31:07.547Z","repository":{"id":40909961,"uuid":"83995139","full_name":"robhagemans/basicode-interpreter","owner":"robhagemans","description":"BASICODE interpreter in Javascript","archived":false,"fork":false,"pushed_at":"2024-04-07T19:16:21.000Z","size":414,"stargazers_count":21,"open_issues_count":5,"forks_count":4,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-04-04T20:45:15.556Z","etag":null,"topics":["8bit","basic","bbc","c64","emulator","interpreter","javascript","msx","retrocomputing","trs-80","zx-spectrum"],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","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/robhagemans.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.rst","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":"2017-03-05T19:13:04.000Z","updated_at":"2025-01-01T18:36:10.000Z","dependencies_parsed_at":"2024-10-24T07:44:44.142Z","dependency_job_id":"df1e9e85-ff0e-40d2-9a3c-f0c969db10d8","html_url":"https://github.com/robhagemans/basicode-interpreter","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/robhagemans%2Fbasicode-interpreter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robhagemans%2Fbasicode-interpreter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robhagemans%2Fbasicode-interpreter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robhagemans%2Fbasicode-interpreter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/robhagemans","download_url":"https://codeload.github.com/robhagemans/basicode-interpreter/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251085147,"owners_count":21533821,"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":["8bit","basic","bbc","c64","emulator","interpreter","javascript","msx","retrocomputing","trs-80","zx-spectrum"],"created_at":"2024-07-29T19:33:09.208Z","updated_at":"2025-04-27T03:31:07.259Z","avatar_url":"https://github.com/robhagemans.png","language":"JavaScript","readme":"BASICODE interpreter\n====================\n\nThis is a BASICODE interpreter in Javascript, compatible with BASICODE versions 2, 3 and 3C.\nIt's free \u0026 open source, released under the Expat MIT licence.\nThere is `a live demo \u003chttp://robhagemans.github.io/basicode/\u003e`_\nand `a collection of programs \u003chttps://github.com/robhagemans/basicode\u003e`_.\n\n`BASICODE \u003chttps://github.com/robhagemans/basicode\u003e`_ was a 1980s-era cross-platform BASIC standard designed to allow software transmission by radio.\n\n.. image:: https://robhagemans.github.io/basicode/basicode-arabesque.png\n\n*Screenshot taken from* `Arabesque \u003chttps://github.com/robhagemans/basicode/blob/master/Verzamelcassette_2/B01_Arabesque.bc3\u003e`_,\n*a 1987 BASICODE-3 program by Ch. W. Brederode.*\n\nQuick start\n-----------\n::\n\n    \u003c!DOCTYPE html\u003e\n    \u003chtml\u003e\n    \u003chead\u003e\n        \u003cscript src=\"basicode.js\"\u003e\u003c/script\u003e\n    \u003c/head\u003e\n    \u003cbody\u003e\n        \u003cscript type=\"text/basicode\"\u003e\n            1010 PRINT \"Hello, world!\"\n        \u003c/script\u003e\n    \u003c/body\u003e\n    \u003c/html\u003e\n\n\nDeployment\n----------\n\nThe package consists of a single Javascript file. To embed one or more interpreters in an HTML5 document, link the script in the header.\nIt will scan the HTML for any ``\u003cscript type=\"text/basicode\"\u003e`` elements , replace them with newly created canvases and execute the BASICODE\nin the script content or ``src=`` text file. Enjoy!\n\n\nSettings\n--------\n\nA number of options can be set through the dataset attribute of the ``script`` element:\n\n===================== =======================================================================\nAttribute             Setting\n===================== =======================================================================\n``data-columns``      Number of text columns\n``data-rows``         Number of text rows\n``data-speed``        Number of cycles per second in ``FOR`` loops (roughly)\n``data-font``         Font to use for text (see below)\n``data-color-0``      Set the colour value for black (background)\n``data-color-1``      Set the colour value for blue\n``data-color-2``      Set the colour value for red\n``data-color-3``      Set the colour value for magenta\n``data-color-4``      Set the colour value for green\n``data-color-5``      Set the colour value for cyan\n``data-color-6``      Set the colour value for yellow\n``data-color-7``      Set the colour value for white (foreground)\n===================== =======================================================================\n\n\nFonts\n-----\n\nThe following fonts are available:\n\n============== ===== ======================================\nFont           Size  Description\n============== ===== ======================================\n``smooth``           Browser's native monospace font\n``tiny``       6x4   A very small bitmap font\n``apple``      7x8   Apple-II font\n``msx``        7x8   MSX font\n``atari``      8x8   Atari 8-bit font\n``bbc``        8x8   Acorn BBC Micro font\n``c64``        8x8   Commodore 64 font\n``cpc``        8x8   Amstrad/Schneider CPC font\n``exidy``      8x8   Exidy Sorcerer font\n``genie1``     8x8   EACA Colour Genie 1st font\n``genie2``     8x8   EACA Colour Genie 2nd font\n``kc85``       8x8   Robotron KC85/1 font\n``pcw``        8x8   Amstrad PCW/Schneider JOYCE font\n``spectrum``   8x8   Sinclair ZX Spectrum font\n``vic``        8x8   Commodore PET and VIC-20 font\n``cga``        8x8   IBM CGA font\n``thin``       8x8   IBM CGA thin stroke font\n``pcjr``       8x8   IBM PCjr font\n``tandy``      8x8   Tandy 1000 font\n``tandy2``     8x8   Tandy 1000 font, later version\n``p2000``      8x10  Philips P2000T font\n``coco``       8x12  Tandy TRS-80 CoCo v1\u00262 font\n``coco3``      8x12  Tandy TRS-80 CoCo v3 font\n``mpf``        8x12  Multitech Micro-Professor MPF-I font\n``ega``        8x14  IBM EGA font\n``mda``        9x14  Hercules and IBM MDPA font\n``olivetti``   8x16  Olivetti M24 and AT\u0026T 6300 font\n``vga``        9x16  IBM VGA font\n``wyse-serif`` 16x16 Wyse WY-700 serif font\n``wyse-sans``  16x16 Wyse WY-700 sans serif font\n============== ===== ======================================\n\n\nCompatibility\n-------------\n\nThe interpreter should work on reasonably recent, standards-compliant browsers.\nYou need a keyboard, so it will be difficult to use on mobile.\nI've superficially tested it on Chrome, Firefox, Safari, and Opera.\nIt probably works fine on Edge, but I haven't tried. It mostly works on Internet Explorer 11 (except sound) but not at all on older versions.\n\n\nAcknowledgements\n----------------\n\nThere's a similar, earlier implementation of `BASICODE in JavaScript by Steven Goodwin \u003chttps://github.com/MarquisdeGeek/basicode\u003e`_.\nHis implementation and mine are completely independent; however, he got there first.\n\nThe bitmap fonts were drawn based on various sources:\n\n- Damien Guard's `overview of system fonts in 8- and 16-bit systems \u003chttps://damieng.com/blog/2011/02/20/typography-in-8-bits-system-fonts\u003e`_\n- John Elliott's `Vintage PC Pages \u003chttp://www.seasip.info/VintagePC/\u003e`_\n- Exidy Sorcerer page on `The Trailing Edge \u003chttp://www.trailingedge.com/exidy/\u003e`_\n- Z9001 page on `Homecomputer DDR \u003chttp://hc-ddr.hucki.net/wiki/doku.php/z9001:versionen\u003e`_\n- Ulrich Zander's `character sets for the KC85 \u003chttp://www.sax.de/~zander/z9001/ex/zsatz.html\u003e`_\n\n\nBASICODE support for original and retro platforms\n-------------------------------------------------\n\nOriginally, BASICODE tape reader and conversion programs were sold by broadcasters and publishers. Many of these are still available on retrogaming archives. A few can also be found on `BASICODE-Software für alle \u003chttps://www.joyce.de/basicode/\u003e`_.\n\nA few authors have published their own source code for conversion programs. I'm aware of:\n\n- `BASICODE-3 for ZX Spectrum, by Jan Bredenbeek \u003chttps://github.com/janbredenbeek/ZXSpectrum-Basicode\u003e`_\n- `BASICODE-3 v2 for Sinclair QL, by Jan Bredenbeek \u003chttps://github.com/janbredenbeek/QL-Basicode\u003e`_\n- `BASICODE-2 for C64 and Commander x16, by Iljitsch van Beijnum \u003chttps://www.iljitsch.com/2020/beeldkrant250/basicode2.c64.txt\u003e`_\n- `BASICODE-3 for MS-DOS, by Jac Goudsmit \u003chttps://github.com/jacgoudsmit/Basicode\u003e`_\n- `BASICODE-3 for KC85/3-5, by M. Leubner \u003chttps://github.com/maleuma/BASICODE\u003e`_\n\n\nOther BASICODE interpreters for modern platforms\n------------------------------------------------\n\n- `BASICODE in JavaScript, by Steven Goodwin \u003chttps://github.com/MarquisdeGeek/basicode\u003e`_\n- `BASICODE in Java, by Michael Haupt \u003chttps://github.com/mhaupt/basicode\u003e`_\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frobhagemans%2Fbasicode-interpreter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frobhagemans%2Fbasicode-interpreter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frobhagemans%2Fbasicode-interpreter/lists"}