jedimatt42 / fcmd

command line shell program in cartridge rom form
MIT License
12 stars 0 forks source link

Force Command usage

Produces a FCMDG.bin and FCMDC.bin to be loaded by FinalGROM99.

The menu entry for the GROM is 'AUTOCMD' - choose this to load the auto-running cartridge image, or select 'FORCE CMD' if you don't want the auto-running feature.

The autorunning feature of 'AUTOCMD' skips the TI-99/4A title screen and begins Force Command immediately.

The tool provides a command line style console interface to the TI-99/4A, borrowing concepts from MS-DOS 2.11/3.3 era... It will also be influenced by MSX dos, as I am a fan, and whatever seems easiest to implement...

Supports:

End Users Wiki

The following wiki contains documentation for how to use, and where to find the pre-built binaries:

Force Command Github Wiki

I also post the binaries on Atariage:

Atariage Thread

Help

There is a built in help command, it will list the commands/topics, then help <topic> for further help. These are also all documented on the Force Command Github Wiki

Building

Prerequisites:

make clean
make

This will compile all the binaries.

Visual Studio Code

The clangd extension works well, but you need to use bear to generate info on how it compiles, what include dirs are used, etc.

To produce the compile_commands.json:

make clean
bear -- make

Installation on real hardware

The FCMDG.bin and FCMDC.bin go on a FinalGROM99 - or if you know what you are doing, an UberGROM The FC directory goes on your TIPI as TIPI.FC. It contains LOAD and FCMD

Emulators

Add a uniquely numbered [UserCart nnn ] section.

[UserCart0]
name=Force Command
rom0=8|00000|20000|<path-to-your-files>/FCMDC.bin
rom1=G|6000|2000|<path-to-your-files>/FCMDG.bin

FCMD.RPK : contains both the ROM and auto start GROM of Force Command.

deploy.sh script

There is a script named deploy.sh that I use to copy the build artifacts to my TIPI, and classic99 emulation environment, etc... If some variables are not set, that destination will be skipped. To use, I wrap in a custom script that sets control variables:

#!/bin/bash

make clean
make -j 12

# Not actually necessary, used to update example/gcc/say/sample.spc from sample.wav
export PYWIZ_DIR=$HOME/github/python_wizard
make -C example/gcc/say sample.spc

export TIPI_HOST_NAME=tipi.local
export CLASSIC99_DSK1_DIR=~/Documents/data/retro/TI99/classic99/DSK1/
export CART_DEPLOY_DIR=~/Documents/data/retro/TI99/
./deploy.sh