Prologue When I was much younger I used to read Scientific American. In those days, it had a regular column by AK Dewdney called "Computer Recreations". Eventually, several of his columns were compiled into a book called "The Armchair Universe" of which I had a copy, but I suspect my parents donated it to the … Continue reading Sharks and Fish(es)
Blog
Quasicrystals in Metal
I recently had my attention drawn to the blog Main is Usually a Function which was discussing the art of creating quasicrystals as computer images using fairly simple rules. The blog in question uses Haskel to create a solution and rendered the result as an animated png. The author seems quite pleased he was able to … Continue reading Quasicrystals in Metal
Time for a C64
Now I've mastered Metal (ha ha), I think it's time to build an emulation that's a little more complex. It's time for the Commodore 64. Yay! Had some thoughts about how to do this. The extra challenges that I see are: the banked memory. I will need to be able to swap the RAM/ROM banks … Continue reading Time for a C64
Metal Addendum
In my last post, I discussed how I used Metal to render the PET screen instead of the higher level Cocoa APIs. I did the minimal amount of work to make the changes, so the program actually worked very inefficiently. The 6502 has no separate IO space so all peripheral control registers are mapped into … Continue reading Metal Addendum
Metal And Emulation
I thought it was time to learn how to do programming using the GPU. On macOS, that means Metal. I started by following this tutorial. Once I got to about tutorial number 11, I started wondering if I could apply Metal to my emulators. I thought, it would be cool if all of the graphics … Continue reading Metal And Emulation
Swiftvolution – Candidate Factories
More on the Generational Evolution Engine The generational evolution engine is a simple evolution engine that evolves things in generations. The basic algorithm is as follows: Create initial population Evaluate initial population while termination condition not met select parents of next generation evolve children from parents evaluate children The basics of the generational evolution engine … Continue reading Swiftvolution – Candidate Factories
Swiftvolution
I had an idea, which is that it might be interesting to develop an evolution model for bots that can play pong. I imagined that the strategy would be evolved and eventually, you would get a more or less perfect player. Leaving aside the fact that this requires me to develop or reuse a pong … Continue reading Swiftvolution
Data Structures and Data Caches – part 1
I came across a presentation on Youtube by Bjarne Soustrup in which he claimed that linked lists are usually the wrong data structure. As an example he used the following You have a random stream of N integers You have to insert each one in turn in the right place in a list to make … Continue reading Data Structures and Data Caches – part 1
Synchronising the Screen
At the end of my previous post, the spectrum was at the point where it would boot up and display the Sinclair copyright statement on the screen. Nothing else would happen and, indeed, you had to manually force the screen to refresh to get anything at all to display. Since then, it has now been … Continue reading Synchronising the Screen
Beginning the Spectrum
So I got bored of implementing instructions and decided, instead, to start implementing the actual Spectrum. This may seem a bit presumptuous, but it's more fun than just slogging through implementing instructions that nobody ever uses. To start, I decided to reuse the main window and memory window from my Z80Diagnostic app. This meant refactoring … Continue reading Beginning the Spectrum
