diff --git a/Doxyfile b/Doxyfile index cb9fd7f1..d95c7761 100644 --- a/Doxyfile +++ b/Doxyfile @@ -12,6 +12,7 @@ CALL_GRAPH = YES HAVE_DOT = YES EXTRACT_ALL = YES USE_MATHJAX = YES +EXTRACT_STATIC = YES PLANTUML_JAR_PATH = $(PLANTUML_JAR_PATH) PLANTUML_CFG_FILE = PLANTUML_INCLUDE_PATH = diff --git a/src/pre/pre_date.h b/src/pre/pre_date.h index 866bf89a..88e8d9ff 100644 --- a/src/pre/pre_date.h +++ b/src/pre/pre_date.h @@ -1,5 +1,5 @@ /** - * @link https://stackoverflow.com/questions/11697820/how-to-use-date-and-time-predefined-macros-in-as-two-integers-then-stri + * @li https://stackoverflow.com/questions/11697820/how-to-use-date-and-time-predefined-macros-in-as-two-integers-then-stri */ #ifndef H_PRE_DATE_TBC #define H_PRE_DATE_TBC diff --git a/src/sys/sys_nes_output.c b/src/sys/sys_nes_output.c index c328bf96..8d8cf6b4 100644 --- a/src/sys/sys_nes_output.c +++ b/src/sys/sys_nes_output.c @@ -11,29 +11,29 @@ static void sys_nes_output_init(void); /** * @brief startup PPU, palete, scroll, sprites, nametable... - * @link https://www.nesdev.org/wiki/PPU_registers - * @link https://www.nesdev.org/wiki/PPU_palettes - * @link https://www.nesdev.org/wiki/PPU_scrolling - * @link https://www.nesdev.org/wiki/PPU_OAM + * @li https://www.nesdev.org/wiki/PPU_registers + * @li https://www.nesdev.org/wiki/PPU_palettes + * @li https://www.nesdev.org/wiki/PPU_scrolling + * @li https://www.nesdev.org/wiki/PPU_OAM */ static void sys_nes_output_init() { - /** init PPU */ + /* init PPU */ *((unsigned char*) 0x2000) = 0b10101000; - /** init palette */ + /* init palette */ *((unsigned char*) 0x2006) = 0x3F; *((unsigned char*) 0x2006) = 0x00; - *((unsigned char*) 0x2007) = 0x0F; /**< color 0: black */ - *((unsigned char*) 0x2007) = 0x30; /**< color 1: white */ - *((unsigned char*) 0x2007) = 0x30; /**< color 2: white */ - *((unsigned char*) 0x2007) = 0x30; /**< color 3: white */ + *((unsigned char*) 0x2007) = 0x0F; /** @note color 0: black */ + *((unsigned char*) 0x2007) = 0x30; /** @note color 1: white */ + *((unsigned char*) 0x2007) = 0x30; /** @note color 2: white */ + *((unsigned char*) 0x2007) = 0x30; /** @note color 3: white */ - /** reset scroll */ + /* reset scroll */ *((unsigned char*) 0x2005) = 0x00; *((unsigned char*) 0x2005) = 0x00; - /** hide all sprites */ + /* hide all sprites */ cursor_tty.vram_pack[0] = 0x41; *((unsigned char*) 0x2003) = 0x00; while(--cursor_tty.vram_pack[0]) { @@ -43,7 +43,7 @@ static void sys_nes_output_init() *((unsigned char*) 0x2004) = 0xf0; } - /** clear screen */ + /* clear screen */ cursor_tty.vram_address = 0x2000; *((unsigned char*) 0x2006) = cursor_tty.vram_pack[1]; *((unsigned char*) 0x2006) = cursor_tty.vram_pack[0]; @@ -53,7 +53,7 @@ static void sys_nes_output_init() } while(cursor_tty.vram_address <= (0x2400 - 0x60)); - /** reset cursor position */ + /* reset cursor position */ cursor_tty.vram_address = 0x2020; *((unsigned char*) 0x2006) = cursor_tty.vram_pack[1]; *((unsigned char*) 0x2006) = cursor_tty.vram_pack[0]; @@ -61,20 +61,20 @@ static void sys_nes_output_init() /** * @brief stream text in entire TV screen - * @link https://www.nesdev.org/wiki/PPU_memory_map - * @link https://www.nesdev.org/wiki/PPU_nametables - * @link https://www.nesdev.org/wiki/PPU_registers - * @link https://www.nesdev.org/wiki/NMI_thread - * @link https://www.nesdev.org/wiki/NMI + * @li https://www.nesdev.org/wiki/PPU_memory_map + * @li https://www.nesdev.org/wiki/PPU_nametables + * @li https://www.nesdev.org/wiki/PPU_registers + * @li https://www.nesdev.org/wiki/NMI_thread + * @li https://www.nesdev.org/wiki/NMI */ void sys_nes_output(tbc_app_st *const self) { - /** interator */ + /* interator */ static tbc_u8_t* buffer; static tbc_u8_t index; static tbc_u8_t tile; - /** reset */ + /* reset */ if(self->cache_l3.fixbuf.size < 0) { buffer = self->cache_l3.buffer.storage; self->cache_l3.fixbuf.size = -self->cache_l3.fixbuf.size; @@ -83,57 +83,57 @@ void sys_nes_output(tbc_app_st *const self) } index = 0; - /** first put */ + /* first put */ if (cursor_tty.vram_address == 0) { sys_nes_output_init(); } - /** wait nmi */ + /* wait nmi */ while(*((signed char*) 0x2002) > 0) { continue; } - /** turn off PPU */ + /* turn off PPU */ *((unsigned char*) 0x2001) = 0b00000000; - /** update nametable cursor position */ + /* update nametable cursor position */ *((unsigned char*) 0x2006) = cursor_tty.vram_pack[1]; *((unsigned char*) 0x2006) = cursor_tty.vram_pack[0]; - /** streamming */ + /* streamming */ while(1) { - /** cache tile to improve perfomance */ + /* cache tile to improve perfomance */ tile = buffer[index]; ++index; - /** end of of max size*/ + /* end of of max size*/ if (index > self->cache_l3.fixbuf.size) { break; } - /** terminator */ + /* terminator */ if (tile == '\0') { break; } - /** special char: carrier return */ + /* special char: carrier return */ if (tile == '\r') { - /** ignore */ + /* ignore */ continue; } - /** 0x60 is three lines to end screen */ + /* 0x60 is three lines to end screen */ if (cursor_tty.vram_address >= (0x2400 - 0x60)) { sys_nes_output_init(); index = 0; continue; } - /** special char: tab */ + /* special char: tab */ if (tile == '\t') { /** - * tabulation - * @joke I really don't know how it works! + * @par joke + * I really don't know how this @b tabulation works! */ cursor_tty.vram_address |= 7; *((unsigned char*) 0x2006) = cursor_tty.vram_pack[1]; @@ -141,23 +141,23 @@ void sys_nes_output(tbc_app_st *const self) continue; } - /** special char: break line */ + /* special char: break line */ if (tile == '\n') { - /** line feed */ + /* line feed */ cursor_tty.vram_address += 32; - /** carrier return */ + /* carrier return */ cursor_tty.vram_address &= 0xffe0; - /** update cursor position into the nametable */ + /* update cursor position into the nametable */ *((unsigned char*) 0x2006) = cursor_tty.vram_pack[1]; *((unsigned char*) 0x2006) = cursor_tty.vram_pack[0]; continue; } - /** put character to PPU */ + /* put character to PPU */ *((unsigned char*) 0x2007) = tile; ++cursor_tty.vram_address; } - /** turn on PPU*/ + /* turn on PPU*/ *((unsigned char*) 0x2001) = 0b00011110; } diff --git a/src/util/util_args.c b/src/util/util_args.c index ea4fc533..b3b38014 100644 --- a/src/util/util_args.c +++ b/src/util/util_args.c @@ -1,20 +1,36 @@ +/** + * @file util_args.c + * + * @brief Argument / Parameters Interpreter Utility + * + * @author Rodrigo Dornelles + * + * @details + * This file provides a utility for interpreting arguments passed through + * the command-line interface (CLI) quickly and objectively. + * + * @copyright + * It is distributed under the GNU Affero General Public + * License (AGPL) version 3 or any later version. For more details, please + * refer to https://www.gnu.org/licenses/ + */ + #include "util_args.h" #include "types/types_null.h" /** * @brief verify if exist a flag * @details can be use has @c -h or @c -v for help or version. + * @par Extended Backus-Naur Form + * @startebnf + * single_flag = "-", "a-zA-Z" (* any key *); + * @endebnf * @param[in] argc number of arguments * @param[in] argv array of arguments * @param[in] key single char flag * @return pointer to argument * @retval NULL when not found - * @startebnf - * single_flag - * = "-" - * , "a-zA-Z" (* any key *) - * ; - * @endebnf + * */ char* util_args_has(int argc, char** argv, char key) { char* ret = NULL; @@ -36,18 +52,15 @@ char* util_args_has(int argc, char** argv, char key) { /** * @brief get value of a compound flag * @details can be use has @c -o @c value for ouput some file. + * @par Extended Backus-Naur Form + * @startebnf + * composite_flag = "-", "a-zA-Z" (* any key *), text (* cannot start with "-" *); + * @endebnf * @param[in] argc number of arguments * @param[in] argv array of arguments * @param[in] key single char flag * @return pointer to argument * @retval NULL when not found - * @startebnf - * composite_flag - * = "-" - * , "a-zA-Z" (* any key *) - * , text (* cannot start with "-" *) - * ; - * @endebnf */ char* util_args_get(int argc, char** argv, char key) { char* ret = NULL; diff --git a/src/util/util_dsl.c b/src/util/util_dsl.c index 0f8a178b..2e17a496 100644 --- a/src/util/util_dsl.c +++ b/src/util/util_dsl.c @@ -1,40 +1,18 @@ /** - * @internal - * ___________ _____ _ - * |____ | ___ \/ __ \ | | - * / / |_/ /| / \/ | | __ _ _ __ __ _ _ _ __ _ __ _ ___ - * \ \ ___ \| | | |/ _` | '_ \ / _` | | | |/ _` |/ _` |/ _ \ - * .___/ / |_/ /| \__/\ | | (_| | | | | (_| | |_| | (_| | (_| | __/ - * \____/\____/ \____/ |_|\__,_|_| |_|\__, |\__,_|\__,_|\__, |\___| - * __/ | __/ | - * |___/ |___/ - * @endinternal * @file util_dsl.c * - * @short - * domain specific language utility + * @brief Domain-Specific Language (DSL) Utility * - * @brief - * Utility for writing simple language lexers without precedence tracking + * @author Rodrigo Dornelles + * + * @details + * This file provides a utility for creating simple language lexers without + * precedence tracking. * * @copyright - * Low-level language, tiny virtual machine, intermediate representation, \n - * embeddable, easy for beginners. (Friendly Punched cards) \n - * \n - * Copyright (C) 2020 Rodrigo Dornelles. \n - * \n - * This program is free software: you can redistribute it and/or modify \n - * it under the terms of the GNU Affero General Public License as published \n - * by the Free Software Foundation, either version 3 of the License, \n - * or any later version. \n - * \n - * This program is distributed in the hope that it will be useful, \n - * but WITHOUT ANY WARRANTY; without even the implied warranty of \n - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the \n - * GNU Affero General Public License for more details. \n - * \n - * You should have received a copy of the GNU Affero General Public License \n - * along with this program. If not, see . \n + * It is distributed under the GNU Affero General Public + * License (AGPL) version 3 or any later version. For more details, please + * refer to https://www.gnu.org/licenses/ */ #include @@ -42,12 +20,12 @@ #include "types/types_null.h" /** - * @short parameter divider + * @brief extract tokens fom string * @details Just like a @c split in @b JS and @b Python or - * @c `explode` in @c PHP, this function separates the string text + * @c explode in @c PHP, this function separates the string text * according to the space between keywords giving a maximum number of tokens. * @param[out] dest array of tokens - * @param[out] dest array of token sizes + * @param[out] destn array of token sizes * @param[in] src string * @param[in] dn number of pointers * @param[in] sn lenght of string @@ -140,7 +118,7 @@ tbc_i8_t util_dsl_split(char** dest, tbc_u8_t* destn, char* src, tbc_u8_t dn, tb } /** - * @brief line mark + * @brief extract line from string * @details receives a text and marks the beginning of how many characters it has, * where the comments begin and where they end. * @@ -239,14 +217,15 @@ tbc_i8_t util_dsl_line(char **beg, char **mid, char **end, char *src, tbc_u8_t s } /** - * @short keyword to opcode - * @brief @par find opcode value given a list of keywords + * @short keyword index from string + * @brief find opcode value given a list of keywords * @details binary search optimized for 4-letter keywords in an array * that contains a sorted key and a 2-byte (16bit) value. + * @todo use string instead struct * @note this function is case unsensitive. * @note this function has operation complexity @f$O(log (n))@f$. * @note this function has endless optimization. - * @todo this function has old processors optimization. + * @note this function has old processors optimization. * @param[in] src string source * @param[in] kl keyword list @b (array) of @c tbc_keyword_st * @param[in] kn keyword size @b (bytes)