⍝ Baby: The Manchester Small Scale Experimental Machine:
⍝
⍝ Test script:

    asm←{⎕IO←0                                  ⍝ Assembler for Baby.
        ⍺←32 32 ⋄ lines bits←⍺                  ⍝ memory size.
        ops←↓8 3⍴'jmpjrpldnstosub   cmphlt'     ⍝ opcode mnemonics.
        wds←{⍵~⊂''}∘{⍵~¨' '}∘{(1,1↓⍵=' ')⊂⍵}    ⍝ blank-separated words.
        raw←{(∧\⍵≠'⍝')/⍵}                       ⍝ without comments.
        bin←{⌽(⍺/2)⊤⍵}                          ⍝ ssem-binary from decimal.
        ↑{                                      ⍝ bool store matrix.
            ↑(⍺⍳,¨⍳lines)⊃¨⊂lines↑⍵             ⍝ lines in line-number order.
        }/↓⍉↑{                                  ⍝ line_numbers, lines.
            0::11 ⎕SIGNAL⍨'bad line: ',⍵        ⍝ something wrong with line.
            nn instr←{(⊃⍵)(1↓⍵)}wds raw ⍵       ⍝ line number and content.
            line←(⍎nn,',⍬')∘{⍺ ⍵}               ⍝ line_number, bool_vector pair.
            0=⍴instr:line bits bin 0            ⍝ null instruction: 0 line.
            ~(1↑instr)∊ops:line bits bin⍎⍕instr ⍝ 1st wd not opcode: raw value.
            oper rand←2↑instr,⊂'0'              ⍝ opcode and operand address.
            addr←5 bin⍎rand                     ⍝ operand address.
            unit←8 bin 0                        ⍝ (storage unit number).
            opco←3 bin ops⍳⊂oper                ⍝ operator code.
            line bits↑addr,unit,opco            ⍝ line number and bool vector.
        }¨↓⎕FMT↑⍵                               ⍝ char vecs from any format.
    }

    dis←{⎕IO←0                                  ⍝ Disassembler for Baby.
        lines bits←⍴⍵                           ⍝ no of lines and word size.
        max←2*bits                              ⍝ miximum unsigned value.
        ops←↓8 3⍴'jmpjrpldnstosubsubcmphlt'     ⍝ opcode mnemonics.
        arity←⍎'  1  1  1  1  1  1  0  0  '     ⍝ instruction arity.
        decode←(0 5 13 16∊⍨⍳bits)∘⊂             ⍝ instruction decode.
        lfmt←{¯2↑'0',⍕⍵}                        ⍝ line number format.
        dec←(-max÷2){⍺⍺+⍵⍵|⍵-⍺⍺}max∘{2⊥⌽⍵}      ⍝ signed decimal from ⌽binary.
        {                                       ⍝ assembled lines:
            nn num instr←⍵                      ⍝ line, decimal value, instr.
            (↑nn),' ',(⍕⍪num),↑instr            ⍝ assembled to char matrix.
        }↓⍉↑(lfmt¨⍳lines){                      ⍝ label for each line.
            addr _ opco _←dec¨decode ⍵          ⍝ instruction decode.
            oper←opco⊃ops                       ⍝ instruction mnemonic.
            rand←(opco⊃arity)/' ',lfmt addr     ⍝ operand address.
            ⍺(dec ⍵)('  ⍝ ',oper,rand)          ⍝ instruction ⍝ number.
        }¨↓⍵                                    ⍝ ... for each line.
    }

    crt←{disp⊂↑,/2↑¨'·⍟'[⎕io+⍵]}                ⍝ CRT display.

    ∆←{{1:}⍙,←⊂⍵}       ⍝ accumulate into
    ⍙←⍬                 ⍝ source buffer.

⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝

    ∆' 01 ldn 24  '     ⍝ first program  1948-06-21
    ∆' 02 sto 26  '
    ∆' 03 ldn 26  '
    ∆' 04 sto 27  '
    ∆' 05 ldn 23  '
    ∆' 06 sub 27  '
    ∆' 07 cmp     '
    ∆' 08 jrp 20  '
    ∆' 09 sub 26  '
    ∆' 10 sto 25  '
    ∆' 11 ldn 25  '
    ∆' 12 cmp     '
    ∆' 13 hlt     '
    ∆' 14 ldn 26  '
    ∆' 15 sub 21  '
    ∆' 16 sto 27  '
    ∆' 17 ldn 27  '
    ∆' 18 sto 26  '
    ∆' 19 jmp 22  '
    ∆' 20 ¯3      '
    ∆' 21  1      '
    ∆' 22  4      '
    ∆' 23 -2*4    '  ⍝ NB: value of 2*18 (which took 52 minutes on the original
    ∆' 24 ¯1+2*4  '  ⍝ machine) would take too long for this test.

    prog0 ⍙←⍙ ⍬

    baby asm prog0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 1 0 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 1 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 1 0 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 1 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 1 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 1 0 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 1 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 1 0 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝

    ∆' 01 ldn 30 '      ⍝ hcf of number in lines 30 and 31
    ∆' 02 sto 29 '      ⍝ result appears in line 30
    ∆' 03 ldn 31 '      ⍝ http://www.computer50.org/mark1/prog98/intro.html
    ∆' 04 sto 31 '
    ∆' 05 ldn 31 '
    ∆' 06 sto 30 '
    ∆' 07 ldn 29 '
    ∆' 08 sub 30 '
    ∆' 09 cmp    '
    ∆' 10 jrp 27 '
    ∆' 11 sub 31 '
    ∆' 12 sto 31 '
    ∆' 13 sub 28 '
    ∆' 14 cmp    '
    ∆' 15 jmp 00 '
    ∆' 16 hlt    '
    ∆' 27     -3 '
    ∆' 28      2 '
    ∆' 29      0 '
    ∆' 30    385 '
    ∆' 31     66 '

    hcf ⍙ ← ⍙ ⍬         ⍝ highest common factor (→gcd←)

    dis baby asm hcf
