home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / INFO / FORTH / F83HELP2.ZIP / F83HELP2.DOC
Encoding:
Text File  |  1987-11-08  |  27.5 KB  |  635 lines

  1. UPDATED: 3/9/85 D.C.Oshel  (See apology to Laxen and Perry below.)
  2. ==============================================================================
  3.  
  4. CONTENTS:  Preliminary notes on F83-8080.LBR release, Forth 83 Standard
  5.  
  6. Topics:  Use your editor's search command to locate the roman numeral
  7.          of interest.
  8.  
  9.     0.  Introduction, Apology, and Duck
  10.     I.  Notes on Disk IO using F83.COM (Major file interface words)
  11.        II.  Terminal and printer installation
  12.       III.  How to use F83's self-documenting features:  VIEW and SHADOW
  13.        IV.  Notes on "meta-compiling", or system regeneration (not required)
  14.         V.  General or miscellaneous observations
  15.  
  16. ==============================================================================
  17.  
  18. 0. Introduction, Apology, and Duck:
  19. -----------------------------------
  20.  
  21. F83-8080.LBR contains SIG/M Vol. #154, a public domain FORTH system written
  22. by Henry Laxen and Mike Perry of Berkeley, Ca.  This particular version of
  23. FORTH follows Leo Brodie's book, "Starting Forth," so far as the book goes.
  24.  
  25. Brodie notes the FORTH-79 variations from his (FORTH, Inc.) subject, but is
  26. not up-to-date on the Forth 83 Standard.  See August 1984 Byte for that.
  27. The 8080 Forth 83 Model 1.0.0 distributed as F83-8080.LBR is philosophically
  28. linked to, and apparently shares roots with, FIG-Forth.
  29.  
  30. What is NOT included in F83-8080.LBR, at least for the beginner, is a 
  31. discussion of how Forth 83 Model 1.0.0's CP/M file interface works.
  32.  
  33. This notes file, F83HELP2.DOC, contains some preliminary findings about the
  34. CP/M file interface, and some general observations that may be of interest
  35. to others who are new to FORTH, or to this implementation in particular.
  36.  
  37. ==============================================================================
  38.  
  39. =====
  40. DUCK!  There's more than one "public domain Forth 83."
  41. =====
  42.  
  43. In the original, tentative version of this help file, I concluded with a
  44. few sarcastic remarks about the difficulty of telling the difference between
  45. "pilot error" and "designer oversight".
  46.  
  47. After some reconsideration, I have decided that F83 is an extremely impressive
  48. program.  F83's ability to compile itself (a feature that need only have been
  49. asserted, not actually INCLUDED, by Mssrs. Laxen and Perry) speaks volumes 
  50. about the level of expertise that has gone into this program.
  51.  
  52. I have since seen another "Public Domain Forth 83".  Let me just say that
  53. THERE IS NOT A SINGLE EXAMPLE ANYWHERE in Laxen and Perry's fully-commented
  54. Forth 83 Standard code of such idiom as this (and I quote):
  55.  
  56.                DROP DROP DROP DROP DROP DROP
  57.  
  58. Laxen and Perry's code is clean, commented, tight and nice; by contrast,
  59. this other dog is stacked like the proverbial brick outhouse.  
  60.  
  61. ==============================================================================
  62.  
  63. "Not everything which looks like a duck and quacks like a duck actually IS
  64. a duck."  -- Anon., apocryphally attributed to Groucho Marx
  65.  
  66. ==============================================================================
  67.  
  68.  
  69. I.  Notes on Disk IO using F83.COM:
  70. -----------------------------------
  71.  
  72. 1.  Summary of common file-handling commands.  These are mostly documented in 
  73. the EXTEND80.BLK shadow screens (see below for definition of shadow screens.)
  74.  
  75. High-level file commands:
  76.  
  77.     DIR                display directory of current disk
  78.  
  79.     DEFAULT                make the file which was given on
  80.                     the CP/M command line the CURRENT
  81.                     file; this appears to be the only
  82.                     safe file to LOAD, OK or START
  83.  
  84.     OPEN B:FOOBAR.BLK            open file on the drive specified
  85.                     and make it the current file; files
  86.                     opened this way can be edited, but
  87.                     there appears to be a "feature" that
  88.                     prevents LOADing screens from an
  89.                     OPENed file:  Typical result is
  90.                     "BDOS Err on V:  Select".  Use
  91.                     caution for now, and only LOAD the
  92.                     DEFAULT file.  This problem was
  93.                     seen on a Kaypro 10.
  94.  
  95.     DEFINE WOLFGANG.MZT        just adds filename to dictionary
  96.  
  97.     FOOBAR.BLK            make FOOBAR.BLK the current file, if
  98.                     previously DEFINEd
  99.  
  100.     FILE?                show name of the current file, if any
  101.  
  102.     128 CREATE-FILE    FOURIER.TFM    create a new file of 128 blank screens,
  103.                     CP/M file length is therefore 128k.
  104.                     Lower case in name ok if CAPS is false,
  105.                     translated to uppercase otherwise.
  106.                     Initializes file contents, but does not
  107.                     OPEN it or otherwise disturb the 
  108.                     current file.
  109.  
  110. Low-level drive selection, use high-level with drive spec instead:
  111.  
  112.     0 SET-DRIVE               look on drive A (you thought it was 1?)
  113.     1 SET-DRIVE            look on drive B (you thought it was 2?)
  114.  
  115.     2 SET-DRIVE (don't do it!)    >CRASH!< display garbage if DIR is next
  116.                     F83 doesn't know about drive C, seems
  117.                     to do no error-checking, and gets
  118.                     subtly confused after a bad SET-DRIVE
  119.  
  120.  
  121. High-level buffer commands:
  122.  
  123.     0 LIST                          list screen 0 of the current file
  124.         L                               list current screen of the current file
  125.         A L                             toggle original/shadow screen of
  126.                                         the current file and list it
  127.  
  128.         B L                             go back one screen and list it
  129.     N L                             go forward one screen and list it
  130.  
  131.         0 EDIT                          edit screen 0 of the current file
  132.         ED                              edit current screen of the current file
  133.  
  134.     W                               editor command, W(rite block to disk
  135.     DONE                editor command, save changes and quit
  136.  
  137.     FLUSH                allows you to switch a disk; Hi Level
  138.                     word, as compared to:
  139.     CP/M RESET (low level)        vocabulary command to allow command to
  140.                     reset disk operating system, after 
  141.                     switching a floppy disk.
  142.                     (Does not resolve system crash on bad
  143.                     SET-DRIVE, try COLD or else reboot.)
  144.  
  145.     0 BLOCK                OTHER LOW LEVEL COMMANDS, these look
  146.     ESTABLISH            interesting but I haven't explored
  147.                     them yet, except that the BUZZPHRASE
  148.                     generator in Brodie's book works as
  149.                     advertised (use UM* instead of U* tho)
  150.                     provided you LOAD it from the DEFAULT
  151.                                         file.
  152.  
  153.                 =o=o=o=o=o=
  154.  
  155. 2.  SCREENS.  Read Brodie's discussion of FORTH screens to get a general idea
  156. of how and why.  In general, FORTH places 1024 bytes in a single screen, and
  157. F83 (a special case of FORTH) uses CP/M BDOS primitives to manage files of
  158. screens.  Usually, a screen can be edited, but there is no restriction against
  159. putting binary data or machine code in a screen provided you don't try to LOAD
  160. it or use the editor on it.  Brodie documents how to move the contents of a 
  161. screen into or out of the FORTH buffers, or into and out of the editor, and
  162. how to ensure that a file with changes in its buffer is actually updated on 
  163. disk.
  164.  
  165.                 =o=o=o=o=o=
  166.  
  167. 3. CP/M FILES OF SCREENS.  The authors of F83 use the .BLK extension to
  168. indicate that a CP/M file contains FORTH screens.  Files do not have to occupy
  169. the entire space on a disk.  The .BLK extension is merely a naming
  170. convention, except that VIEW expects it.
  171.  
  172. There are the same number of screens in such a file as the file's size in k, 
  173. as shown by STAT or D or SD (since 1k equals 1,024 bytes equals 1 screen).
  174.  
  175. The contents of the file are not determined, as mentioned above.  However,
  176. when the screens contain editable programs, they are regarded as 1,024 
  177. contiguous bytes of ASCII characters, divided into 16 lines of 64 characters
  178. each.  Newline characters are NOT stored; on the contrary, the lines are
  179. seen as well-defined fields by the editor.  Regardless of context, a screen
  180. is 1,024 bytes.  Lines are numbered from 0 to 15, and the 15th line has
  181. unusual properties in some commands (since it is the last and since the end
  182. of buffer condition is not error-trapped in most commands).
  183.  
  184. Some Forths store an ASCII null in the first byte of an empty screen, to
  185. prevent it from being LOADed.  Forth 83 does not appear to support this
  186. interpretation of null in the input stream (an advantage in other ways.)
  187.  
  188.                 =o=o=o=o=o=
  189.  
  190. 4. FILE ACCESS.  There are AT LEAST THREE ways to specify a screen file for 
  191. editing, loading, etc.  The first is to specify its name on the CP/M command 
  192. line when you invoke F83.  This file becomes the DEFAULT file.
  193.  
  194.         A0>F83 FOOBAR.SCR   (This method is strongly recommended.)
  195.  
  196. SECONDLY:  If a screen file already exists, you can also gain access to it by 
  197. the OPEN word:
  198.  
  199.         OPEN B:FOOBAR.SCR
  200.         1 LIST
  201.         180 ED   ... etc.
  202.  
  203. Some of the distribution files, like META80.BLK and UTILITY.BLK, have already
  204. been DEFINEd during the system generation step.  (Unless you intend to
  205. regenerate the system, or you intend to make use of the VIEW feature, there's
  206. no real need to keep the other distribution files on-line.)
  207.  
  208. THIRDLY:  You switch to another file by typing the name of any other DEFINEd 
  209. file, and you switch back the same way.  Once defined, the filename is a WORD 
  210. in the FORTH dictionary, and you can use SEE to decompile its definition.  
  211. However, what SEE shows you, and what you did to set up the word, are two 
  212. entirely different things.  THE DICTIONARY WORD CONTAINS AN FCB, as you can
  213. satisfy yourself with the command
  214.  
  215.     (Note: tick')    ' META80.BLK >BODY 128 DUMP
  216.  
  217. CAUTION:  Forth requires you to pay more than usual attention to the state
  218. of your buffers.  Ask yourself whether changed data has actually been written
  219. to the disk before you idly switch files.
  220.  
  221. WARNING:  Attempting to LOAD a file which is not the DEFAULT file will
  222. cause a system crash on a Kaypro 10 (BDOS ERR on Irrational Drive: Select),
  223. and maybe on all systems.  Proceed with caution.
  224.  
  225.                 =o=o=o=o=o=
  226.  
  227. 5.  CREATING A NEW FILE OF SCREENS.  Use CREATE-FILE, as follows:
  228.  
  229.                          37 CREATE-FILE B:SILLY.BLK
  230.  
  231. This command creates a new CP/M file on drive B called SILLY.BLK, which 
  232. contains 37 screens.  I do not know what would happen if the file was already
  233. there, but I suspect the existing version would be destroyed (no different
  234. from the CP/M bdos function that does the same thing.)
  235.  
  236. The screens are initialized; that is, each one contains 1,024 blanks, ASCII 32.
  237.  
  238. Documentation on this command is wholly contained in EXTEND80.BLK, where words
  239. are also defined that write a core image to disk, create FCBs, etc.  You'll
  240. have to read the definitions (and between the lines) to figure some of these
  241. out, but it's not too difficult.  The first shadow screen in SILLY.BLK would
  242. be located at Screen 37 2 / (i.e., 18).
  243.  
  244.  
  245.                 =o=o=o=o=o=
  246.  
  247.  
  248.  
  249. II.  Terminal and Printer Installation:
  250. ---------------------------------------
  251.  
  252. F83 knows about several different kinds of terminal, include FALCO, TELEVIDEO,
  253. QUME, PERKIN ELMER, ANSI and DUMB.
  254.  
  255. The default terminal is DUMB.  That means that the editor behaves like a 
  256. simple line editor instead of using its full-screen capability.
  257.  
  258. If your computer terminal emulates, for example, the Televideo functions 
  259. which do these four things as defined in F83,
  260.  
  261.         a)  Direct cursor addressing 
  262.         b)  Home cursor and clear screen
  263.         c)  Clear to end of line
  264.         d)  Delete current line
  265.  
  266. ...then all you need to do (to define your terminal and take advantage of the
  267. editor) is to issue the command TELEVIDEO.  To switch back to line editing, use
  268. the DUMB command.
  269.  
  270. Unfortunately, KAYPRO is not a pre-defined terminal in F83.  If you have
  271. the older model Kaypro II or 4 which simply emulated the Lear Siegler ADM-3A
  272. screen, then you must use DUMB.  However, if you have the Kaypro 4'84, 4+88,
  273. "new" 2, NEW 2, 2X or either of the Kaypro 10's, then you have extended
  274. terminal characteristics defined as follows in F83:
  275.  
  276.         : KP-AT  (S x y -- )
  277.             27 EMIT 61 EMIT 32 + EMIT 32 + EMIT ;
  278.  
  279.         : KP-BLOT (S x -- ) DROP 24 EMIT ;  ( DROP is required )
  280.  
  281.         : KP-DARK (S -- ) 26 EMIT ;
  282.  
  283.         : KP--LINE (S -- ) 27 EMIT 69 EMIT ;
  284.  
  285.         : KAYPRO (S -- )
  286.             ['] .ALL IS .SCREEN  ( NOTE: "dot-all", "dot-screen" )
  287.             ['] KP-AT IS AT
  288.             ['] KP-DARK IS DARK
  289.             ['] KP-BLOT IS BLOT
  290.             ['] KP--LINE IS -LINE ;
  291.  
  292. With this definition, you may now invoke full-screen editing with KAYPRO
  293. and switch back to line editing (if you want to) with DUMB.
  294.  
  295. There are two ways to permanently install your terminal definition:
  296.  
  297.     1)  Hard way.  Edit screen 15 of UTILITY.BLK to change the
  298.             default terminal definition from DUMB to, e.g., KAYPRO.
  299.         Edit one of the pre-defined but unused terminal definitions
  300.         located around screen 30, using the WIPE and 0 NEW editor 
  301.         commands.   FOLLOWING THE EXAMPLE FOR KAYPRO, define the
  302.         four terminal control functions, and a command that
  303.             redirects the definition of AT, DARK, BLOT, -LINE and .SCREEN,
  304.         as shown above, and call that, e.g., KAYPRO (same name you
  305.             used on screen 15.)  You may wish to edit line 0 on the other
  306.             terminal definition screens so that the first word loaded on
  307.             each screen is the word EXIT (prevents unnecessary terminal
  308.             defs from becoming a permanent part of F83.)
  309.  
  310.             With the changes made (and typos eliminated!!), do the
  311.             SECOND step involved in regenerating the system.  That is,
  312.  
  313.             LOAD KERNEL.HEX  <CR> (if necessary)
  314.                 KERNEL EXTEND80.BLK <CR>
  315.             
  316.             START <CR>
  317.             ... after many redefinitions you will hopefully
  318.             ... get a message that you should now save the
  319.                         ... image of your new system with BYE and SAVE
  320.             BYE <CR>
  321.             93 Pages   (or 94 or 95 or whatever, depending)
  322.             Warm Boot  (Kaypro message)
  323.             SAVE 9x MIGHTBE.COM  (however many F83 showed)
  324.  
  325.     2)  Easy way.  Enter the : definitions directly at the console,
  326.         following the example given for KAYPRO.  Issue the command,
  327.         KAYPRO for example, then test full-screen editing.  If all
  328.         is satisfactory, do this:
  329.  
  330.             MARK EMPTY HERE FENCE ! <CR> EMPTY isn't unique
  331.             BYE <CR>
  332.             93 Pages  (or whatever the F83 image size really is)
  333.             Warm Boot (Kaypro message)
  334.             SAVE 9x MIGHTBE.COM
  335.  
  336.  
  337. If all is ok, rename FORTH83.COM=MIGHTBE.COM, or whatever shorthand name
  338. suits your fancy.  I would suggest that you DO NOT lose your original copy
  339. of F83.COM, however, under any circumstances.
  340.  
  341. CAUTION:  There is a significant difference in these two methods.  If you
  342. use the "Hard way", you force F83 to permanently recognize a change in the
  343. terminal definition.  On the other hand, if you simply save a system image
  344. that has the new definition installed in the dictionary, your new command
  345. can be wiped out using the EMPTY word if you do not adjust the FENCE.
  346. The "Hard way" has the advantage that you can eliminate unwanted terminal
  347. definitions from deep inside the dictionary.
  348.  
  349.  
  350. >>> PRINTER INITIALIZATION <<<
  351.  
  352. F83.COM has a pre-defined word to initialize the printer for 132 columns.
  353. The word is INIT-PR, and it is DEFERred.  As distributed, INIT-PR is a
  354. simple NOOP.  However, F83 also has a pre-defined word EPSON which simply
  355. does a 15 EMIT (send out Control-O, Epson condensed print command).  If you
  356. put EPSON in the INIT-PR "hook", then INIT-PR jumps to EPSON and sends the
  357. Control-O to the printer instead of just to the screen.
  358.  
  359. The relevant commands are:
  360.  
  361.     (Immediate, note tick)  ' EPSON IS INIT-PR
  362.  
  363.     (In colon definition)  ['] EPSON IS INIT-PR
  364.  
  365. Obviously, DEFERred execution is powerful enough to define any kind of printer
  366. or terminal whatever, if you make the appropriate definitions.
  367.  
  368.                 =o=o=o=o=o=
  369.  
  370.  
  371.  
  372. III.  VIEW and SHADOW, How to use F83's self-documenting features:
  373. ------------------------------------------------------------------
  374.  
  375. The .LBR file which contains F83 also contains a number of other files, the
  376. most important of which are squeezed .BLK files containing FORTH screens.
  377.  
  378. At first glance, these files (META80.BLK, EXTEND80.BLK, CPU8080.BLK, 
  379. UTILITY.BLK and DIRECT.BLK) are for use in "meta-compiling" a new Forth system.
  380.  
  381. Surprisingly, however, they are the DOCUMENTATION for F83.  The bit of magic
  382. which converts a huge program source file, incoherently organized by human
  383. standards (but just fine for computers), into a useful tool for learners is
  384. the VIEW command.
  385.  
  386. F83 includes a field in all Forth words which is NOT in the Forth 83
  387. standard -- the "View Field."  (Advanced note: The view field is accessible 
  388. via the >VIEW command, which converts CFA to "VFA".)  All words in the
  389. Forth dictionary have a view field, and those words WHICH ARE COMPILED USING
  390. THE META-COMPILER have non-zero view fields.  Words which you add have a
  391. view field, but the field is set to a "do-nothing" type of action.
  392.  
  393. If you enter the VIEW command, for example VIEW FORTH-83, the interpreter
  394. looks up the view field information stored in the body of the FORTH-83
  395. word (following the example), and uses this information to decide which of
  396. the distribution contains the SOURCE CODE DEFINITION of the FORTH-83, then
  397. LISTS the appropriate screen!
  398.  
  399. All F83 source screens have a parallel SHADOW screen which contains the
  400. programmer's notes for the source (assuming the notes were written, and
  401. all those notes which are REQUIRED by the Forth 83 Standard are actually
  402. there).  The SHADOW screens occupy the second half of the .BLK file.
  403. Therefore, if you VIEW FORTH-83, and if META80.BLK is on-line (mounted in
  404. a disk drive), the screen which contains the FORTH-83 definition is
  405. LISTed, and you may then examine the program notes on the SHADOW screen by
  406. typing A L.
  407.  
  408. The A L command is a "toggle" which switches you back and forth between
  409. the screen and its shadow.  There is always a one-to-one correspondence
  410. between source screen and shadow (documentation) screen.  This relationship
  411. is purely arithmetical (the shadow is in exactly the same position in the
  412. last half of the file as the original is in the first).  The feature is
  413. deliberately intended to make it easy for program source files to be heavily
  414. commented "on the fly", and thereby removes at least one excuse which keeps
  415. programmers from writing documentation until last (if at all).
  416.  
  417. There are two other helpful commands along these lines:  SHOW and LISTING.
  418. Both require that the line printer be set up for 132 column printing.  The
  419. LISTING command will print out the ENTIRE CONTENTS of the "current" file,
  420. in two parallel columns -- source screens down the left and shadow screens
  421. down the right, three per page.  The 0 15 SHOW command takes two parameters
  422. ( first last -- ) and displays the screens requested two-up and three per
  423. page.  If you use the form 0 15 SHADOW SHOW, you get screens 0 through 15
  424. down the left and the corresponding shadow screens (e.g., 89 through 104)
  425. down the right, also three per page.
  426.  
  427.  
  428. To get a LISTING of CPU8080.BLK, for example, you would issue the commands:
  429.  
  430.     INIT-PR <CR>          <-- assumes you've done printer installation
  431.     CPU8080.BLK <CR>      <-- sets "current" file to CPU8080.BLK
  432.     LISTING <CR>          <-- source/shadow printout of entire file
  433.  
  434. ... and then go downstairs for a cup of coffee while the pup prints out.
  435.  
  436.  
  437. However:  VIEW, SHOW and LISTING are very powerful tools to have laying
  438. around if you know what you're looking for!  
  439.  
  440. The COMPLEAT BEGINNER will have a chore figuring out what the right question 
  441. is, and especially learning what the full list of Forth 83 command words is.  
  442. You should first read Brodie, then resign yourself to the fact that Brodie is 
  443. NOT talking about Forth 83.  The Byte article in August of '84 is useful, but
  444. not especially helpful to the novice.
  445.  
  446. Unless you know where to get a Forth 83 glossary, you will have to alphabetize
  447. your own list -- from the WORDS command! -- and then spend a lot of time
  448. browsing around with VIEW WHATEVER and A L to get your bearings.
  449.  
  450.  
  451.  
  452. Vocabulary-Related Commands:  WORDS, VOCS, ORDER, DEFINITIONS
  453.  
  454. The WORDS command can be quite helpful in this regard.  It is affected by
  455. various vocabularies, and the list of words shown will be different if you
  456. are in the EDITOR vocabulary, say, instead of the FORTH vocabulary.
  457.  
  458. The VOCS command will display the various vocabularies:  The most important
  459. are FORTH, EDITOR, CP/M, and SHADOW.
  460.  
  461. The ORDER command will display "context" -- the list of vocabularies that are 
  462. searched (during execution of VIEW, for example.)  It will also show "content"
  463. -- the vocabulary to which your new definitions will be added.
  464.  
  465. The DEFINITIONS command will set the "content" vocabulary.  An example
  466. usage is FORTH DEFINITIONS.  New definitions are thereafter added to the
  467. FORTH vocabulary.
  468.  
  469. >>> Subtle Note:  If you VIEW QUIT you will probably get a listing of the
  470. Forth interpreter's version of the QUIT command.  However, if you first
  471. specify the EDITOR vocabulary, VIEW QUIT will show you the editor's vastly
  472. different version.  You switch back and forth between the vocabularies by
  473. using the commands FORTH or EDITOR.  Generalize on this, there are many
  474. other possibilities!
  475.  
  476. >>> The subject of vocabularies is briefly touched on in Brodie.  The best
  477. general discussion I've seen is in the KAMAS User's Manual, which also uses
  478. a threaded interpretive language similar to Forth.  (Details of implementation
  479. are different, but the philosophy and general outlook is the same.)
  480.  
  481.  
  482.                 =o=o=o=o=o=
  483.  
  484.  
  485.  
  486. IV.  Miscellaneous Notes and Observations:
  487. ------------------------------------------
  488.  
  489. NEAT STUFF IN F83.  Here are a few WORDS I've discovered that seem to do
  490. nice things, presented in example form (no stack diagrams):
  491.  
  492.     .S        displays the current stack non-destructively
  493.  
  494.     0 200 DUMP    dumps 200 bytes from memory location 0 in hex/ascii
  495.             (the starting byte is shown as \/ in a ruler line!)
  496.  
  497.     LISTING        Prints (on the printer) the contents of all current
  498.             screens and their shadows (see below).  Requires the 
  499.             printer to be initialized for 132 columns.  To list
  500.             some other file, you need to DEFINE it or invoke it
  501.             if it's already DEFINEd.  LISTING prints the DEFAULT
  502.             unless otherwise specified.  DEFAULT appears to be
  503.             undefined unless the filename was present on the CP/M
  504.             command line when you started F83.
  505.  
  506.     EPSON        EMITs Control-O for compressed print.  Nothing happens
  507.             at the printer unless you first type Control-P to
  508.             toggle the printer on.
  509.  
  510.     INIT-PR        Initializes the printer for 132 col.  Same as EPSON
  511.             because it is a DEFERred word that has been redirected
  512.             to EPSON using the ['] ... IS ... commands (or not,
  513.             as the case may be.  It CAN be redirected, but doesn't
  514.             appear to be.)
  515.  
  516.     Shadow screen   This is an ingenious concept which gently overcomes
  517.             every programmer's instinct to write the documentation
  518.             last, if at all.  The shadow screen is full of comments
  519.             (hopefully) about a screen meant to be LOADed.  If the
  520.             load screens are from 1 to N, the shadows follow at
  521.             N + 1; i.e., the shadows occupy the second half of the
  522.             screen file.  Screen 0 and its shadow are the LOGO,
  523.             as seen by the LISTING word, which fills the last page
  524.             with the LOGO screen if possible.  A load screen may
  525.             contain any amount of text following the word EXIT.
  526.             You may jump back and forth between a screen and its
  527.             shadow by using the A L words.  Obviously, you should
  528.             create screen files twice as large, to include both
  529.             load screens AND their shadow documentation.
  530.  
  531.     SHADOW        This is a warning that shadows are a more complex 
  532.             subject than it might appear.  SHADOW is a word that
  533.             selects the shadow VOCABULARY.  Its contrary command
  534.             appears to be FORTH.  The subject is NOT in Brodie;
  535.             maybe the Forth Interest Group knows, but nobody else.
  536.  
  537. NOT-SO-NEAT STUFF.  Most (all?) screen displays can only be interrupted,
  538. they cannot be stop-listed using control-S.
  539.  
  540.  
  541. Other General Observations, Gripes, Etc.:
  542.  
  543. Observation #1:  The F83.COM program runs "out of the box."  The steps which
  544. the authors outline to regenerate the system do not really seem to be required.
  545. You might do the "meta-compilation" steps in order to:
  546.  
  547.            1)  Install the full-screen editor. (Why bother?)
  548.            2)  Change the user version number in the HELLO word. (Vanity?)
  549.            3)  Redefine FORTH to suit your own tastes.  (Good luck!?)
  550.  
  551. The full-screen editor is some improvement over the line editor, but
  552. WordStar users will find it awkward and primitive.  The commands are fully
  553. documented in UTILITY.BLK, Screens 15 to 32.  The main commands are EXPLAINED
  554. in Brodie, but there are some enhancements which make this editor more
  555. usable than Brodie's description, especially 0 NEW, TOP, K and KEEP. 
  556.  
  557.  
  558.  
  559. Observation #2:  F83 sets appropriate limits for itself when running under
  560. the slightly more restricted, 60K CP/M used by the Kaypro 10.  The highest
  561. RAM occupied by F83 is all under LIMIT, which is dynamically set by the
  562. cold start routine to lie on the page boundary just below the BDOS entry
  563. vector.  In other words, they did it right, and F83 should probably run
  564. correctly on most CP/M machines. 
  565.  
  566.  
  567.  
  568. Observation #3:  META-COMPILATION is the process of asking FORTH to recompile
  569. itself according to the information found in those distribution files which
  570. have the .BLK extension:  META80.BLK, UTILITY.BLK, etc.  When you regenerate
  571. the system following the authors' instructions, you will receive MANY, MANY
  572. messages of the form "XXX isn't unique".  This is apparently normal behavior,
  573. but I have no idea what effect all these redefinitions have on the way space
  574. is allocated in the dictionary, and the authors aren't saying.
  575.  
  576.     Beginners Note 1:  When you "unsqueeze" the META80.BQK file
  577.     it expands to 240k!
  578.  
  579.     Beginners Note 2:  The first step shown by the authors is
  580.  
  581.         B>F83 META80.BLK
  582.         OK
  583.         BYE
  584.  
  585.     Note that the OK is a COMMAND-TYPED-BY-YOU and not a status
  586.     message returned by FORTH.
  587.  
  588.  
  589. Observation #4:  DOCUMENTATION.  The beginner's reference book is Leo Brodie's
  590. "Starting Forth."  However, Brodie's book discusses the FORTH, Inc. system and
  591. its variations from FORTH-79.  The variations from the FORTH-83 standard are
  592. not even conceived of; there was an article in Byte about the FORTH-83 standard
  593. in August '84, but that may a burden for many people to track down.  Brodie's
  594. book remains the SINE QUA NON, however, and if you are beginning at FORTH, you
  595. MUST read Brodie.  It discusses the 99% of the commands that have nothing to do
  596. with the way FORTH is forced to run under the CP/M operating system.
  597.  
  598. BE ADVISED that if F83.COM really is a FORTH-83 implementation, then there ARE
  599. some small variations that have a major impact, especially in the definition
  600. of boolean flags.  See the Byte article (sorry).
  601.  
  602.  
  603. Observation #5:  BUGS.  There appear to be some minor bugs in F83.COM, or at 
  604. least some ways of abusing the system and causing it to crash that are mostly 
  605. obscure to the novice.  Beginners should especially note:
  606.  
  607.     1.  Use UPPER case for commands.  Or else execute the command:
  608.  
  609.         1 CAPS !  ( ignores case except in editor )
  610.  
  611.     2.  Be aware that changing the base to HEX will have effects
  612.         that you may not have anticipated.  For example:
  613.         Executing .VERSION while the base is HEX will produce
  614.             the surprising notice that your version is 0.6.4 instead
  615.             of 1.0.0 -- this looks like a bug at first, but it is
  616.             actually an unannounced side effect of changing the
  617.             number base to HEX.  Brodie spends a couple of paragraphs
  618.         on this issue, so it is probably the beginner's most
  619.         likely mistake.
  620.  
  621.     3.  Be aware that most words expect to find one, none or some
  622.         parameters on the stack, and you have to put them there.
  623.  
  624.     4.  Be aware that VARIABLES are also WORDS.  They execute by
  625.         placing their address on the stack, but all you see is
  626.         an "ok" out of FORTH.  Randomly trying out the various
  627.         words given by the WORDS command is no substitute for
  628.         Brodie's book.
  629.  
  630.  
  631.                 ############
  632.  
  633. EOF: 
  634. F83HELP2.DOC  by David C. Oshel, Ames, Iowa, 9 March 1985 
  635.