0
|
1 ;=============================================================================
|
|
2 ;
|
|
3 ; File strings.asm
|
|
4 ;
|
|
5 ; Implementation code various string functions.
|
|
6 ;
|
|
7 ; Copyright (c) 2011, JD Gascuel, HeinrichsWeikamp, all right reserved.
|
|
8 ;=============================================================================
|
|
9 ; HISTORY
|
|
10 ; 2010-12-02 : [jDG] Creation...
|
|
11 ;
|
|
12
|
|
13 ;=============================================================================
|
|
14 ; Copy a short embebed string at start of the string buffer (letter)
|
|
15 ; Input: (nothing)
|
|
16 ; Output: chars are copied into letter, starting at the beginning.
|
|
17 ; FSR2 point to the first unused char (the NULL termination).
|
|
18 ;
|
|
19 ; Trashed: WREG, TBLPTR, TABLAT, PRODL
|
|
20 ; Note: This are all bank-safe call.
|
|
21 ;
|
|
22 extern strcpy_block
|
|
23 STRCPY macro string
|
|
24 call strcpy_block
|
|
25 DB string, 0
|
|
26 endm
|
|
27
|
|
28 ;=============================================================================
|
|
29 ; A variant of STRCPY that appends chars to the current FSR2 pointer.
|
|
30 ; Input/Output/Trashed : see STRCPY.
|
|
31 extern strcat_block
|
|
32 STRCAT macro string
|
|
33 call strcat_block
|
|
34 DB string, 0
|
|
35 endm
|
|
36
|
|
37 ;=============================================================================
|
|
38 ; A variant of STRCAT when there is just on char to output
|
|
39 ; Input/Output/Trashed : none.
|
|
40 PUTC macro char
|
|
41 movlw char
|
|
42 movwf POSTINC2
|
|
43 endm
|
|
44
|
|
45 ;=============================================================================
|
|
46 ; A variant of STRCPY that send the string to the word processor afterwards.
|
|
47 ; Input/Output: see STRCPY.
|
|
48 ; Trashed: See STRCPY + word_processor. In particular, switch RAM to Bank1
|
|
49 ;
|
|
50 extern strcpy_block_print
|
|
51 STRCPY_PRINT macro string
|
|
52 call strcpy_block_print
|
|
53 DB string, 0
|
|
54 endm
|
|
55
|
|
56 ; Trashed: See STRCPY + word_processor. In particular, switch RAM to Bank1
|
|
57 extern strcat_block_print
|
|
58 STRCAT_PRINT macro string
|
|
59 call strcat_block_print
|
|
60 DB string, 0
|
|
61 endm
|
|
62
|
|
63 ;=============================================================================
|
|
64 ; Subroutines to operate on strings from PROM code
|
|
65 ;
|
|
66 ; Input: TBLPTR : string pointer into PROM.
|
|
67 ; Output: string in buffer, FSR2 pointer on the closing null byte.
|
|
68
|
|
69 extern strcpy_prom, strcat_prom
|
|
70 extern strcpy_prom_print, strcat_prom_print
|
|
71
|
|
72 ;=============================================================================
|
|
73 ; Subroutines and macros to operate on multilingual text
|
|
74 ;
|
|
75 extern strcpy_text
|
|
76 STRCPY_TEXT macro txt
|
|
77 extern txt
|
|
78 lfsr FSR1, txt
|
|
79 call strcpy_text
|
|
80 endm
|
|
81
|
|
82 extern strcpy_text_print
|
|
83 STRCPY_TEXT_PRINT macro txt
|
|
84 extern txt
|
|
85 lfsr FSR1, txt
|
|
86 call strcpy_text_print
|
|
87 endm
|
|
88
|
|
89 extern strcat_text
|
|
90 STRCAT_TEXT macro txt
|
|
91 extern txt
|
|
92 lfsr FSR1, txt
|
|
93 call strcat_text
|
|
94 endm
|
|
95
|
|
96 extern strcat_text_print
|
|
97 STRCAT_TEXT_PRINT macro txt
|
|
98 extern txt
|
|
99 lfsr FSR1, txt
|
|
100 call strcat_text_print
|
|
101 endm
|
|
102
|
|
103 ;=============================================================================
|
|
104 ; A shortcut for the macros WIN_TOP + WIN_LEFT + WIN_FONT + WIN_INVERT.
|
|
105 ; The idea is to replace a 4x6=24 bytes sequence by a more compact 6bytes one.
|
|
106 ;
|
|
107 ; Trashed: TBLPTR, TABLAT, WREG.
|
|
108 ; Note: This are all bank-safe call.
|
|
109 extern start_tiny_block
|
|
110 WIN_TINY macro x, y
|
|
111 call start_tiny_block
|
|
112 DB x, y
|
|
113 endm
|
|
114
|
|
115 extern start_tiny_invert_block
|
|
116 WIN_TINY_INVERT macro x, y
|
|
117 call start_tiny_invert_block
|
|
118 DB x, y
|
|
119 endm
|
|
120
|
|
121 extern start_small_block
|
|
122 WIN_SMALL macro x, y
|
|
123 call start_small_block
|
|
124 DB x, y
|
|
125 endm
|
|
126
|
|
127 extern start_small_invert_block
|
|
128 WIN_SMALL_INVERT macro x, y
|
|
129 call start_small_invert_block
|
|
130 DB x, y
|
|
131 endm
|
|
132
|
|
133 extern start_std_block
|
|
134 WIN_STD macro x, y
|
|
135 call start_std_block
|
|
136 DB x, y
|
|
137 endm
|
|
138
|
|
139 extern start_std_invert_block
|
|
140 WIN_STD_INVERT macro x, y
|
|
141 call start_std_invert_block
|
|
142 DB x, y
|
|
143 endm
|
|
144
|
|
145 extern start_medium_block
|
|
146 WIN_MEDIUM macro x, y
|
|
147 call start_medium_block
|
|
148 DB x, y
|
|
149 endm
|
|
150
|
|
151 extern start_medium_invert_block
|
|
152 WIN_MEDIUM_INVERT macro x, y
|
|
153 call start_medium_invert_block
|
|
154 DB x, y
|
|
155 endm
|
|
156
|
|
157 extern start_large_block
|
|
158 WIN_LARGE macro x, y
|
|
159 call start_large_block
|
|
160 DB x, y
|
|
161 endm
|
|
162
|
|
163 extern start_large_invert_block
|
|
164 WIN_LARGE_INVERT macro x, y
|
|
165 call start_large_invert_block
|
|
166 DB x, y
|
|
167 endm
|
|
168
|
|
169 ;=============================================================================
|
|
170 ; Shortcuts for compact display programmings.
|
|
171 TEXT_TINY macro x, y, txt
|
|
172 WIN_TINY x,y
|
|
173 STRCPY_TEXT_PRINT txt
|
|
174 endm
|
|
175
|
|
176 TEXT_SMALL macro x, y, txt
|
|
177 WIN_SMALL x,y
|
|
178 STRCPY_TEXT_PRINT txt
|
|
179 endm
|
|
180
|
|
181 TEXT_SMALL_INVERT macro x, y, txt
|
|
182 WIN_SMALL_INVERT x,y
|
|
183 STRCPY_TEXT_PRINT txt
|
|
184 endm
|
|
185
|
|
186 TEXT_MEDIUM macro x, y, txt
|
|
187 WIN_MEDIUM x,y
|
|
188 STRCPY_TEXT_PRINT txt
|
|
189 endm
|
|
190
|
|
191 TEXT_LARGE macro x, y, txt
|
|
192 WIN_LARGE x,y
|
|
193 STRCPY_TEXT_PRINT txt
|
|
194 endm
|
|
195
|
|
196 STRING_TINY macro x, y, string
|
|
197 WIN_SMALL x,y
|
|
198 STRCPY_PRINT string
|
|
199 endm
|
|
200
|
|
201 STRING_SMALL macro x, y, string
|
|
202 WIN_SMALL x,y
|
|
203 STRCPY_PRINT string
|
|
204 endm
|
|
205
|
|
206 STRING_MEDIUM macro x, y, string
|
|
207 WIN_MEDIUM x,y
|
|
208 STRCPY_PRINT string
|
|
209 endm
|
|
210
|
|
211 STRING_LARGE macro x, y, string
|
|
212 WIN_LARGE x,y
|
|
213 STRCPY_PRINT string
|
|
214 endm
|
|
215
|