\ 1802regs

\  needs toolkit

needs 1802memory
decimal

: c!hibyte  ( c adr -- )   c! ;
inline

: c!lobyte  ( c adr -- )   1+ c! ;
inline

: c@hibyte  ( adr -- c )   c@ ;
inline

: c@lobyte  ( adr -- c )   1+ c@ ;
inline

variable DF    0 DF !
variable P       0 P !
variable X       0 X !
variable T      0 T !
variable IE      0 IE !
variable Q      0 Q !
variable D      0 D ! 

\ 16 array R

create regarray 16 allot

\ code R  ( index -- addr )
\    tos tos .w add 
\   regarray # tos .w add
\ end-code inline

hex
\ see above for asm code
: R  ( index -- addr )
    [ DE47 cs,  DE7C cs,  regarray cs,
    4E75 cs, ]  ;  inline
decimal

: D!  ( byte -- )    D c! ;   inline
: D@  ( -- byte )   D c@ ;   inline

\ redefine D to prevent direct access
: D  ( -- )  
    cr ." illegal access to D " cr 
    abort ;
immediate

: set-IE  ( -- )   -1 IE ! ;    inline
: reset-IE  ( -- )   0 IE ! ;   inline

: R(X)@  ( -- byte )   
     X @  R @ ;   inline

\ : R(X)!  ( byte -- )
\     X @   R ! ;     inline

: M(R(X))@  ( -- byte )
    R(X)@  byte@ ;     inline

: M(R(X))!   ( byte -- )
    R(X)@  byte! ;      inline



