<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://oldwiki.cpcwiki.eu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=80.77.225.28</id>
		<title>CPCWiki - THE Amstrad CPC encyclopedia! - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="https://oldwiki.cpcwiki.eu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=80.77.225.28"/>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php/Special:Contributions/80.77.225.28"/>
		<updated>2026-08-29T23:43:56Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.25.1</generator>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=Programming:Integer_Division&amp;diff=7599</id>
		<title>Programming:Integer Division</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=Programming:Integer_Division&amp;diff=7599"/>
				<updated>2006-09-21T14:20:50Z</updated>
		
		<summary type="html">&lt;p&gt;80.77.225.28: Added 8bit division&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== 8bit division ==&lt;br /&gt;
&lt;br /&gt;
'''Input:''' HL=Value1, C=Value2&lt;br /&gt;
&lt;br /&gt;
'''Output:''' L=Value1/Value2, H=Value1 MOD Value2&lt;br /&gt;
&lt;br /&gt;
'''Destroyed:''' AF,BC&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        LD B,8&lt;br /&gt;
Div_Next:&lt;br /&gt;
        ADD     HL,HL&lt;br /&gt;
        LD      A,H&lt;br /&gt;
        SUB     C&lt;br /&gt;
        JR      C,Div_NXTB&lt;br /&gt;
        LD      H,A&lt;br /&gt;
        INC     L&lt;br /&gt;
Div_NXTB:&lt;br /&gt;
        DJNZ    Div_Next&lt;br /&gt;
        RET&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 16bit division ==&lt;br /&gt;
&lt;br /&gt;
'''Input:''' BC=Value1, DE=Value2&lt;br /&gt;
&lt;br /&gt;
'''Output:''' HL=Value1/Value2, DE=Value1 MOD Value2&lt;br /&gt;
&lt;br /&gt;
'''Destroyed:''' AF,BC&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
clcd16  ld a,e&lt;br /&gt;
        or d&lt;br /&gt;
        ld hl,0&lt;br /&gt;
        ret z&lt;br /&gt;
        ld a,b&lt;br /&gt;
        ld b,16&lt;br /&gt;
clcd161 rl c&lt;br /&gt;
        rla&lt;br /&gt;
        adc hl,hl&lt;br /&gt;
        sbc hl,de&lt;br /&gt;
        jr nc,clcd162&lt;br /&gt;
        add hl,de&lt;br /&gt;
clcd162 ccf&lt;br /&gt;
        djnz clcd161&lt;br /&gt;
        ex de,hl&lt;br /&gt;
        rl c&lt;br /&gt;
        rla&lt;br /&gt;
        ld h,a&lt;br /&gt;
        ld l,c&lt;br /&gt;
        ret&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 24bit division ==&lt;br /&gt;
&lt;br /&gt;
'''Input:''' A,BC=Value1, DE=Value2&lt;br /&gt;
&lt;br /&gt;
'''Output:''' HL=Value1/Value2, DE=Value1 MOD Value2&lt;br /&gt;
&lt;br /&gt;
'''Destroyed:''' AF,BC,IX,IYL&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
clcdiv  db #dd:ld l,e&lt;br /&gt;
        db #dd:ld h,d   ;IX=Value2&lt;br /&gt;
        ld e,a          ;E,BC=Value1(Counter)&lt;br /&gt;
        ld hl,0&lt;br /&gt;
        db #dd:ld a,l&lt;br /&gt;
        db #dd:or h&lt;br /&gt;
        ret z&lt;br /&gt;
        ld d,l          ;D,HL=CalcVar&lt;br /&gt;
        db #fd:ld l,24  ;IYL=Counter&lt;br /&gt;
