{"id":13783018,"url":"https://github.com/aluxian/UoS-CS2-LaBASIC","last_synced_at":"2025-05-11T17:30:39.489Z","repository":{"id":75321042,"uuid":"131714494","full_name":"aluxian/UoS-CS2-LaBASIC","owner":"aluxian","description":"LaBASIC is a BASIC interpreter for the LaFortuna board","archived":false,"fork":false,"pushed_at":"2018-05-14T14:47:23.000Z","size":100,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-10-18T07:21:11.624Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://secure.ecs.soton.ac.uk/student/wiki/w/COMP2215_1718_LaBASIC","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/aluxian.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}},"created_at":"2018-05-01T13:11:19.000Z","updated_at":"2023-06-04T05:06:25.000Z","dependencies_parsed_at":"2023-06-06T03:15:14.729Z","dependency_job_id":null,"html_url":"https://github.com/aluxian/UoS-CS2-LaBASIC","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/aluxian%2FUoS-CS2-LaBASIC","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aluxian%2FUoS-CS2-LaBASIC/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aluxian%2FUoS-CS2-LaBASIC/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aluxian%2FUoS-CS2-LaBASIC/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aluxian","download_url":"https://codeload.github.com/aluxian/UoS-CS2-LaBASIC/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253604394,"owners_count":21934854,"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":[],"created_at":"2024-08-03T18:01:51.160Z","updated_at":"2025-05-11T17:30:39.147Z","avatar_url":"https://github.com/aluxian.png","language":"C","funding_links":[],"categories":["C"],"sub_categories":[],"readme":"# LaBASIC\n\n## Description\n\nNow you can turn your LaFortuna into an 80s portable computer! What? It's already dumb like an 80s computer? Ah, ok, 70s! Or whenever BASIC was invented.\n\nIn case you haven't guessed, LaBASIC is a BASIC interpreter for the LaFortuna board. The reason I decided to create an interpreter is to make programming on the LaFortuna easier. I know nothing can match C, but sometimes you want to hack something quickly and a higher level language is perfect for this. Whether BASIC is the appropriate choice for an interpreted language will be left up for debate to the reader.\n\n## Commands\n\nWorking:\n\n```\nPRINT 'some string'         # print any string\nPRINT ENDL                  # print a new line\nPRINT $varname              # print the value of a variable\nLED ON                      # turn the LED on\nLED OFF                     # turn the LED off\nPAUSE 123                   # pause for 123 ms\nLET varname = 42            # assign a value to a variable\nGOTO 5                      # skip to the instruction on line 5 (1-based index)\nREAD input                  # read a number with the rotary encoder and store it in a variable\n```\n\nTo be implemented:\n\n* PINMODE 1, 1\n* variable = `\u003cexpr\u003e`\n* IF `\u003cexpr\u003e` THEN cmd\n* FOR variable = start TO end STEP step\n* LOAD \"filename\", SAVE \"filename, DIR, DELETE \"filename\" \n* *and other commands from BASIC*\n\n## Future plans\n\n* Add support for mathematical expressions by implementing a better parser\n* Add built-in APIs to allow LaBASIC programmers to access the file system, serial interface, etc\n* Create an online documentation website with code examples and command reference\n* Allow running LaBASIC programs from the filesystem instead of hardcoding them\n\n## Sources\n\nThe code is available on GitHub: https://github.com/aluxian/UoS-CS2-LaBASIC\n\n## Credits\n\nI got the idea from Robin Edwards' ArduinoBASIC interpreter:\n\n* https://github.com/robinhedwards/ArduinoBASIC\n\nBased on FortunaOS which includes:\n\n* The RIOS Scheduler\n* Peter Dannegger’s Code for the Rotary Encoder\n* Peter Dannegger’s Code for Switch debouncing\n* Steve Gunn’s display driver\n* ChanN’s FAT File System\n\n## Usage\n\n* Install the AVR toolchain and `make`\n* Clone the GitHub repository\n* Edit `main.c` and modify the hardcoded LaBASIC program\n* Connect your LaFortuna board to your computer\n* Run `make` to flash your board\n\n## License\n\n[GNU GPL](LICENSE)\n\nCopyright (c) 2018 Alexandru Rosianu\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faluxian%2FUoS-CS2-LaBASIC","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faluxian%2FUoS-CS2-LaBASIC","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faluxian%2FUoS-CS2-LaBASIC/lists"}