C Control I Unit-M 2.0 BASIC 5 Vdc Inputs / outputs 16 x digital I/Os/8 x analog or digital I/Os/2 x analogue outputs (s 198822 Data Sheet

Product codes
198822
Page of 73
DAS FLOATING POINT MODUL (FPM)
EINFÜHRUNG
Das Betriebssystem der M ADV Units basiert auf dem Betriebssystem 2.05 einer herkömmlichen M 2.0, ist 
aber   mit   einem   32   Bit   Floating   Point   Module   im   Betriebssystem   und   einem   erweiterten   BASIC 
Programmspeicher (22kB) sowie einem größeren Variablenspeicher ausgestattet. Allerdings gibt es hier eine 
kleine Einschränkung:
Der Variablenspeicher ist, wie bisher, ohne Einschränkungen bis 140 Bytes zu nutzen. Bis zu 240 Bytes 
lassen sich nutzen, wenn die Datei Funktion   PRINT# x nicht benutzt wird, oder so benutzt wird (z.B. für 
temporäre Variablen) dass es nicht stört wenn der Variablenbereich 140-240 bei Verwendung von PRINT# 
gelöscht wird.
Das gilt auch für die Funktion PUT_FLOAT(myFloat) in der FLOATMATH.BLIB. Sie benutzt eine modifizierte 
Version von PRINT#
Ergänzungen in der Library
Nicht alle Funktionen der Gleitkommaarithmetik sind auf Betriebssystem-Ebene installiert. Ein Teil davon, wie 
z.B.   der   LN   (der   natürliche   Logarithmus)   sind   als   Library   auf   BASIC   Ebene   installiert,   da   hier   oft   die 
Rechengenauigkeit   gegen   die   Rechenzeit   abgewogen   wird.   Gleiches   gilt   für   die   Eingaberoutine   von 
Gleitkommazahlen  über Tastatur.    Auch  hier hat  der Anwender die  Möglichkeit  diese  Funktionen  seinen 
individuellen Bedürfnissen anzupassen.    
Einschränkungen:
Die Implementierung eine Gleitkommaarithmetik auf einer so kleinen Maschine, wie es die Unit ADV ist, 
erfordert zwar bei der Funktionalität keine Einschränkungen wohl aber bei der Programmierung selbst.
Gemeint sind hier z.B. grundsätzliche Überlegungen bei der Programmierung von Termen hinsichtlich des 
Stack-Bedarfes dieser Ausdrücke. Das gilt auch allgemein bei der Mischung verschiedener Datentypen, die 
oftmals schon vom Compiler oder im Betriebssystem umgewandelt werden (ohne das es der Programmierer 
merkt), was in anderen  Umgebungen komplikationslos ist. Das ist hier nicht möglich und der Programmierer 
ist selbst dafür verantwortlich die gegebenen Rahmenbedingungen sorgfältig einzuhalten.
Der Compiler gibt hier keine Hinweise bzw. Fehlermeldungen. Der Anwender muss selbst darauf achten. Die 
Folgen solcher Fehler sind in der Regel unerklärlich falsche Rechenergebnisse und auch Programmabstürze  
als Folge von Stack-Fehlern.  
Interne Darstellung
Während die BASIC Steuercomputer bislang mit den, auch von Laien zu überschauenden Datentypen BYTE 
und WORD ausgekommen ist, erfordert die Darstellung einer Fliesskommazahl einen weiteren Datentyp 
FLOAT. 
Dieser Datentyp besteht aus einem Byte Exponent und 3 Byte Mantisse mit Vorzeichen, also 32Bit. 
Für die interne Darstellung einer Gleitkommazahl gilt folgende Spezifikation:
1) Bias $80 
2) Normiert -> Mantissa MSB immer 1 
3) Darstellung der Mantissen mit "Mantissa hidden sign bit" 
Die Darstellung mit Mantissa hidden sign bit ist leicht verständlich wenn man sich die Darstellung der Zahl 
+PI und -Pi ansieht:
  3.1415927   82 49 0F DB 
 -3.1415927   82 C9 0F DB 
Das MSBit im 2.Byte (49 u. C9) ist Vorzeichen der Mantisse  Weil wegen der Normierung das MSB immer 
als 1 angenommen wird, kann man es als Vorzeichen verwenden. 
49 0F DB 
ist Positiv (MSBit =0) die FP-Routine macht dann daraus C9 0F DB und setzt intern ein positiv FLAG 
C9 0F DB 
ist Negativ (MSBit =1) die FP-Routine belässt es bei C9 0F DB und setzt intern ein negativ FLAG.
4