Atari Joystick mit DB9 Anschluss an PC per USB anschliessen

Um klassische Joysticks nach Atari Standard mit DB9 Anschluß an moderne PCs anschließen zu können, benötigt man Adapter.
Solche gibt es als freie Designs zum Nachbauen, aber selten fertig zu kaufen. Sie enthalten meist einen kleinen Microcontroller, häufig AVR oder PIC, etwas “Hühnerfutter” drumrum und stellen PC seitig eine HID konforme Schnittstelle bereit.

Bei Ebay und anderen Shops tauchen ab und an fertig kaufbare Geräte auf. Diese braucht man in der Regel nur anschließen und gängige Betriebssysteme listen danach einen neuen Joystickanschluß auf.

Ich besitze aktuelle mehrere solcher Adapter. Bei einem konnte ich über eine in der Firmware hinterlegte URL auch eine Bezugsquelle in Kanada ausmachen. Zwar nicht die günstigste Variante, aber immerhin eine Möglichkeit, einen solchen Adapter zu beschaffen. Meinen hatte ich bei Ebay gefunden.

URL: http://www.retronicdesign.com/

Auszug aus meinem Linux Kernel Log beim Einstecken:

[ 5870.324066] usb 1-5.1.3: new low-speed USB device number 9 using xhci_hcd
[ 5870.453974] usb 1-5.1.3: New USB device found, idVendor=1781, idProduct=0a99
[ 5870.453980] usb 1-5.1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 5870.453982] usb 1-5.1.3: Product: Retro Joystick Adapter v2.0
[ 5870.453984] usb 1-5.1.3: Manufacturer: retronicdesign.com
[ 5870.453986] usb 1-5.1.3: SerialNumber: 3292
[ 5870.462639] input: retronicdesign.com Retro Joystick Adapter v2.0 as /devices/pci0000:00/0000:00:14.0/usb1/1-5/1-5.1/1-5.1.3/1-5.1.3:1.0/0003:1781:0A99.0008/input/input17
[ 5870.520437] hid-generic 0003:1781:0A99.0008: input,hidraw5: USB HID v1.01 Joystick [retronicdesign.com Retro Joystick Adapter v2.0] on usb-0000:00:14.0-5.1.3/input0

Ungewollte Popups in Firefox unterdrücken

Auf manchen Webseiten wird man ungewollten, durch Javascript und anderweitige Wege geöffneten, Tabs und Browserfenstern nicht mehr Herr.

Leider funktionieren einige Seiten nur mit aktiviertem Javascript, daher ist es nützlich, solche Effekte zu unterdrücken:

  1. about:config aufrufen
  2. Eintrag dom.popup_allowed_events leeren

Eine optimierte Palette mit 16 Farben

Da Forumposts ab und an verschwinden und ich diesen Zusammenhang für sehr interessant befinde, eine Kopie hier in mein Blog von DawnBringer bei pixeljoint.com:

“So, dear friends, I have wasted some time lately with my obsession for
palettes. It’s been tackled before but I felt there was (and is?) more
work to be done with designing a great multi-purpose 16 color palette
(I’ll avoid any talk of “perfect” or “ultimate” as there simply isn’t
such a thing for a limited palette).

Property wish-list:
* Archetypical colors common in games/pixelart
* Real world colors (RGB-space brightness-axis “colorcigarr”)
* Good coverage of the spectrum
* Great coverage of the brightness range (a must for any useful palette)
* Max combinatory possibilities: Interpolations, simulations, dithers etc.
* …and if possible; colors that may work as subtle varitations: rust, dirt, textures.

But as with all small palettes, some things had to be sacrificed: This
palette is very weak in magentas (as that is a rarely used area). It
also lack much in turquoise – but at least they can be simulated by
combining the many blues & greens.

This is public version 1.0 (v9843.7 to me ;))

DawnBringer's 16 Col Palette v1.0
DawnBringer’s 16 Col Palette v1.0

Some notes:
* The dark register is dominated by blue/violett commonly found in shadows/dark waters etc.
* The lower-medium register has the weight on green and browns; found in vegetation, wood etc.
* The upper-medium register has much blues and orange/pink to handle skies, sand and skin.
* The bright register has the lone yellow and the effective pink &
cyan that  are complimentary colors that span around the spectrum and
can be mixed to a very good grey!
* Red is slightly violett – I wanted a red that contrasted the other
colors rather than being another shade of brown/orange. Still good
enough to use in some skin-shades I hope.

— Mockups omitted —-

Outstanding issues:
* The optimal(?) global brightness/contrast level…these can be
adjusted quite easily without affecting the internal relationships of
the colors very much – so if you have any feelings about this lemme
know.
* The dark register: is there a better combination/structure of colors here?

Comments & questions are welcome! :)Here’s the RGB-values:
20 12 28
68 36 52
48 52 109
78 74 78
133 76 48
52 101 36
208 70 72
117 113 97
89 125 206
210 125 44
133 149 161
109 170 44
210 170 153
109 194 202
218 212 94
222 238 214
And yeah…feel free to use this palette. ”

 

Ferner dazu eine Abbildung für The Gimp von user DarkUranium vom gleichen Forum:

GIMP Palette
Name: DawnBringer's 16 Color Palette
Columns: 8
#
 20  12  28    Dark1
 68  36  52    Dark2
 48  52 109    Dark3
 78  74  78    Dark4
133  76  48    Dark5
 52 101  36    Dark6
208  70  72    Dark7
117 113  97    Dark8
 89 125 206    Light1
