blob: 84a6372fbb73a95b7e863f30ecd9d687cfd8a5f5 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
/* -*-C-*- getpgtab.h */
/*-->getpgtab*/
/**********************************************************************/
/****************************** getpgtab ******************************/
/**********************************************************************/
void
getpgtab(lastpageptr)
long lastpageptr;
{
register long p;
register INT16 i,k;
(void) FSEEK (dvifp,lastpageptr,0);
p = lastpageptr;
for (k = 0; (p != (-1)) && (k < MAXPAGE); ++k)
{
page_ptr[MAXPAGE-1-k] = p;
(void) FSEEK (dvifp,(long) p, 0);
if ((BYTE)nosignex(dvifp,(BYTE)1) != BOP)
(void)fatal(
"getpgtab(): Invalid BOP (beginning-of-page) back chain");
for (i = 0; i <= 9; ++i)
(void) nosignex(dvifp,(BYTE)4); /* discard count0..count9 */
p = (long)signex(dvifp,(BYTE)4);
}
page_count = k;
if (k >= MAXPAGE)
(void)warning("getpgtab(): Page table full...rebuild driver with \
larger MAXPAGE");
else /* move pointer table to front of array */
for (k = 0; k < page_count; ++k)
page_ptr[k] = page_ptr[MAXPAGE-page_count+k];
}
|