mirror of
https://github.com/hsoft/collapseos.git
synced 2024-11-05 08:50:56 +11:00
Add words RSHIFT and LSHIFT
This commit is contained in:
parent
4e98ef11bd
commit
24e588019b
4
blk/054
4
blk/054
@ -10,7 +10,7 @@ MOD a b -- c a % b -> c
|
|||||||
AND a b -- c a & b -> c
|
AND a b -- c a & b -> c
|
||||||
OR a b -- c a | b -> c
|
OR a b -- c a | b -> c
|
||||||
XOR a b -- c a ^ b -> c
|
XOR a b -- c a ^ b -> c
|
||||||
|
LSHIFT a u -- c a << u -> c
|
||||||
|
RSHIFT a u -- c a >> u -> c
|
||||||
|
|
||||||
Shortcuts: 1+ 2+ 1- 2-
|
Shortcuts: 1+ 2+ 1- 2-
|
||||||
|
|
||||||
|
|
||||||
|
2
blk/215
2
blk/215
@ -6,7 +6,7 @@
|
|||||||
( A, spits an assembled byte, A,, spits an assembled word
|
( A, spits an assembled byte, A,, spits an assembled word
|
||||||
Both increase PC. To debug, change C, to .X )
|
Both increase PC. To debug, change C, to .X )
|
||||||
: A, C, ; : A,, SPLITB A, A, ;
|
: A, C, ; : A,, SPLITB A, A, ;
|
||||||
: <<3 8 * ; : <<4 16 * ;
|
: <<3 3 LSHIFT ; : <<4 4 LSHIFT ;
|
||||||
( As a general rule, IX and IY are equivalent to spitting an
|
( As a general rule, IX and IY are equivalent to spitting an
|
||||||
extra 0xdd / 0xfd and then spit the equivalent of HL )
|
extra 0xdd / 0xfd and then spit the equivalent of HL )
|
||||||
: IX 0xdd A, HL ; : IY 0xfd A, HL ;
|
: IX 0xdd A, HL ; : IY 0xfd A, HL ;
|
||||||
|
12
blk/334
Normal file
12
blk/334
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
CODE RSHIFT ( n u -- n )
|
||||||
|
BC POPqq, ( u )
|
||||||
|
HL POPqq, ( n )
|
||||||
|
chkPS,
|
||||||
|
B C LDrr,
|
||||||
|
B INCr, B DECr, IFNZ,
|
||||||
|
BEGIN,
|
||||||
|
H SRLr, L RRr,
|
||||||
|
DJNZ, AGAIN,
|
||||||
|
THEN,
|
||||||
|
HL PUSHqq,
|
||||||
|
;CODE
|
13
blk/335
Normal file
13
blk/335
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
CODE LSHIFT ( n u -- n )
|
||||||
|
BC POPqq, ( u )
|
||||||
|
HL POPqq, ( n )
|
||||||
|
chkPS,
|
||||||
|
B C LDrr,
|
||||||
|
B INCr, B DECr, IFNZ,
|
||||||
|
BEGIN,
|
||||||
|
L SLAr, H RLr,
|
||||||
|
DJNZ, AGAIN,
|
||||||
|
THEN,
|
||||||
|
HL PUSHqq,
|
||||||
|
;CODE
|
||||||
|
|
4
blk/379
4
blk/379
@ -9,8 +9,8 @@
|
|||||||
: SDCMDR7
|
: SDCMDR7
|
||||||
_sdcSel
|
_sdcSel
|
||||||
_cmd ( r )
|
_cmd ( r )
|
||||||
_idle 256 * _idle + ( r arg1 )
|
_idle 8 LSHIFT _idle + ( r arg1 )
|
||||||
_idle 256 * _idle + ( r arg1 arg2 )
|
_idle 8 LSHIFT _idle + ( r arg1 arg2 )
|
||||||
_sdcDesel
|
_sdcDesel
|
||||||
;
|
;
|
||||||
|
|
||||||
|
2
blk/383
2
blk/383
@ -10,6 +10,6 @@
|
|||||||
SWAP 1+ ( crc a+1 )
|
SWAP 1+ ( crc a+1 )
|
||||||
LOOP
|
LOOP
|
||||||
DROP ( crc1 )
|
DROP ( crc1 )
|
||||||
_idle 256 * _idle + ( crc2 )
|
_idle 8 LSHIFT _idle + ( crc2 )
|
||||||
_wait DROP _sdcDesel
|
_wait DROP _sdcDesel
|
||||||
= NOT IF _err THEN ;
|
= NOT IF _err THEN ;
|
||||||
|
6
blk/499
6
blk/499
@ -3,14 +3,14 @@
|
|||||||
( 4 256b sectors per block, 10 sec per cyl, 40 cyl max )
|
( 4 256b sectors per block, 10 sec per cyl, 40 cyl max )
|
||||||
10 /MOD ( sec cyl )
|
10 /MOD ( sec cyl )
|
||||||
DUP 39 > IF _err THEN
|
DUP 39 > IF _err THEN
|
||||||
256 * + ( cylsec )
|
8 LSHIFT + ( cylsec )
|
||||||
;
|
;
|
||||||
: FD@! ( wref blk -- )
|
: FD@! ( wref blk -- )
|
||||||
1 @DCSTAT NOT IF _err THEN
|
1 @DCSTAT NOT IF _err THEN
|
||||||
4 * ( wr sec )
|
2 LSHIFT ( 4 * -- wr sec )
|
||||||
4 0 DO ( wr sec )
|
4 0 DO ( wr sec )
|
||||||
DUP I + _cylsec ( wr sec cs )
|
DUP I + _cylsec ( wr sec cs )
|
||||||
I 256 * BLK( + ( wr sec cs addr )
|
I 8 LSHIFT BLK( + ( wr sec cs addr )
|
||||||
1 ROT ROT ( wr sec drv cs addr )
|
1 ROT ROT ( wr sec drv cs addr )
|
||||||
4 PICK EXECUTE NOT IF _err THEN
|
4 PICK EXECUTE NOT IF _err THEN
|
||||||
LOOP 2DROP ;
|
LOOP 2DROP ;
|
||||||
|
BIN
emul/forth.bin
BIN
emul/forth.bin
Binary file not shown.
Loading…
Reference in New Issue
Block a user