1 /*
2   Addr
3 */
4 
5 #include "addr.h"
6 
7 #include "head.h"
8 #include "page.h"
9 
10 static int shift_factor;
11 
init_addr(void)12 int init_addr(void)
13 {
14   switch(hd_version())
15   {
16 #if EARLY
17     case VERSION_1:
18     case VERSION_2:
19 #endif
20     case VERSION_3:
21       shift_factor = 1;
22       return 1;
23     case VERSION_4:
24     case VERSION_5:
25     case VERSION_6:
26     case VERSION_7:
27       shift_factor = 2;
28       return 1;
29     case VERSION_8:
30       shift_factor = 3;
31       return 1;
32     default:
33       return 0;
34   }
35 }
36 
37 /* This has been cleaned up to add version 8 support */
38 
ad_raw_addr(long_word addr)39 long_word ad_raw_addr(long_word addr)
40 { return addr << shift_factor; }
41 
ad_code_addr(word addr)42 long_word ad_code_addr(word addr)
43 { return ad_raw_addr(addr + (long_word) hd_code_offset()); }
44 
ad_text_addr(word addr)45 long_word ad_text_addr(word addr)
46 { return ad_raw_addr(addr + (long_word) hd_text_offset()); }
47 
48