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 781c5a6..15d9cb2 100644 Binary files a/emul/forth.bin and b/emul/forth.bin differ