Command syntax of µCsim

µCsim uses a very simple command interpreter. Command can be entered after µCsim displays the prompt and interpreted when ENTER key is pressed. Commands must start with the name of the command following parameters. Name of the command can be abbreviated if abbreviation is unique. Some commands have more than one names.

Syntacticaly parameters can be a string, bit name, array, number or symbol. Interpretation of these syntactical elements depends on actual command.

Command names

Name of the command must be the first word of the command line. It is not necessary to enter whole name if abbreviation is unique. Help command can be used to check out if a command has more names:
> help run
run [start [stop]] Go
Names of command: go r run
...
Some commands just groups other commands. These commands have a set of so-called sub-commands. Sub-command must be second word in the command line. For example:
> help set
set subcommand     Set, see `set' command for more help
Names of command: set
long help of set
> set
"set" must be followed by the name of a subcommand
List of subcommands:
set option name|nr value
                   Set value of an option
set error on|off|unset
                   Set value of an error
set memory memory_type address data...
                   Place list of data into memory
set bit addr 0|1   Set specified bit to 0 or 1
set hardware cathegory params...
                   Set parameters of specified hardware element

Type of parameters

String

To distinguish strings and symbols, strings can be sorrounded by (double) quotes. Quotes can be omitted if command parameter is interpreted as string and actual parameter start with a letter (so it doesn't look to be a number) and doesn't contain space. Let's look an example:
0> set opt 7 s51>
0s51>set opt 7 ".s51> "
0.s51> 

Bit

If parameter contains a dot (.) it is treated as bit specification. Part before the dot gives memory address and part after the dot means bit number in the specified data.
0> dump p1.1
      P1.1 0x90 ff 1
0> dump 0x80.1
      P4.1 0x80 ff 1
0> 

Array

Parameters contain [ character are treated as arrays. Arrays can be used to specify hardware elements. Array index selects an object if more than one exists:
0> info hw port[0]
port[0]
P0    11111111 0xff 255 . (Value in SFR register)
Pin0  11111111 0xff 255 . (Output of outside circuits)
Port0 11111111 0xff 255 . (Value on the port pins)
0> 

Number

Some commands accept parameters which in most cases can be numbers. Numbers can be entered in C-style form. If the number begins whith 0x or 0X it is interpreted as a hexadecimal number. If it begins with 0 followed by digits it is interpreted as octal number. In other cases it is interpreted as decimal number.

Symbol

If a command parameter can not be classified in other ways (doesn't start with a digit or a quote, doesn't contain dot or [) then it will be treated as a symbol. Symbols can be interpreted in seceral ways.

Interpretation of parameters

Address

Many commands requires memory addresses as parameters. Addresses can be specified using number or symbol type of parameters. Value of symbols depends on processor type. For example MCS52 family of controllers defines more symbols than MCS51 family.

Number, data

When a command expects a number it should get a number. Note, that symbols is not converted to number they can be used as address only!

String

Strings can be entered without quotes if they are recognized as srtings (see above) and do not contain spaces.

Data list

Data list can be any space separated list of numbers and strings. If you include a string in the list, it is broken to list of bytes where every byte is ASCII code of a string's character.
> where xram "ab" 0x43
0xf961 61 62 63                abc
> 

Memory

Where memory type is expected, name of the memory should be used. Most commands accept memory chip and address space too. See memory simulation for more information.

Hardware element

Hardwer elements can be specified by using arrays, where array name is name of the element and the array index selects one if more than one exists.

Bit

Bits can be specified by several ways. One way is using bit type of command parameter:
0> dump 0.2
    0x00.2 0x00 00 0
0> dump 0xc3.2
    0xc3.2 0xc3 00 0
0> dump p2.3
      P2.3 0xa0 ff 1
0>
In this way, any IRAM or SFR location can be addressed as the above example shows.

Other way is using bit address either by value or by symbolic name:

0> dump ea
     IE0.7 0xa8 00 0
0> dump 34
    0x24.2 0x24 24 1
0> dump 0xc7
   SCON1.7 0xc0 00 0
0> 
Of course, only addressable bits can be accessed in this way.