Research V7 development
[unix-history] / usr / src / cmd / roff / roff4.s
CommitLineData
4ad4d0b0
KT
1/
2/
3
4/ roff4 -- runoff
5
6text:
7/ inc tottext
8 clr ulstate
9 clr wch
10 clr wne
11 tst ce
12 bne nofill
13 tst fi
14 beq nofill
15 jsr pc,getchar
162:
17 mov r0,ch
18 cmp $' ,r0
19 bne 2f
20 jsr pc,rbreak
211:
22 jsr pc,getchar
23 cmp $' ,r0
24 bne 2b
25 inc un
26 br 1b
272:
28 cmp r0,$'\n
29 bne 2f
30 jsr pc,rbreak
31 clr ch
32 jsr pc,nline
33 br 4f
342:
35 tst wch
36 bne 3f
37 jsr pc,getword
38 br 4f
393:
40 jsr pc,movword
41 bne 2b
42 jsr pc,adjust
43 br 2b
444:
45 dec ul
46 bge 1f
47 clr ul
481:
49 rts pc
50
51nofill:
52 jsr pc,rbreak
531:
54 jsr pc,gettchar
55 cmp r0,$'\n
56 beq 1f
57 jsr pc,width
58 add r1,ne
59 jsr pc,storeline
60 br 1b
611:
62 tst ce
63 ble 2f
64 dec ce
65 mov nel,r0
66 asr r0
67 bpl 1f
68 clr r0
691:
70 add r0,un
71 tst numbmod
72 beq 2f
73 add $2,un
742:
75 clr fac
76 clr fmq
77 mov $1000,nwd
78 mov $' ,r0
79 jsr pc,storeline
80 jsr pc,rbreak
81 dec ul
82 bpl 2f
83 clr ul
842:
85 rts pc
86
87adjust:
88 mov r2,-(sp)
89 mov r3,-(sp)
90 clr r2
91 clr r3
92 tst ad
93 beq 1f
94 mov nwd,r0
95 dec r0
96 ble 1f
97 mov nel,r3
98 ble 1f
99 dvd r0,r2
1001:
101 mov r3,fac
102 mov r2,fmq
103 mov (sp)+,r3
104 mov (sp)+,r2
105 jsr pc,rbreak
106 rts pc
107
108fill:
109 mov fmq,r0
1101:
111 inc r0
112 dec nc
113 cmpb (r2)+,$'
114 beq 1b
115 dec r2
116 bit $1,totout
117 beq 2f
118 inc fac
119 cmp fac,nwd
120 blt 1f
121 inc r0
122 br 1f
1232:
124 dec fac
125 bmi 1f
126 inc r0
1271:
128 jsr pc,space
129 movb (r2),r0
130 rts pc
131
132movword:
133 mov wch,wordend
134 mov wordp,r4
135 add r4,wordend
136 tst nwd
137 bne 2f
1381:
139 movb (r4)+,r0
140 cmp r0,$'
141 bne 1f
142 dec wch
143 jsr pc,width
144 sub r1,wne
145 br 1b
1461:
147 dec r4
1482:
149 cmp wne,nel
150 ble 1f
151 cmp nel,$4
152 ble 1f
153 mov ls,r0
154 add nl,r0
155 cmp r0,bl
156 bgt 2f
157 mov ls,r0
158 asl r0
159 add nl,r0
160 cmp r0,bl
161 bgt 1f
1622:
163 jsr pc,hyphen
1641:
165 clr nhyph
166 mov wch,-(sp)
1671:
168 movb (r4)+,r0
169 cmp r0,$'-
170 bne 2f
171 movb (r4),r2
172 jsr pc,alph2
173 bne 2f
174 bisb $200,(r4)
1752:
176 tst r0
177 bpl 2f
178 bic $!177,r0
179 mov r4,r3
180 sub $4,r3
181 cmp r3,$word
182 blo 2f
183 movb (r3),r2
184 bic $!177,r2
185 jsr pc,alph2
186 beq 3f
187 cmp nel,$2
188 ble 2f
1893:
190 mov r0,-(sp)
191 clr r0
192 jsr pc,storeline
193 mov (sp)+,r0
194 inc nhyph
1952:
196 jsr pc,width
197 sub r1,wne
198 jsr pc,storeline
199 dec wch
200 bne 1b
201 tst nel
202 blt 1f
203 inc nwd
204 tst (sp)+
205 clz
206 rts pc
2071:
208 mov linep,r3
2091:
210 tst nhyph
211 bne 2f
212 tst nwd
213 beq 3f
214 cmp wch,(sp)
215 beq 4f
2162:
217 movb -(r3),r0
218 bne 2f
219 dec nhyph
220 bne 5f
221 tst nwd
222 beq 6f
2235:
224 tst nel
225 ble 2f
2266:
227 cmpb -1(r3),$'-
228 beq 3f
229 movb $'-,(r3)
230 dec nel
231 inc ne
232 br 3f
2332:
234 dec nc
235 tstb (r3)
236 beq 1b
237 jsr pc,width
238 sub r1,ne
239 add r1,nel
240 inc wch
241 dec r4
242 add r1,wne
243 br 1b
2443:
245 inc nwd
2464:
247 mov r4,wordp
248 bicb $!177,(r4)
249 cmp r4,$word
250 bge 4f
251 4
2524:
253 tst (sp)+
254 sez
255 rts pc
256
257topbot:
258 mov pl,r0
259 bne 1f
260 clr bl
261 rts pc
2621:
263 sub ma3,r0
264 sub ma4,r0
265 sub hx,r0
266 mov r0,bl
267 mov ma1,r0
268 add ma2,r0
269 add hx,r0
270 cmp r0,bl
271 blt 1f
272 mov $2,r0
273 mov r0,ma1
274 mov r0,ma2
275 mov r0,ma3
276 mov r0,ma4
277 mov $66.,pl
278 br topbot
2791:
280 cmp nl,bl
281 ble 1f
282 mov bl,nl
2831:
284 rts pc
285
286width:
287 cmp r0,ohc
288 beq 2f
289 tst r0
290 beq 2f
291 cmp r0,$0177
292 beq 2f
293 cmp r0,$010
294 bne 1f
295 mov $-1,r1
296 rts pc
2971:
298 cmp $' ,r0
299 bgt 2f
300 mov $1,r1
301 rts pc
3022:
303 clr r1
304 rts pc
305
306headin:
307 jsr pc,skipcont
308 mov nextb,r1
309 mov r1,*(r5)+
310 jsr pc,gettchar
311 cmp r0,$'\n
312 beq 2f
313 mov r0,r2
3141:
315 jsr pc,gettchar
316 cmp r0,$'\n
317 beq 2f
318 cmp r0,r2
319 bne 3f
320 clr r0
3213:
322 jsr pc,wbf
323 br 1b
3242:
325 clr r0
326 jsr pc,wbf
327 mov r1,nextb
328 mov ll,llh
329 rts r5
330
331headout:
332 tst hx
333 bne 0f
334 tst (r5)+
335 rts r5
3360:
337 clr -(sp)
338 mov *(r5),r2
339 mov ibf1,nfile
340 jsr r5,headseg; width
341 mov r0,-(sp)
342 jsr r5,headseg; width
343 mov r0,-(sp)
344 jsr r5,headseg; width
345 mov r0,-(sp)
346 mov po,r0
347 jsr pc,space
348 tst numbmod
349 beq 1f
350 mov $5,r0
351 add ni,r0
352 mov r0,6(sp)
3531:
354 mov *(r5)+,r2
355 jsr r5,headseg; putchar
356 mov llh,r0
357 add 6(sp),r0
358 sub 2(sp),r0
359 asr r0
360 sub 4(sp),r0
361 bge 1f
362 clr r0
3631:
364 mov r0,-(sp)
365 jsr pc,space
366 jsr r5,headseg; putchar
367 mov llh,r0
368 sub (sp)+,r0
369 sub (sp)+,r0
370 sub (sp)+,r0
371 sub (sp)+,r0
372 add (sp)+,r0
373 jsr pc,space
374 jsr r5,headseg; putchar
375 jsr pc,newline
376 rts r5
377
378headseg:
379 clr -(sp)
3801:
381 mov r1,-(sp)
382 mov r2,r1
383 inc r2
384 jsr pc,rdsufb
385 mov (sp)+,r1
386 tstb r0
387 beq 1f
388 cmp r0,$'%
389 beq 2f
390 jsr pc,*(r5)
391 add r1,(sp)
392 br 1b
3932:
394 mov pn,r0
395 clr r1
396 tst ro
397 beq 2f
398 mov $ones,onesp
399 mov $fives,fivesp
400 jsr pc,roman
401 add r1,(sp)
402 br 1b
4032:
404 jsr pc,decml
405 add r1,(sp)
406 br 1b
4071:
408 mov (sp)+,r0
409 tst (r5)+
410 rts r5
411
412space:
413 jsr r5,nlines; putchar
414 rts pc
415
416nlines:
417 mov r0,-(sp)
4181:
419 dec (sp)
420 blt 1f
421 mov $' ,r0
422 jsr pc,*(r5)
423 br 1b
4241:
425 cmp (r5)+,(sp)+
426 rts r5
427
428decimal:
429 jsr pc,decml
430 tst (r5)+
431 rts r5
432
433decml:
434 mov r2,-(sp)
435 mov r3,-(sp)
436 jsr pc,decml1
437 mov (sp)+,r3
438 mov (sp)+,r2
439 rts pc
440
441decml1:
442 mov r1,-(sp)
443 clr r2
444 mov r0,r3
445 dvd $10.,r2
446 mov r3,-(sp)
447 mov r2,r0
448 beq 1f
449 jsr pc,decml
450 mov r1,2(sp)
4511:
452 mov (sp)+,r0
453 add $'0,r0
454 jsr pc,*(r5)
455 add (sp)+,r1
456 rts pc
457
458roman:
459 mov r2,-(sp)
460 mov r3,-(sp)
461 jsr pc,roman1
462 mov (sp)+,r3
463 mov (sp)+,r2
464 rts pc
465roman1:
466 clr r2
467 mov r0,r3
468 bne .+4
469 rts pc
470 mov r1,-(sp)
471 dvd $10.,r2
472 mov r3,-(sp)
473 mov r2,r0
474 inc onesp
475 inc fivesp
476 jsr pc,roman
477 mov r1,2(sp)
478 dec onesp
479 dec fivesp
480 clr r2
481 mov (sp)+,r3
482 dvd $5.,r2
483 cmp r3,$4
484 bne 1f
485 movb *onesp,r0
486 jsr pc,*(r5)
487 add r1,(sp)
488 tst r2
489 beq 2f
490 inc onesp
491 movb *onesp,r0
492 dec onesp
493 br 3f
4942:
495 movb *fivesp,r0
4963:
497 jsr pc,*(r5)
498 add (sp)+,r1
499 rts pc
5001:
501 tst r2
502 beq 2f
503 movb *fivesp,r0
504 jsr pc,*(r5)
505 add r1,(sp)
5062:
507 dec r3
508 blt 1f
509 movb *onesp,r0
510 jsr pc,*(r5)
511 add r1,(sp)
512 br 2b
5131:
514 mov (sp)+,r1
515 rts pc
516