home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Shareware Supreme Volume 6 #1
/
swsii.zip
/
swsii
/
078
/
WDASM17.ZIP
/
HELLOHIL.ASM
< prev
next >
Wrap
Assembly Source File
|
1993-04-02
|
22KB
|
1,112 lines
; HiLevel Syntax Generator Version 2.01
; Source file: c:\wdasm\hello1.asm
TITLE WDASM Example Program
.286
.MODEL SMALL
OPTION NOM510
OPTION CASEMAP:NONE
OPTION PROLOGUE:hPrologue
OPTION EPILOGUE:hEpilogue
INCLUDE HILEVEL.INC
INCLUDE HELLO2.INC
EXTERN DefWindowProc:FAR
EXTERN GetMessage:FAR
EXTERN TranslateMessage:FAR
EXTERN FatalExit:FAR
EXTERN DispatchMessage:FAR
EXTERN GetVersion:FAR
EXTERN GetDosEnvironment:FAR
EXTERN LocalAlloc:FAR
EXTERN LocalRealloc:FAR
EXTERN LocalFree:FAR
EXTERN FatalAppExit:FAR
EXTERN LocalSize:FAR
EXTERN UpdateWindow:FAR
EXTERN GlobalRealloc:FAR
EXTERN GlobalSize:FAR
EXTERN InitApp:FAR
EXTERN PostQuitMessage:FAR
EXTERN LockSegment:FAR
EXTERN UnlockSegment:FAR
EXTERN WaitEvent:FAR
EXTERN GetClientRect:FAR
EXTERN GetModuleFileName:FAR
EXTERN BeginPaint:FAR
EXTERN EndPaint:FAR
EXTERN CreateWindow:FAR
EXTERN ShowWindow:FAR
EXTERN LoadCursor:FAR
EXTERN LoadIcon:FAR
EXTERN RegisterClass:FAR
EXTERN InitTask:FAR
EXTERN GetStockObject:FAR
EXTERN DrawText:FAR
EXTERN Dos3Call:FAR
EXTERN __winflags:FAR
.CODE
Proc0000Seg1 PROC NEAR C
ADD BYTE PTR [BX+SI], AL
ADD BYTE PTR [BX+SI], AL
ADD BYTE PTR [BX+SI], AL
ADD BYTE PTR [BX+SI], AL
ADD BYTE PTR [BX+SI], AL
ADD BYTE PTR [BX+SI], AL
ADD BYTE PTR [BX+SI], AL
ADD BYTE PTR [BX+SI], AL
Proc0000Seg1 ENDP
Proc0010Seg1 PROC NEAR PASCAL <NOLOADDS, NOINCBP, FORCEFRAME, CHECKSTACK>, par12:WORD, par10:WORD, par8:WORD, par6:WORD, par4:WORD
LOCAL local2:WORD, local4:WORD, local6:WORD, \
local8:WORD, local10:WORD, local12:WORD, local14:WORD, \
local16:WORD, local18:WORD, local20:WORD, local22:WORD, \
local24:WORD, local26:WORD, local28:WORD, local30:WORD, \
local32:WORD, local34:WORD, local36:WORD, local38:WORD, \
local40:WORD, local42:WORD, local44:WORD, local46:WORD
.IF (WORD PTR par10 == 0)
L0022H: MOV WORD PTR local46, 0003H
MOV WORD PTR local44, LROFFSET WNDPROC
MOV WORD PTR local42, SEG WNDPROC
MOV WORD PTR local40, 0000H
MOV WORD PTR local38, 0000H
MOV AX, WORD PTR par12
MOV WORD PTR local36, AX
hCall <FAR PTR LoadIcon, 0, 0, 7F00H>
MOV WORD PTR local34, AX
hCall <FAR PTR LoadCursor, 0, 0, 7F00H>
MOV WORD PTR local32, AX
hCall <FAR PTR GetStockObject, 0>
MOV WORD PTR local30, AX
MOV WORD PTR local28, 0000H
MOV WORD PTR local26, 0000H
MOV AX, 0010H
MOV DX, DS
MOV WORD PTR local24, AX
MOV WORD PTR local22, DX
LEA AX, WORD PTR local46
MOV DX, SS
hCall <FAR PTR RegisterClass, DX, AX>
.ENDIF
L008AH: MOV AX, 0010H
MOV DX, DS
PUSH DX
PUSH AX
MOV AX, 00C2H
MOV DX, DS
hCall <FAR PTR CreateWindow, DX, AX, 00CFH, 0, 8000H, 8000H, 8000H, 8000H, 0, 0, WORD PTR par12, 0, 0>
MOV WORD PTR local2, AX
hCall <FAR PTR ShowWindow, AX, WORD PTR par4>
hCall <FAR PTR UpdateWindow, WORD PTR local2>
L00CDH: LEA AX, WORD PTR local20
MOV DX, SS
hCall <FAR PTR GetMessage, DX, AX, 0, 0, 0>
.IF (AX)
LEA AX, WORD PTR local20
MOV DX, SS
hCall <FAR PTR TranslateMessage, DX, AX>
LEA AX, WORD PTR local20
MOV DX, SS
hCall <FAR PTR DispatchMessage, DX, AX>
JMP SHORT L00CDH
NOP
.ENDIF
L00FEH: MOV AX, WORD PTR local16
RET
Proc0010Seg1 ENDP
Proc0105Seg1 PROC NEAR C
NOP
Proc0105Seg1 ENDP
WNDPROC PROC FAR PASCAL PUBLIC <LOADDS, INCBP, FORCEFRAME, CHECKSTACK>, par14:WORD, par12:WORD, par10:WORD, par8:WORD, par6:WORD
LOCAL local2:WORD, local4:WORD, local6:WORD, \
local8:WORD, local10:WORD, local12:WORD, local14:WORD, \
local16:WORD, local18:WORD, local20:WORD, local22:WORD, \
local24:WORD, local26:WORD, local28:WORD, local30:WORD, \
local32:WORD, local34:WORD, local36:WORD, local38:WORD, \
local40:WORD, local42:WORD, local44:WORD
PUSH SI
PUSH DI
MOV SI, WORD PTR par14
MOV AX, WORD PTR par12
JMP NEAR PTR L017AH
NOP
L0122H: PUSH SI
LEA AX, WORD PTR local36
MOV DX, SS
hCall <FAR PTR BeginPaint, DX, AX>
MOV DI, AX
PUSH SI
LEA AX, WORD PTR local44
MOV DX, SS
hCall <FAR PTR GetClientRect, DX, AX>
PUSH DI
MOV AX, 00DFH
MOV DX, DS
PUSH DX
PUSH AX
PUSH -1
LEA AX, WORD PTR local44
MOV DX, SS
hCall <FAR PTR DrawText, DX, AX, 37>
PUSH SI
LEA AX, WORD PTR local36
MOV DX, SS
hCall <FAR PTR EndPaint, DX, AX>
XOR AX, AX
XOR DX, DX
JMP SHORT L019FH
NOP
L016AH: hCall <FAR PTR PostQuitMessage, 0>
XOR AX, AX
XOR DX, DX
JMP SHORT L019FH
NOP
JMP SHORT L0187H
L017AH: CMP AX, 0002H
JZ L016AH
.IF (AX == 000FH)
JMP NEAR PTR L0122H
.ENDIF
L0187H: hCall <FAR PTR DefWindowProc, SI, WORD PTR par12, WORD PTR par10, WORD PTR par8, WORD PTR par6>
JMP SHORT L019FH
NOP
MOV WORD PTR par14, SI
L019FH: POP DI
POP SI
RET
WNDPROC ENDP
L01ACH DW LROFFSET __winflags
Proc01ACSeg1 PROC NEAR C
L01AEH: MOV AL, -1
hCall <NEAR PTR Proc034ESeg1, AX>
L01B4H:: XOR BP, BP
hCall <FAR PTR InitTask, BP>
OR AX, AX
JZ L01AEH
MOV WORD PTR D0064H, ES
ADD CX, 0100H
JB L01AEH
MOV WORD PTR D002EH, CX
MOV WORD PTR D0030H, SI
MOV WORD PTR D0032H, DI
MOV WORD PTR D0034H, BX
MOV WORD PTR D0036H, ES
MOV WORD PTR D0038H, DX
CALL FAR PTR GetVersion
MOV WORD PTR D0066H, AX
MOV AH, 48
.IF (WORD PTR CS:L01ACH & SWORD PTR 0001H)
CALL FAR PTR Dos3Call
JMP SHORT L01FEH
.ENDIF
L01FCH: INT 0021H
L01FEH: MOV WORD PTR D0068H, AX
.IF ( !(WORD PTR CS:L01ACH & 0001H))
MOV AL, 0
MOV BYTE PTR D006BH, AL
.ENDIF
L020FH: XOR AX, AX
hCall <FAR PTR WaitEvent, AX>
hCall <FAR PTR InitApp, WORD PTR D0032H>
OR AX, AX
JZ L01AEH
CALL NEAR PTR Proc0268Seg1
CALL NEAR PTR Proc047ESeg1
CALL NEAR PTR Proc05FCSeg1
CALL NEAR PTR Proc085CSeg1
hCall <NEAR PTR Proc024CSeg1, WORD PTR D00A0H, WORD PTR D009EH, WORD PTR D009CH>
ADD SP, 6
hCall <NEAR PTR Proc0347Seg1, AX>
MOV AX, 0015H
JMP NEAR PTR L0683H
Proc01ACSeg1 ENDP
; Missing MOV SP,BP and POP BP in epilogue.
Proc024CSeg1 PROC NEAR C
PUSH BP
MOV BP, SP
hCall <NEAR PTR Proc0010Seg1, WORD PTR D0032H, WORD PTR D0030H, WORD PTR D0036H, WORD PTR D0034H, WORD PTR D0038H>
POP BP
RET
Proc024CSeg1 ENDP
Proc0268Seg1 PROC NEAR C
MOV AX, 3500H
.IF (WORD PTR CS:L01ACH & SWORD PTR 0001H)
CALL FAR PTR Dos3Call
JMP SHORT L027DH
.ENDIF
L027BH: INT 0021H
L027DH: MOV WORD PTR D0050H, BX
MOV WORD PTR D0052H, ES
PUSH CS
POP DS
MOV AX, 2500H
MOV DX, 067EH
.IF (WORD PTR CS:L01ACH & SWORD PTR 0001H)
CALL FAR PTR Dos3Call
JMP SHORT L029FH
.ENDIF
L029DH: INT 0021H
L029FH: PUSH SS
POP DS
MOV CX, WORD PTR D00B8H
JCXZ L02D0H
MOV ES, WORD PTR D0064H
MOV SI, WORD PTR ES:D002CH
MOV AX, WORD PTR D00BAH
MOV DX, WORD PTR D00BCH
XOR BX, BX
CALL DWORD PTR D00B6H
JAE L02C2H
JMP NEAR PTR L0424H
L02C2H: MOV AX, WORD PTR D00BEH
MOV DX, WORD PTR D00C0H
MOV BX, 0003H
CALL DWORD PTR D00B6H
L02D0H: MOV ES, WORD PTR D0064H
MOV CX, WORD PTR ES:D002CH
JCXZ L0319H
MOV ES, CX
XOR DI, DI
L02DFH: .IF (BYTE PTR ES:[DI] != 0)
MOV CX, 000DH
MOV SI, 0042H
REPE CMPSB
JZ L02FAH
MOV CX, 7FFFH
XOR AX, AX
REPNE SCASB
JNZ L0319H
JMP SHORT L02DFH
L02FAH: PUSH ES
PUSH DS
POP ES
POP DS
MOV SI, DI
MOV DI, 0074H
MOV CL, 4
L0305H: LODSB
SUB AL, 65
JB L0317H
SHL AL, CL
XCHG DX, AX
LODSB
SUB AL, 65
JB L0317H
OR AL, DL
STOSB
JMP SHORT L0305H
L0317H: PUSH SS
POP DS
.ENDIF
L0319H: MOV SI, 00C2H
MOV DI, 00C2H
CALL NEAR PTR Proc03EBSeg1
MOV SI, 00C2H
MOV DI, 00C2H
CALL NEAR PTR Proc03FASeg1
MOV SI, 00C2H
MOV DI, 00C2H
CALL NEAR PTR Proc03EBSeg1
MOV SI, 00C2H
MOV DI, 00C2H
CALL NEAR PTR Proc03EBSeg1
MOV SI, 00C2H
MOV DI, 00C2H
CALL NEAR PTR Proc03FASeg1
RET
Proc0268Seg1 ENDP
; Missing MOV SP,BP and POP BP in epilogue.
Proc0347Seg1 PROC NEAR C
PUSH BP
MOV BP, SP
XOR CX, CX
JMP SHORT L0368H
Proc0347Seg1 ENDP
; Missing MOV SP,BP and POP BP in epilogue.
Proc034ESeg1 PROC NEAR C
PUSH BP
MOV BP, SP
MOV CX, 0001H
JMP SHORT L0368H
PUSH BP
MOV BP, SP
PUSH SI
PUSH DI
MOV CX, 0100H
JMP SHORT L0368H
PUSH BP
MOV BP, SP
PUSH SI
PUSH DI
MOV CX, 0101H
L0368H:: MOV BYTE PTR D00A9H, CH
PUSH CX
OR CL, CL
JNZ L038DH
MOV SI, 024CH
MOV DI, 024CH
CALL NEAR PTR Proc03EBSeg1
MOV SI, 00C2H
MOV DI, 00C2H
CALL NEAR PTR Proc03EBSeg1
MOV SI, WORD PTR [BP+4]
hCall <NEAR PTR Proc085CSeg1, SI>
ADD SP, 2
L038DH: MOV SI, 00C2H
MOV DI, 00C2H
CALL NEAR PTR Proc03EBSeg1
MOV SI, 00C2H
MOV DI, 00C2H
CALL NEAR PTR Proc03FASeg1
CALL NEAR PTR Proc03C2Seg1
POP AX
OR AH, AH
JNZ L03BEH
MOV AX, WORD PTR [BP+4]
MOV AH, 76
.IF (WORD PTR CS:L01ACH & SWORD PTR 0001H)
CALL FAR PTR Dos3Call
JMP SHORT L03BEH
.ENDIF
L03BCH: INT 0021H
L03BEH: POP DI
POP SI
POP BP
RET
Proc034ESeg1 ENDP
Proc03C2Seg1 PROC NEAR C
MOV CX, WORD PTR D00B8H
JCXZ L03CFH
MOV BX, 0002H
CALL DWORD PTR D00B6H
L03CFH: PUSH DS
LDS DX, DWORD PTR D0050H
MOV AX, 2500H
.IF (WORD PTR CS:L01ACH & SWORD PTR 0001H)
CALL FAR PTR Dos3Call
JMP SHORT L03E9H
.ENDIF
L03E7H: INT 0021H
L03E9H: POP DS
RET
Proc03C2Seg1 ENDP
Proc03EBSeg1 PROC NEAR C
L03EBH:
.IF (SI < DI)
DEC DI
DEC DI
MOV CX, WORD PTR [DI]
JCXZ L03EBH
CALL CX
JMP SHORT L03EBH
.ENDIF
L03F9H: RET
Proc03EBSeg1 ENDP
Proc03FASeg1 PROC NEAR C
L03FAH:
.IF (SI < DI)
SUB DI, 4
MOV AX, WORD PTR [DI]
OR AX, WORD PTR [DI+2]
JZ L03FAH
CALL DWORD PTR [DI]
JMP SHORT L03FAH
.ENDIF
L040CH: RET
Proc03FASeg1 ENDP
L040DH DB 0000H
Proc040DSeg1 PROC NEAR C
Proc040DSeg1 ENDP
Proc040ESeg1 PROC NEAR C <NOLOADDS, NOINCBP, FORCEFRAME, NOCHECKSTACK>
MOV AX, 00FCH
hCall <NEAR PTR Proc06EDSeg1, AX>
MOV AX, 00FFH
hCall <NEAR PTR Proc06EDSeg1, AX>
RET
Proc040ESeg1 ENDP
L0423H DB 0000H
Proc0423Seg1 PROC NEAR C
L0424H:: MOV AX, 0002H
JMP NEAR PTR L0683H
Proc0423Seg1 ENDP
_aNchkstk PROC NEAR C
POP BX
INC AX
AND AL, -2
SUB AX, SP
JAE L0477H
NEG AX
CMP WORD PTR SS:D000AH, AX
JA L0477H
.IF (WORD PTR SS:D000CH > AX)
MOV WORD PTR D000CH, AX
.ENDIF
L0446H: MOV SP, AX
JMP BX
POP BX
POP DX
INC AX
AND AL, -2
SUB AX, SP
JAE L046CH
NEG AX
CMP WORD PTR SS:D000AH, AX
JA L046CH
.IF (WORD PTR SS:D000CH > AX)
MOV WORD PTR D000CH, AX
.ENDIF
L0467H: MOV SP, AX
PUSH DX
PUSH BX
RETF
_aNchkstk ENDP
L047DH DB 0000H
Proc046CSeg1 PROC NEAR C
L046CH:: MOV DX, WORD PTR SS:D00ACH
INC DX
JZ L0477H
JMP WORD PTR D00ACH
L0477H:: MOV AX, 0000H
JMP NEAR PTR L0683H
Proc046CSeg1 ENDP
L05FBH DB 0000H
Proc047ESeg1 PROC NEAR C
POP WORD PTR D00AEH
MOV AX, 0104H
MOV CX, 0008H
CALL NEAR PTR Proc071ESeg1
MOV WORD PTR D00A4H, DX
MOV WORD PTR D00A2H, AX
PUSH DX
PUSH AX
PUSH WORD PTR D0032H
PUSH DX
PUSH AX
MOV AX, 0104H
hCall <FAR PTR GetModuleFileName, AX>
POP BX
POP ES
ADD BX, AX
MOV BYTE PTR ES:[BX], 0
MOV DX, 0001H
MOV DI, 0001H
MOV SI, 0081H
MOV DS, WORD PTR D0064H
L04B8H: LODSB
CMP AL, 32
JZ L04B8H
CMP AL, 9
JZ L04B8H
.IF (AL != 13)
OR AL, AL
JZ L0534H
INC DI
L04CAH: DEC SI
L04CBH: LODSB
CMP AL, 32
JZ L04B8H
CMP AL, 9
JZ L04B8H
CMP AL, 13
JZ L0534H
OR AL, AL
JZ L0534H
.IF (AL != 34)
.IF (AL != 92)
INC DX
JMP SHORT L04CBH
.ENDIF
L04E7H: XOR CX, CX
L04E9H: INC CX
LODSB
CMP AL, 92
JZ L04E9H
.IF (AL != 34)
ADD DX, CX
JMP SHORT L04CAH
.ENDIF
L04F7H: MOV AX, CX
SHR CX, 1
ADC DX, CX
TEST AL, 1
JNZ L04CBH
JMP SHORT L0504H
L0503H: DEC SI
.ENDIF
L0504H: LODSB
CMP AL, 13
JZ L0534H
OR AL, AL
JZ L0534H
CMP AL, 34
JZ L04CBH
.IF (AL != 92)
INC DX
JMP SHORT L0504H
.ENDIF
L0518H: XOR CX, CX
L051AH: INC CX
LODSB
CMP AL, 92
JZ L051AH
.IF (AL != 34)
ADD DX, CX
JMP SHORT L0503H
.ENDIF
L0528H: MOV AX, CX
SHR CX, 1
ADC DX, CX
TEST AL, 1
JNZ L0504H
JMP SHORT L04CBH
.ENDIF
L0534H: PUSH SS
POP DS
MOV WORD PTR D009CH, DI
ADD DX, DI
INC DI
SHL DI, 1
ADD DX, DI
INC DX
AND DL, -2
SUB SP, DX
MOV AX, SP
MOV WORD PTR D009EH, AX
MOV BX, AX
ADD DI, BX
PUSH SS
POP ES
LDS SI, DWORD PTR D00A2H
MOV WORD PTR SS:[BX], SI
INC BX
INC BX
MOV DS, WORD PTR SS:D0064H
MOV SI, 0081H
JMP SHORT L0568H
L0565H: XOR AX, AX
STOSB
L0568H: LODSB
CMP AL, 32
JZ L0568H
CMP AL, 9
JZ L0568H
.IF (AL != 13)
OR AL, AL
JZ L05F1H
MOV WORD PTR SS:[BX], DI
INC BX
INC BX
L057EH: DEC SI
L057FH: LODSB
CMP AL, 32
JZ L0565H
CMP AL, 9
JZ L0565H
.IF (AL != 13)
OR AL, AL
JZ L05EEH
.IF (AL != 34)
.IF (AL != 92)
STOSB
JMP SHORT L057FH
.ENDIF
L059BH: XOR CX, CX
L059DH: INC CX
LODSB
CMP AL, 92
JZ L059DH
.IF (AL != 34)
MOV AL, 92
REP STOSB
JMP SHORT L057EH
.ENDIF
L05ADH: MOV AL, 92
SHR CX, 1
REP STOSB
JAE L05BBH
MOV AL, 34
STOSB
JMP SHORT L057FH
L05BAH: DEC SI
.ENDIF
L05BBH: LODSB
CMP AL, 13
JZ L05EEH
OR AL, AL
JZ L05EEH
CMP AL, 34
JZ L057FH
.IF (AL != 92)
STOSB
JMP SHORT L05BBH
.ENDIF
L05CFH: XOR CX, CX
L05D1H: INC CX
LODSB
CMP AL, 92
JZ L05D1H
.IF (AL != 34)
MOV AL, 92
REP STOSB
JMP SHORT L05BAH
.ENDIF
L05E1H: MOV AL, 92
SHR CX, 1
REP STOSB
JAE L057FH
MOV AL, 34
STOSB
JMP SHORT L05BBH
.ENDIF
L05EEH: XOR AX, AX
STOSB
.ENDIF
L05F1H: PUSH SS
POP DS
MOV WORD PTR [BX], 0000H
JMP WORD PTR D00AEH
Proc047ESeg1 ENDP
; Missing MOV SP,BP and POP BP in epilogue.
Proc05FCSeg1 PROC NEAR C
PUSH BP
MOV BP, SP
hCall <FAR PTR GetDosEnvironment, DS>
OR AX, AX
JZ L060BH
MOV DX, AX
L060BH: MOV BX, DX
MOV ES, DX
XOR AX, AX
XOR SI, SI
XOR DI, DI
MOV CX, 0FFFFH
OR BX, BX
JZ L062AH
.IF (BYTE PTR ES:D0000H != 0)
L0624H: REPNE SCASB
INC SI
SCASB
JNZ L0624H
.ENDIF
L062AH: MOV AX, DI
INC AX
AND AL, -2
INC SI
MOV DI, SI
SHL SI, 1
MOV CX, 0009H
CALL NEAR PTR Proc071ESeg1
PUSH AX
MOV AX, SI
CALL NEAR PTR Proc071ESeg1
MOV WORD PTR D00A0H, AX
PUSH ES
PUSH DS
POP ES
POP DS
MOV CX, DI
MOV BX, AX
XOR SI, SI
POP DI
DEC CX
JCXZ L0677H
L0651H: MOV AX, WORD PTR [SI]
.IF (AX == WORD PTR SS:D0042H)
PUSH CX
PUSH SI
PUSH DI
MOV DI, 0042H
MOV CX, 0006H
REPE CMPSW
POP DI
POP SI
POP CX
JZ L066FH
.ENDIF
L066AH: MOV WORD PTR ES:[BX], DI
INC BX
INC BX
L066FH: LODSB
STOSB
OR AL, AL
JNZ L066FH
LOOP L0651H
L0677H: MOV WORD PTR ES:[BX], CX
POP DS
POP BP
RET
Proc05FCSeg1 ENDP
L067DH DB 0000H
Proc067DSeg1 PROC NEAR C
PUSH SS
POP DS
MOV AX, 0003H
L0683H:: hCall <NEAR PTR Proc040ESeg1, AX, AX>
CALL NEAR PTR Proc06EDSeg1
CALL NEAR PTR Proc06C2Seg1
XOR BX, BX
OR AX, AX
JZ L06B1H
MOV DI, AX
MOV AX, 0009H
.IF (BYTE PTR [DI] == 77)
MOV AX, 000FH
.ENDIF
L06A1H: ADD DI, AX
PUSH DI
PUSH DS
POP ES
MOV AL, 13
MOV CX, 0022H
REPNE SCASB
MOV BYTE PTR [DI-1], BL
POP AX
L06B1H: hCall <FAR PTR FatalAppExit, BX, DS, AX>
MOV AX, 00FFH
hCall <FAR PTR FatalExit, AX>
Proc067DSeg1 ENDP
Proc06C2Seg1 PROC NEAR PASCAL <NOLOADDS, NOINCBP, FORCEFRAME, NOCHECKSTACK>, par4:WORD
PUSH SI
PUSH DI
PUSH DS
POP ES
MOV DX, WORD PTR par4
MOV SI, 0102H
L06CFH: LODSW
.IF (AX != DX)
INC AX
XCHG SI, AX
JZ L06E4H
XCHG DI, AX
XOR AX, AX
MOV CX, 0FFFFH
REPNE SCASB
MOV SI, DI
JMP SHORT L06CFH
.ENDIF
L06E4H: XCHG SI, AX
POP DI
POP SI
RET
Proc06C2Seg1 ENDP
Proc06EDSeg1 PROC NEAR PASCAL <NOLOADDS, NOINCBP, FORCEFRAME, NOCHECKSTACK>, par4:WORD
PUSH DI
.IF (WORD PTR D00B2H != 0)
hCall <NEAR PTR Proc06C2Seg1, WORD PTR par4>
OR AX, AX
JZ L0716H
XCHG DX, AX
MOV DI, DX
XOR AX, AX
MOV CX, 0FFFFH
REPNE SCASB
NOT CX
DEC CX
MOV BX, WORD PTR D006EH
CALL NEAR PTR Proc0861Seg1
.ENDIF
L0716H: POP DI
RET
Proc06EDSeg1 ENDP
L071DH DB 0000H
Proc071DSeg1 PROC NEAR C
Proc071DSeg1 ENDP
Proc071ESeg1 PROC NEAR C <NOLOADDS, NOINCBP, FORCEFRAME, NOCHECKSTACK>
PUSH BX
PUSH ES
PUSH CX
MOV CX, 1000H
XCHG CX, WORD PTR D00B0H
hCall <NEAR PTR Proc0868Seg1, CX, AX>
POP BX
POP WORD PTR D00B0H
POP CX
MOV DX, DS
OR AX, AX
JZ L0740H
POP ES
POP BX
JMP SHORT L0745H
L0740H: MOV AX, CX
JMP NEAR PTR L0683H
L0745H: RET
Proc071ESeg1 ENDP
L0749H DB 0000H
Proc0749Seg1 PROC NEAR C
PUSH CX
PUSH DI
.IF (BYTE PTR [BX+2] & SBYTE PTR 1)
CALL NEAR PTR Proc083CSeg1
MOV DI, SI
MOV AX, WORD PTR [SI]
.IF (AL & SBYTE PTR 1)
SUB CX, AX
DEC CX
.ENDIF
L0760H: INC CX
INC CX
MOV SI, WORD PTR [BX+4]
OR SI, SI
JZ L07B5H
ADD CX, SI
JAE L0776H
XOR AX, AX
MOV DX, 0FFF0H
JCXZ L07A4H
JMP SHORT L07B5H
L0776H: PUSH SS
POP ES
MOV AX, WORD PTR D00B0H
.IF (AX != 1000H)
MOV DX, 8000H
L0784H: .IF (DX >= AX)
SHR DX, 1
JNZ L0784H
JMP SHORT L07B0H
.ENDIF
L078EH: CMP DX, 8
JB L07B0H
SHL DX, 1
MOV AX, DX
.ENDIF
L0797H: DEC AX
MOV DX, AX
ADD AX, CX
JAE L07A0H
XOR AX, AX
L07A0H: NOT DX
AND AX, DX
L07A4H: hCall <NEAR PTR Proc07D6Seg1, DX>
POP DX
JAE L07B8H
CMP DX, -16
JZ L07B5H
L07B0H: MOV AX, 0010H
JMP SHORT L0797H
.ENDIF
L07B5H: STC
JMP SHORT L07D3H
L07B8H: MOV DX, AX
SUB DX, WORD PTR ES:[BX+4]
MOV WORD PTR [BX+4], AX
MOV WORD PTR [BX+10], DI
MOV SI, WORD PTR [BX+12]
DEC DX
MOV WORD PTR [SI], DX
INC DX
ADD SI, DX
MOV WORD PTR [SI], 0FFFEH
MOV WORD PTR [BX+12], SI
L07D3H: POP DI
POP CX
RET
Proc0749Seg1 ENDP
Proc07D6Seg1 PROC NEAR C
MOV DX, AX
.IF ( !(BYTE PTR [BX+2] & 4))
L07E0H: PUSH DX
PUSH CX
PUSH BX
MOV SI, WORD PTR [BX+6]
MOV BX, WORD PTR CS:L01ACH
XOR CX, CX
OR DX, DX
JNZ L07F8H
TEST BX, 0010H
JNZ L0837H
INC CX
L07F8H: MOV AX, 0022H
.IF ( !(BX & 0001H))
MOV AX, 0020H
.ENDIF
L0804H: hCall <FAR PTR GlobalRealloc, SI, CX, DX, AX>
OR AX, AX
JZ L0837H
CMP AX, SI
JNZ L0831H
hCall <FAR PTR GlobalSize, SI>
OR DX, AX
JZ L0831H
POP BX
POP CX
POP DX
MOV AX, DX
.IF (BYTE PTR [BX+2] & SBYTE PTR 4)
DEC DX
MOV WORD PTR [BX-2], DX
.ENDIF
L082EH: CLC
JMP SHORT L083BH
.ENDIF
L0831H: MOV AX, 0012H
JMP NEAR PTR L0683H
L0837H: POP BX
POP CX
POP DX
STC
L083BH: RET
Proc07D6Seg1 ENDP
Proc083CSeg1 PROC NEAR C
PUSH DI
MOV SI, WORD PTR [BX+10]
.IF (SI == WORD PTR [BX+12])
MOV SI, WORD PTR [BX+8]
.ENDIF
L0848H: LODSW
.IF (AX != -2)
MOV DI, SI
AND AL, -2
ADD SI, AX
JMP SHORT L0848H
.ENDIF
L0856H: DEC DI
DEC DI
MOV SI, DI
POP DI
RET
Proc083CSeg1 ENDP
; Missing MOV SP,BP and POP BP in epilogue.
Proc085CSeg1 PROC NEAR C
PUSH BP
MOV BP, SP
POP BP
RET
Proc085CSeg1 ENDP
L0867H DB 0000H
Proc0861Seg1 PROC NEAR C
MOV AX, 0014H
JMP NEAR PTR L0683H
Proc0861Seg1 ENDP
Proc0868Seg1 PROC NEAR C <NOLOADDS, NOINCBP, FORCEFRAME, NOCHECKSTACK>, par4:WORD
LOCAL local2:WORD, local4:WORD
MOV AX, 0FFFFH
hCall <FAR PTR LockSegment, AX>
MOV AX, 0020H
PUSH AX
.IF (WORD PTR par4 != 0)
MOV AX, WORD PTR par4
JMP SHORT L0889H
.ENDIF
L0886H: MOV AX, 0001H
L0889H: hCall <FAR PTR LocalAlloc, AX>
MOV WORD PTR local2, AX
MOV AX, 0FFFFH
hCall <FAR PTR UnlockSegment, AX>
MOV AX, WORD PTR local2
RET
Proc0868Seg1 ENDP
Proc08A2Seg1 PROC NEAR C <NOLOADDS, NOINCBP, FORCEFRAME, NOCHECKSTACK>, par4:WORD
PUSH WORD PTR par4
CALL FAR PTR LocalFree
RET
Proc08A2Seg1 ENDP
Proc08B1Seg1 PROC NEAR C <NOLOADDS, NOINCBP, FORCEFRAME, NOCHECKSTACK>, par6:WORD, par4:WORD
LOCAL local2:WORD, local4:WORD
.IF (WORD PTR par4 == 0)
hCall <NEAR PTR Proc0868Seg1, WORD PTR par6>
ADD SP, 2
JMP SHORT L08FEH
NOP
.ENDIF
L08CAH: MOV AX, 0FFFFH
hCall <FAR PTR LockSegment, AX>
PUSH WORD PTR par4
.IF (WORD PTR par6 != 0)
MOV AX, WORD PTR par6
JMP SHORT L08E5H
NOP
.ENDIF
L08E2H: MOV AX, 0001H
L08E5H: PUSH AX
MOV AX, 0062H
hCall <FAR PTR LocalRealloc, AX>
MOV WORD PTR local2, AX
MOV AX, 0FFFFH
hCall <FAR PTR UnlockSegment, AX>
MOV AX, WORD PTR local2
L08FEH: RET
Proc08B1Seg1 ENDP
Proc0902Seg1 PROC NEAR C <NOLOADDS, NOINCBP, FORCEFRAME, NOCHECKSTACK>, par4:WORD
PUSH WORD PTR par4
CALL FAR PTR LocalSize
RET
Proc0902Seg1 ENDP
Proc0911Seg1 PROC NEAR C
NOP
Proc0911Seg1 ENDP
END L01B4H