ZX81 memory map

Shown with G007 and my battery-backed 4K CMOS RAM pack present.

Range Size     Location
0000-1FFF 8K ROM ZX BASIC ROM ZX81
2000-27FF 2K RAM G007 RAM. IC4. If ZX81 fitted with 1K, this will appear twice. ZX81
2800-2FFF 2K ROM G007 ROM. Graphics firmware G007
3000-37FF 2K RAM First 6116 chip 4K RAM pack
3800-3FFF 2K RAM ZX Monitor code, in second 6116. 4K RAM pack
4000-7FFF 16K RAM ZX BASIC RAM. External RAM begins at 0x4000 16K RAM pack
8000-BFFF 16K void    
C000-FFFF 16K RAM alias of 4000-7FFF 16K RAM pack

When ever aliases appear, it is convention that the lowest numbered on is used.
The G007 addresses the ZX81's on-board RAM at 2000-23FF for instance.

The ZX80 and ZX81 present NOP codes to the Z80 when it tries to run machine code above 0x8000.
This is deliberately done so the Z80 can fetch the video data bytes.

Many ZX81 programs lower the RAMTOP boundary so that they can load machine code above RAMTOP and below 0x7FFF. The ZX81 machine-code monitor is one such program. I altered the absolute addresses from 0x7??? to 0x3??? and loaded it into my battery-backed RAM chip at 0x3800.