;: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