+jedimatt42 Posted May 7, 2019 Share Posted May 7, 2019 Force Command - a command line OS in progress by Jedimatt42 for the TI-99/4A. You can informally call it Jedimatt42's DOS, or Matt's DOS. However its name is 'Force Command' ver 2.5 - July 31, 2022 - forcecmd_2.5.zip oops, I had a regression in the DISKIMAGE executable, here is a new one: DISKIMAGE Extend API to include fc_dsr_sector_read and fc_dsr_sector_write functions. Add DISKIMAGE executable to bundle - DISKIMAGE docs ver 2.4 - June 25, 2022 - forcecmd_2.4.zip Fix 32K command recall Add RDPART, RDEMDK, and RDVOL commands to configure Myarc EXP-1 with 128KOS ROM. ver 2.3 - June 20, 2022 - update LVL2 subprogram calling to set PAB requirement for Myarc EXP-1 Ramdisk. improve initialization so the 'device not found' message that is seen on startup since I added the font support should stop showing up. ver 2.2b - February 18, 2022 - update FTP executable - fix buffer overrun bug update VIRGIL99 executable - adds TIFILES download support over gemini protocol. ver 2.2 - February 5, 2022 - add fc_tipi_log api call update VIRGIL99 to ver 1.8 - fixes history, adds bookmarks, adds local DV80 viewing ver 2.1 - January 23, 2022 - add FONT environment variable to specify default Force Command style font file to load add FONT executable to load XB256 Wilhelm format fonts, fbForth 1k headerless, ForceCommand 2k headerless fonts. add FC.MDOSANSI and FC.MDOSFONT 2k files taken from the Geneve MDOS source. 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. Change Log: https://github.com/jedimatt42/fcmd/wiki/ChangeLog ---- Force Command A auto starting command module GROM and ROM pair. The GROM just kicks off the ROM. Designed to operate with all known TI-99/4A storage devices. Contains all the commands from former TIPIFM for file and directory management in a mult-DSK... and TIPI aware way. So, you can copy files to and from TIPI. You can copy files to and from 2 devices that both think they are DSK1. Since TIPIFM, this has added: * scripting support. * EA5 loading with 'load' command. * FG99 cartridge swapping with 'fg99' command. * an FTP executable that supports 'get', TIFILES, and foreign files * variables, labels, goto, if, keyboard input from script * ANSI display * growing support, work in progress, full details on github... https://github.com/jedimatt42/fcmd/wiki ---- Using PabloDraw on my linux machine, I created asample ANSI screen. I use a script on the 4A that displays the file, then loops on keyboard input, and launches the option chosen. ``` readkey K if $(K) == F then goto LNFB ... LNFB: tipimap DSK1 TIPI.FB4TH210 fg99 FBFORTH ``` Like how you might have done it back in MS DOS 2.11 You can also emit ansi escape codes with the echo command. ---- Full Help Dump see the wiki or built in help for relatively current info : https://github.com/jedimatt42/fcmd/wiki 22 1 Quote Link to comment Share on other sites More sharing options...
+arcadeshopper Posted May 7, 2019 Share Posted May 7, 2019 totally awesome 1 Quote Link to comment Share on other sites More sharing options...
+jedimatt42 Posted May 7, 2019 Author Share Posted May 7, 2019 Since the shell terminal is ANSI, the 'type' command is an ANSI file viewer. I don't know what format an ANSI file on the 4A or Geneve would have been in BITD. 'type' expects D/V80 -M@ 2 Quote Link to comment Share on other sites More sharing options...
TheMole Posted May 8, 2019 Share Posted May 8, 2019 Incredibly cool! Quote Link to comment Share on other sites More sharing options...
+9640News Posted May 8, 2019 Share Posted May 8, 2019 Might want to add something along "TIPI compatible" in the subject heading. Almost did not realize this was a TIPI compatible program/etc. as I do not read all the topics for the TI-99/4A. Quote Link to comment Share on other sites More sharing options...
twoodland Posted May 8, 2019 Share Posted May 8, 2019 M@ this is so cool! Thank you so much for your knowledge and time spent. You ROCK! 1 Quote Link to comment Share on other sites More sharing options...
+InsaneMultitasker Posted May 8, 2019 Share Posted May 8, 2019 For BBS and Geneve use cases only: DF128. ANSI files have been stored this way primarily to facilitate easy terminal-based file exchanges between PC and TI/Geneve systems and to distinguish from the variable-record TI-style text files. ANSI file content termination is often the null character 0x00 or the final record may be padded with nulls, carriage returns, or some other character like CTRL-Z. Not a standard, just the way it has been handled for these cases. 2 Quote Link to comment Share on other sites More sharing options...
+Lee Stewart Posted May 9, 2019 Share Posted May 9, 2019 Ver 0.5 - May 6th 2019 - forcecmd0_5.zip . . . ---- Full Help Dump ---- . . . Unsolicited proofreading markup of “Full Help Dump” sent in PM. ...lee 3 Quote Link to comment Share on other sites More sharing options...
+jedimatt42 Posted May 9, 2019 Author Share Posted May 9, 2019 Might want to add something along "TIPI compatible" in the subject heading. Almost did not realize this was a TIPI compatible program/etc. as I do not read all the topics for the TI-99/4A. By that logic I would have to add: Floppy, hard drive, ram disk, 32k, F18A, composite, FinalGrom, ubergrom, and TIPI compatible. Of course I haven't tested ubergrom or ramdisks or hard drives, but they should work. There is a checksum command you can run to see if the set of blocks for the file are the same before and after a copy. Known bug: protected files mess up the directory listing. -M@ Quote Link to comment Share on other sites More sharing options...
Omega-TI Posted May 10, 2019 Share Posted May 10, 2019 Ver 0.5 - May 6th 2019 - forcecmd0_5.zip OMG! It looks like I've spent too much time away from AA lately. Could this be the holy grail? I'm ashamed to admit that I just found out about this in a PM from Greg, but from what I've seen (so far), it looks FANTASTIC! I will say, at first glance it looks like I'll have some studying to do. This program is obviously worthy of a dedicated users thread to be sure. Maybe an entry level type document and more examples of user generated menus and stuff. ATTENTION M@: THANKS MAN! 2 Quote Link to comment Share on other sites More sharing options...
+jedimatt42 Posted May 11, 2019 Author Share Posted May 11, 2019 updates in post #1 Fixed some help text issues. Added '/ansi' option to 'type' command that opens in DISPLAY/FIXED, and terminates on CTRL-Z in file... so we don't have to see the SAUCE --- Bugs: Found some issues with the EA5 loader... TENNIS comes up with the racket garbled where in CALL TIPI, it comes up fine. So I'll need to go back and see what initialization I missed. --- If you have a FinalGROM, TIPI, and F18A, you can see for yourself: call PI.HTTPS://www.jedimatt42.com/4afiles/menu/GAMES005.TXT(no there isn't 1-4... this just saves money on invalidation requests to aws-cloudfront) (F18A needed cause this menu is for 80 column color, but techniques would work in 40 column mode) You can look at that text file in your browser too for an example of a menu program... This one has all the ansi art in the form of echo statements... This picture is a little old, but gives you the idea: -M@ 3 Quote Link to comment Share on other sites More sharing options...
Omega-TI Posted May 11, 2019 Share Posted May 11, 2019 Does anyone want to take the lead and make a users manual for this, or maybe a video as well? I'm probably going to end up making this program my main environment to work from within, but being and old dog, new tricks, and lack of time, means getting up and running will be a little slow. Quote Link to comment Share on other sites More sharing options...
+jedimatt42 Posted May 11, 2019 Author Share Posted May 11, 2019 Does anyone want to take the lead and make a users manual for this, or maybe a video as well? I'm probably going to end up making this program my main environment to work from within, but being and old dog, new tricks, and lack of time, means getting up and running will be a little slow. I've often thought it would be cool to do a retro style manual with the old 4A desktop publishing software... but really don't remember how to use any of that... -M@ 1 Quote Link to comment Share on other sites More sharing options...
+jedimatt42 Posted May 11, 2019 Author Share Posted May 11, 2019 I'll work on docs and examples here where they belong: https://github.com/jedimatt42/fcmd/wiki All the help text in post 1 is also available in program with the help command. -M@ 2 Quote Link to comment Share on other sites More sharing options...
Omega-TI Posted May 12, 2019 Share Posted May 12, 2019 I'll admit it, I was starting to lose interest, but M@, but M@.... https://www.youtube.com/watch?v=UPw-3e_pzqU Quote Link to comment Share on other sites More sharing options...
Omega-TI Posted May 12, 2019 Share Posted May 12, 2019 (edited) call PI.HTTPS://www.jedimatt42.com/4afiles/menu/GAMES005.TXT Curious, any plans for an extended CALL command? Something like... SEND MENU Where SEND would act like the call command, but send the contents of a DV/80 file, in this case the text quoted above in a file called MENU. This would enable users to create their own shortcuts while eliminating a lot of typing. ** EDIT ** I imagine something like this could also be used to access the weather, sort of like Greg's program, but return the data in full 80 columns. Edited May 12, 2019 by --- Ω --- Quote Link to comment Share on other sites More sharing options...
Omega-TI Posted May 12, 2019 Share Posted May 12, 2019 I tried the above, but it seems to lockup and return nothing... 1 Quote Link to comment Share on other sites More sharing options...
+jedimatt42 Posted May 12, 2019 Author Share Posted May 12, 2019 I tried the above, but it seems to lockup and return nothing... I must admit I made TIPI updates, and forgot they are required to get that web hosted menu to work. -M@ Quote Link to comment Share on other sites More sharing options...
+jedimatt42 Posted May 12, 2019 Author Share Posted May 12, 2019 Curious, any plans for an extended CALL command? Something like... SEND MENU Where SEND would act like the call command, but send the contents of a DV/80 file, in this case the text quoted above in a file called MENU. This would enable users to create their own shortcuts while eliminating a lot of typing. ** EDIT ** I imagine something like this could also be used to access the weather, sort of like Greg's program, but return the data in full 80 columns. I don't think I really understand... The term 'SEND' isn't making sense to me... where is it sending the contents of the D/V80 file? You can do this, if you just need a shortcut: GAMES=call PI.HTTPS://www.jedimatt42.com/4afiles/menu/GAMES005.TXT That can go in your TIPI.AUTOCMD file, then the variable can be referenced: $GAMES Variables are expanded in a pre-process pass on any command, so they don't have to just be used in IF statements. In fact, IF doesn't know about variables at all... variables are expanded before parsing as a command. I would eventually want to add the PATH variable concept to search for scripts or programs to run from. For now you can have a directory with shortcut scripts and just use call to invoke them. If you had shortcuts in directory TIPI.S. such as a file called TIPI.S.MENU that contains the big long CALL with the URL, then you can CALL TIPI.S.MENU Scripts can CALL other scripts. -M@ 1 Quote Link to comment Share on other sites More sharing options...
Omega-TI Posted May 12, 2019 Share Posted May 12, 2019 I must admit I made TIPI updates, and forgot they are required to get that web hosted menu to work. -M@ Yup! That worked! Thanks M@! As for your message #19, I'll respond to that after I get home from work home tonight, right now I'm outta time and have to split. Quote Link to comment Share on other sites More sharing options...
Omega-TI Posted May 12, 2019 Share Posted May 12, 2019 (edited) Is anyone else having issues trying to access physical disks? Never mind! RTFM Omega! This Force Command is slicker than snot on ice! The change directory command uses the CRUBASE as well, so I can actually have two DSK1.'s and can switch between them! Cool beans M@! CD 1000.DSK1. (for my TIPI DSK1.) CD 1100.DSK1. (for my P-Box DSK1.) As I ...slowly... learn more about this DOS, I'm convinced there will be a lot of us converting to and using this before too long. Edited May 13, 2019 by --- Ω --- Quote Link to comment Share on other sites More sharing options...
Omega-TI Posted May 13, 2019 Share Posted May 13, 2019 I don't think I really understand... The term 'SEND' isn't making sense to me... where is it sending the contents of the D/V80 file? I'll try to be a little bit more precise in what I was thinking... The idea would have been to 'send' the contents of an individual file to the Rpi via a modified "call pi.https://" to whatever was specified in the individual file without the need to modify the AUTOCMD file. Say for instance I wanted to load your game menu up, instead of typing the whole thing every time, I could save that information in a DV/80 file called "GAMES" then when I wanted to load it up, I'd just type 'SEND GAMES' from the DOS command. Over time I could add additional DV/80 files for additional sites or applications and effectively "grow my DOS" to suit my personal needs without having to mess with my AUTOCMD file and risk effing it up along the way. I hope that was little clearer. Quote Link to comment Share on other sites More sharing options...
+jedimatt42 Posted May 13, 2019 Author Share Posted May 13, 2019 I'll try to be a little bit more precise in what I was thinking... The idea would have been to 'send' the contents of an individual file to the Rpi via a modified "call pi.https://" to whatever was specified in the individual file without the need to modify the AUTOCMD file. Say for instance I wanted to load your game menu up, instead of typing the whole thing every time, I could save that information in a DV/80 file called "GAMES" then when I wanted to load it up, I'd just type 'SEND GAMES' from the DOS command. Over time I could add additional DV/80 files for additional sites or applications and effectively "grow my DOS" to suit my personal needs without having to mess with my AUTOCMD file and risk effing it up along the way. I hope that was little clearer. I think you can just use the CALL command to do what you want... create a D/V80 file named GAMES containing: call PI.HTTPS://www.jedimatt42.com/4afiles/menu/GAMES005.TXT and from the Force Command prompt type call GAMES -M@ Edit: I do plan to establish a PATH variable like in command.com for Force Command, and look for scripts after looking at built-ins in the command handler. 1 Quote Link to comment Share on other sites More sharing options...
Omega-TI Posted May 13, 2019 Share Posted May 13, 2019 I think you can just use the CALL command to do what you want... create a D/V80 file named GAMES containing: call PI.HTTPS://www.jedimatt42.com/4afiles/menu/GAMES005.TXT and from the Force Command prompt type call GAMES I'll be dammed! This is EXACTLY what I wanted! It works flawlessly! I'm a totally happy camper! 1 Quote Link to comment Share on other sites More sharing options...
Omega-TI Posted May 13, 2019 Share Posted May 13, 2019 When the need for feature creep sets in... "TIME" would be a nice addition to the command set. I'd like to eventually add the current TIME/DATE to my AUTOCMD bootup screen sometime in the future. 3 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.