Ford use certain registers as 'base' pointers. These point to a RAM or ROM address and then are used as [Register+offset]. SAD can detect these and automatically converts this to a fixed address (to look for a symbol name). There will be code somewhere that sets these up. SAD calls these RBASE registers, and there is an RBASE command to set these manually.
It seems that Ford did this to allow for new calibrations. Code-wise, it means Ford engineers can change the value of that register to point to a different data block without affecting anything else. Most bins have their data calibration setup this way. Single bank bins often use Rf0-Rfe, multibanks vary a lot more.
A9L version -
Code: Select all
2020: 08 byte 8 # 8 registers to set
2021: 01 byte 1 # 1 set to do
2022: 00,8c word 8c00
2024: 5a,8e word 8e5a
2026: d6,8f word 8fd6
2028: a8,93 word 93a8
202a: 30,94 word 9430
202c: a8,97 word 97a8
202e: 7e,9a word 9a7e
2030: 5a,9e word 9e5a
84f5: a1,f0,00,18 ldw R18,f0 R18 = f0; #start with register f0
84f9: b3,01,20,20,1a ldb R1a,[R0+2020] R1a = [2020];
84fe: a2,15,1c ldw R1c,[R14++] R1c = [R14++];
8501: c2,19,1c stw R1c,[R18++] [R18++] = R1c;
8504: e0,1a,f7 djnz R1a,84fe R1a--;
if (R1a != 0) goto 84fe;
Code: Select all
2058: a1,80,01,72 ldw R72,180 R72 = 180;
205c: a1,7e,02,74 ldw R74,27e R74 = 27e;
2060: a1,7a,03,76 ldw R76,37a R76 = 37a;