;;******************************************************************************** ;; @mainpage 8-bit Breadboard Computer with W65C02S Processor ;; This repo contains the assembly code for my [6502-project](https://quintern.xyz/de/posts/2021_6502). ;; ;; The assembler used for this project is the excellent [ca65](https://github.com/cc65/cc65). ;; After assembling it, the binary is loaded onto the EEPROM using [my *eeprom.py* script](https://git.quintern.xyz/MatthiasQuintern/AT28C256-rpi-util) on a Raspberry Pi 4B. ;; ;; @section main_os Operating System ;; ... is probably a far stretch, since it is just the programs I wrote pieced together. My "OS" consists of these functionalities: ;; - Supported Hardware: ;; - 4x4 Matrix Keypad ;; - 4x16 Characters LCD Display ;; - PS/2 Keyboard ;; - SPI Connection to an Arduino ;; - Software ;; - @ref ps2_keyboard_printer "Keyboard" and @ref keypad_printer "keypad printer": Prints the characters you press on to the lcd ;; ;; - @ref print_slow "(Stylishly)" print @ref "str::strf" "formated strings" to the LCD ;; - @ref sleep "Sleep" ;; - Send @ref ps2_keyboard_util "various commands" to the keyboard ;; - @ref ringbuffer "Ringbuffer" ;; ;; > It's not much, but it's honest work. ;; ;; @section main_hardware Hardware details ;; @subsection main_hw_addr Address Space ;; |Name|From|To|r/w| ;; |---|---:|---:|:---:| ;; |ZEROPAGE |$00 |$ff |`rw`| ;; |STACK |$100 |$1ff |`rw`| ;; |RAM |$200 |$4fff |`rw`| ;; |SPI |$5000 |$5fff |`rw`| ;; |VIA1 |$6000 |$600f |`rw`| ;; |VIA2 |$7000 |$700f |`rw`| ;; |ROM |$8000 |$ffff |`r `| ;; ;; ;; @section main_software Software details ;; @subsection main_sw_naming Naming conventions ;; leading underscors `_` indicate a "private" label/variable, that is meant for internal use within the module only. ;; ;; **Labels**: ;; - **scopes**: snake case ;; - **subroutines** and **variables**: snake case (`scope::(_)fname_snake_case` or `scope::(_)varname_2`) ;; - **macros**: camel case (`(_)GoodMacroname` or `scope_GoodMacroname`) ;; - **constants** (eg. in ROM): upper case (`scope::(_)NICE_SYMBOLNAME`) ;; - **enums**: upper case (`scope::(_)ENUM_NAME::ENUM_MEMBER`) ;;******************************************************************************** ;;******************************************************************************** ;; @defgroup applications ;; @brief Applications that do ... *something* ;; ;;******************************************************************************** ;;******************************************************************************** ;; @defgroup drivers ;; @brief Code that handles a physical device ;; ;;******************************************************************************** ;;******************************************************************************** ;; @defgroup utility ;; @brief Code that does something useful and is intended to be used in other code ;; ;;******************************************************************************** ;;******************************************************************************** ;; @defgroup system ;; @brief Core code ;; ;;********************************************************************************