170 lines
3.6 KiB
NASM
170 lines
3.6 KiB
NASM
|
|
||
|
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
|