home *** CD-ROM | disk | FTP | other *** search
/ minnie.tuhs.org / unixen.tar / unixen / PDP-11 / Trees / V6 / usr / source / s7 / nroff5.s < prev    next >
Encoding:
Text File  |  1975-07-17  |  4.4 KB  |  435 lines

  1. /
  2. /
  3.  
  4. / hyp1 -- driver
  5.  
  6. hyphen:
  7.     tst    hypedf
  8.     bne    3f
  9.     tst    hyf
  10.     beq    3f
  11.     inc    hypedf
  12.     mov    wordp,r0
  13.     clr    nhyph
  14. 1:
  15.     jsr    pc,punct
  16.     bne    1f
  17.     inc    r0
  18.     br    1b
  19. 1:
  20.     jsr    pc,alph
  21.     bne    3f
  22.     mov    r0,wordstart
  23. 1:
  24.     inc    r0
  25.     jsr    pc,alph
  26.     beq    1b
  27.     dec    r0
  28.     mov    r0,hstart
  29. 1:
  30.     inc    r0
  31.     tstb    (r0)
  32.     beq    2f
  33.     jsr    pc,punct
  34.     bne    3f
  35.     br    1b
  36. 2:
  37.     mov    hstart,wordend
  38.     jsr    pc,exword
  39.     beq    0f
  40.     jsr    r5,suffix
  41.     tst    exf
  42.     bne    0f
  43.     jsr    r5,digram
  44. 0:
  45.     bit    $4,hyf
  46.     beq    0f
  47.     mov    wordend,r0
  48.     bicb    $!177,-1(r0)
  49. 0:
  50.     mov    wordstart,r0
  51.     bicb    $!177,1(r0)
  52.     bit    $10,hyf
  53.     beq    3f
  54.     bicb    $!177,2(r0)
  55. 3:
  56.     rts    pc
  57.  
  58. casehw:
  59.     jsr    pc,skipcont
  60.     bne    2f
  61.     mov    nexth,r1
  62.     cmp    r1,$ehbuf-2
  63.     bhis    3f
  64. 1:
  65.     jsr    pc,getchar
  66.     bmi    1f
  67.     cmpb    r0,$' /
  68.     beq    4f
  69.     cmpb    r0,$012
  70.     beq    1f
  71.     movb    r0,(r1)+
  72.     cmp    r1,$ehbuf-2
  73.     blo    1b
  74.     br    3f
  75. 1:
  76.     clrb    (r1)+
  77.     mov    r1,nexth
  78.     clrb    (r1)+
  79. 2:
  80.     rts    pc
  81. 3:
  82.     jsr    r5,string;hmess
  83.     clrb    *nexth
  84.     br    2b
  85. 4:
  86.     jsr    pc,1b
  87.     br    casehw
  88. hmess: <Exception word space full.\n\0>
  89. .even
  90.  
  91. exword:
  92.     clr    exf
  93.     clr    -(sp)
  94.     mov    r1,-(sp)
  95.     mov    r2,-(sp)
  96.     mov    r3,-(sp)
  97.     mov    r4,-(sp)
  98.     mov    $hbuf,r2
  99.     mov    hstart,r0
  100.     cmpb    (r0)+,(r0)+
  101. 0:
  102.     mov    r2,8(sp)
  103.     mov    wordstart,r1
  104.     tstb    (r2)
  105.     beq    4f
  106. 1:
  107.     movb    (r2)+,r4
  108.     cmpb    r4,$'-
  109.     beq    1b
  110.     movb    (r1)+,r3
  111. /    tstb    r3
  112. /    bne    2f
  113.     cmp    r1,r0
  114.     blo    2f
  115.     tstb    r4
  116.     beq    3f
  117. 2:
  118.     tstb    r4
  119.     bne    2f
  120. /    tstb    (r1)
  121.     tstb    -1(r0)
  122.     bne    2f
  123.     cmpb    r3,$'s
  124.     beq    3f
  125. 2:
  126.     tstb    r4
  127.     beq    0b
  128. /    tstb    r3
  129. /    beq    2f
  130.     cmp    r1,r0
  131.     bhis    2f
  132.     cmpb    r4,r3
  133.     beq    1b
  134. 2:
  135.     tstb    (r2)+
  136.     bne    2b
  137.     br    0b
  138. 3:
  139.     mov    wordstart,r1
  140.     mov    8(sp),r2
  141.     clr    8(sp)
  142.     inc    exf
  143. 1:
  144.     tstb    (r1)+
  145.     cmpb    (r2)+,$'-
  146.     bne    0f
  147.     bisb    $200,-1(r1)
  148.     tstb    (r2)+
  149. 0:
  150.     tstb    (r2)
  151.     bne    1b
  152. 4:
  153.     mov    (sp)+,r4
  154.     mov    (sp)+,r3
  155.     mov    (sp)+,r2
  156.     mov    (sp)+,r1
  157.     tst    (sp)+
  158.     rts    pc
  159.  
  160. punct:
  161.     tst    old
  162.     bne 4f
  163.     cmpb    (r0),$010
  164.     beq    0f
  165.     movb    (r0),r2
  166.     jsr    pc,alph2
  167.     beq    0f
  168.     sez
  169.     rts     pc
  170. 0:
  171.     clz
  172.     rts    pc
  173. 4:
  174.     mov     $3f,r2
  175. 1:
  176.     cmpb    (r0),(r2)+
  177.     beq    2f
  178.     tstb    (r2)
  179.     bne    1b
  180.     clz
  181. 2:
  182.     rts    pc
  183. 3: < .,()"\'`\0>    /should be more
  184. .even
  185. maplow:
  186.     cmp    r2,$'a
  187.     bhis    1f
  188.     add    $'a-'A,r2
  189. 1:
  190.     rts    pc
  191.  
  192. vowel:
  193.     cmpb    r2,$'a
  194.     beq    1f
  195.     cmpb    r2,$'e
  196.     beq    1f
  197.     cmpb    r2,$'i
  198.     beq    1f
  199.     cmpb    r2,$'o
  200.     beq    1f
  201.     cmpb    r2,$'u
  202.     beq    1f
  203.     cmpb    r2,$'y
  204.     beq    1f
  205.     cmpb    r2,$'A
  206.     beq    1f
  207.     cmpb    r2,$'E
  208.     beq    1f
  209.     cmpb    r2,$'I
  210.     beq    1f
  211.     cmpb    r2,$'O
  212.     beq    1f
  213.     cmpb    r2,$'U
  214.     beq    1f
  215.     cmpb    r2,$'Y
  216. 1:
  217.     rts    pc
  218.  
  219. checkvow:
  220.     mov    r0,-(sp)
  221. 1:
  222.     movb    -(r0),r2
  223.     jsr    pc,vowel
  224.     beq    1f
  225.     jsr    pc,alph
  226.     beq    1b
  227.     mov    (sp)+,r0
  228.     clz
  229.     rts    r5
  230. 1:
  231.     mov    (sp)+,r0
  232.     sez
  233.     rts    r5
  234.  
  235. / hyp2 -- suffix and digram
  236.  
  237. digram:
  238.     mov    hstart,r0
  239. 1:
  240.     jsr    pc,alph
  241.     bne    3f
  242.     jsr    pc,vowel
  243.     beq    1f
  244.     dec    r0
  245.     br    1b
  246. 1:
  247.     mov    r0,hstart
  248. 1:
  249.     movb    -(r0),r2
  250.     jsr    pc,alph2
  251.     bne    3f
  252.     jsr    pc,vowel
  253.     bne    1b
  254.     clr    maxdig
  255.     mov    r0,nhstart
  256. 1:
  257.     mov    $1,r3
  258.     movb    -1(r0),r2
  259.     jsr    pc,alph2
  260.     beq    2f
  261.     movb    (r0),r2
  262.     mov    $'a,r1
  263.     jsr    r5,dilook; bxh
  264.     br    4f
  265. 2:
  266.     movb    -2(r0),r2
  267.     mov    $xxh,0f
  268.     jsr    pc,alph2
  269.     beq    2f
  270.     mov    $bxxh,0f
  271. 2:
  272.     movb    -1(r0),r1
  273.     movb    (r0),r2
  274.     jmp    7f
  275. .data
  276. 7:
  277.     jsr    r5,dilook; 0:xxh
  278.     jmp    8f
  279. .text
  280. 8:
  281. 4:
  282.     movb    (r0)+,r1
  283.     movb    (r0),r2
  284.     jsr    r5,dilook; xhx
  285.     movb    (r0),r1
  286.     movb    1(r0),r2
  287.     jsr    r5,dilook; hxx
  288.     cmp    r3,maxdig
  289.     blos    2f
  290.     mov    r3,maxdig
  291.     mov    r0,maxloc
  292. 2:
  293.     cmp    r0,hstart
  294.     blo    1b
  295.     mov    nhstart,hstart
  296.     cmp    maxdig,thresh
  297.     blo    digram
  298.     bisb    $200,*maxloc
  299.     inc    nhyph
  300. /    mov    maxdig,*octbufp
  301. /    inc    octcnt
  302. /    add    $2,octbufp
  303.     br    digram
  304. 3:
  305.     rts    r5
  306.  
  307. dilook:
  308.     mov    r4,-(sp)
  309.     bic    $!177,r2
  310.     bic    $!177,r1
  311.     jsr    pc,maplow
  312.     sub    $'a,r2
  313.     cmp    r2,$'z-'a
  314.     bhi    3f
  315.     mov    r2,r4
  316.     mov    r1,r2
  317.     jsr    pc,maplow
  318.     sub    $'a,r2
  319.     cmp    r2,$'z-'a
  320.     bhi    3f
  321.     mov    r3,-(sp)
  322.     mov    r2,r3
  323.     mpy    $13.,r3
  324.     clr    r2
  325.     clc
  326.     ror    r4
  327.     adc    r2
  328.     add    r3,r4
  329.     add    (r5)+,r4
  330.     movb    (r4),r4
  331.     tst    r2
  332.     bne    1f
  333.     asr    r4
  334.     asr    r4
  335.     asr    r4
  336.     asr    r4
  337. 1:
  338.     bic    $!17,r4
  339.     mov    r4,r3
  340.     mpy    (sp)+,r3
  341.     br    4f
  342. 3:
  343.     clr    r3
  344.     tst    (r5)+
  345. 4:
  346.     mov    (sp)+,r4
  347.     rts    r5
  348.  
  349. suffix:
  350.     mov    hstart,r0
  351.     jsr    pc,alph
  352.     bne    4f
  353.     jsr    pc,maplow
  354.     sub    $'a,r2
  355.     asl    r2
  356.     mov    suftab(r2),-(sp)
  357.     bic    $!37777,(sp)
  358.     beq    3f
  359. 1:
  360.     mov    hstart,r0
  361.     mov    (sp),r1
  362.     jsr    pc,rdsuf
  363.     movb    (r1),r3
  364.     beq    3f
  365.     bic    $!17,r3
  366.     add    r3,(sp)
  367.     add    r1,r3
  368. 2:
  369.     movb    -(r3),r2
  370.     cmp    r3,r1
  371.     ble    2f
  372.     bic    $!177,r2
  373.     mov    r2,-(sp)
  374.     movb    -(r0),r2
  375.     jsr    pc,maplow
  376.     cmp    r2,(sp)+
  377.     bne    1b
  378.     br    2b
  379. 2:
  380.     mov    hstart,r0
  381.     tst    (sp)+
  382.     movb    (r1),r3
  383.     bic    $!17,r3
  384.     add    r1,r3
  385.     bitb    $200,(r1)+
  386.     bne    1f
  387. 2:
  388.     dec    r0
  389.     cmp    r3,r1
  390.     ble    2f
  391.     tstb    -(r3)
  392.     bpl    2b
  393. 1:
  394.     mov    r0,hstart
  395.     dec    hstart
  396.     bitb    $100,-1(r1)
  397.     bne    2b
  398.     jsr    r5,checkvow
  399.     bne    4f
  400.     bisb    $200,(r0)
  401.     br    2b
  402. 2:
  403.     bitb    $40,-(r1)
  404.     bne    4f
  405.     jsr    pc,exword
  406.     bne    suffix
  407.     br    4f
  408. /    beq    suffix
  409. /    br    4f
  410. 3:
  411.     tst    (sp)+
  412. 4:
  413.     rts    r5
  414.  
  415. rdsuf:
  416.     mov    r0,-(sp)
  417.     mov    suff,nfile
  418.     mov    4(sp),r1
  419.     jsr    pc,rdsufb
  420.     mov    $sufb,r2
  421.     movb    r0,(r2)+
  422.     mov    r0,r3
  423.     bic    $!17,r3
  424. 1:
  425.     dec    r3
  426.     blt    1f
  427.     inc    r1
  428.     jsr    pc,rdsufb
  429.     movb    r0,(r2)+
  430.     br    1b
  431. 1:
  432.     mov    $sufb,r1
  433.     mov    (sp)+,r0
  434.     rts    pc
  435.