Commit | Line | Data |
---|---|---|
a96faa1f CH |
1 | #include "stdio.h" |
2 | #include "h00vars.h" | |
3 | #include "h01errs.h" | |
4 | #include "h02opcs.h" | |
5 | ||
6 | /* | |
7 | * allocate a block of storage on the heap | |
8 | */ | |
9 | char *palloc(need) | |
10 | ||
11 | long need; | |
12 | ||
13 | { | |
14 | extern char *malloc(); | |
15 | register char *memblk, *ptr; | |
16 | ||
17 | memblk = malloc(need); | |
18 | if (memblk == 0) | |
19 | error(EOUTOFMEM); | |
20 | if (memblk == (char *)(-1)) | |
21 | error(ETRASHHEAP); | |
22 | for(ptr=memblk; ptr<memblk+need; ptr++) | |
23 | *ptr = 0; | |
24 | return(memblk); | |
25 | } | |
26 | ||
27 | ||
28 | ||
29 | /* | |
30 | * Free a block of storage on the stack | |
31 | */ | |
32 | pfree(ptr) | |
33 | ||
34 | char *ptr; | |
35 | ||
36 | { | |
37 | extern long free(); | |
38 | ||
39 | if (ptr == 0) | |
40 | error(ENILPTR); | |
41 | else if (free(ptr) == -1) | |
42 | error(ETRASHHEAP); | |
43 | } | |
44 | \f | |
45 | /* | |
46 | * Constant set constructor (yechh!) | |
47 | */ | |
48 | ||
49 | #define sets int short | |
50 | ||
51 | sets *pcttot(uprbp, lwrb, n, av) | |
52 | ||
53 | int uprbp, lwrb, n; | |
54 | sets av; | |
55 | ||
56 | { | |
57 | register int l, h; | |
58 | register sets *set, *ap; | |
59 | ||
60 | ap = &av; | |
61 | set = &ap[2 * n]; | |
62 | while(--n >= 0) { | |
63 | if ((l = *ap++ - lwrb) < 0 || l > uprbp || | |
64 | (h = *ap++ - lwrb) < 0 || h > uprbp) | |
65 | error(ECTTOT); | |
66 | while (l <= h) { | |
67 | set[l >> 4] = set[l >> 4] | 1 << (l & 017); | |
68 | l++; | |
69 | } | |
70 | } | |
71 | return(set); | |
72 | } | |
73 | \f | |
74 | char pd_date[] = { | |
75 | 8, 9, 10, 4, 5, 6, 10, 22, 23, 10, 0 | |
76 | }; | |
77 | ||
78 | char *ctime(); | |
79 | ||
80 | pdattim(op, alfap) | |
81 | register char *alfap; | |
82 | { | |
83 | register char *ap, *cp, *dp; | |
84 | long a; | |
85 | int i; | |
86 | ||
87 | time(&a); | |
88 | cp = ctime(&a); | |
89 | ap = alfap; | |
90 | if (op == O_DATE) | |
91 | for (dp = pd_date; *dp; *ap++ = cp[*dp++]); | |
92 | else | |
93 | for (cp = cp + 10, i = 10; i; *ap++ = *cp++, i--); | |
94 | } | |
95 | \f | |
96 | psexit(code) | |
97 | ||
98 | long code; | |
99 | { | |
100 | ||
101 | pmflush(); | |
102 | if (mode == PIX && nodump == 0) { | |
103 | fputs("Execution terminated",stderr); | |
104 | if (code) | |
105 | fputs(" abnormally",stderr); | |
106 | fputc('.',stderr); | |
107 | fputc('\n',stderr); | |
108 | } | |
109 | stats(); | |
110 | exit(code); | |
111 | } |