<?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=Roudoudou</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=Roudoudou"/>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php/Special:Contributions/Roudoudou"/>
		<updated>2026-08-28T07:11:31Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.25.1</generator>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=CRTC%C2%B3&amp;diff=101465</id>
		<title>CRTC³</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=CRTC%C2%B3&amp;diff=101465"/>
				<updated>2018-04-11T11:10:11Z</updated>
		
		<summary type="html">&lt;p&gt;Roudoudou: /* FX */ 3D scrool&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''' CRTC³ ''' won the [[Alchimie|Alchimie 12]] (2017) composition, ranked '''1st''' Place and winning over [[Eerie Forest]] (a GX4000 mega-intro from fellow [[Overflow]]) and prods on '''Atari STf''' and '''Amiga''' formats.&lt;br /&gt;
&lt;br /&gt;
This Demo actually sets expectation on all the next Demos on Amstrad PLUS format and established the power of the ROM cartridge and the interest of [[C4CPC]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== who? ==&lt;br /&gt;
&lt;br /&gt;
Groups : [[Flower Corp.]] [[Futur's]] [[X-Men]] [[Resistance]]&lt;br /&gt;
&lt;br /&gt;
'''[[Roudoudou]]''' : Main code, graphics.&lt;br /&gt;
&lt;br /&gt;
'''[[Zik]]''' : code, music.&lt;br /&gt;
&lt;br /&gt;
'''CoyHot''' : graphics.&lt;br /&gt;
&lt;br /&gt;
'''fra''' : graphics.&lt;br /&gt;
&lt;br /&gt;
'''[[Hwikaa]]''' : 3D and Graphics&lt;br /&gt;
&lt;br /&gt;
'''Zisquier''' : Electric Guitar samples&lt;br /&gt;
&lt;br /&gt;
== what? ==&lt;br /&gt;
&lt;br /&gt;
Amstrad '''6128+''' cartridge demo - Ranked '''1st''' at [[Alchimie|Alchimie12]] - 2017&lt;br /&gt;
&lt;br /&gt;
Best to be seen on a real amstrad 6128PLUS, it needs a built-in 128k config, hence modified 464PLUS motherboards may work as well but stock 464PLUS or GX4000 cannot run it. When initialising machine, a test is done for memory expansion compatibility and IM2 bug support. This will guarantee a proper execution of the demo and display a message with almost all emulators, warning about proper support, as the SID sound replay is awfull with all emulators (except ACE).&lt;br /&gt;
&lt;br /&gt;
This Demo clearly needs you to have a [[C4CPC]] cartridge.&lt;br /&gt;
&lt;br /&gt;
This is pronounced '''CRTC cube'''.&lt;br /&gt;
&lt;br /&gt;
It was praised for its awesome Music featuring some Electric Guitar sampled sounds, smooth animation and 16bit styled effects and palette, and really impressed Atari and Amiga fans at the compo.&lt;br /&gt;
&lt;br /&gt;
Nominee at '''THE METEORIKS 2018''' awards : ''BEST LOW-END PRODUCTION'' category.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== FX ==&lt;br /&gt;
&lt;br /&gt;
- progressive GFX appearance&lt;br /&gt;
&lt;br /&gt;
- 512 simultaneous colors plasma (with dithering)&lt;br /&gt;
&lt;br /&gt;
- screen break opening&lt;br /&gt;
&lt;br /&gt;
- 3D tunnel with progressive colors&lt;br /&gt;
&lt;br /&gt;
- Big GFX distorsion with scrolling and vector ballz&lt;br /&gt;
&lt;br /&gt;
- dots sprites, ending with 4 huge balls&lt;br /&gt;
&lt;br /&gt;
- 320 colors GFX with hardware sprites for details&lt;br /&gt;
&lt;br /&gt;
- Perspective tunnel with rasters (+120 colors) with 3D illuminated letters&lt;br /&gt;
&lt;br /&gt;
- 64 colors high resolution wobbler&lt;br /&gt;
&lt;br /&gt;
- textured rubber bar with many (dis)torsions&lt;br /&gt;
&lt;br /&gt;
- 3D wasp with multi-layers offset mapping technic, combined with rasters and hardware scrolling&lt;br /&gt;
&lt;br /&gt;
- variable font endscroll with fading and blended lines&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Music featuring DMA sid voices all the time and samples from dots sprites part until the end&lt;br /&gt;
&lt;br /&gt;
Can you find the cheatpart?&lt;br /&gt;
&lt;br /&gt;
== videodrome ==&lt;br /&gt;
&lt;br /&gt;
{{#ev:youtube|PgMJ39wfoBM|784}}&lt;br /&gt;
&lt;br /&gt;
A lesson in coding and Tricks by Roudoudou himself :&lt;br /&gt;
{{#ev:youtube|fVirsB6pYC8|784}}&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
* CPC-Power : http://www.cpc-power.com/index.php?page=detail&amp;amp;num=14940&lt;br /&gt;
&lt;br /&gt;
* Pouët : http://www.pouet.net/prod.php?which=72279&lt;br /&gt;
&lt;br /&gt;
* METEORIKS award 2018 infos and nominees : https://2018.meteoriks.org/nominees&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Demos]][[Category:Plus Demos]][[Category:Demos 2017]][[Category:Video contents]][[Category:Cartridges]]&lt;/div&gt;</summary>
		<author><name>Roudoudou</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=Technical_documentation&amp;diff=101061</id>
		<title>Technical documentation</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=Technical_documentation&amp;diff=101061"/>
				<updated>2018-03-02T13:45:21Z</updated>
		
		<summary type="html">&lt;p&gt;Roudoudou: /* Hardware extensions */ link fix&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;border: 1px solid rgb(228, 222, 222); margin: 0px 0px 5px; padding: 0.5em 1em; background-color: rgb(249, 249, 249);&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Ongoing project for additional technical documentation: the [[KevArchive|local mirror]] of Kevin Thackers' archive at [http://www.cpctech.org.uk http://www.cpctech.org.uk].''''' &amp;lt;/center&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== BASIC / Firmware / CP/M ==&lt;br /&gt;
&lt;br /&gt;
* [[BIOS Functions]]&lt;br /&gt;
* [[Locomotive BASIC]] (reference for BASIC commands, functions and error messages)&lt;br /&gt;
* [[Technical information about Locomotive BASIC]] (encoding of BASIC programs in memory)&lt;br /&gt;
&lt;br /&gt;
== DIY Hardware Projects ==&lt;br /&gt;
&lt;br /&gt;
Can now be found under [[DIY|DIY &amp;amp; Repair]]&lt;br /&gt;
&lt;br /&gt;
== Built-in connectors: pinout ==&lt;br /&gt;
&lt;br /&gt;
* [[Connector:2nd disc drive (CPC664, CPC6128, CPC6128+)|2nd disc drive (CPC664, CPC6128, CPC6128+)]]&lt;br /&gt;
* [[Connector:Analogue joystick (CPC Plus only)|Analogue joystick (CPC Plus only)]]&lt;br /&gt;
* [[Connector:Aux socket (CPC Plus only)|Aux socket (CPC Plus only)]] (Lightgun)&lt;br /&gt;
* [[Connector:Cartridge Slot (CPC Plus only)|Cartridge Slot (CPC Plus only)]]&lt;br /&gt;
* [[Connector:Cassette recorder|Cassette recorder]]&lt;br /&gt;
* [[Connector:Digital joystick|Digital joystick]]&lt;br /&gt;
* [[Connector:Expansion port|Expansion port]]&lt;br /&gt;
* [[Connector:Monitor|Monitor]]&lt;br /&gt;
* [[Connector:Printer port|Printer port]]&lt;br /&gt;
* [[Connector:Stereo sound|Stereo sound]]&lt;br /&gt;
&lt;br /&gt;
== Emulator file format specifications ==&lt;br /&gt;
&lt;br /&gt;
* [[Format:CDT tape image file format|CDT - tape image file format]]&lt;br /&gt;
* [[Format:CPR CPC Plus cartridge file format|CPR - CPC Plus cartridge file format]]&lt;br /&gt;
* [[Format:DSC disk image file format|DSC - disk image file format]] (hardly used anymore)&lt;br /&gt;
* [[Format:DSK disk image file format|DSK - disk image file format]]&lt;br /&gt;
* [[Format:SNA snapshot file format| SNA - snapshot file format]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Hardware extensions ==&lt;br /&gt;
&lt;br /&gt;
* [[M4_Board|M4-Wifi]]&lt;br /&gt;
* [[Programming:CPC Booster|CPC Booster]]&lt;br /&gt;
* [[Programming:SYMBiFACE II|SYMBiFACE II]]&lt;br /&gt;
* [[Peripherals]] (includes tech info, as far as known)&lt;br /&gt;
&lt;br /&gt;
== Internal Components ==&lt;br /&gt;
&lt;br /&gt;
* [[Default I/O Port Summary]] - map of built-in I/O ports of the CPC&lt;br /&gt;
* [[765 FDC]] - Floppy Disc Controller&lt;br /&gt;
* [[8255]] - PIO - I/O controller&lt;br /&gt;
* [[Arnold V Specs Revised]] - Arnold V (CPC+) Technical Specification&lt;br /&gt;
* [[AY-3-8912]] - Sound chip / keyboard controller&lt;br /&gt;
* [[Cassette data information]] - Information about the cassette storage system&lt;br /&gt;
* [[CRTC]] - Video chip&lt;br /&gt;
* [[Gate Array]] - Custom chip (frequency generation, colors, bank switching)&lt;br /&gt;
* [[Power Supply for CPC and CPC plus]]&lt;br /&gt;
* [[Printer Port]]&lt;br /&gt;
* [[Mainboard Versions]]&lt;br /&gt;
&lt;br /&gt;
== Service Manuals ==&lt;br /&gt;
&lt;br /&gt;
* [[Service Manuals]].&lt;br /&gt;
* [[Soft968:_CPC_464/664/6128_Firmware]].&lt;br /&gt;
&lt;br /&gt;
== Protections ==&lt;br /&gt;
&lt;br /&gt;
* [[8k Speedlock]]&lt;br /&gt;
* [[Alkatraz]]&lt;br /&gt;
* [[Speedlock]]&lt;br /&gt;
* [[Lenslok]]&lt;br /&gt;
&lt;br /&gt;
== Specifications  ==&lt;br /&gt;
&lt;br /&gt;
*[[List of file formats|List of file formats]]&lt;br /&gt;
*[[Format:SGX (SymbOS graphic files)|SGX (SymbOS graphic files)]] &lt;br /&gt;
*[[Format:VID (SymbOS video files)|VID (SymbOS video files)]]&lt;br /&gt;
*[[Emulator IDs|List of Emulator IDs]]&lt;br /&gt;
*[[Class]] definitions of CPCs.&lt;br /&gt;
&lt;br /&gt;
[[Category:Hardware|*]] [[Category:Manual|*]][[Category:CPC Internal Components]][[Category:Cpctech.org]][[Category:Software|*]][[Category:DIY| ]]&lt;/div&gt;</summary>
		<author><name>Roudoudou</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=Technical_documentation&amp;diff=101060</id>
		<title>Technical documentation</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=Technical_documentation&amp;diff=101060"/>
				<updated>2018-03-02T13:44:30Z</updated>
		
		<summary type="html">&lt;p&gt;Roudoudou: /* Hardware extensions */ m4wifi&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;border: 1px solid rgb(228, 222, 222); margin: 0px 0px 5px; padding: 0.5em 1em; background-color: rgb(249, 249, 249);&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''Ongoing project for additional technical documentation: the [[KevArchive|local mirror]] of Kevin Thackers' archive at [http://www.cpctech.org.uk http://www.cpctech.org.uk].''''' &amp;lt;/center&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== BASIC / Firmware / CP/M ==&lt;br /&gt;
&lt;br /&gt;
* [[BIOS Functions]]&lt;br /&gt;
* [[Locomotive BASIC]] (reference for BASIC commands, functions and error messages)&lt;br /&gt;
* [[Technical information about Locomotive BASIC]] (encoding of BASIC programs in memory)&lt;br /&gt;
&lt;br /&gt;
== DIY Hardware Projects ==&lt;br /&gt;
&lt;br /&gt;
Can now be found under [[DIY|DIY &amp;amp; Repair]]&lt;br /&gt;
&lt;br /&gt;
== Built-in connectors: pinout ==&lt;br /&gt;
&lt;br /&gt;
* [[Connector:2nd disc drive (CPC664, CPC6128, CPC6128+)|2nd disc drive (CPC664, CPC6128, CPC6128+)]]&lt;br /&gt;
* [[Connector:Analogue joystick (CPC Plus only)|Analogue joystick (CPC Plus only)]]&lt;br /&gt;
* [[Connector:Aux socket (CPC Plus only)|Aux socket (CPC Plus only)]] (Lightgun)&lt;br /&gt;
* [[Connector:Cartridge Slot (CPC Plus only)|Cartridge Slot (CPC Plus only)]]&lt;br /&gt;
* [[Connector:Cassette recorder|Cassette recorder]]&lt;br /&gt;
* [[Connector:Digital joystick|Digital joystick]]&lt;br /&gt;
* [[Connector:Expansion port|Expansion port]]&lt;br /&gt;
* [[Connector:Monitor|Monitor]]&lt;br /&gt;
* [[Connector:Printer port|Printer port]]&lt;br /&gt;
* [[Connector:Stereo sound|Stereo sound]]&lt;br /&gt;
&lt;br /&gt;
== Emulator file format specifications ==&lt;br /&gt;
&lt;br /&gt;
* [[Format:CDT tape image file format|CDT - tape image file format]]&lt;br /&gt;
* [[Format:CPR CPC Plus cartridge file format|CPR - CPC Plus cartridge file format]]&lt;br /&gt;
* [[Format:DSC disk image file format|DSC - disk image file format]] (hardly used anymore)&lt;br /&gt;
* [[Format:DSK disk image file format|DSK - disk image file format]]&lt;br /&gt;
* [[Format:SNA snapshot file format| SNA - snapshot file format]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Hardware extensions ==&lt;br /&gt;
&lt;br /&gt;
* [[Programming:M4-Wifi|M4_Board]]&lt;br /&gt;
* [[Programming:CPC Booster|CPC Booster]]&lt;br /&gt;
* [[Programming:SYMBiFACE II|SYMBiFACE II]]&lt;br /&gt;
* [[Peripherals]] (includes tech info, as far as known)&lt;br /&gt;
&lt;br /&gt;
== Internal Components ==&lt;br /&gt;
&lt;br /&gt;
* [[Default I/O Port Summary]] - map of built-in I/O ports of the CPC&lt;br /&gt;
* [[765 FDC]] - Floppy Disc Controller&lt;br /&gt;
* [[8255]] - PIO - I/O controller&lt;br /&gt;
* [[Arnold V Specs Revised]] - Arnold V (CPC+) Technical Specification&lt;br /&gt;
* [[AY-3-8912]] - Sound chip / keyboard controller&lt;br /&gt;
* [[Cassette data information]] - Information about the cassette storage system&lt;br /&gt;
* [[CRTC]] - Video chip&lt;br /&gt;
* [[Gate Array]] - Custom chip (frequency generation, colors, bank switching)&lt;br /&gt;
* [[Power Supply for CPC and CPC plus]]&lt;br /&gt;
* [[Printer Port]]&lt;br /&gt;
* [[Mainboard Versions]]&lt;br /&gt;
&lt;br /&gt;
== Service Manuals ==&lt;br /&gt;
&lt;br /&gt;
* [[Service Manuals]].&lt;br /&gt;
* [[Soft968:_CPC_464/664/6128_Firmware]].&lt;br /&gt;
&lt;br /&gt;
== Protections ==&lt;br /&gt;
&lt;br /&gt;
* [[8k Speedlock]]&lt;br /&gt;
* [[Alkatraz]]&lt;br /&gt;
* [[Speedlock]]&lt;br /&gt;
* [[Lenslok]]&lt;br /&gt;
&lt;br /&gt;
== Specifications  ==&lt;br /&gt;
&lt;br /&gt;
*[[List of file formats|List of file formats]]&lt;br /&gt;
*[[Format:SGX (SymbOS graphic files)|SGX (SymbOS graphic files)]] &lt;br /&gt;
*[[Format:VID (SymbOS video files)|VID (SymbOS video files)]]&lt;br /&gt;
*[[Emulator IDs|List of Emulator IDs]]&lt;br /&gt;
*[[Class]] definitions of CPCs.&lt;br /&gt;
&lt;br /&gt;
[[Category:Hardware|*]] [[Category:Manual|*]][[Category:CPC Internal Components]][[Category:Cpctech.org]][[Category:Software|*]][[Category:DIY| ]]&lt;/div&gt;</summary>
		<author><name>Roudoudou</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=Targhan&amp;diff=101059</id>
		<title>Targhan</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=Targhan&amp;diff=101059"/>
				<updated>2018-03-02T13:41:26Z</updated>
		
		<summary type="html">&lt;p&gt;Roudoudou: addons&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Targhan''' (Julien Nevo) is one of the most active french coder and a famous musician. &lt;br /&gt;
&lt;br /&gt;
=== Demos ===&lt;br /&gt;
&lt;br /&gt;
* 2005 : [[DemoIzArt]]&lt;br /&gt;
* 2004 : [[The Midline Process]]&lt;br /&gt;
* 2004 : [[DemoizFart]] - [[Amstrad Expo 2004]] contest (1st place)&lt;br /&gt;
* 2004 : [[Ze Meeting 2003|Ze Meeting 2003 Megademo]]&lt;br /&gt;
* 1999 : [[Pif Paf Pouet Boum]] - [[Byte'99]] contest (1st place)&lt;br /&gt;
* 1999 : [[The Big'O'Full'O'Dem'O]]&lt;br /&gt;
* 1997 : [[Terror under the Xmas tree]]&lt;br /&gt;
&lt;br /&gt;
=== Discmags ===&lt;br /&gt;
 &lt;br /&gt;
* [[Demoniak (discmag)|Demoniak]]&lt;br /&gt;
&lt;br /&gt;
=== Games ===&lt;br /&gt;
* 2016 : [[Imperial Mahjong]]&lt;br /&gt;
* 2009 : [[Orion Prime]]&lt;br /&gt;
* 2005 : [[Ishido]]&lt;br /&gt;
* 1991 : [[Madball]]&lt;br /&gt;
* 1991 : [[Banana Joe]]&lt;br /&gt;
&lt;br /&gt;
=== Tools ===&lt;br /&gt;
&lt;br /&gt;
* 2017 : [[Arkos Tracker II]]&lt;br /&gt;
* 2010 : [[Arkos Tracker]]&lt;br /&gt;
* 2006 : [[Arkos Rom Pack]]&lt;br /&gt;
* 2005 : [[FDC Tools]]&lt;br /&gt;
* 2005 : [[WriteDSK]]&lt;br /&gt;
* 2004 : [[STarKos]]&lt;br /&gt;
* 1999 : [[RASTarKOS]]&lt;br /&gt;
&lt;br /&gt;
=== Weblinks ===&lt;br /&gt;
&lt;br /&gt;
* [http://www.arkos.cpcscene.com Arkos website]&lt;br /&gt;
* [http://www.julien-nevo.com Targhan website]&lt;br /&gt;
&lt;br /&gt;
[[Category:CPC scene members]]&lt;/div&gt;</summary>
		<author><name>Roudoudou</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=Programming:Integer_Multiplication&amp;diff=101057</id>
		<title>Programming:Integer Multiplication</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=Programming:Integer_Multiplication&amp;diff=101057"/>
				<updated>2018-03-01T17:31:55Z</updated>
		
		<summary type="html">&lt;p&gt;Roudoudou: /* 16bit * 16bit Unsigned -&amp;gt; 32 bits result */ forgotten label&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Classic 8bit * 8bit Unsigned ==&lt;br /&gt;
&lt;br /&gt;
'''Input:''' H = ''Multiplier'', E = ''Multiplicand'', L = 0, D = 0&lt;br /&gt;
&lt;br /&gt;
'''Output:''' HL = ''Product''&lt;br /&gt;
&lt;br /&gt;
'''CPC Cycles:''' 188-244 (216 on average) = 47-61 (54) usec&lt;br /&gt;
&lt;br /&gt;
'''Size:''' 33 bytes&lt;br /&gt;
&lt;br /&gt;
The additional clocks and bytes maybe required to set up D and L and for RET.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sla h  ; optimised 1st iteration&lt;br /&gt;
jr nc,$+3&lt;br /&gt;
ld l,e&lt;br /&gt;
&lt;br /&gt;
add hl,hl  ; unroll 7 times&lt;br /&gt;
jr nc,$+3  ; ...&lt;br /&gt;
add hl,de  ; ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Classic 16bit * 8bit Unsigned ==&lt;br /&gt;
&lt;br /&gt;
'''Input:''' A = ''Multiplier'', DE = ''Multiplicand'', HL = 0, C = 0&lt;br /&gt;
&lt;br /&gt;
'''Output:''' A:HL = ''Product''&lt;br /&gt;
&lt;br /&gt;
'''CPC Cycles:''' 212-300 (256 on average) = 53-75 (64) usec&lt;br /&gt;
&lt;br /&gt;
'''Size:''' 47 bytes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
add a,a  ; optimised 1st iteration&lt;br /&gt;
jr nc,$+4&lt;br /&gt;
ld h,d&lt;br /&gt;
ld l,e&lt;br /&gt;
&lt;br /&gt;
add hl,hl  ; unroll 7 times&lt;br /&gt;
rla   ; ...&lt;br /&gt;
jr nc,$+4  ; ...&lt;br /&gt;
add hl,de  ; ...&lt;br /&gt;
adc a,c  ; ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Fast 8bit * 8bit Unsigned (using log / antilog tables) ==&lt;br /&gt;
&lt;br /&gt;
The original routine was written by Jeff Frohwein for the Nintendo Gameboy. You can find it on [http://www.devrs.com/gb/files/logmult.txt Devrs.com].&lt;br /&gt;
&lt;br /&gt;
Because of the usage of log / antilog tables this routine is less accurate, but very fast. It takes advantage of the fact that if you take the log of two numbers, add the results and then take the antilog of the total you have done the equivalent of multiplying the two numbers:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 x^a * x^b = x^(a+b)&lt;br /&gt;
&lt;br /&gt;
 a * b = x^(logx(a) + logx(b))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Input:''' B = ''Multiplier'', C = ''Multiplicant''&lt;br /&gt;
&lt;br /&gt;
'''Output:''' DE = ''Product''&lt;br /&gt;
&lt;br /&gt;
'''CPC Cycles:''' 124 = 31 usec&lt;br /&gt;
&lt;br /&gt;
'''Size:''' 1024 bytes (768 bytes for the tables)&lt;br /&gt;
&lt;br /&gt;
'''Warning:''' It is VERY approximate routine, e.g., 0*7=7, 1*28=27, 10*81=790, 100*100=9742, ...&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FastMult:&lt;br /&gt;
  ld      l,c&lt;br /&gt;
  ld      h,&amp;amp;82&lt;br /&gt;
  ld      d,(hl)          ; d = 32 * log_2(c)&lt;br /&gt;
  &lt;br /&gt;
  ld      l,b&lt;br /&gt;
  ld      a,(hl)          ; a = 32 * log_2(b)&lt;br /&gt;
  &lt;br /&gt;
  add     a,d&lt;br /&gt;
  ld      l,a&lt;br /&gt;
  ld      a,0&lt;br /&gt;
  adc     a,0&lt;br /&gt;
  ld      h,a             ; hl = d + a&lt;br /&gt;
  &lt;br /&gt;
  add     hl,hl&lt;br /&gt;
  set     2,h             ; hl = hl + $0400&lt;br /&gt;
  set     7,h             ; hl = hl + &amp;amp;8000&lt;br /&gt;
  &lt;br /&gt;
  ld      e,(hl)&lt;br /&gt;
  inc     hl&lt;br /&gt;
  ld      d,(hl)          ; de = 2^((hl)/32)&lt;br /&gt;
  &lt;br /&gt;
  ret&lt;br /&gt;
&lt;br /&gt;
; 32*Log_2(x) Table&lt;br /&gt;
;&lt;br /&gt;
;   FOR A=0 TO 255&lt;br /&gt;
;     C=4 &lt;br /&gt;
;     B=2&lt;br /&gt;
;     FOR Z=1 TO 10&lt;br /&gt;
;       IF (2^C) &amp;gt; A THEN C=C-B ELSE C=C+B&lt;br /&gt;
;       B=B/2&lt;br /&gt;
;     NEXT Z&lt;br /&gt;
;     PRINT INT(C*32);&amp;quot;,&amp;quot;;&lt;br /&gt;
;   NEXT A&lt;br /&gt;
ORG &amp;amp;8200&lt;br /&gt;
&lt;br /&gt;
logtable:&lt;br /&gt;
  db 0 , 0 , 32 , 50 , 64 , 74 , 82 , 89 , 96 , 101 , 106 , 110 , 114 , 118 , 121&lt;br /&gt;
  db 125 , 128 , 130 , 133 , 135 , 138 , 140 , 142 , 144 , 146 , 148 , 150 , 152&lt;br /&gt;
  db 153 , 155 , 157 , 158 , 160 , 161 , 162 , 164 , 165 , 166 , 167 , 169 , 170&lt;br /&gt;
  db 171 , 172 , 173 , 174 , 175 , 176 , 177 , 178 , 179 , 180 , 181 , 182 , 183&lt;br /&gt;
  db 184 , 185 , 185 , 186 , 187 , 188 , 189 , 189 , 190 , 191 , 192 , 192 , 193&lt;br /&gt;
  db 194 , 194 , 195 , 196 , 196 , 197 , 198 , 198 , 199 , 199 , 200 , 201 , 201&lt;br /&gt;
  db 202 , 202 , 203 , 204 , 204 , 205 , 205 , 206 , 206 , 207 , 207 , 208 , 208&lt;br /&gt;
  db 209 , 209 , 210 , 210 , 211 , 211 , 212 , 212 , 213 , 213 , 213 , 214 , 214&lt;br /&gt;
  db 215 , 215 , 216 , 216 , 217 , 217 , 217 , 218 , 218 , 219 , 219 , 219 , 220&lt;br /&gt;
  db 220 , 221 , 221 , 221 , 222 , 222 , 222 , 223 , 223 , 224 , 224 , 224 , 225&lt;br /&gt;
  db 225 , 225 , 226 , 226 , 226 , 227 , 227 , 227 , 228 , 228 , 228 , 229 , 229&lt;br /&gt;
  db 229 , 230 , 230 , 230 , 231 , 231 , 231 , 231 , 232 , 232 , 232 , 233 , 233&lt;br /&gt;
  db 233 , 234 , 234 , 234 , 234 , 235 , 235 , 235 , 236 , 236 , 236 , 236 , 237&lt;br /&gt;
  db 237 , 237 , 237 , 238 , 238 , 238 , 238 , 239 , 239 , 239 , 239 , 240 , 240&lt;br /&gt;
  db 240 , 241 , 241 , 241 , 241 , 241 , 242 , 242 , 242 , 242 , 243 , 243 , 243&lt;br /&gt;
  db 243 , 244 , 244 , 244 , 244 , 245 , 245 , 245 , 245 , 245 , 246 , 246 , 246&lt;br /&gt;
  db 246 , 247 , 247 , 247 , 247 , 247 , 248 , 248 , 248 , 248 , 249 , 249 , 249&lt;br /&gt;
  db 249 , 249 , 250 , 250 , 250 , 250 , 250 , 251 , 251 , 251 , 251 , 251 , 252&lt;br /&gt;
  db 252 , 252 , 252 , 252 , 253 , 253 , 253 , 253 , 253 , 253 , 254 , 254 , 254&lt;br /&gt;
  db 254 , 254 , 255 , 255 , 255 , 255 , 255&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; AntiLog 2^(x/32) Table&lt;br /&gt;
;&lt;br /&gt;
;   FOR A=0 to 510&lt;br /&gt;
;   PRINT INT(2^(A/32)+.5);&amp;quot;,&amp;quot;;&lt;br /&gt;
;   NEXT A&lt;br /&gt;
ORG &amp;amp;8400&lt;br /&gt;
&lt;br /&gt;
antilog:&lt;br /&gt;
  dw 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 2&lt;br /&gt;
  dw 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2&lt;br /&gt;
  dw 2 , 2 , 2 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 4 , 4&lt;br /&gt;
  dw 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 6&lt;br /&gt;
  dw 6 , 6 , 6 , 6 , 6 , 6 , 6 , 7 , 7 , 7 , 7 , 7 , 7 , 7 , 8 , 8 , 8 , 8 , 8 , 9&lt;br /&gt;
  dw 9 , 9 , 9 , 9 , 10 , 10 , 10 , 10 , 10 , 11 , 11 , 11 , 11 , 12 , 12 , 12 , 12&lt;br /&gt;
  dw 13 , 13 , 13 , 13 , 14 , 14 , 14 , 15 , 15 , 15 , 16 , 16 , 16 , 17 , 17 , 17&lt;br /&gt;
  dw 18 , 18 , 19 , 19 , 19 , 20 , 20 , 21 , 21 , 22 , 22 , 23 , 23 , 24 , 24 , 25&lt;br /&gt;
  dw 25 , 26 , 26 , 27 , 27 , 28 , 29 , 29 , 30 , 31 , 31 , 32 , 33 , 33 , 34 , 35&lt;br /&gt;
  dw 36 , 36 , 37 , 38 , 39 , 40 , 41 , 41 , 42 , 43 , 44 , 45 , 46 , 47 , 48 , 49&lt;br /&gt;
  dw 50 , 52 , 53 , 54 , 55 , 56 , 57 , 59 , 60 , 61 , 63 , 64 , 65 , 67 , 68 , 70&lt;br /&gt;
  dw 71 , 73 , 74 , 76 , 78 , 79 , 81 , 83 , 85 , 87 , 89 , 91 , 92 , 95 , 97 , 99&lt;br /&gt;
  dw 101 , 103 , 105 , 108 , 110 , 112 , 115 , 117 , 120 , 123 , 125 , 128 , 131&lt;br /&gt;
  dw 134 , 137 , 140 , 143 , 146 , 149 , 152 , 156 , 159 , 162 , 166 , 170 , 173&lt;br /&gt;
  dw 177 , 181 , 185 , 189 , 193 , 197 , 202 , 206 , 211 , 215 , 220 , 225 , 230&lt;br /&gt;
  dw 235 , 240 , 245 , 251 , 256 , 262 , 267 , 273 , 279 , 285 , 292 , 298 , 304&lt;br /&gt;
  dw 311 , 318 , 325 , 332 , 339 , 347 , 354 , 362 , 370 , 378 , 386 , 395 , 403&lt;br /&gt;
  dw 412 , 421 , 431 , 440 , 450 , 459 , 470 , 480 , 490 , 501 , 512 , 523 , 535&lt;br /&gt;
  dw 546 , 558 , 571 , 583 , 596 , 609 , 622 , 636 , 650 , 664 , 679 , 693 , 709&lt;br /&gt;
  dw 724 , 740 , 756 , 773 , 790 , 807 , 825 , 843 , 861 , 880 , 899 , 919 , 939&lt;br /&gt;
  dw 960 , 981 , 1002 , 1024 , 1046 , 1069 , 1093 , 1117 , 1141 , 1166 , 1192&lt;br /&gt;
  dw 1218 , 1244 , 1272 , 1300 , 1328 , 1357 , 1387 , 1417 , 1448 , 1480 , 1512&lt;br /&gt;
  dw 1545 , 1579 , 1614 , 1649 , 1685 , 1722 , 1760 , 1798 , 1838 , 1878 , 1919&lt;br /&gt;
  dw 1961 , 2004 , 2048 , 2093 , 2139 , 2186 , 2233 , 2282 , 2332 , 2383 , 2435&lt;br /&gt;
  dw 2489 , 2543 , 2599 , 2656 , 2714 , 2774 , 2834 , 2896 , 2960 , 3025 , 3091&lt;br /&gt;
  dw 3158 , 3228 , 3298 , 3371 , 3444 , 3520 , 3597 , 3676 , 3756 , 3838 , 3922&lt;br /&gt;
  dw 4008 , 4096 , 4186 , 4277 , 4371 , 4467 , 4565 , 4664 , 4767 , 4871 , 4978&lt;br /&gt;
  dw 5087 , 5198 , 5312 , 5428 , 5547 , 5668 , 5793 , 5919 , 6049 , 6182 , 6317&lt;br /&gt;
  dw 6455 , 6597 , 6741 , 6889 , 7039 , 7194 , 7351 , 7512 , 7677 , 7845 , 8016&lt;br /&gt;
  dw 8192 , 8371 , 8555 , 8742 , 8933 , 9129 , 9329 , 9533 , 9742 , 9955 , 10173&lt;br /&gt;
  dw 10396 , 10624 , 10856 , 11094 , 11337 , 11585 , 11839 , 12098 , 12363 , 12634&lt;br /&gt;
  dw 12910 , 13193 , 13482 , 13777 , 14079 , 14387 , 14702 , 15024 , 15353 , 15689&lt;br /&gt;
  dw 16033 , 16384 , 16743 , 17109 , 17484 , 17867 , 18258 , 18658 , 19066 , 19484&lt;br /&gt;
  dw 19911 , 20347 , 20792 , 21247 , 21713 , 22188 , 22674 , 23170 , 23678 , 24196&lt;br /&gt;
  dw 24726 , 25268 , 25821 , 26386 , 26964 , 27554 , 28158 , 28774 , 29404 , 30048&lt;br /&gt;
  dw 30706 , 31379 , 32066 , 32768 , 33485 , 34219 , 34968 , 35734 , 36516 , 37316&lt;br /&gt;
  dw 38133 , 38968 , 39821 , 40693 , 41584 , 42495 , 43425 , 44376 , 45348 , 46341&lt;br /&gt;
  dw 47356 , 48393 , 49452 , 50535 , 51642 , 52772 , 53928 , 55109 , 56316 , 57549&lt;br /&gt;
  dw  58809 , 60097 , 61413 , 62757&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Fastest, accurate 8bit * 8bit Unsigned  with 16 KB tables ==&lt;br /&gt;
&lt;br /&gt;
'''Input:''' L = Multiplier, C = Multiplicand&lt;br /&gt;
&lt;br /&gt;
'''Output:''' DE = Product&lt;br /&gt;
&lt;br /&gt;
'''CPC Cycles:''' 80 = 20 usec&lt;br /&gt;
&lt;br /&gt;
'''Size:''' 14 bytes of code + 16 KB tables&lt;br /&gt;
&lt;br /&gt;
I'm currently working on a new routine, based on a routine by Kirk Meyer [http://www.ticalc.org/pub/86/asm/source/routines/vfmult.asm] which uses nibble multiplication tables.&lt;br /&gt;
&lt;br /&gt;
I have a working, tested version which uses 16K of tables and can perform multiplication in 20&amp;amp;mu;s.&lt;br /&gt;
&lt;br /&gt;
The code to produce the tables is below:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
.maketabs&lt;br /&gt;
ld hl,hltab1&lt;br /&gt;
.makelp1&lt;br /&gt;
ld a,l&lt;br /&gt;
rla&lt;br /&gt;
and #1e&lt;br /&gt;
add restab / 256&lt;br /&gt;
ld (hl),a&lt;br /&gt;
inc l&lt;br /&gt;
jr nz,makelp1&lt;br /&gt;
inc h&lt;br /&gt;
.makelp2&lt;br /&gt;
ld a,l&lt;br /&gt;
rra:rra:rra&lt;br /&gt;
and #1e&lt;br /&gt;
jr z,usez&lt;br /&gt;
add restab2 - restab / 256 - 2&lt;br /&gt;
.usez&lt;br /&gt;
add restab / 256&lt;br /&gt;
ld (hl),a&lt;br /&gt;
inc l&lt;br /&gt;
jr nz,makelp2&lt;br /&gt;
inc h			; restab&lt;br /&gt;
.makelp3&lt;br /&gt;
ld a,(hl)&lt;br /&gt;
inc h&lt;br /&gt;
ld d,(hl)&lt;br /&gt;
inc h&lt;br /&gt;
add l&lt;br /&gt;
ld (hl),a&lt;br /&gt;
inc h&lt;br /&gt;
ld a,0&lt;br /&gt;
adc d&lt;br /&gt;
ld (hl),a&lt;br /&gt;
dec h:dec h:dec h&lt;br /&gt;
inc l&lt;br /&gt;
jr nz,makelp3&lt;br /&gt;
inc h&lt;br /&gt;
inc h&lt;br /&gt;
ld a,h&lt;br /&gt;
cp restab2 / 256 - 2&lt;br /&gt;
jr nz,makelp3&lt;br /&gt;
ld b,h&lt;br /&gt;
ld c,l&lt;br /&gt;
inc b&lt;br /&gt;
inc b&lt;br /&gt;
ld h,restab / 256 + 2&lt;br /&gt;
.makelp4&lt;br /&gt;
ld e,(hl)&lt;br /&gt;
inc h&lt;br /&gt;
ld d,(hl)&lt;br /&gt;
dec h&lt;br /&gt;
ex de,hl&lt;br /&gt;
add hl,hl:add hl,hl:add hl,hl:add hl,hl&lt;br /&gt;
ex de,hl&lt;br /&gt;
ld a,e&lt;br /&gt;
ld (bc),a&lt;br /&gt;
inc b&lt;br /&gt;
ld a,d&lt;br /&gt;
ld (bc),a&lt;br /&gt;
dec b&lt;br /&gt;
inc l&lt;br /&gt;
inc c&lt;br /&gt;
jr nz,makelp4&lt;br /&gt;
inc h&lt;br /&gt;
inc h&lt;br /&gt;
inc b&lt;br /&gt;
inc b&lt;br /&gt;
ld a,h&lt;br /&gt;
cp restab2 / 256&lt;br /&gt;
jr nz,makelp4&lt;br /&gt;
ret&lt;br /&gt;
&lt;br /&gt;
ds -$ and #ff&lt;br /&gt;
.hltab1&lt;br /&gt;
ds 256&lt;br /&gt;
.hltab2&lt;br /&gt;
ds 256&lt;br /&gt;
.restab&lt;br /&gt;
ds 512 * 16&lt;br /&gt;
.restab2&lt;br /&gt;
ds 512 * 15&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The code to perform the multiplication (DE = L * C):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ld h,hltab1 / 256	; 2&lt;br /&gt;
ld b,(hl)		; 4&lt;br /&gt;
inc h			; 5&lt;br /&gt;
ld h,(hl)		; 7&lt;br /&gt;
ld l,c			; 8&lt;br /&gt;
ld a,(bc)		; 10&lt;br /&gt;
add (hl)		; 12&lt;br /&gt;
ld e,a			; 13&lt;br /&gt;
inc b			; 14&lt;br /&gt;
inc h			; 15&lt;br /&gt;
ld a,(bc)		; 17&lt;br /&gt;
adc (hl)		; 19&lt;br /&gt;
ld d,a			; 20&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Fast, accurate 8bit * 8bit Unsigned  with 8 KB tables ==&lt;br /&gt;
&lt;br /&gt;
'''Input:''' L = Multiplier, C = Multiplicand&lt;br /&gt;
&lt;br /&gt;
'''Output:''' DE = Product&lt;br /&gt;
&lt;br /&gt;
'''CPC Cycles:''' 100 = 25 usec&lt;br /&gt;
&lt;br /&gt;
'''Size:''' 19 bytes of code + 8 KB tables&lt;br /&gt;
&lt;br /&gt;
16K is a lot of memory to use for tables, but I'm working on a way to reduce this to 8K while maintaining similar performance (around 26&amp;amp;mu;s). The idea is rather than using tables for the low and high nibbles, use tables for alternate bits. So there would be 16 tables for the values #00, #01, #04, #05, #10, #11, #14, #15, #40, #41, #44, #45, #50, #51, #54, #55. The values can be shifted by 1 (rather than 4) to give values for the alternate bits using a simple ADD HL,HL.&lt;br /&gt;
&lt;br /&gt;
This routine should be easy to adapt to a 16bit * 8bit unsigned multiplication or even a 16bit * 16bit, using simple additions.&lt;br /&gt;
&lt;br /&gt;
[[User:Executioner|Executioner]] 03:58, 8 May 2007 (CEST)&lt;br /&gt;
&lt;br /&gt;
Ok, here is the new 8K routine, first the routine to build the tables:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
.maketabs&lt;br /&gt;
ld hl,hltab1&lt;br /&gt;
.makelp5&lt;br /&gt;
ld a,l&lt;br /&gt;
ld bc,0&lt;br /&gt;
rla:rl b:rla:rl c&lt;br /&gt;
rla:rl b:rla:rl c&lt;br /&gt;
rla:rl b:rla:rl c&lt;br /&gt;
rla:rl b:rla:rl c&lt;br /&gt;
ld a,b&lt;br /&gt;
add a&lt;br /&gt;
add restab / 256&lt;br /&gt;
ld (hl),a&lt;br /&gt;
inc h&lt;br /&gt;
ld a,c&lt;br /&gt;
add a&lt;br /&gt;
add restab / 256&lt;br /&gt;
ld (hl),a&lt;br /&gt;
dec h&lt;br /&gt;
inc l&lt;br /&gt;
jr nz,makelp5&lt;br /&gt;
ld h,restab / 256 + 2&lt;br /&gt;
.makelp6&lt;br /&gt;
ld (hl),l&lt;br /&gt;
inc l&lt;br /&gt;
jr nz,makelp6&lt;br /&gt;
inc h:inc h&lt;br /&gt;
ld b,2&lt;br /&gt;
.makelp8&lt;br /&gt;
push bc&lt;br /&gt;
xor a&lt;br /&gt;
rr b:rra:rrca&lt;br /&gt;
rr b:rra:rrca&lt;br /&gt;
rr b:rra:rrca&lt;br /&gt;
rr b:rra:rrca&lt;br /&gt;
.makelp7&lt;br /&gt;
push hl&lt;br /&gt;
push af&lt;br /&gt;
call mulLbyA&lt;br /&gt;
ex de,hl&lt;br /&gt;
pop af&lt;br /&gt;
pop hl&lt;br /&gt;
ld (hl),e&lt;br /&gt;
inc h&lt;br /&gt;
ld (hl),d&lt;br /&gt;
dec h&lt;br /&gt;
inc l&lt;br /&gt;
jr nz,makelp7&lt;br /&gt;
inc h:inc h&lt;br /&gt;
pop bc&lt;br /&gt;
inc b&lt;br /&gt;
bit 4,b&lt;br /&gt;
jr z,makelp8&lt;br /&gt;
ret&lt;br /&gt;
&lt;br /&gt;
.mulLbyA	; MAX times	; MIN times&lt;br /&gt;
ld e,l		; 1		; 1&lt;br /&gt;
ld d,0		; 3		; 3&lt;br /&gt;
add a		; 4		; 4&lt;br /&gt;
ld h,a		; 5		; 5&lt;br /&gt;
jr c,ncad0	; 8		; 8&lt;br /&gt;
ld l,d		&lt;br /&gt;
.ncad0&lt;br /&gt;
add hl,hl	; 11		; 11&lt;br /&gt;
jr nc,ncad1	; 13		; 14&lt;br /&gt;
add hl,de	; 16&lt;br /&gt;
.ncad1&lt;br /&gt;
add hl,hl	; 19		; 17&lt;br /&gt;
jr nc,ncad2	; 21		; 20&lt;br /&gt;
add hl,de	; 24&lt;br /&gt;
.ncad2&lt;br /&gt;
add hl,hl	; 27		; 23&lt;br /&gt;
jr nc,ncad3	; 29		; 26&lt;br /&gt;
add hl,de	; 32&lt;br /&gt;
.ncad3&lt;br /&gt;
add hl,hl	; 35		; 29&lt;br /&gt;
jr nc,ncad4	; 37		; 32&lt;br /&gt;
add hl,de	; 40&lt;br /&gt;
.ncad4&lt;br /&gt;
add hl,hl	; 43		; 35&lt;br /&gt;
jr nc,ncad5	; 45		; 38&lt;br /&gt;
add hl,de	; 48&lt;br /&gt;
.ncad5&lt;br /&gt;
add hl,hl	; 51		; 41&lt;br /&gt;
jr nc,ncad6	; 53		; 44&lt;br /&gt;
add hl,de	; 56&lt;br /&gt;
.ncad6&lt;br /&gt;
add hl,hl	; 59		; 47&lt;br /&gt;
ld a,h		; 60		; 48&lt;br /&gt;
ret nc		; 61		; 50?&lt;br /&gt;
add hl,de	; 64&lt;br /&gt;
ld a,h		; 65&lt;br /&gt;
ret&lt;br /&gt;
&lt;br /&gt;
ds -$ and #ff&lt;br /&gt;
&lt;br /&gt;
.hltab1&lt;br /&gt;
ds 256&lt;br /&gt;
.hltab2&lt;br /&gt;
ds 256&lt;br /&gt;
.restab&lt;br /&gt;
ds 512 * 16&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And the routine to do the multiplication:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
.umultCL		; Using 8 bit only (25us - DE = L * C)&lt;br /&gt;
ld h,hltab2 / 256	; 2&lt;br /&gt;
ld b,(hl)		; 4&lt;br /&gt;
dec h			; 5&lt;br /&gt;
ld h,(hl)		; 7&lt;br /&gt;
ld l,c			; 8&lt;br /&gt;
ld a,(hl)		; 10&lt;br /&gt;
add a			; 11&lt;br /&gt;
inc h			; 12&lt;br /&gt;
ld d,(hl)		; 14&lt;br /&gt;
rl d			; 16&lt;br /&gt;
ld h,b			; 17&lt;br /&gt;
add (hl)		; 19&lt;br /&gt;
ld e,a			; 20&lt;br /&gt;
inc h			; 21&lt;br /&gt;
ld a,(hl)		; 23&lt;br /&gt;
adc d			; 24&lt;br /&gt;
ld d,a			; 25&lt;br /&gt;
ret&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Very fast 8bit * 8bit Unsigned with only 1K of tables ==&lt;br /&gt;
&lt;br /&gt;
'''Input:''' A = ''Multiplier'', L = ''Multiplicand''&lt;br /&gt;
&lt;br /&gt;
'''Output:''' DE = ''Product''&lt;br /&gt;
&lt;br /&gt;
'''CPC Cycles''': 104-112 (108 on average) = 26-28 (27) usec&lt;br /&gt;
&lt;br /&gt;
'''Size''': 24 bytes of code and 1024 bytes for the tables&lt;br /&gt;
&lt;br /&gt;
Here's a new routine I've developed which uses the formula ab = ((a + b)&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; - (a - b)&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;) / 4. It's based on a routine for the 6502 by Stephen Judd in a C= Hacking article. Because of differences between the way the 6502 does register indexing it was quite difficult to actually get this working, but it's a great compromise between speed and space since it only uses 1K of tables (as opposed to the 16K or 8K table routines above), and can still manage to do the job in a maximum of 28 microseconds.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Firstly, once again, we need some code to generate the tables. These tables contain values for&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;x&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;/4 for 9 bit values of x, with the LSB when bit 8 is zero first followed by the MSB.&lt;br /&gt;
&amp;lt;pre&amp;gt;.gen_sq4&lt;br /&gt;
	xor a&lt;br /&gt;
	ld de,umul_tab + #1ff&lt;br /&gt;
	ld (de),a&lt;br /&gt;
	dec d&lt;br /&gt;
	ld (de),a&lt;br /&gt;
	ld h,d&lt;br /&gt;
	ld l,e&lt;br /&gt;
	inc e&lt;br /&gt;
	ld c,e&lt;br /&gt;
	ld b,2&lt;br /&gt;
&lt;br /&gt;
	.sq4_lp&lt;br /&gt;
	ld a,b&lt;br /&gt;
	cp 2&lt;br /&gt;
	ld a,e&lt;br /&gt;
	rra&lt;br /&gt;
	add (hl)&lt;br /&gt;
	ld (de),a&lt;br /&gt;
	inc h&lt;br /&gt;
	inc d&lt;br /&gt;
	ld a,(hl)&lt;br /&gt;
	adc c&lt;br /&gt;
	ld (de),a&lt;br /&gt;
	dec d&lt;br /&gt;
	ld h,d&lt;br /&gt;
	inc l&lt;br /&gt;
	inc e&lt;br /&gt;
	jr nz,sq4_lp&lt;br /&gt;
	inc d&lt;br /&gt;
	inc d&lt;br /&gt;
	djnz sq4_lp&lt;br /&gt;
	ret&lt;br /&gt;
&lt;br /&gt;
align #100&lt;br /&gt;
.umul_tab ds #400&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Now for the actual multiply routine:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	ld h,umul_tab_lo / #100	; 2&lt;br /&gt;
	ld b,h			; 3&lt;br /&gt;
	add l			; 4&lt;br /&gt;
	ld c,a			; 5&lt;br /&gt;
	jr nc,@noovf		; 7&lt;br /&gt;
	inc b			; 8&lt;br /&gt;
	inc b			; 9&lt;br /&gt;
.@noovf&lt;br /&gt;
	sub l			; 10&lt;br /&gt;
	sub l			; 11&lt;br /&gt;
	jr nc,@noneg		; 13&lt;br /&gt;
	neg			; 15&lt;br /&gt;
.@noneg&lt;br /&gt;
	ld l,a			; 16&lt;br /&gt;
	ld a,(bc)		; 18&lt;br /&gt;
	sub (hl)		; 20&lt;br /&gt;
	ld e,a			; 21&lt;br /&gt;
	inc b			; 22&lt;br /&gt;
	inc h			; 23&lt;br /&gt;
	ld a,(bc)		; 25&lt;br /&gt;
	sbc (hl)		; 27&lt;br /&gt;
	ld d,a			; 28&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This code could easily be converted to a macro as it's only 24 bytes. I've tried to optimize it further but with no luck!&lt;br /&gt;
&lt;br /&gt;
[[User:Executioner|Executioner]] 06:25, 4 April 2008 (CEST)&lt;br /&gt;
&lt;br /&gt;
== Fast 8bit * 8bit Unsigned with only 512 bytes of tables ==&lt;br /&gt;
&lt;br /&gt;
'''Input''': A = Multiplier, B = Multiplicant&lt;br /&gt;
&lt;br /&gt;
'''Output''': A:E = Product&lt;br /&gt;
&lt;br /&gt;
'''CPC Cycles''': 136-172 (154 on average) = 34-43 (38.5) usec&lt;br /&gt;
&lt;br /&gt;
'''Size''': 44 bytes of code and 512 bytes for the tables&lt;br /&gt;
&lt;br /&gt;
Fast 8 bit unsigned multiplication with 16 bit result. It uses formula&lt;br /&gt;
&amp;lt;br&amp;gt;x*y = ((x+y)/2)&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; - ((x-y)/2)&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;, if x+y is even&lt;br /&gt;
&amp;lt;br&amp;gt;      = ((x+y-1)/2)&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; - ((x-y-1)/2)&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; + y, if x+y is odd and x&amp;gt;=y&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;    cp b&lt;br /&gt;
    jr nc,l1&lt;br /&gt;
&lt;br /&gt;
    ld e,a&lt;br /&gt;
    ld a,b&lt;br /&gt;
    ld b,e&lt;br /&gt;
&lt;br /&gt;
l1  ld c,a&lt;br /&gt;
    sub b&lt;br /&gt;
    rra&lt;br /&gt;
    ld d,a&lt;br /&gt;
    ld a,c&lt;br /&gt;
    add a,b&lt;br /&gt;
    rra&lt;br /&gt;
    ld l,a&lt;br /&gt;
    ld h,high(sqrlo)&lt;br /&gt;
    ld a,(hl)&lt;br /&gt;
    ld e,l&lt;br /&gt;
    ld l,d&lt;br /&gt;
    jr nc,l2&lt;br /&gt;
&lt;br /&gt;
    sub (hl)   ;odd&lt;br /&gt;
    ld l,e&lt;br /&gt;
    ld e,a&lt;br /&gt;
    inc h      ;loads high(sqrhi)&lt;br /&gt;
    ld a,(hl)&lt;br /&gt;
    ld l,d&lt;br /&gt;
    sbc a,(hl)&lt;br /&gt;
    ld d,a&lt;br /&gt;
&lt;br /&gt;
    ld a,e&lt;br /&gt;
    add a,b&lt;br /&gt;
    ld e,a&lt;br /&gt;
    ld a,d&lt;br /&gt;
    adc a,0&lt;br /&gt;
    ret&lt;br /&gt;
&lt;br /&gt;
l2  sub (hl)   ;even&lt;br /&gt;
    ld l,e&lt;br /&gt;
    ld e,a&lt;br /&gt;
    inc h&lt;br /&gt;
    ld a,(hl)&lt;br /&gt;
    ld l,d&lt;br /&gt;
    sbc a,(hl)&lt;br /&gt;
    ret&lt;br /&gt;
&lt;br /&gt;
sqrlo ;low(x*x)   should be at the page border&lt;br /&gt;
    db 0,1,4,9,$10,$19,$24,$31,$40,$51,$64,$79,$90,$a9,$c4,$e1&lt;br /&gt;
    db 0,$21,$44,$69,$90,$b9,$e4,$11,$40,$71,$a4,$d9,$10,$49,$84,$c1&lt;br /&gt;
    db 0,$41,$84,$c9,$10,$59,$a4,$f1,$40,$91,$e4,$39,$90,$e9,$44,$a1&lt;br /&gt;
    db 0,$61,$c4,$29,$90,$f9,$64,$d1,$40,$b1,$24,$99,$10,$89,4,$81&lt;br /&gt;
    db 0,$81,4,$89,$10,$99,$24,$b1,$40,$d1,$64,$f9,$90,$29,$c4,$61&lt;br /&gt;
    db 0,$a1,$44,$e9,$90,$39,$e4,$91,$40,$f1,$a4,$59,$10,$c9,$84,$41&lt;br /&gt;
    db 0,$c1,$84,$49,$10,$d9,$a4,$71,$40,$11,$e4,$b9,$90,$69,$44,$21&lt;br /&gt;
    db 0,$e1,$c4,$a9,$90,$79,$64,$51,$40,$31,$24,$19,$10,9,4,$1&lt;br /&gt;
    db 0,1,4,9,$10,$19,$24,$31,$40,$51,$64,$79,$90,$a9,$c4,$e1&lt;br /&gt;
    db 0,$21,$44,$69,$90,$b9,$e4,$11,$40,$71,$a4,$d9,$10,$49,$84,$c1&lt;br /&gt;
    db 0,$41,$84,$c9,$10,$59,$a4,$f1,$40,$91,$e4,$39,$90,$e9,$44,$a1&lt;br /&gt;
    db 0,$61,$c4,$29,$90,$f9,$64,$d1,$40,$b1,$24,$99,$10,$89,4,$81&lt;br /&gt;
    db 0,$81,4,$89,$10,$99,$24,$b1,$40,$d1,$64,$f9,$90,$29,$c4,$61&lt;br /&gt;
    db 0,$a1,$44,$e9,$90,$39,$e4,$91,$40,$f1,$a4,$59,$10,$c9,$84,$41&lt;br /&gt;
    db 0,$c1,$84,$49,$10,$d9,$a4,$71,$40,$11,$e4,$b9,$90,$69,$44,$21&lt;br /&gt;
    db 0,$e1,$c4,$a9,$90,$79,$64,$51,$40,$31,$24,$19,$10,9,4,$1&lt;br /&gt;
sqrhi ;high(x*x)&lt;br /&gt;
    db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0&lt;br /&gt;
    db 1,1,1,1,1,1,1,2,2,2,2,2,3,3,3,3&lt;br /&gt;
    db 4,4,4,4,5,5,5,5,6,6,6,7,7,7,8,8&lt;br /&gt;
    db 9,9,9,$a,$a,$a,$b,$b,$c,$c,$d,$d,$e,$e,$f,$f&lt;br /&gt;
    db $10,$10,$11,$11,$12,$12,$13,$13,$14,$14,$15,$15,$16,$17,$17,$18&lt;br /&gt;
    db $19,$19,$1a,$1a,$1b,$1c,$1c,$1d,$1e,$1e,$1f,$20,$21,$21,$22,$23&lt;br /&gt;
    db $24,$24,$25,$26,$27,$27,$28,$29,$2a,$2b,$2b,$2c,$2d,$2e,$2f,$30&lt;br /&gt;
    db $31,$31,$32,$33,$34,$35,$36,$37,$38,$39,$3a,$3b,$3c,$3d,$3e,$3f&lt;br /&gt;
    db $40,$41,$42,$43,$44,$45,$46,$47,$48,$49,$4a,$4b,$4c,$4d,$4e,$4f&lt;br /&gt;
    db $51,$52,$53,$54,$55,$56,$57,$59,$5a,$5b,$5c,$5d,$5f,$60,$61,$62&lt;br /&gt;
    db $64,$65,$66,$67,$69,$6a,$6b,$6c,$6e,$6f,$70,$72,$73,$74,$76,$77&lt;br /&gt;
    db $79,$7a,$7b,$7d,$7e,$7f,$81,$82,$84,$85,$87,$88,$8a,$8b,$8d,$8e&lt;br /&gt;
    db $90,$91,$93,$94,$96,$97,$99,$9a,$9c,$9d,$9f,$a0,$a2,$a4,$a5,$a7&lt;br /&gt;
    db $a9,$aa,$ac,$ad,$af,$b1,$b2,$b4,$b6,$b7,$b9,$bb,$bd,$be,$c0,$c2&lt;br /&gt;
    db $c4,$c5,$c7,$c9,$cb,$cc,$ce,$d0,$d2,$d4,$d5,$d7,$d9,$db,$dd,$df&lt;br /&gt;
    db $e1,$e2,$e4,$e6,$e8,$ea,$ec,$ee,$f0,$f2,$f4,$f6,$f8,$fa,$fc,$fe&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[User:Litwr|Litwr]] 10:25, 24 October 2015 (CEST)&lt;br /&gt;
&lt;br /&gt;
== 16bit * 16bit Unsigned -&amp;gt; 32 bits result ==&lt;br /&gt;
&lt;br /&gt;
'''Input:''' BC = ''Multiplier'', DE = ''Multiplicand''&lt;br /&gt;
&lt;br /&gt;
'''Output:''' DE,HL = ''Product''&lt;br /&gt;
&amp;lt;pre&amp;gt;ld hl,0&lt;br /&gt;
ld a,16&lt;br /&gt;
muluw&lt;br /&gt;
 add hl,hl&lt;br /&gt;
 rl e&lt;br /&gt;
 rl d&lt;br /&gt;
 jr nc,muluw_cont&lt;br /&gt;
  add hl,bc&lt;br /&gt;
  jr nc,muluw_cont&lt;br /&gt;
   inc de&lt;br /&gt;
muluw_cont&lt;br /&gt;
 dec a&lt;br /&gt;
 jr nz,muluw&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 16bit * 16bit Unsigned -&amp;gt; 24 bits result ==&lt;br /&gt;
&lt;br /&gt;
'''Input:''' BC = ''Multiplier'', DE = ''Multiplicand''&lt;br /&gt;
&lt;br /&gt;
'''Output:''' A,HL = ''Product''&lt;br /&gt;
&amp;lt;pre&amp;gt;ld ix,0&lt;br /&gt;
 ld hl,0&lt;br /&gt;
.mul24b1:&lt;br /&gt;
 ld a,c&lt;br /&gt;
 or b&lt;br /&gt;
 jr z,mul24b3&lt;br /&gt;
 srl b&lt;br /&gt;
 rr c&lt;br /&gt;
 jr nc,mul24b2&lt;br /&gt;
 add ix,de&lt;br /&gt;
 ld a,h&lt;br /&gt;
 adc l&lt;br /&gt;
 ld h,a&lt;br /&gt;
.mul24b2:&lt;br /&gt;
 sla e&lt;br /&gt;
 rl d&lt;br /&gt;
 rl l&lt;br /&gt;
 jr mul24b1:&lt;br /&gt;
.mul24b3:&lt;br /&gt;
 ld a,h&lt;br /&gt;
 db #dd:ld e,l&lt;br /&gt;
 db #dd:ld d,h&lt;br /&gt;
 ex de,hl&lt;br /&gt;
 ret&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Web links ==&lt;br /&gt;
&lt;br /&gt;
* [http://map.tni.nl/articles/mult_div_shifts.php Multiplications and divisions on the MSX Assembly Page]&lt;br /&gt;
* [http://www.mccw.hetlab.tk/92/Multiplication/en.html &amp;quot;Multiplication on a Z80&amp;quot; ( MSX Computer &amp;amp; Club Webmagazine)]&lt;br /&gt;
* [http://www.andreadrian.de/oldcpu/Z80_number_cruncher.html The Z80 number cruncher (Andre Adrian)] (16/32bit multiplication, addition, right shift)&lt;br /&gt;
&lt;br /&gt;
[[Category:Programming]]&lt;/div&gt;</summary>
		<author><name>Roudoudou</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=Programming:Integer_Multiplication&amp;diff=101056</id>
		<title>Programming:Integer Multiplication</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=Programming:Integer_Multiplication&amp;diff=101056"/>
				<updated>2018-03-01T17:30:37Z</updated>
		
		<summary type="html">&lt;p&gt;Roudoudou: optimised 16x16=32&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Classic 8bit * 8bit Unsigned ==&lt;br /&gt;
&lt;br /&gt;
'''Input:''' H = ''Multiplier'', E = ''Multiplicand'', L = 0, D = 0&lt;br /&gt;
&lt;br /&gt;
'''Output:''' HL = ''Product''&lt;br /&gt;
&lt;br /&gt;
'''CPC Cycles:''' 188-244 (216 on average) = 47-61 (54) usec&lt;br /&gt;
&lt;br /&gt;
'''Size:''' 33 bytes&lt;br /&gt;
&lt;br /&gt;
The additional clocks and bytes maybe required to set up D and L and for RET.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sla h  ; optimised 1st iteration&lt;br /&gt;
jr nc,$+3&lt;br /&gt;
ld l,e&lt;br /&gt;
&lt;br /&gt;
add hl,hl  ; unroll 7 times&lt;br /&gt;
jr nc,$+3  ; ...&lt;br /&gt;
add hl,de  ; ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Classic 16bit * 8bit Unsigned ==&lt;br /&gt;
&lt;br /&gt;
'''Input:''' A = ''Multiplier'', DE = ''Multiplicand'', HL = 0, C = 0&lt;br /&gt;
&lt;br /&gt;
'''Output:''' A:HL = ''Product''&lt;br /&gt;
&lt;br /&gt;
'''CPC Cycles:''' 212-300 (256 on average) = 53-75 (64) usec&lt;br /&gt;
&lt;br /&gt;
'''Size:''' 47 bytes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
add a,a  ; optimised 1st iteration&lt;br /&gt;
jr nc,$+4&lt;br /&gt;
ld h,d&lt;br /&gt;
ld l,e&lt;br /&gt;
&lt;br /&gt;
add hl,hl  ; unroll 7 times&lt;br /&gt;
rla   ; ...&lt;br /&gt;
jr nc,$+4  ; ...&lt;br /&gt;
add hl,de  ; ...&lt;br /&gt;
adc a,c  ; ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Fast 8bit * 8bit Unsigned (using log / antilog tables) ==&lt;br /&gt;
&lt;br /&gt;
The original routine was written by Jeff Frohwein for the Nintendo Gameboy. You can find it on [http://www.devrs.com/gb/files/logmult.txt Devrs.com].&lt;br /&gt;
&lt;br /&gt;
Because of the usage of log / antilog tables this routine is less accurate, but very fast. It takes advantage of the fact that if you take the log of two numbers, add the results and then take the antilog of the total you have done the equivalent of multiplying the two numbers:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 x^a * x^b = x^(a+b)&lt;br /&gt;
&lt;br /&gt;
 a * b = x^(logx(a) + logx(b))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Input:''' B = ''Multiplier'', C = ''Multiplicant''&lt;br /&gt;
&lt;br /&gt;
'''Output:''' DE = ''Product''&lt;br /&gt;
&lt;br /&gt;
'''CPC Cycles:''' 124 = 31 usec&lt;br /&gt;
&lt;br /&gt;
'''Size:''' 1024 bytes (768 bytes for the tables)&lt;br /&gt;
&lt;br /&gt;
'''Warning:''' It is VERY approximate routine, e.g., 0*7=7, 1*28=27, 10*81=790, 100*100=9742, ...&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FastMult:&lt;br /&gt;
  ld      l,c&lt;br /&gt;
  ld      h,&amp;amp;82&lt;br /&gt;
  ld      d,(hl)          ; d = 32 * log_2(c)&lt;br /&gt;
  &lt;br /&gt;
  ld      l,b&lt;br /&gt;
  ld      a,(hl)          ; a = 32 * log_2(b)&lt;br /&gt;
  &lt;br /&gt;
  add     a,d&lt;br /&gt;
  ld      l,a&lt;br /&gt;
  ld      a,0&lt;br /&gt;
  adc     a,0&lt;br /&gt;
  ld      h,a             ; hl = d + a&lt;br /&gt;
  &lt;br /&gt;
  add     hl,hl&lt;br /&gt;
  set     2,h             ; hl = hl + $0400&lt;br /&gt;
  set     7,h             ; hl = hl + &amp;amp;8000&lt;br /&gt;
  &lt;br /&gt;
  ld      e,(hl)&lt;br /&gt;
  inc     hl&lt;br /&gt;
  ld      d,(hl)          ; de = 2^((hl)/32)&lt;br /&gt;
  &lt;br /&gt;
  ret&lt;br /&gt;
&lt;br /&gt;
; 32*Log_2(x) Table&lt;br /&gt;
;&lt;br /&gt;
;   FOR A=0 TO 255&lt;br /&gt;
;     C=4 &lt;br /&gt;
;     B=2&lt;br /&gt;
;     FOR Z=1 TO 10&lt;br /&gt;
;       IF (2^C) &amp;gt; A THEN C=C-B ELSE C=C+B&lt;br /&gt;
;       B=B/2&lt;br /&gt;
;     NEXT Z&lt;br /&gt;
;     PRINT INT(C*32);&amp;quot;,&amp;quot;;&lt;br /&gt;
;   NEXT A&lt;br /&gt;
ORG &amp;amp;8200&lt;br /&gt;
&lt;br /&gt;
logtable:&lt;br /&gt;
  db 0 , 0 , 32 , 50 , 64 , 74 , 82 , 89 , 96 , 101 , 106 , 110 , 114 , 118 , 121&lt;br /&gt;
  db 125 , 128 , 130 , 133 , 135 , 138 , 140 , 142 , 144 , 146 , 148 , 150 , 152&lt;br /&gt;
  db 153 , 155 , 157 , 158 , 160 , 161 , 162 , 164 , 165 , 166 , 167 , 169 , 170&lt;br /&gt;
  db 171 , 172 , 173 , 174 , 175 , 176 , 177 , 178 , 179 , 180 , 181 , 182 , 183&lt;br /&gt;
  db 184 , 185 , 185 , 186 , 187 , 188 , 189 , 189 , 190 , 191 , 192 , 192 , 193&lt;br /&gt;
  db 194 , 194 , 195 , 196 , 196 , 197 , 198 , 198 , 199 , 199 , 200 , 201 , 201&lt;br /&gt;
  db 202 , 202 , 203 , 204 , 204 , 205 , 205 , 206 , 206 , 207 , 207 , 208 , 208&lt;br /&gt;
  db 209 , 209 , 210 , 210 , 211 , 211 , 212 , 212 , 213 , 213 , 213 , 214 , 214&lt;br /&gt;
  db 215 , 215 , 216 , 216 , 217 , 217 , 217 , 218 , 218 , 219 , 219 , 219 , 220&lt;br /&gt;
  db 220 , 221 , 221 , 221 , 222 , 222 , 222 , 223 , 223 , 224 , 224 , 224 , 225&lt;br /&gt;
  db 225 , 225 , 226 , 226 , 226 , 227 , 227 , 227 , 228 , 228 , 228 , 229 , 229&lt;br /&gt;
  db 229 , 230 , 230 , 230 , 231 , 231 , 231 , 231 , 232 , 232 , 232 , 233 , 233&lt;br /&gt;
  db 233 , 234 , 234 , 234 , 234 , 235 , 235 , 235 , 236 , 236 , 236 , 236 , 237&lt;br /&gt;
  db 237 , 237 , 237 , 238 , 238 , 238 , 238 , 239 , 239 , 239 , 239 , 240 , 240&lt;br /&gt;
  db 240 , 241 , 241 , 241 , 241 , 241 , 242 , 242 , 242 , 242 , 243 , 243 , 243&lt;br /&gt;
  db 243 , 244 , 244 , 244 , 244 , 245 , 245 , 245 , 245 , 245 , 246 , 246 , 246&lt;br /&gt;
  db 246 , 247 , 247 , 247 , 247 , 247 , 248 , 248 , 248 , 248 , 249 , 249 , 249&lt;br /&gt;
  db 249 , 249 , 250 , 250 , 250 , 250 , 250 , 251 , 251 , 251 , 251 , 251 , 252&lt;br /&gt;
  db 252 , 252 , 252 , 252 , 253 , 253 , 253 , 253 , 253 , 253 , 254 , 254 , 254&lt;br /&gt;
  db 254 , 254 , 255 , 255 , 255 , 255 , 255&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; AntiLog 2^(x/32) Table&lt;br /&gt;
;&lt;br /&gt;
;   FOR A=0 to 510&lt;br /&gt;
;   PRINT INT(2^(A/32)+.5);&amp;quot;,&amp;quot;;&lt;br /&gt;
;   NEXT A&lt;br /&gt;
ORG &amp;amp;8400&lt;br /&gt;
&lt;br /&gt;
antilog:&lt;br /&gt;
  dw 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 2&lt;br /&gt;
  dw 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2&lt;br /&gt;
  dw 2 , 2 , 2 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 4 , 4&lt;br /&gt;
  dw 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 6&lt;br /&gt;
  dw 6 , 6 , 6 , 6 , 6 , 6 , 6 , 7 , 7 , 7 , 7 , 7 , 7 , 7 , 8 , 8 , 8 , 8 , 8 , 9&lt;br /&gt;
  dw 9 , 9 , 9 , 9 , 10 , 10 , 10 , 10 , 10 , 11 , 11 , 11 , 11 , 12 , 12 , 12 , 12&lt;br /&gt;
  dw 13 , 13 , 13 , 13 , 14 , 14 , 14 , 15 , 15 , 15 , 16 , 16 , 16 , 17 , 17 , 17&lt;br /&gt;
  dw 18 , 18 , 19 , 19 , 19 , 20 , 20 , 21 , 21 , 22 , 22 , 23 , 23 , 24 , 24 , 25&lt;br /&gt;
  dw 25 , 26 , 26 , 27 , 27 , 28 , 29 , 29 , 30 , 31 , 31 , 32 , 33 , 33 , 34 , 35&lt;br /&gt;
  dw 36 , 36 , 37 , 38 , 39 , 40 , 41 , 41 , 42 , 43 , 44 , 45 , 46 , 47 , 48 , 49&lt;br /&gt;
  dw 50 , 52 , 53 , 54 , 55 , 56 , 57 , 59 , 60 , 61 , 63 , 64 , 65 , 67 , 68 , 70&lt;br /&gt;
  dw 71 , 73 , 74 , 76 , 78 , 79 , 81 , 83 , 85 , 87 , 89 , 91 , 92 , 95 , 97 , 99&lt;br /&gt;
  dw 101 , 103 , 105 , 108 , 110 , 112 , 115 , 117 , 120 , 123 , 125 , 128 , 131&lt;br /&gt;
  dw 134 , 137 , 140 , 143 , 146 , 149 , 152 , 156 , 159 , 162 , 166 , 170 , 173&lt;br /&gt;
  dw 177 , 181 , 185 , 189 , 193 , 197 , 202 , 206 , 211 , 215 , 220 , 225 , 230&lt;br /&gt;
  dw 235 , 240 , 245 , 251 , 256 , 262 , 267 , 273 , 279 , 285 , 292 , 298 , 304&lt;br /&gt;
  dw 311 , 318 , 325 , 332 , 339 , 347 , 354 , 362 , 370 , 378 , 386 , 395 , 403&lt;br /&gt;
  dw 412 , 421 , 431 , 440 , 450 , 459 , 470 , 480 , 490 , 501 , 512 , 523 , 535&lt;br /&gt;
  dw 546 , 558 , 571 , 583 , 596 , 609 , 622 , 636 , 650 , 664 , 679 , 693 , 709&lt;br /&gt;
  dw 724 , 740 , 756 , 773 , 790 , 807 , 825 , 843 , 861 , 880 , 899 , 919 , 939&lt;br /&gt;
  dw 960 , 981 , 1002 , 1024 , 1046 , 1069 , 1093 , 1117 , 1141 , 1166 , 1192&lt;br /&gt;
  dw 1218 , 1244 , 1272 , 1300 , 1328 , 1357 , 1387 , 1417 , 1448 , 1480 , 1512&lt;br /&gt;
  dw 1545 , 1579 , 1614 , 1649 , 1685 , 1722 , 1760 , 1798 , 1838 , 1878 , 1919&lt;br /&gt;
  dw 1961 , 2004 , 2048 , 2093 , 2139 , 2186 , 2233 , 2282 , 2332 , 2383 , 2435&lt;br /&gt;
  dw 2489 , 2543 , 2599 , 2656 , 2714 , 2774 , 2834 , 2896 , 2960 , 3025 , 3091&lt;br /&gt;
  dw 3158 , 3228 , 3298 , 3371 , 3444 , 3520 , 3597 , 3676 , 3756 , 3838 , 3922&lt;br /&gt;
  dw 4008 , 4096 , 4186 , 4277 , 4371 , 4467 , 4565 , 4664 , 4767 , 4871 , 4978&lt;br /&gt;
  dw 5087 , 5198 , 5312 , 5428 , 5547 , 5668 , 5793 , 5919 , 6049 , 6182 , 6317&lt;br /&gt;
  dw 6455 , 6597 , 6741 , 6889 , 7039 , 7194 , 7351 , 7512 , 7677 , 7845 , 8016&lt;br /&gt;
  dw 8192 , 8371 , 8555 , 8742 , 8933 , 9129 , 9329 , 9533 , 9742 , 9955 , 10173&lt;br /&gt;
  dw 10396 , 10624 , 10856 , 11094 , 11337 , 11585 , 11839 , 12098 , 12363 , 12634&lt;br /&gt;
  dw 12910 , 13193 , 13482 , 13777 , 14079 , 14387 , 14702 , 15024 , 15353 , 15689&lt;br /&gt;
  dw 16033 , 16384 , 16743 , 17109 , 17484 , 17867 , 18258 , 18658 , 19066 , 19484&lt;br /&gt;
  dw 19911 , 20347 , 20792 , 21247 , 21713 , 22188 , 22674 , 23170 , 23678 , 24196&lt;br /&gt;
  dw 24726 , 25268 , 25821 , 26386 , 26964 , 27554 , 28158 , 28774 , 29404 , 30048&lt;br /&gt;
  dw 30706 , 31379 , 32066 , 32768 , 33485 , 34219 , 34968 , 35734 , 36516 , 37316&lt;br /&gt;
  dw 38133 , 38968 , 39821 , 40693 , 41584 , 42495 , 43425 , 44376 , 45348 , 46341&lt;br /&gt;
  dw 47356 , 48393 , 49452 , 50535 , 51642 , 52772 , 53928 , 55109 , 56316 , 57549&lt;br /&gt;
  dw  58809 , 60097 , 61413 , 62757&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Fastest, accurate 8bit * 8bit Unsigned  with 16 KB tables ==&lt;br /&gt;
&lt;br /&gt;
'''Input:''' L = Multiplier, C = Multiplicand&lt;br /&gt;
&lt;br /&gt;
'''Output:''' DE = Product&lt;br /&gt;
&lt;br /&gt;
'''CPC Cycles:''' 80 = 20 usec&lt;br /&gt;
&lt;br /&gt;
'''Size:''' 14 bytes of code + 16 KB tables&lt;br /&gt;
&lt;br /&gt;
I'm currently working on a new routine, based on a routine by Kirk Meyer [http://www.ticalc.org/pub/86/asm/source/routines/vfmult.asm] which uses nibble multiplication tables.&lt;br /&gt;
&lt;br /&gt;
I have a working, tested version which uses 16K of tables and can perform multiplication in 20&amp;amp;mu;s.&lt;br /&gt;
&lt;br /&gt;
The code to produce the tables is below:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
.maketabs&lt;br /&gt;
ld hl,hltab1&lt;br /&gt;
.makelp1&lt;br /&gt;
ld a,l&lt;br /&gt;
rla&lt;br /&gt;
and #1e&lt;br /&gt;
add restab / 256&lt;br /&gt;
ld (hl),a&lt;br /&gt;
inc l&lt;br /&gt;
jr nz,makelp1&lt;br /&gt;
inc h&lt;br /&gt;
.makelp2&lt;br /&gt;
ld a,l&lt;br /&gt;
rra:rra:rra&lt;br /&gt;
and #1e&lt;br /&gt;
jr z,usez&lt;br /&gt;
add restab2 - restab / 256 - 2&lt;br /&gt;
.usez&lt;br /&gt;
add restab / 256&lt;br /&gt;
ld (hl),a&lt;br /&gt;
inc l&lt;br /&gt;
jr nz,makelp2&lt;br /&gt;
inc h			; restab&lt;br /&gt;
.makelp3&lt;br /&gt;
ld a,(hl)&lt;br /&gt;
inc h&lt;br /&gt;
ld d,(hl)&lt;br /&gt;
inc h&lt;br /&gt;
add l&lt;br /&gt;
ld (hl),a&lt;br /&gt;
inc h&lt;br /&gt;
ld a,0&lt;br /&gt;
adc d&lt;br /&gt;
ld (hl),a&lt;br /&gt;
dec h:dec h:dec h&lt;br /&gt;
inc l&lt;br /&gt;
jr nz,makelp3&lt;br /&gt;
inc h&lt;br /&gt;
inc h&lt;br /&gt;
ld a,h&lt;br /&gt;
cp restab2 / 256 - 2&lt;br /&gt;
jr nz,makelp3&lt;br /&gt;
ld b,h&lt;br /&gt;
ld c,l&lt;br /&gt;
inc b&lt;br /&gt;
inc b&lt;br /&gt;
ld h,restab / 256 + 2&lt;br /&gt;
.makelp4&lt;br /&gt;
ld e,(hl)&lt;br /&gt;
inc h&lt;br /&gt;
ld d,(hl)&lt;br /&gt;
dec h&lt;br /&gt;
ex de,hl&lt;br /&gt;
add hl,hl:add hl,hl:add hl,hl:add hl,hl&lt;br /&gt;
ex de,hl&lt;br /&gt;
ld a,e&lt;br /&gt;
ld (bc),a&lt;br /&gt;
inc b&lt;br /&gt;
ld a,d&lt;br /&gt;
ld (bc),a&lt;br /&gt;
dec b&lt;br /&gt;
inc l&lt;br /&gt;
inc c&lt;br /&gt;
jr nz,makelp4&lt;br /&gt;
inc h&lt;br /&gt;
inc h&lt;br /&gt;
inc b&lt;br /&gt;
inc b&lt;br /&gt;
ld a,h&lt;br /&gt;
cp restab2 / 256&lt;br /&gt;
jr nz,makelp4&lt;br /&gt;
ret&lt;br /&gt;
&lt;br /&gt;
ds -$ and #ff&lt;br /&gt;
.hltab1&lt;br /&gt;
ds 256&lt;br /&gt;
.hltab2&lt;br /&gt;
ds 256&lt;br /&gt;
.restab&lt;br /&gt;
ds 512 * 16&lt;br /&gt;
.restab2&lt;br /&gt;
ds 512 * 15&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The code to perform the multiplication (DE = L * C):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ld h,hltab1 / 256	; 2&lt;br /&gt;
ld b,(hl)		; 4&lt;br /&gt;
inc h			; 5&lt;br /&gt;
ld h,(hl)		; 7&lt;br /&gt;
ld l,c			; 8&lt;br /&gt;
ld a,(bc)		; 10&lt;br /&gt;
add (hl)		; 12&lt;br /&gt;
ld e,a			; 13&lt;br /&gt;
inc b			; 14&lt;br /&gt;
inc h			; 15&lt;br /&gt;
ld a,(bc)		; 17&lt;br /&gt;
adc (hl)		; 19&lt;br /&gt;
ld d,a			; 20&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Fast, accurate 8bit * 8bit Unsigned  with 8 KB tables ==&lt;br /&gt;
&lt;br /&gt;
'''Input:''' L = Multiplier, C = Multiplicand&lt;br /&gt;
&lt;br /&gt;
'''Output:''' DE = Product&lt;br /&gt;
&lt;br /&gt;
'''CPC Cycles:''' 100 = 25 usec&lt;br /&gt;
&lt;br /&gt;
'''Size:''' 19 bytes of code + 8 KB tables&lt;br /&gt;
&lt;br /&gt;
16K is a lot of memory to use for tables, but I'm working on a way to reduce this to 8K while maintaining similar performance (around 26&amp;amp;mu;s). The idea is rather than using tables for the low and high nibbles, use tables for alternate bits. So there would be 16 tables for the values #00, #01, #04, #05, #10, #11, #14, #15, #40, #41, #44, #45, #50, #51, #54, #55. The values can be shifted by 1 (rather than 4) to give values for the alternate bits using a simple ADD HL,HL.&lt;br /&gt;
&lt;br /&gt;
This routine should be easy to adapt to a 16bit * 8bit unsigned multiplication or even a 16bit * 16bit, using simple additions.&lt;br /&gt;
&lt;br /&gt;
[[User:Executioner|Executioner]] 03:58, 8 May 2007 (CEST)&lt;br /&gt;
&lt;br /&gt;
Ok, here is the new 8K routine, first the routine to build the tables:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
.maketabs&lt;br /&gt;
ld hl,hltab1&lt;br /&gt;
.makelp5&lt;br /&gt;
ld a,l&lt;br /&gt;
ld bc,0&lt;br /&gt;
rla:rl b:rla:rl c&lt;br /&gt;
rla:rl b:rla:rl c&lt;br /&gt;
rla:rl b:rla:rl c&lt;br /&gt;
rla:rl b:rla:rl c&lt;br /&gt;
ld a,b&lt;br /&gt;
add a&lt;br /&gt;
add restab / 256&lt;br /&gt;
ld (hl),a&lt;br /&gt;
inc h&lt;br /&gt;
ld a,c&lt;br /&gt;
add a&lt;br /&gt;
add restab / 256&lt;br /&gt;
ld (hl),a&lt;br /&gt;
dec h&lt;br /&gt;
inc l&lt;br /&gt;
jr nz,makelp5&lt;br /&gt;
ld h,restab / 256 + 2&lt;br /&gt;
.makelp6&lt;br /&gt;
ld (hl),l&lt;br /&gt;
inc l&lt;br /&gt;
jr nz,makelp6&lt;br /&gt;
inc h:inc h&lt;br /&gt;
ld b,2&lt;br /&gt;
.makelp8&lt;br /&gt;
push bc&lt;br /&gt;
xor a&lt;br /&gt;
rr b:rra:rrca&lt;br /&gt;
rr b:rra:rrca&lt;br /&gt;
rr b:rra:rrca&lt;br /&gt;
rr b:rra:rrca&lt;br /&gt;
.makelp7&lt;br /&gt;
push hl&lt;br /&gt;
push af&lt;br /&gt;
call mulLbyA&lt;br /&gt;
ex de,hl&lt;br /&gt;
pop af&lt;br /&gt;
pop hl&lt;br /&gt;
ld (hl),e&lt;br /&gt;
inc h&lt;br /&gt;
ld (hl),d&lt;br /&gt;
dec h&lt;br /&gt;
inc l&lt;br /&gt;
jr nz,makelp7&lt;br /&gt;
inc h:inc h&lt;br /&gt;
pop bc&lt;br /&gt;
inc b&lt;br /&gt;
bit 4,b&lt;br /&gt;
jr z,makelp8&lt;br /&gt;
ret&lt;br /&gt;
&lt;br /&gt;
.mulLbyA	; MAX times	; MIN times&lt;br /&gt;
ld e,l		; 1		; 1&lt;br /&gt;
ld d,0		; 3		; 3&lt;br /&gt;
add a		; 4		; 4&lt;br /&gt;
ld h,a		; 5		; 5&lt;br /&gt;
jr c,ncad0	; 8		; 8&lt;br /&gt;
ld l,d		&lt;br /&gt;
.ncad0&lt;br /&gt;
add hl,hl	; 11		; 11&lt;br /&gt;
jr nc,ncad1	; 13		; 14&lt;br /&gt;
add hl,de	; 16&lt;br /&gt;
.ncad1&lt;br /&gt;
add hl,hl	; 19		; 17&lt;br /&gt;
jr nc,ncad2	; 21		; 20&lt;br /&gt;
add hl,de	; 24&lt;br /&gt;
.ncad2&lt;br /&gt;
add hl,hl	; 27		; 23&lt;br /&gt;
jr nc,ncad3	; 29		; 26&lt;br /&gt;
add hl,de	; 32&lt;br /&gt;
.ncad3&lt;br /&gt;
add hl,hl	; 35		; 29&lt;br /&gt;
jr nc,ncad4	; 37		; 32&lt;br /&gt;
add hl,de	; 40&lt;br /&gt;
.ncad4&lt;br /&gt;
add hl,hl	; 43		; 35&lt;br /&gt;
jr nc,ncad5	; 45		; 38&lt;br /&gt;
add hl,de	; 48&lt;br /&gt;
.ncad5&lt;br /&gt;
add hl,hl	; 51		; 41&lt;br /&gt;
jr nc,ncad6	; 53		; 44&lt;br /&gt;
add hl,de	; 56&lt;br /&gt;
.ncad6&lt;br /&gt;
add hl,hl	; 59		; 47&lt;br /&gt;
ld a,h		; 60		; 48&lt;br /&gt;
ret nc		; 61		; 50?&lt;br /&gt;
add hl,de	; 64&lt;br /&gt;
ld a,h		; 65&lt;br /&gt;
ret&lt;br /&gt;
&lt;br /&gt;
ds -$ and #ff&lt;br /&gt;
&lt;br /&gt;
.hltab1&lt;br /&gt;
ds 256&lt;br /&gt;
.hltab2&lt;br /&gt;
ds 256&lt;br /&gt;
.restab&lt;br /&gt;
ds 512 * 16&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And the routine to do the multiplication:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
.umultCL		; Using 8 bit only (25us - DE = L * C)&lt;br /&gt;
ld h,hltab2 / 256	; 2&lt;br /&gt;
ld b,(hl)		; 4&lt;br /&gt;
dec h			; 5&lt;br /&gt;
ld h,(hl)		; 7&lt;br /&gt;
ld l,c			; 8&lt;br /&gt;
ld a,(hl)		; 10&lt;br /&gt;
add a			; 11&lt;br /&gt;
inc h			; 12&lt;br /&gt;
ld d,(hl)		; 14&lt;br /&gt;
rl d			; 16&lt;br /&gt;
ld h,b			; 17&lt;br /&gt;
add (hl)		; 19&lt;br /&gt;
ld e,a			; 20&lt;br /&gt;
inc h			; 21&lt;br /&gt;
ld a,(hl)		; 23&lt;br /&gt;
adc d			; 24&lt;br /&gt;
ld d,a			; 25&lt;br /&gt;
ret&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Very fast 8bit * 8bit Unsigned with only 1K of tables ==&lt;br /&gt;
&lt;br /&gt;
'''Input:''' A = ''Multiplier'', L = ''Multiplicand''&lt;br /&gt;
&lt;br /&gt;
'''Output:''' DE = ''Product''&lt;br /&gt;
&lt;br /&gt;
'''CPC Cycles''': 104-112 (108 on average) = 26-28 (27) usec&lt;br /&gt;
&lt;br /&gt;
'''Size''': 24 bytes of code and 1024 bytes for the tables&lt;br /&gt;
&lt;br /&gt;
Here's a new routine I've developed which uses the formula ab = ((a + b)&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; - (a - b)&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;) / 4. It's based on a routine for the 6502 by Stephen Judd in a C= Hacking article. Because of differences between the way the 6502 does register indexing it was quite difficult to actually get this working, but it's a great compromise between speed and space since it only uses 1K of tables (as opposed to the 16K or 8K table routines above), and can still manage to do the job in a maximum of 28 microseconds.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;Firstly, once again, we need some code to generate the tables. These tables contain values for&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;x&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;/4 for 9 bit values of x, with the LSB when bit 8 is zero first followed by the MSB.&lt;br /&gt;
&amp;lt;pre&amp;gt;.gen_sq4&lt;br /&gt;
	xor a&lt;br /&gt;
	ld de,umul_tab + #1ff&lt;br /&gt;
	ld (de),a&lt;br /&gt;
	dec d&lt;br /&gt;
	ld (de),a&lt;br /&gt;
	ld h,d&lt;br /&gt;
	ld l,e&lt;br /&gt;
	inc e&lt;br /&gt;
	ld c,e&lt;br /&gt;
	ld b,2&lt;br /&gt;
&lt;br /&gt;
	.sq4_lp&lt;br /&gt;
	ld a,b&lt;br /&gt;
	cp 2&lt;br /&gt;
	ld a,e&lt;br /&gt;
	rra&lt;br /&gt;
	add (hl)&lt;br /&gt;
	ld (de),a&lt;br /&gt;
	inc h&lt;br /&gt;
	inc d&lt;br /&gt;
	ld a,(hl)&lt;br /&gt;
	adc c&lt;br /&gt;
	ld (de),a&lt;br /&gt;
	dec d&lt;br /&gt;
	ld h,d&lt;br /&gt;
	inc l&lt;br /&gt;
	inc e&lt;br /&gt;
	jr nz,sq4_lp&lt;br /&gt;
	inc d&lt;br /&gt;
	inc d&lt;br /&gt;
	djnz sq4_lp&lt;br /&gt;
	ret&lt;br /&gt;
&lt;br /&gt;
align #100&lt;br /&gt;
.umul_tab ds #400&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Now for the actual multiply routine:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	ld h,umul_tab_lo / #100	; 2&lt;br /&gt;
	ld b,h			; 3&lt;br /&gt;
	add l			; 4&lt;br /&gt;
	ld c,a			; 5&lt;br /&gt;
	jr nc,@noovf		; 7&lt;br /&gt;
	inc b			; 8&lt;br /&gt;
	inc b			; 9&lt;br /&gt;
.@noovf&lt;br /&gt;
	sub l			; 10&lt;br /&gt;
	sub l			; 11&lt;br /&gt;
	jr nc,@noneg		; 13&lt;br /&gt;
	neg			; 15&lt;br /&gt;
.@noneg&lt;br /&gt;
	ld l,a			; 16&lt;br /&gt;
	ld a,(bc)		; 18&lt;br /&gt;
	sub (hl)		; 20&lt;br /&gt;
	ld e,a			; 21&lt;br /&gt;
	inc b			; 22&lt;br /&gt;
	inc h			; 23&lt;br /&gt;
	ld a,(bc)		; 25&lt;br /&gt;
	sbc (hl)		; 27&lt;br /&gt;
	ld d,a			; 28&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This code could easily be converted to a macro as it's only 24 bytes. I've tried to optimize it further but with no luck!&lt;br /&gt;
&lt;br /&gt;
[[User:Executioner|Executioner]] 06:25, 4 April 2008 (CEST)&lt;br /&gt;
&lt;br /&gt;
== Fast 8bit * 8bit Unsigned with only 512 bytes of tables ==&lt;br /&gt;
&lt;br /&gt;
'''Input''': A = Multiplier, B = Multiplicant&lt;br /&gt;
&lt;br /&gt;
'''Output''': A:E = Product&lt;br /&gt;
&lt;br /&gt;
'''CPC Cycles''': 136-172 (154 on average) = 34-43 (38.5) usec&lt;br /&gt;
&lt;br /&gt;
'''Size''': 44 bytes of code and 512 bytes for the tables&lt;br /&gt;
&lt;br /&gt;
Fast 8 bit unsigned multiplication with 16 bit result. It uses formula&lt;br /&gt;
&amp;lt;br&amp;gt;x*y = ((x+y)/2)&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; - ((x-y)/2)&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;, if x+y is even&lt;br /&gt;
&amp;lt;br&amp;gt;      = ((x+y-1)/2)&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; - ((x-y-1)/2)&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; + y, if x+y is odd and x&amp;gt;=y&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;    cp b&lt;br /&gt;
    jr nc,l1&lt;br /&gt;
&lt;br /&gt;
    ld e,a&lt;br /&gt;
    ld a,b&lt;br /&gt;
    ld b,e&lt;br /&gt;
&lt;br /&gt;
l1  ld c,a&lt;br /&gt;
    sub b&lt;br /&gt;
    rra&lt;br /&gt;
    ld d,a&lt;br /&gt;
    ld a,c&lt;br /&gt;
    add a,b&lt;br /&gt;
    rra&lt;br /&gt;
    ld l,a&lt;br /&gt;
    ld h,high(sqrlo)&lt;br /&gt;
    ld a,(hl)&lt;br /&gt;
    ld e,l&lt;br /&gt;
    ld l,d&lt;br /&gt;
    jr nc,l2&lt;br /&gt;
&lt;br /&gt;
    sub (hl)   ;odd&lt;br /&gt;
    ld l,e&lt;br /&gt;
    ld e,a&lt;br /&gt;
    inc h      ;loads high(sqrhi)&lt;br /&gt;
    ld a,(hl)&lt;br /&gt;
    ld l,d&lt;br /&gt;
    sbc a,(hl)&lt;br /&gt;
    ld d,a&lt;br /&gt;
&lt;br /&gt;
    ld a,e&lt;br /&gt;
    add a,b&lt;br /&gt;
    ld e,a&lt;br /&gt;
    ld a,d&lt;br /&gt;
    adc a,0&lt;br /&gt;
    ret&lt;br /&gt;
&lt;br /&gt;
l2  sub (hl)   ;even&lt;br /&gt;
    ld l,e&lt;br /&gt;
    ld e,a&lt;br /&gt;
    inc h&lt;br /&gt;
    ld a,(hl)&lt;br /&gt;
    ld l,d&lt;br /&gt;
    sbc a,(hl)&lt;br /&gt;
    ret&lt;br /&gt;
&lt;br /&gt;
sqrlo ;low(x*x)   should be at the page border&lt;br /&gt;
    db 0,1,4,9,$10,$19,$24,$31,$40,$51,$64,$79,$90,$a9,$c4,$e1&lt;br /&gt;
    db 0,$21,$44,$69,$90,$b9,$e4,$11,$40,$71,$a4,$d9,$10,$49,$84,$c1&lt;br /&gt;
    db 0,$41,$84,$c9,$10,$59,$a4,$f1,$40,$91,$e4,$39,$90,$e9,$44,$a1&lt;br /&gt;
    db 0,$61,$c4,$29,$90,$f9,$64,$d1,$40,$b1,$24,$99,$10,$89,4,$81&lt;br /&gt;
    db 0,$81,4,$89,$10,$99,$24,$b1,$40,$d1,$64,$f9,$90,$29,$c4,$61&lt;br /&gt;
    db 0,$a1,$44,$e9,$90,$39,$e4,$91,$40,$f1,$a4,$59,$10,$c9,$84,$41&lt;br /&gt;
    db 0,$c1,$84,$49,$10,$d9,$a4,$71,$40,$11,$e4,$b9,$90,$69,$44,$21&lt;br /&gt;
    db 0,$e1,$c4,$a9,$90,$79,$64,$51,$40,$31,$24,$19,$10,9,4,$1&lt;br /&gt;
    db 0,1,4,9,$10,$19,$24,$31,$40,$51,$64,$79,$90,$a9,$c4,$e1&lt;br /&gt;
    db 0,$21,$44,$69,$90,$b9,$e4,$11,$40,$71,$a4,$d9,$10,$49,$84,$c1&lt;br /&gt;
    db 0,$41,$84,$c9,$10,$59,$a4,$f1,$40,$91,$e4,$39,$90,$e9,$44,$a1&lt;br /&gt;
    db 0,$61,$c4,$29,$90,$f9,$64,$d1,$40,$b1,$24,$99,$10,$89,4,$81&lt;br /&gt;
    db 0,$81,4,$89,$10,$99,$24,$b1,$40,$d1,$64,$f9,$90,$29,$c4,$61&lt;br /&gt;
    db 0,$a1,$44,$e9,$90,$39,$e4,$91,$40,$f1,$a4,$59,$10,$c9,$84,$41&lt;br /&gt;
    db 0,$c1,$84,$49,$10,$d9,$a4,$71,$40,$11,$e4,$b9,$90,$69,$44,$21&lt;br /&gt;
    db 0,$e1,$c4,$a9,$90,$79,$64,$51,$40,$31,$24,$19,$10,9,4,$1&lt;br /&gt;
sqrhi ;high(x*x)&lt;br /&gt;
    db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0&lt;br /&gt;
    db 1,1,1,1,1,1,1,2,2,2,2,2,3,3,3,3&lt;br /&gt;
    db 4,4,4,4,5,5,5,5,6,6,6,7,7,7,8,8&lt;br /&gt;
    db 9,9,9,$a,$a,$a,$b,$b,$c,$c,$d,$d,$e,$e,$f,$f&lt;br /&gt;
    db $10,$10,$11,$11,$12,$12,$13,$13,$14,$14,$15,$15,$16,$17,$17,$18&lt;br /&gt;
    db $19,$19,$1a,$1a,$1b,$1c,$1c,$1d,$1e,$1e,$1f,$20,$21,$21,$22,$23&lt;br /&gt;
    db $24,$24,$25,$26,$27,$27,$28,$29,$2a,$2b,$2b,$2c,$2d,$2e,$2f,$30&lt;br /&gt;
    db $31,$31,$32,$33,$34,$35,$36,$37,$38,$39,$3a,$3b,$3c,$3d,$3e,$3f&lt;br /&gt;
    db $40,$41,$42,$43,$44,$45,$46,$47,$48,$49,$4a,$4b,$4c,$4d,$4e,$4f&lt;br /&gt;
    db $51,$52,$53,$54,$55,$56,$57,$59,$5a,$5b,$5c,$5d,$5f,$60,$61,$62&lt;br /&gt;
    db $64,$65,$66,$67,$69,$6a,$6b,$6c,$6e,$6f,$70,$72,$73,$74,$76,$77&lt;br /&gt;
    db $79,$7a,$7b,$7d,$7e,$7f,$81,$82,$84,$85,$87,$88,$8a,$8b,$8d,$8e&lt;br /&gt;
    db $90,$91,$93,$94,$96,$97,$99,$9a,$9c,$9d,$9f,$a0,$a2,$a4,$a5,$a7&lt;br /&gt;
    db $a9,$aa,$ac,$ad,$af,$b1,$b2,$b4,$b6,$b7,$b9,$bb,$bd,$be,$c0,$c2&lt;br /&gt;
    db $c4,$c5,$c7,$c9,$cb,$cc,$ce,$d0,$d2,$d4,$d5,$d7,$d9,$db,$dd,$df&lt;br /&gt;
    db $e1,$e2,$e4,$e6,$e8,$ea,$ec,$ee,$f0,$f2,$f4,$f6,$f8,$fa,$fc,$fe&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[User:Litwr|Litwr]] 10:25, 24 October 2015 (CEST)&lt;br /&gt;
&lt;br /&gt;
== 16bit * 16bit Unsigned -&amp;gt; 32 bits result ==&lt;br /&gt;
&lt;br /&gt;
'''Input:''' BC = ''Multiplier'', DE = ''Multiplicand''&lt;br /&gt;
&lt;br /&gt;
'''Output:''' DE,HL = ''Product''&lt;br /&gt;
&amp;lt;pre&amp;gt;ld hl,0&lt;br /&gt;
ld a,16&lt;br /&gt;
muluw&lt;br /&gt;
 add hl,hl&lt;br /&gt;
 rl e&lt;br /&gt;
 rl d&lt;br /&gt;
 jr nc,muluw_cont&lt;br /&gt;
  add hl,bc&lt;br /&gt;
  jr nc,muluw_cont&lt;br /&gt;
   inc de&lt;br /&gt;
 dec a&lt;br /&gt;
 jr nz,muluw&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 16bit * 16bit Unsigned -&amp;gt; 24 bits result ==&lt;br /&gt;
&lt;br /&gt;
'''Input:''' BC = ''Multiplier'', DE = ''Multiplicand''&lt;br /&gt;
&lt;br /&gt;
'''Output:''' A,HL = ''Product''&lt;br /&gt;
&amp;lt;pre&amp;gt;ld ix,0&lt;br /&gt;
 ld hl,0&lt;br /&gt;
.mul24b1:&lt;br /&gt;
 ld a,c&lt;br /&gt;
 or b&lt;br /&gt;
 jr z,mul24b3&lt;br /&gt;
 srl b&lt;br /&gt;
 rr c&lt;br /&gt;
 jr nc,mul24b2&lt;br /&gt;
 add ix,de&lt;br /&gt;
 ld a,h&lt;br /&gt;
 adc l&lt;br /&gt;
 ld h,a&lt;br /&gt;
.mul24b2:&lt;br /&gt;
 sla e&lt;br /&gt;
 rl d&lt;br /&gt;
 rl l&lt;br /&gt;
 jr mul24b1:&lt;br /&gt;
.mul24b3:&lt;br /&gt;
 ld a,h&lt;br /&gt;
 db #dd:ld e,l&lt;br /&gt;
 db #dd:ld d,h&lt;br /&gt;
 ex de,hl&lt;br /&gt;
 ret&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Web links ==&lt;br /&gt;
&lt;br /&gt;
* [http://map.tni.nl/articles/mult_div_shifts.php Multiplications and divisions on the MSX Assembly Page]&lt;br /&gt;
* [http://www.mccw.hetlab.tk/92/Multiplication/en.html &amp;quot;Multiplication on a Z80&amp;quot; ( MSX Computer &amp;amp; Club Webmagazine)]&lt;br /&gt;
* [http://www.andreadrian.de/oldcpu/Z80_number_cruncher.html The Z80 number cruncher (Andre Adrian)] (16/32bit multiplication, addition, right shift)&lt;br /&gt;
&lt;br /&gt;
[[Category:Programming]]&lt;/div&gt;</summary>
		<author><name>Roudoudou</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=RASM&amp;diff=101046</id>
		<title>RASM</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=RASM&amp;diff=101046"/>
				<updated>2018-03-01T12:44:33Z</updated>
		
		<summary type="html">&lt;p&gt;Roudoudou: /* Performances */ grammar&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''RASM''' stands for [[Roudoudou]] AsSeMbler.&lt;br /&gt;
&lt;br /&gt;
Unlike conventionnal Z80 assemblers, RASM is very fast and able to handle huge projects.&lt;br /&gt;
&lt;br /&gt;
Released in february 2017, the project is still active&lt;br /&gt;
&lt;br /&gt;
== Performances ==&lt;br /&gt;
&lt;br /&gt;
1 million lines in 0.03s on a modern computer,  100x faster than Sjasmplus how claimed to be fast.&lt;br /&gt;
&lt;br /&gt;
== Generic features ==&lt;br /&gt;
&lt;br /&gt;
* integrated crunched sections (LZ48/LZ49/LZ4/ZX7/Exomizer) and load&amp;amp;crunch on the fly.&lt;br /&gt;
* ORG checking, unlimited memory workspaces where labels are shared.&lt;br /&gt;
* ALL undocumented instructions.&lt;br /&gt;
* conditionnal macro, unlimited &amp;amp; embeded loops with local labels, switch/case.&lt;br /&gt;
* floating point engine, mathematical functions.&lt;br /&gt;
* multiple binary output&lt;br /&gt;
&lt;br /&gt;
== Amstrad specific features ==&lt;br /&gt;
&lt;br /&gt;
* native bank management in assembly with dedicated tags&lt;br /&gt;
* cartridge generation&lt;br /&gt;
* snapshot v2 and snapshot v3 generation&lt;br /&gt;
* unlimited EDSK management (update,creation as much as we want at the same time)&lt;br /&gt;
* binary output with optionnal AMSDOS header.&lt;br /&gt;
&lt;br /&gt;
== Compatibility options ==&lt;br /&gt;
&lt;br /&gt;
* MAXAM compatibility&lt;br /&gt;
** internal calculations are done with unsigned 16 bits integers&lt;br /&gt;
** comparison with single '='&lt;br /&gt;
&lt;br /&gt;
* AS80 compatibility (partial)&lt;br /&gt;
** internal calculations are done with 32 bits integers&lt;br /&gt;
** reference of current outputed adress with DEFB is the directive and not the outputed byte&lt;br /&gt;
** little differences in macro declarations&lt;br /&gt;
&lt;br /&gt;
This option was designed to compile the CNG player, not to support all the bugs of AS80&lt;br /&gt;
&lt;br /&gt;
== English &amp;amp; French documentation ==&lt;br /&gt;
&lt;br /&gt;
== Links &amp;amp; download ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.cpcwiki.eu/forum/programming/rasm-z80-assembler-in-beta/ Official CPCWiki thread]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Programming software]][[Category:Programming]][[Category:Assembler]]&lt;/div&gt;</summary>
		<author><name>Roudoudou</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=RASM&amp;diff=101045</id>
		<title>RASM</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=RASM&amp;diff=101045"/>
				<updated>2018-03-01T12:42:57Z</updated>
		
		<summary type="html">&lt;p&gt;Roudoudou: /* Amstrad specific features */ bank tags&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''RASM''' stands for [[Roudoudou]] AsSeMbler.&lt;br /&gt;
&lt;br /&gt;
Unlike conventionnal Z80 assemblers, RASM is very fast and able to handle huge projects.&lt;br /&gt;
&lt;br /&gt;
Released in february 2017, the project is still active&lt;br /&gt;
&lt;br /&gt;
== Performances ==&lt;br /&gt;
&lt;br /&gt;
1 million lines in 0.03s on a modern computer,  100x faster than Sjasmplus claimed to be fast.&lt;br /&gt;
&lt;br /&gt;
== Generic features ==&lt;br /&gt;
&lt;br /&gt;
* integrated crunched sections (LZ48/LZ49/LZ4/ZX7/Exomizer) and load&amp;amp;crunch on the fly.&lt;br /&gt;
* ORG checking, unlimited memory workspaces where labels are shared.&lt;br /&gt;
* ALL undocumented instructions.&lt;br /&gt;
* conditionnal macro, unlimited &amp;amp; embeded loops with local labels, switch/case.&lt;br /&gt;
* floating point engine, mathematical functions.&lt;br /&gt;
* multiple binary output&lt;br /&gt;
&lt;br /&gt;
== Amstrad specific features ==&lt;br /&gt;
&lt;br /&gt;
* native bank management in assembly with dedicated tags&lt;br /&gt;
* cartridge generation&lt;br /&gt;
* snapshot v2 and snapshot v3 generation&lt;br /&gt;
* unlimited EDSK management (update,creation as much as we want at the same time)&lt;br /&gt;
* binary output with optionnal AMSDOS header.&lt;br /&gt;
&lt;br /&gt;
== Compatibility options ==&lt;br /&gt;
&lt;br /&gt;
* MAXAM compatibility&lt;br /&gt;
** internal calculations are done with unsigned 16 bits integers&lt;br /&gt;
** comparison with single '='&lt;br /&gt;
&lt;br /&gt;
* AS80 compatibility (partial)&lt;br /&gt;
** internal calculations are done with 32 bits integers&lt;br /&gt;
** reference of current outputed adress with DEFB is the directive and not the outputed byte&lt;br /&gt;
** little differences in macro declarations&lt;br /&gt;
&lt;br /&gt;
This option was designed to compile the CNG player, not to support all the bugs of AS80&lt;br /&gt;
&lt;br /&gt;
== English &amp;amp; French documentation ==&lt;br /&gt;
&lt;br /&gt;
== Links &amp;amp; download ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.cpcwiki.eu/forum/programming/rasm-z80-assembler-in-beta/ Official CPCWiki thread]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Programming software]][[Category:Programming]][[Category:Assembler]]&lt;/div&gt;</summary>
		<author><name>Roudoudou</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=RASM&amp;diff=101044</id>
		<title>RASM</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=RASM&amp;diff=101044"/>
				<updated>2018-03-01T12:41:18Z</updated>
		
		<summary type="html">&lt;p&gt;Roudoudou: /* Compatibility options */ presentation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''RASM''' stands for [[Roudoudou]] AsSeMbler.&lt;br /&gt;
&lt;br /&gt;
Unlike conventionnal Z80 assemblers, RASM is very fast and able to handle huge projects.&lt;br /&gt;
&lt;br /&gt;
Released in february 2017, the project is still active&lt;br /&gt;
&lt;br /&gt;
== Performances ==&lt;br /&gt;
&lt;br /&gt;
1 million lines in 0.03s on a modern computer,  100x faster than Sjasmplus claimed to be fast.&lt;br /&gt;
&lt;br /&gt;
== Generic features ==&lt;br /&gt;
&lt;br /&gt;
* integrated crunched sections (LZ48/LZ49/LZ4/ZX7/Exomizer) and load&amp;amp;crunch on the fly.&lt;br /&gt;
* ORG checking, unlimited memory workspaces where labels are shared.&lt;br /&gt;
* ALL undocumented instructions.&lt;br /&gt;
* conditionnal macro, unlimited &amp;amp; embeded loops with local labels, switch/case.&lt;br /&gt;
* floating point engine, mathematical functions.&lt;br /&gt;
* multiple binary output&lt;br /&gt;
&lt;br /&gt;
== Amstrad specific features ==&lt;br /&gt;
&lt;br /&gt;
* cartridge generation&lt;br /&gt;
* snapshot v2 and snapshot v3 generation&lt;br /&gt;
* unlimited EDSK management (update,creation as much as we want at the same time)&lt;br /&gt;
* binary output with optionnal AMSDOS header.&lt;br /&gt;
&lt;br /&gt;
== Compatibility options ==&lt;br /&gt;
&lt;br /&gt;
* MAXAM compatibility&lt;br /&gt;
** internal calculations are done with unsigned 16 bits integers&lt;br /&gt;
** comparison with single '='&lt;br /&gt;
&lt;br /&gt;
* AS80 compatibility (partial)&lt;br /&gt;
** internal calculations are done with 32 bits integers&lt;br /&gt;
** reference of current outputed adress with DEFB is the directive and not the outputed byte&lt;br /&gt;
** little differences in macro declarations&lt;br /&gt;
&lt;br /&gt;
This option was designed to compile the CNG player, not to support all the bugs of AS80&lt;br /&gt;
&lt;br /&gt;
== English &amp;amp; French documentation ==&lt;br /&gt;
&lt;br /&gt;
== Links &amp;amp; download ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.cpcwiki.eu/forum/programming/rasm-z80-assembler-in-beta/ Official CPCWiki thread]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Programming software]][[Category:Programming]][[Category:Assembler]]&lt;/div&gt;</summary>
		<author><name>Roudoudou</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=RASM&amp;diff=101043</id>
		<title>RASM</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=RASM&amp;diff=101043"/>
				<updated>2018-03-01T12:38:32Z</updated>
		
		<summary type="html">&lt;p&gt;Roudoudou: refactoring, etc&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''RASM''' stands for [[Roudoudou]] AsSeMbler.&lt;br /&gt;
&lt;br /&gt;
Unlike conventionnal Z80 assemblers, RASM is very fast and able to handle huge projects.&lt;br /&gt;
&lt;br /&gt;
Released in february 2017, the project is still active&lt;br /&gt;
&lt;br /&gt;
== Performances ==&lt;br /&gt;
&lt;br /&gt;
1 million lines in 0.03s on a modern computer,  100x faster than Sjasmplus claimed to be fast.&lt;br /&gt;
&lt;br /&gt;
== Generic features ==&lt;br /&gt;
&lt;br /&gt;
* integrated crunched sections (LZ48/LZ49/LZ4/ZX7/Exomizer) and load&amp;amp;crunch on the fly.&lt;br /&gt;
* ORG checking, unlimited memory workspaces where labels are shared.&lt;br /&gt;
* ALL undocumented instructions.&lt;br /&gt;
* conditionnal macro, unlimited &amp;amp; embeded loops with local labels, switch/case.&lt;br /&gt;
* floating point engine, mathematical functions.&lt;br /&gt;
* multiple binary output&lt;br /&gt;
&lt;br /&gt;
== Amstrad specific features ==&lt;br /&gt;
&lt;br /&gt;
* cartridge generation&lt;br /&gt;
* snapshot v2 and snapshot v3 generation&lt;br /&gt;
* unlimited EDSK management (update,creation as much as we want at the same time)&lt;br /&gt;
* binary output with optionnal AMSDOS header.&lt;br /&gt;
&lt;br /&gt;
== Compatibility options ==&lt;br /&gt;
&lt;br /&gt;
* MAXAM compatibility&lt;br /&gt;
- internal calculations are done with unsigned 16 bits integers&lt;br /&gt;
- comparison with single '='&lt;br /&gt;
&lt;br /&gt;
* AS80 compatibility (partial)&lt;br /&gt;
- internal calculations are done with 32 bits integers&lt;br /&gt;
- reference of current outputed adress with DEFB is the directive and not the outputed byte&lt;br /&gt;
- little differences in macro declarations&lt;br /&gt;
&lt;br /&gt;
This option was designed to compile the CNG player, not to support all the bugs of AS80&lt;br /&gt;
&lt;br /&gt;
== English &amp;amp; French documentation ==&lt;br /&gt;
&lt;br /&gt;
== Links &amp;amp; download ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.cpcwiki.eu/forum/programming/rasm-z80-assembler-in-beta/ Official CPCWiki thread]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Programming software]][[Category:Programming]][[Category:Assembler]]&lt;/div&gt;</summary>
		<author><name>Roudoudou</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=RASM&amp;diff=101042</id>
		<title>RASM</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=RASM&amp;diff=101042"/>
				<updated>2018-03-01T12:28:59Z</updated>
		
		<summary type="html">&lt;p&gt;Roudoudou: /* Features */ compilation performance&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''RASM''' stands for [[Roudoudou]] AsSeMbler.&lt;br /&gt;
&lt;br /&gt;
Unlike conventionnal Z80 assembler, RASM is very fast and able to handle huge projects.&lt;br /&gt;
&lt;br /&gt;
Released in february 2017, the project is still active&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
&lt;br /&gt;
* compilation performance: 1 million lines in 0.03s on a modern computer (100x faster than Sjasmplus claimed to be fast)&lt;br /&gt;
* integrated crunched sections (LZ48/LZ49/LZ4/ZX7/Exomizer) and load&amp;amp;crunch on the fly.&lt;br /&gt;
* cartridge &amp;amp; snapshot generation, file output with optionnal AMSDOS header.&lt;br /&gt;
* ORG checking, unlimited memory workspaces where labels are shared.&lt;br /&gt;
* ALL undocumented instructions.&lt;br /&gt;
* conditionnal macro, unlimited &amp;amp; embeded loops with local labels, switch/case.&lt;br /&gt;
* floating point engine, mathematical functions.&lt;br /&gt;
* MAXAM compatibility option.&lt;br /&gt;
* English &amp;amp; French documentation.&lt;br /&gt;
&lt;br /&gt;
== Links &amp;amp; download ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.cpcwiki.eu/forum/programming/rasm-z80-assembler-in-beta/ Official CPCWiki thread]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Programming software]][[Category:Programming]][[Category:Assembler]]&lt;/div&gt;</summary>
		<author><name>Roudoudou</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=SjasmPlus&amp;diff=101041</id>
		<title>SjasmPlus</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=SjasmPlus&amp;diff=101041"/>
				<updated>2018-03-01T12:26:44Z</updated>
		
		<summary type="html">&lt;p&gt;Roudoudou: /* Features */ this is NOT very fast (in fact its very slow)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here are the informations presented on the official website&amp;amp;nbsp;:&lt;br /&gt;
&lt;br /&gt;
== About ==&lt;br /&gt;
&lt;br /&gt;
SjASMPlus is Z80 Assembly Language Cross Compiler. It is available for Win32, DOS, Linux and FreeBSD(mainly 5.x) systems. It is based on SjASM source code by Sjoerd Mastijn - http://xl2s.tk SJASMPlus is a really powerfull Z80 Cross Compiler.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
&lt;br /&gt;
* Z80/R800 documented and undocumented opcodes support&lt;br /&gt;
* 3-pass design&lt;br /&gt;
* Built-in Lua scripting engine&lt;br /&gt;
* Compilation performance: 1 million lines by 2-3 seconds on modern computer&lt;br /&gt;
* Code inlining through colon (LD A,C:INC A:PUSH AF:IFDEF FX:LD A,D:ENDIF…)&lt;br /&gt;
* Structures to define data structures in memory more easily (use STRUCT pseudo-op)&lt;br /&gt;
* Conditional assembly&lt;br /&gt;
* Macro definitions&lt;br /&gt;
* Local labels&lt;br /&gt;
* User’s messages&lt;br /&gt;
* Temporary labels&lt;br /&gt;
* Special modes for 8bit computers: ZX-Spectrum 48/128, Scorpion 256, ATM-Turbo 512&lt;br /&gt;
* Defines and array of defines&lt;br /&gt;
* Fake instructions as LD HL,DE (LD H,D:LD L,E)&lt;br /&gt;
* Source and binary file inclusion&lt;br /&gt;
* Multiline block comments&lt;br /&gt;
* Multi file output and file updating&lt;br /&gt;
* Librairies (trough use of MODULE and IFUSED directives)&lt;br /&gt;
&lt;br /&gt;
== Missing features ==&lt;br /&gt;
&lt;br /&gt;
SJASMPlus does not have support for the CPC range of computers. It can of course assemble working z80 code, but does not add an amsdos [[header]], and can't make a [[snapshot]] to use with emulators.&lt;br /&gt;
&lt;br /&gt;
However, there is existing code for other platforms, and some minor adaptations should be enough.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
* Official Web site&amp;amp;nbsp;: [http://sjasmplus.sourceforge.net/ sjasmplus.sourceforge.net/]&lt;br /&gt;
&lt;br /&gt;
[[Category:CrossDev]] [[Category:Programming software]]&lt;/div&gt;</summary>
		<author><name>Roudoudou</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=AMSDOS_Header&amp;diff=100409</id>
		<title>AMSDOS Header</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=AMSDOS_Header&amp;diff=100409"/>
				<updated>2017-12-13T14:51:35Z</updated>
		
		<summary type="html">&lt;p&gt;Roudoudou: moar info&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In [[AMSDOS]] it is possible to store files in two ways: headerless and with a header. Headerless files are often files which were created with [[OPENOUT]] and ''SAVE&amp;quot;filename&amp;quot;,a''. Programs normally have a file header, which is consists of 128 bytes and contains the following data:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Byte 00: User number (value from 0 to 15 or #E5 for deleted entries)&lt;br /&gt;
Byte 01 to 08: filename (fill unused char with spaces)&lt;br /&gt;
Byte 09 bis 11: Extension (fill unused char with spaces)&lt;br /&gt;
Byte 16: first block (tape only)&lt;br /&gt;
Byte 17: first block (tape only)&lt;br /&gt;
Byte 18: type-byte (0: basic 1:protected 2:binary)&lt;br /&gt;
Byte 21 and 22: loading address LSB first&lt;br /&gt;
Byte 23: first block (tape only?)&lt;br /&gt;
Byte 24 and 25: file length LSB first&lt;br /&gt;
Byte 26 and 27: execution address for machine code programs LSB first&lt;br /&gt;
Byte 64 and 66: 24 bits file length LSB first&lt;br /&gt;
Byte 67 and 68: checksum for byte 00 to byte 66 LSB first&lt;br /&gt;
Byte 69 to 127: undefined content, free to use&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To calculate the checksum, just add byte 00 to byte 66 to each other.&lt;br /&gt;
&lt;br /&gt;
This is only a summary. All details are in [[Firmware Guide]] chapter 9, page 4.&lt;br /&gt;
&lt;br /&gt;
[[Category:Programming]] [[Category:Disc Operating System]]&lt;/div&gt;</summary>
		<author><name>Roudoudou</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=LZ48/LZ49&amp;diff=100337</id>
		<title>LZ48/LZ49</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=LZ48/LZ49&amp;diff=100337"/>
				<updated>2017-12-12T07:47:15Z</updated>
		
		<summary type="html">&lt;p&gt;Roudoudou: pres&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;LZ48 and LZ49 are derivated from LZ4 crunch/decrunch format, originally created by Yann Collet&lt;br /&gt;
&lt;br /&gt;
Basically limitations are removed&lt;br /&gt;
* no need to have 4 bytes literal values at the beginning&lt;br /&gt;
* no need to have 4 bytes literal values at the end&lt;br /&gt;
* compression is optimal as the key search do not use a hash table&lt;br /&gt;
&lt;br /&gt;
Offset changes from 16 bits to 8 bits for LZ48 and 9 bits for LZ49.&lt;br /&gt;
&lt;br /&gt;
The compression is good (not as good as ZX7 or Exomizer) but the decompression speed is very fast.&lt;br /&gt;
&lt;br /&gt;
As there is no header, the cruncher is suitable to crunch a big amount of small data areas.&lt;br /&gt;
&lt;br /&gt;
Z80 assembly cruncher, Z80 assembly decruncher and C sources may be found in the&lt;br /&gt;
&lt;br /&gt;
Official cpcwiki topic [http://www.cpcwiki.eu/forum/programming/lz48-cruncherdecruncher/ here]&lt;/div&gt;</summary>
		<author><name>Roudoudou</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=LZ48/LZ49&amp;diff=100336</id>
		<title>LZ48/LZ49</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=LZ48/LZ49&amp;diff=100336"/>
				<updated>2017-12-12T07:45:44Z</updated>
		
		<summary type="html">&lt;p&gt;Roudoudou: first draft&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;LZ48 and LZ49 are derivated from LZ4 crunch/decrunch format, originally created by Yann Collet&lt;br /&gt;
&lt;br /&gt;
Basically limitations are removed&lt;br /&gt;
- no need to have 4 bytes literal values at the beginning&lt;br /&gt;
- no need to have 4 bytes literal values at the end&lt;br /&gt;
- compression is optimal as the key search do not use a hash table&lt;br /&gt;
&lt;br /&gt;
Offset changes from 16 bits to 8 bits for LZ48 and 9 bits for LZ49&lt;br /&gt;
&lt;br /&gt;
The compression is good (not as good as ZX7 or Exomizer) but the decompression speed is very fast&lt;br /&gt;
&lt;br /&gt;
As there is no header, the cruncher is suitable to crunch a big amount of small data areas&lt;br /&gt;
&lt;br /&gt;
Official cpcwiki topic [http://www.cpcwiki.eu/forum/programming/lz48-cruncherdecruncher/ here]&lt;/div&gt;</summary>
		<author><name>Roudoudou</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=ASM_Intro_1&amp;diff=100335</id>
		<title>ASM Intro 1</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=ASM_Intro_1&amp;diff=100335"/>
				<updated>2017-12-12T07:40:20Z</updated>
		
		<summary type="html">&lt;p&gt;Roudoudou: /* Specs */ details about intro&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''ASM Intro 1''' a [[Plus]] only demo by [[Roudoudou]] released 17th May 2008.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Specs ==&lt;br /&gt;
&lt;br /&gt;
* CPC+ only - 128Ko RAM (memory won't be checked by the intro)&lt;br /&gt;
&lt;br /&gt;
The demo feature a huge static offset mapping rendering.&lt;br /&gt;
&lt;br /&gt;
The demo is not in fullscreen that's why the scrolltext is displayed with border split-raster (16 splits each lines)&lt;br /&gt;
&lt;br /&gt;
Press space during the intro to disabled borderscroll and speed up the rendering (from 14 to 17 fps approx.)&lt;br /&gt;
&lt;br /&gt;
== Staff ==&lt;br /&gt;
&lt;br /&gt;
* Code: [[Roudoudou]] from [[Flower Corp.]]&lt;br /&gt;
* SFX: [[Shap]] from [[Overlanders]]&lt;br /&gt;
&lt;br /&gt;
== Screenshots ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery caption=&amp;quot;ASM Intro 1 - screenshots&amp;quot;&amp;gt;&lt;br /&gt;
Image:Roudoudou asm intro1x1.png&lt;br /&gt;
Image:Roudoudou asm intro 1x2.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
* '''CPC-Power :''' http://www.cpc-power.com/index.php?page=detail&amp;amp;num=7411&lt;br /&gt;
&lt;br /&gt;
* '''DEMOZOO :''' https://demozoo.org/productions/122359/&lt;br /&gt;
&lt;br /&gt;
* '''POUËT :''' https://www.pouet.net/prod.php?which=50570&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Demos]][[Category:Plus Demos]][[Category:Demos 2008]]&lt;/div&gt;</summary>
		<author><name>Roudoudou</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=CRTC%C2%B3&amp;diff=100226</id>
		<title>CRTC³</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=CRTC%C2%B3&amp;diff=100226"/>
				<updated>2017-12-10T22:25:45Z</updated>
		
		<summary type="html">&lt;p&gt;Roudoudou: /* who? */ groups&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''' CRTC³ ''' won the [[Alchimie|Alchimie 12]] (2017) composition, ranked '''1st''' Place and winning over [[Eerie Forest]] (a GX4000 mega-intro from fellow [[Overflow]]) and prods on '''Atari STf''' and '''Amiga''' formats.&lt;br /&gt;
&lt;br /&gt;
This Demo actually sets expectation on all the next Demos on Amstrad PLUS format and established the power of the ROM cartridge and the interest of [[C4CPC]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== who? ==&lt;br /&gt;
&lt;br /&gt;
Groups : [[Flower Corp.]] [[Futur's]] [[X-Men]] [[Resistance]]&lt;br /&gt;
&lt;br /&gt;
'''[[Roudoudou]]''' : Main code, graphics.&lt;br /&gt;
&lt;br /&gt;
'''Zik''' : code, music.&lt;br /&gt;
&lt;br /&gt;
'''CoyHot''' : graphics.&lt;br /&gt;
&lt;br /&gt;
'''fra''' : graphics.&lt;br /&gt;
&lt;br /&gt;
'''Hwikaa''' : 3D and Graphics&lt;br /&gt;
&lt;br /&gt;
'''Zisquier''' : Electric Guitar samples&lt;br /&gt;
&lt;br /&gt;
== what? ==&lt;br /&gt;
&lt;br /&gt;
Amstrad '''6128+''' cartridge demo - Ranked '''1st''' at [[Alchimie|Alchimie12]] - 2017&lt;br /&gt;
&lt;br /&gt;
Best to be seen on a real amstrad 6128PLUS, it needs a built-in 128k config, hence modified 464PLUS motherboards may work as well but stock 464PLUS or GX4000 cannot run it. When initialising machine, a test is done for memory expansion compatibility and IM2 bug support. This will guarantee a proper execution of the demo and display a message with almost all emulators, warning about proper support, as the SID sound replay is awfull with all emulators (except ACE).&lt;br /&gt;
&lt;br /&gt;
This Demo clearly needs you to have a [[C4CPC]] cartridge.&lt;br /&gt;
&lt;br /&gt;
This is pronounced '''CRTC cube'''.&lt;br /&gt;
&lt;br /&gt;
It was praised for its awesome Music featuring some Electric Guitar sampled sounds, smooth animation and 16bit styled effects and palette, and really impressed Atari and Amiga fans at the compo.&lt;br /&gt;
&lt;br /&gt;
== FX ==&lt;br /&gt;
&lt;br /&gt;
- progressive GFX appearance&lt;br /&gt;
&lt;br /&gt;
- 512 simultaneous colors plasma (with dithering)&lt;br /&gt;
&lt;br /&gt;
- screen break opening&lt;br /&gt;
&lt;br /&gt;
- 3D tunnel with progressive colors&lt;br /&gt;
&lt;br /&gt;
- Big GFX distorsion with scrolling and vector ballz&lt;br /&gt;
&lt;br /&gt;
- dots sprites, ending with 4 huge balls&lt;br /&gt;
&lt;br /&gt;
- 320 colors GFX with hardware sprites for details&lt;br /&gt;
&lt;br /&gt;
- 64 colors high resolution wobbler&lt;br /&gt;
&lt;br /&gt;
- textured rubber bar with many (dis)torsions&lt;br /&gt;
&lt;br /&gt;
- 3D wasp with multi-layers offset mapping technic, combined with rasters and hardware scrolling&lt;br /&gt;
&lt;br /&gt;
- variable font endscroll with fading and blended lines&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Music featuring DMA sid voices all the time and samples from dots sprites part until the end&lt;br /&gt;
&lt;br /&gt;
Can you find the cheatpart?&lt;br /&gt;
&lt;br /&gt;
== videodrome ==&lt;br /&gt;
&lt;br /&gt;
{{#ev:youtube|PgMJ39wfoBM|784}}&lt;br /&gt;
&lt;br /&gt;
A lesson in coding and Tricks by Roudoudou himself :&lt;br /&gt;
{{#ev:youtube|fVirsB6pYC8|784}}&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
* CPC-Power : http://www.cpc-power.com/index.php?page=detail&amp;amp;num=14940&lt;br /&gt;
&lt;br /&gt;
* Pouët : http://www.pouet.net/prod.php?which=72279&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Demos]][[Category:Plus Demos]][[Category:Demos 2017]][[Category:Video contents]][[Category:Cartridges]]&lt;/div&gt;</summary>
		<author><name>Roudoudou</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=ASM_Intro_1&amp;diff=100225</id>
		<title>ASM Intro 1</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=ASM_Intro_1&amp;diff=100225"/>
				<updated>2017-12-10T22:24:13Z</updated>
		
		<summary type="html">&lt;p&gt;Roudoudou: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''ASM Intro 1''' a [[Plus]] only demo by [[Roudoudou]] released 26-08-2000.&lt;br /&gt;
&lt;br /&gt;
Known for very nice 4096 color plasma effect!&lt;br /&gt;
&lt;br /&gt;
== Screenshots ==&lt;br /&gt;
&lt;br /&gt;
(wrong screenshots, thoses are ASIC Intro 1 screenshots...)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery caption=&amp;quot;ASM Intro 1 - screenshots&amp;quot;&amp;gt;&lt;br /&gt;
Image:AINTRO1 screen shot 1.jpg&lt;br /&gt;
Image:AINTRO1 screen shot 2.jpg&lt;br /&gt;
Image:AINTRO1 screen shot 3.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Demos]][[Category:Plus Demos]][[Category:Demos 2000]]&lt;/div&gt;</summary>
		<author><name>Roudoudou</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=Roudoudou&amp;diff=100224</id>
		<title>Roudoudou</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=Roudoudou&amp;diff=100224"/>
				<updated>2017-12-10T22:22:41Z</updated>
		
		<summary type="html">&lt;p&gt;Roudoudou: /* Demo releases */ release&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:CPC scene members]]&lt;br /&gt;
[[Image:Roudoudou moudubou.jpg|thumb|Roudoudou's best side, circa 2017. With more hair he could add &amp;quot;PLUS&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
'''Roudoudou''' (Edouard Bergé) is a french coder from the group '''[[Flower Corp.]]'''&lt;br /&gt;
&lt;br /&gt;
He is well known for being Hair-challenged and a very talented coder on the CPC PLUS, despite few actual releases.&lt;br /&gt;
&lt;br /&gt;
He entered the Legend with his [[CRTC³]] Demo (2017), shadowing in the process another legend : [[Overflow]].&lt;br /&gt;
&lt;br /&gt;
== Tools releases ==&lt;br /&gt;
&lt;br /&gt;
* [[LZ48/LZ49]] (Z80 cruncher/decruncher + C sources for crossdev)&lt;br /&gt;
* [[RASM]] (modern platform cross-dev assembler)&lt;br /&gt;
&lt;br /&gt;
== Demo releases ==&lt;br /&gt;
&lt;br /&gt;
* [[Power System Megademo 1999]] (originally called Basic demo 1)&lt;br /&gt;
* [[Je vous nique tous avec mes demos en BaZic de merde]] (originally called Basic demo 2)&lt;br /&gt;
* [[Basic Demo 3]] (CPC Plus)&lt;br /&gt;
* [[ASM Intro 1]] (CPC Plus)&lt;br /&gt;
* [[ASIC Intro 1]] (CPC Plus)&lt;br /&gt;
* [[ASIC Intro 2]] (CPC Plus)&lt;br /&gt;
&lt;br /&gt;
* '''[[CRTC³]]''' : ranked 1st at Alchimie12&lt;br /&gt;
&lt;br /&gt;
== Videodrome ==&lt;br /&gt;
&lt;br /&gt;
'''[[CRTC³]]''' : Amstrad '''6128+''' cartridge demo - Ranked '''1st''' at [[Alchimie|'''Alchimie12''']] - 2017&lt;br /&gt;
&lt;br /&gt;
{{#ev:youtube|PgMJ39wfoBM|784}}&lt;br /&gt;
&lt;br /&gt;
'''Pouët :''' http://www.pouet.net/prod.php?which=72279&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
* '''Pouët :''' http://www.pouet.net/user.php?who=32556&lt;br /&gt;
&lt;br /&gt;
* '''Youtube channel :''' https://www.youtube.com/channel/UC6EA-gbKjpgUBIzMdzP82Ag&lt;/div&gt;</summary>
		<author><name>Roudoudou</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=Flower_Corp.&amp;diff=100223</id>
		<title>Flower Corp.</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=Flower_Corp.&amp;diff=100223"/>
				<updated>2017-12-10T22:20:06Z</updated>
		
		<summary type="html">&lt;p&gt;Roudoudou: /* Members */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Page is a stub.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also known as '''FLC''', '''FLower Corp.''' is a French Amstrad Demoscene group.&lt;br /&gt;
&lt;br /&gt;
[[File:FLC logo.png]]&lt;br /&gt;
&lt;br /&gt;
== Members ==&lt;br /&gt;
&lt;br /&gt;
* [[Roudoudou]]&lt;br /&gt;
&lt;br /&gt;
The two other members were never involved any CPC production&lt;br /&gt;
&lt;br /&gt;
* Phar&lt;br /&gt;
&lt;br /&gt;
* Pyt&lt;br /&gt;
&lt;br /&gt;
== Prods ==&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
* POUËT : http://www.pouet.net/groups.php?which=2088&lt;br /&gt;
&lt;br /&gt;
* DEMOZOO : https://demozoo.org/groups/21717/&lt;br /&gt;
&lt;br /&gt;
[[Category:Scene group]]&lt;/div&gt;</summary>
		<author><name>Roudoudou</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=RASM&amp;diff=100205</id>
		<title>RASM</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=RASM&amp;diff=100205"/>
				<updated>2017-12-10T19:41:09Z</updated>
		
		<summary type="html">&lt;p&gt;Roudoudou: cpcwiki link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;RASM stand for Roudoudou assembler&lt;br /&gt;
&lt;br /&gt;
Unlike conventionnal Z80 assembler, RASM is very fast and able to handle huge projects.&lt;br /&gt;
&lt;br /&gt;
Released in february 2017, the project is still active&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
&lt;br /&gt;
* damn fast assembling&lt;br /&gt;
* integrated crunched sections (LZ48/LZ49/LZ4/ZX7/Exomizer) and load&amp;amp;crunch on the fly&lt;br /&gt;
* cartridge &amp;amp; snapshot generation, file output with optionnal AMSDOS header&lt;br /&gt;
* ORG checking, unlimited memory workspaces where labels are shared&lt;br /&gt;
* ALL undocumented instructions&lt;br /&gt;
* conditionnal macro, unlimited &amp;amp; embeded loops with local labels, switch/case&lt;br /&gt;
* floating point engine, mathematical functions&lt;br /&gt;
* MAXAM compatibility option&lt;br /&gt;
* English &amp;amp; French documentation&lt;br /&gt;
&lt;br /&gt;
== Link &amp;amp; download ==&lt;br /&gt;
&lt;br /&gt;
[http://www.cpcwiki.eu/forum/programming/rasm-z80-assembler-in-beta/ official CPCWiki thread]&lt;/div&gt;</summary>
		<author><name>Roudoudou</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=RASM&amp;diff=100204</id>
		<title>RASM</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=RASM&amp;diff=100204"/>
				<updated>2017-12-10T19:39:28Z</updated>
		
		<summary type="html">&lt;p&gt;Roudoudou: pres&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;RASM stand for Roudoudou assembler&lt;br /&gt;
&lt;br /&gt;
Unlike conventionnal Z80 assembler, RASM is very fast and able to handle huge projects.&lt;br /&gt;
&lt;br /&gt;
Released in february 2017, the project is still active&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
&lt;br /&gt;
* damn fast assembling&lt;br /&gt;
* integrated crunched sections (LZ48/LZ49/LZ4/ZX7/Exomizer) and load&amp;amp;crunch on the fly&lt;br /&gt;
* cartridge &amp;amp; snapshot generation, file output with optionnal AMSDOS header&lt;br /&gt;
* ORG checking, unlimited memory workspaces where labels are shared&lt;br /&gt;
* ALL undocumented instructions&lt;br /&gt;
* conditionnal macro, unlimited &amp;amp; embeded loops with local labels, switch/case&lt;br /&gt;
* floating point engine, mathematical functions&lt;br /&gt;
* MAXAM compatibility option&lt;br /&gt;
* English &amp;amp; French documentation&lt;/div&gt;</summary>
		<author><name>Roudoudou</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=RASM&amp;diff=100203</id>
		<title>RASM</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=RASM&amp;diff=100203"/>
				<updated>2017-12-10T19:38:22Z</updated>
		
		<summary type="html">&lt;p&gt;Roudoudou: first draft&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;RASM stand for Roudoudou assembler&lt;br /&gt;
&lt;br /&gt;
Unlike conventionnal Z80 assembler, RASM is the fastest ever, able to handle huge projects.&lt;br /&gt;
&lt;br /&gt;
First release in february 2017, the project is still active&lt;br /&gt;
&lt;br /&gt;
== Features&lt;br /&gt;
&lt;br /&gt;
* damn fast assembling&lt;br /&gt;
* integrated crunched sections (LZ48/LZ49/LZ4/ZX7/Exomizer) and load&amp;amp;crunch on the fly&lt;br /&gt;
* cartridge &amp;amp; snapshot generation, file output with optionnal AMSDOS header&lt;br /&gt;
* ORG checking, unlimited memory workspaces where labels are shared&lt;br /&gt;
* ALL undocumented instructions&lt;br /&gt;
* conditionnal macro, unlimited &amp;amp; embeded loops with local labels, switch/case&lt;br /&gt;
* floating point engine, mathematical functions&lt;br /&gt;
* MAXAM compatibility option&lt;br /&gt;
* English &amp;amp; French documentation&lt;/div&gt;</summary>
		<author><name>Roudoudou</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=CRTC%C2%B3&amp;diff=100201</id>
		<title>CRTC³</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=CRTC%C2%B3&amp;diff=100201"/>
				<updated>2017-12-10T19:31:59Z</updated>
		
		<summary type="html">&lt;p&gt;Roudoudou: /* what? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''' CRTC³ ''' won the [[Alchimie|Alchimie 12]] (2017) composition, ranked '''1st''' Place and winning over [[Eerie Forest]] (a GX4000 mega-intro from fellow [[Overflow]]) and prods on '''Atari STf''' and '''Amiga''' formats.&lt;br /&gt;
&lt;br /&gt;
This Demo actually sets expectation on all the next Demos on Amstrad PLUS format and established the power of the ROM cartridge and the interest of [[C4CPC]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== who? ==&lt;br /&gt;
&lt;br /&gt;
'''[[Roudoudou]]''' : Main code, graphics.&lt;br /&gt;
&lt;br /&gt;
'''Zik''' : code, music.&lt;br /&gt;
&lt;br /&gt;
'''CoyHot''' : graphics.&lt;br /&gt;
&lt;br /&gt;
'''fra''' : graphics.&lt;br /&gt;
&lt;br /&gt;
'''Hwikaa''' : 3D and Graphics&lt;br /&gt;
&lt;br /&gt;
'''Zisquier''' : Electric Guitar samples&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== what? ==&lt;br /&gt;
&lt;br /&gt;
Amstrad '''6128+''' cartridge demo - Ranked '''1st''' at [[Alchimie|Alchimie12]] - 2017&lt;br /&gt;
&lt;br /&gt;
Best to be seen on a real amstrad 6128PLUS, it needs a built-in 128k config, hence modified 464PLUS motherboards may work as well but stock 464PLUS or GX4000 cannot run it. When initialising machine, a test is done for memory expansion compatibility and IM2 bug support. This will guarantee a proper execution of the demo and display a message with almost all emulators, warning about proper support, as the SID sound replay is awfull with all emulators (except ACE).&lt;br /&gt;
&lt;br /&gt;
This Demo clearly needs you to have a [[C4CPC]] cartridge.&lt;br /&gt;
&lt;br /&gt;
This is pronounced '''CRTC cube'''.&lt;br /&gt;
&lt;br /&gt;
It was praised for its awesome Music featuring some Electric Guitar sampled sounds, smooth animation and 16bit styled effects and palette, and really impressed Atari and Amiga fans at the compo.&lt;br /&gt;
&lt;br /&gt;
== FX ==&lt;br /&gt;
&lt;br /&gt;
- progressive GFX appearance&lt;br /&gt;
&lt;br /&gt;
- 512 simultaneous colors plasma (with dithering)&lt;br /&gt;
&lt;br /&gt;
- screen break opening&lt;br /&gt;
&lt;br /&gt;
- 3D tunnel with progressive colors&lt;br /&gt;
&lt;br /&gt;
- Big GFX distorsion with scrolling and vector ballz&lt;br /&gt;
&lt;br /&gt;
- dots sprites, ending with 4 huge balls&lt;br /&gt;
&lt;br /&gt;
- 320 colors GFX with hardware sprites for details&lt;br /&gt;
&lt;br /&gt;
- 64 colors high resolution wobbler&lt;br /&gt;
&lt;br /&gt;
- textured rubber bar with many (dis)torsions&lt;br /&gt;
&lt;br /&gt;
- 3D wasp with multi-layers offset mapping technic, combined with rasters and hardware scrolling&lt;br /&gt;
&lt;br /&gt;
- variable font endscroll with fading and blended lines&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Music featuring DMA sid voices all the time and samples from dots sprites part until the end&lt;br /&gt;
&lt;br /&gt;
Can you find the cheatpart?&lt;br /&gt;
&lt;br /&gt;
== videodrome ==&lt;br /&gt;
&lt;br /&gt;
{{#ev:youtube|PgMJ39wfoBM|784}}&lt;br /&gt;
&lt;br /&gt;
{{#ev:youtube|fVirsB6pYC8|784}}&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
* CPC-Power : http://www.cpc-power.com/index.php?page=detail&amp;amp;num=14940&lt;br /&gt;
&lt;br /&gt;
* Pouët : http://www.pouet.net/prod.php?which=72279&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Demos]][[Category:Plus Demos]][[Category:Demos 2017]][[Category:Video contents]][[Category:Cartridges]]&lt;/div&gt;</summary>
		<author><name>Roudoudou</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=CRTC%C2%B3&amp;diff=100200</id>
		<title>CRTC³</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=CRTC%C2%B3&amp;diff=100200"/>
				<updated>2017-12-10T19:28:19Z</updated>
		
		<summary type="html">&lt;p&gt;Roudoudou: /* FX */ orth&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''' CRTC³ ''' won the [[Alchimie|Alchimie 12]] (2017) composition, ranked '''1st''' Place and winning over [[Eerie Forest]] (a GX4000 mega-intro from fellow [[Overflow]]) and prods on '''Atari STf''' and '''Amiga''' formats.&lt;br /&gt;
&lt;br /&gt;
This Demo actually sets expectation on all the next Demos on Amstrad PLUS format and established the power of the ROM cartridge and the interest of [[C4CPC]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== who? ==&lt;br /&gt;
&lt;br /&gt;
'''[[Roudoudou]]''' : Main code, graphics.&lt;br /&gt;
&lt;br /&gt;
'''Zik''' : code, music.&lt;br /&gt;
&lt;br /&gt;
'''CoyHot''' : graphics.&lt;br /&gt;
&lt;br /&gt;
'''fra''' : graphics.&lt;br /&gt;
&lt;br /&gt;
'''Hwikaa''' : 3D and Graphics&lt;br /&gt;
&lt;br /&gt;
'''Zisquier''' : Electric Guitar samples&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== what? ==&lt;br /&gt;
&lt;br /&gt;
Amstrad '''6128+''' cartridge demo - Ranked '''1st''' at [[Alchimie|Alchimie12]] - 2017&lt;br /&gt;
&lt;br /&gt;
Best to be seen on a real amstrad 6128PLUS, it needs a built-in 128k config, hence modified 464PLUS motherboards may work as well but stock 464PLUS or GX4000 cannot run it.&lt;br /&gt;
&lt;br /&gt;
This Demo clearly needs you to have a [[C4CPC]] cartridge.&lt;br /&gt;
&lt;br /&gt;
This is pronounced '''CRTC cube'''.&lt;br /&gt;
&lt;br /&gt;
It was praised for its awesome Music featuring some Electric Guitar sampled sounds, smooth animation and 16bit styled effects and palette, and really impressed Atari and Amiga fans at the compo.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== FX ==&lt;br /&gt;
&lt;br /&gt;
- progressive GFX appearance&lt;br /&gt;
&lt;br /&gt;
- 512 simultaneous colors plasma (with dithering)&lt;br /&gt;
&lt;br /&gt;
- screen break opening&lt;br /&gt;
&lt;br /&gt;
- 3D tunnel with progressive colors&lt;br /&gt;
&lt;br /&gt;
- Big GFX distorsion with scrolling and vector ballz&lt;br /&gt;
&lt;br /&gt;
- dots sprites, ending with 4 huge balls&lt;br /&gt;
&lt;br /&gt;
- 320 colors GFX with hardware sprites for details&lt;br /&gt;
&lt;br /&gt;
- 64 colors high resolution wobbler&lt;br /&gt;
&lt;br /&gt;
- textured rubber bar with many (dis)torsions&lt;br /&gt;
&lt;br /&gt;
- 3D wasp with multi-layers offset mapping technic, combined with rasters and hardware scrolling&lt;br /&gt;
&lt;br /&gt;
- variable font endscroll with fading and blended lines&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Music featuring DMA sid voices all the time and samples from dots sprites part until the end&lt;br /&gt;
&lt;br /&gt;
Can you find the cheatpart?&lt;br /&gt;
&lt;br /&gt;
== videodrome ==&lt;br /&gt;
&lt;br /&gt;
{{#ev:youtube|PgMJ39wfoBM|784}}&lt;br /&gt;
&lt;br /&gt;
{{#ev:youtube|fVirsB6pYC8|784}}&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
* CPC-Power : http://www.cpc-power.com/index.php?page=detail&amp;amp;num=14940&lt;br /&gt;
&lt;br /&gt;
* Pouët : http://www.pouet.net/prod.php?which=72279&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Demos]][[Category:Plus Demos]][[Category:Demos 2017]][[Category:Video contents]][[Category:Cartridges]]&lt;/div&gt;</summary>
		<author><name>Roudoudou</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=CRTC%C2%B3&amp;diff=100199</id>
		<title>CRTC³</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=CRTC%C2%B3&amp;diff=100199"/>
				<updated>2017-12-10T19:27:49Z</updated>
		
		<summary type="html">&lt;p&gt;Roudoudou: /* FX */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''' CRTC³ ''' won the [[Alchimie|Alchimie 12]] (2017) composition, ranked '''1st''' Place and winning over [[Eerie Forest]] (a GX4000 mega-intro from fellow [[Overflow]]) and prods on '''Atari STf''' and '''Amiga''' formats.&lt;br /&gt;
&lt;br /&gt;
This Demo actually sets expectation on all the next Demos on Amstrad PLUS format and established the power of the ROM cartridge and the interest of [[C4CPC]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== who? ==&lt;br /&gt;
&lt;br /&gt;
'''[[Roudoudou]]''' : Main code, graphics.&lt;br /&gt;
&lt;br /&gt;
'''Zik''' : code, music.&lt;br /&gt;
&lt;br /&gt;
'''CoyHot''' : graphics.&lt;br /&gt;
&lt;br /&gt;
'''fra''' : graphics.&lt;br /&gt;
&lt;br /&gt;
'''Hwikaa''' : 3D and Graphics&lt;br /&gt;
&lt;br /&gt;
'''Zisquier''' : Electric Guitar samples&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== what? ==&lt;br /&gt;
&lt;br /&gt;
Amstrad '''6128+''' cartridge demo - Ranked '''1st''' at [[Alchimie|Alchimie12]] - 2017&lt;br /&gt;
&lt;br /&gt;
Best to be seen on a real amstrad 6128PLUS, it needs a built-in 128k config, hence modified 464PLUS motherboards may work as well but stock 464PLUS or GX4000 cannot run it.&lt;br /&gt;
&lt;br /&gt;
This Demo clearly needs you to have a [[C4CPC]] cartridge.&lt;br /&gt;
&lt;br /&gt;
This is pronounced '''CRTC cube'''.&lt;br /&gt;
&lt;br /&gt;
It was praised for its awesome Music featuring some Electric Guitar sampled sounds, smooth animation and 16bit styled effects and palette, and really impressed Atari and Amiga fans at the compo.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== FX ==&lt;br /&gt;
&lt;br /&gt;
- progressive GFX appearance&lt;br /&gt;
&lt;br /&gt;
- 512 simultaneous colors plasma (with dithering)&lt;br /&gt;
&lt;br /&gt;
- screen break opening&lt;br /&gt;
&lt;br /&gt;
- 3D tunnel with progressive colors&lt;br /&gt;
&lt;br /&gt;
- Big GFX ondulation with scrolling and vector ballz&lt;br /&gt;
&lt;br /&gt;
- dots sprites, ending with 4 huge balls&lt;br /&gt;
&lt;br /&gt;
- 320 colors GFX with hardware sprites for details&lt;br /&gt;
&lt;br /&gt;
- 64 colors high resolution wobbler&lt;br /&gt;
&lt;br /&gt;
- textured rubber bar with many (dis)torsions&lt;br /&gt;
&lt;br /&gt;
- 3D wasp with multi-layers offset mapping technic, combined with rasters and hardware scrolling&lt;br /&gt;
&lt;br /&gt;
- variable font endscroll with fading and blended lines&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Music featuring DMA sid voices all the time and samples from dots sprites part until the end&lt;br /&gt;
&lt;br /&gt;
Can you find the cheatpart?&lt;br /&gt;
&lt;br /&gt;
== videodrome ==&lt;br /&gt;
&lt;br /&gt;
{{#ev:youtube|PgMJ39wfoBM|784}}&lt;br /&gt;
&lt;br /&gt;
{{#ev:youtube|fVirsB6pYC8|784}}&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
* CPC-Power : http://www.cpc-power.com/index.php?page=detail&amp;amp;num=14940&lt;br /&gt;
&lt;br /&gt;
* Pouët : http://www.pouet.net/prod.php?which=72279&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Demos]][[Category:Plus Demos]][[Category:Demos 2017]][[Category:Video contents]][[Category:Cartridges]]&lt;/div&gt;</summary>
		<author><name>Roudoudou</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=CRTC%C2%B3&amp;diff=100198</id>
		<title>CRTC³</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=CRTC%C2%B3&amp;diff=100198"/>
				<updated>2017-12-10T19:26:38Z</updated>
		
		<summary type="html">&lt;p&gt;Roudoudou: /* videodrome */ behind the scenes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''' CRTC³ ''' won the [[Alchimie|Alchimie 12]] (2017) composition, ranked '''1st''' Place and winning over [[Eerie Forest]] (a GX4000 mega-intro from fellow [[Overflow]]) and prods on '''Atari STf''' and '''Amiga''' formats.&lt;br /&gt;
&lt;br /&gt;
This Demo actually sets expectation on all the next Demos on Amstrad PLUS format and established the power of the ROM cartridge and the interest of [[C4CPC]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== who? ==&lt;br /&gt;
&lt;br /&gt;
'''[[Roudoudou]]''' : Main code, graphics.&lt;br /&gt;
&lt;br /&gt;
'''Zik''' : code, music.&lt;br /&gt;
&lt;br /&gt;
'''CoyHot''' : graphics.&lt;br /&gt;
&lt;br /&gt;
'''fra''' : graphics.&lt;br /&gt;
&lt;br /&gt;
'''Hwikaa''' : 3D and Graphics&lt;br /&gt;
&lt;br /&gt;
'''Zisquier''' : Electric Guitar samples&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== what? ==&lt;br /&gt;
&lt;br /&gt;
Amstrad '''6128+''' cartridge demo - Ranked '''1st''' at [[Alchimie|Alchimie12]] - 2017&lt;br /&gt;
&lt;br /&gt;
Best to be seen on a real amstrad 6128PLUS, it needs a built-in 128k config, hence modified 464PLUS motherboards may work as well but stock 464PLUS or GX4000 cannot run it.&lt;br /&gt;
&lt;br /&gt;
This Demo clearly needs you to have a [[C4CPC]] cartridge.&lt;br /&gt;
&lt;br /&gt;
This is pronounced '''CRTC cube'''.&lt;br /&gt;
&lt;br /&gt;
It was praised for its awesome Music featuring some Electric Guitar sampled sounds, smooth animation and 16bit styled effects and palette, and really impressed Atari and Amiga fans at the compo.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== FX ==&lt;br /&gt;
&lt;br /&gt;
- progressive GFX appearance&lt;br /&gt;
&lt;br /&gt;
- 512 simultaneous colors plasma (with dithering)&lt;br /&gt;
&lt;br /&gt;
- screen break opening&lt;br /&gt;
&lt;br /&gt;
- 3D tunnel with progressive colors&lt;br /&gt;
&lt;br /&gt;
- dots sprites, ending with 4 huge balls&lt;br /&gt;
&lt;br /&gt;
- 320 colors GFX with hardware sprites for details&lt;br /&gt;
&lt;br /&gt;
- 64 colors high resolution wobbler&lt;br /&gt;
&lt;br /&gt;
- textured rubber bar with many (dis)torsions&lt;br /&gt;
&lt;br /&gt;
- 3D wasp with multi-layers offset mapping technic, combined with rasters and hardware scrolling&lt;br /&gt;
&lt;br /&gt;
- variable font endscroll with fading and blended lines&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Music featuring DMA sid voices all the time and samples from dots sprites part until the end&lt;br /&gt;
&lt;br /&gt;
Can you find the cheatpart?&lt;br /&gt;
&lt;br /&gt;
== videodrome ==&lt;br /&gt;
&lt;br /&gt;
{{#ev:youtube|PgMJ39wfoBM|784}}&lt;br /&gt;
&lt;br /&gt;
{{#ev:youtube|fVirsB6pYC8|784}}&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
* CPC-Power : http://www.cpc-power.com/index.php?page=detail&amp;amp;num=14940&lt;br /&gt;
&lt;br /&gt;
* Pouët : http://www.pouet.net/prod.php?which=72279&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Demos]][[Category:Plus Demos]][[Category:Demos 2017]][[Category:Video contents]][[Category:Cartridges]]&lt;/div&gt;</summary>
		<author><name>Roudoudou</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=CRTC%C2%B3&amp;diff=100188</id>
		<title>CRTC³</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=CRTC%C2%B3&amp;diff=100188"/>
				<updated>2017-12-10T15:20:00Z</updated>
		
		<summary type="html">&lt;p&gt;Roudoudou: /* FX */ mep&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''' CRTC³ ''' won the [[Alchimie|Alchimie 12]] (2017) composition, ranked '''1st''' Place and winning over [[Eerie Forest]] (a GX4000 mega-intro from fellow [[Overflow]]) and prods on '''Atari STf''' and '''Amiga''' formats.&lt;br /&gt;
&lt;br /&gt;
This Demo actually sets expectation on all the next Demos on Amstrad PLUS format and established the power of the ROM cartridge and the interest of [[C4CPC]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== who? ==&lt;br /&gt;
&lt;br /&gt;
'''[[Roudoudou]]''' : Main code, graphics.&lt;br /&gt;
&lt;br /&gt;
'''Zik''' : code, music.&lt;br /&gt;
&lt;br /&gt;
'''CoyHot''' : graphics.&lt;br /&gt;
&lt;br /&gt;
'''fra''' : graphics.&lt;br /&gt;
&lt;br /&gt;
'''Hwikaa''' : 3D and Graphics&lt;br /&gt;
&lt;br /&gt;
'''Zisquier''' : Electric Guitar samples&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== what? ==&lt;br /&gt;
&lt;br /&gt;
Amstrad '''6128+''' cartridge demo - Ranked '''1st''' at [[Alchimie|Alchimie12]] - 2017&lt;br /&gt;
&lt;br /&gt;
Best to be seen on a real amstrad 6128PLUS, it needs a built-in 128k config, hence modified 464PLUS motherboards may work as well but stock 464PLUS or GX4000 cannot run it.&lt;br /&gt;
&lt;br /&gt;
This Demo clearly needs you to have a [[C4CPC]] cartridge.&lt;br /&gt;
&lt;br /&gt;
This is pronounced '''CRTC cube'''.&lt;br /&gt;
&lt;br /&gt;
It was praised for its awesome Music featuring some Electric Guitar sampled sounds, smooth animation and 16bit styled effects and palette, and really impressed Atari and Amiga fans at the compo.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== FX ==&lt;br /&gt;
&lt;br /&gt;
- progressive GFX appearance&lt;br /&gt;
&lt;br /&gt;
- 512 simultaneous colors plasma (with dithering)&lt;br /&gt;
&lt;br /&gt;
- screen break opening&lt;br /&gt;
&lt;br /&gt;
- 3D tunnel with progressive colors&lt;br /&gt;
&lt;br /&gt;
- dots sprites, ending with 4 huge balls&lt;br /&gt;
&lt;br /&gt;
- 320 colors GFX with hardware sprites for details&lt;br /&gt;
&lt;br /&gt;
- 64 colors high resolution wobbler&lt;br /&gt;
&lt;br /&gt;
- textured rubber bar with many (dis)torsions&lt;br /&gt;
&lt;br /&gt;
- 3D wasp with multi-layers offset mapping technic, combined with rasters and hardware scrolling&lt;br /&gt;
&lt;br /&gt;
- variable font endscroll with fading and blended lines&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Music featuring DMA sid voices all the time and samples from dots sprites part until the end&lt;br /&gt;
&lt;br /&gt;
Can you find the cheatpart?&lt;br /&gt;
&lt;br /&gt;
== videodrome ==&lt;br /&gt;
&lt;br /&gt;
{{#ev:youtube|PgMJ39wfoBM|784}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
* CPC-Power : http://www.cpc-power.com/index.php?page=detail&amp;amp;num=14940&lt;br /&gt;
&lt;br /&gt;
* Pouët : http://www.pouet.net/prod.php?which=72279&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Demos]][[Category:Plus Demos]][[Category:Demos 2017]][[Category:Video contents]][[Category:Cartridges]]&lt;/div&gt;</summary>
		<author><name>Roudoudou</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=CRTC%C2%B3&amp;diff=100187</id>
		<title>CRTC³</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=CRTC%C2%B3&amp;diff=100187"/>
				<updated>2017-12-10T15:19:19Z</updated>
		
		<summary type="html">&lt;p&gt;Roudoudou: /* whaat? */ FX chapter&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''' CRTC³ ''' won the [[Alchimie|Alchimie 12]] (2017) composition, ranked '''1st''' Place and winning over [[Eerie Forest]] (a GX4000 mega-intro from fellow [[Overflow]]) and prods on '''Atari STf''' and '''Amiga''' formats.&lt;br /&gt;
&lt;br /&gt;
This Demo actually sets expectation on all the next Demos on Amstrad PLUS format and established the power of the ROM cartridge and the interest of [[C4CPC]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== who? ==&lt;br /&gt;
&lt;br /&gt;
'''[[Roudoudou]]''' : Main code, graphics.&lt;br /&gt;
&lt;br /&gt;
'''Zik''' : code, music.&lt;br /&gt;
&lt;br /&gt;
'''CoyHot''' : graphics.&lt;br /&gt;
&lt;br /&gt;
'''fra''' : graphics.&lt;br /&gt;
&lt;br /&gt;
'''Hwikaa''' : 3D and Graphics&lt;br /&gt;
&lt;br /&gt;
'''Zisquier''' : Electric Guitar samples&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== what? ==&lt;br /&gt;
&lt;br /&gt;
Amstrad '''6128+''' cartridge demo - Ranked '''1st''' at [[Alchimie|Alchimie12]] - 2017&lt;br /&gt;
&lt;br /&gt;
Best to be seen on a real amstrad 6128PLUS, it needs a built-in 128k config, hence modified 464PLUS motherboards may work as well but stock 464PLUS or GX4000 cannot run it.&lt;br /&gt;
&lt;br /&gt;
This Demo clearly needs you to have a [[C4CPC]] cartridge.&lt;br /&gt;
&lt;br /&gt;
This is pronounced '''CRTC cube'''.&lt;br /&gt;
&lt;br /&gt;
It was praised for its awesome Music featuring some Electric Guitar sampled sounds, smooth animation and 16bit styled effects and palette, and really impressed Atari and Amiga fans at the compo.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== FX ==&lt;br /&gt;
&lt;br /&gt;
- progressive GFX appearance&lt;br /&gt;
- 512 simultaneous colors plasma (with dithering)&lt;br /&gt;
- screen break opening&lt;br /&gt;
- 3D tunnel with progressive colors&lt;br /&gt;
- dots sprites, ending with 4 huge balls&lt;br /&gt;
- 320 colors GFX with hardware sprites for details&lt;br /&gt;
- 64 colors high resolution wobbler&lt;br /&gt;
- textured rubber bar with many (dis)torsions&lt;br /&gt;
- 3D wasp with multi-layers offset mapping technic, combined with rasters and hardware scrolling&lt;br /&gt;
- variable font endscroll with fading and blended lines&lt;br /&gt;
&lt;br /&gt;
Music featuring DMA sid voices all the time and samples from dots sprites part until the end&lt;br /&gt;
&lt;br /&gt;
Can you find the cheatpart?&lt;br /&gt;
&lt;br /&gt;
== videodrome ==&lt;br /&gt;
&lt;br /&gt;
{{#ev:youtube|PgMJ39wfoBM|784}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
* CPC-Power : http://www.cpc-power.com/index.php?page=detail&amp;amp;num=14940&lt;br /&gt;
&lt;br /&gt;
* Pouët : http://www.pouet.net/prod.php?which=72279&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Demos]][[Category:Plus Demos]][[Category:Demos 2017]][[Category:Video contents]][[Category:Cartridges]]&lt;/div&gt;</summary>
		<author><name>Roudoudou</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=Roudoudou&amp;diff=100186</id>
		<title>Roudoudou</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=Roudoudou&amp;diff=100186"/>
				<updated>2017-12-10T15:09:39Z</updated>
		
		<summary type="html">&lt;p&gt;Roudoudou: /* Releases */ added tool releases&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:CPC scene members]]&lt;br /&gt;
&lt;br /&gt;
'''Roudoudou''' (Edouard Bergé) is a french coder.&lt;br /&gt;
&lt;br /&gt;
He is well known for being Hair-challenged and a very talented coder on the CPC PLUS, despite few actual releases.&lt;br /&gt;
&lt;br /&gt;
He entered the Legend with his [[CRTC³]] Demo (2017), shadowing in the process another legend : [[Overflow]].&lt;br /&gt;
&lt;br /&gt;
== Tools releases ==&lt;br /&gt;
&lt;br /&gt;
* [[LZ48/LZ49]] (Z80 cruncher/decruncher + C sources for crossdev)&lt;br /&gt;
* [[RASM]] (modern platform cross-dev assembler)&lt;br /&gt;
&lt;br /&gt;
== Demo releases ==&lt;br /&gt;
&lt;br /&gt;
* [[Power System Megademo 1999]] (originally called Basic demo 1)&lt;br /&gt;
* [[Je vous nique tous avec mes demos en BaZic de merde]] (originally called Basic demo 2)&lt;br /&gt;
* [[Basic Demo 3]] (CPC Plus)&lt;br /&gt;
* [[ASM Intro 1]] (CPC Plus)&lt;br /&gt;
* [[ASIC Intro 2]] (CPC Plus)&lt;br /&gt;
&lt;br /&gt;
* [[CRTC³]]&lt;br /&gt;
&lt;br /&gt;
'''Roudoudou''' [code, graphics]&lt;br /&gt;
&lt;br /&gt;
'''Zik''' [code, music]&lt;br /&gt;
&lt;br /&gt;
'''CoyHot''' [graphics]&lt;br /&gt;
&lt;br /&gt;
'''fra''' [graphics]&lt;br /&gt;
&lt;br /&gt;
Amstrad '''6128+''' cartridge demo - Ranked '''1st''' at [[Alchimie|'''Alchimie12''']] - 2017&lt;br /&gt;
&lt;br /&gt;
{{#ev:youtube|PgMJ39wfoBM|784}}&lt;br /&gt;
&lt;br /&gt;
'''Pouët :''' http://www.pouet.net/prod.php?which=72279&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
* '''Pouët :''' http://www.pouet.net/user.php?who=32556&lt;br /&gt;
&lt;br /&gt;
* '''Youtube channel :''' https://www.youtube.com/channel/UC6EA-gbKjpgUBIzMdzP82Ag&lt;/div&gt;</summary>
		<author><name>Roudoudou</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=Roudoudou&amp;diff=98380</id>
		<title>Roudoudou</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=Roudoudou&amp;diff=98380"/>
				<updated>2017-07-30T21:11:32Z</updated>
		
		<summary type="html">&lt;p&gt;Roudoudou: /* Releases */ prod sorted in ordre of release date&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:CPC scene members]]&lt;br /&gt;
Roudoudou (Edouard Bergé) is a french coder.&lt;br /&gt;
&lt;br /&gt;
== Releases ==&lt;br /&gt;
&lt;br /&gt;
* [[Power System Megademo 1999]] (originally called Basic demo 1)&lt;br /&gt;
* [[Je vous nique tous avec mes demos en BaZic de merde]] (originally called Basic demo 2)&lt;br /&gt;
* [[Basic Demo 3]] (CPC Plus)&lt;br /&gt;
* [[ASM Intro 1]] (CPC Plus)&lt;br /&gt;
* [[ASIC Intro 2]] (CPC Plus)&lt;/div&gt;</summary>
		<author><name>Roudoudou</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=Roudoudou&amp;diff=98379</id>
		<title>Roudoudou</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=Roudoudou&amp;diff=98379"/>
				<updated>2017-07-30T21:10:15Z</updated>
		
		<summary type="html">&lt;p&gt;Roudoudou: /* Releases */ asic intro 2&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:CPC scene members]]&lt;br /&gt;
Roudoudou (Edouard Bergé) is a french coder.&lt;br /&gt;
&lt;br /&gt;
== Releases ==&lt;br /&gt;
&lt;br /&gt;
* [[Power System Megademo 1999]]&lt;br /&gt;
* [[ASM Intro 1]] (CPC Plus)&lt;br /&gt;
* [[ASIC Intro 2]] (CPC Plus)&lt;br /&gt;
* [[Basic Demo 3]] (CPC Plus)&lt;br /&gt;
* [[Je vous nique tous avec mes demos en BaZic de merde]] (originally called Basic demo 2)&lt;/div&gt;</summary>
		<author><name>Roudoudou</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=Data_Compression&amp;diff=98074</id>
		<title>Data Compression</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=Data_Compression&amp;diff=98074"/>
				<updated>2017-05-04T11:08:44Z</updated>
		
		<summary type="html">&lt;p&gt;Roudoudou: /* The power of CrossDev */ added zx7&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wikipedia says :&lt;br /&gt;
&lt;br /&gt;
''In computer science and information theory, data compression or source coding is the process of encoding information using fewer bits (or other information-bearing units) than an unencoded representation would use, through use of specific encoding schemes.''&lt;br /&gt;
&lt;br /&gt;
So be it.&lt;br /&gt;
&lt;br /&gt;
==Compression ? In my CPC ?==&lt;br /&gt;
&lt;br /&gt;
More often than you may believe.&lt;br /&gt;
&lt;br /&gt;
==The power of CrossDev==&lt;br /&gt;
&lt;br /&gt;
It was common to use a 16 bit computer like an [[Atari|Atari ST]] to get stronger compression. Today it is possible to get various compressors which are running on a PC platform and produce binary files which can be decompressed on [[Z80]] computers.&lt;br /&gt;
&lt;br /&gt;
[[Xyphoes Fantasy]] is a noteable example. The data is compressed and it was generated on an Atari ST.&lt;br /&gt;
&lt;br /&gt;
Examples for modern CrossDev compression programs with Z80 decompression routines are&lt;br /&gt;
* [[Bitbuster]]&lt;br /&gt;
* [[Exomizer]]&lt;br /&gt;
* [[MegaLZ]]&lt;br /&gt;
* [[Pucrunch]]&lt;br /&gt;
* [[ZX7]]&lt;br /&gt;
&lt;br /&gt;
== File compression  ==&lt;br /&gt;
&lt;br /&gt;
*[[Cheese|Cheese]] ([[Antoine Pitrou|Antoine Pitrou]]) &lt;br /&gt;
*[[Columbia|Columbia]] ([[Robot PD|Robot PD]]) &lt;br /&gt;
*[[CPC T|CPC_T]] ([[Madram|Madram]]) &lt;br /&gt;
*[[CrownCruncher|CrownCruncher]] ([[Crown|Crown]]) &lt;br /&gt;
*[[FlowerCruncher|FlowerCruncher]] ([[Roudoudou|Roudoudou]]) &lt;br /&gt;
*[[LZ48|LZ48]] ([[Roudoudou|Roudoudou]]) &lt;br /&gt;
*[[LZ49|LZ49]] ([[Roudoudou|Roudoudou]]) &lt;br /&gt;
*[[SQ23|SQ23]] &lt;br /&gt;
*[[Turbocruncher|Turbocruncher]] ([[Elmar Krieger|Elmar Krieger]]) &lt;br /&gt;
*[[Turbo Imploder|Turbo Imploder]] ([[Crown|Crown]]) &lt;br /&gt;
*[[Zenith|Zenith]]&lt;br /&gt;
&lt;br /&gt;
== File decompression  ==&lt;br /&gt;
&lt;br /&gt;
*[[LZ4|LZ4]] ([[Roudoudou|Roudoudou]])&lt;br /&gt;
*[[NLarge|NLarge]] ([[FG Brain|FG Brain]])&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
[http://en.wikipedia.org/wiki/Data_compression Wikipedia's opinion on the matter...]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:DATA Storage]][[Category:Programming]][[Category:Applications]][[Category:CrossDev]]&lt;/div&gt;</summary>
		<author><name>Roudoudou</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=Data_Compression&amp;diff=98073</id>
		<title>Data Compression</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=Data_Compression&amp;diff=98073"/>
				<updated>2017-05-03T08:38:51Z</updated>
		
		<summary type="html">&lt;p&gt;Roudoudou: /* File decompression */ case&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wikipedia says :&lt;br /&gt;
&lt;br /&gt;
''In computer science and information theory, data compression or source coding is the process of encoding information using fewer bits (or other information-bearing units) than an unencoded representation would use, through use of specific encoding schemes.''&lt;br /&gt;
&lt;br /&gt;
So be it.&lt;br /&gt;
&lt;br /&gt;
==Compression ? In my CPC ?==&lt;br /&gt;
&lt;br /&gt;
More often than you may believe.&lt;br /&gt;
&lt;br /&gt;
==The power of CrossDev==&lt;br /&gt;
&lt;br /&gt;
It was common to use a 16 bit computer like an [[Atari|Atari ST]] to get stronger compression. Today it is possible to get various compressors which are running on a PC platform and produce binary files which can be decompressed on [[Z80]] computers.&lt;br /&gt;
&lt;br /&gt;
[[Xyphoes Fantasy]] is a noteable example. The data is compressed and it was generated on an Atari ST.&lt;br /&gt;
&lt;br /&gt;
Examples for modern CrossDev compression programs with Z80 decompression routines are&lt;br /&gt;
* [[Bitbuster]]&lt;br /&gt;
* [[Exomizer]]&lt;br /&gt;
* [[MegaLZ]]&lt;br /&gt;
* [[Pucrunch]]&lt;br /&gt;
&lt;br /&gt;
== File compression  ==&lt;br /&gt;
&lt;br /&gt;
*[[Cheese|Cheese]] ([[Antoine Pitrou|Antoine Pitrou]]) &lt;br /&gt;
*[[Columbia|Columbia]] ([[Robot PD|Robot PD]]) &lt;br /&gt;
*[[CPC T|CPC_T]] ([[Madram|Madram]]) &lt;br /&gt;
*[[CrownCruncher|CrownCruncher]] ([[Crown|Crown]]) &lt;br /&gt;
*[[FlowerCruncher|FlowerCruncher]] ([[Roudoudou|Roudoudou]]) &lt;br /&gt;
*[[LZ48|LZ48]] ([[Roudoudou|Roudoudou]]) &lt;br /&gt;
*[[LZ49|LZ49]] ([[Roudoudou|Roudoudou]]) &lt;br /&gt;
*[[SQ23|SQ23]] &lt;br /&gt;
*[[Turbocruncher|Turbocruncher]] ([[Elmar Krieger|Elmar Krieger]]) &lt;br /&gt;
*[[Turbo Imploder|Turbo Imploder]] ([[Crown|Crown]]) &lt;br /&gt;
*[[Zenith|Zenith]]&lt;br /&gt;
&lt;br /&gt;
== File decompression  ==&lt;br /&gt;
&lt;br /&gt;
*[[LZ4|LZ4]] ([[Roudoudou|Roudoudou]])&lt;br /&gt;
*[[NLarge|NLarge]] ([[FG Brain|FG Brain]])&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
[http://en.wikipedia.org/wiki/Data_compression Wikipedia's opinion on the matter...]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:DATA Storage]][[Category:Programming]][[Category:Applications]][[Category:CrossDev]]&lt;/div&gt;</summary>
		<author><name>Roudoudou</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=Data_Compression&amp;diff=98072</id>
		<title>Data Compression</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=Data_Compression&amp;diff=98072"/>
				<updated>2017-05-03T08:38:33Z</updated>
		
		<summary type="html">&lt;p&gt;Roudoudou: /* File decompression */ added LZ4&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wikipedia says :&lt;br /&gt;
&lt;br /&gt;
''In computer science and information theory, data compression or source coding is the process of encoding information using fewer bits (or other information-bearing units) than an unencoded representation would use, through use of specific encoding schemes.''&lt;br /&gt;
&lt;br /&gt;
So be it.&lt;br /&gt;
&lt;br /&gt;
==Compression ? In my CPC ?==&lt;br /&gt;
&lt;br /&gt;
More often than you may believe.&lt;br /&gt;
&lt;br /&gt;
==The power of CrossDev==&lt;br /&gt;
&lt;br /&gt;
It was common to use a 16 bit computer like an [[Atari|Atari ST]] to get stronger compression. Today it is possible to get various compressors which are running on a PC platform and produce binary files which can be decompressed on [[Z80]] computers.&lt;br /&gt;
&lt;br /&gt;
[[Xyphoes Fantasy]] is a noteable example. The data is compressed and it was generated on an Atari ST.&lt;br /&gt;
&lt;br /&gt;
Examples for modern CrossDev compression programs with Z80 decompression routines are&lt;br /&gt;
* [[Bitbuster]]&lt;br /&gt;
* [[Exomizer]]&lt;br /&gt;
* [[MegaLZ]]&lt;br /&gt;
* [[Pucrunch]]&lt;br /&gt;
&lt;br /&gt;
== File compression  ==&lt;br /&gt;
&lt;br /&gt;
*[[Cheese|Cheese]] ([[Antoine Pitrou|Antoine Pitrou]]) &lt;br /&gt;
*[[Columbia|Columbia]] ([[Robot PD|Robot PD]]) &lt;br /&gt;
*[[CPC T|CPC_T]] ([[Madram|Madram]]) &lt;br /&gt;
*[[CrownCruncher|CrownCruncher]] ([[Crown|Crown]]) &lt;br /&gt;
*[[FlowerCruncher|FlowerCruncher]] ([[Roudoudou|Roudoudou]]) &lt;br /&gt;
*[[LZ48|LZ48]] ([[Roudoudou|Roudoudou]]) &lt;br /&gt;
*[[LZ49|LZ49]] ([[Roudoudou|Roudoudou]]) &lt;br /&gt;
*[[SQ23|SQ23]] &lt;br /&gt;
*[[Turbocruncher|Turbocruncher]] ([[Elmar Krieger|Elmar Krieger]]) &lt;br /&gt;
*[[Turbo Imploder|Turbo Imploder]] ([[Crown|Crown]]) &lt;br /&gt;
*[[Zenith|Zenith]]&lt;br /&gt;
&lt;br /&gt;
== File decompression  ==&lt;br /&gt;
&lt;br /&gt;
*[[LZ4|LZ4]] ([[roudoudou|roudoudou]])&lt;br /&gt;
*[[NLarge|NLarge]] ([[FG Brain|FG Brain]])&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
[http://en.wikipedia.org/wiki/Data_compression Wikipedia's opinion on the matter...]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:DATA Storage]][[Category:Programming]][[Category:Applications]][[Category:CrossDev]]&lt;/div&gt;</summary>
		<author><name>Roudoudou</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=Data_Compression&amp;diff=98071</id>
		<title>Data Compression</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=Data_Compression&amp;diff=98071"/>
				<updated>2017-05-03T08:37:51Z</updated>
		
		<summary type="html">&lt;p&gt;Roudoudou: /* File compression */ added LZ48/LZ49&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wikipedia says :&lt;br /&gt;
&lt;br /&gt;
''In computer science and information theory, data compression or source coding is the process of encoding information using fewer bits (or other information-bearing units) than an unencoded representation would use, through use of specific encoding schemes.''&lt;br /&gt;
&lt;br /&gt;
So be it.&lt;br /&gt;
&lt;br /&gt;
==Compression ? In my CPC ?==&lt;br /&gt;
&lt;br /&gt;
More often than you may believe.&lt;br /&gt;
&lt;br /&gt;
==The power of CrossDev==&lt;br /&gt;
&lt;br /&gt;
It was common to use a 16 bit computer like an [[Atari|Atari ST]] to get stronger compression. Today it is possible to get various compressors which are running on a PC platform and produce binary files which can be decompressed on [[Z80]] computers.&lt;br /&gt;
&lt;br /&gt;
[[Xyphoes Fantasy]] is a noteable example. The data is compressed and it was generated on an Atari ST.&lt;br /&gt;
&lt;br /&gt;
Examples for modern CrossDev compression programs with Z80 decompression routines are&lt;br /&gt;
* [[Bitbuster]]&lt;br /&gt;
* [[Exomizer]]&lt;br /&gt;
* [[MegaLZ]]&lt;br /&gt;
* [[Pucrunch]]&lt;br /&gt;
&lt;br /&gt;
== File compression  ==&lt;br /&gt;
&lt;br /&gt;
*[[Cheese|Cheese]] ([[Antoine Pitrou|Antoine Pitrou]]) &lt;br /&gt;
*[[Columbia|Columbia]] ([[Robot PD|Robot PD]]) &lt;br /&gt;
*[[CPC T|CPC_T]] ([[Madram|Madram]]) &lt;br /&gt;
*[[CrownCruncher|CrownCruncher]] ([[Crown|Crown]]) &lt;br /&gt;
*[[FlowerCruncher|FlowerCruncher]] ([[Roudoudou|Roudoudou]]) &lt;br /&gt;
*[[LZ48|LZ48]] ([[Roudoudou|Roudoudou]]) &lt;br /&gt;
*[[LZ49|LZ49]] ([[Roudoudou|Roudoudou]]) &lt;br /&gt;
*[[SQ23|SQ23]] &lt;br /&gt;
*[[Turbocruncher|Turbocruncher]] ([[Elmar Krieger|Elmar Krieger]]) &lt;br /&gt;
*[[Turbo Imploder|Turbo Imploder]] ([[Crown|Crown]]) &lt;br /&gt;
*[[Zenith|Zenith]]&lt;br /&gt;
&lt;br /&gt;
== File decompression  ==&lt;br /&gt;
&lt;br /&gt;
*[[NLarge|NLarge]] ([[FG Brain|FG Brain]])&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
[http://en.wikipedia.org/wiki/Data_compression Wikipedia's opinion on the matter...]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:DATA Storage]][[Category:Programming]][[Category:Applications]][[Category:CrossDev]]&lt;/div&gt;</summary>
		<author><name>Roudoudou</name></author>	</entry>

	</feed>