|
|
@ -378,12 +378,12 @@ WriteProtectedModeString: |
|
|
|
rep stosw |
|
|
|
lea edi, [VIDEO + (80*24 + 1)*2] |
|
|
|
mov eax, dword [Px] |
|
|
|
shr eax, 6 |
|
|
|
sar eax, 6 |
|
|
|
call StringifyEax10 |
|
|
|
|
|
|
|
lea edi, [VIDEO + (80*24 + 10)*2] |
|
|
|
mov eax, dword [Py] |
|
|
|
shr eax, 6 |
|
|
|
sar eax, 6 |
|
|
|
call StringifyEax10 |
|
|
|
|
|
|
|
add [ColorOffset], dword 1 |
|
|
@ -406,20 +406,32 @@ StringifyEax10: |
|
|
|
|
|
|
|
xor ecx, ecx ; Digit count starts at 0 |
|
|
|
|
|
|
|
mov [.sign], byte ' ' |
|
|
|
|
|
|
|
test eax, eax |
|
|
|
jns .loop_divide |
|
|
|
|
|
|
|
neg eax |
|
|
|
mov [.sign], byte '-' |
|
|
|
|
|
|
|
.loop_divide: ; finds digits and pushes them to stack |
|
|
|
test eax, eax |
|
|
|
jz .break_loop_divide |
|
|
|
xor edx, edx |
|
|
|
div ebx ; edx = (edx:eax)%ebx, eax = (edx:eax)/ebx |
|
|
|
idiv ebx ; edx = (edx:eax)%ebx, eax = (edx:eax)/ebx |
|
|
|
inc ecx ; Increase digit count |
|
|
|
mov byte [.buffer + ecx], dl |
|
|
|
jmp .loop_divide |
|
|
|
.break_loop_divide: |
|
|
|
; dec ecx |
|
|
|
add edi, 16 |
|
|
|
add edi, 20 |
|
|
|
sub edi, ecx |
|
|
|
sub edi, ecx |
|
|
|
|
|
|
|
mov ah, 0x0f |
|
|
|
mov al, byte [.sign] |
|
|
|
stosw |
|
|
|
|
|
|
|
.loop_print: |
|
|
|
test ecx, ecx |
|
|
|
jz .break_loop_print |
|
|
@ -429,10 +441,13 @@ StringifyEax10: |
|
|
|
stosw |
|
|
|
dec ecx |
|
|
|
jmp .loop_print |
|
|
|
|
|
|
|
.break_loop_print: |
|
|
|
|
|
|
|
popad |
|
|
|
ret |
|
|
|
.buffer times 40 db 0 |
|
|
|
.sign db ' ' |
|
|
|
|
|
|
|
|
|
|
|
;;;;;;;;;;;;;;;;;;;;;;;; |
|
|
|