AMIGA alive

AMIGA alive

Friday, February 13, 2026

APTR is dead - long live APTR!

When browsing through AmigaOS developer documentation and C code, there's always a funny, interesting, sometimes enlightening little find.

It's just nice to see how it all ties together, and the changes made from one operating system (API) release to the next. Learning about the infrastructure of software, esp. over multiple versions, exposes some of the thinking process of the operating system developers. 

Sometimes, it also reveals long forgotten secrets. If you're a C coder using AmigaOS, chances are you've been using a datatype known as "APTR" somewhere in your code. It is used extensively throughout AmigaOS 1.3 Native Developer Kit (NDK) C include-files, and even more extensively throughout later NDK releases. 

And it turns out it's wrong!

From NDK 1.3 Includes exec/types.h:

typedef STRPTR      *APTR;      /* absolute memory pointer */

/* sigh.  APTR was misdefined, but compatibility rules.  Heres what it
 * should have been
 */
typedef ULONG       CPTR;       /* absolute memory pointer */

Yes, even the pros make a little mistake from time to time. Obviously, they kept compatibility, meaning they (and everybody else) kept using APTR, when it should be CPTR. 

Interestingly, in NDK 1.3 there is - a little - use of CPTR (in resources/filesysres.h, libraries/romboot_base.h, and libraries/expansion.h), but it has been half-removed (from libraries/romboot_base.h and libraries/expansion.h) and half-reintroduced (in dos/dosextens.h) with later NDK versions.

Chances are you've also been using datatypes SHORT and USHORT in your C code. Guess what: It's wrong, too! Here's another little snippet from NDK 1.3 exec/types.h that may clarify this further, long standing issue:

typedef short       WORD;       /* signed 16-bit quantity */
typedef unsigned short  UWORD;      /* unsigned 16-bit quantity */

...

/* For compatability only: (don't use in new code) */
typedef short       SHORT;      /* signed 16-bit quantity (WORD) */
typedef unsigned short  USHORT;     /* unsigned 16-bit quantity (UWORD) */

SHORT and USHORT are just backwards-compatable [sic] aliases for WORD and UWORD. 

Given the very non-volatile situation of AmigaOS development, both APTR and (U)SHORT won't give you a headache. APTR is used throughout the operating system, and will most likely never be replaced. CPTR is used only in less than a handful of cases - you'll probably never need it (and it has been moved to the "compatibility only" [sic] section of NDK 3.9 exec/types.h). (U)SHORT is deprecated since NDK 1.3, and hasn't been removed in later releases, so it's probably cemented into today's global AmigaOS code base, and will never be removed from the NDK.

So - lessons learned:

- use APTR, it's (not) correct

- (don't) use SHORT and USHORT

;-)

* * *

BONUS: 

Here's yet another nice, ancient compatibility [sic] snippet, from NDK 1.3 Includes libraries/dos.h, moved to dos/dos.h in NDK 3.9:

/* Relative position to Seek() */
#define OFFSET_BEGINNING    -1      /* relative to Begining Of File */

...

#define OFFSET_BEGINING     OFFSET_BEGINNING  /* ancient compatibility */

Thank you - one less typing error to worry about. :-)

Monday, January 26, 2026

The 20th century was clearly more fun

Yet another find for the "connoisseur". 

It appears that in the 1990s, not only C coders, but also video hardware geeks had a good sense of humour, and since they were both German, they naturally shared the same field of activity in that regard.

We have no reports if the "dirty" text file in question actually enhances the performance of the VLab Motion video capture card. It is very likely, though, that - where allowed - it did enhance the performance of the video editor.

;-)

A text file that improves video editing?

 

P.S.: Regardless, it's still the best video capture card for the Amiga, and as a consequence, it's a perfect manual. You can find it here: https://amiga.resource.cx/exp/vlabmotion

Thursday, January 22, 2026

Amiga C code for adults

Someone made a delicate little mistake when sending his C code to the publisher in 1990... 

Ah, good old German humour. Thankfully, no reference to the "adult" function in question could be found throughout the book, so it doesn't result in "premature failure" when bedroom-coding your "Amiga".

The dual-Blitt() function may cause some trouble, though, not just because it's dual, but also because no reference to BlittLine() could be found either. 

;-)

This C code is for grown-ups only.

P.S.: Pssst, it's still a great book, you can find it here:
https://archive.org/details/grafik-in-c-auf-dem-amiga/


Thursday, January 15, 2026

Amiga, and the power of Linux audio

A modern Linux audio system is incredibly powerful. It makes it super easy to route audio output from an Amiga emulator into any audio application.

