Re: EEC V file conversion
Posted: 2024 Nov 13, 05:09
I wouldn't expect the same function to be signed in one strategy and unsigned in another, but never say never.
I don't know why you have commanded unsigned functions as signed.
Looking at suwFn46F_N it is clearly signed input.
Looking at the maximum input values, the rules are;
SIGNDX, SIGNDY, SIGNDSLP being set to 1 also indicates signed lookup.
There are some subroutines that don't appear in any strategy document or manual either. The manuals describe how the hardware works, not the purpose of subroutines. The strategy documents stick to describing the processes relevant to implementation of the tune. The strategy documents don't get into common subroutines like startup, lookup, rolav, console and more. Out of the thousands of strategies, there are four publicly posted on github, who knows what is covered in documents for all the other strategies. It is also common to find subroutines for one strategy in a document for another strategy bin.
This is from NGVB5R6, which is an aussie multi bank bin from around 2000, yet it is a match for GUFB single bank from around 1989. So it might be necessary to check the other docs at times.
So for some subroutines it is necessary to look at what it is doing and name it accordingly. That is what I've done with RZASA. It's loading the calibration pointers and looking for a calibration console. I've deduced the cal console part from the manuals, looking at GUFB console sub and what ever else I could find on the web.
You might find this helpful;
https://github.com/OpenEEC-Project/Usef ... t_1988.pdf
aice_fg_mwr might have come from something Decipha has done previously, I'm not sure at the moment. Searching for AICE in the various document may help identify more. I would not be surprised that aice_fg_mwr is not specifically covered as a subroutine in any particular strategy. AICE handing will be common across a metric shitload of strategies, so including it in all of them would be a big waste. There may well be some document that covers the subs that are common across great swathes of hardware, I'm not aware of it's public availability.
I don't know why you have commanded unsigned functions as signed.
Looking at suwFn46F_N it is clearly signed input.
Looking at the maximum input values, the rules are;
Code: Select all
ff,7f Word size signed input.
7f Byte size signed input.
ff,ff Word size unsigned input
ff Byte size unsigned input
There are some subroutines that don't appear in any strategy document or manual either. The manuals describe how the hardware works, not the purpose of subroutines. The strategy documents stick to describing the processes relevant to implementation of the tune. The strategy documents don't get into common subroutines like startup, lookup, rolav, console and more. Out of the thousands of strategies, there are four publicly posted on github, who knows what is covered in documents for all the other strategies. It is also common to find subroutines for one strategy in a document for another strategy bin.
This is from NGVB5R6, which is an aussie multi bank bin from around 2000, yet it is a match for GUFB single bank from around 1989. So it might be necessary to check the other docs at times.
Code: Select all
###### STARTUP_DELAY LOGIC FOR FIXED IDLE INJECTOR TIMING GUFB 6-94
# Call from L88637
# Call from L8994A TMP1L = 0x12B00
# Call from L89DFB
# Call from L8BAE8
# Call from L8CAAD
Sbg870B7_Idl_Inj_Tmg_Dly:
870b7: b3,66,bb,48 ldb R48,[R66+bb] TMP9L = TCSTRT; # [63B] TCSTRT
870bb: 9b,f4,02,48 cmpb R48,[Rf4+2]
870bf: de,0b jlt 870cc if (TMP9L >= CTHIGH) { # [1283A]
870c1: b3,66,de,48 ldb R48,[R66+de] TMP9L = ATMR1; # [65E] ATMR1
870c5: 9a,38,48 cmpb R48,[R38] # [12B00]
870c8: d3,3e jnc 87108 if (TMP9L < [TMP1L]) goto 87108;
870ca: 20,3a sjmp 87106 goto 87106; }
# JLT from L870BF TCSTRT <
870cc: 07,38 incw R38 TMP1L++; # 0x12B01
870ce: b3,66,bb,48 ldb R48,[R66+bb] TMP9L = TCSTRT; # [63B] TCSTRT
870d2: 9b,f4,03,48 cmpb R48,[Rf4+3]
870d6: da,16 jle 870ee if (TMP9L > CTLOW) { # [1283B]
870d8: b3,66,de,48 ldb R48,[R66+de] TMP9L = ATMR1; # [65E] ATMR1
870dc: 9a,38,48 cmpb R48,[R38] # [12B01]
870df: d3,27 jnc 87108 if (TMP9L < [TMP1L]) goto 87108;
870e1: 07,38 incw R38 TMP1L++; # 0x12B02
870e3: b3,66,df,48 ldb R48,[R66+df] TMP9L = ATMR2; # [65F] ATMR2
870e7: 9a,38,48 cmpb R48,[R38]
870ea: d3,1c jnc 87108 if (TMP9L < [TMP1L]) goto 87108; # [12B02]
870ec: 20,18 sjmp 87106 goto 87106; }
# JLE from L870D6 < TCSTRT <
870ee: 07,38 incw R38 TMP1L++; # 0x12B02
870f0: 07,38 incw R38 TMP1L++; # 0x12B03
870f2: b3,66,de,48 ldb R48,[R66+de] TMP9L = ATMR1; # [65E] ATMR1
870f6: 9a,38,48 cmpb R48,[R38] # [12B03]
870f9: d3,0d jnc 87108 if (TMP9L >= [TMP1L]) {
870fb: 07,38 incw R38 TMP1L++; # 0x12B04
870fd: b3,66,df,48 ldb R48,[R66+df] TMP9L = ATMR2; # [65F] ATMR2
87101: 9a,38,48 cmpb R48,[R38] # [12B04]
87104: d3,02 jnc 87108 if (TMP9L >= [TMP1L]) {
# SJump from L870CA TCSTRT >= & ATMR1 >=
# SJump from L870EC & ATMR1 >= & ATMR2 >=
87106: f8 clc CY = 0;
87107: f0 ret return; } } } } }
# JNC from L870C8 TCSTRT >= & ATMR1 <
# JNC from L870DF TCSTRT < & ATMR1 <
# JNC from L870EA & ATMR1 >= & ATMR2 <
# JNC from L870F9 <TCSTRT< & ATMR1 <
# JNC from L87104 <TCSTRT< & ATMR1 >= & ATMR2 <
87108: f9 stc CY = 1;
87109: f0 ret return;
You might find this helpful;
https://github.com/OpenEEC-Project/Usef ... t_1988.pdf
aice_fg_mwr might have come from something Decipha has done previously, I'm not sure at the moment. Searching for AICE in the various document may help identify more. I would not be surprised that aice_fg_mwr is not specifically covered as a subroutine in any particular strategy. AICE handing will be common across a metric shitload of strategies, so including it in all of them would be a big waste. There may well be some document that covers the subs that are common across great swathes of hardware, I'm not aware of it's public availability.