kolibrios-fun/programs/develop/libraries/charset/charset.asm

170 lines
3.6 KiB
NASM
Raw Normal View History

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