[Coco] 6309 Division instructions
Robert Gault
robert.gault at worldnet.att.net
Tue Aug 2 13:39:54 EDT 2005
Not on my system running under Disk Basic. If regD is loaded with any
number then DIVD # has no effect at all on regW but only regA and regB.
If your test was made under OS-9, the results may be different and
possibly misleading.
For example using EDT6309 my version of EDTASM the following:
START LDD #$BCEF
DIVD #24
SWI
END
gives
A=$43 B=$11 DP=00 CC=$8A =ENV
X=0000 Y=0000 U=0000 S=$1579
PC=$56E2 V=0000 E=00 F=00
Change to LDD #24 and regA=00 regB=01 CC=$81 =EC and regW is still 0000.
jdaggett at gate.net wrote:
> Sorry was a typo. Contents of D. W and D are the results.
>
> james
>
> On 1 Aug 2005 at 23:48, Robert Gault wrote:
>
> Date sent: Mon, 01 Aug 2005 23:48:46 -0400
> From: Robert Gault <robert.gault at worldnet.att.net>
> To: CoCoList for Color Computer Enthusiasts
> <coco at maltedmedia.com>
> Subject: Re: [Coco] 6309 Division instructions
> Send reply to: CoCoList for Color Computer Enthusiasts
> <coco at maltedmedia.com>
> <mailto:coco-
> request at maltedmedia.com?subject=unsubscribe>
> <mailto:coco-
> request at maltedmedia.com?subject=subscribe>
>
>>Is that a typo? Why would regW be involved with DIVD?
>>
>>jdaggett at gate.net wrote:
>>
>>
>>>Tim
>>>
>>>from the 6309 documentation I h ave the DIVD does a 16 bit by 8
>>>signed division. The contents of W is divided by memory byte and the
>>>quotient is stored in W and the modulo (remainder) is in D.
>>>
>>>This yields +32,767/-32,768 divided by +127/-128 ranges.
>>>
>>>
>>>Initial thoughts on how to get an overflow condition would mean the
>>>modulo would overflow or the divisor is "one"?
>>>
>>>james
>>>
>>>On 1 Aug 2005 at 20:15, tim lindner wrote:
>>>
>>>To: coco at maltedmedia.com (CoCo Mailing List)
>>>From: tlindner at ix.netcom.com (tim lindner)
>>>Date sent: Mon, 1 Aug 2005 20:15:58 -0700
>>>Organization: Computers Suck, Inc.
>>>Subject: [Coco] 6309 Division instructions
>>>Send reply to: CoCoList for Color Computer Enthusiasts
>>><coco at maltedmedia.com>
>>> <mailto:coco-
>>>request at maltedmedia.com?subject=unsubscribe>
>>> <mailto:coco-
>>>request at maltedmedia.com?subject=subscribe>
>>>
>>>>I was testing the division instructions against my 6309 core (in
>>>>MESS) and found something unusual.
>>>>
>>>>My Burke & Burke 6309 documents say that result of DIVD is a signed
>>>>8-bit value in register B and an unsigned remainder in register A.
>>>>
>>>>Further more it says that if the quotient overflows, the value of A
>>>>and B will be unchanged and the V condition code will be set.
>>>>
>>>>But this is not exactly the behiavior I am seeing on real hardware.
>>>>
>>>>What I am seeing is a sort of two stage overflow. If the quotient
>>>>doesn't fit in an signed 8 bit container but would fit in a unsigned
>>>>8 bit container, then the correct absolute value is wirrten to B and
>>>>the V condition code is set.
>>>>
>>>>If the value overflows an unsgined container, the registers A and B
>>>>set to the absolute value the the orginal numerator and the V
>>>>condition code is set.
>>>>
>>>>I have not seen this behiavor described anywhere and I would be
>>>>interested in other peoples thoughts on it.
>>>>
>>>>--
>>>>tim lindner
>>>>tlindner at ix.netcom.com Bright
>>>>
>>>>--
>>>>Coco mailing list
>>>>Coco at maltedmedia.com
>>>>http://five.pairlist.net/mailman/listinfo/coco
>>>
>>>
>>>
>>>
>>--
>>Coco mailing list
>>Coco at maltedmedia.com
>>http://five.pairlist.net/mailman/listinfo/coco
>
>
>
>
More information about the Coco
mailing list