Why is this line commented in the code?
// data &= (((cassette_input(state->cassette) < +0.0) << 7) | 0x7f);
This prevents the emulator from "hearing" the .wav files. Is the line commented because it generates some error?
It was commented out because it messed with the keyboard.
Yes, it happens in the actual machine as well, since the tape signal is "in the same wire" as the CTRL key. Just imagine trying to type something while the CTRL key is flickering madly.
It is implemented in current svn, but tapes still don't load. The screen changes colors a couple of times during loading, but after the tape ends, there is no program.
Aha, I downloaded the current version and confirm what you say. It's funny that I have converted some real (machine code) game tapes .WAV into .BIN and back into .WAV and they are loading fine in M.E.S.S. But the .BAS->.BIN->.WAV files don't finish loading... it's as if, say, a last byte is missing or something like that. But theses files DID load fine in my real MC-1000 when I tested them! Something to review...
I have an ALTERNATE SOLUTION, though: The recording function is working fine, so you can type and SAVE a program in M.E.S.S., and LOAD it later. I tested it, and it worked.
BUG NOTE (in the actual machine, not in your implementation
): When you load a program saved without the optional filename, it runs automatically after loading. But for some reason the PRINT commands don't get displayed on screen! Only after the program ends (or is stopped with CTRL+C) and you run it again it works properly. MC-1000 is such a weird machine... :p )
You can save a program with a filename up to 5 characters long, but then you'll have to remember the filename to load it back.