Annotation of 41BSD/cmd/px/31write.s, revision 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.