;
: farbendemo'' !" ====" ;
: farbendemo'
7 0 +do
i postpone literal postpone
7 0 +do
i postpone literal postpone farbendemo''
loop
postpone
loop
; immediate
: farbendemo farbendemo' ;
256 Constant max-line
Create line-buffer max-line 2 + allot
0 Value fd-in
: open-input ( addr u -- ) r/o open-file throw to fd-in ;
: printsource ( from to addr u -- )
open-input
cr
0
begin
1+
line-buffer max-line fd-in read-line throw
while
swap 2over rot swap over >= if
swap over <= if
dup 0 U.R s" -> " ptype-type swap line-buffer swap ptype-type {br}
else swap drop
endif
else swap drop swap drop
endif
repeat
2drop 2drop
fd-in close-file throw ;
: printCodeHeader ( end start namelen addr -- ) \ prints source code header containing line numbers
swap 2dup type 2swap \ s" (" type 0 U.R s" -" type 0 U.R s" ): " type cr cr type ;
swap 2swap cr printsource cr ; \ type emit emit ;
: {source} ( -- ) ;
: ( -- , xt-{/source} ) ['] {/source} , , , , , ;
!" Dies ist eine Testpraesentation!"
!" Eines Tages hatten wir [" ( ) !" Harald Steinlechner"
!" und " ( ) !" Denis Knauf"
!" ] die tolle Idee, eine Praesentationssoftware zu schreiben."
\
\ <||> !" Forth eignet sich gut für Domain specific languages." ||>
\ <||> !" Makros sind ein Heidenspass." ||>
\ <||> !" Execution tokens erzeugen unseren Code. text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text" ||>
\