In trying to blanket copy a block of the Spectrum's ROM using PEEK$
it turns out that in using PEEK$
the ROM isn't actually available to be copied.
This was the code:
; system font position @ 15616 / 0x3D00
%b=%15616
; using string peek because it can read variable length
f$= PEEK$ (%b,768)
; poke the contents into a new location
POKE 64000,f$
; this should have printed the '!' character
PRINT PEEK 64008
This doesn't work because when you use PEEK$ a different ROM is paged in and the memory map changes. So you’ll never be able to do it like this. Indeed this is true for all new NextBASIC routines.