Manual CEPR 96 - Balogh technical center
Manual CEPR 96 - Balogh technical center
Manual CEPR 96 - Balogh technical center
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
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.