In the IEEE 1275-1994 specification the parameters for Client Interface calls

are not in forth stack order but in reversed (heh!) order. Our implementation
confused this. 

This might / will need some more work, but get this in so more people can test
easily.

From Mark Cave-Ayland and me.



git-svn-id: svn://coreboot.org/openbios/trunk/openbios-devel@624 f158a5a8-5612-0410-a976-696ce0be7e32
This commit is contained in:
Stefan Reinauer
2009-11-20 19:09:04 +00:00
parent 99f0be82ab
commit 5bd8b39a36

View File

@@ -189,14 +189,12 @@ external
: call-method ( ihandle method -- xxxx catch-result ) : call-method ( ihandle method -- xxxx catch-result )
dup 0= if ." call of null method" -1 exit then dup 0= if ." call of null method" -1 exit then
dup >r
dup cstrlen
\ ." call-method " 2dup type cr \ ." call-method " 2dup type cr
rot ?ihandle ['] $call-method catch dup if rot ?ihandle ['] $call-method catch if
\ not necessary an error but very useful for debugging... \ not necessary an error but very useful for debugging...
." call-method " r@ dup cstrlen type ." : exception " dup . cr ." call-method " r@ dup cstrlen type ." : exception " dup . cr
then then
r> drop \ r> drop
; ;
@@ -212,21 +210,16 @@ external
close-dev close-dev
; ;
: read ( ihandle addr len -- actual ) : read ( len addr ihandle -- actual )
rot dup ihandle>phandle " read" rot find-method rot swap " read" call-method
if swap call-package else 3drop -1 then
; ;
: write ( ihandle addr len -- actual ) : write ( len addr ihandle -- actual )
rot dup ihandle>phandle " write" rot find-method rot swap " write" call-method
if swap call-package else 3drop -1 then
; ;
: seek ( ihandle pos_hi pos_lo -- status ) : seek ( pos_lo pos_hi ihandle -- status )
\ package methods uses ( pos_lo pos_hi -- status ) " seek" call-method
swap
rot dup ihandle>phandle " seek" rot find-method
if swap call-package else 3drop -1 then
; ;
@@ -261,7 +254,7 @@ external
: interpret ( xxx cmdstring -- ??? catch-reult ) : interpret ( xxx cmdstring -- ??? catch-reult )
dup cstrlen dup cstrlen
\ ." INTERPRETE: --- " 2dup type \ ." INTERPRET: --- " 2dup type
['] evaluate catch dup if ['] evaluate catch dup if
\ this is not necessary an error... \ this is not necessary an error...
." interpret: exception " dup . ." caught" cr ." interpret: exception " dup . ." caught" cr