avra: add a layer of indirection to FLBL!
This will make it easier to fit BR* in there.
This commit is contained in:
parent
63dec372ce
commit
cdddfdefae
8
blk/668
8
blk/668
@ -2,7 +2,7 @@
|
|||||||
: _r7ffc DUP 0x7ff > IF _oor THEN ;
|
: _r7ffc DUP 0x7ff > IF _oor THEN ;
|
||||||
: _raddr12
|
: _raddr12
|
||||||
PC - DUP 0< IF 0x800 + _r7ffc 0x800 OR ELSE _r7ffc THEN ;
|
PC - DUP 0< IF 0x800 + _r7ffc 0x800 OR ELSE _r7ffc THEN ;
|
||||||
0xc0 CONSTANT RJMPOP
|
: RJMP _raddr12 0xc000 OR ;
|
||||||
0xd0 CONSTANT RCALLOP
|
: RCALL _raddr12 0xd000 OR ;
|
||||||
: RJMP, _raddr12 RJMPOP 8 LSHIFT OR A,, ;
|
: RJMP, RJMP A,, ;
|
||||||
: RCALL, _raddr12 RCALLOP 8 LSHIFT OR A,, ;
|
: RCALL, RCALL A,, ;
|
||||||
|
14
blk/669
14
blk/669
@ -1,10 +1,12 @@
|
|||||||
( ex: L1 LBL! .. L1 @ RJMP, )
|
( L1 LBL! .. L1 @ RJMP, )
|
||||||
: LBL! ( l -- ) PC SWAP ! ;
|
: LBL! ( l -- ) PC SWAP ! ;
|
||||||
( ex: L1 FLBL, .. RJMPOP L1 FLBL! )
|
( L1 FLBL, .. RJMPOP L1 FLBL! )
|
||||||
: FLBL, ( l -- ) LBL! 0 A,, ;
|
: FLBL, ( l -- ) LBL! 0 A,, ;
|
||||||
: FLBL! ( op l -- )
|
: FLBL! ( l opw -- )
|
||||||
@ DUP PC -^ 1- ( op l off )
|
|
||||||
ROT 8 LSHIFT OR ( l op' )
|
|
||||||
( warning: l is a PC offset, not a mem addr! )
|
( warning: l is a PC offset, not a mem addr! )
|
||||||
SWAP 2 * ORG @ + ( op' addr ) ! ;
|
SWAP @ 2 * ORG @ + PC 1- H@ ( opw addr tgt hbkp )
|
||||||
|
ROT HERE ! ( opw tgt hbkp ) SWAP ROT EXECUTE H@ ! ( hbkp )
|
||||||
|
HERE ! ;
|
||||||
|
: FRJMP! ( l -- ) ['] RJMP FLBL! ;
|
||||||
|
: FRCALL! ( l -- ) ['] RCALL FLBL! ;
|
||||||
|
|
||||||
|
@ -56,13 +56,13 @@ L2 FLBL, ( hdlINT0 )
|
|||||||
|
|
||||||
( Read DATA and set GPIOR0/0 if high. Then, set flag T.
|
( Read DATA and set GPIOR0/0 if high. Then, set flag T.
|
||||||
no SREG fiddling because no SREG-modifying instruction )
|
no SREG fiddling because no SREG-modifying instruction )
|
||||||
RJMPOP L2 FLBL! ( hdlINT0 )
|
L2 FRJMP! ( hdlINT0 )
|
||||||
PINB DATA SBIC,
|
PINB DATA SBIC,
|
||||||
GPIOR0 0 SBI,
|
GPIOR0 0 SBI,
|
||||||
SET,
|
SET,
|
||||||
RETI,
|
RETI,
|
||||||
|
|
||||||
RJMPOP L1 FLBL! ( main )
|
L1 FRJMP! ( main )
|
||||||
16 RAMEND 0xff AND LDI,
|
16 RAMEND 0xff AND LDI,
|
||||||
SPL 16 OUT,
|
SPL 16 OUT,
|
||||||
16 RAMEND 8 RSHIFT LDI,
|
16 RAMEND 8 RSHIFT LDI,
|
||||||
|
Loading…
Reference in New Issue
Block a user