emu51 under GNU/Linux

ASM Software was able to build and run the 8051 emulator emu51 (http://emu51.sourceforge.net/) under GNU/Linux.

Download the source distribution, make sure you have the Allegro library installed, and now compile emu51 with this Makefile.

The emulator seems to work but keep in mind it is very early alpha and the interface not that easy.

If you use SDCC, make sure to issue the packihx command first. emu51 has problems with reading the .ihx output of SDCC properly.

Once a port to the SDL library was planned but the project was abandoned due to lack of time.

Tools and files for 8051 compatible microcontrollers

Here you can find some tools, configuration files and generic information regarding MCS51 compatible mcus.

as31 assembler for Intel 8051 derivates

This is a patched version of the famous as31 assembler. It is now compatible with our development board. And can therefor be used with other Phytec 8051 boards and units as well. The original of the assembler can be found at Paul’s 8051 tools.
Download (83.5 K)

Intel 8051 assembler syntax highlighting definition for the editor Kate

A simple syntax highlighting definition for the text editor Kate for highlighting as31 source files.
Assigns itself for .a51 extension.
Download .xml file (5.7 K)

Quadromania

© 2002/2003/2004 by Matthias Arndt <marndt@asmsoftware.de>

The GNU General Public License applies to this project. See the file COPYING for details.

Introduction

Quadromania is a board game. Your task is to restore the originating board filled with red stones. The computer will pick a named amount of 3×3 tile sets and will flip the colours of the selected tiles.

This means a red tile will become green, a green one the next colour in the amount of colours, red again in the simplest case. You select the amount of colours to use and the amount of initial rotations.

In the running game click on the center point of a 3×3 tile set to exchange that selected set following the rules above. Restore the board full of red stones before you reach the limit of maximum turns.

Quadromania is a work in progress. I currently lack the time to do a decent development on it. However the current alpha release is somewhat playable and working.

Screenshots

Requirements

  • GNU C Compiler (preferrably 3.2 but works with older ones as well)
  • GNU Make
  • SDL
  • SDL_image

You can find SDL and SDL_image at the SDL website.

The current release adds support for autoconf and automake.

Downloads

NOTICE: This is currently alpha software. Do not expect everything to work. It may crash or even do not compile!
Each archive contains a file called INSTALL. This contains installation instructions.

Gopher Test Project

This is our Gopher Test Project. It concludes my research concerning this vintage hypertext protocol. It included the development of an experimental server.

Resources

Outdated as of October 18th 2007.

Experimental Gopher server in bash

This is our first implementation of the Gopher protocol. It is written in Bash. It needs some tweaking. It should be run from inetd. No more instructions provided – see the code for details.
Download (7.7 K)

KDE Support Center

ASM Software offers you some simple components to enhance your KDE desktop. They include servicemenus to improve some handlings from the Konqueror filemanager and some icons for your use.

Archive icon set


A small set of icons you can use and associate with various packer formats like ZIP, ARJ, RAR, ACE, 7z and LZH.
Download (29,6K) 7Z Format

Extract 7z servicemenu

A simple service menu for Konqueror that enables you to unpack 7z archives with a single click.
To install this service menu, simply copy the .desktop file to ~/.kde/share/apps/konqueror/servicemenues/ and restart Konqueror.
Download .desktop file

Mount ISO image as virtual CDROM

This little servicemenu allows you to mount and unmount ISO images as a virtual CDROM via the loopback device of your Linux kernel.
The commands will prompt you for your root password.
To install this service menu, simply copy the .desktop file to ~/.kde/share/apps/konqueror/servicemenues/ and restart Konqueror. Additionally you have to create the required mount point for the virtual CDROM as root. The default pathname is /media/isoimage but you can change it in the desktop entry file with any texteditor.
Download .desktop file

Tools & Utilities

Tree Utility

This is the little tree utility published in the Linux Gazette.
Download (9.3 K)

Maintenance Mailer

This is a small utility to create a report mail out of the sys logs.
A shell script for BASH.
Download (9.8 K)

Makemenu

This perl script creates and index of HTML files. Not by ASM Software but packaged by us.
Download (4.4 K)

mp3convert

mp3convert is a small shell script.
Its purpose is to convert whole Audio CDs into mp3 files.
The programs cdda2wav and bladeenc are required for proper operation.
Download (1.9 K)

mit Linux (S)VCDs erstellen

Das ist garnicht mal schwierig! Natürlicherweise sollte man ungefähr die doppelte Menge an Festplattenplatz bereitstellen, die die Videodaten schon einnehmen, einmal um das Format anzupassen, und einmal, um ein CD Image zu speichern, welches man dann brennen kann.

Für den Anfang sollte man das Material, von dem man (S)VCDs erstellen möchte, abspielbereit auf der Platte liegen haben. Eigentlich muss man nur die folgenden Schritte durchführen:

  1. Filme in das (S)VCD Format konvertieren
  2. ein CD Image erstellen, bei dem die einzelnen Filme dann als (S)VCD Spuren erscheinen
  3. die CD brennen
  4. ausprobieren (Xine, Kaffeine oder Mplayer sollten alle funktionieren)

Konvertiert werden die Daten am einfachsten mit FFMpeg. Das Eingangsformat darf dann MPEG, DivX oder so ziemlich alles sein, was FFMpeg versteht. Natürlich hat es Probleme mit WMV Files mit DRM Schutz, aber da wir hier ja von der Aufbereitung privater Clips sprechen, etwa aus einer Digitalkamera, sollte uns das nicht weiter stören ;)

