Here we have basic blocks with no return to the dispatch loop between instructions... but now we add timing on each instruction.

(Ignore the fact that the actual timing data may be wrong, I haven't started on that yet)

// =============== S U B R O U T I N E =======================================
  case 0x670D:
L670D:
                                                     mon("L670D    LDX   #$496F                  ; 670D: 8E 49 6F      \n"); // "Bank 1"
    clockticks = clockticks + 3; 
    X = 0x496f; 
 // Z = X; 
 // N = (X) >> 8; 
 // V = 0; 
                                                     mon("         LDA   #$00                    ; 6710: 86 00         \n");
    clockticks = clockticks + 2; 
    val = (UINT8)0x00; 
    A = val; 
 // N = val; 
 // Z = val; 
 // V = 0; 
  case 0x6712:
L6712:
                                                     mon("L6712    STA   ,X+                     ; 6712: A7 80         \n");
    clockticks = clockticks + 6; 
    val = A; 
 // Z = val; 
 // N = val; 
 // V = 0; 
    ea = X; 
    wr_mem(ea, val); 
    X = X + 1; 
                                                     mon("         CMPX  #$4989                  ; 6714: 8C 49 89      \n");
    clockticks = clockticks + 4; 
    val = X; 
    arg = 0x4989; 
    res = val - arg; 
    C = res & 0x10000; 
    res = (UINT16)res; 
    Z = res; 
    N = res >> 8; 
    V = ((val ^ arg) & (val ^ res)) >> 8; 
                                                     mon("         BCS   $6712                   ; 6717: 25 F9         \n");
    // temp fix to ensure flags synched
    if (C) {
    goto L6712;
    }
    clockticks = clockticks + 3; 
                                                     mon("         LDA   #$60                    ; 6719: 86 60         \n");
    clockticks = clockticks + 2; 
    val = (UINT8)0x60; 
    A = val; 
 // N = val; 
 // Z = val; 
 // V = 0; 
                                                     mon("         LSRA                          ; 671B: 44            \n");
    val = (UINT8)A; 
    C = val & 1; 
    val = val >> 1; 
    A = val; 
 // N = 0; 
 // Z = val; 
    clockticks = clockticks + 2; 
                                                     mon("         STA   <$D2                    ; 671C: 97 D2         \n");
    clockticks = clockticks + 4; 
    val = A; 
 // Z = val; 
 // N = val; 
 // V = 0; 
    ea = DP|0xd2; 
    wr_mem(ea, val); 
                                                     mon("         LDD   #$5300                  ; 671E: CC 53 00      \n");
    clockticks = clockticks + 3; 
    A = 0x53; 
    B = 0x00; 
 // Z = A|B; 
 // N = A; 
 // V = 0; 
                                                     mon("         STD   <$D4                    ; 6721: DD D4         \n");
    clockticks = clockticks + 4; 
    Z = A | B; 
    N = A; 
    V = 0; 
    ea = DP|0xd4; 
    wr_mem(ea, A); // Care needed with I/O space and word fetches
    wr_mem(ea + 1, B); 
    // End of function sub_670D
                                                     mon("         RTS                           ; 6723: 39            \n");
    clockticks = clockticks + 5; 
    clockticks = clockticks + 1; 
    PC = rd_mem(S)<<8; 
    S = S + 1; 
    PC = PC | rd_mem(S); 
    S = S + 1; 
    JUMP;
