Screen 0 not modified     
 0 \\ Simple Files                                          11Nov86
 1                                                                 
 2 Wenn volksFORTH im Direktzugriff Disketten bearbeitet, ist es   
 3 trotzdem wuenschenswert eine Art File-Struktur zu besitzen.     
 4 Dieses File enthaelt eine einfache Implementation eines         
 5 Filesystems. Der/die Programmierer/in muss selbst die Direktory 
 6 auf dem laufenden halten: in ihr sind die Start-Bloecke des     
 7 entsprechenden Diskettenteils gespeichert.                      
 8 Sogar eine Hierarchie von Direktories laesst sich so relisieren.
 9                                                                 
10 Vorgestellt wurde dieses FileSystem von Georg Rehfeld und auch  
11 von ihm fuer volksFORTH implementiert (ultraFORTH auf dem C64). 
12                                                                 
13                                                                 
14                                                                 
15                                                                 
Screen 1 not modified     
 0 \ simple files                                           12feb86
 1                                                                 
 2 \needs search   .( search missing) \\                           
 3                                                                 
 4 | Variable (dir    : dir  (dir @ ;   : root  0 (dir ! ;  root   
 5                                                                 
 6 | : read"  ( -- n)                                              
 7  Ascii " word  count  dup >r  dir block  b/blk  search          
 8  0= abort" not found"  r> +  >in push  >in !                    
 9  bl  dir block  b/blk  (word number drop ;                      
10                                                                 
11 : load"   read" dir + load ;    : dir"   read" (dir +! ;        
12 : list"   read" dir + list ;                                    
13                                                                 
14 \ 1 +load       \ Only if file" is needed                       
15                                                                 
Screen 2 not modified     
 0 \ simple files                                           01feb86
 1                                                                 
 2 | : snap   ( n0 -- n1)   $20 /  3 max  $20 * ;                  
 3 : file"  ( n --)                                                
 4  Ascii " word  count  2dup  dir block b/blk  search             
 5  IF    + nip                                                    
 6  ELSE  drop  dir block  b/blk -trailing nip  snap $20 +         
 7        dup b/blk 1- > abort" directory full"                    
 8        2dup + >r  dir block + swap  cmove  r>                   
 9  THEN  snap $18 +  >r                                           
10  dir - extend under dabs <# # # # #                             
11  base @ $0A = IF  Ascii &  ELSE Ascii $  THEN hold              
12  rot 0< IF  Ascii -  ELSE  bl  THEN hold #>                     
13  r> dir block +  swap cmove update ;                            
14                                                                 
15                                                                 
Screen 3 not modified     
 0 \ dir load"                                              11feb86
 1                                                                 
 2 \needs search   .( search missing) \\                           
 3                                                                 
 4 0 Constant dir                                                  
 5                                                                 
 6 : load"   ( -- )                                                
 7  Ascii " word count  dup >r  dir block b/blk search             
 8      0= abort" not found"   r> +                                
 9  >in @  blk @  rot >in !  dir blk !                             
10  bl word number drop -rot  blk !  >in !  load ;                 
11                                                                 
12                                                                 
13                                                                 
14                                                                 
15                                                                 
