User Tools

Site Tools

Translations of this page:


If you take any library that has parts written in assembly, then it is definitely not isomorphic because it cannot run beyond the processor (or, more often, the platform) it was designed on. Even if it were all written in pure C, however, it might not be isomorphic. Imagine a library that takes the “freedom” in representing the hardware, or it makes an abstraction of it to make it accessible. Even this may not make the choice isomorphic.

The existing libraries (software sprites for Z88DK, CONIO / TGI for CC65, and so on) are all example of abstractions, not of isomorphisms: because, if they were examples of isomorphisms, they would be perfectly interchangeable (by using “adapters”). Instead they are profoundly different, although the computers they manage are always made up of a CPU, memory, video ram, and so on.

The same for the audio support on the Z88DK. Adopting the bit bang means abstract the audio part and assume that you have nothing but a 1-bit DAC (real or emulated) while most computers are equipped with music generators, with more or less advanced capabilities. Although here we are in the presence of an example of abstraction: a specific computer equipped with minimal audio hardware. When you change (for example) to the SID or TED [which Z88DK does not manage] it will be necessary to rewrite the audio part and it will not be possible to “port” it by adapting it.

So they are abstractions, not isomorphisms.

It would be isomorphism if Z88DK (or rather its C library) remap, at compile time, the generated sound waveform because the available audio chip allows it.

In short, each environment offers specific libraries on very similar targets or, to put it differently, specific libraries that “standardize” the interface to communicate with specific chips. If you use that library directly, with or without the high level commands, you are actually programming for a specific target and therefore we cannot tell we are in presence of an isomorphism.

With the same approach but coming to the video, I didn't have to change the games one iota on a functional level, and their graphic aspect remained the same even though I moved from VIC / GTIA to VDP.