home *** CD-ROM | disk | FTP | other *** search
/ Hall of Fame / HallofFameCDROM.cdr / prog1 / 4th_86.lzh / UPDATE.486 < prev    next >
Text File  |  1989-02-19  |  12KB  |  331 lines

  1. $    4th_86 version 3.0           UPDATE.486                   page  1
  2.     
  3.     
  4.                   ( 1st. February 1989 - 4th_86 version 3.0 - MFB )
  5.  
  6.     While there is no change in the user interface with 4th_86, there
  7.     is extensive change in the internal structure; and much has been
  8.     added to simplify the useage.
  9.  
  10.     Notable in this ambition is the inclusion of DEPTH as a default
  11.     display in the 4th_86 prompt. It is no longer necessary to remember
  12.     to use DS  DDS  or DEPTH  to verify that the stack is in the state
  13.     you believe it to be in. If the prompt does not display _0_ then
  14.     there is something (or two less than something !!) on the stack.
  15.  
  16.     Remember the standard FORTH way of clearing the stack and resetting
  17.     everything to square one -- just type in a string of garbage
  18.          sdajhg < return >
  19.  
  20.     TAG can be used to re-set any TRACE command which was in operation
  21.     initially.
  22.  
  23.     --oOo----------------------
  24.  
  25.     The primary change is the conversion of most of the 8080 code - and
  26.     much of the basic 4th code - into 8086 MASM for speed and
  27.     compactness.
  28.  
  29.     Also notable is the fact that the binary code produced from MASM
  30.     is completely relocatable, and can be GLOADed at any address
  31.     without first having to be assembled at an ORG matching the load
  32.     value of HEAD as in version 2.0
  33.  
  34.     CLOAD and C0LOAD no longer exist -- they are replaced by the
  35.     equivalent GLOAD and G0LOAD. Files written for the older CLOAD can
  36.     easily be modified to load with GLOAD. The relocation header has to
  37.     be added, and the dictionary entries moved to a contigious block at
  38.     the end of the source file (see 7EGAM3.ASM)
  39.  
  40.     7BASIC is now totally in MASM code, and the word THREAD consists
  41.     simply of the instruction pair LODSW - JMP AX.
  42.  
  43.     The 4th program counter is now carried in register SI rather than
  44.     in CX.
  45.  
  46.     Simlarly, the Control Stack Pointer (CSP) is now carried in
  47.     register DI rather than held in a DW memory location
  48.  
  49.     The former PUSHBC# has no meaning and has been replaced by PUSHSI#.
  50.     Similarly CSP does not exist as an executable word and has been
  51.     replaced with CSP@ and CSP! both of which interact directly with
  52.     the contents of register DI.
  53.  
  54.     The Disassembler part of 7DEBUG3.4TH has now been totally
  55.     re-structured to implement full 8086 mnemonics - and discontinue
  56.     disassembly at JMP THREAD; JMP AX; RET; and unrecognised opcodes.
  57.     Whilst no segment over-rides ( other than to EGA memory in
  58.     7EGAM3.ASM) or extensive indexed memory accesses exist in 4th_86
  59.     code, the disassembler will handle these instructions.
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.     4th_86 version 3.0           UPDATE.486                   page  2
  68.     
  69.     
  70.     The disassembler has been extensively tested (TEST.ASM is provided
  71.     as an example) and no peculiarities detected, but it is still
  72.     possible that something has been overlooked. The source exists in
  73.     7DEBUG3.4TH and can be recompiled into UCC13.COM should anyone
  74.     detect anomalies or omissions.
  75.  
  76.     No 8086 Assembler has yet been included, as MASM/EXE2BIN files can
  77.     be GLOADEed. Alternatively, 8086 ASM code can be (and has in many
  78.     places been ) included in line by "poking in bytes/words" with
  79.     HEADB! and HEAD!
  80.  
  81.     Work is in progress to remedy this omission - but not via the
  82.     reverse polish style  AX 3 MOV, carry-over from FORTH itself. This
  83.     style adds little in legibility, and in fact adds rather than
  84.     removes implementation problems. A more user-friendly in-line ASM
  85.     interface is being prepared -- hopefully as an integrated extension
  86.     to the present dis-assembler.
  87.  
  88.     Similarly, the inbuilt 8080 assembler has not yet been removed as
  89.     it is considered to serve a useful function on occasions.
  90.  
  91.     It is possible that future development will carry at least the
  92.     dictionary and meta-compile features into separate code/data
  93.     segments, but at the moment everything lives quite comfortably in
  94.     64K. For this reason no attempt has been made to extend words like
  95.     DM DD  ! @ etc., to far-segment functions. MASM code can be written
  96.     and GLOADed should the user find this feature essential.
  97.  
  98.     --oOo----------------------
  99.  
  100.     The interface to DOS is no longer CP/M oriented via File Control
  101.     Blocks; calls to PSP location 5 and location 0.
  102.  
  103.     Files are now accessed via ASCIIZ strings and handles. Paths are
  104.     implemented, and subdirectories can be changed via CD as well as
  105.     disks A: thru E: accessed.
  106.  
  107.     The commands TYPE and DIR are also impemented via standard DOS
  108.     Int 21H calls.
  109.  
  110.     A bug in GETSTS due to the different handling between CP/M and DOS
  111.     has been corrected.
  112.  
  113.     The above are reflected in the complete re-structure of 7OSI.4TH
  114.     into two files 7OSIA3.ASM and 7OSIAB.4TH.
  115.  
  116.     --oOo----------------------
  117.  
  118.     7BASIC3.ASM now includes BRKON and BRKOFF to activate or disable
  119.     the ctrl-Break facility. It is normally disabled on entry to 4th_86.
  120.  
  121.     Also included is SETMEM to allow DOS allocated memory to be shrunk
  122.     to any required value. This is normally set to 64K on entry to
  123.     4th_86.
  124.  
  125.  
  126.  
  127.  
  128.  
  129.  
  130.  
  131.  
  132.  
  133.     4th_86 version 3.0           UPDATE.486                   page  3
  134.     
  135.     
  136.  
  137.     Exit via Q-U-IT is now through DOS Int 21H function 4C.
  138.  
  139.     BYE is the preferred exit word, and vectors to Q-U-IT, hence the
  140.     renaming of this word from QUIT to prevent it's accidental use.
  141.  
  142.     MON1 and MON2 are now in 7BASIC3 rather than in 7OSI, and do a
  143.     normal INT 21H call. Words EGAM etc have been transferred from
  144.     7EGAM to 7BASIC3. Added are GOTOXY and GETMODE.
  145.  
  146.     Any of these words can be examined either from the source file -- or
  147.     more readily by simply typing -- for example -- DD GOTOXY < return >
  148.  
  149.     OMIT has been added to remove unwanted words from the dictionary.
  150.     This has become essential as free dictionary space was rapidly
  151.     disappearing as extensions were added. The disassembler
  152.     specifically adds many words ( KIND01 thru KIND45 etc) which are
  153.     accessed only by the disassembler itself.
  154.  
  155.     --oOo----------------------
  156.  
  157.     The structure of MASM files has been changed, so that the standard
  158.     dictionary IMMED, ASM etc flags can be implemented.
  159.  
  160.     Also the dictionary strings are no longer embedded in the run-code
  161.     itself, nor do they use the code-field as buffer on being read in.
  162.  
  163.     A further change is that the name of each ASM file no longer
  164.     needs to be chosen to match the dictionary entry. Any name can
  165.     be chosen - it is not read into the dictionary.
  166.  
  167.     A "header" routine is added to all MASM files which allows them to
  168.     be completely relocatable, and avoids the previous irritation of
  169.     having to make the ORG statement match the HEAD value at which
  170.     binary files are loaded.
  171.  
  172.     This header need not be used if the MASM source does not reference
  173.     data areas. All words which reference a data area must CALL this
  174.     header as a first instruction, and when the call RETurns, it does
  175.     so with DS pointing to the data area. The only restriction is that
  176.     the offset of the first data entry must be zero, and to achieve
  177.     this, G0LOAD is used rather than GLOAD. The penalty is a maximum of
  178.     ten bytes of empty code-field area
  179.  
  180.     The JMP THREAD at the end of each code section is not inserted
  181.     automatically by the "endproc " statement as in Version 2.0 but is
  182.     inserted as LODSW - JMP AX in the source code itself. JMP anywhere
  183.     is avoided wherever the routine being jumped to is shorter and
  184.     faster in-line than being jumped to or CALL-RETurned.
  185.  
  186.     " binload endproc " is used as a delineating string between the
  187.     code-field section of the MASM source and the dictionary string
  188.     section. " endfile " is not really needed with DOS type filereads,
  189.     but is still included in case files have garbage ( blocks of 1A
  190.     Hex for example) at the end.
  191.  
  192.  
  193.  
  194.  
  195.  
  196.  
  197.  
  198.  
  199.     4th_86 version 3.0           UPDATE.486                   page  4
  200.     
  201.     
  202.     The source code provided has many ASM files as example. 7EGAM3.ASM
  203.     is probably as good as any to examine. 7LOGO3 uses a restricted
  204.     version of this technique, as the data area is merely an ASCII
  205.     string to be printed.
  206.  
  207.     --oOo----------------------
  208.  
  209.     Direct screen writing ( other than for EGA and CGA graphics) has
  210.     been avoided to minimise incompatability with non-PCDOS/IBM
  211.     hardware environments (although references to Int 10H somewhat
  212.     negate this intention). Speed of screen writing is not considered
  213.     an issue when 4th_86 is used as a program development environment.
  214.     In any application program being developed, the programmer is free
  215.     to add any mode of screen or I/O access he chooses. It is possible
  216.     that future versions may have windowing where this is considered to
  217.     serve some positive function, rather than just existing for the
  218.     sake of people who like to be seen fooling around in windows.
  219.  
  220.     The signon logo -- and the inclusion of a DEPTH display in the
  221.     4th_86 prompt -- both inspired the inclusion of a word GCOUT in
  222.     7BASIC3.ASM.
  223.  
  224.     This allows the output of ASCII text in colour -- and can be
  225.     manipulated [should the user be of that strange inclination] to
  226.     have all normal foreground/background display in eye-tiring
  227.     multi-colour pink on purple - or whatever.
  228.  
  229.     The variable GCOLR contains ( as a 2 byte word) the attribute
  230.     "byte" which determines foreground/background colour; reverse
  231.     video; or blink.
  232.  
  233.     Normal screen I/O goes via MON1 and not via CGOUT however. GCOUT
  234.     has to be called directly ( or via .CL ) to utilise GCOLR!
  235.  
  236.     To get normal display in colour, try  12H GCOLR !
  237.                                          LINK PUTCHR GCOUT
  238.  
  239.     This should give you white text on a blue background ( attribute 12H)
  240.  
  241.     If you like it ( sigh !!!) you can save the system with SAVESYS ( no
  242.     filename needed -- default is 4th_86.COM)
  243.  
  244.       or alternatively you can use  FSAVE  xxxx.COM  where xxxx.COM is
  245.     your preferred system file name.
  246.  
  247.       At any time you can use FSAVE or SAVESYS to save on disk the
  248.     current state and loaded words of the file you are working on.
  249.  
  250.       You can also use  " xxxx.yyy" MAP   to save in file xxxx.yyy a
  251.     summary of all the new words you have entered in the dictionary up
  252.     to the given time. ( It will not include the normal system words -
  253.     but it will work in either meta-compile or normal mode )
  254.  
  255.      --oOo----------------------
  256.  
  257.  
  258.  
  259.  
  260.  
  261.  
  262.  
  263.  
  264.  
  265.     4th_86 version 3.0           UPDATE.486                   page  5
  266.     
  267.     
  268.     Because DOS paths have been included, the former use of the
  269.     backslash  \  to delineate binary bytes in ASCII strings can no
  270.     longer be continued. The delineator is now an up-arrow  ^
  271.  
  272.       Therefore " This is \9\ a test \0dh\\0ah\ end of test " ."
  273.  
  274.     Now becomes
  275.  
  276.                 " This is ^9^ a test ^0dh^^0ah^ end of test " ."
  277.  
  278.     or preferably
  279.  
  280.              " This is "     ."    tab
  281.              " a test"       ."    crlf
  282.              " end of test"  ."
  283.  
  284.     --oOo----------------------
  285.  
  286.     A major bug in the shell-to-DOS routines has been corrected. This
  287.     should now work on all hardware. In addition, the standard
  288.     AUTOEXEC.BAT path should be maintained whilst in the editor or
  289.     COMMAND.COM shell.
  290.  
  291.     There was also a bug in the colour graphics setup which has been
  292.     removed.
  293.  
  294.     Most demonstrations have been updated. Specifically, HILSIER2.4TH
  295.     has been corrected so that it works in CGA ( after LINK EGAM CGAM)
  296.     as well as EGA mode, and MAND ( Mandelbrot display) has been
  297.     "tweaked" to minimise duplication of floating point and loop
  298.     variable calculations. This has brought the Mandelbrot display down
  299.     from a day to just over an hour. [it is still - however - a "brute
  300.     force and ignorance" algorithm, and many more sophisticated
  301.     and beautiful "contouring algorithms" exist in the public domain]
  302.  
  303.  
  304.     
  305.  
  306.  
  307.  
  308.  
  309.  
  310.  
  311.  
  312.  
  313.  
  314.  
  315.  
  316.  
  317.  
  318.  
  319.  
  320.  
  321.  
  322.  
  323.  
  324.  
  325.  
  326.  
  327.  
  328.  
  329.  
  330.  
  331. $