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