\\ Directory 1of4 26oct87re              
                                         
.                     0                  
..                    0                  
Inhalt                1                  
Editor-Telegramm      2                  
Erstes-Info           3                  
Lade-System           4                  
Lade-Demo             5                  
loadfrom              6                  
einfache-Datei        8                  
help                &10                  
FORTH-Gruppe        &11                  
Zahlenspiel         &12                  
buffers             &13                  
dump                &14                  
Disassembler        &16                  
TEST.DIR            &23                  
savesystem          &26                  
formatdisk          &27                  
copydisk            &28                  
copy2disk           &29                  
                                         
                                         
                                        
\\ Inhalt ultraFORTH 1of4      26oct87re 
                                         
Directory             0                  
Inhalt                1                  
Editor Telegramm      2                  
Erstes Info           3                  
Lade System           4                  
einfache Datei        8                  
help                &10                  
lokale FORTH-Gruppe &11                  
Zahlenspiel         &12                  
relocate the system &13                  
dump                &14 -  &15           
6502-Disassembler   &16 -  &22           
 Test-Ordner        &23 -  &25           
savesystem          &26                  
bamallot formatdisk &27                  
copydisk            &28                  
2disk copy2disk     &29 -  &30           
  frei              &31 -  &36           
  prg-files         &37 -  &84           
Shadows             &85 - &121           
  prg-files        &122 - &169           
                                         
FORTH-GESELLSCHAFT  (c) bp/ks/re/we/clv 
  *** ultraFORTH  EDITOR KOMMANDOS ***   
 besondere Funktionen:                   
    Ctrl o  Overwrite   Ctrl i  Insmode  
    Ctrl $  .stamp      Ctrl #  .scr#    
    Ctrl '  search                       
 Cursor Kontrolle:                       
    normale Funktion, andere:            
    F7      +tab        F8      -tab     
    CLR     >text-end   RETURN  CR       
 Zeichen-Behandlung:                     
    F5      buf>char    F6      char>buf 
    DEL     backspace   INST    insert   
    Ctrl d  Delete      Ctrl @  copychar 
 Zeilen-Behandlung:                      
    F1      newline     F2      killine  
    F3      buf>line    F4      line>buf 
    Ctrl e  Eraseline   Ctrl r  clrRight 
    Ctrl ^  copyline                     
 Blaettern:                              
    Ctrl n  >Next       Ctrl b  >Back    
    Ctrl a  >Alternate  Ctrl w  >shadoW  
 Ausstieg aus Editor:                    
    Ctrl c  Canceled    Ctrl x  updated  
    Ctrl f  Flushed     Ctrl l  Loading  
FORTH-GESELLSCHAFT   (c) bp/ks/re/we/clv
  Du bist im Editormodus  Screen # 3     
    Zurueck ins FORTH mit RUN/STOP       
                                         
                                         
        *** ultraFORTH-83 ***            
                                         
      Einstieg in den Editor mit         
   "l ( n -- )" oder mit "r ( -- )"      
                                         
    ACHTUNG! Ohne Erfahrung nur mit      
    Schreibschutz auf den Disketten      
              arbeiten!                  
                                         
   Einige FORTH-Worte zum Probieren      
        ausserhalb des Editors:          
            WORDS   ORDER                
              VIEW HELP                  
          und die C= -Taste              
                                         
       Seite zurueck mit "Ctrl b"        
                                         
    Zum Weitergeben bitte die ganze      
    Diskette kopieren (Back-Up) !!!      
                                         
FORTH-GESELLSCHAFT   (c) bp/ks/re/we/clv
\ Lade ein Arbeitssystem       05nov87re 
                                         
Onlyforth                                
                                         
     2 +load       \ loadfrom            
&46 c: loadfrom    \ .blk                
  4 c: loadfrom    \ Transient Assemb    
&19 c: loadfrom    \ Editor              
&26 a: loadfrom    \ savesystem          
oldsave                                  
     2 +load       \ loadfrom            
  5 c: loadfrom    \ Assembler           
&47 c: loadfrom    \ Tracer + Tools      
&13 a: loadfrom    \ Buffers             
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
oldsave   \\                             
                                         
FORTH-GESELLSCHAFT  (c) bp/ks/re/we/clv 
\ Lade die C64 Demo            21oct87re 
                                         
(16 .( Nicht fuer C16!) \\ C)            
                                         
Onlyforth                                
                                         
1 +load   \ loadfrom                     
                                         
limit first @ -   b/buf 8 * -            
?\ 8 buffers                             
                                         
\needs demostart : demostart ; 90 allot  
\needs tasks        $39 C: loadfrom      
\needs help         $A  A: loadfrom      
\needs slide        &6  D: loadfrom      
                                         
1 scr !  0 r# !                          
                                         
