Notes on F-PC Part #1

1.      Modified ?DEF.EXT to only append an extension from the word DEFEXT
        if there is a string in DEFEXT, else doesn't append an extension.
        4/6/88 10:47 AM

2.      Noticed a bug in SED, prints DONE when finished with a PASTE, on
        the second line, shouldn't do that. 4/6/88 10:47 Fixxed in
        PRINTING.SEQ 4/6/88 11:19 AM

3.      Removed the public domain notice from the SED exit message.  This
        is not to imply that SED is not public domain, it was simply a
        distraction, and was not needed. 4/6/88 11:41

4.      Added paste date and time with "Alt-O P". The paste is always done
        in insert mode, to avoid accidental overwrite of existing text.
        04/06/88 13:27

5.      Re-arranged the SED prompt a bit, to make it clearer. also noted a
        bug in the WFL window pop up, it was leaving an extra item on the
        stack when you enter it.  Found an old leftover from some earlier
        code still around, got rid of the culprit.  04/06/88 17:23 tjz

6.      Modified FSAVE, and added TURNKEY to F-PC. TURNKEY will now
        automatically save a system without heads, and with a minimized
        LIST space. Use TURNKEY as you would FSAVE, followed by a name,
        but first setup BOOT or DEFAULT to perform your application, and
        then leave back to DOS.

7.      F-PC is now setup to allow you to reduce the #CODESEGS to less
        than 4096 (=64k), and save some of the code space that is not
        needed.  The editor "Z" for example created from XF only requires
        about 220k to run, down from 400k for XF the development system.
        Yes I know its still large, but that is without removing any of
        the utilities in the system, much more could be saved by stripping
        down the system

8.      Moved inline " (quoted) strings back into the CODE space, for
        program compatibility. Have added "" (double quote) which will put
        an inline string into COLON space. Don't worry, the string is
        moved to CODE space before its address is returned to you.

------------------------- Version 1.01b -----------------------------------

 06/01/88 13:26

9.      Changed the name from F88 to F-PC in all files.

10.     Eliminated XTYPE from the editor, since it was a hold over from
        the time when (EMIT) did not use handle write. Since it was
        redundant with (TYPE), it is no longer needed. Also removed
        associated word NORMTYPE, with is also not needed.



11.     Fixed the bug in the editor cursor positioning, which would place
        the cursor in the wrong place if the text extended beyond 114
        characters.

12.     Fixed bug in MACROS, I was allocating 16 times too much memory for
        the macro buffer. I forgot to put in a U16/ before the ALLOC
        command.

13.     Fixed bug in ;USES, which was preventing it from working except in
        the meta compiler.  06/01/88 15:42

06/02/88 17:57

14.     Working on VTYPE, have changed the name to VIDEO-TYPE. It now
        needs only ADDR and CNT, X and Y are no longer needed.

15.     The editor now displays 80 columns across, rather than 78. I have
        removed the border characters on the left and right sides. This
        was done primarily for performance reasons, to make F-PC FAST on a
        PC speed (4.7mhz) computer.

16.     Added ON> and OFF> to the EQUCOLON file, for turning on and off
        any variable or constant. They save one pass through NEXT, and so
        are faster than VARNAME OFF or VARNAME ON. I know it seems silly
        to save such a small amount of time, but I am finding it useful.
        06/02/88 18:24

 06/03/88 12:46

17.     VIDEO-TYPE is finally fast enough to redisplay at 10 screens per
        second on an XT speed (4.7mhz) machine. I'm going to stop working
        on it now. I have blown out the look in VIDEO-TYPE for that last
        ounce of speed.

18.     Restructured PASTE (Alt-V) in the editor, so it is much faster, I
        got some complaints about it's original speed, it now pastes lines
        from the paste file at 500 bytes/sec on an XT, and 3000 bytes/sec
        on an AT.

19.     Fixed minor bug in NEWFILE that was leaving 2 items on the stack
        when the file was actually created.

 06/03/88 16:57         Assembler bug fixxes

20.     Fixed bug in TEST instruction, for immediate mode, changed
        instruction from A4 to A8.

21.     Fixed bug, conditionals were not forcing a compile of the previous
        instruction. They do now, and you can put conditionals on the same
        line as normal assembler instructions without any problem.

22.     Corrected a bug in the initialization of the APRIOR array, CODE
        was not clearing out APRIOR properly. This was preventing the
        retrying of assembly code after an error was encountered. Once an
        error was detected, then the bug would cause an error EVERY TIME.

 06/03/88 17:01         Editor mod.

23.     Adjusted the fill line character for lines displayed after the
        last lines of a file from a blank to a B1 fill character, which is
        a 50% gray. It is now easy to see which is the last line of the
        file.

 06/03/88 17:13         DUMP mods

24.     Added the absolute segment to the beginning of each dump line.

25.     Modified XDUMP, so that is takes a SEG value which is added to the
        XSEG, and dumps OFFSET relative 0 from that point. This makes it
        actually useful for looking at the body of a definition as
        follows: ' HEX >BODY @ 10 XDUMP <enter> This will dump the first
        10 butes of the BODY of the definition HEX. LDUMP can then be used
        to dump at other relative offsets from there.

 06/06/88 09:40

26.     Added out of branch range error checking to assembler in the label
        mechanism.

27.     YDP and XDP have been moved out of the USER VARIABLE list. This
        system does not support multiple users anyway, and placing these
        in the user variable list causes problems in other areas.

28.     Add L$ and L$: to PASM.SEQ, to allow forward branch resolution of
        JMP and CALL instructions with distances greater than 127 bytes.
        See PASM for more information.

29.     Finally found and corrected the BUG in EXEC.SEQ, that was
        preventing SYS from working on a DOS 2.x machine. That is fixed
        and DOS 2.x can now spawn a shell properly.  06/06/88 18:05

 06/09/88 10:57

30.     Added checking on COPY (Alt-C), CUT (Alt-X) and WRITE (Alt-W) to
        see if the file to be written already exists. If the file to be
        written does exist, then the user is prompted for whether to
        overwrite the file or abort the write.

31.     Corrected a small bug that would cause an edit of a new file to
        start on line two rather than on line one. This was minor, but
        still irritating.

