interrupt 0, [change]
wait
[change]
if io(laststat,0) = 1 then print "Pin put high" else print "Pin put low"
wait
And yes, it would appear that one or other of the two alpha patches has subsequently fixed the V3 problem that was causing the interrupt example to abort with an error on my non-nodeMCU hardware - in fact I can even run your unmodified d3 code on my non-nodeMCU now without aborting on error!
interrupt d3, [change]
wait
[change]
if io(laststat,d3) = 1 then print "Pin put high" else print "Pin put low"
wait
But no, it certainly is still not working correctly or as expected on my non-nodeMCU hardware. Which must now be something for someone else to pursue, because the fact that you say it is working correctly for you puts me right back into similar Deja Vu isolation as with my non-working imagebuttons of 3 weeks ago.