Onlyforth                                
                                         
oldsave                                  
                                         
\\                                       
                                         
FORTH-GESELLSCHAFT  (c) bp/ks/re/we/clv 
\ getdisk loadfrom             20oct87re 
                                         
here   $200 hallot  heap dp !            
                                         
: getdisk  ( drv -- )                    
 cr  ." Bitte Diskette "                 
 1+ .  ." einlegen! "                    
 key drop  .status  cr ;                 
                                         
: loadfrom  ( blk drv -- )               
 ?dup 0= IF  load exit  THEN             
 flush  getdisk  load                    
 flush  0 getdisk ;                      
                                         
0 Constant A:       1 Constant B:        
2 Constant C:       3 Constant D:        
                                         
: ?\  ( f -- )   ?exit  [compile] \ ;    
                                         
                              -->        
                                         
                                         
                                         
                                         
FORTH-GESELLSCHAFT  (c) bp/ks/re/we/clv 
\ Neues save empty clear       20oct87re 
                                         
' save  Alias oldsave                    
' clear Alias oldclear                   
' empty Alias oldempty                   
                                         
: save  state @ IF  compile save  THEN ; 
  immediate                              
                                         
: clear state @ IF  compile clear THEN ; 
  immediate                              
                                         
: empty state @ IF  compile empty THEN ; 
  immediate                              
                                         
dp !                                     
                                         
                                         
                                         
                                         
                                         
                                         
\\                                       
                                         
FORTH-GESELLSCHAFT  (c) bp/ks/re/we/clv 
\ einfaches Dateisystem        20oct87re 
                                         