32.     Added RECOVERSCR which is like RESTSCR but only gets a copy of the
        most recently saved screen, and can be called over and over again
        to restore the same screen.  06/10/88 16:23





 06/13/88 10:15

33.     Commented out FIX, as it has a name conflict with FIX in the
        floating point package. You may un-comment it out if you wish, it
        is located in the file TOPEDIT.SEQ.

34.     Fixed a bug in the assembler in the instruction JC. Changed its
        constant from 76 to 72.

 06/14/88 12:21

35.     Fixed >NAME. It is supposed to return the name field of NO-NAME
        when it fails to find the name field of the address specified. It
        was returning a garbage address. This has been corrected.

36.     Added INLINE and END-INLINE to the assembler. These give you the
        ability to add in-line assembly code to a : (colon) definition.
        See the ASSEM.TXT file or PASM.SEQ for an example of usage.

37.     Corrected a feature of FPRINT, FLOOK and EDITALL which prevented
        them from working on any drive or directory specified. They will
        now print, look or edit any matching files in any specified drive
        and directory.  06/14/88 15:54

 06/15/88 10:41

38.     Fixed the definition of CREATE in the USER vocabulary, it is
        supposed to create a header, like the normal CREATE, but was
        defined improperly.

39.     Extended the user variable area by 20 bytes, which is room for 10
        new 16bit user variables. Previously there was NO ROOM for ANY
        additional user variables, which seems somewhat limiting.

 06/16/88 09:29

40.     Fixed a bug in the editor that was allowing you to try and edit a
        .BAK file.  This needs to be prevented, since the editor uses .BAK
        as the extension it uses for backup files.

------------------------- Version 1.02b --------------------------------

 06/16/88 10:03

41.     Changed F-PC to version 1.02b (Beta).

 06/17/88 18:58

42.     Re-coded GET_ALINE in assembly, as a step to make the compiler
        faster. I know its silly, but I just can't give up.

 06/20/88 16:19

43.     Fixed a bug in ACTIVATE. It was missing a DUP. Thank you Dr. Ting.

44.     Fixed a bug in UNDEFER. It simply didn't work. Thank You R. Smith.
        Removed UDEFERS, and consolidated its function into DEFERS.
        Expanded UDEFER to deal with USER DEFERed words. Moved DEFERS and
        UDEFER out of KERNEL3.SEQ to DEFERS.SEQ.

 06/21/88 18:03

45.     Thanks to Roger Bird for an improved SEARCH routine, it is 20%
        faster, in the normal case, and 10 times faster in the worst case
        (leading space in search string).

 06/23/88 10:35

46.     Found and fixed another bug. If SETVIEW is set to view the source
        from another directory, and you have loaded (FLOAD or OK) another
        file, you will not be able to VIEW the new files words, because
        SETVIEW is set to another directory not hte current directory. The
        solution was to add s constant called WITHPATH, that determines
        whether the files PATH will be included int the file VARIABLE that
        gets created for each file loaded. I set WITHPATH to false while
        loading the Forth system, then set it to TRUE just before saving
        the system, so all user files will include their PATH for viewing.
        WITHPATH controls whether "LOADED," includes of skips the files
        path. The user need not worry about any of this.

 06/24/88 11:22

47.     NOTE ******** Removed Graphics.SEQ from SMITH.ARC. Also updated
        SMITH.ARC with Robert's latest version of software floating point.
        Added Smiley's archive to my high density archive disk. This will
        be given to the FIG librarian, but is too large to be included
        with the F-PC system unless an additional disk is added.

48.     NOTE ******** A preliminary version of the F-PC Users Manual
        published bye Ting is available. Contact Dr. Ting for information
        on availability and cost. Offete Enterprises, Inc 1306 South B
        Street San Mateo, Ca. 94402 Ph# (415) 574-8250

49.     Fixed a bug in the decompiler, that did not clear the lower lines
        of the screen between the decompile, and the scroll section.  The
        bug associated with decompiling definitions that are too many
        lines long when in the debugger, is still there, I have not found
        a good solution for this as yet. Also the X command in the
        debugger is not yet a toggle, but may be one of these days if I
        can get around to making it so.

50.     Modified the DIR command, to allow multiple arguments on the line
        after DIR, like "DIR /w *.txt <enter>" will now work properly.

------------------------- Version 1.03b ------------------------------

 06/27/88 17:12

51.     Re-coded ABS, DABS, & DNEGATE to improve their performance.  This
        was done on the recommendation of Robert Smith.

52.     Added the definition K which is the third outer loop index.

53.     Removed the constants 0, 1, 2, & 3 from the dictionary since
        constants are slower (29 cycles for constants vs. 25 cycles for
        literals).  This also solves some problems with some programs that
        accept input from the operator, and need to differentiate numbers
        from dictionary entries.

54.     Re-coded <> in assembly for performance.

 06/28/88 13:32

55.     Bob found a bug in SEARCH that caused it to be eratic on an XT
        type machine. Fixed by removing the instruction sequence "POP BX
        SUB SP, # 2" from the code, and replacing it with another
        technique. Also modified the SEARCH setup to remove a sensitivity
        to whether CAPS contained something besides -1.

 06/29/88 15:55

56.     Found a bug in Paste Text, that caused the pasted text to
        overwrite the line into which the text was pasted, which resulted
        in ONE lost line. Made a siple fix to PRINTING.SEQ in the word
        IMPORT.

57.     Added a symbol back into the editor to tell you where a page
        break will occur.  The symbol is the same down pointing triangle,
        but is located on the right margin in reverse video.

 06/30/88 11:06

58.     Finally found the real cause of the bug that was causing files to
        be deleted when thay wern't changed when using EDITALL. It seems
        the length of the file handle was not getting setproperly, and
        when I changed the file extension to .BAK, it was putting the
        .BAK extension way out past the real filename. IT IT REALLY
        FIXXED NOW!.

59.     Did some minor optimization, changing double INC's and double
        DEC's to ADD or SUB instructions to save a few cycles.

 07/02/88 00:12

60.     I did some benchmarks recently, and found that F-PC is 2 1/2
        times as fast as my previous Forth named PF, and over twice as
        fast as the original F83 system in compiling.

 07/05/88 15:42

