home *** CD-ROM | disk | FTP | other *** search
-
-
- AVOC A variable that hold the old CONTEXT vocabulary
- CODE is the defining word for FORTH assembler definitions.
- It saves the context vocabulary and hides the name.
-
- END-CODE terminates a code definition and restores vocs.
-
- #USER Count of how many user variables are allocated
- USER Vocabulary that holds task versions of defining words
- ALLOT Allocate some space in the user area for a task.
- When used with CREATE, you can define arrays this way.
- CREATE Define a word that returns the address of the next
- available user memory location.
- VARIABLE Define a task type variable. This is similar to the
- old FIG version of USER.
- DEFER Defines an execution vector that is task local.
-
- >IS Maps a code field into a data field. If the word is in
- the USER class of words, then the data address must be
- calculated relative to the current user pointer. Otherwise
- it is just the parameter field.
-
- (IS) The code compiled by IS. Sets the following DEFERred
- word to the address on the parameter stack.
- IS Depending on STATE, either sets the following DEFERred
- word immediatly or compiles the setting for later.
-
- 11Feb87TJZ
-
- (=:) ( N1 --- )
- Primitive used by the following definitions,
- gets compiled into colon definition, and stores
- value on the stack into the following defs
- body field.
-
- =: ( N1 T1 --- )
- Used to assign values into the body of the
- following definition, like variables or
- constants.
-
- 11Feb87TJZ
-
- INCR> ( --- )
- Increment the body of the word following, used to
- modify the following constant or variable.
-
- DECR> ( --- )
- Decrement the body of the word following, used to
- modify the following constant or variable.
-
- 11Feb87TJZ
-
- +!> ( N1 --- )
- Increment the body field of the following definition
- by value n1 on the stack.
-
- RUN
- Allows for multiline compilation. Thus you may enter a :
- definition that spans several lines.
- QUIT
- The main loop in Forth. Gets more input from the terminal
- and Interprets it. Responds with OK if healthy.
- BOOT The very first high level word executed during cold start
- WARM Performs a warm start, jumped to by vector at hex 104
-
- COLD The high level cold start code. For ordinary forth,
- BOOT should initialize and pass control to QUIT.
-
- INITIAL The screen number to load for an application.
- OK Loads in an application from the INITIAL screen
- START Used to compile from a file after meta compilation
- has finished.
- BYE Returns control to CP/M. First it moves the heads
- down next to the code such that the system is contiguous
- when saved. Calculates the size in pages.
-
-
- WARM Initialize the warm start entry point in low memory
- and jump immediately into hi level
- COLD Initialize the cold start entry point in low memory
- Then calculate how much space is consumed by CP/M and
- round it down to an even HEX boundary for safety. We
- then patch FIRST and LIMIT with this value and calculate
- the locations of the return stack and the Terminal Input
- buffer. We also set up the initial parameter stack and
- finally call the Hi Level COLD start routine.
-
- Finally we must initialize the user variables that were defined
- earlier. User variables are relocatable, and sit on the top of
- the dictionary in whatever task they occur in. They must be
- laid down in the exact same order as their definitions.
-
- DEPTH Returns the number of items on the parameter stack
- .S
- Displays the contents of the parameter stack non
- destructively. Very useful when debugging.
-
- .ID
- Display the variable length name whose name field address
- is on the stack. If it is shorter than its count, it is
- padded with underscores. Only valid Ascii is typed.
-
- DUMP
- A primitive little dump routine to help you debug after
- you have changed the system source and nothing works any
- more.
-
- These words are in the reference word sets, 29Sep83map
- and are only include for completeness.
- We prefer to use RECURSIVE rather than RECURSE.
- ( See RECURSIVE )
-
- We must resolve the forward references that were required in
- the Meta Compiler. These are all run time code which wasn't
- known at the time the meta compiling version was defined. These
- are all either defining words or special case immediate words.
-
- These are forward references that were generated in the course
- of compiling the system source. Most of these are here because
- (DO) (?DO) and ROLL are written in high level and are defined
- very early in the system. While forward references should be
- avoided when possible, they should not be shunned as a matter
- of dogma. Since the meta compiler makes it easy to create and
- resolve forward references, why not take advantage of it when
- you need to.
-
- In order to run, we must initialize all of the defferred words
- that were defined to something meaningful. Deferred words are
- also known as execution vectors. The most important execution
- vectors in the system are listed here. You can certainly create
- your own with the defining word DEFER. Be sure you initialize
- them however, or else you will surely crash.
-
- Initialize the CURRENT vocabulary to point to FORTH
- Initialize the CONTEXT vocabulary to point to FORTH
- Initialize the Threads in the Forth vocabulary
- The value of DP-BODY is only now know, so we must init it here
- The rest of the variables that are initialize are ordinary
- variables, which are resident in the dictionary, and must be
- correct upon cold boot. You can change some of these depending
- on how you want your system to come up initially.
-
-