Very many things were added and many changes were made in the standard library! - Sub (minus) changed to Sbf (subtract from) - Div can be used to assert that a value is nonzero, without dividing, and can even do so while being used as a jump instruction - Aborting otherwise upgraded - Notes made on localspec speed - New faster calling and returning convention for "subroutines", functions that don't return a value - Calling conventions initial documentation - Refined memory layout somewhat - 'Tips and Conventions' section of the spec has been upgraded - Began documentation/definition of Slang - Upgraded Devices significantly, the Screen device (formerly Window device) in particular - Added the Extended Devices! - Draft for VMs/processes/concurrency! - Controllers device for keyboards, mice, game controllers, etc.! - Added a 'Slang conventions and help' file which gives lots of very important info on how to use Slang *effectively and correctly*; e.g. how to manually type variables - Added lib code and Tips example for "switch statements" - "Discovered" how to do short-circuit ORs - Upgrades to Slang! - Changes to Slang marks and tokens - Changes to default struct macros - The ability to have escape sequences in strings -- you can even now use `\<` to switch to a const in the middle of a string! - Nesting const refs works much better now -- although nesting the same const in itself like e.g. ,...> results in a failed compilation, and must be done more like ,...> - Some stuff mentioned here like the new calling conventions and Div for assertions - Word-alignment token `~~` - `| nofp`, finally - Upgraded dbgfiles - - Added vetting messages to Sbsc - Upgraded systest.s! - Many upgrades to the example programs! - Many upgrades to the existing ones - Some of the new examples: Random\ bits, controllers-demo, globals, screen_demo, string-sorter (using Slang "OOP"), varstring-test (using ULEB128 strings, think UTF-8 but simpler, still avoiding NULs, but not working with ASCII strcmp) - Sbse emulator upgrades - Screen device support! There are graphics and "touch" support. - Controllers device support! Supporting multiple controllers connected at the same time, as specified. - Built-in calibration of the main joystick (assumed using axes 0 and 1) - Analyzed a disassembly of the emulator, contemplated my C-level by-hand optimizations - Security fixes - Of course, stuff mentioned here like BSS support and the Div and Sbf changes - Upgraded integrated debugger - SubSky now supports program BSSes! - The prior "sbxe" magic number at the beginning was replaced with a BSS size. It works great at the beginning; for example, if you had it at the end, and you were streaming in a program you wouldn't know where to load it to necessarily. - The BSS exists below the loaded program image; this gives negative Pb pointers a good use, possibly reducing immediate size! - *Many* Stdlib upgrades; not listing them all here (git seems to think I re-did everything in there, maybe because of the rename of "lib" to "lib1.0"). I'll list a few, since the lib upgrades are significant: - Varstrings - Std.h upgrades - Xorshift32 RNG - Files in dev/ - Maybe these already existed, but Slang-OOP -based slice sorting, some basic routines like memcpy upgrades? etc. And, of course, more! # Please enter the commit message for your changes. Lines starting # with '#' will be ignored, and an empty message aborts the commit. # # On branch master # Changes to be committed: # new file: Calling and returning.jpg # new file: Devices # modified: Examples/7wit-5ilter.s # new file: Examples/7wit-5ilter.sbxe # modified: Examples/Fibonacci-tiny.s # modified: Examples/Fibonacci-tiny.sbxe # modified: Examples/Fibonacci.s # modified: Examples/Fibonacci.sbxe # new file: Examples/IDEAS!/conway.s # new file: Examples/IDEAS!/turing-UTM.s # new file: Examples/Memwalk/Ideas/Main idea!.jpg # new file: Examples/Random bits.s # new file: Examples/Random bits.sbxe # new file: Examples/Replicators/Partial replicator, 1:2 cycle:byte.s # new file: Examples/Replicators/Partial replicator, 1:2 cycle:byte.sbxe # new file: Examples/Replicators/Partial replicator, mem OOB 1:2 cycle:byte (easy).s # new file: Examples/Replicators/Partial replicator, mem OOB 1:2 cycle:byte (easy).sbxe # new file: Examples/Replicators/Partial replicator, mem OOB 1:4 cycle:byte (fast) memory dump.bin # new file: Examples/Replicators/Partial replicator, mem OOB 1:4 cycle:byte (fast).s # new file: Examples/Replicators/Partial replicator, mem OOB 1:4 cycle:byte (fast).sbxe # new file: Examples/Replicators/lib1.0 # modified: Examples/cat.s # modified: Examples/cat.sbxe # new file: Examples/controllers-demo.s # new file: Examples/controllers-demo.sbxe # new file: Examples/globals.s # new file: Examples/globals.sbxe # modified: Examples/hello.s # modified: Examples/hello.sbxe # modified: Examples/interfaces.s # modified: Examples/interfaces.sbxe # modified: Examples/interfaces.sdbg # deleted: Examples/lib # new file: Examples/lib1.0 # new file: Examples/loader.s # new file: Examples/loader.sbxe # modified: Examples/modtest.s # modified: Examples/modtest.sbxe # new file: Examples/screen_demo.s # new file: Examples/screen_demo.sbxe # modified: Examples/sinetones.s # modified: Examples/sinetones.sbxe # new file: Examples/string-sorter.s # new file: Examples/string-sorter.sbxe # new file: Examples/string-sorter.sbxe.bak # modified: Examples/test.s # modified: Examples/test.sbxe # new file: Examples/varstring-test.s # new file: Examples/varstring-test.sbxe # new file: Extended Devices # new file: Figure out this output # new file: Future # deleted: Library conventions # new file: Optimizing analyzation/Notes # new file: Optimizing analyzation/Then-current cpu.c # new file: Optimizing analyzation/Then-current cpu.h # new file: Optimizing analyzation/cpu.s # deleted: Parentcalls # new file: README.md # modified: Scratchpad # new file: Slang # new file: Slang conventions and help # modified: SubSky # deleted: Sublang draft.s # new file: Tests/lib1.0 # new file: Tests/memcpy-test.bin # new file: Tests/memcpy-test.s # new file: Tests/memcpy-test.sbxe # new file: Tests/sqrt-test.s # new file: Tests/sqrt-test.sbxe # new file: Tests/systest.s # new file: Tests/systest.sbxe # modified: Tips # renamed: Memory layout idea -> Trash can/Memory layout idea # new file: WALKTHROUGH # modified: cpu/cpu.c # modified: cpu/cpu.h # modified: cpu/debugger.c # new file: cpu/ext_devices.h # modified: cpu/io.c # modified: cpu/util.c # deleted: lib/io_defs.s # deleted: lib/math.s # deleted: lib/math_defs.s # deleted: lib/mem_defs.s # deleted: lib/std_defs.s # deleted: lib/str.s # renamed: lib/ASCII_defs.s -> lib1.0/ASCII.h # renamed: lib/ASCII.s -> lib1.0/ASCII.s # new file: lib1.0/ASCII_errs.s # renamed: lib/abort/abort.s -> lib1.0/abort/abort.s # renamed: lib/abort/friendly.s -> lib1.0/abort/friendly.s # new file: lib1.0/dev/console.h # new file: lib1.0/dev/console.s # new file: lib1.0/dev/console_io.s # new file: lib1.0/dev/screen.h # new file: lib1.0/dev/screen.s # new file: lib1.0/devex/controllers.h # new file: lib1.0/devex/controllers.s # new file: lib1.0/io.h # new file: lib1.0/io.h.BAK # renamed: lib/io.s -> lib1.0/io.s # new file: lib1.0/math.h # new file: lib1.0/math.s # new file: lib1.0/mem.h # renamed: lib/mem.s -> lib1.0/mem.s # new file: lib1.0/random.h # new file: lib1.0/random.s # new file: lib1.0/search.h # new file: lib1.0/search.s # new file: lib1.0/sort.h # new file: lib1.0/sort.s # new file: lib1.0/std.h # renamed: lib/std.s -> lib1.0/std.s # new file: lib1.0/str.s # new file: lib1.0/str/sort.s # new file: lib1.0/strv.s # modified: run.sh # modified: sbsasm/const.go # modified: sbsasm/expression.go # modified: sbsasm/instructions.go # modified: sbsasm/sbsasm.go # modified: sbsasm/token.go # deleted: sbsc/lib # new file: sbsc/lib1.0 # modified: sbsc/run-test.sh # new file: sbsc/sbsc # modified: sbsc/sbsc.go # new file: sbsc/systest-temp.sbxe # new file: sbsc/systest.sdbg # modified: sbsc/test.s # modified: sbsc/test.sbxe # new file: sbse (old console-only version)/sbse # new file: sbse (old console-only version)/sbse.c # new file: sbse (old console-only version)/sbse.old # new file: sbse/controllers.c # new file: sbse/controllers.h # new file: sbse/sbse # modified: sbse/sbse.c # new file: sbse/sbse.c before joystick instead of gamepad.bak # deleted: systest.s # deleted: systest.sbxe # new file: test.s # new file: test.sbxe #