diff src/text_multilang.inc @ 0:11d4fc797f74

init
author heinrichsweikamp
date Wed, 24 Apr 2013 19:22:45 +0200
parents
children ca4556fb60b9
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/text_multilang.inc	Wed Apr 24 19:22:45 2013 +0200
@@ -0,0 +1,88 @@
+;=============================================================================
+;
+;    File text_multilang.inc
+;
+;    Implementation text in various selectable languages.
+;
+;   Copyright (c) 2011, JD Gascuel, HeinrichsWeikamp, all right reserved.
+;=============================================================================
+; HISTORY
+;  2011-06-12 : [jDG] Creation...
+;
+; Text definitions (text_french.asm example):
+;	TCODE	tYes,   "Oui"               ; Yes
+;   TCODE   tNo,    "Non"               ; No
+;   TCODE   tLogbk, "Carnet de plongées"  ; Logbook
+;
+; Text direct usage:
+;   lfsr    FSR1,tYes                   ; Load a 12bit text index
+;   call    strcpy_text                 ; Copy to string buffer.
+;   PUTC    '/'
+;   lfsr    FSR1,tNo
+;   call    strcat_text_print           ; Append, and call word processor.
+;
+; RATIONALS:
+;  - The macro should define a label so that text files can be reordered
+;    to keep consistency while adding more option (and make translator life easier).
+;
+;  - The text positions is keept in menu blocks for the menu processor.
+;
+;  - library function take text number from the FSR1 register, because a
+;    lfsr instruction loads a 12bits constant at once.
+;
+;=============================================================================
+;
+
+; Pass 1: generate jump table, and define labels.
+TCODE_1 macro   label, text
+tcode_idx set   tcode_idx+1
+    If LANG == 0
+        global  label
+label:
+    Endif
+        dw      t#v(LANG)_#v(tcode_idx)
+        endm
+;
+; Pass 2: generates string table.
+TCODE_2 macro   label, text
+tcode_idx set   tcode_idx+1
+t#v(LANG)_#v(tcode_idx):
+        db      text, 0
+        endm
+;
+;=============================================================================
+; strcpy_text : copy a multiling text into string buffer.
+;
+; Input:   FSR1 :  text index
+; Output:  Buffer: filled with the text.
+;          FSR2:   pointer to end of copied text (the null char).
+; Trashed: WREG.
+        extern  strcpy_text
+
+;=============================================================================
+; strcpy_text_print : Same as above, but calls word processor afterward.
+;
+; Input:   FSR1 :  text index
+; Output:  Buffer: filled with the text.
+;          FSR2:   pointer to end of copied text (the null char).
+; Trashed: WREG.
+        extern  strcpy_text_print
+
+;=============================================================================
+; strcat_text : Append a multiling text to FSR2 pointer.
+;
+; Input:   FSR1 :  text index
+;          FSR2 :  Current position (in Buffer)
+; Output:  FSR2:   pointer to end of copied text (the null char).
+; Trashed: WREG.
+        extern  strcat_text
+
+;=============================================================================
+; strcat_text_print : Same as above, but calls word processor afterward.
+;
+; Input:   FSR1 :  text index
+;          FSR2 :  Current position (in Buffer)
+; Output:  FSR2:   pointer to end of copied text (the null char).
+; Trashed: WREG.
+        extern  strcat_text_print
+