| 39 | } |
| 40 | |
| 41 | U32 idiv8(CPU* cpu, S8 src) { |
| 42 | if (src==0) { |
| 43 | cpu->prepareException(EXCEPTION_DIVIDE, 0); |
| 44 | return 0; |
| 45 | } |
| 46 | |
| 47 | S16 quo = (S16)AX / src; |
| 48 | S8 quo8 = (S8)quo; |
| 49 | S8 rem = (S16)AX % src; |
| 50 | |
| 51 | if (quo != quo8) { |
| 52 | cpu->prepareException(EXCEPTION_DIVIDE, 1); |
| 53 | return 0; |
| 54 | } |
| 55 | AL = quo8; |
| 56 | AH = rem; |
| 57 | return 1; |
| 58 | } |
| 59 | |
| 60 | U32 div16(CPU* cpu, U16 src) { |
| 61 | U32 num = ((U32)DX << 16) | AX; |
no test coverage detected