CHANGELOG.org 14 KB

## Copyright (C) 2016 Jeremiah Orians ## This file is part of stage0. ## ## stage0 is free software: you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation, either version 3 of the License, or ## (at your option) any later version. ## ## stage0 is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with stage0. If not, see <http://www.gnu.org/licenses/>.

Current

Added

Added High level prototype for a more memory efficient version of M0 Added M0-compact to reduce memory requirements of bootstrapping a C compiler Python disassembler to improve the user experience (thank you Mark Jenkins) test rebuild of ALL-ROMS from .s files multiple ways Updated submodules to reflect new support for AArch64

Changed

Removed excess space after folder name (stage2/High_level_prototypes/lisp)

Fixed

properly report errors for invalid instructions on 16bit versions of knight

Removed

0.4.0 - 2020-02-02

Added

Added High level prototype for stage1_assembler-0 Added High level prototype for stage0_monitor Added High level prototype for CAT.s Added High level prototype for cc_x86.s Added posix-mode primtive getcwd Added High level prototype for cc_knight-native Added cc_knight-native.s Added High level prototype for cc_amd64 Added cc_amd64.s Added High level prototype for cc_knight-posix Added cc_knight-posix.s Added High level prototype for cc_armv7l Added cc_armv7l.s Added High level prototype for cc_aarch64 Added cc_aarch64.s Added submodule for universal bootstrap binaries

Changed

Modified cc_knight-native.s to generate output compatible with large binaries

Fixed

Eliminated the discrepency between stage1/stage1_assembler-2.s and stage1/stage1_assembler-2.hex1

Removed

Eliminated need for GCC to build hex.c to build the bootstrap binaries Eliminated floppy disk images

0.3.0 - 2020-01-18

Added

Added support for envp in cc_x86.s Added support for –POSIX-MODE to allow cross-platform testing to be easier Expanded the disassembler's support of HALCODE to include POSIX instructions Imported from mescc-tools-seed: for AMD64: catm in hex0, M1 and NASM hex0 in hex0, M1 and NASM hex1 in hex0, hex1, M1 and NASM hex2 in hex1, hex2, M1 and NASM M0 in hex2, M1 and NASM cc_x86 in M1 and NASM cc_amd64 in M1 and NASM for x86: catm in hex0, M1 and NASM hex0 in hex0, M1 and NASM hex1 in hex0, hex1, M1 and NASM hex2 in hex1, hex2, M1 and NASM M0 in hex2, M1 and NASM cc_x86 in M1 and NASM cc_amd64 in M1 and NASM Added a way to check the hex0 thanks to Dmitry Petukhov Extended POSIX-mode to include even more POSIX primitives (access, chdir and fchdir)

Changed

Reduced stack usage thanks to akkartik Changed argv, argc behavior in cc_x86.s updated stage3/M2-Planet_x86.c to commit 56db0fcad4 updated stage3/get_machine.c to new form for M2-Planet Moved previous Linux bootstrap files to Legacy_pieces Reduced size of hex0-monitor thanks to Dmitry Petukhov

Fixed

Add debug label Correct sha256sum that wasn't updated by change Fixed checksums that were wrong in previous commit Fixed description of RET to clarify order of operations Fixed multiple mistakes in documentation thanks to Dmitry Petukhov A great many typos thanks to Andrius Štikonas A few tyos thanks to 0xflotus

Removed

0.2.0 - 2018-08-26

Added

Added an x86 C compiler capable of Building M2-Planet from source Added M2-Planet v1.0 as a single file Added M1-Macro Generated from 40537c0200 in mescc-tools Added hex2_linker Generated from 40537c0200 in mescc-tools Added blood-elf Generated from 40537c0200 in mescc-tools Added get_machine Generated from 40537c0200 in mescc-tools

Changed

Fixed

Removed

0.1.0 - 2018-03-20

Added

Added the ability to remove watch points in the webide Added program to search for unusual characters that are not human detectable

Changed

Expanded stage0 web IDE to include the PC and instruction counter Performance tuned hex1 to reduce both size and instruction count Performance tuned hex0 to reduce both size and instruction count Performance tuned hex2 to reduce both size and instruction count The stage0 vm now halts on ALL invalid instructions Displacements in the Stage0-vm no longer match that of the Knight hardware platform; instead of from the start of the instruction, from the end of the immediate to the target address. The Stage0-vm has relocated the 2OPI and 1OPI instructions and adjusted their encodings accordingly to simplify instruction size logic. The Skip class instructions now lookup the first byte of the instruction that follows them and skips the appropriate size instead of 4 bytes always. The assembler, disassembler and definitions files were adjusted accordingly

