File-Manager/FVIEW/CHFONT.ASM
2025-04-05 01:58:39 +10:00

134 lines
3.1 KiB
NASM
Executable File

; ¢ë§®¢ ¨§ hex-®ª­ 
change_code_page1:
ld hl,ABB87 ; ¢ë¢¥á⨠áâà ­¨æã hex-¤ ¬¯ 
jr $+5
; ¢ë§®¢ ¨§ ascii-®ª­ 
change_code_page:
ld hl,AB390 ; ¢ë¢¥á⨠áâà ­¨æã ⥪áâ 
push hl ; ¢¥ªâ®à ¢ á⥪
ld hl,code_page ; 0/1/2 (Dos/Win/Koi)
ld a,(hl)
inc a
cp 3
jr nz,$+3
xor a
ld (hl),a
push af
ld c,a
add a,a
add a,c
ld c,a
ld b,0
ld a,(viewer_mode) ; 0/1 ०¨¬ ¢ìî¥à  (­®à¬./¯ ­¥«ì­ë©)
or a
jr nz,ch_code_pg1
ld hl,TAE00 ; "WinKoiDos"
ld de,TAE02 ; "DOSWINKOI"
add hl,bc
ex de,hl
add hl,bc
ex de,hl
push de
push hl
push hl
ld de,TA29D+1 ; F8-¯ã­ªâ ASCII key-¡ à 
call ch_code_pg
pop hl
ld de,TA33D+1 ; F8-¯ã­ªâ HEX key-¡ à 
call ch_code_pg
; key-¡ à
ld de,1F39h ; Y/X ¯®«®¦.
ld c,84h ; ãáâ. ªãàá®à
rst 08h
pop hl ; ®âªã¤ 
ld bc,0386h ; ¢ë¢¥á⨠áâப㠢 3 ᨬ¢®« 
rst 08h
; áâ â. áâப 
ld de,0023h ; Y/X ¯®«®¦.
ld c,84h ; ãáâ. ªãàá®à
rst 08h
pop hl ; ®âªã¤ 
ld bc,0386h ; ¢ë¢¥á⨠áâப㠢 3 ᨬ¢®« 
rst 08h
ch_code_pg1:
pop af ; ⥪. ª®¤¨à®¢ª 
; ª®¤®¢ ï â ¡«¨æ 
ld hl,code_tables ; win-1251
dec a
jr z,$+5
ld hl,code_tables+128 ; koi8-r
ld (addr_code_table+1),hl
ret
ch_code_pg:
ld bc,3
ldir
ret
;-------------------------------------------------
; ‚§ïâì ᨬ¢®« ¨§ ª®¤®¢®© â ¡«¨æë
;-------------------------------------------------
char_code_page:
cp 80h ; "€"
ret c
db 0Eh ; ld c,..
code_page:
db 0
dec c
inc c
ret z
exx
and 7Fh
ld l,a
ld h,0
addr_code_table:
ld bc,code_tables ; win-1251
add hl,bc
ld a,(hl)
exx
ret
;-------------------------------------------------
; Š®¤ë 2-© ¯®«®¢¨­ë ascii-â ¡«¨æë
;-------------------------------------------------
code_tables:
; windows-1251
db 3Fh,3Fh,27h,3Fh,22h,3Ah,0C5h,0D8h
db 3Fh,25h,3Fh,3Ch,3Fh,3Fh,3Fh,3Fh
db 3Fh,27h,27h,22h,22h,07h,2Dh,2Dh
db 3Fh,54h,3Fh,3Eh,3Fh,3Fh,3Fh,3Fh
db 0FFh,0F6h,0F7h,3Fh,0FDh,3Fh,0B3h,15h
db 0F0h,63h,0F2h,3Ch,0BFh,2Dh,52h,0F4h
db 0F8h,2Bh,49h,69h,3Fh,0E7h,14h,0FAh
db 0F1h,0FCh,0F3h,3Eh,3Fh,3Fh,3Fh,0F5h
db 80h,81h,82h,83h,84h,85h,86h,87h
db 88h,89h,8Ah,8Bh,8Ch,8Dh,8Eh,8Fh
db 90h,91h,92h,93h,94h,95h,96h,97h
db 98h,99h,9Ah,9Bh,9Ch,9Dh,9Eh,9Fh
db 0A0h,0A1h,0A2h,0A3h,0A4h,0A5h,0A6h,0A7h
db 0A8h,0A9h,0AAh,0ABh,0ACh,0ADh,0AEh,0AFh
db 0E0h,0E1h,0E2h,0E3h,0E4h,0E5h,0E6h,0E7h
db 0E8h,0E9h,0EAh,0EBh,0ECh,0EDh,0EEh,0EFh
; koi8-r
db 0C4h,0B3h,0DAh,0BFh,0C0h,0D9h,0C3h,0B4h
db 0C2h,0C1h,0C5h,0DFh,0DCh,0DBh,0DDh,0DEh
db 0B0h,0B1h,0B2h,0F4h,0FEh,0F9h,0FBh,0F7h
db 0F3h,0F2h,0FFh,0F5h,0F8h,0FDh,0FAh,0F6h
db 0CDh,0BAh,0D5h,0F1h,0D6h,0C9h,0B8h,0B7h
db 0BBh,0D4h,0D3h,0C8h,0BEh,0BDh,0BCh,0C6h
db 0C7h,0CCh,0B5h,0F0h,0B6h,0B9h,0D1h,0D2h
db 0CBh,0CFh,0D0h,0CAh,0D8h,0D7h,0CEh,0FCh
db 0EEh,0A0h,0A1h,0E6h,0A4h,0A5h,0E4h,0A3h
db 0E5h,0A8h,0A9h,0AAh,0ABh,0ACh,0ADh,0AEh
db 0AFh,0EFh,0E0h,0E1h,0E2h,0E3h,0A6h,0A2h
db 0ECh,0EBh,0A7h,0E8h,0EDh,0E9h,0E7h,0EAh
db 9Eh,80h,81h,96h,84h,85h,94h,83h
db 95h,88h,89h,8Ah,8Bh,8Ch,8Dh,8Eh
db 8Fh,9Fh,90h,91h,92h,93h,86h,82h
db 9Ch,9Bh,87h,98h,9Dh,99h,97h,9Ah