This is an old revision of the document!
Table of Contents
Documentation
This page covers the statements/operations implemented in 10LC as well as the syntax for their usage.
10LC Statements
Statements in 10LC are almost always terminated by a semicolon and whitespace is largely ignored. As far as 10LC is concerned, these lines:
Const JoystickUp = 0x01; Read From 100; Read From JoystickUp;
And this line:
Const JoystickUp=0x01; Read From 100; Read From JoystickUp;
Are all the same and will compile identically.
The only exception is a Label, which does not end with a semicolon and no space is allowed between the colon and the label name:
:ThisIsALabel : ThisIsInvalidCode;
One notable difference between 9LC and 10LC is that 10LC is generally more verbose and does not currently support the shortened names that 9LC supports. You will also find that some 9LC statements, like WRITE CTL
have their own long-form statement in 10LC: WriteCtrl
.
Additionally, delimiters in statements may not be omitted. For example, the 9LC WRITE statement is WRITE @ 1234 = AB
and could be shortened to WRITE 1234 = AB
. 10LC's statement syntax is more rigid. The WRITE statement in 10LC is WRITE @ 0x100 = 0x22;
and cannot be shortened, nor can any parts of it be omitted.
Setup Statements
First we start with the statements that are used for configuring the unit and the compile environment.
SetupPod
The SetupPod
statement configures both the 9010A and the compile environment, and sets the default values for some of the other Setup*
statements like SetupBusTestAddress
, SetupRunUUTAddress
and the names of Forcing Lines. This is equivalent to the POD
setup parameter in 9LC.
Unlike with 9LC, information on the standard Pods is stored within the compiler and no additional external files are needed. If you use the SetupPod statement, it must be the first statement in a source file.
The following Pods are supported directly by 10LC:
6502
6800
6802
6809
6809E
8041
8048
8080
8085
8086
8086M
8088
8088M
9900
68000
Z80
Z8000
The syntax of the statement is as follows: SetupPod <PodName>;
SetupPod Z80
If you need to create your own Pod configuration/environment, you can use the Setup*
statements directly.
SetupTraps
This statement enables or disables traps associated with UUT errors. This statement can be specified multiple times, and you can specify multiple traps within a single statement. This is equivalent to the TRAP
setup parameter in 9LC.
The following Trap names are available:
BadPowerSupply
IllegalAddress
ActiveInterrupt
ActiveForceLine
ControlError
AddressError
DataError
The syntax of the statement is as follows: SetupTraps <TrapName> [<TrapName>…] Yes|No;
SetupTraps DataError No; SetupTraps ActiveInterrupt DataError No; SetupTraps BadPowerSupply ActiveInterrupt ActiveForceLine Yes;
SetupEnableFL
This statement enables or disables Pod-specific forcing lines associated with a CPU. You can specify forcing lines but their bit value, or by their string identifiers. Like with the SetupTraps
statement, this statement can be specified multiple times, and you can specify multiple forcing lines within a single statement. This is equivalent to the ENABLE
statement in 9LC.
The following Forcing Line names are supported directly by 10LC (but may not apply to the currently configured Pod!)
brack
busreq
dbe
dma
halt
hold
intr
mr
ready
rqgt0
rqgt1
tsc
wait
The syntax of the statement is as follows: SetupEnableFL <FLName|FLNumber> [<FLName|FLNumber>…] Yes|No;
SetupEnableFL 1 Yes; SetupEnableFL 2 No; SetupEnableFL BrAck Ready Yes;
If you have a Pod configured, the Forcing Line name or number will be checked against the configured Pod, and if that Pod does not have a Forcing Line for a given name/number, an compile error will be thrown.
If you do not have a Pod configured, you can use just the Forcing Line number, and with no Pod configured, the number will not be checked. The names/numbers of forcing lines are shown on the front of the Pod. Note that the names may differ slightly, (e.g. br/ack
on the Pod is brack
in 10LC) so you will have to find the corresponding name in the list above.
SetupBeep
This statement sets whether the 9010A unit emits a beep on an error transition. This is equivalent to the BEEP
setup parameter in 9LC.
SetupBeep Yes;
SetupInteractiveErrors
This statement sets whether the 9010A pauses execution, displays an error message, and asks the user if they want to loop the last operation whenever an error is encountered. This is equivalent to the EXERCISE ERRORS
setup parameter in 9LC.
SetupInteractiveErrors Yes;
SetupBusTestAddress
This statement configures the default address used when a Bus Test is performed. This value defaults to 0x0000
but may be changed when a Pod is specified via the SetupPod
statement. This is equivalent to the BUS TEST
setup parameter in 9LC.
SetupBusTestAddress 0xFFF0;
SetupRunUUTAddress
This statement configures the default address used when the Run UUT operation is performed. This value defaults to 0x0000
but may be changed when a Pod is specified via the SetupPod
statement. This is equivalent to the RUN UUT
setup parameter in 9LC.
SetupRunUUTAddress 0xFFFE;
SetupXOn
This statement configures the serial XOn character used to pause transmission of serial data. This is equivalent to the STALL
setup parameter in 9LC and it defaults to <CONTROL+S> (0x13).
SetupXon 0x70;
SetupXOff
This statement configures the serial XOff character used to resume transmission of paused serial data. This is equivalent to the UNSTALL
setup parameter in 9LC and it defaults to <CONTROL+Q> (0x11).
SetupXOff 0x72;
SetupLineSize
This configures the serial line length used when transmitting serial data. This is an important setting when sending/receiving hex data from the 9010A unit as longer lines lessen the effectiveness of the per-line checksum.
The 10LC compiler also uses this setting to determine the length of hex lines when it generates its output hex file. It has a range of 10-255. If not specified, the default value is 79. This is equivalent to the LINESIZE
setup parameter in 9LC.
SetupLinesize 70;
SetupPodTimeout
This configures the amount of time the 9010A should wait for a connected Pod to respond to a requested operation. As of right now, there is no description for how long a single count is.serial line length used when transmitting serial data. This is an important setting when sending/receiving hex data from the 9010A unit as longer lines lessen the effectiveness of the per-line checksum.
It has a range of 6-60000. If not specified, the default value is 200. This is equivalent to the TIMEOUT
setup parameter in 9LC.
SetupPodtimeout 100;
SetupNewline
This configures both the character combination used to represent newlines on the serial interface as well as a configurable delay time between successive lines being transmitted. The value used with this statement is a 32-bit hexadecimal value.
The first two digits represent a delay count between transmitting successive lines. Each count is ~6ms per count on firmware version 2C or later, or ~2.4ms per count on versions earlier than 2C. The last six characters are the hexadecimal character combination that should be sent to indicate a newline. A zero value indicates no character is to be sent.If not specified, the default value is 0x00, 0x000D0A (0x00000D0A). This is equivalent to the NEWLINE
setup parameter in 9LC.
SetupNewline Delay 0x20 Chars 0x000D0A;
SetupMaskFLMayBeEnabled
SetupForcingLineNames
SetupMemMap
SetupMemMap RAM From 0x0000 To 0x0FFF; SetupMemMap ROM From 0x1000 To 0x18FF SIG 0xAA55; SetupMemMap ROM From 0x1900 To 0x1FFF SIG 0x12345; SetupMemMap IO From 0x2000 To 0x28FF MASK 1122334455; SetupMemMap IO From 0x2900 To 0x2FFF MASK 0;
Operational Statements
Now we cover the statements that are used for performing operations within unit and the UUT. Basically these are the 10LC equivalents to the keypresses you would use when manually operating the 9010A interactively.
Display
The Display
statement is the most basic operational statement on the 9010A. It is used to provide audio and visual feedback on the 9010A's display and is also used to receive user input.
The syntax of the statement is: Display "<string>";
The same special characters in 9LC work the same in 10LC.