61.     Saved 17 cycles in the combination of NEST and UNNEST. Also saved
        a some cycles in other words, like OVER, 2OVER, R>, 2R> ect.



 07/07/88 09:54

62.     ******* Exciting News ******* I have found a way to build the
        system with INLINE NEXT, and still have the debugger work. This
        results in almost a 20% improvement in overall performance. I
        have seen compile speeds over 25000 line per minute on my 16mhz
        80386, and over 12000 lpm on a 6mhz AT. See the file DBGFIX.SEQ
        for information on how this is accomplished.

63.     At Ting's request I have added the word INCLUDE as an alias to
        FLOAD.  I have also dd the comment pair /* and */ which can
        enclose comments.  Some people think they are better.

 07/07/88 17:37:04.05

64.     At the request of Jay McKnight I have generalized the date and
        time formatting. The word FORM-DATE takes a double IBM format
        date, and formats it into ascii in the buffer DTBUF, according to
        the defered function in BUILD-DATE.  FORM-DATE returns a counted
        address which can be typed or printed.  There are now three date
        formats supported, M/D/Y Y-M-D and D.M.Y. Entering any of these
        makes BUILD-DATE construct that date format.  FORM-DATE, and
        FORM-TIME both build their date or time in the DTBUF array which
        is 16 characters long, so they must be used then typed or printed
        sequentially, or they will overwrite each other.

------------------------- Version 1.04b ------------------------------

 07/08/88 14:13:35.77

65.   Changed version to 1.04b.

 07/08/88 17:12:15.74

66.     Per a suggestion from Jay McKnight, I have modified the file
        printing, such that the actual file date is printed at the bottom
        of each page along with the current print date.

67.     Coded CNSRCH in assembly to make the decompiler go a bit faster.

 07/09/88 18:49:17.18

68.     Added word wrap, and paragraph justify back into SED.  All I had
        to do was extract the code from ZED, and paste it back into SED.
        Unfortunately there is still some work to be done before they
        will be useful, there is currently no way to set the right
        margin.  It just defaults to 132 columns.  Justify currently
        tests for a right margin greater than 130 characters, and refuses
        to do anything until you have set the right margin.  I will try
        to get to this shortly.

69.     Split SEDITOR.SEQ into two files, the end portion being named
        SEDIT2.SEQ, and containing the upper portion starting at the
        function table and continueing to the end.

70.     The upper limit of file size has been adjusted slightly to 64500
        characters.

 07/10/88 21:42:07.28

71.     Added a method to set the right margin, use Alt-S then R. The
        Alt-S is for SETUP, and R is for right margin.  "R" is the only
        thing in setup for now, but more may follow later. Control-B
        paragraph reformat is back in from ZED. Word wrap and Paragraph
        reformat have both been placed in a file called SEDITWP.SEQ for
        word processing extensions to SED. If this file is not loaded,
        then the commands for word wrap, paragraph reformat, and right
        margin wont work, but won't crash either.

72.     This is probably a good place to mention that the editor is split
        into multiple files of which some do not need to be loaded.  For
        example, the file PRINTING.SEQ contains the print routines, as
        well as the cut and paste functions, which don't have to be
        loaded if you are short on space. The EDITHELP file can also be
        omitted as can SEDITWP if you are short on space.  These won't
        save you a lot of room, but at times every bit can help.

73.     As you use the editor you will probably notice that there are
        several different user interface techniques used to get
        information from YOU the user. This has happened primarily
        because I am using SED as a vehicle to test ideas. Some examples
        of this phenomenon are the print parameter screen, the popup file
        selection window, and the top line prompting for things like
        Alt-O, and Alt-S.  I realize these are significant
        inconsistancies, but I haven't had time to clean things up.
        Perhaps one day I will, lets hope!

 07/11/88 11:02:51.38

74.     Added UNDO per Robert Smith and Mark Smiley. UNDO was approved by
        the ANSI Standards commitee at their May 1988 meeting.

 07/11/88 19:20:20.14

75.     Installed a new help facility in the editor, you can now choose
        to either have the editor help compiled into the dictionary, at a
        cost of about 5k of list space. Or you can have the help text
        brought in from disk on request, if it is available on disk in
        the VIEWPATH at the time it is needed. Or you can choose not to
        load the help file at all.  There is a boolean flag near the
        beginning of the SEDHELP.SEQ file that can be set to FALSE if you
        want help to be in a disk file that will get read in as needed.

 07/12/88 15:57:12.62

76.     I have added some new files to the F-PC archive, these files
        contain some functions from the old ZED editor.  The first file
        is SEDSORT.SEQ which adds paragraph sort to the SED editor. It is
        assigned function key F7, and is mentioned in SED help screen 9.
        The other file is SEDDRAW.SEQ which add ZED's character line
        drawing ability to SED.  It is assigned function key F9, and is
        also mentioned in help screen 9. Also added SEDAPND.SEQ which
        allows marked text to be APPENDed to TEMP.SEQ or the file you
        specify.

77.     Added a disk read buffer size adjuster to the install list.  This
        allows you to customize the disk read buffer for your speed of
        computer.

------------------------- Version 1.05b -------------------------------

 07/19/88 10:29:32.04

78.     Removed SHNDL which was a variable, and added SEQHANDLE which is
        a constant. They perform the same function, but since their
        interface changed, I changed the name to protect the innocent.
        Instead of storing into SEQHANDLE with "SHNDL !", use "=:
        SEQHANDLE" and of course SEQHANDLE simply returns the value of
        the current stack file handle.  I have also renamed .SHNDL to
        .SEQHANDLE, and SHNDL+ to SEQHANDLE+. I am sorry for the
        inconvenience, but the program usage reads much better.

79.     I have made several small changes internal to the editor, in
        preperation for modifications to allow larger files to be edited.

80.     DESIGN NOTE:  I am finding it easier to read programs that don't
        contain @'s and !'s. Much of my inclination in F-PC is to use
        CONSTANTs rather than VARIABLEs for readability. I then use "=:"
        to assign into the constants. In fact performance is improved
        slightly.

 07/19/88 12:40:14.02

81.     Minor enhancement --- Added NEEDS back into F-PC, I removed it
        some time ago, and I don't know why.

 07/20/88 17:27:50.74

