home *** CD-ROM | disk | FTP | other *** search
/ CD-X 1 / cdx_01.iso / demodisc / basq / source / poweru / overlay.asm < prev    next >
Encoding:
Assembly Source File  |  1993-08-16  |  4.0 KB  |  238 lines

  1. PUBLIC        OPENOVERLAY
  2. PUBLIC        LOADOVERLAYITEM
  3. PUBLIC        WRITOVERLAYITEM
  4. PUBLIC        CLOSEOVERLAY
  5. PUBLIC        OILENGTH
  6.  
  7. .386
  8. .MODEL USE16 SMALL
  9. .DATA
  10.  
  11. OVERLAYMODULEBA    DD    0
  12. OVERLAYLSIGN    DB    5 DUP(0)
  13. OVERLAYBSIGN    DB    'PSO10'
  14. OVERLAYHANDLE    DW    0
  15. OVERLAYOPENED    DB    0
  16. OVERLAYOPENEDH    DB    0
  17. OVERLAYENDPOS    DD    -9
  18. OIID        DW    0
  19. OIUID        DW    0
  20. OIPOS        DD    0
  21. OILENGTH    DD    0
  22. OIWLENGTH    DD    0
  23. OISEG        DW    0
  24. OIPID        DW    0
  25.  
  26. .CODE
  27.  
  28. OPENOVERLAY:    PUSHA
  29.         PUSH    DS
  30.         PUSH    ES
  31.         MOV    AX,SEG OVERLAYMODULEBA
  32.         MOV     DS,AX
  33.         MOV    OVERLAYOPENED,0
  34.         MOV    OVERLAYOPENEDH,1
  35.         MOV    AX,CS
  36.         SUB    AX,10H
  37.         MOV    DS,AX
  38.         MOV    SI,2CH
  39.         MOV    AX,[SI]
  40.         MOV    DS,AX
  41.         MOV    ES,AX
  42.         XOR    DI,DI
  43.         MOV    AL,1
  44.         MOV    CX,0FFFH
  45.         CLD
  46.         REPNZ    SCASB
  47.         INC    DI
  48.         MOV    DX,DI
  49.         MOV    AH,3DH
  50.         MOV    AL,01000010B
  51.         INT    21H
  52.         JC    SHORT NOTOPENOKOV
  53.         MOV    BX,SEG OVERLAYMODULEBA
  54.         MOV    DS,BX
  55.         MOV    OVERLAYHANDLE,AX
  56.         MOV    OVERLAYOPENEDH,1
  57.         MOV    BX,AX
  58.         MOV    AH,42H
  59.         MOV    AL,2
  60.         MOV    CX, WORD PTR OVERLAYENDPOS[2]
  61.         MOV    DX, WORD PTR OVERLAYENDPOS[0]
  62.         INT    21H
  63.         JC    SHORT NOTOPENOKOV
  64.         MOV    AH,3FH
  65.         MOV    CX,9
  66.         MOV    BX,OVERLAYHANDLE
  67.         LEA    DX,OVERLAYMODULEBA
  68.         INT    21H
  69.         JC    SHORT NOTOPENOKOV
  70.         CLD
  71.         MOV    AX,DS
  72.         MOV    ES,AX
  73.         MOV    CX,5
  74.         LEA    SI,OVERLAYBSIGN
  75.         LEA    DI,OVERLAYLSIGN
  76.         REPZ    CMPSB
  77.         OR    CX,CX
  78.         JNZ    SHORT SCFLAG
  79.         CLC
  80.         MOV    OVERLAYOPENED,1
  81. NOTOPENOKOV:    POP    ES
  82.         POP    DS
  83.         POPA
  84.         RET
  85. SCFLAG:        STC
  86.         JMP    NOTOPENOKOV
  87.  
  88. LOADOVERLAYITEM:PUSHAD
  89.         PUSH    DS
  90.         PUSH    SEG OIID
  91.         POP    DS
  92.         OR    OVERLAYOPENED,0
  93.         JNZ    SHORT OPENEDOV
  94.         STC
  95.         JMP    ENDLOADING
  96. OPENEDOV:    MOV    OIPID,BX
  97.         MOV    OISEG,AX
  98.         MOV    SI,BX
  99.         MOV    AX,4200H
  100.         MOV    BX,OVERLAYHANDLE
  101.         MOV    CX,WORD PTR OVERLAYMODULEBA[2]
  102.         MOV    DX,WORD PTR OVERLAYMODULEBA[0]
  103.         INT    21H
  104.         JC    ENDLOADING
  105. NEXTITEM:    MOV    AH,3FH
  106.         MOV    BX,OVERLAYHANDLE
  107.         MOV    CX,12
  108.         LEA    DX,OIID
  109.         INT    21H
  110.         JC    SHORT ENDLOADING
  111.         OR    OIID,0
  112.         JNZ    SHORT GOMORE
  113.         STC
  114.         JMP    ENDLOADING
  115. GOMORE:        CMP    SI,OIUID
  116.         JNZ    SHORT NEXTITEM
  117.         MOV    AX,4200H
  118.         MOV    BX,OVERLAYHANDLE
  119.         MOV    CX,WORD PTR OIPOS[2]
  120.         MOV    DX,WORD PTR OIPOS[0]
  121.         INT    21H
  122.         JC    SHORT ENDLOADING
  123.         MOV    ESI,OILENGTH
  124.         MOV    EDI,32000
  125.         CMP    ESI,32000
  126.         JAE    SHORT NONEWVALUEEDI
  127.         MOV    EDI,ESI
  128. NONEWVALUEEDI:    XOR    DX,DX
  129. RETRYLOADING:    MOV    AX,3F00H
  130.         MOV    BX,OVERLAYHANDLE
  131.         MOV    CX,DI
  132.         PUSH    DS
  133.         PUSH    OISEG
  134.         POP    DS
  135.         INT    21H
  136.         POP    DS
  137.         JC    SHORT ENDLOADING
  138.         SUB    ESI,EDI
  139.         OR    ESI,ESI
  140.         JNZ    SHORT NOENDLOADING
  141.         CLC
  142.         JMP    ENDLOADING
  143. NOENDLOADING:    ADD    DX,DI
  144.         JNC    SHORT NOADDSEG
  145.         ADD    OISEG,2000
  146. NOADDSEG:    CMP    ESI,32000
  147.         JAE    SHORT NONEWEDI
  148.         MOV    EDI,ESI
  149. NONEWEDI:    JMP    RETRYLOADING
  150. ENDLOADING:    POP    DS
  151.         POPAD
  152.         RET
  153.  
  154. WRITOVERLAYITEM:PUSHAD
  155.         PUSH    DS
  156.         PUSH    SEG OIID
  157.         POP    DS
  158.         OR    OVERLAYOPENED,0
  159.         JNZ    SHORT OPENEDOV2
  160.         STC
  161.         JMP    ENDLOADING2
  162. OPENEDOV2:    MOV    OIPID,BX
  163.         MOV    OISEG,AX
  164.         MOV    OIWLENGTH,ECX
  165.         MOV    SI,AX
  166.         MOV    AX,4200H
  167.         MOV    BX,OVERLAYHANDLE
  168.         MOV    CX,WORD PTR OVERLAYMODULEBA[2]
  169.         MOV    DX,WORD PTR OVERLAYMODULEBA[0]
  170.         INT    21H
  171.         JC    ENDLOADING2
  172. NEXTITEM2:    MOV     AH,3FH
  173.         MOV    BX,OVERLAYHANDLE
  174.         MOV    CX,12
  175.         LEA    DX,OIID
  176.         INT    21H
  177.         JC    ENDLOADING2
  178.         OR    OIID,0
  179.         JNZ    SHORT GOMORE2
  180.         STC
  181.         JMP    ENDLOADING2
  182. GOMORE2:    CMP    SI,OIUID
  183.         JNZ    SHORT NEXTITEM2
  184.         MOV    AX,4200H
  185.         MOV    BX,OVERLAYHANDLE
  186.         MOV    CX,WORD PTR OIPOS[2]
  187.         MOV    DX,WORD PTR OIPOS[0]
  188.         INT    21H
  189.         JC    SHORT ENDLOADING2
  190.         MOV    ESI,OIWLENGTH
  191.         CMP    ESI,OILENGTH
  192.         JBE    SHORT OVLENGTHOK
  193.         MOV    ESI,OILENGTH
  194. OVLENGTHOK:    MOV    EDI,32000
  195.         CMP    ESI,32000
  196.         JAE    SHORT NONEWVALUEEDI2
  197.         MOV    EDI,ESI
  198. NONEWVALUEEDI2:    XOR    DX,DX
  199. RETRYLOADING2:    MOV    AX,4000h
  200.         MOV    BX,OVERLAYHANDLE
  201.         MOV    CX,DI
  202.         PUSH    DS
  203.         PUSH    OISEG
  204.         POP    DS
  205.         INT    21H
  206.         POP    DS
  207.         JC    SHORT ENDLOADING2
  208.         SUB    ESI,EDI
  209.         OR    ESI,ESI
  210.         JNZ    SHORT NOENDLOADING2
  211.         CLC
  212.         JMP    ENDLOADING2
  213. NOENDLOADING2:    ADD    DX,DI
  214.         JNC    SHORT NOADDSEG2
  215.         ADD    OISEG,2000
  216. NOADDSEG2:    CMP    ESI,32000
  217.         JAE    SHORT NONEWEDI2
  218.         MOV    EDI,ESI
  219. NONEWEDI2:    JMP    RETRYLOADING2
  220. ENDLOADING2:    POP    DS
  221.         POPAD
  222.         RET
  223.  
  224. CLOSEOVERLAY:    PUSHA
  225.         PUSH    DS
  226.         MOV    AX,SEG OVERLAYMODULEBA
  227.         MOV    DS,AX
  228.         CMP    OVERLAYOPENEDH,1
  229.         JNZ    SHORT NOTOPENEDOV
  230.         MOV    AH,3EH
  231.         MOV    BX,OVERLAYHANDLE
  232.         INT    21H
  233. NOTOPENEDOV:    POP    DS
  234.         POPA
  235.         RET
  236.  
  237. END
  238.