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
+