82.     MAJOR NOTICE  ********* NOTE ********** I have modified 2>R and
        2R> to be compatible with the way Forth Inc. does them, that is
        the order of the values on the parameter stack is maintained when
        they are moved to the return stack. So 2>R is NOT the same as ">R
        >R", it is the same as "SWAP >R >R". This may make problems for
        some people, but it is in some sense more compatible with
        existing (existing?) standards.

 07/22/88 10:08:17.33

82.     Minot bug fix --- Fixed bug in assembler generated full word
        immediate data when it should have generated a byte of data in
        arithmetic instructions in the 7MI instruction class. Example ADD
        AH, # $80 would generate the proper instruction, but the data
        assembled was 16 bits instead of 8 bits as required.  This caused
        the following instructions to be very messed up.

83.     NOTICE THESE NOTES --- Robert Smith and myself have just received
        a disk from Mark Smiley that contains a text file of some
        comments from the east coast Forth board from people using F-PC,
        or its cousins. I would like to address some of the things
        mentioned there, but first here is a note about the suggestions I
        am including.

        As suggested I have added the attribute words >ATTRIB5 - >ATTRIB8
        to allow a greater number of attributes to be available on
        machines that support them. >ATTRIB5 thru >ATTRIB8 are the same
        as >ATTRIB1 to >ATTRIB4 for color. For monochrome, >ATTRIB5 is
        set to >BOLDBLNK, >ATTRIB6 to >ATTRIB8 are set to be the same as
        >ATTRIB2 to >ATTRIB4.

        Several people objected to my use of CONSTANTs as NOT constants,
        that is I like to change them after creating them. I under stand
        the objections, and I have accepted the suggestion from Steve
        Palincsar of the East Coast Forth Board (ECFB) to use the word
        VALUE for any constant that is likely to be changed later. The
        system has been updated to use this concept, and the decompiler
        has been updated to show VALUE for values.

        Another major objection several people seem to have to F-PC is
        there is no BE-HEAD mechanism, and I seem to throw all of my junk
        words into the HIDDEN vocabulary. I plead guilty as charged,
        although I have no simple solution. The reasons there is no
        BE-HEAD mechanism in F-PC are as follows:

        1.    I wanted anyone learning F-PC to have FULL access to all of
              the words in the system, and BE-HEADING some of the words
              makes it more difficult to learn how the system works. That
              is NOT my goal.

        2.    The mechanism used in F-PC/F83Y to get back to the head of
              a definition from the Code Field is to hash the CFA into
              one of 64 threads, and search a limited area of head space
              for the desired CFA Pointer. If you remove headers from the
              system these threads become messed up and you cant get back
              to the head from the CFA any more. Consequently the the
              decompiler doesn't work if you do this.  I have not had a
              chance to look at the BE-HEAD file I received, but if it
              solves this problem, then I will consider including it with
              the system.

        Finally MANY people object to the fact the system changes so
        much. To these people I can only say that until recently I had no
        desire to make the system stable, I was evolving it toward what I
        saw as my Ideal Forth System.  As I make major changes to the
        architecture I changed the name. Now that F-PC has stablized in
        the sense its major internal structure is not changing,
        portability will be enhanced, and you won't have to deal with
        with such a bowl of jello. However F-PC is still in BETA test,
        that is is is still chaning. Within a couple of months it will be
        out of BETA, into a full release, then you can complain about
        stability, until then, YOU GOT JUST WHAT YOU PAID FOR. This may
        seem a cynical point of view but of course you are more than
        welcome to make a system you like and release it.

        So as not to end on a soure note, I do appreciate all the work
        people are doing with OUR system, and I think this file proves
        F-PC is (at least a bit) more stable. Send letters or comments
        to:

                        Tom Zimmer
                        292 Falcato Drive
                        Milpitas Ca. 95035
                              Home 408/263-8859
                              Work 408/432-4643

        Updates to F-PC are available at the above address, include a
        mailer, a high density disk, $25.00 and THREE STAMPS (first
        class).

 07/22/88 17:49:28.73

84.     Minor bug fix --- The words which enter the editor all now force
        DECIMAL as the current BASE.

85.     Minor change --- FIX which was removed a while back is back in as
        REPAIR.

                 --- FIG July Version ended HERE ---

 07/25/88 17:10:14.02

86.     Significant enhancement --- Added Printer control with the
        PRTCTRL.SEQ file. If you look at the file PROPRINT.SEQ, you will
        see the definition of a printer, that is the default for F-PC.
        duplicate this file, and change the string value and names to
        conform to your printer.  Having done this, load your new file,
        to make it take effect, and save F-PC back to disk with the
        printer installed.

        The changes allow %B to turn ON and OFF BOLD, so:

                        %B This will be BOLD %B

        The same can be done with %U UNDERLINE, and %1, %2, and %3 the
        user definable functions.   Function %1 defaults to DOUBLE WIDE
        printing on the provided PROPRINT.SEQ.

        The file PRINTING.SEQ is setup to look for an existing definition
        for the word PTYPE. If it does not find one (as in the case where
        PRTCTRL.SEQ was not loaded) then it will define PTYPE with a
        generic (just print the string) routine. This means you don't
        have to load the file PRTCTRL.SEQ if you want to save some space.
        PROPRINT.SEQ will also automatically NOT load if PRTCTRL.SEQ is
        not loaded.



 07/26/88 14:47:26.31

87.     Information --- Received the information from Mark Smiley a few
        days ago, There were several complaints on the East Coast Forth
        Board about F-PC not having a BE-HEAD mechanism. Well NO MORE.
        There was one included in the files Mark sent me, I think it was
        written by George Hawkins, although there is no indication in the
        file.

        I have not included it directly in the system, you will have to
        load it if you want it.  there is an editorial in the BEHEAD.SEQ
        file that I added, explaining why. Briefly I want YOU the USER to
        have access to all of F-PC, and BEHEAD interferes with SEE and
        VIEW.  This is a great utility for a professional programmer who
        needs to save some space to make room for even more definitions.
        Since F-PC is limited to 5000 or so definitions in HEAD space,
        BEHEAD could be used to substantially increase that limit to be
        effectively unlimited.

