PDP-1 Codeword Display routine, 1961

Ref: http://bitsavers.trailing-edge.com/pdf/dec/pdp1/PDP-1_Subroutines_1961.pdf

Note: Lower and upper case!

 

Source Code

MIT Macro assembler. A backslash ("\") denotes an overstrike character.
Symbols that occur at least once with an overstrike are assembler variables (i.e. a memory location will be assigned by the assembler on the keyword variables.)
An opening brace denotes a constant expression (with memory assigned to this by the assembler on the keyword constants.)

define setup A,B
        law i B
        dac A
term
        
/codeword display

cwd,    0
        dap cwx
        lac i cwd
        dac \cw
        idx cwd
        xct i cwx
        dac \x
        idx cwx
        xct i cwx
        lio i cwd
        spi
        sub \2dl
        dac \y
        idx cwx
        setup \ctr, 22
        setup \cty, 7

d,      setup \ctx, 5

c,      lio \cw
        ril 1s
        dio \cw
        spi
        jmp plt


a,      isp \ctr
        jmp b
        lac i cwd
        dac cw
        setup \ctr, 22
b,      isp ctx
        jmp inx
        isp cty
        jmp iny
cwx,    jmp .

inx,    lac x
        add del
        dac x
        jmp c

iny,    lac x
        sub \4dl
        dac x
        lac y
        add del
        dac y
        jmp d

plt,    lac x
        lio y
        dpy-i
        jmp a

siz,del, 2000
        dap sex
        lac del
        sal 1s
        dac \2dl
        sal 1s
        dac \4dl
sex,    jmp .

variables
constants

start


/alphabetic codeword tables

lwr,    374200          000000          /space, printing
        561020          010604          /1
        774040          005056          /2
        564204          203056          /3
        420413          345122          /4
        164204          175037          /5
        564307          241056          /6
        604040          004077          /7
        564305          243056          /8
        564205          343056          /9
        0               0
        0               0
        0               0
        0               0
        0               0
        0               0
        144512          245114          /0
        602020          010101          //
        160231          016000          /s
        421220          010744          /t
        72245           122000          /u
        42506           142000          /v
        125326          142000          /w
        212421          242000          /x
        60235           522451          /y
        372020          276000          /z
        0               0
        440430          600000          /,
        0               0
        0               0
        1170            174200          /tab, printing
        0               0
        400000          214000          /·
        42410           614002          /j
        112461          222410          /k
        70410           204106          /l
        655326          164000          /m
        512245          124000          /n
        62245           114000          /o
        102071          522456          /p
        30472           645116          /q
        502041          124000          /r
        0               0
        0               0
        000174          000000          /-
        101010          204210          /)
        000000          000037          /¯
        21041           20202           /(
        0               0
        72234           114000          /a
        162245          134410          /b
        72041           16000           /c
        72245           116041          /d
        72075           114000          /e
        102161          20446           /f
        60235           522446          /g

        112245          134410          /h
        561020          30004           /i
        042555          224512          /l.c., printing
        061400          000000          /.
        122451          266504          /u.c., printing
        042175          010000          /bksp, printing
        0               0
        306020          204600          /c.r., printing

upr,    374200          0               /space, printing
        000000          023562          /"
        000000          004304          /'
        000000          005250          /~
        760207          200000          /⊃
        042452          142000          /∨
        214251          210000          /∧
        010421          010101          /<
        101010          104210          />
        441020          052704          /↑
        0               0
        0               0
        0               0
        0               0
        0               0
        0               0
        040574          210000          /→
        040020          243056          /?
        564205          241056          /S
        441020          010237          /T
        164306          143061          /U
        042506          143061          /V
        125326          143061          /W
        612420          010521          /X
        441020          010521          /Y
        774040          004077          /Z
        0               0
        407603          300000          /=
        0               0
        0               0
        050774          312000          /tab, printing
        0               0
        007600          400000          /_
        144410          204107          /J
        214523          051121          /K
        374102          041020          /L
        214306          153561          /M
        214306          353461          /N
        164306          143056          /O
        604103          243076          /P
        154526          143056          /Q
        614523          243076          /R

        0               0
        0               0
        441174          010000          /+
        60410           204106          /]
        441020          010204          /|
        461020          010206          /[
        214376          143056          /A
        764307          243076          /B
        164302          041056          /C
        364306          143076          /D
        774103          041037          /E
        604103          041037          /F
        164336          041056          /G
        614307          343061          /H
        561020          010216          /I
        042555          224512          /l.c., printing
        404250          025040          /×
        122451          266504          /u.c., printing
        042175          010000          /bksp, printing
        0               0
        306020          204600          /c.r., printing

start


///// Annotations

        PATTERN:

        13 : 14 : 15 : 16 : 17
        ......................
word 2   8 :  9 : 10 : 11 : 12
        ......................
         3 :  4 :  5 :  6 :  9
        ---------.............
        16 : 17 | 0  :  1 :  2
        ........--------------
word 1  11 : 12 : 13 : 14 : 15
        ......................
         6 :  7 :  8 :  9 : 10
        ......................
         1 :  2 :  3 :  4 :  5

      WORD 1, BIT 0: DEPRESS 2. (should be: WORD 2)


        law cw1
        jda cwd
        lac \x
        lac \y