**Previous message:**Ruud Baltissen: "Re: Help needed"**In reply to:**Ruud Baltissen: "Re: Help needed"**Next in thread:**john/lori: "Re: Help needed"**Messages sorted by:**[ date ] [ thread ] [ subject ] [ author ] [ attachment ]

Ruud Baltissen wrote: > I first have to find out what LBA exactly is. LBA doesn't describe a disk as tracks, heads and sectors, but as your linear encoding. SCSI does this, for instance. Modern IDE disks do this too, since the THS-mapping doesn't have any physical meaning anymore - it's a backward-compatibility thing. > If LBA deals with 256 sectors and 256 heads, then LBA is equivalent to > lineair coding which simplifies things a lot. Well, most of the time it's something like 256 sectors and 64 heads. But that doesn't make much of a difference. It's *one* way of achieving the same goal. > > block(t,h,s)= (t * HDHEADS + h ) * HDSECT + s > > That is correct. But now I need someone willing to translate this equation > in ML. The only way _I_ know how to do multiplications is by doing a loop of > addititions. And I know that this certainly not the fastest way. So therefor > my plea for help. You can use the fact that (a+b)*c = a*c + b*c. For instance: a*13 is a*8 + a*4 + a*1. Multiplications by a factor of 2 is simple - it's nothing more than shifting the operand. Since every number can be written as a sum of 'factors of 2' (That's exactly what binary encoding is all about), you can execute any multiplication by shifting and adding. The above example can even be written as (((a)*2 + a)*2 + 0)*2 + a Consider the (integer) multiplication a*b (with b being 8-bit) in pseudo-assembly: result = 0 count = 8 loop: asl result ; Multiply the result with 2. asl b ; Move the MSB into carry bcc next ; If carry set, then add, otherwise ignore. clc result = result + a next: dec count ; decrease counter bne loop ; if counter is zero, then done. caveats: * The result will be more than 8 bits, so you'll need to shift over multiple bytes. 'asl result' will have to be something like asl result0 rol result1 rol result2 rol result3 * Same applies for the addition. > Same for the division-stuff. Division can be done with a 'staartdeling'. Don't know the english word for that, sorry. I think I have a halfway efficient algorithm in one of my college textbooks. I'd have to look it up - can't come up with something right now. -- Martijn van Buul - Pino@dohd.org - http://www.stack.nl/~martijnb/ Geek code: G-- - Visit OuterSpace: mud.stack.nl 3333 Kees J. Bot: The sum of CPU power and user brain power is a constant. Message was sent through the cbm-hackers mailing list

**Previous message:**Ruud Baltissen: "Re: Help needed"**In reply to:**Ruud Baltissen: "Re: Help needed"**Next in thread:**john/lori: "Re: Help needed"**Messages sorted by:**[ date ] [ thread ] [ subject ] [ author ] [ attachment ]

Archive generated by hypermail 2.1.1.