; Started: 8-MAR-1985 02:08:55I; To do: save old VDFNTS somewhere to allow accents w/ Compose Char, etc.a .mcall exit$s esc=27. ; The ASCII character kpar4=172350" kpar6=kpar4+43 vdfloc=2516 ; Location of VDFNTS (32-word blocks)o; vidloc=140000 ; Location of video memory (32-word blocks)E5 vdf0=147114 ; Initial VDFNTS location to load ("á")G3 a1=142164 ; Address of "real" capital a in VDFNTSK: a2=145714 ; Address of "Á" to overwrite w/ capital alphaA; Macro to load from the FROMth English char. to the TOth Greek, <; continuing until the LIMITth English character is reached. .macro load from,to,limit mov #>,r0 mov #>,r15 mov (r0)+,(r1)+ ;; Note absolute offset in branch...w cmp r0,#>01 blo .-6 ;; If distance between these statementsf; .endm load ;; is changed, change the branch accordingly.4&$$=0 ;; "$$" indicates char. offset8 .macro set pos ;; Offset incremented at each invocation mov #>,r0 mov #>,r1  mov (r0)+,(r1)+ cmp r0,#*20.>>! blo .-6 ;; Note absolute offset $$=$$+1 .endm set;start: mov #first,r0 ; Addr. of beginning of character data()1$: add #0,r1 ; (???) It works, but why?h' mov (r0),buff ; Put in swapping buffer6* jsr pc,swpbit ; Swap the bits of the word mov buff,(r0)+ ; Put it backa cmp r0,#endchr ; Finished? blos 1$ ; Ohi, dhen eimaste... emt 376 ;; To kernel modee .word ret. mov @#kpar4,-(sp) ;; Save before modification mov @#kpar6,-(sp)+ mov #vidloc,@#kpar4 ;; Map to video memory>3 mov #vdfloc,@#kpar6 ;; Map to video fonts (VDFNTS)3 mov #first,r0 ;; Address of my font data for Alpha 9 mov #vdf0,r1 ;; "á" -- first element in font (lowercase)y$2$: mov (r0)+,(r1)+ ;; Load the font, cmp r0,#endlow ;; End of lowercase letters? blo 2$v= movb #262,@#140527 ;; Make the lowercase pi position defined 3 ;; (262= position in font relative to beginningm4 ;; of font data -- equal to ASCII code + const.( ;; 140567 is location in font table)I; Now set the capitals, etc. that can be copied from regular ASCII chars.s load 0,0,2 ;; A,Bi load 4,4,5 ;; Ef load 7,7,9. ;; H,I load 10.,10.,11. ;; K load 12.,12.,15. ;; M,N,O load 15.,17.,16. ;; P (rho)9 load 16.,16.,17. ;; Q (so a "Ñ" doesn't show up instead)t load 19.,19.,20. ;; T& load 23.,23.,32. ;; X,Y,Z,[,\,],^,_,`! movb #240,@#140505 ;; Define "^"o% load -32.,-32.,0 ;; Load punctuation , movb #150,@#140415 ;; Define ASCII 46 ("&") movb #156,@#140423 ;; "," movb #157,@#140424 ;; "-" movb #160,@#140425 ;; "." movb #161,@#140426 ;; "/" movb #166,@#140433 ;; "4" movb #172,@#140437 ;; "8" movb #200,@#140445 ;; ">"& load -6,-2,-5 ;; Replace "?" with ";"9 load -3,-29.,-2 ;; Make ">" the new "$" (for DCL prompt)d: movb #146,@#140413 ;; Point font table to the copied data; Now do the remaining capitals  set 2 ;; C (gamma) set 3 ;; D (delta) set 5 ;; F (phi) set 6 ;; G (theta) set 11. ;; L (lambda)( set 9. ;; J (xi) set 15. ;; P (pi)15 movb #222,@#140467 ;; Make the "pi" position defined1 set 18. ;; S (sigma) set 22. ;; W (psi) set 21. ;; V (omega) set 20. ;; U (O & Y)& set -6 ;; ";" (make it a raised dot)" mov (sp)+,@#kpar6 ;; Restore PARs mov (sp)+,@#kpar4 ;; " return ;; Return to user mode"ret: exit$s ; And exit from task1first: .WORD 0 ; Data for 12-bit x 10-word cells)* .WORD 0 ; (See VDFTST1.MAC, GRKINCL.MAC)6 .WORD 0 ; (Small alpha, padded with zeroes on right) .WORD ^B0010101001000000( .WORD ^B0100000010000000; .WORD ^B0100000010000000i .WORD ^B0100000010000000) .WORD ^B0010101001000000t .WORD 0 .WORD 0betasm: .word 0  .word ^B0001010100000000t .word ^B0010000010000000+ .word ^B0100000010000000m .word ^B0100010100000000t .word ^B0100000010000000e .word ^B0101000001000000t .word ^B01001010100000000 .word ^B0100000000000000r .word 0gammas: .word 0,0,01 .word ^B01000000010000000 .word ^B0001000001000000t .word ^B0000010010000000^ .word ^B0000101000000000^ .word ^B0010010000000000^ .word ^B0010100000000000^ .word 0deltas: .word 00 .word ^B0101010101000000 .word ^B0100000000000000  .word ^B0001000000000000t .word ^B0000101000000000+8 .word ^B0010000010000000 ; OR: 001000001 0000000 (same)> .word ^B0100000001000000 ; 001000001 0000000 (farther in)1 .word ^B0010101010000000 ; 000101010 0000000o .word 0,0eps: .word 0,0,09 .WORD ^B0010101010000000 ; (Padded with zeroes on right)d .WORD ^B0100000000000000d .WORD ^B0010101000000000d .WORD ^B0100000000000000d .WORD ^B0010101010000000d .word 0,0fis: .word 0,0 .word ^B0000100000000000d .word ^B0010101000000000d .word ^B0100100100000000d .word ^B0100100100000000d .word ^B01001001000000000 .word ^B0010101000000000o .word ^B0000100000000000  .word 0thetas: .word 0) .word ^B0001010100000000  .word ^B0010000010000000. .word ^B00100000100000000 .word ^B0010101010000000  .word ^B0010000010000000g .word ^B00100000100000000 .word ^B00010101000000000 .word 0,0eta: .word 0,0,0 .WORD ^B0101010000000000d .WORD ^B00100001000000000 .WORD ^B00100001000000000 .WORD ^B00100001000000000 .WORD ^B01000000100000000 .word ^B00000000100000000 .word 0iotas: .word 0,0,0 .WORD ^B0000010000000000 .WORD ^B0000010000000000 .WORD ^B0000010000000000) .WORD ^B0000010100000000  .WORD ^B0000001000000000. .word 0,0 xis: .word 0 .word ^B0101010101000000  .word ^B0000001000000000g .word ^B00001000000000000 .word ^B00000010100000000 .word ^B00001000000000000 .word ^B00000100000000000 .word ^B00000001000000000 .word ^B00010101010000000 .word 0Dkappas: .word 0,0,0. .WORD ^B0100000100000000. .WORD ^B0100010000000000. .WORD ^B01010000000000000 .WORD ^B0100010000000000 .WORD ^B0100000100000000 .word 0,0lambds: .word 0. .word ^B0010000000000000. .word ^B0001000000000000. .WORD ^B0000100000000000. .WORD ^B0000010000000000. .WORD ^B0001001000000000. .WORD ^B0010000100000000. .WORD ^B0100000010000000. .word 0,0mis: .word 0,0,0 .word ^B0100000010000000d .word ^B0100000010000000d .word ^B0100000010000000r .word ^B0101010101000000. .word ^B0100000000000000. .word ^B0100000000000000. .word 0nis: .word 0,0,0 .word ^B0100000100000000 .word ^B0010000010000000 .word ^B0001000100000000  .word ^B00001010000000000 .word ^B00000100000000000 .word 0,0omikrs: .word 0,0,0O .WORD ^B0010101010000000O .WORD ^B0100000001000000O .WORD ^B0100000001000000O .WORD ^B0100000001000000o .WORD ^B0010101010000000 .word 0,0pis: .word 0,0,0 .word ^B0101010101000000o .word ^B0010000010000000o .word ^B0010000010000000o .word ^B0010000010000000o .word ^B0010000010000000o .word 0,0'sigend: .word 0,0,0 ; In place of "Q". .word ^B0010101010000000. .word ^B0100000000000000. .word ^B0100000000000000. .word ^B0010000000000000. .word ^B0001010100000000, .word ^B00000000100000000 .word ^B00000001000000000rhos: .word 0,0,00 .WORD ^B00101010100000000 .WORD ^B01000000010000001 .WORD ^B0100000001000000i .WORD ^B00101010100000000 .word ^B00010000000000001 .word ^B00001000000000001 .word 0sigmas: .word 0,0,01 .WORD ^B00101010101000001 .WORD ^B0100000010000000e .WORD ^B0100000010000000e .WORD ^B01000000100000001 .WORD ^B00101010000000000 .word 0,0tafs: .word 0,0,00 .WORD ^B01010101010000000 .WORD ^B00000100000000000 .WORD ^B00000100000000000 .WORD ^B00000101000000000 .WORD ^B0000001000000000. .word 0,0u: .word 0,0 ; "O" + "Y" .WORD ^B01000000010000000 .WORD ^B00101010100000001 .WORD ^B01000000010000000 .WORD ^B01000000010000000 .WORD ^B0100000001000000m .WORD ^B00101010100000000 .word 0,0omegas: .word 0,0,01 .word ^B00100000100000001 .word ^B01000000010000001 .word ^B01000100010000000 .word ^B0010010010000000s .word ^B00010001000000000 .word 0,0psis: .word 0,0,00 .word ^B01000001000000000 .word ^B01001001000000000 .word ^B01001001000000000 .word ^B0010101000000000. .word ^B0000100000000000O .word ^B0000100000000000O .word 0chis: .word 0,0D .word ^B0010000010000000D .word ^B0101000100000000D .word ^B0000101000000000D .word ^B0000010000000000d .word ^B00001010000000001 .word ^B00010001000000001 .word ^B00100000100000001 .word 0yps: .word 0,0,0 .WORD ^B0100000001000000 .WORD ^B0100000001000000 .WORD ^B0100000001000000, .WORD ^B01000000010000000 .WORD ^B00101010100000000 .word 0,0zetas: .word 0 .word ^B01010101010000000 .word ^B00000001000000000 .word ^B00000100000000000 .word ^B0001000000000000  .word ^B00010000000000000 .word ^B00000100000000000 .word ^B00000001000000000 .word ^B00010101010000000 .word 0d.endlow: ; Marks end of lowercase font datacaps:0gammal: .word 0 .word ^B01010101010000000 .word ^B0100000000000000 .word ^B0100000000000000 .word ^B0100000000000000, .word ^B01000000000000000 .word ^B01000000000000000 .word ^B0100000000000000d .word 0,0deltal: .word 0 .word ^B0000010000000000 .word ^B0000101000000000 .word ^B0001000100000000 .word ^B0010000010000000 .word ^B0100000001000000 .word ^B0100000001000000 .word ^B0101010101000000 .word 0,0 fil: .word 0 .word ^B0000010000000000  .word ^B0001010100000000r .word ^B01000100010000000 .word ^B01000100010000000 .word ^B01000100010000000 .word ^B00010101000000000 .word ^B00000100000000000 .word 0,0thetal: .word 00 .word ^B0010101010000000d .word ^B0100000001000000r .word ^B01000000010000000 .word ^B01001010010000000 .word ^B01000000010000000 .word ^B01000000010000000 .word ^B00101010100000000 .word 0,0lambdl: .word 0 .word ^B0000010000000000 .word ^B00001010000000000 .word ^B0001000100000000  .word ^B0010000010000000r .word ^B01000000010000000 .word ^B01000000010000000 .word ^B01000000010000000 .word 0 .word 0 xil: .word 0 .word ^B0101010101000000d .word 0,0 .word ^B00010101000000001 .word 0,0 .word ^B0101010101000000r .word 0,0 pil: .word 0 .word ^B01010101010000000 .word ^B00100000100000000 .word ^B00100000100000000 .word ^B00100000100000000 .word ^B0010000010000000r .word ^B00100000100000000 .word ^B00100000100000000 .word 0,0sigmal: .word 0  .word ^B0101010101000000r .word ^B00010000000000000 .word ^B00000100000000000 .word ^B00000001000000000 .word ^B0000010000000000: .word ^B00010000000000000 .word ^B0101010101000000d .word 0,0 psil: .word 00 .word ^B01000000010000000 .word ^B0100010001000000d .word ^B01000100010000000 .word ^B01000100010000000 .word ^B00010101000000000 .word ^B00000100000000000 .word ^B00000100000000000 .word 0,0omegal: .word 0 .word ^B0010101010000000 .word ^B0100000001000000  .word ^B01000000010000000 .word ^B01000000010000000 .word ^B00010001000000000 .word ^B00010001000000000 .word ^B01000000010000000 .word 0,0"ul: .word 0 ; Uppercase "O" + "Y" .word ^B0100000001000000l .word ^B00101010100000000 .word ^B01000000010000000 .word ^B01000000010000000 .word ^B01000000010000000 .word ^B01000000010000000 .word ^B00101010100000000 .word 0,0rsddot: .word 0,00 .word ^B0000001010000000  .word ^B00000010100000001 .word 0,0,0,0,0,0:endchr: ; Marks end of this font data (no swapping bits ; after here).0'buff: .blkw 1 ; Buffers for subroutine0 temp: .blkw 10swpbit:0.5: mov buff,temp  mov #100000,r4a mov #1,r57s.cont: bit r4,temp ; Exchange bits (15-0,14-1,etc.). bne s.1 bic r5,buff br s.2^s.1: bis r5,buff s.2: ror r40 rol r50 cmp r4,#1 ; All bits tested? bne s.cont ; Continue if not rts pct .end start.