home *** CD-ROM | disk | FTP | other *** search
/ Simtel MSDOS - Coast to Coast / simteldosarchivecoasttocoast.iso / pcmag / vol7n20.zip / CURSOR.PAS < prev    next >
Pascal/Delphi Source File  |  1988-07-14  |  2KB  |  58 lines

  1. {$R+}
  2. PROGRAM Cursor;
  3. VAR
  4.   I, J, X : Integer;
  5.   Equipment_Flag : Integer ABSOLUTE $40:$10;
  6.  
  7.   PROCEDURE Set_Cursor(Top, Bottom : Byte);
  8.   TYPE
  9.     Registers  = Record
  10.       CASE Integer Of
  11.         1 : ( AX,BX,CX,DX,BP,SI,DI,DS,ES,Flags : Integer );
  12.         2 : ( AL,AH,BL,BH,CL,CH,DL,DH : Byte );
  13.       END;
  14.   VAR
  15.     recpack : Registers;
  16.   BEGIN
  17.     Recpack.AH := 1;
  18.     RecPack.CH := Top;
  19.     RecPack.CL := Bottom;
  20.     Intr($10, recpack);       {call interrupt}
  21.   END;                        { Set_Cursor }
  22.  
  23. BEGIN
  24.   CASE ParamCount OF
  25.     0 : IF Equipment_Flag AND $30 = $30 THEN { Monochrome board? }
  26.           Set_Cursor(11, 12)
  27.         ELSE
  28.           BEGIN
  29.             WriteLn('Auto-reset is for MONO system only.');
  30.             WriteLn('Use 2 numeric parameters (to set ',
  31.             'cursor top and bottom, e.g. "Cursor 2 10").');
  32.           END;
  33.     2 : BEGIN
  34.           Val(ParamStr(1), I, X);
  35.           IF X <> 0 THEN
  36.             BEGIN
  37.               Write('Parameters must be numeric!  "');
  38.               WriteLn(ParamStr(1),'" is not.');
  39.               Halt;
  40.             END;
  41.           Val(ParamStr(2), J, X);
  42.           IF X <> 0 THEN
  43.             BEGIN
  44.               Write('Parameters must be numeric!  "');
  45.               WriteLn(ParamStr(2),'" is not.');
  46.               Halt;
  47.             END;
  48.           Set_Cursor(I, J);
  49.         END;
  50.   ELSE
  51.     BEGIN
  52.       WriteLn('Call program either with no ',
  53.       'parameters (for reset to MONO startup cursor)');
  54.       WriteLn('or with 2 numeric parameters (to set ',
  55.       'cursor top and bottom, e.g. "Cursor 2 10").');
  56.     END;
  57.   END; {CASE}
  58. END.