aboutsummaryrefslogtreecommitdiffstats
path: root/tests/t_fl900/t_fl900.asm
diff options
context:
space:
mode:
Diffstat (limited to 'tests/t_fl900/t_fl900.asm')
-rw-r--r--tests/t_fl900/t_fl900.asm166
1 files changed, 166 insertions, 0 deletions
diff --git a/tests/t_fl900/t_fl900.asm b/tests/t_fl900/t_fl900.asm
new file mode 100644
index 0000000..72510c2
--- /dev/null
+++ b/tests/t_fl900/t_fl900.asm
@@ -0,0 +1,166 @@
+; FTEST.ASM
+;******************************************************************************
+;* Testet Gleitkommabibliothek fr TLCS900 *
+;* *
+;* Hardware: Micro-ICE TLCS900 *
+;* Software: AS 1.39p1 oder h”her *
+;* Includes MACROS.INC, FLOAT.INC, CONOUT.INC, CPU_TIME.INC *
+;* *
+;* šbersetzen mit AS ftest oder beiliegendem Makefile *
+;* *
+;******************************************************************************
+
+ cpu 96c141
+
+ org 1000h ; Startadresse User-RAM
+
+;------------------------------------------------------------------------------
+
+CR equ 13
+LF equ 10
+Format_Tab equ 0000100000000110b ; fftoa-Format fr tab. Ausgabe
+Format_Min equ 0010001100000101b ; fftoa-Format fr minimale L„nge
+; ³<Â>³³<ÄÄÂÄÄÄ>
+; ³ ³ ³³ ³
+; ³ ³ ³³ ÀÄÄÄÄÄÄ Maximalzahl Nachkommastellen
+; ³ ³ ³ÀÄÄÄÄÄÄÄÄÄÄ Mantissenpluszeichen unterdrcken
+; ³ ³ ÀÄÄÄÄÄÄÄÄÄÄÄ Exponentenpluszeichen unterdrcken
+; ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄ Minimalstellenzahl Exponent
+; ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ anh„ngende Nullen Mantisse l”schen
+Format equ Format_Tab ; gew„hltes fftoa-Format
+
+ supmode on ; Vorgaben
+ maxmode on
+ macexp off
+ page 0 ; keine FFs
+ include macros.inc
+
+;------------------------------------------------------------------------------
+; Hauptroutine, Test
+
+; kleine Schreiberleichterung:
+
+bench macro op,arg1,arg2,arg3,msg
+ call PSTR ; Kennmeldung ausgeben
+ db msg,StrTerm
+ call CPU_TIME ; Uhr starten
+ ld xwa,arg1 ; Operanden holen
+ if "ARG2"<>"" ; 2. Operanden evtl. weglassen
+ ld xhl,arg2
+ endif
+ if "ARG3"<>"" ; dito 3. Operanden
+ ld bc,arg3
+ endif
+ call op ; Probanden laufen lassen
+ ld (xiz),xwa ; Ergebnis weglegen...
+ call CPU_STOP ; Uhr anhalten, Zeit ausgeben
+ if ("OP"<>"FNOP")&&("OP"<>"FFTOI")
+ call PSTR ; etwas Platz
+ db ", Ergebnis: ",StrTerm
+ ld xwa,(xiz+) ; Wert ausgeben
+ lda xhl,(Buffer)
+ ld bc,Format
+ call fftoa
+ call TXTAUS
+ endif
+ call PSTR
+ db CR,LF,StrTerm
+ endm
+
+ proc Main
+
+ max ; ohne das macht das keinen Spaá !
+ lda xsp,(Stack) ; etwas brauchen wir schon...
+ lda xiz,(Ergs) ; Zeiger auf Ergebnisfeld
+ call CPU_TI_INI ; Timer initialisieren
+
+ ; Overhead messen
+ bench fnop,(FConst1),(FConst1),,"Overhead : "
+
+ ; Addition zweier fast gleicher Zahlen
+ bench fadd,(FConst1),(FConst2),,"Laufzeit 1+2 : "
+
+ ; Addition zweier unterschiedl. groáer Zahlen
+ bench fadd,(FConst1),(FConst100000),,"Laufzeit 1+100000 : "
+
+ ; Subtraktion zweier fast gleicher Zahlen
+ bench fsub,(FConst1),(FConst2),,"Laufzeit 1-2 : "
+
+ ; Subtraktion zweier unterschiedl. groáer Zahlen
+ bench fsub,(FConst1),(FConst100000),,"Laufzeit 1-100000 : "
+
+ ; Multiplikation
+ bench fmul,(FConst2),(FConstPi),,"Laufzeit 2*Pi : "
+
+ ; Division
+ bench fdiv,(FConst2),(FConstPi),,"Laufzeit 2/Pi : "
+
+ ; Multiplikation mit 2er-Potenz
+ bench fmul2,(FConstPi),,10,"Laufzeit Pi*2^(10) : "
+
+ ; Division durch 2er-Potenz
+ bench fmul2,(FConstPi),,-10,"Laufzeit Pi*2^(-10) : "
+
+ ; kleine Zahl nach Float wandeln
+ bench fitof,1,,,"Laufzeit 1-->Float : "
+
+ ; groáe Zahl nach Float wandeln
+ bench fitof,100000,,,"Laufzeit 1E5-->Float: "
+
+ ; kleine Zahl nach Int wandeln
+ bench fftoi,(FConst1),,,"Laufzeit 1-->Int : "
+
+ ; groáe Zahl nach Int wandeln
+ bench fftoi,(FConst100000),,,"Laufzeit 1E5-->Int : "
+
+ ; Wurzel
+ bench fsqrt,(FConst2),,,"Laufzeit SQRT(2) : "
+
+ call PSTR
+ db "Eingabe: ",StrTerm
+ lda xhl,(InpBuffer)
+ call TXTAUS
+ call fatof
+ call PSTR
+ db ", Ergebnis: ",StrTerm
+ lda xhl,(Buffer)
+ ld bc,Format
+ call fftoa
+ call TXTAUS
+ call PSTR
+ db 13,10,StrTerm
+
+ swi 7 ; zum Monitor zurck
+
+ endp
+
+fnop: ld xwa,0 ; Dummy
+ ret
+
+ include "float.inc"
+ include "conout.inc"
+ include "cpu_time.inc"
+
+;------------------------------------------------------------------------------
+; Gleitkommakonstanten
+
+ align 4 ; fr schnelleren Zugriff
+
+FConst1 dd 1.0
+FConst2 dd 2.0
+FConst100000 dd 100000.0
+FConstM1 dd -1.0
+FConstM2 dd -2.0
+FConstPi dd 40490fdbh ; um Vergleichsfehler durch Rundung zu
+ ; vermeiden
+Ergs dd 30 dup (?) ; Platz fr Ergebnisse
+
+Buffer: db 20 dup (?)
+InpBuffer: db "12.3456E-12",0
+
+;------------------------------------------------------------------------------
+; Stack
+
+ db 200 dup (?)
+Stack:
+