When discovering the ins and outs of Amiga hardware during late 80s I learnt about the custom co-processors inside the Amiga:
• The Blitter – A coprocessor having ability to copy rectangular blocks of memory around while applying bit-logic operations on them and to draw lines.
• The Copper – A general purpose coprocessor synchronized to display beam position, able to control most of the other custom hardware, such as sprites, color palette, display properties and control the Blitter.
Even though the Blitter can perform only a limited set of logical operations on bit-level, the operations can be combined to perform more complicated logic. Tomas Rokicki demonstrated Conway’s Game Of Life by employing the Blitter already back in 1986.
Since Game of Life is Turing complete, if I could make it run without any CPU control it’d also mean that the amiga chipset itself would be (granted this has been known to be the case for a long time already). This required controlling the necessary blit operations entirely from the Copper alone, something I already knew was feasible: I would only need to build a Copper program that would trigger the necessary blit operations in sequence. If the setup was done correctly, I could just let the copper list run while the CPU would be idling. Eventually I managed to get this working after dealing with all kinds of Blitter programming woes, such as coming up with the correct barrel shift register values for -1 and +1 cell fetch operations. This is a limited case of Turing Completeness as the total memory size is limited, also limiting the complexity of the system that could be emulated.
Having a Game Of Life running entirely with the Copper and the Blitter alone was all nice as such, but I could make it even more fancy by entirely wiping all CPU instructions from the memory after the setup had been done and stopping the CPU execution. I implemented this by copying section of the code inside one of the temporary buffers used by the Game Of Life blits and jumping to this code. The code would wipe all other system memory to zero, enable the DMA to start up the Copper, and finally execute “stop #$2000” instruction to indefinitely stop the CPU. The first iteration the Game Of Life would then wipe the remaining CPU instructions, entirely erasing last remnants of the 68000 code from RAM. I believe this method was used by some of the copy protections in some #Amiga games (Dragon's Lair is often mentioned).
Having successfully implemented the Game of Life I was already quite pleased with myself. Yet, I felt that there was more that could be done to spice things up. The copper list was static and only repeating the same program indefinitely after all. But what if I would use the Blitter to rewrite part of the copper program itself? That is: Maybe I could build a feedback loop where the Blitter would modify the Copper programming, building more complicated self-contained dynamic programs?
After tinkering around for few hours I came up with basic control blocks that are necessary to implement self-modifying Copper programs in practice. The minimal primitive consists of:
• Setting up the Blitter copy operation of 2+n*4 bytes
• Set the blit target address to the position where the lower 16-bits of the source address for this blit are set, and then n*4 bytes of arbitrary Copper instruction payload
• Execute the blit operation and wait for it to complete
This will update the Copper code in a way that on next display update the n payload Copper instructions piggybacked by the blit operation will get executed. The source address is used to chain together sequence of payloads with the last one of them pointing back to the beginning of the chain. In short, rather than actually diverging the path of execution of the Copper it dynamically modifies fixed section(s) of the Copper instruction flow for each screen refresh effectively resulting in different Copper instructions getting executed on each iteration. While it would also be possible to modify the “program counter” address of the Copper itself but this requires more code, and is less flexible.
I used this construct to create two separate repeating loops:
• Background color cycle of 24 different colors in an RYB color wheel.
• Displaying animated sprite with 8 different frames.
This is rather naïve use case for the capability however. Since the Blitter can do logic operations you could easily store higher level logic and conditional execution controlled by the Blitter source. In effect this demonstrates second means of achieving Turing Completeness.
I had always wondered if something like this could be pulled off. Now I know for sure.
25 years of massive fusion energy experiment data open on the 'cloud' and available to everyone
https://phys.org/news/2024-06-years-massive-fusion-energy-cloud.html
#InternationalThermonuclearExperimentalReactor #ITER #fusion #energy #plasma #physics #LargeHelicalDevice #NationalInstituteForFusionScience #NIFS #data #science #openScience #PhysOrg
Please reboost!
Trying something new, everyone is guaranteed an interview! Open interviews! For a limited time no one will be skipped (except for clear cases of abuse).
So we still have about 10 more 100% remote positions to hire for full-time market-fair positions here at QOTO/CleverThis.
100% remote, work from anywhere, even the beach, market-fair offers. Ethics first, we treat our people like family.
We have an urgent need for Machine learning experts with a background in NLP and Deep Learning (Natural Language Processing and Neural Networks). There is a focus on Knowledge Graphs, Mathematics, Java, C, looking for Polyglots.
We are an open-source first company, we give back heavily to the OSS community.
We need everything from jr to sr, data scientist to programmer. If your IT and your good, you might be a fit.
I will personally be both your direct boss, and hiring manager. I am also the founder and inventor.
The NLP position can be found at this link, other positions can be found on the menu bar on the left:
https://docs.cleverthis.com/en/human_resources/organizational_structure/sr_data_scientist_(nlp)
If you would like to submit yourself for an interview, which for a limited time I am guaranteeing you will get a first stage interview, then you can submit your application here, and even schedule your interview as you apply, instantly!
https://cal.com/team/cleverthis/interview-stage-1
For those of you who cant schedule during core hours you can schedule in my free time if you’d like a chance (the company doesnt have fixed hours):
https://cal.com/team/cleverthis/interview-stage-1-extended
#Fedihire #NLP #MachineLearning #Job #jobs #hiring #Programming #IT #AI #AGI #KnowledgeGraphs #semanticweb #ML #ChatGPT
The Code: Story of Linux documentary (Multilingual)
https://www.youtube.com/watch?v=XMm0HsmOTFI&t=97s
The #cutest scene I've seen in a long time.
And notice, there's not a single cat there.
This is/was my [personal blog](https://mcblg.pythonanywhere.com/). I'm sharing this link because it will disapear soon because, acording to the host service they are updating their servers to a a new system image, which is incompatible with the version of Python (3.8), and Django (?) I used to write it.
I have no time, nor desire to update it, because [mcBlog was built to](https://rentry.co/mcblog) "make it a good choice for a school class or a university department, for example. One blog administrator can easily create as many independent accounts as needed. Posts are saved as drafts before being published, which gives their authors (pupils, lecturers, others) the opportunity to ask the blog admin (teacher, professor, other) to review them before publishing". (As you may have noticed if you opened the link above, the posts are backed up on rentry.)
However, it didn't catch the interest of those who decide, i.e. they decided for a paid service instead of a [free account](https://blog.pythonanywhere.com/206/). (I hope, and wish open source is not dying.)
If/when I get the spare time to create another blog I will use Julia's frameworks [Franklin](https://github.com/tlienart/Franklin.jl) or [Toolips](https://github.com/ChifiSource/Toolips.jl).
Comet 12P/Pons-Brooks and Hamal (Alpha Arietis). 29 March 2024. #AstroDon #Astronomy #Astro #Space #Astrophotography
A comet might be visible if you're in the path of totality of the April 8 eclipse. Also a good line up of the planets.
This Astronomy article has details: https://www.astronomy.com/observing/a-comet-will-be-visible-during-the-2024-total-solar-eclipse/
I think something is #notworking here, at #qoto . I get always the same #notifications highlighted.
I think something is #notworking here, at #qoto . I get always the same #notifications highlighted.
I have a new favorite development blog: TheDailyWTF.com
Boy is that a doozy of a story! #DevHumor #programming
The Inner JSON Effect
I don't have time for this, but if you do and like it...
https://cheapbotstootsweet.com/
#bots #cheapbots for #mastodon
Describe myself in 5 tag words:
#mathfolk #programmer #reader #traveller #researcher
header: Cobalt Mirror (Lake Louise), photo by Paul Zizka