Транспорт от терминала към сървъра
Пакетът от терминала към сървъра има следния състав:
4 байта int4 байта int4 байта int(размер-12) байта
размер

Това е общия размер
на всички следващи
данни описани в дясно
Команда

цяло число
от 10001 до 19999
Код компресия (0/1)

1=компресиран файл
2=некомпресиран файл
файл

големината на файла може да е
от 1 до 2000000-12 байта

Протокол на командите от терминала към сървъра:
команда описание размер формат компресиран действие
10001 Идентификация на терминала
797 s254 стринг="VT3"
int window_dx
int window_dy
int taskbarheight
2int fixedfontsz
2int controlfontsz
int terminalstarttick
s254 usernm
s254 userpw
 1 Това трябва да е първата команда, която терминалът изпраща веднага след
свързването. Сървърът отговаря със собщение 5 (Ok)
и веднага стартира програмата S\DESK.RVM
тоест ивицата на задачите с бутон "Старт" в долния край на прозореца
10002 Натиснат Клавиш
keytypes:
1=CTRL, SHIFT, ALT
2=arrows INS DEL group
3=func F1..F11
4=CTRL, SHIFT F1..F11
 ALT F1..F11 (кода е +100)
5=letter
8 int keyvalue
int keytype
 0 Клавишите Ctrl, Shift превключват едноименни флагове
в O-програмата за статуса на юзера.
Всички клавиши се препращат към фокусирания процес.
10003 Отпуснат Клавиш
8 int keyvalue
int keytype=0
 0 Отпускането не се предава към апликацията. О-програмата само превключва Shift и Ctrl
Терминалът изпраща отпускане само за клавишите Shift и Ctrl.
10004 Натиснат бутон на мишката
1=left
2=right
12 int button x y
 0 О-програмата поддържа статус за двата бутона
mouse_lbutton, mouse_rbutton, както и точката mouse_x,mouse_y.
Тези флагове се превключват от събитията свързани с мишката. 10004 .. 10007
Препращат се към към фокусирания процес.
10005 Отпуснат бутон на мишката
12 int button x y
 0
10006 Колелце на мишката
step = (1,-1)
4 int step
 0
10007 Движение на мишката
8 int x y
 0 Движението на мишката засега се предава.
Ако това е нужно, ще бъде уточнено по-късно.
10008 WM_RESIZE - нов размер
на терминалния
прозорец
8 int dx dy
 0 Тази команда предизвиква промяна само в таскбара.
Прозорците вътре в терминала не се променят.
10009 Фокус
8 int pid wid
 0 Терминалът изпраща фокус когато щракнем с мишката върху прозорец, или таскбара.
10010 Старт на RVM програма
в прозорец

length(cmd) s255 cmd
 0 Команда към O-програмата за да стартира посочена RVM-програма
с линия cmd. Програмата се стартира като прозорец и се докладва в Таскбара.
10011 Затвори прозорец
4 int pid
 0 Тази команда изключва процес посочен от pid.
Тя се излъчва когато щракнем с мишката в горния десен
ъгъл (x) на прозореца, изобразяващ процеса.
10012 Преместване или размер
на прозорец

12 int code
int dx dy
 0 При char(code)=#0 прозорецът се отмества с dx dy
Иначе прозорецът се разширява с dx dy
R D 3 надолу и надясно
L U 1 нагоре и наляво
2 нагоре и надясно
4 надолу и наляво
10013 Промяна в състоянието
на прозорец

12 int code wstate n
code must be W
 0 wstate=1 Нормален прозорец
wstate=2 Минимален прозорец
wstate=3 Максимален прозорец
10014 Искам файл
12 int fpid fcom fsz  0 fpid процес на файловия прозорец
fcom команда
fsz размер
Терминалът изпраща тази команда към сървъра, за да поиска файлов буфер,
след като е получил команда 42-initfile или 43-filebuffer.
10015 Старт на RVM процес
без доклад в таскбара

length(cmd) s255 cmd
 0 Това е команда към O-програмата за да стартира посочената RVM-програма
с линия cmd. Програмата се стартира само като процес, не се докладва в Таскбара.
10016 Команда
идваща от бутон,
меню, или друга
контрола в терминала
4+4
[+1+len(ocmd)]
int pid code
s254 ocmd
 0 Това е команда възникнала след бутон или друга контрола от процес pid.
code има запазени стойности
1=натиснат е бутон OK; 2 = пряка команда към O; 3 = стартирай RVM програма
ако code=2 ocmd може да бъде
QUITTERMINAL = изключи юзера; RENEWTERMINAL = обнови терминала.
Иначе към процеса pid се изпраща съобщение от типа
0008 0004 където 0008 е команда "натиснато е копче" а 0004 е форматиран стринг за изпратения код code
10017 Събитие в текст
идващо от Edit
контрола в терминала
20 int pid
int ev id mx my
 0 В текстова контрола е натиснат клавиш или е възникнало събитие от мишката.
pid процес; id контрола; ev събитие:

mouse_cm_lbutton=3 - натиснат е ляв бутон на мишката
mouse_cm_enddrag=6 - отпуснат е ляв бутон на мишката
mouse_cm_movedrag=5 - мишката драгва блок в текста
ttovm_cm_paste=7 - команда Постави/Paste/ текстов клип;
- в първите три случая mx е позицията на курсора в символи (0-based)

key_cm_normal=0 - натиснат е клавиш - буква, или [Enter=13, Esc=27, BackSpace=8]
key_cm_func=1 - натиснат е клавиш от група стрелки или F-клавиш; в този случай
my трябва да е класиращ код за клавиша.
Kлавиша е в mx.
10018 Файлов пренос
от терминала към
сървъра (TTS)
24
+len(fnm)+1
+datasize
int pid fid fcom
int ftype fpos fsize
s254 fnm
data
 0 Сървърът може да изисква от терминала файл използувайки последователно
двете команди: cmd_demandfile=68 и cmd_sendfile=69
Терминалът отговаря с 10018
pid процес; fid файл_номер; fcom команден код:
ftyp-тип на файла; fpos позиция за следващия даннов участък;
fsize размер на данните.
tts_filerequested=2 - отвори файл - отговор на cmd_demand_file
В този случай fsize е размера на целия файл. Няма данни.
tts_receivefilepart=3 - приеми участък от файла - отговор на cmd_send_file
В този случай следват данни fsize байта.
tts_receivefileerror=4 - грешка възникнала терминала
10019 Указание-стойност
на контрола, възникнала
в терминала и насочена
към процес в сървъра
4+4
[+1+len(cm)]
int pid code
s254 cm
 0 Това е променлива, например текуща линия в лист-бокс, която се изпраща
към сървъра. pid процес; code вътрешен код; cm команден стринг