00     0  ⍝ jmp 00
01 16414  ⍝ ldn 30
02 24605  ⍝ sto 29
03 16415  ⍝ ldn 31
04 24607  ⍝ sto 31
05 16415  ⍝ ldn 31
06 24606  ⍝ sto 30
07 16413  ⍝ ldn 29
08 32798  ⍝ sub 30
09 49152  ⍝ cmp   
10  8219  ⍝ jrp 27
11 32799  ⍝ sub 31
12 24607  ⍝ sto 31
13 32796  ⍝ sub 28
14 49152  ⍝ cmp   
15     0  ⍝ jmp 00
16 57344  ⍝ hlt   
17     0  ⍝ jmp 00
18     0  ⍝ jmp 00
19     0  ⍝ jmp 00
20     0  ⍝ jmp 00
21     0  ⍝ jmp 00
22     0  ⍝ jmp 00
23     0  ⍝ jmp 00
24     0  ⍝ jmp 00
25     0  ⍝ jmp 00
26     0  ⍝ jmp 00
27    ¯3  ⍝ hlt   
28     2  ⍝ jmp 02
29   ¯55  ⍝ hlt   
30    11  ⍝ jmp 11
31     0  ⍝ jmp 00

⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝

    ⍝ Simple count-down: 100 99 .. 0

    ∆' 00      1   ⍝ decrement / jmp addr.   '
    ∆' 01 ldn 07   ⍝ load count from memory. '
    ∆' 02 sub 00   ⍝ decrement count.        '
    ∆' 03 sto 07   ⍝ store count in memory.  '
    ∆' 04 cmp      ⍝ negative?               '
    ∆' 05 jmp 00   ⍝ not yet: →02            '
    ∆' 06 hlt      ⍝ yes: stop.              '
    ∆' 07 ¯100     ⍝ (negative) loop count.  '

    bloop ⍙ ← ⍙ ⍬        ⍝ loop 1e3

    dis baby asm bloop
00     1  ⍝ jmp 01
01 16391  ⍝ ldn 07
02 32768  ⍝ sub 00
03 24583  ⍝ sto 07
04 49152  ⍝ cmp   
05     0  ⍝ jmp 00
06 57344  ⍝ hlt   
07    ¯1  ⍝ hlt   
08     0  ⍝ jmp 00
09     0  ⍝ jmp 00
10     0  ⍝ jmp 00
11     0  ⍝ jmp 00
12     0  ⍝ jmp 00
13     0  ⍝ jmp 00
14     0  ⍝ jmp 00
15     0  ⍝ jmp 00
16     0  ⍝ jmp 00
17     0  ⍝ jmp 00
18     0  ⍝ jmp 00
19     0  ⍝ jmp 00
20     0  ⍝ jmp 00
21     0  ⍝ jmp 00
22     0  ⍝ jmp 00
23     0  ⍝ jmp 00
24     0  ⍝ jmp 00
25     0  ⍝ jmp 00
26     0  ⍝ jmp 00
27     0  ⍝ jmp 00
28     0  ⍝ jmp 00
29     0  ⍝ jmp 00
30     0  ⍝ jmp 00
31     0  ⍝ jmp 00

⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝

    ∆' 00 jmp 24 ' ⍝ Prime numbers: Bas Wijnen
    ∆' 01 ldn 21 ' ⍝ http://www.computer50.org/mark1/prog98/prizewinners.html
    ∆' 02 sto 21 '
    ∆' 03 ldn 21 '
    ∆' 04 sub 15 '
    ∆' 05 sto 21 '
    ∆' 06 ldn 15 '
    ∆' 07 sto 22 '
    ∆' 08 ldn 22 '
    ∆' 09 sto 22 '
    ∆' 10 ldn 22 '
    ∆' 11 sub 15 '
    ∆' 12 sto 22 '
    ∆' 13 sub 21 '
    ∆' 14 cmp    '
    ∆' 15 -1     '
    ∆' 16 ldn 21 '
    ∆' 17 sto 23 '
    ∆' 18 ldn 23 '
    ∆' 19 sub 22 '
    ∆' 20 jmp 0  '
    ∆' 21 1      ' ⍝ result: next prime.
    ∆' 22        ' ⍝         ..   ..
    ∆' 23        '
    ∆' 24 7      '
    ∆' 25 cmp    '
    ∆' 26 jrp 0  '
    ∆' 27 sto 23 '
    ∆' 28 ldn 23 '
    ∆' 29 sub 22 '
    ∆' 30 cmp    '
    ∆' 31 jmp 20 '

    primes ⍙ ← ⍙ ⍬      ⍝ next prime number.

    disp dis¨↑{⍵,⊂baby⊃⌽⍵}/(⍳5),⊂⊂asm primes    ⍝ first 5 primes in line[21].
