Gidubba/readme.md

80 lines
3.1 KiB
Markdown
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Gidubba v1.1
============
Gidubba (Sumerian for 'stylus') v1.1 is a simple line editor for the
Thingamajig v2.x 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 an ASCII-compatible
terminal with local echo at address FFFF, and optionally a character
printer at address FFFE and a paper tape reader and punch or a cassette
deck 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) (CRLF).
Gidubba is able to read texts without an end-of-file or with different
newline formatting (CR, LF, or LFCR) and convert them to its native
format. The characters null (^@) and FF are reserved for indicating tape
leaders and trailers and an empty tape reader respectively and cannot
occur within a text. 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 cassette deck
* W: Write to the tape punch or cassette deck
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. At the end of the input buffer any input other
than those described in this paragraph is ignored and an underscore is
output to the terminal.
There are two kinds of error messages: a question mark (?) for an
erroneous command and an exclamation mark (!) for lack of RAM.
Changelog
---------
v1.1
* Upgraded for Thingamajig v2.x architecture
* Disallowed the use of characters null (^@) and FF in texts
* Added the ability to read and convert non-native newline formats
v1.0
* Initial release