[Back to INTERRUP SWAG index]  [Back to Main SWAG index]  [Original]


Program How_To_Create_YOUR_OWN_Interrupt;

(* Author: Salvatore Meschini - E-Mail: smeschini@ermes.it -
 WWW: http://www.ermes.it/pws/mesk - Please report bugs and suggestions -
 Get File Formats Encyclopedia at http://www.gdsoft.com/swag/ffe101.zip OR
 http://www.simtel.net/pub/simtelnet/msdos/pgmutl/ffe101.zip *)

uses
  crt, DOS;

var dummy:byte;

(*----------------------------------------------------------------------------*)
procedure Main;
  begin
    clrscr;
    textcolor(10);
    writeln('YOUR PROGRAM IS RUNNING!!! (Press any key)');
    readkey;
  end;

(*----------------------------------------------------------------------------*)
procedure Buzzer;
  begin
    textcolor(15);
    writeln('LONG BEEP...');
    sound(1000);
    delay(1000);
    nosound;
  end;

(*----------------------------------------------------------------------------*)

Procedure PrintResult;
   begin
     textcolor(12);
     writeln('AL=03 * CL=1 = ',dummy);
     delay(1000);
   end;

(*----------------------------------------------------------------------------*)
procedure MyInt(Flags, CS, IP, AX, BX, CX, DX, SI, DI, DS, ES, BP: Word);
                interrupt;
  begin
    asm cli end;
    case ax of
      0001: Main;
      0002: Buzzer;
      0003: asm
            mul cl {Do a silly mul (result -> in AL)}
            mov dummy,al
            end;
      0004: PrintResult;
      {...you can define your own routines...}
    end;
    asm sti end;
  end;

(*----------------------------------------------------------------------------*)
begin
  setintvec($FF, @myint); (* You can freely use interrupts from F1h (241) to
FFh (255)*)
  asm
   mov ax,0001
   int 0FFh    {Run a whole PROGRAM with INT instruction!
                    Hint: Hard to trace 4hackers...}

   mov ax,0002
   int 0FFh    {Beep}

   mov ax,0003
   mov cl,1
   int 0FFh     {Multiply with result in AL}

   mov ax,0004
   int 0FFh     {Now call PrintResult}
  end;
end.


[Back to INTERRUP SWAG index]  [Back to Main SWAG index]  [Original]