\needs (search  .( (search fehlt! ) \\   
                                         
' word >body 2+ @ Alias (word            
                                         
0 Constant ordner                        
                                         
' ordner >body | Constant >ordner        
                                         
: wurzel   >ordner off ; wurzel          
                                         
  : katalog  ( -- addr len )             
 ordner block  b/blk ;                   
                                         
  : (suche  ( adr len -- n )             
 katalog (search                         
 0= abort" nicht gefunden"               
 ordner block -  >in push  >in !         
 BEGIN  bl katalog (word capitalize      
        dup c@ 0= abort" exhausted"      
        number? ?dup not                 
 WHILE  drop  REPEAT  0< ?exit  drop ;   
                                         
-->                                     
\ einfaches Dateisystem        20oct87re 
                                         
: split                                  
 ( adr len char -- adr2 len2 adr1 len1 ) 
 >r 2dup r@ scan  r>                     
 over >r  skip  2swap  r> - ;            
                                         
: lies  ( -- n ) \ /path/file            
 bl word count dup 0= abort" Was denn?"  
 pad place  pad count                    
 BEGIN  Ascii / split                    
  dup IF    (suche                       
      ELSE  nip wurzel  THEN  over       
 WHILE  >ordner +!  REPEAT               
 -rot 2drop ordner + ;                   
                                         
: ld  lies load ;      \ LoaD            
: sh  lies list ;      \ SHow            
: ed  lies l ;         \ EDit            
: cd  lies >ordner ! ; \ Change Dir      
: ls  ordner list ;    \ LiSt Dir        
                                         
                                         
                                         
FORTH-GESELLSCHAFT  (c) bp/ks/re/we/clv 
\ help                        14oct85re) 
                                         
Onlyforth                                
                                         
: help  ( --)                            
 3 l                \ list Scr # 3       
                                         
 cr ." Probier' ruhig weiter!" cr        
 cr ." Aber ohne Handbuch"               
 cr ." und die Hilfe der"                
 cr ." FORTH-Gesellschaft"               
 cr ." bleibt FORTH ein ADVENTURE!" cr ; 
                                         
       \ print silly text                
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
\\                                       
                                         
FORTH-GESELLSCHAFT  (c) bp/ks/re/we/clv 
\\ Hier ist  ...                      \\ 
\      ... Deine lokale ...            \ 
\           ... FORTH-Gruppe :         \ 
\                                      \ 
\                                      \ 
\                                      \ 
\           Kontaktadresse :           \ 
\                                      \ 
\           bernd  pennemann           \ 
\           Treitschkestr 20           \ 
\                                      \ 
\           1000  Berlin  41           \ 
\                                      \ 
\                                      \ 
\           Claus     Vogt             \ 
\           Buelowstr.  67             \ 
\                                      \ 
\           1000 Berlin 30             \ 
\                                      \ 
\                                      \ 
\                                      \ 
\                                      \ 
\                                      \ 
\                                      \ 
\\ \\ \\ \\ \\ \\  \\  \\ \\ \\ \\ \\ \\
\ numbers                     05jul85re) 
                                         
decimal             \ sorry, but this    
                    \ is for YOU !       
                                         
: alphabetic  ( --)  &36 base ! ;        
                                         
hex                 \ Ah, much better    
                                         
                                         
\ Look at this:                          
                                         
                                         
31067E6.  alphabetic d.       hex        
19211D5.  alphabetic d.       hex        
   -123.  alphabetic d.       hex        
                                         
                                         
\ Try to explain !                       
                                         
                                         
                                         
\\                                       
                                         
FORTH-GESELLSCHAFT  (c) bp/ks/re/we/clv 
\ relocating the system        20oct87re 
                                         
| : relocate-tasks  ( newUP -- )         
 up@ dup                                 
 BEGIN  1+ under @ 2dup -                
 WHILE  rot drop  REPEAT  2drop ! ;      
                                         
: relocate  ( stacklen rstacklen -- )    
 swap  origin +                          
 2dup + b/buf + 2+  limit u>             
  abort" buffers?"                       
 dup   pad  $100 +  u< abort" stack?"    
 over  udp @ $40 +  u< abort" rstack?"   
 flush empty                             
 under  +   origin $A + !        \ r0    
 dup relocate-tasks                      
 up@ 1+ @   origin   1+ !        \ task  
       6 -  origin  8 + ! cold ; \ s0    
                                         
: bytes.more  ( n -- )                   
 up@ origin -  +  r0 @ up@ - relocate ;  
                                         
: buffers  ( +n -- )                     
 b/buf * 2+  limit r0 @ -                
 swap - bytes.more ;                    
\ dump utility                30nov85re  
\ adapted from F83 Laxen/Perry           
                                         
| : .2  ( n --)                          
 0 <# # # #> type space ;                
                                         
| : D.2  ( adr len --)                   
 bounds ?DO  I c@ .2  LOOP ;             
                                         
: dln  ( adr --)  \ DumpLiNe             
 cr  dup 4 u.r  space  dup 8 D.2         
 ." z "  8 bounds DO  I c@ emit  LOOP ;  
                                         
| : ?.n  ( n0 n1 -- n0)                  
 2dup = IF  rvson  THEN                  
 2 .r  rvsoff  space ;                   
                                         
| : ?.a  ( n0 n1 -- n0)                  
 2dup = IF  rvson  THEN  1 .r rvsoff ;   
                                         
-->                                      
                                         
                                         
                                         
FORTH-GESELLSCHAFT  (c) bp/ks/re/we/clv 
\ dump utility                30nov85re  
\ adapted from F83 Laxen/Perry           
                                         
| : .head  ( adr len -- adr' len')       
 swap  dup $FFF0 and  swap $F and        
 2 0 DO  cr 5 spaces                     
  I 8 * 8 bounds DO I ?.n LOOP 2 spaces  
  I 8 * 8 bounds DO I ?.a LOOP           
 LOOP  rot + ;                           
                                         
: dump  ( adr len --)                    
 base push  hex  .head                   
 bounds ?DO  I dln  stop? IF LEAVE THEN  
             8 +LOOP cr ;                
                                         
: z  ( adr n0 ... n7 --)                 
 row 2- >r  unlink                       
 8 pick 7 + -7 bounds                    
 DO  I c!  -1 +LOOP r> 0 at dln  quit ;  
                                         
                                         
clear                                    
                                         
                                         
                                        
\ disassembler 6502 loadscr    06mar86re 
                                         
Onlyforth                                
                                         
\needs Tools Vocabulary Tools            
                                         
Tools also definitions hex               
                                         
| : tabelle  ( +n -- )                   
 Create     0 DO                         
 bl word number drop , LOOP              
 Does> ( 8b1 -- 8b2 +n )                 
 + count swap c@ ;                       
                                         
-->                                      
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                        
\ dis shortcode0               20oct87re 
                                         
base @  hex                              
                                         
$80 | tabelle shortcode0                 
0B10 0000 0000 0341 2510 0320 0000 0332  
0AC1 0000 0000 03A1 0E10 0000 0000 0362  
1D32 0000 0741 2841 2710 2820 0732 2832  
08C1 0000 0000 28A1 2D10 0000 0000 2862  
2A10 0000 0000 2141 2410 2120 1C32 2132  
0CC1 0000 0000 21A1 1010 0000 0000 2162  
2B10 0000 0000 2941 2610 2920 1CD2 2932  
0DC1 0000 0000 29A1 2F10 0000 0000 2962  
0000 0000 3241 3141 1710 3610 3232 3132  
04C1 0000 32A1 31B1 3810 3710 0000 0000  
2051 1F51 2041 1F41 3410 3310 2032 1F32  
05C1 0000 20A1 1FB1 1110 3510 2062 1F72  
1451 0000 1441 1541 1B10 1610 1432 1532  
09C1 0000 0000 15A1 0F10 0000 0000 1562  
1351 0000 1341 1941 1A10 2210 1332 1932  
06C1 0000 0000 19A1 2E10 0000 0000 1962  
                                         
base !                                   
                                         
-->                                     
\ dis scode adrmode            20oct87re 
                                         
| Create scode                           
 $23 c, $02 c, $18 c, $01 c,             
 $30 c, $1e c, $12 c, $2c c,             
                                         
| Create adrmode                         
 $81 c, $41 c, $51 c, $32 c,             
 $91 c, $a1 c, $72 c, $62 c,             
                                         
| : shortcode1 ( 8b1 - 8b2 +n)           
 2/ dup 1 and                            
 IF  0= 0  exit  THEN                    
 2/ dup $7 and adrmode + c@              
 swap 2/ 2/ 2/ $7 and scode + c@ ;       
                                         
| Variable mode                          
                                         
| Variable length                        
                                         
-->                                      
                                         
                                         
                                         
                                        
\ dis shortcode texttab        06mar86re 
                                         
| : shortcode ( 8b1 -- +n )              
 dup 1 and         ( ungerade codes)     
 IF  dup $89 =                           
  IF  drop 2  THEN  shortcode1           
 ELSE  shortcode0  ( gerade codes)       
 THEN                                    
 swap dup 3 and length !                 
 2/ 2/ 2/ 2/ mode ! ;                    
                                         
| : texttab   ( char +n 8b -- )          
 Create                                  
 dup c, swap 0 DO >r dup word            
 1+ here r@ cmove r@ allot r>            
 LOOP 2drop                              
 Does>  ( +n -- )                        
 count >r swap r@ * + r> type ;          
                                         
-->                                      
                                         
                                         
                                         
                                         
                                        
\ dis text-tabellen            06mar86re 
                                         
bl $39 3 | texttab .mnemonic             
*by adc and asl bcc bcs beq bit bmi bne  
bpl brk bvc bvs clc cld cli clv cmp cpx  
cpy dec dex dey eor inc inx iny jmp jsr  
lda ldx ldy lsr nop ora pha php pla plp  
rol ror rti rts sbc sec sed sei sta stx  
sty tax tay tsx txa txs tya              
( +n -- )                                
                                         
Ascii / $E 1 | texttab .vor              
   / /a/ /z/#/ / /(/(/z/z/ /(/           
                                         
                                         
Ascii / $E 3 | texttab .nach             
     /   /   /   /   /   /,x             
 /,y /,x)/),y/,x /,y /   /)  /           
                                         
-->                                      
                                         
                                         
                                         
                                         
                                        
\ dis 2u.r 4u.r                06mar86re 
                                         
: 4u.r ( u -)                            
  0 <# # # # # #> type ;                 
                                         
: 2u.r ( u -)                            
  0 <# # # #> type ;                     
                                         
-->                                      
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                        
\ dis                          20oct87re 
                                         
Forth definitions                        
                                         
: dis   ( adr -- ) base push hex         
BEGIN                                    
 cr dup 4u.r space dup c@ dup 2u.r space 
 shortcode >r length @ dup               
 IF over 1+ c@ 2u.r space THEN dup 2 =   
 IF over 2+ c@ 2u.r space THEN           
 2 swap - 3 * spaces                     
 r> .mnemonic space 1+                   
 mode @ dup .vor $C =                    
 IF dup c@ dup $80 and IF $100 - THEN    
  over + 1+ 4u.r                         
 ELSE length @ dup 2 swap - 2* spaces    
  ?dup                                   
  IF 2 =                                 
   IF   dup  @ 4u.r                      
   ELSE dup c@ 2u.r                      
 THEN THEN THEN mode @ .nach length @ +  
 stop?  UNTIL drop ;                     
                                         
                                         
Onlyforth clear                         
\\ Subdirectory test.dir       26oct87re 
                                         
.                    0                   
..                -&23                   
all-words            1                   
free                 2                   
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                        
\ pretty words                 26oct87re 
                                         
: .type  ( cfa -- )   dup @ swap 2+      
             case? IF ." Code" exit THEN 
 ['] :     @ case? IF ."    :" exit THEN 
 ['] base  @ case? IF ." User" exit THEN 
 ['] first @ case? IF ."  Var" exit THEN 
 ['] limit @ case? IF ."  Con" exit THEN 
 ['] Forth @ case? IF ."  Voc" exit THEN 
 ['] r/w   @ case? IF ."  Def" exit THEN 
 drop ." ????" ;                         
                                         
: (words  ( link -- )                    
 BEGIN  stop? abort" stopped"  @ dup     
 WHILE  cr dup 2- @ 3 .r space           
        dup 2+  dup name> .type space    
        .name  REPEAT drop ;             
                                         
: all-words ( -- )                       
 voc-link                                
 BEGIN  @ ?dup                           
 WHILE  dup 6 - >name                    
        cr cr .name ."  words:" cr       
        ." Blk Type Name "               
        dup 4 - (words  REPEAT ;        
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                        
\ savesystem                   23oct87re 
                                         
| : (savsys ( adr len -- )               
 [ Assembler ] Next  [ Forth ]           
 ['] pause  dup push  !  \ singletask    
 i/o push  i/o off  bustype ;            
                                         
: savesystem   \ name muss folgen        
    \ Forth-Kernal vorbereiten:          
 scr push  1 scr !  r# push  r# off      
    \ Editor vorbereiten:                
 [ Editor ]                              
 stamp$ dup push off                     
 (pad   dup push off                     
    \ nun geht's los:                    
 save                                    
 8 2 busopen  0 parse bustype            
 " ,p,w" count bustype  busoff           
 8 2 busout  origin $17 -                
 dup  $100 u/mod  swap bus! bus!         
 here over - (savsys  busoff             
 8 2 busclose                            
 0 (drv ! derror? abort" save-error" ;   
                                         
Onlyforth                               
\ bamallocate, formatdisk      20oct87re 
                                         
: bamallocate ( --)                      
 diskopen ?exit                          
 pad &18 0 readsector 0=                 
  IF pad 4 + $8C erase                   
     pad &18 0 writesector drop          
  THEN  diskclose                        
 8 &15 busout " i0" count bustype        
 busoff ;                                
                                         
: formatdisk ( --)  \ Name muss folgen   
 8 &15 busout " n0:" count bustype       
 0 parse bustype busoff                  
 derror? ?exit                           
 bamallocate ;                           
                                         
\ z.B.: formatdisk ultraFORTH,id         
                                         
                                         
                                         
                                         
                                         
                                         
FORTH-GESELLSCHAFT  (c) bp/ks/re/we/clv 
\ copydisk                    06jun85we) 
                                         
| Variable distance                      
                                         
limit first @ - b/buf /  | Constant bufs 
                                         
| : backupbufs  ( from count --)         
 cr ." Insert Source-Disk" key drop cr   
 bounds 2dup DO  I block drop  LOOP      
 cr ." Insert Destination-Disk"          
 key drop cr                             
 distance @ ?dup                         
 IF    >r  swap 1- over  r> +  convey    
 ELSE  DO  I block drop update  LOOP     
       save-buffers THEN ;               
                                         
: copydisk  ( blk1 blk2] [to.blk --)     
 2 pick - distance !  1+ over -          
 dup 0> not Abort" RANGE ERROR!"         
 bufs /mod ?dup                          
 IF swap >r 0                            
    DO dup bufs backupbufs bufs +  LOOP  
    r> THEN                              
 ?dup IF backupbufs ELSE drop THEN ;     
                                        
\ 2disk copy2disk..           clv14jul87 
                                         
                                         
$165 | Constant 1.t                      
$1EA | Constant 2.t                      
$256 | Constant 3.t                      
                                         
                                         
| : (s#>s+t ( sector# -- sect track)     
      dup 1.t u< IF $15 /mod exit THEN   
( 3+) dup 2.t u< IF 1.t - $13 /mod $11 + 
                            exit THEN    
      dup 3.t u< IF 2.t - $12 /mod $18 + 
                            exit THEN    
                    3.t - $11 /mod $1E + 
 ;                                       
                                         
                                         
| : s#>t+s  ( sector# -- track sect )    
 (s#>s+t  1+ swap ;                      
                                         
                                         
                                         
                                         
-->                                     
\ ..2disk copy2disk           clv04aug87 
                                         
                                         
| : ?e ( flag--)                         
  ?dup IF ." Drv " (drv @ . diskclose    
          abort" " THEN ;                
                                         
| : op ( drv#--) (drv ! diskopen ?e ;    
                                         
: copysector \ adr sec# --               
  2dup                                   
  0 op s#>t+s readsector  ?e diskclose   
  1 op s#>t+s writesector ?e diskclose ; 
                                         
: copy2disk \ -- \ fuer 2 Floppys        
 pad dup $110 + sp@ u> abort" no room"   
 cr ." Source=0, Dest=1" key drop cr     
 base push decimal      0 &682           
 DO I . I s#>t+s . . cr $91 con!         
    dup I copysector   -1 +LOOP drop ;   
                                         
: 2disk1551 \ -- stellt eine 1551 auf #9 
 flush 8 &15 busopen " %9" count bustype 
 busoff derror? drop ;                   
                                        
es kommt nichts mehr es kommt nichts meh 
r es kommt nichts mehr es kommt nichts m 
ehr es kommt nichts mehr es kommt nichts 
 mehr es kommt nichts mehr es kommt nich 
ts mehr es kommt nichts mehr es kommt ni 
chts mehr es kommt nichts mehr es kommt  
nichts mehr es kommt nichts mehr es komm 
t nichts mehr es kommt nichts mehr es ko 
mmt nichts mehr es kommt nichts mehr es  
kommt nichts mehr es kommt nichts mehr e 
s kommt nichts mehr es kommt nichts mehr 
 es kommt nichts mehr es kommt nichts me 
hr es kommt nichts mehr es kommt nichts  
mehr es kommt nichts mehr es kommt nicht 
s mehr es kommt nichts mehr es kommt nic 
hts mehr es kommt nichts mehr es kommt n 
ichts mehr es kommt nichts mehr es kommt 
 nichts mehr es kommt nichts mehr es kom 
mt nichts mehr es kommt nichts mehr es k 
ommt nichts mehr es kommt nichts mehr es 
 kommt nichts mehr es kommt nichts mehr  
es kommt nichts mehr es kommt nichts meh 
r es kommt nichts mehr es kommt nichts m 
ehr es kommt nichts mehr es kommt nichts 
 mehr es kommt nichts mehr es kommt nich
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                        
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                        
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                        
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                        
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                        
\\   Dies ist der Shadow-Screen          
          zum Screen # 0                 
                                         
 Der Screen # 0 laesst sich nicht laden  
  (ist der Inhalt von BLK gleich 0, so   
   wird der Quelltext von der Tastatur   
  geholt, ist BLK von 0 verschieden, so  
   wird der entsprechende BLOCK von der  
      Diskette geladen), der Editor      
  unterstuetzt deshalb auch nicht das    
  Shadow-Konzept fuer den Screen # 0.    
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
FORTH-GESELLSCHAFT  (c) bp/ks/re/we/clv 
Shadow zu Scr# 1                         
                                         
Im Screen # 1 sollte IMMER ein           
Inhaltsverzeichnis gefuehrt werden,      
eine gute Regel ist:                     
                                         
 ERST den Eintrag im Directory           
                                         
 DANN den Quelltext tippen               
                                         
Bei Bedarf koennen die Screens 2 - 4     
ebenfalls fuer Inhaltsangaben benutzt    
werden.                                  
                                         
                                         
                                         
                                         
                                         
                                         
                                         
              Nebenbei,                  
                                         
    hast Du schon Back-Up's gemacht?     
                                         
FORTH-GESELLSCHAFT  (c) bp/ks/re/we/clv 
Shadow zu Scr# 2                         
                                         
Da Eintippen muehsam ist,                
beugt der Editor dem versehentlichen     
Loeschen von Quelltext vor:              
weder am Ende einer Zeile,               
noch am Ende des Screens geht Text       
verloren, wenn man Einfuegt.             
Will man einen ganzen Screen loeschen,   
so gehe man mit HOME in die 0te Zeile    
und druecke SHIFT F1 (=F2) bis alle      
Zeilen nach oben geloescht und der       
Screen von unten mit Leerzeilen          
aufgefuellt ist.                         
                                         
Wem das zu muehsam ist, der definiere:   
                                         
: wipe  ( -- )   \  fuellt den           
 scr @ block     \  bearbeiteten Screen  
 b/blk bl fill ; \\ mit Leerzeichen.     
                                         
und benutze WIPE, nachdem der zu         
loeschende Screen gelistet wurde.        
                                         
FORTH-GESELLSCHAFT  (c) bp/ks/re/we/clv 
FORTH-GESELLSCHAFT  (c) bp/ks/re/we/clv  
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                        
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                        
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                        
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                        
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                        
\\ einfaches Datei-System      20oct87re 
                                         
Ein ORDNER ist ein zusammenhaengender    
Screen-Bereich, der einen Directory-     
Screen mit Datei- bzw ORDNER-Namen und   
deren relativen Screen-Nummern enthaelt: 
                                         
..     -&150        .            0       
DATEINAME $D        ORDNERNAME &13       
                                         
Der WURZEL-ORDNER ist die ganze Diskette 
mit Directory in Screen 0, seine Screen- 
Nummern sind deshalb auch absolut.       
                                         
Alle Screen-Nummern muessen manuell      
gepflegt werden.                         
                                         
Bei Verschieben eines kompletten         
Ordners muessen nur der Screen-Offset im 
Mutter-Directory und der Offset fuer ..  
geaendert werden.                        
                                         
.. und . sind nicht unbedingt noetig,    
dann kann nicht aufs Mutter-Directory    
zurueckpositioniert werden.             
\\ einfaches Dateisystem       20oct87re 
                                         
SPLIT teilt einen String bei CHAR ohne   
 CHAR zu enthalten. Der erste Teil$      
 liegt oben auf, der Rest$ darunter.     
 Der Rest$ kann weitere CHAR enthalten.  
                                         
LIESt Pfad und Filenamen. Syntax:        
                                         
 cd /                                    
     Aktuelles DIR wird Wurzel-Directory 
 cd /Sub1/                               
            DIR wird Sub1 von Wurzel aus 
 cd Sub2/                                
        DIR wird Sub2 vom bisherigen aus 
 cd ../                                  
                     DIR wird Mutter-DIR 
 ld /Datei1                              
               Lade Date1 von Wurzel aus 
 ld Datei2                               
                 Lade Datei2 von DIR aus 
 ld /Sub3/Datei3                         
     Lade Datei3 aus Sub3 von Wurzel aus 
 ld Sub4/Datei4                          
        Lade Datei4 aus Sub4 von DIR aus
                                         
                                         
                                         
                                         
  HILFE !!!                              
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
       Hummel, Hummel - Forth, Forth     
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                        
\\ Hier ist  ...                      \\ 
\      ... Deine lokale ...            \ 
\           ... FORTH-Gruppe :         \ 
\                                      \ 
\                                      \ 
\                                      \ 
\           Kontaktadresse :           \ 
\                                      \ 
\                                      \ 
\                                      \ 
\                                      \ 
\           georg    rehfeld           \ 
\           reinbeker weg 32           \ 
\                                      \ 
\           2050  hamburg 80           \ 
\                                      \ 
\                                      \ 
\                                      \ 
\                                      \ 
\                                      \ 
\                                      \ 
\                                      \ 
\                                      \ 
\                                      \ 
\\ \\ \\ \\ \\ \\  \\  \\ \\ \\ \\ \\ \\
\ Kommentar zu numbers        14oct85re) 
                                         
                                         
                                         
                                         
alphabetic - nicht hex oder decimal      
  nach 08 folgt 09, nach 09 folgt 0A,    
  dann 0B usw. bis 0Z, nach 0Z folgt 10  
  danach 11  ...  19, 1A, 1B, 1C, ...    
                                         
                                         
                                         
                                         
hex-Zahl  alphabetisch dargestellt       
hex-Zahl  alphabetisch dargestellt       
hex-Zahl  alphabetisch dargestellt       
                                         
                                         
Es geht auch andersherum                 
 (damit sind die hex-numbers von         
  "numbers" entstanden)                  
                                         
Brauchst Du BINARY oder OCTAL ?          
 : binary  ( --)   2 base ! ;            
 : octal  ( --)   8 base ! ;            
\\ relocating the system    bp 19 9 84 ) 
                                         
up@ origin -   is stacklen               
r0 @ up@ -     is rstacklen              
                                         
symbolic map of system                   
                                         
FUNKTION     TOP          BOTTOM         
                                         
disk-buffer  limit        first @        
 unused area                             
rstack       r0 @         rp@            
                                         
 free area                               
                                         
user, warm   up@ udp @ +  up@            
(heap)       up@          heap           
stack        s0 @         sp@            
                                         
 free area                               
                                         
system       here         origin 0FE +   
user, cold   origin 100 + origin         
screen       0800         0400           
page 0-3     0400         0000          
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                        
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                        
\\ disassembler 6502 loadscr             
                                         
                                         
                                         
                                         
                                         
                                         
                                         
+n Werte werden in einem Array           
abgelegt.                                
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                        
\\ dis shortcode0                        
                                         
Tabelle fuer die schwierigen geraden     
Opcodes                                  
                                         
Da Schema nicht erkannt,                 
Tabellen-Loesung.                        
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                        
\\ dis scode adrmode                     
                                         
Hilfstabelle fuer ungerade Opcodes       
                                         
                                         
                                         
Hilfstabelle fuer ungerade Opcodes       
 Adressierungsarten                      
                                         
                                         
ermittelt aus dem Opcode 8b1             
die Adressierungsart 8b2                 
und die Befehlslaenge +n                 
fuer ungerade Opcodes                    
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                        
\\ dis shortcode texttab                 
                                         
ermittelt Befehlslaenge (length)         
und Adressierungsart (mode)              
aus dem Opcode (8b1)                     
                                         
                                         
                                         
                                         
                                         
                                         
ein defining word fuer Text-Tabellen     
                                         
Datenstruktur:                           
                                         
count text1 text2 ... text+n-1 text+n    
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                        
\\ text-tabellen                         
                                         
die Mnemonic-Tabelle                     
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
die VORoperanden-Tabelle                 
                                         
                                         
                                         
die NACHoperanden-Tabelle                
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                        
\\ dis 4u.r 2u.r                         
                                         
4u.r schreibt eine Adresse               
 mit fuehrenden Nullen                   
                                         
2u.r schreibt ein Byte                   
 mit fuehrender Null                     
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                        
\\ dis shadow                            
                                         
"dis" ist ein so haessliches Wort,       
dass ich jedem danke, der es besser      
macht! (Und mir den Quelltext schickt!)  
                                         
georg rehfeld                            
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                        
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                        
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                        
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                        
\\ savesystem shadow          clv04aug87 
                                         
                                         
Aufruf: SAVESYSTEM name                  
  z.B.: SAVESYSTEM MEIN-FORTH            
        --erzeugt ein Ladbares File      
        --mit Namen MEIN-FORTH.          
                                         
  Zur Arbeitsweise: normalerweise        
  wird so alle ein bis zwei Wochen       
  ein System gesichert, wo dann          
  die wichtigsten (fertigen) Sachen      
  mit drin sind. Die Sachen, wo noch     
  dran getestet wird, werden dann        
  als Quellen geladen. Aber wer          
  will schon jedesmal den Editor etc.    
  als Quelle laden. Das nutzt nur        
  die Diskette und die eigenen Nerven    
  sinnlos ab.                            
                                         
  Jedes groessere Programm setzt         
  i.a. sein eigenes SAVESYSTEM oben      
  drauf, um seine eigenen Variablen      
  fuer's spaetere Booten vorzubereiten.  
                                        
Kommentar zu bamallocate, formatdisk     
                                         
erzeugt den Spruch "0 blocks free"       
 Diskette auf                            
 lies die BAM                            
  IF loesche sie (fast) ganz             
     schreib sie zurueck                 
  THEN  Diskette zu                      
 nochmal initialisieren                  
 und Schluss!                            
                                         
LOESCHT (formatiert) Diskette            
 gib den Loesch-Befehl                   
 schieb den Namen nach                   
  hat's geklappt?                        
 dann lasse sie voll erscheinen          
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                        
???                                      
                                         
  This page unintentionaly left blank.   
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
koopiert nicht! die Directory mit.       
Ist also nicht fuer Files geeignet,      
sondern nur fuer FORTH-QuellScreens.     
                                         
                                         
                                         
                                         
                                         
                                        
\\ zu:2disk copy2disk..       clv04aug87 
                                         
                                         
Diese wueste Berechnung hat nur          
einen Zweck: aus einer laufenden         
Nummer [0..&682] Track und Sector        
zu ermitteln. Habe sie einfach           
aus dem ultraFORTH-Quelltext entnommen   
(wird von R/W benutzt) und das ' 3+ '    
wegkommentiert, damit auch die           
Directory-Sektoren kopiert werden        
koennen.                                 
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                         
                                        
\\ zu:..2disk copy2disk       clv04aug87 
                                         
                                         
Macht ggf. einen Fehler-Abbruch          
                                         
                                         
                                         
Abkuerzung fuer OPen. 40 Zeichen sind en 
                                         
Kopiert einen Sektor (ueber adr)         
                                         
                                         
                                         
                                         
                                         
 Prueft, ob bei PAD Platz ist.           
 Labert den/die Benutzer/in voll         
                                         
 Schleife ueber die Sektoren             
 bei jedem gibt's paar Zahlen, damit     
 obengenannte(r) sich nicht langweilt.   
                                         
 Schaltet nur(!!) 1551-Floppys um.       
 Fuer 1541 isses bisschen complicated.   
                                        
es kommt nichts mehr es kommt nichts meh 
r es kommt nichts mehr es kommt nichts m 
ehr es kommt nichts mehr es kommt nichts 
 mehr es kommt nichts mehr es kommt nich 
ts mehr es kommt nichts mehr es kommt ni 
chts mehr es kommt nichts mehr es kommt  
nichts mehr es kommt nichts mehr es komm 
t nichts mehr es kommt nichts mehr es ko 
mmt nichts mehr es kommt nichts mehr es  
kommt nichts mehr es kommt nichts mehr e 
s kommt nichts mehr es kommt nichts mehr 
 es kommt nichts mehr es kommt nichts me 
hr es kommt nichts mehr es kommt nichts  
mehr es kommt nichts mehr es kommt nicht 
s mehr es kommt nichts mehr es kommt nic 
hts mehr es kommt nichts mehr es kommt n 
ichts mehr es kommt nichts mehr es kommt 
 nichts mehr es kommt nichts mehr es kom 
mt nichts mehr es kommt nichts mehr es k 
ommt nichts mehr es kommt nichts mehr es 
 kommt nichts mehr es kommt nichts mehr  
es kommt nichts mehr es kommt nichts meh 
r es kommt nichts mehr es kommt nichts m 
ehr es kommt nichts mehr es kommt nichts 
 mehr es kommt nichts mehr es kommt nich
