|
|
1.1 root 1:
2: #define NULL '\0'
3: #define CR '\n'
4:
5:
6: /* I/O ROUTINES TO CPU2 CONSOLE */
7:
8: writec(c)
9: char c;
10: {
11: putchar(c);
12: }
13:
14: writes(s)
15: char *s;
16: {
17: putstr(s);
18: }
19:
20: writeh(ix) /* 32 bits HEX */
21: long ix;
22: { register long count, mask, indx;
23: char c, str[9];
24:
25: if (ix==0) { writec('0'); return; }
26: indx = 0; count = 28;
27: mask = 0xf0000000;
28: str[8]='\0';
29: while (mask) {
30: c = ( (ix&mask) >> count )&0xf;
31: count -= 4;
32: if (indx==0) mask = 0xf000000;
33: else mask = mask >> 4;
34: if ((c>=0)&&(c<=9)) c=c+'0';
35: else c=c+'7';
36: str[indx++] = c;
37: }
38: /* replace leading 0 with space */
39: for (indx=0; indx<8; indx++) {
40: if (str[indx]!='0') break;
41: /* esle str[indx]=' '; */
42: }
43: writes(&str[indx]);
44: }
45:
46: /* Function to write a 32_bit decimal to Console
47: */
48: writed(ix)
49: long ix;
50: { char c;
51: register long div, lead0;
52:
53: if (ix==0) { writec('0'); return; }
54: if (ix<0) { writec('-'); ix = (~ix)+1; }
55: lead0 = 1;
56: div = 1000000000;
57: while (div) {
58: c = (ix/div)+'0';
59: ix = ix%div; /* Mod */
60: div /= 10;
61: if ((c=='0')&&(lead0)) c=' ';
62: else lead0 = 0;
63: if (c != ' ') writec(c);
64: }
65: }
66:
67: /* Function read 1 char from Console
68: */
69: char readc()
70: {
71: return(rdchar());
72: }
73:
74: /* This function read a string of characters.
75: calling sequence : nochar = reads(s);
76: input argument : char *s;
77: return value : no. of char read; excluding NULL or CR.
78: */
79: reads(s)
80: char *s;
81: { register long ix;
82:
83: for(ix=0;;ix++) {
84: *s = readc();
85: if ((*s==NULL)||(*s==CR))
86: { *s = NULL; break; }
87: else s++;
88: }
89: return(ix);
90: }
91:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.