home *** CD-ROM | disk | FTP | other *** search
- PUBLIC OPENOVERLAY
- PUBLIC LOADOVERLAYITEM
- PUBLIC WRITOVERLAYITEM
- PUBLIC CLOSEOVERLAY
- PUBLIC OILENGTH
-
- .386
- .MODEL USE16 SMALL
- .DATA
-
- OVERLAYMODULEBA DD 0
- OVERLAYLSIGN DB 5 DUP(0)
- OVERLAYBSIGN DB 'PSO10'
- OVERLAYHANDLE DW 0
- OVERLAYOPENED DB 0
- OVERLAYOPENEDH DB 0
- OVERLAYENDPOS DD -9
- OIID DW 0
- OIUID DW 0
- OIPOS DD 0
- OILENGTH DD 0
- OIWLENGTH DD 0
- OISEG DW 0
- OIPID DW 0
-
- .CODE
-
- OPENOVERLAY: PUSHA
- PUSH DS
- PUSH ES
- MOV AX,SEG OVERLAYMODULEBA
- MOV DS,AX
- MOV OVERLAYOPENED,0
- MOV OVERLAYOPENEDH,1
- MOV AX,CS
- SUB AX,10H
- MOV DS,AX
- MOV SI,2CH
- MOV AX,[SI]
- MOV DS,AX
- MOV ES,AX
- XOR DI,DI
- MOV AL,1
- MOV CX,0FFFH
- CLD
- REPNZ SCASB
- INC DI
- MOV DX,DI
- MOV AH,3DH
- MOV AL,01000010B
- INT 21H
- JC SHORT NOTOPENOKOV
- MOV BX,SEG OVERLAYMODULEBA
- MOV DS,BX
- MOV OVERLAYHANDLE,AX
- MOV OVERLAYOPENEDH,1
- MOV BX,AX
- MOV AH,42H
- MOV AL,2
- MOV CX, WORD PTR OVERLAYENDPOS[2]
- MOV DX, WORD PTR OVERLAYENDPOS[0]
- INT 21H
- JC SHORT NOTOPENOKOV
- MOV AH,3FH
- MOV CX,9
- MOV BX,OVERLAYHANDLE
- LEA DX,OVERLAYMODULEBA
- INT 21H
- JC SHORT NOTOPENOKOV
- CLD
- MOV AX,DS
- MOV ES,AX
- MOV CX,5
- LEA SI,OVERLAYBSIGN
- LEA DI,OVERLAYLSIGN
- REPZ CMPSB
- OR CX,CX
- JNZ SHORT SCFLAG
- CLC
- MOV OVERLAYOPENED,1
- NOTOPENOKOV: POP ES
- POP DS
- POPA
- RET
- SCFLAG: STC
- JMP NOTOPENOKOV
-
- LOADOVERLAYITEM:PUSHAD
- PUSH DS
- PUSH SEG OIID
- POP DS
- OR OVERLAYOPENED,0
- JNZ SHORT OPENEDOV
- STC
- JMP ENDLOADING
- OPENEDOV: MOV OIPID,BX
- MOV OISEG,AX
- MOV SI,BX
- MOV AX,4200H
- MOV BX,OVERLAYHANDLE
- MOV CX,WORD PTR OVERLAYMODULEBA[2]
- MOV DX,WORD PTR OVERLAYMODULEBA[0]
- INT 21H
- JC ENDLOADING
- NEXTITEM: MOV AH,3FH
- MOV BX,OVERLAYHANDLE
- MOV CX,12
- LEA DX,OIID
- INT 21H
- JC SHORT ENDLOADING
- OR OIID,0
- JNZ SHORT GOMORE
- STC
- JMP ENDLOADING
- GOMORE: CMP SI,OIUID
- JNZ SHORT NEXTITEM
- MOV AX,4200H
- MOV BX,OVERLAYHANDLE
- MOV CX,WORD PTR OIPOS[2]
- MOV DX,WORD PTR OIPOS[0]
- INT 21H
- JC SHORT ENDLOADING
- MOV ESI,OILENGTH
- MOV EDI,32000
- CMP ESI,32000
- JAE SHORT NONEWVALUEEDI
- MOV EDI,ESI
- NONEWVALUEEDI: XOR DX,DX
- RETRYLOADING: MOV AX,3F00H
- MOV BX,OVERLAYHANDLE
- MOV CX,DI
- PUSH DS
- PUSH OISEG
- POP DS
- INT 21H
- POP DS
- JC SHORT ENDLOADING
- SUB ESI,EDI
- OR ESI,ESI
- JNZ SHORT NOENDLOADING
- CLC
- JMP ENDLOADING
- NOENDLOADING: ADD DX,DI
- JNC SHORT NOADDSEG
- ADD OISEG,2000
- NOADDSEG: CMP ESI,32000
- JAE SHORT NONEWEDI
- MOV EDI,ESI
- NONEWEDI: JMP RETRYLOADING
- ENDLOADING: POP DS
- POPAD
- RET
-
- WRITOVERLAYITEM:PUSHAD
- PUSH DS
- PUSH SEG OIID
- POP DS
- OR OVERLAYOPENED,0
- JNZ SHORT OPENEDOV2
- STC
- JMP ENDLOADING2
- OPENEDOV2: MOV OIPID,BX
- MOV OISEG,AX
- MOV OIWLENGTH,ECX
- MOV SI,AX
- MOV AX,4200H
- MOV BX,OVERLAYHANDLE
- MOV CX,WORD PTR OVERLAYMODULEBA[2]
- MOV DX,WORD PTR OVERLAYMODULEBA[0]
- INT 21H
- JC ENDLOADING2
- NEXTITEM2: MOV AH,3FH
- MOV BX,OVERLAYHANDLE
- MOV CX,12
- LEA DX,OIID
- INT 21H
- JC ENDLOADING2
- OR OIID,0
- JNZ SHORT GOMORE2
- STC
- JMP ENDLOADING2
- GOMORE2: CMP SI,OIUID
- JNZ SHORT NEXTITEM2
- MOV AX,4200H
- MOV BX,OVERLAYHANDLE
- MOV CX,WORD PTR OIPOS[2]
- MOV DX,WORD PTR OIPOS[0]
- INT 21H
- JC SHORT ENDLOADING2
- MOV ESI,OIWLENGTH
- CMP ESI,OILENGTH
- JBE SHORT OVLENGTHOK
- MOV ESI,OILENGTH
- OVLENGTHOK: MOV EDI,32000
- CMP ESI,32000
- JAE SHORT NONEWVALUEEDI2
- MOV EDI,ESI
- NONEWVALUEEDI2: XOR DX,DX
- RETRYLOADING2: MOV AX,4000h
- MOV BX,OVERLAYHANDLE
- MOV CX,DI
- PUSH DS
- PUSH OISEG
- POP DS
- INT 21H
- POP DS
- JC SHORT ENDLOADING2
- SUB ESI,EDI
- OR ESI,ESI
- JNZ SHORT NOENDLOADING2
- CLC
- JMP ENDLOADING2
- NOENDLOADING2: ADD DX,DI
- JNC SHORT NOADDSEG2
- ADD OISEG,2000
- NOADDSEG2: CMP ESI,32000
- JAE SHORT NONEWEDI2
- MOV EDI,ESI
- NONEWEDI2: JMP RETRYLOADING2
- ENDLOADING2: POP DS
- POPAD
- RET
-
- CLOSEOVERLAY: PUSHA
- PUSH DS
- MOV AX,SEG OVERLAYMODULEBA
- MOV DS,AX
- CMP OVERLAYOPENEDH,1
- JNZ SHORT NOTOPENEDOV
- MOV AH,3EH
- MOV BX,OVERLAYHANDLE
- INT 21H
- NOTOPENEDOV: POP DS
- POPA
- RET
-
- END
-