The complements of an article are defined in 4 structures of data:
1.
Descriptives Array - Array with 3000 articles' descriptives and complements with 16 characters each.
3000x16 bytes
These are the same descriptives being used for the articles, which makes the terminal identify the pages of complements correctly.
Before the first complements page, a descriptive should be inserted containing: "COMPLEMENTS", followed by an empty descriptive.
After the last page of descriptives, a last descriptive should be inserted like this: "COMPLEMENTS END".
Each page of complements consists of one or more descriptives in consecutive positions. An empty descriptive assigns the end of each page.

2.
Page type - Array of 256 of 8 bits
256 bytes
Possible types:
1 - Pointer indicates the page with single choice option (i.e: Full/Short)
5 - Pointer indicates the page with multiple choice option (i.e: With Cream/Cold Cup)
129 - Pointer indicates automatic page with option for single choice (i.e: Full/Short)
133 - Pointer indicates automatic page with choices for multiple choice (i.e: With Cream/Cold Cup)
0 - End of the complements for this article

3.
Pointer to the page - Array of 256 Integers of 32 bits
256x4 bytes
Contains the index of the first descriptive from the complements page
The buffers for this data structure will be sent to the terminal through the already used routine for the transmission of the articles descriptives.
The positions map stays as follows:
4.
Pointers/typs index list page for each artice - Array de 3040 integers of 8 bits
Positions map:
0 a 9
Booked
11 a 13
NOT USED
14
"Table"
15
"Dish quantity"
16
"Sending"
17
NOT USED
18
NOT USED
19
"Guests No." or "PLACE"
20
"Other"
21 to 27
Functions Name "Other"
28 a 29
"Booked"
30
Payment Methods
31
"Print y/n"
32
Prompt "?" ( by default )
33 to 3071
Articles Descriptives from 1 to 3039
3072
1 - Order
3073
2 - Cancelation
3074
3 - Subtotal
3075
4 - Bill
3076
5 - Transfers
3077
6 - Partial Payment
3078
7 - Other
3079
8 - Discount
9
9 - Contiguration
3080
1 - Command
3081
2 - License
3082
3 - Config.A
3083
4 - Config.B
3084
5 – Config.C
3085
6 - Receive PLUs
3086
7 - Erase PLUs
10
8 - Send PLUs+C
3087
Quit [Enter]
3088
Array of Pages
(type of)
bytes 0 to 15
(...)
(...)
3103
bytes 240 to 255
3104
Array of pages
(pointer to)
Integers of 32 bits 0 to 3
(...)
(...)
3167
Integers of 32 bits 252 to 255
3168
Index of the array of pages per article
bytes 0 to 15
(...)
(..)
3358
bytes 1024 to 1039
3999
4 bytes w/  nº of descriptives to receive
Example:
Coffee [Full or short] [in cold cup and/or double and/or with cream]
Descriptives
100    COFFEE
101    TEA
102    BARLEY
103
499    COMPLEMENTS
500    FULL
501    SHORT
502
503    IN COLD CUP
504    DOUBLE
505    WITH CREAM
506
999    COMPLEMENTS END
3088    0,   1,   5,  0,0,0,0,0,0,0,0,0,0,0,0,0
(8 bits,  complements pages for the COFFEE - types)
3104    0, 500, 503,  0
(32 bits, pages of complements for the COFFEE - pointers)
3168    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
(index for the plus from 0 to 15)
...
3174    0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0
(index for the plus 96 to 111, the 101 is the COFFEE,
the index 1 for COFFEE indicates that the COFFEE is referring to the page starting from position 1 of the array