home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 24 DOS / 24-DOS.zip / wdasm17.zip / HELLOHIL.ASM < prev    next >
Assembly Source File  |  1993-04-02  |  22KB  |  1,112 lines

  1.  
  2. ; HiLevel Syntax Generator Version 2.01
  3. ; Source file: c:\wdasm\hello1.asm
  4.  
  5.         TITLE    WDASM Example Program
  6.         .286
  7.         .MODEL    SMALL
  8.  
  9.         OPTION    NOM510
  10.         OPTION    CASEMAP:NONE
  11.         OPTION    PROLOGUE:hPrologue
  12.         OPTION    EPILOGUE:hEpilogue
  13.  
  14.         INCLUDE    HILEVEL.INC
  15.  
  16.         INCLUDE    HELLO2.INC
  17.  
  18.         EXTERN        DefWindowProc:FAR
  19.         EXTERN        GetMessage:FAR
  20.         EXTERN        TranslateMessage:FAR
  21.         EXTERN        FatalExit:FAR
  22.         EXTERN        DispatchMessage:FAR
  23.         EXTERN        GetVersion:FAR
  24.         EXTERN        GetDosEnvironment:FAR
  25.         EXTERN        LocalAlloc:FAR
  26.         EXTERN        LocalRealloc:FAR
  27.         EXTERN        LocalFree:FAR
  28.         EXTERN        FatalAppExit:FAR
  29.         EXTERN        LocalSize:FAR
  30.         EXTERN        UpdateWindow:FAR
  31.         EXTERN        GlobalRealloc:FAR
  32.         EXTERN        GlobalSize:FAR
  33.         EXTERN        InitApp:FAR
  34.         EXTERN        PostQuitMessage:FAR
  35.         EXTERN        LockSegment:FAR
  36.         EXTERN        UnlockSegment:FAR
  37.         EXTERN        WaitEvent:FAR
  38.         EXTERN        GetClientRect:FAR
  39.         EXTERN        GetModuleFileName:FAR
  40.         EXTERN        BeginPaint:FAR
  41.         EXTERN        EndPaint:FAR
  42.         EXTERN        CreateWindow:FAR
  43.         EXTERN        ShowWindow:FAR
  44.         EXTERN        LoadCursor:FAR
  45.         EXTERN        LoadIcon:FAR
  46.         EXTERN        RegisterClass:FAR
  47.         EXTERN        InitTask:FAR
  48.         EXTERN        GetStockObject:FAR
  49.         EXTERN        DrawText:FAR
  50.         EXTERN        Dos3Call:FAR
  51.         EXTERN        __winflags:FAR
  52.  
  53.  
  54.         .CODE
  55.  
  56. Proc0000Seg1    PROC    NEAR C
  57.         ADD    BYTE PTR [BX+SI], AL
  58.         ADD    BYTE PTR [BX+SI], AL
  59.         ADD    BYTE PTR [BX+SI], AL
  60.         ADD    BYTE PTR [BX+SI], AL
  61.         ADD    BYTE PTR [BX+SI], AL
  62.         ADD    BYTE PTR [BX+SI], AL
  63.         ADD    BYTE PTR [BX+SI], AL
  64.         ADD    BYTE PTR [BX+SI], AL
  65. Proc0000Seg1    ENDP
  66.  
  67.  
  68. Proc0010Seg1    PROC    NEAR PASCAL <NOLOADDS, NOINCBP, FORCEFRAME, CHECKSTACK>, par12:WORD, par10:WORD, par8:WORD, par6:WORD, par4:WORD
  69.         LOCAL    local2:WORD, local4:WORD, local6:WORD,    \
  70.             local8:WORD, local10:WORD, local12:WORD, local14:WORD,    \
  71.             local16:WORD, local18:WORD, local20:WORD, local22:WORD,    \
  72.             local24:WORD, local26:WORD, local28:WORD, local30:WORD,    \
  73.             local32:WORD, local34:WORD, local36:WORD, local38:WORD,    \
  74.             local40:WORD, local42:WORD, local44:WORD, local46:WORD
  75.         .IF    (WORD PTR par10 == 0)
  76. L0022H:            MOV    WORD PTR local46, 0003H
  77.             MOV    WORD PTR local44, LROFFSET WNDPROC
  78.             MOV    WORD PTR local42, SEG WNDPROC
  79.             MOV    WORD PTR local40, 0000H
  80.             MOV    WORD PTR local38, 0000H
  81.             MOV    AX, WORD PTR par12
  82.             MOV    WORD PTR local36, AX
  83.             hCall    <FAR PTR LoadIcon, 0, 0, 7F00H>
  84.             MOV    WORD PTR local34, AX
  85.             hCall    <FAR PTR LoadCursor, 0, 0, 7F00H>
  86.             MOV    WORD PTR local32, AX
  87.             hCall    <FAR PTR GetStockObject, 0>
  88.             MOV    WORD PTR local30, AX
  89.             MOV    WORD PTR local28, 0000H
  90.             MOV    WORD PTR local26, 0000H
  91.             MOV    AX, 0010H
  92.             MOV    DX, DS
  93.             MOV    WORD PTR local24, AX
  94.             MOV    WORD PTR local22, DX
  95.             LEA    AX, WORD PTR local46
  96.             MOV    DX, SS
  97.             hCall    <FAR PTR RegisterClass, DX, AX>
  98.         .ENDIF
  99. L008AH:        MOV    AX, 0010H
  100.         MOV    DX, DS
  101.         PUSH    DX
  102.         PUSH    AX
  103.         MOV    AX, 00C2H
  104.         MOV    DX, DS
  105.         hCall    <FAR PTR CreateWindow, DX, AX, 00CFH, 0, 8000H, 8000H, 8000H, 8000H, 0, 0, WORD PTR par12, 0, 0>
  106.         MOV    WORD PTR local2, AX
  107.         hCall    <FAR PTR ShowWindow, AX, WORD PTR par4>
  108.         hCall    <FAR PTR UpdateWindow, WORD PTR local2>
  109. L00CDH:        LEA    AX, WORD PTR local20
  110.         MOV    DX, SS
  111.         hCall    <FAR PTR GetMessage, DX, AX, 0, 0, 0>
  112.         .IF    (AX)
  113.             LEA    AX, WORD PTR local20
  114.             MOV    DX, SS
  115.             hCall    <FAR PTR TranslateMessage, DX, AX>
  116.             LEA    AX, WORD PTR local20
  117.             MOV    DX, SS
  118.             hCall    <FAR PTR DispatchMessage, DX, AX>
  119.             JMP    SHORT L00CDH
  120.             NOP
  121.         .ENDIF
  122. L00FEH:        MOV    AX, WORD PTR local16
  123.         RET
  124. Proc0010Seg1    ENDP
  125.  
  126.  
  127. Proc0105Seg1    PROC    NEAR C
  128.         NOP
  129. Proc0105Seg1    ENDP
  130.  
  131.  
  132. WNDPROC    PROC    FAR PASCAL PUBLIC <LOADDS, INCBP, FORCEFRAME, CHECKSTACK>, par14:WORD, par12:WORD, par10:WORD, par8:WORD, par6:WORD
  133.         LOCAL    local2:WORD, local4:WORD, local6:WORD,    \
  134.             local8:WORD, local10:WORD, local12:WORD, local14:WORD,    \
  135.             local16:WORD, local18:WORD, local20:WORD, local22:WORD,    \
  136.             local24:WORD, local26:WORD, local28:WORD, local30:WORD,    \
  137.             local32:WORD, local34:WORD, local36:WORD, local38:WORD,    \
  138.             local40:WORD, local42:WORD, local44:WORD
  139.         PUSH    SI
  140.         PUSH    DI
  141.         MOV    SI, WORD PTR par14
  142.         MOV    AX, WORD PTR par12
  143.         JMP    NEAR PTR L017AH
  144.         NOP
  145. L0122H:        PUSH    SI
  146.         LEA    AX, WORD PTR local36
  147.         MOV    DX, SS
  148.         hCall    <FAR PTR BeginPaint, DX, AX>
  149.         MOV    DI, AX
  150.         PUSH    SI
  151.         LEA    AX, WORD PTR local44
  152.         MOV    DX, SS
  153.         hCall    <FAR PTR GetClientRect, DX, AX>
  154.         PUSH    DI
  155.         MOV    AX, 00DFH
  156.         MOV    DX, DS
  157.         PUSH    DX
  158.         PUSH    AX
  159.         PUSH    -1
  160.         LEA    AX, WORD PTR local44
  161.         MOV    DX, SS
  162.         hCall    <FAR PTR DrawText, DX, AX, 37>
  163.         PUSH    SI
  164.         LEA    AX, WORD PTR local36
  165.         MOV    DX, SS
  166.         hCall    <FAR PTR EndPaint, DX, AX>
  167.         XOR    AX, AX
  168.         XOR    DX, DX
  169.         JMP    SHORT L019FH
  170.         NOP
  171. L016AH:        hCall    <FAR PTR PostQuitMessage, 0>
  172.         XOR    AX, AX
  173.         XOR    DX, DX
  174.         JMP    SHORT L019FH
  175.         NOP
  176.         JMP    SHORT L0187H
  177. L017AH:        CMP    AX, 0002H
  178.         JZ    L016AH
  179.         .IF    (AX == 000FH)
  180.             JMP    NEAR PTR L0122H
  181.         .ENDIF
  182. L0187H:        hCall    <FAR PTR DefWindowProc, SI, WORD PTR par12, WORD PTR par10, WORD PTR par8, WORD PTR par6>
  183.         JMP    SHORT L019FH
  184.         NOP
  185.         MOV    WORD PTR par14, SI
  186. L019FH:        POP    DI
  187.         POP    SI
  188.         RET
  189. WNDPROC    ENDP
  190.  
  191.  
  192. L01ACH        DW    LROFFSET __winflags
  193. Proc01ACSeg1    PROC    NEAR C
  194. L01AEH:        MOV    AL, -1
  195.         hCall    <NEAR PTR Proc034ESeg1, AX>
  196. L01B4H::    XOR    BP, BP
  197.         hCall    <FAR PTR InitTask, BP>
  198.         OR    AX, AX
  199.         JZ    L01AEH
  200.         MOV    WORD PTR D0064H, ES
  201.         ADD    CX, 0100H
  202.         JB    L01AEH
  203.         MOV    WORD PTR D002EH, CX
  204.         MOV    WORD PTR D0030H, SI
  205.         MOV    WORD PTR D0032H, DI
  206.         MOV    WORD PTR D0034H, BX
  207.         MOV    WORD PTR D0036H, ES
  208.         MOV    WORD PTR D0038H, DX
  209.         CALL    FAR PTR GetVersion
  210.         MOV    WORD PTR D0066H, AX
  211.         MOV    AH, 48
  212.         .IF    (WORD PTR CS:L01ACH & SWORD PTR 0001H)
  213.             CALL    FAR PTR Dos3Call
  214.             JMP    SHORT L01FEH
  215.         .ENDIF
  216. L01FCH:        INT    0021H
  217. L01FEH:        MOV    WORD PTR D0068H, AX
  218.         .IF    ( !(WORD PTR CS:L01ACH & 0001H))
  219.             MOV    AL, 0
  220.             MOV    BYTE PTR D006BH, AL
  221.         .ENDIF
  222. L020FH:        XOR    AX, AX
  223.         hCall    <FAR PTR WaitEvent, AX>
  224.         hCall    <FAR PTR InitApp, WORD PTR D0032H>
  225.         OR    AX, AX
  226.         JZ    L01AEH
  227.         CALL    NEAR PTR Proc0268Seg1
  228.         CALL    NEAR PTR Proc047ESeg1
  229.         CALL    NEAR PTR Proc05FCSeg1
  230.         CALL    NEAR PTR Proc085CSeg1
  231.         hCall    <NEAR PTR Proc024CSeg1, WORD PTR D00A0H, WORD PTR D009EH, WORD PTR D009CH>
  232.         ADD    SP, 6
  233.         hCall    <NEAR PTR Proc0347Seg1, AX>
  234.         MOV    AX, 0015H
  235.         JMP    NEAR PTR L0683H
  236. Proc01ACSeg1    ENDP
  237.  
  238.  
  239. ;        Missing MOV SP,BP and POP BP in epilogue.
  240. Proc024CSeg1    PROC    NEAR C
  241.         PUSH    BP
  242.         MOV    BP, SP
  243.         hCall    <NEAR PTR Proc0010Seg1, WORD PTR D0032H, WORD PTR D0030H, WORD PTR D0036H, WORD PTR D0034H, WORD PTR D0038H>
  244.         POP    BP
  245.         RET
  246. Proc024CSeg1    ENDP
  247.  
  248.  
  249. Proc0268Seg1    PROC    NEAR C
  250.         MOV    AX, 3500H
  251.         .IF    (WORD PTR CS:L01ACH & SWORD PTR 0001H)
  252.             CALL    FAR PTR Dos3Call
  253.             JMP    SHORT L027DH
  254.         .ENDIF
  255. L027BH:        INT    0021H
  256. L027DH:        MOV    WORD PTR D0050H, BX
  257.         MOV    WORD PTR D0052H, ES
  258.         PUSH    CS
  259.         POP    DS
  260.         MOV    AX, 2500H
  261.         MOV    DX, 067EH
  262.         .IF    (WORD PTR CS:L01ACH & SWORD PTR 0001H)
  263.             CALL    FAR PTR Dos3Call
  264.             JMP    SHORT L029FH
  265.         .ENDIF
  266. L029DH:        INT    0021H
  267. L029FH:        PUSH    SS
  268.         POP    DS
  269.         MOV    CX, WORD PTR D00B8H
  270.         JCXZ    L02D0H
  271.         MOV    ES, WORD PTR D0064H
  272.         MOV    SI, WORD PTR ES:D002CH
  273.         MOV    AX, WORD PTR D00BAH
  274.         MOV    DX, WORD PTR D00BCH
  275.         XOR    BX, BX
  276.         CALL    DWORD PTR D00B6H
  277.         JAE    L02C2H
  278.         JMP    NEAR PTR L0424H
  279. L02C2H:        MOV    AX, WORD PTR D00BEH
  280.         MOV    DX, WORD PTR D00C0H
  281.         MOV    BX, 0003H
  282.         CALL    DWORD PTR D00B6H
  283. L02D0H:        MOV    ES, WORD PTR D0064H
  284.         MOV    CX, WORD PTR ES:D002CH
  285.         JCXZ    L0319H
  286.         MOV    ES, CX
  287.         XOR    DI, DI
  288. L02DFH:        .IF    (BYTE PTR ES:[DI] != 0)
  289.             MOV    CX, 000DH
  290.             MOV    SI, 0042H
  291.             REPE CMPSB
  292.             JZ    L02FAH
  293.             MOV    CX, 7FFFH
  294.             XOR    AX, AX
  295.             REPNE SCASB
  296.             JNZ    L0319H
  297.             JMP    SHORT L02DFH
  298. L02FAH:            PUSH    ES
  299.             PUSH    DS
  300.             POP    ES
  301.             POP    DS
  302.             MOV    SI, DI
  303.             MOV    DI, 0074H
  304.             MOV    CL, 4
  305. L0305H:            LODSB
  306.             SUB    AL, 65
  307.             JB    L0317H
  308.             SHL    AL, CL
  309.             XCHG    DX, AX
  310.             LODSB
  311.             SUB    AL, 65
  312.             JB    L0317H
  313.             OR    AL, DL
  314.             STOSB
  315.             JMP    SHORT L0305H
  316. L0317H:            PUSH    SS
  317.             POP    DS
  318.         .ENDIF
  319. L0319H:        MOV    SI, 00C2H
  320.         MOV    DI, 00C2H
  321.         CALL    NEAR PTR Proc03EBSeg1
  322.         MOV    SI, 00C2H
  323.         MOV    DI, 00C2H
  324.         CALL    NEAR PTR Proc03FASeg1
  325.         MOV    SI, 00C2H
  326.         MOV    DI, 00C2H
  327.         CALL    NEAR PTR Proc03EBSeg1
  328.         MOV    SI, 00C2H
  329.         MOV    DI, 00C2H
  330.         CALL    NEAR PTR Proc03EBSeg1
  331.         MOV    SI, 00C2H
  332.         MOV    DI, 00C2H
  333.         CALL    NEAR PTR Proc03FASeg1
  334.         RET
  335. Proc0268Seg1    ENDP
  336.  
  337.  
  338. ;        Missing MOV SP,BP and POP BP in epilogue.
  339. Proc0347Seg1    PROC    NEAR C
  340.         PUSH    BP
  341.         MOV    BP, SP
  342.         XOR    CX, CX
  343.         JMP    SHORT L0368H
  344. Proc0347Seg1    ENDP
  345.  
  346.  
  347. ;        Missing MOV SP,BP and POP BP in epilogue.
  348. Proc034ESeg1    PROC    NEAR C
  349.         PUSH    BP
  350.         MOV    BP, SP
  351.         MOV    CX, 0001H
  352.         JMP    SHORT L0368H
  353.         PUSH    BP
  354.         MOV    BP, SP
  355.         PUSH    SI
  356.         PUSH    DI
  357.         MOV    CX, 0100H
  358.         JMP    SHORT L0368H
  359.         PUSH    BP
  360.         MOV    BP, SP
  361.         PUSH    SI
  362.         PUSH    DI
  363.         MOV    CX, 0101H
  364. L0368H::    MOV    BYTE PTR D00A9H, CH
  365.         PUSH    CX
  366.         OR    CL, CL
  367.         JNZ    L038DH
  368.         MOV    SI, 024CH
  369.         MOV    DI, 024CH
  370.         CALL    NEAR PTR Proc03EBSeg1
  371.         MOV    SI, 00C2H
  372.         MOV    DI, 00C2H
  373.         CALL    NEAR PTR Proc03EBSeg1
  374.         MOV    SI, WORD PTR [BP+4]
  375.         hCall    <NEAR PTR Proc085CSeg1, SI>
  376.         ADD    SP, 2
  377. L038DH:        MOV    SI, 00C2H
  378.         MOV    DI, 00C2H
  379.         CALL    NEAR PTR Proc03EBSeg1
  380.         MOV    SI, 00C2H
  381.         MOV    DI, 00C2H
  382.         CALL    NEAR PTR Proc03FASeg1
  383.         CALL    NEAR PTR Proc03C2Seg1
  384.         POP    AX
  385.         OR    AH, AH
  386.         JNZ    L03BEH
  387.         MOV    AX, WORD PTR [BP+4]
  388.         MOV    AH, 76
  389.         .IF    (WORD PTR CS:L01ACH & SWORD PTR 0001H)
  390.             CALL    FAR PTR Dos3Call
  391.             JMP    SHORT L03BEH
  392.         .ENDIF
  393. L03BCH:        INT    0021H
  394. L03BEH:        POP    DI
  395.         POP    SI
  396.         POP    BP
  397.         RET
  398. Proc034ESeg1    ENDP
  399.  
  400.  
  401. Proc03C2Seg1    PROC    NEAR C
  402.         MOV    CX, WORD PTR D00B8H
  403.         JCXZ    L03CFH
  404.         MOV    BX, 0002H
  405.         CALL    DWORD PTR D00B6H
  406. L03CFH:        PUSH    DS
  407.         LDS    DX, DWORD PTR D0050H
  408.         MOV    AX, 2500H
  409.         .IF    (WORD PTR CS:L01ACH & SWORD PTR 0001H)
  410.             CALL    FAR PTR Dos3Call
  411.             JMP    SHORT L03E9H
  412.         .ENDIF
  413. L03E7H:        INT    0021H
  414. L03E9H:        POP    DS
  415.         RET
  416. Proc03C2Seg1    ENDP
  417.  
  418.  
  419. Proc03EBSeg1    PROC    NEAR C
  420. L03EBH:
  421.         .IF    (SI < DI)
  422.             DEC    DI
  423.             DEC    DI
  424.             MOV    CX, WORD PTR [DI]
  425.             JCXZ    L03EBH
  426.             CALL    CX
  427.             JMP    SHORT L03EBH
  428.         .ENDIF
  429. L03F9H:        RET
  430. Proc03EBSeg1    ENDP
  431.  
  432.  
  433. Proc03FASeg1    PROC    NEAR C
  434. L03FAH:
  435.         .IF    (SI < DI)
  436.             SUB    DI, 4
  437.             MOV    AX, WORD PTR [DI]
  438.             OR    AX, WORD PTR [DI+2]
  439.             JZ    L03FAH
  440.             CALL    DWORD PTR [DI]
  441.             JMP    SHORT L03FAH
  442.         .ENDIF
  443. L040CH:        RET
  444. Proc03FASeg1    ENDP
  445.  
  446.  
  447. L040DH        DB    0000H
  448. Proc040DSeg1    PROC    NEAR C
  449. Proc040DSeg1    ENDP
  450.  
  451.  
  452. Proc040ESeg1    PROC    NEAR C <NOLOADDS, NOINCBP, FORCEFRAME, NOCHECKSTACK>
  453.         MOV    AX, 00FCH
  454.         hCall    <NEAR PTR Proc06EDSeg1, AX>
  455.         MOV    AX, 00FFH
  456.         hCall    <NEAR PTR Proc06EDSeg1, AX>
  457.         RET
  458. Proc040ESeg1    ENDP
  459.  
  460.  
  461. L0423H        DB    0000H
  462. Proc0423Seg1    PROC    NEAR C
  463. L0424H::    MOV    AX, 0002H
  464.         JMP    NEAR PTR L0683H
  465. Proc0423Seg1    ENDP
  466.  
  467.  
  468. _aNchkstk    PROC    NEAR C
  469.         POP    BX
  470.         INC    AX
  471.         AND    AL, -2
  472.         SUB    AX, SP
  473.         JAE    L0477H
  474.         NEG    AX
  475.         CMP    WORD PTR SS:D000AH, AX
  476.         JA    L0477H
  477.         .IF    (WORD PTR SS:D000CH > AX)
  478.             MOV    WORD PTR D000CH, AX
  479.         .ENDIF
  480. L0446H:        MOV    SP, AX
  481.         JMP    BX
  482.         POP    BX
  483.         POP    DX
  484.         INC    AX
  485.         AND    AL, -2
  486.         SUB    AX, SP
  487.         JAE    L046CH
  488.         NEG    AX
  489.         CMP    WORD PTR SS:D000AH, AX
  490.         JA    L046CH
  491.         .IF    (WORD PTR SS:D000CH > AX)
  492.             MOV    WORD PTR D000CH, AX
  493.         .ENDIF
  494. L0467H:        MOV    SP, AX
  495.         PUSH    DX
  496.         PUSH    BX
  497.         RETF
  498. _aNchkstk    ENDP
  499.  
  500.  
  501. L047DH        DB    0000H
  502. Proc046CSeg1    PROC    NEAR C
  503. L046CH::    MOV    DX, WORD PTR SS:D00ACH
  504.         INC    DX
  505.         JZ    L0477H
  506.         JMP    WORD PTR D00ACH
  507. L0477H::    MOV    AX, 0000H
  508.         JMP    NEAR PTR L0683H
  509. Proc046CSeg1    ENDP
  510.  
  511.  
  512. L05FBH        DB    0000H
  513. Proc047ESeg1    PROC    NEAR C
  514.         POP    WORD PTR D00AEH
  515.         MOV    AX, 0104H
  516.         MOV    CX, 0008H
  517.         CALL    NEAR PTR Proc071ESeg1
  518.         MOV    WORD PTR D00A4H, DX
  519.         MOV    WORD PTR D00A2H, AX
  520.         PUSH    DX
  521.         PUSH    AX
  522.         PUSH    WORD PTR D0032H
  523.         PUSH    DX
  524.         PUSH    AX
  525.         MOV    AX, 0104H
  526.         hCall    <FAR PTR GetModuleFileName, AX>
  527.         POP    BX
  528.         POP    ES
  529.         ADD    BX, AX
  530.         MOV    BYTE PTR ES:[BX], 0
  531.         MOV    DX, 0001H
  532.         MOV    DI, 0001H
  533.         MOV    SI, 0081H
  534.         MOV    DS, WORD PTR D0064H
  535. L04B8H:        LODSB
  536.         CMP    AL, 32
  537.         JZ    L04B8H
  538.         CMP    AL, 9
  539.         JZ    L04B8H
  540.         .IF    (AL != 13)
  541.             OR    AL, AL
  542.             JZ    L0534H
  543.             INC    DI
  544. L04CAH:            DEC    SI
  545. L04CBH:            LODSB
  546.             CMP    AL, 32
  547.             JZ    L04B8H
  548.             CMP    AL, 9
  549.             JZ    L04B8H
  550.             CMP    AL, 13
  551.             JZ    L0534H
  552.             OR    AL, AL
  553.             JZ    L0534H
  554.             .IF    (AL != 34)
  555.                 .IF    (AL != 92)
  556.                     INC    DX
  557.                     JMP    SHORT L04CBH
  558.                 .ENDIF
  559. L04E7H:                XOR    CX, CX
  560. L04E9H:                INC    CX
  561.                 LODSB
  562.                 CMP    AL, 92
  563.                 JZ    L04E9H
  564.                 .IF    (AL != 34)
  565.                     ADD    DX, CX
  566.                     JMP    SHORT L04CAH
  567.                 .ENDIF
  568. L04F7H:                MOV    AX, CX
  569.                 SHR    CX, 1
  570.                 ADC    DX, CX
  571.                 TEST    AL, 1
  572.                 JNZ    L04CBH
  573.                 JMP    SHORT L0504H
  574. L0503H:                DEC    SI
  575.             .ENDIF
  576. L0504H:            LODSB
  577.             CMP    AL, 13
  578.             JZ    L0534H
  579.             OR    AL, AL
  580.             JZ    L0534H
  581.             CMP    AL, 34
  582.             JZ    L04CBH
  583.             .IF    (AL != 92)
  584.                 INC    DX
  585.                 JMP    SHORT L0504H
  586.             .ENDIF
  587. L0518H:            XOR    CX, CX
  588. L051AH:            INC    CX
  589.             LODSB
  590.             CMP    AL, 92
  591.             JZ    L051AH
  592.             .IF    (AL != 34)
  593.                 ADD    DX, CX
  594.                 JMP    SHORT L0503H
  595.             .ENDIF
  596. L0528H:            MOV    AX, CX
  597.             SHR    CX, 1
  598.             ADC    DX, CX
  599.             TEST    AL, 1
  600.             JNZ    L0504H
  601.             JMP    SHORT L04CBH
  602.         .ENDIF
  603. L0534H:        PUSH    SS
  604.         POP    DS
  605.         MOV    WORD PTR D009CH, DI
  606.         ADD    DX, DI
  607.         INC    DI
  608.         SHL    DI, 1
  609.         ADD    DX, DI
  610.         INC    DX
  611.         AND    DL, -2
  612.         SUB    SP, DX
  613.         MOV    AX, SP
  614.         MOV    WORD PTR D009EH, AX
  615.         MOV    BX, AX
  616.         ADD    DI, BX
  617.         PUSH    SS
  618.         POP    ES
  619.         LDS    SI, DWORD PTR D00A2H
  620.         MOV    WORD PTR SS:[BX], SI
  621.         INC    BX
  622.         INC    BX
  623.         MOV    DS, WORD PTR SS:D0064H
  624.         MOV    SI, 0081H
  625.         JMP    SHORT L0568H
  626. L0565H:        XOR    AX, AX
  627.         STOSB
  628. L0568H:        LODSB
  629.         CMP    AL, 32
  630.         JZ    L0568H
  631.         CMP    AL, 9
  632.         JZ    L0568H
  633.         .IF    (AL != 13)
  634.             OR    AL, AL
  635.             JZ    L05F1H
  636.             MOV    WORD PTR SS:[BX], DI
  637.             INC    BX
  638.             INC    BX
  639. L057EH:            DEC    SI
  640. L057FH:            LODSB
  641.             CMP    AL, 32
  642.             JZ    L0565H
  643.             CMP    AL, 9
  644.             JZ    L0565H
  645.             .IF    (AL != 13)
  646.                 OR    AL, AL
  647.                 JZ    L05EEH
  648.                 .IF    (AL != 34)
  649.                     .IF    (AL != 92)
  650.                         STOSB
  651.                         JMP    SHORT L057FH
  652.                     .ENDIF
  653. L059BH:                    XOR    CX, CX
  654. L059DH:                    INC    CX
  655.                     LODSB
  656.                     CMP    AL, 92
  657.                     JZ    L059DH
  658.                     .IF    (AL != 34)
  659.                         MOV    AL, 92
  660.                         REP STOSB
  661.                         JMP    SHORT L057EH
  662.                     .ENDIF
  663. L05ADH:                    MOV    AL, 92
  664.                     SHR    CX, 1
  665.                     REP STOSB
  666.                     JAE    L05BBH
  667.                     MOV    AL, 34
  668.                     STOSB
  669.                     JMP    SHORT L057FH
  670. L05BAH:                    DEC    SI
  671.                 .ENDIF
  672. L05BBH:                LODSB
  673.                 CMP    AL, 13
  674.                 JZ    L05EEH
  675.                 OR    AL, AL
  676.                 JZ    L05EEH
  677.                 CMP    AL, 34
  678.                 JZ    L057FH
  679.                 .IF    (AL != 92)
  680.                     STOSB
  681.                     JMP    SHORT L05BBH
  682.                 .ENDIF
  683. L05CFH:                XOR    CX, CX
  684. L05D1H:                INC    CX
  685.                 LODSB
  686.                 CMP    AL, 92
  687.                 JZ    L05D1H
  688.                 .IF    (AL != 34)
  689.                     MOV    AL, 92
  690.                     REP STOSB
  691.                     JMP    SHORT L05BAH
  692.                 .ENDIF
  693. L05E1H:                MOV    AL, 92
  694.                 SHR    CX, 1
  695.                 REP STOSB
  696.                 JAE    L057FH
  697.                 MOV    AL, 34
  698.                 STOSB
  699.                 JMP    SHORT L05BBH
  700.             .ENDIF
  701. L05EEH:            XOR    AX, AX
  702.             STOSB
  703.         .ENDIF
  704. L05F1H:        PUSH    SS
  705.         POP    DS
  706.         MOV    WORD PTR [BX], 0000H
  707.         JMP    WORD PTR D00AEH
  708. Proc047ESeg1    ENDP
  709.  
  710.  
  711. ;        Missing MOV SP,BP and POP BP in epilogue.
  712. Proc05FCSeg1    PROC    NEAR C
  713.         PUSH    BP
  714.         MOV    BP, SP
  715.         hCall    <FAR PTR GetDosEnvironment, DS>
  716.         OR    AX, AX
  717.         JZ    L060BH
  718.         MOV    DX, AX
  719. L060BH:        MOV    BX, DX
  720.         MOV    ES, DX
  721.         XOR    AX, AX
  722.         XOR    SI, SI
  723.         XOR    DI, DI
  724.         MOV    CX, 0FFFFH
  725.         OR    BX, BX
  726.         JZ    L062AH
  727.         .IF    (BYTE PTR ES:D0000H != 0)
  728. L0624H:            REPNE SCASB
  729.             INC    SI
  730.             SCASB
  731.             JNZ    L0624H
  732.         .ENDIF
  733. L062AH:        MOV    AX, DI
  734.         INC    AX
  735.         AND    AL, -2
  736.         INC    SI
  737.         MOV    DI, SI
  738.         SHL    SI, 1
  739.         MOV    CX, 0009H
  740.         CALL    NEAR PTR Proc071ESeg1
  741.         PUSH    AX
  742.         MOV    AX, SI
  743.         CALL    NEAR PTR Proc071ESeg1
  744.         MOV    WORD PTR D00A0H, AX
  745.         PUSH    ES
  746.         PUSH    DS
  747.         POP    ES
  748.         POP    DS
  749.         MOV    CX, DI
  750.         MOV    BX, AX
  751.         XOR    SI, SI
  752.         POP    DI
  753.         DEC    CX
  754.         JCXZ    L0677H
  755. L0651H:        MOV    AX, WORD PTR [SI]
  756.         .IF    (AX == WORD PTR SS:D0042H)
  757.             PUSH    CX
  758.             PUSH    SI
  759.             PUSH    DI
  760.             MOV    DI, 0042H
  761.             MOV    CX, 0006H
  762.             REPE CMPSW
  763.             POP    DI
  764.             POP    SI
  765.             POP    CX
  766.             JZ    L066FH
  767.         .ENDIF
  768. L066AH:        MOV    WORD PTR ES:[BX], DI
  769.         INC    BX
  770.         INC    BX
  771. L066FH:        LODSB
  772.         STOSB
  773.         OR    AL, AL
  774.         JNZ    L066FH
  775.         LOOP    L0651H
  776. L0677H:        MOV    WORD PTR ES:[BX], CX
  777.         POP    DS
  778.         POP    BP
  779.         RET
  780. Proc05FCSeg1    ENDP
  781.  
  782.  
  783. L067DH        DB    0000H
  784. Proc067DSeg1    PROC    NEAR C
  785.         PUSH    SS
  786.         POP    DS
  787.         MOV    AX, 0003H
  788. L0683H::    hCall    <NEAR PTR Proc040ESeg1, AX, AX>
  789.         CALL    NEAR PTR Proc06EDSeg1
  790.         CALL    NEAR PTR Proc06C2Seg1
  791.         XOR    BX, BX
  792.         OR    AX, AX
  793.         JZ    L06B1H
  794.         MOV    DI, AX
  795.         MOV    AX, 0009H
  796.         .IF    (BYTE PTR [DI] == 77)
  797.             MOV    AX, 000FH
  798.         .ENDIF
  799. L06A1H:        ADD    DI, AX
  800.         PUSH    DI
  801.         PUSH    DS
  802.         POP    ES
  803.         MOV    AL, 13
  804.         MOV    CX, 0022H
  805.         REPNE SCASB
  806.         MOV    BYTE PTR [DI-1], BL
  807.         POP    AX
  808. L06B1H:        hCall    <FAR PTR FatalAppExit, BX, DS, AX>
  809.         MOV    AX, 00FFH
  810.         hCall    <FAR PTR FatalExit, AX>
  811. Proc067DSeg1    ENDP
  812.  
  813.  
  814. Proc06C2Seg1    PROC    NEAR PASCAL <NOLOADDS, NOINCBP, FORCEFRAME, NOCHECKSTACK>, par4:WORD
  815.         PUSH    SI
  816.         PUSH    DI
  817.         PUSH    DS
  818.         POP    ES
  819.         MOV    DX, WORD PTR par4
  820.         MOV    SI, 0102H
  821. L06CFH:        LODSW
  822.         .IF    (AX != DX)
  823.             INC    AX
  824.             XCHG    SI, AX
  825.             JZ    L06E4H
  826.             XCHG    DI, AX
  827.             XOR    AX, AX
  828.             MOV    CX, 0FFFFH
  829.             REPNE SCASB
  830.             MOV    SI, DI
  831.             JMP    SHORT L06CFH
  832.         .ENDIF
  833. L06E4H:        XCHG    SI, AX
  834.         POP    DI
  835.         POP    SI
  836.         RET
  837. Proc06C2Seg1    ENDP
  838.  
  839.  
  840. Proc06EDSeg1    PROC    NEAR PASCAL <NOLOADDS, NOINCBP, FORCEFRAME, NOCHECKSTACK>, par4:WORD
  841.         PUSH    DI
  842.         .IF    (WORD PTR D00B2H != 0)
  843.             hCall    <NEAR PTR Proc06C2Seg1, WORD PTR par4>
  844.             OR    AX, AX
  845.             JZ    L0716H
  846.             XCHG    DX, AX
  847.             MOV    DI, DX
  848.             XOR    AX, AX
  849.             MOV    CX, 0FFFFH
  850.             REPNE SCASB
  851.             NOT    CX
  852.             DEC    CX
  853.             MOV    BX, WORD PTR D006EH
  854.             CALL    NEAR PTR Proc0861Seg1
  855.         .ENDIF
  856. L0716H:        POP    DI
  857.         RET
  858. Proc06EDSeg1    ENDP
  859.  
  860.  
  861. L071DH        DB    0000H
  862. Proc071DSeg1    PROC    NEAR C
  863. Proc071DSeg1    ENDP
  864.  
  865.  
  866. Proc071ESeg1    PROC    NEAR C <NOLOADDS, NOINCBP, FORCEFRAME, NOCHECKSTACK>
  867.         PUSH    BX
  868.         PUSH    ES
  869.         PUSH    CX
  870.         MOV    CX, 1000H
  871.         XCHG    CX, WORD PTR D00B0H
  872.         hCall    <NEAR PTR Proc0868Seg1, CX, AX>
  873.         POP    BX
  874.         POP    WORD PTR D00B0H
  875.         POP    CX
  876.         MOV    DX, DS
  877.         OR    AX, AX
  878.         JZ    L0740H
  879.         POP    ES
  880.         POP    BX
  881.         JMP    SHORT L0745H
  882. L0740H:        MOV    AX, CX
  883.         JMP    NEAR PTR L0683H
  884. L0745H:        RET
  885. Proc071ESeg1    ENDP
  886.  
  887.  
  888. L0749H        DB    0000H
  889. Proc0749Seg1    PROC    NEAR C
  890.         PUSH    CX
  891.         PUSH    DI
  892.         .IF    (BYTE PTR [BX+2] & SBYTE PTR 1)
  893.             CALL    NEAR PTR Proc083CSeg1
  894.             MOV    DI, SI
  895.             MOV    AX, WORD PTR [SI]
  896.             .IF    (AL & SBYTE PTR 1)
  897.                 SUB    CX, AX
  898.                 DEC    CX
  899.             .ENDIF
  900. L0760H:            INC    CX
  901.             INC    CX
  902.             MOV    SI, WORD PTR [BX+4]
  903.             OR    SI, SI
  904.             JZ    L07B5H
  905.             ADD    CX, SI
  906.             JAE    L0776H
  907.             XOR    AX, AX
  908.             MOV    DX, 0FFF0H
  909.             JCXZ    L07A4H
  910.             JMP    SHORT L07B5H
  911. L0776H:            PUSH    SS
  912.             POP    ES
  913.             MOV    AX, WORD PTR D00B0H
  914.             .IF    (AX != 1000H)
  915.                 MOV    DX, 8000H
  916. L0784H:                .IF    (DX >= AX)
  917.                     SHR    DX, 1
  918.                     JNZ    L0784H
  919.                     JMP    SHORT L07B0H
  920.                 .ENDIF
  921. L078EH:                CMP    DX, 8
  922.                 JB    L07B0H
  923.                 SHL    DX, 1
  924.                 MOV    AX, DX
  925.             .ENDIF
  926. L0797H:            DEC    AX
  927.             MOV    DX, AX
  928.             ADD    AX, CX
  929.             JAE    L07A0H
  930.             XOR    AX, AX
  931. L07A0H:            NOT    DX
  932.             AND    AX, DX
  933. L07A4H:            hCall    <NEAR PTR Proc07D6Seg1, DX>
  934.             POP    DX
  935.             JAE    L07B8H
  936.             CMP    DX, -16
  937.             JZ    L07B5H
  938. L07B0H:            MOV    AX, 0010H
  939.             JMP    SHORT L0797H
  940.         .ENDIF
  941. L07B5H:        STC
  942.         JMP    SHORT L07D3H
  943. L07B8H:        MOV    DX, AX
  944.         SUB    DX, WORD PTR ES:[BX+4]
  945.         MOV    WORD PTR [BX+4], AX
  946.         MOV    WORD PTR [BX+10], DI
  947.         MOV    SI, WORD PTR [BX+12]
  948.         DEC    DX
  949.         MOV    WORD PTR [SI], DX
  950.         INC    DX
  951.         ADD    SI, DX
  952.         MOV    WORD PTR [SI], 0FFFEH
  953.         MOV    WORD PTR [BX+12], SI
  954. L07D3H:        POP    DI
  955.         POP    CX
  956.         RET
  957. Proc0749Seg1    ENDP
  958.  
  959.  
  960. Proc07D6Seg1    PROC    NEAR C
  961.         MOV    DX, AX
  962.         .IF    ( !(BYTE PTR [BX+2] & 4))
  963. L07E0H:            PUSH    DX
  964.             PUSH    CX
  965.             PUSH    BX
  966.             MOV    SI, WORD PTR [BX+6]
  967.             MOV    BX, WORD PTR CS:L01ACH
  968.             XOR    CX, CX
  969.             OR    DX, DX
  970.             JNZ    L07F8H
  971.             TEST    BX, 0010H
  972.             JNZ    L0837H
  973.             INC    CX
  974. L07F8H:            MOV    AX, 0022H
  975.             .IF    ( !(BX & 0001H))
  976.                 MOV    AX, 0020H
  977.             .ENDIF
  978. L0804H:            hCall    <FAR PTR GlobalRealloc, SI, CX, DX, AX>
  979.             OR    AX, AX
  980.             JZ    L0837H
  981.             CMP    AX, SI
  982.             JNZ    L0831H
  983.             hCall    <FAR PTR GlobalSize, SI>
  984.             OR    DX, AX
  985.             JZ    L0831H
  986.             POP    BX
  987.             POP    CX
  988.             POP    DX
  989.             MOV    AX, DX
  990.             .IF    (BYTE PTR [BX+2] & SBYTE PTR 4)
  991.                 DEC    DX
  992.                 MOV    WORD PTR [BX-2], DX
  993.             .ENDIF
  994. L082EH:            CLC
  995.             JMP    SHORT L083BH
  996.         .ENDIF
  997. L0831H:        MOV    AX, 0012H
  998.         JMP    NEAR PTR L0683H
  999. L0837H:        POP    BX
  1000.         POP    CX
  1001.         POP    DX
  1002.         STC
  1003. L083BH:        RET
  1004. Proc07D6Seg1    ENDP
  1005.  
  1006.  
  1007. Proc083CSeg1    PROC    NEAR C
  1008.         PUSH    DI
  1009.         MOV    SI, WORD PTR [BX+10]
  1010.         .IF    (SI == WORD PTR [BX+12])
  1011.             MOV    SI, WORD PTR [BX+8]
  1012.         .ENDIF
  1013. L0848H:        LODSW
  1014.         .IF    (AX != -2)
  1015.             MOV    DI, SI
  1016.             AND    AL, -2
  1017.             ADD    SI, AX
  1018.             JMP    SHORT L0848H
  1019.         .ENDIF
  1020. L0856H:        DEC    DI
  1021.         DEC    DI
  1022.         MOV    SI, DI
  1023.         POP    DI
  1024.         RET
  1025. Proc083CSeg1    ENDP
  1026.  
  1027.  
  1028. ;        Missing MOV SP,BP and POP BP in epilogue.
  1029. Proc085CSeg1    PROC    NEAR C
  1030.         PUSH    BP
  1031.         MOV    BP, SP
  1032.         POP    BP
  1033.         RET
  1034. Proc085CSeg1    ENDP
  1035.  
  1036.  
  1037. L0867H        DB    0000H
  1038. Proc0861Seg1    PROC    NEAR C
  1039.         MOV    AX, 0014H
  1040.         JMP    NEAR PTR L0683H
  1041. Proc0861Seg1    ENDP
  1042.  
  1043.  
  1044. Proc0868Seg1    PROC    NEAR C <NOLOADDS, NOINCBP, FORCEFRAME, NOCHECKSTACK>, par4:WORD
  1045.         LOCAL    local2:WORD, local4:WORD
  1046.         MOV    AX, 0FFFFH
  1047.         hCall    <FAR PTR LockSegment, AX>
  1048.         MOV    AX, 0020H
  1049.         PUSH    AX
  1050.         .IF    (WORD PTR par4 != 0)
  1051.             MOV    AX, WORD PTR par4
  1052.             JMP    SHORT L0889H
  1053.         .ENDIF
  1054. L0886H:        MOV    AX, 0001H
  1055. L0889H:        hCall    <FAR PTR LocalAlloc, AX>
  1056.         MOV    WORD PTR local2, AX
  1057.         MOV    AX, 0FFFFH
  1058.         hCall    <FAR PTR UnlockSegment, AX>
  1059.         MOV    AX, WORD PTR local2
  1060.         RET
  1061. Proc0868Seg1    ENDP
  1062.  
  1063.  
  1064. Proc08A2Seg1    PROC    NEAR C <NOLOADDS, NOINCBP, FORCEFRAME, NOCHECKSTACK>, par4:WORD
  1065.         PUSH    WORD PTR par4
  1066.         CALL    FAR PTR LocalFree
  1067.         RET
  1068. Proc08A2Seg1    ENDP
  1069.  
  1070.  
  1071. Proc08B1Seg1    PROC    NEAR C <NOLOADDS, NOINCBP, FORCEFRAME, NOCHECKSTACK>, par6:WORD, par4:WORD
  1072.         LOCAL    local2:WORD, local4:WORD
  1073.         .IF    (WORD PTR par4 == 0)
  1074.             hCall    <NEAR PTR Proc0868Seg1, WORD PTR par6>
  1075.             ADD    SP, 2
  1076.             JMP    SHORT L08FEH
  1077.             NOP
  1078.         .ENDIF
  1079. L08CAH:        MOV    AX, 0FFFFH
  1080.         hCall    <FAR PTR LockSegment, AX>
  1081.         PUSH    WORD PTR par4
  1082.         .IF    (WORD PTR par6 != 0)
  1083.             MOV    AX, WORD PTR par6
  1084.             JMP    SHORT L08E5H
  1085.             NOP
  1086.         .ENDIF
  1087. L08E2H:        MOV    AX, 0001H
  1088. L08E5H:        PUSH    AX
  1089.         MOV    AX, 0062H
  1090.         hCall    <FAR PTR LocalRealloc, AX>
  1091.         MOV    WORD PTR local2, AX
  1092.         MOV    AX, 0FFFFH
  1093.         hCall    <FAR PTR UnlockSegment, AX>
  1094.         MOV    AX, WORD PTR local2
  1095. L08FEH:        RET
  1096. Proc08B1Seg1    ENDP
  1097.  
  1098.  
  1099. Proc0902Seg1    PROC    NEAR C <NOLOADDS, NOINCBP, FORCEFRAME, NOCHECKSTACK>, par4:WORD
  1100.         PUSH    WORD PTR par4
  1101.         CALL    FAR PTR LocalSize
  1102.         RET
  1103. Proc0902Seg1    ENDP
  1104.  
  1105.  
  1106. Proc0911Seg1    PROC    NEAR C
  1107.         NOP
  1108. Proc0911Seg1    ENDP
  1109.  
  1110.  
  1111.         END    L01B4H
  1112.