home *** CD-ROM | disk | FTP | other *** search
/ Simtel MSDOS - Coast to Coast / simteldosarchivecoasttocoast2.iso / modem / suncom.zip / TPZVIDEO.PAS < prev    next >
Pascal/Delphi Source File  |  1990-01-19  |  5KB  |  242 lines

  1. UNIT TpzVideo;
  2. (* Status window routines for Turbo Pascal Zmodem *)
  3. (* (c)1988 by J.R.Louvau                          *)
  4. INTERFACE
  5. USES Crt,Windows;
  6.  
  7. PROCEDURE Z_OpenWindow(title: STRING);
  8. (* Setup the area of the screen for transfer status window *)
  9. PROCEDURE Z_CloseWindow;
  10. (* Restore the original window *)
  11. PROCEDURE Z_ShowName(filename: STRING);
  12. (* Display the file name *)
  13. PROCEDURE Z_ShowSize(l: LONGINT);
  14. (* Display the file size in blocks and bytes *)
  15. PROCEDURE Z_ShowCheck(is32: BOOLEAN);
  16. (* Display CRC16 or CRC32 block checking *)
  17. PROCEDURE Z_ShowTransferTime(fsize, zbaud: LONGINT);
  18. (* Show estimated transfer time in minutes *)
  19. PROCEDURE Z_Message(s: STRING);
  20. (* Show miscelaneous messages *)
  21. PROCEDURE Z_Frame(n: INTEGER);
  22. (* Show current ZMODEM frame type *)
  23. PROCEDURE Z_ShowLoc(l: LONGINT);
  24. (* Show byte position of file in blocks and bytes *)
  25. PROCEDURE Z_Errors(w: WORD);
  26. (* Show total error count *)
  27.  
  28.  
  29. IMPLEMENTATION
  30.  
  31. CONST
  32.    x1: BYTE = 20;
  33.    x2: BYTE = 59;
  34.    y1: BYTE = 5;
  35.    y2: BYTE = 17;
  36.  
  37. {$F+}
  38. {$L \turbo5\util\mcmvsmem.obj }
  39. PROCEDURE MoveToScreen(var Source, Dest; Len: WORD);external;
  40. PROCEDURE MoveFromScreen(var Source, Dest; Len: WORD);external;
  41. {$F-}
  42.  
  43.  
  44.  
  45. VAR
  46.    vmode: BYTE absolute $0040:$0049;
  47.    vcols: WORD absolute $0040:$004A;
  48.    oldx, oldy, oldattr: BYTE;
  49.    oldmin, oldmax, cols, rows, size, vseg, vofs: WORD;
  50.    buffer: POINTER;
  51.  
  52. FUNCTION RtoS(r: REAL; width, decimals: WORD): STRING;
  53. VAR
  54.    s: STRING;
  55. BEGIN
  56.    {$I-}
  57.    Str(r:width:decimals,s);
  58.    {$I+}
  59.    IF (IoResult <> 0) THEN
  60.       s := ''
  61.    ELSE
  62.       WHILE (Length(s) > 0) AND (s[1] = ' ') DO
  63.          Delete(s,1,1);
  64.    RtoS := s
  65. END;
  66.  
  67.  
  68.  
  69. FUNCTION ItoS(r: LONGINT; width: WORD): STRING;
  70. VAR
  71.    s: STRING;
  72. BEGIN
  73.    {$I-}
  74.    Str(r:width,s);
  75.    {$I+}
  76.    IF (IoResult <> 0) THEN
  77.       s := ''
  78.    ELSE
  79.       WHILE (Length(s) > 0) AND (s[1] = ' ') DO
  80.          Delete(s,1,1);
  81.    ItoS := s
  82. END;
  83.  
  84.  
  85. PROCEDURE Z_OpenWindow(title: STRING);
  86. VAR
  87.    p, q: POINTER;
  88.    n, pads, bytes: WORD;
  89. BEGIN
  90.    DirectVideo := TRUE;
  91.    CheckSnow := FALSE;
  92.    MAKEWINDOW(white,blue,4,0,x1,y1,x2,y2);
  93.    window(x1,y1,x2,y2);
  94.    textcolor(yellow);
  95.    gotoXY(13,1);
  96.    write(title);
  97.    window(1,1,80,25);
  98.    GotoXY(33,17);
  99.    write('ESCape to abort');
  100.    SETSCREEN(yellow,blue,0,x1+1,y1+1,x2-1,y2-1);
  101.    WRITELN(' File name.....:');
  102.    WRITELN(' File size.....:');
  103.    WRITELN(' File blocks...:');
  104.    WRITELN(' Block check...:');
  105.    WRITELN(' Transfer time.:');
  106.    WRITELN(' Current BYTE..:');
  107.    WRITELN(' Current BLOCK.:');
  108.    WRITELN(' Error count...:');
  109.    WRITELN(' Last frame....:');
  110.    TextColor(lightcyan);
  111.    TextBackground(blue);
  112.    write('             MESSAGES');
  113.    ClrEol;
  114.    textcolor(white);
  115. END;
  116.  
  117.  
  118.  
  119. PROCEDURE Z_CloseWindow;
  120. BEGIN
  121.      SETSCREEN(white,black,0,1,1,80,24);
  122.      gotoxy(1,1);
  123. END;
  124.  
  125. PROCEDURE Z_ShowName(filename: STRING);
  126. BEGIN
  127.    IF (Length(filename) > 14) THEN
  128.       filename[0] := #14;
  129.    GotoXY(18,1);
  130.    WRITE(filename);
  131.    GotoXY(1,11)
  132. END;
  133.  
  134.  
  135. PROCEDURE Z_ShowSize(l: LONGINT);
  136. BEGIN
  137.    GotoXY(18,2);
  138.    WRITE(ItoS(l,14));
  139.    IF (l MOD 128 <> 0) THEN
  140.       l := (l DIV 128) + 1
  141.    ELSE
  142.       l := (l DIV 128);
  143.    GotoXY(18,3);
  144.    WRITE(ItoS(l,14));
  145.    GotoXY(1,11);
  146. END;
  147.  
  148.  
  149. PROCEDURE Z_ShowCheck(is32: BOOLEAN);
  150. BEGIN
  151.    GotoXY(18,4);
  152.    IF (is32) THEN
  153.       WRITE('CRC32')
  154.    ELSE
  155.       WRITE('CRC16');
  156.    GotoXY(1,11)
  157. END;
  158.  
  159. PROCEDURE Z_ShowTransferTime(fsize, zbaud: LONGINT);
  160. VAR
  161.    bits: REAL;
  162. BEGIN
  163.    bits := fsize * 10.0;
  164.    GotoXY(18,5);
  165.    IF (bits <> 0.0) THEN
  166.       WRITE(RtoS(((bits / zbaud) / 60),10,2),'min.')
  167.    ELSE
  168.       WRITE('0min.');
  169.    GotoXY(1,11)
  170. END;
  171.  
  172.  
  173. PROCEDURE Z_Message(s: STRING);
  174. BEGIN
  175.    IF (Length(s) > 31) THEN
  176.       s[0] := #31;
  177.    GotoXY(1,11);
  178.    ClrEol;
  179.    WRITE(s,#13);
  180. END;
  181.  
  182. PROCEDURE Z_Frame(n: INTEGER);
  183. VAR Num : Byte;
  184. BEGIN
  185.    IF (n < -3) OR (n > 20) THEN
  186.       n := 20;
  187.    GotoXY(18,9);
  188.    Num := Lo(n);
  189.    if Num = -3
  190.       then WRITE('ZNOCARRIER')
  191.       else if Num = -2
  192.               then WRITE('ZTIMEOUT  ')
  193.               else if Num = -1
  194.                       then  WRITE('ZERROR    ')
  195.                       else
  196.    CASE Lo(n) OF
  197.       0  : WRITE('ZRQINIT   ');
  198.       1  : WRITE('ZRINIT    ');
  199.       2  : WRITE('ZSINIT    ');
  200.       3  : WRITE('ZACK      ');
  201.       4  : WRITE('ZFILE     ');
  202.       5  : WRITE('ZSKIP     ');
  203.       6  : WRITE('ZNAK      ');
  204.       7  : WRITE('ZABORT    ');
  205.       8  : WRITE('ZFIN      ');
  206.       9  : WRITE('ZRPOS     ');
  207.       10 : WRITE('ZDATA     ');
  208.       11 : WRITE('ZEOF      ');
  209.       12 : WRITE('ZFERR     ');
  210.       13 : WRITE('ZCRC      ');
  211.       14 : WRITE('ZCHALLENGE');
  212.       15 : WRITE('ZCOMPL    ');
  213.       16 : WRITE('ZCAN      ');
  214.       17 : WRITE('ZFREECNT  ');
  215.       18 : WRITE('ZCOMMAND  ');
  216.       19 : WRITE('ZSTDERR   ');
  217.       20 : WRITE('ZUNKNOWN  ')
  218.    END;
  219.    GotoXY(1,11)
  220. END;
  221.  
  222. PROCEDURE Z_ShowLoc(l: LONGINT);
  223. BEGIN
  224.    GotoXY(18,6);
  225.    WRITE(ItoS(l,14));
  226.    IF (l MOD 128 <> 0) THEN
  227.       l := (l DIV 128) + 1
  228.    ELSE
  229.       l := (l DIV 128);
  230.    GotoXY(18,7);
  231.    WRITE(ItoS(l,14));
  232.    GotoXY(1,11)
  233. END;
  234.  
  235. PROCEDURE Z_Errors(w: WORD);
  236. BEGIN
  237.    GotoXY(18,8);
  238.    WRITE(ItoS(w,14));
  239.    GotoXY(1,11)
  240. END;
  241.  
  242. END.