0000                 0000  .word   #%0000 ;RST
0002                 0000  .word   #%0000 ;RST FCW
0004                 0000  .word   #%0000 ;RST SEG
0006                 0000  .word   #%0000 ;RST PC
0008                 abf5  dec     r15,#6		!reserviere 6 byte speicher fuer die funktion!
000a             6ffe0004  ld      %0004(r15),r14	!sichere r14!
000e                 2ff7  ld      @r15,r7		!ablegen 1.ueberg.parameter auf der Adresse in r15 (stack)!
0010             4d080000  clr     %0000		!init ext. var "swap_flg" mit 0x0000!
0014             61f20000  ld      r2,%0000(r15)	!===>LABEL0 - lade 1.ueberg.parameter auf r2!
0018             6f020000  ld      %0000,r2		!lade r2 auf den anfang des vergl.structs "magics"!
001c                 bdea  ldk     r14,#10		!zaehler auf 10 (anzahl elemente vergl.struct "magics")!
001e                 abe0  dec     r14,#1		!===>LABEL1 - zaehler 1 minimieren!
0020                 a1e2  ld      r2,r14		!zaehler in register r2 laden!
0022                 81e2  add     r2,r14		!im vergl. struct "magics" stehen integers und die sind 2 byte gross - also doppelt so weit hinten im speicher!
0024             61f30000  ld      r3,%0000(r15)	!1.ueberg. parameter in r3 laden!
0028             4b230000  cp      r3,%0000(r2)		!vergleiche r3 mit vergl.struct - position "r2" (position "zaehler")!
002c                 eef8  jr      nz,%001e		!wenn ungleich GOTO LABEL1!
002e                 8de4  test    r14			!wenn zaehler gesetzt (!=0)!
0030                 ee0b  jr      nz,%0048		!GOTO LABEL3!
0032                 a137  ld      r7,r3		!besetzen 1.ueberg.parameter-von-swap() (r7) mit r3!
0034             5f000000  call    %0000		!call swap()!
0038             6ff20000  ld      %0000(r15),r2	!1.ueberg.parameter mit rueckgabewert von swap() neu setzen!
003c             61020000  ld      r2,%0000		!nach r2 swap_flg laden!
0040             69000000  inc     %0000,#1		!swap_flg inkrementieren um 1!
0044                 8d24  test    r2			!wenn swap_flg leer (1. durchlauf, gerade erst swap() aufgerufen)!
0046                 e6e6  jr      z,%0014		!GOTO LABEL0!
0048                 8de4  test    r14			!===>LABEL3 - pruefe zaehler!
004a                 ee02  jr      nz,%0050		!gesetzt (!=0), GOTO LABEL4!
004c             4d080000  clr     %0000		!ergo wenn 0 => leeren swap_flg (magic wurde nicht gefunden => swap_flg definiert auf 0 setzten auch wenn geswapt wurde)!
0050                 a1e2  ld      r2,r14		!zaehler in den return-value laden!
0052             61fe0004  ld      r14,%0004(r15)	!rueckladen r14!
0056                 a9f5  inc     r15,#6		!6 byte wieder freigeben!
0058                 9e08  ret     

!nm + objdu output
#130 nm goodmagic.o
    0000 T _goodmagic
    0000 D _magics
         U _swap
    0002 C _swap_flg
#131 objdu goodmagic.o
File goodmagic.o
Image size:     102
Bss size:       0
Entry point:    0x0
Segment 0
Text size:      82
Data size:      20
Bss size:       0
Text......

0000:     abf5  6ffe  0004  2ff7  4d08  0000  61f2  0000
0010:     6f02  0000  bdea  abe0  a1e2  81e2  61f3  0000
0020:     4b23  0000  eef8  8de4  ee0b  a137  5f00  0000
0030:     6ff2  0000  6102  0000  6900  0000  8d24  e6e6
0040:     8de4  ee02  4d08  0000  a1e2  61fe  0004  a9f5
0050:     9e08
Data......

0000:     0000  e707  e711  e705  e607  e611  e605  e507
0010:     e511  e505
#132 
!
