(No, I'm not annoyed at the sender, it's good to find this stuff, but how the hell am I to deal with this code ???)
Code: Select all
Sub211:
71b5: cc,18 pop R18 R18 = pop();
Sub218:
71b7: ae,19,14 ldzbw R14,[R18++] R14 = (uns)[R18++];
71ba: b1,01,17 ldb R17,1 R17 = 1;
71bd: 37,14,14 jnb B7,R14,71d4 if (B7_R14) {
71c0: 71,7f,14 an2b R14,7f R14 &= 7f;
71c3: ae,19,34 ldzbw R34,[R18++] R34 = (uns)[R18++];
71c6: 41,07,00,34,1a an3w R1a,R34,7 R1a = R34 & 7;
71cb: ad,01,16 ldzbw R16,1 R16 = (uns)1;
71ce: 19,1a,16 shlb R16,R1a R16 = R16 << R1a;
71d1: 08,03,34 shrw R34,3 R34 = R34 / 8; }
71d4: c8,18 push R18 push(R18);
71d6: b3,15,b8,01,30 ldb R30,[R14+1b8] R30 = [R14+1b8];
71db: 44,fe,14,32 ad3w R32,R14,Rfe R32 = R14 + Rfe;
71df: b3,33,56,01,32 ldb R32,[R32+156] R32 = [R32+156];
.....
Code: Select all
Sub219:
745d: f8 clc CY = 0;
745e: 20,01 sjmp 7461 goto 7461;
Sub217:
7460: f9 stc CY = 1;
7461: cc,18 pop R18 R18 = pop();
7463: b2,19,1a ldb R1a,[R18++] R1a = [R18++];
7466: b2,19,1b ldb R1b,[R18++] R1b = [R18++];
7469: b2,19,1c ldb R1c,[R18++] R1c = [R18++];
746c: b2,19,1d ldb R1d,[R18++] R1d = [R18++];
746f: d3,05 jnc 7476 if (CY == 1) {
7471: c9,b7,71 push 71b7 push(Sub218);
7474: 20,02 sjmp 7478 goto 7478; }
7476: c8,18 push R18 push(R18);
7478: 91,40,a2 orb Ra2,40 Ra2 |= 40;
747b: ad,1a,3e ldzbw R3e,1a R3e = (uns)1a;
747e: 28,26 scall 74a6 Sub186();
7480: ad,1c,3e ldzbw R3e,1c R3e = (uns)1c;
7483: 28,21 scall 74a6 Sub186();
7485: a2,1a,42 ldw R42,[R1a] R42 = [R1a];
7488: 8a,1c,42 cmpw R42,[R1c]
748b: d1,0b jleu 7498 if ((uns) R42 > [R1c] ) {
748d: 3e,a2,0b jb B6,Ra2,749b if (B6_Ra2) return;
7490: b0,1e,1a ldb R1a,R1e R1a = R1e;
7493: 91,40,a2 orb Ra2,40 Ra2 |= 40;
7496: 21,db sjmp 7673 goto Sub197; }
7498: 71,bf,a2 an2b Ra2,bf Ra2 &= bf;
749b: f0 ret return;
745d gets 4 arguments, but jumps to another subroutine to get them (SAD can handle this OK)
7460 gets 5 or 6 arguments depending upon whether the fifth argument is negative or not.
7460 gets the extra 2 arguments by doing a PUSH instead of a CALL, so that the return calls 71b7 at the end of this subr, making it very complex to decipher, and is effectively a 'join together' of the 2 subroutines. This is why I had to change my scanning technique.
Do you spot that jump to sub197 too ? That's yet another wrinkle to sort out ....
AAARGHHHH!!!!
So at the moment I'm very very frustrated with this, and can't seem to make progress. Emulation or not ?? Hmmmm.......