|
|
1.1 ! root 1: ! 2: #include "definitions" ! 3: ! 4: /* I/O ROUTINES TO CPU2 CONSOLE */ ! 5: ! 6: writec(c) ! 7: char c; ! 8: { ! 9: putchar(c); ! 10: } ! 11: ! 12: writes(s) ! 13: char *s; ! 14: { ! 15: putstr(s); ! 16: } ! 17: ! 18: writeh(ix) /* 32 bits HEX */ ! 19: long ix; ! 20: { register long count, mask, indx; ! 21: char c, str[9]; ! 22: ! 23: if (ix==0) { writes("0"); return; } ! 24: indx = 0; count = 28; ! 25: mask = 0xf0000000; ! 26: str[8]='\0'; ! 27: while (mask) { ! 28: c = ( (ix&mask) >> count )&0xf; ! 29: count -= 4; ! 30: if (indx==0) mask = 0xf000000; ! 31: else mask = mask >> 4; ! 32: if ((c>=0)&&(c<=9)) c=c+'0'; ! 33: else c=c+'7'; ! 34: str[indx++] = c; ! 35: } ! 36: /* replace leading 0 with space */ ! 37: for (indx=0; indx<8; indx++) { ! 38: if (str[indx]!='0') break; ! 39: /* esle str[indx]=' '; */ ! 40: } ! 41: writes(&str[indx]); ! 42: } ! 43: ! 44: /* Function to write a 32_bit decimal to Console ! 45: */ ! 46: writed(ix) ! 47: long ix; ! 48: { char c; ! 49: register long div, lead0; ! 50: ! 51: if (ix==0) { writec('0'); return; } ! 52: if (ix<0) { writec('-'); ix = (~ix)+1; } ! 53: lead0 = 1; ! 54: div = 1000000000; ! 55: while (div) { ! 56: c = (ix/div)+'0'; ! 57: ix = ix%div; /* Mod */ ! 58: div /= 10; ! 59: if ((c=='0')&&(lead0)) c=' '; ! 60: else lead0 = 0; ! 61: if (c != ' ') writec(c); ! 62: } ! 63: } ! 64: ! 65: /* Function read 1 char from Console ! 66: */ ! 67: char readc() ! 68: { ! 69: return(rdchar()); ! 70: } ! 71: ! 72: /* This function read a string of characters. ! 73: calling sequence : nochar = reads(s); ! 74: input argument : char *s; ! 75: return value : no. of char read; excluding NULL or CR. ! 76: */ ! 77: reads(s) ! 78: char *s; ! 79: { register long ix; ! 80: ! 81: for(ix=0;;ix++) { ! 82: *s = readc(); ! 83: if ((*s==NULL)||(*s==CR)) ! 84: { *s = NULL; break; } ! 85: else s++; ! 86: } ! 87: return(ix); ! 88: } ! 89: ! 90: ! 91: /* This function read a string of HEX digit and ! 92: convert it to integer value. ! 93: calling sequence : stat = readh(ix); ! 94: input parameter : long *ix; ! 95: return value : (stat < 0) if error else (stat = 0); ! 96: */ ! 97: ! 98: /* ! 99: readh(ix) ! 100: long *ix; ! 101: { char line[ALINE], *getnum(), *del; ! 102: int nochar; ! 103: ! 104: if ( (nochar = reads(line)) > 8 ) return(-1); ! 105: if ( (del = getnum(line,ix,del,HEX)) < 0 ) return(-1); ! 106: else return(0); ! 107: } ! 108: ! 109: */ ! 110: ! 111: ! 112: ! 113: ! 114: /* This function read a string of DEC digit and ! 115: convert it to integer value. ! 116: calling sequence : stat = readd(ix); ! 117: input parameter : long *ix; ! 118: return value : (stat < 0) if error else (stat = 0); ! 119: */ ! 120: ! 121: /* ! 122: readd(ix) ! 123: long *ix; ! 124: { char line[ALINE], *getnum(), *del; ! 125: int nochar; ! 126: ! 127: if ( (nochar = reads(line)) > 11 ) return(-1); ! 128: if ( (del = getnum(line,ix,del,DEC)) < 0 ) return(-1); ! 129: else return(0); ! 130: } ! 131: */ ! 132:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.