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.