SECTION 12. PROGRAM CONTROL INSTRUCTIONS

TABLE 12-1. Flag Description

Flag 0

Output Flag

Flag 1 to 8

User Flags

Flag 9

Intermediate Processing

 

Disable Flag

TABLE 12-2. Command Codes

0Go to end of program table3 1-9, 79-98 Call Subroutine 1-9, 79-991

10-19

Set Flag 0-9 high

20-29

Set Flag 0-9 low

30Then Do

31Exit loop if true

32Exit loop if false

41-48

Set Port 1-8 high2

51-58

Set Port 1-8 low2

61-68

Toggle Port 1-82

71-78

Pulse Port 1-82

197 and 98 are special subroutines which can be called by Control ports 7 and 8 going high; see Instruction 85 for details.

2The ports can be indexed to the loop counter (Section 8.4).

3If this command is executed while in a subroutine, execution jumps directly to the end of the table that called the subroutine.

*** 83 IF CASE X < F ***

FUNCTION

If the value in the location specified in the Begin Case Instruction 93 is less than the fixed value entered as parameter 1 then execute the command in parameter 2 then go to the end of the case statement when the next Instruction 83 occurs. Else, continue to next instruction. See Instruction 93 for an example.

PARAM.

DATA

 

NUMBER

TYPE

DESCRIPTION

01:

FP

Fixed value

02:

2

Command

*** 85 LABEL SUBROUTINE ***

FUNCTION

This instruction marks the start of a subroutine. Subroutines are a series of instructions

beginning with Instruction 85 and terminated with Instruction 95, END. All subroutines must be placed in Table 3 (Subroutine Table). When a subroutine is called by a command in a Program Control Instruction, the subroutine is executed, then program flow continues with the instruction following that which called the subroutine.

Subroutines may be called from within other subroutines (nested). The maximum nesting level for subroutines is 7 deep. Attempts to nest more than 7 deep will not be detected at compilation, but will result in a run time error. When the seventh subroutine attempts to call the eighth, error 31 will be displayed. Execution will not branch to the eighth subroutine; it will continue with the Instruction following that calling the subroutine.

98, 97 PORT INTERRUPT SUBROUTINES. If subroutine 98 (97) is included in Table 3 then Port 8 (7) will cause an interrupt on the rising edge and the subroutine will be executed. These subroutines can also be called from any table.

These subroutines can interrupt Table 1 or 2 or can occur when neither Table is being executed. When the port activating 97 or 98 goes high during the execution of a table, the instruction being executed is completed before the subroutine is run (i.e. it is as if the subroutine was called by the next instruction).

The priority is 98, 97, Table 1, Table 2. If both 97 and 98 are pending (Ports go high at the same time or both go high during the execution of the same instruction in one of the tables), 98 will be executed first. If 97 or 98 has not interrupted a table then neither table can interrupt it. 97 and 98 cannot interrupt each other. However, when 97 or 98 interrupts a table, it is as if the subroutine were in the table (e.g., if 98 interrupts Table 2, either Table 1 or 97 can interrupt it).

While 97 or 98 is being executed as a result of the respective port going high, that port interrupt is disabled (i.e., the subroutine must be completed before the port going high will have any effect).

12-1