- Timer = 08
- Idle = 028
- PrnScr = 05
- jmp @@Start
- @@Timer: pushf
- db 09a
- _OldT: dd ?
- push es
- push bx
- les bx,cs:[offset _InDOS]
- cmp byte ptr es:[bx],0
- pop bx
- pop es
- je @@Check
- iret
- @@Idle: pushf
- db 09a
- _OldI: dd ?
- @@Check: cmp byte ptr cs:[offset _Switch],1
- je @@Main
- iret
- @@Main:
- mov byte ptr cs:[offset _Switch],0
- push ax
- push bx
- push cx
- push dx
- push si
- push di
- push bp
- push ds
- push es
- push cs
- pop ds
- mov dx,ss
- mov bp,sp
- cmp byte ptr [offset _Prog],0
- je @@Load
- mov bx,[offset _PSP]
- mov ah,050
- int 021
- mov ah,051
- int 021
- mov [offset _PSP],bx
- mov ss,[offset _SS]
- mov sp,[offset _SP]
- mov [offset _SS],dx
- mov [offset _SP],bp
- ;xor si,si
- ;mov di,si
- ;mov ds,si
- ;mov es,si
- ;mov cx,256*2
- ;@@Table:
- ;lodsw
- ;xchg ax,cs:[offset @@Start+100][di]
- ;stosw
- ;loop @@Table
- @@Out:
- pop es
- pop ds
- pop bp
- pop di
- pop si
- pop dx
- pop cx
- pop bx
- pop ax
- iret
- @@Load:
- mov byte ptr [offset _Prog],1
- mov ah,051
- int 021
- mov [offset _PSP],bx
- mov [offset _SS],dx
- mov [offset _SP],bp
- mov [_ExecParamRec+4],cs
- mov word ptr [_ExecParamRec+2],offset _CmdLine
- push cs
- pop es
- mov dx,offset _ExecPath
- mov bx,offset _ExecParamRec
- mov ax,04b00
- int 021
- mov ss,cs:[offset _SS]
- mov sp,cs:[offset _SP]
- mov byte ptr cs:[offset _Prog],0
- jmp short @@Out
- _Switch: db 0
- _InDOS: dd ?
- _Prog db 0
- _PSP: dw 0
- _SS: dw ?
- _SP: dw ?
- _ExecPath: db "p2.com",0
- _ExecParamRec: dw 0
- dd ?
- _CmdLine db 0,0d
- @@PrnScr: mov byte ptr cs:[offset _Switch],1
- iret
- @@Start: mov ah,034
- int 021
- mov [offset _InDOS+2],es
- mov [offset _InDOS],bx
- push 0
- pop es
- cli
- mov es:[PrnScr*4],offset @@PrnScr
- mov ax,offset @@Timer
- xchg ax,es:[Timer*4]
- mov [offset _OldT],ax
- mov ax,offset @@Idle
- ; xchg ax,es:[Idle*4]
- mov [offset _OldI],ax
- mov ax,ds
- mov es:[PrnScr*4+2],ax
- xchg ax,es:[Timer*4+2]
- mov [offset _OldT+2],ax
- mov ax,ds
- ; xchg ax,es:[Idle*4+2]
- mov [offset _OldI+2],ax
- sti
- mov dx,offset @@Start+1024
- int 027
Raw Paste