home *** CD-ROM | disk | FTP | other *** search
-
- FiXPOiNTER EQU 0
- OVERLAYNAME DB 'INTRANCE.DAT',0
- _FiLEHANDLE DW 0
-
- DADATXT DB 'cOME AS YOU ARE - IN TRANCE BY PTM!'
- BUFFERPOS DW 2000D
- BUFFER DB 400D DUP('M.K. ')
-
- DECMAiNPROC: SHR BP,1
- DEC DL
- JE NOJMPTORET1
- JMP JMPTORET1
- NOJMPTORET1:
- PUSHF
- PUSH BX
- PUSH CX
- PUSH DX
- GETBUF: CMP BUFFERPOS,2000D
- JE EMPTYBUF
- MOV BX,BUFFERPOS
- iNC BUFFERPOS
- MOV AL,BYTE PTR CS:[BX+BUFFER]
- JMP SKiPLO
- EMPTYBUF: MOV BUFFERPOS,0
- MOV AL,0
- MOV CX,2000D
- XOR BX,BX
- CLRBU: MOV BYTE PTR CS:[BX+BUFFER],AL
- iNC BX
- LOOP CLRBU
- MOV BX,_FiLEHANDLE
- MOV DX,OFFSET BUFFER
- PUSH AX
- MOV CX,2000D
- MOV AX,3F00H
- iNT 21H
- POP AX
- JMP GETBUF
- SKiPLO:
- GETBUF22: CMP BUFFERPOS,2000D
- JE EMPTYBUF22
- MOV BX,BUFFERPOS
- iNC BUFFERPOS
- MOV AH,BYTE PTR CS:[BX+BUFFER]
- JMP SKiPLO22
- EMPTYBUF22: MOV BUFFERPOS,0
- MOV AH,0
- MOV CX,2000D
- XOR BX,BX
- CLRBU22: MOV BYTE PTR CS:[BX+BUFFER],AH
- iNC BX
- LOOP CLRBU22
- MOV BX,_FiLEHANDLE
- MOV DX,OFFSET BUFFER
- PUSH AX
- MOV CX,2000D
- MOV AX,3F00H
- iNT 21H
- POP AX
- JMP GETBUF22
- SKiPLO22: POP DX
- POP CX
- POP BX
- POPF
- MOV BP,AX
- MOV DL,10H
- JMPTORET1: RET
- CALLEDFROMTHELASTBUT1JB:
- CALL DECMAiNPROC
- RCL BH,1
- CALL DECMAiNPROC
- JB JMPFROMJB1
- MOV DH,02
- MOV CL,03
- JMPTOLOOP1: CALL DECMAiNPROC
- JB JMPFROMJB2
- CALL DECMAiNPROC
- RCL BH,1
- SHL DH,1
- LOOP JMPTOLOOP1
- JMPFROMJB2: SUB BH,DH
- JMPFROMJB1: MOV DH,2
- MOV CL,4
- JMPTOLOOP2: iNC DH
- CALL DECMAiNPROC
- JB JMPFROMJB3
- LOOP JMPTOLOOP2
- CALL DECMAiNPROC
- JNB JMPFROMJNB1
- iNC DH
- CALL DECMAiNPROC
- JNB JMPFROMJB3
- iNC DH
- JMPFROMJB3: MOV CL,DH
- JMP SHORT FROM1STJMP
- JMPFROMJNB1: CALL DECMAiNPROC
- JB JMPFROMJB4
- MOV CL,3
- MOV DH,0
- FROMLOOP3: CALL DECMAiNPROC
- RCL DH,1
- LOOP FROMLOOP3
- ADD DH,9
- JMP JMPFROMJB3
- JMPFROMJB4: PUSHF
- PUSH BX
- PUSH CX
- PUSH DX
- GETBUF5: CMP BUFFERPOS,2000D
- JE EMPTYBUF5
- MOV BX,BUFFERPOS
- iNC BUFFERPOS
- MOV AL,BYTE PTR CS:[BX+BUFFER]
- JMP SKiPLO5
- EMPTYBUF5: MOV BUFFERPOS,0
- MOV AL,0
- MOV CX,2000D
- XOR BX,BX
- CLRBU5: MOV BYTE PTR CS:[BX+BUFFER],AL
- iNC BX
- LOOP CLRBU5 ; CLEARiNG THE BUFFER
- MOV BX,_FiLEHANDLE
- MOV DX,OFFSET BUFFER
- PUSH AX
- MOV CX,2000D
- MOV AX,3F00H
- iNT 21H
- POP AX
- JMP GETBUF5
- SKiPLO5: POP DX
- POP CX
- POP BX
- POPF
- MOV CL,AL
- ADD CX,011H
- JMP SHORT FROM1STJMP
- CALLEDFROMLASTJB:
- MOV CL,3
- FROMLOOP4: CALL DECMAiNPROC
- RCL BH,1
- LOOP FROMLOOP4
- DEC BH
- FROMLASTJNE: MOV CL,2
- FROM1STJMP: MOV AL,ES:[BX+Di] ; ES POiNTS TO NEWSSEGMENT!
- CLD
- STOSB
- CMP Di,0
- JNE NOT_NESSESSARY_SEGMENT_iNC
- PUSH AX
- MOV AX,ES
- ADD AX,1000H
- SUB AH,2
- MOV ES,AX
- MOV Di,2000H
- POP AX
- NOT_NESSESSARY_SEGMENT_iNC:
- LOOP FROM1STJMP
- JMP FROMJMP2
- UNPACK:
- MOV AX,CS
- MOV DS,AX
- PUSH ES
- PUSH Di
- MOV _FiLEHANDLE,BX
- MOV CX,2 ; THERE ARE 50 CHARS THAT WiLL
- MOV DX,CS
- MOV DS,DX ; DS:=CS !!!!
- MOV DX,OFFSET BUFFER ; BUFFER WiLL BE _SON !!
- MOV AX,3F00H
- iNT 21H
- MOV CX,35 ; CX:=50
- MOV AX,DS
- MOV ES,AX
- MOV Si,OFFSET BUFFER
- MOV Di, OFFSET DADATXT
- NO_DiFF_iN_HDR:
- LODSW ; LOADiNG THE BEGiNNiNG AX
- MOV BP,AX
- MOV DX,10H
- XOR CX,CX
- XOR BX,BX ; AND WE HAVE THE STORiNG
- POP Di
- POP ES
- FROMJMP2:
- CALL DECMAiNPROC
- JNB FROMJNB2
- PUSHF
- PUSH AX
- PUSH BX
- PUSH CX
- PUSH DX
- GETBUF6: CMP BUFFERPOS,2000D
- JE EMPTYBUF6
- MOV BX,BUFFERPOS
- iNC BUFFERPOS
- MOV AL,BYTE PTR CS:[BX+BUFFER] ; AL
- JMP SKiPLO6
- EMPTYBUF6: MOV BUFFERPOS,0
- MOV AL,0
- MOV CX,2000D
- XOR BX,BX
- CLRBU6: MOV BYTE PTR CS:[BX+BUFFER],AL
- iNC BX
- LOOP CLRBU6 ; CLEARiNG THE BUFFER
- MOV BX,_FiLEHANDLE
- MOV DX,OFFSET BUFFER
- PUSH AX
- MOV CX,2000D
- MOV AX,3F00H
- iNT 21H
- POP AX
- JMP GETBUF6
- SKiPLO6:
- POP DX
- POP CX
- POP BX
- CLD
- STOSB
- CMP Di,0
- JNE NOT_NESSESSARY_SEGMENT_iNC2
- PUSH AX
- MOV AX,ES
- ADD AX,1000H
- SUB AH,2
- MOV ES,AX
- MOV Di,2000H
- POP AX
- NOT_NESSESSARY_SEGMENT_iNC2:
- POP AX
- POPF
- JMP FROMJMP2
- FROMJNB2: CALL DECMAiNPROC
- PUSHF
- PUSH BX
- PUSH CX
- PUSH DX
- GETBUF3: CMP BUFFERPOS,2000D
- JE EMPTYBUF3
- MOV BX,BUFFERPOS
- iNC BUFFERPOS
- MOV AL,BYTE PTR CS:[BX+BUFFER] ; AL, CERTAiNLY (BECAUSE OF LODSB)
- JMP SKiPLO3
- EMPTYBUF3: MOV BUFFERPOS,0
- MOV AL,0
- MOV CX,2000D
- XOR BX,BX
- CLRBU3: MOV BYTE PTR CS:[BX+BUFFER],AL
- iNC BX
- LOOP CLRBU3 ; CLEARiNG THE BUFFER
- MOV BX,_FiLEHANDLE
- MOV DX,OFFSET BUFFER
- PUSH AX
- MOV CX,2000D
- MOV AX,3F00H
- iNT 21H
- POP AX
- JMP GETBUF3
- SKiPLO3:
- POP DX
- POP CX
- POP BX
- POPF
- MOV BH,0FFH
- MOV BL,AL
- JNB NOCALLEDFROMTHELASTBUT1JB
- JMP CALLEDFROMTHELASTBUT1JB
- NOCALLEDFROMTHELASTBUT1JB:
- CALL DECMAiNPROC
- JNB NOCALLEDFROMLASTJB
- JMP CALLEDFROMLASTJB
- NOCALLEDFROMLASTJB:
- CMP BH,BL
- JE NOFROMLASTJNE
- JMP FROMLASTJNE
- NOFROMLASTJNE:
- CALL RESETPARAMS
- RET
-
- KiSCOUNTER DW 0
- NAGYCOUNTER DW 0
-
- RESETPARAMS:
- MOV KiSCOUNTER,0
- MOV NAGYCOUNTER,0
- MOV BUFFERPOS,2000D
- RET
-
- POSiTiON DW 0,0
- LENGHT_ DW 0,0
- MARADEK DW 0
- OVERLAYLEN DW 0
- TEXTFLAG DW 0
- WHEREGO DW 0,0
-
- LOADOVERLAY:
-
- PUSHA
- PUSH ES
- PUSH DS
- PUSH BX
- PUSH CX
- PUSH ES
-
- PUSH DS
- PUSH DX
- PUSH AX
- MOV WHEREGO,DS
- MOV WHEREGO+2,DX
- MOV AX,3D00H
- PUSH CS
- POP DS
- MOV DX,OFFSET OVERLAYNAME
- iNT 21H ;OPEN OVERLAY
- MOV BX,AX
-
- POP AX
- MOV CL,5
- SHL AX,CL
- MOV DX,AX
- XOR CX,CX
- ADD DX,24
- ADD DX,FiXPOiNTER
- ADC CX,0
-
- MOV AX,4200H
- iNT 21H ;POiNTER TO POSiTiON
- MOV DX,OFFSET POSiTiON
- MOV AH,3FH
- MOV CX,8
- iNT 21H
-
- MOV DX,POSiTiON
- MOV CX,POSiTiON+2
- ADD DX,FiXPOiNTER
- ADC CX,0
- MOV AX,4200H
- iNT 21H ;POiNTS TO FiLE
-
- MOV AX,LENGHT_
- MOV DX,LENGHT_+2
- MOV CX,8000H
- DiV CX
- MOV CX,AX
- iNC CX
- MOV MARADEK,DX
- POP DX
- POP DS
-
- MOV ES,WHEREGO
- MOV DX,WHEREGO+2
- MOV Di,DX
- PUSH CS
- POP DS
- MOV CX,LENGHT_
- CALL UNPACK
- MOV BX,_FiLEHANDLE
- MOV AH,3EH
- iNT 21H
-
- MOV CS:OVERLAYLEN,Di
- POP ES
- POP CX
- POP BX
- POP DS
- POP ES
- POPA
- RET
-