Annotation of cci/d/memman/bio.s, revision 1.1.1.1

1.1       root        1: LL0:
                      2:        .data
                      3:        .set SBR,0
                      4:        .set SLR,1
                      5:        .set P0BR,2
                      6:        .set P0LR,3
                      7:        .set P1BR,4
                      8:        .set P1LR,5
                      9:        .set P2BR,6
                     10:        .set P2LR,7
                     11:        .set IPL,8
                     12:        .set MAPEN,9
                     13:        .set MME,9
                     14:        .set TBIA,10
                     15:        .set TBIS,11
                     16:        .set DCK,12
                     17:        .set CCK,13
                     18:        .set PCBB,14
                     19:        .set KSP,19
                     20:        .set USP,20
                     21:        .set CPMDCB,21
                     22:        .set PADC,25
                     23:        .set DCR,27
                     24:        .set DC_ON,1
                     25:        .set DC_OFF,2
                     26:        .set TB_ON,256
                     27:        .set TB_OFF,512
                     28:        .align  2
                     29:        .globl  _ocnt
                     30: _ocnt:
                     31:        .long   0
                     32:        .align  2
                     33:        .globl  _icnt
                     34: _icnt:
                     35:        .long   0
                     36:        .text
                     37:        .align  1
                     38:        .globl  _writec
                     39: _writec:
                     40:        .word   L15
                     41:  # 
                     42:  # #include "definitions"
                     43:  # 
                     44:  # /*  I/O ROUTINES TO CPU2 CONSOLE    */
                     45:  # 
                     46:  # #define MAXC                1000            /* MAX 1000 chars per line */
                     47:  # #define OUTADR              0x20000         /* Address of output buffer */
                     48:  # #define INADR               0x20100         /* Address of input buffer  */
                     49:  # 
                     50:  # long ocnt = 0;                              /* Next location in output buffer */
                     51:  # long icnt = 0;                              /* Next location in input buffer */
                     52:  # extern long savvec7;
                     53:  # 
                     54:  # writec(c)           /* VERSION to run on the simmulator */
                     55:  # char c;
                     56:  # {
                     57:        jbr     L17
                     58: L18:
                     59:  #     putchar(c);
                     60:        pushb   7(fp)
                     61:        callf   $8,_putchar
                     62:  # }
                     63:        ret
                     64:        .set    L15,0x0
                     65: L17:
                     66:        jbr     L18
                     67:        .data
                     68:        .text
                     69:        .align  1
                     70:        .globl  _readc
                     71: _readc:
                     72:        .word   L21
                     73:  # 
                     74:  # readc(c)
                     75:  # char *c;
                     76:  # {   char *cptr;
                     77:        jbr     L23
                     78: L24:
                     79:  # 
                     80:  #     asm("mfpr $MME,_savvec7");      
                     81: mfpr $MME,_savvec7
                     82:  #     savvec7 = savvec7 & 0x1;
                     83:        andl3   $1,_savvec7,r0
                     84:        movl    r0,_savvec7
                     85:  #     asm("mtpr $0,$MME");            /* Disable MME */
                     86: mtpr $0,$MME
                     87:  #     cptr = (char *)(INADR+ icnt++);
                     88:        addl3   $131328,_icnt,r0
                     89:        movl    r0,-56(fp)
                     90:        incl    _icnt
                     91:  #     *c = *cptr;
                     92:        movb    *-56(fp),*4(fp)
                     93:  #     asm("mtpr _savvec7,$MME");      /* Restore MME */
                     94: mtpr _savvec7,$MME
                     95:  # }
                     96:        ret
                     97:        .set    L21,0x0
                     98: L23:
                     99:        subl3   $56,fp,sp
                    100:        jbr     L24
                    101:        .data
                    102:        .text
                    103:        .align  1
                    104:        .globl  _writes
                    105: _writes:
                    106:        .word   L26
                    107:  # 
                    108:  # writes(s)
                    109:  # char *s;
                    110:  # {
                    111:        jbr     L28
                    112: L29:
                    113:  #     putstr(s);
                    114:        pushl   4(fp)
                    115:        callf   $8,_putstr
                    116:  # }
                    117:        ret
                    118:        .set    L26,0x0
                    119: L28:
                    120:        jbr     L29
                    121:        .data
                    122:        .text
                    123:        .align  1
                    124:        .globl  _reads
                    125: _reads:
                    126:        .word   L32
                    127:  # 
                    128:  # /*  This function read a string of characters.
                    129:  #     calling sequence : nochar = reads(s);
                    130:  #     input argument   : char *s;
                    131:  #     return value     : no. of char read; excluding NULL or CR.
                    132:  # */
                    133:  # reads(s)
                    134:  # char *s;
                    135:  # {   char *str;
                    136:        jbr     L34
                    137: L35:
                    138:  #     int ix;
                    139:  # 
                    140:  #     str = s;
                    141:        movl    4(fp),-56(fp)
                    142:  #     for(ix=0;ix<ALINE;ix++)
                    143:        clrl    -60(fp)
                    144: L38:
                    145:        cmpl    -60(fp),$80
                    146:        jgeq    L37
                    147:  #     {
                    148:  #             readc(str);
                    149:        pushl   -56(fp)
                    150:        callf   $8,_readc
                    151:  #             if ((*str==NULL)||(*str==CR)) 
                    152:        tstb    *-56(fp)
                    153:        jeql    L9999
                    154:        cmpb    *-56(fp),$10
                    155:        jneq    L39
                    156: L9999:
                    157:  #                     { *str = NULL;
                    158:        clrb    *-56(fp)
                    159:  #                       break;
                    160:        jbr     L37
                    161:  #                     }
                    162:  #                  else str++;
                    163: L39:
                    164:        incl    -56(fp)
                    165:  #     }
                    166: L36:
                    167:        incl    -60(fp)
                    168:        jbr     L38
                    169: L37:
                    170:  #     icnt = 0;               /* For simulator only */
                    171:        clrl    _icnt
                    172:  # 
                    173:  #     return(ix);
                    174:        movl    -60(fp),r0
                    175:        ret
                    176:  # }
                    177:        ret
                    178:        .set    L32,0x0
                    179: L34:
                    180:        subl3   $60,fp,sp
                    181:        jbr     L35
                    182:        .data
                    183:        .text
                    184:        .align  1
                    185:        .globl  _writeh
                    186: _writeh:
                    187:        .word   L41
                    188:  # /*  This function read a string of HEX digit and
                    189:  #     convert it to integer value.
                    190:  #     calling sequence : stat = readh(ix);
                    191:  #     input parameter  : long *ix;
                    192:  #     return value     : (stat < 0) if error else (stat = 0);
                    193:  # */
                    194:  # 
                    195:  # /*
                    196:  # readh(ix)   
                    197:  # long *ix;
                    198:  # {   char line[ALINE], *getnum(), *del;
                    199:  #     int nochar;
                    200:  # 
                    201:  #     if ( (nochar = reads(line)) > 8 ) return(-1);
                    202:  #     if ( (del = getnum(line,ix,del,HEX)) < 0 ) return(-1);
                    203:  #             else return(0);
                    204:  # }
                    205:  # 
                    206:  # */
                    207:  # 
                    208:  # 
                    209:  # 
                    210:  # writeh(ix)  /* 32 bits HEX */
                    211:  # long ix;
                    212:  # {   long iy, temp, mask;
                    213:        jbr     L43
                    214: L44:
                    215:  #     int count;
                    216:  #     char c;
                    217:  # 
                    218:  #     iy=1; count = 28;
                    219:        movl    $1,-56(fp)
                    220:        movl    $28,-68(fp)
                    221:  #     mask = 0xf0000000;
                    222:        movl    $-268435456,-64(fp)
                    223:  #     while (mask)
                    224: L45:
                    225:        tstl    -64(fp)
                    226:        jeql    L46
                    227:  #     {
                    228:  #             c = ( (ix&mask) >> count )&0xf;
                    229:        andl3   -64(fp),4(fp),r0
                    230:        movl    -68(fp),r1
                    231:        shar    r1,r0,r1
                    232:        andl2   $15,r1
                    233:        cvtlb   r1,-69(fp)
                    234:  #             count -= 4;
                    235:        subl2   $4,-68(fp)
                    236:  #             mask = mask >> 4;
                    237:        shar    $4,-64(fp),r0
                    238:        movl    r0,-64(fp)
                    239:  #             if (iy) 
                    240:        tstl    -56(fp)
                    241:        jeql    L47
                    242:  #                     { mask = 0xf000000; 
                    243:        movl    $251658240,-64(fp)
                    244:  #                       iy=0;
                    245:        clrl    -56(fp)
                    246:  #                     }
                    247:  #             if ((c>=0)&&(c<=9)) c=c+'0';
                    248: L47:
                    249:        tstb    -69(fp)
                    250:        jlss    L48
                    251:        cmpb    -69(fp),$9
                    252:        jgtr    L48
                    253:        cvtbl   -69(fp),r0
                    254:        addl2   $48,r0
                    255:        cvtlb   r0,-69(fp)
                    256:  #                     else c=c+'7';
                    257:        jbr     L49
                    258: L48:
                    259:        cvtbl   -69(fp),r0
                    260:        addl2   $55,r0
                    261:        cvtlb   r0,-69(fp)
                    262: L49:
                    263:  #             writec(c);
                    264:        pushb   -69(fp)
                    265:        callf   $8,_writec
                    266:  #     }
                    267:        jbr     L45
                    268: L46:
                    269:  # }
                    270:        ret
                    271:        .set    L41,0x0
                    272: L43:
                    273:        subl3   $72,fp,sp
                    274:        jbr     L44
                    275:        .data
                    276:        .text
                    277:        .align  1
                    278:        .globl  _writed
                    279: _writed:
                    280:        .word   L51
                    281:  # 
                    282:  # /*  This function read a string of DEC digit and
                    283:  #     convert it to integer value.
                    284:  #     calling sequence : stat = readd(ix);
                    285:  #     input parameter  : long *ix;
                    286:  #     return value     : (stat < 0) if error else (stat = 0);
                    287:  # */
                    288:  # 
                    289:  # /*
                    290:  # readd(ix)   
                    291:  # long *ix;
                    292:  # {   char line[ALINE], *getnum(), *del;
                    293:  #     int nochar;
                    294:  # 
                    295:  #     if ( (nochar = reads(line)) > 11 ) return(-1);
                    296:  #     if ( (del = getnum(line,ix,del,DEC)) < 0 ) return(-1);
                    297:  #             else return(0);
                    298:  # }
                    299:  # */
                    300:  # 
                    301:  # 
                    302:  # writed(ix)  /* 32 bits DECIMAL */
                    303:  # long ix;
                    304:  # {   char c;
                    305:        jbr     L53
                    306: L54:
                    307:  #     long div;
                    308:  #     float divi;
                    309:  #     int lead0;
                    310:  # 
                    311:  # /*
                    312:  #     if (ix<0) 
                    313:  #             {  writes("********");
                    314:  #                return(0);        }
                    315:  #     lead0 = 1;
                    316:  #     divi = 1000000000;
                    317:  #     div = divi;
                    318:  #     while (div)
                    319:  #     {
                    320:  #             c = (ix/div)+'0';
                    321:  #             ix = ix%div;
                    322:  #             divi = divi/10;
                    323:  #             div = divi;
                    324:  #             if ((c=='0')&&(lead0)) c=SPACE;
                    325:  #                     else lead0 = 0;
                    326:  #             writec(c);
                    327:  #     }
                    328:  # */
                    329:  # 
                    330:  # }
                    331:        ret
                    332:        .set    L51,0x0
                    333: L53:
                    334:        subl3   $68,fp,sp
                    335:        jbr     L54
                    336:        .data
                    337:  # 

unix.superglobalmegacorp.com

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