210 125  44    Light2
133 149 161    Light3
109 170  44    Light4
210 170 153    Light5
109 194 202    Light6
218 212  94    Light7
222 238 214    Light8

Originalartikel unter: http://pixeljoint.com/forum/forum_posts.asp?TID=12795

“WannaCry(pt)” Windows XP x86 Patch

Nach der letzten Wurmattacke sollten Windows XP Nutzer (ja die gibt es noch zu häufig) unbedingt den Patch einspielen.

Dies funktioniert automatisch nicht mehr. Und sollte offline geschehen, d.h. mit getrennter Internetverbindung.

Leider ist irgendwas bei Microsoft schiefgegangen, so daß man ungeplant an die falsche Downloadstelle geleitet wird.

Hier nochmal der Link zum Patch für klassisches 32Bit Windows XP mit deutscher Lokalisierung. Erwischt man einen anderen Patch, verweigert dieser die Installation. Für zentrale Bugfixes ein Unding!

Link zum deutschen Patch:
http://download.windowsupdate.com/d/csa/csa/secu/2017/02/windowsxp-kb4012598-x86-custom-deu_c1e81e14c283f2adbbdce9c1de348b4295b6a45c.exe

Ich musste mir erst von einem erfahrenen User den richtigen Link besorgen.

Finite State Machine Generator for C

For quite a long time I’m thinking about simple code generating tools. I don’t want to use a special XML syntax or descriptive language but a simple Excel or OpenOffice sheet instead.

The aim is to generated C source code for small microcontroller applications or retrocomputing systems.

For the start I made a simple generator for finite state machines (Wikipedia entry)

It is also my first script written in Python and thus not really as tidy and neat as I prefer. But it is working for now.

It takes the sheet from an OpenOffice .ods table like this:

@brief autofire button statemachine
@see    
     
State Event Next State
INIT KeyPressed PULSE_ON
INIT KeyNotPressed AUTOFIRE_OFF
AUTOFIRE_OFF KeyPressed PULSE_ON
PULSE_ON KeyNotPressed AUTOFIRE_OFF
PULSE_ON PulseTimeElapsed PULSE_OFF
PULSE_OFF KeyNotPressed AUTOFIRE_OFF
PULSE_OFF PulseTimeElapsed PULSE_ON

and generates a switch-case style state machine in C with callback functions for state and event handling.

A version with support for object oriented programming with pointers to statemachine objects is planned aswell. Check the github for functional updates.

The actual code can be found on Github: https://github.com/simonsunnyboy/gen-fsm

Debugging Ncurses applications with QT Creator

Today I stumbled over the problems while toying around with a small C project using the Ncurses library.

I recently discovered QT Creator as a decent IDE so I started to use it.

Problem 1 with running the application at all

The program builds fine and runs with ncurses if run in a seperate terminal window.
Upon run from within QT-Creator with checkmark “run in terminal” I got this error message: “Error opening terminal: unknown

After quite some googling I found the solution as the environment passed to my application in this way does not define the TERM environment variable.

So I added the definition “TERM=xterm” to the list of passed environment variables. Now the Ncurses application runs in its own terminal window.

Problem 2 with debugging the application

Naturally I do not only want to run my application, I also want to debug it using gdb. QT creator handles this normally fine so I click on “Debug.”
I see the extra terminal window opening but I get a small notice “ptrace: Operation not permitted” and all collapses.

Some more googling and I discover that Ubuntu  10.04 and later deactivate the option to attach gdb to running processes. This is something QT Creator seems to try here when running the application inside the terminal window.
I simply used the directions found here at AskUbuntu and now it works. I have the application ruuning in a seperate terminal window and I can trace, singlestep and debug it with the gdb frontend from QT Creator.

What a mess!

But it only affects debugging Ncurses and maybe S-lang projects. Normal terminal output is fine and so should be SDL based stuff aswell. It is dirty and slight hacky, but all in all it is working.

Ebookkonvertierung mit Thunar

Mein Kindle unterstützt Ebooks im MOBI Format, aber leider nicht das stärker verbreitete Epubformat. Heute wollte ich ein paar EBooks mit .epub nach .mobi konvertieren und das natürlich gleich komfortabel per Mausklick erledigen.
Die Konvertierung selbst wird von Calibre und seinen Werkzeugen durchgeführt.

Für die Integration in XFCE und Thunar habe ich mir einfach eine “Benutzerdefinierte Aktion” alias Custom Action in Thunar definiert und Dateien mit Endung .epub zugeordnet. Da das Konvertierungstool Ausgaben erzeugt, wird diese in einem eigenen Terminalfenster angezeigt, welches man nach erledigter Konvertierung einfach schliessen kann. Dazu habe ich ein einfaches Shellskript geschrieben, dem man den Dateinamen samt Pfad zum *.epub übergibt. Die konvertierte Ausgabedatei bekommt automatisch die Endung .mobi zugeteilt.

Das Skript wird von der Custom Action mit Parameter %f aufgerufen und sieht so aus:


#!/bin/bash
#
# Thunar helper to convert *.epub to *.mobi with Calibre
#
# Syntax: thunar-convert-epub-to-mobi.sh
#
# (c) 2016 by Matthias Arndt
# The GNU General Public License v2 applies.
#
# extract pathname and filename without extension
basename=$(basename "${1}")
filename="${basename%.*}"
#
xfce4-terminal -T "MOBI Conversion result" -H -x ebook-convert "${1}" "${filename}.mobi"