Commands - jedimatt42/fcmd GitHub Wiki
bar on|off
Turn system bar display on or off. Bar is shown at the top row of the screen and displays current time if a clock is available.
The source of clock information is controlled by the system environment variable CLOCK
.
See CLOCK for details.
[1000.TIPI.]
$ bar on
cd <path>|..
path
- A device or directory path. The path may be a subdirectory of the current location, or a fully qualified path starting with a device name or crubase and device name:
..
- go to parent directory
Change from TIPI.GAMES back to TIPI.
[1000.TIPI.GAMES]
$ cd ..
[1000.TIPI.]
$
or
[1000.TIPI.GAMES]
$ cd TIPI.
[1000.TIPI.]
$
Sometimes you have more than one device with the same name in your system. For instance, you might have DSK1. mapped on the TIPI to a folder, and a floppy in your TI Floppy Disk Memory system. To set the current working directory to your floppy use a crubase to qualify the path.
[1000.DSK1.]
$ cd 1100.DSK1.
[1100.DSK1.]
$
If a path is not crubase qualified then the device with the lowest crubase is selected.
[1100.DSK1.]
$ cd DSK1.
[1000.DSK1.]
$
pwd
Print the current working directory, which by default shows up in the command line prompt, but that may be overridden.
Example:
> PWD
1100.TIPI.GAMES.
cfmount
cfmount /v [begin end]
cfmount [/p] <drive> <volume>
With no arguments, list current mapping info:
/v
- optional, list all volumes with an option range of volumes specified.
/p
- optional, persist drive mapping
drive
- (1,2,3) DSK device unit number for volume mapping
volume
- compact flash volume number to map
List current mounts:
[1100.DSK1.]
$ CFMOUNT
DSK1 -> 1: VOL1
DSK2 -> 312: BACKUP
DSK3 -> 3: STUFF
List range of volume names:
[1100.DSK1.]
$ CFMOUNT /V 20 30
20: PROJ1
21: PROJ2
25: DATA1
...
Mount volume 23 to DSK2, temporarily, such that it doesn't survive poweroff
[1100.DSK1.]
$ CFMOUNT 2 23
Mount volume 23 to DSK2, persistently
[1100.DSK1.]
$ CFMOUNT /P 2 23
checksum <filepath>
Calculate 16 bit checksum of a file
[1800.TIPI.]
$ checksum TREASURE
checksum: FC4A
[1800.TIPI.]
$ copy TREASURE WDS1.
[1800.TIPI.]
$ cd WDS1.
[1000.WDS1.]
$ checksum TREASURE
checksum: FC4A
cls
Clear the screen and relocate cursor to upper left
[1100.DSK1.]
$ cls
color <F> [B]
Set text and background color (0-15)
F
- foreground text color
B
- optional, background color
In 80 column mode, this sets colors for subsequent text, and current border.
In 40 column mode, it sets the full screen colors.
colors follow TI BASIC numbering
In 80 column mode to clear the screen and set the text color, it is best to set color first, then clear the screen so that all the whitespace takes on the new color attributes.
[1100.DSK1.]
$ color 1 7
[1100.DSK1.]
$ cls
You can use color in scripts to highlight parts of your output.
color 15 1
cls
color 1 15
echo /n [Warning]
color 15 1
echo Something to look at
copy <fileset> <path>
Copy a file set to a directory or device fileset - path and file pattern for source files to copy. Wildcard * may be at beginning or end of name but not both
wildcard examples: DSK1.*BAS, DSK1.MUNCHM*, TELN*, *S, *
path
- destination device and directory with option new filename. If wildcards are used the target must be a device or directory.
To copy a file QUEST from DSK1. to a TOD folder on TIPI
[1000.TIPI.]
$ cd 1100.DSK1.
[1100.DSK1.]
$ copy QUEST TIPI.TOD.
or copy all files from a disk to the GAMES folder on a scsi drive
[1000.IDE1.]
$ copy 1100.DSK1.* SCS1.GAMES.
copy a file to a new file with a different name on the same disk
[1100.DSK1.]
$ copy FILE FILE_BAK
date
Print current date and time
[1100.DSK1.]
$ date
Wed,05/16/2021 1:35:23pm
See bar for details on clock source.
delete [/y] <fileset>
Delete specified fileset. Fileset may be wildcarded as described for the path
parameter of the dir
command.
/y
- optional. yes to delete all that match fileset.
fileset
- file specification for files to delete. Wildcard * may be at beginning or end of name but not both
[1100.DSK1.]
$ delete GONEFOREVS
dir [/w] [path]
List current directory or directory for path
/w
- optional. Output a simplified listing in multiple columns
path
- full or relative path to directory or file pattern. Wildcard * may be at beginning or end of name but not both
examples: DSK1.*BAS, DSK1.MUNCHM*, TELN*, *S
To list the current directory
[1100.DSK1.]
$ dir
To list DSK1 on an alternate device
[1100.DSK1.]
$ dir 1000.DSK1.
List only files ending in /BAS
[TIPI.BAS.]
$ dir */BAS
drives
List device names grouped by CRU base address
[1000.TIPI.]
$ drives
1000 - TIPI DSK0 DSK1 DSK2 DSK3 DSK4 PI URI1 URI2 URI3
1100 - DSK1 DSK2 DSK3
echo [/n] [text]
Print text to ANSI terminal screen
/n
: optional, do not print newline after text
substitutions: \e
will output an ESCAPE, ascii 27 character
Simply text
[1100.DSK1.]
$ echo Hello There!
Hello There!
Move to the top row on the screen (1) and column 22. Then display a greeting
echo /n \e[1;22H
echo Greetings!
Display the value of a variable
echo $(VARNAME)
ed [filepath]
Built in editor for DISPLAY VARIABLE 80 files.
filepath - path and name of file to open.
Once in the editor, press F7(AID) to view availble command keys. When writing the file, it will prompt you to confirm the output destination. You may write to a different file than you opened.
[1100.TIPI.]
$ ED AUTOCMD
[1100.TIPI.]
$ ED TIPI.BAS.TEST/XB
env
List all variables and their values
Variables are set by assigning a name of up to 10 characters a value, or by specific commands.
example: NAME1=FLINSTONE
Variable names are case insensitive.
Variables may be used in any command by the '$' + <name>
format.
You may disambiguate with the '$' '(' <name ')'
syntax.
Set a variable and then see it in the list of variables, with possibly some other variables already defined.
[1100.DSK1.]
$ TESTVAR=Hello World
[1100.DSK1.]
$ env
GAMES=TIPI.GAMES.EA5
TESTVAR=Hello World
K=1
Referencing variables in other commands
load $(GAMES).PARSEC1
exit
Quit Force Command. If you are running in the auto start mode, Force Command will restart
[1100.DSK1.]
$ exit
fg99 <cart>
Load cartridge from FinalGROM99 sd card
cart - maximum 8 character name without the '.bin'
Cart must be in the same directory on the sd card as Force Command
Assuming on your FinalGROM99 sd-card, next to FCMDG.bin you have TIXB_G and related ROM files.
[1100.DSK1.]
$ fg99 TIXB_G
goto <label>
Jump to the line following a label
LONE:
echo At LONE
readkey K
if $K == 2 then goto LTWO
goto LONE
LTWO:
echo Made it to LTWO
help <command>
Show help for individual command. Command names and options are case insensitive. Device, file and directory name or path parameters are case sensitive.
[1100.DSK1.]
$ help
Available commands:
call cd checksum cls color copy delete drives...
[1100.DSK1.]
$ help cls
cls - clear the screen and relocate cursor to upper left
history
List previous commands to terminal. Commands will be numbered most recent first. You may also scroll through history at the command prompt by just pressing the up and down arrows. The FCTN-8(REDO) key performs the same as up arrow. When there are no more entries in either direction, you'll receive an empty buffer.
You may also recall an item into the edit buffer using the number of the item, prefixed with an exclamation mark. !7
recalls the 7th previous command.
History is limited to a single item for systems without a SAMS memory board.
if <expr> then <command>
Expression following if
is evaluated to true or false. If the expression evaluates to true, the rest of the command is executed.
expressions syntax:
[not] <lvalue> ' ' <operator> ' ' <rvalue>
lvalue
- quoted string which may contain variable references
rvalue
- quoted string which may contain variable references
operator
- '=='
BEGIN:
readkey K
if $(K) == 1 then goto LONE
if $(K) == 2 then load $(SOMEFILE)
if not $(K) == Q then goto BEGIN
<label-name>:
A custom identifier followed by a colon defines a label that may be branched to using goto
load <filepath>
Load and run an EA5 program image file or files
[1000.TIPI.GAMES.EA5.]
$ load PARSEC1
[1000.TIPI.]
$ load DSK1.INVADER
[1100.DSK1.]
$ load PI.HTTP://someserver.net/games/AMBULANCE
lvl2 <crubase>
List level 2 I/O subprograms in DSR ROM at the specified CRU base address
[1100.DSK1.]
$ lvl2 1100
>10 >11 >12 >13 >14 >15
mkdir <pathname>
Create new directory with the given path name
[1000.TIPI.]
$ mkdir FUN
[1000.TIPI.]
$ cd FUN
[1000.TIPI.FUN.]
$
palette <rgb-1> <rgb-2> ... <rgb-16>
palette [/r]
Set the first 16 colors in the F18A palette registers. Values are 12 bit upper case hex values. Leading zeros are not necessary.
/r
- reset the palette to the TMS9918A standard 16 colors.
Create a grayscale palette (roughly respecting the pre-existing palette sense of brightness):
[1000.TIPI.]
$ palette 000 000 444 999 111 666 333 EEE 555 AAA 777 DDD 222 BBB CCC FFF
Reset the palette to standard 9918A values:
[1000.TIPI.]
$ palette /r
Notes from PixelPedant:
The default 9918 palette values can be set as follows (or by using PALETTE /R but these are the values which would serve as the basis for small-scale changes).
PALETTE 000 000 2C3 5D6 54F 76F D54 4EF F54 F76 DC3 ED6 2B2 C5C CCC FFF
Where each value consists of three nibbles signifying (very straightforwardly) 12-bit RGB colour in the RGB order with a value from 0 to F.
Such that the values actually specified there are the 9918 palette of
TI # | Name | Value |
---|---|---|
0 | Trans | 000 |
1 | Black | 000 |
2 | MGreen | 2C3 |
3 | LGreen | 5D6 |
4 | DBlue | 54F |
5 | LBlue | 76F |
6 | DRed | D54 |
7 | Cyan | 4EF |
8 | MRed | F54 |
9 | LRed | F76 |
10 | DYello | DC3 |
11 | LYello | ED6 |
12 | DGreen | 2B2 |
13 | Magent | C5C |
14 | Gray | CCC |
15 | White | FFF |
And such that the sort of minor modifications to the palette which are generally most useful (like changing Cyan to something else, or swapping Black with White and Grey, or what have you) can be achieved by modifying or swapping the relevant values in that default set.
protect <filepath>
Set protect flag for the specified file path
[1000.TIPI.]
$ protect GOLDCOPY
readkey <varname>
Set varname to value of key currently pressed
If the user presses 'L' with shift or the capslock on:
[1100.DSK1.]
$ readkey KEY
[1100.DSK1.]
$ env
KEY=L
rename <old-name> <new-name>
Rename a file or directory at the current location
[1100.DSK1.]
$ rename LOAD DONTLOAD
rdpart <ram> <drive> <spool>
Partition a Myarc EXP-1 ramdisk. If the device is a 128k card, then the sum of and must be 128. If the device is a 512k card, then the sum of all three must be 512.
ram - may only be 32 or 128 to set the number in kilobytes to allocate to expansion ram.
drive - the size in kilobytes of the ramdisk allocation.
spool - the size in kilobytes of the print spool allocation.
If the partition allocations are changed then the ramdisk data is erased.
[1000.DSK1.]
$ rdpart 32 400 80
rdemdk <drive>
Set the DSK drive number to emulate.
<drive>
- Setting to 0 disables emulation, values 1 - 5 enable.
[1000.DSK1.]
$ rdemdk 1
rdvol <volume-name>
Set the ramdisk volume name.
[1000.DSK1.]
$ rdvol ZIPPY
rmdir <dirpath>
Remove a given directory path
[1000.TIPI.]
$ rmdir FUN
tipibeeps
Play dih-dah-dih sound list that used to be played by TIPI powerup routine
[1100.DSK1.]
$ tipibeeps
tipihalt
Shutdown Raspberry PI operating system
tipimap auto [on|off]
tipimap [/c] <drive> [path]
Set or get a tipi drive mapping. If no drive is specified, all configuration items are listed
/c
- optional. unmap drive
drive
- the name of the drive
path
- the directory to set
auto
- set to on
or off
to map DSK1 when PROGRAM image is loaded
To display all your mappings
[1000.TIPI.]
$ tipimap
DSK1 => TIPI.FUN.
DSK3 => TIPI.BACKUPS.
URI1 => PI.HTTPS://somwhere.great.com/
To clear the URI1 mapping
[1000.TIPI.]
$ tipimap /c URI1.
To set a URI mapping
[1000.TIPI.]
$ tipimap URI1 HTTPS://somewhere.great.com/
To turn on auto mapping when a PROGRAM image is loaded from a directory
[1000.TIPI.]
$ tipimap auto on
In an ARTIST script to make launching TI Artist easier
tipimap DSK1 TIPI.DISKS.INCSEBOT.
tipimap DSK2 TIPI.IMAGES.
fg99 TIXB_G
tipireboot
Reboot Raspberry PI operating system
type [/ansi] <filepath>
Copy the contents of the file to the screen
/ansi
- optional. Open in DISPLAY/FIXED mode instead of DISPLAY/VARIABLE and terminate output on CTRL-Z character (26)
Display a foreign ANSI file hosted on a web server
[1000.TIPI.]
$ type /ansi PI.HTTPS://someart.com/ANSI.txt
Display a README file from a floppy
[1100.DSK1.]
$ type README
unprotect <filepath>
Remove protect flag for the specified file path
[1100.DSK1.]
$ unprotect OLDGAME
ver
Display Force Command version information
[1100.DSK1.]
$ ver
Force Command 0.6
2019-05-11
www.jedimatt42.com
width <40|80>
Change display to 40x24 or 80x30 mode. 80 column mode requires F18A video enhancement
[1100.DSK1.]
$ width 40
[1100.DSK1.]
$ width 80
xb <program-path>
Switch a FinalGROM99 to an Extended BASIC cartridge, configured to RUN the specified program. Default cartridge name is TIXB_G with start address 25474. Use variable XBMOD
to override cartridge name, and XBADDR
to override start address.
XB Version | Program Name | XBADDR |
---|---|---|
TI XB 100 | TI EXT BASIC V100 | 25458 |
TI XB 101 | TI EXTENDED BASIC | 25474 |
TI XB 110 | TI EXTENDED BASIC | 25458 |
J&KH SXB 120 | SUPER X-BASIC | 25458 |
XB GEM | XB256 | 27125 |
XB GEM | EXTENDED BASIC+ | 27107 |
XB GEM | TML 2 COLORS | -17000 |
XB GEM | TML 16 COLORS | -16989 |
XB GEM | T40XB | -12381 |
XB GEM 2.8 | XB 2.8 | 31435 |
XB GEM 2.8 | XB 2.8 + XXB | 32336 |
XB GEM 2.8 | XB256 | 32296 |
XB GEM 2.8 | T40XB | 32314 |
XB GEM 2.8 | T80XB | 32325 |
XB GEM 2.8 | THE MISSING LINK | 32212 |
RXB 2015E | RXB 2015 MENU | 32460 |
RXB 2015E | RXB 2015 NO MENU | 32419 |
Mechatronics XB II Plus | MECHATRONIC EXT BASIC | -14778 |
The numbers above are from the addresses found from the GROM program list of each cartridge.
Note: XB GEM 2.8 optional varients may not work.
To get the version TI Extended BASIC:
CALL VERSION(A)
PRINT A
This requires support files in the TIPI.FC.
directory. The Force Command distribution zip
contains a LOAD file that the XB cartridge will use to auto load the basic program. This
must be in the TIPI.FC.
directory. If the TIPI.FC.
directory is not present the
XB
command will report failed to configure XB
.
Run TI Artist Plus from a directory INSCEBOT directory on TIPI
[TIPI.]
$ cd INSCEBOT
[TIPI.INSCEBOT.]
$ xb LOAD
Run a T40XB program you are developing:
[TIPI.MYPROJ.]
$ XBMOD=XBGEM_G
$ XBADDR=-12381
$ XB CALMING
sysinfo
Display some details about current system such as display type, and memory type.