The Dauug House Wright State University logo
Dauug|36 minicomputer documentation

Markup language

The markup language for this CMS doesn’t have a name, so it’s referred to as “markup” in this documentation. It’s inspired by lightweight markup languages such as Markdown, but it’s specifically written for the Dauucumentation.

General rules of the road

Edit in plain text.

Don’t indent it.

HTML treats consecutive spaces as a single space. So just use single spaces.

Separate paragraphs with a blank line.

Don’t include images. They aren’t implemented.

Peculiar characters

The CMS will convert your "straight quotes" to “curly quotes.”

Same idea with apostrophes; i.e., can't becomes can’t.

Use a tilde (~) to obtain a Unicode minus sign: ~54321 becomes −54321.

Use two hyphens to obtain an en dash: --aside-- becomes –aside–.

Use three hyphens to obtain an em dash: ---aside--- becomes —aside—.

A single-hyphen just stays a single-hyphen.

Font styles

A pair of one *asterisk* will italicize.

A pair of two **asterisks** will boldface.

A pair of three ***asterisks*** will bold italic.

A pair of four ****asterisks**** will superscript.

An unbalanced **asterisk series will produce an error message and stop the CMS.

I recognize that four asterisks is horrible notation for superscript; however, I don’t need it frequently, and this scheme does not require introducing any new special characters. I asked the CSS for superscript to not adjust line spacing.

Headings

A two-line paragraph, where the second line is straight hyphens, will produce a top-level <h1> heading. The markup looks like this:

Text at the top
---------------

You get an <h2> heading by having every 2nd character be a hyphen. Like this:

Second-level heading
- - - - - - - - - -

Third-level heading working example

You get an <h3> heading by having every 3rd character be a hyphen. Like this:

Third-level heading working example
-  -  -  -  -  -  -  -  -  -  -  -

There may or may not be support for further heading levels. Note that heading levels, which affect only the right (article) column, have nothing to do with menu levels, which only appear in the left (menu) column.

Links

Square brackets will produce hyperlinks. Not much customization is supported, but link and title (mouseover) text can be set off with vertical bars as follows:

