<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-958894369509579247</id><updated>2012-02-17T03:04:03.628Z</updated><category term='linux'/><category term='arduino'/><category term='bdt210'/><category term='syscalls'/><category term='arm'/><category term='simulation'/><category term='arduemu'/><category term='gdb'/><category term='memory management'/><category term='semaphores'/><category term='rtos'/><category term='Subversion'/><category term='phone remote access'/><category term='portaudio'/><category term='device drivers'/><category term='samos'/><category term='mmu'/><category term='wasapi'/><category term='x86'/><category term='samvis'/><category term='asio'/><category term='emulation'/><category term='naudio'/><category term='powerpc'/><category term='dynamic memory allocation'/><category term='abstraction'/><category term='stability'/><category term='dlna'/><category term='sos2'/><category term='gcc'/><category term='eclipse'/><category term='openal'/><category term='opic'/><category term='architecture'/><category term='ada'/><category term='winamp'/><category term='interrupt'/><category term='atmel'/><category term='newlib'/><category term='scheduling'/><category term='operating system'/><title type='text'>Bits of Brain</title><subtitle type='html'>Often acting as a "Second Brain" this blog is intended to list my thoughts and ideas for my projects.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://radpartbrainmat.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://radpartbrainmat.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Sam T</name><uri>http://www.blogger.com/profile/12905043109698863507</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_G1I4CEs0Hw4/Sa217oZ1RGI/AAAAAAAAAAM/Ey9JSFmaosc/S220/n808790693_1063742_662.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>67</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-958894369509579247.post-2952806687904185457</id><published>2012-01-09T21:57:00.003Z</published><updated>2012-01-09T22:05:39.649Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='sos2'/><title type='text'>Kernel workings</title><content type='html'>&lt;a href="http://2.bp.blogspot.com/-V7GZ9zCpPQA/TwtjCbgjIWI/AAAAAAAAAB0/JRo9P4et9VY/s1600/sos2_2012_01_09.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 183px; height: 320px;" src="http://2.bp.blogspot.com/-V7GZ9zCpPQA/TwtjCbgjIWI/AAAAAAAAAB0/JRo9P4et9VY/s320/sos2_2012_01_09.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5695755047135289698" /&gt;&lt;/a&gt;It's been a while since I've worked on it but I've started again and I've done a bit of work on the console interface along with a few fixes to the priority scheduler.&lt;br /&gt;&lt;br /&gt;Time to knuckle down and and fix the IPC.&lt;br /&gt;&lt;br /&gt;The two fatal errors are caused by the lack of a CRT for the two user-mode programs.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/958894369509579247-2952806687904185457?l=radpartbrainmat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://radpartbrainmat.blogspot.com/feeds/2952806687904185457/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://radpartbrainmat.blogspot.com/2012/01/kernel-workings.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/2952806687904185457'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/2952806687904185457'/><link rel='alternate' type='text/html' href='http://radpartbrainmat.blogspot.com/2012/01/kernel-workings.html' title='Kernel workings'/><author><name>Sam T</name><uri>http://www.blogger.com/profile/12905043109698863507</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_G1I4CEs0Hw4/Sa217oZ1RGI/AAAAAAAAAAM/Ey9JSFmaosc/S220/n808790693_1063742_662.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-V7GZ9zCpPQA/TwtjCbgjIWI/AAAAAAAAAB0/JRo9P4et9VY/s72-c/sos2_2012_01_09.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-958894369509579247.post-3899755059148427400</id><published>2011-10-17T22:06:00.003+01:00</published><updated>2011-10-17T22:33:44.343+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='semaphores'/><category scheme='http://www.blogger.com/atom/ns#' term='sos2'/><category scheme='http://www.blogger.com/atom/ns#' term='operating system'/><title type='text'>semaphores</title><content type='html'>I've been doing some more work on the microkernel and have got to the point where a user-mode application can create other processes and threads, get its priority and so on and also - semaphores!&lt;br /&gt;&lt;br /&gt;They're counting semaphores with support for priority inheritance. Unfortunately it's still a basic round-robin scheduler so it's a little harder to test it yet but hopefully soon it'll be possible to work on some more posix-like code to try and support some BSD style services or networking like Lwip.&lt;br /&gt;&lt;br /&gt;Of course, the driver model needs to be tweaked first as the rather limited kernel mode drivers need to be updated &amp; IPC needs to added support user mode drivers.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/958894369509579247-3899755059148427400?l=radpartbrainmat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://radpartbrainmat.blogspot.com/feeds/3899755059148427400/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://radpartbrainmat.blogspot.com/2011/10/semaphores.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/3899755059148427400'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/3899755059148427400'/><link rel='alternate' type='text/html' href='http://radpartbrainmat.blogspot.com/2011/10/semaphores.html' title='semaphores'/><author><name>Sam T</name><uri>http://www.blogger.com/profile/12905043109698863507</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_G1I4CEs0Hw4/Sa217oZ1RGI/AAAAAAAAAAM/Ey9JSFmaosc/S220/n808790693_1063742_662.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-958894369509579247.post-8028910431503990177</id><published>2011-08-07T21:30:00.002+01:00</published><updated>2011-08-07T21:37:53.827+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sos2'/><category scheme='http://www.blogger.com/atom/ns#' term='operating system'/><title type='text'>I'm back.</title><content type='html'>I spent a bit of time offline.&lt;br /&gt;&lt;br /&gt;Largely due to work and also I just didn't have anything useful to post.&lt;br /&gt;&lt;br /&gt;In the last few months I've re-started and re-written my microkernel. This time I re-designed the architecture and put some more thought into it. Now it supports device drivers, alarms, timers and pre-emptive scheduling. It even has a few syscalls already.&lt;br /&gt;&lt;br /&gt;The idea is to progress it far enough to support a bit of newlib.&lt;br /&gt;&lt;br /&gt;I'd also like to get it ported over to ARM and getting running on some hardware.&lt;br /&gt;&lt;br /&gt;More to follow.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/958894369509579247-8028910431503990177?l=radpartbrainmat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://radpartbrainmat.blogspot.com/feeds/8028910431503990177/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://radpartbrainmat.blogspot.com/2011/08/im-back.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/8028910431503990177'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/8028910431503990177'/><link rel='alternate' type='text/html' href='http://radpartbrainmat.blogspot.com/2011/08/im-back.html' title='I&apos;m back.'/><author><name>Sam T</name><uri>http://www.blogger.com/profile/12905043109698863507</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_G1I4CEs0Hw4/Sa217oZ1RGI/AAAAAAAAAAM/Ey9JSFmaosc/S220/n808790693_1063742_662.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-958894369509579247.post-7943278717397591447</id><published>2011-08-07T21:23:00.002+01:00</published><updated>2011-08-07T21:30:10.263+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bdt210'/><category scheme='http://www.blogger.com/atom/ns#' term='dlna'/><title type='text'>Panasonic BDT210 DLNA Working, Finally.</title><content type='html'>I recently purchased a new Panasonic BDT210 Bluray player. It's fantastic. It does 3D (not that I have a television to support it) and plays everything and sound great.&lt;br /&gt;&lt;br /&gt;However. I tried to fire up the DLNA Client with my Twonky Media Server. Fail. Even setting it to the correct profile didn't seem to keep it happy. I placed the ffmpeg binaries into c:\ffmpeg and enabled transcoding on the web server. Still, nothing.&lt;br /&gt;&lt;br /&gt;Then I found Serviio (&lt;a href="http://www.serviio.org"&gt;http://www.serviio.org&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;After binding it to the correct port and giving it a reset, the player saw it. Then, I set the profile to the 'Sony Bravia' and enabled transcoding on both cores.&lt;br /&gt;&lt;br /&gt;Tada! Serviio has ffmpeg built-in and does the transcoding to MPEG2 which is what the Panasonic BDT210 supports. I imagine with enough tinkering this would also enable you to do the same with TVersity or similar but Serviio just worked straight out the box.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/958894369509579247-7943278717397591447?l=radpartbrainmat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://radpartbrainmat.blogspot.com/feeds/7943278717397591447/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://radpartbrainmat.blogspot.com/2011/08/panasonic-bdt210-dlna-working-finally.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/7943278717397591447'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/7943278717397591447'/><link rel='alternate' type='text/html' href='http://radpartbrainmat.blogspot.com/2011/08/panasonic-bdt210-dlna-working-finally.html' title='Panasonic BDT210 DLNA Working, Finally.'/><author><name>Sam T</name><uri>http://www.blogger.com/profile/12905043109698863507</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_G1I4CEs0Hw4/Sa217oZ1RGI/AAAAAAAAAAM/Ey9JSFmaosc/S220/n808790693_1063742_662.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-958894369509579247.post-4781111454947969121</id><published>2010-08-11T21:58:00.002+01:00</published><updated>2010-08-11T22:04:27.096+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gcc'/><category scheme='http://www.blogger.com/atom/ns#' term='ada'/><category scheme='http://www.blogger.com/atom/ns#' term='operating system'/><category scheme='http://www.blogger.com/atom/ns#' term='newlib'/><title type='text'>Homebrew OS and Ada</title><content type='html'>I've started to go back to my OS again and looking at it it'd be quite handy to write parts in Ada and possibly C++.&lt;br /&gt;&lt;br /&gt;Hopefully I can get these two things by compiling GCC with the newlib support in there and it'll use the newlib library calls (for things like memory allocation) which'll route into the current C memory code via syscalls.&lt;br /&gt;&lt;br /&gt;This'll be quite nice as I like Ada and having the complex parts of the OS written in Ada has some nice advantages, including generics.&lt;br /&gt;&lt;br /&gt;We'll see!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/958894369509579247-4781111454947969121?l=radpartbrainmat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://radpartbrainmat.blogspot.com/feeds/4781111454947969121/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://radpartbrainmat.blogspot.com/2010/08/homebrew-os-and-ada.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/4781111454947969121'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/4781111454947969121'/><link rel='alternate' type='text/html' href='http://radpartbrainmat.blogspot.com/2010/08/homebrew-os-and-ada.html' title='Homebrew OS and Ada'/><author><name>Sam T</name><uri>http://www.blogger.com/profile/12905043109698863507</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_G1I4CEs0Hw4/Sa217oZ1RGI/AAAAAAAAAAM/Ey9JSFmaosc/S220/n808790693_1063742_662.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-958894369509579247.post-4707655841353994993</id><published>2010-07-05T20:55:00.002+01:00</published><updated>2010-07-05T21:01:39.064+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='simulation'/><category scheme='http://www.blogger.com/atom/ns#' term='powerpc'/><category scheme='http://www.blogger.com/atom/ns#' term='emulation'/><title type='text'>PowerPC Simulation</title><content type='html'>About two years ago I was working on a PowerPC Simulator/Emulator and got so far (where it executed a few million instructions) and then - for whatever reason - start executing a string table. Debugging said million assembly instructions put me off working on it again for a while.&lt;br /&gt;&lt;br /&gt;I picked up the code again and got it compiling and running rather quickly and even noticed two rather large and glaring errors.&lt;br /&gt;&lt;br /&gt;Firstly, the device I'm simulating is a Curtiss Wright (DY4) DMV-179 with a PowerPC 750 processor. The device uses a GT64130 memory controller which you can setup for big or little endian. This wasn't setup correctly so was copying from Flash memory to RAM in the wrong endianness.&lt;br /&gt;&lt;br /&gt;Strangly enough, when said inverted instructions are executed, it goes bat-s**t crazy.&lt;br /&gt;&lt;br /&gt;So, fixing that I've started to work on getting that fired up again and seeing if I can get it to the point where the firmware (aka bios) starts talking on the serial link. Should be interesting...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/958894369509579247-4707655841353994993?l=radpartbrainmat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://radpartbrainmat.blogspot.com/feeds/4707655841353994993/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://radpartbrainmat.blogspot.com/2010/07/powerpc-simulation.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/4707655841353994993'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/4707655841353994993'/><link rel='alternate' type='text/html' href='http://radpartbrainmat.blogspot.com/2010/07/powerpc-simulation.html' title='PowerPC Simulation'/><author><name>Sam T</name><uri>http://www.blogger.com/profile/12905043109698863507</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_G1I4CEs0Hw4/Sa217oZ1RGI/AAAAAAAAAAM/Ey9JSFmaosc/S220/n808790693_1063742_662.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-958894369509579247.post-3315641416711445768</id><published>2010-05-13T19:37:00.002+01:00</published><updated>2010-05-13T19:40:07.690+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='openal'/><title type='text'>24bit OpenAL support?</title><content type='html'>The OpenAL &lt;a href="http://connect.creativelabs.com/openal/Lists/Wishlist/DispForm.aspx?ID=27&amp;Source=http%3A%2F%2Fconnect.creativelabs.com%2Fopenal%2FLists%2FWishlist%2FAllItems.aspx"&gt;website&lt;/a&gt; has a new wishlist item for 24bit support, among other things.&lt;br /&gt;&lt;br /&gt;I'm not sure when, or even if, this would get approved as OpenAL - typically used for games - doesn't really need 24bit support.&lt;br /&gt;&lt;br /&gt;Either way, nice to see its there.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/958894369509579247-3315641416711445768?l=radpartbrainmat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://radpartbrainmat.blogspot.com/feeds/3315641416711445768/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://radpartbrainmat.blogspot.com/2010/05/24bit-openal-support.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/3315641416711445768'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/3315641416711445768'/><link rel='alternate' type='text/html' href='http://radpartbrainmat.blogspot.com/2010/05/24bit-openal-support.html' title='24bit OpenAL support?'/><author><name>Sam T</name><uri>http://www.blogger.com/profile/12905043109698863507</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_G1I4CEs0Hw4/Sa217oZ1RGI/AAAAAAAAAAM/Ey9JSFmaosc/S220/n808790693_1063742_662.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-958894369509579247.post-3448867653000595529</id><published>2010-03-21T21:39:00.002Z</published><updated>2010-03-21T21:51:01.664Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='x86'/><category scheme='http://www.blogger.com/atom/ns#' term='samos'/><title type='text'>samos x86 progress</title><content type='html'>I've been busy at work but I've started working on the x86 target and BIOS BSP. At this point it's all really early but it starts up using &lt;a href="http://en.wikipedia.org/wiki/QEMU"&gt;QEMU&lt;/a&gt; and prints out some very early messages before falling flat on its face.&lt;br /&gt;&lt;br /&gt;It's fall flat on its face because there's no BSP for BIOS and therefore it can't work out how much RAM there is - all dynamic memory allocations fail and the Kernel panics.&lt;br /&gt;&lt;br /&gt;So yeh, I need to write support for - at least - the &lt;a href="http://en.wikipedia.org/wiki/Interrupt_vector_table"&gt;IVT&lt;/a&gt; (on x86 this is the IDT), a timer and handling interrupts. The BIOS needs support for at least querying the BIOS. This should let the scheduler at least fire up.&lt;br /&gt;&lt;br /&gt;Then we can start doing cool stuff like the MMU and PCI. Fun stuffs :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/958894369509579247-3448867653000595529?l=radpartbrainmat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://radpartbrainmat.blogspot.com/feeds/3448867653000595529/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://radpartbrainmat.blogspot.com/2010/03/samos-x86-progress.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/3448867653000595529'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/3448867653000595529'/><link rel='alternate' type='text/html' href='http://radpartbrainmat.blogspot.com/2010/03/samos-x86-progress.html' title='samos x86 progress'/><author><name>Sam T</name><uri>http://www.blogger.com/profile/12905043109698863507</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_G1I4CEs0Hw4/Sa217oZ1RGI/AAAAAAAAAAM/Ey9JSFmaosc/S220/n808790693_1063742_662.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-958894369509579247.post-6227727764684905856</id><published>2009-12-12T09:11:00.002Z</published><updated>2009-12-12T09:14:10.206Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='samos'/><title type='text'>samos update, x86</title><content type='html'>I'm in the middle of updating SAMOS to support the x86 targets and therefore also the BIOS and the various other x86 updates such as the PIC/APIC for interrupts and ACPI for power and state.&lt;br /&gt;&lt;br /&gt;The other thing that may be interesting is exposing the frame buffer!&lt;br /&gt;&lt;br /&gt;The main reason is that x86 simulators are better supported (compared to PSIM) to support Ethernet devices and usually come with GDB built-in for debugging any device drivers.&lt;br /&gt;&lt;br /&gt;So, it's quiet at the moment, but only because I'm re-building tools and porting :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/958894369509579247-6227727764684905856?l=radpartbrainmat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://radpartbrainmat.blogspot.com/feeds/6227727764684905856/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://radpartbrainmat.blogspot.com/2009/12/samos-update-x65.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/6227727764684905856'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/6227727764684905856'/><link rel='alternate' type='text/html' href='http://radpartbrainmat.blogspot.com/2009/12/samos-update-x65.html' title='samos update, x86'/><author><name>Sam T</name><uri>http://www.blogger.com/profile/12905043109698863507</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_G1I4CEs0Hw4/Sa217oZ1RGI/AAAAAAAAAAM/Ey9JSFmaosc/S220/n808790693_1063742_662.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-958894369509579247.post-680456067104400979</id><published>2009-11-04T22:06:00.002Z</published><updated>2009-11-04T22:16:29.950Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='phone remote access'/><category scheme='http://www.blogger.com/atom/ns#' term='openal'/><category scheme='http://www.blogger.com/atom/ns#' term='winamp'/><title type='text'>Update</title><content type='html'>Well the remote control idea worked! I can access the phone and get it to perform remote stuffs for me like playing a sound (so I can find the damn thing) or get it to reboot. Really, this was just a small prototype to see if it was possible so the project has been put into the depths of my subversion vault but worked pretty nicely.&lt;br /&gt;&lt;br /&gt;Of course it was also missing things, I'd of liked to have added SSL and some kind of authentication to keep the connection secure.&lt;br /&gt;&lt;br /&gt;Either way, I've been working on another little prototype. But until it's a bit more stable i'll continue to keep it quiet. It's not that interesting.&lt;br /&gt;&lt;br /&gt;Also, Winamp OpenAL plugin is moving on, mostly robustness testing such as fixing memory leaks and so on.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/958894369509579247-680456067104400979?l=radpartbrainmat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://radpartbrainmat.blogspot.com/feeds/680456067104400979/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://radpartbrainmat.blogspot.com/2009/11/update.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/680456067104400979'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/680456067104400979'/><link rel='alternate' type='text/html' href='http://radpartbrainmat.blogspot.com/2009/11/update.html' title='Update'/><author><name>Sam T</name><uri>http://www.blogger.com/profile/12905043109698863507</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_G1I4CEs0Hw4/Sa217oZ1RGI/AAAAAAAAAAM/Ey9JSFmaosc/S220/n808790693_1063742_662.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-958894369509579247.post-4780640970801724233</id><published>2009-10-18T23:31:00.003+01:00</published><updated>2009-10-18T23:41:25.611+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='phone remote access'/><category scheme='http://www.blogger.com/atom/ns#' term='openal'/><category scheme='http://www.blogger.com/atom/ns#' term='winamp'/><title type='text'>Ideas</title><content type='html'>I've been a bit quiet recently as I've been working to get the Winamp OpenAL plugin more stable with its new features such as 3D and some initial effects.&lt;br /&gt;&lt;br /&gt;I've also been shown something on the iPhone that lets you contact your iPhone over the internet, for example, incase it gets stolen or lost for example. It lets you make a little noise or wipe it completely.&lt;br /&gt;&lt;br /&gt;I knocked up a little Java app that could accept a command to play a tune - but getting it on my HTC Touch Diamond wasn't so easy as I had problems finding the SDK to get it to work on the phone.&lt;br /&gt;&lt;br /&gt;So, I switched over to Microsoft Visual Studio and am in the process for writing a nice little C++ application that will connect into my server at home every so often to report its [the phones] IP address. It'll also have a server that you can connect to and send it commands.&lt;br /&gt;&lt;br /&gt;Luckily enough it can be tested over ActiveSync so there isn't a security issue yet but ultimately it'd need something like SSL and user auth.&lt;br /&gt;&lt;br /&gt;But yeh, I like the idea of being able to talk to it and get it to play tunes when it gets lost. Of if it gets stolen - send me back it's GPS data! And of course a wipe command for email/contacts/data etc.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/958894369509579247-4780640970801724233?l=radpartbrainmat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://radpartbrainmat.blogspot.com/feeds/4780640970801724233/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://radpartbrainmat.blogspot.com/2009/10/ideas.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/4780640970801724233'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/4780640970801724233'/><link rel='alternate' type='text/html' href='http://radpartbrainmat.blogspot.com/2009/10/ideas.html' title='Ideas'/><author><name>Sam T</name><uri>http://www.blogger.com/profile/12905043109698863507</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_G1I4CEs0Hw4/Sa217oZ1RGI/AAAAAAAAAAM/Ey9JSFmaosc/S220/n808790693_1063742_662.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-958894369509579247.post-747649941260541393</id><published>2009-09-09T18:27:00.005+01:00</published><updated>2009-09-09T18:44:57.522+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='syscalls'/><category scheme='http://www.blogger.com/atom/ns#' term='samos'/><category scheme='http://www.blogger.com/atom/ns#' term='architecture'/><category scheme='http://www.blogger.com/atom/ns#' term='newlib'/><category scheme='http://www.blogger.com/atom/ns#' term='abstraction'/><title type='text'>samos progression; newlib and operating system interfacing</title><content type='html'>With SAMOS nicely looping around it's probably time to find a way for programs to access the Operating System. I've already mentioned that system calls (syscalls) are implemented and work and these now need to be expanded from just Device Driver calls.&lt;br /&gt;&lt;br /&gt;Firstly, we'll need to provide a few calls that newlib can use (for example sbrk which is called from malloc for memory allocation on the heap). It's probably worth trying to map inbyte and outbyte too so the user can do getchar and printf and it be routed through to the Operating System.&lt;br /&gt;&lt;br /&gt;Other things we may want (other than Device Driver read/write register/memory) is the ability for an application to do something in user-mode when an interrupt is triggered.&lt;br /&gt;&lt;br /&gt;Finally it'd be nice to have things such as TCP/IP stacks and a method of Inter-process communication (IPC). Being a microkernel the idea is what these things will all execute in user-mode - but be managed from Kernel mode. This means we'll have a services manager that can be queried - and probably abstracted - so provide a single C header/c file to do Sockets &amp; Pipes (IPC).&lt;br /&gt;&lt;br /&gt;For example, the application would call:&lt;br /&gt;&lt;br /&gt;initialise_pipes();&lt;br /&gt;...&lt;br /&gt;procs = get_procs();&lt;br /&gt;...&lt;br /&gt;proc = get_proc(proc_id);&lt;br /&gt;...&lt;br /&gt;pipe_to_proc = create_pipe(proc);&lt;br /&gt;pipe_write(pipe_to_proc, "hello", 5);&lt;br /&gt;&lt;br /&gt;The Pipe abstraction would do something like:&lt;br /&gt;&lt;br /&gt;initialises_pipes() {&lt;br /&gt; my_service_id = samos_get_service("pipes");&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;pipe_write(pipe, data, len) {&lt;br /&gt; send_service_message(my_service_id, WRITE_PIPE_ID, pipe, data, len);&lt;br /&gt;}&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;The actual Pipe service might be a process that's interrupt driven:&lt;br /&gt;&lt;br /&gt;pipe_write_intc()&lt;br /&gt;{&lt;br /&gt;  details = get_details();&lt;br /&gt;  details.recv.push_data(data,len);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;As you can see I haven't really worked through the details and this is all off the top of my head but the point is that virtually everything (except service queries) is executed in user-mode. Sure, those Services will have to request the Kernel to setup memory mappings because two (or more) processes and maybe that'd be a hard-code Operating System call so that the Operating System (rather than a Service-provided thing). This way the Operating System is in control of checking &amp; allowing those two processes to communicate.&lt;br /&gt;&lt;br /&gt;This is much the same way I see the Device Driver model working. Most of the device driver will be written in user-mode with register/memory read/writes as syscalls where required and control procedures (with parameters) where a time-critical process of multiple register/memory read/writes is required.&lt;br /&gt;&lt;br /&gt;The benefit, of course, is that the OS can detect exceptions generated during user-mode driver code and disable further access to that driver. If the exception occurs in the kernel-mode driver - because the OS has no idea what's happened - the Kernel probably has to panic.&lt;br /&gt;&lt;br /&gt;These are just my thoughts as I develop my OS without reading any other material. My intention is to do this (develop it based on my ideas, of course some will be affected by what I've used/seen) but not to copy anything and try to create something entirely new and see how well that works. Or not!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/958894369509579247-747649941260541393?l=radpartbrainmat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://radpartbrainmat.blogspot.com/feeds/747649941260541393/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://radpartbrainmat.blogspot.com/2009/09/samos-progression-newlib-and-operating.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/747649941260541393'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/747649941260541393'/><link rel='alternate' type='text/html' href='http://radpartbrainmat.blogspot.com/2009/09/samos-progression-newlib-and-operating.html' title='samos progression; newlib and operating system interfacing'/><author><name>Sam T</name><uri>http://www.blogger.com/profile/12905043109698863507</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_G1I4CEs0Hw4/Sa217oZ1RGI/AAAAAAAAAAM/Ey9JSFmaosc/S220/n808790693_1063742_662.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-958894369509579247.post-1476712120965340794</id><published>2009-09-04T21:35:00.003+01:00</published><updated>2009-09-04T22:29:49.736+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='samos'/><category scheme='http://www.blogger.com/atom/ns#' term='operating system'/><title type='text'>samos - pre-empting!!</title><content type='html'>Below is the startup sequence using the PSIM PowerPC simulator built into GDB. It correctly preempts and starts to execute the idle thread - which uses a System Call to write out the Serial Driver.&lt;br /&gt;&lt;br /&gt;Of course by the time it preempts the second time something had gone wrong - hence the large amount of memory debugging.&lt;br /&gt;&lt;br /&gt;Also, it's using newlib which is a good sign of progress. Once the preempting problem is fixed, and with the newlib C library, an ethernet/serial based serial debugger would be a next port of call. Oh and moving to Qemu or something which has an ethernet device... and an ethernet driver. Hmm... fun times!&lt;br /&gt;&lt;br /&gt;From there - or with them statically linked - parse and load ELF images and load them in!&lt;br /&gt;&lt;br /&gt;Anything from interrupts.c is tracing from psim.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Update:&lt;/span&gt;&lt;br /&gt;Fixed it - update the memory management to be correct. The scheduler now loops around the idle thread!&lt;br /&gt;&lt;br /&gt;Wooooohoo!&lt;br /&gt;&lt;br /&gt;TARGET-PPC32: copying interrupt vectors to RAM...&lt;br /&gt;KERNEL: initialising memory pool 0x0001CA90, size 0x02000000&lt;br /&gt;KERNEL: initialising the scheduler...&lt;br /&gt;KERNEL: initialising the kernels heap...&lt;br /&gt;KERNEL: mempool at 0x0001CA90 alloc 0x00404000 at 0x0001CA90&lt;br /&gt;KERNEL: initialising memory pool 0x0001CA90, size 0x00404000&lt;br /&gt;KERNEL: initialising the task manager (dynamic)...&lt;br /&gt;KERNEL: mempool at 0x0001CA90 alloc 0x0000000C at 0x0001CA90&lt;br /&gt;KERNEL: mempool at 0x0001CA90 alloc 0x0000000C at 0x0001CA9C&lt;br /&gt;KERNEL: creating kernel process...&lt;br /&gt;KERNEL: mempool at 0x0001CA90 alloc 0x0000000C at 0x0001CAA8&lt;br /&gt;KERNEL: creating idle thread...&lt;br /&gt;KERNEL: mempool at 0x0001CA90 alloc 0x00000220 at 0x0001CAB4&lt;br /&gt;KERNEL: mempool at 0x0001CA90 alloc 0x00001000 at 0x0001CCD4&lt;br /&gt;KERNEL: thread (Kernel Idle) create spb=0x0001CCD4, sps=0x00001000, sp=0x0001DCD3&lt;br /&gt;KERNEL: attaching the idle thread...&lt;br /&gt;KERNEL: mempool at 0x0001CA90 alloc 0x0000000C at 0x0001DCD4&lt;br /&gt;KERNEL: mempool at 0x0001CA90 alloc 0x00000220 at 0x0001DCE0&lt;br /&gt;KERNEL: mempool at 0x0001CA90 alloc 0x00001000 at 0x0001DF00&lt;br /&gt;KERNEL: thread (Kernel Scheduler) create spb=0x0001DF00, sps=0x00001000, sp=0x0001EEFF&lt;br /&gt;KERNEL: mempool at 0x0001CA90 alloc 0x0000000C at 0x0001EF00&lt;br /&gt;KERNEL: scheduler initialised&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;KERNEL: SAMOS Version 0.1&lt;br /&gt;TARGET-PPC32: enabling external interrupts...&lt;br /&gt;interrupts.c:464: external interrupt - cia=0x2104&lt;br /&gt;interrupts.c:396: system-call interrupt - cia=0x5e70&lt;br /&gt;KERNEL: idle thread&lt;br /&gt;interrupts.c:396: system-call interrupt - cia=0x5e70&lt;br /&gt;KERNEL: idle thread&lt;br /&gt;interrupts.c:396: system-call interrupt - cia=0x5e70&lt;br /&gt;KERNEL: idle thread&lt;br /&gt;interrupts.c:396: system-call interrupt - cia=0x5e70&lt;br /&gt;KERNEL: idle thread&lt;br /&gt;interrupts.c:396: system-call interrupt - cia=0x5e70&lt;br /&gt;KERNEL: idle thread&lt;br /&gt;interrupts.c:396: system-call interrupt - cia=0x5e70&lt;br /&gt;KERNEL: idle thread&lt;br /&gt;interrupts.c:396: system-call interrupt - cia=0x5e70&lt;br /&gt;KERNEL: idle thread&lt;br /&gt;interrupts.c:396: system-call interrupt - cia=0x5e70&lt;br /&gt;KERNEL: idle thread&lt;br /&gt;interrupts.c:396: system-call interrupt - cia=0x5e70&lt;br /&gt;KERNEL: idle thread&lt;br /&gt;interrupts.c:396: system-call interrupt - cia=0x5e70&lt;br /&gt;KERNEL: idle thread&lt;br /&gt;interrupts.c:396: system-call interrupt - cia=0x5e70&lt;br /&gt;KERNEL: idle thread&lt;br /&gt;interrupts.c:396: system-call interrupt - cia=0x5e70&lt;br /&gt;KERNEL: idle thread&lt;br /&gt;interrupts.c:464: external interrupt - cia=0x4cfc&lt;br /&gt;interrupts.c:396: system-call interrupt - cia=0x5e70&lt;br /&gt;KERNEL: idle thread&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/958894369509579247-1476712120965340794?l=radpartbrainmat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://radpartbrainmat.blogspot.com/feeds/1476712120965340794/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://radpartbrainmat.blogspot.com/2009/09/samos-almost-pre-empting.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/1476712120965340794'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/1476712120965340794'/><link rel='alternate' type='text/html' href='http://radpartbrainmat.blogspot.com/2009/09/samos-almost-pre-empting.html' title='samos - pre-empting!!'/><author><name>Sam T</name><uri>http://www.blogger.com/profile/12905043109698863507</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_G1I4CEs0Hw4/Sa217oZ1RGI/AAAAAAAAAAM/Ey9JSFmaosc/S220/n808790693_1063742_662.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-958894369509579247.post-3985711378145340726</id><published>2009-08-22T17:42:00.001+01:00</published><updated>2009-08-22T17:44:16.351+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='syscalls'/><category scheme='http://www.blogger.com/atom/ns#' term='samos'/><category scheme='http://www.blogger.com/atom/ns#' term='scheduling'/><title type='text'>samos scheduler &amp; syscalls</title><content type='html'>System calls are now working and the scheduler is almost there! For some reasons some static data is getting corrupted but other than that the timers are kicking in an pre-empting a procedure which does constant syscalls.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/958894369509579247-3985711378145340726?l=radpartbrainmat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://radpartbrainmat.blogspot.com/feeds/3985711378145340726/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://radpartbrainmat.blogspot.com/2009/08/samos-scheduler-syscalls.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/3985711378145340726'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/3985711378145340726'/><link rel='alternate' type='text/html' href='http://radpartbrainmat.blogspot.com/2009/08/samos-scheduler-syscalls.html' title='samos scheduler &amp; syscalls'/><author><name>Sam T</name><uri>http://www.blogger.com/profile/12905043109698863507</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_G1I4CEs0Hw4/Sa217oZ1RGI/AAAAAAAAAAM/Ey9JSFmaosc/S220/n808790693_1063742_662.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-958894369509579247.post-6916020638671892705</id><published>2009-08-08T01:45:00.003+01:00</published><updated>2009-08-08T01:49:51.776+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='arduino'/><category scheme='http://www.blogger.com/atom/ns#' term='samvis'/><category scheme='http://www.blogger.com/atom/ns#' term='arduemu'/><title type='text'>Arduino Mega</title><content type='html'>Just got my Arduino Mega in the post this morning and before popping out for the evening I did the typical hello world over the Serial connection and got some LEDs going - astonishingly easy which is always good.&lt;br /&gt;&lt;br /&gt;Tomorrows mission is to wire up a matrix of LEDs for a Spectrum Analyser and update the Winamp Visualisation code to support the serial connection. With any luck it should be fairly easy to do, the only thing I need to really worry about is the power consumption of so many LEDs but hey ho.&lt;br /&gt;&lt;br /&gt;Also, on the arduemu front - would it be weird to get arduemu running on a real arduino? That'd be like one of those motivational posters or something weird like that eh? I'm still trying to work through the opcodes of the arduino and it's ultamtely a question of time rather than skill - although the status flag documentation is the instruction set continues to be as helpful as a punch to the face. If you're an Arduino person and have access to sourceforge.net or an openID and want to help give me a shout!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/958894369509579247-6916020638671892705?l=radpartbrainmat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://radpartbrainmat.blogspot.com/feeds/6916020638671892705/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://radpartbrainmat.blogspot.com/2009/08/arduino-mega.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/6916020638671892705'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/6916020638671892705'/><link rel='alternate' type='text/html' href='http://radpartbrainmat.blogspot.com/2009/08/arduino-mega.html' title='Arduino Mega'/><author><name>Sam T</name><uri>http://www.blogger.com/profile/12905043109698863507</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_G1I4CEs0Hw4/Sa217oZ1RGI/AAAAAAAAAAM/Ey9JSFmaosc/S220/n808790693_1063742_662.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-958894369509579247.post-8275922341598084013</id><published>2009-07-28T21:02:00.004+01:00</published><updated>2009-07-28T21:08:36.222+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='arduino'/><category scheme='http://www.blogger.com/atom/ns#' term='openal'/><category scheme='http://www.blogger.com/atom/ns#' term='winamp'/><category scheme='http://www.blogger.com/atom/ns#' term='samos'/><category scheme='http://www.blogger.com/atom/ns#' term='arduemu'/><title type='text'>project update(s)</title><content type='html'>SAMOS is moving along nicely and I've started reading up on the &lt;a href="http://en.wikipedia.org/wiki/Ia32"&gt;ia32&lt;/a&gt; architecture and &lt;a href="http://en.wikipedia.org/wiki/Apic"&gt;ACPI&lt;/a&gt; ready for a target port to the 386 based family. I've also fixed the interrupt handling on the PowerPC code and need to take another look at trigger/level driven interrupt handling on the OPIC.&lt;br /&gt;&lt;br /&gt;Wumpus OpenAL Output for Winamp, I've been working on panning, effects, 3D and XRAM stuff and thats starting to take shape (check out the SVN) so you can pan and move the mono sources around now. Stability isn't quite there yet and I'm not sure the code is as efficent as it could be but it's all moving along nicely.&lt;br /&gt;&lt;br /&gt;Arduemu; we've started to talk about getting development up and going again. I'll probably start working again on the opcodes of the processor fairly soon and Rich is looking to start working on stuff in a few weeks time.&lt;br /&gt;&lt;br /&gt;So yeh, all fun 'n' games.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/958894369509579247-8275922341598084013?l=radpartbrainmat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://radpartbrainmat.blogspot.com/feeds/8275922341598084013/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://radpartbrainmat.blogspot.com/2009/07/project-updates.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/8275922341598084013'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/8275922341598084013'/><link rel='alternate' type='text/html' href='http://radpartbrainmat.blogspot.com/2009/07/project-updates.html' title='project update(s)'/><author><name>Sam T</name><uri>http://www.blogger.com/profile/12905043109698863507</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_G1I4CEs0Hw4/Sa217oZ1RGI/AAAAAAAAAAM/Ey9JSFmaosc/S220/n808790693_1063742_662.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-958894369509579247.post-5449469477238808633</id><published>2009-07-18T12:20:00.005+01:00</published><updated>2009-07-19T23:15:49.077+01:00</updated><title type='text'>Winamp OpenAL Effects and other things</title><content type='html'>I'm in the middle of update the Winamp OpenAL plugin so that it'll split out stereo+ sources down into Mono sources that OpenAL can then use to position them and apply effects to.&lt;br /&gt;&lt;br /&gt;This means you'll be able to do strange things like put a speaker 5 meters away and the another right next to you and pretend that you're in an aircraft hanger. Quite why you'd want to listen to your music like that is beyond me. However, instead of a hanger you could use concert halls and such if you wanted to add that live feeling. Obviously this is old-hat technology thats been part of EAX for a while but still it's nice to have the option!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Update 1&lt;/span&gt;&lt;br /&gt;The new code supports the old non-split again and that plays fine so it should be a case of splitting up the audio and then adding effects to each channel!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Update 2&lt;/span&gt;&lt;br /&gt;So it can split stereo down into two mono stream and change the listeners position (i.e. panning).&lt;br /&gt;&lt;br /&gt;I've added a GUI for changing the values of the sources too if you want to move where the speakers are but that isn't working quite correctly - for now. Will look @ correcting it tomorrow.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/958894369509579247-5449469477238808633?l=radpartbrainmat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://radpartbrainmat.blogspot.com/feeds/5449469477238808633/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://radpartbrainmat.blogspot.com/2009/07/winamp-openal-effects-and-other-things.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/5449469477238808633'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/5449469477238808633'/><link rel='alternate' type='text/html' href='http://radpartbrainmat.blogspot.com/2009/07/winamp-openal-effects-and-other-things.html' title='Winamp OpenAL Effects and other things'/><author><name>Sam T</name><uri>http://www.blogger.com/profile/12905043109698863507</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_G1I4CEs0Hw4/Sa217oZ1RGI/AAAAAAAAAAM/Ey9JSFmaosc/S220/n808790693_1063742_662.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-958894369509579247.post-2157040632481684066</id><published>2009-07-10T23:33:00.002+01:00</published><updated>2009-07-10T23:40:59.232+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='syscalls'/><category scheme='http://www.blogger.com/atom/ns#' term='samos'/><category scheme='http://www.blogger.com/atom/ns#' term='newlib'/><title type='text'>samos progress with c library, scheduling and syscalls</title><content type='html'>Over the past week or two I've been doing more work on my Operating System. As previously mentioned the scheduler now works and that means we can start to look at some more interesting things.&lt;br /&gt;&lt;br /&gt;I found a good guide for &lt;a href="http://wiki.osdev.org/OS_Specific_Toolchain"&gt;building a toolchain on a i386&lt;/a&gt; however I'm (initially) developing for a PowerPC processor. Later on I'll blog the differences incase anyone else is working with ppc32. This also means I've not got a standard C library now (&lt;a href="http://sourceware.org/newlib/"&gt;newlib&lt;/a&gt;)!&lt;br /&gt;&lt;br /&gt;However building an &lt;a href="http://en.wikipedia.org/wiki/Executable_and_Linkable_Format"&gt;ELF&lt;/a&gt; program is pointless if it can't interact with the Operating System - hence syscalls.&lt;br /&gt;&lt;br /&gt;I can now start to work on the &lt;a href="http://en.wikipedia.org/wiki/System_call"&gt;syscall&lt;/a&gt; interface between programs and the operating system so that they can create new programs, write to device drivers and so on.&lt;br /&gt;&lt;br /&gt;Finally - SAMOS will stand for [S]mall [A]gile [M]odule [O]perating [S]ystem.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/958894369509579247-2157040632481684066?l=radpartbrainmat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://radpartbrainmat.blogspot.com/feeds/2157040632481684066/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://radpartbrainmat.blogspot.com/2009/07/samos-progress-with-c-library.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/2157040632481684066'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/2157040632481684066'/><link rel='alternate' type='text/html' href='http://radpartbrainmat.blogspot.com/2009/07/samos-progress-with-c-library.html' title='samos progress with c library, scheduling and syscalls'/><author><name>Sam T</name><uri>http://www.blogger.com/profile/12905043109698863507</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_G1I4CEs0Hw4/Sa217oZ1RGI/AAAAAAAAAAM/Ey9JSFmaosc/S220/n808790693_1063742_662.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-958894369509579247.post-5309991084848424356</id><published>2009-06-28T15:20:00.003+01:00</published><updated>2009-06-28T15:23:30.391+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='samos'/><category scheme='http://www.blogger.com/atom/ns#' term='scheduling'/><title type='text'>samos pre-emptive scheduling, idle thread</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_G1I4CEs0Hw4/Skd8UaKSMnI/AAAAAAAAABQ/GNxTL3Tuv8I/s1600-h/samos_2009_06_28.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 229px;" src="http://1.bp.blogspot.com/_G1I4CEs0Hw4/Skd8UaKSMnI/AAAAAAAAABQ/GNxTL3Tuv8I/s320/samos_2009_06_28.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5352383372214809202" /&gt;&lt;/a&gt;&lt;br /&gt;The Kernel is now firing up and the idle thread is running (prints out once every 100,000 iterations in a while loop). This is running on PSIM using it's OPIC Interrupt Controller and debugging out to an emulated Serial Device.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/958894369509579247-5309991084848424356?l=radpartbrainmat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://radpartbrainmat.blogspot.com/feeds/5309991084848424356/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://radpartbrainmat.blogspot.com/2009/06/kernel-is-now-firing-up-and-idle-thread.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/5309991084848424356'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/5309991084848424356'/><link rel='alternate' type='text/html' href='http://radpartbrainmat.blogspot.com/2009/06/kernel-is-now-firing-up-and-idle-thread.html' title='samos pre-emptive scheduling, idle thread'/><author><name>Sam T</name><uri>http://www.blogger.com/profile/12905043109698863507</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_G1I4CEs0Hw4/Sa217oZ1RGI/AAAAAAAAAAM/Ey9JSFmaosc/S220/n808790693_1063742_662.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_G1I4CEs0Hw4/Skd8UaKSMnI/AAAAAAAAABQ/GNxTL3Tuv8I/s72-c/samos_2009_06_28.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-958894369509579247.post-3605369625262510667</id><published>2009-06-22T19:44:00.002+01:00</published><updated>2009-06-22T19:50:39.646+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='samos'/><category scheme='http://www.blogger.com/atom/ns#' term='scheduling'/><title type='text'>pre-emptive scheduling in samos</title><content type='html'>In samos I've spent the last week (on holiday) working on the pre-emptive scheduling.&lt;br /&gt;&lt;br /&gt;This has been moving on fairly well to the point where the external interrupt on the PowerPC simulator comes in and we interogate the OPIC Interrupt Controller to work out what happened. From there we work out the ISR to run which is the scheduler one and save any state of executing task. When we return from the ISR we enter the Scheduler which selects the next thread and executes it.&lt;br /&gt;&lt;br /&gt;The last bit I'm missing is to restore that threads register values but once that's conmplete the scheduler should nicely be able to run the Idle thread all day long.&lt;br /&gt;&lt;br /&gt;Not very exciting though so it means I can work on a debugging app for the command line. Maybe that's less exciting that I thought. Either way - interesting! It'll also offer the opertunity to start looking at newlib and CRT again for userland apps.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/958894369509579247-3605369625262510667?l=radpartbrainmat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://radpartbrainmat.blogspot.com/feeds/3605369625262510667/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://radpartbrainmat.blogspot.com/2009/06/pre-emptive-scheduling-in-samos.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/3605369625262510667'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/3605369625262510667'/><link rel='alternate' type='text/html' href='http://radpartbrainmat.blogspot.com/2009/06/pre-emptive-scheduling-in-samos.html' title='pre-emptive scheduling in samos'/><author><name>Sam T</name><uri>http://www.blogger.com/profile/12905043109698863507</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_G1I4CEs0Hw4/Sa217oZ1RGI/AAAAAAAAAAM/Ey9JSFmaosc/S220/n808790693_1063742_662.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-958894369509579247.post-4924470289290327248</id><published>2009-06-22T19:42:00.001+01:00</published><updated>2009-06-22T19:44:28.012+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='arduino'/><category scheme='http://www.blogger.com/atom/ns#' term='arduemu'/><title type='text'>arduemu on hold</title><content type='html'>Rich has dropped off the project and my work with my Operating System &amp; Winamp OpenAL plugin is taking up a lot of time.&lt;br /&gt;&lt;br /&gt;The current source code for the arduemu is online and I'd really like to carry on so if anyone has some free time and would like to help out I'd love to hear from you!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/958894369509579247-4924470289290327248?l=radpartbrainmat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://radpartbrainmat.blogspot.com/feeds/4924470289290327248/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://radpartbrainmat.blogspot.com/2009/06/arduemu-on-hold.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/4924470289290327248'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/4924470289290327248'/><link rel='alternate' type='text/html' href='http://radpartbrainmat.blogspot.com/2009/06/arduemu-on-hold.html' title='arduemu on hold'/><author><name>Sam T</name><uri>http://www.blogger.com/profile/12905043109698863507</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_G1I4CEs0Hw4/Sa217oZ1RGI/AAAAAAAAAAM/Ey9JSFmaosc/S220/n808790693_1063742_662.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-958894369509579247.post-3971691174947208773</id><published>2009-05-31T00:51:00.005+01:00</published><updated>2009-05-31T00:58:56.404+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mmu'/><category scheme='http://www.blogger.com/atom/ns#' term='samos'/><category scheme='http://www.blogger.com/atom/ns#' term='newlib'/><category scheme='http://www.blogger.com/atom/ns#' term='scheduling'/><title type='text'>samos - pre-emptive scheduling progress</title><content type='html'>I've spent most of today - well OK this evening - writing a driver for the OPIC timers to use in pre-emptive scheduling of the Kernel. I've got it counting down and generating an Interrupt but that isn't getting into the OPIC controller yet, no doubt some configuration bit on a register I've forgotten about.&lt;br /&gt;&lt;br /&gt;Either way, once timer based interrupts can be generated and handled with an ISR the Scheduler can dump the register state into the Processes memory and chose another process to run - i.e. &lt;a href="http://en.wikipedia.org/wiki/Preemption_(computing)"&gt;pre-emptive scheduling&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Of course at the moment I don't have any Processes except the Idle processes but I guess two programs that print "Hi" and "Bye" could run and should switch between them if they're set at the same priority.&lt;br /&gt;&lt;br /&gt;Once I have pre-emptive scheduling in I can start to look at getting newlib setup correctly with CRT0 so I can write some proper test apps. It'd also be nice to abstract the PowerPC page tables in RAM so I can make best use of the MMU for proper process memory protection.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/958894369509579247-3971691174947208773?l=radpartbrainmat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://radpartbrainmat.blogspot.com/feeds/3971691174947208773/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://radpartbrainmat.blogspot.com/2009/05/samos-pre-emptive-scheduling-progress.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/3971691174947208773'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/3971691174947208773'/><link rel='alternate' type='text/html' href='http://radpartbrainmat.blogspot.com/2009/05/samos-pre-emptive-scheduling-progress.html' title='samos - pre-emptive scheduling progress'/><author><name>Sam T</name><uri>http://www.blogger.com/profile/12905043109698863507</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_G1I4CEs0Hw4/Sa217oZ1RGI/AAAAAAAAAAM/Ey9JSFmaosc/S220/n808790693_1063742_662.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-958894369509579247.post-1066863849087724022</id><published>2009-05-16T10:01:00.004+01:00</published><updated>2009-05-16T13:03:54.694+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='openal'/><category scheme='http://www.blogger.com/atom/ns#' term='winamp'/><title type='text'>Winamp OpenAL 0.9 Beta 5</title><content type='html'>I'll be working on Beta 5 over the weekend (Beta 4 is available &lt;a href="http://sourceforge.net/project/showfiles.php?group_id=230353&amp;package_id=279187"&gt;here&lt;/a&gt;) to fix the MP3 VBR (Variable Bit rate) issue.&lt;br /&gt;&lt;br /&gt;If you have any bugs with any release please post it &lt;a href="http://sourceforge.net/tracker/?atid=1079815&amp;group_id=230353&amp;func=browse"&gt;here&lt;/a&gt; rather than on the blog as it's easier to track!&lt;br /&gt;&lt;br /&gt;Ta&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Update:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Well I've fixed it and it's only 11am, cracking. I'll run some tests through my collection and make sure it stands up and then do some cleaning and hopefully will check it in today.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;YAU (Yet Another Update)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;It's ready for download &lt;a href="http://sourceforge.net/project/showfiles.php?group_id=230353"&gt;here&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/958894369509579247-1066863849087724022?l=radpartbrainmat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://radpartbrainmat.blogspot.com/feeds/1066863849087724022/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://radpartbrainmat.blogspot.com/2009/05/winamp-openal-beta-5.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/1066863849087724022'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/1066863849087724022'/><link rel='alternate' type='text/html' href='http://radpartbrainmat.blogspot.com/2009/05/winamp-openal-beta-5.html' title='Winamp OpenAL 0.9 Beta 5'/><author><name>Sam T</name><uri>http://www.blogger.com/profile/12905043109698863507</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_G1I4CEs0Hw4/Sa217oZ1RGI/AAAAAAAAAAM/Ey9JSFmaosc/S220/n808790693_1063742_662.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-958894369509579247.post-2758923658954669265</id><published>2009-05-06T22:21:00.004+01:00</published><updated>2009-05-06T23:04:10.392+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='openal'/><category scheme='http://www.blogger.com/atom/ns#' term='winamp'/><title type='text'>Winamp OpenAL 0.9 beta 3, plug-ins?</title><content type='html'>Thanks to the various people who've submitted bug reports and comments for the new 0.9 beta for the OpenAL plug-in for Winamp.&lt;br /&gt;&lt;br /&gt;I know it's been a bit of a pain but the benefit is, to some extend if you're a purist like me, worth the hassle of sorting the few issues out. On my Laptop (software rendering) and Waveout Winamp uses 3-4% but with the 0.9 Beta 3 build its virtually nothing - but that isn't me that's all down to OpenAL.&lt;br /&gt;&lt;br /&gt;I've added a bit more info about XRAM to the configuration page so people can see why the XRAM tick is disabled. If its greyed out and you have XRAM let me know and I'll investigate.&lt;br /&gt;&lt;br /&gt;I'm also wondering if anyone would think about extending the Plug-in (plug-ins for a plug-in?) in regards to things like Effects? I don't really have the time to invest in it but I could quite easily add a new interface for extra DLLs to be loaded in with extra functionality.&lt;br /&gt;&lt;br /&gt;If anyone's interested and wants to write any kind of Effects plug-ins (and has a knowledge of C (you might be able to get away with VB :s, not sure though) for the DLLs then let me know.&lt;br /&gt;&lt;br /&gt;Beta 3 is out on SourceForge for breaking... err testing.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/958894369509579247-2758923658954669265?l=radpartbrainmat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://radpartbrainmat.blogspot.com/feeds/2758923658954669265/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://radpartbrainmat.blogspot.com/2009/05/winamp-openal-09-plug-ins.html#comment-form' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/2758923658954669265'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/2758923658954669265'/><link rel='alternate' type='text/html' href='http://radpartbrainmat.blogspot.com/2009/05/winamp-openal-09-plug-ins.html' title='Winamp OpenAL 0.9 beta 3, plug-ins?'/><author><name>Sam T</name><uri>http://www.blogger.com/profile/12905043109698863507</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_G1I4CEs0Hw4/Sa217oZ1RGI/AAAAAAAAAAM/Ey9JSFmaosc/S220/n808790693_1063742_662.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-958894369509579247.post-2564933290239848269</id><published>2009-05-04T13:31:00.002+01:00</published><updated>2009-05-04T20:39:36.078+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='arduino'/><category scheme='http://www.blogger.com/atom/ns#' term='arduemu'/><title type='text'>Arduemu opcodes</title><content type='html'>Nothing like writing Arduino opcodes on a bank holiday Monday! Rich is taking a break to work on his &lt;a href="http://www.jailbreaksource.com/"&gt;Jailbreak&lt;/a&gt; project but should be able to have a bunch more opcodes done today.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Update:&lt;/span&gt;&lt;br /&gt;Lots of new opcodes added, about 46 or so in total now giving us about 35% of all the opcodes done.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/958894369509579247-2564933290239848269?l=radpartbrainmat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://radpartbrainmat.blogspot.com/feeds/2564933290239848269/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://radpartbrainmat.blogspot.com/2009/05/arduemu-opcodes.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/2564933290239848269'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/2564933290239848269'/><link rel='alternate' type='text/html' href='http://radpartbrainmat.blogspot.com/2009/05/arduemu-opcodes.html' title='Arduemu opcodes'/><author><name>Sam T</name><uri>http://www.blogger.com/profile/12905043109698863507</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_G1I4CEs0Hw4/Sa217oZ1RGI/AAAAAAAAAAM/Ey9JSFmaosc/S220/n808790693_1063742_662.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-958894369509579247.post-1470890630022573166</id><published>2009-04-25T13:32:00.004+01:00</published><updated>2009-04-26T18:45:24.538+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='openal'/><category scheme='http://www.blogger.com/atom/ns#' term='winamp'/><title type='text'>Wumpus OpenAL Output for Winamp 0.9 - XRAM</title><content type='html'>After giving up so nicely on WASAPI and picking up a new X-Fi card from Creative with XRAM I've managed to start work on version 0.9 of the &lt;a href="http://sourceforge.net/projects/winampopenalout"&gt;OpenAL plugin&lt;/a&gt; instead.&lt;br /&gt;&lt;br /&gt;I'm not sure how XRAM will work as it's likely I'll have to buffer the entire stream and then move it into XRAM from RAM rather than streaming it in bits. On of the things I've already done today is setup a new &lt;a href="http://winampopenalout.svn.sourceforge.net/viewvc/winampopenalout/branches/out_openal_0_9_0_buffering/"&gt;Subversion branch for zero-copy buffering&lt;/a&gt;. What this means is that I no longer do my own buffering in the plugin, as data comes in we send it straight off to OpenAL. The benefit is rather obvious - we're not moving memory around or working out how much to copy and where to!&lt;br /&gt;&lt;br /&gt;This also removes the need for internal buffers and the temporary buffer and pointer arithmetic which although worked is slower than just giving it to OpenAL! &lt;br /&gt;&lt;br /&gt;In conclusion - gutting the source code to a minimum for speed and trying to see what we can do with XRAM. A fun weekend indeed!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Update:&lt;/span&gt;&lt;br /&gt;Ok it's Sunday and the XRAM &amp; buffering update is done and works! It requires a bit more polishing bit you can expect a beta tomorrow or midweek. Right now although XRAM is in there I'm not entirely sure of it's advantages as Winamp is kinda streamed (in &lt;8KB blocks) so I may buffer that up internally into, say, 8MB blocks and put that into XRAM to optimise for latency.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/958894369509579247-1470890630022573166?l=radpartbrainmat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://radpartbrainmat.blogspot.com/feeds/1470890630022573166/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://radpartbrainmat.blogspot.com/2009/04/wumpus-openal-output-for-winamp-09.html#comment-form' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/1470890630022573166'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/1470890630022573166'/><link rel='alternate' type='text/html' href='http://radpartbrainmat.blogspot.com/2009/04/wumpus-openal-output-for-winamp-09.html' title='Wumpus OpenAL Output for Winamp 0.9 - XRAM'/><author><name>Sam T</name><uri>http://www.blogger.com/profile/12905043109698863507</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_G1I4CEs0Hw4/Sa217oZ1RGI/AAAAAAAAAAM/Ey9JSFmaosc/S220/n808790693_1063742_662.jpg'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-958894369509579247.post-5744780500878503188</id><published>2009-04-17T18:15:00.004+01:00</published><updated>2009-04-17T19:51:32.801+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='opic'/><category scheme='http://www.blogger.com/atom/ns#' term='samos'/><category scheme='http://www.blogger.com/atom/ns#' term='interrupt'/><category scheme='http://www.blogger.com/atom/ns#' term='device drivers'/><title type='text'>samos &amp; interrupts</title><content type='html'>I've managed to write a Device Driver for the OPIC interrupt controller and get interrupts from a Serial Device. Over the course of the weekend I'll map this into the Interrupt Controller (the Serial Device Driver will map to it) so the Serial Device Driver can read this, handle it and it can all carry on!&lt;br /&gt;&lt;br /&gt;IntC (Interrupt Controller)&lt;br /&gt;ISR (Interrupt Service Routine)&lt;br /&gt;&lt;br /&gt;1/ Get the Interrupt into the External Interrupt Vector on the PowerPC&lt;br /&gt;Serial Driver --&gt; OPIC --&gt; External Interrupt --&gt; Ext Interrupt Vector --&gt; IntC&lt;br /&gt;&lt;br /&gt;2/ Query the BSP to query the OPIC to work out Interrupt occured&lt;br /&gt;OPIC &lt;-- BSP &lt;-- IntC&lt;br /&gt;&lt;br /&gt;3/ Lookup the Interrupt Handler (ISR) and execute it&lt;br /&gt;IntC -&gt; ISR -&gt; Driver&lt;br /&gt;&lt;br /&gt;We've handled the interrupt!&lt;br /&gt;&lt;br /&gt;4/ The driver should remove the source of the Interrupt&lt;br /&gt;Driver --&gt; Hardware&lt;br /&gt;&lt;br /&gt;5/ Finish off; tell OPIC we're done and it can remove the Interrupt&lt;br /&gt;IntC --&gt; BSP --&gt; OPIC&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/958894369509579247-5744780500878503188?l=radpartbrainmat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://radpartbrainmat.blogspot.com/feeds/5744780500878503188/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://radpartbrainmat.blogspot.com/2009/04/samos-interrupts.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/5744780500878503188'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/5744780500878503188'/><link rel='alternate' type='text/html' href='http://radpartbrainmat.blogspot.com/2009/04/samos-interrupts.html' title='samos &amp;amp; interrupts'/><author><name>Sam T</name><uri>http://www.blogger.com/profile/12905043109698863507</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_G1I4CEs0Hw4/Sa217oZ1RGI/AAAAAAAAAAM/Ey9JSFmaosc/S220/n808790693_1063742_662.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-958894369509579247.post-2022980006461017095</id><published>2009-04-13T10:11:00.003+01:00</published><updated>2009-04-13T10:19:35.197+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='arduino'/><category scheme='http://www.blogger.com/atom/ns#' term='arduemu'/><title type='text'>Arduemu external devices idea</title><content type='html'>I was thinking about how we'd emulate the external devices on the Arduino boards; from what I can see so far they're largely pin based although I need to dig a little deeper and see how that looks in assembly (i.e. is it bit or byte access).&lt;br /&gt;&lt;br /&gt;However, the idea I had was that during emulation you could connect emulated devices to the emulator over Ethernet. This would mean you could connect devices as it was running to a base address (i.e. TCP port 6000) and even fire up another emulator with a different base address (TCP port 7000) and connect - for example a serial device to each and let both emulators talk to each other over Ethernet.&lt;br /&gt;&lt;br /&gt;I'm not sure how that'll work out bandwidth wise yet with things like Ethernet devices but they're a way off - it's not like I've seen anyone connect an HDD to one yet. But even then the I/O would be Ethernet based (and on the loopback device - inside the stack - so should all be done in memory assuming that's how the Operating System works).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/958894369509579247-2022980006461017095?l=radpartbrainmat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://radpartbrainmat.blogspot.com/feeds/2022980006461017095/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://radpartbrainmat.blogspot.com/2009/04/arduemu-external-devices-idea.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/2022980006461017095'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/2022980006461017095'/><link rel='alternate' type='text/html' href='http://radpartbrainmat.blogspot.com/2009/04/arduemu-external-devices-idea.html' title='Arduemu external devices idea'/><author><name>Sam T</name><uri>http://www.blogger.com/profile/12905043109698863507</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_G1I4CEs0Hw4/Sa217oZ1RGI/AAAAAAAAAAM/Ey9JSFmaosc/S220/n808790693_1063742_662.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-958894369509579247.post-3000898482530278987</id><published>2009-04-11T10:51:00.002+01:00</published><updated>2009-04-11T11:00:17.497+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='winamp'/><category scheme='http://www.blogger.com/atom/ns#' term='wasapi'/><title type='text'>WASAPI and Winamp project closed</title><content type='html'>I've stopped work on the WASAPI plugin as I'm just not making any progress at the moment and time is being sucked away by my OS project.&lt;br /&gt;&lt;br /&gt;However, I'm releasing the source code under GPL &lt;a href="http://www.wumpus.co.uk/dload/wumpus_wasapi_out_0_1_0.zip"&gt;here&lt;/a&gt; so please take a look and see if you can fix it.&lt;br /&gt;&lt;br /&gt;If you do work out what was causing the issue (the issue is rather obvious) please do let me know.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/958894369509579247-3000898482530278987?l=radpartbrainmat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://radpartbrainmat.blogspot.com/feeds/3000898482530278987/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://radpartbrainmat.blogspot.com/2009/04/wasapi-and-winamp-project-closed.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/3000898482530278987'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/3000898482530278987'/><link rel='alternate' type='text/html' href='http://radpartbrainmat.blogspot.com/2009/04/wasapi-and-winamp-project-closed.html' title='WASAPI and Winamp project closed'/><author><name>Sam T</name><uri>http://www.blogger.com/profile/12905043109698863507</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_G1I4CEs0Hw4/Sa217oZ1RGI/AAAAAAAAAAM/Ey9JSFmaosc/S220/n808790693_1063742_662.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-958894369509579247.post-9065095657360006253</id><published>2009-04-04T16:55:00.003+01:00</published><updated>2009-04-04T20:25:07.164+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='winamp'/><category scheme='http://www.blogger.com/atom/ns#' term='wasapi'/><title type='text'>Winamp &amp; WASAPI weekend of code</title><content type='html'>Well I've written a nice new genetic buffer (might move it into OpenAL plugin later on) but that didn't solve the problem.&lt;br /&gt;&lt;br /&gt;Instead I think it's more an issue in the various levels of abstraction in PortAudio so I've dug out the old MSDN documentation for it and am trying to get that up to date and working.&lt;br /&gt;&lt;br /&gt;Hopefully this will remove the dependence on PortAudio and mean I'll have more control over WASAPI.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Update:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Well I've switched over to a hard coded WASAPI implemetation and dropped PortAudio but I'm kinda back to where I was. The audio plays at like 1/8th the speed like its an LP and its slowed down.&lt;br /&gt;&lt;br /&gt;I'm not sure why it's doing this and I'm going over the MSDN docs to try and found out why but right now I'm at a loss!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/958894369509579247-9065095657360006253?l=radpartbrainmat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://radpartbrainmat.blogspot.com/feeds/9065095657360006253/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://radpartbrainmat.blogspot.com/2009/04/winamp-wasapi-weekend-of-code.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/9065095657360006253'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/9065095657360006253'/><link rel='alternate' type='text/html' href='http://radpartbrainmat.blogspot.com/2009/04/winamp-wasapi-weekend-of-code.html' title='Winamp &amp; WASAPI weekend of code'/><author><name>Sam T</name><uri>http://www.blogger.com/profile/12905043109698863507</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_G1I4CEs0Hw4/Sa217oZ1RGI/AAAAAAAAAAM/Ey9JSFmaosc/S220/n808790693_1063742_662.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-958894369509579247.post-1571492708799279375</id><published>2009-03-29T13:01:00.003+01:00</published><updated>2009-03-29T13:48:20.976+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='winamp'/><category scheme='http://www.blogger.com/atom/ns#' term='wasapi'/><title type='text'>Winamp &amp; WASAPI Exclusive mode!</title><content type='html'>Well by changing PortAudio from Exclusive Mode to Shared Mode the plugin I wrote works fine (it plays but the rest is a little rusty as that's all i was doing) - and works fine with ASIO too.&lt;br /&gt;&lt;br /&gt;I'm gonna take some time to dig into Port Audio and see if it's doing Exclusive mode correctly. When put into Exclusive mode the sound is slower and chopping, stutters. It sounds like it might be sampling rate issue but I can't be sure - if it is Exclusive mode should be able to handle it as it's done in hardware.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Update - it works!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;So I've been playing with PortAudio's use of Exclusive mode and have cracked it. Winamp now plays in WASAPI Exclusive mode! Obviously this stuff is miles away a release I'm afraid but it's progress.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/958894369509579247-1571492708799279375?l=radpartbrainmat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://radpartbrainmat.blogspot.com/feeds/1571492708799279375/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://radpartbrainmat.blogspot.com/2009/03/winamp-wasapi-update.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/1571492708799279375'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/1571492708799279375'/><link rel='alternate' type='text/html' href='http://radpartbrainmat.blogspot.com/2009/03/winamp-wasapi-update.html' title='Winamp &amp; WASAPI Exclusive mode!'/><author><name>Sam T</name><uri>http://www.blogger.com/profile/12905043109698863507</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_G1I4CEs0Hw4/Sa217oZ1RGI/AAAAAAAAAAM/Ey9JSFmaosc/S220/n808790693_1063742_662.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-958894369509579247.post-8697927093791695744</id><published>2009-03-27T19:39:00.003Z</published><updated>2009-05-06T22:28:00.906+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='winamp'/><category scheme='http://www.blogger.com/atom/ns#' term='wasapi'/><title type='text'>WASAPI and Winamp</title><content type='html'>Someone beat me to it! No, wait, two people beat me to it (I've been distracted).&lt;br /&gt;&lt;br /&gt;One is &lt;a href="http://forums.winamp.com/showthread.php?postid=2473944"&gt;here&lt;/a&gt; and the other &lt;a href="http://maikoplugin.atspace.com/index.html"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I haven't tried either of them but if they're good and actually work (in Exclusive mode) then I'll stop working on my Plugin and leave it to these fine people!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/958894369509579247-8697927093791695744?l=radpartbrainmat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://radpartbrainmat.blogspot.com/feeds/8697927093791695744/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://radpartbrainmat.blogspot.com/2009/03/wasapi-and-winamp.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/8697927093791695744'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/8697927093791695744'/><link rel='alternate' type='text/html' href='http://radpartbrainmat.blogspot.com/2009/03/wasapi-and-winamp.html' title='WASAPI and Winamp'/><author><name>Sam T</name><uri>http://www.blogger.com/profile/12905043109698863507</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_G1I4CEs0Hw4/Sa217oZ1RGI/AAAAAAAAAAM/Ey9JSFmaosc/S220/n808790693_1063742_662.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-958894369509579247.post-7463194236294657782</id><published>2009-03-26T23:07:00.002Z</published><updated>2009-03-26T23:14:37.706Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Subversion'/><title type='text'>VisualSVN</title><content type='html'>At home I use &lt;a href="http://en.wikipedia.org/wiki/Subversion_(software)"&gt;Subversion&lt;/a&gt; for &lt;a href="http://en.wikipedia.org/wiki/Version_control"&gt;version control&lt;/a&gt;. For the project I've open sourced I use SourceForge which also uses Subversion.&lt;br /&gt;&lt;br /&gt;The server part I've always used before was a hacked together Windows Service of svnserve.exe or the Apache plugin.&lt;br /&gt;&lt;br /&gt;However, &lt;a href="http://www.visualsvn.com/server/"&gt;VisualSVN&lt;/a&gt; is a more ... visual? version for Windows that also integrates into the Windows authentication stuffs.&lt;br /&gt;&lt;br /&gt;Definitely worth a look.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/958894369509579247-7463194236294657782?l=radpartbrainmat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://radpartbrainmat.blogspot.com/feeds/7463194236294657782/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://radpartbrainmat.blogspot.com/2009/03/visualsvn.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/7463194236294657782'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/7463194236294657782'/><link rel='alternate' type='text/html' href='http://radpartbrainmat.blogspot.com/2009/03/visualsvn.html' title='VisualSVN'/><author><name>Sam T</name><uri>http://www.blogger.com/profile/12905043109698863507</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_G1I4CEs0Hw4/Sa217oZ1RGI/AAAAAAAAAAM/Ey9JSFmaosc/S220/n808790693_1063742_662.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-958894369509579247.post-6554386144041312435</id><published>2009-03-24T22:21:00.005Z</published><updated>2009-03-24T22:28:57.960Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='dynamic memory allocation'/><category scheme='http://www.blogger.com/atom/ns#' term='samos'/><category scheme='http://www.blogger.com/atom/ns#' term='memory management'/><title type='text'>Memory management implementation</title><content type='html'>Well the memory management system has been implemented, initially anyway, and seems to be working correctly. &lt;a href="http://en.wikipedia.org/wiki/Memory_fragmentation"&gt;Defragmentation&lt;/a&gt; via the MMU is out at the moment but it'll have to go in later on so that the heap can be allocated and accessed anywhere in RAM (right now it's using BAT registers).&lt;br /&gt;&lt;br /&gt;I've also started to draw out an initial Architecture diagram. So far I have four layers;&lt;br /&gt;&lt;br /&gt;1/ The Core - Processes, Threads, Device Drivers and so on&lt;br /&gt;&lt;br /&gt;2/ &lt;a href="http://en.wikipedia.org/wiki/OSAL"&gt;OSAL&lt;/a&gt; (Operating System Abstraction Layer) -  Kernel objects, &lt;a href="http://en.wikipedia.org/wiki/HAL"&gt;HAL&lt;/a&gt; to access the Device drivers and Interrupt control.&lt;br /&gt;&lt;br /&gt;3/ newlib - a C Library implementation with extra syscalls for the extra OSAL items.&lt;br /&gt;&lt;br /&gt;4/ Applications. This one caused me to think a bit; how will the Kernel fire up an application? Are they implanted straight into the Kernel as seperate sections? Are the &lt;a href="http://en.wikipedia.org/wiki/Executable_and_Linkable_Format"&gt;ELF images&lt;/a&gt; stored in bss and then parsed and loaded into memory? Bit early right now but interesting stuff.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/958894369509579247-6554386144041312435?l=radpartbrainmat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://radpartbrainmat.blogspot.com/feeds/6554386144041312435/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://radpartbrainmat.blogspot.com/2009/03/memory-management-implementation.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/6554386144041312435'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/6554386144041312435'/><link rel='alternate' type='text/html' href='http://radpartbrainmat.blogspot.com/2009/03/memory-management-implementation.html' title='Memory management implementation'/><author><name>Sam T</name><uri>http://www.blogger.com/profile/12905043109698863507</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_G1I4CEs0Hw4/Sa217oZ1RGI/AAAAAAAAAAM/Ey9JSFmaosc/S220/n808790693_1063742_662.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-958894369509579247.post-1545408637037308456</id><published>2009-03-19T15:06:00.004Z</published><updated>2009-03-19T15:28:49.378Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='dynamic memory allocation'/><category scheme='http://www.blogger.com/atom/ns#' term='samos'/><category scheme='http://www.blogger.com/atom/ns#' term='memory management'/><title type='text'>Dynamic memory management</title><content type='html'>I've been busy working on Arduemu recently but as Richard is working on implementing the opcodes I've taken a bit of time to get back to Samos.&lt;br /&gt;&lt;br /&gt;I've been looking (again) at the way dynamic memory is dealt with - i.e. the heap and things such as memory fragmentation. Previously I was splitting the pages into chucks and allocating that way - however if you're allocating 4 byte values (poor choice anyway but nevermind) or are just slightly over a chunk boundary then you end up wasting memory; and on an embedded system that could cost you.&lt;br /&gt;&lt;br /&gt;Instead I'm looking to implement a block table which will reside at the top of the heap and slowly grow down to the heap base with a meta-data table at the start. Each table entry would be 64-bits (2 bytes). As you allocate memory (at the bottom of the heap) a table entry is added.&lt;br /&gt;&lt;br /&gt;As entries are added, empty entries pad the free data or the empty entries are re-sized down and new "allocated" entries added.&lt;br /&gt;&lt;br /&gt;This is quite close to the &lt;a href="http://en.wikipedia.org/wiki/Buddy_memory_allocation"&gt;Buddy System&lt;/a&gt; but - at the cost of speed - packs the memory closer together. However, as we're running on an embedded system the result is more efficient use of our limited resource - RAM.&lt;br /&gt;&lt;br /&gt;It's also nice to have come up with a system myself and it match what someone has already defined as a recognized system. I can see other benefits and possibilities with this system too.&lt;br /&gt;&lt;br /&gt;1/ Fragmentation.&lt;br /&gt;&lt;br /&gt;Assuming an &lt;a href="http://en.wikipedia.org/wiki/Memory_management_unit"&gt;MMU&lt;/a&gt; is &lt;span style="font-weight:bold;"&gt;not&lt;/span&gt; present we simply use real address values and when memory becomes fragmented we're stuck - memory allocations of a larger than available size fail.&lt;br /&gt;&lt;br /&gt;Assuming an MMU &lt;span style="font-weight:bold;"&gt;is&lt;/span&gt; present, we can use the MMU to move page-aligned blocks around and update our table to move - for example - all the free entries to the end of our heap.&lt;br /&gt;&lt;br /&gt;This way the real address we've returned becomes a virtual address and is still valid. It also means we don't have to copy any memory and our Operating System can support an MMU or not.&lt;br /&gt;&lt;br /&gt;2/ Multiple Processors.&lt;br /&gt;&lt;br /&gt;At present the Operating System doesn't support multiple processors. However, if it did and those processors had shared memory (as one would assume) instead of locking the entire memory down when mallocs are performed it can be tuned to just that one heap and also - possibly just one block (although how the table is synchronised is TBD).&lt;br /&gt;&lt;br /&gt;3/ Debugging / Memory leaks&lt;br /&gt;&lt;br /&gt;It would be possible to show all the blocks separately and record the &lt;a href="http://en.wikipedia.org/wiki/Program_counter"&gt;PC&lt;/a&gt; so that a process or high-level library could track memory allocations and detect memory leaks and where that memory leak was started.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/958894369509579247-1545408637037308456?l=radpartbrainmat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://radpartbrainmat.blogspot.com/feeds/1545408637037308456/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://radpartbrainmat.blogspot.com/2009/03/dynamic-memory-management.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/1545408637037308456'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/1545408637037308456'/><link rel='alternate' type='text/html' href='http://radpartbrainmat.blogspot.com/2009/03/dynamic-memory-management.html' title='Dynamic memory management'/><author><name>Sam T</name><uri>http://www.blogger.com/profile/12905043109698863507</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_G1I4CEs0Hw4/Sa217oZ1RGI/AAAAAAAAAAM/Ey9JSFmaosc/S220/n808790693_1063742_662.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-958894369509579247.post-1506081970870871143</id><published>2009-03-11T22:21:00.004Z</published><updated>2009-05-06T22:28:32.880+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='arduino'/><category scheme='http://www.blogger.com/atom/ns#' term='arduemu'/><title type='text'>arduemu looping</title><content type='html'>The arduemu has had a few more opcodes implemented now and can do basic loops.&lt;br /&gt;i.e.&lt;br /&gt;&lt;blockquote&gt;start:&lt;br /&gt;ADD r2, r3&lt;br /&gt;JMP start&lt;/blockquote&gt;&lt;br /&gt;It's a pretty small detail but it's nice to see some programs running for the first time and in such a relatively small time frame since we started the project. We knew the 8-bit CPU would be easier to implement then say a 32-bit RISC processor like the PowerPC and this goes a way to showing that.&lt;br /&gt;&lt;br /&gt;As further opcodes get implemented more complex test programs can be created - might even be good to see if the Bootloader will start although I would assume that requires some external devices but we'll see.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/958894369509579247-1506081970870871143?l=radpartbrainmat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://radpartbrainmat.blogspot.com/feeds/1506081970870871143/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://radpartbrainmat.blogspot.com/2009/03/arduemu-looping.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/1506081970870871143'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/1506081970870871143'/><link rel='alternate' type='text/html' href='http://radpartbrainmat.blogspot.com/2009/03/arduemu-looping.html' title='arduemu looping'/><author><name>Sam T</name><uri>http://www.blogger.com/profile/12905043109698863507</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_G1I4CEs0Hw4/Sa217oZ1RGI/AAAAAAAAAAM/Ey9JSFmaosc/S220/n808790693_1063742_662.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-958894369509579247.post-1798873081496588769</id><published>2009-03-08T11:49:00.003Z</published><updated>2009-05-06T22:28:19.813+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='arduino'/><category scheme='http://www.blogger.com/atom/ns#' term='arduemu'/><title type='text'>arduemu</title><content type='html'>Richard is making progress on the CPU for the Arduino board (the Atmel AVR) now that the decoder is done and I've started to look at the various things off the board that we can implement.&lt;br /&gt;&lt;br /&gt;The first two ideas that came to mind were serial devices so we could get some input/output going - "Hello World" if you will. This then spawned another idea, apart from having a Serial Console device (get and put text char by char) we could also connect straight into the Windows Serial stuff and use a real serial device.&lt;br /&gt;&lt;br /&gt;This way you could run your project on Windows or Linux and drive things out on the serial device.&lt;br /&gt;&lt;br /&gt;The other thing I'd like to get going would be some kind of Discrete (on/off) inputs/outputs and maybe even some analogue inputs and outputs going. Obviously these could be done with a GUI front end - maybe even over TCP/IP - but implementing these as adapters to real hardware? Not sure that's possible without building drivers for specific cards like the &lt;a href="http://www.velleman.be/ot/en/product/view/?id=351980"&gt;VM110&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Either way lots of interesting things to try once the Bootloader is working. Of course that doesn't work yet because only a few instructions have been implemented but we can get it into Memory and have the source code so that should make life easier!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/958894369509579247-1798873081496588769?l=radpartbrainmat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://radpartbrainmat.blogspot.com/feeds/1798873081496588769/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://radpartbrainmat.blogspot.com/2009/03/arduemu.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/1798873081496588769'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/1798873081496588769'/><link rel='alternate' type='text/html' href='http://radpartbrainmat.blogspot.com/2009/03/arduemu.html' title='arduemu'/><author><name>Sam T</name><uri>http://www.blogger.com/profile/12905043109698863507</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_G1I4CEs0Hw4/Sa217oZ1RGI/AAAAAAAAAAM/Ey9JSFmaosc/S220/n808790693_1063742_662.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-958894369509579247.post-2413140413456927246</id><published>2009-03-03T23:00:00.006Z</published><updated>2009-05-06T22:28:57.580+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='arduino'/><category scheme='http://www.blogger.com/atom/ns#' term='arduemu'/><title type='text'>arduemu in Eclipse and Visual Studio 2005</title><content type='html'>The instruction decoder for the &lt;a href="http://en.wikipedia.org/wiki/Atmel_AVR"&gt;Amtel AVR&lt;/a&gt; is done and the project builds nicely in either Eclipse or Visual Studio 2005 thanks for cross platform lovelyness.&lt;br /&gt;&lt;br /&gt;Now that we've got converters (Intex Hex, S-Record etc) to raw binary and a Decoder that takes that and converts it into a structure; work can start on emulating the CPU itself.&lt;br /&gt;&lt;br /&gt;The other part we're missing is memory mapped I/O. This is going to be a huge chuck of memory that we're just going to map everything to. This'll mean when you fire up the emulator it will program the Bootloader into the right place in memory, then the Program into the right place.&lt;br /&gt;&lt;br /&gt;Registers and devices such as RAM and FLASH and EEPROM are also mapped into this area.&lt;br /&gt;&lt;br /&gt;Richard - for funzies - is working on the processor so I guess my next task is to work on some of these external devices. Maybe Serial - just written a serial device driver for samos so hey! Might as well.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/958894369509579247-2413140413456927246?l=radpartbrainmat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://radpartbrainmat.blogspot.com/feeds/2413140413456927246/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://radpartbrainmat.blogspot.com/2009/03/arduemu-in-eclipse-and-visual-studio.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/2413140413456927246'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/2413140413456927246'/><link rel='alternate' type='text/html' href='http://radpartbrainmat.blogspot.com/2009/03/arduemu-in-eclipse-and-visual-studio.html' title='arduemu in Eclipse and Visual Studio 2005'/><author><name>Sam T</name><uri>http://www.blogger.com/profile/12905043109698863507</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_G1I4CEs0Hw4/Sa217oZ1RGI/AAAAAAAAAAM/Ey9JSFmaosc/S220/n808790693_1063742_662.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-958894369509579247.post-4063990644238098592</id><published>2009-03-01T22:20:00.004Z</published><updated>2009-03-03T23:00:15.199Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='samvis'/><category scheme='http://www.blogger.com/atom/ns#' term='wasapi'/><category scheme='http://www.blogger.com/atom/ns#' term='samos'/><category scheme='http://www.blogger.com/atom/ns#' term='arduemu'/><title type='text'>Project(s) update</title><content type='html'>&lt;span style="font-weight:bold;"&gt;samos&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;At the moment I'm working on the interrupts - a Device Driver for the Open Interrupt Controller and the general mechanism to handle them. One of the benefits of PSIMs OPIC is that it also supports timers which can be used for preemptive scheduling later on.&lt;br /&gt;&lt;br /&gt;The ARM tools have been built so I should be able to start creating the platform dependent code for ARM and therefore be able to switch between PowerPC and ARM quite easily.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Arduemu&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I've worked out how to decode the parameters nicely so just working on that now. We're loading up S-Record, Intel Hex and Atmel Object code fine and I think Richard has started on the main loop so we should be able to start implementing some operations soon.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;samvis&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Kinda dropped the ball on this one; need to get hold of a PIC and get the I/O board onto a bread board.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;WASAPI&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;PortAudio - usual story!&lt;br /&gt;&lt;br /&gt;P.S. Prefix of sam is there because it's my name. I know it. Sometimes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/958894369509579247-4063990644238098592?l=radpartbrainmat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://radpartbrainmat.blogspot.com/feeds/4063990644238098592/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://radpartbrainmat.blogspot.com/2009/03/projects-update.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/4063990644238098592'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/4063990644238098592'/><link rel='alternate' type='text/html' href='http://radpartbrainmat.blogspot.com/2009/03/projects-update.html' title='Project(s) update'/><author><name>Sam T</name><uri>http://www.blogger.com/profile/12905043109698863507</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_G1I4CEs0Hw4/Sa217oZ1RGI/AAAAAAAAAAM/Ey9JSFmaosc/S220/n808790693_1063742_662.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-958894369509579247.post-2000238894411544074</id><published>2009-02-28T10:47:00.002Z</published><updated>2009-02-28T16:51:20.475Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='arm'/><category scheme='http://www.blogger.com/atom/ns#' term='operating system'/><title type='text'>writing an operating system - ARM</title><content type='html'>My previous entry noted how to build the tools to do cross platform development of a PowerPC Operating System (read Kernel) from Windows or Linux.&lt;br /&gt;&lt;br /&gt;Since I need myself to port over to the ARM architecture here are the commands for building the tools for Eclipse for ARM.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;binutils&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;./configure --target=arm-elf --prefix=/home/user/tools_arm7 --disable-nls&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;gcc&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;./configure --target=arm-elf --prefix=/home/user/tools_arm7 --with-gnu-as --with-gnu-ld --disable-nls --without-headers -enable-languages=c,c++&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;gdb&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;CC=gcc ./configure --enable-sim-arm --enable-sim-inline --enable-sim-duplicate --disable-sim-xor-endian --disable-sim-trace --disable-sim-icache --target=arm-elf --prefix=/home/user/tools_arm7 --disable-nls&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Now have to learn the ARM instruction set :s&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/958894369509579247-2000238894411544074?l=radpartbrainmat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://radpartbrainmat.blogspot.com/feeds/2000238894411544074/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://radpartbrainmat.blogspot.com/2009/02/writing-operating-system-arm.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/2000238894411544074'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/2000238894411544074'/><link rel='alternate' type='text/html' href='http://radpartbrainmat.blogspot.com/2009/02/writing-operating-system-arm.html' title='writing an operating system - ARM'/><author><name>Sam T</name><uri>http://www.blogger.com/profile/12905043109698863507</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_G1I4CEs0Hw4/Sa217oZ1RGI/AAAAAAAAAAM/Ey9JSFmaosc/S220/n808790693_1063742_662.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-958894369509579247.post-2368256959462422143</id><published>2009-02-28T00:49:00.002Z</published><updated>2009-02-28T00:50:33.521Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='wasapi'/><category scheme='http://www.blogger.com/atom/ns#' term='portaudio'/><title type='text'>wasapi and portaudio</title><content type='html'>Just so you know - still haven't forgotten. I'm still waiting on the PortAudio project. It may be that the issues I'm experiencing are corrected in the V19 work - may see if I can bring over the latest SVN at the weekend.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/958894369509579247-2368256959462422143?l=radpartbrainmat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://radpartbrainmat.blogspot.com/feeds/2368256959462422143/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://radpartbrainmat.blogspot.com/2009/02/wasapi-and-portaudio.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/2368256959462422143'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/2368256959462422143'/><link rel='alternate' type='text/html' href='http://radpartbrainmat.blogspot.com/2009/02/wasapi-and-portaudio.html' title='wasapi and portaudio'/><author><name>Sam T</name><uri>http://www.blogger.com/profile/12905043109698863507</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_G1I4CEs0Hw4/Sa217oZ1RGI/AAAAAAAAAAM/Ey9JSFmaosc/S220/n808790693_1063742_662.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-958894369509579247.post-3925088196856230439</id><published>2009-02-27T21:06:00.005Z</published><updated>2009-03-01T22:28:34.089Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='arduino'/><category scheme='http://www.blogger.com/atom/ns#' term='arduemu'/><title type='text'>Arduemu update</title><content type='html'>The project is going well so here's a quick status update.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;1/ Instruction Decoder.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The decoder can work out the op-codes now, just need to implement a more generic way of working out the parameters.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;2/ File formats.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Right now we're able to support three file formats - well will be able to - the parsers have been written.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Intel_hex"&gt;Intel Hex&lt;/a&gt; - one of the default output formats of the Arduino tools&lt;br /&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/S-record"&gt;S-Record&lt;/a&gt;, not a default file format but the tool does squirt out ELF which can be converted over to S-Record for programming onto your device.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Object_file"&gt;Atmel Object file&lt;/a&gt;, if you're not using the Arduino tool this is the output of some of the Atmel tools such as &lt;a href="http://www.atmel.com/dyn/Products/tools_card.asp?tool_id=2725"&gt;AVR Studio&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/958894369509579247-3925088196856230439?l=radpartbrainmat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://radpartbrainmat.blogspot.com/feeds/3925088196856230439/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://radpartbrainmat.blogspot.com/2009/02/arduemo-update.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/3925088196856230439'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/3925088196856230439'/><link rel='alternate' type='text/html' href='http://radpartbrainmat.blogspot.com/2009/02/arduemo-update.html' title='Arduemu update'/><author><name>Sam T</name><uri>http://www.blogger.com/profile/12905043109698863507</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_G1I4CEs0Hw4/Sa217oZ1RGI/AAAAAAAAAAM/Ey9JSFmaosc/S220/n808790693_1063742_662.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-958894369509579247.post-1379536458907220623</id><published>2009-02-23T22:16:00.005Z</published><updated>2009-03-01T22:29:31.398Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='arduino'/><category scheme='http://www.blogger.com/atom/ns#' term='atmel'/><category scheme='http://www.blogger.com/atom/ns#' term='arduemu'/><category scheme='http://www.blogger.com/atom/ns#' term='emulation'/><title type='text'>Arduino emulator</title><content type='html'>My latest project is a joint one. The project aim is to create an emulator for the &lt;a href="http://www.arduino.cc/"&gt;Arduino&lt;/a&gt; set of boards.&lt;br /&gt;&lt;br /&gt;Right now we're working on decoding the Atmel AVR instruction set. This comes comes as two parts.&lt;br /&gt;&lt;br /&gt;1/ Work out which op-code it is so we can...&lt;br /&gt;2/ Work out what format it is to determine what the parameters are.&lt;br /&gt;&lt;br /&gt;I'm in the middle of 1/ at the moment, putting together a rather large look-up table with all the bit-masks to work out the op-code.&lt;br /&gt;&lt;br /&gt;Likely enough it's only an 8-bit instruction set so quite simple! &lt;br /&gt;&lt;br /&gt;The project will be on SourceForge soon!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/958894369509579247-1379536458907220623?l=radpartbrainmat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://radpartbrainmat.blogspot.com/feeds/1379536458907220623/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://radpartbrainmat.blogspot.com/2009/02/arduino-emulator.html#comment-form' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/1379536458907220623'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/1379536458907220623'/><link rel='alternate' type='text/html' href='http://radpartbrainmat.blogspot.com/2009/02/arduino-emulator.html' title='Arduino emulator'/><author><name>Sam T</name><uri>http://www.blogger.com/profile/12905043109698863507</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_G1I4CEs0Hw4/Sa217oZ1RGI/AAAAAAAAAAM/Ey9JSFmaosc/S220/n808790693_1063742_662.jpg'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-958894369509579247.post-8986380060570519861</id><published>2009-02-18T20:42:00.004Z</published><updated>2009-02-18T21:53:42.385Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='gcc'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='gdb'/><category scheme='http://www.blogger.com/atom/ns#' term='operating system'/><title type='text'>writing an operating system in eclipse</title><content type='html'>I've been reading a websites about writing an Operating System in various IDE's such as Visual Studio. For my operating system I've been using Eclipse because it and GCC are both cross platform. This means I can write and simulate the PowerPC on a Windows box or Linux box.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;1/ General - Windows/Linux&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Regardless of the Operating System you'll need some basic tools to build the below. In this case we're developing for a different platform. I.e. We're writing a PowerPC Operating System on an x86 machine. We can still do this, but we need to create a cross-compiler - one that runs on an x86 machine but generates for PowerPC - for example.&lt;br /&gt;&lt;br /&gt;With almost all Linux machines these tools, like make, automake, bison etc come as default. With Ubuntu you might want to get the buildessentials package.&lt;br /&gt;&lt;br /&gt;Until Windows, you'll need to grab &lt;a href="http://www.cygwin.com/"&gt;Cygwin&lt;/a&gt;. Install the basic build tools like GCC, make, automake and bison. You'll know if you need anything else when we try to build the Tools below and they fail.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;2/ Tools - BinUtils and GCC&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;We now need to build the cross-compiler and tools. Initially we'll build a very basic version of the GCC compiler.&lt;br /&gt;&lt;br /&gt;2.1/ binutils&lt;br /&gt;&lt;br /&gt;Once you've downloaded &lt;a href="http://en.wikipedia.org/wiki/GNU_Binutils"&gt;GNU binutils&lt;/a&gt; extract the tar and load up a command line (or Cygwin) and execute the following.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;./configure --target=powerpc-elf --prefix=/home/user/tools_ppc32 --disable-nls&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;then&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;make all &amp;&amp; make install&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;powerpc-elf is the target - the machine we're going to be compiling code for.&lt;br /&gt;The --prefix option sets the directory all the tools will be compiled to. We add this so this version of GCC doesn't over-write the one we have installed.&lt;br /&gt;&lt;br /&gt;2.2/ GCC&lt;br /&gt;&lt;br /&gt;Download &lt;a href="http://en.wikipedia.org/wiki/GNU_Compiler_Collection"&gt;GCC&lt;/a&gt; and extract the tar and goto the extracted directory and execute:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;./configure --target=powerpc-elf --prefix=/home/user/tools_ppc32 --with-gnu-as --with-gnu-ld --disable-nls --without-headers -enable-languages=c,c++&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;make all-gcc &amp;&amp; make install-gcc&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Again, we specify the powerpc-elf target and add the --prefix argument. We say which tools we need and specify no headers (there's no C Library yet!) and the languages the compiler should be able to compile.&lt;br /&gt;&lt;br /&gt;Once they're all built add the /home/user/tools_ppc32/bin directory to your Environment variables. This'll let Eclipse find the tools we've created for the PowerPC.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;3/ IDE - Eclipse&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Now we're in Eclipse create a C or C++ project. We then need to update the projects build settings for our new cross-compiling tools.&lt;br /&gt;&lt;br /&gt;Under the "C/C++ Build" tab moved to the "Settings" tab. Under the "GCC C Compiler" change "gcc" to "powerpc-elf-gcc" and set the following settings.&lt;br /&gt;&lt;br /&gt;For "Preprocessor" tick "Do not search System Directories".&lt;br /&gt;&lt;br /&gt;Under the "GCC C Linker" set the command to "powerpc-elf-ld". Under "General" tick "Do not use standard start files", "Do not use default libraries", "No startup or default libs" and "No shared libraries".&lt;br /&gt;&lt;br /&gt;This'll make sure we only use the libraries and headers in our Tools directory.&lt;br /&gt;&lt;br /&gt;Under "GCC Assembler" set the command to "powerpc-elf-as".&lt;br /&gt;&lt;br /&gt;Now when we compile our project we'll just be using our powerpc-elf-* tools. These'll generate code for a PowerPC processor even if we're on a Windows box with an Intel processor. We could also create tools for an ARM processor and then the name of the tools would be different, i.e. arm7-elf-*.&lt;br /&gt;&lt;br /&gt;Because we're not using default start libraries we'll need to tell the compiler how to build our project. With GCC this is done with &lt;a href="http://www.redhat.com/docs/manuals/enterprise/RHEL-4-Manual/gnu-linker/simple-commands.html"&gt;Linker Scripts&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Below is an example, it's what I've been using.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;ENTRY (__kstart)&lt;br /&gt;&lt;br /&gt;STACK_LENGTH = 0xF000;&lt;br /&gt;HEAP_LENGTH = 0x400000; /* 4MB */&lt;br /&gt;&lt;br /&gt;MEMORY &lt;br /&gt;{&lt;br /&gt; RAM : ORIGIN = 0x00000000, LENGTH = 0x4000000 /* 64MB */&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;SECTIONS{&lt;br /&gt;&lt;br /&gt; /* code */&lt;br /&gt;    .text 0x2000 : {&lt;br /&gt;        *(.text)&lt;br /&gt;    }&gt;RAM&lt;br /&gt;&lt;br /&gt; /* read only data */&lt;br /&gt;    .rodata ALIGN (0x4) : {&lt;br /&gt;        *(.rodata)&lt;br /&gt;        *(.rodata*)&lt;br /&gt;    }&gt;RAM&lt;br /&gt;    &lt;br /&gt;    /* static data */&lt;br /&gt;    .sdata ALIGN (0x4) : {&lt;br /&gt;     *(.sdata)&lt;br /&gt;    }&gt;RAM&lt;br /&gt;&lt;br /&gt; /* data */&lt;br /&gt;    .data ALIGN (0x4) : {&lt;br /&gt;        *(.data)&lt;br /&gt;    }&gt;RAM&lt;br /&gt;    &lt;br /&gt;    /* Small Block Started by Symbol */&lt;br /&gt;    .sbss ALIGN (0x4): {&lt;br /&gt;     *(.sbss)&lt;br /&gt;    }&gt;RAM&lt;br /&gt;&lt;br /&gt; /* Block Started by Symbol */&lt;br /&gt;    .bss ALIGN (0x4) : {&lt;br /&gt;        *(COMMON)&lt;br /&gt;        *(.bss)&lt;br /&gt;    }&gt;RAM&lt;br /&gt;    &lt;br /&gt; .stack : {&lt;br /&gt;     __kernel_stack_start = .;&lt;br /&gt;     . += STACK_LENGTH;&lt;br /&gt;     . = ALIGN(4);&lt;br /&gt;     __kernel_stack_top = . ;&lt;br /&gt;    }&gt;RAM&lt;br /&gt;    &lt;br /&gt;    .heap ALIGN (0x4): {&lt;br /&gt;        heap_start_addr = .;&lt;br /&gt;     . += HEAP_LENGTH;&lt;br /&gt;     heap_end_addr = .;&lt;br /&gt;    }&gt;RAM&lt;br /&gt;  &lt;br /&gt;}&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;You'll notice that __kstart is the operation to execute first when the Kernel (Operating System) starts. Linker scripts are fairly complex so I won't document too much, take a read on the link instead.&lt;br /&gt;&lt;br /&gt;Once it's created, go back the "GCC C Linker" tab and open the "Misc." tab and add the following text:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;-T linker.ld&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Linker.ld is the name of the file - above.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;4/ Debugging - GDB&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Now we've got a program that compiles and links with our linker script we should have an &lt;a href="http://en.wikipedia.org/wiki/Executable_and_Linkable_Format"&gt;ELF&lt;/a&gt; program. This is an executable that'll run on the target but we might not have access to a target so we'll need a simulator.&lt;br /&gt;&lt;br /&gt;Download &lt;a href="http://en.wikipedia.org/wiki/GDB"&gt;GNU GDB&lt;/a&gt; and extract it and navigate to the path. Once there execute the following:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;CC=gcc ./configure \&lt;br /&gt; --enable-sim-powerpc \&lt;br /&gt; --enable-sim-inline \&lt;br /&gt; --disable-sim-smp \&lt;br /&gt; --enable-sim-duplicate \&lt;br /&gt; --enable-sum-endian=big \&lt;br /&gt; --disable-sim-xor-endian \&lt;br /&gt; --enable-sim-env=operating \&lt;br /&gt; --disable-sim-reserved-bits \&lt;br /&gt; --disable-sim-assert \&lt;br /&gt; --disable-sim-trace \&lt;br /&gt; --disable-sim-icache \&lt;br /&gt; --target=powerpc-elf \&lt;br /&gt; --prefix=/home/user/tools_ppc32 \&lt;br /&gt; --disable-nls \&lt;br /&gt; --with-cpu=750 \&lt;br /&gt; --with-cpu=603e \&lt;br /&gt; --with-cpu=7450 \&lt;br /&gt; --enable-altivec \&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;make CC=gcc&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;make CC=gcc install&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;We now have a version of GDB that will let us simulate a PowerPC processor and execute the ELF file we've created. Of course we need to tell it what our image is and how to run the simulator.&lt;br /&gt;&lt;br /&gt;We need two files, gdbinit and a device_tree.&lt;br /&gt;&lt;br /&gt;gdbinit is a file that tells GDB how to start up. An example is given below:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;target sim -e bug -E big -r 134217728 -f debug_ppc32\\device_tree&lt;br /&gt;set architecture powerpc:750&lt;br /&gt;file c:\\development\\samos\\debug_ppc32\\samos&lt;br /&gt;load&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;This creates a simulator in &lt;a href="http://www.ibm.com/developerworks/eserver/library/es-archguide-v2.html"&gt;PowerPC OEA mode&lt;/a&gt; (-e bug) in Big Endian mode with 128MB of RAM. -f Specifies the device_tree which we'll discuss later.&lt;br /&gt;&lt;br /&gt;We set the architecture and load the file to debug.&lt;br /&gt;&lt;br /&gt;The device_tree file contains information about the target hardware to simulate.&lt;br /&gt;&lt;br /&gt;An example is given below:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;/#address-cells 0x1&lt;br /&gt;&lt;br /&gt;#device te cpu&lt;br /&gt;/cpus/cpu@0&lt;br /&gt; ./cpu-nr 0&lt;br /&gt;&lt;br /&gt;#setup the initial MSR&lt;br /&gt;/openprom/init/register/msr 0x3000&lt;br /&gt;/openprom/options/oea-interrupt-prefix 0x0&lt;br /&gt;/openprom/options/oea-memory-size 0x8000000&lt;br /&gt;&lt;br /&gt;#ensure we're in real mode&lt;br /&gt;/options/real-mode? true&lt;br /&gt;&lt;br /&gt;# Set up the initial stack pointer&lt;br /&gt;/openprom/init/register/sp 0x51722&lt;br /&gt;&lt;br /&gt;# define the stack type&lt;br /&gt;/openprom/init/stack/stack-type "chirp"&lt;br /&gt;&lt;br /&gt;# print out the device tree once it's loaded&lt;br /&gt;/openprom/trace&lt;br /&gt;/openprom/trace/print-device-tree 0x1&lt;br /&gt;&lt;br /&gt;/chosen&lt;br /&gt;/chosen/memory */memory&lt;br /&gt;&lt;br /&gt;#&lt;br /&gt;# I/O Bus&lt;br /&gt;#&lt;br /&gt;/iobus@0x80000000&lt;br /&gt;        ./name psim-iobus&lt;br /&gt;        ./reg 0x80000000 0x20000000&lt;br /&gt;&lt;br /&gt;#&lt;br /&gt;# OpenPIC&lt;br /&gt;# hz == 10 ^3/ms, us = 10^6/ms&lt;br /&gt;# 1Hz  = 1s&lt;br /&gt;# 10Hz  = 100ms&lt;br /&gt;# 100Hz  = 10ms&lt;br /&gt;# 1000Hz  = 1ms&lt;br /&gt;# 10000Hz  = 100us&lt;br /&gt;# 100000Hz = 10us&lt;br /&gt;# 1000000Hz = 1us&lt;br /&gt;/iobus@0x80000000/opic@0x80000000&lt;br /&gt;        ./name         interrupt-controller&lt;br /&gt;        ./device_type  open-pic&lt;br /&gt;        ./compatible   psim,open-pic&lt;br /&gt;        ./reg 0x80000000 0x40000&lt;br /&gt;        ./timer-frequency 1&lt;br /&gt;        ./interrupt-ranges 0 256&lt;br /&gt;&lt;br /&gt;# map the interrupt controller to the cpou external interrupt&lt;br /&gt;/iobus/opic &gt; intr0 int /cpus/cpu@0x0&lt;br /&gt;&lt;br /&gt;/iobus@0xf00002F8&lt;br /&gt; ./name psim-iobus2&lt;br /&gt;    ./reg 0xf00002F8 0x108&lt;br /&gt;/iobus@0xf00002F8/com@0xf00002F8&lt;br /&gt; ./reg 0xf00002F8 8&lt;br /&gt;/iobus@0xf00003F8/com@0xf00003F8&lt;br /&gt; ./reg 0xf00003F8 8&lt;br /&gt;&lt;br /&gt;/nvram@0xf4008000&lt;br /&gt; ./reg 0xf4008000 0x8008&lt;br /&gt;&lt;br /&gt;/eeprom@0xfff00000/reg 0xfff00000 0x80000'&lt;br /&gt;/eeprom@0xfff00000/nr-sectors 8'&lt;br /&gt;/eeprom@0xfff00000/sector-size 0x10000'&lt;br /&gt;/eeprom@0xfff00000/byte-write-delay 1000'&lt;br /&gt;/eeprom@0xfff00000/sector-start-delay 100'&lt;br /&gt;/eeprom@0xfff00000/erase-delay 1000'&lt;br /&gt;/eeprom@0xfff00000/manufacture-code 0x01'&lt;br /&gt;/eeprom@0xfff00000/device-code 0xa4'&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;The format of the file is quite complex and there's little documentation on it. Lots more detail about PSIM - the PowerPC simulator can be found &lt;a href="http://sourceware.org/psim/manual/index.html"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Finally, we create a debug configuration in Eclipse. Do so for an application and set the program as the one we've linked together.&lt;br /&gt;&lt;br /&gt;We set the "GDB Debugger" option to "powerpc-elf-gdb" and "GDB Command Line" option to "debug_ppc32\gdbinit" (depending on where you've stored the file!). We can also update the start procedure to our Kernel's entry point - the case above "__kstart".&lt;br /&gt;&lt;br /&gt;Hopefully you can now get going!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/958894369509579247-8986380060570519861?l=radpartbrainmat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://radpartbrainmat.blogspot.com/feeds/8986380060570519861/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://radpartbrainmat.blogspot.com/2009/02/writing-operating-system-in-eclipse.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/8986380060570519861'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/8986380060570519861'/><link rel='alternate' type='text/html' href='http://radpartbrainmat.blogspot.com/2009/02/writing-operating-system-in-eclipse.html' title='writing an operating system in eclipse'/><author><name>Sam T</name><uri>http://www.blogger.com/profile/12905043109698863507</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_G1I4CEs0Hw4/Sa217oZ1RGI/AAAAAAAAAAM/Ey9JSFmaosc/S220/n808790693_1063742_662.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-958894369509579247.post-3028806206591159337</id><published>2009-02-15T19:04:00.002Z</published><updated>2009-02-15T19:09:31.396Z</updated><title type='text'>HP Mini (2133)</title><content type='html'>I don't usually review something because I don't often read review's. I skip to the end and read the conclusion or focus on one lil' bit. So I'll do that for the HP Mini.&lt;br /&gt;&lt;br /&gt;What I'm using it for? Music and Coding. For music the sound is great and I hope to develop (well code - it isn't Vista) and work on the Operating System. For that Visual Studio and Eclipse are perfect - the high resolution screen - although small is fine and great infact for pictures.&lt;br /&gt;&lt;br /&gt;So the good? Decent performance and looks and cheap. The Bad, SUSE 10 - it crashed during an update and now I've had to put XP back on there due to Recovery disks.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/958894369509579247-3028806206591159337?l=radpartbrainmat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://radpartbrainmat.blogspot.com/feeds/3028806206591159337/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://radpartbrainmat.blogspot.com/2009/02/hp-mini-2133.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/3028806206591159337'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/3028806206591159337'/><link rel='alternate' type='text/html' href='http://radpartbrainmat.blogspot.com/2009/02/hp-mini-2133.html' title='HP Mini (2133)'/><author><name>Sam T</name><uri>http://www.blogger.com/profile/12905043109698863507</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_G1I4CEs0Hw4/Sa217oZ1RGI/AAAAAAAAAAM/Ey9JSFmaosc/S220/n808790693_1063742_662.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-958894369509579247.post-9222195269798924555</id><published>2009-02-15T10:01:00.003Z</published><updated>2009-02-15T10:08:02.279Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='winamp'/><category scheme='http://www.blogger.com/atom/ns#' term='wasapi'/><category scheme='http://www.blogger.com/atom/ns#' term='portaudio'/><title type='text'>WASAPI and Winamp update</title><content type='html'>Right now I'm waiting for the &lt;a href="http://www.portaudio.com/"&gt;PortAudio&lt;/a&gt; guys to finish off their implementation of their &lt;a href="http://en.wikipedia.org/wiki/WASAPI#Audio_stack_architecture"&gt;WASAPI&lt;/a&gt; stuffs. Considering I can talk to it using the &lt;a href="http://en.wikipedia.org/wiki/Audio_Stream_Input/Output"&gt;ASIO&lt;/a&gt; code then I'll use the same driving code (as that works).&lt;br /&gt;&lt;br /&gt;Based on the fact that WASAPI does sample rate conversion on the hardware in exclusive mode I'd probably start out with this and then get some sample rate conversion code in there later on for people who want to use shared mode.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/958894369509579247-9222195269798924555?l=radpartbrainmat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://radpartbrainmat.blogspot.com/feeds/9222195269798924555/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://radpartbrainmat.blogspot.com/2009/02/wasapi-and-winamp-update.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/9222195269798924555'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/9222195269798924555'/><link rel='alternate' type='text/html' href='http://radpartbrainmat.blogspot.com/2009/02/wasapi-and-winamp-update.html' title='WASAPI and Winamp update'/><author><name>Sam T</name><uri>http://www.blogger.com/profile/12905043109698863507</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_G1I4CEs0Hw4/Sa217oZ1RGI/AAAAAAAAAAM/Ey9JSFmaosc/S220/n808790693_1063742_662.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-958894369509579247.post-5154533846301161988</id><published>2009-02-08T16:23:00.002Z</published><updated>2009-02-08T16:32:33.445Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='samos'/><category scheme='http://www.blogger.com/atom/ns#' term='device drivers'/><title type='text'>Samos progression</title><content type='html'>Back from holiday and it was awesome. The operating system has a bit more structure now with working dynamic de-allocation working, thread management and the serial device driver works (well it works with PSIM anyway).&lt;br /&gt;&lt;br /&gt;Next i'll look at porting it over to ARM and getting newlib compiled so that I can write some test applications.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/958894369509579247-5154533846301161988?l=radpartbrainmat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://radpartbrainmat.blogspot.com/feeds/5154533846301161988/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://radpartbrainmat.blogspot.com/2009/02/samos-progression.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/5154533846301161988'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/5154533846301161988'/><link rel='alternate' type='text/html' href='http://radpartbrainmat.blogspot.com/2009/02/samos-progression.html' title='Samos progression'/><author><name>Sam T</name><uri>http://www.blogger.com/profile/12905043109698863507</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_G1I4CEs0Hw4/Sa217oZ1RGI/AAAAAAAAAAM/Ey9JSFmaosc/S220/n808790693_1063742_662.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-958894369509579247.post-1132547446322523608</id><published>2009-01-30T11:55:00.004Z</published><updated>2009-01-30T12:03:56.041Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='arm'/><category scheme='http://www.blogger.com/atom/ns#' term='samos'/><category scheme='http://www.blogger.com/atom/ns#' term='newlib'/><title type='text'>Further samos work</title><content type='html'>I'm off for 8 days of holiday but this should give me a bit of time (night train!) to work on some of the OS so that when i return hopefully I can simulate a simple PowerPC board with a single RS232 device for input and output.&lt;br /&gt;&lt;br /&gt;So far only the &lt;a href="http://en.wikipedia.org/wiki/Rs232"&gt;RS232&lt;/a&gt; device driver supports the proper architecture I'm going to use but then the only other driver I have is an &lt;a href="http://en.wikipedia.org/wiki/Real-time_clock"&gt;RTC&lt;/a&gt; at the moment.&lt;br /&gt;&lt;br /&gt;Once that, dynamic memory and the new Process Thread management code is in the API between applications and the Operating System can have some work done.&lt;br /&gt;&lt;br /&gt;Initially the idea was to use &lt;a href="http://en.wikipedia.org/wiki/Newlib"&gt;newlib&lt;/a&gt; and that will still be the case. The difference is that there will be a few extra calls for device drivers so that application layer code will be able to perform reads and writes.&lt;br /&gt;&lt;br /&gt;I have some degree of confidence that the above can be done during my Ski trip. The goal is that from here I can port the PowerPC stuff over to &lt;a href="http://en.wikipedia.org/wiki/ARM_architecture"&gt;ARM7&lt;/a&gt; or something and get a cheap eval board to get it all up and running - hopefully much like PSIM (PowerPC Simulator) has been integrated into &lt;a href="http://en.wikipedia.org/wiki/GDB"&gt;GDB&lt;/a&gt; there will also be an ARM version.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/958894369509579247-1132547446322523608?l=radpartbrainmat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://radpartbrainmat.blogspot.com/feeds/1132547446322523608/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://radpartbrainmat.blogspot.com/2009/01/further-samos-work.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/1132547446322523608'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/1132547446322523608'/><link rel='alternate' type='text/html' href='http://radpartbrainmat.blogspot.com/2009/01/further-samos-work.html' title='Further samos work'/><author><name>Sam T</name><uri>http://www.blogger.com/profile/12905043109698863507</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_G1I4CEs0Hw4/Sa217oZ1RGI/AAAAAAAAAAM/Ey9JSFmaosc/S220/n808790693_1063742_662.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-958894369509579247.post-3665493797268168947</id><published>2009-01-26T22:39:00.002Z</published><updated>2009-01-26T22:43:26.193Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='samvis'/><title type='text'>PIC vs D-Type</title><content type='html'>One of the problems with my initial hardware design for samvis is that it will require constant refreshing - much like a frame rate for a game - that will need to be driven by the software (Winamp plugin).&lt;br /&gt;&lt;br /&gt;This would most likely sit in another thread which operates on a shared bit of memory - also used by the Winamp thread when Spectrum data is ready.&lt;br /&gt;&lt;br /&gt;If it becomes an issue that can't be resolved by software I can see two easy ways around the issue.&lt;br /&gt;&lt;br /&gt;1/ PIC. Use a simple 8 in 8 out PIC on the I/O board which buffers the data and sits in a tight loop (move the intensive part from software to hardware).&lt;br /&gt;&lt;br /&gt;2/ D-Type flip flops arranged to buffer each axis.&lt;br /&gt;&lt;br /&gt;I'd lean towards the PIC because its a single additional chip whilst I'd need multiple D-Types all with data, clocks and enables - lots of wires - not fun.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/958894369509579247-3665493797268168947?l=radpartbrainmat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://radpartbrainmat.blogspot.com/feeds/3665493797268168947/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://radpartbrainmat.blogspot.com/2009/01/pic-vs-d-type.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/3665493797268168947'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/3665493797268168947'/><link rel='alternate' type='text/html' href='http://radpartbrainmat.blogspot.com/2009/01/pic-vs-d-type.html' title='PIC vs D-Type'/><author><name>Sam T</name><uri>http://www.blogger.com/profile/12905043109698863507</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_G1I4CEs0Hw4/Sa217oZ1RGI/AAAAAAAAAAM/Ey9JSFmaosc/S220/n808790693_1063742_662.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-958894369509579247.post-3407928167761136487</id><published>2009-01-26T22:31:00.003Z</published><updated>2009-01-30T11:53:44.577Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='samos'/><title type='text'>Dynamic memory and Process/Thread management</title><content type='html'>One part of the OS that currently, but didn't, reply and dynamic memory was process and thread management. Previously, this was statically defined but with 255 processes and 255 tasks this resulted in around thread 65,000 entries. Each entry containing all the registers from context switches and some state. When linked it was around 14MB of data in the BSS section.&lt;br /&gt;&lt;br /&gt;That's fine if you're running on a 1GB machine, much quicker and simpler than dynamic memory but if you're running on a 4MB ARM7 processor - less helpful.&lt;br /&gt;&lt;br /&gt;This probably means that the thread and process management will have to follow suit behind the memory management. That is be broken into two models depending in the Memory Management model being used.&lt;br /&gt;&lt;br /&gt;Typically with Embedded systems Threads and Processes are, once created, rarely created or destroyed to ensure (well it's good practice anyway). This means that dynamic memory deallocation isn't necessarily required as the chance of it being deallocated it slim and will yield small results anyway.&lt;br /&gt;&lt;br /&gt;Therefore there will probably be two Process Management models that will be directly linked and derived from the Memory Management model.&lt;br /&gt;&lt;br /&gt;1/ Dynamic Allocation &amp; Dynamic De-allocation = Heap based Process Management&lt;br /&gt;2/ No dynamic memory = Statically defined maximum number of processes and tasks.&lt;br /&gt;&lt;br /&gt;To tune the memory the maximum number of threads and processes could be defined by the BSP so it was tailed to the memory requirements of the board.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/958894369509579247-3407928167761136487?l=radpartbrainmat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://radpartbrainmat.blogspot.com/feeds/3407928167761136487/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://radpartbrainmat.blogspot.com/2009/01/dynamic-memory-and-its-affect-on-os.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/3407928167761136487'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/3407928167761136487'/><link rel='alternate' type='text/html' href='http://radpartbrainmat.blogspot.com/2009/01/dynamic-memory-and-its-affect-on-os.html' title='Dynamic memory and Process/Thread management'/><author><name>Sam T</name><uri>http://www.blogger.com/profile/12905043109698863507</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_G1I4CEs0Hw4/Sa217oZ1RGI/AAAAAAAAAAM/Ey9JSFmaosc/S220/n808790693_1063742_662.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-958894369509579247.post-6169981211693731269</id><published>2009-01-25T22:29:00.002Z</published><updated>2009-01-25T22:41:04.032Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='dynamic memory allocation'/><category scheme='http://www.blogger.com/atom/ns#' term='samos'/><title type='text'>Dynamic Memory</title><content type='html'>I've been playing with dynamic memory a lot and settled on an idea.&lt;br /&gt;&lt;br /&gt;Three models; no dynamic memory, non-de-allocatable memory and de-allocatable memory.&lt;br /&gt;&lt;br /&gt;1) No dynamic memory would simply return zero. It would be there for systems and environments where dynamic memory isn't used. This would keep the code line count down and the complexity also. All memory would need be defined at compile time, either in the [s]bss or on the stack.&lt;br /&gt;&lt;br /&gt;2) Non-de-allocatable memory would allow for dynamic memory allocation but it wouldn't be possible to de-allocate the memory.&lt;br /&gt;&lt;br /&gt;3) Simple memory allocation and deallocation using the &lt;a href="http://en.wikipedia.org/wiki/Free_list"&gt;Free List&lt;/a&gt; method. Its kept simple for simplicity sake and to reduce the overhead.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/958894369509579247-6169981211693731269?l=radpartbrainmat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://radpartbrainmat.blogspot.com/feeds/6169981211693731269/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://radpartbrainmat.blogspot.com/2009/01/dynamic-memory.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/6169981211693731269'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/6169981211693731269'/><link rel='alternate' type='text/html' href='http://radpartbrainmat.blogspot.com/2009/01/dynamic-memory.html' title='Dynamic Memory'/><author><name>Sam T</name><uri>http://www.blogger.com/profile/12905043109698863507</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_G1I4CEs0Hw4/Sa217oZ1RGI/AAAAAAAAAAM/Ey9JSFmaosc/S220/n808790693_1063742_662.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-958894369509579247.post-4729979345709157252</id><published>2009-01-17T00:39:00.002Z</published><updated>2009-01-17T00:50:57.893Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='samos'/><title type='text'>dynamic memory [de]allocation, processes and tasks</title><content type='html'>For the last two days I've been working on dynamic memory allocation, process and tasks.&lt;br /&gt;&lt;br /&gt;Originally processes and tasks were all statically defined but this caused the slight issues of requiring 24MB of RAM in the bss section. Not great if you're on an ARM processor.&lt;br /&gt;&lt;br /&gt;Normally I prefer statically defined stuff - especially as its the Kernel doing this stuff and a cock-up with memory would be bad. I moved to implement a heap and dynamic memory allocation; that's pretty easy. What's more difficult is memory deallocation.&lt;br /&gt;&lt;br /&gt;Do I keep track of this; I.e. virtual memory and can the MMU help at all? I mean I know it has BAT registers (PowerPC) and they're all setup. I need to work out the MMU, I don't want to work out the damn MMU.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/958894369509579247-4729979345709157252?l=radpartbrainmat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://radpartbrainmat.blogspot.com/feeds/4729979345709157252/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://radpartbrainmat.blogspot.com/2009/01/dynamic-memory-deallocation-processes.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/4729979345709157252'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/4729979345709157252'/><link rel='alternate' type='text/html' href='http://radpartbrainmat.blogspot.com/2009/01/dynamic-memory-deallocation-processes.html' title='dynamic memory [de]allocation, processes and tasks'/><author><name>Sam T</name><uri>http://www.blogger.com/profile/12905043109698863507</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_G1I4CEs0Hw4/Sa217oZ1RGI/AAAAAAAAAAM/Ey9JSFmaosc/S220/n808790693_1063742_662.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-958894369509579247.post-3322465024470719152</id><published>2009-01-13T22:22:00.006Z</published><updated>2009-01-30T11:52:40.891Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='samos'/><category scheme='http://www.blogger.com/atom/ns#' term='stability'/><category scheme='http://www.blogger.com/atom/ns#' term='device drivers'/><title type='text'>Stablility in an OS</title><content type='html'>I've been doing some work on the Device Driver part of the OS trying to reduce the possibility of a Driver crashing the kernel. They're likely to be executed much like a normal task; they'll have to state which areas of memory they're using so the MMU can open them up. Also, it means any Interrupt (read Exception) caught whilst executing the Driver can be caught and handled.&lt;br /&gt;&lt;br /&gt;The idea would be to stop the driver and disable it rather than the exception stopping the kernel.&lt;br /&gt;&lt;br /&gt;I'm not sure how this'll be implemented yet as only parts are in place but it should be interesting. I guess the hardest part is the memory management - ensuring that each driver only operates on a set part of memory.&lt;br /&gt;&lt;br /&gt;Also; the interface to the drivers should be fairly well defined. Quite how applications and device drivers will communicate is still up in the air too. It may be that in the lower levels they're enumerated and in the higher levels classed into different types so they're easier to query.&lt;br /&gt;&lt;br /&gt;If that was the case then the lower-levels would need that classification anyway; which gives rise to the question of if it's needed.&lt;br /&gt;&lt;br /&gt;It may be that the BSP provides an enumeration which will make it possible for a set of core device drivers to be known statically. Then also possible to load new drivers at runtime - returning an identifier so the dynamic code can access it or be found through enumeration of the device manager.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/958894369509579247-3322465024470719152?l=radpartbrainmat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://radpartbrainmat.blogspot.com/feeds/3322465024470719152/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://radpartbrainmat.blogspot.com/2009/01/stablility-in-os.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/3322465024470719152'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/3322465024470719152'/><link rel='alternate' type='text/html' href='http://radpartbrainmat.blogspot.com/2009/01/stablility-in-os.html' title='Stablility in an OS'/><author><name>Sam T</name><uri>http://www.blogger.com/profile/12905043109698863507</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_G1I4CEs0Hw4/Sa217oZ1RGI/AAAAAAAAAAM/Ey9JSFmaosc/S220/n808790693_1063742_662.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-958894369509579247.post-103999206820142715</id><published>2009-01-10T14:39:00.004Z</published><updated>2009-01-10T14:51:07.727Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='samvis'/><category scheme='http://www.blogger.com/atom/ns#' term='winamp'/><title type='text'>samvis decoder board design</title><content type='html'>The initial design for the 8bit to 64 LED decoder board is complete.&lt;br /&gt;&lt;br /&gt;The 8bit will be split into:&lt;br /&gt;x0, x1, y0, y1, z0, z1, clock, enable&lt;br /&gt;&lt;br /&gt;x0, x1, y0 and y1 will pass into 4, 74154N, 4 to 16 Demuxs (one for each layer)&lt;br /&gt;z0 and z1 will pass into 2 to 4 Demux (not sure which one yet) which selects the layer.&lt;br /&gt;enable sets if the LED is on/off.&lt;br /&gt;clock syncs everything.&lt;br /&gt;&lt;br /&gt;Might give it a whirl tomorrow!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/958894369509579247-103999206820142715?l=radpartbrainmat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://radpartbrainmat.blogspot.com/feeds/103999206820142715/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://radpartbrainmat.blogspot.com/2009/01/samvis-decoder-board-design.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/103999206820142715'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/103999206820142715'/><link rel='alternate' type='text/html' href='http://radpartbrainmat.blogspot.com/2009/01/samvis-decoder-board-design.html' title='samvis decoder board design'/><author><name>Sam T</name><uri>http://www.blogger.com/profile/12905043109698863507</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_G1I4CEs0Hw4/Sa217oZ1RGI/AAAAAAAAAAM/Ey9JSFmaosc/S220/n808790693_1063742_662.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-958894369509579247.post-1733120549315380778</id><published>2009-01-07T23:29:00.000Z</published><updated>2009-01-07T23:33:31.193Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='rtos'/><category scheme='http://www.blogger.com/atom/ns#' term='samos'/><category scheme='http://www.blogger.com/atom/ns#' term='operating system'/><title type='text'>samos</title><content type='html'>The OS is coming along quite nicely; using &lt;a href="http://sourceware.org/psim/"&gt;PSIM&lt;/a&gt; I've been able to simulate some hardware (Serial) and have written a few drivers and the assembly to handle interrupts.&lt;br /&gt;&lt;br /&gt;So far the thing boots up and the interrupts are handled correctly and Serial input works fine.&lt;br /&gt;&lt;br /&gt;I'm putting it off for a while (I usually swap projects around) to go back to the samvis and WASAPI projects for a bit; mainly due to lack of hardware. I do have a G4 with PPC32 in there but its main input method is USB so I'd have to write a USB Device Driver and simple stack - I'd rather to that with at least one of the two other projects done I think.&lt;br /&gt;&lt;br /&gt;Also considering getting a simple ARM7/9 board to create a small port for that; something with Serial, USB and Ethernet maybe just to get the core OS up and running.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/958894369509579247-1733120549315380778?l=radpartbrainmat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://radpartbrainmat.blogspot.com/feeds/1733120549315380778/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://radpartbrainmat.blogspot.com/2009/01/samos.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/1733120549315380778'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/1733120549315380778'/><link rel='alternate' type='text/html' href='http://radpartbrainmat.blogspot.com/2009/01/samos.html' title='samos'/><author><name>Sam T</name><uri>http://www.blogger.com/profile/12905043109698863507</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_G1I4CEs0Hw4/Sa217oZ1RGI/AAAAAAAAAAM/Ey9JSFmaosc/S220/n808790693_1063742_662.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-958894369509579247.post-1908265127980453103</id><published>2009-01-07T23:24:00.000Z</published><updated>2009-01-07T23:28:48.904Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='naudio'/><category scheme='http://www.blogger.com/atom/ns#' term='winamp'/><category scheme='http://www.blogger.com/atom/ns#' term='wasapi'/><title type='text'>WASAPI and NAudio</title><content type='html'>I forgot to post it but I've updated the WASAPI plugin to be able to be build on either the PortAudio or NAudio libraries.&lt;br /&gt;&lt;br /&gt;I got distracted by a few other projects but NAudio is interfacing with WASAPI much better than PortAudio was and reflects the actual WASAPI implementation quite nicely which makes reading about it a bit easier.&lt;br /&gt;&lt;br /&gt;NAudio is also managed (C# library); I'm not sure what advantages that has from C++ but the code does look quite intuitive which is helpful.&lt;br /&gt;&lt;br /&gt;If memory serves correctly all that is missing is a buffering mechanism (I'm sure C# offers one that can be brought into C++) to take data from Winamp and pass to NAudio.&lt;br /&gt;&lt;br /&gt;One of the other nice things is NAudio's ability to work in either Exclusive (Winamp sound only - Hardware does sample rate conversions etc) and Shared (goes through software mixer) Mode. Obviously I'm aiming for the Exclusive Mode but some may wish to pop it back into Shared Mode when gaming.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/958894369509579247-1908265127980453103?l=radpartbrainmat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://radpartbrainmat.blogspot.com/feeds/1908265127980453103/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://radpartbrainmat.blogspot.com/2009/01/wasapi-and-naudio.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/1908265127980453103'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/1908265127980453103'/><link rel='alternate' type='text/html' href='http://radpartbrainmat.blogspot.com/2009/01/wasapi-and-naudio.html' title='WASAPI and NAudio'/><author><name>Sam T</name><uri>http://www.blogger.com/profile/12905043109698863507</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_G1I4CEs0Hw4/Sa217oZ1RGI/AAAAAAAAAAM/Ey9JSFmaosc/S220/n808790693_1063742_662.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-958894369509579247.post-6773817395981461014</id><published>2009-01-07T23:19:00.000Z</published><updated>2009-01-07T23:22:31.966Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='samvis'/><category scheme='http://www.blogger.com/atom/ns#' term='winamp'/><title type='text'>samvis</title><content type='html'>Yeh; started work on another project (hey - I'm single and had an insane amount of free-time over xmas!).&lt;br /&gt;&lt;br /&gt;The idea is to create a 4x4x4 cube of LEDs that act as a Visualisation to Winamp.&lt;br /&gt;&lt;br /&gt;Initially I've got the plugin written for a 8x1x0 array and updated that to be 4x4x4 is fairly easy (software's done really - woot!).&lt;br /&gt;&lt;br /&gt;The next part is the hardware, using a VM110 interface card over USB at the moment and that'll drive the Cube. I'm still undecided on the hardware (Demuxs &amp; D-types, PICs) etc but so far it's pretty promising. The plugin drives the 8 LEDs on the VM110 no problem.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/958894369509579247-6773817395981461014?l=radpartbrainmat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://radpartbrainmat.blogspot.com/feeds/6773817395981461014/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://radpartbrainmat.blogspot.com/2009/01/samvis.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/6773817395981461014'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/6773817395981461014'/><link rel='alternate' type='text/html' href='http://radpartbrainmat.blogspot.com/2009/01/samvis.html' title='samvis'/><author><name>Sam T</name><uri>http://www.blogger.com/profile/12905043109698863507</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_G1I4CEs0Hw4/Sa217oZ1RGI/AAAAAAAAAAM/Ey9JSFmaosc/S220/n808790693_1063742_662.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-958894369509579247.post-7652830166262455233</id><published>2008-12-21T11:05:00.000Z</published><updated>2009-01-07T23:18:14.581Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='rtos'/><category scheme='http://www.blogger.com/atom/ns#' term='samos'/><category scheme='http://www.blogger.com/atom/ns#' term='operating system'/><title type='text'>Operating System (Microkernel really)</title><content type='html'>I've started to move more towards embedded devices after using them at work for the last two and a half years; from using bare-board programs upto multi-tasked RTOS stuff. What its kinda inspired me to do is create my own Operating System, or rather Microkernel as an entire OS is a bit too big. I've been working on parts of it over the last few weeks - just trying to see what I could get out of it really.&lt;br /&gt;&lt;br /&gt;So far it looks like creating a small, portable, Microkernel is possible. The goal is to having it running on my G4 Mac (using Gentoo rather than OSX) running on its PowerPC chip. The initial work was done for my x86 laptop but since then everything has been ported over to PowerPC.&lt;br /&gt;&lt;br /&gt;Right now I can write and compile it on the x86 laptop and even debug it using PSIM. Right now I'm in the middle of debugging the interrupt vectors so I can handle interrupts - including the external interrupt for other device drivers and hopefully a clock for pre-emptive scheduling.&lt;br /&gt;&lt;br /&gt;So yeh, this is taking time away from the WASAPI project (which can now be compiled to use either PortAudio or NAudio) but that's fine - most people aren't using Vista yet anyway - it'll be the introduction of Windows 7 which a lot of people move from XP that the project will become more important.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/958894369509579247-7652830166262455233?l=radpartbrainmat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://radpartbrainmat.blogspot.com/feeds/7652830166262455233/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://radpartbrainmat.blogspot.com/2008/12/operating-system-microkernel-really.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/7652830166262455233'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/7652830166262455233'/><link rel='alternate' type='text/html' href='http://radpartbrainmat.blogspot.com/2008/12/operating-system-microkernel-really.html' title='Operating System (Microkernel really)'/><author><name>Sam T</name><uri>http://www.blogger.com/profile/12905043109698863507</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_G1I4CEs0Hw4/Sa217oZ1RGI/AAAAAAAAAAM/Ey9JSFmaosc/S220/n808790693_1063742_662.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-958894369509579247.post-6679502411547964661</id><published>2008-12-07T18:57:00.001Z</published><updated>2009-01-07T23:18:26.810Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='winamp'/><category scheme='http://www.blogger.com/atom/ns#' term='wasapi'/><category scheme='http://www.blogger.com/atom/ns#' term='asio'/><title type='text'>Noise</title><content type='html'>Well audio is being generated - it isn't quite right hey...&lt;br /&gt;&lt;br /&gt;One of the nice features of PortAudio is that it's asynchronous too so that should remove a lot of the buffering issues that the OpenAL plug-in suffered.&lt;br /&gt;&lt;br /&gt;However - right now WASAPI doesn't work and ASIO only works (but does work!) at 48,000Hz (default for the Card).&lt;br /&gt;&lt;br /&gt;Still it's progress...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/958894369509579247-6679502411547964661?l=radpartbrainmat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://radpartbrainmat.blogspot.com/feeds/6679502411547964661/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://radpartbrainmat.blogspot.com/2008/12/noise.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/6679502411547964661'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/6679502411547964661'/><link rel='alternate' type='text/html' href='http://radpartbrainmat.blogspot.com/2008/12/noise.html' title='Noise'/><author><name>Sam T</name><uri>http://www.blogger.com/profile/12905043109698863507</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_G1I4CEs0Hw4/Sa217oZ1RGI/AAAAAAAAAAM/Ey9JSFmaosc/S220/n808790693_1063742_662.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-958894369509579247.post-3138796857810341990</id><published>2008-12-04T21:45:00.000Z</published><updated>2009-01-07T23:18:35.967Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'></title><content type='html'>I'm getting really tired of the smart-arses who figured out Linux. Well done. No seriously, well done - kinda.&lt;br /&gt;&lt;br /&gt;It's things like &lt;a href="http://tips.webdesign10.com/shopping"&gt;this&lt;/a&gt; that don't help though. Mac users used to be the same and now Apple are saying you should have 1 to 3 anti-virus programs on your Mac.&lt;br /&gt;&lt;br /&gt;The same will happen with Linux as it grows in popularity and interestingly it is often NOT the technology that it the let down but infact the users. Often when a dialog pops up and the user doesn't even read it and clicks "OK" or does read it and it's a fake anti-virus program they're in trouble.&lt;br /&gt;&lt;br /&gt;Yes - these are more targeted towards Windows users but that will change. Firefox has security holes. Safari has security holes.&lt;br /&gt;&lt;br /&gt;I have Vista, XP and Linux installed on various machines, all for different reasons, so *please* stop trying to convert the world to Linux. Windows works and works damn well if that's what you need.&lt;br /&gt;&lt;br /&gt;Rant over.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/958894369509579247-3138796857810341990?l=radpartbrainmat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://radpartbrainmat.blogspot.com/feeds/3138796857810341990/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://radpartbrainmat.blogspot.com/2008/12/im-getting-really-tired-of-smart-arses.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/3138796857810341990'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/3138796857810341990'/><link rel='alternate' type='text/html' href='http://radpartbrainmat.blogspot.com/2008/12/im-getting-really-tired-of-smart-arses.html' title=''/><author><name>Sam T</name><uri>http://www.blogger.com/profile/12905043109698863507</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_G1I4CEs0Hw4/Sa217oZ1RGI/AAAAAAAAAAM/Ey9JSFmaosc/S220/n808790693_1063742_662.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-958894369509579247.post-5213961424044396157</id><published>2008-11-30T19:31:00.000Z</published><updated>2009-01-07T23:18:51.771Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='winamp'/><category scheme='http://www.blogger.com/atom/ns#' term='wasapi'/><category scheme='http://www.blogger.com/atom/ns#' term='portaudio'/><category scheme='http://www.blogger.com/atom/ns#' term='asio'/><title type='text'></title><content type='html'>I've decided to use &lt;a href="http://www.portaudio.com"&gt;Port Audio&lt;/a&gt; this time to abstract WASAPI. This also gives me the benefit that ASIO can be offered for free because that also is abstracted by the library.&lt;br /&gt;&lt;br /&gt;It looks like Port Audio doesn't use the Exclusive mode but the source code can hopefully be modified to add it as it's just a constant change. Not sure how yet though.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/958894369509579247-5213961424044396157?l=radpartbrainmat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://radpartbrainmat.blogspot.com/feeds/5213961424044396157/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://radpartbrainmat.blogspot.com/2008/11/ive-decided-to-use-port-audio-this-time.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/5213961424044396157'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/5213961424044396157'/><link rel='alternate' type='text/html' href='http://radpartbrainmat.blogspot.com/2008/11/ive-decided-to-use-port-audio-this-time.html' title=''/><author><name>Sam T</name><uri>http://www.blogger.com/profile/12905043109698863507</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_G1I4CEs0Hw4/Sa217oZ1RGI/AAAAAAAAAAM/Ey9JSFmaosc/S220/n808790693_1063742_662.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-958894369509579247.post-3814988885067699291</id><published>2008-11-30T03:04:00.000Z</published><updated>2009-01-07T23:19:02.808Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='winamp'/><category scheme='http://www.blogger.com/atom/ns#' term='wasapi'/><title type='text'></title><content type='html'>Well initially with a couple of MSDN articles I can enumerate all devices and actually get one started up in a test app. Next step is to try and get some dummy audio in there. Then try and move that over into Winamp!&lt;br /&gt;&lt;br /&gt;Easy.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/958894369509579247-3814988885067699291?l=radpartbrainmat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://radpartbrainmat.blogspot.com/feeds/3814988885067699291/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://radpartbrainmat.blogspot.com/2008/11/well-initially-with-couple-of-msdn.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/3814988885067699291'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/3814988885067699291'/><link rel='alternate' type='text/html' href='http://radpartbrainmat.blogspot.com/2008/11/well-initially-with-couple-of-msdn.html' title=''/><author><name>Sam T</name><uri>http://www.blogger.com/profile/12905043109698863507</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_G1I4CEs0Hw4/Sa217oZ1RGI/AAAAAAAAAAM/Ey9JSFmaosc/S220/n808790693_1063742_662.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-958894369509579247.post-4386427921648118319</id><published>2008-11-29T13:30:00.000Z</published><updated>2009-01-07T23:19:12.326Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='winamp'/><category scheme='http://www.blogger.com/atom/ns#' term='wasapi'/><title type='text'></title><content type='html'>Already WASAPI is sounding interesting.&lt;br /&gt;&lt;br /&gt;An &lt;a href="http://blogs.msdn.com/larryosterman/archive/2005/09/23/473351.aspx"&gt;MSDN Article&lt;/a&gt; suggests that endpoint support is in there and that in exclusive mode it can be chucked right out to the hardware.&lt;br /&gt;&lt;br /&gt;This interests me for mainly one reason - SPDIF. On my media machine it'd be nice for Vista to do nothing with the audio - just pump it straight out to the external decoder. Of course the chance of Winamp having the input for this is generally low - however some users may be using high sample rate audio (96Khz).&lt;br /&gt;&lt;br /&gt;One other good thing is 32bit floating point support - OpenAL is limited to 16bit.&lt;br /&gt;&lt;br /&gt;Again the downside is kinda obvious - Vista and higher only :(&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/958894369509579247-4386427921648118319?l=radpartbrainmat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://radpartbrainmat.blogspot.com/feeds/4386427921648118319/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://radpartbrainmat.blogspot.com/2008/11/already-wasapi-is-sounding-interesting.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/4386427921648118319'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/4386427921648118319'/><link rel='alternate' type='text/html' href='http://radpartbrainmat.blogspot.com/2008/11/already-wasapi-is-sounding-interesting.html' title=''/><author><name>Sam T</name><uri>http://www.blogger.com/profile/12905043109698863507</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_G1I4CEs0Hw4/Sa217oZ1RGI/AAAAAAAAAAM/Ey9JSFmaosc/S220/n808790693_1063742_662.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-958894369509579247.post-6243695243198815506</id><published>2008-11-29T12:17:00.001Z</published><updated>2009-01-07T23:19:20.989Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='winamp'/><category scheme='http://www.blogger.com/atom/ns#' term='wasapi'/><title type='text'>WASAPI and Winamp</title><content type='html'>Earlier this year I started work - and successfully created - an OpenAL Output Plug-in for Winamp.&lt;br /&gt;&lt;br /&gt;See:&lt;br /&gt;&lt;a href="http://sourceforge.net/projects/winampopenalout/"&gt;SourceForge Page&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.winamp.com/plugins/details/221767"&gt;Winamp Plug-in Page&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;However I've noticed that there is another API for Windows Vista called WASAPI. I also suspect that this API will be in Windows 7 whereas OpenAL support is becoming more hit and miss these days.&lt;br /&gt;&lt;br /&gt;Will be starting work on it this weekend. Ideally the OpenAL work would have been a good base but as this is a different architecture and the OpenAL plug-in was never designed to be properly re-usable I doubt that will work.&lt;br /&gt;&lt;br /&gt;Stay tuned!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/958894369509579247-6243695243198815506?l=radpartbrainmat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://radpartbrainmat.blogspot.com/feeds/6243695243198815506/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://radpartbrainmat.blogspot.com/2008/11/wasapi-and-winamp.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/6243695243198815506'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/6243695243198815506'/><link rel='alternate' type='text/html' href='http://radpartbrainmat.blogspot.com/2008/11/wasapi-and-winamp.html' title='WASAPI and Winamp'/><author><name>Sam T</name><uri>http://www.blogger.com/profile/12905043109698863507</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_G1I4CEs0Hw4/Sa217oZ1RGI/AAAAAAAAAAM/Ey9JSFmaosc/S220/n808790693_1063742_662.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-958894369509579247.post-7194481271810157704</id><published>2008-08-12T21:25:00.000+01:00</published><updated>2008-08-12T21:45:24.815+01:00</updated><title type='text'>Theory of Bad Decisions: Weighting</title><content type='html'>As mentioned in my second to last post we discussed bad decisions. Today I shall make a few notes weighting.&lt;br /&gt;&lt;br /&gt;We could assume that each the Brain, "Heart" and Genitals have an even weighting of 1.0. This is not true. For example, Brain is generally inversely proportional to happiness.&lt;br /&gt;&lt;br /&gt;For example - Eat cake:&lt;br /&gt;B(1.0) | N&lt;br /&gt;H(0.5) | Y&lt;br /&gt;G(0.1) | Y&lt;br /&gt;&lt;br /&gt;It is also very important with MBS in determining just how fudged up certain peoples decisions are.&lt;br /&gt;&lt;br /&gt;Another good example is horny people have a higher weighting to Genitals.&lt;br /&gt;&lt;br /&gt;Also, when making certain decisions e.g. financial decisions the other "drivers" will generally admit sure - the Brain knows more.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;That is all.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/958894369509579247-7194481271810157704?l=radpartbrainmat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://radpartbrainmat.blogspot.com/feeds/7194481271810157704/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://radpartbrainmat.blogspot.com/2008/08/theory-of-bad-decisions-weighting.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/7194481271810157704'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/7194481271810157704'/><link rel='alternate' type='text/html' href='http://radpartbrainmat.blogspot.com/2008/08/theory-of-bad-decisions-weighting.html' title='Theory of Bad Decisions: Weighting'/><author><name>Sam T</name><uri>http://www.blogger.com/profile/12905043109698863507</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_G1I4CEs0Hw4/Sa217oZ1RGI/AAAAAAAAAAM/Ey9JSFmaosc/S220/n808790693_1063742_662.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-958894369509579247.post-8554551038765027600</id><published>2008-08-10T13:25:00.000+01:00</published><updated>2008-08-10T14:15:58.979+01:00</updated><title type='text'>My Theory of Bad Decisions</title><content type='html'>Due to recent events I decided to analyse why I make bad decisions.&lt;br /&gt;&lt;br /&gt;There are effectively 3 drivers for making a decision. Your brain (B), genitals (G) and "heart" (H). Of course "heart" is actually a part of the brain but we'll let it off. For any given decision we have the below:&lt;br /&gt;&lt;br /&gt;     Eat a cake&lt;br /&gt;--------------&lt;br /&gt;B | N(o)&lt;br /&gt;H | Y(es)&lt;br /&gt;G | U(nknown)&lt;br /&gt;&lt;br /&gt;In this situation there is a problem, the brain knows you shouldn't eat the cake but you really want to. Your genitals don't care. Here the brain and heart will fight until one wins - aka willpower.&lt;br /&gt;&lt;br /&gt;     Hit on "Susan"&lt;br /&gt;--------------&lt;br /&gt;B | N&lt;br /&gt;H | U&lt;br /&gt;G | Y&lt;br /&gt;&lt;br /&gt;In this situation we have the stupidity factor. If the brain is strong enough over the genitals then we're safe.&lt;br /&gt;&lt;br /&gt;However, there is a problem. Alcohol. This effectivily shuts down your brain but to ensure that all decisions are still made it will default to a "Yes" response. Therefore:&lt;br /&gt;&lt;br /&gt;     Hit on "Susan"&lt;br /&gt;--------------&lt;br /&gt;B | Y&lt;br /&gt;H | U&lt;br /&gt;G | Y&lt;br /&gt;&lt;br /&gt;And there you go. It can also be applied to other things done when under the influence.&lt;br /&gt;&lt;br /&gt;     Eat enough cake to be sick&lt;br /&gt;--------------&lt;br /&gt;B | Y&lt;br /&gt;H | Y&lt;br /&gt;G | U&lt;br /&gt;&lt;br /&gt;And there you go - you're sick.&lt;br /&gt;&lt;br /&gt;The above applies for males. For females we have the additional "Mad Bitch Syndrome" to deal with. Therefore back to the cake example:&lt;br /&gt;&lt;br /&gt;     Eat a cake&lt;br /&gt;--------------&lt;br /&gt;B | N&lt;br /&gt;H | Y&lt;br /&gt;G | U&lt;br /&gt;M | U&lt;br /&gt;&lt;br /&gt;With this extra confusion the decision becomes (apparently) much more confusing. Instead they're likely to talk about it for 3 hours and then forgot all about the cake and instead buy a hat or something. Interestingly a hat scenario is below:&lt;br /&gt;&lt;br /&gt;     Buy a lovely hat&lt;br /&gt;--------------&lt;br /&gt;B | Y&lt;br /&gt;H | Y&lt;br /&gt;G | Y&lt;br /&gt;M | U&lt;br /&gt;&lt;br /&gt;The same, one would imagine, applies to shoes also.&lt;br /&gt;&lt;br /&gt;There are also other special cases.&lt;br /&gt;&lt;br /&gt;For a "Chav" we invert the standard Brain response, have no "heart" and always have genitals.&lt;br /&gt;&lt;br /&gt;     Eat a cake&lt;br /&gt;--------------&lt;br /&gt;B | Y&lt;br /&gt;H | N&lt;br /&gt;G | Y&lt;br /&gt;&lt;br /&gt;     Hit on "Susan"&lt;br /&gt;--------------&lt;br /&gt;B | Y&lt;br /&gt;H | N&lt;br /&gt;G | Y(es)&lt;br /&gt;&lt;br /&gt;This explains why "Chav" population figures (and belly sizes if we refer to the cake example) are so high and why they always seem disgruntled with each other.&lt;br /&gt;&lt;br /&gt;In conclusion; if you're a women all decisions are influenced by MBS. The weight of this in decision making when fighting other drivers has an inverse correlation between testosterone levels.&lt;br /&gt;&lt;br /&gt;If you're a man and consume alcohol remember to be aware of your surroundings, to survive embarrassment an emergency Red Bull of Coffee is an excellent way to bring Brain back online.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/958894369509579247-8554551038765027600?l=radpartbrainmat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://radpartbrainmat.blogspot.com/feeds/8554551038765027600/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://radpartbrainmat.blogspot.com/2008/08/my-theory-of-bad-decisions.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/8554551038765027600'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/8554551038765027600'/><link rel='alternate' type='text/html' href='http://radpartbrainmat.blogspot.com/2008/08/my-theory-of-bad-decisions.html' title='My Theory of Bad Decisions'/><author><name>Sam T</name><uri>http://www.blogger.com/profile/12905043109698863507</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_G1I4CEs0Hw4/Sa217oZ1RGI/AAAAAAAAAAM/Ey9JSFmaosc/S220/n808790693_1063742_662.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-958894369509579247.post-7746867377778843657</id><published>2008-08-07T21:48:00.000+01:00</published><updated>2008-08-07T21:51:32.373+01:00</updated><title type='text'>Flyer people</title><content type='html'>On recent conversation led to the discussion of people who hand out flyers.&lt;br /&gt;&lt;br /&gt;I found that it is virtually impossible not to offend these young chaps. Reason? Simple. Either you're offered whatever they're trying to get rid of and say no or take one and throw it away (they look, watch cry).&lt;br /&gt;&lt;br /&gt;Or, they don't offer you one. I have myself been in this position and been slightly offended. Why shouldn't i have a flyer for ultra-hat-and-wiggling night at the Dark Dungeon? However, you say this to the young vendor and get one... oh and then your back to the beginning... "Hmm, yeh not for me"&lt;br /&gt;&lt;br /&gt;Vendor cries.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/958894369509579247-7746867377778843657?l=radpartbrainmat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://radpartbrainmat.blogspot.com/feeds/7746867377778843657/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://radpartbrainmat.blogspot.com/2008/08/flyer-people.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/7746867377778843657'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/958894369509579247/posts/default/7746867377778843657'/><link rel='alternate' type='text/html' href='http://radpartbrainmat.blogspot.com/2008/08/flyer-people.html' title='Flyer people'/><author><name>Sam T</name><uri>http://www.blogger.com/profile/12905043109698863507</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_G1I4CEs0Hw4/Sa217oZ1RGI/AAAAAAAAAAM/Ey9JSFmaosc/S220/n808790693_1063742_662.jpg'/></author><thr:total>0</thr:total></entry></feed>
