Annotation of 41BSD/cmd/px/31write.s, revision 1.1.1.1

1.1       root        1: #
                      2: # Copyright (c) 1979 Regents of the University of California
                      3: #
                      4: # char sccsid[] = "@(#)31write.s 4.1 10/10/80";
                      5: #
                      6: # WRITE OPERATIONS
                      7: #
                      8: _PUT:
                      9:        incl    r10
                     10:        bbc     $fWRITE,FUNIT(r7),ewriteit
                     11:        pushl   FBUF(r7)        #stream
                     12:        pushl   $1              #number of items
                     13:        pushl   FSIZE(r7)       #item size
                     14:        pushl   r7              #ptr to data
                     15:        calls   $4,_fwrite
                     16:        movl    FBUF(r7),r5     #ptr to FILE
                     17:        bbs     $ioERR,FLAG(r5),ewrite
                     18:        jmp     (r8)
                     19: 
                     20: _WRITEF:
                     21:        cvtbl   (r10)+,r5       #r5 has number of longword arguements
                     22:        bbc     $fWRITE,FUNIT(r7),ewriteit
                     23:        calls   r5,_fprintf     #output formatted data
                     24:        movl    FBUF(r7),r5     #ptr to FILE
                     25:        bbs     $ioERR,FLAG(r5),ewrite
                     26:        jmp     (r8)
                     27: 
                     28: _WRITEC:
                     29:        incl    r10
                     30:        bbc     $fWRITE,FUNIT(r7),ewriteit
                     31:        pushl   FBUF(r7)        #stream
                     32:        pushl   4(sp)           #push data
                     33:        calls   $3,_fputc
                     34:        movl    FBUF(r7),r5
                     35:        bbs     $ioERR,FLAG(r5),ewrite  #check for I/O error
                     36:        jmp     (r8)
                     37: ewriteit:
                     38:        movw    $EWRITEIT,_perrno
                     39:        jbr     error
                     40: ewrite:
                     41:        movw    $EWRITE,_perrno
                     42:        jbr     error
                     43: 
                     44: _WRITES:
                     45:        incl    r10
                     46:        bbc     $fWRITE,FUNIT(r7),ewriteit
                     47:        calls   $4,_fwrite      #output string
                     48:        movl    FBUF(r7),r5     #ptr to FILE
                     49:        bbs     $ioERR,FLAG(r5),ewrite
                     50:        jmp     (r8)
                     51: 
                     52: _WRITLN:
                     53:        incl    r10
                     54:        aobleq  LLIMIT(r7),LCOUNT(r7),l3101
                     55:        movw    $ELLIMIT,_perrno
                     56:        jbr     error
                     57: l3101:
                     58:        bbc     $fWRITE,FUNIT(r7),ewriteit
                     59:        pushl   FBUF(r7)        #stream
                     60:        pushl   $linefeed       #push a linefeed
                     61:        calls   $2,_fputc
                     62:        movl    FBUF(r7),r5
                     63:        bbs     $ioERR,FLAG(r5),ewrite  #check for I/O error
                     64:        jmp     (r8)
                     65: 
                     66: _PAGE:
                     67:        incl    r10
                     68:        bbc     $fWRITE,FUNIT(r7),ewriteit
                     69:        pushl   FBUF(r7)        #stream
                     70:        pushl   $formfeed       #push a formfeed
                     71:        calls   $2,_fputc
                     72:        movl    FBUF(r7),r5
                     73:        jbs     $ioERR,FLAG(r5),ewrite  #check for I/O error
                     74:        jmp     (r8)
                     75: 
                     76: _NAM:
                     77:        incl    r10
                     78:        addl3   (r10)+,ap,r6    #r6 points to scalar name list
                     79:        movl    (sp)+,r3        #r3 has data value
                     80:        cmpw    r3,(r6)+        #check for value out of range
                     81:        bgequ   enamrng
                     82:        movzwl  (r6)[r3],r4     #r4 has string index
                     83:        pushab  (r6)[r4]        #push string ptr
                     84:        jmp     (r8)
                     85: enamrng:
                     86:        movw    $ENAMRNG,_perrno
                     87:        jbr     error
                     88: _MAX:
                     89:        cvtbl   (r10)+,r0       #r0 has width value
                     90:        bneq    l3105
                     91:        movzwl  (r10)+,r0
                     92: l3105:
                     93:        movzwl  (r10)+,r1       #r1 has minimum width value
                     94:        movl    (sp),r2         #r2 has requested width
                     95:        blss    efmt            #check for negative values
                     96:        subl2   r0,r2           #shave down value
                     97:        cmpl    r1,r2           #check for below minimum width
                     98:        bleq    l3106
                     99:        movl    r1,(sp)         #force to be at least minimum width
                    100:        jmp     (r8)
                    101: l3106:
                    102:        movl    r2,(sp)         #set to reduced value
                    103:        jmp     (r8)
                    104: efmt:
                    105:        movw    $EFMTSIZE,_perrno
                    106:        jbr     error
                    107: _MIN:
                    108:        cvtbl   (r10)+,r0       #r0 has width value
                    109:        bneq    l3107
                    110:        movzwl  (r10)+,r0
                    111: l3107:
                    112:        cmpl    (sp),r0         #check for greater than max allowed
                    113:        blss    l3108
                    114:        movl    r0,(sp)         #use smaller value
                    115: l3108:
                    116:        jmp     (r8)

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.