From 24e588019bdb198de828e175c318eeff66ef767e Mon Sep 17 00:00:00 2001 From: Virgil Dupras Date: Thu, 7 May 2020 15:40:10 -0400 Subject: [PATCH] Add words RSHIFT and LSHIFT --- blk/054 | 4 ++-- blk/215 | 2 +- blk/282 | 2 +- blk/334 | 12 ++++++++++++ blk/335 | 13 +++++++++++++ blk/379 | 4 ++-- blk/383 | 2 +- blk/499 | 6 +++--- emul/forth.bin | Bin 5847 -> 5907 bytes 9 files changed, 35 insertions(+), 10 deletions(-) create mode 100644 blk/334 create mode 100644 blk/335 diff --git a/blk/054 b/blk/054 index 882bd5b..9710035 100644 --- a/blk/054 +++ b/blk/054 @@ -10,7 +10,7 @@ MOD a b -- c a % b -> c AND a b -- c a & b -> c OR 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- - - diff --git a/blk/215 b/blk/215 index e7d890b..90c5817 100644 --- a/blk/215 +++ b/blk/215 @@ -6,7 +6,7 @@ ( A, spits an assembled byte, A,, spits an assembled word Both increase PC. To debug, change C, to .X ) : 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 extra 0xdd / 0xfd and then spit the equivalent of HL ) : IX 0xdd A, HL ; : IY 0xfd A, HL ; diff --git a/blk/282 b/blk/282 index 8a2a1f6..52d7676 100644 --- a/blk/282 +++ b/blk/282 @@ -1 +1 @@ -1 51 LOADR+ +1 53 LOADR+ diff --git a/blk/334 b/blk/334 new file mode 100644 index 0000000..eb87937 --- /dev/null +++ b/blk/334 @@ -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 diff --git a/blk/335 b/blk/335 new file mode 100644 index 0000000..db87447 --- /dev/null +++ b/blk/335 @@ -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 + diff --git a/blk/379 b/blk/379 index 5d3edca..ac61823 100644 --- a/blk/379 +++ b/blk/379 @@ -9,8 +9,8 @@ : SDCMDR7 _sdcSel _cmd ( r ) - _idle 256 * _idle + ( r arg1 ) - _idle 256 * _idle + ( r arg1 arg2 ) + _idle 8 LSHIFT _idle + ( r arg1 ) + _idle 8 LSHIFT _idle + ( r arg1 arg2 ) _sdcDesel ; diff --git a/blk/383 b/blk/383 index 2058089..134dd9d 100644 --- a/blk/383 +++ b/blk/383 @@ -10,6 +10,6 @@ SWAP 1+ ( crc a+1 ) LOOP DROP ( crc1 ) - _idle 256 * _idle + ( crc2 ) + _idle 8 LSHIFT _idle + ( crc2 ) _wait DROP _sdcDesel = NOT IF _err THEN ; diff --git a/blk/499 b/blk/499 index 7dc8921..ed4127d 100644 --- a/blk/499 +++ b/blk/499 @@ -3,14 +3,14 @@ ( 4 256b sectors per block, 10 sec per cyl, 40 cyl max ) 10 /MOD ( sec cyl ) DUP 39 > IF _err THEN - 256 * + ( cylsec ) + 8 LSHIFT + ( cylsec ) ; : FD@! ( wref blk -- ) 1 @DCSTAT NOT IF _err THEN - 4 * ( wr sec ) + 2 LSHIFT ( 4 * -- wr sec ) 4 0 DO ( wr sec ) 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 ) 4 PICK EXECUTE NOT IF _err THEN LOOP 2DROP ; diff --git a/emul/forth.bin b/emul/forth.bin index 781c5a6b594dd3f738ebe869e5767f022395537c..15d9cb2a9a41946b2cdf4fc3e4eb47c3207695c2 100644 GIT binary patch literal 5907 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