Ihr Browser versucht gerade eine Seite aus dem sogenannten Internet auszudrucken. Das Internet ist ein weltweites Netzwerk von Computern, das den Menschen ganz neue Möglichkeiten der Kommunikation bietet.

Da Politiker im Regelfall von neuen Dingen nichts verstehen, halten wir es für notwendig, Sie davor zu schätzen. Dies ist im beidseitigen Interesse, da unnötige Angstzustiände bei Ihnen verhindert werden, ebenso wie es uns vor profilierungs- und machtsächtigen Politikern schützt.

Sollten Sie der Meinung sein, dass Sie diese Internetseite dennoch sehen sollten, so können Sie jederzeit durch normalen Gebrauch eines Internetbrowsers darauf zugreifen. Dazu sind aber minimale Computerkenntnisse erforderlich. Sollten Sie diese nicht haben, vergessen Sie einfach dieses Internet und lassen uns in Ruhe.

Die Umgehung dieser Ausdrucksperre ist nach §95a UrhG verboten.

Mehr Informationen unter www.politiker-stopp.de.



Monatsarchiv für Dezember 2008

Das Ende ist nah!

Mittwoch, den 31. Dezember 2008

Ja, das Jahr geht zu Ende. Endlich. Und es endet, so wie das ganze Jahr verlaufen ist: beschissen. Da mein gesamter Freundeskreis im Urlaub oder bei Parties von Freundes-Freunden ist, verbringe ich den Abend zuhause mit der Familie. Familie heisst dabei Geschwister, Mutter + Verlobter + seine Tochter und meine Grosseltern. Einer meiner guten Vorsaetze ist es, wieder zu meiner kohlenhydratarmen Diaet (es lebe die Ketose!) zurueckzukehren*. Und da trifft es sich ja genau richtig, dass meine Grosseltern, obwohl sie wussten, dass meine Mutter den halben Tag lang schon in der Kueche steht, Essen (Arancini) mitgebracht haben. Arancini bestehen zu 70% aus Reis. Reis besteht zu 76% aus Staerke (= Polysaccharid = Glycan = Kohlenhydrat). Wie gesagt: Passt, wie auf’s Auge. Ansonsten gibt der Speiseplan heute folgendes her:

  • Kartoffelsalat (Fleischwurst, Kartoffeln, Gurken, Zwiebeln, Eier, Mayonaise, Gewuerze)
  • Frikadellen (Rinderhack, Gewuerze, KEINE Streckmittel, wie z.B. Broetchen)
  • Schnitzel (Schweinefleisch, Panade, Gewuerze)
  • Rouladen (Rindfleisch, Gurken, Senf, Bacon, Mett) mit Sauce
  • Bohnen und sonstiges Gemuese
  • Kleinigkeiten (z.B. Wuerstchen)

Bei dem Mini-Menue ist es ja klar, dass meine Grosseltern annehmen mussten, dass wir hier sonst verhungern, wenn sie nicht fuer zusaetzliches Essen sorgen. Naja.

Es ist jetzt rund 20:00 Uhr, somit verbleiben noch 4 Stunden bis zum neuen Jahr. Ich bin jetzt nur etwas verwirrt. Es gibt beim Tageswechsel eine Schaltsekunde. Uhren muessten also bis 60 hochzaehlen und dann zur 00 ueberspringen oder sie muessten eine Sekunde laenger auf der 00 verbleiben. Das problematische dabei ist folgendes: Im ersten Fall muesste der Countdown zum neuen Jahr eine Sekunde spaeter anfangen (um 23:59:00 bei 60 statt 59) und im zweiten Fall nicht. Vielleicht ist die 0-Zaehlproblematik nur fuer Informatiker auffaellig, da wir staendig bei 0 anfangen zu zaehlen, aber trotzdem konnte ich keine zufriedenstellende, sich nicht widersprechende Quelle finden, die mir belegt, wie jetzt gezaehlt werden muss.

