[openfirmware] r1109 - cpu/x86/pc/olpc
svn at openfirmware.info
svn at openfirmware.info
Fri Feb 20 19:16:26 CET 2009
Author: wmb
Date: 2009-02-20 19:16:26 +0100 (Fri, 20 Feb 2009)
New Revision: 1109
Modified:
cpu/x86/pc/olpc/smbios.fth
Log:
SMBIOS - fixed the UUID routine.
Modified: cpu/x86/pc/olpc/smbios.fth
===================================================================
--- cpu/x86/pc/olpc/smbios.fth 2009-02-20 09:17:56 UTC (rev 1108)
+++ cpu/x86/pc/olpc/smbios.fth 2009-02-20 18:16:26 UTC (rev 1109)
@@ -337,23 +337,26 @@
;
: get-tag$ ( tag$ -- value$ ) find-tag 0= if " Not Available" then ?-null ;
-: too-long? ( dst-adr -- dst-adr flag ) dup pad - d# 10 >= ;
+: too-long? ( dst-adr -- dst-adr flag ) dup pad - h# 10 >= ;
: (uuid) ( -- true | adr len false )
" U#" find-tag if ( adr len )
+ ?-null ( adr len' )
pad -rot ( dst-adr adr len )
bounds ?do ( dst-adr )
too-long? if drop true unloop exit then
i c@ h# 10 digit if ( dst-adr digith )
i 1+ c@ h# 10 digit if ( dst-adr digith digitl )
- swap bwjoin over c! ( dst-adr )
- 1+ ( dst-adr' )
+ swap 4 lshift or ( dst-adr byte )
+ over c! 1+ ( dst-adr' )
+ 2 ( dst-adr advance )
else ( dst-adr digith char )
3drop true unloop exit
then ( dst-adr )
else ( dst-adr char )
[char] - <> if drop true unloop exit then
- then ( dst-adr )
- loop ( dst-adr )
+ 1 ( dst-adr advance )
+ then ( dst-adr advance )
+ +loop ( dst-adr )
pad tuck - ( adr len )
dup h# 10 = if ( adr len )
false \ Good UUID ( adr len false )
More information about the openfirmware
mailing list