home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / forth / compiler / fpc / help / kernel4.hlp < prev    next >
Text File  |  1989-09-21  |  8KB  |  224 lines

  1. KERNEL4.HLP         Edited by J. McKnight  H 408-252-7396  1988-01-30
  2.  
  3.        Extensible Layer: Defining Words        
  4.  
  5. #USER           ( -- a1 )
  6.         A variable that holds the count of how many user variables
  7.         are allocated.
  8.  
  9. USER            ( -- )
  10.         Vocabulary that holds the multi-tasking versions of defining words.
  11.  
  12. ALLOT          ( n )
  13.        Allocate space in the user area for a multi-tasking word.
  14.  
  15. CREATE         <name> ( -- )
  16.        Define a word that returns the address of the next available user
  17.        memory location.
  18.  
  19. VARIABLE       <name> ( -- )
  20.        Define a task type variable. Similar to the old FIG version word USER.
  21.  
  22. DEFER          <name> ( -- )
  23.        Defines an execution vector that is local to a task.
  24.  
  25.  
  26.        Extensible Layer: ReDefining Words
  27.  
  28. >IS            ( cfa -- data-address )
  29.        Maps a code field into a data field. If the word is in the USER class
  30.        of words, then the data address must be calculated relative to the
  31.        current user pointer. Otherwise it is just the parameter field.
  32.  
  33. (IS)           ( cfa -- )
  34.        This word is compiled by IS. Sets the following DEFERred word to the
  35.        address on the parameter stack.
  36.  
  37. IS             ( cfa -- )
  38.        Depending on STATE, either sets the following DEFERred word immediatly
  39.        or compiles the setting for later.
  40.  
  41. SELECT          ( n1 --- )
  42.         Select drive n1 as the current disk drive to use as the DEFAULT
  43.         drive when no drive is specified. N1 ranges from 0 which is drive
  44.         A:, to a legal value up to 255 in DOS.
  45.  
  46. A:
  47. B:
  48. C:
  49. D:
  50. E:
  51. F:              ( --- )
  52.         Select drive A:, B:, C:, D:, E: or F: as the default drive.
  53.  
  54. QUIT           ( -- )
  55.         The main loop in Forth. Gets input from the terminal and Interprets
  56.         it. Responds with OK if healthy and repeats the process.
  57.  
  58. BOOT            ( --- )
  59.         A defered word that performs initialization before executing QUIT.
  60.         You can change this defered word to perform your own initialization.
  61.  
  62. INITSTUFF       ( --- )
  63.         A DEFERed word chain, used by many system utilities that need to
  64.         specify a function to be performed at cold start time.  See also
  65.         DEFERS for more information on how defered word chains work.
  66.  
  67. SEGSET          ( --- )
  68.         A DEFERed word that contain the current function used to set up
  69.         the segment registers at cold start time. Typically contains
  70.         SETYSEG.
  71.  
  72. WARMSTRT       ( -- )
  73.         The default function to be performed on a WARM start.  This word
  74.         is plugged into the DEFERed word WARMFUNC, to specify what is
  75.         done when the CONTROL BREAK key is pressed.  See also WARMFUNC and
  76.         WARM.
  77.  
  78. WARMFUNC        ( --- )
  79.         A DEFERed word that is invoked when a warm start occurs. This
  80.         function is called whenever the CONTROL BREAK key is pressed.
  81.  
  82. 1STCOLD         ( --- f1 )
  83.         A flag to tell if COLD has been called yet.
  84.  
  85. WARM           ( -- )
  86.         The WARM entry point for Forth, just calles the DEFERed word
  87.         WARMFUNC. A WARM start is invoked whenever the CONTROL BREAK key
  88.         is pressed.
  89.  
  90. COLD           ( -- )
  91.        The high level cold start code. For ordinary forth, BOOT should
  92.        initialize and pass control to QUIT. Typically Boot contains HELLO.
  93.  
  94. START           ( -- )
  95.         Minimal default initialization. This word is stuffed into BOOT
  96.         when compiling the KERNEL.COM file.
  97.  
  98. BIOSBKSAVE      ( -- a1 )
  99.         A double variable that holds the BIOS Control Break vector so it
  100.         can be restored on exit from Forth.
  101.  
  102. DIV0SAVE        ( -- a1 )
  103.         A double variable that holds the divide by zero interupt vector
  104.         so it can be restored on exit from Forth.
  105.  
  106. CTRLBKSAVE      ( -- a1 )
  107.         A variable that holds the state of the low memory Control Break
  108.         flag so it can be restored on exit from Forth.
  109.  
  110.  
  111. RESTORE_VECTORS ( -- )
  112.         Restores the CONTROL BREAK DOS vectors to their original value
  113.         as when Forth was entered.  The CONTROL BREAK and DIVIDE by 0
  114.         vectors are saved by the assembly language cold start routines
  115.         before Forth is entered.
  116.  
  117. DIV0STRT        ( -- )
  118.         The default function to perform when a DIVIDE by 0 trap occurs.
  119.         This routine aborts. A divide by 0 trap calls DIV0FUNC, which
  120.         defers to this routine.
  121.  
  122. DIV0FUNC        ( -- )
  123.         F-PC traps divide by 0 errors, and calls this defered word when
  124.         such an error is detected.  You can change the contents of this
  125.         defered words to handle divide by 0 errors in your own program.
  126.  
  127. BYEFUNC         ( --- )
  128.         A defered word which normally contains NOOP, provided so you
  129.         can specify a function to be performed before leaving back to
  130.         DOS.
  131.  
  132. BYE            ( -- )
  133.         Returns control to DOS. Performs the defered word BYEFUNC before
  134.         actually leaving.
  135.  
  136. DIVIDE0        ( status_reg CS IP AX BX CX DX SI BP -- )
  137.         The actual entry point from the divide by 0 trap, this word just
  138.         calls the deferd word DIV0FUNC.  Normally the registers on the
  139.         stack are just discarded, but you can install your own routine
  140.         into DIV0FUNC to handle the divide by 0 error.
  141.  
  142. DIV0BK          ( -- status_reg CS IP AX BX CX DX SI BP )
  143.         Handle the Divide by 0 interupt processing. You cannot reliably
  144.         return from a divide by zero interrupt.
  145.  
  146. RESTNEXT        ( -- f1 )
  147.         A flag to determine if we want the next code restored.
  148.  
  149. SETBRK          ( --- )
  150.         A subroutine not accessible directly from Forth that sets the
  151.         various interrupt vectors used by Forth.
  152.  
  153. SAVEVECTORS     ( --- )
  154.         A subroutine not accessible directly from Forth that saves
  155.         the Divide by 0 & Cntrl Brk interrupt vectors.
  156.  
  157. SET_VECTORS    ( -- )
  158.         Set the CONTROL BREAK and DIVIDE by 0 traps to point to the
  159.         Forth provided functions, so we can handle them smoothly.
  160.  
  161. @REL>ABS        ( a1 --- a2 )
  162.         Convert JMP address in a1+1 to an absolute memory address a2.
  163.  
  164. DEPTH          ( -- n )
  165.        Returns the number of items on the parameter stack.
  166.  
  167. MAX.S           ( -- a1 )
  168.         A variable that holds the maximum depth to be displayed of the
  169.         data stack with .S following.
  170.  
  171. .S             ( -- )
  172.        Displays the contents of the parameter stack non destructively. Very
  173.        useful when debugging.
  174.  
  175. %.ID           ( nfa -- )
  176.         Display the variable length name whose name field address is on the
  177.         stack. If it is shorter than its count, it is padded with underscores.
  178.         Only valid Ascii is typed.
  179.  
  180. .ID            ( nfa -- )
  181.         A defered word. Display the variable length name whose name field
  182.         address is on the stack. If it is shorter than its count, it is
  183.         padded with underscores. Only valid Ascii is typed.
  184.  
  185. DUMP           ( addr len -- )
  186.         A primitive little dump routine to help you debug after you have
  187.         changed the system source and nothing works any more.
  188.  
  189. RECURSE        ( -- )
  190.         Makes the definition this word is used in call itself at the
  191.         point where it is used. ie. "RECUSION"
  192.  
  193. H.             ( u -- )
  194.         Display the unsigned number in hex, with trailing blank. Does not
  195.         change the number base.
  196.  
  197. LMARGIN         ( -- a1 )
  198.         The left margin setting used by ?LINE, ?CR. When a line
  199.         wrap occurs, then LMARGIN specifies how many spaces are printed
  200.         on the following line. Default value is 0.
  201.  
  202. RMARGIN         ( -- a1 )
  203.         Controls the right margin, used by ?LINE, ?CR. Specifys
  204.         where to wrap the line.  Default value is 70.
  205.  
  206. TABSIZE         ( --- a1 )
  207.         Controls the TAB increment for TAB. Default is 8.
  208.  
  209. ?LINE          ( n -- )
  210.         Break the line at the cursor if there are less than n1 characters
  211.         till RMARGIN is encountered.
  212.  
  213. ?CR            ( -- )
  214.         Break the line at the cursor, if we have reached the right margin
  215.         as specified by RMARGIN.
  216.  
  217. TAB            ( -- )
  218.         Print spaces to get to the next TAB increment as specified by
  219.         TABSIZE.
  220.  
  221. \              ( -- )
  222.        Comment till the end of this line.
  223.  
  224.