A simple line editor
Go to file
CrazyEttin f644d3d1bc Fix the same speed issues as in the last commit with deleting lines 2022-08-28 20:32:59 +03:00
.gitignore Initial commit 2022-08-12 22:40:46 +03:00
gidubba.asm Fix the same speed issues as in the last commit with deleting lines 2022-08-28 20:32:59 +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 Update the code to make use of immediate loads, make sending the line feed character input a carriage return and line feed, and include format information in the readme 2022-08-28 15:49:51 +03:00

readme.md

Gidubba

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 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!

Format

Gidubba works with texts consisting of lines and terminated with an end-of-file (^Z). The lines consist of at most 256 characters terminated by a newline of a carriage return (^M) followed by a line feed (^J), included in the character count. Note that any characters following the last newline and preceding the end-of-file are ignored.

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 or copy them 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. 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

Commands with two arguments:

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

Commands with no arguments:

  • M: Set a mark
  • 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 that 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.