17.07.2013 Views

Manual CEPR 96 - Balogh technical center

Manual CEPR 96 - Balogh technical center

Manual CEPR 96 - Balogh technical center

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

SYNTAX<br />

Hexadecimal :<br />

Mnémonic :<br />

EXECUTION<br />

COMMENTS<br />

When this message is sent to the <strong>CEPR</strong><strong>96</strong> (MRUC20), it's doing the operations below :<br />

- if NL < FFH : delete the program line number NL<br />

- if NL = FFH : - Clear the program.<br />

- Turn off (to 0) all outputs.<br />

- Set to line 00H the origin of the main program.<br />

SYMBOLS DEFINITION LIMITS<br />

EXAMPLE<br />

Delete the line 10 from the card 0 (NC = 2N+1 =1)<br />

PAGE 1<br />

Instructions manual for <strong>CEPR</strong><strong>96</strong> / MRUC20 M97.10.01<br />

NL - Number of the line to delete 0 à FEH<br />

REQUEST<br />

hexadecimal : 01 00 10 05 04<br />

mnemonic : ;10,CL.<br />

RESPONSE<br />

hexadecimal : 01 00 10 05 04<br />

Delete Line or Program<br />

REQUEST RESPONSE<br />

NC 00 NL 05 04<br />

NC 00 NL 05 04<br />

;NL,CL. Delete the line NL from the program.<br />

CL. Clear the program<br />

SUPERVISION<br />

- Clear the programme FFH<br />

Note : To delete something from the board, it must be on BREAK.<br />

00H<br />

CL


Instructions manual for <strong>CEPR</strong><strong>96</strong> / MRUC20 M97.10.01<br />

SYNTAX<br />

Hexadecimal :<br />

Mnemonic :<br />

EXECUTION<br />

COMMENTS<br />

In supervision mode, the <strong>CEPR</strong><strong>96</strong> (MRUC20) gets L0 as origin for the main program.<br />

EXAMPLE<br />

ORIGIN for the MAIN PROGRAM 01H<br />

REQUEST RESPONSE<br />

NC 01 L0 05 04<br />

NC 01 L0 05 04<br />

:ORG. Define the current line as the origin.<br />

;L0,ORG. Define L0 as the program origin.<br />

SUPERVISION<br />

SYMBOLS DEFINITION LIMITS<br />

L0 number of the line to assign as origin for<br />

the main program<br />

Fixing the program origine on line 08 for the card number 1<br />

REQUEST<br />

hexadecimal : 01 01 08 05 04<br />

mnemonic : ;8,ORG.<br />

RESPONSE<br />

hexadecimal : 01 01 08 05 04<br />

PAGE 2<br />

0 to FDH<br />

ORG


SYNTAX<br />

Hexadecimal :<br />

Mnémonic :<br />

EXECUTION<br />

COMMENTS<br />

EXAMPLE<br />

SEARCH for ORIGINE of the<br />

PROGRAMME<br />

NC 02 XX 05 04<br />

RORG.<br />

SUPERVISION<br />

SYMBOLS DEFINITION LIMITS<br />

PAGE 3<br />

Instructions manual for <strong>CEPR</strong><strong>96</strong> / MRUC20 M97.10.01<br />

Ask for the origin line number from the card Nb 1. The origin is 08H for this board.<br />

REQUEST :<br />

hexadecimal : 01 02 00 05 04<br />

mnemonic : RORG.<br />

RESPONSE :<br />

hexadecimal : 01 02 08 05 04<br />

DEMANDE REPONSE<br />

NC 02 L0 05 04<br />

XX - any value. 0 to FFH<br />

L0 - number of the origin line for the main 0 to FDH<br />

program.<br />

02H<br />

RORG<br />

By this request, the <strong>CEPR</strong><strong>96</strong> (MRUC20) put into the xx value, the origin line number of<br />

the main program, and gives an echo of the command.


Instructions manual for <strong>CEPR</strong><strong>96</strong> / MRUC20 M97.10.01<br />

SYNTAX<br />

Hexadecimal :<br />

Mnemonic :<br />

EXECUTION<br />

COMMENTS<br />

The <strong>CEPR</strong><strong>96</strong> (MRUC20) return data from the line NL of the program or a message "not<br />

a progrm line"<br />

EXAMPLE<br />

READ a LIGNE of PROGRAM<br />

SYMBOLS DEFINITION LIMITS<br />

NL -Number of the line 0 à FDH<br />

Get data from the line Nb 8 of the programme, NC = 01.<br />

REQUEST<br />

hexadecimal : 01 03 08 05 04<br />

mnemonic : ;8,RL.<br />

REQUEST RESPONSE<br />

NC 03 NL 05 04<br />

NC 00 NL 05 04 => Not a program line<br />

NC,NI,NL,NB,...,04 => Data from the line<br />

;NL,RL.<br />

SUPERVISION<br />

RESPONSE : Jump (30H) to the line 50<br />

hexadecimal: 01 30 08 06 50 04<br />

PAGE 4<br />

03H<br />

R L


SYNTAX<br />

Hexadecimal :<br />

Mnémonic :<br />

EXECUTION<br />

COMMENTS<br />

EXAMPLE<br />

SEARCH for the RUNNING LINE<br />

SYMBOLS DEFINITION LIMITS<br />

PAGE 5<br />

Instructions manual for <strong>CEPR</strong><strong>96</strong> / MRUC20 M97.10.01<br />

REQUEST RESPONSE<br />

NC 04 XX 05 04 NC 04 LC 05 04<br />

RLP.<br />

SUPERVISION<br />

04H<br />

RLP<br />

The <strong>CEPR</strong><strong>96</strong> (MRUC20) remplace XX by the number of the running line (in hexadecimal)<br />

XX - Any value 0 à FDH<br />

For the <strong>CEPR</strong><strong>96</strong> Nb 1, the line 19 is running (NC=01).<br />

REQUEST<br />

hexadecimal : 01 04 FF 05 04<br />

mnemonic : RLP.<br />

RESPONSE<br />

hexadecimal : 01 04 19 05 04


Instructions manual for <strong>CEPR</strong><strong>96</strong> / MRUC20 M97.10.01<br />

SYNTAX<br />

Hexadecimal :<br />

Mnemonic :<br />

EXECUTION<br />

COMMENTS<br />

Setup the starting mode :<br />

- if NL = 0 : on each start, the <strong>CEPR</strong><strong>96</strong> (MRUC20) will start the program on the first line<br />

of the main program.<br />

- si NL > 0 : the <strong>CEPR</strong><strong>96</strong> (MRUC20) will restart on the line under processing just before<br />

the power off (Outputs registers will be restored).<br />

EXAMPLE<br />

SYMBOLS DEFINITION LIMITS<br />

Set the board to restart on the line under processing when the power was shut<br />

down. (NC =01).<br />

REQUEST<br />

hexadecimal : 01 05 FF 05 04<br />

mnemonic : ;1,RMOD.<br />

RESPONSE<br />

hexadecimal : 01 05 FF 05 04<br />

STARTING MODE<br />

REQUEST RESPONSE<br />

NC 05 NL 05 04 NC 05 NL 05 04<br />

NL The NL value set the starting conditions 0 à FFH<br />

PAGE 6<br />

05H<br />

RMOD<br />

;0,RMOD. when it is putting under power; PP = origin, BREAK enable<br />

;1,RMOD. when it is putting under power; PP = courent line, BREAK enable<br />

SUPERVISION


STOP the PROGRAM EXECUTION<br />

SYNTAX<br />

SYNTAX<br />

Hexadecimal : NC 06 00 05 04<br />

Hexadecimal :<br />

Mnemonic : INS,6,0.<br />

Mnémonic :<br />

EXECUTION<br />

Used to stop the program, to reset the program pointer to the origin line, and to reset<br />

EXECUTION<br />

the outputs ports. The board must be in BREAK mode before program down loading<br />

