         value = @getStatus()
         @vblankFlag = 0     # Cleared by reading status
         @writeToogle = 0    # Cleared by reading status
-        @suppressVBlank = true            if @cycleFlags & F_VB_START  # Reading just before VBlank disables NMI generation and VBlank flag setting
-        @cpu.clearInterrupt Interrupt.NMI if @cycleFlags & F_VB_START2 # Reading at the start of VBlank disables only NMI generation
+        @suppressVBlank = true if @cycleFlags & F_VB_START  # Reading just before VBlank disables VBlank flag setting
+        @supressNMI = true     if @cycleFlags & F_VB_START2 # Reading just before VBlank and 2 cycles after VBlank disables NMI generation
         value
 
     getStatus: ->

        nmiEnabledOld = @nmiEnabled
        @setControl value
        @tempAddress = (@tempAddress & 0xF3FF) | (value & 0x03) << 10 # T[11,10] = C[1,0]
        @delayedNMI = true if @vblankFlag and not nmiEnabledOld and @nmiEnabled # Generate NMI after next instruction when its enabled (from 0 to 1) during VBlank
        value

    setControl: (value) ->

cycleFlagsTable[1]      |= F_VB_START
scanlineFlagsTable[241] |= F_VB_START

cycleFlagsTable[i]      |= F_VB_START2 for i in [1..3]
scanlineFlagsTable[241] |= F_VB_START2

cycleFlagsTable[1]      |= F_VB_END
