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)12int 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)39long_word ad_raw_addr(long_word addr) 40 { return addr << shift_factor; } 41 ad_code_addr(word addr)42long_word ad_code_addr(word addr) 43 { return ad_raw_addr(addr + (long_word) hd_code_offset()); } 44 ad_text_addr(word addr)45long_word ad_text_addr(word addr) 46 { return ad_raw_addr(addr + (long_word) hd_text_offset()); } 47 48