; M2Amiga Object-File Disassembler V 2.0  © Bernd Preusing 1988;
; Disassembly of Prim4.obj;
;
        CODE;
        DC.L 1  ; Kennung: .obj-File;
        DC.W 1  ; mod;
        DC.B 'Prim4';
        DS.B 27,0;
        DC.W $1007,$056F,$00B1;
;
; CodeSize;
        DC.L    ENDE-Prog;
; VarSize;
        DC.L    2010;
; ConstSize;
        DC.L    Jumps-Consts;
; Jumps;
        DC.L    1;
; Modules;
        DC.L    4;
;
Consts:;
;
Jumps:;
        DC.W    $4EF9,0,Proc000-204;
;
ModuleIds:;
        DC.W 1  ; mod;
        DC.B 'Arts';
        DS.B 28,0;
        DC.W $0DDE,$013E,$068D;
ArtsBs_ EQUR Prog-16;
;
        DC.W 0  ; none;
        DS.B 32,0;
        DC.W $0000,$0000,$0000;
;
        DC.W 0  ; none;
        DS.B 32,0;
        DC.W $0000,$0000,$0000;
;
        DC.W 0  ; none;
        DS.B 32,0;
        DC.W $0000,$0000,$0000;
;
;
dataPtr EQUR Prog-20;
;
Prog:;
Proc000:;
        MOVE.L  A4,-(A7);
        MOVEA.L dataPtr(PC),A4;
        MOVE.L  A5,-(A7);
        MOVEA.L A7,A5;
        BSET    #0,-2(A4);
        BNE     L000010;
        MOVEA.L ArtsBs_(PC),A6;
        JSR     -6(A6);
        MOVE.W  #$0002,-2008(A4);                      pims[0] := 2;
        MOVE.W  #$0001,-8(A4);                          p := 1;
        MOVE.W  #$0003,-4(A4);                          FOR i:=3 TO 1000 DO
L000001:;
        CMPI.W  #$03E8,-4(A4);
        BGT     L000010;
        MOVE.B  #$FF,-2009(A4);                           prim := TRUE;
        CLR.W   -6(A4);                                   k := 0;
L000002:;
        TST.B   -2009(A4);                                WHILE prim AND
        BEQ     L000008;
        MOVE.W  -6(A4),D6;      d6=k
        CHK     #$03E7,D6;
        ASL.W   #1,D6;          d6=2*k
        LEA     -2008(A4),A3;   a3=ADR(prims)
        MOVE.W  -4(A4),D4;      d4=i;
        MOVE.W  D4,D2;          d2=i;
        MOVE.W  0(A3,D6.W),D7;  d7=prims[k];
        EOR.W   D7,D2;          d2=i EOR prims[k]; ??
        BPL.S   L000004;        >0, dann runter
        SUB.W   D7,D4;          d4 = i - (i EOR prims[k])
        TRAPV;
        BPL.S   L000003;        IF d4<=0 THEN
        ADDQ.W  #1,D4;            INC(d4)
        TRAPV;
        BRA.S   L000004;
L000003:;                       ELSE
        SUBQ.W  #1,D4;            DEC(d4)
        TRAPV;                  END;
L000004:;
        EXT.L   D4;             LONGINT(d4)
        DIVS    0(A3,D6.W),D4;  d4=d4 DIV prims[k]
        MOVE.W  -6(A4),D6;      d6=k;
        CHK     #$03E7,D6;
        ASL.W   #1,D6;          d6=2*k
        LEA     -2008(A4),A3;
        CMP.W   0(A3,D6.W),D4;  d4<prims[k] ?
        BLT     L000008;        dann runter

        MOVE.W  -6(A4),D6;      d6=k                       IF i MOD prims[k] = 0 THEN
        CHK     #$03E7,D6;
        ASL.W   #1,D6;          d6=2*k
        LEA     -2008(A4),A3;   adr(prims)
        MOVE.W  -4(A4),D4;      d4 = i
        EXT.L   D4;             LONG(d4)
        DIVS    0(A3,D6.W),D4;  d4 = i DIV prims[k]
        SWAP    D4;             d4 = i MOD prims[k]
        MOVE.W  D4,D6     <<=== D6 kann ungerade sein !!!;
        BEQ.S   L000005;
        MOVE.W  0(A3,D6.W),D2  <<=== Adressfehler  !!!;
        EOR.W   D2,D6;
        BPL.S   L000005;
        ADD.W   D2,D4;
        TRAPV;
L000005:;
        TST.W   D4;
        BNE     L000006;
        CLR.B   -2009(A4);
        BRA     L000007;
L000006:;
        ADDQ.W  #1,-6(A4);
        TRAPV;
L000007:;
        BRA     L000002;
L000008:;
        TST.B   -2009(A4);
        BEQ     L000009;
        MOVE.W  -8(A4),D6;
        CHK     #$03E7,D6;
        ASL.W   #1,D6;
        LEA     -2008(A4),A3;
        MOVE.W  -4(A4),0(A3,D6.W);
        ADDQ.W  #1,-8(A4);
        TRAPV;
L000009:;
        ADDQ.W  #1,-4(A4);
        BVC     L000001;
L000010:;
        UNLK    A5;
        MOVEA.L (A7)+,A4;
        RTS;
ENDE:;
        END;
