Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.sys.acorn.programmer > #5984

Re: Subtracting times

Subject Re: Subtracting times
Newsgroups comp.sys.acorn.programmer
From Alan Adams <alan@adamshome.org.uk>
Date 2020-02-19 10:03 +0000
Message-ID <4e83b04458.Alan.Adams@ArmX6.adamshome.org.uk> (permalink)
References <37f8364458.Alan.Adams@ArmX6.adamshome.org.uk> <757ca84458.Matthew@sinenomine.freeserve.co.uk>
Organization Orpheus Internet Services

Show all headers | View raw


In message <757ca84458.Matthew@sinenomine.freeserve.co.uk>
          Matthew Phillips <spam2011m@yahoo.co.uk> wrote:

> In message <37f8364458.Alan.Adams@ArmX6.adamshome.org.uk>
>  on 18 Feb 2020 Alan Adams  wrote:

>> My head is hurting.
>> 
>> I need a BASIC routine to subtract one 5-byte time from another and return
>> a correctly signed result.
>> 
>> Complications arise at the point where the low word goes from &7fffffff to
>> &80000000, and where the high byte increases.
>> 
>> BASIC doesn't allow access to the carry or borrow from arithmetic
>> operations.
>> 
>> I've developed the following which *seems* to work correctly. However I'm
>> not sure about all the edge cases.

> I don't think it's doing quite what you want it to do. From the above, my
> understanding is that you want a signed result, so that if stamp1% is
> three centiseconds bigger than stamp2% you want a positive number (listing
> the bytes in memory order):

> 03 00 00 00 00

> and if stamp1% is three centiseconds less than stamp2% you want a negative
> result:

> FD FF FF FF FF

> I also take it that you want a five-byte result, but that in your use case
> four bytes would always contain the differences.

I do want a 4-byte result - the final stage after calling this is

interval%=!resultbuf%. i need this value to be correctly signed.

>> This is part of a timing system, Next February the high byte of times will
>> change from &57 to &58, and I would like this code to survive working
>> across this boundary. I need to reliably detect negative results, which
>> can occur if a spurious finish time pulse arrives before a start time.
>> 
<snip>


> If you want a signed result, you need to remove the following three lines:

>>   IF L% < 0 THEN
>>     resultbuf%!0 = -(resultbuf%!0)
>>   ENDIF

That bit is intended to ensure that the 40-byte part is correctly signed.

> If you want the absolute difference, so that in the above examples of stamp1%
> and stamp2% differing by 3 centiseconds you would always get 03 00 00 00 00
> no matter which of the two was the larger value, you should retain the three
> lines above but change the following line to resultbuf%?I%=0

> But that's only if you're sure the result fits in 4 bytes.

If anyone takes a year and a half to paddle round a slalom course, we can 
time them with a calendar.

>>   resultbuf%?I%=L%AND&FF
>> ENDPROC

> If you wnat a signed result, you can simplify by making the FOR-NEXT loop
> with I% run from 0 to 4 and lose all the lines after the NEXT.

The following shows why this makes my head hurt.

adding two positive numbers shouldn't produce a negative result.

>A%=&7FFFFFFF
>PRINT A%
2.14748365E9
>B%=A%+1
>PRINT B%
-2.14748365E9
>


-- 
Alan Adams, from Northamptonshire
alan@adamshome.org.uk
http://www.nckc.org.uk/

Back to comp.sys.acorn.programmer | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

Subtracting times Alan Adams <alan@adamshome.org.uk> - 2020-02-18 11:55 +0000
  Re: Subtracting times Jean-Michel <jmc.bruck@orange.fr> - 2020-02-18 19:11 +0100
    Re: Subtracting times Steve Drain <steve@kappa.me.uk> - 2020-02-21 03:28 -0800
      Re: Subtracting times Alan Adams <alan@adamshome.org.uk> - 2020-02-21 12:45 +0000
      Re: Subtracting times Alan Adams <alan@adamshome.org.uk> - 2020-02-21 15:17 +0000
        Re: Subtracting times Steve Drain <steve@kappa.me.uk> - 2020-02-22 10:37 +0000
          Re: Subtracting times Steve Drain <steve@kappa.me.uk> - 2020-02-25 16:05 +0000
            Re: Subtracting times Alan Adams <alan@adamshome.org.uk> - 2020-02-25 16:35 +0000
              Re: Subtracting times Steve Drain <steve@kappa.me.uk> - 2020-02-27 17:10 +0000
                Re: Subtracting times Steve Drain <steve@kappa.me.uk> - 2020-02-27 10:06 -0800
                Re: Subtracting times Alan Adams <alan@adamshome.org.uk> - 2020-02-28 11:21 +0000
                Re: Subtracting times jeffrey.a.doggett@gmail.com - 2020-04-22 12:00 -0700
                Re: Subtracting times Martin <News03@avisoft.f9.co.uk> - 2020-04-23 00:07 +0100
                Re: Subtracting times jeffrey.a.doggett@gmail.com - 2020-04-23 03:13 -0700
                Re: Subtracting times Martin <News03@avisoft.f9.co.uk> - 2020-04-23 18:01 +0100
                Re: Subtracting times "John Williams (News)" <UCEbin@tiscali.co.uk> - 2020-04-23 18:06 +0100
                Re: Subtracting times jeffrey.a.doggett@gmail.com - 2020-04-23 11:18 -0700
                Re: Subtracting times Martin <News03@avisoft.f9.co.uk> - 2020-04-23 21:23 +0100
                Re: Subtracting times David Higton <dave@davehigton.me.uk> - 2020-04-24 15:24 +0100
                Re: Subtracting times David Higton <dave@davehigton.me.uk> - 2020-04-23 20:57 +0100
        Re: Subtracting times jgh@mdfs.net - 2020-02-23 17:39 -0800
          Re: Subtracting times Steve Drain <steve@kappa.me.uk> - 2020-02-24 10:23 +0000
            Re: Subtracting times Alan Adams <alan@adamshome.org.uk> - 2020-02-24 11:12 +0000
              Re: Subtracting times Martin <News03@avisoft.f9.co.uk> - 2020-02-24 13:05 +0000
  Re: Subtracting times Matthew Phillips <spam2011m@yahoo.co.uk> - 2020-02-19 08:35 +0000
    Re: Subtracting times Alan Adams <alan@adamshome.org.uk> - 2020-02-19 10:03 +0000
      Re: Subtracting times Sebastian Barthel <naitsabes@freenet.de> - 2020-02-19 13:04 +0000
        Re: Subtracting times Alan Adams <alan@adamshome.org.uk> - 2020-02-19 16:41 +0000
          Re: Subtracting times jgh@mdfs.net - 2020-02-19 12:01 -0800
      Re: Subtracting times Matthew Phillips <spam2011m@yahoo.co.uk> - 2020-02-23 20:46 +0000
  Re: Subtracting times Martin <News03@avisoft.f9.co.uk> - 2020-02-19 23:54 +0000
    Re: Subtracting times Alan Adams <alan@adamshome.org.uk> - 2020-02-20 11:18 +0000

csiph-web