+ ret ;c=pea
+
+flagcaptured:
+ psh hl
+ ld de,30
+ cal IncScore
+ pop hl
+sillylabel:
+ cal WormDead
+DrawAllPeas:
+ ld hl,(peaspos)
+ cal DrawPea
+ ld hl,(peaspos+2)
+ jp DrawPea
+
+multiple_peas:
+ ld hl,(peaspos) ;1st pea
+ psh hl
+ ld a,(ix+reserv)
+ ld e,a ;push a
+ and %01
+ jr nz,sel_ownpea
+ ld hl,(peaspos+2) ;2nd pea
+sel_ownpea:
+ cal chkpeahit
+ pop hl ;(peapos) 1st pea
+ jp c,stopworm ;own pea hit
+
+ ld a,e ;peek a (that x86 asm for pop\push ;)
+ and %01
+ jr z,sel_otherpea
+ ld hl,(peaspos+2) ;2nd pea
+sel_otherpea:
+ cal chkpeahit
+ jp c,hitflag
+
+;no peas hit
+ ld a,e
+ cal flagtoken
+ jp z,WormDead
+ ld b,a ;%10
+ srl b ;%01
+ add a,b ;%11
+ ld (ix+reserv),a
+ cal DrawPea ;restore own flag
+ jr sillylabel ;inv both\die
+
+hitflag: ;correct pea hit
+ ld a,e ;pop a
+ xor %01 ;0=1;1=0
+ ld (ix+reserv),a
+ cal flagtoken
+ psh af ;safe z-flag
+ cal DrawPea ;remove
+ pop af
+ jr z,flagcaptured
+ jr stopworm
+
+flagtoken:
+ and %01 ;current
+ add a,a ;<< for cp
+ ld b,a ;in b
+ ld a,e
+ and %10 ;own
+ cp b ;same?
+ ret ;Z=yes: no flag taken