Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.


Vorhergehende Überarbeitung
z9001:software:kforth [2026/04/02 13:45] (aktuell) – [Anmerkungen] volkerp
Zeile 1: Zeile 1:
 +====== KFORTH ======
 +
 +KC87 - FIG-FORTH 1.2
 +(c) by LUBI-soft   30.03.90
 +
 +aufgetaucht 2026 auf ROMs.
 +
 +das ist ein FIG-Forth  erweitert um einen Line-Editor, und Wörter zum Laden/Schreiben von/auf Kassette/Magnetband.
 +
 +1K-Screens, 16 Zeilen a 64 Zeichen.
 +
 +Start mit KFORTH
 +
 +===== Speicherbelegung =====
 +
 +| Dateiname | KFORTH.COM |
 +| Laden in | OS |
 +| Programmstandort | 0300h-22FFh |
 +| Screenbuffer | 4000h-7FFFh |
 +| OS-Kommando | KFORTH|
 +
 +===== Downloads =====
 +
 +  * Binary, reass. Quellcode, Marken etc. vgl. Listing FIG-FORTH 1.1 CP/M.
 +
 +===== Sprachumfang =====
 +
 +TASK   CLEAR         
 +[S]       [E]       
 +[ECHO]   [-MOVE]   [LINE]   
 +[TEXT]   LOOK   BYE   FDOS   
 +.CPU   TRIAD   INDEX   LIST   
 +VLIST   U.   ?     D.   .R   
 +D.R   #  #   SIGN   #>   
 +<#   SPACES   WHILE   ELSE   
 +IF   REPEAT   AGAIN   END   
 +UNTIL   +LOOP   LOOP   DO   
 +THEN   ENDIF   BEGIN   BACK   
 +FORGET   '   VERIFY   CSAVE   
 +CLOAD   -->   LOAD   FLUSH   
 +R/W   BLOCK   BUFFER   EMPTY-BUFFERS   
 +UPDATE   +BUF   #BUFF   SEC/BLK   
 +MESSAGE   .LINE   (LINE)   
 +M/MOD   */   */MOD   MOD   
 +/   /MOD     M/   M*   MAX   
 +MIN   DABS   ABS   D+-   +-   
 +S->  COLD   WARM   ABORT   
 +QUIT     DEFINITIONS   FORTH   
 +VOCABULARY   IMMEDIATE   INTERPRET   
 +?STACK   DLITERAL   LITERAL   
 +[COMPILE]   CREATE   ID.   
 +ERROR   (ABORT)   -FIND   NUMBER   
 +(NUMBER)   WORD   PAD   HOLD   
 +BLANKS   ERASE   FILL      
 +QUERY   EXPECT   ."   (."  
 +-TRAILING   TYPE   COUNT   
 +DOES>   <BUILDS   ;CODE   (;CODE)   
 +DECIMAL   HEX   SMUDGE     
 +[   COMPILE   ?LOADING   ?CSP   
 +?PAIRS   ?EXEC   ?COMP   ?ERROR   
 +!CSP   PFA   NFA   CFA   LFA   
 +LATEST   TRAVERSE   -DUP   
 +SPACE   ROT   >   U<   <   
 +=     C,   ,   ALLOT   HERE   
 +2+   1+   REC   PREV-FILE   
 +DISK-ERROR   DENSITY   PREV   
 +USE   TRACK   SEC   DRIVE   
 +HLD   R#   CSP   FLD   DPL   
 +BASE   STATE   CURRENT   CONTEXT   
 +OFFSET   SCR   OUT   IN   BLK   
 +VOC-LINK   DP   FENCE   WARNING   
 +WIDTH   TIB   R0   S0   +ORIGIN   
 +B/SCR   B/BUF   LIMIT   FIRST   
 +C/L   BL           
 +USER   VARIABLE   CONSTANT   
 +;   :   2!   C!     2@   
 +C@     TOGGLE   +!   ASCII   
 +2+   2-   2DROP   PICK   ?DUP   
 +2DUP   DUP   SWAP   DROP   
 +OVER   DMINUS   MINUS   D+   
 ++   0<   0=     R>   >  
 +LEAVE   ;  RP!   RP@   SP!   
 +SP@   XOR   OR   AND   U/   
 +U*   CMOVE   CR   ?TERMINAL   
 +KEY   EMIT   ENCLOSE   (FIND)   
 +DIGIT     (DO)   (+LOOP)   
 +(LOOP)   0BRANCH   BRANCH   
 +EXECUTE   LIT   
 +
 +
 +===== Glossar =====
 +
 +(nur die Nicht-Standard-Worte)
 +
 +  ? .CPU 
 +  : Anzeige CPU -> U880 
 +  ? LOOK
 +  : Anzeige Base dezimal
 +  ? FDOS
 +  : CALL 5 mit Param., FDOS ( regC regDE -- regA regHL )  
 +  ? BYE
 +  : beendet KFORTH und kehrt ins OS zurück
 +  ? CSAVE
 +  : Speicherbereich auf Kassette sichern. aadr eadr CSAVE, Filename wird abgefragt, Dateityp ".SCR"
 +  ? CLOAD
 +  : Laden von Kassette. aadr CLOAD
 +  ? VERIFY
 +  : Vergleichen. aadr VERIFY
 +
 +Zeilen-Editor:
 +<code> 
 +1 CLEAR
 +1 LIST
 +n S select screen #n
 +n P text put line n
 +n F
 +D
 +H
 +E n empty line n
 +R
 +</code>
 +
 +===== Anmerkungen =====
 +
 +Die Vorlage für dieses Forth war vermutlich ein bereits angepasstes erweitertes FIG-FORTH (rom-fähig, vgl. a. [[forth:kc85-figforth|]])
 +
 +  * Es gibt einen kleinen Sprungverteiler am Programmanfang. 
 +  * Next kann z.B. für einen Debugger erweitert werden. Dazu steht am Anfang von NEXT ein Sprung in den RAM, von hier geht es standardmäßig weiter in die interne NEXT-Routine zurück. Ein Debugger kann sich hier einklinken.
 +  * Alle Variablen sind als User-Variablen ausgelegt; der letzte Wörterbucheintrag FORTH wird in den RAM (bzw. hier ans Speicherende) kopiert, damit die Wörterbuchverlinkung für neue Einträge ermöglicht wird. 
 +  * Allerdings sind die zusätzlichen Worte wie CLOAD/CSAVE nicht ROM-fähig, hier wird direkt im Codebereich geschrieben.
 +