Um ein Video nach (S)VCD zu konvertieren, startet man ffmpeg wie folgt in der Shell:

ffmpeg -i <Videodatei> -target pal-vcd <Ausgabedatei.mpg>

Hat man das für alle Dateien erledigt, dann kann man daraus ein CD Image erstellen. Das Programm vcdimager erledigt das mit folgendem Aufruf:

vcdimager -c <cuedatei> -b <bindatei> <Mpegfiles>

Wichtig dabei ist, das die Mpegs alle im SVCD kompatibelen Format vorliegen, so wie mit ffmpeg oben konvertiert.

Am Ende haben wir dann eine klassische .bin/.cue Kombination, die man mit k3b oder dgl. brennen kann.

Zumindest bei Ubuntu LTS sind nötigen Tools als Pakete vorhanden und müssen nicht erst kompiliert werden.

Viel Spaß mit euren neuen SVCDs, die dann auch in den allermeisten DVD Playern abspielbar sind!

Distupgrade

Tzz, statt wie geplant mit Doxygen zu basteln bin ich grad dabei im Labor ein Dist-Upgrade zu fahren. Alles nur, weilUbuntu von Breezy Badger nicht mal mehr Paketarchive hat. Keine Updates ist ja eine Sache, aber gleich die Pakete komplett löschen? Das war bei Debian besser gelöst…also nur um Doxygen zu installieren, rödelt jetzt die Kiste. Mag ich eigentlich nicht. Ich geb ja zu, Lust zum Arbeiten hab ich keine, aber so will ich ja auch nicht die Produktivität erniedrigen.

Morgen dann mal sehen…

SVN via Shell und SSH

PPM Prüfung überstanden, aber nicht glorreich. Bestanden, aber mit einem fiesen Nachgeschmack…

Als positives Gegenstück möchte ich hier kurz meine Erfahrungen mit Subversion zusammenfassen, die ich im bisherigen Verlauf der Arbeit an meiner Diplomarbeit gesammelt habe. In einem Satz: “Es funktioniert halt einfach!”

Einleitung

Ich habe kein spezielles Repository über HTTP oder dergleichen aufgesetzt. Mein Ansatz geht von ein paar Prämissen aus:

  • Gearbeitet wird unter einem unixoiden Betriebssystem mit Shell (hier Ubuntu Linux in verschiedenen Varianten)
  • Zugang über die Shell reicht für das Arbeiten am Rechner mit dem Repository
  • Für Remotezugriff kann SSH verwendet werden
  • Das Repository gehört mir selber, d.h. ich authentifiziere mich nicht weiter

Das Repository richtet man da ein, wo Plattenplatz ist und Zugriff besteht. Das Tutorial verrät, wie das geht. Wir nehmen nun an, wir haben ein Repository unter $HOME/SVN/ auf unserem Server angelegt.

URI für SVN Repositories

Um im weiteren Verlauf auf das Repository zugreifen zu können, müssen wir immer wieder die URI des Repositories angeben. Wenn wir direkt auf dem Server arbeiten, dann benutzt man einfach eine file:// URL der folgenden Form:

  • file://Pfad/VirtuellerPfad

Der Pfad muss das führende Slash enthalten. Beispielsweise könnte die URI so aussehen: file:///home/me/SVN/SomeProject/

Für den Remotezugriff verwendet man eine URL mit dem speziellen Protokoll svn+ssh://, welches der Subversionclient für die Kommandozeile anbietet. Man baut sich eine ähnliche URL zusammen, wie man sie auch von SSH her kennt, inklusive Benutzer und Zielrechner:

  • svn+ssh://username@hostname:Pfad/VirtuellerPfad

Beispielsweise so: svn+ssh://me@meinserver.de:/home/me/SVN/SomeProject/

Man beachte das SomeProject/ ein virtueller Pfad ab der Wurzel des Repositories darstellt.

