1 /* yForth? - Written by Luca Padovani (C) 1996/97
2 * ------------------------------------------------------------------------
3 * This software is FreeWare as long as it comes with this header in each
4 * source file, anyway you can use it or any part of it whatever
5 * you want. It comes without any warranty, so use it at your own risk.
6 * ------------------------------------------------------------------------
17 /**************************************************************************/
18 /* WORDS ******************************************************************/
19 /**************************************************************************/
21 void _dash_trailing() {
22 register Char *s = (Char *) sp[1];
23 register int i = sp[0];
24 while (i-- > 0) if (!isspace(s[i])) break;
28 void _slash_string() {
29 register Cell n = *sp++;
30 sp[1] = (Cell) ((Char *) sp[1] + n);
35 register UCell u = (UCell) *sp++;
36 register Char *s = (Char *) *sp++;
37 if (u) memset(s, ' ', u);
41 register UCell u = (UCell) *sp++;
42 register Char *dest = (Char *) *sp++;
43 register Char *source = (Char *) *sp++;
44 while (u--) *dest++ = *source++;
48 register UCell u = (UCell) *sp++;
49 register Char *dest = (Char *) *sp++ + u;
50 register Char *source = (Char *) *sp++ + u;
51 while (u--) *--dest = *--source;
55 register UCell u2 = (UCell) *sp++;
56 register Char *s2 = (Char *) *sp++;
57 register UCell u1 = (UCell) *sp++;
58 register Char *s1 = (Char *) *sp;
59 register UCell m = u2 <= u1 ? u2 : u1;
61 if (*s1 != *s2) break;
66 if (u1 == u2 && !m) *sp = 0;
67 else if (!m) *sp = u1 < u2 ? -1 : 1;
68 else *sp = *s1 < *s2 ? -1 : 1;
72 register UCell u2 = (UCell) *sp++;
73 register Char *s2 = (Char *) sp[0];
74 register UCell u1 = (UCell) sp[1];
75 register Char *s1 = (Char *) sp[2];
76 if (u2 > u1) *sp = FFLAG(0);
98 register UCell u = (UCell) *sp++;
99 register Char *s = (Char *) *sp++;
100 compile_cell((Cell) _do_literal);
101 compile_cell((Cell) s);
102 compile_cell((Cell) _do_literal);
103 compile_cell((Cell) u);