just few quick comments to the whole thread:
the first post mentions also #CSpect emulator and ZX Spectrum Next. In zoom's branch of sjasmplus you can export map file for CSpect emulator directly with `CSPECTMAP` ( http://z00m128.github.io/sjasmplus/d...l#po_cspectmap ) directive since v1.13.1
About `SAVESNA` in sjasmplus vs pure binaries: sjasmplus has both. It was extra work for sjasmplus contributors, but *you* can safely ignore `SAVESNA` in *your* projects and use only raw binary output.(there, problem solved)
About SNA vs original problem: you will meet more surprises with the SNA, it's really invasive format replacing all memory (of classic ZX48 and ZX128 models), giving the ROM fake artificial state. If this fake state is not what you need, then fix the state.
But technically that's not a fail of the assembler, or the SNA file, you had system variables in a state when the ROM keyboard routine was scanning key "P" not as small letter "p", but as BASIC keyword "PRINT", which is just another mode of the ROM keyboard routine... but it fails in your test. When you did load the TAP, the BASIC was still in the letter-input mode after writing `LOAD ""`, so the keyboard routine was reading "p", not PRINT.
Overall I'm always a bit puzzled by these tutorials, which prefer ROM calls for reading keyboard or printing text, as the HW on ZX is very simple, and it takes only few hours to learn how to read keyboard, and maybe couple of days to print your own character and string, directly into video RAM. And the ROM routines are good for BASIC, but not for games. Where's the fun in calling the ROM...![]()





(there, problem solved)
Ответить с цитированием
Размещение рекламы на форуме способствует его дальнейшему развитию 
