Mercurial > public > hwos_code
diff src/strings.inc @ 0:11d4fc797f74
init
author | heinrichsweikamp |
---|---|
date | Wed, 24 Apr 2013 19:22:45 +0200 |
parents | |
children | e79bc535ef9e |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/strings.inc Wed Apr 24 19:22:45 2013 +0200 @@ -0,0 +1,215 @@ +;============================================================================= +; +; File strings.asm +; +; Implementation code various string functions. +; +; Copyright (c) 2011, JD Gascuel, HeinrichsWeikamp, all right reserved. +;============================================================================= +; HISTORY +; 2010-12-02 : [jDG] Creation... +; + +;============================================================================= +; Copy a short embebed string at start of the string buffer (letter) +; Input: (nothing) +; Output: chars are copied into letter, starting at the beginning. +; FSR2 point to the first unused char (the NULL termination). +; +; Trashed: WREG, TBLPTR, TABLAT, PRODL +; Note: This are all bank-safe call. +; + extern strcpy_block +STRCPY macro string + call strcpy_block + DB string, 0 + endm + +;============================================================================= +; A variant of STRCPY that appends chars to the current FSR2 pointer. +; Input/Output/Trashed : see STRCPY. + extern strcat_block +STRCAT macro string + call strcat_block + DB string, 0 + endm + +;============================================================================= +; A variant of STRCAT when there is just on char to output +; Input/Output/Trashed : none. +PUTC macro char + movlw char + movwf POSTINC2 + endm + +;============================================================================= +; A variant of STRCPY that send the string to the word processor afterwards. +; Input/Output: see STRCPY. +; Trashed: See STRCPY + word_processor. In particular, switch RAM to Bank1 +; + extern strcpy_block_print +STRCPY_PRINT macro string + call strcpy_block_print + DB string, 0 + endm + +; Trashed: See STRCPY + word_processor. In particular, switch RAM to Bank1 + extern strcat_block_print +STRCAT_PRINT macro string + call strcat_block_print + DB string, 0 + endm + +;============================================================================= +; Subroutines to operate on strings from PROM code +; +; Input: TBLPTR : string pointer into PROM. +; Output: string in buffer, FSR2 pointer on the closing null byte. + + extern strcpy_prom, strcat_prom + extern strcpy_prom_print, strcat_prom_print + +;============================================================================= +; Subroutines and macros to operate on multilingual text +; + extern strcpy_text +STRCPY_TEXT macro txt + extern txt + lfsr FSR1, txt + call strcpy_text + endm + + extern strcpy_text_print +STRCPY_TEXT_PRINT macro txt + extern txt + lfsr FSR1, txt + call strcpy_text_print + endm + + extern strcat_text +STRCAT_TEXT macro txt + extern txt + lfsr FSR1, txt + call strcat_text + endm + + extern strcat_text_print +STRCAT_TEXT_PRINT macro txt + extern txt + lfsr FSR1, txt + call strcat_text_print + endm + +;============================================================================= +; A shortcut for the macros WIN_TOP + WIN_LEFT + WIN_FONT + WIN_INVERT. +; The idea is to replace a 4x6=24 bytes sequence by a more compact 6bytes one. +; +; Trashed: TBLPTR, TABLAT, WREG. +; Note: This are all bank-safe call. + extern start_tiny_block +WIN_TINY macro x, y + call start_tiny_block + DB x, y + endm + + extern start_tiny_invert_block +WIN_TINY_INVERT macro x, y + call start_tiny_invert_block + DB x, y + endm + + extern start_small_block +WIN_SMALL macro x, y + call start_small_block + DB x, y + endm + + extern start_small_invert_block +WIN_SMALL_INVERT macro x, y + call start_small_invert_block + DB x, y + endm + + extern start_std_block +WIN_STD macro x, y + call start_std_block + DB x, y + endm + + extern start_std_invert_block +WIN_STD_INVERT macro x, y + call start_std_invert_block + DB x, y + endm + + extern start_medium_block +WIN_MEDIUM macro x, y + call start_medium_block + DB x, y + endm + + extern start_medium_invert_block +WIN_MEDIUM_INVERT macro x, y + call start_medium_invert_block + DB x, y + endm + + extern start_large_block +WIN_LARGE macro x, y + call start_large_block + DB x, y + endm + + extern start_large_invert_block +WIN_LARGE_INVERT macro x, y + call start_large_invert_block + DB x, y + endm + +;============================================================================= +; Shortcuts for compact display programmings. +TEXT_TINY macro x, y, txt + WIN_TINY x,y + STRCPY_TEXT_PRINT txt + endm + +TEXT_SMALL macro x, y, txt + WIN_SMALL x,y + STRCPY_TEXT_PRINT txt + endm + +TEXT_SMALL_INVERT macro x, y, txt + WIN_SMALL_INVERT x,y + STRCPY_TEXT_PRINT txt + endm + +TEXT_MEDIUM macro x, y, txt + WIN_MEDIUM x,y + STRCPY_TEXT_PRINT txt + endm + +TEXT_LARGE macro x, y, txt + WIN_LARGE x,y + STRCPY_TEXT_PRINT txt + endm + +STRING_TINY macro x, y, string + WIN_SMALL x,y + STRCPY_PRINT string + endm + +STRING_SMALL macro x, y, string + WIN_SMALL x,y + STRCPY_PRINT string + endm + +STRING_MEDIUM macro x, y, string + WIN_MEDIUM x,y + STRCPY_PRINT string + endm + +STRING_LARGE macro x, y, string + WIN_LARGE x,y + STRCPY_PRINT string + endm +