        .globl  search
        .globl  sub,compare,mul,div2,getargs,binoct
        .globl  higha,clear,loop2,mulend
;
; Subroutine SEARCH:
; Sucht eine symbolische Adresse in der Tabelle SYMTAB. Gibt als Ergebnis
; die zugehoerige Adresse in R0 zurueck.
; Parameter: Zeiger auf den String (auf dem Stack)
;
search: mov     #symtab,r0
lp1:    mov     (r0)+,next
        beq     tabend          ; Ende der Tabelle erreicht
        mov     2(sp),r1
lp2:    tstb    (r0)
        beq     found
        cmpb    (r0)+,(r1)+
        beq     lp2
        mov     next,r0
        br      lp1
tabend: mov     #0,r0
        rts     pc
found:  mov     r1,2(sp)        ; Zeiger entsprechend weitersetzen
        mov     next,r0
        mov     -2(r0),r0
        rts     pc
;
; Datenbereich:
;
next:   .blkw   1               ; Zeiger auf den naechsten Eintrag in SYMTAB
;
; Symboltablle:
;
symtab: .word   a2
        .ascii  'sub'
        .byte   0
        .even
        .word   sub
a2:     .word   a3
        .ascii  'compare'
        .byte   0
        .even
        .word   compare
a3:     .word   a4
        .ascii  'mul'
        .byte   0
        .even
        .word   mul
a4:     .word   a5
        .ascii  'div2'
        .byte   0
        .even
        .word   div2
a5:     .word   a6
        .ascii  'getargs'
        .byte   0
        .even
        .word   getargs
a6:     .word   a7
        .ascii  'binoct'
        .byte   0
        .even
        .word   binoct
a7:     .word   a8
        .ascii  'higha'
        .byte   0
        .even
        .word   higha
a8:     .word   a9
        .ascii  'clear'
        .byte   0
        .even
        .word   clear
a9:     .word   a10
        .ascii  'loop2'
        .byte   0
        .even
        .word   loop2
a10:    .word   a11
        .ascii  'mulend'
        .byte   0
        .even
        .word   mulend
a11:    .word   0
        .end

