;:sys36864
; genie-search  nh-010290-arr
; sys ....,su$,mode,s$(anf),s$(end),e%
;  mode   1 = suche nach falschen zeichen (prant statt print)
;         2 = gross/klein egal
;         4 = suche nach drehern
;         8 = fragezeichen-joker
;        16 = 1. zch muss stimmen
;        32 = spaces ignorieren
;        64 = prinnt statt print
;       128 = prit statt print
	;.opt oo
	*= $c000
komma	=$aefd
frmval	=$ad9e
frestr	=$b6a3
stradr	=$22
getx	=$b7f1
frmnum	=$ad8a
integer	=$b7f7
chrptr	=$7a
chrget	=115
syntax	=$af08
tmp	=2
tmp3	=4
akt	=$cf00
org	=$ce00
illquan	=$b248
aktdes	=$fb
strout	=$ab1e
intvar	=$47
d	=$d020
	jmp run
findvar	jmp $b08b
suchlen	brk
mode	brk
errc	brk
ende	.word 0
elemnr	.word 0
testfz	pha
	lda mode
	and #8
	bne ja
	pla
seeno	clc
	rts
ja	pla
	cmp #"?"
	bne seeno
	rts
transakt	lda mode
	and #2
	beq rett
	ldy #0
tausch2	lda akt,y
	beq rett
	cmp #193
	bcc next2
	cmp #219
	bcs next2
	and #127
	sta akt,y
next2	iny
	bne tausch2
rett	lda mode
	and #32
	beq ret2
	ldy #0
	ldx #0
rt2	lda akt,y
	cmp #" "
	beq noni
	sta akt,x
	inx
noni	cmp #0
	beq ret2a
	iny
	bne rt2
ret2a	dex
	stx aktdes
ret2	rts
syn	jmp syntax
illq	jmp illquan
run	jsr komma
	jsr frmval
	jsr frestr
	sta suchlen
	tax
	beq illq
	ldy #0
copyorg	lda (stradr),y
	sta org,y
	iny
	cpy suchlen
	bcc copyorg
	lda #0
	sta org,y
	jsr getx
	stx mode
	jsr komma
	lda chrptr
	pha
	lda chrptr+1
	pha
suchkl	jsr chrget
	beq syn
	cmp #"("
	bne suchkl
	jsr frmnum
	jsr integer
	sty elemnr
	sta elemnr+1
	pla
	sta chrptr+1
	pla
	sta chrptr
	jsr findvar
	sta tmp3
	sty tmp3+1
	jsr komma
	jsr findvar
	sta ende
	sty ende+1
	lda mode
	and #2
	beq weiterso
	ldy #0
tausch1	lda org,y
	beq weiterso
	cmp #193
	bcc next1
	cmp #219
	bcs next1
	and #127
	sta org,y
next1	iny
	bne tausch1
weiterso	lda mode
	and #32
	beq nixwa
	ldy #0
	ldx #0
ra2	lda org,y
	cmp #" "
	beq noni2
	sta org,x
	inx
noni2	cmp #0
	beq cont
	iny
	bne ra2
cont	dex
	stx suchlen
nixwa	=*
loop	ldy #2
gd1	lda (tmp3),y
	sta aktdes,y
	dey
	bpl gd1
	lda aktdes
	beq qzero
	ldy #0
copyakt	lda (aktdes+1),y
	sta akt,y
	iny
	cpy aktdes
	bcc copyakt
	lda #0
	sta akt,y
	jsr transakt
cmp1zu1	lda aktdes
	cmp suchlen
	bcc qzukurz
	bne zulang
	ldy #0
	sty errc
	dey
comp	iny
	lda org,y
	beq eval
	jsr testfz
	bcs comp
	cmp akt,y
	beq comp
	inc errc
	bne comp
eval	lda errc
	beq jpositiv
	lda mode
	and #1
	beq dreher
	lda errc
	cmp #1
	bne dreher
jpositiv	jmp positiv
qzukurz	jmp zukurz
dreher	lda mode
	and #4
	beq qzero
	lda errc
	cmp #2
	bne qzero
	ldy #-1
drt	iny
	lda org,y
	jsr testfz
	bcs drt
	cmp akt,y
	beq drt
	cmp akt+1,y
	bne qzero
	lda akt,y
	cmp org+1,y
	beq jpositiv
qzero	jmp zero
zulang	lda mode
	bpl zero
	ldx aktdes
	dex
	cpx suchlen
	bne zero
	ldx #0
	ldy #0
z2	lda org,y
	beq skil1
	jsr testfz
	bcs ok2
	cmp akt,x
	beq ok2
	lda akt,x
	beq zero
skip2	inx
	bne z2
ok2	iny
	bne skip2
zukurz	lda mode
	and #64
	beq zero
	ldx aktdes
	inx
	cpx suchlen
	bne zero
	ldx #0
	ldy #0
z1	lda org,y
	beq skil1
	jsr testfz
	bcs ok1
	cmp akt,x
	beq ok1
skip1	iny
	bne z1
skil1	cmp akt,x
	bne zero
	beq positiv
ok1	inx
	bne skip1
zero	lda tmp3
	clc
	adc #3
	sta tmp3
	bcc nocy
	inc tmp3+1
nocy	inc elemnr
	bne nocy2
	inc elemnr+1
nocy2	lda tmp3+1
	cmp ende+1
	bcc qloop
	lda tmp3
	cmp ende
	bcc qloop
	beq qloop
	lda #0
	sta elemnr
	sta elemnr+1
qpositiv	jsr komma
	jsr findvar
	ldy #0
	lda elemnr+1
	sta (intvar),y
	iny
	lda elemnr
	sta (intvar),y
	rts
qloop	jmp loop
positiv	lda mode
	and #16
	beq qpositiv
	lda akt
	cmp org
	beq qpositiv
	bne zero
