Annotation of researchv10no/cmd/PDP11/fpp/aux/format.s, revision 1.1

1.1     ! root        1: / C library -- format
        !             2: 
        !             3: 
        !             4: .globl _format
        !             5: 
        !             6: .globl pfloat
        !             7: .globl pscien
        !             8: 
        !             9: .globl csv
        !            10: .globl cret
        !            11: 
        !            12: _format:
        !            13:        jsr     r5,csv
        !            14:        sub     $126.,sp
        !            15:        mov     6(r5),formp             / format
        !            16:        mov     r5,r4
        !            17:        add     $8.,r4                  / arglist
        !            18: loop:
        !            19:        movb    *formp,r0
        !            20:        beq     1f
        !            21:        inc     formp
        !            22:        cmp     r0,$'%
        !            23:        beq     2f
        !            24: 3:
        !            25:        mov     r0,(sp)
        !            26:        jsr     pc,*4(r5)
        !            27:        br      loop
        !            28: 1:
        !            29:        mov     $' ,paddch
        !            30:        jmp     cret
        !            31: 2:
        !            32:        clr     rjust
        !            33:        clr     ndigit
        !            34:        mov     paddch,padd
        !            35:        cmpb    *formp,$'-
        !            36:        bne     2f
        !            37:        inc     formp
        !            38:        inc     rjust
        !            39: 2:
        !            40:        cmpb    *formp,$'0
        !            41:        jne     2f
        !            42:        mov     $'0,padd
        !            43: 2:
        !            44:        jsr     r3,gnum
        !            45:        mov     r1,width
        !            46:        clr     ndfnd
        !            47:        cmp     r0,$'.
        !            48:        bne     1f
        !            49:        jsr     r3,gnum
        !            50:        mov     r1,ndigit
        !            51: 1:
        !            52:        mov     sp,r3
        !            53:        add     $4,r3
        !            54:        mov     $swtab,r1
        !            55: 1:
        !            56:        mov     (r1)+,r2
        !            57:        beq     3b
        !            58:        cmp     r0,(r1)+
        !            59:        bne     1b
        !            60:        jmp     (r2)
        !            61:        .data
        !            62: swtab:
        !            63:        decimal;        'd
        !            64:        octal;          'o
        !            65:        hex;            'x
        !            66:        float;          'f
        !            67:        scien;          'e
        !            68:        charac;         'c
        !            69:        string;         's
        !            70:        longorunsg;     'l
        !            71:        unsigned;       'u
        !            72:        remote;         'r
        !            73:        chgpadd;        '>
        !            74:        long;           'D
        !            75:        loct;           'O
        !            76:        lhex;           'X
        !            77:        0;  0
        !            78:        .text
        !            79: 
        !            80: decimal:
        !            81:        mov     (r4)+,r1
        !            82:        bge     1f
        !            83:        neg     r1
        !            84:        movb    $'-,(r3)+
        !            85:        br      1f
        !            86: 
        !            87: longorunsg:
        !            88: /      movb    *formp,r0
        !            89: /      inc     formp
        !            90: /      cmp     r0,$'o
        !            91: /      beq     loct
        !            92: /      cmp     r0,$'x
        !            93: /      beq     lhex
        !            94: /      cmp     r0,$'d
        !            95: /      beq     long
        !            96: /      dec     formp
        !            97: /      br      unsigned
        !            98:        
        !            99: unsigned:
        !           100:        mov     (r4)+,r1
        !           101: 1:
        !           102:        jsr     pc,1f
        !           103:        jbr     prbuf
        !           104: 1:
        !           105:        clr     r0
        !           106:        div     $10.,r0
        !           107:        mov     r1,-(sp)
        !           108:        mov     r0,r1
        !           109:        beq     1f
        !           110:        jsr     pc,1b
        !           111: 1:
        !           112:        mov     (sp)+,r0
        !           113:        add     $'0,r0
        !           114:        movb    r0,(r3)+
        !           115:        rts     pc
        !           116: 
        !           117: long:
        !           118:        mov     (r4)+,r2
        !           119:        mov     (r4)+,r0
        !           120:        mov     r4,-(sp)
        !           121:        mov     r3,r4
        !           122:        mov     r0,r3
        !           123:        tst     r2
        !           124:        bpl     1f
        !           125:        neg     r2
        !           126:        neg     r3
        !           127:        sbc     r2
        !           128:        movb    $'-,(r4)+
        !           129: 1:
        !           130:        jsr     pc,1f
        !           131:        mov     r4,r3
        !           132:        mov     (sp)+,r4
        !           133:        br      prbuf
        !           134: 
        !           135: 1:
        !           136:        clr     r1
        !           137:        mov     $32.,r0
        !           138: 3:
        !           139:        ashc    $1,r2
        !           140:        rol     r1
        !           141:        cmp     r1,$10.
        !           142:        blo     2f
        !           143:        sub     $10.,r1
        !           144:        inc     r3
        !           145: 2:
        !           146:        sob     r0,3b
        !           147:        add     $'0,r1
        !           148:        mov     r1,-(sp)
        !           149:        ashc    $0,r2
        !           150:        beq     1f
        !           151:        jsr     pc,1b
        !           152: 1:
        !           153:        movb    (sp)+,(r4)+
        !           154:        rts     pc
        !           155: 
        !           156: 
        !           157: charac:
        !           158:        movb    (r4)+,(r3)+
        !           159:        bne     1f
        !           160:        dec     r3
        !           161: 1:
        !           162:        movb    (r4)+,(r3)+
        !           163:        bne     prbuf
        !           164:        dec     r3
        !           165:        br      prbuf
        !           166: 
        !           167: string:
        !           168:        mov     ndigit,r1
        !           169:        clr     r3
        !           170:        mov     (r4),r2
        !           171:        bne     1f
        !           172:        mov     $nulstr,r2
        !           173:        mov     r2,(r4)
        !           174: 1:
        !           175:        tstb    (r2)+
        !           176:        beq     1f
        !           177:        inc     r3
        !           178:        sob     r1,1b
        !           179: 1:
        !           180:        mov     (r4)+,r2
        !           181:        br      prstr
        !           182: 
        !           183: lhex:
        !           184:        mov     (r4)+,r0
        !           185:        br      1f
        !           186: hex:
        !           187:        clr     r0
        !           188: 1:
        !           189:        mov     $1f,r2
        !           190:        .data
        !           191: 1:
        !           192:        -4; !17; 170000
        !           193:        .text
        !           194:        br      2f
        !           195: 
        !           196: loct:
        !           197:        mov     (r4)+,r0
        !           198:        br      1f
        !           199: octal:
        !           200:        clr     r0
        !           201: 1:
        !           202:        mov     $1f,r2
        !           203:        .data
        !           204: 1:
        !           205:        -3; !7; 160000
        !           206:        .text
        !           207: 2:
        !           208:        mov     (r4)+,r1
        !           209:        ashc    $0,r0
        !           210:        beq     2f
        !           211:        tst     ndigit
        !           212:        beq     2f
        !           213:        movb    $'0,(r3)+
        !           214: 2:
        !           215:        jsr     pc,1f
        !           216:        br      prbuf
        !           217: 1:
        !           218:        mov     r1,-(sp)
        !           219:        ashc    (r2),r0
        !           220:        bic     4(r2),r0
        !           221:        ashc    $0,r0
        !           222:        beq     1f
        !           223:        jsr     pc,1b
        !           224: 1:
        !           225:        mov     (sp)+,r0
        !           226:        bic     2(r2),r0
        !           227:        add     $'0,r0
        !           228:        cmp     r0,$'9
        !           229:        ble     1f
        !           230:        add     $'A-'0-10.,r0
        !           231: 1:
        !           232:        movb    r0,(r3)+
        !           233:        rts     pc
        !           234: 
        !           235: float:
        !           236:        mov     ndigit,r0
        !           237:        mov     ndfnd,r2
        !           238:        jsr     pc,pfloat
        !           239:        br      prbuf
        !           240: 
        !           241: scien:
        !           242:        mov     ndigit,r0
        !           243:        mov     ndfnd,r2
        !           244:        jsr     pc,pscien
        !           245:        br      prbuf
        !           246: 
        !           247: remote:
        !           248:        mov     (r4)+,r4
        !           249:        mov     (r4)+,formp
        !           250:        jmp     loop
        !           251: 
        !           252: prbuf:
        !           253:        mov     sp,r2
        !           254:        add     $4,r2
        !           255:        sub     r2,r3
        !           256: prstr:
        !           257:        mov     r4,-(sp)
        !           258:        mov     padd,-(sp)
        !           259:        mov     r3,r4
        !           260:        neg     r3
        !           261:        add     width,r3
        !           262:        ble     1f
        !           263:        tst     rjust
        !           264:        bne     1f
        !           265: 2:
        !           266:        jsr     pc,*4(r5)
        !           267:        sob     r3,2b
        !           268: 1:
        !           269:        tst     r4
        !           270:        beq     2f
        !           271: 1:
        !           272:        movb    (r2)+,(sp)
        !           273:        jsr     pc,*4(r5)
        !           274:        sob     r4,1b
        !           275: 2:
        !           276:        tst     r3
        !           277:        ble     1f
        !           278:        mov     padd,(sp)
        !           279: 2:
        !           280:        jsr     pc,*4(r5)
        !           281:        sob     r3,2b
        !           282: 1:
        !           283:        tst     (sp)+
        !           284:        mov     (sp)+,r4
        !           285:        jmp     loop
        !           286: 
        !           287: chgpadd:
        !           288:        movb    *formp,paddch
        !           289:        jeq     loop
        !           290:        inc     formp
        !           291:        jmp     loop
        !           292: gnum:
        !           293:        clr     ndfnd
        !           294:        clr     r1
        !           295: 1:
        !           296:        movb    *formp,r0
        !           297:        inc     formp
        !           298:        sub     $'0,r0
        !           299:        cmp     r0,$'*-'0
        !           300:        bne     2f
        !           301:        mov     (r4)+,r0
        !           302:        br      3f
        !           303: 2:
        !           304:        cmp     r0,$9.
        !           305:        bhi     1f
        !           306: 3:
        !           307:        inc     ndfnd
        !           308:        mul     $10.,r1
        !           309:        add     r0,r1
        !           310:        br      1b
        !           311: 1:
        !           312:        add     $'0,r0
        !           313:        rts     r3
        !           314: 
        !           315: .bss
        !           316: width: .=.+2
        !           317: formp: .=.+2
        !           318: rjust: .=.+2
        !           319: ndfnd: .=.+2
        !           320: ndigit:        .=.+2
        !           321: padd:  .=.+2
        !           322: .data
        !           323: paddch:
        !           324:        '       /default pad is space
        !           325: nulstr:
        !           326:        <(null)\0>
        !           327: .even

unix.superglobalmegacorp.com

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