Commands - jedimatt42/fcmd GitHub Wiki

Index of commands supported by Force Command

Commands
bar cd cfmount checksum cls
color copy date delete dir
drives echo ed env exit
fg99 goto help history if
labels load lvl2 mkdir path
palette protect pwd readkey rename
rdemdk rdpart rdvol rmdir sysinfo
tipibeeps tipihalt tipimap tipireboot type
unprotect ver width xb

System Bar

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.

Example

[1000.TIPI.]
$ bar on

Change Directory

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

Examples

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.]
$

Print Working Directory

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.

Mount Compact Flash Volumes

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

Examples

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

File Checksum

checksum <filepath>

Calculate 16 bit checksum of a file

Examples

[1800.TIPI.]
$ checksum TREASURE
checksum: FC4A

[1800.TIPI.]
$ copy TREASURE WDS1.

[1800.TIPI.]
$ cd WDS1.

[1000.WDS1.]
$ checksum TREASURE
checksum: FC4A

Clear Screen

cls

Clear the screen and relocate cursor to upper left

Examples

[1100.DSK1.]
$ cls

Set Color

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

Examples

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 Files

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.

Examples

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

date

Print current date and time

Example

[1100.DSK1.]
$ date
Wed,05/16/2021 1:35:23pm

See bar for details on clock source.

Delete File

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

Examples

[1100.DSK1.]
$ delete GONEFOREVS

List Directory

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

Examples

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

List Drives

drives

List device names grouped by CRU base address

Examples

[1000.TIPI.]
$ drives

1000 - TIPI DSK0 DSK1 DSK2 DSK3 DSK4 PI URI1 URI2 URI3
1100 - DSK1 DSK2 DSK3

Echo to Terminal

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

Examples

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)

Editor

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.

Examples

[1100.TIPI.]
$ ED AUTOCMD
[1100.TIPI.]
$ ED TIPI.BAS.TEST/XB

Environment Variables

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.

Examples

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 Force Command

exit

Quit Force Command. If you are running in the auto start mode, Force Command will restart

Examples

[1100.DSK1.]
$ exit

FinalGROM

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

Examples

Assuming on your FinalGROM99 sd-card, next to FCMDG.bin you have TIXB_G and related ROM files.

[1100.DSK1.]
$ fg99 TIXB_G

Goto

goto <label>

Jump to the line following a label

Examples

LONE:
echo At LONE
readkey K
if $K == 2 then goto LTWO
goto LONE
LTWO:
echo Made it to LTWO

Help

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.

Examples

[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

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.

Conditional

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 - '=='

Examples

BEGIN:
readkey K
if $(K) == 1 then goto LONE
if $(K) == 2 then load $(SOMEFILE)
if not $(K) == Q then goto BEGIN

Label

<label-name>:

A custom identifier followed by a colon defines a label that may be branched to using goto

Load EA5 Program

load <filepath>

Load and run an EA5 program image file or files

Examples

[1000.TIPI.GAMES.EA5.]
$ load PARSEC1
[1000.TIPI.]
$ load DSK1.INVADER
[1100.DSK1.]
$ load PI.HTTP://someserver.net/games/AMBULANCE

List IO Subroutines

lvl2 <crubase>

List level 2 I/O subprograms in DSR ROM at the specified CRU base address

Examples

[1100.DSK1.]
$ lvl2 1100
>10 >11 >12 >13 >14 >15

Make Directory

mkdir <pathname>

Create new directory with the given path name

Examples

[1000.TIPI.]
$ mkdir FUN

[1000.TIPI.]
$ cd FUN

[1000.TIPI.FUN.]
$

Palette

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.

Examples

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 File

protect <filepath>

Set protect flag for the specified file path

Examples

[1000.TIPI.]
$ protect GOLDCOPY

Read Keyboard

readkey <varname>

Set varname to value of key currently pressed

Examples

If the user presses 'L' with shift or the capslock on:

[1100.DSK1.]
$ readkey KEY

[1100.DSK1.]
$ env
KEY=L

Rename File

rename <old-name> <new-name>

Rename a file or directory at the current location

Examples

[1100.DSK1.]
$ rename LOAD DONTLOAD

RD Partition

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.

Examples

[1000.DSK1.]
$ rdpart 32 400 80

RD Emulate Drive

rdemdk <drive>

Set the DSK drive number to emulate.

<drive> - Setting to 0 disables emulation, values 1 - 5 enable.

Examples

[1000.DSK1.]
$ rdemdk 1

RD Volume

rdvol <volume-name>

Set the ramdisk volume name.

Examples

[1000.DSK1.]
$ rdvol ZIPPY

Remove Directory

rmdir <dirpath>

Remove a given directory path

Examples

[1000.TIPI.]
$ rmdir FUN

Play TIPI Beeps

tipibeeps

Play dih-dah-dih sound list that used to be played by TIPI powerup routine

Examples

[1100.DSK1.]
$ tipibeeps

Halt TIPI Raspberry PI

tipihalt

Shutdown Raspberry PI operating system

TIPI DSK Mapping

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

Examples

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

Reboot TIPI Raspberry PI

tipireboot

Reboot Raspberry PI operating system

Type File to Terminal

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)

Examples

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 File

unprotect <filepath>

Remove protect flag for the specified file path

Examples

[1100.DSK1.]
$ unprotect OLDGAME

Print Version

ver

Display Force Command version information

Examples

[1100.DSK1.]
$ ver
Force Command 0.6
2019-05-11
www.jedimatt42.com

Set Screen Width

width <40|80>

Change display to 40x24 or 80x30 mode. 80 column mode requires F18A video enhancement

Examples

[1100.DSK1.]
$ width 40
[1100.DSK1.]
$ width 80

Run XB program

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.

Examples

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

System Information

sysinfo

Display some details about current system such as display type, and memory type.

⚠️ **GitHub.com Fallback** ⚠️