What's new in version 2.1.5
- general source code, cmake, and script file cleanup
- add support for picow and vgaboard
- update C example source code
- centralize reset function, no longer using watchdoc
- remove trim command, garbage collection in littlefs is automatic
- move all constant variables to flash, releasing RAM to better use
- expand status command to show memory and screen use.
- clarify and pack exe file header
- delete resize cmd, use clear instead
- improve release_build script (less error prone)
- add RP2350 PWM IRQ numbers
- for rp2350 all floating pointt operators as well as sqrtf function calls are handled directly with inline CM33 floating point intructions instead of wrapper calls
- for rp2350 integer divide and modulus operators are handled using inline CM33 hardware integer divide instructions instead of warpper calls
- rp2350 use expanded range of movw immediate to reduce amount of PC relative addressing
- many rp2350 peep hole optimizer opportunities
What's new in version 2.1.4
- Revert to merged cc_externs and cc_defs
- Update FUNCTIONs documentation
- Add hardware UART function and defines
- Expand heap size to maximum
- RP2350 peep hole addition + misc text diffs
- Improve peep hole optimizer logic
- Enhance status command to include memory constraints
What's new in version 2.1.3
- Internal compiler restructure, separating functional parts, moving all constants to flash.
- Multiple peep hole optimizer for RP2350 improvements.
- Extend fault handler for RP2350
- Replace sqrtf function call with inline RP2350 floating point instruction.
- Updated C examples
- Optimize integer compare, and divide for RP2350
What's new in version 2.1.2
- substitute HW FP sqrt instruction for sqrtf function call. (RP2350)
- a few more peep hole optimizations. (RP2350)
What's new in version 2.1.1
- improved peep hole optimizer. Bug fix and RP2350 floating point optimizations.
What's new in version 2.1.0
- rp2350 specific peep hole optimizations
- exclude unused code for RP2040 and RP2350, reducing pshell executable size.
- for rp2350 use FP hardware to implement sqrtf function.
What's new in version 2.0.3
- Optimize /, -, >, >=, <, <= float oprators for RP2350
- Add a few FP instruction decodes to disassembler
- Default to inline FP instructions (RP2350). Use -x compiler option to revert to RP2040 style wrapper function calls.
What's new in version 2.0.2
- Add -f compiler option to generate inline floating point operation for RP2350. The default is to generate RP2040 style wrapper function calls.
- Generate integer division sdiv for RP2350.
- Update RP2350 GPIO constants and functions for RP2350.
What's new in version 2.0.1
- Fix Heap Limit
What's new in version 2.0.0
- Pico2 (RP2350) support
What's new in version 1.2.31
- Updated to Pico SDK version 2
What's new in version 1.2.30
- fix compiler memory leak
What's new in version 1.2.29
- update functions document
- fix extern table out of order
- add simple hexdump command
- add -p (paginate) option to cat and hex commands
- cat terminate on EOF (0x1A) char
What's new in version 1.2.28
- further optimization of C compile memory management
- Vi recognizes and understands the EOF (0x1a) character. This eliminates the need do delete CTL-Z chars at the end of files transferred by xmodem which transfer files in 256 byte chunks regardless of actual file size.
What's new in version 1.2.27
- fix crash comppiling to executable
What's new in version 1.2.26
- Update disassembler module
- Update littlefs to version 2.7
- Implement standard calloc function
What's new in version 1.2.25
- rebuilt with SDK 1.5.1
What's new in version 1.2.24
- optimize memory management
- fix compiler memory leak
What's new in version 1.2.23
- fix cat command crash
- Add support for get_rand_32 SDK function
What's new in version 1.2.22
- Recompiled with gcc 12.2, SDK 1.5, littlefs to 2.5.1
What's new in version 1.2.21
- support builing for vgaboard with filesystem on microSD
What's new in version 1.2.20
- fix stack allocation for local multi dimensional arrays
- fix sizeof for multi dimensional arrays, was limited to 1 dimension
- fix small global data limit for strings literals
- add strtol string function and compiler version flag in executable's header
- suppress gcc12 newlib linker warnings
What's new in version 1.2.19
- fix compound assignment bug
- implement #pragma uchar, tells compiler to use unsigned char variables
- grow symbol table dynamically
- fix global greater than 4K bug
What's new in version 1.2.18
- a few more peep hole optimizations
- hide hidden files, add -a option to ls command
- update tar to preserve executable attribute
- restore missing instruction at end of function disassembly (cosmetic)
- add cmd line option to disable peep hole optimizer
- Fix bugs with dgreadln
What's new in version 1.2.17
- fix command line parameter setup, broken by new invocation code
- fix missing source line in error msg
- update examples
- fix potential vi memory leak
- drop peep hole, does more harm than good
- fix forward function declaration disassembly
- robust user code invocation
- add compiler source comments
What's new in version 1.2.16
- optimize function calls. save/restore fewer registers
- adjust exit function
- update peep-hole optimizer, add array indexing optimization
- add quicksort example
- line buffering serves no purpose, remove it.
What's new in version 1.2.15
- Another critical printf fix
- optimize float relational operators
- trig function optimization
What's new in version 1.2.14
- Merge CC and VI uninitialized globals to save memory.
- Fix printf bug. prevent uncontrolled stack growth
- Check executable attributes on tab completion.
- Fix executable attribute on copy and refactor tab completion.
What's new in version 1.2.13
- optimize integer compare operators
- fix broken /= *= += -= for floats
What's new in version 1.2.12
- fix load data init bug preventing older code execution
- save history on quit and usb reboot
- add pentamino example
- more peep hole optimizations
- allow constant integer or float expressions as #define values
What's new in version 1.2.11
- command history survives reboots
- integer arrays were not always word aligned, causing crashes on CM0
- allow negative values in simple defines
- fix executable search path misbehavior
What's new in version 1.2.10
- binary executable now pshell version independent
- fix search path bug
What's new in version 1.2.9
- executable binaries invoked directly by name, remove run command
- executable search order is current directory followed by /bin directory
- verify executable is compatible with current version of pshell, suggest recompile if not
What's new in version 1.2.8
- compiler supports the -o option to create binary executable.
- run command added to run binary executable, till further intgration
What's new in version 1.2.7
- for compatibility use Unix values for O_RDONLY, O_WRONLY, etc, and translate them automatically to LFS mode values.
- char type now defaults to signed, use -u option for unsigned chars
What's new in version 1.2.6
- fix bug loading small negative constants.
- support octal and hexadecimal character representations in strings and char constants
- revert banner update and add size detect command
What's new in version 1.2.5
- internal cleanup of branching logic
- fix c-style multi line comment crash
- check for line buffer and symbol table overflow
- source file no longer needs to be memory resident for compilation.
- fix bad branch at bootom of long for loops
What's new in version 1.2.4
- fix parameter mismatch crash
- check for AST overflow
- increase AST to 32K
- remove a few redundant instructions
What's new in version 1.2.3
- rudimentary peep-hole optimization
- display correct line in error message
- fix boolean expression shortcut
What's new in version 1.2.2
- consisent use of long branch to avoid "too far" errors
- predefine PICO_ERROR_TIMEOUT
- detect undefined struct and union
What's new in version 1.2.1
- remove compiler branch distance restriction
What's new in version 1.2.0
- C compiler now generates native arm code
- virtual machine removed
What's new in version 1.1.17
- fix interaction between tab completion and the command history
- make sure to truncate when replacing a file
- wumpus example
What's new in version 1.1.16
- fix broken keyboard BREAK option
What's new in version 1.1.15
- fix handling of . and .. notation for directory names
- allow for(;;) synctax. Passes test 00034.c
What's new in version 1.1.14
- fix USB buffer overflow pasting in Vi
- Remove ESC as BREAK key
- Add getting started section
What's new in version 1.1.13
- fix tar handling of linux tar peculiarities
- revert update that broke test cae 00033
- add 200+ test cases
- remove xget file size limit
- cosistent use of CTL-C or ESC for user break
What's new in version 1.1.12
- fix compiler fail when break statement is used in while loop.
What's new in version 1.1.11
- compiler checks for code segment overflow
- compiler checks for data segment overflow
What's new in version 1.1.10
- forward function declaration support
- delete io.* and update all code to use standard (stdio) functions
- minor dgreadln optimization/cleanup
- compiler readability/maintainability improvements
What's new in version 1.1.9
- moved all source files to their own directory
- Added Unix compatible tar command
- Added recursive rmdir command
What's new in version 1.1.8
- mostly readability reorganization of compiler source
- added missing fmodf function since it's recommended by the compiler
- fixed missed opportunity optimizing modulus operator. (port introduced bug)
- updated functions list
- added lorenz simulation example
What's new in version 1.1.7
- constant expressions for global declarations
What's new in version 1.1.6
- command history and recall added to the shell
What's new in version 1.1.5
- formalized three cmake build options
-DUSB_CONSOLE=[ON|OFF] Build for USB, otherwise UART
-DWITH_IRQ=[ON|OFF] Build with interrup handling support
-DWITH_KBD_HALT=[ON|OFF] Build with run-time kbd CTL-C checks
Turning off IRQ support and keyboard halt checking can significantly improve performance,
What's new in version 1.1.4
- add strncpy, strncmp, strncat, strrchr, asinf, acosf, atanf, atan2f, sinhf, coshf, tanhf, asinhf, acoshf, atanhf and log10f functions
- append .c to compiler filename if not specified
- add interrupt driven LED fade example
- a few minor instruction optimizations
What's new in version 1.1.3
- fixed compiler bug triggered by mid block declarations
- added exit function
- added popcount function
- added strchr function
What's new in version 1.1.2
- added Conway's game of life
- polished a few knobs.
- hopefully fixed the last of the old compiler induced syntax errors?
What's new in version 1.1.1
- fix USB startup failures
- fix compile errors with older version of GCC
What's new in version 1.1.0
- Xmodem code consolidated.
- Interrupt handling.
- Removed stdinit-lib submodule dependency
- compiler support for taking address of function (needed for interrupt support)
- file IO to file system
- Added compiler help
What's new in version 1.0.8
- proper handling of system calls with variable number of arguments. (remove printf hack)
- argument type and number checking for all system calls.
- removed stdlib-init submodule dependency.
- consolidated xmodem code.
- implemented move and copy to directory
What's new in version 1.0.7
- SDK ADC function support
- SDK SPI function support
- SDK I2C function support
- Predefined SDK constants for SDK function parameters
- Vi uses secondary screen buffer such that prior screen restored on exit
- Fix build errors under SDK 1.3.x
- fix editor bug when more than one file name used in a command.
What's new in version 1.0.6
- file io functions open close read write lseek rename remove
What's new in version 1.0.5
- use float functions sqrtf sinf cosf tanf logf powf instead of double versions
- new string function strdup
- added string example
- improve compiler error diadnostics
- added flash boot to usb loader command
- improved vi keyboard handling
What's new in version 1.0.4
- function calls to Pico SDK gpio_* and pwm_* functions added
- C code examples
- sprintf and atoi function support
- string functions strcmp, strcpy, strcat, strlen, memcmp
- reboot command
- reboot on crash