and/or program modification (It's automaticaly done with the <strong>CEPR</strong>-3W software).<br />

STEP by STEP PROGRAM EXECUTION<br />

COMMENTS<br />

SYNTAX<br />

Hexadecimal : NC 06 01 05 04<br />

Mnemonic : INS,6,1.<br />

EXECUTION SYMBOLS DEFINITION LIMITS<br />

Stop the program execution but doesn't reset anythings. Each STEP command allows<br />

to execute the automate program, the courent line and to increment the courent line<br />

number.<br />

EXAMPLE<br />

PAGE 7<br />

Instructions manual for <strong>CEPR</strong><strong>96</strong> / MRUC20 M97.10.01<br />

06 00<br />

BREAK<br />

06 01<br />

STEP<br />

NOTE :<br />

Inputs,outputs, and timers counters continue to be updated as the normal program<br />

execution.<br />

RUN the PROGRAM<br />

SYNTAX<br />

Hexadecimal : NC 06 02 05 04<br />

06 02<br />

RUN<br />

Mnemonic : INS,6,2.<br />

Start the program execution.<br />

Note : Put the board under power, allows an automatic RUN with the initials conditions<br />

define by the RMOD (05H) function.


Instructions manual for <strong>CEPR</strong><strong>96</strong> / MRUC20 M97.10.01<br />

SYNTAX<br />

Hexadecimal :<br />

Mnemonic :<br />

EXECUTION<br />

READ the ACCUMULATOR MEMORY<br />

REQUEST RESPONSE<br />

NC 24 FF NB AD0...ADN...04 NC 24 FF NB AD0 DV0..ADN DVN..04<br />

LD ,ADO...,ADN.<br />

SUPERVISION<br />

SEPARATED FORMAT<br />

MEMOIRE ACCU<br />

ADN DVN<br />

COMMENTS<br />

Allows to read the Accumulator memory (the selected one).<br />

The separated format dictate to the user to specify each address to read.<br />

The response is return as : address,data;address,data...<br />

SYMBOLS DEFINITION LIMITS<br />

EXAMPLE<br />

To read address 00H and 7FH from the accumulator memory.<br />

REQUEST : hexa : 01 24 FF 07 00 7F 04<br />

mné. : LD,0,7FH.<br />

PAGE 8<br />

USER<br />

NB Number of bytes for the message 0 à FFH<br />

ADN address to read 0 à FFH<br />

DVN Data return from the address ADN 0 à FFH<br />

RESPONSE : Data from address 00H and 7FH have the values 4EH et 00.<br />

hexa : 01 24 FF 09 00 4E 7F 00 04<br />

24H<br />

LD


SYNTAX<br />

Hexadecimal :<br />

Mnémonic :<br />

EXECUTION<br />

COMMENTS<br />

SYMBOLS DEFINITION LIMITS<br />

EXAMPLE<br />

Read the data from the bloc defined as 07H to 0BH in the accumulator memory (NC=01).<br />

PAGE 9<br />

Instructions manual for <strong>CEPR</strong><strong>96</strong> / MRUC20 M97.10.01<br />

READ the ACCUMULATOR MEMORY<br />

REQUEST RESPONSE<br />

NC 25 FF 07 ADdeb ADfin 04 NC 25 FF NB ADdeb ADfin DVO..DVN 04<br />

LD.B,ADdeb,ADfin.<br />

SUPERVISION<br />

BLOC FORMAT<br />

MEMOIREACCU.<br />

ADdeb<br />

ADfin<br />

DVN<br />

USER<br />

25H<br />

LD.B<br />

Allows to the user to get a bloc of data from the selected accumulator memory. The<br />

bloc format dictate to the user to specify the first address and the last address of the<br />

bloc to read.<br />

The response is return as a data list (data between ADdeb and ADfin).<br />

NB number of bytes for the message.<br />

ADdeb First address of the bloc.<br />

ADfin Last address of the bloc.<br />

DVN Data from the defined bloc<br />

DEMANDE :hexadecimal : NC 25 FF 07 07 0B 04<br />

mnemonic : LD.B,07,0B.<br />

RESPONSE : from address 07 to 0BH the data are (in héxa) 0C, 4F, 5E, FF et 04.<br />

hexadecimal : NC 25 FF 0C 07 0B 0C 4F 5E FF 04 04<br />

0 à FFH<br />

0 à FFH<br />

0 à FFH<br />

0 à FFH


Instructions manual for <strong>CEPR</strong><strong>96</strong> / MRUC20 M97.10.01<br />

SYNTAX<br />

Hexadecimal :<br />

Mnemonic :<br />

EXECUTION<br />

COMMENTS<br />

EXAMPLE<br />

READ EXPENDED MEMORY<br />

IN SUPERVISOR MODE<br />

A016<br />

A016+1<br />

A016+N0<br />

SUPERVISION<br />

(NL = FFH)<br />

SYMBOLS DEFINITION LIMITS<br />

PAGE 10<br />

USER<br />

2CH<br />

LLD<br />

Read the the memory in supervisor mode.<br />

This instruction is using addresses in 16 bits, it means that all the memory is accessible<br />

(extended and accumulators).<br />

Read 10 bytes from the address 4000H.<br />

Mné : LLD,10,4000H.<br />

NC 2C FF NB N0 A016 04<br />

LLD,N0,A016.<br />

Response : NC 2C FF NB A016 DV0...DN 04<br />

Extended meory<br />

N0 Number of data to read<br />

A016 First address of the bloc to read<br />

0 à 80H<br />

mapping of<br />

the memory


SYNTAX<br />

Hexadecimal :<br />

Mnémonic :<br />

EXECUTION<br />

COMMENTS<br />

EXAMPLE<br />

WRITE DATA INTO THE MEMORY<br />

IMMEDIAT ADDRESSING - SEPARATED FORMAT<br />

NC 10 NL NB AD0 DV0.. ADN DVN ..04<br />

MOV,AD0,DV0....ADN,DVN.<br />

ACCU. Memory<br />

ADN<br />

SYMBOLS DEFINITION LIMITS<br />

PAGE 11<br />

Instructions manual for <strong>CEPR</strong><strong>96</strong> / MRUC20 M97.10.01<br />

IMMEDIATE<br />

ADDRESSING<br />

Write at the addresses 00 and FFH of the ACCU. memory respectively the data 00 and<br />

01.(NC=01)<br />

Hexadecimal : NC 10 FF 09 00 00 FF 01 04<br />

Mnemonic : MOV, 0,0,FFH,1.<br />

DVN<br />

Move the data DVN at the address ADN of the ACCU. memory.<br />

ADN destination address<br />

DVN Data to write at ADN<br />

Note: If NL = FFH => the command is processing in supervisior mode.<br />

0 à FFH<br />

0 à FFH<br />

10H<br />

MOV


Instructions manual for <strong>CEPR</strong><strong>96</strong> / MRUC20 M97.10.01<br />

SYNTAX<br />

Hexadecimal :<br />

Mnemonic :<br />

EXECUTION<br />

COMMENTS<br />

ACCU. MEMORY<br />

ADN<br />

DATA TRANSFERT<br />

DIRECT ADRESSING - SEPARATED FORMAT<br />

NC 11 NL NB AD0 DA0 ..ADN DAN ..04<br />

MOV.D,AD0,DA0...,ADN,DAN.<br />

DIRECT ADRESSING<br />

SYMBOLS DEFINITION LIMITS<br />

EXAMPLE<br />

Copy data from addresses 05H and 7FH to the respectives addresses 00H et<br />

FFH.(NC=01)<br />

Hexadecimal : NC 11 10 09 00 05 FF 7F 04<br />

Mnemonic : MOV.D, 0,5,FFH,7FH.<br />

PAGE 12<br />

ACCU. MEMORY<br />

DAN DVN<br />

11H<br />

MOV.D<br />

Transfert the data (DVN) from the address DAN of the ACCU. memory to the ADN<br />

address of the ACCU. memory.<br />

ADN destination address<br />

DAN source address<br />

DVN data to transfert<br />

0 à FFH<br />

0 à FFH<br />

0 à FFH


SYNTAX<br />

Hexadecimal :<br />

Mnémonic :<br />

EXECUTION<br />

ACCU. MEMORY<br />

ADdeb<br />

ADfin<br />

COMMENTS<br />

Transfert a bloc of successive data (DB) which begin at the address DAdeb to a<br />

memory zone define by the first address ADdeb and the last address ADfin.<br />

SYMBOLS DEFINITION LIMITS<br />

EXAMPLE<br />

Transfert a bloc of data starting at the address 7FH to the zone define by addresses 7H<br />

to 15H. (NC=01)<br />

Héxa : NC 1D 10 08 07 15 7F 04<br />

Mné : MOV.BD,7H,15H,7FH.<br />

DATA TRANSFERT<br />

DIRECT ADRESSING - BLOC FORMAT<br />

NC 1D NL 08 ADdeb ADfin DAdeb 04<br />

MOV.BD,ADdeb,ADfin,DAdeb.<br />

PAGE 13<br />

Instructions manual for <strong>CEPR</strong><strong>96</strong> / MRUC20 M97.10.01<br />

DIRECT<br />

ADRESSING<br />

ADdeb First address of the destination zone<br />

ADfin Last address of the destination zone<br />

DAdeb First address of the source zone.<br />

DB:<br />

Data bloc<br />

DAdeb<br />

0 à FFH<br />

0 à FFH<br />

0 à FFH<br />

1DH<br />

MOV.BD


Instructions manual for <strong>CEPR</strong><strong>96</strong> / MRUC20 M97.10.01<br />

SYNTAX<br />

Hexadecimal : NC 1E NL NB ADdeb ADfin DV0 ..DVN..04<br />

Mnemonic :<br />

EXECUTION<br />

COMMENTS<br />

Transfert a bloc of immediat data (DB) into the accumulator memory. The destination<br />

bloc is define by the first address to write (ADdeb) and the last address to write (ADfin).<br />

If only 1 data is given, the data is write everywhere in the destination table.<br />

EXAMPLE<br />

ACCU. MEMORY<br />

ADdeb<br />

ADfin<br />

SYMBOLS DEFINITION LIMITS<br />

Clear the ACCU memory by write 0 in the 256 bytes of the zone.<br />

Hexadecimal : NC 1E FF 08 00 FF 00 04<br />

Mnemonic : MOV.B,0,FFH,0.<br />

DATA TRANSFERT<br />

IMMEDIAT ADRESSING - BLOC FORMAT<br />

MOV.B,ADdeb,ADfin,DV0..,DVN.<br />

PAGE 14<br />

IMMEDIATE<br />

ADDRESSING<br />

ADdeb First address of the destination zone<br />

ADfin Last address of the destination zone<br />

DVN List of data to write<br />

DV The same value to write everywhere<br />

DB :<br />

Data bloc<br />

DVN<br />

DVN..<br />

1EH<br />

MOV.B<br />

0 to FFH<br />

0 to FFH<br />

0 to FFH<br />

0 to FFH


SYNTAX<br />

Hexadecimal :<br />

Mnémonic :<br />

EXECUTION<br />

COMMENTS<br />

Transfer of data that the source address is contain by DAN to the address that the<br />

destination address is contain by ADN.<br />

This instruction is called "indirect double", because of indirections both for source<br />

and destination addresses.<br />

EXAMPLE<br />

INDIRECT TRANSFERT OF DATA<br />

SYMBOLS DEFINITION LIMITS<br />

PAGE 15<br />

Instructions manual for <strong>CEPR</strong><strong>96</strong> / MRUC20 M97.10.01<br />

INDIRECT DOUBLE ADDRESSING - SEPARATED FORMAT<br />

NC 1F NL NB AD0 DA0 ..ADN DAN ..04<br />

MOV.I,AD0,DA0..,ADN,DAN.<br />

ADN ADX<br />

ADX Val<br />

Transfert of the data that it address is contain at the address 05H to the address<br />

that it address is contain at address 04H.<br />

Hexadecimal : 01 1F 10 07 04 05 04<br />

Mnemonic : MOV.I,4,5.<br />

DAN ADY<br />

ADY Val<br />

ADN pointer on the destination address<br />

ADY address which is contain the source data<br />

DAN pointer on the source address<br />

ADX destination address which receive the data<br />

0 to FFH<br />

0 to FFH<br />

0 to FFH<br />

0 to FFH<br />

1FH<br />

MOV.I


Instructions manual for <strong>CEPR</strong><strong>96</strong> / MRUC20 M97.10.01<br />

SYNTAX<br />

Hexadecimal :<br />

Mnemonic :<br />

EXECUTION<br />

INDIRECT TRANSFERT OF DATA<br />

INDIRECT DOUBLE ADDRESSING - BLOC FORMAT<br />

ACCU. MEMORY<br />

ADdeb<br />

ADfin<br />

COMMENTS<br />

Transfert a bloc of successives data that begining address (DAdy) is contain at the<br />

address DAdeb to a memory zone that it begining address (ADdx) is contain at the<br />

address ADdeb and it end address (ADdz) is contain at the address ADfin.<br />

SYMBOLS DEFINITION LIMITS<br />

EXAMPLE<br />

Transfert of the bloc of data that it begining address is contain at the address 60H to a<br />

zone define by the begining address that it address is contain at the address 05H and<br />

by the last address that it address is contain at the address 18H.<br />

Hexadecimal: 01 50 10 08 05 18 60 04<br />

Mnemonic: MOV.BI,5,18H,60H.<br />

NC 50 NL 08 ADdeb ADfin DAdeb 04<br />

MOV.BI,ADdeb,ADfin,DAdeb.<br />

ADdx<br />

ADdz<br />

INDRECT DOUBLE<br />

ADDRESSING<br />

PAGE 16<br />

ACCU. MEMORY<br />

DAdeb<br />

DAdy<br />

ADdeb pointer on the starting address of the<br />

destination zone<br />

ADfin pointer on the last address of the destination<br />

zone<br />

DAdeb pointer on the starting address of the source<br />

zone<br />

50H<br />

MOV.BI<br />

0 to FFH<br />

0 to FFH<br />

0 to FFH


SYNTAX<br />

Hexadecimal :<br />

Mnémonic :<br />

EXECUTION<br />

MOVE IMMEDIATE DATA TO<br />

EXTENDED MEMORY<br />

COMMENTS<br />

The extended memory zone is define by a begining address (A016) and the number of<br />

bytes to write (N).<br />

If there is only 1 data, the same data is write everywhere in the defined zone.<br />

If the instruction contain less data (DVn) than the defined zone, the result will be<br />

unpredictable (the missing data will be the old data contain before the transfert).<br />

SYMBOLS DEFINITION LIMITS<br />

EXAMPLE<br />

Ex. 1: Transfert the values 1,2,3 from address 0 of the accumulator.<br />

Before<br />

After<br />

NC 72 NL NB N0 A016 DV0...DVN 04<br />

LMOV,N0,A016,DV0,..DVN<br />

Extended Memory<br />

A016<br />

A016+1<br />

A016+N<br />

N Lenght of the zone to write<br />

A016 First address of the zone to write<br />

DVN Immediate data to write<br />

PAGE 17<br />

Instructions manual for <strong>CEPR</strong><strong>96</strong> / MRUC20 M97.10.01<br />

IMMEDIATE<br />

DATA<br />

DV0<br />

DV1<br />

DVn<br />

Note : If N = 0 , the lenght of the zone to write is fixed to 256 bytes.<br />

Mnemonic : LMOV,3,800H,1,2,3.<br />

Zone into the memory DATA<br />

result<br />

72H<br />

LMOV<br />

0800H 0801H 0802H DV0 DV1 DV2<br />

X X X 1 2 3<br />

1 2 3<br />

Ex. 2: Reset of the accumulator memory.<br />

Mnemonic : LMOV,0,800H,0.<br />

see<br />

mapping of<br />

the memory<br />

0 to FFH


Instructions manual for <strong>CEPR</strong><strong>96</strong> / MRUC20 M97.10.01<br />

SYNTAX<br />

Hexadecimal :<br />

Mnemonic :<br />

EXECUTION<br />

COMMENTS<br />

The N016 data stored from address AS16 are transfered to addresses AD16 and next.<br />

EXAMPLE<br />

EXTENDED MEMORY DIRECT TRANSFERT<br />

DIRECT ADDRESSING - BLOC FORMAT<br />

Extended Memory<br />

AD 16<br />

SYMBOLS DEFINITION LIMITS<br />

N016 Number of data to transfert 1 à 800H<br />

AD16 destination address<br />

AS16 source address.<br />

Transfert 32 bytes from extended memory to the accumulator.<br />

Bloc to transfert : N0=0020H, AD=0810H, AS=4730H<br />

hexa : 01 70 15 0B 00 20 08 10 47 30 04<br />

mné : LMOV.D,20H,810H,4730H.<br />

NC 70 NL NB N016 AD16 AS16 04<br />

LMOV,N016, AD16, AS16.<br />

Note: All addresses are in 16 bits [MSB,LSB]<br />

PAGE 18<br />

Extended Memory<br />

AS 16<br />

The biggest possible mouvment of data is 2048 (800H) bytes.<br />

70H<br />

LMOV.D<br />

N016<br />

see memory<br />

mapping


SYNTAX<br />

Hexadecimal :<br />

Mnémonic :<br />

EXECUTION<br />

COMMENTS<br />

Indirect transfert of a source data table to a destination data table.<br />

The biggest possible mouvment of data is 2048 (800H) bytes.<br />

EXAMPLE<br />

SYMBOLS DEFINITION LIMITS<br />

PAGE 19<br />

Instructions manual for <strong>CEPR</strong><strong>96</strong> / MRUC20 M97.10.01<br />

EXTENDED MEMORY INDIRECT TRANSFERT<br />

INDIRECT ADRESSING - BLOC FORMAT<br />

NC 7I NL NB N016 AD16 AS16 04<br />

LMOV.I,N016, AD16, AS16.<br />

Extended Memory<br />

N016<br />

AD 16<br />

AS16<br />

MD<br />

PF(N0)<br />

PF(MD)<br />

PF(DN)<br />

Indirect transfert to make the same data moving as the example of the direct transfert<br />

instruction: 70H / LMOV.D<br />

Hexadecimal : 01 71 15 0B 08 00 08 02 08 04 04<br />

Mnemonic : LMOV.I,800H,802H,804H.<br />

71H<br />

LMOV.I<br />

IMPORTANT : verify data contain in N016, AD16, AS16 because using bad values can<br />

corrupt the program or the system control data.<br />

Address 8xxH<br />

Value<br />

N016 Pointer on the MSB of the number of data to transfert<br />

AD16 Pointer on the destination address<br />

AS 16 Pointer on the source address<br />

Extended Memory<br />

DN<br />

see memory<br />

mapping<br />

00 01 02 03 04 05<br />

00 20H 08 10H 47 30H<br />

N016 N016+1 AD16 AD16+1 AS16 AS16+1<br />

N0


Manuel instructions <strong>CEPR</strong><strong>96</strong> / MRUC20 M<strong>96</strong>.40.02<br />

SYNTAX<br />

Hexadecimal :<br />

Mnemonic :<br />

EXECUTION<br />

COMMENTS<br />

LOGIC AND DATA/VALUE<br />

IMMEDIATE ADDRESSING - SEPARATED FORMAT<br />

NC 12 NL NB AD0 DV0 ..ADN DVN...04<br />

AND,AD0,DV0..,ADN,DVN.<br />

ACCU. MEMORY<br />

ADN (ADN)<br />

LOGIC AND DVN<br />

resultat<br />

SYMBOLS DEFINITION LIMITS<br />

EXAMPLE<br />

Make a logic AND beetwen the data at the address 00 of the accumulator and the value<br />

07. The result is stored at the address 00. The same operation is done beetwen the data<br />

at the address 04 and the value 10H. The result is stored at the address 04.<br />

Hexadecimal : 01 12 20 09 00 07 04 10 04<br />

Mnemonic : AND,0,7,4,10H.<br />

PAGE 20<br />

IMMEDIAT ADDRESSING<br />

(ADN) data at the address ADN.<br />

(ADN)end data at the address ADN after operation<br />

(ADN)begin data at the address ADN before operation<br />

DVN Immediate value<br />

0 à FFH<br />

0 à FFH<br />

0 à FFH<br />

0 à FFH<br />

12H<br />

AND<br />

Allows to do a logic AND beetwen a data stored in the memory and an immediat value.<br />

The result is stored in the address ADN.<br />

Result : (ADN)end = (ADN)begin * DVN


SYNTAX<br />

Hexadecimal :<br />

Mnemonic :<br />

EXECUTION<br />

COMMENTS<br />

EXAMPLE<br />

ACCU. MEMORY<br />

SYMBOLS DEFINITION LIMITS<br />

PAGE 21<br />

Manuel instructions <strong>CEPR</strong><strong>96</strong> / MRUC20 M<strong>96</strong>.40.02<br />

DIRECT ADDRESSING ACCU. MEMORY<br />

ADN (ADN) LOGIC AND<br />

DAN (DAN)<br />

Allows to do a logic AND beetwen 2 data stored in the memory.<br />

The result is stored in the address ADN.<br />

Result : (ADN)end = (ADN)begin * (DAN)<br />

Make a logic AND beetwen the data at the address 00 of the accumulator and the data at<br />

the address 07. The result is stored at the address 00.<br />

Héxa : 01 13 10 07 00 07 04<br />

Mné : AND.D,0,7.<br />

LOGIC AND DATA/DATA<br />

DIRECT ADDRESSING - SEPARATED FORMAT<br />

NC 13 NL NB AD0 DA0...ADN DAN...04<br />

AND.D,AD0,DA0...,ADN,DAN.<br />

result<br />

(ADN) data at the address ADN<br />

(ADN)end data at the address ADN after operation<br />

(ADN)begin data at the address ADN before operation<br />

DVN Immediate value<br />

0 à FFH<br />

0 à FFH<br />

0 à FFH<br />

0 à FFH<br />

13H<br />

AND.D


Manuel instructions <strong>CEPR</strong><strong>96</strong> / MRUC20 M<strong>96</strong>.40.02<br />

SYNTAX<br />

Hexadecimal :<br />

Mnemonic :<br />

EXECUTION<br />

COMMENTS<br />

EXAMPLE<br />

ACCU. MEMORY<br />

ADN (ADN)<br />

LOGIC OR<br />

DVN<br />

result<br />

IMMEDIAT ADDRESSING<br />

SYMBOLS DEFINITION LIMITS<br />

Make a logic OR beetwen the data at the address 00 of the accumulator and the value 07.<br />

The result is stored at the address 00.<br />

Hexadecimal : 01 14 20 07 00 07 04<br />

Mnemonic : 0R,0,7.<br />

LOGIC OR DATA/VALUE<br />

IMMEDIATE ADDRESSING - SEPARATED FORMAT<br />

NC 14 NL NB AD0 DV0 ...ADN DVN..04<br />

OR,AD0,DV0...,ADN,DVN.<br />

PAGE 22<br />

14H<br />

OR<br />

Allows to do a logic OR beetwen a data stored in the memory and an immediat value. The<br />

result is stored in the address ADN.<br />

Result : (ADN)end = (ADN)begin + DVN<br />

(ADN) data at the address ADN.<br />

(ADN)end data at the address ADN after operation<br />

(ADN)begin data at the address ADN before operation<br />

DVN Immediate value<br />

0 à FFH<br />

0 à FFH<br />

0 à FFH<br />

0 à FFH


SYNTAX<br />

Hexadecimal :<br />

Mnemonic :<br />

EXECUTION<br />

COMMENTS<br />

EXAMPLE<br />

ACCU. MEMORY<br />

SYMBOLS DEFINITION LIMITS<br />

PAGE 23<br />

Manuel instructions <strong>CEPR</strong><strong>96</strong> / MRUC20 M<strong>96</strong>.40.02<br />

DIRECT ADRESSING ACCU. MEMORY<br />

ADN (ADN) LOGIC OR<br />

DAN (DAN)<br />

Allows to do a logic OR beetwen 2 data stored in the memory.<br />

The result is stored in the address ADN.<br />

Result : (ADN)end = (ADN)begin + (DAN)<br />

Make a logic OR beetwen the data at the address 00 of the accumulator and the data at<br />

the address 07. The result is stored at the address 00.<br />

Hexadecimal : 01 15 10 07 00 07 04<br />

Mnemonic : OR.D,0,7.<br />

LOGIC OR DATA/DATA<br />

DIRECT ADRESSING - SEPARATED FORMAT<br />

NC 15 NL NB AD0 DA0 ...ADN DAN ..04.<br />

OR.D,AD0,DA0...,ADN,DAN.<br />

result<br />

(ADN) data at the address ADN.<br />

(ADN)end data at the address ADN after operation<br />

(ADN)begin data at the address ADN before operation<br />

DVN Immediat value<br />

0 à FFH<br />

0 à FFH<br />

0 à FFH<br />

0 à FFH<br />

15H<br />

OR.D


Manuel instructions <strong>CEPR</strong><strong>96</strong> / MRUC20 M<strong>96</strong>.40.02<br />

SYNTAX<br />

Hexadecimal :<br />

Mnemonic :<br />

EXECUTION<br />

COMMENTS<br />

EXAMPLE<br />

ACCU. MEMORY<br />

ADN (ADN)<br />

XOR<br />

DVN<br />

result<br />

IMMEDIATE ADDRESSING<br />

SYMBOLS DEFINITION LIMITS<br />

Make a logic XOR beetwen the data at the address 00 of the accumulator and the value<br />

07. The result is stored at the address 00.<br />

Hexadecimal : 01 14 20 07 00 07 04<br />

Mnemonic : X0R,0,7.<br />

XOR DATA/VALUE<br />

IMMEDIATE ADRESSING - SEPARATED FORMAT<br />

NC 16 NL NB AD0 DV0 ...ADN DVN..04<br />

XOR,AD0,DV0...,ADN,DVN.<br />

PAGE 24<br />

16H<br />

XOR<br />

Make a logic XOR beetwen the data at the address 00 of the accumulator and the value<br />

07. The result is stored at the address 00.<br />

Résultat : (ADN)end = (ADN)begin ⊕ DVN<br />

(ADN) data at the address ADN.<br />

(ADN)end data at the address ADN after operation<br />

(ADN)begin data at the address ADN before operation<br />

DVN Immediat value<br />

0 à FFH<br />

0 à FFH<br />

0 à FFH<br />

0 à FFH


SYNTAX<br />

Hexadecimal :<br />

Mnemonic :<br />

EXECUTION<br />

COMMENTS<br />

EXAMPLE<br />

ACCU. MEMORY<br />

SYMBOLS DEFINITION LIMITS<br />

PAGE 25<br />

Manuel instructions <strong>CEPR</strong><strong>96</strong> / MRUC20 M<strong>96</strong>.40.02<br />

ADN (ADN) XOR<br />

DAN (DAN)<br />

result<br />

DIRECT ADDRESSING ACCU. MEMORY<br />

Allows to do a logic XOR beetwen 2 data stored in the memory.<br />

The result is stored in the address ADN.<br />

Result : (ADN)end = (ADN)begin ⊕ (DAN)<br />

Make a logic XOR beetwen the data at the address 00 of the accumulator and the data at<br />

the address 07. The result is stored at the address 00.<br />

Hexadecimal : 01 15 10 07 00 07 04<br />

Mnemonic : XOR.D,0,7.<br />

XOR DATA/DATA<br />

DIRECT ADDRESSING - SEPARATED FORMAT<br />

NC 17 NL NB AD0 DA0 ...ADN DAN ..04.<br />

XOR.D,AD0,DA0...,ADN,DAN.<br />

(ADN) data at the address ADN.<br />

(ADN)end data at the address ADN after operation<br />

(ADN)begin data at the address ADN before operation<br />

DVN Immediate value<br />

0 à FFH<br />

0 à FFH<br />

0 à FFH<br />

0 à FFH<br />

17H<br />

XOR.D


Manuel instructions <strong>CEPR</strong><strong>96</strong> / MRUC20 M<strong>96</strong>.40.02<br />

SYNTAX<br />

Hexadecimal :<br />

Mnemonic :<br />

EXECUTION<br />

COMMENTS<br />

EXAMPLE<br />

ACCU. MEMORY<br />

ADN (ADN)<br />

ADDITION<br />

DVN<br />

SYMBOLS DEFINITION LIMITS<br />

PAGE 26<br />

IMMEDIATE ADDRESSING<br />

Make an addition beetwen the data at the address 00 of the accumulator and the value 07.<br />

The result is stored at the address 00.<br />

Résultat : (ADN)end = (ADN)begin + DVN<br />

Make an addition beetwen the data at the address 00 of the accumulator and the value 07.<br />

The result is stored at the address 00.<br />

Hexadecimal : 01 18 20 07 00 07 04<br />

Mnemonic : ADD,0,7.<br />

ADDITION DATA/VALUE<br />

IMMEDIATE ADDRESSING - SEPARATED FORMAT<br />

NC 18 NL NB AD0 DV0 ...ADN DVN...04<br />

ADD,AD0,DV0...,ADN,DVN.<br />

resultat<br />

NOTE: This instruction doesn't care about the carry.<br />

(ADN) data at the address ADN.<br />

(ADN)end data at the address ADN after operation<br />

(ADN)begin data at the address ADN before operation<br />

DVN Immediate value<br />

0 à FFH<br />

0 à FFH<br />

0 à FFH<br />

0 à FFH<br />

18H<br />

ADD


SYNTAX<br />

Hexadecimal :<br />

Mnemonic :<br />

EXECUTION<br />

COMMENTS<br />

EXAMPLE<br />

ACCU. MEMORY<br />

SYMBOLS DEFINITION LIMITS<br />

PAGE 27<br />

Manuel instructions <strong>CEPR</strong><strong>96</strong> / MRUC20 M<strong>96</strong>.40.02<br />

DIRECT ADDRESSING ACCU. MEMORY<br />

ADN (ADN) ADDITION<br />

DAN (DAN)<br />

Allows to do an addition beetwen 2 data stored in the memory.<br />

The result is stored in the address ADN.<br />

Result : (ADN)end = (ADN)begin + (DAN)<br />

Make an addition beetwen the data at the address 00 of the accumulator and the data at<br />

the address 07. The result is stored at the address 00.<br />

Héxa : 01 19 10 07 00 07 04<br />

Mné : ADD.D,0,7.<br />

ADDITION DATA/DATA<br />

DIRECT ADDRESSING - SEPARATED FORMAT<br />

NC 19 NL AD0 DA0 ...ADN DAN ..04<br />

ADD.D,AD0,DA0...,ADN,DAN.<br />

result<br />

NOTE: This instruction does not manage the carry.<br />

(ADN) data at the address ADN.<br />

(ADN)end data at the address ADN after operation<br />

(ADN)begin data at the address ADN before operation<br />

DVN Immediat value<br />

19H<br />

ADD.D<br />

0 à FFH<br />

0 à FFH<br />

0 à FFH<br />

0 à FFH


Manuel instructions <strong>CEPR</strong><strong>96</strong> / MRUC20 M<strong>96</strong>.40.02<br />

SYNTAX<br />

Hexadecimal :<br />

Mnemonic :<br />

EXECUTION<br />

COMMENTS<br />

EXAMPLE<br />

ADDITION N DATA/N VALUES<br />

IMMEDIATE ADDRESSING<br />

NC 78 NL NB N0 A016 DV0..DVN 04<br />

LADD,N0,A016,DV0,..DVN.<br />

DATA TABLE<br />

A016<br />

A016+1<br />

A016+N0<br />

+<br />

result<br />

SYMBOLS DEFINITION LIMITS<br />

PAGE 28<br />

VALUES<br />

DV0<br />

DV1<br />

DVn<br />

78H<br />

LADD<br />

The data table is define by a starting address and the number of values to add. The<br />

address A016 is the MSB of the data table.<br />

If the instruction has much data (DVN) as expected the excess data are ignored.<br />

N0 Number of bytes to use for doing the operation<br />

A016 Address of the data table<br />

DVN values to add with the data table<br />

Add 3 values (1,2,3) to 4 data stored at the address 800H.<br />

Mné : LADD,4,800H,1,2,3.<br />

before<br />

after<br />

see memory<br />

mapping<br />

data table values<br />

0800H 0801H 0802H 0803H DV0 DV1 DV2<br />

0 FFH FFH 0 + 1 2 3<br />

1 1 1 3<br />

result


SYNTAX<br />

Hexadecimal :<br />

Mnemonic :<br />

EXECUTION<br />

COMMENTS<br />

EXAMPLE<br />

ADDITION N DATA/N DATA<br />

DIRECT ADDRESSING<br />

NC 79 NL NB N0 A016 NS AS16 20<br />

LADD.D,N0,A016,NS,AS16.<br />

DESTINATION<br />

A016<br />

A016+1<br />

A016+N0<br />

+<br />

result<br />

SYMBOLS DEFINITION LIMITS<br />

PAGE 29<br />

Manuel instructions <strong>CEPR</strong><strong>96</strong> / MRUC20 M<strong>96</strong>.40.02<br />

AS16<br />

AS16+1<br />

SOURCE<br />

AS16+NS<br />

79H<br />

LADD.D<br />

Both source data table and destination data table are defined by an address and a number<br />

of bytes.<br />

The addresses A016 and AS16 are the MSB of each data table<br />

If the source data table have more data as the destination data table, excess data are<br />

ignored.<br />

NS Number of bytes for the source data table.<br />

N0 Number of bytes for the destination data table<br />

AS16 Address of the source data table<br />

A016 Address of the destination data table<br />

see memory<br />

mapping<br />

Add 3 data (source data table ) stored at the address 880H with 4 data (destination data<br />

table) stored at the address 800H.<br />

Mnemonic: LADD.D,4,800H,3,880H.<br />

before<br />

after<br />

Destination data table Source data table<br />

0800H 0801H 0802H 0803H 0880H 0881H 0882H<br />

0 FFH FFH 0 + 1 2 3<br />

1 1 1 3<br />

result


Manuel instructions <strong>CEPR</strong><strong>96</strong> / MRUC20 M<strong>96</strong>.40.02<br />

SYNTAX<br />

Hexadecimal :<br />

Mnemonic :<br />

EXECUTION<br />

COMMENTS<br />

EXAMPLE<br />

SUBSTRACTION DATA/VALUE<br />

IMMEDIATE ADDRESSING - SEPARATED FORMAT<br />

ACCU. MEMORY<br />

ADN<br />

IMMEDIATE ADDRESSING<br />

Make a substraction beetwen the data at the address 00 of the accumulator and the<br />

value 07. The result is stored at the address 00.<br />

Résultat : (ADN)end = (ADN)begin - DVN<br />

SYMBOLS DEFINITION LIMITS<br />

Make a substraction beetwen the data at the address 00 of the accumulator and the<br />

value 07. The result is stored at the address 00.<br />

Hexadecimal : 01 1A 20 07 00 07 04<br />

Mnemonic : SUB,0,7.<br />

NC 1A NL NB AD0 DV0 ...ADN DVN...04<br />

SUB,AD0,DV0...,ADN DVN.<br />

(ADN)<br />

result<br />

SUBSTRACTION<br />

(ADN) data at the address ADN.<br />

(ADN)end data at the address ADN after operation<br />

(ADN)begin data at the address ADN before operation<br />

DVN Immediate value<br />

PAGE 30<br />

DVN<br />

0 to FFH<br />

0 to FFH<br />

0 to FFH<br />

0 to FFH<br />

1AH<br />

SUB


SYNTAX<br />

Hexadecimal :<br />

Mnemonic :<br />

EXECUTION<br />

COMMENTS<br />

EXAMPLE<br />

SUBSTRACTION DATA/DATA<br />

DIRECT ADDRESSING - SEPARATED FORMAT<br />

NC 1B NL NB AD0 DA0...ADN DAN...04<br />

SUB.D,AD0,DA0...,ADN,DAN.<br />

ACCU. MEMORY<br />

ADN<br />

DIRECT ADDRESSING<br />

SYMBOLS DEFINITION LIMITS<br />

PAGE 31<br />

Manuel instructions <strong>CEPR</strong><strong>96</strong> / MRUC20 M<strong>96</strong>.40.02<br />

ACCU. MEMORY<br />

(ADN)<br />

result<br />

SOUSTRACTION<br />

DAN (DAN)<br />

Allows to do a substraction beetwen 2 data stored in the memory.<br />

The result is stored in the address ADN.<br />

Result : (ADN)end = (ADN)begin − (DAN)<br />

(DAN) data at the address DAN.<br />

(ADN)end data at the address ADN after operation<br />

(ADN)begin data at the address ADN before operation<br />

Make a substraction beetwen the data at the address 00 of the accumulator and the<br />

data at the address 07. The result is stored at the address 00.<br />

Hexadecimal : 01 1B 10 07 00 07 04<br />

Mnemonic : SUB.D,0,7.<br />

0 to FFH<br />

0 to FFH<br />

0 to FFH<br />

1BH<br />

SUB.D


Manuel instructions <strong>CEPR</strong><strong>96</strong> / MRUC20 M<strong>96</strong>.40.02<br />

SYNTAX<br />

Hexadecimal :<br />

Mnemonic :<br />

EXECUTION<br />

COMMENTS<br />

SUBSTRACTION N DATA/N VALUES<br />

IMMEDIATE ADRESSING<br />

NC 7A NL NB N0 A016 DV0 ..DVN 04<br />

LSUB,N0,A016,DV0,..DVN.<br />

DATA TABLE<br />

A016<br />

A016+1<br />

A016+N0<br />

SYMBOLS DEFINITION LIMITS<br />

EXAMPLE<br />

Sub 3 values (1,2,3) to 4 data, stored at the address 800H.<br />

-<br />

result<br />

N Number of data in the data table<br />

A016 Address of the data table<br />

DVN Values to sub to the data table<br />

PAGE 32<br />

VALUES<br />

DV0<br />

DV1<br />

DVn<br />

7AH<br />

LSUB<br />

The data table is defined by an address (A016) and the number of data in bytes (N).<br />

The address A016 is the MSB of the data table.<br />

If the instruction contain more data than expected (DVn), the exccess data are ignored.<br />

Mnemonic : LSUB,4,800H,1,2,3.<br />

before<br />

after<br />

see memory<br />

mapping<br />

Data table Values<br />

0800H 0801H 0802H 0803H DV0 DV1 DV2<br />

FFH FFH FFH FFH - 1 2 3<br />

FFH FEH FDH FCH<br />

result


SYNTAX<br />

Hexadecimal :<br />

Mnemonic :<br />

EXECUTION<br />

COMMENTS<br />

SYMBOLS DEFINITION LIMITS<br />

EXAMPLE<br />

Sub 3 data (source data table ), stored at the address 880H with 4 data (destination<br />

data table), stored at the address 800H.<br />

PAGE 33<br />

Manuel instructions <strong>CEPR</strong><strong>96</strong> / MRUC20 M<strong>96</strong>.40.02<br />

SUBSTRACTION N DATA/N DATA 7BH<br />

DIRECT ADRESSING<br />

LSUB.D<br />

NC 7B NL NB N0 A016 NS AS16 04<br />

LSUB.D,N0,A016,NS,NS16.<br />

DESTINATION<br />

A016<br />

A016+1<br />

A016+N0<br />

-<br />

result<br />

AS16<br />

SOURCE<br />

AS16+1<br />

AS16+NS<br />

Both source and destination tables are defined by an address and a number of bytes.<br />

The addresses A016 and AS16 are the MSB of each data table.<br />

if the source data table have more data than the destination data table, the excces data<br />

are ignored.<br />

NS Number of bytes for the source data table.<br />

N0 Number of bytes for the destination data table<br />

A016 Address of the destination data table<br />

AS16 Address of the source data table<br />

Mnemonic : LSUB.D,4,800H,3,880H.<br />

before<br />

after<br />

see memory<br />

mapping<br />

Destination data table Source data table<br />

0800H 0801H 0802H 0803H 0880H 0881H 0882H<br />

FFH 0 0 0 - 1 2 3<br />

FEH FEH FDH FDH<br />

result


Manuel instructions <strong>CEPR</strong><strong>96</strong> / MRUC20 M<strong>96</strong>.40.02<br />

SYNTAX<br />

Hexadecimal :<br />

Mnemonic :<br />

EXECUTION<br />

COMMENTS<br />

EXAMPLE<br />

BITS SHIFT<br />

NC 73 NL NB NR N0 A016 04<br />

ROT,NR,N0,A016.<br />

A016<br />

LEFT SHIFT<br />

A016+1<br />

RIGHT SHIFT<br />

A016+N0<br />

Data table<br />

The data table is define by an address and a number of bytes.<br />

The address A016 is the MSB of the data table.<br />

If NR is beetwen 01H and 7FH : 1 to 127 left shift will be done<br />

If NR is beetwen 81H and FFH: 127 to 1 right shift will be done<br />

NOTE: If NR = 0 or NR = 80H the instruction is not processing.<br />

SYMBOLS DEFINITION LIMITS<br />

NR Direction and number of shift to do<br />

N Number of bytes for the data table<br />

A016 Address of the data table<br />

Processing to 10 left shifts on 4 data stored at the address 800h.<br />

Mnemonic : ROT,0AH,4,800H.<br />

Before After<br />

800H 801H 802H 803H 800H 801H 802H 803H<br />

0 FFH FFH 0 FFH FCH 00 03<br />

PAGE 34<br />

1 to FFH<br />

execpt 80H<br />

see memory<br />

mapping<br />

73H<br />

ROT


SYNTAX<br />

Hexadecimal :<br />

Mnemonic :<br />

EXECUTION<br />

COMMENTS<br />

EXAMPLE<br />

BIT MODIFICATION<br />

SEPARATED FORMAT<br />

NC 1C NL NB AD0 PM0..ADN PMN...04<br />

SET,XA/BC...,XA/BC.<br />

MEMORY<br />

ACCU./REGISTER<br />

ADN PMN<br />

SYMBOLS DEFINITION LIMITS<br />

* See next page<br />

PAGE 35<br />

Manuel instructions <strong>CEPR</strong><strong>96</strong> / MRUC20 M<strong>96</strong>.40.02<br />

Accumulator memory or register bit modification for the selected address (ADN)<br />

PMN allows to select :<br />

- address assignment : Accumultator (D) or register (R)<br />

- the bit to modify<br />

- the bit value<br />

ADN addresse containing value to be modified<br />

PMN* modification parameter for the value<br />

X "D":accumulator "R":general register<br />

"X":CAN 0 register "Y":CAN 1 register<br />

A offset in the ACCU. or register number<br />

B bit number (0 :LSB)<br />

C set the bit value : 1 => C absent<br />

0 => C = "_" (under score)<br />

Set the bit #4 of output port PS1 to on.<br />

AD0 : register #2 to select the PS1 port<br />

PM0: b7 b6 b5 b4 b3 b2 b1 b0<br />

0 0 0 0 1 1 0 0<br />

CAN selection<br />

not used<br />

register selection<br />

bit value<br />

select the bit #4<br />

Hexadecimal : 01 1C 10 07 02 0C 04<br />

Mnemonic : SET,R2/4 .<br />

0 à FFH<br />

0 à 1FH<br />

D, R, X, Y<br />

0 à 255<br />

0 à 7<br />

1CH<br />

SET<br />

Other examples (mnemonic)<br />

set the bit #5 of the outputs to OFF<br />

SET,R2/5_.<br />

set the bit #0 of the address 10 to ON<br />

SET,D10/0.<br />

Set the bit #7 of the address 10 to OFF<br />

SET,D10/7_.<br />

Set the bit #7 of the register #0 of the<br />

CAN 0 register<br />

SET,X0/7.<br />

Set the bit #4 of the register #10H of the<br />

CAN 1 register<br />

SET,Y10H/4_.


Manuel instructions <strong>CEPR</strong><strong>96</strong> / MRUC20 M<strong>96</strong>.40.02<br />

BIT 4,5,6,7 DATA TYPE SELECTION<br />

(X in the mnemonic)<br />

SYNTAX<br />

The bit 5 and 6 are not used<br />

Hexadecimal :<br />

Mnemonic :<br />

EXECUTION<br />

COMMENTS<br />

EXAMPLE<br />

Details for PMN calculation<br />

bit 7 bit 4<br />

0 0 ADN is a register address<br />

0 1 ADN is an accumulator address.<br />

1 0 ADN is a CAN 0 register address<br />

1 1 ADN is a CAN 1 register address<br />

BIT 3 BIT VALUE<br />

(C in the mnemonic)<br />

= 0 set the bit to 0<br />

= 1 set the bit to 1<br />

BIT 0 à 2 BIT Nb SELECTION<br />

(B in the mnemonic)<br />

bit2 0 0 0 0 1 1 1 1<br />

bit1 0 0 1 1 0 0 1 1<br />

bit0 0 1 0 1 0 1 0 1<br />

bit<br />

to test<br />

0 1 2 3 4 5 6 7<br />

SYMBOLS DEFINITION LIMITS<br />

PAGE 36


SYNTAX<br />

Hexadecimal :<br />

Mnemonic :<br />

EXECUTION<br />

COMMENTS<br />

EXAMPLE<br />

DMN<br />

SYMBOLS DEFINITION LIMITS<br />

PAGE 37<br />

Manuel instructions <strong>CEPR</strong><strong>96</strong> / MRUC20 M<strong>96</strong>.40.02<br />

READ THE REGISTERS 21H<br />

DIRECT ADRESSING - SEPARATED FORMAT IN.D<br />

ACCU. MEMORY<br />

NC 21 NL NB IA ADO DMO ..ADN DMN..04<br />

IN.D,IA,AD0,DM0,..ADN,DMN<br />

DIRECT ADRESSING<br />

ADN<br />

REGISTER<br />

The value read at the register ADN is moved to the DMN ACCU. memory address.<br />

IA = 0 to 2FH allows to select a 256 registers page, that means the memory between 0 to<br />

2FFFH can be seen as registers.<br />

NOTE : To be compatible with others BALOGH products :<br />

IA = 8 => select the page 500H to 5FFH.<br />

IA = 5 => select the page 800H to 8FFH.<br />

IA associate instruction<br />

ADN register number<br />

DMN Destination address in the accumulator<br />

Read the 2 inputs ports PE0 and PE1 (number 00 and 01) and move each values to the<br />

respectives accumulator addresses 3CH and 70H.<br />

The associate instruction IA = 08 selects the 500H to 5FFH registers area, the inputs<br />

ports are selected by AD0(0) and AD1(1).<br />

hexadecimal : 01 21 12 0A 08 00 3C 01 70 04<br />

mnemonic : IN.D,8,0,3CH,1,70H.<br />

0 à 2FH<br />

0 à FFH<br />

0 à FFH


Manuel instructions <strong>CEPR</strong><strong>96</strong> / MRUC20 M<strong>96</strong>.40.02<br />

SYNTAX<br />

Hexadecimal :<br />

Mnemonic :<br />

EXECUTION<br />

COMMENTS<br />

REGISTERS<br />

ADN DVN<br />

SYMBOLS DEFINITION LIMITS<br />

EXAMPLE<br />

Write the value 80 into the register number 4, it starts a timer for 80 cycles of 20 ms<br />

(1.6 s).<br />

hexadecimal : 01 22 10 08 08 04 50 04<br />

mnemonic : OUT,8,4,80.<br />

WRITE THE REGISTERS<br />

DIRECT ADDRESSING<br />

NC 22 NL NB IA AD0 DV0...ADN DVN...04<br />

OUT,IA,AD0,DV0,..,ADN,DVN.<br />

IA Associate instruction<br />

DVN Value to write into the register ADN<br />

ADN Register number<br />

PAGE 38<br />

IMMEDIAT VALUE<br />

0 à 2FH<br />

0 à FFH<br />

2 à 7H<br />

22H<br />

OUT<br />

The value DVN is written into the register number ADN.<br />

IA = 0 to 2FH allows to select a 256 registers page, that means the memory between 0<br />

to 2FFFH can be seen as registers.<br />

NOTE : To be compatible with others BALOGH products :<br />

IA = 8 => select the page 500H to 5FFH.<br />

IA = 5 => select the page 800H to 8FFH.


SYNTAX<br />

Hexadecimal :<br />

Mnemonic :<br />

EXECUTION<br />

COMMENTS<br />

EXAMPLE<br />

WRITE DATA INTO REGISTERS<br />

DIRECT ADRESSING - SEPARATED FORMAT<br />

NC 23 NL NB IA AD0 DM0..ADN DMN...04<br />

OUT.D,IA,AD0,DM0,...,ADN,DMN.<br />

REGISTERS DIRECT ADRESSING<br />

ADN DMN<br />

SYMBOLS DEFINITION LIMITS<br />

IA Associate instruction<br />

DMN Accumulator address of the data to write<br />

in the ADN register.<br />

ADN Register number<br />

PAGE 39<br />

Manuel instructions <strong>CEPR</strong><strong>96</strong> / MRUC20 M<strong>96</strong>.40.02<br />

ACCU. MEMORY<br />

Write the value of the address 3CH of the accumulator memory to the output port PS0<br />

(register 2).<br />

hexadecimal : 01 23 FF 08 08 02 3C 04<br />

mnemonic : OUT.D,08H,2,3CH.<br />

0 to 2FH<br />

0 to FFH<br />

0 to FFH<br />

23H<br />

OUT.D<br />

The value at the address DMN is written into the register ADN.<br />

IA = 0 to 2FH allows to select a 256 registers page, that means the memory between 0 to<br />

2FFFH can be seen as registers.<br />

NOTE : To be compatible with others BALOGH products :<br />

IA = 8 => select the page 500H to 5FFH.<br />

IA = 5 => select the page 800H to 8FFH.


Manuel instructions <strong>CEPR</strong><strong>96</strong> / MRUC20 M<strong>96</strong>.40.02<br />

SYNTAX<br />

Hexadecimal :<br />

Mnemonic :<br />

EXECUTION<br />

COMMENTS<br />

EXAMPLE<br />

SYMBOLS DEFINITION LIMITS<br />

Jump to the line 34H<br />

NC 30 NL 06 LS 04<br />

J ; LS.<br />

J : LABEL.<br />

hexadecimal : 01 30 10 06 34 04<br />

mnemonic : J ; 34H.<br />

J : label1.<br />

JUMP<br />

Jump to the line LS or to the label "LABEL"<br />

;LS Number of the line to jump<br />

:LABEL Label of the next instruction to process.<br />

PAGE 40<br />

0 to FDH<br />

30H<br />

J


SYNTAX<br />

Hexadecimal :<br />

Mnemonic :<br />

EXECUTION<br />

COMMENTS<br />

EXAMPLE<br />

SYMBOLS DEFINITION LIMITS<br />

CALL: COMPT.<br />

:COMPT,....<br />

CI<br />

JUMP TO A SUBROUTINE<br />

NC 31 NL NB LS 04<br />

CALL;LS.<br />

CALL : LABEL<br />

PAGE 41<br />

Manuel instructions <strong>CEPR</strong><strong>96</strong> / MRUC20 M<strong>96</strong>.40.02<br />

31H<br />

CALL<br />

Call a subroutine. The subroutine must be finished by the CI (3EH) instruction.<br />

When the CI instruction is proccessed, the program pointer gets the value of the next<br />

line of the call. This instruction is similar to the "GOSUB" in basic language.<br />

LS First line of the subroutine<br />

Label Label of the first line of the subroutine<br />

0 to FDH


Manuel instructions <strong>CEPR</strong><strong>96</strong> / MRUC20 M<strong>96</strong>.40.02<br />

SYNTAX<br />

Hexadecimal :<br />

Mnemonic :<br />

EXECUTION<br />

COMMENTS<br />

JUMP ON COMPARE<br />

1 DATA / 1 VALUE<br />

NC 32 NL 09 ADN DVN LI LS 04<br />

JC , ADN,DVN ;LI;LS.<br />

JC , ADN,DVN :LABEL1:LABEL2.<br />

ACCU. MEMORY<br />

ADN<br />

(ADN)<br />

Compare the avalue at the address ADN and the value DVN.<br />

- if (ADN) = DVN next line<br />

- if (ADN) < DVN jump to the line : LI or LABEL 1<br />

- if (ADN) > DVN jump to the line : LS or LABEL 2<br />

SYMBOLS DEFINITION LIMITS<br />

(ADN) Value at the address ADN<br />

DVN Immediate value<br />

LI Jump line if (ADN) < DVN<br />

LS Jump line if (ADN) > DVN<br />

EXAMPLE<br />

Compare the value at the address 0 to value 07<br />

- If equal, the program continue on the next line.<br />

- if the value at the address 0 < to the value 07, the program continue on the label<br />

SMALLER (line 20H).<br />

- if the value at the address 0 > to the value 07, the program continue on the label<br />

BIGGER (line 30H).<br />

hexadecimal : 01 32 10 09 00 07 20 30 04<br />

mnemonic : JC, 0, 7; 20H; 30H.<br />

JC, 0, 7 : SMALLER: BIGGER.<br />

PAGE 42<br />

IMMEDIATE ADRESSING<br />

JUMP ON<br />

COMPARE<br />

DVN<br />

0 to FFH<br />

0 to FFH<br />

0 to FDH<br />

0 to FDH<br />

32 H<br />

JC


SYNTAX<br />

Hexadecimal :<br />

Mnemonic :<br />

EXECUTION<br />

COMMENTS<br />

EXAMPLE<br />

JUMP ON COMPARE<br />

N DATA / N VALUES<br />

NC 7C NL NB N0 A016 DV0..DVN LI LS 04<br />

LJC,N0,A016,DV0,..DVN :LABEL1 :LABEL 2.<br />

AREA TO COMPARE VALUES<br />

A016<br />

A016+1<br />

A016+N0<br />

SYMBOLS DEFINITION LIMITS<br />

PAGE 43<br />

Manuel instructions <strong>CEPR</strong><strong>96</strong> / MRUC20 M<strong>96</strong>.40.02<br />

DV0<br />

DV1<br />

DVn<br />

N Number of data to compare<br />

A016 First address of the data area<br />

LI Jump line number (or label) data < values<br />

LS Jump line number (or label) data > values<br />

DVN Values<br />

See memory<br />

mapping<br />

7CH<br />

LJC<br />

The data area to compare id defined by a strating address A016 and the number N of data<br />

to compare. The address A016 is the MSB of the area to compare.<br />

Compare the values of the data area and the immediate values:<br />

- if the N data < N values (DVN) jump to the label INF<br />

- if the N data > N values (DVN) jump to the label SUP<br />

- if the N data = N values (DVN) continue on the next line.<br />

Compare 3 data from the address 800H of the memory to 3 immediate values (1,2,3).<br />

- if data = values then continue on the next line<br />

- if data > values then jump on the label INF.<br />

- If data < values then jump on the label SUP.<br />

Mnemonic : LJC,3,800H,1,2,3:INF:SUP.


Manuel instructions <strong>CEPR</strong><strong>96</strong> / MRUC20 M<strong>96</strong>.40.02<br />

SYNTAX<br />

Hexadecimal :<br />

Mnemonic :<br />

EXECUTION<br />

COMMENTS<br />

EXAMPLE<br />

JUMP ON COMPARE<br />

1 DATA / 1 DATA<br />

NC 33 NL 09 ADN DAN LI LS 04<br />

JC.D,ADN,DAN;LI;LS.<br />

JC.D,ADN,DAN:LABEL1:LABEL2<br />

ACCU. MEMORY<br />

ADN<br />

DAN<br />

(ADN)<br />

(DAN)<br />

Compare 2 values stored into the accumulator memory at the addresses ADN and DAN.<br />

- If (ADN) = (DAN) continue on the next line<br />

- If (ADN) < (DAN) jump to the line LI or the label LABEL 1<br />

- If (ADN) > (DAN) jump to the line LS or the label LABEL 2<br />

SYMBOLS DEFINITION LIMITS<br />

(ADN) Value at the address ADN<br />

(DAN) Value at the address DAN<br />

LI Jump line if (ADN) < (DAN)<br />

LS Jump line if (ADN) > (DAN)<br />

PAGE 44<br />

JUMP ON<br />

COMPARE<br />

DIRECT ADRESSING<br />

0 to FFH<br />

0 to FFH<br />

0 to FDH<br />

0 to FDH<br />

33H<br />

JC.D<br />

Compare the data at the address 07 to the data at the address 00.<br />

- If equal then continue on the next line<br />

- If the data at the address 0 < the data at the address 07 then jump on SMALLER<br />

- If the data at the address 0 > the data at the address 07 then jump on HIGHER<br />

hexadecimal : 01 33 10 09 00 07 20 30 04<br />

mnemonic : JC.D, 0, 7; SMALLER; HIGHER.


SYNTAX<br />

Hexadecimal :<br />

Mnemonic :<br />

EXECUTION<br />

COMMENTS<br />

JUMP ON COMPARE<br />

N DATA / N DATA<br />

NC 7D NL NB N0 A016 NS AS16 LI LS 04<br />

LJC.D,N0,A016,NS,NS16 :LABEL1 :LABEL2.<br />

AREA TO COMPARE SOURCE AREA<br />

A016<br />

A016+1<br />

A016+N0<br />

SYMBOLS DEFINITION LIMITS<br />

EXAMPLE<br />

Compare 3 data from the address 800H to 3 data from the address 880H of the<br />

memory.<br />

- If data are equal then continue on the next line<br />

- If area to compare < source area then jump to the label INF<br />

- If area to compare > source area then jump to the label SUP<br />

Mnemonic : LJC.D,3,800H,3,880H:INF:SUP.<br />

PAGE 45<br />

Manuel instructions <strong>CEPR</strong><strong>96</strong> / MRUC20 M<strong>96</strong>.40.02<br />

AS16<br />

AS16+1<br />

AS16+NS<br />

7DH<br />

LJC.D<br />

2 areas of data are defined by a starting address and a number of data. Data to compare<br />

are defined by A016 and N0, the data source area is defined by AS16 and NS.<br />

A016 and AS16 are addresses for the MSB of each area.<br />

Jump to the label INF or SUP if data are differents or continue to the next line if data are<br />

equals.<br />

NS Number of data of the source area<br />

N0 Number of data of the area to compare<br />

A016 First address of the area to compare<br />

AS16 First address of the source area<br />

see memory<br />

mapping


Manuel instructions <strong>CEPR</strong><strong>96</strong> / MRUC20 M<strong>96</strong>.40.02<br />

SYNTAX<br />

Hexadecimal :<br />

Mnemonic :<br />

EXECUTION<br />

COMMENTS<br />

EXAMPLE<br />

ACCU. MEMORY<br />

AD<br />

JUMP ON COMPARE<br />

1 DATA / LIST OF VALUES<br />

NC 38 NL NB AD DV0 LS0 ..DVN LSN..04<br />

JC0,AD,DV0;LSO..,DVN;LSN.<br />

JC0,AD,DV0;LABEL0..,DVN;LABELN.<br />

SYMBOLS DEFINITION LIMITS<br />

Compare value at the address 00 to the values 07H and 10H :<br />

- if the data at the address 00 match with 07H then jump to label0 (line 20H)<br />

- if the data at the address 00 match with 10H, then jump to label1 (line 30H)<br />

- else continue on the next line<br />

hexadecimal : 01 38 10 0A 00 07 20 10 30 04<br />

IMMEDIATE ADRESSING<br />

mnemonic : JC0,0,7;20H,10H;30H.<br />

JC0,0,7:LABEL0,10H:LABEL1.<br />

PAGE 46<br />

JUMP ON<br />

COMPARE<br />

DVN<br />

38H<br />

JCO<br />

Compare a value stored into the accumulator at the address (AD) to a list of immediate<br />

values. If the data match with a value then a jump to the associated label is done.<br />

If there is no match then the program continue on the next line.<br />

(AD) Address of the value to compare<br />

DVN Immediate values compared with (AD)<br />

LSN Jump lines associate with each DVN<br />

0 to FFH<br />

0 to FFH<br />

0 to FDH


SYNTAX<br />

Hexadecimal :<br />

Mnemonic :<br />

EXECUTION<br />

COMMENTS<br />

EXAMPLE<br />

JUMP ON COMPARE<br />

1 DATA / LIST OF DATA<br />

NC 39 NL NB ADX DA0 LS0 ..DAN LSN..04<br />

JC0.D,ADX,DA0;LS0...,DAN;LSN.<br />

JC0.D,ADX,DA0:LABEL0...,DAN:LABEL1.<br />

ACCU. MEMORY<br />

SYMBOLS DEFINITION LIMITS<br />

PAGE 47<br />

Manuel instructions <strong>CEPR</strong><strong>96</strong> / MRUC20 M<strong>96</strong>.40.02<br />

ACCU. MEMORY<br />

JUMP ON<br />

ADX (ADX)<br />

COMPARE DAN (DAN)<br />

ADRESSAGE DIRECT<br />

39H<br />

JC0.D<br />

Compare a value stored into the accumulator at the address (AD) to a list of data. If the<br />

data match with a value in the list of data then a jump to the associated label is done.<br />

If there is no match then the program continue on the next line.<br />

(ADX) Value at the address ADX<br />

(DAN) Values at the addresses DAN<br />

LSN Jump line nuber associate to the (DAN) value<br />

Compare the value at the address 00 to the values at the addresses 07H and 10H :<br />

- if the data at the address 00 match with the data at the address 07H then<br />

jump to label0 (line 20H)<br />

- if the data at the address 00 match with the data at the address 10H then<br />

jump to label1 (line 30H)<br />

- else continue on the next line<br />

hexadecimal : 01 39 10 0A 00 07 20 10 30 04<br />

mnemonic : JC0.D,0,7;20H,10H;30H.<br />

JC0.D,0,7:LABEL0,10H:LABEL1.<br />

0 to FFH<br />

0 to FFH<br />

0 to FDH


Manuel instructions <strong>CEPR</strong><strong>96</strong> / MRUC20 M<strong>96</strong>.40.02<br />

SYNTAX<br />

Hexadecimal : NC 3A NL NB AD0 PT0..ADN PTN..LS 04<br />

(resp. NC 3B NL NB AD0 PT0..ADN PTN..LS 04)<br />

Mnemonic : JCB,TA / BCS,.. TA / BC;LS. resp. JNCB,TA / BCS,.. TA / BC;LS.<br />

JCB,TA / BCS,... TA / BC:LABEL. resp. JNCB,TA / BCS,... TA / BC:LABEL.<br />

EXECUTION<br />

COMMENTS<br />

EXAMPLE<br />

SYMBOLS DEFINITION LIMITS<br />

Program remains on line 10H (the same line) if the equation above is true:<br />

- Input E1 = 1 and bit 7 of the address FFH of the accumulator is at 0 or data at the<br />

address 01H of the accumulator is different of 0 otherwise, the program continues on<br />

the next line.<br />

hexadecimal : 01 3A 10 0C 00 09 FF 37 01 78 10 04<br />

mnemonic :<br />

JUMP ON BOOLEAN RESULT 3AH (resp.3BH)<br />

JCB (resp.JNCB)<br />

The boolean equation is presented in the form of a midterm sum:<br />

< BN0 (AD0) * BN1 (AD1) > +< BN2 (AD2) * BN3 (AD3) > + <br />

Jump to line LS or label is performed when the equation is true (resp. false) else<br />

program continues on next line.<br />

- ADN is an address into the accumulator memory or a register number.<br />

- The PTN parameter defines :<br />

- the address assignment (accumulator memory or register)<br />

- the bit to test or to use.<br />

- The bit logic state to use (0 or 1)<br />

(ADN) value at the address ADN<br />

PTN test parameter (see next page)<br />

T D:accumulator memory, R:register, X:CAN0, Y:CAN1register<br />

A Address or registre number<br />

B bit number, test value of byte<br />

C logic state to test ("_" to test logic 0)<br />

S logical symbol (except the last term)<br />

LS jump line number<br />

:WAIT,JCB,R0/1*D255/7_+D1/8:WAIT.<br />

PAGE 48<br />

0 to FFH<br />

0 to FFH,0FH<br />

0 to 7, 8<br />

* ou +<br />

0 to FDH


SYNTAX<br />

Hexadecimal bit : HEXADECIMAL<br />

Mnemonic B7 :<br />

B6 = 0 bit test<br />

EXECUTION<br />

= 1 byte test<br />

B5 = 0 if AND operation<br />

= 1 id OR operation or last term<br />

B4 = 0 if register<br />

= 1 if accumulator<br />

COMMENTS<br />

B3 = 0 if bit n = 0 or byte = 0<br />

= 1 if bit n = 1 or byte = 0<br />

B2<br />

à<br />

B0<br />

Bit number selection<br />

PTN DEFINITION<br />

SYMBOLS DEFINITION LIMITS<br />

Byte : 8<br />

EXAMPLE<br />

E xample : -Test input 4 = 0 => PTN = 00100100 = 24H<br />

Mnemonic : R0/4_<br />

- Test register 4 different of 0 => PTN = 01101000<br />

Mnemonic : R4/8<br />

PAGE 49<br />

Manuel instructions <strong>CEPR</strong><strong>96</strong> / MRUC20 M<strong>96</strong>.40.02<br />

MNEMONIQUE<br />

symbol B<br />

symbol S<br />

"*"<br />

"+"<br />

symbol X<br />

R<br />

D<br />

symbol C<br />

C = "_"<br />

C = " "<br />

symbol B<br />

bit : from 0 to 7<br />

Note : The boolean equation is completely solved from left to right.


Manuel instructions <strong>CEPR</strong><strong>96</strong> / MRUC20 M<strong>96</strong>.40.02<br />

SYNTAX<br />

Hexadecimal :<br />

Mnemonic :<br />

EXECUTION<br />

COMMENTS<br />

EXAMPLE<br />

JUMP ON COMPARE<br />

DATA TABLE / VALUES TABLE<br />

NC 3C NL NB AD0 DV0 ..ADN DVN ..LS 04<br />

JCT,AD0,DV0..,ADN,DVN;LS.<br />

JCT,AD0,DV0..,ADN,DVN:LABEL.<br />

ACCU. MEMORY<br />

ADN<br />

(ADN)<br />

IMMEDIATE ADDRESSING<br />

Compare a data table (ADN) stored in the accumulator to a values table (DVN).<br />

A jump is performed if all data match with all values else the program continues on the<br />

next line.<br />

SYMBOLS DEFINITION LIMITS<br />

PAGE 50<br />

JUMP ON<br />

COMPARE<br />

(ADN) Value at the addresses ADN<br />

DVN Immediate values<br />

LS Jump line<br />

A jump to the label (line 60H) is performed if :<br />

- data at the address 00H is equal to 07H and<br />

- data at the address 01H is equal to 12H<br />

else the program continues on the next line (11H)<br />

hexadecimal : 01 3C 10 0A 00 07 01 12 60 04<br />

mnemonic : JCT,0,7,1,12H;60H.<br />

JCT,0,7,1,12H:LABEL.<br />

DVN<br />

0 to FFH<br />

0 to FFH<br />

0 to FDH<br />

3CH<br />

JCT


SYNTAX<br />

Hexadecimal :<br />

Mnemonic :<br />

EXECUTION<br />

COMMENTS<br />

EXAMPLE<br />

JUMP ON COMPARE<br />

DATA TABLE / DATA TABLE<br />

NC 3D NL NB AD0 DA0..ADN DAN ..LS 04<br />

JCT.D,AD0,DA0..ADN,DAN..:LS.<br />

JCT.D,AD0,DA0..ADN,DAN..:LABEL.<br />

ACCU. MEMORY<br />

ADN<br />

(ADN)<br />

DIRECT ADRESSING<br />

SYMBOLS DEFINITION LIMITS<br />

PAGE 51<br />

Manuel instructions <strong>CEPR</strong><strong>96</strong> / MRUC20 M<strong>96</strong>.40.02<br />

JUMP ON<br />

COMPARE<br />

Compare a data table stored at the adresses ADN of the accumulator memory to an<br />

other data table stored at the addresses DAN.<br />

A jump is performed if all data of both tables match else the program continues on the<br />

next line.<br />

(ADN) data at the address ADN<br />

(DAN) data at the address DAN<br />

LS Jump line<br />

A jump to the label (line 60H) is performed if :<br />

data at the address 00 is equal to the data at the address 07H<br />

and data at the address 01 is equal to the data at the address 12H<br />

and data at the address 02 is equal to the data at the address 25H.<br />

else the program continues on the next line (11H)<br />

hexadecimal : 01 3D 10 0C 00 07 01 12 02 25 60 04<br />

mnemonic : JCT.D,0,7,1,12H,2,25H;60H.<br />

ACCU. MEMORY<br />

DAN<br />

3DH<br />

JCT.D<br />

(DAN)<br />

0 to FFH<br />

0 to FFH<br />

0 to FDH


Manuel instructions <strong>CEPR</strong><strong>96</strong> / MRUC20 M<strong>96</strong>.40.02<br />

SYNTAX<br />

Hexadecimal :<br />

Mnemonic :<br />

EXECUTION<br />

COMMENTS<br />

EXAMPLE<br />

SYMBOLS DEFINITION LIMITS<br />

The current interruption terminates at line 40.<br />

The next line which will be executed is the subroutine call line + 1.<br />

hexadecimal : 01 3E 40 05 04<br />

mnemonic : CI<br />

RETURN FROM INTERRUPTION<br />

NC 3E NL 05 04<br />

CI<br />

This command gives end to :<br />

- a command in process (called by the controller program)<br />

- a subroutine called by a CALL command.<br />

PAGE 52<br />

3EH<br />

CI


SYNTAX<br />

Hexadecimal :<br />

Mnemonic :<br />

EXECUTION<br />

COMMENTS<br />

STACK POINTER INITIALISATION<br />

NC 3F NL 05 04<br />

CSP<br />

SYMBOLS DEFINITION LIMITS<br />

EXAMPLE<br />

Processing to a special reset of the board, on the event "PE0/0" is not ready.<br />

PAGE 53<br />

Manuel instructions <strong>CEPR</strong><strong>96</strong> / MRUC20 M<strong>96</strong>.40.02<br />

3FH<br />

CSP<br />

Initialisation of the stack pointer, the <strong>CEPR</strong><strong>96</strong> kills all subroutines or interrupts under<br />

processing. This command allows to the user to perform a total reset of the program<br />

regardless of program situation, and/or to define the next line to be executed.<br />

It should be used only on specific case as emergency or special cirumstances.<br />

:RESET,<br />

JCB,R0/0_:RESET.<br />

CSP.<br />

J:ORG.


Manuel instructions <strong>CEPR</strong><strong>96</strong> / MRUC20 M<strong>96</strong>.40.02<br />

SYNTAX<br />

Hexadecimal :<br />

Mnemonic :<br />

EXECUTION<br />

COMMENTS<br />

EXAMPLE<br />

TAG READ 61H<br />

I R<br />

DIRECT ADDRESSING - WITHOUT WAITTING<br />

NC 61 NL NB NE N016 A016 AD16 AT16 04<br />

IR,NE,N016,A016,AD16,AT16.<br />

EXTENDED MEMORY<br />

AT 16 PF<br />

AT16+1 Pf<br />

AD 16<br />

WITHOUT WAITTING<br />

PF+80H<br />

COMMENTS<br />

A read is attempted, if there is no fault, data read from the tag are stored in the memory at the<br />

address AD16, the status (AT16) is updated and give information about the tag. If there is a<br />

fault, only the status (AT16) is updated, the high byte gives informations about the fault (ex: no<br />

tag was present). For more information about the status, see BALOGH STATUS DEFINITION.<br />

SYMBOLS DEFINITION LIMITS<br />

PAGE 54<br />

A0 16<br />

SLAVE<br />

STATUS<br />

PF Pf<br />

TAG<br />

NE Slave number<br />

AT 16 Status storage address<br />

N016 Number of data to read in the tag<br />

A0 16 First address to read in the tag<br />

AD 16 First address in the card to store the read data<br />

N016<br />

See memory<br />

mapping<br />

and<br />

tag mapping<br />

Command to read 10 data at the beginning of an OMX TAG (address 0 to 9) present on<br />

slave 1 transceiver, store them at the address 3000H on the card extended memory and<br />

store the operation status in the accumulator memory at the address F0H (8F0H in 16 bits<br />

addressing)<br />

Mnemonic : IR,1,10,0,3000H,8F0H.


SYNTAX<br />

Hexadecimal :<br />

Mnemonic :<br />

EXECUTION<br />

COMMENTS<br />

EXAMPLE<br />

TAG WRITE<br />

DIRECT ADDRESSING - WITHOUT WAITTING<br />

NC 63 NL NB NE NO16 A016 AD16 AT16 04<br />

IW,NE,N016,A016,AD16,AT16.<br />

EXTENDED MOMORY<br />

AT 16 PF<br />

AT16+1 Pf<br />

AD 16<br />

WITHOUT WAITTING<br />

PF+80H<br />

SYMBOLS DEFINITION LIMITS<br />

PAGE 55<br />

Manuel instructions <strong>CEPR</strong><strong>96</strong> / MRUC20 M<strong>96</strong>.40.02<br />

A0 16<br />

SLAVE<br />

STATUS<br />

PF Pf<br />

TAG<br />

63H<br />

I W<br />

N016<br />

COMMENTS<br />

A write is attempted, if there is no fault, data from the memory (AD16) are stored in the tag at<br />

the address A016, the status (AT16) is updated and give information about the tag. If there is a<br />

fault, only the status (AT16) is updated, the high byte gives informations about the fault (ex: no<br />

tag was present). For more information about the status, see BALOGH STATUS DEFINITION.<br />

NE Slave number<br />

AT 16 Status storage address<br />

N016 Number of data to write<br />

A0 16 First address to write in the tag<br />

AD 16 First address in the card of the data to write<br />

See memory<br />

mapping<br />

and<br />

tag mapping<br />

Command to write 10 data at the beginning of an OMX TAG (address 0 to 9) present on<br />

slave 1 transceiver, data to write are stored at the address 3000H of card extended<br />

memory. The operation status will be stored in the accumulator memory at the address<br />

F0H (8F0H in 16 bits addressing)<br />

Mnemonic : IW,1,10,0,3000H,8F0H.


Manuel instructions <strong>CEPR</strong><strong>96</strong> / MRUC20 M<strong>96</strong>.40.02 Rev. may 2003<br />

SYNTAX<br />

Hexadecimal :<br />

Mnemonic :<br />

EXECUTION<br />

EXAMPLE<br />

TAG INDIRECT READ<br />

INDIRECT ADDRESSING - WITHOUT WAITTING<br />

NC 65 NL NB NE N016 A016 AD16 AT16 04<br />

IR.I,NE,N016,A016,AD16,AT16.<br />

EXTENDED MEMORY<br />

AT 16 PF<br />

AT16+1 Pf<br />

A0 16<br />

A016+1 Pf<br />

AD16<br />

AD16+1 Pf<br />

N016 PF( N0)<br />

PF+80H<br />

SYMBOLS DEFINITION LIMITS<br />

N016+1 Pf<br />

SYMBOL<br />

PF(ad. étq. )<br />

PF(ad. étq.)<br />

WITHOUT WAITTING<br />

PAGE 56<br />

SLAVE<br />

STATUS<br />

PF Pf<br />

TAG<br />

DEFINITION LIMITS<br />

NE Slave number (direct number)<br />

AT 16 Status storage address (direct address)<br />

N016 Pointer to the number of data to read<br />

A0 16 Pointer to the first data to read in the tag<br />

AD 16 Pointer to first address in the card to store the<br />

read data<br />

65H<br />

IR.I<br />

COMMENTS<br />

It's a READ TAG operation, but addresses are indirect addressing. Addresses in the<br />

command are pointer to the real addresses.<br />

N0<br />

See memory<br />

mapping<br />

and<br />

tag mapping


SYNTAX<br />

Hexadecimal :<br />

Mnemonic :<br />

EXECUTION<br />

COMMENTS<br />

SYMBOLS<br />

COMMENTS<br />

DEFINITION LIMITS<br />

It's a WRITE TAG operation, but addresses are indirect addressing. Addresses in the<br />

command are pointer to the real addresses.<br />

EXAMPLE<br />

PAGE 57<br />

Manuel instructions <strong>CEPR</strong><strong>96</strong> / MRUC20 M<strong>96</strong>.40.02<br />

TAG INDIRECT WRITE 67H<br />

INDIRECT ADDRESSING - WITHOUT WAITTING IW.I<br />

NC 67 NL NB NE N016 A016 AD16 AT16 04<br />

IW.I,NE,N016,A016,AD16,AT16.<br />

EXTANDED MEMORY<br />

AT 16 PF<br />

AT16+1 Pf<br />

A0 16<br />

A016+1 Pf<br />

AD16<br />

SYMBOL<br />

PF(OMA)<br />

N016 PF( N0)<br />

N016+1 Pf<br />

WITHOUT WAITTING<br />

PF+80H<br />

SLAVE<br />

STATUS<br />

PF Pf<br />

TAG<br />

DEFINITION LIMITS<br />

NE Slave number (direct value)<br />

AT 16 Status storage address (direct address)<br />

N016 Pointer to the number of data to write<br />

A0 16 Pointer to the first data to write in the tag<br />

AD 16 Pointer to the first address in the card of the data<br />

to write<br />

See memory<br />

mapping<br />

and<br />

tag mapping<br />

N0


Manuel instructions <strong>CEPR</strong><strong>96</strong> / MRUC20 M<strong>96</strong>.40.02<br />

SYNTAX<br />

Hexadecimal :<br />

Mnemonic :<br />

EXECUTION<br />

COMMENTS<br />

EXAMPLE<br />

TAG READ 69H<br />

IRA<br />

DIRECT ADDRESSING - WITH WAITTING<br />

NC 69 NL NB NE N016 A016 AD16 AT16 04<br />

IRA,NE,N016,A016,AD16,AT16.<br />

EXTENDED MEMORY<br />

AT 16 PF<br />

AT16+1 Pf<br />

AD 16<br />

AD16+1<br />

WAIT FOR THE<br />

TAG PRESENCE<br />

PF+80H<br />

SYMBOLS DEFINITION LIMITS<br />

PAGE 58<br />

A0 16<br />

SLAVE<br />

STATUS<br />

PF Pf<br />

TAG<br />

N016<br />

COMMENTS<br />

Same command as the IR but the read is processed only when the tag is becomming<br />

present.<br />

SYMBOL DEFINITION LIMITS<br />

NE Slave number<br />

AT 16 Status storage address<br />

N016 Number of data to read in the tag<br />

A0 16 First address to read in the tag<br />

AD 16 First address in the card to store the read data<br />

See memory<br />

mapping<br />

and<br />

tag mapping


SYNTAX<br />

Hexadecimal :<br />

Mnemonic :<br />

EXECUTION<br />

COMMENTS<br />

COMMENTS<br />

Same command as the IW but the write is processed only when the tag is becomming<br />

present.<br />

SYMBOLS DEFINITION LIMITS<br />

EXAMPLE<br />

TAG WRITE<br />

DIRECT ADDRESSING - WITH WAITTING<br />

NC 6B NL NB NE NO16 A016 AD16 AT16 04<br />

IWA,NE,N016,A016,AD16,AT16.<br />

EXTENDED MEMORY<br />

AT 16 PF<br />

AT16+1 Pf<br />

AD 16<br />

WAIT FOR THE<br />

TAG PRESENCE<br />

PF+80H<br />

PAGE 59<br />

Manuel instructions <strong>CEPR</strong><strong>96</strong> / MRUC20 M<strong>96</strong>.40.02<br />

A0 16<br />

SLAVE<br />

STATUS<br />

PF Pf<br />

TAG<br />

SYMBOL DEFINITION LIMITS<br />

NE Slave number<br />

AT 16 Status storage address<br />

N016 Number of data to write<br />

A0 16 First address to write in the tag<br />

AD 16 First address in the card of the data to write<br />

See memory<br />

mapping<br />

and<br />

tag mapping<br />

6BH<br />

IWA<br />

N016


Manuel instructions <strong>CEPR</strong><strong>96</strong> / MRUC20 M<strong>96</strong>.40.02<br />

SYNTAX<br />

Hexadecimal :<br />

Mnemonic :<br />

EXECUTION<br />

COMMENTS<br />

SYMBOLS<br />

COMMENTS<br />

DEFINITION LIMITS<br />

Same command as the IR.I but addresses are indirect addresses<br />

EXAMPLE<br />

SYMBOL<br />

TAG INDIRECT READ<br />

INDIRECT ADDRESSING - WITH WAITTING<br />

NC 6D NL NB NE N016 A016 AD16 AT16 04<br />

IRA.I,NE,N016,A016,AD16,AT16.<br />

EXTENDED MEMORY<br />

AT 16 PF<br />

AT16+1 Pf<br />

A0 16<br />

PF(OMA)<br />

A016+1 Pf<br />

AD16<br />

N016 PF( N0)<br />

N016+1 Pf<br />

WAIT FOR THE<br />

TAG PRESENCE<br />

PF+80H<br />

DEFINITION LIMITS<br />

PAGE 60<br />

SLAVE<br />

STATUS<br />

PF Pf<br />

TAG<br />

NE Slave number (direct number)<br />

AT 16 Status storage address (direct address)<br />

N016 Pointer to the number of data to read<br />

A0 16 Pointer to the first data to read in the tag<br />

AD 16 Pointer to first address in the card to store the<br />

read data<br />

6DH<br />

IRA.I<br />

N016<br />

See memory<br />

mapping<br />

and<br />

tag mapping


SYNTAX<br />

Hexadecimal :<br />

Mnemonic :<br />

EXECUTION<br />

COMMENTS<br />

SYMBOLS<br />

COMMENTS<br />

DEFINITION LIMITS<br />

Same command as the IW.I but addresses are indirect addresses<br />

EXAMPLE<br />

TAG INDIRECT WRITE<br />

INDIRECT ADDRESSING - WITH WAITTING<br />

NC 6F NL NB NE N016 A016 AD16 AT16 04<br />

IWA.I,NE,N016,A016,AD16,AT16.<br />

EXTENDED MEMORY<br />

AT 16 PF<br />

AT16+1 Pf<br />

A0 16<br />

A016+1 Pf<br />

AD16<br />

SYMBOL<br />

PF(OMA)<br />

N016 PF( N0)<br />

N016+1 Pf<br />

WAIT FOR THE<br />

TAG PRESENCE<br />

PF+80H<br />

PAGE 61<br />

Manuel instructions <strong>CEPR</strong><strong>96</strong> / MRUC20 M<strong>96</strong>.40.02<br />

SLAVE<br />

STATUS<br />

PF Pf<br />

TAG<br />

DEFINITION LIMITS<br />

NE Slave number (direct value)<br />

AT 16 Status storage address (direct address)<br />

N016 Pointer to the number of data to write<br />

A0 16 Pointer to the first data to write in the tag<br />

AD 16 Pointer to the first address in the card of the data<br />

to write<br />

6FH<br />

IWA.I<br />

N0<br />

See memory<br />

mapping<br />

and<br />

tag mapping


Manuel instructions <strong>CEPR</strong><strong>96</strong> / MRUC20 M<strong>96</strong>.40.02 Rev. May 2003<br />

TAGS ADDRESSING TABLE<br />

CHANNELS:<br />

<strong>CEPR</strong> <strong>96</strong>:<br />

main channel TR: NE =0<br />

channel CFER: NE =8<br />

CAN channel: NE =10h, 1Fh<br />

MRUC 20:<br />

CAN 0 channel: 00h-0Fh<br />

CAN 1 channel: 10h-1Fh<br />

tag type memory type capacity (bytes) ''byte'' adressing<br />

OF EEPROM 7 0 - 6 h<br />

OL EEPROM 2 0 - 1 h<br />

OMA (D) FRAM internal 64 800 h - 83F h<br />

OMA (D) 2K<br />

OMA (D) 8K<br />

FRAM external<br />

FRAM internal<br />

FRAM internal<br />

FRAM external<br />

PAGE 62<br />

2 K<br />

64<br />

64<br />

8 K<br />

0 - 7FF h<br />

800 h - 83F h<br />

800 h - 83F h<br />

2000 h - 3FFF h<br />

OMX 931 FRAM 8 K 0 - 1FFF h<br />

OMX 931 FRAM 32 K 0 - 7FFF h<br />

OIR RAM 64 K 0 - FFFD h*<br />

GIE FRAM 512 0 - 1FF h<br />

GIE FRAM 2 K 0 - 7FF h<br />

GIE FRAM 8 K 2000 h - 3FFF h<br />

F#/32 EEPROM 32 bits / 5 0 - 4 h<br />

E#/116 EEPROM<br />

access to<br />

64 bytes<br />

0 - 3F h (read)<br />

C h - 4B h (write)<br />

except for multitag<br />

<strong>CEPR</strong> <strong>96</strong>:<br />

0 - 3F h (read & write)


SYNTAX<br />

EXECUTION<br />

SpF/Spf<br />

HEX VALUE CONVERSION<br />

TO ASCII STRING<br />

Hexadecimal : INS,80H,Ld,DpF,Dpf,Ls,SpF,Spf.<br />

Mnemonique : STR,Ld,D,Ls,S.<br />

HEXA SOURCE<br />

Data<br />

Data<br />

Data<br />

Ls<br />

PAGE 63<br />

Manuel instructions <strong>CEPR</strong><strong>96</strong> / MRUC20 M<strong>96</strong>.40.02<br />

ASCII DESTINATION<br />

DpF/Dpf Character<br />

Character<br />

Character<br />

Character<br />

COMMENTS<br />

Convert the data from address S (SpF/Spf) to an ASCII destination table located at the<br />

address D (DpF/Dpf). Each table has a length, if all the characters of the destination<br />

table are not used, free locations are replaced by the space character (20H).<br />

If the length (Ls and/or Ld) is > 80H, addressing becomes indirect, and the command<br />

parameters must indicate the location of pointer for the length and for the table address.<br />

SYMBOLS DEFINITION LIMITS<br />

Ls Length of the source table (hexa number) or<br />

address of the pointer to the length (if > 80H)<br />

Ld Length of the destination table (ASCII) or<br />

address of the pointer to the length (if > 80H)<br />

DpF/Dpf Address of the destination table or pointer<br />

or D to the destination table address (Ld > 80H)<br />

SpF/Spf Address of the source table or pointer to the<br />

ou S source table address (Ls >80H)<br />

EXAMPLE<br />

Direct conversion of the value 100H stored at the addresses 820H and 821H to destination<br />

table of 4 characters stored at the address 810H.<br />

STR,4,810H,2,820H. (result : see below)<br />

Indirect convertion of the value pointed by the data (820H) at the address 840H with a<br />

length of 2 stored at the address 80H. The result will be stored at the address pointed by<br />

the data (810H) at the address 830H. The length (4) of the destination table is stored in<br />

the address 81H.<br />

STR,80H,830h,81H,840H. Source Destination<br />

820H 01 Conversion 810H 20H " "<br />

821H 00 811H 32H "2"<br />

812H 35H "5"<br />

100H = 256 813H 36H "6"<br />

Ld<br />

80H<br />

STR


Manuel instructions <strong>CEPR</strong><strong>96</strong> / MRUC20 M<strong>96</strong>.40.02<br />

SYNTAX<br />

Hexadecimal : INS,81H,Ld,DpF,Dpf,Ls,SpF,Spf.<br />

Mnemonic : VAL,Ld,D,Ls,S.<br />

EXECUTION<br />

SpF/Spf<br />

COMMENTAIRE<br />

DpF/Dpf<br />

SYMBOLS DEFINITION LIMITS<br />

EXAMPLE<br />

Conversion of the string " 256" stored at the address 810H to an area of 2 bytes stored at<br />

the address 820H.<br />

VAL,2,820H,4,810H. (result : see below)<br />

Indirect conversion of the string pointed by the data (810H) at the address 840H. The<br />

length (4) is pointed by the data at the address 80H. The result will be at at the address<br />

pointed by data at the address 830H (820H). The result length (2) is defined by the pointer<br />

at the address 81H.<br />

VAL,80H,830h,81H,840H.<br />

ASCII STRING CONVERSION<br />

TO HEX NUMBER<br />

ASCII source<br />

Character<br />

Character<br />

Character<br />

Character<br />

Ls<br />

Source Destination<br />

810H 20H " " Conversion 820H 01<br />

811H 32H "2" 821H 00<br />

812H 35H "5"<br />

813H 36H "6" 256 = 100H<br />

PAGE 64<br />

Destination<br />

DATA<br />

DATA<br />

DATA<br />

Ld<br />

81H<br />

VAL<br />

Convert the data from address S (SpF/Spf) to an HEX destination table located at the<br />

address D (DpF/Dpf).<br />

If the length (Ls and/or Ld) is > 80H, addressing becomes indirect, and the command<br />

parameters must indicate the location of pointer for the length and for the table address.<br />

Ls Length of the source table (ASCII number) or<br />

address of the pointer to the length (if > 80H)<br />

Ld Length of the destination table (HEX) or<br />

address of the pointer to the length (if > 80H)<br />

DpF/Dpf Address of the destination table or pointer<br />

or D to the destination table address (Ld > 80H)<br />

SpF/Spf Address of the source table or pointer to the<br />

ou S source table address (Ls >80H)


SYNTAX<br />

N DATA BLOCS TRANSFERT<br />

Hexadecimal : INS,82H,L1,D1pF,D1pf,S1pF,S1pf,<br />

L2,D2pF,D2pf,S2pF,S2pf, ....<br />

Ln,DnpF,Dnpf,SnpF,Snpf, LS.<br />

Mnemonic: LMOV.BI,L1,D1,S1,<br />

L2,D2,S2, ....<br />

Ln,Dn,Sn, LS.<br />

PAGE 65<br />

Manuel instructions <strong>CEPR</strong><strong>96</strong> / MRUC20 M<strong>96</strong>.40.02<br />

EXECUTION<br />

N blocs transfert :<br />

- direct addressing (Li < 80H, Di and Si < 8000H).<br />

- indirect addressing (Li >= 80H, Di and Si >= 8000H).<br />

In this case the parameters are placed at the addresses :<br />

Li - 80H = for the length<br />

Di - 8000H = for the destination address<br />

Si - 8000H = for the source address<br />

The indirection is done each time that the MSB of the new address = 1<br />

(value > 80H ou > 8000H)<br />

like this each parameter has his proper indirection level.<br />

WARNING : The board makes no control about the addresses !<br />

COMMENTS<br />

Parameters control :<br />

Example on Li (evalable for Si and Di with 8000H) :<br />

Li < 80H : Li = length<br />

Li >= 80H<br />

(Li-80H) < 80H : (Li-80H) = length<br />

(Li-80H) >= 80H<br />

((Li-80H)-80H) < 80 : ((Li-80H)-80H) = length<br />

((Li-80H)-80H) >= 80<br />

etc .........<br />

SYMBOLS DEFINITION LIMITS<br />

L Length or pointer to the length (if > 80H).<br />

DpF/Dpf Address or pointer to the source (si > 8000H)<br />

ou D<br />

SpF/Spf Address or pointer to the destination<br />

ou S (if >8000H).<br />

LS jump line number after transfert(s) (optional)<br />

82H<br />

LMOV.BI<br />

EXAMPLE<br />

Direct transfert an area of 10 bytes starting at the address 810H to the address 820H and<br />

an area with parameters stored at the address 800H (length), 881H,882H (destination),<br />

883H et 884H (source).<br />

After the transfert, the program continues on the next line (LS is missing).<br />

LMOV.BI,10,820H,810H,<br />

80H,881H,882H.


Manuel instructions <strong>CEPR</strong><strong>96</strong> / MRUC20 M<strong>96</strong>.40.02<br />

SYNTAX<br />

MONO/MULTI TASK SELECTION<br />

PROGRAM BANK AND ACCU. SELECTION<br />

Hexadecimal : INS,7FH,Val.<br />

Mnemonic: SEL,Val.<br />

EXECUTION<br />

Val allows to select the working mode and to manage the memory accumulators:<br />

- Mode mono or multi task.<br />

- Program bank and Accu. durring program excution.<br />

DEFINITION OF VAL<br />

The SEL instruction allows to modify the selected bank and/or accu:<br />

- to down load the program,<br />

- to change the program bank or the accumulator memory durring the program<br />

execution.<br />

If a program doesn't contain the SEL instruction, it will be executed as a monotask<br />

program starting on bank 0 and will used the accumulator 0 (800H-8FFH).<br />

PAGE 66<br />

7FH<br />

SEL<br />

Si le programme contient l'instruction SEL,3xH (mode mutitâche) dans un banc autre que<br />

INIT, l'instruction est ignorée et le programme est poursuivi dans le mode sélectionné à la<br />

mise sous tension.<br />

Description of the VAL bits<br />

b7 b6 b5 b4 b3 b2 b1 b0<br />

0 0 0 0 Accu Num Bank Num<br />

0 0 0 1 Accu Num X X<br />

0 0 1 0 X X Num Banc<br />

0 0 1 1 0 0 Nb de prog.<br />

0 0 1 1 1 1 1 1<br />

EXAMPLE<br />

Comments<br />

Select a bank and an accu<br />

Select the Num Accu<br />

Select the bank Num Banc<br />

Multitask enable on Nb prog.<br />

Select the INIT bank (supervisor)<br />

- Supervisor Bank 3 selection to download the program<br />

SEL,3H.<br />

- Selection of the bank 1 and the accu 2 durring the program execution:<br />

SEL,9H.<br />

- Selection of the mutitask mode with 3 programs to run :<br />

It must be done in the INIT program:<br />

SEL,32H. (execution of the programs 0,1 and 2)


SYNTAX<br />

STATEMENT OF MRER21 MODULES<br />

CAN 0 NETWORK<br />

Hexadecimal: INS,64H,ADph 0,ADph 1, .... ,ADph n.<br />

Mnemonic:<br />

EXECUTION<br />

PAGE 67<br />

Manuel instructions <strong>CEPR</strong><strong>96</strong> / MRUC20 M<strong>96</strong>.40.02<br />

64H<br />

The instruction 64H enables to state the MRER21 modules on the CAN 0 network<br />

(MRUC20 only).<br />

The mentioned addresses are the modules physical addresses (refer to the main<br />

manual). The instruction transforms the physical addresses into logical adresses (NE<br />

in the instructions pertaining to the network slaves).<br />

These logical adresses are alloted in the order of entry of the code. The first physical<br />

address is associated to the slave # 0, the second one to the slave # 1, etc...<br />

Note: a physical address being = 0 enables to book a logical slave number,<br />

notwithstanding the physical absence of the module on the network.<br />

EXAMPLE<br />

Statement of MRER21 modules with the physical addresses attached:<br />

C0H, E0H, C1H, E1H,C3H, E3H.<br />

The desired logical addresses being:<br />

the statement is:<br />

- 0 for the master channel of module 0,<br />

- 1 for the slave channel of module 0,<br />

- 2 for the master channel of module 1,<br />

- 3 for the slave channel of module 1,<br />

- 6 for the master channel of module 3,<br />

- 7 for the slave channel of module 3,<br />

INS,64H,C0H,E0H,C1H,E1H,0H,0H,C3H,E3H.


Manuel instructions <strong>CEPR</strong><strong>96</strong> / MRUC20 M<strong>96</strong>.40.02<br />

SYNTAX<br />

STATEMENT OF MRER21 MODULES<br />

CAN 1 NETWORK<br />

Hexadecimal : INS,66H,ADph 0,ADph 1, .... ,ADph n.<br />

Mnemonic:<br />

EXECUTION<br />

PAGE 68<br />

66H<br />

The instruction 66H enables to state the MRER21 modules on the CAN 1 network<br />

(MRUC20 or <strong>CEPR</strong><strong>96</strong>).<br />

The mentioned addresses are the modules physical addresses (refer to the main<br />

manual). The instruction transforms the physical addresses into logical adresses (NE<br />

in the instructions pertaining to the network slaves).<br />

These logical adresses are alloted in the order of entry of the code. The first physical<br />

address is associated to the slave # 10H, the second one to the slave # 11H, etc...<br />

Note: a physical address being = 0 enables to book a logical slave number,<br />

notwithstanding the physical absence of the module on the network<br />

EXAMPLE<br />

Statement of MRER21 modules with the physical addresses attached:<br />

C0H, E0H, C1H, E1H,C3H, E3H.<br />

The desired logical addresses being:<br />

the statement is:<br />

- 10H for the master channel of module 0,<br />

- 11H for the slave channel of module 0,<br />

- 12H for the master channel of module 1,<br />

- 13H for the slave channel of module 1,<br />

- 16H for the master channel of module 3,<br />

- 17H for the slave channel of module 3,<br />

INS,66H,C0H,E0H,C1H,E1H,0H,0H,C3H,E3H.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!