88.     Minor bug fix --- Made a minor modification to -TRAILING to test
        for the length=0 case. This was correctly pointed out by Mike
        Sperl on the East Coast Forth Board.

89.     NOTICE THIS --- Additional comments from the East Coast Forth
        Board (ECFB) imply I may be CHANGING THINGS TOO FAST.  Sorry
        about that guys (and gals) Things really are stabilizing hard as
        it is to believe.  I really do appreciate the comments, and as
        you can see from the above notes, I have implemented some of your
        suggestions.

        Of course I have been thinking of COMPLETELY REDESIGNING F-PC
        (only Kidding). I am very interested in any and all example or
        utility code you have written,

           ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
           º I would like to caution you in one area though,       º
           º              which is as follows:                     º
           º ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ º
           º Please don't make any changes to an internal file     º
           º unless you have to, here is why.                      º
           º                                                       º
           º F-PC continues to get bug fixes, and if you modify a  º
           º file and distibute it to people, and that file gets a º
           º bug fix (like the assembler has had several times.)   º
           º then people won't get the bug fix. A perfect example  º
           º of this is the version of PASM that was distributed   º
           º with GOTOs in it, it was a neat idea, but now anyone  º
           º who uses that assembler won't get any bug fixes in    º
           º later versions of the assembler. If you can make your º
           º utilities as add-ons, doit that way. if I need to     º
           º make something else a DEFERED word, let me know, I'm  º
           º not completely heartless. I have and am trying to     º
           º make the system as flexible as possible.              º
           ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ¼


 07/26/88 16:35:28.61

90.     Significant enhancement --- Thanks to who ever wrote the wait for
        retrace code for direct video output, I have included a sightly
        modified version, and it makes a big difference, on a COLOR CGA
        display. I didn't fix this before, because I did not have a CGA
        display. I still don't, but the notes on the ECFB brought the
        problem and solution to my attention. I am writting this note
        using a CGA display, and I am glad I don't have one myself, even
        with blanking the screen is still TOO JUMPY for me.

        The screen save and restore routines have also been modified to
        perform their operation during retrace.

        I also made a small change to "L", it used to do a DARK before
        listing, which causes a terrible JUMP on a CGA display, so now it
        just homes the cursor, and displays the screen, with erase to end
        of line. Much les flashing.


------------------------- Version 1.06b -------------------------------

 07/26/88 16:50:41.75

91.     I figured it was time for a new version number.

 07/26/88 17:56:06.34

92.     Minor enhancement --- Added Goto Page per the suggestion from
        Mike Sperl of ECFB. It is implemented as Alt-G for GOTO, and
        leaves you on the first screen line on the first line of the
        specified page.

 07/27/88 21:59:16.97

93.     WONDERFUL new feature --- I have modified VIEW, so it displays
        the HELP for a word that is being viewed on the top 7 lines of
        the display, and displays the source on the next 12 lines. You
        get to see how to use a word at the same time as you see its
        source file.

        HELPON and HELPOFF toggle this feature. HELPON is the default,
        and if you type HELPOFF, then VIEW lorks like it did before, that
        is it displays 17 lines of source starting at the top of the
        screen.

        I have also removed the DARK from VIEW and HELP, as they caused a
        jumpy display on a CGA. The new method is much smoother.





 07/27/88 22:58:06.15

94.     Minor bug fix --- Found and fixed a bug today in the assembler,
        in the definition of 12MIF. In POSTFIX mode it was assembling the
        following instruction:

            23 # MYVAR #) MOV

            as if you had entered

            MYVAR # 23 #) MOV

        It did work right in PREFIX mode though.

        By the way this is an ideal time to point out again that you will
        notice there is nothing in the above instruction to indicate a
        BYTE or WORD size operation.  In POSTFIX mode, these type of
        instructions default to WORD size moves, BUT in PREFIX mode they
        default to BYTE size moves.  This may seem strange at first, but
        for compatibility I had to leave the POSTFIX mode defaulted to
        WORD, and for closer compatibility with MASM, PREFIX mode MUST
        default to BYTE. Sorry about the confusion, but life is full of
        this kind of stuff.

95.     Minor bug fix --- I also fixed a bug in CURLEY's disassembler, it
        did not know the difference between a byte move, and a word move,
        so I modified it to print MOV, for WORD moves, and MOVB, for BYTE
        moves.

 07/28/88 17:46:30.34

96.     Minor bug fix --- The META Compiler was causing undefined words
        to be printed incorrectly at times.  Also added some checking to
        META86 to warn you audibly if there are any undefined references.

 07/29/88 16:35:17.90

97.     Minor bug fix --- Fixed bug in disassembler that used a literal
        value to decide when a word was a code word.  Modified the
        decompiler to use a constant MAX-CLASSES that the disassembler
        can use to test for this case.

 08/01/88 15:48:29.62

98.     Minor enhancement --- Adjusted SED so it can work within a
        window. The function Alt-S-W allows you to Setup the Window
        height of SED for your preference. Using less lines allows you
        more lines of Forth commands after leaving SED.  I know it is
        hard to understand what I'm talking about, just start SED to see
        how its user interface has changed. When you leave SED, the last
        area of the file you were editing stays on the screen.




 08/01/88 21:53:54.28

99.     Minor enhancement --- I have setup SED so the last edit screen
        says on the screen after you leave SED until you type DONE, to
        tell it to start scrolling the screen again. The area that
        scrolls can be controlled as described above with Alt-S-W (Setup
        Window).

100.    Minor enhancement --- Alt-S-W (Setup Window) now allows you to
        expand the edit window up to the point where you are using the
        full screen except for the last and first lines for you edit. The
        algorithm is difficult to explain, but works well, try it.

 08/05/88 15:20:30.87

101.    Minor change --- Removed BEHEAD.SEQ from the F-PC archive.  I
        have placed it in the file MISC.ARC  It was taking up too much
        room to allow me to hold all of the source for F-PC and the
        F-PC.EXE file on one 730k, 3 1/5 inch floppy.

102.    Significant enhancement --- Added a variable called BLANKING,
        which is set during installation to control the blanking of the
        screen when a CGA or color monitor is used.  Some color monitors
        don't need screen blanking to avoid the snow or sparkle of a
        normal CGA, so you can specify what you want now in the
        installation process.

 08/06/88 18:35:45.93

