You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
678 lines
20 KiB
678 lines
20 KiB
|
|
;========================================================================;
|
|
; ;
|
|
; GLOBAL DATA ;
|
|
; ;
|
|
;========================================================================;
|
|
;
|
|
; 이 영역은 한글 BIOS 전체적으로 사용되거나 외부 화일과 interface를 필요로하
|
|
; 는 경우만을 나타낼것.
|
|
;
|
|
|
|
public KbStat, Card1st, Card2nd, HeKey, HjKey, HjStat, DisplayStat, KseCard
|
|
public ModeStat, MemStat, Printer, CodeStat, HanStat, HjMenuStat, ErrStat
|
|
public MachineType, ModeId, WinOffset, WinSegment, KbMisc, VideoActive
|
|
public iVersion, HotStat, KbdType, HanSavePtr
|
|
|
|
public HjMenuLine, UdcTblPtr, CodeBuf2Addr, EndSegment, EndOffset
|
|
public EmsHandle, MaxMemSize, EmsSeg, CurEmsPage, CodeBufSize, MemSize
|
|
|
|
public OldVdParms, OldSavePtr, OldKbInt, OldVideo, OldRtcInt, OldKbInt
|
|
public OldInt17, OldInt15, OldKbioInt
|
|
|
|
public PatGenAddr, HanPatternPtr, Ks2ChAddr
|
|
public HanAddr, HanAddrH, UdcAddr, UdcAddrH
|
|
public HanOn1st, HanOff1st, HanOn2nd, HanOff2nd
|
|
public GetHan1st, GetUdc1st, PutUdc1st, GetHan2nd, GetUdc2nd, PutUdc2nd
|
|
|
|
public CompleteCharCnt, CompleteCharBuf, InterimCharCnt
|
|
public InterimCharBuf, Auto, TmpKbdType
|
|
public InterimCurPage,InterimMaxCols,InterimCurPos
|
|
public SavedChar1,SavedChar2
|
|
public MenuPtr, CurrMenuCnt, SaveCurrPage, CrtMaxCols
|
|
public SaveCurPos, SaveCurType, prebufptr
|
|
public DispIChar1, DispIChar2, InterimDispP
|
|
public PreInCode, CurInCode, TmpBuf, PreTmpBuf, KsKbBuf, TmpBufCnt
|
|
if WINNT
|
|
public ActiveCodePage
|
|
endif
|
|
|
|
IF Hwin31Sw
|
|
PUBLIC OldInt2f
|
|
ENDIF ;Hwin31Sw
|
|
|
|
;************************************
|
|
StartInst:
|
|
;------------------------------------------------------------------------
|
|
; 이 영역은 public data area이므로 구조를 변경하지 말것
|
|
PublicData label word ; INT 10 entry FD
|
|
CodeBuf1Addr label dword
|
|
dw 0
|
|
dw 0
|
|
HanStat db 0 ; indicate whether HanGeul 1st byte have
|
|
HjMenuStat db 0 ; progress HanJa menu or ChgEnvr
|
|
db 08 dup(0) ; reserved
|
|
db 'H'
|
|
db 'B'
|
|
dw offset WinData
|
|
|
|
WinData db 'WINDOWS'
|
|
WinOffset dw offset WinEnvrChange
|
|
WinSegment dw 0 ; code segment address
|
|
db LocalDataLng
|
|
CodeStat db HangeulMode ; code/spec status
|
|
KbStat db 0 ; general KBD status
|
|
HjMenuLine db 0 ; hanja menu display line #
|
|
LocalDataLng = $-CodeStat
|
|
|
|
CodeBufSize dw ? ; 80*25*2, 80*30*2 ,Init에서 초기화할것
|
|
|
|
iVersion db Version ; 5 byte
|
|
|
|
;------------------------------------------------------------------------
|
|
ModeId db 0
|
|
UdcTblPtr dw 0 ; UDC table address(real memory)
|
|
CodeBuf2Addr dd 0 ; 2nd code buffer segment:offset address
|
|
VideoActive db 80h ; 비디오 service routine 동작 여부
|
|
ModeStat db 0 ; video mode status
|
|
DisplayStat db 0 ; Han1st, RunEsc
|
|
PatGenAddr dw 0 ; pattern generator
|
|
HanPatternPtr dw 0 ; pattern generator
|
|
Ks2ChAddr dw 0 ; code conversion(KS -> CH)
|
|
KbMisc db InterimCtrlDisp
|
|
HotStat db 0
|
|
Port3bf db 0 ; for KSE VGA card
|
|
KseCard db 0
|
|
KbdType db 0
|
|
|
|
HjStat db 0 ; hanja, UDC font status
|
|
OrgHjStat db 0 ; original hanja, UDC font status
|
|
|
|
; -------------kb.asm DATA -------------
|
|
CompleteCharCnt dw 0
|
|
CompleteCharBuf dw 16 dup(0)
|
|
InterimCharCnt dw 0
|
|
InterimCharBuf dw 2 dup(0)
|
|
Auto db 0
|
|
|
|
TmpKbdType db 0
|
|
|
|
InterimCurPage db 0
|
|
InterimMaxCols db 0
|
|
InterimCurPos dw 0
|
|
SavedChar1 db 0
|
|
SavedChar2 db 0
|
|
|
|
MenuPtr db 0
|
|
CurrMenuCnt db 0
|
|
SaveCurrPage db 0
|
|
CrtMaxCols db 0
|
|
SaveCurPos dw 0
|
|
SaveCurType dw 0
|
|
prebufptr dw 0
|
|
|
|
; interim display
|
|
DispIChar1 DB 0
|
|
DispIChar2 DB 0
|
|
InterimDispP dw 0
|
|
|
|
;automata
|
|
PreInCode dw 0
|
|
CurInCode dw 0
|
|
TmpBuf dw 0
|
|
PreTmpBuf dw 0
|
|
KsKbBuf dw 0
|
|
TmpBufCnt db 0
|
|
|
|
; ------------- video.asm DATA -------------
|
|
; Display buffer의 운용
|
|
GrpBufAddr dd ? ; grp buffer pointer
|
|
|
|
; Cursor position을 나타내는 pointer의 종류
|
|
TextPos1Addr dw ? ; cursor buffer address
|
|
TextPos2Addr dw ? ; cursor buffer address
|
|
GrpPosAddr dw ? ; cursor buffer address
|
|
|
|
OldTextPos1Addr dw ? ; Han1st/RunEsc 저장용
|
|
OldTextPos2Addr dw ? ; Han1st/RunEsc 저장용
|
|
OldGrpPosAddr dw ? ; Han1st/RunEsc 저장용
|
|
OldChar db ?
|
|
OldAttr db ?
|
|
OldPage db ?
|
|
OldCurPos dw ?
|
|
OldCounter dw ?
|
|
OldHanStat db 0
|
|
|
|
EscIndex dw 0
|
|
CursorStat db 0
|
|
|
|
MaxRows db ?
|
|
MaxPage db ?
|
|
|
|
CurPos dw ? ; real position, be seted by char write
|
|
CurMode db ?
|
|
CurPage db ? ; function AH = 5
|
|
|
|
OrgCurPos dw ? ; cursor display position for delete
|
|
OrgCurType dw ? ; cursor display type for delete
|
|
|
|
TimerTick db 0
|
|
ScrUpDnFlag db 0 ; screen up data
|
|
BlockAdj dw 0 ; block move,copy data
|
|
HanSavePtr dd 7 dup(0)
|
|
|
|
if WINNT
|
|
WanSungCP = 949 ; For NT 5.0
|
|
ActiveCodePage dw WanSungCP
|
|
endif
|
|
|
|
;------------------------------------------------------------------------
|
|
OldVdParms dd 0 ; MGA/CGA video parm pointer
|
|
OldSavePtr dd 0 ; EGA/VGA parms pointer
|
|
SizeInst equ ($ - StartInst)
|
|
;************************************
|
|
|
|
OldKbInt dd 0 ; INT 9
|
|
OldKbioInt dd 0 ; INT 16
|
|
OldRtcInt dd 0 ; Int 8
|
|
OldVideo dd 0 ; INT 10
|
|
OldInt15 dd 0 ; INT 15 or HIMEM address
|
|
OldInt17 dd 0 ; printer interrupt vector address
|
|
IF Hwin31Sw
|
|
OldInt2f dd 0 ; codechg dos int
|
|
ENDIF ;Hwin31Sw
|
|
;
|
|
EndSegment dw 0 ; 한글 BIOS 설치후 마지막 segment
|
|
EndOffset dw 0 ; 한글 BIOS 설치후 마지막 offset
|
|
;
|
|
MemStat db 0 ; memory의 종류
|
|
MemSize dw 0
|
|
EmsSeg dw 0
|
|
EmsHandle dw 0
|
|
CurEmsPage dw 0
|
|
MaxMemSize dw 0
|
|
HanAddr dw 0
|
|
HanAddrH db 0
|
|
UdcAddr dw 0
|
|
UdcAddrH db 0
|
|
;
|
|
Card1st db 0 ; active video card status
|
|
Card2nd db 0 ; inactive video card status
|
|
HeKey db 0 ; 시스템이 실제로 사용할 한영 key
|
|
HjKey db 0 ; 시스템이 실제로 사용할 한자 key
|
|
Printer db 0 ; printer type
|
|
ErrStat db 0 ; initialize시 사용
|
|
|
|
;------------------------------------------------------------------------
|
|
GetHan1st dw 0
|
|
GetUdc1st dw 0
|
|
PutUdc1st dw 0
|
|
HanOn1st dw 0
|
|
HanOff1st dw 0
|
|
GetHan2nd dw 0
|
|
GetUdc2nd dw 0
|
|
PutUdc2nd dw 0
|
|
HanOn2nd dw 0
|
|
HanOff2nd dw 0
|
|
|
|
MachineType db 0 ; machine type(AT/XT)
|
|
|
|
;------------------------------------------------------------------------
|
|
public vdm_info
|
|
vdm_info VDM_INFO_TBL<>
|
|
|
|
|
|
if Debug
|
|
public DebugData
|
|
DebugData dw 0
|
|
endif ; if Debug
|
|
|
|
WinEnvrChange:
|
|
@push ax, bx, cx, dx, di, si, es, ds, bp
|
|
mov ax,cs
|
|
mov es,ax
|
|
mov ds,ax
|
|
mov al,[CodeStat]
|
|
mov [OldCodeStat],al
|
|
mov ah,0fh
|
|
int 10h
|
|
call ChgEnvrDo
|
|
@pop bp, ds, es, si, di, dx, cx, bx, ax
|
|
WinEnvr PROC far
|
|
ret
|
|
WinEnvr ENDP
|
|
|
|
|
|
;------------------------------------------------------------------------
|
|
; 이 영역은 initialize시 다른용도로 쓰임
|
|
public TotalMenuCnt,MenuBuffer, MenuLineBuf, PatternBuf
|
|
PatternBuf db 32 dup(0)
|
|
TotalMenuCnt db 0
|
|
MenuBuffer label byte ; hanja set buffer
|
|
MenuLineBuf = MenuBuffer+376+1; hanja menu buffer
|
|
;
|
|
; Install:
|
|
; LoadUdc(-/-);
|
|
; InstallFontFileReal(-/-);
|
|
; InitMode(-/-);
|
|
; DispSignonMsg(-/-);
|
|
; [OrgHjStat] = [HjStat];
|
|
; CX = [EndSegment];
|
|
; DX = [EndOffset];
|
|
; [VideoActive] = 0;
|
|
; Restore BP, DI, SI, ES, DS;
|
|
;
|
|
public Install, InitEnd
|
|
Install:
|
|
call LoadUdc
|
|
if ComFile
|
|
mov sp,offset TmpStack
|
|
endif ; if ComFile
|
|
call InstallFontFileReal
|
|
mov al,[HjStat]
|
|
test al,HjLoaded
|
|
jz @f
|
|
or [HjStat],HjModeEnable
|
|
@@:
|
|
mov [OrgHjStat],al
|
|
call InitMode
|
|
call DispSignonMsg
|
|
mov cx,[EndSegment]
|
|
mov dx,[EndOffset]
|
|
mov [VideoActive],0
|
|
InitEnd:
|
|
if ComFile
|
|
mov ah,49h
|
|
mov es,ds:[EnvrParmPtr]
|
|
int 21h
|
|
mov ax,cs
|
|
sub cx,ax
|
|
add dx,15
|
|
shr dx,1
|
|
shr dx,1
|
|
shr dx,1
|
|
shr dx,1
|
|
add dx,cx
|
|
mov ax,3100h
|
|
int 21h
|
|
else
|
|
pop bp
|
|
pop si
|
|
pop di
|
|
pop es
|
|
pop ds
|
|
ret
|
|
endif ; if ComFile
|
|
|
|
|
|
;------------------------------------------------------------------------
|
|
; << LoadUdc >>
|
|
; FUNCTION = install UDC file
|
|
; INPUT : none
|
|
; OUTPUT : none
|
|
; PROTECT : SS, SP, DS, ES
|
|
;
|
|
; LoadUdc(-/-)
|
|
; {
|
|
; }
|
|
;
|
|
; structure of header of UDCCON.SYS
|
|
; offset 00H-01H (2) : pointer of UDC map table
|
|
; offset 02H-03H (2) : size of UDC map table
|
|
; offset 04H-05H (2) : pointer of UDC index table
|
|
; offset 06H-07H (2) : size of UDC index table
|
|
; offset 08H-09H (2) : pointer of UDC set table
|
|
; offset 0aH-0bH (2) : size of UDC set table
|
|
; offset 0cH-0dH (2) : pointer of start of pattern
|
|
; offset 0eH-0fH (2) : size of pattern
|
|
; offset 10H-17H (8) : UDC file ID
|
|
; offset 18H-1fH (8) : last update date
|
|
; offset 20H-2fH (16) : reserved
|
|
;
|
|
LoadUdc:
|
|
test [HjStat],UdcArea
|
|
jz LoadUdcEnd
|
|
test [ErrStat],FontLoadErr
|
|
jnz LoadUdcEnd
|
|
mov dx,offset UdcFileName
|
|
mov ax,3d00h
|
|
int 21h
|
|
mov bx,ax
|
|
jnc HaveUdc
|
|
LoadUdcEnd:
|
|
ret
|
|
HaveUdc:
|
|
mov [UdcHandle],bx
|
|
mov dx,[EndOffset]
|
|
mov di,dx
|
|
mov [UdcTblPtr],di
|
|
mov cx,(30H+188*2+188*4+188*2) ; # of bytes to read
|
|
mov ah,3fH
|
|
int 21h
|
|
jc LoadUdcErr
|
|
mov ax,[di+UdcSetTblSize]
|
|
shl ax,1
|
|
add ax,[di+UdcSetTblPtr]
|
|
add [EndOffset],ax ; save UdcTbl END address
|
|
mov si,di
|
|
add si,10H ; point to file identifier
|
|
mov di,offset UdcConId
|
|
mov cx,8 ; repeat counter
|
|
rep movsw
|
|
mov dx,[EndOffset]
|
|
test [MemStat],RealMem
|
|
jz @f
|
|
mov [UdcAddr],dx ; save UdcFont address
|
|
@@:
|
|
mov cx,94*32
|
|
mov bx,[UdcHandle]
|
|
mov ah,3fH
|
|
int 21h
|
|
jc LoadUdcErr
|
|
mov cx,ax
|
|
mov si,dx
|
|
mov ax,0c9a1h
|
|
call WriteUdc
|
|
jc LoadUdcErr
|
|
mov dx,[EndOffset]
|
|
mov cx,94*32
|
|
mov bx,[UdcHandle]
|
|
mov ah,3fH
|
|
int 21h
|
|
jc LoadUdcErr
|
|
mov cx,ax
|
|
mov si,dx
|
|
mov ax,0fea1h
|
|
call WriteUdc
|
|
jc LoadUdcErr
|
|
or [HjStat],UdcLoaded
|
|
mov bx,[UdcHandle]
|
|
mov ah,3eH ; close file handle
|
|
int 21h
|
|
ret
|
|
LoadUdcErr:
|
|
or [ErrStat],UdcLoadErr
|
|
ret
|
|
WriteUdc:
|
|
test [MemStat],RealMem
|
|
jz @f
|
|
add [EndOffset],cx ; save END address
|
|
clc
|
|
ret
|
|
@@:
|
|
mov cx,94
|
|
WriteUdcloop:
|
|
mov bx,ax
|
|
test [CodeStat],Chab
|
|
jz @f
|
|
call ChgKs2Ch
|
|
@@:
|
|
xchg cx,ax ; get code (ch,cl)
|
|
call PutPattern
|
|
xchg cx,ax
|
|
mov ax,bx
|
|
jc @f
|
|
inc ax ; next code
|
|
add si,32
|
|
loop WriteUdcloop
|
|
clc
|
|
@@:
|
|
ret
|
|
UdcHandle label word
|
|
UdcFileName db 'UDCCON.SYS',0
|
|
TmpStack label word
|
|
|
|
|
|
;------------------------------------------------------------------------
|
|
; << InstallFontFileReal >>
|
|
; FUNCTION = 문자자형 화일을 real memory로 설치함
|
|
; INPUT : none
|
|
; OUTPUT : none
|
|
; PROTECT : SS, SP, DS, ES
|
|
;
|
|
; InstallFontFileReal(-/-)
|
|
; {
|
|
; }
|
|
;
|
|
InstallFontFileReal:
|
|
test [MemStat],RealMem
|
|
jz NotRealFont
|
|
cmp [MemSize],0
|
|
jz NotRealFont
|
|
mov dx,offset FontFileName
|
|
mov ax,3d00h
|
|
int 21h
|
|
jc @f
|
|
mov bx,ax
|
|
mov ax,4200h
|
|
xor cx,cx
|
|
mov dx,30h
|
|
int 21h ; set absolute file pointer
|
|
or [HjStat],HjLoaded
|
|
mov dx,[EndOffset]
|
|
mov [HanAddr],dx
|
|
xor ax,ax
|
|
add [EndOffset],61440 ; 32*94*64 = 192512
|
|
adc ah,0
|
|
mov cl,4
|
|
shl ah,cl
|
|
add [EndSegment],ax
|
|
add [EndSegment],2000h
|
|
ReadRealLoop:
|
|
mov ax,dx
|
|
mov cl,4
|
|
shr ax,cl
|
|
mov cx,ds
|
|
add cx,ax
|
|
mov ds,cx
|
|
and dx,0fh
|
|
mov cx,4000h
|
|
mov ah,3fh
|
|
int 21h
|
|
jc ReadRealErr
|
|
or ax,ax
|
|
jz @f
|
|
add dx,ax
|
|
jmp short ReadRealLoop
|
|
ReadRealErr:
|
|
or cs:[ErrStat],FontLoadErr
|
|
@@:
|
|
mov ax,cs
|
|
mov ds,ax
|
|
mov ah,3eh
|
|
int 21h
|
|
NotRealFont:
|
|
ret
|
|
|
|
|
|
;------------------------------------------------------------------------
|
|
; << InitMode >>
|
|
; FUNCTION = 한글 video mode를 초기화함
|
|
; INPUT : none
|
|
; OUTPUT : none
|
|
; PROTECT : SS, SP, DS, ES
|
|
;
|
|
; InitMode(-/-)
|
|
; {
|
|
; Save ES;
|
|
; ES = 0;
|
|
; if ([Card1st] == DualMnt)
|
|
; {
|
|
; xchg [Card1st], [Card2nd];
|
|
; ES:[rEquip] = ES:[rEquip] || 00110000b;
|
|
; if ([Card1st] == ColorMnt)
|
|
; ES:[rEquip] = ES:[rEquip] && 11101111b;
|
|
; AX = 3;
|
|
; INT 10h;
|
|
; xchg [Card1st], [Card2nd];
|
|
; }
|
|
; ES:[rEquip] = ES:[rEquip] || 00110000b;
|
|
; if ([Card1st] == ColorMnt)
|
|
; ES:[rEquip] = ES:[rEquip] && 11101111b;
|
|
; AX = 3;
|
|
; INT 10h;
|
|
; Restore ES;
|
|
; }
|
|
;
|
|
InitMode:
|
|
test [Card1st],DualMnt
|
|
jz InitMode1st
|
|
push word ptr [CodeStat]
|
|
or [CodeStat],HangeulMode
|
|
int 11h
|
|
cmp al,00110000b
|
|
mov ax,7
|
|
jpe @f
|
|
mov al,3
|
|
@@:
|
|
int 10h
|
|
pop ax
|
|
mov [CodeStat],al
|
|
InitMode1st:
|
|
mov ah,0fh
|
|
int 10h
|
|
call ChgEnvrDo
|
|
|
|
push ax
|
|
push bx
|
|
call SearchMode
|
|
jc InitMode2nd
|
|
mov bh,[si+sCodeVram]
|
|
xor bl,bl
|
|
xor ax,ax
|
|
mov word ptr [CodeBuf1Addr],ax
|
|
mov word ptr [CodeBuf1Addr+2],bx
|
|
if WINNT ; if we run HBIOS on windowed mode for the first time,
|
|
; these variables are not initialized.
|
|
cmp [ActiveCodePage], WanSungCP
|
|
jnz @f
|
|
or [CodeStat],HangeulVideoMode
|
|
mov [MaxRows],25
|
|
@@:
|
|
endif
|
|
InitMode2nd:
|
|
pop bx
|
|
pop ax
|
|
ret
|
|
|
|
|
|
;------------------------------------------------------------------------
|
|
; << DispSignonMsg >>
|
|
; FUNCTION = 한글 BIOS 저작권 및 font/UDC 관련 message display
|
|
; INPUT : none
|
|
; OUTPUT : none
|
|
; PROTECT : SS, SP, DS, ES
|
|
;
|
|
; DispSignonMsg(-/-)
|
|
; {
|
|
; SI = SignonMsg;
|
|
; DispMsg(SI/-);
|
|
; if ([OrgHjStat] == HjLoaded)
|
|
; {
|
|
; SI = FontMsg;
|
|
; DispMsg(SI/-);
|
|
; SI = LoadMsg;
|
|
; if ([ErrStat] == FontLoadErr), SI = FontErrMsg;
|
|
; DispMsg(SI/-);
|
|
; }
|
|
; if ([OrgHjStat] == UdcLoaded)
|
|
; {
|
|
; SI = UdcMsg;
|
|
; DispMsg(SI/-);
|
|
; SI = UdcConId;
|
|
; if ([ErrStat] == UdcLoadErr), SI = UdcErrMsg;
|
|
; DispMsg(SI/-);
|
|
; }
|
|
; }
|
|
;
|
|
; DispString(si/-)
|
|
; {
|
|
; if ([si] != 0)
|
|
; {
|
|
; AL = [si];
|
|
; + SI;
|
|
; AH = 0eh;
|
|
; BX = 7;
|
|
; INT 10h;
|
|
; }
|
|
; }
|
|
;
|
|
DispSignonMsg:
|
|
if WINNT
|
|
; Don't need to display version information
|
|
test [ErrStat],FontLoadErr
|
|
jz @f
|
|
mov si,offset FontErrMsg
|
|
call DispString
|
|
@@:
|
|
test [Card1st],FontCard or HanCard
|
|
jnz DispNoneFontFile
|
|
test [Card2nd],FontCard or HanCard
|
|
jnz DispNoneFontFile
|
|
test [OrgHjStat],HjLoaded
|
|
jz DispNoneFontFile
|
|
else
|
|
mov si,offset SignonMsg
|
|
test [CodeStat],Chab
|
|
jz @f
|
|
mov si,offset SignonMsgCh
|
|
@@:
|
|
call DispString
|
|
test [Card1st],FontCard or HanCard
|
|
jnz DispNoneFontFile
|
|
test [Card2nd],FontCard or HanCard
|
|
jnz DispNoneFontFile
|
|
test [OrgHjStat],HjLoaded
|
|
jz DispNoneFontFile
|
|
;mov si,offset FontMsg
|
|
;call DispString
|
|
mov si,offset LoadMsg
|
|
test [ErrStat],FontLoadErr
|
|
jz @f
|
|
mov si,offset FontErrMsg
|
|
@@:
|
|
call DispString
|
|
endif
|
|
DispNoneFontFile:
|
|
test [OrgHjStat],UdcLoaded
|
|
jz DispNoneUdc
|
|
mov si,offset UdcMsg
|
|
call DispString
|
|
mov si,offset UdcConId
|
|
test [ErrStat],UdcLoadErr
|
|
jz @f
|
|
mov si,offset UdcErrMsg
|
|
@@:
|
|
call DispString
|
|
DispNoneUdc:
|
|
ret
|
|
DispString:
|
|
lodsb
|
|
or al,al
|
|
jz @f
|
|
mov ah,0eh
|
|
mov bx,7
|
|
int 10h
|
|
jmp short DispString
|
|
@@:
|
|
ret
|
|
|
|
if WINNT
|
|
; Don't need to display version information
|
|
else
|
|
SignonMsg db 'HBIOS 버전 ', Version, cr,lf ; [CHM0]
|
|
db 'Copyright (C) Microsoft Corp 1993',cr,lf,0 ; [CHM0]
|
|
SignonMsgCh db 'HBIOS ㅱ퉑 ', Version, cr,lf
|
|
db 'Copyright (C) Microsoft Corp 1993',cr,lf,0
|
|
LoadMsg db '** 확장 글꼴이 설치되었습니다.',cr,lf,0
|
|
endif
|
|
UdcErrMsg label byte
|
|
FontErrMsg db '** 확장 글꼴 설치에 실패하였습니다.',cr,lf,0
|
|
UdcMsg db 'UDC : ',0
|
|
UdcConId db 16 dup(' '),cr,lf,0
|
|
public FontFilename
|
|
FontFilename db 'hfont.sys' ; [CHM001]
|
|
db 80-8 dup(0)
|
|
|
|
;------------------------------------------------------------------------
|
|
|