Micro Virtual - R (µVR) is a live programmable runtime for 8052 (INTEL-MCS51) class micro-controllers. It is specifically designed with quirks and constraints of the base 8052 architecture in mind.
It provides the user with a robust I/O stack via the internal UART Hardware, It provides utilities like Runtime Hardware Reset and Terminal Reset. Micro Virtual - R primarily uses Decimal Numbers(Base10) for Input/Output and also supports ASCII Binary for pin representation and Ports.
It provides safe and controlled direct hardware access and accurate timing without writing a single line of C.
Micro Virtual - R is targeted towards students and beginners who are new to micro-controller programming as it eliminates the need of constant flashing , compilation and acts as a high level script engine for a 40 year old architecture.
Micro Virtual - R functions fully within the internal 256 BYTES of Random Access Memory (RAM) of the base AT89S52 Variant. It uses hard-mapped global state variables and bit-addressable memory for tracking Machine and System State.
OVERVIEW - MEMORY ALLOCATION MAP 256 BYTES (DATA & IDATA)
RANGE 00H - 1FH : Register Banks
RANGE 20H - 2FH : Bit Addressable Memory
RANGE 30H - 3FH : Mapped System State Variables
RANGE 40H - 5FH : Input Buffer
RANGE 60H - 74H : Virtual Data Stack
RANGE 75H - 79H : Output Buffer
RANGE 7AH - 7DH : Temporary Data16 Variables
RANGE 7EH - 7FH : Script Execution Core Reserved
RANGE 80H - 87H : Virtual Call Stack
RANGE 88H - D6H : Programmable Memory
RANGE D7H - FFH : Hardware Stack
OVERVIEW OF EACH RANGE
REGISTER BANKS : Used in Interrupts to reduce extensive hardware stack usage and improve interpretation and execution speed.
BIT ADDRESSABLE MEMORY : 16 Bytes of Memory dedicated for bit addressable boolean flags. Used for tracking system state and machine states
.
SYSTEM STATE VARIABLES : The runtime core which consists of the Virtual Accumulators , System Tick Counters , Operands , Parser Active Variables and other system reserved components.
INPUT BUFFER : A 32 Byte Input Buffer which stores a line of Micro Symbolic Script. It is where the system-wide producer writes raw user inputs before parsing and compilation.
VIRTUAL DATA STACK : A 20 Byte Indexed Matrix which supports definition of exactly 10 user defined variables, each variable is 8-bit meaning it can store values from 0 - 255.
SCRIPT RESERVED : Memory used by the core engine to do arithmetic and logical operations. Also contains a secondary 16-bit virtual accumulator namely xWORD.
VIRTUAL CALL STACK : 8-bytes arranged as 4 x 2 slots for storing a jump address needed by a .goto statement.
PROGRAMMABLE MEMORY : 80 Bytes of continuous memory for storing compiled Micro Symbolic Script, can be accessed via the prog and run commands.
HARDWARE STACK : The stack memory used my the underlying runtime for its internal variables and return addresses.
Micro Virtual - R uses UART Serial as its primary mode of communication. It utilizes Hardware Timer 1 of AT89S52 to generate a Stable Baud Rate of 9600 , it achieves a near 99% fault tolerance due to the main crystal oscillator being 11.0592 MHz. Check Generic Hardware Requirements in case you are building a custom development board.
Micro Virtual - R provides controlled access to hardware ports without prior knowledge of AT89S52 SFR (Special Function Register) Map. By using the .hwport commands you can easily automate your hardware tasks and check whether the hardware is functional prior to committing firmware.
Micro Virtual - R as a live programmable runtime is Free of Cost & Open Source for anyone to use and modify However, if you are an enterprise, individual, group of individuals , company, group of companies looking for a live programmable runtime with custom commands built in the DSL (Domain Specific Language) like start_motor , stop_motor , etc. Check Out - Enterprise Solutions