                   // ORG   $0000
  case 0x0000:
                                                     mon("BGT4     BGT   $05                     ; 0000: 2E 03         \n");
    if (((SINT8)(N^V) >= 0) && Z) {
    PC = 0x0005; 
    JUMP;
    }
    PC = 0x0002; JUMP; // sstep
case 0x0002:
                                                     mon("         LDA   #$01                    ; 0002: 86 01         \n");
    val = (UINT8)0x01; 
    A = val; 
    N = val; 
    Z = val; 
    V = 0; 
    PC = 0x0004; JUMP; // sstep
case 0x0004:
                                                     mon("         RTS                           ; 0004: 39            \n");
    PC = rd_mem(S++)<<8; 
    PC = PC | rd_mem(S++); 
    JUMP;
    
  case 0x0005:
                                                     mon("L0005    LDA   #$02                    ; 0005: 86 02         \n");
    val = (UINT8)0x02; 
    A = val; 
    N = val; 
    Z = val; 
    V = 0; 
    PC = 0x0007; JUMP; // sstep
case 0x0007:
                                                     mon("         RTS                           ; 0007: 39            \n");
    PC = rd_mem(S++)<<8; 
    PC = PC | rd_mem(S++); 
    JUMP;
    
  case 0x0400:
                                                     mon("ENTRYPT  PSHS  U,Y,X,DP,B,A,CC         ; 0400: 34 7F         \n");
    wr_mem(--S, U); 
    wr_mem(--S, U >> 8); 
    wr_mem(--S, Y); 
    wr_mem(--S, Y >> 8); 
    wr_mem(--S, X); 
    wr_mem(--S, X >> 8); 
    wr_mem(--S, (DP >> 8)); 
    wr_mem(--S, B); 
    wr_mem(--S, A); 
    simplify_flags();
    CC = (((((((((((((E<<1) | F)<<1) | H)<<1) |I)<<1) | N)<<1) | Z)<<1) | V)<<1) | C; // Placeholder for now
    restore_flags();
    wr_mem(--S, CC); 
    PC = 0x0402; JUMP; // sstep
case 0x0402:
                                                     mon("         STS   $046E                   ; 0402: 10 FF 04 6E   \n");
    val = S; 
/**/Z = val; 
/**/N = (UINT8)(val >> 8); 
/**/V = 0; 
    wr_mem(0x046e, (UINT8)(val >> 8)); // Care needed with I/O space and word fetches
    wr_mem(0x046f, (UINT8)val); 
    PC = 0x0406; JUMP; // sstep
case 0x0406:
                                                     mon("         LDS   #$0464                  ; 0406: 10 CE 04 64   \n");
    S = 0x0464; 
/**/Z = S; 
/**/N = (S) >> 8; 
/**/V = 0; 
    PC = 0x040A; JUMP; // sstep
case 0x040A:
                                                     mon("         PULS  CC,A,B,DP,X,Y,U         ; 040A: 35 7F         \n");
    CC = rd_mem(S++); 
    C = CC; V = C>>1; Z = V>>1; N = Z>>1; I = N>>1; H = I>>1; F = H>>1; E = (F>>1)&1; F &= 1; H &= 1; I &= 1; N &= 1; Z &= 1; V &= 1; C &= 1; 
    restore_flags();
    A = rd_mem(S++); 
    B = rd_mem(S++); 
    DP = rd_mem(S++); 
    DP = DP << 8; checkDP(); 
    // memory_DP = &memory[DP];
    X = rd_mem(S++)<<8; 
    X = X | rd_mem(S++); 
    Y = rd_mem(S++)<<8; 
    Y = Y | rd_mem(S++); 
    U = rd_mem(S++)<<8; 
    U = U | rd_mem(S++); 
    PC = 0x040C; JUMP; // sstep
case 0x040C:
                                                     mon("         JSR   BGT4                    ; 040C: BD 00 00      \n");
    wr_mem(--S, 0x0f); 
    wr_mem(--S, 0x04); 
    PC = 0x0000; 
    JUMP;
  case 0x040F:
                                                     mon("L040F    PSHS  U,Y,X,DP,B,A,CC         ; 040F: 34 7F         \n");
    wr_mem(--S, U); 
    wr_mem(--S, U >> 8); 
    wr_mem(--S, Y); 
    wr_mem(--S, Y >> 8); 
    wr_mem(--S, X); 
    wr_mem(--S, X >> 8); 
    wr_mem(--S, (DP >> 8)); 
    wr_mem(--S, B); 
    wr_mem(--S, A); 
    simplify_flags();
    CC = (((((((((((((E<<1) | F)<<1) | H)<<1) |I)<<1) | N)<<1) | Z)<<1) | V)<<1) | C; // Placeholder for now
    restore_flags();
    wr_mem(--S, CC); 
    PC = 0x0411; JUMP; // sstep
case 0x0411:
                                                     mon("         LDS   $046E                   ; 0411: 10 FE 04 6E   \n");
    ea = rd_mem(0x046e)<<8; 
    ea = ea | rd_mem(0x046f); 
    S = ea; 
/**/Z = S; 
/**/N = (S) >> 8; 
/**/V = 0; 
    PC = 0x0415; JUMP; // sstep
case 0x0415:
                                                     mon("         PULS  CC,A,B,DP,X,Y,U         ; 0415: 35 7F         \n");
    CC = rd_mem(S++); 
    C = CC; V = C>>1; Z = V>>1; N = Z>>1; I = N>>1; H = I>>1; F = H>>1; E = (F>>1)&1; F &= 1; H &= 1; I &= 1; N &= 1; Z &= 1; V &= 1; C &= 1; 
    restore_flags();
    A = rd_mem(S++); 
    B = rd_mem(S++); 
    DP = rd_mem(S++); 
    DP = DP << 8; checkDP(); 
    // memory_DP = &memory[DP];
    X = rd_mem(S++)<<8; 
    X = X | rd_mem(S++); 
    Y = rd_mem(S++)<<8; 
    Y = Y | rd_mem(S++); 
    U = rd_mem(S++)<<8; 
    U = U | rd_mem(S++); 
    PC = 0x0417; JUMP; // sstep
case 0x0417:
                                                     mon("         RTS                           ; 0417: 39            \n");
    PC = rd_mem(S++)<<8; 
    PC = PC | rd_mem(S++); 
    JUMP;
    
