* cormen book
[mascara-docs.git] / i86 / mtx-16-bit / mtx / samples / LAB5.timer / USER / uio.c
bloba021577370af33110af33418f2cbb0db4dfda4aa
1 typedef unsigned short ushort;
2 typedef unsigned long ulong;
5 prints(s) char *s;
7 while (*s){
8 putc(*s);
9 s++;
13 gets(s) char *s;
14 { char c; int len=0;
15 while ( (c=getc()) != '\r' && len < 64){
16 *s++ = c; len++;
17 putc(c);
19 prints("\n\r");
20 *s = '\0';
23 char *ctable = "0123456789ABCDEF";
25 int rpo(x) ushort x;
27 char c;
28 if (x==0) return;
29 c = ctable[x%8];
30 rpo(x/8);
31 putc(c);
34 int printo(x) ushort x;
36 if (x==0){
37 putc('0'); putc(' ');
38 return;
40 rpo(x);
41 putc(' ');
44 int rpi(x) int x;
46 char c;
47 if (x==0) return;
48 c = ctable[x%10];
49 rpi(x/10);
50 putc(c);
53 int printi(x) int x;
55 if (x==0){
56 prints("0 ");
57 return;
59 if (x < 0){
60 putc('-');
61 x = -x;
63 rpi(x);
64 putc(' ');
67 int rpli(x) long x;
69 char c;
70 if (x==0) return;
71 c = ctable[x%10];
72 rpli(x/10);
73 putc(c);
76 int printli(x) ulong x;
78 if (x==0){
79 prints("0 ");
80 return;
82 if (x < 0){
83 putc('-');
84 x = -x;
86 rpli(x);
87 putc(' ');
90 int rpx(x) ushort x;
92 char c;
93 if (x==0) return;
94 c = ctable[x%16];
95 rpx(x/16);
96 putc(c);
99 int printx(x) ushort x;
101 prints("0x");
102 if (x==0){
103 prints("0 ");
104 return;
106 rpx(x);
107 putc(' ');
110 int rplx(x) ulong x;
112 char c;
113 if (x==0) return;
114 c = ctable[x%16];
115 rplx((ulong)x/16);
116 putc(c);
119 int printlx(x) ulong x;
121 prints("0x");
122 if (x==0){
123 prints("0 ");
124 return;
126 rplx(x);
127 putc(' ');
130 pns(s, n) char *s; int n;
132 while (*s && n){
133 putc(*s);
134 s++; n--;
138 int rpl(x) ulong x;
140 char c;
141 if (x==0)
142 return;
143 c = ctable[x % 10];
144 rpl(x / 10);
145 putc(c);
148 int align(x) ulong x;
150 int count, i;
151 count = 10;
152 if (x==0)
153 count = 9;
154 while (x){
155 count--;
156 x = x /10;
159 while(count){
160 putc(' ');
161 count--;
165 int printl(x) ulong x;
167 align(x);
168 if (x==0){
169 putc('0'); putc(' ');
170 return;
172 rpl(x);
173 putc(' ');
176 int printf(fmt) char *fmt;
178 char *cp;
179 ushort *ip;
180 ulong *up;
182 cp = fmt;
183 ip = (int *)&fmt + 1;
185 while (*cp){
186 if (*cp != '%'){
187 putc(*cp);
188 if (*cp=='\n')
189 putc('\r');
190 cp++;
191 continue;
193 cp++;
194 switch(*cp){
195 case 'd' : printi(*ip); break;
196 case 'x' : printx(*ip); break;
197 case 'l' : up = (ulong *)ip;
198 printl(*up); ip++; break;
199 case 's' : prints(*ip); break;
200 case 'c' : putc(*ip); break;
202 cp++; ip++;