Quindle

From XionKB
Jump to navigationJump to search
Quindle
Created by Alexander Nicholi
Written in C, C*
OSes Sirius DOS
ISAs i286
Licence ASL 1.1
Repository aquefir/quindle

Quindle is a graphical editor program designed for Sirius DOS and future PC platforms such as Anodyne. It is principally designed and implemented by Alexander Nicholi.

User interface

Quindle's user interface is exclusively driven by the keyboard. Its usage of keys is designed conservatively around the design lingua franca descended from the seminal Model M keyboard created by IBM, making sparing use of modifier keys and instead centring the function keys F1F12 along with Esc, Pause, PrtSc, PgUp, PgDn, Home, End, Ins, Del, Bksp, Tab, and Enter keys for navigation and control.

The function keys F1F12, along with PrtSc, Pause and Esc are reserved for the global Quindle program and cannot be delegated to the windows for use. They perform the following actions:

Key Action
F1 Select window A
F2 Select window B
F3 Select window C
F4 Select window D
F5 Run macro command A
F6 Run macro command B
F7 Run macro command C
F8 Run macro command D
F9 Toggle mod function A
F10 Toggle mod function B
F11 Toggle mod function C
F12 Toggle mod function D
PrtSc Dump a bitmap screenshot of all windows to file
Pause Suspend all tasks and open the main menu
Esc Open the main menu without suspending all tasks

The following keys are contextualised by the active window: A-Z, 1-9, 0, -, =, [, ], \, ;, ', ,, ., /, `, BkSp, Enter, Tab, Left, Down, Right, Up, PgUp, PgDn, Home, End, Ins, Del.

Additionally, all of the above keys may have the Shift and Alt keys applied as modifiers. The application does not discriminate between left and right regarding such keys. Scroll lock also works as it does in Lotus and Excel in modifying the arrow keys for navigation.

Windows

Quindle is designed with four (4) conceptual windows, each of which serve a unique purpose; they are enumerated A, B, C and D.

Window A, also called the Subject, is the main editor window where text editing happens. It is defined to display 72 characters per line, with a flexible number of lines, along with an 8-character-wide minimap in the style of Atom and VS Code.

Window B, also called the Lenses, is the principal auxiliary window for use by the editor. It is an arbitrary high colour pel buffer, inside which anything may be displayed. In practise, Window B is manipulated by mod functions (more on that below). Some examples of things Window B is useful for displaying include:

  • Graphical output for a hybrid program
  • Statistical graphs about a project
  • Live macro-level memory usage maps
  • Previews of Simbel documentation
  • Arbitrary OLE-style objects, including those embedded in source code

Window C, also called the Console, is the text terminal used for issuing commands. It is monochromatic, and provides a more rigidly synchronised standard I/O system than found on most Unices. Like Window A, it is 80 characters in total width, and has an arbitrary length denominated in characters.

Window D, also called the Scopes, is a window for browsing external content, such as documentation (via Simbel) or web pages (via Senusret's). It is fully arbitrary in size.

Rendering modes

Quindle implements two rendering modes on Sirius DOS: single-wide and double-wide. Both run in 15-bit RGB555 "high colour".

Single-wide runs at 640×480, with character cells being 8 pels wide. The entire viewport is used to display the selected window, while the other unselected windows are hidden.

Double-wide runs at 1280×1024, with character cells being 8 pels wide. Window A is 640 pels wide and 1024 pels tall and occupies the left half of the viewport. Window B is 640 pels wide and 480 pels tall and occupies the top right corner of the viewport. Window C is 640 pels wide and 544 pels tall and occupies the bottom right corner of the viewport. Window D is 1280 pels wide and 1024 pels tall and is either shown in place of windows A, B and C, or displayed simultaneously on a second monitor (pending dual Alpine card support).

In the future, other rendering modes may be proposed, in particular for future software systems beyond Sirius DOS. Chief amog these is Anodyne's system software, A*.

Mod functions

Mod functions are Quindle's notion of plug-ins. They are implemented natively with a position-independent ABI, and are given access to most of Quindle's processes through hooks. These things may perform rendering, delegate commands to the console, modify the subject state, connect to external data sources (such as I/O ports for device driving), and probably more.

Mod functions should not be confused with macro commands, which are simply macros of console commands loaded into their respective function keys for easy execution. In fact, macro commands are to be implemented with what amounts to a built-in mod function.