XXIIVV

•/PC

M/PC is a concatenative operating system for Varvara, inspired by Openfirmware, designed to manage files on system without a file browser. It uses the postfix notation, meaning that the function success their operands:

( Get the number of bytes in folder/file_name )
folder/ file_name cat len dec

The interface uses a single prompt at the top of the screen to input commands:

Controls

The operating system can be used largely without a keyboard to navigate folders and launch roms:

Wallpaper

On boot, M/PC will try and draw an ICN file named wallpaperWWxHH.icn, where WW is the width of the screen divided by 8 in hexadecimal, and HH the height.

Reference

It comes loaded with a few primitives to manage files and file names.

dir ( -- [f] )
	Put the file names in the current location on the stack.
mov ( path -- [f] )
	Move the current location to current/path, then do dir.

now ( -- date time )
	Puts the date Tue, 23 Jun 2026, and time 11:48:45 on the stack.

run ( f.rom -- ok )
	Load and run the rom file, return with F4.
icn ( f.icn -- ok )
	Draw the icn file on the background.
len ( f -- hex )
	Put the length of a file in hexadecimal.
put ( body f -- ok )
	Create a file with the content of body.
get ( f -- body )
	Put the content of a file on the stack.
cpy ( fsrc fdst -- ok )
	Copy the content of fsrc into fdst.
era ( f -- ok )
	Erase file.
ren ( fsrc fdst -- ok )
	Rename file fsrc into fdst.

pop ( a -- )
	Pop item at the top of the stack.
dup ( a -- a a )
	Duplication item at the top of the stack.
ovr ( a b -- a b a )
	Copy second item to the top of the stack.
swp ( a b -- b a )
	Swap first two items.

dec ( hex -- dec )
	Convert hexadecimal number to decimal.
hex ( dec -- hex )
	Convert decimal number to hexadecimal.
cat ( a b -- ab )
	Create a new item made of the joined names of the top two items.

cmp ( a b -- bool )
	Compare the names of the top two items.
and ( a b -- bool )
	Put true if both items are true.
ora ( a b -- bool )
	Put true if either item is true.

out ( a -- )
	Output item to Console/write.
bye ( -- )
	Quit.

incoming: 2026