┌──────────────────┬──────────────────┬──────────────────┬──────────────────┬──────────────────┬──────────────────┐
│00    24  ⍝ jmp 24│00    24  ⍝ jmp 24│00    24  ⍝ jmp 24│00    24  ⍝ jmp 24│00    24  ⍝ jmp 24│00    24  ⍝ jmp 24│
│01 16405  ⍝ ldn 21│01 16405  ⍝ ldn 21│01 16405  ⍝ ldn 21│01 16405  ⍝ ldn 21│01 16405  ⍝ ldn 21│01 16405  ⍝ ldn 21│
│02 24597  ⍝ sto 21│02 24597  ⍝ sto 21│02 24597  ⍝ sto 21│02 24597  ⍝ sto 21│02 24597  ⍝ sto 21│02 24597  ⍝ sto 21│
│03 16405  ⍝ ldn 21│03 16405  ⍝ ldn 21│03 16405  ⍝ ldn 21│03 16405  ⍝ ldn 21│03 16405  ⍝ ldn 21│03 16405  ⍝ ldn 21│
│04 32783  ⍝ sub 15│04 32783  ⍝ sub 15│04 32783  ⍝ sub 15│04 32783  ⍝ sub 15│04 32783  ⍝ sub 15│04 32783  ⍝ sub 15│
│05 24597  ⍝ sto 21│05 24597  ⍝ sto 21│05 24597  ⍝ sto 21│05 24597  ⍝ sto 21│05 24597  ⍝ sto 21│05 24597  ⍝ sto 21│
│06 16399  ⍝ ldn 15│06 16399  ⍝ ldn 15│06 16399  ⍝ ldn 15│06 16399  ⍝ ldn 15│06 16399  ⍝ ldn 15│06 16399  ⍝ ldn 15│
│07 24598  ⍝ sto 22│07 24598  ⍝ sto 22│07 24598  ⍝ sto 22│07 24598  ⍝ sto 22│07 24598  ⍝ sto 22│07 24598  ⍝ sto 22│
│08 16406  ⍝ ldn 22│08 16406  ⍝ ldn 22│08 16406  ⍝ ldn 22│08 16406  ⍝ ldn 22│08 16406  ⍝ ldn 22│08 16406  ⍝ ldn 22│
│09 24598  ⍝ sto 22│09 24598  ⍝ sto 22│09 24598  ⍝ sto 22│09 24598  ⍝ sto 22│09 24598  ⍝ sto 22│09 24598  ⍝ sto 22│
│10 16406  ⍝ ldn 22│10 16406  ⍝ ldn 22│10 16406  ⍝ ldn 22│10 16406  ⍝ ldn 22│10 16406  ⍝ ldn 22│10 16406  ⍝ ldn 22│
│11 32783  ⍝ sub 15│11 32783  ⍝ sub 15│11 32783  ⍝ sub 15│11 32783  ⍝ sub 15│11 32783  ⍝ sub 15│11 32783  ⍝ sub 15│
│12 24598  ⍝ sto 22│12 24598  ⍝ sto 22│12 24598  ⍝ sto 22│12 24598  ⍝ sto 22│12 24598  ⍝ sto 22│12 24598  ⍝ sto 22│
│13 32789  ⍝ sub 21│13 32789  ⍝ sub 21│13 32789  ⍝ sub 21│13 32789  ⍝ sub 21│13 32789  ⍝ sub 21│13 32789  ⍝ sub 21│
│14 49152  ⍝ cmp   │14 49152  ⍝ cmp   │14 49152  ⍝ cmp   │14 49152  ⍝ cmp   │14 49152  ⍝ cmp   │14 49152  ⍝ cmp   │
│15    ¯1  ⍝ hlt   │15    ¯1  ⍝ hlt   │15    ¯1  ⍝ hlt   │15    ¯1  ⍝ hlt   │15    ¯1  ⍝ hlt   │15    ¯1  ⍝ hlt   │
│16 16405  ⍝ ldn 21│16 16405  ⍝ ldn 21│16 16405  ⍝ ldn 21│16 16405  ⍝ ldn 21│16 16405  ⍝ ldn 21│16 16405  ⍝ ldn 21│
│17 24599  ⍝ sto 23│17 24599  ⍝ sto 23│17 24599  ⍝ sto 23│17 24599  ⍝ sto 23│17 24599  ⍝ sto 23│17 24599  ⍝ sto 23│
│18 16407  ⍝ ldn 23│18 16407  ⍝ ldn 23│18 16407  ⍝ ldn 23│18 16407  ⍝ ldn 23│18 16407  ⍝ ldn 23│18 16407  ⍝ ldn 23│
│19 32790  ⍝ sub 22│19 32790  ⍝ sub 22│19 32790  ⍝ sub 22│19 32790  ⍝ sub 22│19 32790  ⍝ sub 22│19 32790  ⍝ sub 22│
│20     0  ⍝ jmp 00│20     0  ⍝ jmp 00│20     0  ⍝ jmp 00│20     0  ⍝ jmp 00│20     0  ⍝ jmp 00│20     0  ⍝ jmp 00│
│21     1  ⍝ jmp 01│21     2  ⍝ jmp 02│21     3  ⍝ jmp 03│21     5  ⍝ jmp 05│21     7  ⍝ jmp 07│21    11  ⍝ jmp 11│
│22     0  ⍝ jmp 00│22     2  ⍝ jmp 02│22     3  ⍝ jmp 03│22     5  ⍝ jmp 05│22     7  ⍝ jmp 07│22    11  ⍝ jmp 11│
│23     0  ⍝ jmp 00│23     0  ⍝ jmp 00│23    ¯1  ⍝ hlt   │23    ¯3  ⍝ hlt   │23    ¯5  ⍝ hlt   │23    ¯9  ⍝ hlt   │
│24     7  ⍝ jmp 07│24     7  ⍝ jmp 07│24     7  ⍝ jmp 07│24     7  ⍝ jmp 07│24     7  ⍝ jmp 07│24     7  ⍝ jmp 07│
│25 49152  ⍝ cmp   │25 49152  ⍝ cmp   │25 49152  ⍝ cmp   │25 49152  ⍝ cmp   │25 49152  ⍝ cmp   │25 49152  ⍝ cmp   │
│26  8192  ⍝ jrp 00│26  8192  ⍝ jrp 00│26  8192  ⍝ jrp 00│26  8192  ⍝ jrp 00│26  8192  ⍝ jrp 00│26  8192  ⍝ jrp 00│
│27 24599  ⍝ sto 23│27 24599  ⍝ sto 23│27 24599  ⍝ sto 23│27 24599  ⍝ sto 23│27 24599  ⍝ sto 23│27 24599  ⍝ sto 23│
│28 16407  ⍝ ldn 23│28 16407  ⍝ ldn 23│28 16407  ⍝ ldn 23│28 16407  ⍝ ldn 23│28 16407  ⍝ ldn 23│28 16407  ⍝ ldn 23│
│29 32790  ⍝ sub 22│29 32790  ⍝ sub 22│29 32790  ⍝ sub 22│29 32790  ⍝ sub 22│29 32790  ⍝ sub 22│29 32790  ⍝ sub 22│
│30 49152  ⍝ cmp   │30 49152  ⍝ cmp   │30 49152  ⍝ cmp   │30 49152  ⍝ cmp   │30 49152  ⍝ cmp   │30 49152  ⍝ cmp   │
│31    20  ⍝ jmp 20│31    20  ⍝ jmp 20│31    20  ⍝ jmp 20│31    20  ⍝ jmp 20│31    20  ⍝ jmp 20│31    20  ⍝ jmp 20│
└──────────────────┴──────────────────┴──────────────────┴──────────────────┴──────────────────┴──────────────────┘

⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝

    ∆' 01 ldn 29 '  ⍝ Parabola: Magnus Olsson
    ∆' 02 sub 29 '  ⍝ http://www.computer50.org/mark1/prog98/prizewinners.html
    ∆' 03 sto 29 '
    ∆' 04 cmp    '
    ∆' 05 hlt    '
    ∆' 06 ldn 29 '
    ∆' 07 sto 29 '
    ∆' 08 ldn 22 '
    ∆' 09 sub 29 '
    ∆' 10 sto 30 '
    ∆' 11 ldn 30 '
    ∆' 12 sto 22 '
    ∆' 13 ldn 8  '
    ∆' 14 sub 28 '
    ∆' 15 sto 30 '
    ∆' 16 ldn 30 '
    ∆' 17 sto 8  '
    ∆' 18 sub 27 '
    ∆' 19 sto 12 '
    ∆' 20 ldn 28 '
    ∆' 21 sub 26 '
    ∆' 22 sto 28 '
    ∆' 23 ldn 28 '
    ∆' 24 sto 28 '
    ∆' 25 jmp 31 '
    ∆' 26 1      '
    ∆' 27 ¯8192  '
    ∆' 28 ¯6     '
    ∆' 29 131072 '
    ∆' 30 0      '
    ∆' 31 0      '

    parabola ⍙ ← ⍙ ⍬                ⍝ graph of parabola.

    crt baby asm parabola           ⍝ show parabola.
