home *** CD-ROM | disk | FTP | other *** search
/ The World of Computer Software / World_Of_Computer_Software-02-385-Vol-1of3.iso / r / rusn-09.zip / RUSN-IO.PAS < prev    next >
Pascal/Delphi Source File  |  1992-11-03  |  4KB  |  311 lines

  1. {
  2.  
  3. rusn-io.pas - nonconsole input/output routines}
  4.  
  5. procedure noncwritec(c: char);
  6.  
  7. var
  8.   regs: registers;
  9.  
  10. begin
  11.   regs.dx := port;
  12.   regs.ah := 1;
  13.   regs.al := ord(c);
  14.   intr($14,regs);
  15. end;
  16.  
  17. function noncreadc: char;
  18.  
  19. var
  20.   regs: registers;
  21.  
  22. begin
  23.   regs.dx := port;
  24.   regs.ah := 2;
  25.   intr($14,regs);
  26.   noncreadc := chr(regs.al);
  27. end;
  28.  
  29. function noncinready: boolean;
  30.  
  31. var
  32.   regs: registers;
  33.  
  34. begin
  35.   regs.dx := port;
  36.   regs.ah := 3;
  37.   intr($14,regs);
  38.   noncinready := odd(regs.ah);
  39. end;
  40.  
  41. procedure xwrites(s: string);
  42.  
  43. var
  44.   i: integer;
  45.  
  46. begin
  47.   if console then
  48.     write(s)
  49.   else
  50.     begin
  51.       for i := 1 to length(s) do
  52.         noncwritec(s[i]);
  53.     end;
  54. end;
  55.  
  56. procedure xwritei(i: integer);
  57.  
  58. var
  59.   s: string;
  60.  
  61. begin
  62.   if console then
  63.     write(i)
  64.   else
  65.     begin
  66.       str(i,s);
  67.       xwrites(s);
  68.     end;
  69. end;
  70.  
  71. procedure xwriteiw(i,w: integer);
  72.  
  73. var
  74.   s: string;
  75.  
  76. begin
  77.   if console then
  78.     write(i:w)
  79.   else
  80.     begin
  81.       str(i:w,s);
  82.       xwrites(s);
  83.     end;
  84. end;
  85.  
  86. procedure xwritess(s1,s2: string);
  87.  
  88. begin
  89.   xwrites(s1);
  90.   xwrites(s2);
  91. end;
  92.  
  93. procedure xwritesss(s1,s2,s3: string);
  94.  
  95. begin
  96.   xwrites(s1);
  97.   xwrites(s2);
  98.   xwrites(s3);
  99. end;
  100.  
  101. procedure xwritessss(s1,s2,s3,s4: string);
  102.  
  103. begin
  104.   xwrites(s1);
  105.   xwrites(s2);
  106.   xwrites(s3);
  107.   xwrites(s4);
  108. end;
  109.  
  110. procedure xwritesis(s1: string; i2: integer; s3: string);
  111.  
  112. begin
  113.   xwrites(s1);
  114.   xwritei(i2);
  115.   xwrites(s3);
  116. end;
  117.  
  118. procedure xwritessis(s1,s2: string; i3: integer; s4: string);
  119.  
  120. begin
  121.   xwritess(s1,s2);
  122.   xwritei(i3);
  123.   xwrites(s4);
  124. end;
  125.  
  126. procedure xwriteln;
  127.  
  128. begin
  129.   if console then
  130.     writeln
  131.   else
  132.     xwritess(chr(13),chr(10));
  133. end;
  134.  
  135. procedure xwritelns(s: string);
  136.  
  137. begin
  138.   xwrites(s);
  139.   xwriteln;
  140. end;
  141.  
  142. procedure xwritelnss(s1,s2: string);
  143.  
  144. begin
  145.   xwrites(s1);
  146.   xwrites(s2);
  147.   xwriteln;
  148. end;
  149.  
  150. procedure xwritelnsss(s1,s2,s3: string);
  151.  
  152. begin
  153.   xwrites(s1);
  154.   xwrites(s2);
  155.   xwrites(s3);
  156.   xwriteln;
  157. end;
  158.  
  159. procedure xwritelnssss(s1,s2,s3,s4: string);
  160.  
  161. begin
  162.   xwrites(s1);
  163.   xwrites(s2);
  164.   xwrites(s3);
  165.   xwrites(s4);
  166.   xwriteln;
  167. end;
  168.  
  169. procedure xwritelnsssisis(s1,s2,s3: string; i4: integer; s5: string;
  170.  i6: integer; s7: string);
  171.  
  172. begin
  173.   xwritesss(s1,s2,s3);
  174.   xwritei(i4);
  175.   xwrites(s5);
  176.   xwritei(i6);
  177.   xwritelns(s7);
  178. end;
  179.  
  180. procedure xgotoxy(x,y: integer);
  181.  
  182. begin
  183.   if console then
  184.     gotoxy(x,y)
  185.   else
  186.     begin
  187.       xwritess(#27,'[');
  188.       xwritei(y);
  189.       xwrites(';');
  190.       xwritei(x);
  191.       xwrites('f');
  192.     end;
  193. end;
  194.  
  195. procedure writexy(x,y: integer; s: string);
  196.  
  197. begin
  198.   xgotoxy(x,y);
  199.   xwrites(s);
  200. end;
  201.  
  202. procedure xclreol;
  203.  
  204. begin
  205.   if console then
  206.     clreol
  207.   else
  208.     xwritess(#27,'[0K');
  209. end;
  210.  
  211. procedure xclreolxy(x,y: integer);
  212.  
  213. begin
  214.   xgotoxy(x,y);
  215.   xclreol;
  216. end;
  217.  
  218. procedure xclrscr;
  219.  
  220. begin
  221.   if console then
  222.     clrscr
  223.   else
  224.     begin
  225.       xwritess(#27,'[2J');
  226.       xgotoxy(1,1);
  227.     end;
  228. end;
  229.  
  230. function xkeypressed: boolean;
  231.  
  232. begin
  233.   if console then
  234.     xkeypressed := keypressed
  235.   else
  236.     xkeypressed := noncinready;
  237. end;
  238.  
  239. function xreadkey: char;
  240.  
  241. begin
  242.   if console then
  243.     xreadkey := readkey
  244.   else
  245.     begin
  246.       while not xkeypressed do
  247.         ;
  248.       xreadkey := noncreadc;
  249.     end;
  250. end;
  251.  
  252. procedure xreadlns(var s: string);
  253.  
  254. var
  255.   result: string;
  256.   len: integer;
  257.   c: char;
  258.  
  259. begin
  260.   if console then
  261.     readln(s)
  262.   else
  263.     begin
  264.       len := 0;
  265.       result := '';
  266.       repeat
  267.         c := xreadkey;
  268.         if (c=#127) or (c=#8) then
  269.           begin
  270.             if length(result)>0 then
  271.               begin
  272.                 xwritesss(#8,' ',#8);
  273.                 dec(len);
  274.                 if len=0 then
  275.                   result := ''
  276.                 else
  277.                   result := copy(result,1,len);
  278.               end;
  279.           end
  280.         else if (c=#13) then
  281.           begin
  282.             xwriteln;
  283.           end
  284.         else if (ord(c)>=32) and (ord(c)<128) and (len<250) then
  285.           begin
  286.             inc(len);
  287.             result := result+c;
  288.             noncwritec(c);
  289.           end
  290.       until c=#13;
  291.       s := result;
  292.     end;
  293. end;
  294.  
  295. procedure xhighvideo;
  296.  
  297. begin
  298.   if console then
  299.     highvideo
  300.   else
  301.     xwritess(#27,'[7m');
  302. end;
  303.  
  304. procedure xlowvideo;
  305.  
  306. begin
  307.   if console then
  308.     lowvideo
  309.   else
  310.     xwritess(#27,'[m');
  311. end;