[OpenBIOS] r460 - openbios-devel/forth/device

svn at openbios.org svn at openbios.org
Fri Feb 27 22:04:01 CET 2009


Author: blueswirl
Date: 2009-02-27 22:04:01 +0100 (Fri, 27 Feb 2009)
New Revision: 460

Modified:
   openbios-devel/forth/device/fcode.fs
Log:
Fix fcode-offset sign extension problem (Mark Cave-Ayland)

Modified: openbios-devel/forth/device/fcode.fs
===================================================================
--- openbios-devel/forth/device/fcode.fs	2009-02-21 17:13:41 UTC (rev 459)
+++ openbios-devel/forth/device/fcode.fs	2009-02-27 21:04:01 UTC (rev 460)
@@ -80,6 +80,16 @@
   fcode-c@
   ;
 
+\ fcode-num8-signed ( -- c ) ( F: c -- )
+\   get 8bit signed from FCode stream
+
+: fcode-num8-signed
+  fcode-num8
+  dup 80 and 0> if
+     ff invert or
+  then
+  ;
+
 \ fcode-num16
 \   get 16bit from FCode stream
 
@@ -87,6 +97,16 @@
   fcode-num8 fcode-num8 swap bwjoin
   ;
 
+\ fcode-num16-signed ( -- c ) ( F: c -- )
+\   get 16bit signed from FCode stream
+
+: fcode-num16-signed
+  fcode-num16
+  dup 8000 and 0> if
+     ffff invert or
+  then
+  ;
+
 \ fcode-num32
 \   get 32bit from FCode stream
 
@@ -111,9 +131,9 @@
 
 : fcode-offset ( -- offset )
   ?fcode-offset16 if
-    fcode-num16
+    fcode-num16-signed
   else
-    fcode-num8
+    fcode-num8-signed
   then
   ;
 




More information about the OpenBIOS mailing list