{"id":44938789,"url":"https://github.com/adumont/hb6502","last_synced_at":"2026-02-18T08:02:59.499Z","repository":{"id":48967382,"uuid":"369618461","full_name":"adumont/hb6502","owner":"adumont","description":"My Homebrew 6502 breadboard computer with my own #FORTH implementation","archived":false,"fork":false,"pushed_at":"2024-02-05T22:51:09.000Z","size":20697,"stargazers_count":30,"open_issues_count":0,"forks_count":0,"subscribers_count":7,"default_branch":"main","last_synced_at":"2024-04-28T05:53:17.100Z","etag":null,"topics":["6502","6502-assembly","breadboard-computer","forth"],"latest_commit_sha":null,"homepage":"","language":"Assembly","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/adumont.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}},"created_at":"2021-05-21T18:11:47.000Z","updated_at":"2024-04-17T11:29:22.000Z","dependencies_parsed_at":"2023-11-15T20:43:04.113Z","dependency_job_id":null,"html_url":"https://github.com/adumont/hb6502","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/adumont/hb6502","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adumont%2Fhb6502","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adumont%2Fhb6502/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adumont%2Fhb6502/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adumont%2Fhb6502/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/adumont","download_url":"https://codeload.github.com/adumont/hb6502/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adumont%2Fhb6502/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29573403,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-18T07:57:19.261Z","status":"ssl_error","status_checked_at":"2026-02-18T07:57:18.820Z","response_time":162,"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":["6502","6502-assembly","breadboard-computer","forth"],"created_at":"2026-02-18T08:02:45.735Z","updated_at":"2026-02-18T08:02:59.492Z","avatar_url":"https://github.com/adumont.png","language":"Assembly","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Homebrew 6502 SBC\n\n- [Homebrew 6502 SBC](#homebrew-6502-sbc)\n- [Introduction](#introduction)\n- [Hardware](#hardware)\n  - [Schematics](#schematics)\n  - [Memory Map](#memory-map)\n- [Software](#software)\n  - [Monitor](#monitor)\n  - [AlexFORTH for 6502](#alexforth-for-6502)\n- [Datasheets](#datasheets)\n- [References](#references)\n\n# Introduction\n\nThis project is about building a single board 65c02 computer.\n\nIt's powered by a WDC 65C02s CPU driven by a 1.8432MHz oscillator clock, with 32KB of SRAM (only 16K used), 32K of ROM, a 65c22 VIA interface, a 6551 ACIA serial interface, and an 20x4 LCD screen.\n\nThe ROM is programmed using my self-made [EEPROM programmer](programmer/README.md).\n\n# Hardware\n\n![](sbc/imgs/IMG_20210507_202922_616.jpg)\n\n## Schematics\n\n[Schematics in PDF format](sbc/schematics/easyeda/Schematic_6502.pdf).\n\n![](sbc/schematics/easyeda/Schematic_6502.png)\n\n## Memory Map\n\nThe address decoding logic is following the one described by Garth Wilson in his [6502 Primer, Address decoding](https://wilsonminesco.com/6502primer/addr_decoding.html) page. The corresponding schematics is:\n\n![](https://wilsonminesco.com/6502primer/32kROM16kRAMlogic.jpg)\n(picture by Garth Wilson from his 6502 Primer)\n\n| Address       | Component  |\n| ------------- | ---------- |\n| `$0000-$3FFF` | RAM (16KB) |\n| `$4200-$4203` | ACIA       |\n| `$6000-$600F` | VIA        |\n| `$8000-$FFFF` | ROM (32KB) |\n\n# Software\n\n## Monitor\n\nAt the moment the monitor is very rudimentary, but it serves its purpose.\n\nMonitor will show content at ADDR. You can type:\n- a new ADDR (4 char, hex): this will set ADDR to the new value, and display the content. For ex. `04F0`\n- a value (2 char, hex): this will store the value at ADDR. For ex. `FB`\n- `'` followed by a char: store the char at ADDR. For ex. `'A`\n- `j` restore registers to saved values and jump to ADDR\n- `c` continue (after a BRK). restore registers to saved values, set ADDR to saved PC (after BRK) and jump to ADDR\n\nRegisters manipulation (saved values):\n- `aXX` : store XX (hex) in A\n- `xXX` : store XX (hex) in X\n- `yXX` : store XX (hex) in Y\n- `sXX` : store XX (hex) in S\n- `pXX` : store XX (hex) in P\n- `r`   : print registers value\n\nEarly demo of the Monitor in Kowalksi 6502 simulator:\n\n![](monitor/imgs/monitor.gif)\n\n## AlexFORTH for 6502\n\nI have implemented my own FORTH kernel for this Homebrew 6502.\n\n![](forth/imgs/Forth.png)\n\nRead more here [hb6502/forth](https://github.com/adumont/hb6502/tree/main/forth#alexforth-for-6502).\n\n# Datasheets\n\n- [W65C02S 8–bit Microprocessor](datasheets/w65c02s.pdf)\n- [W65C22S Versatile Interface Adapter (VIA)](datasheets/wdc_W65C22S_datasheet_mar_2004.pdf)\n- [HD44780U LCD Controller/Driver](datasheets/HD44780.pdf)\n- [UM61256FK-15 32K x 8 Bit SRAM](datasheets/UM61256FK-15_SRAM.pdf)\n- [AT28C256 32K x8 Paged Parallel EEPROM](datasheets/AT28C256.pdf)\n- [HD44780U LCD Controller/Driver](datasheets/HD44780.pdf)\n- [SN74HC00 Quadruple 2-Input NAND Gates](datasheets/SN74HC00.pdf)\n- [SN74HC138 3-Line To 8-Line Decoders/Demultiplexers](datasheets/SN74HC138.pdf)\n- [SN74HC245 Octal Bus Transceivers With 3-State Outputs](datasheets/SN74HC245.pdf)\n\n# References\n\n- [Build a 6502 computer | Ben Eater](https://eater.net/6502)\n- [6502 PRIMER: Building your own 6502 computer](https://wilsonminesco.com/6502primer/)\n  - [Address Decoding](https://wilsonminesco.com/6502primer/addr_decoding.html)\n- [ca65 Users Guide](https://cc65.github.io/doc/ca65.html)\n- [6502 Instruction Set](https://www.masswerk.at/6502/6502_instruction_set.html)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fadumont%2Fhb6502","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fadumont%2Fhb6502","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fadumont%2Fhb6502/lists"}