[https://example.com] yields https://example.com

[https://example.com|this site] yields this site

[https://example.com|question|Have you read RFC 6761?] yields question

Reserved symbols

To achieve the above markup, the following symbols were given special meaning:

-   hyphen, en dash, em dash
~   minus sign
"   left and right double quotation mark
'   right single quotation mark
*   italic, bold, bold italic, superscript
`   monospace
[   hyperlink start
]   hyperlink end

So how do we get these characters to appear in text without their special meanings? What we don’t do is escape them in the manner of many common languages (e.g., \" in C). The reason for this is that escaping makes the unprocessed markup hard to read. Instead, we choose an unused character to temporarily assume the special meaning that’s in the way. Consider the following short paragraph:

To get italicized text, use asterisks like this: *This is italicized.*

The actual markup to produce the above is:

To get italicized text, use asterisks like this: `*This is italicized.*`
*$

There are two lines of markup here. On the first line, we see ` used for its normal function of monospacing. But the * symbol isn’t italicizing, but is simply being printed verbatim. The second line of markup is controlling that: it contains a digraph consisting of one reserved symbol, *, and one unreserved symbol that isn’t used in the paragraph, $. This digraph tells the CMS to reassign any special meaning for * to $ instead, making * free for use as an ordinary character.

These digraph substitutions work for ordinary paragraphs as well as headings. They apply only to the paragraph or heading they are attached to. For the digraphs to be picked up, they appear by themselves on the last line of the heading or paragraph. Multiple substitutions are permitted and will need to be separated by spaces. A digraph pair is only recognized if one symbol ordinarily has a special meaning, and the other symbol does not.

Choosing a replacement symbol

The replacement symbol can't be -, ~, ", ', *, `, [, or ] due to their special meanings. It can't be whitespace either. And most subtly, it can't be <, &, or >, because the quoting XHTML requires for these characters confuses the CMS, and straightening that out is not a priority for now. Unicode's middle dot ยท (0xB7) also has special meaning. It's only used for tables, but it can't replace another character with special meaning anywhere for the time being. But you can use any digits, letters, much punctuation, and non-ASCII UTF-8 symbols. If this sounds too complex, just try to use $ or @ if you can.

More complex digraph substitution examples

Here are how I marked up a couple of paragraphs in this section:

There are two lines of markup here. On the first line, we see !`! used
for its normal function of monospacing. But the !*! symbol isn't
italicizing, but is simply being printed verbatim. The second line of
markup is controlling that: it contains a _digraph_ consisting of one
reserved symbol, !*!, and one unreserved symbol that isn't used in the
paragraph, !$!. This digraph tells the CMS to reassign any special
meaning for !*! to !$! instead, making !*! free for use as an ordinary
character.
`! *_
The replacement symbol can't be :-:, :~:, :":, :':, :*:, :`:, :[:, or
:]: due to their special meanings. It can't be whitespace either. And
most subtly, it can't be :<:, :&:, or :>:, because the quoting XHTML
requires for these characters confuses the CMS, and straightening that
out is not a priority for now. But you can use any digits, letters,
much punctuation, and non-ASCII UTF-8 symbols.
-\ ~\ "\ '\ *\ `: [\ ]\

Preformatted text

Obviously some mechanism is needed (and present) for presenting text that (i) is not flowed into paragraphs, (ii) is monospace throughout with tabs lining up, and (iii) leaves all characters as they originally appear. This is done by indenting the markup three or more spaces, and replacing the first space with the letter p for preformatted. For example, to produce this table:

x   sqrt x
----------
0    0.000
1    1.000
2    1.414
3    1.732
4    2.000
5    2.236

The markup that produces the table is:

p   x   sqrt x
    ----------
    0    0.000
    1    1.000
    2    1.414
    3    1.732
    4    2.000
    5    2.236

Here is an example with blank lines:

avocado
bignay
cocoplum

agung
bak
carillon

anthology
biography
collection

Here is the markup for that—only the first line should be tagged with p:

p   avocado
    bignay
    cocoplum

    agung
    bak
    carillon

    anthology
    biography
    collection

What stops preformatted text from being interpreted as ordinary text?

Two “rules of the road” appeared at the top of this page: don’t indent, and use single spaces. Preformatted text is indented, and the p tag is followed by at least two spaces.

Alternative spacing for preformatted text

Tagging preformatted text with a capital P instead of p will reduce the vertical separation between the block and the surrounding paragraphs. It will also indent the preformatted text a little. It’s intended for one-liners within ongoing ideas, such as:

Without secure hardware, there is no secure software.

The markup for the above looks like:

P   Without secure hardware, there is no secure software.

Assembler source code

Dauug|36 assembler code should be tagged with an a for assembler instead of p. This will turn on syntax highlighting (once available). For example, to produce:

    unsigned count
    count = 0

loop:
    cmp count - 10
    jump <= done
    ; do something with count here
    jump loop

done:
    ; move on

Use markup like:

a       unsigned count
        count = 0

    loop:
        cmp count - 10
        jump <= done
        ; do something with count here
        jump loop

    done:
        ; move on

Alternative spacing for assembler source code

Tagging assembly language with a capital A instead of a will reduce the vertical separation between the block and the surrounding paragraphs. It will also indent the code a little. It’s intended for one-liners within ongoing ideas, such as:

m = b mhl5 a

The markup for the above looks like:

A   m = b mhl5 a

Bullets and numbering

Limited support for unordered and ordered lists is available using markup similar to preformatted text. List support is intended for one-liners, not for paragraphs or anything fancy. For numbers:

#   one
    two
    three

produces:

  1. one
  2. two
  3. three

For bullets:

*   alpha
    beta
    gamma

produces:

Nested lists are not supported. Formatting in lists is supported, and digraph substitution is possible on an entire-list basis.


Marc W. Abel
Computer Science and Engineering
College of Engineering and Computer Science
marc.abel@wright.edu
Without secure hardware, there is no secure software.
937-775-3016