Hier mal der "vorraussichtliche" Code:

Code:
$regfile = "m8def.dat"
$crystal = 1000000

Ddrb = &B00000000                                           'Port B komplett als Eingang
Ddrc = &B00001111                                           'Am Port C PC0 bis PC3 Ausgang, Rest Eingang
Ddrd = &B11111111                                           'Port D komplett als Ausgang

Portb = &B00011110                                          'Pullup für PB1 bis PB4 aktivieren (Taster)
Portc = &B00001111                                          'Beim starten auf 0 setzen
Portd = &B00000000                                          'Beim starten auf 0 setzen

Dim Nutzdaten As String * 30
Dim Textstring As String * 30
Dim Bytewerte(30) As Byte At Textstring Overlay
Dim X As Byte
Dim Y As Byte

Led_gruen Alias Portc.0
Led_rot Alias Portc.1
Taster1 Alias Pinb.1
Taster2 Alias Pinb.2
Taster3 Alias Pinb.3
Taster4 Alias Pinb.4

Strobe Alias Portc.3
Init_signal Alias Portc.2
Busy Alias Pinb.5
Ack_signal Alias Pinb.6

'Portd ist DATA0 - DATA7 der Centronics Schnittstelle

Led_gruen = 0                                               'LED Grün an
Led_rot = 0                                                 'LED Rot an

Wait 1                                                      'Test, ob beide LEDs funktionieren

Led_rot = 1                                                 'LED Rot aus


Do
If Taster1 = 0 Then                                         'Taster 1 gedrückt
    Textstring = "!R! STAT1; EXIT; {012}"
    Gosub Senddata                                          'Rote LED aus
    Waitms 50                                               ' wegen dem Tastenprellen
End If
If Taster2 = 0 Then                                         'Taster 2 gedrückt
    Textstring = "!R! FRPO I1, 1; EXIT;"
    Gosub Senddata
    Waitms 50                                               ' wegen dem Tastenprellen
End If
If Taster3 = 0 Then                                         'Taster 3 gedrückt
    Textstring = "!R! ELOG; EXIT;"
    Gosub Senddata
    Waitms 50                                               ' wegen dem Tastenprellen
End If
If Taster4 = 0 Then                                         'Taster 4 gedrückt
    Waitms 50                                               ' wegen dem Tastenprellen
End If
Loop


Senddata:
    Led_gruen = 1                                           'Grüne LED aus

    Do
    Loop Until Busy = 1

    Led_rot = 0
    Init_signal = 0                                         'Init-Signal auf Low zum initialisieren
    Waitms 50                                               '50 millisekunden warten
    Init_signal = 1
    Waitms 50

    Y = Len(textstring)
    For X = 1 To Y Step 1
        Portd = Bytewerte(x)
        Waitms 10
        Strobe = 1
        Waitms 10
        Strobe = 0

        do
        'Wartet, bis der Drucker ein ACK gesendet hat, um sicher zu gehen, dass kein Zeichen verloren geht
        loop until Ack_signal = 1

    Next X

    Led_gruen = 0                                           'Grüne LED an
    Led_rot = 1
Return

End
Was meint die Mehrzahl dazu? Irgendwelche Verbesserungsvorschläge? Neu ist eigentlich bloß, dass mit "Do - Loop until ACK = 1" vorgesorgt wird, dass keine Bytes verloren gehen.