From 849b2e6945d48b40302bc7f24ebe6dd9d0a98245 Mon Sep 17 00:00:00 2001 From: Denis Knauf Date: Fri, 10 Dec 2010 01:04:21 +0100 Subject: [PATCH] copy. wie geht man am besten mit dem here-stack um? --- presentation.fs | 56 +++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 47 insertions(+), 9 deletions(-) diff --git a/presentation.fs b/presentation.fs index 658b273..a372387 100755 --- a/presentation.fs +++ b/presentation.fs @@ -1,13 +1,51 @@ #! /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 c, 91 c, +: <--> ; +: <_> ; +: <--> ; +: csi c, <_> ; +: csi 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 cells allot ( dst allocated ) + copy copy +; +: " s" ; immediate bye -here ." Dies ist eine Testpresentation" + +" Dies ist eine Testpresentation" +" Eines Tages hatten wir (" @@ " Harald Steinlechner" @@ " und" + " Denis Knauf" " die tolle Idee, eine Presentationssoftware zu schreiben"

+ +" Ergebnis:" +" Das hier"

+ +" Sieht doch garnicht so schlecht aus"

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