syncwort = $4489             ;Hier das gewÜnschte Sync-Wort eintragen
run:
 lea    takttabelle,a0       ;Zeiger auf Tabelle fÜr ungerade Verschiebung
 lea    datatabelle,a1       ;Zeiger auf Tabelle fÜr gerade Verschiebung
 lea    synccode1,a2         ;Erster Puffer
 lea    synccode2,a3         ;Zweiter Puffer
 move.w #$aaaa,(a2)          ;Nullbytes eintragen
 move.w #$aaaa,(a3)          ;Nullbytes eintragen
 move.w #syncwort,2(a2)
 move.w #syncwort,4(a2)
 move.w #syncwort,6(a2)
 move.w #syncwort,2(a3)
 move.l 4(a2),4(a3)          ;Sync-Wort eintragen
 moveq  #7,d0                ;Acht mögliche Verschiebungen
 moveq  #1,d1                ;Erste ungerade Verschiebung um ein Bit
loop:
 move.l (a2),d7              ;Wert aus Puffer
 lsr.l  d1,d7                ;Wert verschieben
 move.l d7,(a2)              ;Wert zurÜckschreiben
 move.l 4(a2),d7
 lsr.l  d1,d7
 move.l d7,4(a2)
 cmp.b  #2,d1                ;ab dem zweiten Durchlauf konstante Verschiebung
 beq    marke
 addq.b #1,d1                ;sonst Verschiebung auf zwei
marke:
 move.l (a3),d7
 lsr.l  d1,d7
 move.l d7,(a3)
 move.l 4(a3),d7
 lsr.l  d1,d7
 move.l d7,4(a3)
 move.w 2(a2),(a0)+          ;Verschobenen Wert in Takttabelle eintragen
 move.w 6(a2),(a0)+
 move.w 2(a3),(a1)+          ;Verschobenen Wert in Datatabelle eintragen
 move.w 6(a3),(a1)+
 dbf    d0,loop              ;das Ganze acht mal
 move.w #syncwort,-4(a1)     ;vorletztes Wort korrigieren
 rts                         ;Fertig

synccode1: dc.w 0,0,0,0
synccode2: dc.w 0,0,0,0
takttabelle: dc.l 0,0,0,0,0,0,0,0
datatabelle: dc.l 0,0,0,0,0,0,0,0