Subversion fragt falls nötig nach dem Passwort. Hier empfiehlt es sich massiv mit SSH-Keys (Anleitung) zu arbeiten, da auf die Dauer die Passwortabfragen stören. Diese sind beim Remotezugriff für jedes Kommando anzugeben, was natürlich stört. Inwiefern man SSH-Keys als Sicherheitsrisiko einstuft, überlasse ich dem Einzelnen, ggfs. bei Martin Diedrich eine fundierte Meinung einholen ;)

Projekte auschecken

Wenn wir nun eine Arbeitskopie aus unserem Repository auschecken wollen, dann benutzen wir das folgende Kommando:

  • svn checkout $URI/Projekt

Das erstellt dann ein Unterverzeichnis im lokalen Arbeitsverzeichnis, in dem man alle Arbeitsschritte erledigt.

Aussehen kann das so:

  • cd
  • cd work
  • svn checkout file:///home/me/SVN/megaleet/
  • cd megaleet

Das Auschecken muss mn nur einmal erledigen, im folgenden synchronisiert man nur die Arbeitskopie mit dem Repository und überträgt nur die erfolgten Änderungen.

Der Arbeitszyklus

Gearbeitet wird im Verzeichnis der Arbeitskopie. Bevor man mit dem Arbeiten beginnt, sollte man sich den aktuellen Stand des Projektes aus dem Repository herunterladen. So bekommen wir die Änderungen von Teamkollegen gleich mit und insbesondere verheddern wir uns nicht, wenn man an zwei Arbeitsplätzen Arbeitskopien hat (z.B. wie ich daheim und im Labor).

  • cd <Verzeichnis der Arbeitskopie>
  • svn update

Jetzt können wir fleissig Dateien in der Arbeitskopie bearbeiten und verändern. Im Gegensatz zu CVS funktioniert das auch mit Binärdateien, z.B. Bildern gut. Sind wir mit der Arbeit fertig, so können wir den aktuellen Stand der Arbeit im Repository abgleichen. Dazu führen wir den sogenannten Commit aus, der unsere Änderungen in das Repository überträgt.

  • svn commit

Subversion macht auch $EDITOR (wörtlich gemeint, Default is meistens vi) auf und erlaubt uns so einen Kommentar zur Änderung einzugeben.

Prinzipiell ist es möglich auf jeden Stand wieder zurückzugehen, der einmal ins Repository eingecheckt wurde. Ebenso ist Branching möglich, aber diese fortgeschrittenen Anwendungsfälle möchte ich hier nicht behandeln.

Dateien zum Repository hinzufügen

Nehmen wir an, wir wollen eine neue Quelldatei zu unserem Repository hinzufügen. Dazu wird diese Datei zunächst erstellt und anschließend dem Repository bekanntgemacht. Mit dem nächsten Commit ist dann die Daei im Repository vorhanden.

  • cd <Verzeichnis der Arbeitskopie>
  • svn add <tolle files>
  • svn commit

    Löschen und Umbenennen ist ebenfalls möglich, ich empfehle ein Studium der Dokumentation zu Subversion für nähere Informationen.
    Neues Projekt in das Repository aufnehmen

    Wenn wir ein neues Projekt in unser Repository aufnehmen wollen, dann gehen wir wie folgt vor:

    • Projektstruktur erstellen (Verzeichnisse, erste Dateien)
    • svn import <Verzeichnis des neuen Projektes> $URI/Projektname/

    Das Projekt wird jetzt importiert. Dazu zwei Anmerkungen:

    • Die Angabe des Unterprojektes in der Repository-URI ist wichtig, da sonst nur flache Files importiert werden.
    • Das importierte Verzeichnis gilt nicht als Arbeitskopie, eine solche muss erst wieder ausgecheckt werden.

    Ein Beispiel verdeutlicht das Vorgehen:

    Sei $HOME/work/someproject/ das Projektverzeichnis, welches in das Repository aufgenommen werden soll.

    • cd $HOME/work/
    • svn import someproject/ file:///home/me/SVN/someproject/
    • mv someproject someproject_old/ <- das Verzeichnis ist noch keine Arbeitskopie
    • svn checkout file:///home/me/SVN/someproject/
    • cd someproject
    • …arbeiten im Projekt
    • svn commit

    Analog können natürlich auch URIs für eine SSH-Verbindung angegeben werden.

    Backup des Repositories

    Ein einfaches Backup des Repositories ist möglich.Dazu ist einfach das Verzeichnis des Repositories mit tar einzupacken:

    • tar cvzf ~/SVN_Backup.tgz ~/SVN/

    Zur Wiederherstellung wird das Backup dann einfach ausgepackt.
    Für weitere Informationen zu Subversion empfehle ich auf der Webseite von Subversion zu schmöckern. Es lohnt sich :)