( -------------------------------------------------
( FILE:         system.rpl
( DESCRIPTION:  Definitions for system call Operations
( PLATFORM:     AMIGA
( VERSION:      1.0
( DATE:         22-Jan-97
( -------------------------------------------------
( Copyright © 1997 Thomas Reichen
( -------------------------------------------------

?& SYSTEM.RPL NOT ?IF
17 CONSTANT SYSTEM.RPL

4     CONSTANT ExecBase

256   STRING   error_msg

( word to build assembly code )

: BUILDCODE ( code number_of_integers )
    <BUILDS 0 DO , LOOP DOES>
;

0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
16
BUILDCODE REGISTERS

1316290560
1289715711
REGISTERS
1224310783
1320581120
REGISTERS
1291419647
1223163902
8
BUILDCODE lib_call
lib_call & lib_call ! ( make lib_call executeable, its faster this way )

1316290560
1289715711
-232827904
REGISTERS
-231115776
-234863616
-232295424
REGISTERS
1291419647
1223163902
10
BUILDCODE ieeeTIEEE
ieeeTIEEE & ieeeTIEEE !

: D0! REGISTERS ! ;
: D0@ REGISTERS @ ;

: D1! REGISTERS 4 + ! ;
: D1@ REGISTERS 4 + @ ;

: D2! REGISTERS 8 + ! ;
: D2@ REGISTERS 8 + @ ;

: D3! REGISTERS 12 + ! ;
: D3@ REGISTERS 12 + @ ;

: D4! REGISTERS 16 + ! ;
: D4@ REGISTERS 16 + @ ;

: D5! REGISTERS 20 + ! ;
: D5@ REGISTERS 20 + @ ;

: D6! REGISTERS 24 + ! ;
: D6@ REGISTERS 24 + @ ;

: A0! REGISTERS 32 + ! ;
: A0@ REGISTERS 32 + @ ;

: A1! REGISTERS 36 + ! ;
: A1@ REGISTERS 36 + @ ;

: A2! REGISTERS 40 + ! ;
: A2@ REGISTERS 40 + @ ;

: A3! REGISTERS 44 + ! ;
: A3@ REGISTERS 44 + @ ;

: A4! REGISTERS 48 + ! ;
: A4@ REGISTERS 48 + @ ;

: A5! REGISTERS 52 + ! ;
: A5@ REGISTERS 52 + @ ;
                  
: A6! REGISTERS 56 + ! ;
: A6@ REGISTERS 56 + @ ;

: LIB_CALL ( iOffset aLibBase )
    @ A6! REGISTERS 28 + !
    lib_call
;

: LIB_CLOSE ( aLibBase )
    @ A1! -414 ExecBase LIB_CALL
;

: LIB_OPEN  ( iVersion sName -> iLibBase )
    A1! D0! -552 ExecBase LIB_CALL
    D0@
;

: SP>DP     ( iSinglePrecision -> f )
  D0! ieeeTIEEE REGISTERS F@
;

: DISP_MSG  ( DISP_MSG )
    "OK" error_msg GET_KEY DROP
;

?ENDIF ( SYSTEM.RPL )
