Update PlugYLocal.dpr

This commit is contained in:
LAutour 2016-04-20 08:23:52 +05:00
parent 5a1eb33f03
commit bcaa0acf0b

View File

@ -12,7 +12,7 @@ library PlugYLocal;
using PChar or ShortString parameters. }
uses
KOL;
KOL; //library from http://www.kolmck.net/
//SysUtils,
//Classes;
@ -158,8 +158,8 @@ var
(name: 'STR_TOGGLE_TO_SHARED'; value: 'Toggle to Shared Stash'),
(name: 'STR_STASH_PREVIOUS_INDEX'; value: 'Previous Index : by %d Pages (+Shift: %d)'),
(name: 'STR_STASH_NEXT_INDEX'; value: 'Next Index : by %d Pages (+shift: %d)'),
(name: 'STR_PERSONAL_PAGE_NUMBER'; value: 'Personal Page n°%u'),
(name: 'STR_SHARED_PAGE_NUMBER'; value: 'Shared Page n°%u'),
(name: 'STR_PERSONAL_PAGE_NUMBER'; value: 'Personal Page n°%u'),
(name: 'STR_SHARED_PAGE_NUMBER'; value: 'Shared Page n°%u'),
(name: 'STR_NO_SELECTED_PAGE'; value: 'No selected page'),
(name: 'STR_PUT_GOLD'; value: 'Put Gold'),
(name: 'STR_TAKE_GOLD'; value: 'Take Gold'),
@ -379,26 +379,26 @@ function ColorApi2ColorCode(Src: PAnsiChar; Dst: PAnsiChar;
asm
//backup
PUSHF
CLD //инкремент для строковых команд
CLD //èíêðåìåíò äëÿ ñòðîêîâûõ êîìàíä
PUSH ESI
PUSH EDI
PUSH EBX
PUSH EBP
PUSH EDX //сохраняем начальный адрес приемника
PUSH EDX //ñîõðàíÿåì íà÷àëüíûé àäðåñ ïðèåìíèêà
MOV EDI, Dst
TEST Src, Src //проверка на пустую строку
TEST Src, Src //ïðîâåðêà íà ïóñòóþ ñòðîêó
JZ @Exit
MOV ESI, Src
// в ECX хранится количество оставшихся символов из Src
// â ECX õðàíèòñÿ êîëè÷åñòâî îñòàâøèõñÿ ñèìâîëîâ èç Src
@NextChar:
//загрузка очередного символа в EAX
//çàãðóçêà î÷åðåäíîãî ñèìâîëà â EAX
XOR EAX, EAX
LODSB //MOV AL, [ESI]+
//проверка на нулевой символ (конец строки)
//ïðîâåðêà íà íóëåâîé ñèìâîë (êîíåö ñòðîêè)
TEST AL, AL
JZ @Exit
//проверка на символ '\'
//ïðîâåðêà íà ñèìâîë '\'
CMP AL, '\'
JE @Slash
@ -406,13 +406,13 @@ asm
//normal chars
STOSB //MOV [EDI]+, AL
//уменьшение счетчика необработанных байтов и перед в начало цикла
//óìåíüøåíèå ñ÷åò÷èêà íåîáðàáîòàííûõ áàéòîâ è ïåðåä â íà÷àëî öèêëà
@Loop:
LOOP @NextChar
@Exit:
MOV BYTE PTR [EDI], $00 //нулевой символ в конце выходной строки
POP EAX //восстанавливаем начальный адрес приемника
MOV BYTE PTR [EDI], $00 //íóëåâîé ñèìâîë â êîíöå âûõîäíîé ñòðîêè
POP EAX //âîññòàíàâëèâàåì íà÷àëüíûé àäðåñ ïðèåìíèêà
XCHG EAX, EDI
//get length of Dst
SUB EAX, EDI
@ -425,15 +425,15 @@ asm
RET
@Slash:
//проверка на наличие следующего символа
//ïðîâåðêà íà íàëè÷èå ñëåäóþùåãî ñèìâîëà
CMP ECX, 1
JB @CopyChar // if ECX < 1
//загрузка следующего символа
//çàãðóçêà ñëåäóþùåãî ñèìâîëà
LODSB //MOV AL, [ESI]+
//проверка символа на код перевода строки
//ïðîâåðêà ñèìâîëà íà êîä ïåðåâîäà ñòðîêè
CMP AL, 'n'
JNZ @TestColor
//поправка ECX
//ïîïðàâêà ECX
DEC ECX
//test Save2Tbl
@ -450,62 +450,62 @@ asm
MOV AL, $0A
JMP @CopyChar
//проверка на строки установки цвета шрифта:
//ïðîâåðêà íà ñòðîêè óñòàíîâêè öâåòà øðèôòà:
@TestColor:
//проверка на использование макро определений цвета шрифта
//ïðîâåðêà íà èñïîëüçîâàíèå ìàêðî îïðåäåëåíèé öâåòà øðèôòà
//CMP MacroColorView, $00
//JE @StoreSlash
//backup
PUSH ECX
PUSH EDI
//восстановление ESI
//âîññòàíîâëåíèå ESI
DEC ESI
//сохранение источнка
//ñîõðàíåíèå èñòî÷íêà
MOV EBX, ESI
//загрузка количества сравниваемых строк
//çàãðóçêà êîëè÷åñòâà ñðàâíèâàåìûõ ñòðîê
MOV EAX, NcColor
//загрузка адреса последней строки из массива строк
//установки цвета шрифта (без '')
//çàãðóçêà àäðåñà ïîñëåäíåé ñòðîêè èç ìàññèâà ñòðîê
//óñòàíîâêè öâåòà øðèôòà (áåç '')
MOV EBP, pColor
//загрузка адреса массива длин строк без '\' и
//(-1, т.к. будет прибавлятся EAX)
//çàãðóçêà àäðåñà ìàññèâà äëèí ñòðîê áåç '\' è
//(-1, ò.ê. áóäåò ïðèáàâëÿòñÿ EAX)
LEA EDX, [cColLength - 1]
@CmpStr:
//загрузка адреса строки приемника
//çàãðóçêà àäðåñà ñòðîêè ïðèåìíèêà
MOV EDI, EBP
//загрузка счетчика символов строки
//çàãðóçêà ñ÷åò÷èêà ñèìâîëîâ ñòðîêè
MOVZX ECX, BYTE PTR [EDX + EAX]
//сравнение строк
//(прерывание, если не равны, т.е. длину Src можно не проверять)
//ñðàâíåíèå ñòðîê
//(ïðåðûâàíèå, åñëè íå ðàâíû, ò.å. äëèíó Src ìîæíî íå ïðîâåðÿòü)
REPE CMPSB
//проверка результата сравнения строк
//ïðîâåðêà ðåçóëüòàòà ñðàâíåíèÿ ñòðîê
JZ @ColorCode
//восстановление адреса строки источника
//âîññòàíîâëåíèå àäðåñà ñòðîêè èñòî÷íèêà
MOV ESI, EBX
//сдвиг адреса строки приемника на следующую строку
//ñäâèã àäðåñà ñòðîêè ïðèåìíèêà íà ñëåäóþùóþ ñòðîêó
SUB EBP, LenCode
//декремент счетчика строк
//äåêðåìåíò ñ÷åò÷èêà ñòðîê
DEC EAX
//проверка на повтор цикла сравнения строк
//ïðîâåðêà íà ïîâòîð öèêëà ñðàâíåíèÿ ñòðîê
JA @CmpStr //if EAX > 0
//символ '\' был просто символом
//ñèìâîë '\' áûë ïðîñòî ñèìâîëîì
//restore
POP EDI
POP ECX
@StoreSlash:
//запись кода символа '\'
//çàïèñü êîäà ñèìâîëà '\'
MOV AL, '\'
JMP @CopyChar
//запись кода смены известного цвета шрифта
//в AL номер строки из cColor
//çàïèñü êîäà ñìåíû èçâåñòíîãî öâåòà øðèôòà
//â AL íîìåð ñòðîêè èç cColor
@ColorCode:
//restore
POP EDI
//добавка кода цвета к ColorCode
MOVZX EDX, BYTE PTR [EDX + EAX]//загрузка счетчика символов строки
//äîáàâêà êîäà öâåòà ê ColorCode
MOVZX EDX, BYTE PTR [EDX + EAX]//çàãðóçêà ñ÷åò÷èêà ñèìâîëîâ ñòðîêè
ADD AL, $2E //1..14 + $2E = $2F..$3C
//backup EAX
MOV ECX, EAX
@ -523,9 +523,9 @@ asm
@FullColorCode:
//restore ECX
POP ECX
SUB ECX, EDX //коррекция ECX на длину строки
JZ @Exit //конец строки источника
//ESI после сравнения уже указывает на следующий символ
SUB ECX, EDX //êîððåêöèÿ ECX íà äëèíó ñòðîêè
JZ @Exit //êîíåö ñòðîêè èñòî÷íèêà
//ESI ïîñëå ñðàâíåíèÿ óæå óêàçûâàåò íà ñëåäóþùèé ñèìâîë
JMP @NextChar //ECX >= 1
end;
@ -743,7 +743,7 @@ asm
CMP AL, $C0 //11000000
JAE @Exit //Error UTF8: 11xxxxxx ( if AL >= $C0)
//UTF8: 1110xxxx 10xxxxxx 10xxxxxx
//get bytes UCS2 на: xx00000:0000xxxx
//get bytes UCS2 íà: xx00000:0000xxxx
AND BX, $003F //DX := 00000000:00xxxxxx
ROR BX, 2 //BL := 0000xxxx; BH := xx000000
//get low byte UTF8