2025-04-27 07:49:33 -04:00

362 lines
13 KiB
PHP
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

.xlist
;========================================================================;
; ;
; GLOBAL EQUATION ;
; ;
;========================================================================;
if WINNT
Version equ '5.0'
else
Version equ '1.20a.'
endif
false = 0
true = not false
hWin31Sw = true
GetSwitch = true
Kbd101On = true
ChkW32Trident = true ; card check(true), switch(false)
HotKey = true ; support(true)
AltHotKey = true ; support(true)
VirtualKey = false ; 84 kbd
KseVga = true
AtiVga = true
if1
%OUT *****************************************************************
if Debug
%OUT DEBUGGING mode
endif
if ComFile
%OUT .COM file type
else
%OUT .SYS file type
endif
if HotKey
%OUT Hot_key support
endif
%OUT *****************************************************************
endif
;------------------------------------------------------------------------
DATA SEGMENT AT 0
ORG 8*4
rRtcInt dd ? ; INT 8
ORG 9*4
rKbInt dd ? ; INT 9
ORG 10h*4
rVideoInt dd ? ; INT 10
ORG 15h*4
rCasetInt dd ? ; INT 15
ORG 16h*4
rKbioInt dd ? ; INT 16
ORG 17h*4
rPrinter dd ? ; INT 17
ORG 1dh*4
rVdParm dd ? ; INT 1D
ORG 2fh*4
rInt2f dd ? ; INT 2F
ORG 410h
rEquip db ?
ORG 449h
rCrtMode db ? ; current CRT mode
rCrtCols dw ? ; number of columns on screen
rCrtLen dw ? ; length of regen in bytes
rCrtStart dw ? ; starting address in regen buffer
rCurPos dw 8 dup (?) ; cursor for each of up to 8 pages
rCurType dw ? ; current cursor mode setting
rCurPage db ? ; current page being displayed
rAddr6845 dw ? ; base address for active display card
rCrtModeSet db ? ; current setting of the 3x8 register
rCrtPallette db ? ; current pallette setting color card
ORG 46ch
rTimerLow dw ? ; low word of timer count
rTimerHigh dw ? ; high word of timer count
rTimerOverflow db ? ; timer has rolled over since last read
ORG 484h
rRows db ? ; rows on the active screen (less 1)
rPoints dw ? ; bytes per character
rInfo db ? ; mode options
rInfo3 db ? ; feature bit switches
rMiscFlags db ? ; miscellaneous flags
rDCC db ? ; display config comb code table index
ORG 4a8h
rSavePtr dd ? ; pointer to E/VGA parms control block
DATA ENDS
KbSeg SEGMENT AT 40h
ORG 17h
rKbFlag db ?
rKbFlag1 db ?
rAltInput db ? ; storage for alternate keypad entry
rBufferHead dw ? ; pointer to head of keyboard buffer
rBufferTail dw ? ; pointer to tail of keyboard buffer
rKbBuffer dw 16 dup (?)
ORG 80h ; buffer location within segment 40H
rBufferStart dw ? ; offset of keyboard buffer start
rBufferEnd dw ? ; offset of keyboard buffer end
ORG 96h
rKbFlag3 db ? ; keyboard mode state and type flags
rKbFlag2 db ? ; keyboard LED flags
KbSeg ENDS
;------------------------------------------------------------------------
@PUSH MACRO a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12
IRP REGISTER,<a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12>
IFB <REGISTER>
;;if REGISTER is blank do nothing.
ELSE
PUSH REGISTER
ENDIF
ENDM
ENDM
@POP MACRO a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12
IRP REGISTER,<a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12>
IFB <REGISTER>
;;if REGISTER is blank do nothing.
ELSE
POP REGISTER
ENDIF
ENDM
ENDM
BOP MACRO func
db 0c4h,0c4h,func
; jmp cs:[pass_disp_add]
; int 44h
ENDM
;------------------------------------------------------------------------
Config STRUC ; total 50 byte
sConfigId db 'HECON.CFG' ; 9 byte
sCodeType db ?
sFont db 32 dup(?) ; drive/path/filename
sMemory db ? ; real/EMS/ext./HIMEM
sHeKey db ?
sHjKey db ?
sPrinterType db ?
sKbdType db ?
db 3 dup(?) ; reserved
Config ENDS
UserCard STRUC
uHanOn dw ?
uHanOff dw ?
uGetFont dw ?
uPutFont dw ?
uModeset dw ?
uEop dw ?
uInit dw ?
UserCard ENDS
CrtParm STRUC ; video parms structure
db 2 dup(?)
cPoints db ?
db 6 dup(?)
cMisc db ?
cCrtc db 25 dup(?)
cAttr db 20 dup(?)
cGrp db 6 dup(?)
cMap db ?
db 2 dup(?)
CrtParm ENDS
ModeParms STRUC
sMode db ? ; input mode(modified if eng-card/text)
sModeId db ? ; mode ID for application
sRealMode db ? ; used for mode set really
sCodeVram db ? ; code buffer address
sGrpVram db ? ; grp video byte address
sCodeSize db ? ; code buffer size
sGrpSize db ? ; grp video byte size
sStatus db ? ; mode status byte
sRows db ? ; rows
sAdjParms dw ? ; adjust video mode parms pointer
sParms dw ? ; video mode parms pointer
sCurType dw ? ; cursor type
ModeParms ENDS
UdcHeader STRUC
UdcMapTblPtr dw ?
UdcMapTblSize dw ?
UdcIndexTblPtr dw ?
UdcIndexTblSize dw ?
UdcSetTblPtr dw ?
UdcSetTblSize dw ?
UdcPatPtr dw ?
UdcPatSize dw ?
UdcFileId db 8 dup (?)
UdcUpdateDate db 8 dup (?)
UdcReserved db 16 dup (?)
UdcHeader ENDS
GdtTbl STRUC
db 16 dup(?)
GdtCntS dw ?
GdtSL dw ?
GdtSH db ?
db ?
db 2 dup(?)
GdtCntD dw ?
GdtDL dw ?
GdtDH db ?
db ?
db 18 dup(?)
GdtTbl ENDS
VDM_INFO_TBL STRUC
packet_len dw 30
video_buffer dd 0
dmode_add dd 0
windowed_add dd 0
nt_cons_add dd 0
disp_sys_init dd 0
fullsc_resume_ptr dd 0
ias_setmode_add dd 0
VDM_INFO_TBL ENDS
;------------------------------------------------------------------------
GrpIndex = 3ceh
MiscReg = 3c2h
AttrReg = 3c0h
SeqIndex = 3c4h
;------------------------------------------------------------------------
; stack pointer
rBX = 2*7
rCX = 2*6
rDX = 2*5
rSI = 2*4
rDI = 2*3
rES = 2*2
rDS = 2*1
rBP = 2*0
StringLng = 32 ; size of 'HECON.CFG' file
EnvrParmPtr = 2ch
; << ModeStat >>
TextEmulation = 10000000b ; fixed
ColorMode = 01000000b ; fixed
GrpMode = 00100000b ; fixed
MultiPage = 00001000b ; fixed
EmuCursor = 00000100b ; fixed
HwScroll = 00000001b ; fixed
; << CodeStat >>
InstPatGen = 10000000b ; installed PatGen
HangeulMode = 01000000b ; <EFBFBD>ѱ<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> ȯ<EFBFBD><EFBFBD>
ChabLoad = 00100000b ; request to chohab service
WSung7 = 00000100b ; fixed
Chab = 00000010b ; fixed
WSung = 00000000b ; fixed
HangeulVideoMode= 00000001b ; <EFBFBD>ѱ<EFBFBD> display mode
; << DisplayStat >>
RunEsc = 00000001b
; << HanStat >> ; reserved flag
Han1st = 00000001b ; fixed
; << KbStat >>
UserDefineKey = 10000000b
ReqEnvrChg = 01000000b ; request hot-key processing
HanKeyinMode = 00100000b ; hangeul displayable video mode
Ext10xKey = 00010000b ; fixed
HEStat = 00000100b ; fixed
JJStat = 00000001b ; fixed
; <<HotStat>>
AltHotChg = 00000001b
; << HjStat >> << OrgHjStat >>
UdcLoaded = 10000000b
UdcArea = 01000000b
HjLoaded = 00100000b
HjModeEnable = 00000001b ; fixed
; << HjMenuStat >> ; reserved flag
HjMenuMode = 00000001b ; fixed
; << MachineType >>
AtMachine = 00000001b
; << Card1st >> , << Card2nd >>
FontCard = 10000000b
HanCard = 01000000b
ColorMnt = 00100000b ; color monitor(1), mono monitor(0)
DualMnt = 00010000b
CardType = 00001110b ; fixed, card mask
VgaCard = 00001010b ; fixed
McgaCard = 00001000b ; fixed
EgaCardC = 00000110b ; fixed
EgaCardM = 00000100b ; fixed
CgaCard = 00000010b ; fixed
MgaCard = 00000000b ; fixed
; << MemStat >>
RealMem = 10000000b
ExtMem = 01000000b
EmsMem = 00100000b
HiMem = 00010000b
; << ErrStat >>
UdcLoadErr = 10000000b
FontLoadErr = 01000000b
MemoryErr = 00100000b
FileErr = 00010000b
; << Printer >>
NoPrt = 00000011b ; WanSung printer
KsPrt = 00000000b ; WanSung printer
wLbp = 00000001b ; WanSung printer
wKmPrt = 00000010b ; WanSung printer
cKmPrt = 00000110b ; ChoHab printer
TgPrt = 00000111b ; ChoHab printer
ChPrinter = 00000100b
; << KbMisc >>
InterimCtrlDisp = 00000001b
HaveInterim = 00000010b
SavedInterim = 00000100b
RunningHot = 00001000b
; << KseCard >>
MonoMntC = 00000010b
PassHanCdCheck = 00000100b
Page1Fix = 00001000b
; << KbdType >>
SetKbd101 = 00000001b
;------------------------------------------------------------------------
EscKey = 1bh
CR = 0Dh
LF = 0Ah
BS = 08h
BELL = 07h
DelKey = 53h
DefXtKsHeKey = 0f0h
DefAtKsHeKey = 0f2h
DefKsHjKey = 0f1h
Def101HeKey = 38h
Def101HjKey = 1dh
DefAtHeKey = 6eh
DefAtHjKey = 62h
DefXtHeKey = 57h
DefXtHjKey = 56h
;------------------------------------------------------------------------
.list