This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

floating point division on c5509a--divd

 

 

I did a project on C5509A with ccsv3_3 2 years ago.

I that project in one function I did  division of two floating point numbers; ( x=1.0 / F , F is a floating point and changes).

I ported the project to CCsv5_1. Everything seems ok other that the floating point division which takes 5 times longer than the one I used with ccsv3_3.

 

 

I looked at the assembly codes for _divd which comes from rtslib55x . The new one which came with ccsv5_5 is much longer code.   You can see assembly codes.

 

I was wondering why is the new _divd from ccsv5_1 is much longer than that of cssv3_3?

 

Best regards

 

 

 

 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

_divd   from ccsv3_3 is as follows:

 

016128          _divd:

016128 3876                     push(T3,T2)

01612A 4ef7 SP = SP - #9

01612C eb0418                   dbl(*SP(#02h)) = AC1

01612F eb0008                   dbl(*SP(#00h)) = AC0

016132 ed0418                   AC1 = dbl(*SP(#02h))

016135 ed0008                   AC0 = dbl(*SP(#00h))

016138 7a80000a_2d01            AC0 = #-32768 << #16 || AC1 = AC1 ^ AC0

01613E 2810                     AC0 = AC0 & AC1

016140 eb0c08                   dbl(*SP(#06h)) = AC0

016143 ed0408                   AC0 = dbl(*SP(#02h))

016146 ed0038_110729            AC3 = dbl(*SP(#00h)) || AC0 = AC0 <<< #-23

01614C ec3e32                   bit(AC3, *SP(#1fh)) = #0

01614F ed0418_19ff70            AC1 = dbl(*SP(#02h)) || T3 = AC0 & #255

016155 ec3e12                   bit(AC1, *SP(#1fh)) = #0

016158 041712                   if (T3 != #0) goto #0x01616d

01615B 7a7f800a_9e83            if (AC3 == #0) execute(D_Unit) || AC0 = #32640 << #16

016161 1a0100                   AC0 = AC0 | #1

016164 7a7f800a_9e93            if (AC3 != #0) execute(D_Unit) || AC0 = #32640 << #16

01616A 06008f                   goto #0x0161fc

01616D ec31be7fffff             XAR3 = mar(*(#07fffffh))

016173 90b2                     AC2 = XAR3

016175 2821                     AC1 = AC1 & AC2

016177 3c00                     AC0 = #0

016179 04111d                   if (AC1 != #0) goto #0x016199

01617C 107729                   AC1 = AC3 <<< #-23

01617F 2216                     T2 = AC1

016181 040678                   if (T2 == #0) goto #0x0161fc

016184 7a00ff1a                 AC1 = #255 << #16

016188 7a01000a                 AC0 = #256 << #16

01618C 7effff11                 AC1 = AC1 | #65535

016190 107001                   AC1 = AC1 & (AC3 <<< #1)

016193 2410                     AC0 = AC0 + AC1

016195 4a32_2776                goto #0x0161cb || T2 = T2 - T3

016199 10b729                   AC2 = AC3 <<< #-23

01619C 2226                     T2 = AC2

01619E 04065b                   if (T2 == #0) goto #0x0161fc

0161A1 90b2                     AC2 = XAR3

0161A3 7a00803a_2932            AC3 = #128 << #16 || AC2 = AC2 & AC3

0161A9 7a00800a_2523            AC0 = #128 << #16 || AC3 = AC3 + AC2

0161AF 2401                     AC1 = AC1 + AC0

0161B1 1a0003                   AC0 = AC3 | #0

0161B4 6c016613                 call _frcdivd

0161B8 7a01001a_2776            AC1 = #256 << #16 || T2 = T2 - T3

0161BE 4010                     AC0 = AC0 + #1

0161C0 120814                   TC1 = uns(AC0 >= AC1)

0161C3 5000_9ef4                if (!TC1) execute(D_Unit) || AC0 = AC0 <<< #1

0161C7 4216_9ef4                if (!TC1) execute(D_Unit) || T2 = T2 - #1

0161CB 7b007f66                 T2 = T2 + #127

0161CF 043614                   if (T2 <= #0) goto #0x0161e6

0161D2 7600ff98                 AR1 = #255

0161D6 126490_21                TC1 = T2 < AR1 || nop

0161DA 3c00_9ef4                if (!TC1) execute(D_Unit) || AC0 = #0

0161DE 7600ff68_9ef4            if (!TC1) execute(D_Unit) || T2 = #255

0161E4 4a04                     goto #0x0161ea

0161E6 3c00                     AC0 = #0

0161E8 3c06                     T2 = #0

0161EA ec31be7fffff             XAR3 = mar(*(#07fffffh))

0161F0 10473f                   AC1 = AC0 <<< #-1

0161F3 90b0                     AC0 = XAR3

0161F5 2810                     AC0 = AC0 & AC1

0161F7 2261                     AC1 = T2

0161F9 101317                   AC0 = AC0 + (AC1 << #23)

0161FC ed0c00                   AC0 = AC0 + dbl(*SP(#06h))

0161FF eb0808                   dbl(*SP(#04h)) = AC0

016202 ed0808                   AC0 = dbl(*SP(#04h))

016205 4e09                     SP = SP + #9

016207 3a76                     T3,T2 = pop()

016209 4804                     return

  /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

_divd   from ccsv5_1 is as follows:

 

          _divd:

0x015906:   3876                     PSH T3,T2

0x015908:   4ef1                     AADD #-15,SP

0x01590a:   eb0008                   MOV AC0,dbl(*SP(#00h))

0x01590d:   a000                     MOV *SP(#00h),AC0

0x01590f:   76800090                 BFXTR #32768,AC0,AR1

0x015913:   ed0008                   MOV dbl(*SP(#00h)),AC0

0x015916:   100729                   SFTL AC0,#-23,AC0

0x015919:   18ffa0                   AND #255,AC0,AR2

0x01591c:   7c007faa                 SUB #127,AR2,AR2

0x015920:   22a0                     MOV AR2,AC0

0x015922:   eb0408                   MOV AC0,dbl(*SP(#02h))

0x015925:   ed0008                   MOV dbl(*SP(#00h)),AC0

0x015928:   eb0018_110708            MOV AC1,dbl(*SP(#00h)) || SFTL AC0,#8,AC0

0x01592e:   ec3e00                   BSET *SP(#1fh),AC0

0x015931:   7affff1a                 MOV #-1 << #16,AC1

0x015935:   eb0808                   MOV AC0,dbl(*SP(#04h))

0x015938:   a000                     MOV *SP(#00h),AC0

0x01593a:   76800060                 BFXTR #32768,AC0,T2

0x01593e:   ed0008                   MOV dbl(*SP(#00h)),AC0

0x015941:   100729                   SFTL AC0,#-23,AC0

0x015944:   18ffa0                   AND #255,AC0,AR2

0x015947:   7c007faa                 SUB #127,AR2,AR2

0x01594b:   7eff8111                 OR #65409,AC1,AC1

0x01594f:   22a0                     MOV AR2,AC0

0x015951:   eb0c08                   MOV AC0,dbl(*SP(#06h))

0x015954:   ed0008                   MOV dbl(*SP(#00h)),AC0

0x015957:   100708                   SFTL AC0,#8,AC0

0x01595a:   ec3e00                   BSET *SP(#1fh),AC0

0x01595d:   eb1008                   MOV AC0,dbl(*SP(#08h))

0x015960:   ed0408                   MOV dbl(*SP(#02h)),AC0

0x015963:   120014                   CMPU AC0 == AC1, TC1

0x015966:   04642b                   BCC #0x015994,TC1

0x015969:   76008018                 MOV #128,AC1

0x01596d:   ed0408                   MOV dbl(*SP(#02h)),AC0

0x015970:   120014                   CMPU AC0 == AC1, TC1

0x015973:   04641e                   BCC #0x015994,TC1

0x015976:   7affff1a                 MOV #-1 << #16,AC1

0x01597a:   ed0c08                   MOV dbl(*SP(#06h)),AC0

0x01597d:   7eff8111                 OR #65409,AC1,AC1

0x015981:   120014                   CMPU AC0 == AC1, TC1

0x015984:   6764                     BCC #0x015994,TC1

0x015986:   76008018                 MOV #128,AC1

0x01598a:   ed0c08                   MOV dbl(*SP(#06h)),AC0

0x01598d:   120c14                   CMPU AC0 != AC1, TC1

0x015990:   6d640140                 BCC #0x015ad4,TC1

0x015994:   ed0408                   MOV dbl(*SP(#02h)),AC0

0x015997:   76008018_2362            MOV #128,AC1 || MOV T2,AC2

0x01599d:   120c14                   CMPU AC0 != AC1, TC1

0x0159a0:   2c92                     XOR AR1,AC2

0x0159a2:   6764                     BCC #0x0159b2,TC1

0x0159a4:   7a80001a                 MOV #-32768 << #16,AC1

0x0159a8:   ed0808                   MOV dbl(*SP(#04h)),AC0

0x0159ab:   120c14                   CMPU AC0 != AC1, TC1

0x0159ae:   6d640088                 BCC #0x015a3a,TC1

0x0159b2:   76008018                 MOV #128,AC1

0x0159b6:   ed0c08                   MOV dbl(*SP(#06h)),AC0

0x0159b9:   120c14                   CMPU AC0 != AC1, TC1

0x0159bc:   66e4                     BCC #0x0159cb,TC1

0x0159be:   7a80001a                 MOV #-32768 << #16,AC1

0x0159c2:   ed1008                   MOV dbl(*SP(#08h)),AC0

0x0159c5:   120c14                   CMPU AC0 != AC1, TC1

0x0159c8:   04646f                   BCC #0x015a3a,TC1

0x0159cb:   76008018                 MOV #128,AC1

0x0159cf:   ed0408                   MOV dbl(*SP(#02h)),AC0

0x0159d2:   120c14                   CMPU AC0 != AC1, TC1

0x0159d5:   046426                   BCC #0x0159fe,TC1

0x0159d8:   7a80001a                 MOV #-32768 << #16,AC1

0x0159dc:   ed0808                   MOV dbl(*SP(#04h)),AC0

0x0159df:   120c14                   CMPU AC0 != AC1, TC1

0x0159e2:   046419                   BCC #0x0159fe,TC1

0x0159e5:   76008018                 MOV #128,AC1

0x0159e9:   ed0c08                   MOV dbl(*SP(#06h)),AC0

0x0159ec:   120c14                   CMPU AC0 != AC1, TC1

0x0159ef:   66e4                     BCC #0x0159fe,TC1

0x0159f1:   7a80001a                 MOV #-32768 << #16,AC1

0x0159f5:   ed1008                   MOV dbl(*SP(#08h)),AC0

0x0159f8:   120014                   CMPU AC0 == AC1, TC1

0x0159fb:   04643c                   BCC #0x015a3a,TC1

0x0159fe:   7affff1a                 MOV #-1 << #16,AC1

0x015a02:   ed0408                   MOV dbl(*SP(#02h)),AC0

0x015a05:   7eff8111                 OR #65409,AC1,AC1

0x015a09:   120c14                   CMPU AC0 != AC1, TC1

0x015a0c:   046444                   BCC #0x015a53,TC1

0x015a0f:   7a80001a                 MOV #-32768 << #16,AC1

0x015a13:   ed0808                   MOV dbl(*SP(#04h)),AC0

0x015a16:   120c14                   CMPU AC0 != AC1, TC1

0x015a19:   046437                   BCC #0x015a53,TC1

0x015a1c:   7affff1a                 MOV #-1 << #16,AC1

0x015a20:   ed0c08                   MOV dbl(*SP(#06h)),AC0

0x015a23:   7eff8111                 OR #65409,AC1,AC1

0x015a27:   120c14                   CMPU AC0 != AC1, TC1

0x015a2a:   046426                   BCC #0x015a53,TC1

0x015a2d:   7a80001a                 MOV #-32768 << #16,AC1

0x015a31:   ed1008                   MOV dbl(*SP(#08h)),AC0

0x015a34:   120c14                   CMPU AC0 != AC1, TC1

0x015a37:   046419                   BCC #0x015a53,TC1

0x015a3a:   f4007fff                 AND #32767,*SP(#00h)

0x015a3e:   a000                     MOV *SP(#00h),AC0

0x015a40:   10210f                   OR AC2 << #15, AC0

0x015a43:   c000                     MOV AC0,*SP(#00h)

0x015a45:   ed0018                   MOV dbl(*SP(#00h)),AC1

0x015a48:   7a7fff0a                 MOV #32767 << #16,AC0

0x015a4c:   7effff00                 OR #65535,AC0,AC0

0x015a50:   060271                   B #0x015cc4

0x015a53:   76008018                 MOV #128,AC1

0x015a57:   ed0408                   MOV dbl(*SP(#02h)),AC0

0x015a5a:   120c14                   CMPU AC0 != AC1, TC1

0x015a5d:   6764                     BCC #0x015a6d,TC1

0x015a5f:   7a80001a                 MOV #-32768 << #16,AC1

0x015a63:   ed0808                   MOV dbl(*SP(#04h)),AC0

0x015a66:   120014                   CMPU AC0 == AC1, TC1

0x015a69:   6d6400c2                 BCC #0x015b2f,TC1

0x015a6d:   7affff1a                 MOV #-1 << #16,AC1

0x015a71:   ed0c08                   MOV dbl(*SP(#06h)),AC0

0x015a74:   7eff8111                 OR #65409,AC1,AC1

0x015a78:   120c14                   CMPU AC0 != AC1, TC1

0x015a7b:   6764                     BCC #0x015a8b,TC1

0x015a7d:   7a80001a                 MOV #-32768 << #16,AC1

0x015a81:   ed1008                   MOV dbl(*SP(#08h)),AC0

0x015a84:   120c14                   CMPU AC0 != AC1, TC1

0x015a87:   6d7400a4                 BCC #0x015b2f,!TC1

0x015a8b:   7affff1a                 MOV #-1 << #16,AC1

0x015a8f:   ed0408                   MOV dbl(*SP(#02h)),AC0

0x015a92:   7eff8111                 OR #65409,AC1,AC1

0x015a96:   120c14                   CMPU AC0 != AC1, TC1

0x015a99:   66e4                     BCC #0x015aa8,TC1

0x015a9b:   7a80001a                 MOV #-32768 << #16,AC1

0x015a9f:   ed0808                   MOV dbl(*SP(#04h)),AC0

0x015aa2:   120014                   CMPU AC0 == AC1, TC1

0x015aa5:   04641a                   BCC #0x015ac2,TC1

0x015aa8:   76008018                 MOV #128,AC1

0x015aac:   ed0c08                   MOV dbl(*SP(#06h)),AC0

0x015aaf:   120c14                   CMPU AC0 != AC1, TC1

0x015ab2:   04641f                   BCC #0x015ad4,TC1

0x015ab5:   7a80001a                 MOV #-32768 << #16,AC1

0x015ab9:   ed1008                   MOV dbl(*SP(#08h)),AC0

0x015abc:   120c14                   CMPU AC0 != AC1, TC1

0x015abf:   046412                   BCC #0x015ad4,TC1

0x015ac2:   f4007fff                 AND #32767,*SP(#00h)

0x015ac6:   a000                     MOV *SP(#00h),AC0

0x015ac8:   10210f                   OR AC2 << #15, AC0

0x015acb:   c000                     MOV AC0,*SP(#00h)

0x015acd:   7a80000a                 MOV #-32768 << #16,AC0

0x015ad1:   06007a                   B #0x015b4e

0x015ad4:   7affff1a                 MOV #-1 << #16,AC1

0x015ad8:   ed0408                   MOV dbl(*SP(#02h)),AC0

0x015adb:   7eff8111                 OR #65409,AC1,AC1

0x015adf:   120c14                   CMPU AC0 != AC1, TC1

0x015ae2:   2c96                     XOR AR1,T2

0x015ae4:   67e4                     BCC #0x015af5,TC1

0x015ae6:   f4007fff                 AND #32767,*SP(#00h)

0x015aea:   a100_2360                MOV *SP(#00h),AC1 || MOV T2,AC0

0x015aee:   10410f                   OR AC0 << #15, AC1

0x015af1:   c100                     MOV AC1,*SP(#00h)

0x015af3:   4a58                     B #0x015acd

0x015af5:   ed0408                   MOV dbl(*SP(#02h)),AC0

0x015af8:   ed0c02                   SUB dbl(*SP(#06h)),AC0,AC0

0x015afb:   760080a8_2309            MOV #128,AR2 || MOV AC0,AR1

0x015b01:   1298a0_21                CMP AR1 >= AR2, TC1 || NOP

0x015b05:   eb1808                   MOV AC0,dbl(*SP(#0ch))

0x015b08:   65e4                     BCC #0x015b15,TC1

0x015b0a:   76ff82a8                 MOV #-126,AR2

0x015b0e:   12a490_21                CMP AR2 < AR1, TC1 || NOP

0x015b12:   04644d                   BCC #0x015b62,TC1

0x015b15:   ed1008                   MOV dbl(*SP(#08h)),AC0

0x015b18:   ed0818                   MOV dbl(*SP(#04h)),AC1

0x015b1b:   760080a8                 MOV #128,AR2

0x015b1f:   121804                   CMPU AC1 >= AC0, TC1

0x015b22:   4219_9ef4                XCCPART !TC1 || SUB #1,AR1

0x015b26:   1294a0_21                CMP AR1 < AR2, TC1 || NOP

0x015b2a:   2262                     MOV T2,AC2

0x015b2c:   046427                   BCC #0x015b56,TC1

0x015b2f:   f4007fff                 AND #32767,*SP(#00h)

0x015b33:   a000                     MOV *SP(#00h),AC0

0x015b35:   10210f                   OR AC2 << #15, AC0

0x015b38:   c000                     MOV AC0,*SP(#00h)

0x015b3a:   ed0018                   MOV dbl(*SP(#00h)),AC1

0x015b3d:   7a7fff0a                 MOV #32767 << #16,AC0

0x015b41:   7effff00                 OR #65535,AC0,AC0

0x015b45:   2a10                     OR AC1,AC0

0x015b47:   eb0008                   MOV AC0,dbl(*SP(#00h))

0x015b4a:   7aff800a                 MOV #-128 << #16,AC0

0x015b4e:   ed0018                   MOV dbl(*SP(#00h)),AC1

0x015b51:   060170_2910              B #0x015cc6 || AND AC1,AC0

0x015b56:   76ff82a8                 MOV #-126,AR2

0x015b5a:   1298a0_21                CMP AR1 >= AR2, TC1 || NOP

0x015b5e:   6d74ff60                 BCC #0x015ac2,!TC1

0x015b62:   7a80001a                 MOV #-32768 << #16,AC1

0x015b66:   7a00000a                 MOV #0 << #16,AC0

0x015b6a:   ed1050                   ADD dbl(*SP(#08h)),AC1,AC1

0x015b6d:   7e63df00                 OR #25567,AC0,AC0

0x015b71:   105724                   SFTL AC1,#-28,AC1

0x015b74:   2410                     ADD AC1,AC0

0x015b76:   900b                     MOV AC0,XAR3

0x015b78:   df6105                   MOV uns(*AR3),AC0

0x015b7b:   100517                   SFTS AC0,#23,AC0

0x015b7e:   eb1408                   MOV AC0,dbl(*SP(#0ah))

0x015b81:   ed1408                   MOV dbl(*SP(#0ah)),AC0

0x015b84:   6390                     BCC #0x015b8d,AC0 != #0

0x015b86:   7a80000a                 MOV #-32768 << #16,AC0

0x015b8a:   eb1408                   MOV AC0,dbl(*SP(#0ah))

0x015b8d:   3c57                     MOV #5,T3

0x015b8f:   ed1008                   MOV dbl(*SP(#08h)),AC0

0x015b92:   ed1418                   MOV dbl(*SP(#0ah)),AC1

0x015b95:   6c017894                 CALL _frcmpyd_div

0x015b99:   1a0010                   OR #0,AC0,AC1

0x015b9c:   101701                   SFTL AC1,#1,AC0

0x015b9f:   3600                     NOT AC0,AC0

0x015ba1:   7b000110                 ADD #1,AC0,AC1

0x015ba5:   ed1408                   MOV dbl(*SP(#0ah)),AC0

0x015ba8:   6c017894                 CALL _frcmpyd_div

0x015bac:   eb1408                   MOV AC0,dbl(*SP(#0ah))

0x015baf:   ed1408                   MOV dbl(*SP(#0ah)),AC0

0x015bb2:   5000_4317                SFTL AC0,#1 || SUB #1,T3

0x015bb6:   eb1408                   MOV AC0,dbl(*SP(#0ah))

0x015bb9:   0417d3                   BCC #0x015b8f,T3 != #0

0x015bbc:   ed0808                   MOV dbl(*SP(#04h)),AC0

0x015bbf:   ed1418                   MOV dbl(*SP(#0ah)),AC1

0x015bc2:   6c017894                 CALL _frcmpyd_div

0x015bc6:   eb1408                   MOV AC0,dbl(*SP(#0ah))

0x015bc9:   ed1808                   MOV dbl(*SP(#0ch)),AC0

0x015bcc:   eb1808                   MOV AC0,dbl(*SP(#0ch))

0x015bcf:   ed1408                   MOV dbl(*SP(#0ah)),AC0

0x015bd2:   7a80001a_5100            MOV #-32768 << #16,AC1 || SFTL AC0,#1

0x015bd8:   eb1408                   MOV AC0,dbl(*SP(#0ah))

0x015bdb:   ed1408                   MOV dbl(*SP(#0ah)),AC0

0x015bde:   120814                   CMPU AC0 >= AC1, TC1

0x015be1:   046410                   BCC #0x015bf4,TC1

0x015be4:   ed1408                   MOV dbl(*SP(#0ah)),AC0

0x015be7:   5000                     SFTL AC0,#1

0x015be9:   eb1408                   MOV AC0,dbl(*SP(#0ah))

0x015bec:   ed1808                   MOV dbl(*SP(#0ch)),AC0

0x015bef:   4210                     SUB #1,AC0

0x015bf1:   eb1808                   MOV AC0,dbl(*SP(#0ch))

0x015bf4:   ed1408                   MOV dbl(*SP(#0ah)),AC0

0x015bf7:   7b004000                 ADD #64,AC0,AC0

0x015bfb:   eb1408                   MOV AC0,dbl(*SP(#0ah))

0x015bfe:   ed1408                   MOV dbl(*SP(#0ah)),AC0

0x015c01:   120814                   CMPU AC0 >= AC1, TC1

0x015c04:   67e4                     BCC #0x015c15,TC1

0x015c06:   ed1808                   MOV dbl(*SP(#0ch)),AC0

0x015c09:   4010                     ADD #1,AC0

0x015c0b:   eb1808                   MOV AC0,dbl(*SP(#0ch))

0x015c0e:   7a80000a                 MOV #-32768 << #16,AC0

0x015c12:   eb1408                   MOV AC0,dbl(*SP(#0ah))

0x015c15:   7affff1a                 MOV #-1 << #16,AC1

0x015c19:   ed1408                   MOV dbl(*SP(#0ah)),AC0

0x015c1c:   7eff8011                 OR #65408,AC1,AC1

0x015c20:   2810                     AND AC1,AC0

0x015c22:   eb1408                   MOV AC0,dbl(*SP(#0ah))

0x015c25:   ed1408                   MOV dbl(*SP(#0ah)),AC0

0x015c28:   188000                   AND #128,AC0,AC0

0x015c2b:   04005f                   BCC #0x015c8d,AC0 == #0

0x015c2e:   ed1008                   MOV dbl(*SP(#08h)),AC0

0x015c31:   ed1418                   MOV dbl(*SP(#0ah)),AC1

0x015c34:   6c017894                 CALL _frcmpyd_div

0x015c38:   7a80002a                 MOV #-32768 << #16,AC2

0x015c3c:   ed1818                   MOV dbl(*SP(#0ch)),AC1

0x015c3f:   ed0428_130424            MOV dbl(*SP(#02h)),AC2 || CMPU AC0 < AC2, TC1

0x015c45:   5000_9ee4                XCCPART TC1 || SFTL AC0,#1

0x015c49:   ed0c50                   ADD dbl(*SP(#06h)),AC1,AC1

0x015c4c:   4011_9ef4                XCCPART !TC1 || ADD #1,AC1

0x015c50:   121420                   CMP AC1 < AC2, TC1

0x015c53:   046412                   BCC #0x015c68,TC1

0x015c56:   ed0428                   MOV dbl(*SP(#02h)),AC2

0x015c59:   122c14                   CMPU AC2 != AC1, TC1

0x015c5c:   04642e                   BCC #0x015c8d,TC1

0x015c5f:   ed0818                   MOV dbl(*SP(#04h)),AC1

0x015c62:   120814                   CMPU AC0 >= AC1, TC1

0x015c65:   046425                   BCC #0x015c8d,TC1

0x015c68:   ed1408                   MOV dbl(*SP(#0ah)),AC0

0x015c6b:   7a80001a                 MOV #-32768 << #16,AC1

0x015c6f:   7b008000                 ADD #128,AC0,AC0

0x015c73:   eb1408                   MOV AC0,dbl(*SP(#0ah))

0x015c76:   ed1408                   MOV dbl(*SP(#0ah)),AC0

0x015c79:   120814                   CMPU AC0 >= AC1, TC1

0x015c7c:   67e4                     BCC #0x015c8d,TC1

0x015c7e:   ed1808                   MOV dbl(*SP(#0ch)),AC0

0x015c81:   4010                     ADD #1,AC0

0x015c83:   eb1808                   MOV AC0,dbl(*SP(#0ch))

0x015c86:   7a80000a                 MOV #-32768 << #16,AC0

0x015c8a:   eb1408                   MOV AC0,dbl(*SP(#0ah))

0x015c8d:   f4007fff                 AND #32767,*SP(#00h)

0x015c91:   a100                     MOV *SP(#00h),AC1

0x015c93:   7a80002a_2360            MOV #-32768 << #16,AC2 || MOV T2,AC0

0x015c99:   10410f                   OR AC0 << #15, AC1

0x015c9c:   ec31be7fffff             AMAR *(#07fffffh),XAR3

0x015ca2:   c100                     MOV AC1,*SP(#00h)

0x015ca4:   ed0008                   MOV dbl(*SP(#00h)),AC0

0x015ca7:   7a3f801a                 MOV #16256 << #16,AC1

0x015cab:   ed1808_2902              MOV dbl(*SP(#0ch)),AC0 || AND AC0,AC2

0x015cb0:   100717                   SFTL AC0,#23,AC0

0x015cb3:   2401                     ADD AC0,AC1

0x015cb5:   ec3e12                   BCLR *SP(#1fh),AC1

0x015cb8:   ed1408_2b21              MOV dbl(*SP(#0ah)),AC0 || OR AC2,AC1

0x015cbd:   108738                   SFTL AC0,#-8,AC2

0x015cc0:   90b0                     MOV XAR3,AC0

0x015cc2:   2820                     AND AC2,AC0

0x015cc4:   2a10                     OR AC1,AC0

0x015cc6:   eb0008                   MOV AC0,dbl(*SP(#00h))

0x015cc9:   ed0008                   MOV dbl(*SP(#00h)),AC0

0x015ccc:   4e0f                     AADD #15,SP

0x015cce:   3a76                     POP T3,T2

 

 

 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////