68 lines
3.2 KiB
Plaintext
68 lines
3.2 KiB
Plaintext
;;********************************************************************************
|
|
;; @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
|
|
;; <!-- - Temperature: Shows the temperature using a dht sensor. *Work in progress, this does not work yet* -->
|
|
;; - @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
|
|
;;
|
|
;;********************************************************************************
|
|
|