Collapse OS Documentation Browser


asm/ code/ hw/ arch.txt avr.txt blk.txt blksrv.txt bootstrap.txt cross.txt design.txt dict.txt dis.txt drivers.txt ed.txt emul.txt faq.txt grid.txt hal.txt impl.txt intro.txt me.txt primer.txt ps2.txt rxtx.txt sdcard.txt sega.txt selfhost.txt spi.txt usage.txt

Memory Editor

The Memory Editor at B115, which can be loaded with "ME" and
then invoked with "ME" is a Grid application (doc/grid) allowing
you to explore and modify binary contents in the memory.

Such applications are often called "hex editors" in the modern

The application uses the whole screen and has 3 main sections:
the status bar, the hex display and the ASCII display.

The status bar has 3 fields:

A: Base address begin displayed. The top left cell of the
   display is the value at that address.
C: Cursor position. This is the address relative to the Base
   address and represents where the cursor presently is.
S: Stack. This displays PS exactly like the ".S" word does.
   Because some actions affect the stack, it's useful to see it
   in real time.

The 2 other sections display the contents of the memory
following the Base Address, with the left part being mirrored by
the right part.

While running, ME repeatedly waits for single keystrokes and
performs the associated action, if any. Unlike VE (doc/ed), it
has no concept of accumulator that affects all commands.

The Base address is always divisible by 16.

Press q to quit.

Tight mode

The regular mode of ME requires 60 columns and shows 16 bytes
per line. When the screen doesn't have enough columns, it falls
back to a 8 bytes per line mode, requiring 32 columns.


You can increase/decrease the Base Address in a page-by page
fashion with [ and ].

You can do it in a line-by-line fashion with J and K.

The Cursor determines where most actions will take place and the
cursor can be moved with h/l (left/right) and j/k (down/up),
like in VE. There is no accumulator though, single mode only.

You can jump to a specific address with G. When pressing G, you
will be prompted for a hexadecimal address. You can type 4
characters or less-than-4-plus-return.

When you do that, the base address is changed to what you've
specified. If it's not divisible by 16, the Cursor is moved to
make up the difference.

When jumping to a new address, ME checks whether that address is
in the currently visible page. If it is, only the cursor moves,
not the base address.

Playing with the stack

You can read the 16-bit cell number at Cursor and place it in
the stack with @. You can write from Stack to Cursor with !.

You can put the current cursor position on the Stack with m.

You can jump to the address currently on the top of the Stack
with g.

You can "follow" the Cursor, that is, jump to the address where
the cursor currently points with f.

You can "enter" the Cursor, that is, save the current Cursor
position to stack and then "follow". When you want to come back,
press g.

Modifying memory

When you press R, you are in "replace" mode. As long as you
enter valid hexadecimal pairs, they will be written to the
Cursor and the Cursor will advance. As soon as you enter an
invalid value or Enter, the replace mode stops.

You can also press A to toggle the ASCII mode. In this mode,
the Cursor will keep its position, but will go on the right
side of the screen.

When you go in "replace" mode while also in ASCII mode, you can
enter ASCII values directly. Enter to stop.

Collapse OS and its documentation are created by Virgil Dupras and licensed under the GNU GPL v3.

This documentation browser by James Stanley. Please report bugs on github or to

This page generated at 2022-01-16 21:05:03 from documentation in CollapseOS snapshot 20220115.