ChangeLog - jedimatt42/fcmd GitHub Wiki

Change Log

ver 2.0 - December 31, 2021 -

  • Small usabliity fix to reset the SAMS pages when launching software other than Force Command executables.
  • Bundle FCSDK in the zip for creating executables with the gcc toolchain.
  • Fix makefiles for all the examples.
  • Updated a ton of docs on the Wiki, and in the source repo README.md files.

ver 1.32 - December 23, 2021 -

  • trampoline and headers for fairly natural SAMS bank switching of code in executables like VIRGIL99
  • SAMS exe loader (looks at exe header and decides what to do)

ver 1.31 - November 08, 2021 -

  • fix getstr function to allow input of ~{}| characters...
  • FCMENU updated to understand FCM variable
  • VIRGIL99 mouse tuning

ver 1.30 - November 7th, 2021 -

  • canonicalize color handling and expose direct api.
  • add constants to api headers for various things.
  • update VIRGIL99 to be faster and less buggy.

ver 1.29 - October 31st, 2021 -

  • screen color and text color tracking
  • add direct color functions to api - use them in VIRGIL99 1.2
  • fix goto with foreward reference to labels
  • fix FG99 and XB to internally capitalize your module name for you

ver 1.28 - October 27th, 2021 -

  • add some executables to the loose files in the zip
  • update VIRGIL99 v1.1 - fixes status bar bugs overrunning display. Support redirect responses from server. Speed up page loading ( there is much more speed to be had )

ver 1.28 - October 24th, 2021 -

  • add some support for introspecting vdp memory map (as setup by ForceCommand) so executables can do discovery addresses for direct manipulation.
  • add VIRGIL99 ealry days GEMINI protocol browser
  • fix a memory allocation bug when multiple executables loaded want SAMS.

ver 1.27 - October 6th, 2021 -

  • fix wildcarding - was treating filenames without * as a substring search, is now a literal match
  • extend copy command to allow renaming file during copy operation.
  • fix odd end of line behavior in ed
  • add line joining in ed when backspacing left from column 1 or pressing ctrl-j to join forward.
  • add ctrl-s and ctrl-d to jump to beginning and end of line respectively
  • changed ed save to ctrl-w 'write file' so ctrl-s could be used from jump to beginning of line - their is precedence for this in other software.
  • changed command line entry to use ed codebase for consistency and scrolling entry on 40 column displays.

ver 1.26 - August 6th, 2021 -

  • fix label and goto system. It is still slow... but it is back to being functional
  • fcmenu hides mouse until it moves.
  • fcmenu fix probable hang if you have F18A but no TIPI

ver 1.25 - July 25th, 2021 -

  • add TIPI mouse routines to cartridge library.
  • external command FCMENU supports clicking on items with mouse to launch
  • fix VDP memory map and documentation to let sprites work in 80x30 F18A mode.

ver 1.24 - July 11th, 2021 -

  • fix long standing bug returning to correct line in a script when returning from other script or executables.

ver 1.23 - July 11th, 2021 -

  • update FCMENU to allow arrow key navigation, and case insensitive key selection.
  • small improvements to the bundled TELNET, still not fit for a linux host.
  • include my speech routines in the ROM library, tweak SAY to use those.
  • more include files in examples/gcc
  • makefiles improved to support clickable compilation errors in IDEs like Jetbrains CLION

