0,0 → 1,170 |
|
format MS COFF |
|
public EXPORTS |
|
section '.flat' code readable align 16 |
|
; int version() |
version: |
mov eax, 1 |
ret |
|
|
; void __stdcall dos2win (const char text_in[], char text_out[]) |
dos2win: |
push ecx |
push edx |
|
mov ecx, [esp+12] |
mov edx, [esp+16] |
|
pushad |
|
mov ebx, d2w |
mov [charset], ebx |
call translate8 |
|
popad |
|
pop edx |
pop ecx |
ret 8 |
|
; void __stdcall win2dos (const char text_in[], char text_out[]) |
win2dos: |
push ecx |
push edx |
|
mov ecx, [esp+12] |
mov edx, [esp+16] |
|
pushad |
|
mov ebx, w2d |
mov [charset], ebx |
call translate8 |
|
popad |
|
pop edx |
pop ecx |
ret 8 |
|
; void __stdcall koi2dos (const char text_in[], char text_out[]) |
koi2dos: |
push ecx |
push edx |
|
mov ecx, [esp+12] |
mov edx, [esp+16] |
|
pushad |
|
mov ebx, k2d |
mov [charset], ebx |
call translate8 |
|
popad |
|
pop edx |
pop ecx |
ret 8 |
|
translate8: |
mov byte al, [ecx] |
|
cmp al, 0 |
je _translate8_end |
|
cmp al, 127 |
jb _translate8_copy |
|
and eax, 127 |
mov ebx, [charset] |
add ebx, eax |
|
mov byte al, [ebx] |
|
_translate8_copy: |
mov byte [edx], al |
|
inc edx |
inc ecx |
|
jmp translate8 |
|
_translate8_end: |
mov byte [edx], 0 |
ret |
|
|
align 16 |
EXPORTS: |
dd szVersion, version |
dd szDos2win, dos2win |
dd szWin2dos, win2dos |
dd szKoi2dos, koi2dos |
dd 0, 0 |
|
szVersion db 'version',0 |
szDos2win db 'dos2win',0 |
szWin2dos db 'win2dos',0 |
szKoi2dos db 'koi2dos',0 |
|
d2w db 192, 193, 194, 195, 196, 197, 198, 199 |
db 200, 201, 202, 203, 204, 205, 206, 207 |
db 208, 209, 210, 211, 212, 213, 214, 215 |
db 216, 217, 218, 219, 220, 221, 222, 223 |
db 224, 225, 226, 227, 228, 229, 230, 231 |
db 232, 233, 234, 235, 236, 237, 238, 239 |
db 32, 32, 32, 32, 32, 32, 32, 32 |
db 32, 32, 32, 32, 32, 32, 32, 32 |
db 32, 32, 32, 32, 32, 32, 32, 32 |
db 32, 32, 32, 32, 32, 32, 32, 32 |
db 32, 32, 32, 32, 32, 32, 32, 32 |
db 32, 32, 32, 32, 32, 32, 32, 32 |
db 240, 241, 242, 243, 244, 245, 246, 247 |
db 248, 249, 250, 251, 252, 253, 254, 255 |
db 168, 184, 170, 186, 175, 191, 161, 162 |
db 176, 32, 32, 32, 185, 164, 32, 32 |
|
|
w2d db 32, 32, 44, 32, 34, 32, 32, 32 |
db 94, 32, 32, 60, 32, 32, 32, 32 |
db 32, 39, 39, 34, 34, 32, 45, 45 |
db 126, 32, 32, 62, 32, 32, 32, 32 |
db 32, 246, 247, 74, 253, 131, 32, 32 |
db 240, 32, 242, 34, 32, 32, 32, 244 |
db 248, 32, 73, 105, 163, 32, 32, 250 |
db 241, 252, 243, 34, 106, 83, 115, 245 |
db 128, 129, 130, 131, 132, 133, 134, 135 |
db 136, 137, 138, 139, 140, 141, 142, 143 |
db 144, 145, 146, 147, 148, 149, 150, 151 |
db 152, 153, 154, 155, 156, 157, 158, 159 |
db 160, 161, 162, 163, 164, 165, 166, 167 |
db 168, 169, 170, 171, 172, 173, 174, 175 |
db 224, 225, 226, 227, 228, 229, 230, 231 |
db 232, 233, 234, 235, 236, 237, 238, 239 |
|
|
k2d db 196, 179, 218, 191, 192, 217, 195, 180 |
db 194, 193, 197, 223, 220, 219, 221, 222 |
db 176, 177, 178, 32, 254, 249, 251, 32 |
db 32, 32, 32, 32, 248, 32, 250, 32 |
db 205, 186, 184, 241, 214, 201, 184, 183 |
db 187, 212, 211, 200, 190, 189, 188, 198 |
db 199, 204, 181, 240, 182, 185, 209, 210 |
db 203, 207, 208, 202, 216, 215, 206, 32 |
db 238, 160, 161, 230, 164, 165, 228, 163 |
db 229, 168, 169, 170, 171, 172, 173, 174 |
db 175, 239, 224, 225, 226, 227, 166, 162 |
db 236, 235, 167, 232, 237, 233, 231, 234 |
db 158, 128, 129, 150, 132, 133, 148, 131 |
db 149, 136, 137, 138, 139, 140, 141, 142 |
db 143, 159, 144, 145, 146, 147, 134, 130 |
db 156, 155, 135, 152, 157, 153, 151, 154 |
|
section '.data' data readable writable align 16 |
|
charset rd 1 |