De auteur heeft een nieuwe versie van de software 'Quicktake' voor de Apple II uitgebracht, waarbij de belangrijkste update de ondersteuning voor de Kodak DC50 Zoom-camera uit 1996 is. Dankzij uitgebreide reverse-engineering van diverse tools en software is het nu mogelijk om foto's te downloaden, thumbnails te bekijken en camera-instellingen te beheren op de Apple II.
Naast de nieuwe hardware-ondersteuning bevat de release diverse technische verbeteringen:
- Drivers & Hardware: Verbeteringen aan de seriële poort en de implementatie van IRQ-loze I/O.
- Decoders: Generalisatie en bugfixes voor de RADC- en JPEG-decoders, waardoor meer camera's ondersteund kunnen worden.
- Software-architectuur: Een volledige reorganisatie van de broncode en een betere scheiding tussen de gebruikersinterface en de drivers.
- Visuele optimalisaties: Overstap naar Sierra Lite-dithering voor thumbnails in DHGR voor een beter beeld.
- Efficiëntie: Optimalisaties in geheugengebruik en snelheid, waardoor de software iets minder ruimte in beslag neemt.
Kodak DC50 nu bruikbaar op de Apple II
Het belangrijkste is dat het programma nu een nieuwe camera ondersteunt: de Kodak DC50 Zoom, uitgebracht in 1996, dertien jaar na de Apple IIe. De aangepaste kabel voor de camera is relatief eenvoudig te maken (en mijn seriële hardware maakt het zelfs mogelijk om een aangepaste kabel volledig over te slaan). Alle functies worden ondersteund: het downloaden van foto's, thumbnail-voorvertoningen, instellingen voor datum/naam/flitser/kwaliteit en het verwijderen van foto's.
- Overdracht van een foto
- Een foto van mijn partner
- Een foto van gebouwen
- Het hoofdmenu
Notities over de Kodak DC50 en de implementatie
De camera is in staat om 115200bps te halen op de seriepoort, wat de overdracht razendsnel maakt in vergelijking met de Quicktakes!
Het apparaat beschikt over zowel intern geheugen als een PCMCIA-slot. Mijn exemplaar werd geleverd met een geheugenkaart van 6 MB, wat een absurde hoeveelheid opslag is; dit maakt 92 foto's van lage kwaliteit of 36 foto's van hoge kwaliteit mogelijk. Mijn programma werkt met de geheugenkaart wanneer deze is ingeschoven, en anders met het interne geheugen. Wat een luxe!
De resolutie van de DC50 is een vreemde 756×504 pixels. Omdat het bestandsformaat (KDC) RADC-gecomprimeerd is — net als de Quicktake 150 — hergebruik ik die decoder. Deze specifieke resolutie is echter zeer moeilijk snel te schalen naar de vereiste 256×192 resolutie van mijn renderer. Daarom worden de DC50-foto's die mijn programma weergeeft tijdens het decoderen bijgesneden naar 640×480.
Ik ben erin geslaagd om alles wat ik nodig had via verschillende hulpmiddelen te reverse-engineeren:
dcraw voor de subtiele verschillen in RADC-decodering ten opzichte van het formaat van de QT150;
- De Kodak DC120-implementatie van
libgphoto2 voor enkele seriële commando's en het pakketformaat (niet alle, aangezien beide camera's verschillen in protocol);
- Het oude
kdcpi Perl-programma voor enkele andere seriële zaken (ook hier niet alles, aangezien kdcpi vol leek met bugs);
- De oude officiële Kodak Windows 3.1-software,
pta31.exe;
- En tot slot een flinke dosis het dumpen en vergelijken van hexadecimale buffers.
De bedrading van de kabel is gedocumenteerd op de homepagina van het project.
Volledig changelog van de release
Het toevoegen van ondersteuning voor een geheel nieuwe klasse camera's vereiste en veroorzaakte een groot aantal wijzigingen, die er allemaal aan bijdragen om Quicktake voor Apple II beter en beter onderhoudbaar te maken:
- Verbeteringen aan het configuratiescherm voor de seriële poort.
- Upgrade van de seriële en cameradrivers om IRQ-loze I/O te kunnen gebruiken.
- Generalisatie van de RADC-decoder (het afbeeldingsformaat van de Quicktake 150), zodat deze ook de KDC-foto's van de Kodak DC50 kan verwerken, aangezien deze ook RADC zijn.
- Correctie van een bug in de RADC-decoder die afbeeldingen kon corrumperen bij specifieke inputdata.
- Generalisatie van de JPEG-decoder (vooralsnog de decoder van de Quicktake 200), zodat deze naast YH2V1 ook het subformaat YH1V1 kan verwerken. Dit kan nuttig blijken bij het toevoegen van ondersteuning voor meer camera's.
- Correctie van een bug in de JPEG-decoder die het programma kon laten crashen bij specifieke inputdata.
- De laatst gebruikte cameradriver wordt nu opgeslagen, zodat het opstarten van het programma sneller gaat bij hergebruik van dezelfde camera.
- Herziening van de verantwoordelijkheden tussen de UI en de drivers. Elke driver is nu verantwoordelijk voor het instellen van de seriële poort naar eigen behoefte, levert zijn eigen teksten voor flitser/kwaliteitsinstellingen en biedt zijn eigen thumbnail-decoder aan aan de UI.
- Standaard wordt, indien mogelijk, de bestandsnaam gebruikt zoals deze door de camera wordt aangeleverd (Quicktake 200, Kodak DC50).
- Toevoeging van de langverwachte functie om thumbnails van de Quicktake 200 te bekijken.
- Correctie van de decodering van de thumbnails van de Quicktake 150.
- Grote reorganisatie van de broncode-structuur op basis van verantwoordelijkheden (UI / camera's / decoders).
- Overstap naar Sierra Lite-dithering voor thumbnails, omdat dit er (in DHGR) beter uitziet dan Bayer.
- Optimalisatie van de grootte, waardoor deze release één kilobyte minder op schijf en 100 bytes minder in het geheugen in beslag neemt dan de vorige versie.
- Enkele kleine prestatie-optimalisaties in de decoders en renderer, wat resulteert in nauwelijks merkbare snelheidswinst... maar elke cycle telt, toch?
Kodak DC50 nu bruikbaar op de Apple II
Het belangrijkste is dat het programma nu een nieuwe camera ondersteunt: de Kodak DC50 Zoom, uitgebracht in 1996, dertien jaar na de Apple IIe. De aangepaste kabel voor de camera is relatief eenvoudig te maken (en mijn seriële hardware maakt het zelfs mogelijk om een aangepaste kabel volledig over te slaan). Alle functies worden ondersteund: het downloaden van foto's, thumbnail-voorvertoningen, instellingen voor datum/naam/flitser/kwaliteit en het verwijderen van foto's.
- Overdracht van een foto
- Een foto van mijn partner
- Een foto van gebouwen
- Het hoofdmenu
Notities over de Kodak DC50 en de implementatie
De camera is in staat om 115200bps te halen op de seriepoort, wat de overdracht razendsnel maakt in vergelijking met de Quicktakes!
Het apparaat beschikt over zowel intern geheugen als een PCMCIA-slot. Mijn exemplaar werd geleverd met een geheugenkaart van 6 MB, wat een absurde hoeveelheid opslag is; dit maakt 92 foto's van lage kwaliteit of 36 foto's van hoge kwaliteit mogelijk. Mijn programma werkt met de geheugenkaart wanneer deze is ingeschoven, en anders met het interne geheugen. Wat een luxe!
De resolutie van de DC50 is een vreemde 756×504 pixels. Omdat het bestandsformaat (KDC) RADC-gecomprimeerd is — net als de Quicktake 150 — hergebruik ik die decoder. Deze specifieke resolutie is echter zeer moeilijk snel te schalen naar de vereiste 256×192 resolutie van mijn renderer. Daarom worden de DC50-foto's die mijn programma weergeeft tijdens het decoderen bijgesneden naar 640×480.
Ik ben erin geslaagd om alles wat ik nodig had via verschillende hulpmiddelen te reverse-engineeren:
dcraw voor de subtiele verschillen in RADC-decodering ten opzichte van het formaat van de QT150;
- De Kodak DC120-implementatie van
libgphoto2 voor enkele seriële commando's en het pakketformaat (niet alle, aangezien beide camera's verschillen in protocol);
- Het oude
kdcpi Perl-programma voor enkele andere seriële zaken (ook hier niet alles, aangezien kdcpi vol leek met bugs);
- De oude officiële Kodak Windows 3.1-software,
pta31.exe;
- En tot slot een flinke dosis het dumpen en vergelijken van hexadecimale buffers.
De bedrading van de kabel is gedocumenteerd op de homepagina van het project.
Volledig changelog van de release
Het toevoegen van ondersteuning voor een geheel nieuwe klasse camera's vereiste en veroorzaakte een groot aantal wijzigingen, die er allemaal aan bijdragen om Quicktake voor Apple II beter en beter onderhoudbaar te maken:
- Verbeteringen aan het configuratiescherm voor de seriële poort.
- Upgrade van de seriële en cameradrivers om IRQ-loze I/O te kunnen gebruiken.
- Generalisatie van de RADC-decoder (het afbeeldingsformaat van de Quicktake 150), zodat deze ook de KDC-foto's van de Kodak DC50 kan verwerken, aangezien deze ook RADC zijn.
- Correctie van een bug in de RADC-decoder die afbeeldingen kon corrumperen bij specifieke inputdata.
- Generalisatie van de JPEG-decoder (vooralsnog de decoder van de Quicktake 200), zodat deze naast YH2V1 ook het subformaat YH1V1 kan verwerken. Dit kan nuttig blijken bij het toevoegen van ondersteuning voor meer camera's.
- Correctie van een bug in de JPEG-decoder die het programma kon laten crashen bij specifieke inputdata.
- De laatst gebruikte cameradriver wordt nu opgeslagen, zodat het opstarten van het programma sneller gaat bij hergebruik van dezelfde camera.
- Herziening van de verantwoordelijkheden tussen de UI en de drivers. Elke driver is nu verantwoordelijk voor het instellen van de seriële poort naar eigen behoefte, levert zijn eigen teksten voor flitser/kwaliteitsinstellingen en biedt zijn eigen thumbnail-decoder aan aan de UI.
- Standaard wordt, indien mogelijk, de bestandsnaam gebruikt zoals deze door de camera wordt aangeleverd (Quicktake 200, Kodak DC50).
- Toevoeging van de langverwachte functie om thumbnails van de Quicktake 200 te bekijken.
- Correctie van de decodering van de thumbnails van de Quicktake 150.
- Grote reorganisatie van de broncode-structuur op basis van verantwoordelijkheden (UI / camera's / decoders).
- Overstap naar Sierra Lite-dithering voor thumbnails, omdat dit er (in DHGR) beter uitziet dan Bayer.
- Optimalisatie van de grootte, waardoor deze release één kilobyte minder op schijf en 100 bytes minder in het geheugen in beslag neemt dan de vorige versie.
- Enkele kleine prestatie-optimalisaties in de decoders en renderer, wat resulteert in nauwelijks merkbare snelheidswinst... maar elke cycle telt, toch?