Fixed

Fixed behavior of R@ thanks to reepca Updated changed checksums for stage2 FORTH Corrected behavior when using the web IDE and attempting to set registers that don't exist Fixed regression in hex.c caused by refactoring Fixed output of large negative numbers in hex Updated checksums to reflect changed made in performance tuning Fixed M0 performance by a factor of 4

Removed

Removed stage1_assembler-0's need for Memory and reduced size of program while at it Removed stage1_assembler-1's hex1 implementation as it ended up being useless in bootstrapping Removed stage1_assembler-2's hex0 and hex2 implementation as it ended up being useless in bootstrapping Removed Checksums.org as it didn't really end up as useful at this time.

0.0.9 - 2017-08-17

Added

[CHAR] was incorporated into stage3 FORTH to reduce ascii lookup UNTIL was incorporated into stage3 FORTH 'DODOES was incorporated into stage2 FORTH LATEST! was incorporated into stage2 FORTH R@ was incorporated into stage2 FORTH DODOES was incorporated into stage2 FORTH DOVAR was incorporated into stage2 FORTH Added a variable BASE to control what base numbers are printed in stage3 FORTH Added BOUNDS for common setup for sequence-iterating loops in stage3 FORTH Added region-comment "(" (note that it doesn't nest) to stage3 FORTH Added hex dump printer DUMP and support words to stage3 FORTH Added DOES> and supporting words, and used it to make VARIABLE, CONSTANT, and DEFER in stage3 FORTH Added TUCK, MIN, SPACES, :NONAME, FILL, and <> to stage3 FORTH Added LSHIFT and RSHIFT to stage2 FORTH Added PRINT to stage2 FORTH Added Low memory detection to stage2 FORTH and now exits gracefully Added Low memory detection to stage2 Lisp and now exists gracefully Improved ISA Notes about M0 and hex2 to help bootstrappers Added rain1's new user forth starting script, which is not actually required for bootstrapping but rather convenience Added Most primitive raw string support to stage2 lisp Added integer->char and char->integer to stage2 lisp Added string->list primitive to stage2 lisp Added char? primitive to stage2 lisp Added string? primitive to stage2 lisp Added make_string internal function to stage2 lisp Added list->string primitive to stage2 lisp Added number? and symbol? to stage2 lisp Added apply to stage2 lisp Imported ascension.scm library

Changed

Minor refactor of stage3 FORTH by reepa Stage3 FORTH WHILE's compile-time stack effect is now consistent with gforth Changed behavior of stage2 FORTH's CREATE to better match the way it usually works. Stage0 vm now will show an error message if the size of the rom exceeds the available memory Modified stage3 forth library to dump upper case hex values Modified stage3 forth JUMP-TO, to support 32bit absolute addresses Converted from ascii to CHAR in stage2 lisp

Fixed

Updated checksums to reflect changes in stage2 FORTH Fixed dis behavior in regards to hex values in strings Updated checksums to reflect changes in stage2 Lisp Added missing library reference form stage2 lisp High level prototype Fixed bug in stage2 FORTH PRINT function Updated changed stage2 lisp Checksums to match Made stage3 Forth better comply with new stage0 encoding recommendation.

Removed

the HERE and DP! are gone from ' now in stage3 FORTH Removed ascii! from stage2 lisp because it can easily be replaced by a simple function

0.0.8 - 2017-06-17

Added

Incorporated High level prototypes into makefile Added logic to catch non-existent input files and report a useful error message Added DP! to stage2 forth Added EXECUTE to stage2 forth Added ABORT to stage2 forth Added string print and address to output of High level prototype disassembler Added initial prototype library for forth developers who want better ANS support Expanded stage0 VM Halcode to provide a way to lookup total amount of physical memory

Changed

Extended VPATH in makefile to shorten dependency names Updated checksum for stage2 forth Reversed the order of operands in stage2 forth arithmetic Modified webIDE to leverage new enhanced disassembler output Altered stage2 forth KEY to echo keypress so that S" and similiar functions behave like gforth Altered EXECUTE in stage2 forth to set R12 and load its pointer and jump

Fixed

