home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Power-Programmierung
/
CD1.mdf
/
assemblr
/
library
/
screen
/
ucr_libr
/
test
/
testfp.asm
< prev
next >
Wrap
Assembly Source File
|
1991-10-31
|
56KB
|
4,342 lines
include stdlib.a
includelib stdlib.lib
;
lesi macro adrs
mov di, seg adrs
mov es, di
lea di, adrs
endm
;
ldxi macro adrs
mov dx, seg adrs
lea si, adrs
endm
;
;****************************************************************************
;
; T E S T S U I T E F O R
;
; Floating Point Routines in
;
; T H E U C R S T A N D A R D
;
; L I B R A R Y F O R A S S E M B L Y
;
; L A N G U A G E P R O G R A M M E R S
;
;****************************************************************************
;
;
; Global variables go here:
;
StdData segment para public 'sldata'
extrn fpacc:byte
StdData ends
;
;
dseg segment para public 'data'
;
MemAvail dw ?
;
Roundatof dt 5.0e-19
;
; Floating point values:
;
SPConst1 dd 1.0
SPConst10 dd -10.25
SPConst100 dd 100.50
SPConst1000 dd -1000.75
SPConst10000 dd 10000.22
SPConst100000 dd -100000.44
SPConst1000000 dd 1000000.66
SPConst123456 dd -123456.88
SPConst65432 dd 65432.11
SPConst9876 dd -9876.33
SPConst192 dd 192.55
SPConst38 dd -38.77
SPConst9 dd 9.99
;
DPConst1 dq 1.0
DPConst10 dq -10.25
DPConst100 dq 100.50
DPConst1000 dq -1000.75
DPConst10000 dq 10000.22
DPConst100000 dq -100000.44
DPConst1000000 dq 123456789012345678.66
DPConst123456 dq -123456.88
DPConst65432 dq 65432.11
DPConst9876 dq -9876.33
DPConst192 dq 192.55
DPConst38 dq -38.77
DPConst9 dq 9.99
;
EPConst1 dt 1.0
EPConst10 dt -10.25
EPConst100 dt 100.50
EPConst1000 dt -1000.75
EPConst10000 dt 10000.22
EPConst100000 dt -100000.44
EPConst1000000 dt 123456789012345678901.66
EPConst123456 dt -123456.88
EPConst65432 dt 65432.11
EPConst9876 dt -9876.33
EPConst192 dt 192.55
EPConst38 dt -38.77
EPConst9 dt 9.99
;
Temp dt ?
Output db 128 dup (0) ;Tests ftoa/2
;
Testatof1 db "1.2345678901234567890",0
Testatof2 db "1.23456789",0
Testatof3 db "123456789",0
Testatof4 db "-1.0",0
Testatof5 db "1.0e10",0
Testatof6 db "-1.0e10",0
Testatof7 db "1.0e-10",0
Testatof8 db "-1.0e-10",0
Testatof9 db "1234567890e-9",0
Testatof10 db "1.0e0",0
Testatof11 db "1.0e1",0
Testatof12 db "1.0e2",0
Testatof13 db "1.0e3",0
Testatof14 db "1.0e4",0
Testatof15 db "1.0e5",0
Testatof16 db "1.0e7",0
Testatof17 db "1.0e8",0
Testatof18 db "1.0e9",0
Testatof19 db "1.0e15",0
Testatof20 db "1.0e16",0
Testatof21 db "1.0e17",0
Testatof22 db "1.0e31",0
Testatof23 db "1.0e32",0
Testatof24 db "1.0e33",0
Testatof25 db "1.0e63",0
Testatof26 db "1.0e64",0
Testatof27 db "1.0e65",0
Testatof28 db "1.0e127",0
Testatof29 db "1.0e128",0
Testatof30 db "1.0e129",0
Testatof31 db "1.0e255",0
Testatof32 db "1.0e256",0
Testatof33 db "1.0e257",0
Testatof34 db "1.0e511",0
Testatof35 db "1.0e512",0
Testatof36 db "1.0e513",0
Testatof37 db "1.0e1023",0
Testatof38 db "1.0e1024",0
Testatof39 db "1.0e1025",0
Testatof40 db "1.0e2048",0
;
Testatof41 db "9.999999999999999e0",0
Testatof42 db "9.999999999999999e1",0
Testatof43 db "9.999999999999999e3",0
Testatof44 db "9.999999999999999e7",0
Testatof45 db "9.999999999999999e15",0
Testatof46 db "9.999999999999999e31",0
Testatof47 db "9.999999999999999e63",0
Testatof48 db "9.999999999999999e127",0
Testatof49 db "9.999999999999999e255",0
Testatof50 db "9.999999999999999e511",0
Testatof51 db "9.999999999999999e1023",0
Testatof52 db "9.999999999999999e2047",0
;
mTestatof11 db "1.0e-1",0
mTestatof12 db "1.0e-2",0
mTestatof13 db "1.0e-3",0
mTestatof14 db "1.0e-4",0
mTestatof15 db "1.0e-5",0
mTestatof16 db "1.0e-7",0
mTestatof17 db "1.0e-8",0
mTestatof18 db "1.0e-9",0
mTestatof19 db "1.0e-15",0
mTestatof20 db "1.0e-16",0
mTestatof21 db "1.0e-17",0
mTestatof22 db "1.0e-31",0
mTestatof23 db "1.0e-32",0
mTestatof24 db "1.0e-33",0
mTestatof25 db "1.0e-63",0
mTestatof26 db "1.0e-64",0
mTestatof27 db "1.0e-65",0
mTestatof28 db "1.0e-127",0
mTestatof29 db "1.0e-128",0
mTestatof30 db "1.0e-129",0
mTestatof31 db "1.0e-255",0
mTestatof32 db "1.0e-256",0
mTestatof33 db "1.0e-257",0
mTestatof34 db "1.0e-511",0
mTestatof35 db "1.0e-512",0
mTestatof36 db "1.0e-513",0
mTestatof37 db "1.0e-1023",0
mTestatof38 db "1.0e-1024",0
mTestatof39 db "1.0e-1025",0
mTestatof40 db "1.0e-2048",0
;
mTestatof41 db "9.999999999999999e-1",0
mTestatof42 db "9.999999999999999e-2",0
mTestatof43 db "9.999999999999999e-3",0
mTestatof44 db "9.999999999999999e-5",0
mTestatof45 db "9.999999999999999e-9",0
mTestatof46 db "9.999999999999999e-17",0
mTestatof47 db "9.999999999999999e-33",0
mTestatof48 db "9.999999999999999e-65",0
mTestatof49 db "9.999999999999999e-129",0
mTestatof50 db "9.999999999999999e-257",0
mTestatof51 db "9.999999999999999e-513",0
mTestatof52 db "9.999999999999999e-1025",0
mTestatof53 db "9.999999999999999e-2049",0
;
;
dseg ends
;
;
;
;
cseg segment para public 'code'
assume cs:cseg, ds:dseg
;
;
;
;
public PSP
PSP dw ?
;
cr equ 13
lf equ 10
;
;
; Main is the main program. Program execution always begins here.
;
Main proc
mov cs:PSP, es ;Save pgm seg prefix
mov ax, seg dseg ;Set up the segment registers
mov ds, ax
mov es, ax
mov dx, 0 ;Allocate all available RAM.
MemInit
mov MemAvail, cx
printf
db "There are %x paragraphs of memory available."
db cr,lf,lf,0
dd MemAvail
;
;
;
;
;***************************************************************************
;
; Test the floating point routines.
;
;
;
;
print
db "Testing itof:",cr,lf,0
;
mov ax, 1
Testitoflp: push ax
mov cx, 6
putisize
print
db " = ",0
itof
mov ax, 209h
ftoam
puts
free
call putfpacc
putcr
pop ax
cmp ax, 10000
jg TestItofDone
cmp ax, -10000
jl TestItofDone
mov cx, ax
mov bx, -10
mul bx
add ax, cx
jmp Testitoflp
;
TestItofDone: putcr
;
;----
;
print
db "Testing utof:",cr,lf,0
;
mov ax, 1
Testutoflp: push ax
mov cx, 5
putusize
print
db " = ",0
utof
mov ax, 209h
ftoam
puts
free
call putfpacc
putcr
pop ax
cmp ax, 10000
ja TestUtofDone
mov cx, ax
mov bx, 10
mul bx
add ax, cx
jmp Testutoflp
;
TestUtofDone: putcr
;
;----
;
print
db "Testing ltof:",cr,lf,0
;
mov ax, 1
mov dx, 0
Testltoflp: push ax
push dx
mov cx, 11
putlsize
print
db " = ",0
ltof
mov ax, 20eh
ftoam
puts
free
call putfpacc
putcr
pop dx
pop ax
push dx
cmp ax, 0ca00h ;low(1e9)
sbb dx, 3b9ah ;high(1e9)
pop dx
ja TestLtofDone
shl ax, 1 ;Multiply by 10.
rcl dx, 1
mov si, ax
mov di, dx
shl ax, 1
rcl dx, 1
shl ax, 1
rcl dx, 1
add ax, si
adc dx, di
jmp Testltoflp
;
TestLtofDone: putcr
;
mov ax, -1
mov dx, -1
Testltoflp2: push ax
push dx
mov cx, 11
putlsize
print
db " = ",0
ltof
mov ax, 20eh
ftoam
puts
free
call putfpacc
putcr
pop dx
pop ax
push dx
push ax
sub ax, 3600h ;low(-1e9)
sbb dx, 0c465h ;high(1e9)
pop ax
pop dx
jb TestLtofDone2
shl ax, 1 ;Multiply by 10.
rcl dx, 1
mov si, ax
mov di, dx
shl ax, 1
rcl dx, 1
shl ax, 1
rcl dx, 1
add ax, si
adc dx, di
jmp Testltoflp2
;
TestLtofDone2: putcr
;
print
db cr,lf
db "Testing ULTOF",cr,lf,0
;
mov ax, 1
mov dx, 0
Testultoflp2: push ax
push dx
mov cx, 11
putulsize
print
db " = ",0
ultof
mov ax, 20eh
ftoam
puts
free
call putfpacc
putcr
pop dx
pop ax
push dx
push ax
sub ax, 3600h ;low(-1e9)
sbb dx, 0c465h ;high(1e9)
pop ax
pop dx
ja TestuLtofDone2
shl ax, 1 ;Multiply by 10.
rcl dx, 1
mov si, ax
mov di, dx
shl ax, 1
rcl dx, 1
shl ax, 1
rcl dx, 1
add ax, si
adc dx, di
jmp Testultoflp2
;
TestuLtofDone2: putcr
;
;
;----
;
print
db "Testing LSFPA:",cr,lf,0
;
lesi SPConst1
lsfpa
print
db " 1.0 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lesi SPConst10
lsfpa
print
db " -10.25 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lesi SPConst100
lsfpa
print
db " 100.50 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lesi SPConst1000
lsfpa
print
db " -1000.75 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lesi SPConst10000
lsfpa
print
db " 10000.22 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lesi SPConst100000
lsfpa
print
db " -10000.44 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lesi SPConst1000000
lsfpa
print
db "1000000.66 =",0
mov ax, 20bh
ftoam
puts
print
db " Note: only 6-7 significant digits.",cr,lf,0
free
;
lesi SPConst123456
lsfpa
print
db "-123456.88 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lesi SPConst65432
lsfpa
print
db " 65432.11 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lesi SPConst9876
lsfpa
print
db " -9876.33 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lesi SPConst192
lsfpa
print
db " 192.55 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lesi SPConst38
lsfpa
print
db " -38.77 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lesi SPConst9
lsfpa
print
db " 9.99 =",0
mov ax, 20bh
ftoam
puts
putcr
putcr
free
;
;
;----
;
print
db "Testing SSFPA:",cr,lf,0
;
lesi SPConst1
lsfpa
lesi Temp
ssfpa
lefpal
dt 0.0
lsfpa
print
db " 1.0 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lesi SPConst10
lsfpa
lesi Temp
ssfpa
lefpal
dt 0.0
lsfpa
print
db " -10.25 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lesi SPConst100
lsfpa
lesi Temp
ssfpa
lefpal
dt 0.0
lsfpa
print
db " 100.50 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lesi SPConst1000
lsfpa
lesi Temp
ssfpa
lefpal
dt 0.0
lsfpa
print
db " -1000.75 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lesi SPConst10000
lsfpa
lesi Temp
ssfpa
lefpal
dt 0.0
lsfpa
print
db " 10000.22 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lesi SPConst100000
lsfpa
lesi Temp
ssfpa
lefpal
dt 0.0
lsfpa
print
db " -10000.44 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lesi SPConst1000000
lsfpa
lesi Temp
ssfpa
lefpal
dt 0.0
lsfpa
print
db "1000000.66 =",0
mov ax, 20bh
ftoam
puts
print
db " Note: only 6-7 significant digits.",cr,lf,0
free
;
lesi SPConst123456
lsfpa
lesi Temp
ssfpa
lefpal
dt 0.0
lsfpa
print
db "-123456.88 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lesi SPConst65432
lsfpa
lesi Temp
ssfpa
lefpal
dt 0.0
lsfpa
print
db " 65432.11 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lesi SPConst9876
lsfpa
lesi Temp
ssfpa
lefpal
dt 0.0
lsfpa
print
db " -9876.33 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lesi SPConst192
lsfpa
lesi Temp
ssfpa
lefpal
dt 0.0
lsfpa
print
db " 192.55 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lesi SPConst38
lsfpa
lesi Temp
ssfpa
lefpal
dt 0.0
lsfpa
print
db " -38.77 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lesi SPConst9
lsfpa
lesi Temp
ssfpa
lefpal
dt 0.0
lsfpa
print
db " 9.99 =",0
mov ax, 20bh
ftoam
puts
putcr
putcr
free
;
;
;----
;
print
db "Testing LDFPA:",cr,lf,0
;
lesi DPConst1
ldfpa
print
db " 1.0 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lesi DPConst10
ldfpa
print
db " -10.25 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lesi DPConst100
ldfpa
print
db " 100.50 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lesi DPConst1000
ldfpa
print
db " -1000.75 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lesi DPConst10000
ldfpa
print
db " 10000.22 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lesi DPConst100000
ldfpa
print
db " -10000.44 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lesi DPConst1000000
ldfpa
print
db "123456789012345678.66 =",0
mov ax, 216h
ftoam
puts
print
db " Note: only 17 sig. digits.",cr,lf,0
free
;
lesi DPConst123456
ldfpa
print
db "-123456.88 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lesi DPConst65432
ldfpa
print
db " 65432.11 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lesi DPConst9876
ldfpa
print
db " -9876.33 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lesi DPConst192
ldfpa
print
db " 192.55 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lesi DPConst38
ldfpa
print
db " -38.77 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lesi DPConst9
ldfpa
print
db " 9.99 =",0
mov ax, 20bh
ftoam
puts
putcr
putcr
free
;
;
;----
;
print
db "Testing SDFPA:",cr,lf,0
;
lesi DPConst1
ldfpa
lesi Temp
sdfpa
lefpal
dt 0.0
ldfpa
print
db " 1.0 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lesi DPConst10
ldfpa
lesi Temp
sdfpa
lefpal
dt 0.0
ldfpa
print
db " -10.25 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lesi DPConst100
ldfpa
lesi Temp
sdfpa
lefpal
dt 0.0
ldfpa
print
db " 100.50 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lesi DPConst1000
ldfpa
lesi Temp
sdfpa
lefpal
dt 0.0
ldfpa
print
db " -1000.75 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lesi DPConst10000
ldfpa
lesi Temp
sdfpa
lefpal
dt 0.0
ldfpa
print
db " 10000.22 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lesi DPConst100000
ldfpa
lesi Temp
sdfpa
lefpal
dt 0.0
ldfpa
print
db " -10000.44 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lesi DPConst1000000
ldfpa
lesi Temp
sdfpa
lefpal
dt 0.0
ldfpa
print
db "123456789012345678.66 =",0
mov ax, 216h
ftoam
puts
print
db " Note: only 17 sig. digits.",cr,lf,0
free
;
lesi DPConst123456
ldfpa
lesi Temp
sdfpa
lefpal
dt 0.0
ldfpa
print
db "-123456.88 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lesi DPConst65432
ldfpa
lesi Temp
sdfpa
lefpal
dt 0.0
ldfpa
print
db " 65432.11 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lesi DPConst9876
ldfpa
lesi Temp
sdfpa
lefpal
dt 0.0
ldfpa
print
db " -9876.33 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lesi DPConst192
ldfpa
lesi Temp
sdfpa
lefpal
dt 0.0
ldfpa
print
db " 192.55 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lesi DPConst38
ldfpa
lesi Temp
sdfpa
lefpal
dt 0.0
ldfpa
print
db " -38.77 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lesi DPConst9
ldfpa
lesi Temp
sdfpa
lefpal
dt 0.0
ldfpa
print
db " 9.99 =",0
mov ax, 20bh
ftoam
puts
putcr
putcr
free
;
;
;------
;
print
db "Testing lefpa:",cr,lf,0
;
lesi EPConst1
lefpa
print
db " 1.0 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lesi EPConst10
lefpa
print
db " -10.25 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lesi EPConst100
lefpa
print
db " 100.50 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lesi EPConst1000
lefpa
print
db " -1000.75 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lesi EPConst10000
lefpa
print
db " 10000.22 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lesi EPConst100000
lefpa
print
db " -10000.44 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lesi EPConst1000000
lefpa
print
db "123456789012345678901.66 =",0
mov ax, 219h
ftoam
puts
print
db " Note: only 17 sig. digits.",cr,lf,0
free
;
lesi EPConst123456
lefpa
print
db "-123456.88 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lesi EPConst65432
lefpa
print
db " 65432.11 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lesi EPConst9876
lefpa
print
db " -9876.33 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lesi EPConst192
lefpa
print
db " 192.55 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lesi EPConst38
lefpa
print
db " -38.77 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lesi EPConst9
lefpa
print
db " 9.99 =",0
mov ax, 20bh
ftoam
puts
putcr
putcr
free
;
;
;------
;
print
db "Testing sefap:",cr,lf,0
;
lesi EPConst1
lefpa
lesi Temp
sefpa
lefpal
dt 0.0
lefpa
print
db " 1.0 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lesi EPConst10
lefpa
lesi Temp
sefpa
lefpal
dt 0.0
lefpa
print
db " -10.25 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lesi EPConst100
lefpa
lesi Temp
sefpa
lefpal
dt 0.0
lefpa
print
db " 100.50 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lesi EPConst1000
lefpa
lesi Temp
sefpa
lefpal
dt 0.0
lefpa
print
db " -1000.75 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lesi EPConst10000
lefpa
lesi Temp
sefpa
lefpal
dt 0.0
lefpa
print
db " 10000.22 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lesi EPConst100000
lefpa
lesi Temp
sefpa
lefpal
dt 0.0
lefpa
print
db " -10000.44 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lesi EPConst1000000
lefpa
lesi Temp
sefpa
lefpal
dt 0.0
lefpa
print
db "123456789012345678901.66 =",0
mov ax, 219h
ftoam
puts
print
db " Note: only 17 sig. digits.",cr,lf,0
free
;
lesi EPConst123456
lefpa
lesi Temp
sefpa
lefpal
dt 0.0
lefpa
print
db "-123456.88 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lesi EPConst65432
lefpa
lesi Temp
sefpa
lefpal
dt 0.0
lefpa
print
db " 65432.11 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lesi EPConst9876
lefpa
lesi Temp
sefpa
lefpal
dt 0.0
lefpa
print
db " -9876.33 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lesi EPConst192
lefpa
lesi Temp
sefpa
lefpal
dt 0.0
lefpa
print
db " 192.55 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lesi EPConst38
lefpa
lesi Temp
sefpa
lefpal
dt 0.0
lefpa
print
db " -38.77 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lesi EPConst9
lefpa
lesi Temp
sefpa
lefpal
dt 0.0
lefpa
print
db " 9.99 =",0
mov ax, 20bh
ftoam
puts
putcr
putcr
free
;
;-----
;
print
db "Testing lefapl:",cr,lf,0
;
lefpal
dt 1.0
print
db " 1.0 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lefpal
dt -10.25
print
db " -10.25 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lefpal
dt 100.50
print
db " 100.50 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lefpal
dt -1000.75
print
db " -1000.75 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lefpal
dt 10000.22
print
db " 10000.22 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lefpal
dt -100000.44
print
db " -100000.44 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lefpal
dt 123456789012345678901.66
print
db "123456789012345678901.66 =",0
mov ax, 219h
ftoam
puts
print
db " Note: only 17 sig. digits.",cr,lf,0
free
;
lefpal
dt -123456.88
print
db "-123456.88 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lefpal
dt 65432.11
print
db " 65432.11 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lefpal
dt -9876.33
print
db " -9876.33 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lefpal
dt 192.55
print
db " 192.55 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lefpal
dt -38.77
print
db " -38.77 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lefpal
dt 9.99
print
db " 9.99 =",0
mov ax, 20bh
ftoam
puts
putcr
putcr
free
;
;
;
; Test loading the floating point operand register-
;
print
db "Testing LSFPO (and XAccOp)",cr,lf,0
;
lesi SPConst1
lsfpo
XAccOp
print
db " 1.0 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lesi SPConst10
lsfpo
XAccOp
print
db " -10.25 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lesi SPConst100
lsfpo
XAccOp
print
db " 100.50 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lesi SPConst1000
lsfpo
XAccOp
print
db " -1000.75 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lesi SPConst10000
lsfpo
XAccOp
print
db " 10000.22 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lesi SPConst100000
lsfpo
XAccOp
print
db " -10000.44 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lesi SPConst1000000
lsfpo
XAccOp
print
db "1000000.66 =",0
mov ax, 20bh
ftoam
puts
print
db " Note: only 6-7 significant digits.",cr,lf,0
free
;
lesi SPConst123456
lsfpo
XAccOp
print
db "-123456.88 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lesi SPConst65432
lsfpo
XAccOp
print
db " 65432.11 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lesi SPConst9876
lsfpo
XAccOp
print
db " -9876.33 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lesi SPConst192
lsfpo
XAccOp
print
db " 192.55 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lesi SPConst38
lsfpo
XAccOp
print
db " -38.77 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lesi SPConst9
lsfpo
XAccOp
print
db " 9.99 =",0
mov ax, 20bh
ftoam
puts
putcr
putcr
free
;
;----
;
print
db "Testing LDFPO:",cr,lf,0
;
lesi DPConst1
ldfpo
XAccOp
print
db " 1.0 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lesi DPConst10
ldfpo
XAccOp
print
db " -10.25 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lesi DPConst100
ldfpo
XAccOp
print
db " 100.50 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lesi DPConst1000
ldfpo
XAccOp
print
db " -1000.75 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lesi DPConst10000
ldfpo
XAccOp
print
db " 10000.22 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lesi DPConst100000
ldfpo
XAccOp
print
db " -10000.44 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lesi DPConst1000000
ldfpo
XAccOp
print
db "123456789012345678.66 =",0
mov ax, 216h
ftoam
puts
print
db " Note: only 17 sig. digits.",cr,lf,0
free
;
lesi DPConst123456
ldfpo
XAccOp
print
db "-123456.88 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lesi DPConst65432
ldfpo
XAccOp
print
db " 65432.11 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lesi DPConst9876
ldfpo
XAccOp
print
db " -9876.33 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lesi DPConst192
ldfpo
XAccOp
print
db " 192.55 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lesi DPConst38
ldfpo
XAccOp
print
db " -38.77 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lesi DPConst9
ldfpo
XAccOp
print
db " 9.99 =",0
mov ax, 20bh
ftoam
puts
putcr
putcr
free
;
;
;------
;
print
db "Testing LEFPO:",cr,lf,0
;
lesi EPConst1
lefpo
XAccOp
print
db " 1.0 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lesi EPConst10
lefpo
XAccOp
print
db " -10.25 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lesi EPConst100
lefpo
XAccOp
print
db " 100.50 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lesi EPConst1000
lefpo
XAccOp
print
db " -1000.75 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lesi EPConst10000
lefpo
XAccOp
print
db " 10000.22 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lesi EPConst100000
lefpo
XAccOp
print
db " -10000.44 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lesi EPConst1000000
lefpo
XAccOp
print
db "123456789012345678901.66 =",0
mov ax, 219h
ftoam
puts
print
db " Note: only 17 sig. digits.",cr,lf,0
free
;
lesi EPConst123456
lefpo
XAccOp
print
db "-123456.88 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lesi EPConst65432
lefpo
XAccOp
print
db " 65432.11 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lesi EPConst9876
lefpo
XAccOp
print
db " -9876.33 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lesi EPConst192
lefpo
XAccOp
print
db " 192.55 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lesi EPConst38
lefpo
XAccOp
print
db " -38.77 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lesi EPConst9
lefpo
XAccOp
print
db " 9.99 =",0
mov ax, 20bh
ftoam
puts
putcr
putcr
free
;
;
;-----
;
print
db "Testing LEFPOL:",cr,lf,0
;
lefpol
dt 1.0
XAccOp
print
db " 1.0 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lefpol
dt -10.25
XAccOp
print
db " -10.25 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lefpol
dt 100.50
XAccOp
print
db " 100.50 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lefpol
dt -1000.75
XAccOp
print
db " -1000.75 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lefpol
dt 10000.22
XAccOp
print
db " 10000.22 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lefpol
dt -100000.44
XAccOp
print
db " -100000.44 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lefpol
dt 123456789012345678901.66
XAccOp
print
db "123456789012345678901.66 =",0
mov ax, 219h
ftoam
puts
print
db " Note: only 17 sig. digits.",cr,lf,0
free
;
lefpol
dt -123456.88
XAccOp
print
db "-123456.88 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lefpol
dt 65432.11
XAccOp
print
db " 65432.11 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lefpol
dt -9876.33
XAccOp
print
db " -9876.33 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lefpol
dt 192.55
XAccOp
print
db " 192.55 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lefpol
dt -38.77
XAccOp
print
db " -38.77 =",0
mov ax, 20bh
ftoam
puts
putcr
free
;
lefpol
dt 9.99
XAccOp
print
db " 9.99 =",0
mov ax, 20bh
ftoam
puts
putcr
putcr
free
;
;
;-----
;
;
;
;
;
; Test the arithmetic operations:
;
print
db "Testing addition",cr,lf,0
;
print
db "2.0 = ",0
lefpal
dt 1.9999999999999999999
lefpol
dt 0.0000000000000000001
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "2.0 = ",0
lefpal
dt 1.999999999999999999
lefpol
dt 0.000000000000000001
fpadd
mov ax, 1418h
ftoam
puts
call PutFPAcc
putcr
;
print
db "2.0 = ",0
lefpal
dt 1.99999999999999999
lefpol
dt 0.00000000000000001
fpadd
mov ax, 20bh
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "2.0 = ",0
lefpal
dt 1.9999999999999999
lefpol
dt 0.0000000000000001
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "2.0 = ",0
lefpal
dt 1.999999999999999
lefpol
dt 0.000000000000001
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "2.0 = ",0
lefpal
dt 1.99999999999999
lefpol
dt 0.00000000000001
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "2.0 = ",0
lefpal
dt 1.9999999999999
lefpol
dt 0.0000000000001
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "2.0 = ",0
lefpal
dt 1.999999999999
lefpol
dt 0.000000000001
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "2.0 = ",0
lefpal
dt 1.99999999999
lefpol
dt 0.00000000001
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "2.0 = ",0
lefpal
dt 1.9999999999
lefpol
dt 0.0000000001
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "2.0 = ",0
lefpal
dt 1.999999999
lefpol
dt 0.000000001
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "2.0 = ",0
lefpal
dt 1.99999999
lefpol
dt 0.00000001
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "2.0 = ",0
lefpal
dt 1.9999999
lefpol
dt 0.0000001
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "2.0 = ",0
lefpal
dt 1.999999
lefpol
dt 0.000001
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "2.0 = ",0
lefpal
dt 1.99999
lefpol
dt 0.00001
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "2.0 = ",0
lefpal
dt 1.9999
lefpol
dt 0.0001
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "2.0 = ",0
lefpal
dt 1.999
lefpol
dt 0.001
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "2.0 = ",0
lefpal
dt 1.99
lefpol
dt 0.01
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "2.0 = ",0
lefpal
dt 1.9
lefpol
dt 0.1
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
putcr
;
;---------
;
print
db "More addition:",cr,lf,lf,0
print
db "-2.0 = ",0
lefpal
dt -1.9999999999999999999
lefpol
dt -0.0000000000000000001
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "-2.0 = ",0
lefpal
dt -1.999999999999999999
lefpol
dt -0.000000000000000001
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "-2.0 = ",0
lefpal
dt -1.99999999999999999
lefpol
dt -0.00000000000000001
fpadd
mov ax, 20bh
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "-2.0 = ",0
lefpal
dt -1.9999999999999999
lefpol
dt -0.0000000000000001
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "-2.0 = ",0
lefpal
dt -1.999999999999999
lefpol
dt -0.000000000000001
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "-2.0 = ",0
lefpal
dt -1.99999999999999
lefpol
dt -0.00000000000001
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "-2.0 = ",0
lefpal
dt -1.9999999999999
lefpol
dt -0.0000000000001
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "-2.0 = ",0
lefpal
dt -1.999999999999
lefpol
dt -0.000000000001
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "-2.0 = ",0
lefpal
dt -1.99999999999
lefpol
dt -0.00000000001
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "-2.0 = ",0
lefpal
dt -1.9999999999
lefpol
dt -0.0000000001
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "-2.0 = ",0
lefpal
dt -1.999999999
lefpol
dt -0.000000001
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "-2.0 = ",0
lefpal
dt -1.99999999
lefpol
dt -0.00000001
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "-2.0 = ",0
lefpal
dt -1.9999999
lefpol
dt -0.0000001
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "-2.0 = ",0
lefpal
dt -1.999999
lefpol
dt -0.000001
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "-2.0 = ",0
lefpal
dt -1.99999
lefpol
dt -0.00001
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "-2.0 = ",0
lefpal
dt -1.9999
lefpol
dt -0.0001
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "-2.0 = ",0
lefpal
dt -1.999
lefpol
dt -0.001
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "-2.0 = ",0
lefpal
dt -1.99
lefpol
dt -0.01
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "-2.0 = ",0
lefpal
dt -1.9
lefpol
dt -0.1
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
putcr
;
;----
;
print
db "Yet more addition:",cr,lf,lf,0
print
db "2.0 = ",0
lefpal
dt 2.0000000000000000001
lefpol
dt -0.0000000000000000001
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "2.0 = ",0
lefpal
dt 2.000000000000000001
lefpol
dt -0.000000000000000001
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "2.0 = ",0
lefpal
dt 2.00000000000000001
lefpol
dt -0.00000000000000001
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "2.0 = ",0
lefpal
dt 2.0000000000000001
lefpol
dt -0.0000000000000001
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "2.0 = ",0
lefpal
dt 2.000000000000001
lefpol
dt -0.000000000000001
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "2.0 = ",0
lefpal
dt 2.00000000000001
lefpol
dt -0.00000000000001
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "2.0 = ",0
lefpal
dt 2.0000000000001
lefpol
dt -0.0000000000001
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "2.0 = ",0
lefpal
dt 2.000000000001
lefpol
dt -0.000000000001
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "2.0 = ",0
lefpal
dt 2.00000000001
lefpol
dt -0.00000000001
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "2.0 = ",0
lefpal
dt 2.0000000001
lefpol
dt -0.0000000001
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "2.0 = ",0
lefpal
dt 2.000000001
lefpol
dt -0.000000001
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "2.0 = ",0
lefpal
dt 2.00000001
lefpol
dt -0.00000001
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "2.0 = ",0
lefpal
dt 2.0000001
lefpol
dt -0.0000001
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "2.0 = ",0
lefpal
dt 2.000001
lefpol
dt -0.000001
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "2.0 = ",0
lefpal
dt 2.00001
lefpol
dt -0.00001
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "2.0 = ",0
lefpal
dt 2.0001
lefpol
dt -0.0001
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "2.0 = ",0
lefpal
dt 2.001
lefpol
dt -0.001
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "2.0 = ",0
lefpal
dt 2.01
lefpol
dt -0.01
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
;
print
db "2.0 = ",0
lefpal
dt 2.1
lefpol
dt -0.1
fpadd
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
putcr
;
;-----
;
print
db "Simple subtraction test (sub is same as add)"
db cr,lf,lf,0
;
print
db "2.9.. - 1.9.. = ",0
lefpal
dt 2.99999999999999999
lefpol
dt 1.99999999999999999
fpsub
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
print
db "1.9.. - 2.9.. = ",0
lefpal
dt 1.99999999999999999
lefpol
dt 2.99999999999999999
fpsub
mov ax, 1418h
ftoam
puts
free
call PutFPAcc
putcr
putcr
;
;----
;
print
db "Testing Multiply...",cr,lf,lf,0
;
mov cx, 20
lefpal
dt 1.0
MultLoop: lefpol
dt -10.0
fpmul
mov ax, 24h
etoam
puts
free
call PutFPAcc
putcr
loop MultLoop
putcr
;
;---
;
print
db "More multiply tests...",cr,lf,lf,0
;
lefpal
dt 0.0000000000000000001
mov cx, 20
MultLoop2: lefpol
dt -10.0
fpmul
mov ax, 24h
etoam
puts
free
call PutFPAcc
putcr
loop MultLoop2
putcr
;
;
;-----
;
print
db "Some Division Tests:",cr,lf,lf,0
;
mov cx, 20
lefpal
dt 1.0e+15
DivLoop: lefpol
dt -10.0
fpdiv
mov ax, 24
etoam
puts
free
call PutFPAcc
putcr
loop DivLoop
putcr
;
;
;---
;
print
db "More Division Tests...",cr,lf,lf,0
;
lefpal
dt 1.0e-15
mov cx, 20
DivLoop2: lefpol
dt -1.0e-1
fpdiv
mov ax, 24
etoam
puts
free
call PutFPAcc
putcr
loop DivLoop2
putcr
;
;
;------
;
print
db "Testing FPCMP...",cr,lf,0
;
lefpal
dt 0.0
lefpol
dt 0.0
fpcmp
pushf
print
db "AX = ",0
puti
popf
je TheyreEql0
print
db " 0.0 <> 0.0",cr,lf,0
jmp EndTest0
;
TheyreEql0: print
db " 0.0 = 0.0",cr,lf,0
EndTest0:
;
lefpal
dt 1.0
lefpol
dt 0.0
fpcmp
pushf
print
db "AX = ",0
puti
popf
je TheyreEql1
print
db " 1.0 <> 0.0",cr,lf,0
jmp EndTest1
;
TheyreEql1: print
db " 1.0 = 0.0",cr,lf,0
EndTest1:
;
lefpal
dt 0.0
lefpol
dt 1.0
fpcmp
pushf
print
db "AX = ",0
puti
popf
je TheyreEql2
print
db " 0.0 <> 1.0",cr,lf,0
jmp EndTest2
;
TheyreEql2: print
db " 0.0 = 1.0",cr,lf,0
EndTest2:
;
lefpal
dt -1.0
lefpol
dt 0.0
fpcmp
pushf
print
db "AX = ",0
puti
popf
je TheyreEql3
print
db " -1.0 <> 0.0",cr,lf,0
jmp EndTest3
;
TheyreEql3: print
db " -1.0 = 1.0",cr,lf,0
EndTest3:
;
lefpal
dt 0.0
lefpol
dt -1.0
fpcmp
pushf
print
db "AX = ",0
puti
popf
je TheyreEql4
print
db " 0.0 <> -1.0",cr,lf,0
jmp EndTest4
;
TheyreEql4: print
db " 0.0 = -1.0",cr,lf,0
EndTest4:
;
lefpal
dt 1.0
lefpol
dt 1.0
fpcmp
pushf
print
db "AX = ",0
puti
popf
je TheyreEql5
print
db " 1.0 <> 1.0",cr,lf,0
jmp EndTest5
;
TheyreEql5: print
db " 1.0 = 1.0",cr,lf,0
EndTest5:
;
lefpal
dt -1.0
lefpol
dt 1.0
fpcmp
pushf
print
db "AX = ",0
puti
popf
je TheyreEql6
print
db " -1.0 <> 1.0",cr,lf,0
jmp EndTest6
;
TheyreEql6: print
db " -1.0 = 1.0",cr,lf,0
EndTest6:
;
lefpal
dt -1.0
lefpol
dt -1.0
fpcmp
pushf
print
db "AX = ",0
puti
popf
je TheyreEql7
print
db " -1.0 <> -1.0",cr,lf,0
jmp EndTest7
;
TheyreEql7: print
db " -1.0 = -1.0",cr,lf,0
EndTest7:
;
lefpal
dt 0.5
lefpol
dt 1.0
fpcmp
pushf
print
db "AX = ",0
puti
popf
je TheyreEql8
print
db " 0.5 <> 1.0",cr,lf,0
jmp EndTest8
;
TheyreEql8: print
db " 0.5 = 1.0",cr,lf,0
EndTest8:
;
lefpal
dt 1.0
lefpol
dt 0.5
fpcmp
pushf
print
db "AX = ",0
puti
popf
je TheyreEql9
print
db " 1.0 <> 0.5",cr,lf,0
jmp EndTest9
;
TheyreEql9: print
db " 1.0 = 0.5",cr,lf,0
EndTest9:
;
lefpal
dt 1.0
lefpol
dt 1.5
fpcmp
pushf
print
db "AX = ",0
puti
popf
je TheyreEqla
print
db " 1.0 <> 1.5",cr,lf,0
jmp EndTesta
;
TheyreEqla: print
db " 1.0 = 1.5",cr,lf,0
EndTesta:
;
lefpal
dt 1.5
lefpol
dt 1.0
fpcmp
pushf
print
db "(17) AX = ",0
puti
popf
je TheyreEqlb
print
db " 1.5 <> 1.0",cr,lf,0
jmp EndTestb
;
TheyreEqlb: print
db " 1.5 = 1.0",cr,lf,0
EndTestb:
;
lefpal
dt 1.00000000000000005
lefpol
dt 1.0
fpcmp
pushf
print
db "(18) AX = ",0
puti
popf
je TheyreEqlc
print
db " 1.00000000000000005 <> 1.0",cr,lf,0
jmp EndTestc
;
TheyreEqlc: print
db " 1.00000000000000005 = 1.0",cr,lf,0
EndTestc:
;
lefpal
dt 1.000000000000000005
lefpol
dt 1.0
fpcmp
pushf
print
db "(19) AX = ",0
puti
popf
je TheyreEqld
print
db " 1.000000000000000005 <> 1.0",cr,lf,0
jmp EndTestd
;
TheyreEqld: print
db " 1.000000000000000005 = 1.0",cr,lf,0
EndTestd:
;
lefpal
dt 1.0000000000000000005
lefpol
dt 1.0
fpcmp
pushf
print
db "(20) AX = ",0
puti
popf
je TheyreEqle
print
db " 1.0000000000000000005 <> 1.0",cr,lf,0
jmp EndTeste
;
TheyreEqle: print
db " 1.0000000000000000005 = 1.0",cr,lf,0
EndTeste:
;
lefpal
dt 1.00000000000000000005
lefpol
dt 1.0
fpcmp
pushf
print
db "(21) AX = ",0
puti
popf
je TheyreEqlf
print
db " 1.00000000000000000005 <> 1.0",cr,lf,0
jmp EndTestf
;
TheyreEqlf: print
db " 1.00000000000000000005 = 1.0",cr,lf,0
EndTestf:
;
lefpal
dt 1.000000000000000000005
lefpol
dt 1.0
fpcmp
pushf
print
db "(22) AX = ",0
puti
popf
je TheyreEqlg
print
db " 1.000000000000000000005 <> 1.0",cr,lf,0
jmp EndTestg
;
TheyreEqlg: print
db " 1.000000000000000000005 = 1.0",cr,lf,0
EndTestg:
;
lefpal
dt 1.0000000000000000000005
lefpol
dt 1.0
fpcmp
pushf
print
db "(23) AX = ",0
puti
popf
je TheyreEqlh
print
db " 1.0000000000000000000005 <> 1.0",cr,lf,0
jmp EndTesth
;
TheyreEqlh: print
db " 1.0000000000000000000005 = 1.0",cr,lf,0
EndTesth:
;
lefpal
dt 1.0e10
lefpol
dt 1.0e100
fpcmp
pushf
print
db "AX = ",0
puti
popf
je TheyreEqli
print
db " 1.0e10 <> 1.0e100",cr,lf,0
jmp EndTesti
;
TheyreEqli: print
db " 1.0e10 = 1.0e100",cr,lf,0
EndTesti:
;
lefpal
dt 1.0e100
lefpol
dt 1.0e10
fpcmp
pushf
print
db "AX = ",0
puti
popf
je TheyreEqlj
print
db " 1.0e100 <> 1.0e10",cr,lf,0
jmp EndTestj
;
TheyreEqlj: print
db " 1.0e100 = 1.0e10",cr,lf,0
EndTestj:
;
;
lefpal
dt 1.0e-100
lefpol
dt 1.0e-10
fpcmp
pushf
print
db "AX = ",0
puti
popf
je TheyreEqlk
print
db " 1.0e-100 <> 1.0e-10",cr,lf,0
jmp EndTestk
;
TheyreEqlk: print
db " 1.0e-100 = 1.0e-10",cr,lf,0
EndTestk:
;
lefpal
dt 1.0e-100
lefpol
dt 1.0e-100
fpcmp
pushf
print
db "AX = ",0
puti
popf
je TheyreEqll
print
db " 1.0e-100 <> 1.0e-100",cr,lf,0
jmp EndTestl
;
TheyreEqll: print
db " 1.0e-100 = 1.0e-100",cr,lf,0
EndTestl:
;
lefpal
dt 1.0
lefpol
dt 2.0
fpcmp
pushf
print
db "AX = ",0
puti
popf
jge TheyreEqlm
print
db " 1.0 < 2.0",cr,lf,0
jmp EndTestm
;
TheyreEqlm: print
db " 1.0 >= 2.0",cr,lf,0
EndTestm:
;
lefpal
dt 1.0
lefpol
dt 2.0
fpcmp
pushf
print
db "AX = ",0
puti
popf
jg TheyreEqln
print
db " 1.0 <= 2.0",cr,lf,0
jmp EndTestn
;
TheyreEqln: print
db " 1.0 > 2.0",cr,lf,0
EndTestn:
;
lefpal
dt 1.0
lefpol
dt 2.0
fpcmp
pushf
print
db "AX = ",0
puti
popf
jle TheyreEqlo
print
db " 1.0 > 2.0",cr,lf,0
jmp EndTesto
;
TheyreEqlo: print
db " 1.0 <= 2.0",cr,lf,0
EndTesto:
;
lefpal
dt 2.0
lefpol
dt 1.0
fpcmp
pushf
print
db "AX = ",0
puti
popf
jle TheyreEqlp
print
db " 2.0 > 1.0",cr,lf,0
jmp EndTestp
;
TheyreEqlp: print
db " 2.0 <= 1.0",cr,lf,0
EndTestp:
putcr
putcr
;
;
;
;
;
;
;
;----------
;
print
db "Testing FTOAM...",cr,lf,0
;
print
db "Printing various forms of 1.12345678901234567890"
db cr,lf,"Remember only 17 significant digits get printed"
db cr,lf,0
lefpal
dt 1.12345678901234567890
mov cx, 20
DigitsLoop: mov ah, cl
mov al, 24
ftoam
puts
free
putcr
loop DigitsLoop
;
print
db cr,lf,"Testing FTOA...",cr,lf,0
mov cx, 20
DigitsLoop2: mov ah, cl
mov al, 24
lesi Output
ftoa
puts
putcr
loop DigitsLoop2
;
print
db cr,lf,"Testing FTOA2 ( 1.00 1.00)",cr,lf,'"',0
lefpal
dt 1.0
lesi Output
mov ax,206h
ftoa2
ftoa2
lesi Output
puts
mov al, '"'
putc
putcr
;
;
;
;----------
;
print
db cr,lf
db "Testing ETOAM...",cr,lf,0
;
print
db "Printing various forms of 1.12345678901234567890"
db cr,lf,"Remember only 17 significant digits get printed"
db cr,lf,0
lefpal
dt 1.12345678901234567890
mov cx, 20
DigitsLoop3: mov al, cl
add al, 8
etoam
puts
free
putcr
loop DigitsLoop3
;
print
db cr,lf,"Testing ETOA...",cr,lf,0
mov cx, 20
DigitsLoop4: mov al, cl
add al, 8
puth
print
db ": ",0
lesi Output
etoa
puts
putcr
loop DigitsLoop4
;
print
db cr,lf,"Testing ETOA2",cr,lf,'"',0
lefpal
dt 1.0
lesi Output
mov ax,20ah
etoa2
etoa2
lesi Output
puts
mov al, '"'
putc
putcr
;
;
;------
;
Testatof macro op
lesi op
puts
print
db " = ",0
atof
ftoam
mov al, 32
etoam
puts
putcr
endm
;
;
print
db cr,lf,"Testing ATOF...",cr,lf,lf,0
;
Testatof Testatof1
Testatof Testatof2
Testatof Testatof3
Testatof Testatof4
Testatof Testatof5
Testatof Testatof6
Testatof Testatof7
Testatof Testatof8
Testatof Testatof9
Testatof Testatof10
Testatof Testatof11
Testatof Testatof12
Testatof Testatof13
Testatof Testatof14
Testatof Testatof15
Testatof Testatof16
Testatof Testatof17
Testatof Testatof18
Testatof Testatof19
Testatof Testatof20
Testatof Testatof21
Testatof Testatof22
Testatof Testatof23
Testatof Testatof24
Testatof Testatof25
Testatof Testatof26
Testatof Testatof27
Testatof Testatof28
Testatof Testatof29
Testatof Testatof30
Testatof Testatof31
Testatof Testatof32
Testatof Testatof33
Testatof Testatof34
Testatof Testatof35
Testatof Testatof36
Testatof Testatof37
Testatof Testatof38
Testatof Testatof39
Testatof Testatof40
Testatof Testatof41
Testatof Testatof42
Testatof Testatof43
Testatof Testatof44
Testatof Testatof45
Testatof Testatof46
Testatof Testatof47
Testatof Testatof48
Testatof Testatof49
Testatof Testatof50
Testatof Testatof51
Testatof Testatof52
;
putcr
;
Testatof mTestatof11
Testatof mTestatof12
Testatof mTestatof13
Testatof mTestatof14
Testatof mTestatof15
Testatof mTestatof16
Testatof mTestatof17
Testatof mTestatof18
Testatof mTestatof19
Testatof mTestatof20
Testatof mTestatof21
Testatof mTestatof22
Testatof mTestatof23
Testatof mTestatof24
Testatof mTestatof25
Testatof mTestatof26
Testatof mTestatof27
Testatof mTestatof28
Testatof mTestatof29
Testatof mTestatof30
Testatof mTestatof31
Testatof mTestatof32
Testatof mTestatof33
Testatof mTestatof34
Testatof mTestatof35
Testatof mTestatof36
Testatof mTestatof37
Testatof mTestatof38
Testatof mTestatof39
Testatof mTestatof40
Testatof mTestatof41
Testatof mTestatof42
Testatof mTestatof43
Testatof mTestatof44
Testatof mTestatof45
Testatof mTestatof46
Testatof mTestatof47
Testatof mTestatof48
Testatof mTestatof49
Testatof mTestatof50
Testatof mTestatof51
Testatof mTestatof52
Testatof mTestatof53
putcr
putcr
;
;
;
;---------
;
print
db "Testing FTOI...",cr,lf,lf,0
;
lefpal
dt 1.0
ftoi
print
db "1.0 = ",0
puti
;
lefpal
dt 10.0
ftoi
print
db cr,lf,"10.0 = ",0
puti
;
lefpal
dt 100.0
ftoi
print
db cr,lf,"100.0 = ",0
puti
;
lefpal
dt 1000.0
ftoi
print
db cr,lf,"1000.0 = ",0
puti
;
lefpal
dt 10000.0
ftoi
print
db cr,lf,"10000.0 = ",0
puti
;
lefpal
dt 32767.0
ftoi
print
db cr,lf,"32767.0 = ",0
puti
;
lefpal
dt 0.0
ftoi
print
db cr,lf,"0.0 = ",0
puti
;
lefpal
dt -1.0
ftoi
print
db cr,lf,"-1.0 = ",0
puti
;
lefpal
dt -10.0
ftoi
print
db cr,lf,"-10.0 = ",0
puti
;
lefpal
dt -100.0
ftoi
print
db cr,lf,"-100.0 = ",0
puti
;
lefpal
dt -1000.0
ftoi
print
db cr,lf,"-1000.0 = ",0
puti
;
lefpal
dt -10000.0
ftoi
print
db cr,lf,"-10000.0 = ",0
puti
;
lefpal
dt -32768.0
ftoi
print
db cr,lf,"-32768.0 = ",0
puti
;
;
;---------
;
print
db cr,lf,lf,"Testing FTOU...",cr,lf,lf,0
;
lefpal
dt 1.0
ftou
print
db "1.0 = ",0
putu
;
lefpal
dt 10.0
ftou
print
db cr,lf,"10.0 = ",0
putu
;
lefpal
dt 100.0
ftou
print
db cr,lf,"100.0 = ",0
putu
;
lefpal
dt 1000.0
ftou
print
db cr,lf,"1000.0 = ",0
putu
;
lefpal
dt 10000.0
ftou
print
db cr,lf,"10000.0 = ",0
putu
;
lefpal
dt 65535.0
ftou
print
db cr,lf,"65535.0 = ",0
putu
;
lefpal
dt 0.0
ftou
print
db cr,lf,"0.0 = ",0
putu
;
;
;---------
;
print
db cr,lf,lf,"Testing FTOL...",cr,lf,lf,0
;
lefpal
dt 1.0
ftol
print
db "1.0 = ",0
putl
print
db " ",0
xchg dx, ax
putw
xchg dx, ax
putw
;
lefpal
dt 10.0
ftol
print
db cr,lf,"10.0 = ",0
putl
;
lefpal
dt 100.0
ftol
print
db cr,lf,"100.0 = ",0
putl
;
lefpal
dt 1000.0
ftol
print
db cr,lf,"1000.0 = ",0
putl
;
lefpal
dt 10000.0
ftol
print
db cr,lf,"10000.0 = ",0
putl
;
lefpal
dt 32767.0
ftol
print
db cr,lf,"32767.0 = ",0
putl
;
lefpal
dt 32768.0
ftol
print
db cr,lf,"32768.0 = ",0
putl
;
lefpal
dt 65535.0
ftol
print
db cr,lf,"65535.0 = ",0
putl
;
lefpal
dt 65536.0
ftol
print
db cr,lf,"65536.0 = ",0
putl
;
lefpal
dt 100000.0
ftol
print
db cr,lf,"100000.0 = ",0
putl
;
lefpal
dt 1000000.0
ftol
print
db cr,lf,"1000000.0 = ",0
putl
;
lefpal
dt 2.0e9
ftol
print
db cr,lf,"2e9 = ",0
putl
;
lefpal
dt 0.0
ftol
print
db cr,lf,"0.0 = ",0
putl
;
lefpal
dt -1.0
ftol
print
db cr,lf,"-1.0 = ",0
putl
;
lefpal
dt -10.0
ftol
print
db cr,lf,"-10.0 = ",0
putl
;
lefpal
dt -100.0
ftol
print
db cr,lf,"-100.0 = ",0
putl
;
lefpal
dt -1000.0
ftol
print
db cr,lf,"-1000.0 = ",0
putl
;
lefpal
dt -10000.0
ftol
print
db cr,lf,"-10000.0 = ",0
putl
;
lefpal
dt -32768.0
ftol
print
db cr,lf,"-32768.0 = ",0
putl
;
;
;
;---------
;
print
db cr,lf,lf,"Testing FTOUL...",cr,lf,lf,0
;
lefpal
dt 1.0
ftoul
print
db "1.0 = ",0
putul
;
lefpal
dt 10.0
ftoul
print
db cr,lf,"10.0 = ",0
putul
;
lefpal
dt 100.0
ftoul
print
db cr,lf,"100.0 = ",0
putul
;
lefpal
dt 1000.0
ftoul
print
db cr,lf,"1000.0 = ",0
putul
;
lefpal
dt 10000.0
ftoul
print
db cr,lf,"10000.0 = ",0
putul
;
lefpal
dt 32767.0
ftoul
print
db cr,lf,"32767.0 = ",0
putul
;
lefpal
dt 32768.0
ftoul
print
db cr,lf,"32768.0 = ",0
putul
;
lefpal
dt 65535.0
ftoul
print
db cr,lf,"65535.0 = ",0
putul
;
lefpal
dt 65536.0
ftoul
print
db cr,lf,"65536.0 = ",0
putul
;
lefpal
dt 100000.0
ftoul
print
db cr,lf,"100000.0 = ",0
putul
;
lefpal
dt 1000000.0
ftoul
print
db cr,lf,"1000000.0 = ",0
putul
;
mov ax, 0ffffh
mov dx, 07fffh
ultof
ftoul
print
db cr,lf,"2^31-1 = ",0
putul
;
;
mov ax, 0ffffh
mov dx, ax
ultof
ftoul
print
db cr,lf,"2^32-1 = ",0
putul
;
lefpal
dt 0.0
ftoul
print
db cr,lf,"0.0 = ",0
putul
;
;
;
;
;
;
;
;***************************************************************************
;
;
;
Quit: mov ah, 4ch
int 21h
;
;
Main endp
;
;
;
;
; Putfpacc- Prints the floating point accumulator:
;
Putfpacc proc near
assume ds:StdGrp
push ds
push ax
mov ax, StdGrp
mov ds, ax
call Putspace
call Putspace
mov al, StdGrp:fpacc
puth
call Putspace
mov al, StdGrp:fpacc+1
puth
call Putspace
mov al, StdGrp:fpacc+2
puth
call Putspace
mov al, StdGrp:fpacc+3
puth
call Putspace
mov al, StdGrp:fpacc+4
puth
call Putspace
mov al, StdGrp:fpacc+5
puth
call Putspace
mov al, StdGrp:fpacc+6
puth
call Putspace
mov al, StdGrp:fpacc+7
puth
call Putspace
call Putspace
mov al, StdGrp:fpacc+8
puth
call Putspace
mov al, StdGrp:fpacc+9
puth
call Putspace
call Putspace
mov al, StdGrp:fpacc+10
puth
;
pop ax
pop ds
ret
PutFpacc endp
assume ds:dseg
;
PutSpace proc near
push ax
mov al, " "
putc
pop ax
ret
PutSpace endp
;
cseg ends
;
;
; Allocate a reasonable amount of space for the stack (2k).
;
sseg segment para stack 'stack'
stk db 256 dup ("stack ")
sseg ends
;
;
;
; zzzzzzseg must be the last segment that gets loaded into memory!
;
zzzzzzseg segment para public 'zzzzzz'
LastBytes db 16 dup (?)
heap db 1024 dup (?)
zzzzzzseg ends
end Main