Skip to content

rgiot/bndsh

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Benediction Shell

Purpose

Minimalist shell for Amstrad CPC with m4. People not interest by QuickCMD by No Recess may not be interest by bndsh... Bndsh consists in a simple line editor where you'll type various commands. The additional value in comparison to the BASIC prompt of the Amstrad is the ability to propose completions a better integration of RSX with string parameters and a native folder management.

The main difference between BNDSH and QUICKCMD is that QUICKCMD is an application, whereas BNDSH replace the system call TEXT_INPUT (&BD5E) by a modified one.

However, fell free to test and provide patches as there are tons of bugs.

Usage

The line edition is similar to the one provided by the BASIC and can be used in the following way: COMMAND [ARGUMENT...].

  • If command is an internal command the internal command is executed.
  • If command is an RSX, the RSX is executed with the following string arguments (currently only up to 2 arguments are possible).
  • If command is a folder then it becomes the working directory.
  • If command is a file then the firmware tries to load and launch it. If it succeed you have no more access to bndsh. (highly limited has bndsh is still not in ROM)
  • Otherwise the system displays an error message.

The current internal commands are:

  • basic to inform that the remaining part of the line concerns a BASIC instruction (only useful when a commad/executable/RSX has the same name than a BASIC instruction and would be automatically selected instead)
  • clear to clear the screen (as cls).
  • crtc to display crtc number.
  • exit to jump to BASIC interpreter
  • header to display the header of a file
  • help to display the list of internal commands
  • ls similar to cat (M4 required)
  • more print an ASCII file on screen
  • mv rename a file (some order of parameters than mv of unix, not |REN of AMSDOS)
  • pwd to print the current working directory (M4 required)
  • rom to manage the roms (currently nothing more that a listing)

The original shortcuts are:

  • left: move cursor to the left
  • right: move cursor to the right
  • CONTROL + left: move cursor to the beginnig of the line
  • CONTROL + right: move cursor to the end of the line
  • CONTROL + up: move cursor to the beginnig of the text
  • CONTROL + down: move cursor to the end of the text
  • SHIFT + left: move copy cursor to the left
  • SHIFT + right: move copy cursor to the right
  • SHIFT + up: move copy cursor to the up
  • SHIFT + down: move copy cursor to the dowa
  • CONTROL + TAB: switch between insert/replace modes
  • BREAK: breaks the input control flow
  • ENTER: validate and execute the instruction of the line by the BASIC interpreter

The additional shortcuts are:

  • TAB: control autocompletion on filenames, RSX, internal commands. Note that there are still bugs there
  • ENTER: before the BASIC interpreter manages the line, the shell execute its own instructions

The additional RSX commands are:

  • |DSKSEARCH,"KEY" or DSKSEARCH KEY makes a search on CPCRULEZ and print on screen pairs of code and filename (M4 ROM needed)
  • |DSKGET,"CODE" or DSKGET CODE download the 1st DSK file from the archive identified by the code (given by DSKSEARCH). A current limitation of the |HTTPGET RSX imposes to manually rename the downloaded file: MV BRIDGE.PHP MYDSK.DSK.

Additional features I plan to code

  • Better integration of RSX (currently only 2 string arguments are possible ...)
  • More internal commands if needed
  • Ability to bypass internal commands or rsx
  • Better RAM management (use the latest page of the latest bank available on the machine in order to work on CPC6128 without extra RAM)

Known bugs

  • Autocompletion is a bit capricious (files search fails elswhere than in the root folder, completion sometimes fail)
  • The ROM must be deactivate to launch some program (ESC at startup) with RUN"XXX; no idea why
  • The auto run features considers that the file is a binary one (so expect a nice reboot for basic ones)

Construction

$ ./bootstrap.sh make

Requirements

  • Mandatory

    • Ramcard or equivalent (Megaflash, X-Mem, M4, ...)
    • Additional Memory (X-Mem, ...)
  • Optional

    • M4 (the project has less interest without it)

Installation & launch

Use your rom manager to put BNDSH.ROM in the slot of your choice. Note that I have never tested in another place than 1. The indirection is automatically installed.

If you want to disable BNDSH, pres ESC while the firmware initialises the ROMs.

About

Benediction Shell for Amstrad CPC

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published