{"id":16984182,"url":"https://github.com/floooh/vscode-kcide","last_synced_at":"2025-03-17T09:30:28.853Z","repository":{"id":207166619,"uuid":"718574015","full_name":"floooh/vscode-kcide","owner":"floooh","description":"Retro assembly IDE for VSCode","archived":false,"fork":false,"pushed_at":"2025-02-09T13:26:07.000Z","size":6215,"stargazers_count":54,"open_issues_count":4,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-02-27T21:49:50.556Z","etag":null,"topics":["6502","assembly","c64","cpc","kc85","retrocomputing","z80"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","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/floooh.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-11-14T11:16:38.000Z","updated_at":"2025-02-13T00:18:57.000Z","dependencies_parsed_at":null,"dependency_job_id":"509bb196-d092-4a30-81fc-ecd5287d077a","html_url":"https://github.com/floooh/vscode-kcide","commit_stats":null,"previous_names":["floooh/vscode-kcide"],"tags_count":21,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/floooh%2Fvscode-kcide","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/floooh%2Fvscode-kcide/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/floooh%2Fvscode-kcide/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/floooh%2Fvscode-kcide/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/floooh","download_url":"https://codeload.github.com/floooh/vscode-kcide/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243853683,"owners_count":20358461,"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":["6502","assembly","c64","cpc","kc85","retrocomputing","z80"],"created_at":"2024-10-14T02:30:25.449Z","updated_at":"2025-03-17T09:30:28.846Z","avatar_url":"https://github.com/floooh.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"An assembler IDE for 8-bit home computers (currently KC85/3, KC85/4, C64 and Amstrad CPC) with integrated assembler and debugger.\n\n## Screenshots\n\n![screenshot-1](/screenshots/vscode-kcide-1.webp)\n\n![screenshot-4](/screenshots/vscode-kcide-4.webp)\n\n![screenshot-5](/screenshots/vscode-kcide-5.webp)\n\n![screenshot-3](/screenshots/vscode-kcide-3.webp)\n\n\n## Quickstart\n\n- clone https://github.com/floooh/kcide-sample\n- open VSCode in one of the following subdirectories:\n  - `kc854/`: for the KC85/4 sample\n  - `c64/`: for the C64 sample\n  - `cpc/`: for the Amstrad CPC sample\n- the extension should detect the `kcide.project.json` file and activate itself\n  (a new tab should open with the embedded emulator)\n- open the `src/main.asm` file, and hit **F7**, you should see a message\n  `Output written to ...`, and a new subdirectory `build/` should have been\n  created with the files `out.hex`, `out.lst` and `out.map`, and a system-specific\n  binary file (`out.kcc`, `out.prg` or `out.bin`)\n- with the `src/main` file loaded and active, press **F5** to start a debug session\n- explore additional features by opening the VSCode command palette and typing `kcide`\n\n## Feature Overview\n\n- build the project into a KCC or PRG file by pressing **F7**\n- build and debug the project by pressing **F5**\n- explore additional commands in the command palette by typing `kcide`\n- the assembler is a slightly extended [ASMX](http://svn.xi6.com/svn/asmx/branches/2.x/asmx-doc.html) compiled to WASI, the changes are tracked [here](https://github.com/floooh/easmx)\n- the emulators are taken from the [chips project](https://floooh.github.io/tiny8bit/) compiled to WASM+WebGL, running in a VSCode tab\n- original syntax highlighting https://github.com/mborik/z80-macroasm-vscode/blob/main/syntaxes/z80-macroasm.tmLanguage.json,\n  extended for 6502 assembler syntax and special ASMX keywords\n- during a debug session, you can change into the 'raw' disassembly view at any time by running the palette command `Open Disassembly View`, this also happens automatically when stepping into code\nthat's not part of the project (such as operating system code)\n- you can inspect memory by hovering over a CPU register in the VSCode `Variables` panel and clicking\nthe 'binary' icon with the tooltip `View Binary Data`, however note that the emulator's integrated\ndebugging UI has a much more powerful memory viewer and editor than what VSCode can provide through the Debug Adapter Protocol\n\n## Starting a new KC85 project\n\n- create a new project directory and cd into it\n- create a file `project.kcide.json` looking like this, tweak the attributes as needed (the extension provides a JSON schema to VSCode to provide completion and validation):\n\n  ```json\n  {\n    \"emulator\": {\n        \"system\": \"KC85/4\"\n    },\n    \"assembler\": {\n        \"srcDir\": \"src\",\n        \"mainSourceFile\": \"main.asm\",\n        \"cpu\": \"Z80\",\n        \"outDir\": \"build\",\n        \"outBaseFilename\": \"hello\",\n        \"outFiletype\": \"KCC\"\n    }\n  }\n  ```\n- ...also put the `outDir` value into your `.gitignore`\n- create a directory `src/` and in it a file `main.asm` execution will start\n  at the label `_start`:\n\n  ```asm\n      org 200h\n  _start:\n      ld a,5\n      ld b,6\n      add a,b\n      ret\n  ```\n\n- test building by pressing **F7** or running the palette command `KCIDE: Build`\n- test debugging by pressing **F5** or running the palette command `KCIDE: Debug`\n\n## Starting a new C64 project\n\n- create a new project directory and cd into it\n- create a file `project.kcide.json` looking like this, tweak the attributes as needed (the extension provides a JSON schema to VSCode to provide completion and validation):\n\n  ```json\n  {\n      \"emulator\": {\n          \"system\": \"C64\"\n      },\n      \"assembler\": {\n          \"cpu\": \"6502\",\n          \"srcDir\": \"src\",\n          \"mainSourceFile\": \"main.asm\",\n          \"outDir\": \"build\",\n          \"outBaseFilename\": \"out\",\n          \"outFiletype\": \"PRG\"\n      }\n  }\n  ```\n- ...also put the `outDir` value into your `.gitignore`\n- create a directory `src/` and in it a file `main.asm` execution will start\n  at the label `_start`\n\n  ```asm\n        org $801\n  _start:\n        lda #5\n        clc\n        adc #6\n        rts\n  ```\n\n- test building by pressing **F7** or running the palette command `KCIDE: Build`\n- test debugging by pressing **F5** or running the palette command `KCIDE: Debug`\n- for a more 'idiomatic' C64 PRG sample, check the example project here: https://github.com/floooh/kcide-sample/tree/main/c64\n\n## Starting a new Amstrad CPC project\n\n- create a new project directory and cd into it\n- create a file `project.kcide.json` looking like this, tweak the attributes as needed (the extension provides a JSON schema to VSCode to provide completion and validation):\n\n  ```json\n  {\n      \"emulator\": {\n          \"system\": \"CPC6128\"\n      },\n      \"assembler\": {\n          \"cpu\": \"Z80\",\n          \"srcDir\": \"src\",\n          \"mainSourceFile\": \"main.asm\",\n          \"outDir\": \"build\",\n          \"outBaseFilename\": \"out\",\n          \"outFiletype\": \"AMSDOS_BIN\"\n      }\n  }\n  ```\n- ...also put the `outDir` value into your `.gitignore`\n- create a directory `src/` and in it a file `main.asm` execution will start\n  at the label `_start`\n\n  ```asm\n      org 4000h\n  _start:\n      ld a,5\n      ld b,6\n      add a,b\n      ret\n  ```\n\n- test building by pressing **F7** or running the palette command `KCIDE: Build`\n- test debugging by pressing **F5** or running the palette command `KCIDE: Debug`\n- for a more 'idiomatic' C64 PRG sample, check the example project here: https://github.com/floooh/kcide-sample/tree/main/c64\n\n\n## The integrated debugging UI\n\nThe emulator comes with an integrated debugging UI implemented with [Dear ImGui](https://github.com/ocornut/imgui) which is much more powerful than what the VSCode debug adapter protocol can provide:\n\n![screenshot-2](/screenshots/vscode-kcide-2.webp)\n\n- the integrated CPU debugger allows to step in single clock cycles instead of full instructions\n  and displays the actual cycle count of executed instructions\n- more powerful breakpoints:\n  - break on memory access\n  - break on IO access\n  - break on interrupts\n  - break on specific raster scanlines (C64 only)\n- a much more powerful memory view/edit window\n- an execution history window\n- status windows for the CPU and system chips\n- ...and more\n\n## Running in VSCode for Web\n\nAlthough not the main focus, the extension also runs in the VSCode web version:\n\n![screenshot-6](/screenshots/vscode-kcide-6.webp)\n\nFor example:\n\n- goto https://github.com/floooh/kcide-sample-kc854 and press the '.' (dot) key to start into VSCode for Web\n- after a few seconds a popup should ask for installing recommended extensions\n- once the KC IDE extension is installed, it should activate itself and start the KC85/4 emulator\n- load the main.asm file, and press F5 to start into the debugger\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffloooh%2Fvscode-kcide","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffloooh%2Fvscode-kcide","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffloooh%2Fvscode-kcide/lists"}