#! /usr/bin/gforth : copy ( addrdst addrsrc len -- addrdstend ) over ( dst src len src ) + swap ( dst end src ) do ( dst+ ) i ( dst+ src+ ) c@ ( dst+ chr ) over ( dst+ chr dst+ ) c! ( dst+ ) 1+ loop ; : 0 ; : page_steps ( 0 [x] -- 0 x ) \ x muss ungleich 0 sein. falls x nicht vorhanden: 1 dup 0= if 1 then ; : n ( 0 [x] -- 0 ) page_steps ( ... x seiten weiterspringen ... ) ; : csi 27 91 ; : ( -- addr 0 ) 2 c, here 0 ; : ( addr len -- ) 3 c, swap ! ; :

( -- addr 0 ) 4 c, here 0 ; :

( addr len -- ) 5 c, swap ! ; : ( -- ) 6 c, ; : ( -- ) 7 c, ; : ( -- ) 8 c, ; : ( -- ) 9 c, ; \ : begin , 0<> until ; \ : <+> ( addr1 len1 addr2 len2 -- addrdst lendst ) \ rot 2dup + here ( addr1 addr2 len2 len1 lendst addrdst ) \ 2-rot -rot ( lendst addrdst addr1 len1 addr2 len2 ) \ 2swap 2rot ( addr2 len2 addr1 len1 lendst addrdst ) \ 2dup chars allot ( dst allocated ) \ copy copy \ ; : !! ( len addr len -- len ) 1 c, dup rot , , + ; bye s" Dies ist eine Testpresentation" !!

s" Eines Tages hatten wir (" !! s" Harald Steinlechner" !! s" und" !! s" Denis Knauf" !! s" die tolle Idee, eine Presentationssoftware zu schreiben" !!

s" Ergebnis:" !!

s" Das hier" !!

s" Sieht doch garnicht so schlecht aus" !!

\ presentation ist gestartet: erste Seite wird angezeigt n \ zweite Seite p \ erste Seite 2 n \ dritte Seite