┌────────────────────────────────────────────────────────────────┐
│· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · │
│⍟ · ⍟ ⍟ ⍟ · · · · · · · · · ⍟ · · · · · · · · · ⍟ ⍟ · · · · · · │
│⍟ · ⍟ ⍟ ⍟ · · · · · · · · · · ⍟ · · · · · · · ⍟ · · ⍟ · · · · · │
│⍟ · ⍟ ⍟ ⍟ · · · · · · · · ⍟ ⍟ · · · · · · · · · · · · · · · · · │
│· · · · · · · · · · · · · · ⍟ ⍟ · · · · · · ⍟ · · · · ⍟ · · · · │
│· · · · · · · · · · · · · ⍟ ⍟ ⍟ · · · · · · · · · · · · · · · · │
│⍟ · ⍟ ⍟ ⍟ · · · · · · · · · ⍟ · · · · · · · · · · · · · · · · · │
│⍟ · ⍟ ⍟ ⍟ · · · · · · · · ⍟ ⍟ · · · · · · ⍟ · · · · · · ⍟ · · · │
│⍟ · ⍟ ⍟ ⍟ · · · · · · · · · ⍟ · · · · · · · · · · · · · · · · · │
│⍟ · ⍟ ⍟ ⍟ · · · · · · · · · · ⍟ · · · · · · · · · · · · · · · · │
│· ⍟ ⍟ ⍟ ⍟ · · · · · · · · ⍟ ⍟ · · · · · · · · · · · · · · · · · │
│· ⍟ ⍟ ⍟ ⍟ · · · · · · · · · ⍟ · · · · · ⍟ · · · · · · · · ⍟ · · │
│⍟ · ⍟ ⍟ ⍟ · · · · · · · · ⍟ ⍟ · · · · · · · · · · · · · · · · · │
│· · · ⍟ · · · · · · · · · · ⍟ · · · · · · · · · · · · · · · · · │
│· · ⍟ ⍟ ⍟ · · · · · · · · · · ⍟ · · · · · · · · · · · · · · · · │
│· ⍟ ⍟ ⍟ ⍟ · · · · · · · · ⍟ ⍟ · · · · · · · · · · · · · · · · · │
│· ⍟ ⍟ ⍟ ⍟ · · · · · · · · · ⍟ · · · · ⍟ · · · · · · · · · · ⍟ · │
│· · · ⍟ · · · · · · · · · ⍟ ⍟ · · · · · · · · · · · · · · · · · │
│⍟ ⍟ · ⍟ ⍟ · · · · · · · · · · ⍟ · · · · · · · · · · · · · · · · │
│· · ⍟ ⍟ · · · · · · · · · ⍟ ⍟ · · · · · · · · · · · · · · · · · │
│· · ⍟ ⍟ ⍟ · · · · · · · · · ⍟ · · · · · · · · · · · · · · · · · │
│· ⍟ · ⍟ ⍟ · · · · · · · · · · ⍟ · · · · · · · · · · · · · · · · │
│· · ⍟ ⍟ ⍟ · · · · · · · · ⍟ ⍟ · · · ⍟ · · · · · · · · · · · · ⍟ │
│· · ⍟ ⍟ ⍟ · · · · · · · · · ⍟ · · · · · · · · · · · · · · · · · │
│· · ⍟ ⍟ ⍟ · · · · · · · · ⍟ ⍟ · · · · · · · · · · · · · · · · · │
│⍟ ⍟ ⍟ ⍟ ⍟ · · · · · · · · · · · · · · · · · · · · · · · · · · · │
│⍟ · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · │
│· · · · · · · · · · · · · ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ │
│· · · ⍟ · · · · · · · · · · · · · · · · · · · · · · · · · · · · │
│· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · │
│⍟ ⍟ · · · ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ · ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ │
│· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · │
└────────────────────────────────────────────────────────────────┘

⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝

    ∆' 00  jrp 00 '   ⍝ Tom Kilburn's Nightmare.
    ∆' 01  ldn 25 '   ⍝ Frank Hurley
    ∆' 02  sto 01 '   ⍝ http://www.computer50.org/mark1/prog98/prizewinners.html
    ∆' 03  cmp    '
    ∆' 04  sub 23 '
    ∆' 05  sub 01 '
    ∆' 06  sub 01 '
    ∆' 07  sub 01 '
    ∆' 08  sto 25 '
    ∆' 09  ldn 21 '
    ∆' 10  cmp    '
    ∆' 11  sub 22 '
    ∆' 12  sub 23 '
    ∆' 13  sto 21 '
    ∆' 14  sub 05 '
    ∆' 15  sto 08 '
    ∆' 16  sub 00 '
    ∆' 17  sto 01 '
    ∆' 18  ldn 21 '
    ∆' 19  sto 21 '
    ∆' 20  jmp 24 '
    ∆' 21       6 '
    ∆' 22       7 '
    ∆' 23 2⊥''⍟''=⌽''⍟⍟⍟⍟⍟⍟⍟⍟⍟⍟⍟⍟⍟⍟⍟⍟⍟⍟⍟⍟⍟⍟⍟⍟⍟⍟⍟⍟⍟⍟⍟⍟'''
    ∆' 24 2⊥''⍟''=⌽''································'''
    ∆' 25 2⊥''⍟''=⌽''···············⍟⍟⍟⍟⍟······⍟·····'''
    ∆' 26 2⊥''⍟''=⌽''··············⍟·····⍟····⍟·⍟····'''
    ∆' 27 2⊥''⍟''=⌽''··············⍟···⍟·⍟·····⍟·····'''
    ∆' 28 2⊥''⍟''=⌽''·······⍟⍟⍟⍟⍟⍟·⍟·····⍟·····⍟⍟⍟···'''
    ∆' 29 2⊥''⍟''=⌽''······⍟········⍟⍟⍟⍟⍟······⍟·····'''
    ∆' 30 2⊥''⍟''=⌽''···⍟⍟⍟⍟··⍟⍟⍟⍟···⍟·········⍟·····'''
    ∆' 31 2⊥''⍟''=⌽''··⍟⍟⍟⍟⍟⍟⍟⍟⍟⍟⍟⍟⍟⍟⍟⍟⍟······⍟·⍟····'''

    tkn ⍙ ← ⍙ ⍬     ⍝ Tom Kilburn's Nightmare - Frank Hurley.

    crt asm tkn