ver 1.22 - June 27th, 2021 -

  • fix crash when you type DSK1 as if it was a command.
  • add FCMENU utility to set of included executables (stuff that's in FCMD.DSK)

ver 1.21 - June 13th, 2021 -

  • reset first 16 palette registers on F18A at startup.
  • add palette command to set registers.

ver 1.20 - June 6th, 2021 -

  • fix running scripts from IDE

ver 1.19 - June 5th, 2021 -

  • Fix IDE delete
  • Remove 'more' prompting, and replace with ctrl-s to stop terminal while scrolling. Release ctrl-s to resume.
  • Fix DIR for volumes with no name.
  • internal: heap alloc will fail if it would place you within 512bytes of the stack pointer.

ver 1.18 - May 30th, 2021 - 

  • Fix IDE timestamp support
  • Fix IDE.TIME support for date and bar 
  • Improve IDE volume size data in directory listings.
  • Fix long listing to not show record length for DIR and PROGRAM type entries.
  • Auto detect CLOCK environment variable value on startup - shouldn't need to set it anymore unless you have multiple clocks and want to choose which is used. 

ver 1.17 - January 21st, 2021 -    (Re-uploaded zip cause previous 1.17 zip didn't have 1.17 in it..) 

  • Fix newline insert in editor (ED)

ver 1.16 - January 17th, 2021 - 

  • Maybe fix Yamaha VDP detection consistency.
  • Left arrow is now left arrow by default. Set environment variable BACKSPACE=TRUE to enable backspace functionality. Switching to overwrite mode temporarily turns off backspace mode. This is true for ED and command line editing.
  • Fix backspace behavior in getstr routine (used by command line).

ver 1.15 - January 10th, 2021 - 

  • Return the cursor when performing READKEY
  • Builtin editor, ED, for DV80 files. 

ver 1.14 - January 2nd, 2021 - 

  • Restore SAMS mapper settings before launching cartridges / FG99 and XB command

ver 1.13 - December 31st, 2020 - 

  • Include modified date in files if using 80 column display and controller supports it.
  • Improve XB command to preserve and utilize existing TIPI mapping of DSK1
  • includes updated TIPI.FC.LOAD file in zip.
  • Tweaks to sysinfo

ver 1.12 - December 21st, 2020 - 

( I have added my own AUTOCMD back... so I can hopefully detect this sort of catastrophic ( hobby level 2 ) failure ) 

  • Fix CLS when BAR is on...
  • Fix scripting - script file was erroneously being closed for safe commands, and seek after re-open was just rushing to the end of the file ( forgot to increment line counter )

Bugs: I've found a new issue with CTRL-C when in a READKEY loop... It isn't quiting like I would expect.  FCTN-4 seems to work though. The code I think I wrote, supports both.

ver 1.11 - December 20th, 2020 - 

  • MASSIVE BREAKAGE TO SCRIPTING - So release deleted.
  • Add PROMPT variable so people can do what they please.
  • Added PWD so... cause... well PROMPT   
  • Added a light SYSINFO command.
  • Took more measures to make sure script files are closed appropriately. Flipped it from small list that requires closing to long list that is known safe for keeping it open. It became clear the small list was not thought out. 
  • Re-enabled PAL detection, but with a pre-test to decide if the test would have a chance or not. ( I don't know why I want this, but it's my software... so...  )

ver 1.10 - December 14th, 2020 - 

  • Environment variable names are now case-insensitive/promoted to uppercase
  • CLOCK values are case-insensitive as they aren't really DSR device names anymore
  • Fixed the MBP am pm bug
  • Close script files before running FG99 or LOAD command so they aren't left open.

ver 1.9 - December 12th, 2020 - 

  • Disable PAL check, I'm guessing this is what hangs up 99(3|5)8 setup.
  • Add modified time display for files on controllers that support it, if using an 80 column screen.

ver 1.8 - December 6th, 2020 - 

  • Fix readkey command

ver 1.7 - December 5th, 2020 - 

  • Give IDE.TIME a chance in hell of working. 
  • fix interactions between bar and width command.

ver 1.6 - December 5th, 2020 - 

  • Add date command - prints current date and time
  • Add bar command - turns on or off a title bar that displays the version and time.
  • support for 'CLOCK' tested on Classic99, 'PI.CLOCK' tested on TIPI hardware, and 'IDE.TIME' not tested.

ver 1.5 - November 28th, 2020 - 

  • Add ctrl-c/fctn-4 break out of all commands that loop and print. Including wildcard copy and delete after current item is processed.
  • History command added to list in memory command history - if SAMS then 4k is given to history, if not-SAMS, then you get 1 item. History can be recalled with !  like !7  or you can press up and down arrow to navigate around...  History is not persistent.

ver 1.4 - November 16th, 2020 - 

  • remove limit  on device names (was 20)
  • remove limit from environment variable (was many)

ver 1.3 - November 12th, 2020 - 

  • Fix LOAD for programs that use SAMS/Expect certain default sams mappings/mapping off
  • Fix LOAD after being in 80x26.5 mode, so 26.5 mode is off.
  • Update README.md to describe configuration of ROM + GROM in classic99
  • Include separate MAME RPK without GROM, cause JS99ER RPK with both doesn't work.

ver 1.2 - November 9th, 2020 - 

  • REDO and up-arrow will recall last command for editing
  • FTP builtin has been removed, included as external command
  • 80x26x2 mode on 9938
  • Numerous internal tweaks.

ver 1.1 - October 8th, 2020 - 

  • Fix Variable unset
  • Allow fully qualified path to scripts and external commands
  • DELETE supports /y ( yes ) option and wildcards

ver 1.0 - October 4th, 2020 - 

  • Add command support, although API is not public yet
  • Add PATH variable defining where to search for scripts and commands
  • Removed CALL for running scripts... 
  • Reworked memory map massively
  • It's a single GROM and 128K ROM now
  • STILL RESERVE the right to remove FTP, and move it to an external command, where it belongs
  • improved COPY and CHECKSUM to use larger buffer for increased performance
  • removed erroneous 0 block check from COPY and CHECKSUM
  • fixed bug in CHECKSUM I think. So values as compared to version 0.M will be different

ver 0.M - July 6th 2020 - 

  • Fix buffer overrun in some string handling - affects all commands (almost all) 
  • Add XB command to launch specified Extended BASIC program from command line   - Requires TIPI and FinalGROM99, program can live on other devices, but TIPI is required for the necessary shim.   - When launching from TIPI, TIPIMAP AUTO ON should be used IF the program requires additional files, or a TIPI mapping file should live in the program's directory   - When launching from a non-TIPI DSK1., then TIPI automapping must be turned off.   - Requires installation of utilities in included FC directory   - Requires TIPI version 2.4

ver 0.L - July 3rd 2020 - 

  • Fix VDP registers when LOAD command is issued... ( Fixes game TI-REX, and TENNIS )
  • Add /P option for permanent mount to CFMOUNT
  • Added range parameters to CFMOUNT /V [10 20]  - defaults are 1 312, if you go beyond your max volumes, the nanopeb needs to be power-cycled.

ver 0.K - June 19th 2020 - 

  • Add CFMOUNT command.

ver 0.J - June 18th 2020 - 

  • Fix TIPIMAP for DSK4, and now target can be forward relative paths like the other commands take... so you can CD TIPI.DISKS.GAMES, and then TIPIMAP DSK4. STRATEGO  and it'll map to TIPI.DISKS.GAMES.STRATEGO
  • Fix 80 column screen glitch when using any of the lvl2 io commands like checksum, copy, and mkdir.
  • Fix relative pathing when on a drive that is not the first device in the chain with that device name, such as being at 1100.DSK1. (from a nanopeb maybe) while you have some device like a TIPI that also has DSK1 at >1000

ver 0.I - June 15th 2020 - 

  • Change parameter parsing of all commands that take a required single argument file or directory name to now accept full or descending relative file/dir path name
  • fix DIR *W to list files ending in W, instead of a wide display listing. . which fixes bug also, where you could enter TALL EDIT instead of CALL EDIT
  • recode help to use less memory. 
  • fix displaying type of protected files
  • fix TYPE /ANSI handling. 
  • fix shriek when AUTOCMD doesn't invoke TIPIBEEPS

-- known issue

80 column mode, several commands drop a garbage character at what might have been the old 80x24 image pattern location end... even when no scrolling is necessary... or etc...

TIPIMAP DSK4. doesn't work

ver 0.H - June 13th 2020 - 

  • Fix word wrapping for help system
  • Improve style of help, and fix some language
  • Fix TIPIMAP command crash - It was moved to bank6, and I forgot to update the caller.

ver 0.G - June 1st 2020 - 

  • Improvements to LOAD -

Now sets GPLWS as current workspace before BL into loaded program. This fixes known problem with EDIT80 and EDIT40 from Fred Kaal. Thanks to Fred for having his source code available! Also moved launching instruction and reset instruction into ROM header chunk ( the part in all banks ) so that if the program fiddles with writing to cartridge ROM it can still return to my reset code. 

ver 0.F - May 27th 2020 - 

  • 80 column mode is now 80x30 mode. 
  • added TIPIHALT command to issue shutdown request to PI - you have to wait yourself, I can't detect when the PI is shutdown without locking up the 4A. 
  • added TIPIREBOOT command to issue reboot request to PI - next access to a TIPI device will block until PI is serving TIPI requests again.

ver 0.E - May 23rd 2020 - 

  • COPY supports wildcards
  • Fixed/Replaced F18A banner - hope people find this enjoyable. 
  • a few small cosmetic fixes

Wildcarding is prefix or suffix, not both. HELP COPY or HELP DIR describe it with examples. But basically, 

'*' is the wildcard character, and it can be at the beginning of a file name to copy all files with a matching suffix.

Or it can be at the end to copy all files that begin with some prefix. 

It does not match against device names. 

Examples:

COPY 1100.DSK1. TIPI.FOO. - copy all files in floppy controller DSK1. to directory FOO on TIPI. ( FOO must already exist. ) 

COPY TIPI.FOO.CFG* DSKA. - copy all files starting with CFG from directory TIPI.FOO. to DSKA.

COPY CFG1 DSK1. - copy just file CFG1 from current location to DSK1. 

COPY TIPI.ROS.*/S DSKR. - copy all files ending in '/S' to DSKR. 

Known bug: It will report error reading file if you try to copy a directory itself. If I have directory TIPI.FOO. and I try COPY TIPI.FOO DSK1. it will fail. If I try COPY TIPI.FOO. DSK1. it will copy all files in FOO to DSK1. I should fix it to skip the directories... maybe tomorrow.

Also, my copy is one 256 byte block at a time. So, for spinny things with seek time, it is probably painfully slow. MAME's track sound effects are funny... funny nostalgic, funny. 

DIR and COPY use the same matching code, so to see what it will try to copy, use DIR. 

ver 0.D - May 21st 2020

  • Fix EA5 loader breakage: 'LOAD' command. It was broke for any ea5 set that loaded into >BFD0->BFFF  
  • Change DIR space reporting

ver 0.C - May 19th 2020

  • Fix breakage from 0.B. 4 commands... like checksum... ftp.. 

ver 0.B - May 17th 2020

bugs : this version broke FTP, TYPE, CHECKSUM, LOAD, and a few others. -- fixed in versions 0.C and then LOAD in 0.D

  • Fix file management routines for use with Horizon Ramdisk (tested in MAME)
  • preparation for overlay commands:     - Rearrange memory usage to make top 16k of expansion ram available.     - Create a first cut at API table in rom bank 0 - not ready for use.     - Ground work to move large chunk of terminal display code back into ROM ( currently copied into RAM for easier shared access )

Note, the README in version 0.B contains some fantasy - rough draft of spec for an API before I seriously enable it.

ver 0.A - (counting in hex) November 24th 2019 - 

  • Fix basic-link search code for lvl2 subroutines. Now works on IDE with Fred Kaal's DSR
  • Fixed FTP error when downloading to a floppy.
  • Fixed LVL2 command to list the lvl2 subroutine names as a single byte.

ver 0.9 - October 25th 2019

  • Fix device name to LVL2 operation mapping, tested against emulated Myarc HFDC. 
  • Corrections for sloppy file catalog code... 

ver 0.8 - May 28th 2019

  • Add 'press any key for more...' prompt when scrolling if not in a script. Good for 'dir', ftp's 'dir', type, ftp.whtech.com's adverts on login.

ver 0.7 - May 26th 2019

  • Turn sound off immediately on program startup
  • FTP: Set ascii transfer mode before opening data channel for directory command
  • FTP: Wait properly for 226 end of transfer code after get command.

ver 0.6 - May 11th 2019 -

  • Added /ansi option to type command
  • Fixed help suggestions from Lee, and found a few more.
  • Increased variable value length, and added length checking

ver 0.5 - May 6th 2019

  • Added 'IF' statement

ver 0.4 - May 5th 2019

  • Added initial FTP get functionality