A simple line editor
Go to file
CrazyEttin 339f117e58 Version 1.0: add checking for sufficient RAM and fix a bug where copying to the same address as the mark would not work 2022-09-09 18:27:36 +03:00
.gitignore Initial commit 2022-08-12 22:40:46 +03:00
gidubba.asm Version 1.0: add checking for sufficient RAM and fix a bug where copying to the same address as the mark would not work 2022-09-09 18:27:36 +03:00
license.md Reword the readme slightly in Gidubba and convert the readme, license, and source code t a Gidubba-friendly format 2022-08-19 01:25:22 +03:00
readme.md Version 1.0: add checking for sufficient RAM and fix a bug where copying to the same address as the mark would not work 2022-09-09 18:27:36 +03:00

readme.md

Gidubba v1.0

Gidubba (Sumerian for 'stylus') is a simple line editor for the Thingamajig computer architecture. Its git repository can be found at https://ahti.space/git/crazyettin/Gidubba and that of Thingamajig at https://ahti.space/git/crazyettin/Thingamajig.

System requirements

Gidubba requires at least 4 KiB of RAM. It uses a terminal with local echo at address FFFF, and optionally a character printer at address FFFE and a punched tape reader and punch or a casette drive at FFFD. Do not be afraid to modify the code yourself if your setup requires it! (And if you do, apologies for the spaghetti.)

Format

Texts are terminated by an end-of-file (^Z) and lines within them by a newline of a carriage return (^M) followed by a line feed (^J). Note that the input buffer can store at most 256 characters, including the newline.

Usage

The commands are individual letters that can be followed by one or two arguments separated by a comma, all case-insensitive. The first argument is a line number between 0 and FFFF and the second a range of lines between 0 and FF. To append lines, insert them or set the mark to any line number after the text or to the shortcut hash (#); in other commands line numbers or parts of a range after the text are ignored and a hash is not recognised as a valid argument. Instead of a predetermined range a prompt to insert the next line appears automatically after the previous one has been committed.

Commands with a single argument:

  • I: Insert lines
  • M: Set the mark

Commands with two arguments:

  • C: Copy to the mark
  • D: Delete lines
  • L: List lines

Commands with no arguments:

  • P: Print
  • R: Read from the tape reader or casette drive
  • W: Write to the tape punch or casette drive

A delete (^?) discards the preceding character and outputs an underscore to the terminal. An escape (^[) discards the contents of the current command or line and outputs a backslash and a newline to the terminal. A carriage return (^M) or a line feed (^J) inputs a newline and commits the current command or line. An end-of-file (^Z) discards the current command and halts the computer or discards the current line and returns to the command prompt.

There are two kinds of error messages: a question mark (?) for an erroneous command and an exclamation mark (!) for lack of RAM.