┌────────────────────────────────────────────────────────────────┐
│· · · · · · · · · · · · · ⍟ · · · · · · · · · · · · · · · · · · │
│⍟ · · ⍟ ⍟ · · · · · · · · · ⍟ · · · · · · · · · · · · · · · · · │
│⍟ · · · · · · · · · · · · ⍟ ⍟ · · · · · · · · · · · · · · · · · │
│· · · · · · · · · · · · · · ⍟ ⍟ · · · · · · · · · · · · · · · · │
│⍟ ⍟ ⍟ · ⍟ · · · · · · · · · · ⍟ · · · · · · · · · · · · · · · · │
│⍟ · · · · · · · · · · · · · · ⍟ · · · · · · · · · · · · · · · · │
│⍟ · · · · · · · · · · · · · · ⍟ · · · · · · · · · · · · · · · · │
│⍟ · · · · · · · · · · · · · · ⍟ · · · · · · · · · · · · · · · · │
│⍟ · · ⍟ ⍟ · · · · · · · · ⍟ ⍟ · · · · · · · · · · · · · · · · · │
│⍟ · ⍟ · ⍟ · · · · · · · · · ⍟ · · · · · · · · · · · · · · · · · │
│· · · · · · · · · · · · · · ⍟ ⍟ · · · · · · · · · · · · · · · · │
│· ⍟ ⍟ · ⍟ · · · · · · · · · · ⍟ · · · · · · · · · · · · · · · · │
│⍟ ⍟ ⍟ · ⍟ · · · · · · · · · · ⍟ · · · · · · · · · · · · · · · · │
│⍟ · ⍟ · ⍟ · · · · · · · · ⍟ ⍟ · · · · · · · · · · · · · · · · · │
│⍟ · ⍟ · · · · · · · · · · · · ⍟ · · · · · · · · · · · · · · · · │
│· · · ⍟ · · · · · · · · · ⍟ ⍟ · · · · · · · · · · · · · · · · · │
│· · · · · · · · · · · · · · · ⍟ · · · · · · · · · · · · · · · · │
│⍟ · · · · · · · · · · · · ⍟ ⍟ · · · · · · · · · · · · · · · · · │
│⍟ · ⍟ · ⍟ · · · · · · · · · ⍟ · · · · · · · · · · · · · · · · · │
│⍟ · ⍟ · ⍟ · · · · · · · · ⍟ ⍟ · · · · · · · · · · · · · · · · · │
│· · · ⍟ ⍟ · · · · · · · · · · · · · · · · · · · · · · · · · · · │
│· ⍟ ⍟ · · · · · · · · · · · · · · · · · · · · · · · · · · · · · │
│⍟ ⍟ ⍟ · · · · · · · · · · · · · · · · · · · · · · · · · · · · · │
│⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ │
│· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · │
│· · · · · · · · · · · · · · · ⍟ ⍟ ⍟ ⍟ ⍟ · · · · · · ⍟ · · · · · │
│· · · · · · · · · · · · · · ⍟ · · · · · ⍟ · · · · ⍟ · ⍟ · · · · │
│· · · · · · · · · · · · · · ⍟ · · · ⍟ · ⍟ · · · · · ⍟ · · · · · │
│· · · · · · · ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ · ⍟ · · · · · ⍟ · · · · · ⍟ ⍟ ⍟ · · · │
│· · · · · · ⍟ · · · · · · · · ⍟ ⍟ ⍟ ⍟ ⍟ · · · · · · ⍟ · · · · · │
│· · · ⍟ ⍟ ⍟ ⍟ · · ⍟ ⍟ ⍟ ⍟ · · · ⍟ · · · · · · · · · ⍟ · · · · · │
│· · ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ · · · · · · ⍟ · ⍟ · · · · │
└────────────────────────────────────────────────────────────────┘

⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝

    ∆' 00           0  ⍝ jmp 00 '   ⍝ Noodle Timer - Yasuaki Watanabe
    ∆' 01      ¯47168  ⍝ ldn 00 '
    ∆' 02    62939420  ⍝ sto 28 '
    ∆' 03    62931228  ⍝ ldn 28 '
    ∆' 04    62947613  ⍝ sub 29 '
    ∆' 05   267411456  ⍝ sto 00 '
    ∆' 06    62931871  ⍝ ldn 31 '
    ∆' 07    62947611  ⍝ sub 27 '
    ∆' 08    62963968  ⍝ cmp    '
    ∆' 09  1073480602  ⍝ jmp 26 '
    ∆' 10    62930949  ⍝ ldn 05 '
    ∆' 11    62948443  ⍝ sub 27 '
    ∆' 12    62940892  ⍝ sto 28 '
    ∆' 13   267404636  ⍝ ldn 28 '
    ∆' 14    62940229  ⍝ sto 05 '
    ∆' 15    62930945  ⍝ ldn 01 '
    ∆' 16    62949339  ⍝ sub 27 '
    ∆' 17  1073505244  ⍝ sto 28 '
    ∆' 18    62932956  ⍝ ldn 28 '
    ∆' 19    62939137  ⍝ sto 01 '
    ∆' 20    62948318  ⍝ sub 30 '
    ∆' 21   267437120  ⍝ cmp    '
    ∆' 22    62972864  ⍝ hlt    '
    ∆' 23    62915136  ⍝ jmp 00 '
    ∆' 24    62915648  ⍝ jmp 00 '
    ∆' 25      ¯65536  ⍝ jmp 00 '
    ∆' 26           6  ⍝ jmp 06 '
    ∆' 27          ¯1  ⍝ hlt    '
    ∆' 28       47168  ⍝ sub 00 '
    ∆' 29   ¯62914560  ⍝ jmp 00 '
    ∆' 30   ¯62961698  ⍝ ldn 30 '
    ∆' 31 ¯2147481904  ⍝ jmp 16 '

    noodle ⍙ ← ⍙ ⍬    ⍝ Noodle Timer - Yasuaki Watanabe
                      ⍝ http://www.computer50.org/mark1/prog98/prizewinners.html
    asm noodle
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 1 1 1 1 1 0 0 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
0 0 1 1 1 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0
0 0 1 1 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0
1 0 1 1 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0
1 1 1 1 1 0 0 1 1 1 0 0 0 0 1 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0
1 1 0 1 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0
0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0
0 1 0 1 1 0 0 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0
1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0
1 1 0 1 1 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0
0 0 1 1 1 0 1 1 0 1 1 0 0 1 1 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0
0 0 1 1 1 0 1 0 1 0 1 0 0 0 1 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0
1 0 1 0 0 0 1 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0
1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0
1 1 0 1 1 0 1 1 1 1 1 0 0 0 0 1 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0
0 0 1 1 1 0 1 1 1 1 0 0 0 1 1 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0
0 0 1 1 1 0 1 1 1 1 1 0 0 0 1 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0
1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0
0 1 1 1 1 0 1 1 1 1 0 0 0 0 0 1 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0
0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 1 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0
0 0 0 0 0 0 1 1 1 1 0 0 0 1 1 1 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0
0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0
0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
0 0 0 0 0 0 1 0 0 0 0 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 1 1 1 1
0 1 1 1 1 0 1 1 1 1 1 0 0 0 1 0 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1
0 0 0 0 1 0 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1

⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝

    ∆' 00 jmp 00 ' ⍝ Division - Brendan Campbell
    ∆' 01 ldn 29 ' ⍝ http://www.computer50.org/mark1/prog98/prizewinners.html
    ∆' 02 sto 27 '
    ∆' 03 ldn 28 '
    ∆' 04 sto 26 '
    ∆' 05 ldn 26 '
    ∆' 06 sub 29 '
    ∆' 07 sto 28 '
    ∆' 08 cmp    '
    ∆' 09 jmp 25 '
    ∆' 10 sub 27 '
    ∆' 11 sto 31 '
    ∆' 12 hlt    '
    ∆' 13 ldn 30 '
    ∆' 14 sub 24 '
    ∆' 15 sto 30 '
    ∆' 16 ldn 30 '
    ∆' 17 sto 30 '
    ∆' 18 jmp 23 '
    ∆' 19      0 '
    ∆' 20      0 '
    ∆' 21      0 '
    ∆' 22      0 '
    ∆' 23      2 '
    ∆' 24      1 '
    ∆' 25     12 '
    ∆' 26      0 '
    ∆' 27      0 '
    ∆' 28    666 ' ⍝ dividend
    ∆' 29     42 ' ⍝ divisor
    ∆' 30      0 ' ⍝ quotient  (result)
    ∆' 31      0 ' ⍝ remainder (result)

    div ⍙ ← ⍙ ⍬    ⍝ Division - Brendan Campbell

    dis baby asm div
00     0  ⍝ jmp 00
01 16413  ⍝ ldn 29
02 24603  ⍝ sto 27
03 16412  ⍝ ldn 28
04 24602  ⍝ sto 26
05 16410  ⍝ ldn 26
06 32797  ⍝ sub 29
07 24604  ⍝ sto 28
08 49152  ⍝ cmp   
09    25  ⍝ jmp 25
10 32795  ⍝ sub 27
11 24607  ⍝ sto 31
12 57344  ⍝ hlt   
13 16414  ⍝ ldn 30
14 32792  ⍝ sub 24
15 24606  ⍝ sto 30
16 16414  ⍝ ldn 30
17 24606  ⍝ sto 30
18    23  ⍝ jmp 23
19     0  ⍝ jmp 00
20     0  ⍝ jmp 00
21     0  ⍝ jmp 00
22     0  ⍝ jmp 00
23     2  ⍝ jmp 02
24     1  ⍝ jmp 01
25    12  ⍝ jmp 12
26   ¯36  ⍝ hlt   
27   ¯42  ⍝ hlt   
28    ¯6  ⍝ hlt   
29    42  ⍝ jmp 10
30    15  ⍝ jmp 15
31    36  ⍝ jmp 04

⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝⍝

    ∆' 00           0  ⍝ jmp 00 ' ⍝ Medieval Analog Clock - John Deane
    ∆' 01    16793627  ⍝ ldn 27 '
    ∆' 02    41975836  ⍝ sub 28 '
    ∆' 03    71352320  ⍝ cmp    '
    ∆' 04   153092124  ⍝ jmp 28 '
    ∆' 05  1343504415  ⍝ ldn 31 '
    ∆' 06 ¯1593155584  ⍝ sto 00 '
    ∆' 07  ¯447856640  ⍝ ldn 00 '
    ∆' 08 ¯1521844224  ⍝ sub 00 '
    ∆' 09 ¯1521852385  ⍝ sto 31 '
    ∆' 10 ¯1521827840  ⍝ cmp    '
    ∆' 11     ¯122852  ⍝ jrp 28 '
    ∆' 12 ¯2147352547  ⍝ jmp 29 '
    ∆' 13 ¯2088615908  ⍝ ldn 28 '
    ∆' 14 ¯2076024801  ⍝ sto 31 '
    ∆' 15 ¯2011021282  ⍝ ldn 30 '
    ∆' 16 ¯1877843968  ⍝ sto 00 '
    ∆' 17  ¯266452992  ⍝ ldn 00 '
    ∆' 18       32768  ⍝ sub 00 '
    ∆' 19  ¯473538530  ⍝ sto 30 '
    ∆' 20  1430552602  ⍝ sub 26 '
    ∆' 21  1229242368  ⍝ cmp    '
    ∆' 22  1229193245  ⍝ jmp 29 '
    ∆' 23  ¯482852836  ⍝ ldn 28 '
    ∆' 24       24606  ⍝ sto 30 '
    ∆' 25          29  ⍝ jmp 29 '
    ∆' 26       ¯2048           '
    ∆' 27      ¯26250           '
    ∆' 28           1           '
    ∆' 29           0           '
    ∆' 30          ¯1           '
    ∆' 31          ¯1           '

    clock ⍙ ← ⍙ ⍬   ⍝ Medieval Analog Clock - John Deane
                    ⍝ http://www.computer50.org/mark1/prog98/prizewinners.html
    crt asm clock
