|
- : _err ABORT" FDerr" ;
- : _cylsec ( sec -- cs, return sector/cylinder for given secid )
- ( 4 256b sectors per block, 10 sec per cyl, 40 cyl max )
- 10 /MOD ( sec cyl )
- DUP 39 > IF _err THEN
- 8 LSHIFT + ( cylsec )
- ;
- : FD@! ( wref blk -- )
- 1 @DCSTAT NOT IF _err THEN
- 2 LSHIFT ( 4 * -- wr sec )
- 4 0 DO ( wr sec )
- DUP I + _cylsec ( wr sec cs )
- 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 ;
|