10.01.2015 Views

1 - Forth Interest Group

1 - Forth Interest Group

1 - Forth Interest Group

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

: UP-STRING (au--)<br />

0 DO DUP C@ UP-CHAR OVER C! CHAR+ LOOP DROP<br />

SEE UP-STRING CR<br />

The third time the file is included:<br />

ANEW Up-Char-Test-Run<br />

1 Up-Char-Test +! CR . ( Test# ) Up-Char-Test CR<br />

CREATE upper-case-map<br />

256 CHARS ALLOT<br />

( Initialize the map to change characters into themselves. )<br />

:: 256 0 DO I upper-case-map I CHARS + C! LOOP ;;<br />

( Replace the lower-case letters with upper-case. )<br />

:: [ CHAR] a 26 BOUNDS DO<br />

I BL XOR upper-case-map I CHARS + C! LOOP<br />

. . , ,<br />

( Convert to upper-case by 'addr + C@' inline. )<br />

: UP-CHAR S" CHARS upper-case-map + C@ " EVALUATE ; IMMEDIATE<br />

: DOWN-CHAR BL XOR UP-CHAR BL XOR ;<br />

( Convert string to upper-case. )<br />

: UP-STRING (au--1<br />

0 DO DUP C@ UP-CHAR OVER C! CHAR+ LOOP DROP<br />

SEE UP-STRING CR<br />

Source Listing<br />

1 LACKING Up-Char-Test VARIABLE Up-Char-Test 0 Up-Char-Test !<br />

3 ANEW Up-Char-Test-Run<br />

/ 5 1 Up-Char-Test +! CR . ( Test# ) Up-Char-Test CR<br />

I<br />

I<br />

7 Up-Char-Test @ 1 = [ IF]<br />

: BETWEEN 1+ WITHIN ; ( x min max -- flag )<br />

11 : UP-CHAR ( c -- C ) DUP [ CHAR] a &CHAR] z BETWEEN BL AND XOR ;<br />

13 SEE WITHIN SEE BETWEEN SEE UP-CHAR<br />

1 15 [ ELSE]<br />

I<br />

17 Up-Char-Test @ 2 = [ IF]<br />

I<br />

19 ( Eliminate nesting UP-CHAR BETWEEN WITHIN )<br />

2 0 : UP-CHAR (c--C)<br />

2 1 S" DUP [ CHAR] a - 26 U< BL AND XOR " EVALUATE<br />

22 ; IMMEDIATE<br />

Continued on page 27 /<br />

<strong>Forth</strong> Dimensions XlWl 29

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!