     ;--------------------------------------------------
     ;- >Memorysave< Written 1988 by Oliver Siebenhaar -
     ;--------------------------------------------------

     anfang = $50000 ; Adresse der Daten
     ziel = $60000 ; Zieladresse
     length = 100 ; Anzahl der Langworte

     lea anfang,a0
     lea ziel,a1
     moveq #length,d5
     subq #1,d5

     doit:  ; Hauptprogramm
     bsr.s transform
     dbra d5,doit
     rts ; Ende

     transform:  ; in SEKA Format umwandeln
     tst.b tcounter ; Anfang?
     bne.s test
     move.l #"dc.l",(a1)+ ; ja, dann 'dc.l ' schreiben
     move.w #" $",(a1)+
     bsr.s change ; umwandeln
     addq.b #1,tcounter
     rts
     test:
     cmp.b #6,tcounter ; schon 6 Langworte?
     bne.s normal
     move.b #" ",(a1)+ ; ja, dann SPACE+RETURN
     move.b #$0a,(a1)+ ; Code fuer 'RETURN'
     clr.b tcounter
     bra.s transform ; neuer Start
     rts
     normal:
     move.w #",$",(a1)+
     bsr.s change
     addq.b #1,tcounter
     rts

     ;-------------------------------------------
     ; Unterroutine hex -> ascii
     ; a0:  Adresse der zu wandelnden Hexbytes
     ; a1:  Zieladresse
     ; d1:  Anzahl der zu wandelnden Hexbytes
     ; in diesem Fall immer 4 (= 1 Longword)
     ;-------------------------------------------

     change:
     moveq #4,d1 ; Anzahl der umzuwandelnden
     subq #1,d1 ; Bytes -> 4 = 1 Longword
     wandel:
     move.b (a0),d0 ; Byte in D0 schieben
     and.b #$f0,d0 ;unteres Halbbyte ausmaskieren
     lsr.b #4,d0 ; an untere Stelle bringen
     cmp.b #9,d0 ; kleiner oder gleich 9?
     ble.s L1 ; ja, dann zu L1
     add.b #$37,d0 ; nein, dann $37 addieren
     move.b d0,(a1)+ ; in ziel schieben
     bra.s zweit
     L1:
     add.b #$30,d0 ; $30 addieren
     move.b d0,(a1)+ ; in ziel schieben
     zweit:
     move.b (a0)+,d0 ; Byte in D0
     and.b #$0f,d0 ; oberes Halbbyte ausmaskieren
     cmp.b #9,d0 ; kleiner oder gleich 9?
     ble.s L2 ; ja, dann zu L2
     add.b #$37,d0 ; nein, dann $37 addieren
     move.b d0,(a1)+ ; in ziel schieben
     bra.s end
     L2:
     add.b #$30,d0 ; $30 addieren
     move.b d0,(a1)+ ; in ziel schieben
     end:
     dbra d1,wandel ; schon alle Bytes gewandelt?
     rts
     					; Zaehler fuer Langworte
     tcounter:  dc.b 0 ; pro Zeile 