103.    Minor cleanup --- Fixed bug in Print Window, It was not restoring
        the screen to the same state it found it, so thing were not as
        pretty as they should have been.  Also made Print window smaller,
        there was no need to cover the entire screen with it.

------------------------- Version 1.07b -------------------------------

 08/08/88 15:02:29.83

104.    Significant enhancement --- Added a menu driver to SED, in the
        file SEDMENU.SEQ. This initial version has only a few items, but
        I will shortly be expanding it to include a number of the
        existing commands.

 08/12/88 17:35:35.24

105.    Significant enhancement --- Generalized the menu driver, so it
        can be used at the Forth level. To see an example of yow to
        create a set of menus, look at the file SEDMENU.SEQ. This file
        contains the menus for the editor. You can create your own menus,
        or expand the default menubar by changing MENUS.SEQ.  the current
        default menubar is available in Forth, by pressing ESC, after
        which you can walk around on the menu bar, and execute a function
        by pressing <enter>. Pressing ESC again clears the menubar from
        the screen and restores your cursor.

 08/15/88 10:59:24.59

106.    Minor cleanup --- Mod the the debugger, allows debugging to
        continue on with the definition above one you have nested into
        when you leave the lower definition with an EXIT. Previously the
        system just continued execution, and did not allow debugging
        further. This was fixed by Robert L. Smith.

 08/15/88 14:21:29.17

107.    Minor cleanup --- Fixed X in the debugger to be a toggle as
        suggested by several people. Pressing it once turns OFF the
        source display, pressing it again turns the source display back
        on.

 08/15/88 16:31:54.46

108.    Significant BUG --- Fixed bug in 2+!, I was adding in the double
        stack value to memory in the wrong order. Thanks Roger.

------------------------- Version 2.01 -------------------------------

 08/16/88 15:14:01.84

109.    Version 2.01

 08/17/88 15:46:09.94

110.    Nice enhancement --- Add a selection tool to SED for graphic and
        special characters. Note that only the special characters above
        127 can be printed on an IBM compatible printer. Those characters
        below 32 are useful only for screen display purposes.

111.    Prepared the screen dumps for version 2 of the users manual for
        Dr. Ting. This users manual is being done on a Macintosh and will
        be laser printed, as such the production quality will be MUCH
        higher than the earlier manual. It looks like we will have some
        good documentation for F-PC. I highly recommend buying the users
        manual, I think you will find it very useful.

 08/18/88 16:08:37.92

112.    Minor cleanup --- I have made a minor change through out the
        fabric of the menu system that allows editor functions other than
        menu names to be performed while the menu is on the screen.  This
        was done to correct a problem that two people ran into, which was
        you could not do any thing except perform a menu operation when
        the menu was on the screen. They found this very confusing, and I
        have thus corrected it.

113.    NOTICE THIS --- I have run into an interesting problem, is seems
        Dr. Ting was working on a program that needed some text to
        process while verifying a program section.  He decided to use the
        editor text buffer as a convenient place to keep this temp text.
        To make a long story short, I made a change to the editor which
        made his test program non-functional.  I want everyone to know
        that the editor is my toy, and it is fair game for changes at any
        time, and so you should be VERY CAREFUL if you decide to use
        pieces of it, as even its internal architecture may change
        without even a moments notice. This file if for documenting
        changes primarily to the Forth system, NOT the EDITOR except from
        a user interface standpoint.

 08/19/88 00:06:08.27

114.    Minor cleanup --- I have added a window entry mechanism to the
        following routines: SAVEAS, SEARCH, REPLACE, SHIFT-CUT,
        SHIFT-COPY, SHIFT-APPEND. They now use LINEEDIT, to get their
        parameters, which allow you to use the keypad to edit/modify your
        selection. The previously entered value in SEARCH and REPLACE
        will be displayed on entry.

 08/19/88 17:05:17.70

115.    Significant enhancement --- Line edit now has available through
        the use of Alt-A, access to the special character entry box used
        by the editor. When you are entering a search or replace string,
        you can press Alt-A, and you will be given the opportunity to
        enter a graphics or control character.  If you use this feature
        in an application, you will need to add information to your on
        screen help to let the user know about Alt-A. See the editor
        search (F6 and F8) for awwn example of how to let the user know
        about this.

------------------------- Version 2.02 -------------------------------

 08/20/88 15:21:09.32

116.    Version 2.02

117.    Minor cleanup --- Changed default file specification for the
        popup file selection tool to "*.*" from "*.seq".  This makes it
        easier to see that you can walk around through the directory tree
        of a disk. You can of course use "\" while in the tool to change
        the file spec.















118.    Significant Milestone --- I proofed the final master (LASERWRITER
        printed) copy of Dr. Tings users manual for F-PC yesterday.  It
        is a HUGE improvement over earlier manuals, and should do much to
        help make F-PC acceptable to a larger audience (I hope).  Also
        much work has been done on the technical reference manual, and I
        hope Dr. Ting wil be able to complete it soon. It is going to be
        at least on par with the INSIDE F83 manual he produced several
        years ago.

        I am also pleased to report "Ting's English" as it has come to be
        known, has moved MUCH closer to American English in the last
        couple of years.  The manuals readability is very good.

        Jay McKnight will is also helping proof read the F-PC Technical
        Reference Manual.

 08/22/88 14:37:58.76

119.    I have added a utility to ZIMMER.ARC that allows editing Forth
        command lines like DOSEDIT, but under control of Forth.  It is
        called XEXPECT.SEQ. All you have to do is load it, and you can
        use UP and DOWN arrows to recall the most recent four typed in
        lines.

-------------------- Version 2.02  08/24/88 09:20:05.33 -----------------

                    --- FIG August Version ended HERE ---

 08/24/88 10:34:59.12

120.    Minor enhancement --- Added a flag to Line edit to determine if
        trailing blanks are to be stripped from the edit string. The word
        "STRIPPING_BL'S" gets automatically set to TRUE after being set
        to FALSE, so you must set it to FALSE every time you call
        LINEEDIT  ns you want trailing blanks "LEFT ALONE".

 08/29/88 09:44:25.14

121.    Minor cleanup --- Added CLS as an alias to DARK.

 08/29/88 15:53:40.88

