home *** CD-ROM | disk | FTP | other *** search
/ Shareware Overload / ShartewareOverload.cdr / games / speedset.zip / VARISLOW.ASM next >
Assembly Source File  |  1986-06-24  |  2KB  |  113 lines

  1. SLOW      SEGMENT PUBLIC PARA
  2.       ASSUME CS:SLOW; DS:SLOW ;ES:SLOW
  3.  
  4.     ORG    100H
  5.  
  6. START:
  7.     JMP    TEMP
  8.  
  9. EXIT    DW    0
  10.     DW    0
  11. LOOPDATA DW    150
  12. ACK    DB    13,10,10,'VARISLOW  by  Ray Usher                   [To slow AT down to play games]',13,10,10
  13.     DB    'Left Shift:    Slows down action',13,10,10
  14.     DB    'Right Shift:    Speeds up action',13,10,10
  15.     DB    'Left Shift & Right Shift together:    Exits program',13,10,'$'
  16. EXITMES DB    'Computer is back to full speed',13,10
  17.  
  18. START2:
  19.     PUSH    AX
  20.     PUSH    BX
  21.     PUSH    CX
  22.     PUSH    DX
  23.     PUSH    DS
  24.     MOV    AX,40H        ;GET KEYBOARD BYTE
  25.     MOV    DS,AX
  26.     MOV    BX,17H
  27.     MOV    DL,[BX]
  28.     MOV    DH,DL        ;SAVE IT IN DH
  29.     MOV    AX,CS        ;SET UP DS
  30.     MOV    DS,AX
  31.     AND    DL,1        ;CK FOR R SHIFT
  32.     JZ    CK_L_SHIFT
  33.     MOV    DL,DH        ;CK FOR BOTH SHIFTS
  34.     AND    DL,2
  35.     JNZ    CANCEL            ;YES GO    
  36.     MOV    AX,LOOPDATA    ;SHORTEN LOOP FOR FASTER
  37.     SUB    AX,10
  38.     CMP    AX,10
  39.     JB    LOOP
  40.     MOV    LOOPDATA,AX
  41.     JMP    LOOP
  42. CK_L_SHIFT:
  43.     MOV    DL,DH        ;CH FOR L SHIFT
  44.     AND    DL,02
  45.     JZ    LOOP
  46.     MOV    AX,LOOPDATA    ;LENGTHEN LOOP FOR SLOWER COMPUTER
  47.     ADD    AX,10
  48.     CMP    AX,300
  49.     JA    LOOP
  50.     MOV    LOOPDATA,AX    ;GET LOOP LENGTH
  51. LOOP:
  52.     MOV    CX,LOOPDATA
  53. LOOP1:
  54.     PUSH    CX
  55.     MOV    CX,100
  56. HERE:
  57.     LOOP    HERE
  58.     POP    CX
  59.     LOOP    LOOP1
  60.     POP    DS
  61.     POP    DX
  62.     POP    CX
  63.     POP    BX
  64.     POP    AX
  65.     JMP    DWORD PTR EXIT    
  66. CANCEL:
  67.     CLI
  68.     MOV    DX,EXIT        ;RETURN OLD HOOK
  69.     MOV    DS,EXIT+2
  70.     MOV    AX,251CH
  71.     INT    21H
  72.     STI    
  73.     PUSH    SI
  74.     XOR    SI,SI        ;DISPLAY EXIT MESSAGE
  75. LOOP2:
  76.     MOV    AL,EXITMES [SI]
  77.     MOV    AH,14
  78.     XOR    BH,BH
  79.     INT    16        ;USING INT 16 (A MUST)
  80.     INC    SI
  81.     CMP    SI,32
  82.     JB    LOOP2
  83.     POP    SI
  84.     POP    DS
  85.     POP    DX
  86.     POP    CX
  87.     POP    BX
  88.     POP    AX
  89.     IRET
  90.  
  91. END_OF_PROG EQU THIS BYTE
  92.  
  93. TEMP:
  94.     MOV    DX, OFFSET ACK    ;DISPLAY INSTRUCTIONS
  95.     MOV    AH,9H
  96.     INT    21H
  97.     CLI
  98.     MOV    AX,351CH    ;GET 1C HOOK
  99.     INT    21H
  100.     MOV    EXIT,BX
  101.     MOV    AX,ES
  102.     MOV    EXIT+2,AX
  103.     MOV    AX,CS
  104.     MOV    DS,AX
  105.     MOV    DX,OFFSET START2    ;CHANGE 1C HOOK TO HERE
  106.     MOV    AX,251CH
  107.     INT    21H    
  108.     STI
  109.     MOV    DX,OFFSET END_OF_PROG
  110.     INT    27H               ;TERMINATE AND STAY RESIDENT
  111. SLOW    ENDS
  112.     END    START
  113.