clcdiv1 rl c&lt;br /&gt;
        rl b&lt;br /&gt;
        rl e&lt;br /&gt;
        rl l&lt;br /&gt;
        rl h&lt;br /&gt;
        rl d&lt;br /&gt;
        ld a,l&lt;br /&gt;
        db #dd:sub l&lt;br /&gt;
        ld l,a&lt;br /&gt;
        ld a,h&lt;br /&gt;
        db #dd:sbc h&lt;br /&gt;
        ld h,a&lt;br /&gt;
        ld a,d&lt;br /&gt;
        sbc 0&lt;br /&gt;
        ld d,a          ;D,HL=D,HL-IX&lt;br /&gt;
        jr nc,clcdiv2&lt;br /&gt;
        ld a,l&lt;br /&gt;
        db #dd:add l&lt;br /&gt;
        ld l,a&lt;br /&gt;
        ld a,h&lt;br /&gt;
        db #dd:adc h&lt;br /&gt;
        ld h,a&lt;br /&gt;
        ld a,d&lt;br /&gt;
        adc 0&lt;br /&gt;
        ld d,a&lt;br /&gt;
        scf&lt;br /&gt;
clcdiv2 ccf&lt;br /&gt;
        db #fd:dec l&lt;br /&gt;
        jr nz,clcdiv1&lt;br /&gt;
        ex de,hl        ;DE=Value1 MOD Value2&lt;br /&gt;
        rl c&lt;br /&gt;
        rl b&lt;br /&gt;
        ld l,c&lt;br /&gt;
        ld h,b          ;HL=Value1 DIV Value2&lt;br /&gt;
        ret&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 32bit division ==&lt;br /&gt;
&lt;br /&gt;
'''Input:''' IY,BC=Value1, IX=Value2&lt;br /&gt;
&lt;br /&gt;
'''Output:''' IY,BC=Value1/Value2, HL=Value1 MOD Value2&lt;br /&gt;
&lt;br /&gt;
'''Destroyed:''' AF,DE,IY&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
clcd32c db 0&lt;br /&gt;
clcd32  ld hl,0&lt;br /&gt;
        db #dd:ld a,l&lt;br /&gt;
        db #dd:or h&lt;br /&gt;
        ret z           ;IY,BC=Value1(Counter)&lt;br /&gt;
        ld de,0         ;DE,HL=CalcVar&lt;br /&gt;
        ld a,32         ;Set Counter to 32&lt;br /&gt;
clcd321 ld (clcd32c),a&lt;br /&gt;
        rl c&lt;br /&gt;
        rl b&lt;br /&gt;
        db #fd:ld a,l:rla:db #fd:ld l,a&lt;br /&gt;
        db #fd:ld a,h:rla:db #fd:ld h,a&lt;br /&gt;
        rl l&lt;br /&gt;
        rl h&lt;br /&gt;
        rl e&lt;br /&gt;
        rl d&lt;br /&gt;
        ld a,l&lt;br /&gt;
        db #dd:sub l&lt;br /&gt;
        ld l,a&lt;br /&gt;
        ld a,h&lt;br /&gt;
        db #dd:sbc h&lt;br /&gt;
        ld h,a&lt;br /&gt;
        ld a,e&lt;br /&gt;
        sbc 0&lt;br /&gt;
        ld e,a&lt;br /&gt;
        ld a,d&lt;br /&gt;
        sbc 0&lt;br /&gt;
        ld d,a&lt;br /&gt;
        jr nc,clcd322&lt;br /&gt;
        ld a,l&lt;br /&gt;
        db #dd:add l&lt;br /&gt;
        ld l,a&lt;br /&gt;
        ld a,h&lt;br /&gt;
        db #dd:adc h&lt;br /&gt;
        ld h,a&lt;br /&gt;
        ld a,e&lt;br /&gt;
        adc 0&lt;br /&gt;
        ld e,a&lt;br /&gt;
        ld a,d&lt;br /&gt;
        adc 0&lt;br /&gt;
        ld d,a&lt;br /&gt;
        scf&lt;br /&gt;
clcd322 ccf&lt;br /&gt;
        ld a,(clcd32c)&lt;br /&gt;
        dec a&lt;br /&gt;
        jr nz,clcd321   ;HL=Value1 MOD Value2&lt;br /&gt;
        rl c&lt;br /&gt;
        rl b&lt;br /&gt;
        db #fd:ld a,l:rla:db #fd:ld l,a&lt;br /&gt;
        db #fd:ld a,h:rla:db #fd:ld h,a&lt;br /&gt;
        ret             ;IY,BC=Value1 DIV Value2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Category:Programming]]&lt;/div&gt;</summary>
		<author><name>80.77.225.28</name></author>	</entry>

	</feed>