home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / CPM / FORTH-83 / F83-20.MAN < prev    next >
Text File  |  2000-06-30  |  34KB  |  860 lines

  1. F83  Users  Manual,  by  the Silicon Valley  Users  FIG  Chapter.      
  2. Originally in several smaller files.  Can use some more text.       
  3.  
  4.  
  5.                            F83 Users Manual
  6.                            ~~~~~~~~~~~~~~~~
  7.  
  8.  
  9.  
  10.                                   F83
  11.  
  12.                               Version 2.0
  13.  
  14.  
  15.                                written by
  16.  
  17.                              Michael Perry
  18.  
  19.                                   and
  20.  
  21.                               Henry Laxen
  22.  
  23.  
  24.  
  25.  
  26.  
  27.  
  28.  
  29.  
  30.  
  31.  
  32.  
  33.  
  34.                       This manual was compiled by
  35.  
  36.                              J. G. Modrow
  37.  
  38.                                 for the
  39.  
  40.                              SVCS FORTH SIG
  41.  
  42.                                June 1984
  43.  
  44.  
  45.                                Edited by 
  46.                             John A. Peters
  47.                                 July 85
  48.                                Rev. 2.1.x
  49.  
  50.                                  INDEX
  51.                                  ~~~~~
  52.  
  53.  
  54.     1.0  Introduction
  55.  
  56.     1.1  About F83
  57.  
  58.     2.0  Using F83
  59.  
  60.     2.1  Distribution Disks
  61.  
  62.     2.2  Starting F83
  63.  
  64.     2.3  Standard System Documentation Requirements
  65.  
  66.     2.4  Version 2.0 General Information
  67.  
  68.     2.5  Creating Custom Applications
  69.  
  70.     2.6  Metacompiling F83
  71.  
  72.     2.7  Quick Reference
  73.  
  74.     3.0  Glossary
  75.  
  76.     4.0  MSDOS services
  77.  
  78.     5.0  MSDOS Disk File Interface
  79.  
  80.     6.0  Assembler
  81.  
  82.     7.0  Source Listings
  83.  
  84.     8.0  Forth Books
  85.  
  86.  
  87. 1.0 Introduction
  88.  
  89.     WELCOME TO FORTH
  90.  
  91.     ********************************************************************
  92.     *                                                                  *
  93.     * This  is  a  public domain system, and may be freely distributed *
  94.     * and  copied,  as  long  as  the  authors are given credit and no *
  95.     * copyright  notice is placed upon it. If we catch someone selling *
  96.     * this  system  as  their  own  proprietary  product,  with  their *
  97.     * copyright  notice  ,  we will do our best to make them regret it *
  98.     * for the rest of their lives. You have been warned!!              *
  99.     *                                                                  *
  100.     ********************************************************************
  101.     
  102.  
  103.     Forth  is about ten years old now (1983) but some of the features of
  104.     F83 are relatively new to the Public Domain Forth Model.
  105.  
  106.     If  you  are  new  to  Forth  your  best bet is to purchase the book
  107.     STARTING  FORTH  by LEO BRODIE. It costs about seventeen dollars and
  108.     is available at most large book stores. On page 84 you will find the
  109.     commands  for  the  line editor. The F83 model follows both the book
  110.     and the Forth 83 standard.
  111.  
  112.     See  Section  8.0  for  addresses  of  places where you can purchase
  113.     STARTING FORTH and the FORTH 83 Standard.
  114.  
  115.     The Forth Interest Group ( FIG ) has meetings on the 4th Saturday of
  116.     each  month,  currently at the Chabot College in Hayward, CA and the
  117.     DYSAN Auditorium, 5201 Patrick Henry Drive, Santa Clara, CA at 1:00
  118.     pm.  Call  the FIG hot line if you wish to double check the location
  119.     phone 415- 962-8653 or the FIG Tree BBS (300 baud) at 415-538-3580.
  120.  
  121.     Henry Laxen                                  Mike Perry
  122.     1259 Cornell Avenue                          1125 Bancroft Way
  123.     Berkeley, CA 94706                           Berkeley, CA 94702
  124.  
  125. 1.1 About F83
  126.  
  127.     F83 is an 83 standard Forth with several features not found in other
  128.     FORTH's.  F83  was written and donated to the public domain by Henry
  129.     Laxen  and  Mike  Perry. There are versions for MSDOS, CP/M-86, CP/M
  130.     operating systems and other microprocessors. 
  131.  
  132.     The  distribution  disk is normally a double sided disk with all the
  133.     source  files  compressed  except  the  file expansion utility. File
  134.     expansion  takes a long time because the expansion utility is all in
  135.     high  level  code  so F83 is being distributed by SVCS on two double
  136.     sided  disks in the expanded form. A Metacompiler and the F83 kernel
  137.     source  code  is  on one disk and the rest of the files on the other
  138.     disk.  There  is  only one short text file on one disk that explains
  139.     the  differences  between  versions  1.0  and  2.0.  The source code
  140.     contains  the  rest of the system documentation, but more about that
  141.     later.
  142.  
  143.     F83  uses  standard operating system files and has the facilities to
  144.     open, create and close standard files through DOS. No special format
  145.     FORTH disks are needed. The limit on the number of files that can be
  146.     open  at  once  is  the  amount of memory you have for file buffers.
  147.     Separate  input and output file control blocks allow different input
  148.     and  output  screen files to be open at the same time. The word BDOS
  149.     uses  Interrupt 33 to provide access to MSDOS functions and make F83
  150.     usable on other MSDOS machines.
  151.  
  152.     Several  words are vectored so that their definitions can be changed
  153.     to   suit   your   application.  The  discussion  of  screen  output
  154.     redirection to the printer later in this article is one illustration
  155.     of the utility of this technique.
  156.  
  157.     The  editor  is  modeled after the one in the book STARTING FORTH by
  158.     LEO  BRODIE.  On  page 84 you will find the commands for the editor.
  159.     The  F83  model  follows  both  the  book and the Forth 83 standard.
  160.     STARTING  FORTH  would be a good book for the beginner and the FORTH
  161.     83  Standard  would be a good reference for any user. Both books are
  162.     available  from  many book stores with large computer book sections.
  163.     If  you  can  not find them try one of the sources listed in Section
  164.     8.0.
  165.  
  166.     A  recursive decompiler is provided. It works fine but lists all the
  167.     words  in  line.  A  super feature that is even more powerful is the
  168.     ability  to  display  the  source  code of any F83 word. The command
  169.     'VIEW name' will find the source code screen for the word 'name' and
  170.     list  the  screen.  Another  command  will  list  the  documentation
  171.     screen.
  172.  
  173.     The   implementation   of   "Shadow  Screens"  is  a  very  powerful
  174.     documentation  and help feature. F83 source code has a shadow screen
  175.     containing  documentation  associated  with  every  screen of source
  176.     code. The limitation on this technique is that the source files must
  177.     be  in  the  default disk drive or they will not be found. The words
  178.     SHADOW  SHOW  prints  a range of source screens and their associated
  179.     shadow screens side by side on an EPSON or IBM printer.
  180.  
  181.     F83  includes all the source code for the system, an Assembler and a
  182.     Meta Compiler allowing you to customize the system any way you want.
  183.     These are two very powerful features that are not included with many
  184.     commercial  versions of FORTH. You can delete unneeded words, change
  185.     functions  of  words  or  add  functions. You can rewrite the system
  186.     assembly  language level source code in KERNEL86.BLK and CPU8086.BLK
  187.     and  change  the  assembler  in the meta compiler to cross compile a
  188.     system  for  a  different  processor or operating system. The source
  189.     code for a few words that are different between CP/M-86 and MSDOS is
  190.     included  for  both  systems  so  that  F83 for either system can be
  191.     generated. 
  192.  
  193. 2.0 Using F83
  194.  
  195.     The following sections attempt to assist you in getting started with
  196.     F83. With this information you should be able to start-up F83, start
  197.     poking around and experimenting. Happy computing!
  198.  
  199.  
  200. 2.1 Distribution Disks
  201.  
  202.     The  distribution  disk  for  F83  Version  2.0 comes with the files
  203.     compressed  so  that  everything  fits on one disk. You will need to
  204.     expand  the  source  files  so  you  can  list  and  use  them.
  205.      
  206.     If  you downloaded your system from a BBS you probably received your 
  207.     system  in  SQueezed format.   Additionally it may be a  library  of 
  208.     files  with a .LBR or .LIB extentions.   DELBR.COM will extract  all 
  209.     the files in a library or you can use NULU.COM to look at the  files 
  210.     in  a libray without coping them to another disk.   However standard 
  211.     forth  is  64 columns and the above utilitys usually expect  for  80 
  212.     columns  making Forth block files look strangly  offset.   Hopefully 
  213.     some day Forth will include a variable width editor.
  214.  
  215.     A  set  of files that are SQueezed but not in a library can be  most 
  216.     easily  UNSQueezed with NSWEEP.COM or S/USQ.COM etc.   Some of  them 
  217.     have a war to tag a group of files and UNSQueez and copy in mass.
  218.  
  219.     If  you  received your system in the expanded format it will  be  on 
  220.     two  DSDD disks or three SSDD disks.  In that case you can skip  the 
  221.     huffman unsqueezing instructions and go down to section 2.2 Starting 
  222.     F83.
  223.  
  224.  
  225.     The list of the system and documentation files follows.
  226.  
  227.     Compressed: Expanded files: Dsk Description:
  228.     ----------- --------------- --- ----------------------------------
  229.     M86.HUF     META86.BLK       2  Metacompiler source code
  230.     K86.HUF     KERNEL86.BLK     2  F83 kernel, code words
  231.     HF.HUF      HUFFMAN.BLK      1  Compression utility source
  232.     E86.HUF     EXTEND86.BLK     1  F83 high level words
  233.     C86.HUF     CPU8086.BLK      1  Utility code words
  234.     UT.HUF      UTILITY.BLK      1  Utility high level words
  235.     CK.HUF      CLOCK.BLK        1  Clock source code
  236.     FX.HUF      F83-FIXS.TXT     1  V2.0 Update documentation
  237.                 F83.COM          1  Executable F83 system, not comprsd
  238.                 KERNEL.COM       2  Compiled F83 kernel
  239.  
  240.     The  instructions  for  expanding  the  compressed files follow. The
  241.     parts  that  you  type  are  underlined.  The <CR> symbol represents
  242.     carriage  return.  The expansion process takes a lot of time because
  243.     the  expansion  code  is  all high level code. So start it and go do
  244.     something else or relax.
  245.  
  246.     Prepare  two  double  sided  formatted  disks then put your disk with
  247.     F83.COM  and EXPAND86.BLK in disk drive A: and type the following at
  248.     the DOS prompt.
  249.  
  250.     A>F83 EXPAND86.BLK <CR>
  251.  
  252.     F83  will  load,  at the "ok" prompt type "1 LOAD <CR>" and you will
  253.     create  an  expansion  program named RUNME.COM. To expand the system
  254.     now type the following at the DOS prompt.
  255.  
  256.     A>RUNME <CR>
  257.  
  258.     You will get the following instructions to follow.
  259.  
  260.     To expand your system, type XYZZY
  261.  
  262.     XYZZY <CR>
  263.  
  264.     This takes a long long long time, and bells will
  265.     ring when you are needed, so I suggest you get it
  266.     started and have a long cool drink.
  267.     To expand your F83 system, make sure this disk
  268.     is in drive A: and that an empty, formatted disk is
  269.     in drive B:.  You will need two disks.
  270.     When ready, press any key to continue. <key stroke>
  271.     Expanding: M86.HUF into B:META86.BLK
  272.     Expanding: K86.HUF into B:KERNEL86.BLK
  273.  
  274.     [ bells ring ]
  275.  
  276.     Your disk is now full, please
  277.     remove it and insert another empty, formatted disk
  278.     in drive B: and press any key to continue.  <key stroke>
  279.     Expanding: E86.HUF into B:EXTEND86.BLK
  280.     Expanding: C86.HUF into B:CPU8086.BLK
  281.     Expanding: UT.HUF into B:UTILITY.BLK
  282.     Expanding: HF.HUF into B:HUFFMAN.BLK
  283.     Expanding: CK.HUF into B:CLOCK.BLK
  284.     Expanding: FX.HUF into B:F83-FIXS.TXT
  285.  
  286.     [ bells ring ]
  287.  
  288.     Congratulations, you have a full
  289.     F83 system.  May the Forth be with you. ok
  290.  
  291. 2.2 Starting F83
  292.  
  293.     By  now you may have looked at some of the files with the TYPE
  294.     command.  You  can  have  a  printout of these instructions by using
  295.     <Control  PrtSc>  in MSDOS or Controll P in CP/M and  entering  TYPE 
  296.     F83.DOC or TYPE F83-FIXS.TXT.
  297.  
  298.         In  the following text,  the <CR> symbol represents the carriage 
  299.     return  key.   First make a new system disk with COMMAND.COM on  it. 
  300.     Copy  the files from the disk with F83.COM on it except HUFFMAN.BLK, 
  301.     CLOCK.BLK and EXPAND86.BLK  to  the  new  disk.   We will call  this 
  302.     disk  1.  Make  a working  system  disk from the other  distribution 
  303.     disk. Copy F83.COM to this disk. We will call this disk 2.
  304.  
  305.     F83  does  not  have  or  need  a  default  source file name as some
  306.     commercial  versions  of  FORTH  do.  No default file extensions are
  307.     provided either so file names and extensions must be entered.
  308.  
  309.     Now  to enter Forth from DOS, insert the disk 1 into drive A of your
  310.     computer, boot it and type at the DOS prompt,
  311.  
  312.     A>F83<CR>      or    A>F83 sourcefile.ext<CR>
  313.  
  314.     Forth will reply with:
  315.  
  316.     8086 Forth 83 Model 2.1.0
  317.     Modified 01Apr84
  318.  
  319.     Now  try  out  the  following  words  to see how they work and get a
  320.     feeling for F83.
  321.  
  322.  
  323.     WORDS   and   A L
  324.  
  325.     To  see  a  list of the words that are in the dictionary type WORDS.
  326.     You  will  see lots of words. Each word is a command in FORTH. FORTH
  327.     has  different  vocabularies  so  that functions or utilities can be
  328.     separated   without   word  definitions  clashing.  Three  of  these
  329.     vocabularies  are  HIDDEN, EDITOR and SHADOW. To list the vocabulary
  330.     type  the  vocabulary  name  then  WORDS.  To  return  to  the  main
  331.     vocabulary type FORTH <CR>.
  332.  
  333.  
  334.     SEE word
  335.  
  336.     There  is a decompiler present which reverses the compiling process,
  337.     producing  source code from object code. The user interface to it is
  338.     the  word  SEE  <name>  where <name> is the name of a Forth word you
  339.     wish  to  decompile.  While  the information SEE gives you is not as
  340.     complete  as that given by VIEW, a least it is always available, and
  341.     not dependent upon whether or not the correct file is present on the
  342.     currently   logged   in  disk  drive.  For  a  real  experience  try
  343.     decompiling  the  words  STATUS,  which  is a DEFERred word, ie. and
  344.     execution  vector.  SEE  calls  itself  recursively in this case and
  345.     tracks down the definition. This can be quite handy.
  346.  
  347.     However  SEE is not a full decompiler.   A definition with a literal 
  348.     number like for example 64 in it,  will decompile to  LIT 64 and the 
  349.     conditionals like DO, LOOP, IF, ESLE, THEN, BEGIN, WHILE, UNTILL and
  350.     REPEAT  will  appear something like   (0branch) 4  or   (branch)  3.  
  351.     The number is the number of words foreward or back in the definition 
  352.     that  the (branch) is spliting to.   (or is it the number  of  words 
  353.     divided by two).  Instead of counting, it is usually easier and more 
  354.     acurate  to  LOCate the word and turn to yur print out or  find  the 
  355.     disk with the source file and VIEW the word.
  356.  
  357.     VIEW word
  358.  
  359.         The   VIEW  command is one of the best  features  of  F83.  VIEW 
  360.     <word>  <CR>  will  find the screen that contains the code  for  the 
  361.     <word>,  provided  that  the  file containing <word>  is  on  the 
  362.     currently logged disk drive.  If you can fit all of the source  code 
  363.     on a single drive,  VIEW works great,  and takes care of opening the 
  364.     file and displaying the screen for you.  If not when View can't find 
  365.     the  proper file on line it atleast tells you the name of the  files 
  366.     it  is  looking for along with the screen number.
  367.  
  368.       Each word is a command and each can be VIEWed.  Let's look at  the 
  369.     word  SHOW by typing VIEW SHOW.  Assuming all is well you will see a 
  370.     Forth  screen   containing the definition of SHOW  along  with  some 
  371.     other words. 
  372.  
  373.  
  374.     Type this: EDITOR VIEW JOIN<CR>
  375.  
  376.  
  377.     A L
  378.  
  379.         Type   A  L <CR> and you will be rewarded with the Shadow screen 
  380.     that goes  with the word (command)  L.  A L <CR> will Alternate List 
  381.     you back to the original screen of code. Look at it and when you see 
  382.     a word that doesn't seem fully  self  evident,   VIEW  it  and  read 
  383.     the shadow screen. You are looking  at a screen of editing commands. 
  384.     Lets  go to the shadow with the  A  L command and do some exploring. 
  385.     While  we are in the shadows lets  look  at  the  next  five or  six 
  386.     shadow screens that should be editor words. Use N L.
  387.  
  388.  
  389.     N L   and   B L   and   N ED
  390.  
  391.     Now  for  some  more  commands.  N is next screen and L is list. N L
  392.     lists  the next screen and B L lists the next screen back. N ED will
  393.     edit the next screen etc.
  394.  
  395.  
  396.     SHADOW   and   SHOW word   ( COPY, CONVEY )
  397.  
  398.     We  have  also  tried  to  make  extensive  use of the shadow screen
  399.     concept.  In  this  regard,  the  A  word moves you from the current
  400.     screen  to  its  associated  shadow  screen.  The  SHADOW vocabulary
  401.     contains  a  bunch  of  words that are helpful in maintaining shadow
  402.     screens.  COPY  allows  you  to copy not only a screen, but also its
  403.     associated shadow. SHOW allows you to list each source screen across
  404.     from  its  shadow when you want to print them. Finally CONVEY allows
  405.     you  to  move groups of screens and their associated shadows. To see
  406.     what  words  are  in  the SHADOW vocabulary simply type SHADOW WORDS
  407.     <CR>.  To  view the SHOW word type VIEW SHOW <CR>. The word SHOW and
  408.     it's source code that we have been viewing, is a command that prints
  409.     out three source screens along with three shadows for a total of six
  410.     screens per page. There are two versions of SHOW. The vocabulary you
  411.     are  in determines how SHOW will print out. If you are in the SHADOW
  412.     vocabulary,   three screens of code and three of shadows will print. 
  413.     If  you  are  in FORTH you will get six screens  of  code  with  out 
  414.     shadows.   This  is  how yu do it when there are no shadows  in  the 
  415.     file.  If you have a printer you may print the editor screens now as 
  416.     follows.  Type  VIEW  WIPE  for example.  If wipe is the first of  6 
  417.     screens  of  editor  words remember   the   screen  number.  If  for 
  418.     instance it was 80 then type 80 85 SHADOW SHOW <CR>
  419.  
  420.  
  421.     FILE?   and   DEFAULT
  422.  
  423.     FILE?  prints  the  filespec of the current output file and DEFAULT?
  424.     prints the default disk drive number.
  425.  
  426.     FILES?  prints the names of both the OPEN and the FROM files.  It is 
  427.     defined in TOOLS.BLK
  428.  
  429.  
  430.     FROM filespec
  431.  
  432.     FROM  d:filename.ext  makes "filename" the current input screen file
  433.     so that you can have different input and output screen files.
  434.  
  435.  
  436.     OPEN filespec
  437.  
  438.     OPEN  d:filename.ext  makes  "filename.ext"  the  current  input and
  439.     output screen file.
  440.  
  441.  
  442.     A:   B:   and   n SELECT
  443.  
  444.     You  can  select  the  default  disk drive from F83 by typing A: for
  445.     drive A and B: for drive B. 0 SELECT <CR> does the same as A: <CR>.
  446.  
  447.     If  you want to make drive C the default drive type 2 SELECT. Create
  448.     the word C: by typing the following definition.
  449.  
  450.     : C:   2 SELECT ; <CR>
  451.  
  452.     PRINTING ON   and   PRINTING OFF
  453.  
  454.     PRINTING  ON  turns  on  the  printer enable directing output to the
  455.     screen  and  the  printer.  PRINTING  OFF  turns  printer output off
  456.     directing all output to the screen.
  457.  
  458.  
  459.     ' (PRINT) IS EMIT  and  ' (EMIT) IS EMIT  and  ' (CONSOLE) IS EMIT
  460.  
  461.     '  (PRINT)  IS  EMIT redirects screen output to the printer. Nothing
  462.     will  print  on  the  screen,  regardless  of  the state of PR-IN. '
  463.     (CONSOLE)  IS  EMIT directs output to the screen only, regardless of
  464.     the  state  of  PRINTING  ON or OFF. ' (EMIT) IS EMIT directs output
  465.     back  to  the  screen.  Now  PRINTING  ON  and  OFF will function as
  466.     explained above.
  467.  
  468.  
  469.     Backspace
  470.  
  471.     By now you may have noticed that if you make a mistake typing a word
  472.     the  only way to correct it is to type backspace. Backspace backs up
  473.     the  cursor  on the screen but does not erase the characters already
  474.     there.  These  characters  are  erased  from  the  input  buffer  so
  475.     backspacing  and  retyping  the  correct word does work correctly. I
  476.     find  it  confusing  to  have  this extra garbage on the screen. The
  477.     source  code to change the backspace to a backspace and delete is in
  478.     KERNEL86.BLK screens 47 and 48.
  479.  
  480.     Type the following to fix F83.COM.
  481.  
  482.     HEX 41 112A C! DECIMAL <CR>
  483.  
  484.     If  you wish to save this change, type SAVE-SYSTEM F83.COM <CR>. The
  485.     current system image will be saved on the current disk as F83.COM.
  486.  
  487.     To fix the source code edit KERNEL86.BLK screen 48 and remetacompile
  488.     the system. Put disk 2 in drive B: and type B: VIEW CC-FORTH <CR> to
  489.     view  the  screen  you  need  to change. You need to change the word
  490.     BS-IN  to  (DEL-IN)  in  the definition of CC-FORTH. You can do this
  491.     with  the  editor.  Now  follow  the steps explained in Section 2.6,
  492.     Metacompiling F83, to generate a new F83 with this change.
  493.  
  494.  
  495.     CAPS ON   and   CAPS OFF
  496.  
  497.     The  default  condition  for  F83  words is that both upper case and
  498.     lower  case  are  considered the same. For example WORD and word are
  499.     the  same.  If you prefer to treat upper case letters and lower case
  500.     letters  as  different,  set  CAPS to false by typing CAPS OFF <CR>.
  501.     CAPS ON <CR> will switch back to the original condition.
  502.  
  503.  
  504. 2.3 Standard System Documentation Requirement
  505.  
  506.     1.   The  system  dictionary  space  is  CPU  dependent  and  can be
  507.          determined by typing HERE U. <CR>
  508.  
  509.     2.   The  application  dictionary space is also CPU dependent and is
  510.          the  difference  between  the  top  of  the  dictionary and the
  511.          beginning of the parameter stack. The location of the parameter
  512.          machine.  The application dictionary space can be determined by
  513.          typing SP@ HERE - U. <CR>
  514.  
  515.     3.   The data stack space is the same as the dictionary space.
  516.  
  517.     4.   The return stack space was arbitrarily set at 256 bytes. It can
  518.          be altered by remeta-compiling the system.
  519.  
  520.     5.   No  mass storage block ranges are reserved by the system, other
  521.          than the contents of the files that are distributed.
  522.  
  523.     6.   The  user  has  available to him blocks 0 thru 65534. Note that
  524.          block  0  may  not  be  used for loading. Block number 65535 is
  525.          reserved to indicate the buffer is missing.
  526.  
  527.     7.   Any  ASCII  terminal  should work with this system. If the user
  528.          has  a  cursor  addressable  terminal, the editor can be easily
  529.          modified to take advantage of the terminal's characteristics.
  530.  
  531.          System action taken upon error conditions:
  532.  
  533.          ' <name> ['] <name>  not found results in ? error message
  534.  
  535.          */ */MOD / /MOD MOD UM/MOD all division by 0 errors result in a
  536.          0 quotient
  537.  
  538.          : in the case of an error, a ? error message will be printed
  539.  
  540.          DO  if  a  nesting error occurs, the system will crash. (if you
  541.          are lucky)
  542.  
  543. 2.4 Version 2.0 General Information
  544.  
  545.     This  Section  describes most of the changes to F83 between versions
  546.     1.0 and 2.0.
  547.  
  548.     It  is always difficult to follow a moving target. In the six months
  549.     since  we  released  version  1.0  we  have  received  so  many good
  550.     suggestions  that  the temptation to use some of them was impossible
  551.     to  resist.  To all of you who contributed, thank you again. We will
  552.     try  to  avoid  any  further  changes until 1985 at the earliest. If
  553.     there are bugs, we will report them separately. Updating the various
  554.     versions  is a lot of work even without offering any support, and we
  555.     are  tired.  It is time to move on to applications, and do something
  556.     useful for a change.
  557.  
  558.  
  559.     The changes were as follows:
  560.  
  561.     General:
  562.  
  563.     * Removed the superfluous NOOP from all self-defining words.
  564.     * Changed all instances of C; to END-CODE ( by request).
  565.     * Partitioned   META   into  META.BLK  (  the  meta-compiler  )  and
  566.       KERNEL.BLK ( the source for the kernel ).
  567.  
  568.  
  569.     META:
  570.  
  571.     * Fixed .SYMBOLS
  572.  
  573.  
  574.     KERNEL:
  575.  
  576.     * Removed  null  from  the  system.  Sealed  search orders no longer
  577.       require the old magic null word.
  578.     * Fixed  PARSE  and  PARSE-WORD. They used to increment >IN past the
  579.       end of source text.
  580.     * Changed CP/M to DOS.
  581.     * Moved kernel DOS words into DOS vocabulary.
  582.     * Added USER VARIABLE IN-FILE. All file operations read from IN-FILE
  583.       and  write  to  FILE.  This  allowed  removing the confusing FILES
  584.       vocabulary.  User interface is unchanged: FROM <file> makes <file>
  585.       the  IN-FILE.  OPEN <file> makes both the same. LOAD uses IN-FILE,
  586.       then resets it to FILE. This is probably appropriate.
  587.     * FBLOCK and FBUFFER take an fcb address and a block nuber.
  588.     * SWITCH exchanges FILE and IN-FILE.
  589.     * ?UPPERCASE  conditionally  forces  a string to upper case. Used by
  590.       DEFINED and FORGET.
  591.     * EMIT  primitives renamed: (CONSOLE) is console only, (EMIT) is for
  592.       console and maybe also printer, depending on PRINTING.
  593.     * Fixed CONTROL.
  594.     * Made  default  (PRINT)  not  use  LISTST, because it hangs on many
  595.       systems. Optionally use LISTST if available for faster spooling.
  596.     * Renamed FORTH control character table from CC1 to CC-FORTH.
  597.     * Changed DO to ?DO in -TRAILING.
  598.     * Deleted HEADER from CREATE, made CREATE do it all.
  599.     * Changed ,VIEW to make file 0 if BLK is 0.
  600.     * Added \S for comment to end of screen.
  601.     * Added better error handling for disk reads and writes.
  602.     * Accessing  a  BLOCK  which  is  Out  of Range no longer leaves the
  603.       buffer assigned to the non-existent block.
  604.     * Changed DISCARD to mark discarded buffer as empty.
  605.     * .FILE and FILE? added to display file names.
  606.  
  607.  
  608.     EXTEND:
  609.  
  610.     * Split ONLY into the ONLY operator and the ROOT vocabulary.
  611.     * Removed OPEN-FILE from FILE: and added it to VIEW.
  612.     * Added VIEWS which installs files into VIEW-FILES table.
  613.     * Moved  SET-DRIVE  into  EXTEND,  changed  it  to  use  the BIOS to
  614.       determine whether a drive is legal, and renamed it SELECT.
  615.     * DRIVE? prints the current drive.
  616.     * Added A: and B: which select drive A or B.
  617.     * Added error control into MAKE, CLOSE, READ, and WRITE.
  618.  
  619.  
  620.     CPU:
  621.  
  622.     * Added three words for decompiling DOES> words.
  623.     * Renamed FIX to UNBUG.
  624.  
  625.  
  626.     UTILITY:
  627.          FORTH:
  628.  
  629.     * Added :: for immediate compilation.
  630.     * VIEW  is now wordier. It prints the file name and screen number of
  631.       the  source  code  for  a  word, then OPENs the file and LISTs the
  632.       code.
  633.     * Made  SEARCH  much  faster  when  CASE is significant ( false), by
  634.       SCANning for the first character. Turn CAPS OFF for speed.
  635.     * Added .SCR which prints current screen number and file name. It is
  636.       used by LIST and EDITOR .ALL.
  637.     * Changed N and B to include DISK-ERROR OFF.
  638.  
  639.  
  640.     EDITOR:
  641.  
  642.     * Changed  ?TEXT  to use PARSE instead of WORD. This allows commands
  643.       like "F ^" to use the contents of the buffers.
  644.     * Modified  auto  display updating to work correctly with both smart
  645.       and dumb terminals.
  646.     * Added FIX which VIEWs and EDITs.
  647.     * Renamed JUST to J. I use it a LOT.
  648.     * Made ED smarter: it does not change context if already editing.
  649.     * ID field defaults to blanks, not nulls.
  650.     * GET-ID  waits for an extra character to allow you to read what you
  651.       typed before hitting return.
  652.  
  653.  
  654.     Showing:
  655.  
  656.     * SHOW  now  uses (SEMIT) which outputs to either the console or the
  657.       printer,  but  not  both, depending on PRINTING, which is reset by
  658.       (ABORT").
  659.     * SHOW  works  for small files: PR replaces out-of-range blocks with
  660.       LOGO.
  661.     * FOOTING is vectored.
  662.     * PAGE  defaults  to  linefeeds.  Many people did not have form-feed
  663.       capability.
  664.  
  665.  
  666.     Multitasker:
  667.  
  668.     * Renamed  BACKGROUND  to  BACKGROUND:  because  it compiles until a
  669.       semi-colon.
  670.  
  671.  
  672.     NEW FILES:
  673.  
  674.     * HUFFMAN.BLK  contains  the source for the Huffman encoding used on
  675.       the files as shipped.
  676.     * CLOCK.BLK  shows  how to use a clock/calendar to automatically set
  677.       the  editor  date  stamp when you boot. The code is for a CompuPro
  678.       System Support 1, but should give you some hints.
  679.     * HUNT.BLK  has  source  for  HUNT. HUNT <sub> lists all words whose
  680.       name contains the given substring.
  681.  
  682.  
  683. 2.5 Creating custom applications
  684.  
  685. F83 allows precompilation of FORTH applications.  Redirection of BOOT to
  686. the top level word then saving the executable image will generate a
  687. custom application.  The following sequence will create a custom
  688. application.  Using this technique you can generate a sealed application
  689. blocking the user from access to Forth.
  690.  
  691.  
  692. Test and debug your application the type the following.
  693.  
  694. DECIMAL nn LOAD <CR>         ( nn is your load screen number )
  695. ' MY-PROGRAM IS BOOT <CR>    ( execution starts with MY-PROGRAM on cold
  696.                                start )
  697. SAVE-SYSTEM MY-FILE.COM <CR> ( saves the executable program, as
  698.                                MY-FILE.COM )
  699.  
  700.  
  701. 2.6 Metacompiling F83
  702.  
  703.     Metacompiling  allows you to change word definitions or to eliminate
  704.     unnecessary  words  from your application. You could even change the
  705.     assembler  definitions  to  cross  compile  a new FORTH system for a
  706.     different processor or system.
  707.  
  708.     META86.BLK  screens  25  through 45 provide the documentation on the
  709.     Metacompiler  source. The source code proves some information on how
  710.     to  use  this  facility. The following sequence will recompile a new
  711.     F83.COM file.
  712.  
  713.     Put disk 2 in drive A and type the following.
  714.  
  715.     A>F83 META86.BLK <CR>
  716.  
  717.     When F83 boots type.
  718.  
  719.     1 LOAD <CR>
  720.  
  721.     The Metacompiler will be compiled then KERNEL86.BLK will be compiled
  722.     and  you  will get a string of screen numbers and two messages. When
  723.     the  kernel  has  completed  compilation  a  summary  of  of  system
  724.     statistics will be printed on the screen. Instructions on what to do
  725.     next follows the summary.
  726.  
  727.  
  728.     Unresolved references:
  729.  
  730.          Statistics:
  731.     Last Host Address:          35890
  732.     First Target Code Address:  38694
  733.     Last Target Code Address:   50216
  734.  
  735.     Now return to the DOS and type:
  736.     KERNEL EXTEND86.BLK <CR>
  737.     OK <CR>
  738.  
  739.     Type BYE <CR> to exit to DOS.
  740.  
  741.     Copy  KERNEL.COM  to  disk  1,  put  disk  1 in drive A and type the
  742.     following.
  743.  
  744.     A>KERNEL EXTEND86.BLK <CR>
  745.     OK <CR>
  746.  
  747.     You  will  get  a progress message as compilation of each functional
  748.     area starts to compile. The last two messages are.
  749.  
  750.     System has been loaded, Size = 26337
  751.     System saved as F83.COM  ok
  752.  
  753.     Now type BYE <CR> to exit to DOS.
  754.     Type F83 <CR> and test your new F83.
  755.  
  756.  
  757. 2.7 Quick Reference
  758.  
  759.     To be added later.
  760.  
  761.  
  762. 4.0 MSDOS services
  763.  
  764.     To be added later.
  765.  
  766.  
  767.     Using  DOS  calls  through BDOS you can use system functions or even
  768.     run  other programs from Forth. The assembler allows you to speed up
  769.     any  function  that  is  too  slow  or  to  call  assembly  language
  770.     subroutines.
  771.  
  772.  
  773.  
  774. 7.0 Source Listings
  775.  
  776.     The  source  listings  for  the files listed below can be printed by
  777.     entering  F83  then using SHOW in the SHADOW vocabulary. The list of
  778.     source  files  then the steps to list them follow. You need an Epson
  779.     or  IBM  printer  to get the source plus documentation screens on an
  780.     8 1/2 " X 11 " page.
  781.  
  782.     META86.BLK     KERNEL86.BLK   EXTEND86.BLK   CPU8086.BLK
  783.     UTILITY.BLK    HUFFMAN.BLK    EXPAND86.BLK   (CLOCK.BLK)
  784.  
  785.     Put your working disk with F83.COM and META86.BLK in drive A:.
  786.     Put your other working disk in drive B:.
  787.     Turn on your printer then type the following lines as shown.
  788.  
  789.     A>F83 META86.BLK <CR>
  790.     0 21 SHADOW SHOW <CR>
  791.  
  792.     OPEN B:KERNEL86.BLK <CR>
  793.     0 92 SHOW <CR>
  794.  
  795.     B:
  796.     OPEN EXTEND86.BLK <CR>
  797.     0 13 SHOW <CR>
  798.  
  799.     OPEN CPU8086.BLK <CR>
  800.     0 25 SHOW <CR>
  801.  
  802.     OPEN UTILITY.BLK <CR>
  803.     0 54 SHOW <CR>
  804.  
  805.     Put  the  master  disk with HUFFMAN.BLK and EXPAND86.BLK in drive B:
  806.     and type the following.
  807.  
  808.     OPEN HUFFMAN.BLK <CR>
  809.     0 21 SHOW <CR>
  810.  
  811.     OPEN EXPAND86.BLK <CR>
  812.     Set your printer to top of form.
  813.     PRINTING ON <CR>
  814.     0 2 TRIAD <CR>
  815.     Set printer to top of form.
  816.     3 5 TRIAD <CR>
  817.     PRINTING OFF <CR>
  818.  
  819. Later:   In the traditon of Forth,  one programmer can make the whole thing 
  820.     much easier by codng an easy to use word.  The word in this case is the 
  821.     command  LISTING.   LISTING  lists  the whole file to  the  printer  by 
  822.     starting at screen zero and going to the CAPACITY of the file.  Neat! 
  823.  
  824.  
  825. 8.0 Forth Books
  826.  
  827.     The FORTH 83 Standard and other books on Forth can be purchased from
  828.     several places three of which are listed below.
  829.  
  830.     FORTH Interest Group
  831.     P. O. Box 1105
  832.     San Carlos, CA 94070
  833.  
  834.     Phone: 415-962-8653
  835.  
  836.  
  837.     Mountain View Press
  838.     P. O. Box 4656
  839.     Mountain View, CA 94040
  840.  
  841.     Phone: 415-961-4103
  842.  
  843.  
  844.     Computer Literacy Book Store
  845.     530 Lawrence Expressway
  846.     Santa Clara, CA 94086
  847.  
  848.     Phone: 408-730-9955
  849.  
  850.  
  851.     Many  other  book  stores carry the books recommended here and other
  852.     books on Forth. Check with your favorite local book store.
  853.  
  854.     The F83 imp lementation follows the book STARTING FORTH by Leo  Brodie. 
  855.     THINKING FORTH also by Leo Brodie is good too.
  856.  
  857.     INSIDE  F83  by C.H.Ting is good reference book.   It is  published  by 
  858.     Offete Enterprises, 1306 So. B. St, San Mateo, CA 94402
  859. name and screen number of
  860.       the  source  code  for  a  word, then OPENs the file and