┌────────────────────────────────────────────────────────────────┐
│· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · │
│⍟ ⍟ · ⍟ ⍟ · · · · · · · · · ⍟ · · · · · · · · · ⍟ · · · · · · · │
│· · ⍟ ⍟ ⍟ · · · · · · · · · · ⍟ · · · · · · · ⍟ · ⍟ · · · · · · │
│· · · · · · · · · · · · · · ⍟ ⍟ · · · · · · ⍟ · · · ⍟ · · · · · │
│· · ⍟ ⍟ ⍟ · · · · · · · · · · · · · · · · ⍟ · · ⍟ · · ⍟ · · · · │
│⍟ ⍟ ⍟ ⍟ ⍟ · · · · · · · · · ⍟ · · · ⍟ · ⍟ · · · · · · · ⍟ · ⍟ · │
│· · · · · · · · · · · · · ⍟ ⍟ · · ⍟ · ⍟ · · · · ⍟ · · · · ⍟ · ⍟ │
│· · · · · · · · · · · · · · ⍟ · · ⍟ ⍟ ⍟ · · ⍟ · ⍟ · ⍟ · · ⍟ ⍟ ⍟ │
│· · · · · · · · · · · · · · · ⍟ · ⍟ · ⍟ · · ⍟ · ⍟ · ⍟ · · ⍟ · ⍟ │
│⍟ ⍟ ⍟ ⍟ ⍟ · · · · · · · · ⍟ ⍟ · · ⍟ · ⍟ · · ⍟ · ⍟ · ⍟ · · ⍟ · ⍟ │
│· · · · · · · · · · · · · · ⍟ ⍟ · ⍟ · ⍟ · · ⍟ · ⍟ · ⍟ · · ⍟ · ⍟ │
│· · ⍟ ⍟ ⍟ · · · · · · · · ⍟ · · · ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ │
│⍟ · ⍟ ⍟ ⍟ · · · · · · · · · · · · ⍟ · · · · · · · · · · · · · ⍟ │
│· · ⍟ ⍟ ⍟ · · · · · · · · · ⍟ · · ⍟ · · · · · ⍟ ⍟ ⍟ · · · · · ⍟ │
│⍟ ⍟ ⍟ ⍟ ⍟ · · · · · · · · ⍟ ⍟ · · ⍟ · · · · ⍟ · · · ⍟ · · · · ⍟ │
│· ⍟ ⍟ ⍟ ⍟ · · · · · · · · · ⍟ · · ⍟ · · · ⍟ · · · · · ⍟ · · · ⍟ │
│· · · · · · · · · · · · · ⍟ ⍟ · · ⍟ · · ⍟ · · · · · · · ⍟ · · ⍟ │
│· · · · · · · · · · · · · · ⍟ · · ⍟ ⍟ ⍟ ⍟ · · · · · · · ⍟ ⍟ ⍟ ⍟ │
│· · · · · · · · · · · · · · · ⍟ · · · · · · · · · · · · · · · · │
│· ⍟ ⍟ ⍟ ⍟ · · · · · · · · ⍟ ⍟ · · ⍟ ⍟ · · · ⍟ ⍟ ⍟ ⍟ · · · ⍟ ⍟ ⍟ │
│· ⍟ · ⍟ ⍟ · · · · · · · · · · ⍟ · · ⍟ · · · ⍟ · ⍟ · ⍟ · ⍟ · ⍟ · │
│· · · · · · · · · · · · · · ⍟ ⍟ · · ⍟ · · · ⍟ · ⍟ · · ⍟ · · ⍟ · │
│⍟ · ⍟ ⍟ ⍟ · · · · · · · · · · · · · ⍟ · · · ⍟ · ⍟ · · ⍟ · · ⍟ · │
│· · ⍟ ⍟ ⍟ · · · · · · · · · ⍟ · · · · ⍟ ⍟ ⍟ · · ⍟ ⍟ · · · ⍟ ⍟ ⍟ │
│· ⍟ ⍟ ⍟ ⍟ · · · · · · · · ⍟ ⍟ · · · · · · · · · · · · · · · · · │
│⍟ · ⍟ ⍟ ⍟ · · · · · · · · · · · · · · · · · · · · · · · · · · · │
│· · · · · · · · · · · ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ │
│· ⍟ ⍟ · ⍟ ⍟ ⍟ · ⍟ · · ⍟ ⍟ · · ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ │
│⍟ · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · │
│· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · │
│⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ │
│⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ ⍟ │
└────────────────────────────────────────────────────────────────┘

Back to: code

Back to: Workspaces