delete redundant source
This commit is contained in:
parent
2958815463
commit
7dd225ffb2
@ -1,6 +0,0 @@
|
|||||||
#define CHAR_UNSIGNED 0
|
|
||||||
#define MSB_AT_LOW_ADDRESS 0
|
|
||||||
#define MSW_AT_LOW_ADDRESS 0
|
|
||||||
#define FL_MSB_AT_LOW_ADDRESS 0
|
|
||||||
#define FL_MSW_AT_LOW_ADDRESS 0
|
|
||||||
#define FL_MSL_AT_LOW_ADDRESS 0
|
|
@ -1,11 +0,0 @@
|
|||||||
.sect .text; .sect .rom; .sect .data; .sect .bss
|
|
||||||
.define .adf4
|
|
||||||
|
|
||||||
.sect .text
|
|
||||||
.adf4:
|
|
||||||
mov bx,sp
|
|
||||||
flds 4(bx)
|
|
||||||
fadds 8(bx)
|
|
||||||
fstps 8(bx)
|
|
||||||
wait
|
|
||||||
ret
|
|
@ -1,11 +0,0 @@
|
|||||||
.sect .text; .sect .rom; .sect .data; .sect .bss
|
|
||||||
.define .adf8
|
|
||||||
|
|
||||||
.sect .text
|
|
||||||
.adf8:
|
|
||||||
mov bx,sp
|
|
||||||
fldd 4(bx)
|
|
||||||
faddd 12(bx)
|
|
||||||
fstpd 12(bx)
|
|
||||||
wait
|
|
||||||
ret
|
|
@ -1,18 +0,0 @@
|
|||||||
.sect .text; .sect .rom; .sect .data; .sect .bss
|
|
||||||
.define .adi
|
|
||||||
|
|
||||||
! #bytes in ecx , top of stack in eax
|
|
||||||
.sect .text
|
|
||||||
.adi:
|
|
||||||
pop ebx ! return address
|
|
||||||
cmp ecx,4
|
|
||||||
jne 9f
|
|
||||||
pop ecx
|
|
||||||
add eax,ecx
|
|
||||||
jmp ebx
|
|
||||||
9:
|
|
||||||
.extern EODDZ
|
|
||||||
.extern .trp
|
|
||||||
mov eax,EODDZ
|
|
||||||
push ebx
|
|
||||||
jmp .trp
|
|
@ -1,20 +0,0 @@
|
|||||||
.sect .text; .sect .rom; .sect .data; .sect .bss
|
|
||||||
.define .and
|
|
||||||
|
|
||||||
! #bytes in ecx
|
|
||||||
! save edi; it might be a register variable
|
|
||||||
|
|
||||||
.sect .text
|
|
||||||
.and:
|
|
||||||
pop ebx ! return address
|
|
||||||
mov edx,edi
|
|
||||||
mov edi,esp
|
|
||||||
add edi,ecx
|
|
||||||
sar ecx,2
|
|
||||||
1:
|
|
||||||
pop eax
|
|
||||||
and eax,(edi)
|
|
||||||
stos
|
|
||||||
loop 1b
|
|
||||||
mov edi,edx
|
|
||||||
jmp ebx
|
|
@ -1,16 +0,0 @@
|
|||||||
.sect .text; .sect .rom; .sect .data; .sect .bss
|
|
||||||
.sect .text
|
|
||||||
.define .blm
|
|
||||||
|
|
||||||
! ecx: count in words
|
|
||||||
.blm:
|
|
||||||
mov ebx,esp
|
|
||||||
mov eax,esi
|
|
||||||
mov edx,edi
|
|
||||||
mov edi,4(ebx)
|
|
||||||
mov esi,8(ebx)
|
|
||||||
rep movs
|
|
||||||
mov esi,eax
|
|
||||||
mov edi,edx
|
|
||||||
ret 8
|
|
||||||
|
|
@ -1,19 +0,0 @@
|
|||||||
.sect .text; .sect .rom; .sect .data; .sect .bss
|
|
||||||
.define .cff4
|
|
||||||
|
|
||||||
.sect .text
|
|
||||||
.cff4:
|
|
||||||
mov bx,sp
|
|
||||||
fldd 4(bx)
|
|
||||||
fstcw 4(bx)
|
|
||||||
wait
|
|
||||||
mov dx,4(bx)
|
|
||||||
and 4(bx),0xf3ff ! set to rounding mode
|
|
||||||
wait
|
|
||||||
fldcw 4(bx)
|
|
||||||
fstps 8(bx)
|
|
||||||
mov 4(bx),dx
|
|
||||||
wait
|
|
||||||
fldcw 4(bx)
|
|
||||||
wait
|
|
||||||
ret
|
|
@ -1,10 +0,0 @@
|
|||||||
.sect .text; .sect .rom; .sect .data; .sect .bss
|
|
||||||
.define .cff8
|
|
||||||
|
|
||||||
.sect .text
|
|
||||||
.cff8:
|
|
||||||
mov bx,sp
|
|
||||||
flds 4(bx)
|
|
||||||
fstpd 4(bx)
|
|
||||||
wait
|
|
||||||
ret
|
|
@ -1,27 +0,0 @@
|
|||||||
.sect .text; .sect .rom; .sect .data; .sect .bss
|
|
||||||
.define .cfi
|
|
||||||
|
|
||||||
.sect .text
|
|
||||||
.cfi:
|
|
||||||
mov bx,sp
|
|
||||||
fstcw 4(bx)
|
|
||||||
wait
|
|
||||||
mov dx,4(bx)
|
|
||||||
or 4(bx),0xc00 ! truncating mode
|
|
||||||
wait
|
|
||||||
fldcw 4(bx)
|
|
||||||
cmp 8(bx),4
|
|
||||||
jne 2f
|
|
||||||
! loc 4 loc ? cfi
|
|
||||||
flds 12(bx)
|
|
||||||
fistpl 12(bx)
|
|
||||||
1:
|
|
||||||
mov 4(bx),dx
|
|
||||||
wait
|
|
||||||
fldcw 4(bx)
|
|
||||||
ret
|
|
||||||
2:
|
|
||||||
! loc 8 loc ? cfi
|
|
||||||
fldd 12(bx)
|
|
||||||
fistpl 16(bx)
|
|
||||||
jmp 1b
|
|
@ -1,38 +0,0 @@
|
|||||||
.sect .text; .sect .rom; .sect .data; .sect .bss
|
|
||||||
.define .cfu
|
|
||||||
|
|
||||||
.sect .text
|
|
||||||
.cfu:
|
|
||||||
mov bx,sp
|
|
||||||
fstcw 4(bx)
|
|
||||||
wait
|
|
||||||
mov dx,4(bx)
|
|
||||||
or 4(bx),0xc00 ! truncating mode
|
|
||||||
wait
|
|
||||||
fldcw 4(bx)
|
|
||||||
cmp 8(bx),4
|
|
||||||
jne 2f
|
|
||||||
! loc 4 loc ? cfu
|
|
||||||
flds 12(bx)
|
|
||||||
fabs ! ???
|
|
||||||
fiaddl (bigmin)
|
|
||||||
fistpl 12(bx)
|
|
||||||
wait
|
|
||||||
mov ax,12(bx)
|
|
||||||
sub ax,(bigmin)
|
|
||||||
mov 12(bx),ax
|
|
||||||
1:
|
|
||||||
mov 4(bx),dx
|
|
||||||
wait
|
|
||||||
fldcw 4(bx)
|
|
||||||
ret
|
|
||||||
2:
|
|
||||||
! loc 8 loc ? cfu
|
|
||||||
fldd 12(bx)
|
|
||||||
fabs ! ???
|
|
||||||
fiaddl (bigmin)
|
|
||||||
fistpl 16(bx)
|
|
||||||
mov ax,16(bx)
|
|
||||||
sub ax,(bigmin)
|
|
||||||
mov 16(bx),ax
|
|
||||||
jmp 1b
|
|
@ -1,10 +0,0 @@
|
|||||||
.sect .text; .sect .rom; .sect .data; .sect .bss
|
|
||||||
.define .cif4
|
|
||||||
|
|
||||||
.sect .text
|
|
||||||
.cif4:
|
|
||||||
mov bx,sp
|
|
||||||
fildl 8(bx)
|
|
||||||
fstps 8(bx)
|
|
||||||
wait
|
|
||||||
ret
|
|
@ -1,10 +0,0 @@
|
|||||||
.sect .text; .sect .rom; .sect .data; .sect .bss
|
|
||||||
.define .cif8
|
|
||||||
|
|
||||||
.sect .text
|
|
||||||
.cif8:
|
|
||||||
mov bx,sp
|
|
||||||
fildl 8(bx)
|
|
||||||
fstpd 4(bx)
|
|
||||||
wait
|
|
||||||
ret
|
|
@ -1,31 +0,0 @@
|
|||||||
.sect .text; .sect .rom; .sect .data; .sect .bss
|
|
||||||
.define .cii
|
|
||||||
|
|
||||||
.sect .text
|
|
||||||
.cii:
|
|
||||||
pop ebx ! return address
|
|
||||||
! pop ecx, dest. size
|
|
||||||
! pop edx, src. size
|
|
||||||
! eax is source
|
|
||||||
cmp edx,1
|
|
||||||
jne 2f
|
|
||||||
movsxb eax,al
|
|
||||||
mov edx,4
|
|
||||||
jmp 1f
|
|
||||||
2:
|
|
||||||
cmp edx,2
|
|
||||||
jne 1f
|
|
||||||
cwde ! convert from 2 to 4 bytes
|
|
||||||
mov edx,4
|
|
||||||
1:
|
|
||||||
cmp edx,ecx
|
|
||||||
jne 9f
|
|
||||||
cmp edx,4
|
|
||||||
jne 9f
|
|
||||||
jmp ebx
|
|
||||||
9:
|
|
||||||
.extern EILLINS
|
|
||||||
.extern .fat
|
|
||||||
mov eax,EILLINS
|
|
||||||
push eax
|
|
||||||
jmp .fat
|
|
@ -1,22 +0,0 @@
|
|||||||
.sect .text; .sect .rom; .sect .data; .sect .bss
|
|
||||||
.define .cmf4
|
|
||||||
|
|
||||||
.sect .text
|
|
||||||
.cmf4:
|
|
||||||
mov bx,sp
|
|
||||||
xor cx,cx
|
|
||||||
flds 8(bx)
|
|
||||||
flds 4(bx)
|
|
||||||
fcompp ! compare and pop operands
|
|
||||||
fstsw ax
|
|
||||||
wait
|
|
||||||
sahf
|
|
||||||
je 1f
|
|
||||||
jb 2f
|
|
||||||
dec cx
|
|
||||||
jmp 1f
|
|
||||||
2:
|
|
||||||
inc cx
|
|
||||||
1:
|
|
||||||
mov ax,cx
|
|
||||||
ret
|
|
@ -1,22 +0,0 @@
|
|||||||
.sect .text; .sect .rom; .sect .data; .sect .bss
|
|
||||||
.define .cmf8
|
|
||||||
|
|
||||||
.sect .text
|
|
||||||
.cmf8:
|
|
||||||
mov bx,sp
|
|
||||||
xor cx,cx
|
|
||||||
fldd 12(bx)
|
|
||||||
fldd 4(bx)
|
|
||||||
fcompp ! compare and pop operands
|
|
||||||
fstsw ax
|
|
||||||
wait
|
|
||||||
sahf
|
|
||||||
je 1f
|
|
||||||
jb 2f
|
|
||||||
dec cx
|
|
||||||
jmp 1f
|
|
||||||
2:
|
|
||||||
inc cx
|
|
||||||
1:
|
|
||||||
mov ax,cx
|
|
||||||
ret
|
|
@ -1,23 +0,0 @@
|
|||||||
.sect .text; .sect .rom; .sect .data; .sect .bss
|
|
||||||
.define .cms
|
|
||||||
|
|
||||||
! #bytes in ecx
|
|
||||||
.sect .text
|
|
||||||
.cms:
|
|
||||||
pop ebx ! return address
|
|
||||||
mov edx,esp
|
|
||||||
push esi
|
|
||||||
push edi
|
|
||||||
mov esi,edx
|
|
||||||
add edx,ecx
|
|
||||||
mov edi,edx
|
|
||||||
add edx,ecx
|
|
||||||
sar ecx,2
|
|
||||||
repe cmps
|
|
||||||
je 1f
|
|
||||||
inc ecx
|
|
||||||
1:
|
|
||||||
pop edi
|
|
||||||
pop esi
|
|
||||||
mov esp,edx
|
|
||||||
jmp ebx
|
|
@ -1,14 +0,0 @@
|
|||||||
.sect .text; .sect .rom; .sect .data; .sect .bss
|
|
||||||
.define .com
|
|
||||||
|
|
||||||
! #bytes in ecx
|
|
||||||
.sect .text
|
|
||||||
.com:
|
|
||||||
mov ebx,esp
|
|
||||||
add ebx,4
|
|
||||||
sar ecx,2
|
|
||||||
1:
|
|
||||||
not (ebx)
|
|
||||||
add ebx,4
|
|
||||||
loop 1b
|
|
||||||
ret
|
|
@ -1,27 +0,0 @@
|
|||||||
.sect .text; .sect .rom; .sect .data; .sect .bss
|
|
||||||
.define .csa4
|
|
||||||
|
|
||||||
.sect .text
|
|
||||||
.csa4:
|
|
||||||
! ebx, descriptor address
|
|
||||||
! eax, index
|
|
||||||
mov edx,(ebx) ! default
|
|
||||||
sub eax,4(ebx)
|
|
||||||
cmp eax,8(ebx)
|
|
||||||
ja 1f
|
|
||||||
sal eax,2
|
|
||||||
add ebx,eax
|
|
||||||
mov ebx,12(ebx)
|
|
||||||
test ebx,ebx
|
|
||||||
jnz 2f
|
|
||||||
1:
|
|
||||||
mov ebx,edx
|
|
||||||
test ebx,ebx
|
|
||||||
jnz 2f
|
|
||||||
.extern ECASE
|
|
||||||
.extern .fat
|
|
||||||
mov eax,ECASE
|
|
||||||
push eax
|
|
||||||
jmp .fat
|
|
||||||
2:
|
|
||||||
jmp ebx
|
|
@ -1,29 +0,0 @@
|
|||||||
.sect .text; .sect .rom; .sect .data; .sect .bss
|
|
||||||
.define .csb4
|
|
||||||
|
|
||||||
.sect .text
|
|
||||||
.csb4:
|
|
||||||
!ebx, descriptor address
|
|
||||||
!eax, index
|
|
||||||
mov edx,(ebx)
|
|
||||||
mov ecx,4(ebx)
|
|
||||||
1:
|
|
||||||
add ebx,8
|
|
||||||
dec ecx
|
|
||||||
jl 4f
|
|
||||||
cmp eax,(ebx)
|
|
||||||
jne 1b
|
|
||||||
mov ebx,4(ebx)
|
|
||||||
2:
|
|
||||||
test ebx,ebx
|
|
||||||
jnz 3f
|
|
||||||
.extern ECASE
|
|
||||||
.extern .fat
|
|
||||||
mov eax,ECASE
|
|
||||||
push eax
|
|
||||||
jmp .fat
|
|
||||||
3:
|
|
||||||
jmp ebx
|
|
||||||
4:
|
|
||||||
mov ebx,edx
|
|
||||||
jmp 2b
|
|
@ -1,15 +0,0 @@
|
|||||||
.sect .text; .sect .rom; .sect .data; .sect .bss
|
|
||||||
.define .cuf4
|
|
||||||
|
|
||||||
.sect .text
|
|
||||||
.cuf4:
|
|
||||||
mov bx,sp
|
|
||||||
fildl 8(bx)
|
|
||||||
cmp 8(bx),0
|
|
||||||
jge 1f
|
|
||||||
fisubl (bigmin)
|
|
||||||
fisubl (bigmin)
|
|
||||||
1:
|
|
||||||
fstps 8(bx)
|
|
||||||
wait
|
|
||||||
ret
|
|
@ -1,15 +0,0 @@
|
|||||||
.sect .text; .sect .rom; .sect .data; .sect .bss
|
|
||||||
.define .cuf8
|
|
||||||
|
|
||||||
.sect .text
|
|
||||||
.cuf8:
|
|
||||||
mov bx,sp
|
|
||||||
fildl 8(bx)
|
|
||||||
cmp 8(bx),0
|
|
||||||
jge 1f
|
|
||||||
fisubl (bigmin)
|
|
||||||
fisubl (bigmin)
|
|
||||||
1:
|
|
||||||
fstpd 4(bx)
|
|
||||||
wait
|
|
||||||
ret
|
|
@ -1,22 +0,0 @@
|
|||||||
.sect .text; .sect .rom; .sect .data; .sect .bss
|
|
||||||
.define .ciu
|
|
||||||
.define .cui
|
|
||||||
.define .cuu
|
|
||||||
|
|
||||||
.sect .text
|
|
||||||
.ciu:
|
|
||||||
.cui:
|
|
||||||
.cuu:
|
|
||||||
pop ebx ! return address
|
|
||||||
! pop ecx, dest. size
|
|
||||||
! pop edx, source size
|
|
||||||
! eax is source
|
|
||||||
cmp edx,ecx
|
|
||||||
jne 8f
|
|
||||||
jmp ebx
|
|
||||||
8:
|
|
||||||
.extern EILLINS
|
|
||||||
.extern .fat
|
|
||||||
mov eax,EILLINS
|
|
||||||
push eax
|
|
||||||
jmp .fat
|
|
@ -1,17 +0,0 @@
|
|||||||
.sect .text; .sect .rom; .sect .data; .sect .bss
|
|
||||||
.define .dup
|
|
||||||
|
|
||||||
! #bytes in ecx
|
|
||||||
.sect .text
|
|
||||||
.dup:
|
|
||||||
pop ebx ! return address
|
|
||||||
mov eax,esi
|
|
||||||
mov edx,edi
|
|
||||||
mov esi,esp
|
|
||||||
sub esp,ecx
|
|
||||||
mov edi,esp
|
|
||||||
sar ecx,2
|
|
||||||
rep movs
|
|
||||||
mov esi,eax
|
|
||||||
mov edi,edx
|
|
||||||
jmp ebx
|
|
@ -1,11 +0,0 @@
|
|||||||
.sect .text; .sect .rom; .sect .data; .sect .bss
|
|
||||||
.define .dvf4
|
|
||||||
|
|
||||||
.sect .text
|
|
||||||
.dvf4:
|
|
||||||
mov bx,sp
|
|
||||||
flds 8(bx)
|
|
||||||
fdivs 4(bx)
|
|
||||||
fstps 8(bx)
|
|
||||||
wait
|
|
||||||
ret
|
|
@ -1,11 +0,0 @@
|
|||||||
.sect .text; .sect .rom; .sect .data; .sect .bss
|
|
||||||
.define .dvf8
|
|
||||||
|
|
||||||
.sect .text
|
|
||||||
.dvf8:
|
|
||||||
mov bx,sp
|
|
||||||
fldd 12(bx)
|
|
||||||
fdivd 4(bx)
|
|
||||||
fstpd 12(bx)
|
|
||||||
wait
|
|
||||||
ret
|
|
@ -1,21 +0,0 @@
|
|||||||
.sect .text; .sect .rom; .sect .data; .sect .bss
|
|
||||||
.define .dvi
|
|
||||||
|
|
||||||
! #bytes in eax
|
|
||||||
.sect .text
|
|
||||||
.dvi:
|
|
||||||
pop ebx ! return address
|
|
||||||
cmp eax,4
|
|
||||||
jne 1f
|
|
||||||
pop eax
|
|
||||||
cwd
|
|
||||||
pop ecx
|
|
||||||
idiv ecx
|
|
||||||
push eax
|
|
||||||
jmp ebx
|
|
||||||
1:
|
|
||||||
.extern EODDZ
|
|
||||||
.extern .trp
|
|
||||||
mov eax,EODDZ
|
|
||||||
push ebx
|
|
||||||
jmp .trp
|
|
@ -1,21 +0,0 @@
|
|||||||
.sect .text; .sect .rom; .sect .data; .sect .bss
|
|
||||||
.define .dvu
|
|
||||||
|
|
||||||
! #bytes in eax
|
|
||||||
.sect .text
|
|
||||||
.dvu:
|
|
||||||
pop ebx ! return address
|
|
||||||
cmp eax,4
|
|
||||||
jne 1f
|
|
||||||
pop eax
|
|
||||||
xor edx,edx
|
|
||||||
pop ecx
|
|
||||||
div ecx
|
|
||||||
push eax
|
|
||||||
jmp ebx
|
|
||||||
1:
|
|
||||||
.extern EODDZ
|
|
||||||
.extern .trp
|
|
||||||
mov eax,EODDZ
|
|
||||||
push ebx
|
|
||||||
jmp .trp
|
|
@ -1,32 +0,0 @@
|
|||||||
.sect .text; .sect .rom; .sect .data; .sect .bss
|
|
||||||
.define .error
|
|
||||||
.define .Xtrp
|
|
||||||
|
|
||||||
! eax is trap number
|
|
||||||
! all registers must be saved
|
|
||||||
! because return is possible
|
|
||||||
! May only be called with error no's <16
|
|
||||||
.sect .text
|
|
||||||
.error:
|
|
||||||
mov ecx,eax
|
|
||||||
mov ebx,1
|
|
||||||
sal ebx,cl
|
|
||||||
.extern .ignmask
|
|
||||||
.extern .trp
|
|
||||||
test ebx,(.ignmask)
|
|
||||||
jne 2f
|
|
||||||
call .trp
|
|
||||||
2:
|
|
||||||
ret
|
|
||||||
|
|
||||||
.Xtrp:
|
|
||||||
pusha
|
|
||||||
cmp eax,16
|
|
||||||
jge 1f
|
|
||||||
call .error
|
|
||||||
popa
|
|
||||||
ret
|
|
||||||
1:
|
|
||||||
call .trp
|
|
||||||
popa
|
|
||||||
ret
|
|
@ -1,22 +0,0 @@
|
|||||||
.sect .text; .sect .rom; .sect .data; .sect .bss
|
|
||||||
.define .exg
|
|
||||||
|
|
||||||
! #bytes in ecx
|
|
||||||
.sect .text
|
|
||||||
.exg:
|
|
||||||
push edi
|
|
||||||
mov edi,esp
|
|
||||||
add edi,8
|
|
||||||
mov ebx,edi
|
|
||||||
add ebx,ecx
|
|
||||||
sar ecx,2
|
|
||||||
1:
|
|
||||||
mov eax,(ebx)
|
|
||||||
xchg eax,(edi)
|
|
||||||
mov (ebx),eax
|
|
||||||
add edi,4
|
|
||||||
add ebx,4
|
|
||||||
loop 1b
|
|
||||||
2:
|
|
||||||
pop edi
|
|
||||||
ret
|
|
@ -1,10 +0,0 @@
|
|||||||
.sect .text; .sect .rom; .sect .data; .sect .bss
|
|
||||||
.sect .text
|
|
||||||
.define .fat
|
|
||||||
|
|
||||||
.fat:
|
|
||||||
.extern .trp
|
|
||||||
.extern .stop
|
|
||||||
call .trp
|
|
||||||
call .stop
|
|
||||||
! no return
|
|
@ -1,49 +0,0 @@
|
|||||||
.sect .text; .sect .rom; .sect .data; .sect .bss
|
|
||||||
.define .fef4
|
|
||||||
|
|
||||||
.sect .text
|
|
||||||
.fef4:
|
|
||||||
! this could be simpler, if only the
|
|
||||||
! fxtract instruction was emulated properly
|
|
||||||
mov bx,sp
|
|
||||||
mov ax,8(bx)
|
|
||||||
and ax,0x7f800000
|
|
||||||
je 1f ! zero exponent
|
|
||||||
shr ax,23
|
|
||||||
sub ax,126
|
|
||||||
mov cx,ax ! exponent in cx
|
|
||||||
mov ax,8(bx)
|
|
||||||
and ax,0x807fffff
|
|
||||||
or ax,0x3f000000 ! load -1 exponent
|
|
||||||
mov bx,4(bx)
|
|
||||||
mov 4(bx),ax
|
|
||||||
mov (bx),cx
|
|
||||||
ret
|
|
||||||
1: ! we get here on zero exp
|
|
||||||
mov ax,8(bx)
|
|
||||||
and ax,0x007fffff
|
|
||||||
jne 1f ! zero result
|
|
||||||
mov bx,4(bx)
|
|
||||||
mov (bx),ax
|
|
||||||
mov 4(bx),ax
|
|
||||||
ret
|
|
||||||
1: ! otherwise unnormalized number
|
|
||||||
mov cx,8(bx)
|
|
||||||
and cx,0x807fffff
|
|
||||||
mov dx,cx
|
|
||||||
and cx,0x80000000
|
|
||||||
mov ax,-125
|
|
||||||
2:
|
|
||||||
test dx,0x800000
|
|
||||||
jne 1f
|
|
||||||
dec ax
|
|
||||||
shl dx,1
|
|
||||||
or dx,cx
|
|
||||||
jmp 2b
|
|
||||||
1:
|
|
||||||
mov bx,4(bx)
|
|
||||||
mov (bx),ax
|
|
||||||
and dx,0x807fffff
|
|
||||||
or dx,0x3f000000 ! load -1 exponent
|
|
||||||
mov 4(bx),dx
|
|
||||||
ret
|
|
@ -1,56 +0,0 @@
|
|||||||
.sect .text; .sect .rom; .sect .data; .sect .bss
|
|
||||||
.define .fef8
|
|
||||||
|
|
||||||
.sect .text
|
|
||||||
.fef8:
|
|
||||||
! this could be simpler, if only the
|
|
||||||
! fxtract instruction was emulated properly
|
|
||||||
mov bx,sp
|
|
||||||
mov ax,12(bx)
|
|
||||||
and ax,0x7ff00000
|
|
||||||
je 1f ! zero exponent
|
|
||||||
shr ax,20
|
|
||||||
sub ax,1022
|
|
||||||
mov cx,ax ! exponent in cx
|
|
||||||
mov ax,12(bx)
|
|
||||||
and ax,0x800fffff
|
|
||||||
or ax,0x3fe00000 ! load -1 exponent
|
|
||||||
mov dx,8(bx)
|
|
||||||
mov bx,4(bx)
|
|
||||||
mov 4(bx),dx
|
|
||||||
mov 8(bx),ax
|
|
||||||
mov (bx),cx
|
|
||||||
ret
|
|
||||||
1: ! we get here on zero exp
|
|
||||||
mov ax,12(bx)
|
|
||||||
and ax,0xfffff
|
|
||||||
or ax,8(bx)
|
|
||||||
jne 1f ! zero result
|
|
||||||
mov bx,4(bx)
|
|
||||||
mov (bx),ax
|
|
||||||
mov 4(bx),ax
|
|
||||||
mov 8(bx),ax
|
|
||||||
ret
|
|
||||||
1: ! otherwise unnormalized number
|
|
||||||
mov cx,12(bx)
|
|
||||||
and cx,0x800fffff
|
|
||||||
mov dx,cx
|
|
||||||
and cx,0x80000000
|
|
||||||
mov ax,-1021
|
|
||||||
2:
|
|
||||||
test dx,0x100000
|
|
||||||
jne 1f
|
|
||||||
dec ax
|
|
||||||
shl 8(bx),1
|
|
||||||
rcl dx,1
|
|
||||||
or dx,cx
|
|
||||||
jmp 2b
|
|
||||||
1:
|
|
||||||
and dx,0x800fffff
|
|
||||||
or dx,0x3fe00000 ! load -1 exponent
|
|
||||||
mov cx,8(bx)
|
|
||||||
mov bx,4(bx)
|
|
||||||
mov (bx),ax
|
|
||||||
mov 8(bx),dx
|
|
||||||
mov 4(bx),cx
|
|
||||||
ret
|
|
@ -1,37 +0,0 @@
|
|||||||
.sect .text; .sect .rom; .sect .data; .sect .bss
|
|
||||||
.define .fif4
|
|
||||||
|
|
||||||
.sect .text
|
|
||||||
.fif4:
|
|
||||||
mov bx,sp
|
|
||||||
flds 8(bx)
|
|
||||||
fmuls 12(bx) ! multiply
|
|
||||||
fld st ! copy result
|
|
||||||
ftst ! test sign; handle negative separately
|
|
||||||
fstsw ax
|
|
||||||
wait
|
|
||||||
sahf ! result of test in condition codes
|
|
||||||
jb 1f
|
|
||||||
frndint ! this one rounds (?)
|
|
||||||
fcom st(1) ! compare with original; if <=, then OK
|
|
||||||
fstsw ax
|
|
||||||
wait
|
|
||||||
sahf
|
|
||||||
jbe 2f
|
|
||||||
fisubs (one) ! else subtract 1
|
|
||||||
jmp 2f
|
|
||||||
1: ! here, negative case
|
|
||||||
frndint ! this one rounds (?)
|
|
||||||
fcom st(1) ! compare with original; if >=, then OK
|
|
||||||
fstsw ax
|
|
||||||
wait
|
|
||||||
sahf
|
|
||||||
jae 2f
|
|
||||||
fiadds (one) ! else add 1
|
|
||||||
2:
|
|
||||||
fsub st(1),st ! subtract integer part
|
|
||||||
mov bx,4(bx)
|
|
||||||
fstps (bx)
|
|
||||||
fstps 4(bx)
|
|
||||||
wait
|
|
||||||
ret
|
|
@ -1,37 +0,0 @@
|
|||||||
.sect .text; .sect .rom; .sect .data; .sect .bss
|
|
||||||
.define .fif8
|
|
||||||
|
|
||||||
.sect .text
|
|
||||||
.fif8:
|
|
||||||
mov bx,sp
|
|
||||||
fldd 8(bx)
|
|
||||||
fmuld 16(bx) ! multiply
|
|
||||||
fld st ! and copy result
|
|
||||||
ftst ! test sign; handle negative separately
|
|
||||||
fstsw ax
|
|
||||||
wait
|
|
||||||
sahf ! result of test in condition codes
|
|
||||||
jb 1f
|
|
||||||
frndint ! this one rounds (?)
|
|
||||||
fcom st(1) ! compare with original; if <=, then OK
|
|
||||||
fstsw ax
|
|
||||||
wait
|
|
||||||
sahf
|
|
||||||
jbe 2f
|
|
||||||
fisubs (one) ! else subtract 1
|
|
||||||
jmp 2f
|
|
||||||
1: ! here, negative case
|
|
||||||
frndint ! this one rounds (?)
|
|
||||||
fcom st(1) ! compare with original; if >=, then OK
|
|
||||||
fstsw ax
|
|
||||||
wait
|
|
||||||
sahf
|
|
||||||
jae 2f
|
|
||||||
fiadds (one) ! else add 1
|
|
||||||
2:
|
|
||||||
fsub st(1),st ! subtract integer part
|
|
||||||
mov bx,4(bx)
|
|
||||||
fstpd (bx)
|
|
||||||
fstpd 8(bx)
|
|
||||||
wait
|
|
||||||
ret
|
|
@ -1,10 +0,0 @@
|
|||||||
.sect .text; .sect .rom; .sect .data; .sect .bss
|
|
||||||
.define one, bigmin
|
|
||||||
|
|
||||||
.sect .rom
|
|
||||||
one:
|
|
||||||
.data2 1
|
|
||||||
two:
|
|
||||||
.data2 2
|
|
||||||
bigmin:
|
|
||||||
.data4 -2147483648
|
|
@ -1,8 +0,0 @@
|
|||||||
.sect .text; .sect .rom; .sect .data; .sect .bss
|
|
||||||
.sect .text
|
|
||||||
.define .gto
|
|
||||||
|
|
||||||
.gto:
|
|
||||||
mov ebp,8(ebx)
|
|
||||||
mov esp,4(ebx)
|
|
||||||
jmp (ebx)
|
|
@ -1,7 +0,0 @@
|
|||||||
.sect .text; .sect .rom; .sect .data; .sect .bss
|
|
||||||
|
|
||||||
.define hol0
|
|
||||||
.sect .data
|
|
||||||
hol0:
|
|
||||||
.data4 0, 0
|
|
||||||
.data4 0, 0
|
|
@ -1,18 +0,0 @@
|
|||||||
.sect .text; .sect .rom; .sect .data; .sect .bss
|
|
||||||
.sect .text
|
|
||||||
.define .iaar
|
|
||||||
|
|
||||||
.iaar:
|
|
||||||
pop ecx
|
|
||||||
pop edx
|
|
||||||
cmp edx,4
|
|
||||||
.extern .unknown
|
|
||||||
jne .unknown
|
|
||||||
pop ebx ! descriptor address
|
|
||||||
pop eax ! index
|
|
||||||
sub eax,(ebx)
|
|
||||||
mul 8(ebx)
|
|
||||||
pop ebx ! array base
|
|
||||||
add ebx,eax
|
|
||||||
push ecx
|
|
||||||
ret
|
|
@ -1,15 +0,0 @@
|
|||||||
.sect .text; .sect .rom; .sect .data; .sect .bss
|
|
||||||
.sect .text
|
|
||||||
.define .ilar
|
|
||||||
|
|
||||||
.ilar:
|
|
||||||
pop ecx
|
|
||||||
pop edx
|
|
||||||
.extern .unknown
|
|
||||||
cmp edx,4
|
|
||||||
jne .unknown
|
|
||||||
pop ebx ! descriptor address
|
|
||||||
pop eax ! index
|
|
||||||
push ecx
|
|
||||||
.extern .lar4
|
|
||||||
jmp .lar4
|
|
@ -1,32 +0,0 @@
|
|||||||
.sect .text; .sect .rom; .sect .data; .sect .bss
|
|
||||||
.sect .text
|
|
||||||
.define .inn
|
|
||||||
|
|
||||||
! #bytes in ecx
|
|
||||||
! bit # in eax
|
|
||||||
.inn:
|
|
||||||
xor edx,edx
|
|
||||||
mov ebx,8
|
|
||||||
div ebx
|
|
||||||
mov ebx,esp
|
|
||||||
add ebx,4
|
|
||||||
add ebx,eax
|
|
||||||
cmp eax,ecx
|
|
||||||
jae 1f
|
|
||||||
movb al,(ebx)
|
|
||||||
mov ebx,edx
|
|
||||||
testb al,bits(ebx)
|
|
||||||
jz 1f
|
|
||||||
mov eax,1
|
|
||||||
jmp 2f
|
|
||||||
1:
|
|
||||||
xor eax,eax
|
|
||||||
2:
|
|
||||||
pop ebx
|
|
||||||
add esp,ecx
|
|
||||||
! eax is result
|
|
||||||
jmp ebx
|
|
||||||
|
|
||||||
.sect .rom
|
|
||||||
bits:
|
|
||||||
.data1 1,2,4,8,16,32,64,128
|
|
@ -1,18 +0,0 @@
|
|||||||
.sect .text; .sect .rom; .sect .data; .sect .bss
|
|
||||||
.sect .text
|
|
||||||
.define .ior
|
|
||||||
|
|
||||||
! #bytes in ecx
|
|
||||||
.ior:
|
|
||||||
pop ebx ! return address
|
|
||||||
mov edx,edi
|
|
||||||
mov edi,esp
|
|
||||||
add edi,ecx
|
|
||||||
sar ecx,2
|
|
||||||
1:
|
|
||||||
pop eax
|
|
||||||
or eax,(edi)
|
|
||||||
stos
|
|
||||||
loop 1b
|
|
||||||
mov edi,edx
|
|
||||||
jmp ebx
|
|
@ -1,15 +0,0 @@
|
|||||||
.sect .text; .sect .rom; .sect .data; .sect .bss
|
|
||||||
.sect .text
|
|
||||||
.define .isar
|
|
||||||
|
|
||||||
.isar:
|
|
||||||
pop ecx
|
|
||||||
pop eax
|
|
||||||
cmp eax,4
|
|
||||||
.extern .unknown
|
|
||||||
jne .unknown
|
|
||||||
pop ebx ! descriptor address
|
|
||||||
pop eax ! index
|
|
||||||
push ecx
|
|
||||||
.extern .sar4
|
|
||||||
jmp .sar4
|
|
@ -1,37 +0,0 @@
|
|||||||
.sect .text; .sect .rom; .sect .data; .sect .bss
|
|
||||||
.sect .text
|
|
||||||
.define .lar4
|
|
||||||
|
|
||||||
.lar4:
|
|
||||||
! ebx, descriptor address
|
|
||||||
! eax, index
|
|
||||||
sub eax,(ebx)
|
|
||||||
mov ecx,8(ebx)
|
|
||||||
imul ecx
|
|
||||||
pop ebx
|
|
||||||
pop edx ! base address
|
|
||||||
add edx,eax
|
|
||||||
sar ecx,1
|
|
||||||
jnb 1f
|
|
||||||
xor eax,eax
|
|
||||||
movb al,(edx)
|
|
||||||
push eax
|
|
||||||
jmp ebx
|
|
||||||
1:
|
|
||||||
sar ecx,1
|
|
||||||
jnb 1f
|
|
||||||
xor eax,eax
|
|
||||||
o16 mov ax,(edx)
|
|
||||||
push eax
|
|
||||||
jmp ebx
|
|
||||||
1:
|
|
||||||
xchg edx,esi ! saved esi
|
|
||||||
mov eax,ecx
|
|
||||||
sal eax,2
|
|
||||||
sub esp,eax
|
|
||||||
mov eax,edi ! save edi
|
|
||||||
mov edi,esp
|
|
||||||
rep movs
|
|
||||||
mov edi,eax
|
|
||||||
mov esi,edx
|
|
||||||
jmp ebx
|
|
@ -1,44 +0,0 @@
|
|||||||
.sect .text; .sect .rom; .sect .data; .sect .bss
|
|
||||||
.sect .text
|
|
||||||
.define .loi
|
|
||||||
.define .los
|
|
||||||
|
|
||||||
! #bytes in ecx
|
|
||||||
! address in ebx
|
|
||||||
! save esi/edi. they might be register variables
|
|
||||||
.los:
|
|
||||||
pop edx
|
|
||||||
mov eax,ecx
|
|
||||||
sar ecx,1
|
|
||||||
jnb 1f
|
|
||||||
movsxb eax,(ebx)
|
|
||||||
push eax
|
|
||||||
jmp edx
|
|
||||||
1:
|
|
||||||
sar ecx,1
|
|
||||||
jnb 1f
|
|
||||||
movsx eax,(ebx)
|
|
||||||
push eax
|
|
||||||
jmp edx
|
|
||||||
1:
|
|
||||||
push edx
|
|
||||||
mov edx,esi
|
|
||||||
mov esi,ebx
|
|
||||||
pop ebx
|
|
||||||
sub esp,eax
|
|
||||||
jmp 1f
|
|
||||||
|
|
||||||
.loi:
|
|
||||||
! only called with size >= 4
|
|
||||||
mov edx,esi
|
|
||||||
mov esi,ebx
|
|
||||||
pop ebx
|
|
||||||
sub esp,ecx
|
|
||||||
sar ecx,2
|
|
||||||
1:
|
|
||||||
mov eax,edi
|
|
||||||
mov edi,esp
|
|
||||||
rep movs
|
|
||||||
mov esi,edx
|
|
||||||
mov edi,eax
|
|
||||||
jmp ebx
|
|
@ -1,11 +0,0 @@
|
|||||||
.sect .text; .sect .rom; .sect .data; .sect .bss
|
|
||||||
.define .mlf4
|
|
||||||
|
|
||||||
.sect .text
|
|
||||||
.mlf4:
|
|
||||||
mov bx,sp
|
|
||||||
flds 4(bx)
|
|
||||||
fmuls 8(bx)
|
|
||||||
fstps 8(bx)
|
|
||||||
wait
|
|
||||||
ret
|
|
@ -1,11 +0,0 @@
|
|||||||
.sect .text; .sect .rom; .sect .data; .sect .bss
|
|
||||||
.define .mlf8
|
|
||||||
|
|
||||||
.sect .text
|
|
||||||
.mlf8:
|
|
||||||
mov bx,sp
|
|
||||||
fldd 4(bx)
|
|
||||||
fmuld 12(bx)
|
|
||||||
fstpd 12(bx)
|
|
||||||
wait
|
|
||||||
ret
|
|
@ -1,20 +0,0 @@
|
|||||||
.sect .text; .sect .rom; .sect .data; .sect .bss
|
|
||||||
.sect .text
|
|
||||||
.define .mli
|
|
||||||
|
|
||||||
! #bytes in eax
|
|
||||||
.mli:
|
|
||||||
pop ebx ! return address
|
|
||||||
cmp eax,4
|
|
||||||
jne 1f
|
|
||||||
pop eax
|
|
||||||
pop ecx
|
|
||||||
mul ecx
|
|
||||||
push eax
|
|
||||||
jmp ebx
|
|
||||||
1:
|
|
||||||
.extern EODDZ
|
|
||||||
.extern .trp
|
|
||||||
mov eax,EODDZ
|
|
||||||
push ebx
|
|
||||||
jmp .trp
|
|
@ -1,7 +0,0 @@
|
|||||||
.sect .text; .sect .rom; .sect .data; .sect .bss
|
|
||||||
.sect .text
|
|
||||||
.define .mon
|
|
||||||
|
|
||||||
.mon:
|
|
||||||
.extern .stop
|
|
||||||
call .stop
|
|
@ -1,11 +0,0 @@
|
|||||||
.sect .text; .sect .rom; .sect .data; .sect .bss
|
|
||||||
.define .ngf4
|
|
||||||
|
|
||||||
.sect .text
|
|
||||||
.ngf4:
|
|
||||||
mov bx,sp
|
|
||||||
flds 4(bx)
|
|
||||||
fchs
|
|
||||||
fstps 4(bx)
|
|
||||||
wait
|
|
||||||
ret
|
|
@ -1,11 +0,0 @@
|
|||||||
.sect .text; .sect .rom; .sect .data; .sect .bss
|
|
||||||
.define .ngf8
|
|
||||||
|
|
||||||
.sect .text
|
|
||||||
.ngf8:
|
|
||||||
mov bx,sp
|
|
||||||
fldd 4(bx)
|
|
||||||
fchs
|
|
||||||
fstpd 4(bx)
|
|
||||||
wait
|
|
||||||
ret
|
|
@ -1,19 +0,0 @@
|
|||||||
.sect .text; .sect .rom; .sect .data; .sect .bss
|
|
||||||
.sect .text
|
|
||||||
.define .ngi
|
|
||||||
|
|
||||||
! #bytes in eax
|
|
||||||
.ngi:
|
|
||||||
pop ebx ! return address
|
|
||||||
cmp eax,4
|
|
||||||
jne 1f
|
|
||||||
pop ecx
|
|
||||||
neg ecx
|
|
||||||
push ecx
|
|
||||||
jmp ebx
|
|
||||||
1:
|
|
||||||
.extern EODDZ
|
|
||||||
.extern .trp
|
|
||||||
mov eax,EODDZ
|
|
||||||
push ebx
|
|
||||||
jmp .trp
|
|
@ -1,10 +0,0 @@
|
|||||||
.sect .text; .sect .rom; .sect .data; .sect .bss
|
|
||||||
.sect .text
|
|
||||||
.define .nop
|
|
||||||
.extern printd, printc, hol0
|
|
||||||
|
|
||||||
.nop:
|
|
||||||
mov eax,(hol0)
|
|
||||||
call printd
|
|
||||||
movb al,'\n'
|
|
||||||
jmp printc
|
|
@ -1,47 +0,0 @@
|
|||||||
.sect .text; .sect .rom; .sect .data; .sect .bss
|
|
||||||
.sect .text
|
|
||||||
.define printc,printd,prints
|
|
||||||
|
|
||||||
! argument in eax
|
|
||||||
! uses ebx
|
|
||||||
prints:
|
|
||||||
xchg eax,ebx
|
|
||||||
1:
|
|
||||||
movb al,(ebx)
|
|
||||||
inc ebx
|
|
||||||
testb al,al
|
|
||||||
jz 2f
|
|
||||||
call printc
|
|
||||||
jmp 1b
|
|
||||||
2:
|
|
||||||
ret
|
|
||||||
|
|
||||||
! argument in eax
|
|
||||||
! uses ecx and edx
|
|
||||||
printd:
|
|
||||||
xor edx,edx
|
|
||||||
mov ecx,10
|
|
||||||
div ecx
|
|
||||||
test eax,eax
|
|
||||||
jz 1f
|
|
||||||
push edx
|
|
||||||
call printd
|
|
||||||
pop edx
|
|
||||||
1:
|
|
||||||
xchg eax,edx
|
|
||||||
addb al,'0'
|
|
||||||
|
|
||||||
! argument in eax
|
|
||||||
printc:
|
|
||||||
push eax
|
|
||||||
mov ebx,esp
|
|
||||||
mov eax,1
|
|
||||||
push eax
|
|
||||||
push ebx
|
|
||||||
push eax
|
|
||||||
call __write
|
|
||||||
pop ebx
|
|
||||||
pop ebx
|
|
||||||
pop ebx
|
|
||||||
pop ebx
|
|
||||||
ret
|
|
@ -1,20 +0,0 @@
|
|||||||
.sect .text; .sect .rom; .sect .data; .sect .bss
|
|
||||||
.sect .text
|
|
||||||
.define .rck
|
|
||||||
|
|
||||||
! descriptor address in ebx
|
|
||||||
! value in eax, must be left there
|
|
||||||
.rck:
|
|
||||||
cmp eax,(ebx)
|
|
||||||
jl 2f
|
|
||||||
cmp eax,4(ebx)
|
|
||||||
jg 2f
|
|
||||||
ret
|
|
||||||
2:
|
|
||||||
push eax
|
|
||||||
.extern ERANGE
|
|
||||||
.extern .error
|
|
||||||
mov eax,ERANGE
|
|
||||||
call .error
|
|
||||||
pop eax
|
|
||||||
ret
|
|
@ -1,21 +0,0 @@
|
|||||||
.sect .text; .sect .rom; .sect .data; .sect .bss
|
|
||||||
.sect .text
|
|
||||||
.define .rmi
|
|
||||||
|
|
||||||
! #bytes in eax
|
|
||||||
.rmi:
|
|
||||||
pop ebx ! return address
|
|
||||||
cmp eax,4
|
|
||||||
jne 1f
|
|
||||||
pop eax
|
|
||||||
cwd
|
|
||||||
pop ecx
|
|
||||||
idiv ecx
|
|
||||||
push edx
|
|
||||||
jmp ebx
|
|
||||||
1:
|
|
||||||
.extern EODDZ
|
|
||||||
.extern .trp
|
|
||||||
mov eax,EODDZ
|
|
||||||
push ebx
|
|
||||||
jmp .trp
|
|
@ -1,21 +0,0 @@
|
|||||||
.sect .text; .sect .rom; .sect .data; .sect .bss
|
|
||||||
.sect .text
|
|
||||||
.define .rmu
|
|
||||||
|
|
||||||
! #bytes in eax
|
|
||||||
.rmu:
|
|
||||||
pop ebx ! return address
|
|
||||||
cmp eax,4
|
|
||||||
jne 1f
|
|
||||||
pop eax
|
|
||||||
xor edx,edx
|
|
||||||
pop ecx
|
|
||||||
idiv ecx
|
|
||||||
push edx
|
|
||||||
jmp ebx
|
|
||||||
1:
|
|
||||||
.extern EODDZ
|
|
||||||
.extern .trp
|
|
||||||
mov eax,EODDZ
|
|
||||||
push ebx
|
|
||||||
jmp .trp
|
|
@ -1,20 +0,0 @@
|
|||||||
.sect .text; .sect .rom; .sect .data; .sect .bss
|
|
||||||
.sect .text
|
|
||||||
.define .rol
|
|
||||||
|
|
||||||
! #bytes in eax
|
|
||||||
.rol:
|
|
||||||
pop edx ! return address
|
|
||||||
cmp eax,4
|
|
||||||
jne 1f
|
|
||||||
pop eax
|
|
||||||
pop ecx
|
|
||||||
rol eax,cl
|
|
||||||
push eax
|
|
||||||
jmp edx
|
|
||||||
1:
|
|
||||||
.extern EODDZ
|
|
||||||
.extern .trp
|
|
||||||
mov eax,EODDZ
|
|
||||||
push edx
|
|
||||||
jmp .trp
|
|
@ -1,20 +0,0 @@
|
|||||||
.sect .text; .sect .rom; .sect .data; .sect .bss
|
|
||||||
.sect .text
|
|
||||||
.define .ror
|
|
||||||
|
|
||||||
! #bytes in eax
|
|
||||||
.ror:
|
|
||||||
pop edx ! return address
|
|
||||||
cmp eax,4
|
|
||||||
jne 1f
|
|
||||||
pop eax
|
|
||||||
pop ecx
|
|
||||||
ror eax,cl
|
|
||||||
push eax
|
|
||||||
jmp edx
|
|
||||||
1:
|
|
||||||
.extern EODDZ
|
|
||||||
.extern .trp
|
|
||||||
mov eax,EODDZ
|
|
||||||
push edx
|
|
||||||
jmp .trp
|
|
@ -1,33 +0,0 @@
|
|||||||
.sect .text; .sect .rom; .sect .data; .sect .bss
|
|
||||||
.sect .text
|
|
||||||
.define .sar4
|
|
||||||
|
|
||||||
.sar4:
|
|
||||||
! ebx, descriptor address
|
|
||||||
! eax, index
|
|
||||||
sub eax,(ebx)
|
|
||||||
mov ecx,8(ebx)
|
|
||||||
imul ecx
|
|
||||||
pop ebx
|
|
||||||
pop edx ! base address
|
|
||||||
add edx,eax
|
|
||||||
sar ecx,1
|
|
||||||
jnb 1f
|
|
||||||
pop eax
|
|
||||||
movb (edx),al
|
|
||||||
jmp ebx
|
|
||||||
1:
|
|
||||||
sar ecx,1
|
|
||||||
jnb 1f
|
|
||||||
pop eax
|
|
||||||
o16 mov (edx),ax
|
|
||||||
jmp ebx
|
|
||||||
1:
|
|
||||||
xchg edi,edx ! edi = base address, edx is saved edi
|
|
||||||
mov eax,esi
|
|
||||||
mov esi,esp
|
|
||||||
rep movs
|
|
||||||
mov esp,esi
|
|
||||||
mov esi,eax
|
|
||||||
mov edi,edx
|
|
||||||
jmp ebx
|
|
@ -1,11 +0,0 @@
|
|||||||
.sect .text; .sect .rom; .sect .data; .sect .bss
|
|
||||||
.define .sbf4
|
|
||||||
|
|
||||||
.sect .text
|
|
||||||
.sbf4:
|
|
||||||
mov bx,sp
|
|
||||||
flds 8(bx)
|
|
||||||
fsubs 4(bx)
|
|
||||||
fstps 8(bx)
|
|
||||||
wait
|
|
||||||
ret
|
|
@ -1,11 +0,0 @@
|
|||||||
.sect .text; .sect .rom; .sect .data; .sect .bss
|
|
||||||
.define .sbf8
|
|
||||||
|
|
||||||
.sect .text
|
|
||||||
.sbf8:
|
|
||||||
mov bx,sp
|
|
||||||
fldd 12(bx)
|
|
||||||
fsubd 4(bx)
|
|
||||||
fstpd 12(bx)
|
|
||||||
wait
|
|
||||||
ret
|
|
@ -1,19 +0,0 @@
|
|||||||
.sect .text; .sect .rom; .sect .data; .sect .bss
|
|
||||||
.sect .text
|
|
||||||
.define .sbi
|
|
||||||
|
|
||||||
! #bytes in ecx , top of stack in eax
|
|
||||||
.sbi:
|
|
||||||
pop ebx ! return subress
|
|
||||||
cmp ecx,4
|
|
||||||
jne 1f
|
|
||||||
pop ecx
|
|
||||||
sub eax,ecx
|
|
||||||
neg eax
|
|
||||||
jmp ebx
|
|
||||||
1:
|
|
||||||
.extern EODDZ
|
|
||||||
.extern .trp
|
|
||||||
mov eax,EODDZ
|
|
||||||
push ebx
|
|
||||||
jmp .trp
|
|
@ -1,42 +0,0 @@
|
|||||||
.sect .text; .sect .rom; .sect .data; .sect .bss
|
|
||||||
.sect .text
|
|
||||||
.define .set
|
|
||||||
|
|
||||||
! #bytes in ecx
|
|
||||||
! bit # in eax
|
|
||||||
.set:
|
|
||||||
pop ebx ! return address
|
|
||||||
xor edx,edx
|
|
||||||
!ifdef create set
|
|
||||||
sub esp,ecx
|
|
||||||
push ebx
|
|
||||||
push edi
|
|
||||||
mov ebx,esp
|
|
||||||
xor edi,edi
|
|
||||||
sar ecx,2
|
|
||||||
1:
|
|
||||||
mov 8(ebx)(edi),edx
|
|
||||||
add edi,4
|
|
||||||
loop 1b
|
|
||||||
!endif
|
|
||||||
mov ebx,8
|
|
||||||
div ebx
|
|
||||||
cmp eax,edi
|
|
||||||
jae 2f
|
|
||||||
mov edi,edx
|
|
||||||
movb dl,bits(edi)
|
|
||||||
mov edi,esp
|
|
||||||
add edi,eax
|
|
||||||
orb 8(edi),dl
|
|
||||||
pop edi
|
|
||||||
ret
|
|
||||||
2:
|
|
||||||
.extern ESET
|
|
||||||
.extern .trp
|
|
||||||
pop edi
|
|
||||||
mov eax,ESET
|
|
||||||
jmp .trp
|
|
||||||
|
|
||||||
.sect .rom
|
|
||||||
bits:
|
|
||||||
.data1 1,2,4,8,16,32,64,128
|
|
@ -1,20 +0,0 @@
|
|||||||
.sect .text; .sect .rom; .sect .data; .sect .bss
|
|
||||||
.sect .text
|
|
||||||
.define .sli
|
|
||||||
|
|
||||||
! #bytes in eax
|
|
||||||
.sli:
|
|
||||||
pop edx ! return address
|
|
||||||
cmp eax,4
|
|
||||||
jne 1f
|
|
||||||
pop eax
|
|
||||||
pop ecx
|
|
||||||
sal eax,cl
|
|
||||||
push eax
|
|
||||||
jmp edx
|
|
||||||
1:
|
|
||||||
.extern EODDZ
|
|
||||||
.extern .trp
|
|
||||||
mov eax,EODDZ
|
|
||||||
push edx
|
|
||||||
jmp .trp
|
|
@ -1,20 +0,0 @@
|
|||||||
.sect .text; .sect .rom; .sect .data; .sect .bss
|
|
||||||
.sect .text
|
|
||||||
.define .sri
|
|
||||||
|
|
||||||
! #bytes in eax
|
|
||||||
.sri:
|
|
||||||
pop edx ! return address
|
|
||||||
cmp eax,4
|
|
||||||
jne 1f
|
|
||||||
pop eax
|
|
||||||
pop ecx
|
|
||||||
sar eax,cl
|
|
||||||
push eax
|
|
||||||
jmp edx
|
|
||||||
1:
|
|
||||||
.extern EODDZ
|
|
||||||
.extern .trp
|
|
||||||
mov eax,EODDZ
|
|
||||||
push edx
|
|
||||||
jmp .trp
|
|
@ -1,41 +0,0 @@
|
|||||||
.sect .text; .sect .rom; .sect .data; .sect .bss
|
|
||||||
.sect .text
|
|
||||||
.define .sti
|
|
||||||
.define .sts
|
|
||||||
|
|
||||||
! #bytes in ecx
|
|
||||||
! address in ebx
|
|
||||||
! save edi/esi. they might be register variables
|
|
||||||
.sts:
|
|
||||||
pop edx
|
|
||||||
sar ecx,1
|
|
||||||
jnb 1f
|
|
||||||
pop eax
|
|
||||||
movb (ebx),al
|
|
||||||
jmp edx
|
|
||||||
1:
|
|
||||||
sar ecx,1
|
|
||||||
jnb 1f
|
|
||||||
pop eax
|
|
||||||
o16 mov (ebx),ax
|
|
||||||
jmp edx
|
|
||||||
1:
|
|
||||||
push edx
|
|
||||||
mov edx,edi
|
|
||||||
mov edi,ebx
|
|
||||||
pop ebx
|
|
||||||
jmp 1f
|
|
||||||
.sti:
|
|
||||||
! only called with count >> 4
|
|
||||||
mov edx,edi
|
|
||||||
mov edi,ebx
|
|
||||||
pop ebx
|
|
||||||
sar ecx,2
|
|
||||||
1:
|
|
||||||
mov eax,esi
|
|
||||||
mov esi,esp
|
|
||||||
rep movs
|
|
||||||
mov esp,esi
|
|
||||||
mov edi,edx
|
|
||||||
mov esi,eax
|
|
||||||
jmp ebx
|
|
@ -1,5 +0,0 @@
|
|||||||
.sect .text; .sect .rom; .sect .data; .sect .bss
|
|
||||||
.sect .text
|
|
||||||
.define .stop
|
|
||||||
.stop:
|
|
||||||
jmp ___exit
|
|
@ -1,18 +0,0 @@
|
|||||||
.sect .text; .sect .rom; .sect .data; .sect .bss
|
|
||||||
.sect .text
|
|
||||||
.define .trp
|
|
||||||
.extern .trppc, .stop
|
|
||||||
|
|
||||||
! eax is trap number
|
|
||||||
.trp:
|
|
||||||
xor ebx,ebx
|
|
||||||
xchg ebx,(.trppc)
|
|
||||||
test ebx,ebx
|
|
||||||
jz 2f
|
|
||||||
push eax
|
|
||||||
call ebx
|
|
||||||
pop eax
|
|
||||||
ret
|
|
||||||
2:
|
|
||||||
push eax
|
|
||||||
call .stop
|
|
@ -1,9 +0,0 @@
|
|||||||
.sect .text; .sect .rom; .sect .data; .sect .bss
|
|
||||||
.sect .text
|
|
||||||
.define .unknown
|
|
||||||
.extern EILLINS, .fat
|
|
||||||
|
|
||||||
.unknown:
|
|
||||||
mov eax,EILLINS
|
|
||||||
push eax
|
|
||||||
jmp .fat
|
|
@ -1,18 +0,0 @@
|
|||||||
.sect .text; .sect .rom; .sect .data; .sect .bss
|
|
||||||
.sect .text
|
|
||||||
.define .xor
|
|
||||||
|
|
||||||
! #bytes in ecx
|
|
||||||
.xor:
|
|
||||||
pop ebx ! return address
|
|
||||||
mov edx,edi
|
|
||||||
mov edi,esp
|
|
||||||
add edi,ecx
|
|
||||||
sar ecx,2
|
|
||||||
1:
|
|
||||||
pop eax
|
|
||||||
xor eax,(edi)
|
|
||||||
stos
|
|
||||||
loop 1b
|
|
||||||
mov edi,edx
|
|
||||||
jmp ebx
|
|
@ -1,35 +0,0 @@
|
|||||||
/* $Header$ */
|
|
||||||
/*
|
|
||||||
* (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
|
|
||||||
* See the copyright notice in the ACK home directory, in the file "Copyright".
|
|
||||||
*/
|
|
||||||
#define LINO_AD 0
|
|
||||||
#define FILN_AD 4
|
|
||||||
|
|
||||||
#define LINO (*(int *)(_hol0()+LINO_AD))
|
|
||||||
#define FILN (*(char **)(_hol0()+FILN_AD))
|
|
||||||
|
|
||||||
#define EARRAY 0
|
|
||||||
#define ERANGE 1
|
|
||||||
#define ESET 2
|
|
||||||
#define EIOVFL 3
|
|
||||||
#define EFOVFL 4
|
|
||||||
#define EFUNFL 5
|
|
||||||
#define EIDIVZ 6
|
|
||||||
#define EFDIVZ 7
|
|
||||||
#define EIUND 8
|
|
||||||
#define EFUND 9
|
|
||||||
#define ECONV 10
|
|
||||||
|
|
||||||
#define ESTACK 16
|
|
||||||
#define EHEAP 17
|
|
||||||
#define EILLINS 18
|
|
||||||
#define EODDZ 19
|
|
||||||
#define ECASE 20
|
|
||||||
#define EMEMFLT 21
|
|
||||||
#define EBADPTR 22
|
|
||||||
#define EBADPC 23
|
|
||||||
#define EBADLAE 24
|
|
||||||
#define EBADMON 25
|
|
||||||
#define EBADLIN 26
|
|
||||||
#define EBADGTO 27
|
|
@ -1,20 +0,0 @@
|
|||||||
#
|
|
||||||
.sect .text; .sect .rom; .sect .data; .sect .bss
|
|
||||||
.define ERANGE,ESET,EHEAP,ECASE,EILLINS,EIDIVZ,EODDZ
|
|
||||||
.define .trppc, .ignmask
|
|
||||||
|
|
||||||
ERANGE = 1
|
|
||||||
ESET = 2
|
|
||||||
EIDIVZ = 6
|
|
||||||
EHEAP = 17
|
|
||||||
EILLINS = 18
|
|
||||||
EODDZ = 19
|
|
||||||
ECASE = 20
|
|
||||||
|
|
||||||
#include <em_abs.h>
|
|
||||||
|
|
||||||
.sect .data
|
|
||||||
.trppc:
|
|
||||||
.data4 0
|
|
||||||
.ignmask:
|
|
||||||
.data4 EIOVFL | EIUND | ECONV | EFOVFL | EFUNFL
|
|
Loading…
x
Reference in New Issue
Block a user