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

  1. /
  2. /
  3.  
  4. / fx9 -- code
  5.  
  6. /    jsr    r5,code; <string\0>; .even
  7. /        arg1
  8. /        arg2
  9. /        ...
  10. /
  11. / args specified by %<c> in string.
  12. /   %s:  string
  13. /   %d:  decimal number
  14. /   %o:  octal number
  15. /   %c:  character
  16. /
  17. / args are addresses
  18. / or registers r0-r4
  19.  
  20. .globl    code
  21.  
  22. .globl    putc
  23. .globl    getname
  24.  
  25. code:
  26.     mov    r4,-(sp)
  27.     mov    r3,-(sp)
  28.     mov    r2,-(sp)
  29.     mov    r1,-(sp)
  30.     mov    r0,-(sp)
  31.     mov    r5,r4
  32. 1:
  33.     tstb    (r5)+
  34.     bne    1b
  35.     inc    r5
  36.     bic    $1,r5
  37. 1:
  38.     movb    (r4)+,r0
  39.     beq    1f
  40.     cmp    r0,$'%
  41.     beq    2f
  42.     jsr    r5,putc; obuf
  43.     br    1b
  44. 2:
  45.     movb    (r4)+,r0
  46.     beq    1f
  47.     cmp    r0,$'s
  48.     beq    cstr
  49.     cmp    r0,$'c
  50.     beq    cchr
  51.     cmp    r0,$'d
  52.     beq    cdec
  53.     cmp    r0,$'o
  54.     beq    coct
  55.     cmp    r0,$'n
  56.     beq    cnam
  57.     jsr    r5,putc; obuf
  58.     br    1b
  59. cnam:
  60.     jsr    pc,cget
  61.     mov    r1,r3
  62.     jsr    r5,getname
  63.     mov    $symbuf,r1
  64.     br    2f
  65. cstr:
  66.     jsr    pc,cget
  67. 2:
  68.     movb    (r1)+,r0
  69.     beq    1b
  70.     cmp    r0,$'\n
  71.     beq    2b
  72.     jsr    r5,putc; obuf
  73.     br    2b
  74. cchr:
  75.     jsr    pc,cget
  76.     mov    r1,r0
  77.     jsr    r5,putc; obuf
  78.     mov    r1,r0
  79.     clrb    r0
  80.     swab    r0
  81.     beq    1b
  82.     jsr    r5,putc; obuf
  83.     br    1b
  84. coct:
  85.     jsr    pc,cget
  86.     mov    $8.,r2
  87.     br    2f
  88. cdec:
  89.     jsr    pc,cget
  90.     mov    $10.,r2
  91. 2:
  92.     jsr    pc,2f
  93.     br    1b
  94. 2:
  95.     clr    r0
  96.     dvd    r2,r0
  97.     mov    r1,-(sp)
  98.     mov    r0,r1
  99.     beq    2f
  100.     jsr    pc,2b
  101. 2:
  102.     mov    (sp)+,r0
  103.     add    $'0,r0
  104.     jsr    r5,putc; obuf
  105.     rts    pc
  106. 1:
  107.     mov    (sp)+,r0
  108.     mov    (sp)+,r1
  109.     mov    (sp)+,r2
  110.     mov    (sp)+,r3
  111.     mov    (sp)+,r4
  112.     rts    r5
  113.  
  114. cget:
  115.     mov    (r5)+,r1
  116.     cmp    r1,$4
  117.     blos    1f
  118.     rts    pc
  119. 1:
  120.     asl    r1
  121.     add    $2,r1
  122.     add    sp,r1
  123.     mov    (r1),r1
  124.     rts    pc
  125.  
  126.