|
|
1.1 root 1: /*
2: * read or print machine-dependent data structures
3: * this version for a vax running on a vax
4: */
5:
6: #include "defs.h"
7:
8: /*
9: * read an ASCII expression
10: */
11:
12: char lastc;
13:
14: WORD
15: ascval()
16: {
17: long l;
18: register char *p;
19: register int i;
20:
21: l = 0;
22: p = (char *)&l;
23: i = sizeof(l);
24: while (quotchar()) {
25: if (--i >= 0)
26: *p++ = lastc;
27: }
28: return ((WORD)swal(l));
29: }
30:
31: /*
32: * read a floating point number in VAX format
33: * the result must fit in a WORD
34: */
35:
36: WORD
37: fpin(buf)
38: char *buf;
39: {
40: union {
41: WORD w;
42: float f;
43: } x;
44: double atof();
45:
46: x.f = atof(buf);
47: return (x.w);
48: }
49:
50: /*
51: * print a floating point number in VAX format
52: */
53:
54: fpout(flag, va)
55: char flag;
56: char *va;
57: {
58: double d;
59: char buf[20];
60: char *gcvt();
61:
62: if (*(int *)va == 0x00008000) {
63: prints("illegal float ");
64: return;
65: }
66: if (flag == 'f')
67: d = *(float *)va;
68: else
69: d = *(double *)va;
70: prints(gcvt(d, 16, buf));
71: }
72:
73: /*
74: * print a date
75: */
76:
77: printdate(tvec)
78: WORD tvec;
79: {
80: char *p;
81: char *ctime();
82:
83: p = ctime((long *)&tvec);
84: p[strlen(p)-1] = 0; /* stomp on newline */
85: printf("%-25s", p);
86: }
87:
88: /*
89: * swap words in a longword
90: */
91:
92: long
93: swal(l)
94: {
95:
96: return (((l >> 16) & 0xffff) | ((l & 0xffff) << 16));
97: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.