profile picture

Michael Stapelberg

c128_kasse (2014)

published 2014-11-07, last modified 2018-03-18
Edit Icon

Kassensystem auf der RGB2Rv5

Zum Abrechnen auf unserer Retrogames-Party RGB2R haben Matthias, Jakob und ich ein Kassensystem für den Commodore C128 (1985 – der ist älter als ich!) in C geschrieben.

Das System nutzt einige Funktionen des C128 aus: Die Verkäufe werden auf Papier via Nadeldrucker und auf einer Diskette mitgeloggt. Außerdem werden beide Bildschirme benutzt (damit der Kunde sieht, dass sein Guthaben belastet wurde und wieviel er noch hat). Wie schon angedeutet ist damit bargeldloses Zahlen möglich, sofern man vorher ein Guthaben einzahlt :-).

Selbstverständlich ist das System in VICE lauffähig, aber das richtige Feeling kommt erst auf Original-Hardware auf. Einige Leute fanden das charakteristische Geräusch von Floppy und Nadeldrucker so cool, dass sie fast nur deswegen noch mehr Getränke kauften ;-).

Die Uhrzeit

Der C128 hat eine eingebaute Uhr, die allerdings zuerst initialisiert werden muss. Bei jedem Start des Kassenprogramms muss man also die aktuelle Uhrzeit eingeben. Die lustigen Berechnungen in set_time und get_time (c128time.c) haben wir übrigens aus BASIC übersetzt und in einer alten C64-Zeitschrift gefunden :-).

Effizientes Programmieren

Interessant ist es, sich die Dokumentation zu cc65 anzuschauen, die wirklich sehr starke Richtlinien gibt, wie man den Prozessor/Speicher am besten ausnutzen kann, zum Beispiel durch das Zusammenfassen der Variablen gleichen Typs, Zusammenfassen von zu initialisierenden und nicht zu initialisierenden Variablen. Außerdem muss man natürlich extrem sparsam sein was die Datentypen angeht. Zudem macht es hier einen Unterschied, ob man pre-inkrement oder post-inkrement verwendet (++i gegen i++) etc…

Die Qual der Wahl

Bei der C-Library von cc65 muss man sich für manche Funktionen entscheiden: Wenn man cprintf() verwenden will, kann man kein open() mehr verwenden, sondern muss auf die cbm_open-Funktionen zurückgreifen. Ebenso funktionierte unser Programm nicht mehr, sobald wir unistd.h eingebunden hatten, daher mussten wir den Prototyp für sysremove direkt einbinden.

Herunterladen

Lizenz

c128_kasse ist freie Open-Source-Software unter der BSD-Lizenz.

Entwicklung

Der aktuelle Entwicklungsstand kann in gitweb verfolgt werden.

Feedback

Solltest du mir eine Nachricht zukommen lassen wollen, schreib mir doch bitte eine E-Mail.

I run a blog since 2005, spreading knowledge and experience for almost 20 years! :)

If you want to support my work, you can buy me a coffee.

Thank you for your support! ❤️