So langsam wird es Zeit, dass ich mich der gesellschaftlichen Unterdrueckung (= “gemuetliches Beisammensein”) nicht mehr entziehen kann. Ich weiss, dass man – nach den vielen Unfaellen auf Grund von glatten Fahrbahnen und Wegen – keinen guten Rutsch ins neue Jahr mehr wuenscht. Dennoch nehme ich es mir heute mal raus, mich dem Knigge zu widersetzen und wuensche allen einen guten Rutsch und einen katerfreien Neujahrstag.

* Ich zweifelte gerade an meiner Orthographie und fand folgendes:

? 34 Partikeln, Adjektive, Substantive oder Verben k?nnen als Verbzusatz mit Verben trennbare Zusammensetzungen bilden. Man schreibt sie nur in den Infinitiven, den Partizipien sowie im Nebensatz bei Endstellung des Verbs zusammen.

Dies betrifft

1. ??? Zusammensetzungen mit einer Verbpartikel als erstem Bestandteil.

Verbpartikeln sind Bestandteile die
1.1 ??? formgleich mit Pr?positionen sind, zum Beispiel:
ab-, an-, auf-, aus-, bei-, durch-, ein- (zur Pr?position in-, entgegen-, entlang-, gegen-, gegen?ber-, hinter-, in-, mit-, nach-, ?ber-, um-,unter-, vor-, wider-, zu-, zuwider-, zwischen-

1.2 ??? formgleich mit Adverbien, insbesondere Adverbien der Richtung, des Ortes, der Zeit sowie mit Pronominaladverbien sind, zum Beispiel:
abw?rts-, auseinander-, beisammen-, davon-, davor-, dazu-, dazwischen-, empor-, fort-, her-, heraus-, herbei-, herein-, hin-, hinaus-, hindurch-, hinein-, hinten?ber-, hinterher-, hin?ber-, nebenher-, nieder-, r?ckw?rts-, umher-, voran-, voraus-, vorbei-, vorher-, vorweg-, weg-, weiter-, wieder-, zur?ck-, zusammen-, zuvor-

the_excerpt() vs. wp-syntax

Montag, den 29. Dezember 2008

Eine ganze Weile lang gehen mir mein Archiv bzw. meine Kategorienseiten auf die Nerven. Code wurde einfach nie richtig angezeigt. Dahinter steckt, dass auf den Seiten die Funktion the_excerpt() innerhalb des Templates verwendet wird und nicht wie auf der Hauptseite the_content(). Die Excerpt-Funktion soll eigentlich nur einen kurzen Abriss (halt ein Excerpt) des Beitrags zeigen und dann mit [...] o.ae. enden. Ich habe da jetzt auch the_content() hingeknallt. Jetzt wird der Artikel im Archiv auch jeweils ganz angezeigt, aber dafuer richtig.

Detaillierter (archive.php):

<div class="entry">
	<?php the_excerpt(); ?>
</div>

wurde ersetzt durch:

<div class="entry">
	<?php the_content('<p class="serif">Lies den Rest dieser Seite &raquo;</p>'); ?>
</div>

Gravatar-Support

Sonntag, den 28. Dezember 2008

So. Mein Blog hat jetzt Gravatar-Support bei den Kommentaren.

Fuer die, die sich jetzt Sachen fragen wie zum Beispiel “Gravatar? wtf?”: Gravatars sind Globally Recognized Avatars. Das Prinzip: Man meldet sich bei gravatar.com an und laed einen Avatar hoch, den man ueberall nutzen will. Nun hofft man, dass die Webseiten, in die man reinspamt Gravatar-Support haben, man gibt seine E-Mail Adresse fleissig an (genau die, die man bei gravatar.com angegeben hat) und nun sollte der eigene Avatar auch schon auftauchen. Also wie gesagt: Mein Blog unterstuetzt das jetzt, was man daran erkennt, dass neben meinen Kommentaren mein Avatar auftaucht.

Nachtrag:

Zuvor habe ich das Gravatar Plugin fuer WordPress verwendet. Jetzt benutze ich die Built-In-Funktion, da man die bequem im Administrationspanel bedienen kann. Ab WordPress 2.5 ist der Gravatar-Support nativ gegeben und kann mit der Templatefunktion get_avatar() verwendet werden.

Wunschliste an mich selber

Mittwoch, den 24. Dezember 2008

Also quasi:

Ausserdem moechte ich…

  • … einen Beamer
  • … eine Plexiglasscheibe (Milchglas) mit 8mm Staerke
  • … eine Webcam, die mindestens 640×480 kann und leicht auseinanderzunehmen ist (oder ohne IR-Filter)
  • … eine Stichsaege, um meinem Schreibtisch ein Fenster zu verpassen
  • … 32 IR-LEDs
  • … ein paar 2-adrige Kupferkabel
  • … neues Loetzinn (ich glaub, dass ich keins mehr habe…)

Morse-Langeweile

Mittwoch, den 24. Dezember 2008

Ich hatte gerade echt Langeweile…

#include "io430.h"
 
int morse_char(char c);
int morse_short();
int morse_long();
int break_unit();
int break_3unit();
int break_7unit();
int delay();
 
int main()
{
    WDTCTL = WDTPW + WDTHOLD;
    P1DIR |= 0x01;
 
    char *code = "ABC DEF GHI JKL MNO PQR STU VWX YZ";
 
    for (;;)
    {
        char *tmp = code;
 
        while (*code)
        {
            if (morse_char(*code))
            {
                break_3unit(); 
            }
 
            *code++;
        }
 
        break_7unit();
 
        code = tmp;
    }
}
 
int morse_char(char c)
{
    switch (c)
    {
        case 'A':
            morse_short();
            morse_long(); 
        break;
 
        case 'B':
            morse_char('N');
            morse_char('I');
        break;
 
        case 'C':
            morse_char('N');
            morse_char('N');
        break;
 
        case 'D':
            morse_long(); 
            morse_char('I');
        break;
 
        case 'E':
            morse_short();
        break;
 
        case 'F':
            morse_char('I');
            morse_char('N');
        break;
 
        case 'G':
            morse_char('M');
            morse_short();
        break;
 
        case 'H':
            morse_char('I');
            morse_char('I');
        break;
 
        case 'I':
            morse_short();
            morse_short();
        break;
 
        case 'J':
            morse_char('A');
            morse_char('M');
        break;
 
        case 'K':
            morse_char('N');
            morse_long(); 
        break;
 
        case 'L':
            morse_char('A');
            morse_char('I');
        break;
 
        case 'M':
            morse_long(); 
            morse_long(); 
        break;
 
        case 'N':
            morse_long(); 
            morse_short();
        break;
 
        case 'O':
            morse_char('M');
            morse_long(); 
        break;
 
        case 'P':
            morse_char('A');
            morse_char('N');
        break;
 
        case 'Q':
            morse_char('M');
            morse_char('A');
        break;
 
        case 'R':
            morse_char('A');
            morse_short();
        break;
 
        case 'S':
            morse_char('I');
            morse_short();
        break;
 
        case 'T':
            morse_long(); 
        break;
 
        case 'U':
            morse_char('I');
            morse_long(); 
        break;
 
        case 'V':
            morse_char('S');
            morse_long(); 
        break;
 
        case 'W':
            morse_char('A');
            morse_long(); 
        break;
 
        case 'X':
            morse_char('N');
            morse_char('A');
        break;
 
        case 'Y':
            morse_char('N');
            morse_char('M');
        break;
 
        case 'Z':
            morse_char('M');
            morse_char('I');
        break;
 
        default:
            break_7unit();
        return 0;
    }
 
    return 1;
}
 
int morse_short()
{
    P1OUT = 0x01;  // P1.0 ON
 
    volatile int i = 4096;
 
    do
    {
       i--;
       delay();
    } while (i != 0);
 
    break_unit();
 
    return 0;
}
 
int morse_long()
{
    P1OUT = 0x01;  // P1.0 ON
 
    volatile int i = 12288;
 
    do
    {
       i--;
       delay();
    } while (i != 0);
 
    break_unit();
 
    return 0;
}
 
int break_unit()
{
    P1OUT = 0x00;  // P1.0 OFF
 
    volatile int i = 4096;
 
    do
    {
       i--;
       delay();
    } while (i != 0);
 
    return 0;
}
 
int break_3unit()
{
    break_unit();
    break_unit();
    break_unit();
 
    return 0;
}
 
int break_7unit()
{
    break_3unit();
    break_3unit();
    break_unit();
 
    return 0;
}
 
int delay()
{
    volatile int i = 4;
 
    do i--;
    while (i != 0);
 
    return 0;
}

Mikrospass

Dienstag, den 23. Dezember 2008

Interessant:

Und nicht zu vergessen:

(Entweder JavaScript ist nicht aktiviert, oder Sie benutzen eine alte Version von Adobe Flash Player. Installieren Sie bitte den aktuellsten Flash Player. )

Neues Bett!

Montag, den 22. Dezember 2008

Ich habe ein neues Bett! Die Zeiten, in denen ich auf Matratzen geschlafen habe, sind endgueltig vorbei. Hoch lebe Hopen. Die Lattenrosthersteller sollten sich aber mal was neues einfallen lassen. Die beiden Lattenroste haben einzeln mehr Zeit gebraucht als das ganze Bettgestell.

Bett 1

Bett Ansicht 1

Bett 2

Bett Ansicht 2

Shit In, Shit Out

Sonntag, den 21. Dezember 2008

Als Informatiker kennt man ja First In, First Out und Last In, First Out. Aber dank ports kenne ich jetzt auch Shit In, Shit Out. Hier eine Veranschaulichung:

Shit In, Shit Out

VLC Player weihnachtet

Freitag, den 19. Dezember 2008

Find ich sehr lustig:

VLC Media Player

VLC Media Player

Lesenswert

Mittwoch, den 17. Dezember 2008

Der Professor, der bei uns die Vorlesung Digital System Design haelt, ist Blogger. Und was er schreibt, ist u.A. sehr interessant. Ein Blick lohnt sich auf jedem Fall.

Hier gehts zum Blog: http://albrecht-schmidt.blogspot.com

Memory Management – Odd vs. Even

Mittwoch, den 17. Dezember 2008

Wie ich schon hier beschrieben habe, basteln wir im Moment ein wenig mit Assembler und lustigen kleinen Chips rum. Dabei ist mir aufgefallen, dass der Code, den ich auch bereits gebloggt habe, zu Warnings fuehren kann, wenn man den code ungeschickt waehlt. Ungeschickt heisst hierbei eine ungerade Anzahl von Bytes (String + ‘\0′). Das liegt daran, dass ein 16-Bit Prozessor nunmal 16 Bit (=2 Bytes) verarbeitet. Schreibt man etwas wie

foobar      DB      "1234"

dann stehen genau diese 4 Bytes plus ‘\0′ hintereinander im Speicher und beim Zugriff auf den Speicher werden 16 Bit lange, zusammengehoerige Segmente erwartet. Ist relativ bloed.

Workaround:

foobar      DB      "1234\0"

Da auch Strings in Assembler Null-terminiert sind, macht es nichts aus, wenn wir eine weitere Null hinzufuegen, wir erhalten aber das benoetigte Padding um Warnings und eventuelle Fehler zu vermeiden.

Morse mit Assembler

Mittwoch, den 17. Dezember 2008

Im Rahmen der Lehrveranstaltung Digital System Design haben wir jetzt jeder ein MSP430 Ultra-Low-Power MCUs eZ430-F2013 Development Tool Set bekommen. Zu dem Set gehoert eine CD mit einer verkorksten Eclipse Umgebung (C/C++) und der IAR Embedded Workbench IDE. Unsere Aufgabe bis nach Weihnachten ist es unter Anderem den USB Stick so in Assembler zu programmieren, dass er “HELLO <VORNAME>” mit der LED morst. Das ganze hat etwa 45 Minuten inkl. IDE-Kennenlernen und Prozessor-spezifisches-ASM-Lernen gedauert. Nunja. Ich war etwas enttaeuscht, dass das so schnell ging… Also habe ich mir ein hoeheres Ziel gesetzt. Wir sollten die Morse-Kette lediglich hardcoden. Quasi “kurz, lang, lang, pause, kurz kurz lang lang, …”. Es waere natuerlich wesentlich cooler, wenn man nur einen String ? la “ABC DEF GHI JKL MNO PQR STU VWX YZ” angibt und der wurde dann automatisch gemorst werden.

Eine Stunde spaeter…

#include "msp430x20x1.h"
;-------------------------------------------------------------------------------
            ORG     0FC00h                      ; Progam Start (1K Flash device)
code        DB      "ABC DEF GHI JKL MNO PQR STU VWX YZ" ; String to send
;-------------------------------------------------------------------------------
RESET       mov.w   #0280h,SP                   ; Set stackpointer (128B RAM device)
StopWDT     mov.w   #WDTPW+WDTHOLD,&WDTCTL      ; Stop watchdog timer
SetupP1     bis.b   #001b,&P1DIR                ; Set P1.0 to output direction
            mov.b   &CALDCO_1MHZ,&DCOCTL        ; Load calibration data for
            mov.b   &CALBC1_1MHZ,&BCSCTL1       ; 1MHZ DCO
;-------------------------------------------------------------------------------
            mov.w   #code,R4                    ; Load the starting address to R4
 
Mainloop    mov.b   @R4+,R6                     ; Get next character
            cmp     #0,R6                       ; '\0' found?
            jeq     RESET                       ; If true: RESET
 
            cmp.b   #'A',R6                     ; A -> ? ?
            jeq     char_a
            cmp.b   #'B',R6                     ; B -> ? ? ? ?
            jeq     char_b
            cmp.b   #'C',R6                     ; C -> ? ? ? ?
            jeq     char_c
            cmp.b   #'D',R6                     ; D -> ? ? ?
            jeq     char_d
            cmp.b   #'E',R6                     ; E -> ?
            jeq     char_e
            cmp.b   #'F',R6                     ; F -> ? ? ? ?
            jeq     char_f
            cmp.b   #'G',R6                     ; G -> ? ? ?
            jeq     char_g
            cmp.b   #'H',R6                     ; H -> ? ? ? ?
            jeq     char_h
            cmp.b   #'I',R6                     ; I -> ? ?
            jeq     char_i
            cmp.b   #'J',R6                     ; J -> ? ? ? ?
            jeq     char_j
            cmp.b   #'K',R6                     ; K -> ? ? ?
            jeq     char_k
            cmp.b   #'L',R6                     ; L -> ? ? ? ?
            jeq     char_l
            cmp.b   #'M',R6                     ; M -> ? ?
            jeq     char_m
            cmp.b   #'N',R6                     ; N -> ? ?
            jeq     char_n
            cmp.b   #'O',R6                     ; O -> ? ? ?
            jeq     char_o
            cmp.b   #'P',R6                     ; P -> ? ? ? ?
            jeq     char_p
            cmp.b   #'Q',R6                     ; Q -> ? ? ? ?
            jeq     char_q
            cmp.b   #'R',R6                     ; R -> ? ? ?
            jeq     char_r
            cmp.b   #'S',R6                     ; S -> ? ? ?
            jeq     char_s
            cmp.b   #'T',R6                     ; T -> ?
            jeq     char_t
            cmp.b   #'U',R6                     ; U -> ? ? ?
            jeq     char_u
            cmp.b   #'V',R6                     ; V -> ? ? ? ?
            jeq     char_v
            cmp.b   #'W',R6                     ; W -> ? ? ?
            jeq     char_w
            cmp.b   #'X',R6                     ; X -> ? ? ? ?
            jeq     char_x
            cmp.b   #'Y',R6                     ; Y -> ? ? ? ?
            jeq     char_y
            cmp.b   #'Z',R6                     ; Z -> ? ? ? ?
            jeq     char_z
            cmp.b   #' ',R6                     ; space = new word
            call    #break_7unit
            jmp     Mainloop                    ; Go back
 
;-------------------------------------------------------------------------------
; LETTERS (not every letter of the morse alphabet is available
; due to the maximum segment length of 0xFFFF)
;-------------------------------------------------------------------------------
 
char_a      call    #morse_short                ; short
            call    #morse_long                 ; long
            call    #break_3unit                ; break between characters
            jmp     Mainloop
 
char_b      call    #morse_long                 ; long
            call    #morse_short                ; short
            call    #morse_short                ; short
            call    #morse_short                ; short
            call    #break_3unit                ; break between characters
            jmp     Mainloop
 
char_c      call    #morse_long                 ; long
            call    #morse_short                ; short
            call    #morse_long                 ; long
            call    #morse_short                ; short
            call    #break_3unit                ; break between characters
            jmp     Mainloop
 
char_d      call    #morse_long                 ; long
            call    #morse_short                ; short
            call    #morse_short                ; short
            call    #break_3unit                ; break between characters
            jmp     Mainloop
 
char_e      call    #morse_short                ; short
            call    #break_3unit                ; break between characters
            jmp     Mainloop
 
char_f      call    #morse_short                ; short
            call    #morse_short                ; short
            call    #morse_long                 ; long
            call    #morse_short                ; short
            call    #break_3unit                ; break between characters
            jmp     Mainloop
 
char_g      call    #morse_long                 ; long
            call    #morse_long                 ; long
            call    #morse_short                ; short
            call    #break_3unit                ; break between characters
            jmp     Mainloop
 
 
char_h      call    #morse_short                ; short
            call    #morse_short                ; short
            call    #morse_short                ; short
            call    #morse_short                ; short
            call    #break_3unit                ; break between characters
            jmp     Mainloop
 
char_i      call    #morse_short                ; short
            call    #morse_short                ; short
            call    #break_3unit                ; break between characters
            jmp     Mainloop
 
 
char_j      call    #morse_short                ; short
            call    #morse_long                 ; long
            call    #morse_long                 ; long
            call    #morse_long
            call    #break_3unit                ; break between characters
            jmp     Mainloop
 
char_k      call    #morse_long                 ; long
            call    #morse_short                ; short
            call    #morse_long                 ; long
            call    #break_3unit                ; break between characters
            jmp     Mainloop
 
char_l      call    #morse_short                ; short
            call    #morse_long                 ; long
            call    #morse_short                ; short
            call    #morse_short                ; short
            call    #break_3unit                ; break between characters
            jmp     Mainloop
 
char_m      call    #morse_long                 ; long
            call    #morse_long                 ; long
            call    #break_3unit                ; break between characters
            jmp     Mainloop
 
char_n      call    #morse_long                 ; long
            call    #morse_short                ; short
            call    #break_3unit                ; break between characters
            jmp     Mainloop
 
char_o      call    #morse_long                 ; long
            call    #morse_long                 ; long
            call    #morse_long                 ; long
            call    #break_3unit                ; break between characters
            jmp     Mainloop
 
char_p      call    #morse_short                ; short
            call    #morse_long                 ; long
            call    #morse_long                 ; long
            call    #morse_short                ; short
            call    #break_3unit                ; break between characters
            jmp     Mainloop
 
char_q      call    #morse_long                 ; long
            call    #morse_long                 ; long
            call    #morse_short                ; short
            call    #morse_long                 ; long
            call    #break_3unit                ; break between characters
            jmp     Mainloop
 
char_r      call    #morse_short                ; short
            call    #morse_long                 ; long
            call    #morse_short                ; short
            call    #break_3unit                ; break between characters
            jmp     Mainloop
 
char_s      call    #morse_short                ; short
            call    #morse_short                ; short
            call    #morse_short                ; short
            call    #break_3unit                ; break between characters
            jmp     Mainloop
 
char_t      call    #morse_long                 ; long
            call    #break_3unit                ; break between characters
            jmp     Mainloop
 
char_u      call    #morse_short                ; short
            call    #morse_short                ; short
            call    #morse_long                 ; long
            call    #break_3unit                ; break between characters
            jmp     Mainloop
 
char_v      call    #morse_short                ; short
            call    #morse_short                ; short
            call    #morse_short                ; short
            call    #morse_long                 ; long
            call    #break_3unit                ; break between characters
            jmp     Mainloop
 
char_w      call    #morse_short                ; short
            call    #morse_long                 ; long
            call    #morse_long                 ; long
            call    #break_3unit                ; break between characters
            jmp     Mainloop
 
char_x      call    #morse_long                 ; long
            call    #morse_short                ; short
            call    #morse_short                ; short
            call    #morse_long                 ; long
            call    #break_3unit                ; break between characters
            jmp     Mainloop
 
char_y      call    #morse_long                 ; long
            call    #morse_short                ; short
            call    #morse_long                 ; long
            call    #morse_long                 ; long
            call    #break_3unit                ; break between characters
            jmp     Mainloop
 
char_z      call    #morse_long                 ; long
            call    #morse_long                 ; long
            call    #morse_short                ; short
            call    #morse_short                ; short
            call    #break_3unit                ; break between characters
            jmp     Mainloop
 
;-------------------------------------------------------------------------------
 
; subroutine to send a short pulse (1 units = 10000) followed by a break
morse_short mov.b   #001b,&P1OUT                ; P1.0 ON
            mov.w   #010000,R15                 ; Delay to R15
LS          dec.w   R15                         ; Decrement R15
            call    #delay                      ; call a delay subroutine
            jnz     LS                          ; Delay over?
            call    #break_unit
            ret
 
; subroutine to send a long pulse (3 units = 30000) followed by a break
morse_long  mov.b   #001b,&P1OUT                ; P1.0 ON
            mov.w   #030000,R15                 ; Delay to R15
            dec.w   R15                         ; Decrement R15
            call    #delay                      ; call a delay subroutine
            jnz     LS                          ; Delay over?
            call    #break_unit
            ret
 
; subroutine to for 1 unit break (between pulses)
break_unit  mov.b   #000b,&P1OUT                ; P1.0 OFF
            mov.w   #010000,R15                 ; Delay to R15
LB1         dec.w   R15                         ; Decrement R15
            call    #delay                      ; call a delay subroutine
            jnz     LB1                         ; Delay over?
            ret
 
; subroutine to for 3 unit break (between characters)
break_3unit call    #break_unit                 ; P1.0 OFF
            call    #break_unit                 ; P1.0 OFF
            call    #break_unit                 ; P1.0 OFF
            ret
 
; subroutine to for 7 unit break (between words)
break_7unit call    #break_3unit                ; P1.0 OFF
            call    #break_3unit                ; P1.0 OFF
            call    #break_unit                 ; P1.0 OFF
            ret
 
; subroutine delay, implements a short delay
delay       nop                                 ; do nothing
            nop                                 ; do nothing
            nop                                 ; do nothing
            nop                                 ; do nothing
            ret                                 ; return
 
;-------------------------------------------------------------------------------
; Interrupt Vectors
;-------------------------------------------------------------------------------
            ORG     0FFFEh                      ; MSP430 RESET Vector
            DW      RESET
            END

20:23 Uhr

Montag, den 15. Dezember 2008

Es ist 20:23 Uhr. Seit mehr als 10 Stunden befinde ich mich in der Universitaet. Nicht, weil ich Vorlesungen habe, sondern weil ich hier einfach nicht wegkomme. Erschiess mich mal bitte Jemand. Ich bin viel zu oft und zu lange hier.

SVN – Read-only?

Donnerstag, den 4. Dezember 2008

Ich habe gerade ein wenig an der Config des Fachschaftsservers gebastelt. Dabei sollte die Gruppe fse-finanzer Zugriff auf das Finanzen-SVN-Repository bekommen und alle Fachschaftsraete sollen read-only-Zugriff bekommen. I ended up with this:

<Location /fse-finanzen>
 DAV svn
 SVNPath /var/svn/fse-finanzen
 AuthType Basic
 AuthName "Workspace der FSE Finanzverwaltung"
 AuthUserFile /var/svn/htpasswd
 AuthGroupFile /var/svn/htgroups
 <LimitExcept GET OPTIONS REPORT PROPFIND>
   require group fse-finanzer
 </LimitExcept>
 <Limit GET OPTIONS REPORT PROPFIND>
   require group fse fse-finanzer
 </Limit>
</Location>

Schaeuble again

Dienstag, den 2. Dezember 2008
perl -le 'print+(split//,"schaeuble")[6,8,7,3,5,0..2,4]'

Try it…