122.    Minor cleanup --- Made a minute change to "ME@", it used to be
        able to call abort if it could not find the end of the
        environment, and would on a DOS 2.x system print garbage.  It has
        been changed so it will not abort if it cannot find the end of
        the environment, it will instead return a null filled ME$. It
        will also return a null filled ME$ if it is performed on a DOS
        2.x system, so it won't print garbage anymore.






 08/29/88 22:20:03.45

123.    Minor bug fix --- Corrected a small bug in the decompiler that
        was causing SEE to show the wrong function when SEEing DARK or
        AT. These are self defining words that it did not handle
        properly. This has been corrected.

 08/30/88 21:57:03.55

124.    Bug fix --- The definition of IBM-DARK was always trying to set
        the video mode to 2, which is of course wrong for monocrome, and
        was messing up some systems with two monitors. It now reads the
        video mode and restores the same mode.

 09/01/88 10:35:57.67

125.    Cleanup --- Changed the error message in ?MISSING from "Huh, I'm
        confused?" to "What?". I received some complaints that the Huh
        message was irritating to some people. Also modified ?MISSING to
        print a space before printing the confusing word to better
        delimit it from anything already printed on the line.

----------------- Version 2.021  09/01/88 14:06:22.84 -----------------

 09/02/88 21:28:49.05

126.    Bug Fix --- Added SWAP to PRINTING line 251, in the definition of
        GETINPFILE. It seems you could not hold down shift and get the
        specified file to be inserted, two values were in the wrong
        order.

------------------- Version 2.10  09/02/88 23:29:31.74 -----------------

 09/02/88 23:29:05.71

127.    Major Enhancement --- SED has just been modified to allow editing
        files as large as memory.  Now F-PC is a BIG program, and takes a
        lot of room, but you can still edit about 160k file on a 640k
        machine, and a 64k file on a 512k machine.

        This change took me about two days to complete.  It was
        relatively minor, in that the line pointer table went from
        pointing at lines with an offset, to pointing at lines with a
        segment. The text line structure then changed to counted strings.
        Files are now read and written a-line-at-a-time through the
        normal lineread mechanism and a new linewrite mechanism that is
        currently part of the editor. I may move the line write out of
        the editor later, and into the system.

        It seems to work fairly well: there is no noticable speed
        difference. I can make no guarantees as yet about the
        reliability.  I simply haven't had time to wring it out yet.

128.    Minor enhancement --- I have added a word UNEDIT to the system.
        It DEALLOCATES the editors memory after an edit session, so you
        can use that memory for your program if you need it.  The editor
        automatically grabs all of the available memory except for the
        amount you tell it not to during installation (32k-256k), so it
        is useful to be able to recover that memory if you are using an
        application that uses memory outside of F-PC's CODE space.

 09/04/88 17:59:25.56

129.    Significant Improvment --- Recoded the way a goto line is
        performed.  I used to goto a line by a line at a time, now I
        block move the lines in big chuncks, and correct the line pointer
        table. This is MANY times faster, and now you can move from
        the beginning of even a VERY LARGE file to the end or visa versa
        in WELL UNDER A SECOND.  This speeds up both starting and
        finishing an edit of a file significantly.

 09/05/88 00:37:28.75

130.    Space savings --- All of the installation messages, SED help
        messages, and the INFO message have been moved into a file called
        F-PC.MSG These messages are retrieved from the INFO file as
        needed when the specified operation is performed. This resulted
        in a savings of over 11k in the .EXE file. If you don't need help
        in the editor, or can live with short messages during
        installation then you can delete the F-PC.MSG file altogether.

        As this was mostly wasted space for normal operation, this seemed
        like a good feature.

131.    New installation setting --- LIST segment allocation has now been
        added to installation. This makes it easy to readjust your memory
        usage.  Just re-install the program.

132.    Editor adjustment --- The editor has been modified to allow an
        edit to take place even if there is only room to edit a 16k file.
        This allows the editor to be used in very memory limited systems
        like 384k (maybe?). If you try to edit a file that is too big for
        memory, SED will perform a partial read, and inform you it has
        done so.  You should of course NOT CHANGE the file and DON'T SAVE
        CHANGES if you do.

 09/05/88 13:02:20.20

133.    Bug Fix --- There has been a bug in F-PC that prevented the
        compiler from compiling the last line of any file it was loading.
        This was caused by the way I was testing for the end of file
        condition, and it has now been corrected.

------------------ Version 2.11  09/05/88 13:02:27.23 -----------------

 09/05/88 20:09:39.37

134.    SED feature --- Add a menu item to the FILE menu to allow
        spawning a DOS shell from within the editor. This can be useful
        if you need to format a disk, copy or delete some files ect.

 09/06/88 15:16:25.63

135.    Minor enhancement --- Another menu item to the ADVANCED menu, to
        allow setting the editor Window size. With windows of less than
        23 lines, the editor will stay on the screen and only the lower
        lines will scroll until you type DONE to cause full screen
        scrolling to be re-started.

 09/06/88 17:54:30.17

136.    Memory usage optimization --- Adjusted SED such that when you
        SHELL out to dos, it deallocates all of the memory it does not
        need for the current file. This makes the memory available for
        DOS to use. The memory is reallocated on re-entry to SED.
        Appropriate error messages are issued if there is not enough room
        for DOS and the file you are editing. I am even handling the case
        where you loaded a terminate and stay resident program from the
        shell. I warn you that is a bad thing to do, and tell you to
        save your changes and reboot your computer because you have
        fragmented your memory.

 09/07/88 14:55:33.93

137.    Cleanup of debugger --- Fixed some minor bugs in the debugger,
        that would cause dirty displays if you were working on a
        procedure that was too long to decompile on the screen (more that
        18 lines). Fixed another bug that would cause the decompiler to
        pop up a level in the debugger one word before it should.

 09/08/88 11:33:22.32

138.    Minor enhancement --- Added a flag to LEDIT.SEQ the line editor to
        allow the programmer to specify whether the first text character
        typed will automatically clear the edit line. See LEDIT.SEQ for
        more information on this.

 09/09/88 08:42:11.91

139.    Minor enhancement --- Added White to black and Black to white
        inversion to the SETUP menu at the Forth command level.

