Sujet : Re: portable or not? Volatile strings
De : the.beez.speaks (at) *nospam* gmail.com (Hans Bezemer)
Groupes : comp.lang.forthDate : 21. Aug 2024, 18:12:36
Autres entêtes
Organisation : KPN B.V.
Message-ID : <nnd$274f6c32$10db022f@ea48fe6bf4bc59ed>
References : 1 2 3 4 5 6
User-Agent : Mozilla Thunderbird
On 13-08-2024 06:07, dxf wrote:
On 13/08/2024 5:34 am, albert@spenarnc.xs4all.nl wrote:
...
In my book the code should be
>
" "
"###### "
" ## "
" "
DEF-BRICK BRICK1
>
Instead of
>
DEF-BRICK BRICK1 S" "
S" ###### "
S" ## "
S" "
>
The code (untested) could be
: DEF-BRICK CREATE
2>R 2>R 2>R 2>R
2R> ,, 2R> ,, 2R> ,, 2R> ,,
DOES> ... ;
OTOH it's no less difficult to write...
: M" [CHAR] " PARSE HERE OVER ALLOT SWAP MOVE ;
: DEF-BRICK CREATE DOES> ROT 4 * ROT + 2* CHARS + ;
DEF-BRICK BRICK1 M" "
M" ###### "
M" ## "
M" "
In 4tH, the easiest solution would be:
: BRICK@ ROT + @C SWAP 2* CHARS + ;
CREATE BRICK1
," "
," ###### "
," ## "
," "
DOES> BRICK@ ;
I could throw a bit of preprocessor magic in the mix, so it would resemble your solution even closer, but I guess you can do without ;-)
Hans Bezemer