HEX
1FFE CONSTANT SIZE
SIZE BUFFER: FLAGS

: SIEVE ( -- n )
   FLAGS SIZE -1 FILL
   0 SIZE 0 DO
      FLAGS I + C@ IF
         I 2* 3 + DUP I +  BEGIN
            DUP SIZE < WHILE
               DUP FLAGS + 0 SWAP C! OVER +
         REPEAT  2DROP  1+
   THEN  LOOP ;

041A 0BD4     SIEVE       SP=SP-3
041B 00261023             S2=#4131
041D 00161FFE             S1=#8190
041F 0103                 S0=-1
0420 81FE                 Call 03FC:FILL
0421 0BD4                 SP=SP-3
0422 0023                 S2=0
0423 00161FFE             S1=#8190
0425 0003                 S0=0
0426 3801                 Push S1 to return stack
0427 3800                 Push S0 to return stack
0428 0824                 SP=SP+2
0429 340F                 G7=R0
042A 00E61023             G6=#4131
042C 4AEF                 G6=W=G6+G7, latch CF
042D 660E                 x=Data(G6)
042E 648E                 G0=x, x=Data(G6)
042F 4408                 W=G0
0430 0700                 Skip when W<>0
0431 1019                 Branch: P=044B
0432 340E                 G6=R0
0433 58DE                 G5=W=G6*2, latch CF
0434 0BF4                 SP=SP-1
0435 00060003             S0=#3
0437 4A0D                 S0=W=S0+G5, latch CF
0438 340F                 G7=R0
0439 0BF4                 SP=SP-1
043A 421F                 W=S1+G7, latch CF
043B 0005                 S0=W
043C 00861FFE             G0=#8190
043E 4108                 W=S0+(-G0), latch CF
043F 0C00                 Skip when W<0 xor V=1 (<)
0440 1008                 Branch: P=0449
0441 00F61023             G7=#4131
0443 4AF0                 G7=W=G7+S0, latch CF
0444 00960000             G1=#0
0446 6E9F                 Data(G7)=G1
0447 4A01                 S0=W=S0+S1, latch CF
0448 1FF3                 Branch: P=043C
0449 5122                 S2=W=S2+1
044A 0824                 SP=SP+2
044B 8073                 Call 00E6:(%loop)
044C 4989                 G0=W=G0+(-G1), latch CF
044D 0600                 Skip when W=0
044E 1FDA                 Branch: P=0429
044F 082C                 RP=RP+2
0450 0409                 Return
