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