1: / 2: / 3: 4: / nroff1 -- text formatter 5: 6: / rts = 104000 7: signal = 48. 8: nop = 000240 9: 10: jmp ibuf 11: .data 12: ibuf: /init code in ibuf+obuf 13: cmp sp,$end 14: bhi 1f 15: jsr r5,string; emes1 16: sys exit 17: 1: 18: clr r0 19: jsr pc,ttyn 20: cmpb r0,$'x 21: bne 0f 22: inc iflg 23: mov $1,r0 24: jsr pc,ttyn 25: 0: 26: movb r0,ttyx+8 27: clr r0 28: jsr pc,mesg 29: sys open; ttyx; 2 30: bes 0f 31: mov r0,ttyid 32: mov r0,ttyod 33: 0: 34: mov ttyid,r0 35: sys gtty; ttys 36: sys signal; 1; place 37: sys signal; 2; place 38: bit $1,r0 39: beq 0f 40: sys signal; 2; 1 /no deletes 41: sys signal; 3; 1 /no quits 42: sys signal; 1; 1 /allow hangup 43: 0: 44: mov $'%,rlist 45: mov $"nl,rlist+2 46: mov $"dn,rlist+4 47: mov $"yr,rlist+6 48: mov $"mo,rlist+8. 49: mov $"dy,rlist+10. 50: mov $"dw,rlist+12. 51: mov $"hp,rlist+14. 52: mov sp,r0 53: jsr pc,makebf 54: sys open; suffil; 0 55: bes 1f 56: mov r0,suff 57: sys seek; 20; 0 58: bes 1f 59: mov suff,r0 60: sys read; suftab; 2*26. 61: 1: 62: clr r0 63: mov (sp)+,argc 64: dec argc 65: ble 4f 66: 1: 67: tst (sp)+ 68: mov (sp),r4 69: cmpb (r4)+,$'+ 70: bne 2f 71: jsr r5,pnum; pfrom 72: br 3f 73: 2: 74: cmpb -1(r4),$'- 75: bne 2f 76: tstb (r4) 77: beq 4f 78: cmpb (r4),$'m 79: bne 0f 80: mov $nextf1,r0 81: tstb (r4)+ 82: 8: 83: movb (r4)+,(r0)+ 84: bne 8b 85: inc nx 86: inc mflg 87: br 3f 88: 0: 89: cmpb (r4),$'r 90: bne 0f 91: tstb (r4)+ 92: movb (r4)+,r0 93: beq 3f 94: jsr pc,findr 95: mov r1,-(sp) 96: mov r4,ibufp 97: mov $-1,eibuf 98: jsr pc,atoi 99: mov (sp)+,r1 100: mov r0,(r1) 101: clr ch 102: br 3f 103: 0: 104: cmpb (r4),$'s 105: bne 0f 106: inc stop 107: br 3f 108: 0: 109: cmpb (r4),$'o 110: bne 0f 111: inc old 112: br 3f 113: 0: 114: cmpb (r4),$'i 115: bne 0f 116: inc stdi 117: br 3f 118: 0: 119: cmpb (r4),$'q 120: bne 0f 121: inc quiet 122: br 3f 123: 0: 124: cmpb (r4),$'h 125: bne 0f 126: clr slow 127: br 3f 128: 0: 129: cmpb (r4),$'n 130: bne 0f 131: inc r4 132: jsr r5,pnum; npn 133: br 3f 134: 0: 135: jsr r5,pnum; pto 136: 3: 137: dec argc 138: bgt 1b 139: 2: 140: 4: 141: / tst index 142: / beq 1f 143: / sys creat; indf; 666 144: / mov r0,indid 145: 1: 146: / mov $nop,get1a 147: clr init 148: mov $ibuf,ibufp 149: mov $ibuf,eibuf 150: mov sp,argp 151: clr r0 152: 1: 153: movb r0,trtab(r0) 154: inc r0 155: cmp r0,$128. 156: bne 1b 157: movb $040,trtab+014 158: mov sp,ssp 159: mov $70.,vlist+6 160: jsr pc,ctime 161: mov $-1,nl 162: mov $end,enda 163: clr ioff 164: jmp loop 165: makebf: 166: tst (r0)+ 167: mov (r0),r0 168: cmpb (r0),$'a 169: bne 0f 170: mov $bfn1,r0 171: mov r0,7f 172: mov r0,8f 173: mov r0,9f 174: / mov r0,place1 175: 0: 176: sys stat; 8:bfn; stbuf 177: bec 2f 178: sys creat; 9:bfn; 600 179: bec 1f 180: 2: 181: incb bfn1+3 182: cmpb bfn1+3,$'z 183: blos 0b 184: jmp place 185: 1: 186: mov r0,ibf 187: mov $blockend,r0 188: sub $block,r0 189: cmp r0,$1024. 190: blos 1f 191: 4 192: 1: 193: mov r0,blocksize 194: clr -(sp) 195: 2: 196: mov ibf,r0 197: sys write; block; 1024. 198: inc (sp) 199: cmp (sp),nev 200: ble 2b 201: 202: mov (sp)+,r3 203: mpy $1024.,r3 204: mov r3,nextb 205: mov r3,first 206: mov ibf,r0 207: sys close 208: sys open; 7:bfn; 2 209: jes place 210: mov r0,ibf 211: mov r0,ibf1 212: cmp $bfn1,7b 213: beq 1f 214: sys unlink; bfn 215: 1: 216: rts pc 217: 218: ctime: 219: sys time 220: sub $18000.,r1 /5hrs for est 221: sbc r0 222: ashc $-2,r0 223: div $21600.,r0 224: inc r0 225: mov r0,dy 226: / mov r1,fd 227: add $3,r0 228: mov r0,r1 229: sxt r0 230: div $7,r0 231: inc r1 232: mov r1,dw 233: 3: 234: mov yr,r1 235: sxt r0 236: div $4,r0 237: mov $28.,ms+2 238: tst r1 239: bne 0f 240: mov $29.,ms+2 241: 0: 242: clr r0 243: 1: 244: cmp dy,ms(r0) 245: ble 2f 246: sub ms(r0),dy 247: tst (r0)+ 248: cmp r0,$24. 249: blt 1b 250: inc yr 251: mov yr,r1 252: br 3b 253: 2: 254: asr r0 255: inc r0 256: mov r0,mo 257: rts pc 258: ms: 31.;28.;31.;30.;31.;30.;31.;31.;30.;31.;30.;31. 259: 260: pnum: 261: clr -(sp) 262: clr r3 263: 1: 264: movb (r4)+,r0 265: sub $'0,r0 266: cmp r0,$9 267: bhi 1f 268: inc (sp) 269: mpy $10.,r3 270: add r0,r3 271: br 1b 272: 1: 273: mov r3,r0 274: tst (sp)+ 275: beq 2f 276: mov r0,*(r5)+ 277: 1: 278: rts r5 279: 2: 280: tst (r5)+ 281: br 1b 282: 283: emes1: <Too many files.\n\0> 284: .even 285: obuf=ibuf+512. 286: .=ibuf+1024. 287: .text 288: loop: 289: clr nlflg 290: clr nflush 291: clr nb 292: mov ilistp,r1 293: jsr pc,getch1 294: mov r0,ch 295: cmp ilistp,r1 296: beq 1f 297: tst ejf 298: beq 1f 299: cmp ilistp,ejl 300: bhi 1f 301: mov ilistp,ejl 302: inc nflush 303: jsr pc,newline 304: br loop 305: 1: 306: jsr pc,getchar 307: tst pendt 308: bne 0f 309: tst lit 310: ble 1f 311: cmp frame,litlev 312: bhi 1f 313: dec lit 314: br 0f 315: 1: 316: cmpb r0,cc 317: beq 3f 318: cmpb r0,c2 319: beq 2f 320: cmpb r0,tch 321: beq 4f 322: cmpb r0,$002 323: beq 6f 324: 0: 325: movb r0,ch 326: jsr pc,text 327: br loop 328: 4: 329: inc tflg 330: inc copyf 331: 0: 332: jsr pc,getchar 333: mov r0,r5 334: jsr pc,putchar 335: cmp r5,$'\n 336: bne 0b 337: clr tflg 338: clr copyf 339: br loop 340: 2: 341: inc nb 342: 3: 343: jsr pc,control 344: 5: 345: jsr pc,flushi 346: br loop 347: 6: 348: inc raw 349: jsr pc,get1 350: movb r0,xpc 351: clr nlflg 352: 0: 353: jsr pc,get1 354: cmpb r0,xpc 355: beq 7f 356: jsr pc,pchar2 357: br 0b 358: 7: 359: clr raw 360: jbr loop 361: 362: mesg: 363: tst r0 364: bne setsame 365: sys stat; ttyx; stbuf 366: mov stbuf+4,0f 367: mov 0f,1f 368: bic $22,0f 369: sys 0;7f 370: .data 371: 7: sys chmod; ttyx; 0:.. 372: .text 373: rts pc 374: setsame: 375: sys 0;7f 376: .data 377: 7: sys chmod; ttyx; 1:.. 378: .text 379: rts pc 380: 381: stringfl: 382: jsr pc,flush 383: string: 384: mov r0,-(sp) 385: mov r1,-(sp) 386: mov r2,-(sp) 387: mov (r5)+,r1 388: mov r1,r2 389: mov r1,9f 390: 1: 391: tstb (r1)+ 392: bne 1b 393: dec r1 394: sub r2,r1 395: mov r1,1f 396: mov ttyod,r0 397: cmp r0,ibf 398: beq 2f 399: 0: 400: sys 0;7f 401: .data 402: 7: sys write; 9:..; 1:.. 403: .text 404: bes 2f 405: 1: 406: mov (sp)+,r2 407: mov (sp)+,r1 408: mov (sp)+,r0 409: rts r5 410: 2: 411: sys creat; tmfile; 666 412: bes 1b 413: mov r0,ttyod 414: br 0b 415: 416: flushi: 417: tst nflush 418: bne 1f 419: clr ch 420: tst nlflg 421: bne 1f 422: tst donef 423: beq 2f 424: cmp $ilist,ilistp 425: beq 1f 426: 2: 427: jsr pc,getchar 428: br flushi 429: 1: 430: rts pc 431: 432: gettchar: 433: tst ul 434: ble getchar 435: tst ulstate 436: beq 3f 437: tst bsc 438: bgt 1f 439: tst ulc 440: bgt 2f 441: clr ulstate 442: br 3f 443: 1: 444: dec bsc 445: mov $010,r0 446: rts pc 447: 2: 448: dec ulc 449: mov $'_,r0 450: rts pc 451: 3: 452: jsr pc,getchar 453: cmp r0,$016 454: beq 4f 455: cmp r0,$017 456: beq 4f 457: cmp r0,$'0 458: blt 1f 459: cmp r0,$'9 460: ble 2f 461: cmp r0,$'A 462: blt 1f 463: cmp r0,$'Z 464: ble 2f 465: cmp r0,$'a 466: blt 1f 467: cmp r0,$'z 468: ble 2f 469: 1: 470: tst ulc 471: ble 4f 472: 3: 473: mov $1,ulstate 474: mov r0,ch 475: br gettchar 476: 2: 477: inc bsc 478: inc ulc 479: 4: 480: tst r0 481: rts pc 482: 483: rtnch: 484: mov ch,r0 485: clr ch 486: tst r0 487: rts pc 488: 489: getchar: 490: mov r1,-(sp) 491: 1: 492: jsr pc,getch1 493: bmi 2f 494: cmpb r0,fc 495: bne 2f 496: tst copyf 497: bne 2f 498: jsr pc,setfield 499: br 1b 500: 2: 501: mov (sp)+,r1 502: tst r0 503: rts pc 504: getch1: 505: tst ch 506: bne rtnch 507: mov r1,-(sp) 508: 1: 509: jsr pc,getch0 510: bmi 2f 511: tst copyf 512: bne 2f 513: cmpb r0,$030 /\w 514: bne 2f 515: jsr r5,setwd;getch0 516: br 1b 517: 2: 518: jsr pc,width 519: add r1,column 520: mov (sp)+,r1 521: tst r0 522: rts pc 523: 524: getch0: 525: tst ch 526: bne rtnch 527: 1: 528: tst nlflg 529: beq 1f 530: mov $'\n,r0 531: rts pc 532: 1: 533: mov r1,-(sp) 534: 1: 535: jsr pc,get1 536: cmpb r0,eschar 537: bne 2f 538: jsr pc,get1 539: jsr r5,switch; esctab 540: cmpb r0,$'\n 541: bne 3f 542: / clr column 543: br 1b 544: 2: 545: cmp r0,$033 /prefix 546: bne 3f 547: jsr pc,get1 548: jsr r5,switch; pfxtab 549: 3: 550: cmpb r0,$376 /comment 551: bne 2f 552: 0: 553: jsr pc,get1 554: bmi 0b 555: cmpb r0,$012 556: bne 0b 557: 2: 558: cmpb numc,r0 559: bne 2f 560: clr r1 561: jsr pc,setn 562: br 1b 563: 2: 564: cmpb r0,$372 /mark hor place 565: bne 2f 566: tst copyf 567: bne 2f 568: mov r0,r1 569: jsr pc,setn 570: jsr pc,findr 571: jeq 1b 572: mov column,(r1) 573: jbr 1b 574: 2: 575: cmpb r0,$025 /text string 576: bne 2f 577: jsr pc,setstr 578: br 1b 579: 2: 580: cmpb dolc,r0 581: bne 2f 582: jsr pc,seta 583: br 1b 584: 2: 585: cmpb r0,$026 /font indicator 586: bne 2f 587: jsr pc,get1 588: br 1b 589: 2: 590: cmpb r0,$027 /point size 591: bne 2f 592: jsr pc,eatps 593: br 1b 594: 2: 595: cmpb r0,$021 /spead line 596: bne 2f 597: tst copyf 598: bne 2f 599: inc spread 600: br 1b 601: 2: 602: cmpb r0,$006 /repeat 603: bne 2f 604: jsr pc,setrpt 605: br 1b 606: 2: 607: cmp r0,$'\n 608: bne 3f 609: inc nlflg 610: clr column 611: tst ip 612: bne 3f 613: inc iline 614: 3: 615: mov (sp)+,r1 616: tst r0 617: rts pc 618: 619: eatps: 620: jsr pc,get1 621: cmpb r0,$'+ 622: beq 0f 623: cmpb r0,$'- 624: beq 0f 625: sub $'0,r0 626: ble 1f 627: cmp r0,$3 628: bgt 1f 629: 0: 630: jsr pc,get1 631: 1: 632: rts pc 633: 634: .data 635: esctab: 636: .byte '*, 025 /text string 637: .byte 'n, 034 /number char 638: .byte '$, 020 /dollar char 639: eschar: 640: .byte '\\, 134 /backslash 641: .byte 'e, 013 /printable escape char 642: .byte 'f, 026 /font indicator 643: .byte 's, 027 /point size 644: .byte '&, 037 /filler 645: .byte 't, 011 /hor tab 646: .byte '!, 024 /transparent char 647: .byte 'p, 021 /spread line 648: .byte 'c, 005 /interrupted text 649: .byte 'k, 372 /mk hor 650: / 014 hidden tab replacement character 651: .byte ' , 014 /\(space) 652: .byte 'x, 016 /SO (extra chars) 653: .byte 'y, 017 /SI (normal characters) 654: .byte 'l, 0177 /delete 655: .byte 'd, 032 /hlf (down) 656: .byte 'u, 035 /hlr (up) 657: .byte 'r, 036 /flr (reverse) 658: .byte 'a, 001 /leader char 659: .byte ':, 003 /lem char 660: .byte '?, 002 /raw trans 661: .byte '", 376 /comment 662: .byte 'w, 030 /width size char 663: .byte 0, 0 664: .text 665: 666: pfxtab: 667: .byte '7, 036 /flr 668: .byte '8, 035 /hlr 669: .byte '9, 032 /hlf 670: .byte '1, 026 /set hor tabs 671: .byte '2, 027 /clr hor tabs 672: .byte 0,0 673: pfxtab1: 674: 675: switch: 676: mov r1,-(sp) 677: mov (r5)+,r1 678: 1: 679: cmpb (r1)+,r0 680: beq 1f 681: tstb (r1)+ 682: bne 1b 683: cmp r1,$pfxtab 684: ble 0f 685: cmp r1,$pfxtab1 686: bgt 0f 687: mov $037,r0 688: 0: 689: mov (sp)+,r1 690: rts r5 691: 1: 692: movb (r1)+,r0 693: mov (sp)+,r1 694: rts r5 695: 696: get1: 697: tst nspace 698: ble 1f 699: dec nspace 700: mov rchar,r0 701: rts pc 702: 1: 703: mov r1,-(sp) 704: 4: 705: tst cp 706: beq 2f 707: movb *cp,r0 708: bne 1f 709: clr cp 710: br 4b 711: 1: 712: inc cp 713: br 8f 714: 2: 715: tst ap 716: beq 2f 717: movb *ap,r0 718: bne 1f 719: clr ap 720: br 4b 721: 1: 722: inc ap 723: br 8f 724: 2: 725: cmp $-1,ip 726: bne 1f 727: jsr pc,rdtty 728: br 8f 729: 1: 730: tst ip 731: beq 5f 732: jsr pc,rbf 733: br 8f 734: 5: 735: tst donef 736: beq 0f 737: jmp done 738: 0: 739: tst nx 740: bne 0f 741: 3: 742: mov ibufp,r1 743: cmp r1,eibuf 744: bne 3f 745: cmp r1,$-1 746: beq 3f 747: 0: 748: tst nfo 749: bne 2f 750: 1: 751: jsr pc,nextfile 752: bne 3b 753: 2: 754: clr nx 755: mov ifile,r0 756: sys read; ibuf; 512. 757: bes 1b 758: tst r0 759: beq 1b 760: mov $ibuf,r1 761: add r1,r0 762: mov r0,eibuf 763: 3: 764: movb (r1)+,r0 765: bic $!377,r0 766: inc ioff 767: mov r1,ibufp 768: tst raw 769: bne 6f 770: cmpb r0,$040 771: bhis 8f 772: mov r0,-(sp) 773: mov cbits,r0 774: mov cbits+2,r1 775: ashc (sp),r0 776: bmi 0f 777: clr (sp) 778: 0: 779: mov (sp)+,r0 780: 8: 781: tst raw1 782: bne 6f 783: cmp r0,$004 784: beq 4b 785: tst copyf 786: bne 6f 787: cmpb r0,$011 /tab 788: bne 0f 789: mov tabc,rchar 790: br 1f 791: 0: 792: cmpb r0,$001 793: bne 6f 794: mov dotc,rchar 795: 1: 796: cmpb r0,fc 797: beq 6f 798: cmpb r0,padc 799: beq 6f 800: mov (sp)+,r1 801: mov $tabtab,r0 802: inc nspace 803: 1: 804: tst (r0) 805: jeq get1 806: cmp column,(r0)+ 807: bge 1b 808: mov -(r0),nspace 809: sub column,nspace 810: jbr get1 811: 6: 812: /get1a: br 7f 813: tst init 814: bne 7f 815: tst r0 816: jeq 4b 817: 7: 818: mov (sp)+,r1 819: tst r0 820: rts pc 821: cbits: 040743;20 /001,007-012,033 (soh,bel,bs,tab,nl,so,si,esc) 822: /cbits: 041743;20 /001,006-012,033 (soh,ack,bel,bs,tab,nl,so,si,esc) 823: 824: edone: 825: mov $stk,frame 826: clr ip 827: done: 828: clr app 829: clr ds 830: mov em,r0 831: beq 0f 832: clr em 833: mov pc,donef 834: mov frame,-(sp) 835: jsr pc,cont1 836: cmp (sp)+,frame 837: bne 1f 838: 0: 839: tst nfo 840: beq 3f 841: clr op 842: clr mflg 843: tst woff 844: beq 0f 845: clr r0 846: jsr pc,wbt 847: 0: 848: clr pendnf 849: tst pendw 850: beq 0f 851: clr *pendw 852: clr pendw 853: 0: 854: cmp $1,donef 855: beq done1 856: mov $1,donef 857: clr ip 858: mov $ilist,ilistp 859: jsr pc,rbreak 860: inc nflush 861: mov $ilist,r0 862: jsr pc,eject 863: 1: 864: mov ssp,sp 865: jmp loop 866: done1: 867: / tst pendb 868: / bne 0b 869: tst nl 870: beq 1f 871: jsr pc,newline 872: br 1b 873: 1: 874: 3: 875: done2: 876: jsr pc,flush 877: place: 878: sys signal; 2; 1 879: tst quiet 880: beq 1f 881: bis $10,ttym 882: mov ttyid,r0 883: sys stty; ttys 884: 1: 885: mov $1,r0 886: jsr pc,mesg 887: mov outid,r0 888: sys close 889: sys wait 890: sys exit 891: 892: nextfile: 893: mov ifile,r0 894: beq 1f 895: sys close 896: 1: 897: tst nx 898: beq 2f 899: mov $nextf,r0 900: br 3f 901: 2: 902: cmp ifp,$ifl 903: beq 1f 904: jsr pc,popf 905: bne nextfile 906: tst pc 907: rts pc 908: 1: 909: dec argc 910: blt 4f 911: mov *argp,r0 912: add $2,argp 913: 3: 914: mov r0,5f 915: cmpb (r0)+,$'- 916: bne 0f 917: tstb (r0) 918: bne 0f 919: clr r0 920: br 1f 921: 0: 922: sys 0;7f 923: .data 924: 7: sys open; 5:..; 0 925: .text 926: bec 1f 927: sub mflg,nfo 928: jgt done 929: jsr r5,string; omes 930: mov 5b,8f 931: jmp 7f 932: .data 933: 7: jsr r5,string; 8:.. 934: jmp 6f 935: .text 936: 6: 937: jsr r5,string; 9f 938: jbr done 939: 1: 940: clr iline 941: inc nfo 942: mov r0,ifile 943: clr ioff 944: rts pc 945: 4: 946: sub mflg,nfo 947: beq 0f 948: tst stdi 949: jeq done 950: 0: 951: clr iline 952: clr mflg 953: inc nfo 954: clr stdi 955: clr ifile 956: clr ioff 957: rts pc 958: omes: <Cannot open: \0> 959: 9: <\n\0> 960: .even 961: 962: popf: 963: clr -(sp) 964: mov ifp,r1 965: cmp r1,$ifl 966: beq 1f 967: sub $2,ifp 968: mov -(r1),ifile 969: mov [offl-ifl](r1),ioff 970: mov ioff,0f 971: bic $777,0f 972: mov ifile,r0 973: beq 4f 974: sys 0;7f 975: .data 976: 7: sys seek; 0:..; 0 977: .text 978: bes 2f 979: mov ifile,r0 980: sys read; ibuf; 512. 981: bes 2f 982: add $ibuf,r0 983: mov r0,eibuf 984: sub ioff,0b 985: mov $ibuf,ibufp 986: mov ifile,r0 987: jsr pc,ttyn 988: cmpb r0,$'x 989: bne 1f 990: sub 0b,ibufp 991: cmp ibufp,eibuf 992: blo 1f 993: 2: 994: inc (sp) 995: 1: 996: tst (sp)+ 997: rts pc 998: 4: 999: jsr pc,restbuf 1000: br 1b 1001: 1002: savebuf: 1003: mov $ibuf,r0 1004: mov $xbuf,r1 1005: mov ibufp,xbufp 1006: mov eibuf,xeibuf 1007: 1: 1008: mov (r0)+,(r1)+ 1009: cmp r0,eibuf 1010: blo 1b 1011: rts pc 1012: 1013: restbuf: 1014: mov $xbuf,r0 1015: mov $ibuf,r1 1016: mov xbufp,ibufp 1017: mov xeibuf,eibuf 1018: 1: 1019: mov (r0)+,(r1)+ 1020: cmp r1,eibuf 1021: blo 1b 1022: rts pc 1023: 1024: putchar: 1025: bic $!377,r0 1026: beq 2f 1027: tstb r0 1028: bmi pchar2 1029: cmpb r0,$013 /\e 1030: bne 0f 1031: tst op 1032: bne 0f 1033: movb eschar,r0 1034: br putchar 1035: 0: 1036: movb trtab(r0),r0 1037: cmp r0,$' 1038: bne 1f 1039: inc nsp 1040: 2: 1041: rts pc 1042: 1: 1043: cmp r0,$'\n 1044: bne 1f 1045: clr nsp 1046: clr ocol 1047: br pchar1 1048: 1: 1049: mov $011,-(sp) 1050: 1: 1051: tst nsp 1052: beq 2f 1053: tst slow 1054: bne 4f 1055: tst op 1056: bne 4f 1057: jsr pc,dsp 1058: cmp nsp,r1 1059: blt 4f 1060: mov $011,(sp) 1061: cmp r1,$1 1062: bgt 8f 1063: mov $040,(sp) 1064: dec nsp 1065: br 9f 1066: 8: 1067: sub r1,nsp 1068: 9: 1069: mov r0,-(sp) 1070: 3: 1071: mov 2(sp),r0 1072: jsr pc,pchar1 1073: mov (sp)+,r0 1074: br 1b 1075: 4: 1076: mov r0,-(sp) 1077: mov $' ,r0 1078: jsr pc,pchar1 1079: mov (sp)+,r0 1080: dec nsp 1081: bne 4b 1082: 2: 1083: tst (sp)+ 1084: cmp r0,$026 1085: blt 2f 1086: cmp r0,$037 1087: beq 3f 1088: bgt 2f 1089: mov r0,-(sp) 1090: jsr r5, switch; unpfx 1091: cmp (sp)+,r0 1092: beq 2f 1093: mov r0,-(sp) 1094: mov $033,r0 /prefix 1095: jsr pc,pchar1 1096: dec ocol 1097: mov (sp)+,r0 1098: 2: 1099: pchar1: 1100: cmp r0,$011 1101: bne 1f 1102: jsr pc,dsp 1103: br 2f 1104: 1: 1105: jsr pc,width 1106: 2: 1107: add r1,ocol 1108: pchar2: 1109: tst op 1110: beq 1f 1111: mov op,r1 1112: jsr pc,wbf 1113: mov r1,op 1114: br 3f 1115: 1: 1116: tst tflg 1117: bne 1f 1118: cmp pn,pfrom 1119: blt 3f 1120: clr pfrom 1121: 1: 1122: movb r0,*obufp 1123: inc obufp 1124: cmp obufp,$obuf+512. 1125: beq flush 1126: 3: 1127: rts pc 1128: 1129: dsp: 1130: clr r1 1131: 1: 1132: add $8.,r1 1133: cmp ocol,r1 1134: bgt 1b 1135: sub ocol,r1 1136: bne 2f 1137: mov $8.,r1 1138: 2: 1139: rts pc 1140: 1141: unpfx: 1142: .byte 032, '9 1143: .byte 035, '8 1144: .byte 036, '7 1145: .byte 031, '3 1146: .byte 030, '4 1147: .byte 026, '1 1148: .byte 027, '2 1149: .byte 0,0 1150: 1151: flush: 1152: mov obufp,r0 1153: sub $obuf,r0 1154: mov r0,0f 1155: mov outid,r0 1156: sys 0;7f 1157: .data 1158: 7: sys write; obuf; 0:0 1159: .text 1160: jes place 1161: inc toolate 1162: mov $obuf,obufp 1163: rts pc 1164: 1165: rdtty: 1166: / mov sp,r1 1167: / sys signal; 2; rdtty1 1168: clr r0 1169: sys read; char; 1 1170: tst r0 1171: bne 2f 1172: rdtty1: 1173: / mov r1,sp 1174: jsr pc,popi 1175: rdtty2: 1176: clr tty 1177: tst quiet 1178: beq 0f 1179: bis $10,ttym 1180: mov ttyid,r0 1181: sys stty; ttys 1182: 0: 1183: clr r0 1184: 1: 1185: / sys signal; 2; place 1186: rts pc 1187: 2: 1188: mov char,r0 1189: cmpb r0,$'\n 1190: beq 3f 1191: mov $1,tty 1192: br 1b 1193: 3: 1194: inc tty 1195: cmp tty,$3 1196: beq rdtty1 1197: br 1b 1198: 1199: ttyn: 1200: mov r1,-(sp) 1201: mov $'x,-(sp) 1202: clr -(sp) 1203: sys fstat; ybuf 1204: bes 3f 1205: mov ybuf+2,(sp) 1206: sys open; dev; 0 1207: bes 3f 1208: mov r0,r1 1209: 1: 1210: mov r1,r0 1211: sys read; ybuf; 16. 1212: bes 2f 1213: cmp r0,$16. 1214: bne 2f 1215: mov $ybuf,r0 1216: cmp (r0)+,(sp) 1217: bne 1b 1218: cmp (r0)+,$"tt 1219: bne 1b 1220: cmpb (r0)+,$'y 1221: bne 1b 1222: tstb (r0)+ 1223: beq 1b 1224: cmpb (r0),$'\0 1225: bne 1b 1226: movb -(r0),2(sp) 1227: 2: 1228: mov r1,r0 1229: sys close 1230: 3: 1231: tst (sp)+ 1232: movb (sp)+,r0 1233: mov (sp)+,r1 1234: rts pc 1235: dev: </dev\0> 1236: .even 1237: 1238: cont1: 1239: mov r0,-(sp) 1240: mov pc,r2 1241: br 0f 1242: control: 1243: jsr pc,getchar 1244: mov r0,-(sp) 1245: jsr pc,getchar 1246: cmpb r0,$'\n 1247: beq 8f 1248: cmpb r0,$' / 1249: bne 9f 1250: 8: 1251: mov r0,ch 1252: clr r0 1253: 9: 1254: swab r0 1255: bis (sp),r0 1256: clr r2 1257: 0: 1258: mov $contab,r1 1259: 1: 1260: mov (r1)+,(sp) 1261: bic $100000,(sp) 1262: cmp r0,(sp) 1263: bne 4f 1264: mov (r1),(sp) 1265: tst -(r1) 1266: bpl 3f 1267: clr *nxf 1268: tst r2 1269: bne 2f 1270: jsr pc,collect 1271: 2: 1272: jsr pc,flushi 1273: jsr pc,pushi 1274: beq 5f 1275: mov (sp),ip 1276: br 5f 1277: 3: 1278: jmp *(sp)+ 1279: 4: 1280: cmp (r1)+,$-1 1281: bne 1b 1282: 5: 1283: tst (sp)+ 1284: rts pc 1285: 1286: .data 1287: contab: 1288: <ad>; casead 1289: <bp>; casebp 1290: <pn>; casepn 1291: <br>; casebr 1292: <cc>; casecc 1293: <c2>; casec2 1294: <ce>; casece 1295: <fi>; casefi 1296: <in>; casein 1297: <li>; caseli 1298: <ll>; casell 1299: <ls>; casels 1300: <ns>; casens 1301: <rs>; casers 1302: <na>; casena 1303: <ne>; casene 1304: <nf>; casenf 1305: <pl>; casepl 1306: <sp>; casesp 1307: <lv>; casesv 1308: <sv>; casesv 1309: <os>; caseos 1310: <ta>; caseta 1311: <ti>; caseti 1312: <tr>; casetr 1313: <ul>; caseul 1314: <tl>; casetl 1315: <lt>; caselt 1316: <hc>; casehc 1317: <hy>; casehy 1318: <nh>; casenh 1319: <nm>; casenm 1320: <np>; casenp 1321: <nn>; casenn 1322: <ar>; casear 1323: <ro>; casero 1324: <RO>; caseroc 1325: <nx>; casenx 1326: <so>; caseso 1327: <po>; casepo 1328: <de>; casede 1329: <ds>; caseds 1330: <am>; caseam 1331: <as>; caseas 1332: <da>; caseda 1333: <di>; casedi 1334: <rm>; caserm 1335: <rn>; casern 1336: <ig>; caseig 1337: <tc>; casetc 1338: <ec>; caseec 1339: <eo>; caseeo 1340: <lc>; caselc 1341: <nc>; casenc 1342: <ev>; caseev 1343: <if>; caseif 1344: <wh>; casewh 1345: <ch>; casech 1346: <rd>; caserd 1347: <tm>; casetm 1348: <nr>; casenr 1349: <mk>; casemk 1350: <rt>; casert 1351: <ab>; casest 1352: <fl>; casefl 1353: <ex>; done 1354: <xh>; casexh 1355: <em>; caseem 1356: <fc>; casefc 1357: <af>; caseaf 1358: <pi>; casepi 1359: <hw>; casehw 1360: bnames: .=.+512. 1361: -1; -1 1362: .text