Sadly, AmigaOS doesn't have such a powerful audio system. Linux has come a long way in terms of audio systems, from OSS to ALSA and JACK, to what is probably the current state of the art, named pipewire. Pipewire unifies the software interfaces of ALSA and JACK - which means that now applications using any of the two systems can seamlessly be connected. Which makes it possible to just route the audio from an Amiga emulator - e.g. fs-uae - into your preferred Linux audio software. An application like QJackCtl provides a nice GUI to visually manage the connections.

An emulated Amiga provides some speech synthesis to Linux.

In this case, the emulated Amiga was used to provide some of his (her) characteristic "say" speech synthesis to an audio production created with ardour DAW.

But one can imagine many more use cases for such a setup:

- directly record Amiga music into your Linux DAW or video editing application

- real-time enhance emulated Amiga's audio via Linux: adjust stereo separation, add compression, add EQ, ...

- analyze Amiga audio output without analog interference

- experiment with multiple emulators / instances

Some of this can obviously be done with e.g. an emulator's record-to-WAV or record-to-video functions, but it's still a nice option to just be able to use Amiga's audio in real-time, without any conversion, in any audio application, and of course without the need for any additional hardware.

[ If you're interested in the result: The Amiga's voice can be heard in this video: https://www.youtube.com/watch?v=dBf42SgbA7s ]


Saturday, December 27, 2025

AWeb 3.6 - umh, yeah... alive!

Oops, it appears there might have been a slight mistake in the latest news about AWeb. But don't worry, it's still alive.

Original AWeb logo

The link (URL) that was published a couple of days ago, leading to amigazen's AWeb page (.../aweb.html), now shows a notice, that says the following (shortened copy):

"
Thank for your interest and excitement about a new release of AWeb. [...]

If you have come here via a link [...]:

  • [...]
  • The new release of AWeb is in very early stages of development and likewise this website is still under construction, it is not yet intended for general public consumption
  • While all amigazen project work is done in the open here at amigazen.com and at https://github.com/amigazen/AWeb3/ in the interests of openness and transparency, no formal announcements will be made unless there are stable public releases to share via Aminet and other channels
  • If you want to follow the project and even contribute, you are invited to do so at github
  • There is an alpha release to be found at github. If you use the alpha release, please treat it as such, and raise any issues not already listed in the included release notes known issues, as issues at github where they can be tracked
  • [...] the right link [to project amigazen's AWeb page] is here. [ http://amigazen.com/aweb/ ]
  • [...]

"

Sorry for spreading confusion - here's the full set of URLs, with correct project amigazen link:

Amigazen project's AWeb GitHub page (download / development):

https://github.com/amigazen/AWeb3/

Amigazen project's AWeb page (preliminary / tentative / alpha / ...):

http://amigazen.com/aweb/

Last archive.org snapshot of original AWeb website at https://www.yvonrozijn.nl/aweb/

https://web.archive.org/web/20231203183912/https://www.yvonrozijn.nl/aweb/

Last archive.org snapshot of AWeb APL (open-source) website at http://aweb.sunsite.dk

https://web.archive.org/web/20091006041931/http://aweb.sunsite.dk/

 

Your favorite christmas present

Finally, an m68k-based smartphone running AmigaOS! ;-)
Merry Chrismas everyone!

(created with PersonalPaint)


Monday, November 17, 2025

AWeb - alive!

UPDATE 2025-12-27: A mistake slipped in here. The information below is still valid, but please take note of this update: https://amigaalive.blogspot.com/2025/12/aweb-36-umh-yeah-alive.html

Great news for Amiga internet users: AWeb web browser is back!

Original AWeb logo

Well, it was never really gone, at least the sourcecode has survived over the last two decades or so, thanks to original author Yvon Rozijn releasing it when abandoning the project in 2002. There were some open-source developments here and there - but now it looks as if project "amigazen" has seriously resurrected AWeb.

A new release, version 3.6a2, will be available shortly. Here's an excerpt of the latest ChangeLog:

  • migrated from ClassAct to ReAction, and Picasso96 to CyberGraphics
  • SSL rewritten to use AmiSSL v5.2
  • HTTP Module rewritten 
  • improved handling of socket connections
  • better usability (color, cookies, search engine)
  • uses AmigaOS scalable fonts
  • improved character set support

Go to project amigazen's AWeb page for more details and download:

https://amigazen.com/aweb.html

Last archive.org snapshot of original AWeb website at https://www.yvonrozijn.nl/aweb/

https://web.archive.org/web/20231203183912/https://www.yvonrozijn.nl/aweb/

Last archive.org snapshot of AWeb APL (open-source) website at http://aweb.sunsite.dk

https://web.archive.org/web/20091006041931/http://aweb.sunsite.dk/