home *** CD-ROM | disk | FTP | other *** search
-
- Chapter2 L_O_V_E FORTH
-
-
-
- 2.0 Compiling source code
- ---------------------
-
-
- L.O.V.E Forth allows considerable flexibility in the forms of
- source code that it accepts. Programs can be loaded from screen format
- floppy disks, or screen files and text files under MS-DOS. These may be
- intermixed as desired and nested within each other, up to ten levels deep.
-
- Many file words are named with a quote following (eg.
- INCLUDE", OPEN" ). These words are followed by a file name, or a path
- and file name (eg. INCLUDE" MYFILE.TXT or OPEN"
- \WORK\SCREENS\PROG.SCR). There should always be a closing quote (it
- may be omitted when it is the last item on a line that has been keyed
- in). The word "CLOSE, however, does not use a name. In this article,
- the words BLOCK and SCREEN are used interchangeably, both meaning a
- 1024 character fixed unit of disk storage.
-
- In order to load source code from screen format files or floppy
- disks, the block handling words must be loaded. To load them, type:
- INCLUDE" LOADBLK.TXT . Once loaded, they may NOT be removed, as
- some kernel words are REDEFINED.
-
-
- 2.1 Loading MS-DOS text files
- -------------------------
-
- Text files are convenient and efficient in use of disk space.
- Therefore L.O.V.E. Forth accepts source code from text files. The word
- INCLUDE" followed by MS-DOS path and file name, loads the specified
- file. There is a file size limit of 65535 bytes.
-
- Stand-alone editors are accommodated by the L.O.V.E. Forth DOS
- command. Typing DOS, followed by the path and name of the desired text
- editor, begins an editing session. To return to Forth, simply save the
- work, exit the editor, and load the desired file.
-
- There are several methods of commenting available in text
- files. The usual Forth comment ( ) works to a length of 256
- characters. The line comment function \ works for one line
- (until carriage return is encountered). To comment out large portions
- of the text, the words (( and )) are available. They may
- enclose any amount of space, and may be used around ( ) and \ . They
- may not be nested within themselves. To comment from one point to the
- end of the file, simply use (( without providing a closing )). Note
- that )) is a Forth word and must be surrounded by spaces or
- end-of-line, return or enter.
-
- The word EXIT is often used to exit from the compilation of
- a Forth screen. Because of this, it may not be used for this function
- in text files. Simply use (( as is described above. In addition,
- the words --> , LOAD" and THRU" may not appear in text files
- as well. LOAD" and THRU" may be used instead to load screens
- from another file.
-
-
- Example:
- LOAD" example.scr" or THRU" example.txt"
-
-
- It is possible to load a screen file with INCLUDE" . In this
- case, however, it must not include any of the words described above or
- the Forth line comment \ .
-
- If an error occurs while loading a text file, the previous
- twenty-four successfully loaded lines are displayed, and the erroneous
- word is highlighted.
-
-
- 2.2 Using screen files
- ------------------
-
- L.O.V.E. Forth supports editing and loading of screen files. A
- comprehensive screen editor and numerous utilities for screen handling
- are supplied. The maximum file size accomodated is 32767 screens.
-
- The word OPEN" followed by a filename, opens an existing screens
- file for editing. It becomes the 'current' file, which is accessed by
- block disk words such as BLOCK UPDATE and LINE
-
- To show contents of a screen on the display, there is a
- fast LISTing utility. Type: (screen-no) L to list a screen. The
- words LN, LB list one screen forward and backward respectively, LL
- relists the current screen. The word EL enters the full-screen screen
- editor at the current screen.
-
- The screen editor is a virtual vocabulary. It may be entered at
- the current screen with EL or by: (screen-no) EDIT .
- Typing control-X displays the help information.
- This editor provides facilities for general editing, 'gobbling' lines
- or words to a buffer, and moving from screen to screen.
- To save the screen and exit from the editor, type: ESCAPE and F keys.
- Note that the 'gobble' buffers are lost if any compiling is performed,
- or if another virtual vocabulary is called in. Do not use the editor
- on a write-protected disk, as it always writes the current screen, when
- moving between screens.
-
- To load from the current file, the words LOAD" and THRU" may
- be used. It is possible to load right from the editor by typing escape L .
- Arrow --> may be included to proceed to the next screen and EXIT may
- be used to terminate loading at a point on a screen. If any error
- occurs during loading, the erroneous screen becomes the current screen
- for listing and editing. The word WHERE will display the screen with
- the erroneous word highlighted.
-
- The word SHOW performs the rapid listing of a range of screens.
- To slow it down, store a value into the variable SHOWDELAY. INDEX
- prints the first line only, from a range of screens.
-
- To create a new screens file, the word OPEN-NEW" followed by a
- path and file name is used. It gives the file a starting size of two
- screens. To obtain a larger file size, type: (total screens) SCREENS .
- When in the editor, the file can also be extended, simply by advancing
- past the last screen in the file. To open a different file, simply use
- OPEN" or OPEN-NEW". The previous file is automatically closed. To
- close the file explicitly, the word "CLOSE may be used (no word
- preceeds it).
-
- To copy a range of screens from one place on disk to another, the
- word COPYSCRNS may be used. Pass in the starting screen, ending screen
- and destination screen. Screens may be 'slid up' or down in the current
- file. To erase a range of screens, the word ERASESCRNS is used (pass in
- start and end screens). To put a header, with date time and screen
- number on a range of screens, use the word SCRNHDS.
-
- To copy screens from file to file, the word COPYF->F" is used.
- Pass in the starting screen and ending screen in the source file, and
- the first destination screen in the destination file. Follow this word
- with the source path\file and the destination path\file. For example:
-
- 0 10 5 COPYF->F"\my-dir\file1.scr"myfile.scr"
- There should be no space following the second " mark.
-
- To load a screen or range of screens from any screen file, the
- words LOAD" and THRU" may be used. The values passed in are
- the same as for LOAD and THRU, but the screens are loaded from the
- specified file. The words --> LOAD THRU may be used in the
- loaded file and operate within that file. Additional files may be
- loaded from within those files with additional INCLUDE" LOAD" or
- THRU" commands.
-
- If an error occurs while loading a screens file, that file is
- left open for editing at the erroneous screen. If an error occurs
- while loading a text file, no file is left open for editing. If there
- are no errors, the file currently open before the loading remains so.
-
- Screen files may be converted to text files for more convenient
- programming. The free-ware program BUNBLOCK.EXE is provided for
- this purpose. Type BUNBLOCK with no arguments for help.
-
-
- 2.3 Using screens format diskettes
- ------------------------------
-
- The traditional Forth source code storage is on floppy disks
- dedicated entirely to sequential screens. L.O.V.E. Forth supports both
- editing and loading of eight and ten sector formats. Disks are accessed
- by bypassing MS-DOS. Hard disks are not accessed. There are also
- several utilities for conversion of screen floppies to screen files.
- The screen format facility must be explicitly enabled before use, as
- follows.
-
- When no screen file is open, Forth accesses the floppy disks in
- screen format. All the block disk words and utilities described
- above may be used LOAD THRU --> SHOW INDEX WHERE COPYSCRNS
- and ERASESCRNS . In addition the words LOAD" THRU" and
- INCLUDE" may appear on screens format diskette screens.
-
- There are two formats floppy screens available: 8 sectors
- per track and 10 sectors per track (320 or 400k per disk). The former
- is the default setting. To switch to and from 10 sectors, format the
- commands 10-SECTS-ON and 10-SECTS-OFF These are used
- (in SCREEN-UTILS vocabulary). Floppy drives are treated as having
- contiguous screens. Screen 319 (399) is the last screen on drive A:,
- and screen 320 (400) is the first on drive B:. Note that accesses to
- floppies through MS-DOS functions confuse the screens format utilities
- (sets them to 9 sectors/track). Two solutions to this: Refrain from
- using floppies for MS-DOS functions or switch to screen files. Using
- virtual vocabularies from MS-DOS floppies will not cause problems.
-
- While a screens file is in use, and it is desired to list a
- single screen on a screens format floppy, use the command:
- (scrn_no) LSCRN
- To copy from a screens format floppy to a screens file, the command
- COPYSCRNS->F" followed by the path\file of an existing file is used.
- The starting screen, ending screen, and destination screen are passed
- in. It is also possible to copy from a screens file to floppy screens
- with the command: COPYF->SCRNS" followed by the source file, and with
- similar arguments passed in.
-
- INITDISK will initialize a screens format floppy disk to the
- current sectors/track setting. This word normally initializes drive B:.
- To initialize drive A:, execute the word SETDRIVES, which prompts the
- drive to use the word, COPYDISK, copies the entire disk from drive A:
- to B:, and the word COMPDISK compares the two (two drives are required
- for both words). The word COPYNEW initializes drive B:, copies drive
- A: to B: and compares the two.
-
- The variable BLKMAX is used with screens format diskettes to set
- the maximum available screen. If it is desirable to limit the action of
- editing, listing etc, set this variable to the last usable block#. The
- variable OFFSET is also used primarily with screens format diskettes.
- Its contents are simply added to the block number on block operations.
- For example, to make screen 0 refer to the first block on drive B,
- type: 0 ONB OFFSET !
-
- Normally usage of screens floppy diskettes is disabled. To
- enable the usage of these obsolete media, type:
- SCREEN-UTILS ENABLE-SCRNS .
- To disable use:
- SCREEN-UTILS DISABLE-SCRNS .
- These changes may be made permanent by doing a SAVE" of the Forth
- system.
-
-
- 2.4 Nested loading capability
- -------------------------
-
- L.O.V.E. Forth allows files to be loaded from within other files.
- This permits screen files and text files to be intermixed and
- nested ten levels deep. Simply include the appropriate loading
- word (eg. LOAD" or INCLUDE" ) in a screen or file.
-
- Load the following:
- Screen disk: Screen file Text file:
- From: Screen disk * * *
- Screen file * *
- Text file * *
-
-
-
-
-
-
-
-
-
-
-
-
-
-