diff options
author | Michael Pavone <pavone@retrodev.com> | 2014-12-28 17:25:36 -0800 |
---|---|---|
committer | Michael Pavone <pavone@retrodev.com> | 2014-12-28 17:25:36 -0800 |
commit | 08d8620cd9bfe4a2bcaaa9156f8a46a1c0b9e659 (patch) | |
tree | 71bccfa30062bcf3aa4b5def6bed8b4127c64513 /runtime_32.S | |
parent | ec6bd7cf6e237ba3f24af06d2c52e629c4029207 (diff) |
Removed bcd_add and bcd_sub from runtime.S and generated the logic inline with the rest of abcd and sbcd translation. Fixed some edge cases and undefined flag behavior in the process
Diffstat (limited to 'runtime_32.S')
-rw-r--r-- | runtime_32.S | 57 |
1 files changed, 0 insertions, 57 deletions
diff --git a/runtime_32.S b/runtime_32.S index 1f0c503..50117f1 100644 --- a/runtime_32.S +++ b/runtime_32.S @@ -12,63 +12,6 @@ m68k_invalid: push $1 call exit - .global bcd_add -bcd_add: - xchg %eax, %edi - - mov %cl, %ch - mov %al, %ah - and $0xF, %ch - and $0xF, %ah - and $0xF0, %cl - and $0xF0, %al - add %ah, %ch - cmp $10, %ch - jb no_adjust - add $6, %ch -no_adjust: - add %ch, %al - add %al, %cl - mov $0, %ch - jc def_adjust - cmp $0xA0, %cl - jb no_adjust_h -def_adjust: - add $0x60, %cl - mov $1, %ch -no_adjust_h: - - mov %edi, %eax - ret - - .global bcd_sub -bcd_sub: - xchg %eax, %edi - - mov %cl, %ch - mov %al, %ah - and $0xF, %ch - and $0xF, %ah - and $0xF0, %cl - and $0xF0, %al - sub %ah, %ch - cmp $10, %ch - jb no_adjusts - sub $6, %ch -no_adjusts: - add %ch, %cl - sub %al, %cl - mov $0, %ch - jc def_adjusts - cmp $0xA0, %cl - jb no_adjust_hs -def_adjusts: - sub $0x60, %cl - mov $1, %ch -no_adjust_hs: - - mov %edi, %eax - ret |