home *** CD-ROM | disk | FTP | other *** search
/ minnie.tuhs.org / unixen.tar / unixen / PDP-11 / Distributions / ucb / 2bsd.tar.gz / 2bsd.tar / misc / getc.s < prev    next >
Text File  |  1979-04-19  |  957b  |  84 lines

  1. / getw/getc -- get words/characters from input file
  2. / fopen -- open a file for use by get(c|w)
  3.  
  4. indir = 0
  5.  
  6. .globl    _getc, _getw, _fopen
  7. .globl    cerror
  8. .comm    _errno,2
  9.  
  10. _fopen:
  11.     mov    r5,-(sp)
  12.     mov    sp,r5
  13.     mov    4(r5),0f
  14.     sys    0; 9f
  15.     .data
  16. 9:    sys    open; 0:..; 0
  17.     .text
  18.     bes    badret
  19.     mov    6(r5),r1
  20.     mov    r0,(r1)+
  21.     clr    (r1)+
  22.     clr    r0
  23.     mov    (sp)+,r5
  24.     rts    pc
  25.  
  26. _getw:
  27.     clr    _errno
  28.     mov    r5,-(sp)
  29.     mov    sp,r5
  30.     mov    4(r5),r1
  31.     sub    $2,2(r1)
  32.     bge    1f
  33.     cmp    2(r1),$-1
  34.     blt    2f
  35.     movb    *4(r1),-(sp)
  36.     jsr    pc,fill
  37.     mov    4(r1),r0
  38.     br    3f
  39. 2:
  40.     jsr    pc,fill
  41.     dec    2(r1)
  42. 1:
  43.     mov    4(r1),r0
  44.     movb    (r0)+,-(sp)
  45. 3:
  46.     movb    (r0)+,1(sp)
  47.     mov    r0,4(r1)
  48.     mov    (sp)+,r0
  49.     mov    (sp)+,r5
  50.     rts    pc
  51.  
  52. _getc:
  53.     mov    r5,-(sp)
  54.     mov    sp,r5
  55.     mov    4(r5),r1
  56.     dec    2(r1)
  57.     bge    1f
  58.     jsr    pc,fill
  59. 1:
  60.     clr    r0
  61.     bisb    *4(r1),r0
  62.     inc    4(r1)
  63.     mov    (sp)+,r5
  64.     rts    pc
  65.  
  66. fill:
  67.     mov    r1,r0
  68.     add    $6,r0
  69.     mov    r0,0f
  70.     mov    r0,4(r1)
  71.     mov    (r1),r0
  72.     sys    0; 9f
  73. .data
  74. 9:    sys    read; 0:..; 512.
  75. .text
  76.     bes    badret
  77.     dec    r0
  78.     bmi    badret
  79.     mov    r0,2(r1)
  80.     rts    pc
  81.  
  82. badret:
  83.     jmp    cerror
  84.