I thought I'd try and see if I could create a memory viewer that writes into the hi-res graphics page #1.

It's kind of cool, you can see that Stellar 7's menus will "fight" over drawing into the hi-res page.

There's also a really neat effect where if you scroll into hi-res page #1 memory range that the bytes will shimmer and disappear.

Code
function float(f) return string.format("%6.2f",f) end
function hex(a) return string.format("0x%02x",a) end
function calc(line,page) page=page or 0 return line % 8 * 1024 + math.floor(line / 64) * 40 + math.floor((line%64) / 8) * 128 + 8192* (page + 1) end

function iif(a,b,c) if a then return b else return c end end 
function bool10(a) return iif(a,1,0) end

function bin(x,numbits,gap) if x==nil then return nil end gap=gap or "_" numbits=numbits or 8 str="" for i=numbits-1,0,-1 do str=str..iif((x&(2^i))~=0,"1","0")..iif((i%8==0) and (i>0),gap,"") end return str end

function myframedispatcher() if myframedispatchlist ~= nil then for i,j in pairs(myframedispatchlist) do j() end end end

function between(a,b,c) return (a >= b) and (a <= c) end

function memtovideo(start,stride)
cpu = manager:machine().devices[":maincpu"];mem = cpu.spaces["program"]
screenwidth=40
mempos=start
for i=0,screenwidth+stride,stride do
for j=0,191 do
for k=0,stride-1 do
      xpos=i+k
      ypos=j
      if between(xpos,0,screenwidth-1) and between(ypos,0,191) then
            memaddress=calc(ypos)+xpos
       if between(mempos,0,0xc000) then valuetowrite=mem:read_u8(mempos)
        else valuetowrite = iif(mempos%1==0,0xaa,0x55)
       end
-- iif evaluates all operands so this won't work since it does the mem:read_u8
-- valuetowrite=iif(between(mempos,0,0xc000),mem:read_u8(mempos),iif(mempos%1==0,0xaa,0x55))
            mem:write_u8(memaddress,valuetowrite)
      end
      mempos=mempos+1
end
end
end
end

function iskeypressed(keycode) 
inp = manager:machine():input() return inp:code_pressed(inp:code_from_token(keycode))
end

mempos0=0
memorystep=192
blockwidth=1

framecounter=0
keydelay=0

function memviewer()
if keydelay > 0 then keydelay=keydelay-1 end
framecounter=framecounter+1
if framecounter % 5 == 0 then 
   framecounter=0
   memtovideo(mempos0,blockwidth)   
if     iskeypressed("KEYCODE_1") then 
          mempos0=mempos0 - (iif(iskeypressed("KEYCODE_LSHIFT"),8*blockwidth,iif(iskeypressed("KEYCODE_LCONTROL"),1,memorystep*blockwidth)))
          mempos0=math.max(0,mempos0)
elseif iskeypressed("KEYCODE_2") then 
          mempos0=mempos0 + (iif(iskeypressed("KEYCODE_LSHIFT"),8*blockwidth,iif(iskeypressed("KEYCODE_LCONTROL"),1,memorystep*blockwidth)))
          mempos0=math.min(0xc0000,mempos0)
elseif iskeypressed("KEYCODE_BACKSPACE") then myframedispatchlist={} 
elseif iskeypressed("KEYCODE_3") and keydelay==0 then blockwidth=blockwidth-1 blockwidth=math.max(blockwidth,1)   keydelay=20
elseif iskeypressed("KEYCODE_4") and keydelay==0 then blockwidth=blockwidth+1 blockwidth=math.min(blockwidth,128) keydelay=20
end
end
manager:machine().screens[":screen"]:draw_text(350,0,"Address="..hex(mempos0).."  Blockwidth="..blockwidth.."\n\nPress 1,2 = move by column\nshift+1,2 = move by 8 * blocksize\nctrl+1,2 = move by 1\n3,4 = increase/decrease blockwidth\nBackspace = quit",0xffffffff,0xffff0000)
end

myframedispatchlist={} table.insert(myframedispatchlist,memviewer)

if alreadyregisteredmyframedispatcher==nil then
  emu.register_frame_done(myframedispatcher)
  alreadyregisteredmyframedispatcher=true
end

function clrd() myframedispatchlist={} end

Here you can see the start of the font:
[Linked Image from i.imgur.com]
And here's the raven graphic:
[Linked Image from i.imgur.com]