Stack offset bug in stage2 forth was found and fixed by reepca in record time Fixed 2DUP and ?DUP in stage2 forth Swapped TRUE and FALSE values in stage2 forth to match http://lars.nocrew.org/dpans/dpans3.htm#3.1.3 Adjusted order of comparisions to better match ans Stack leak in stage2 forth found and corrected Stage2 forth no longer attempts to parse carriage returns Stage2 forth now will display and error and clear the stacks in the event of an undefined input Stage2 forth now respects the HIDDEN Flag Stage2 forth now no longer clears during CMOVE to better comply with the spec

Removed

Removed need for sponge to be used to run webIDE

0.0.7 - 2017-06-03

Added

Added HACKING guide covering critical sections Added rom building steps to make Added more advanced cleaning options to makefile Extended stage2 lisp with null? Extended stage2 lisp with string=? Exported DEHEX rom image to makefile and added checksum

Changed

Cleaned up x86 notes and moved into x86 folder Changed the results of make all to include all of the essential roms Made makefile parallel build friendly

Fixed

Fixed failure to lookup symbols that are identical but are in different lexical scopes Updated Bootstrapping instructions to reflect new checksum and recommendation for most minimal requirements Fixed flaws in existing makefile Added build instructions to README and listed dependencies Imported High level prototypes for new functions

Removed

Purged notes that no longer apply or belong outside of stage0 Removed redundent clean options from makefile

0.0.6 - 2017-05-20

Added

Added absolute addresses to High level assembler output to aid in debugging of complex assembly programs Added Let expressions to High Level prototype lisp Added Let expressions to stage2 lisp implementation

Changed

Converted High level prototype lisp from dynamic scope to Lexical Converted stage2 lisp implementation from dynamic scope to Lexical

Fixed

Made Web debugger provide more useful information Fixed regression in web debugger's ability to read input files Fixed regression in stage2 lisp garbage collection interacting with let expressions Fixed SHA256SUM of stage2 lisp to match new binary result

Removed

0.0.5 - 2017-05-06

Added

Added write to lisp Added Cell Compactor to Lisp garbage collector resulting with multiple performance improvements Added bootstrapping steps documentation Added ability to specify amount of Available RAM on a Per run basis, however 16KB is the default

Changed

Correct lisp High level prototype to include line comments Changed default RAM to 16KB Updated bootstrap documentation to match the memory requirements of the individual steps

Fixed

Fixed missing traces when memory outside of world are accessed when profiling Imported improved High Level Lisp Prototype Updated bootstrap documentation to reflect change in Lisp sha256sum caused by recent performance upgrade

Removed

0.0.4 - 2017-02-18

Added

  • Added missing primitives from High level prototype to lisp implementation
  • Improved Eval's debugging messages

Changed

  • Readline function no longer displays EOF Char should the user terminate input with Ctrl-d

Fixed

  • Corrected Eval's processing of ASCII type
  • Make IF statements behave correctly
  • Enabled support for negative numbers
  • Properly display Integer Cells with the value of ZERO

Removed

  • Removed Eval's default behavior of unknown input

0.0.3 - 2017-02-17

Added

  • Added a primitive Lisp implementation in assembly
  • Gave primitive Lisp an exact garbage collector for CELLs (aka everything but strings)
  • Added a concatination program to make dealing with line macros easier for M0-macro programmers

Changed

  • Enhanced Forth to better fit memory space

Fixed

Fixed arrangement of spaces in forth to prevent the small input space bug

Removed

0.0.2 - 2016-11-01

Added

  • Created xeh tool in C for more cross platform debugging
  • Created M0 in hex2
  • Documented build steps in notes.org
  • Imported CMPSKIP instructions that operate on 2 registers
  • Imported CMPJUMP instructions that operate on 3 registers
  • Incorporated bounds checking on all vm->Memory accesses
  • Wrote the forth implementation in assembly

Changed

  • Renamed xeh1 files to match current naming standard
  • created roms/ to store previously built roms and expanded .gitignore to prevent binary blobs from being checked in.
  • Revised stage0 Monitor to utilize ANDI and updated the Hex0 version to incorporate the enhancements made previously

Fixed

  • Fixed leading char bug in M0
  • Updated Checksums to reflect updates in stage1_assembler-2
  • Corrected CMPSKIP(u) to CMPSKIP(u)I to match current naming scheme for instructions
  • Corrected CMPJUMP(u) to CMPJUMP(u)I to match current naming scheme for instructions

Removed

0.0.1 - 2016-10-02

Added

  • Initial draft of change log added

Changed

  • Reorganization of Files to group files by stage

Fixed

  • Line Macro assembler M0 is now self hosting