140.    Another enhancement --- Both the compiler and SED have been
        modified so the editor preserves the cursor position when you leave
        and re-enter and edit, including the cursor position on the line.
        The compiler has been adjusted to make the cursor show up exacly
        at the point in the file where the compile error occured when you
        enter the editor.







------------------ Version 2.12  09/09/88 15:19:28.70 -----------------

 09/13/88 10:38:12.29

141.    Generalized BOX --- BOX and BOX&FILL have been made more
        generally useful.  They now position the cursor on the first blank
        line of the box just drawn, ready for you to use TYPE or ." to
        display text in them.  You can then use BCR for BOX CR to move the
        cursor down to the next blank line of a box.  See an example in
        the file BOXTEXT.SEQ.

142.    Message cleanup --- Moved most if not all of the SED messages from
        the status line into boxes.

 09/14/88 13:10:55.51

143.    Bug fix in Word Wrap --- Stomped out a bug in the word wrap code
        that was causing extra blank line to be inserted under special
        conditions.  It wan't serious but it was irritating.

144.    Menu enhancement --- Well I have made a very nice improvement to
        the menu structure.  Each menu line you create is followed on the
        same line by the name of the function to be performed. This is much
        more readable and less error prone than having a seperate array for
        the functions.  Here is an example menu definition:

                5 newmenu dfile$
                        menuline"  New  file          " makefile
                        menuline"  Open file          " openfile
                        menuline"  Edit  current file " editafile
                        menuline" ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ" noop
                        menuline"  Print Current file " dolisting
                endmenu

        Notice how readable it is, and it's very easy to see what functions
        go with which items.

 09/15/88 00:14:03.76

145.    Install enhancement --- I have removed the question from the
        install program that asks you what read buffer size you want to
        use. The read buffer size is now determined automatically at F-PC
        boot time by measuring the speed of your computer. It will use a
        16k buffer for a 386 class machine, and about a 4k buffer for an XT
        class machine. It actually saved some space by making it automatic.

146.    Minor bug fix --- LOAD did not preserve the edit cursor line.  After
        a LOAD you would be left on the last line of the file if you were
        to re-edit. This has been corrected.






 09/15/88 11:23:33.96

147.    Rearrangement --- Moved XEXPECT.SEQ from the optional area of
        ZIMMER.ARC into the F-PC system. It is now automatically loaded
        when the system is extended. It is too useful to leave as an
        optional feature. Use up and down arrow to recover previously
        entered lines.

------------------ Version 2.13  09/15/88 11:25:18.21 -----------------

 09/16/88 15:01:28.86

148.    Auto edit on load error --- There is an optional file now being
        loaded called EDITERR.SEQ which sets F-PC to automatically call the
        editor when a compile error occurs while loading. The error message
        is shown on the lower few lines of the screen and the editor is
        entered with the cursor placed where the error occured. The editor's
        display window is automatically adjusted smaller in size to allow
        the viewing of the error message.

 09/19/88 17:02:34.24

149.    Enhancement --- I have added a new file and set of functions to the
        kernel. The file is SAVEREST.SEQ, and the functions are as follows:

                SAVE>

                Saves the contents of following work to the return
                stack. Equivalent to "VARIABLE-NAME @ >R".

                SAVE!>

                Save the contents of the following word to the return
                stack, and set the contents of the following word to
                the value on the stack.
                Equivalent to "value VARIABLE-NAME DUP @ >R !".

                RESTORE>

                Restore the contents of the following word from the
                return stack.
                Equivalent to "R> VARIABLE-NAME !"

        These words have been inserted wherever they were appropriate in
        all F-PC files. The .EXE file size actually dropped by a couple
        hundred bytes, and is I believe more readable.

150.    REMOVED SHNDL ---  I have removed the error aborting messages for
        the words SHNDL, .SHNDL and SHNDL+. I switched to SEQHANDLE so long
        ago that if you haven't updated by now you will have other things
        to worry about anyway.




151.    FUDGE set mod --- Integrated SETFUDGE into BUFSIZE-INIT. The later
        sets the buffer size according to the system clock speed. FUDGE is
        now set according to the system clock also, rather than looking at
        the ROM to try to figure out what computer we are running. Looking
        at the ROM didn't work most of the time.

------------------ Version 2.14  09/19/88 18:09:59.89 -----------------

 09/20/88 08:37:50.63

152.   AUTOEDIT enhancement --- Modified EDITERR.SEQ to add the words
       AUTOEDITON and AUTOEDITOFF to select whether F-PC will automatically
       enter the editor when a compile error is encountered while loading.

 09/20/88 13:55:20.99

153.    Bug fix --- Fixed two bugs.  First was in the way the offset into a
        file was accumulated while compiling.  It seems under some
        conditions the cursor would end up on the wrong line after a
        compile error.  This has been stomped out.  The second bug was in
        NEEDS.  It seems it would reload the needed file all the time even
        after it was loaded.  I needed to insert the current drive path into
        the name being looked for in one of my two tests for having a file
        already loaded.

 09/22/88 08:27:23.88

154.    Macros enhancement --- The user interface to Macros has been
        cleaned up, and the ability to LOAD, SAVE, and VIEW macros has been
        added.  The macros are saved in the file F-PC.MAC.  The macro file
        is not automatically loaded.  It must be loaded manually (with
        Alt-M-L), so you can create temporary macros that won't overwrite
        your master set.  These new functions are all performed from the
        Alt-M command dialog box so no additional documentation is needed.

 09/22/88 13:30:16.69

155.    WORDS enhancement --- Added the word THESE, which can prefix WORDS
        to tell WORDS you want it to only look for matches to the following
        string in the CONTEXT vocabulary.  Here is an example:

                WORDS X <enter>         Looks for words containing X in
                                        all vocabularies.

                EDITOR THESE WORDS X    Looks for words containing X but
                                        only in EDITOR.

156.    Display enhancement --- Added an install section to test the video
        mode and prompt for whether you are using a real COLOR display of
        an LCD display.  Allows you to setup F-PC for an LCD display that
        will be usable where the normal COLOR attributes might not be
        usable.

------------------ Version 2.15  09/22/88 13:33:19.98 -----------------
      ******** Further notes may be found in the file NOTES2 *********
