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