Screen 0 not modified 0 \ cas 11nov05 1 The word STREAM>BLK convert a sequiential file with CR lineend 2 into a screenfile with 64 Chars per line. 3 4 Example: 5 FORTH.TXT is a Forth-Sourceode in a sequiential file 6 7 MAKEFILE FORTH.FB will create an empty screenfile 8 FROM FORTH.TXT will define the inputfile 9 STREAM>BLK will convert FORTH.TXT into FORTH.FB 10 11 12 13 14 15 Screen 1 not modified 0 \ ks 06 jul 88 1 Onlyforth Dos also 2 3 | : in ( -- fcb ) fromfile @ ; 4 | : out ( -- fcb ) isfile @ ; 5 6 | : padd ( cnt -- ) dup IF c/l mod ?dup 0=exit THEN 7 c/l swap ?DO BL out fputc LOOP ; 8 9 | : skipctrl ( -- char ) 10 BEGIN in fgetc dup #cr = ?exit 11 dup 0 BL uwithin 0=exit drop REPEAT ; 12 13 2 3 thru 14 15 Onlyforth Screen 2 not modified 0 \ ks 06 jul 88 1 2 | : lastline? ( -- f ) false 0 skipctrl 3 BEGIN -1 case? IF ?dup IF padd THEN 0= exit THEN 4 #cr case? 0= WHILE out fputc 1+ in fgetc REPEAT 5 padd ; 6 7 : stream>blk open out freset 8 out f.size 2@ out fseek \ append to end of file 9 BEGIN lastline? stop? or UNTIL close out fclose ; 10 11 12 13 14 15 Screen 3 not modified 0 \ absolute blocks in file eintragen ks 11 aug 87 1 2 | : >stream ( blk -- ) 3 fromfile @ (block b/blk bounds 4 DO ds@ I C/L -trailing out lfputs 5 #cr out fputc #lf out fputc C/L +LOOP ; 6 7 : blk>stream ( from.blk to.blk -- ) emptyfile 8 1+ swap DO I >stream LOOP close ; 9 10 11 12 13 14 15 Screen 4 not modified 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Screen 5 not modified 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Screen 6 not modified 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Screen 7 not modified 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Screen 8 not modified 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Screen 9 not modified 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Screen 10 not modified 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15