TEXT   259
timer 08
Guest on 3rd December 2024 01:45:34 AM


  1. Timer           = 08
  2.  
  3. Idle            = 028
  4.  
  5. PrnScr          = 05
  6.  
  7.  
  8.  
  9.                 jmp     @@Start
  10.  
  11.  
  12.  
  13. @@Timer:        pushf
  14.  
  15.                 db      09a
  16.  
  17. _OldT:          dd      ?
  18.  
  19.                 push    es
  20.  
  21.                 push    bx
  22.  
  23.                 les     bx,cs:[offset _InDOS]
  24.  
  25.                 cmp     byte ptr es:[bx],0
  26.  
  27.                 pop     bx
  28.  
  29.                 pop     es
  30.  
  31.                 je      @@Check
  32.  
  33.                 iret
  34.  
  35.  
  36.  
  37. @@Idle:         pushf
  38.  
  39.                 db      09a
  40.  
  41. _OldI:          dd      ?
  42.  
  43. @@Check:        cmp     byte ptr cs:[offset _Switch],1
  44.  
  45.                 je      @@Main
  46.  
  47.                 iret
  48.  
  49.  
  50.  
  51. @@Main:
  52.  
  53.  
  54.  
  55. mov     byte ptr cs:[offset _Switch],0
  56.  
  57.  
  58.  
  59. push    ax
  60.  
  61. push    bx
  62.  
  63. push    cx
  64.  
  65. push    dx
  66.  
  67. push    si
  68.  
  69. push    di
  70.  
  71. push    bp
  72.  
  73. push    ds
  74.  
  75. push    es
  76.  
  77.  
  78.  
  79. push    cs
  80.  
  81. pop     ds
  82.  
  83.  
  84.  
  85. mov     dx,ss
  86.  
  87. mov     bp,sp
  88.  
  89.  
  90.  
  91. cmp     byte ptr [offset _Prog],0
  92.  
  93. je      @@Load
  94.  
  95.  
  96.  
  97. mov     bx,[offset _PSP]
  98.  
  99. mov     ah,050
  100.  
  101. int     021
  102.  
  103. mov     ah,051
  104.  
  105. int     021
  106.  
  107. mov     [offset _PSP],bx
  108.  
  109.  
  110.  
  111. mov     ss,[offset _SS]
  112.  
  113. mov     sp,[offset _SP]
  114.  
  115.  
  116.  
  117. mov     [offset _SS],dx
  118.  
  119. mov     [offset _SP],bp
  120.  
  121.  
  122.  
  123. ;xor    si,si
  124.  
  125. ;mov    di,si
  126.  
  127. ;mov    ds,si
  128.  
  129. ;mov    es,si
  130.  
  131. ;mov    cx,256*2
  132.  
  133. ;@@Table:
  134.  
  135. ;lodsw
  136.  
  137. ;xchg   ax,cs:[offset @@Start+100][di]
  138.  
  139. ;stosw
  140.  
  141. ;loop   @@Table
  142.  
  143.  
  144.  
  145. @@Out:
  146.  
  147.  
  148.  
  149. pop     es
  150.  
  151. pop     ds
  152.  
  153. pop     bp
  154.  
  155. pop     di
  156.  
  157. pop     si
  158.  
  159. pop     dx
  160.  
  161. pop     cx
  162.  
  163. pop     bx
  164.  
  165. pop     ax
  166.  
  167.  
  168.  
  169. iret
  170.  
  171.  
  172.  
  173. @@Load:
  174.  
  175.                 mov     byte ptr [offset _Prog],1
  176.  
  177.                 mov     ah,051
  178.  
  179.                 int     021
  180.  
  181.                 mov     [offset _PSP],bx
  182.  
  183.                 mov     [offset _SS],dx
  184.  
  185.                 mov     [offset _SP],bp
  186.  
  187.                 mov     [_ExecParamRec+4],cs
  188.  
  189.                 mov     word ptr [_ExecParamRec+2],offset _CmdLine
  190.  
  191.                 push    cs
  192.  
  193.                 pop     es
  194.  
  195.                 mov     dx,offset _ExecPath
  196.  
  197.                 mov     bx,offset _ExecParamRec
  198.  
  199.                 mov     ax,04b00
  200.  
  201.                 int     021
  202.  
  203.                 mov     ss,cs:[offset _SS]
  204.  
  205.                 mov     sp,cs:[offset _SP]
  206.  
  207.                 mov     byte ptr cs:[offset _Prog],0
  208.  
  209.                 jmp     short @@Out
  210.  
  211.  
  212.  
  213. _Switch:        db      0
  214.  
  215. _InDOS:         dd      ?
  216.  
  217. _Prog           db      0
  218.  
  219. _PSP:           dw      0
  220.  
  221. _SS:            dw      ?
  222.  
  223. _SP:            dw      ?
  224.  
  225.  
  226.  
  227. _ExecPath:      db      "p2.com",0
  228.  
  229. _ExecParamRec:  dw      0
  230.  
  231.                 dd      ?
  232.  
  233. _CmdLine        db      0,0d
  234.  
  235.  
  236.  
  237. @@PrnScr:       mov     byte ptr cs:[offset _Switch],1
  238.  
  239.                 iret
  240.  
  241.  
  242.  
  243. @@Start:        mov     ah,034
  244.  
  245.                 int     021
  246.  
  247.                 mov     [offset _InDOS+2],es
  248.  
  249.                 mov     [offset _InDOS],bx
  250.  
  251.                 push    0
  252.  
  253.                 pop     es
  254.  
  255.                 cli
  256.  
  257.                 mov     es:[PrnScr*4],offset @@PrnScr
  258.  
  259.                 mov     ax,offset @@Timer
  260.  
  261.                 xchg    ax,es:[Timer*4]
  262.  
  263.                 mov     [offset _OldT],ax
  264.  
  265.                 mov     ax,offset @@Idle
  266.  
  267. ;               xchg    ax,es:[Idle*4]
  268.  
  269.                 mov     [offset _OldI],ax
  270.  
  271.                 mov     ax,ds
  272.  
  273.                 mov     es:[PrnScr*4+2],ax
  274.  
  275.                 xchg    ax,es:[Timer*4+2]
  276.  
  277.                 mov     [offset _OldT+2],ax
  278.  
  279.                 mov     ax,ds
  280.  
  281. ;               xchg    ax,es:[Idle*4+2]
  282.  
  283.                 mov     [offset _OldI+2],ax
  284.  
  285.                 sti
  286.  
  287.                 mov     dx,offset @@Start+1024
  288.  
  289.                 int     027

Raw Paste

Login or Register to edit or fork this paste. It's free.