home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / PASCAL / FILER.ZIP / FILER1.PAS < prev    next >
Encoding:
Pascal/Delphi Source File  |  1985-11-18  |  5.9 KB  |  179 lines

  1. {================================================================}
  2. {        BINARY CODED DECIMAL TO INTEGER FUNCTION                }
  3. {================================================================}
  4. FUNCTION BCDTOIN (CHA : CHAR) : INTEGER;
  5. BEGIN
  6.   BCDTOIN := ORD(CHA) - TRUNC(ORD(CHA)/16)*6;
  7. END;
  8. {================================================================}
  9. {             CHARACTER TO INTEGER FUNCTION                      }
  10. {================================================================}
  11. FUNCTION CHTOIN(VAR CHARRAY : RANGE; START, LEN : INTEGER)  : INTEGER;
  12. VAR
  13.   CODE, RESULT : INTEGER;
  14.   WORKSTRING   : STRING[10];
  15. BEGIN
  16.   WORKSTRING := '';
  17.   FOR RESULT := 0 TO LEN-1  DO
  18.     BEGIN
  19.       IF CHARRAY[START + RESULT ] = ' ' THEN
  20.         WORKSTRING := WORKSTRING + '0'
  21.       ELSE WORKSTRING := WORKSTRING + CHARRAY[START+RESULT];
  22.     END;
  23.   VAL(WORKSTRING,RESULT,CODE);
  24.   CHTOIN := RESULT;
  25. END;
  26. {================================================================}
  27. {                   BIG CURSOR PROCEDURE                         }
  28. {================================================================}
  29. procedure curson;
  30. var
  31.   result      : record
  32.       ax,bx,cx,dx,bp,si,di,ds,es,flags : integer;
  33.       end;
  34. begin
  35.   if mem[$0000:$0449] = 7 then
  36.       result.cx := $000d
  37.   else
  38.       result.cx := $0007;
  39.   result.ax := $0100;
  40.   intr($10,result);
  41. end;
  42. {================================================================}
  43. {                   REGULAR VIDEO PROCEDURE                      }
  44. {================================================================}
  45. PROCEDURE REGVIDEO;
  46. BEGIN
  47.   TEXTCOLOR(YELLOW);
  48.   TEXTBACKGROUND(BLUE);
  49. END;
  50. {================================================================}
  51. {                   REVERSE VIDEO PROCEDURE                      }
  52. {================================================================}
  53. PROCEDURE REVVIDEO;
  54. BEGIN
  55.   TEXTCOLOR(WHITE);
  56.   TEXTBACKGROUND(BLACK);
  57. END;
  58. {================================================================}
  59. {           PRINT GETDATA PROCEDURE (TEMPORARY)                  }
  60. {================================================================}
  61. PROCEDURE PRTGETDATA;
  62. VAR W : INTEGER;
  63.   BEGIN
  64.     GOTOXY(1,18);
  65.     FOR W := 1 TO 128 DO
  66.     WRITE(GETDATA[W]);
  67.     WRITELN;
  68.     READ(KBD,CH);
  69.   END;
  70. {================================================================}
  71. {               GET DATA FROM ARRAY PROCEDURE                    }
  72. {================================================================}
  73. PROCEDURE GETDATAFROMARRAY(VAR MESSAGE : STRING60);
  74. VAR W,X :  INTEGER;
  75. BEGIN
  76.   MESSAGE := '';
  77.   FOR W := PRECBYTE+DATAPOSN[Z] TO PRECBYTE+DATAPOSN[Z+1]-1 DO
  78.     MESSAGE := MESSAGE + GETDATA[W];
  79.   IF DATAFORM[Z] <> ASCII THEN      { CHANGE TRAILING MINUS SIGN }
  80.     BEGIN                           { TO LEADING MINUS SIGN      }
  81.       X := LENGTH(MESSAGE);
  82.       IF MESSAGE[X] = '-' THEN
  83.         BEGIN
  84.           DELETE(MESSAGE,X,1);
  85.           W := 1;
  86.           WHILE (W<X) AND (MESSAGE[W] = ' ') DO
  87.             W := SUCC(W);
  88.           INSERT('-',MESSAGE,W);
  89.         END;
  90.     END;
  91. END;
  92. {================================================================}
  93. {                       EDIT PROCEDURE                           }
  94. {================================================================}
  95. PROCEDURE EDIT(VAR MESSAGE : STRING60);
  96. VAR
  97.   W           :  INTEGER;
  98.   DECPTR      :  INTEGER;
  99.  
  100. BEGIN
  101.   IF LENGTH(MESSAGE) > 0 THEN
  102.     BEGIN
  103.       IF DATAFORM[Z] = 0 THEN DECPTR := DATALEN[Z]-2
  104.       ELSE DECPTR := DATALEN[Z]-DATAFORM[Z]-3;
  105.       WHILE DECPTR > 1 DO
  106.         BEGIN
  107.           IF MESSAGE[DECPTR-1] <> '-' THEN
  108.             BEGIN
  109.               IF MESSAGE[DECPTR-1] IN [' ','$'] THEN
  110.                 INSERT(' ',MESSAGE,DECPTR)
  111.               ELSE INSERT(',',MESSAGE,DECPTR);
  112.             END;
  113.           DECPTR := DECPTR -3;
  114.         END;
  115.     END; { IF LENGTH BEGIN }
  116. END;
  117. {================================================================}
  118. {               TIDE (EDIT BACKWARDS) PROCEDURE                  }
  119. {================================================================}
  120. PROCEDURE TIDE( VAR MESSAGE : STRING60);
  121. VAR W  :  INTEGER;
  122. BEGIN
  123.   W := LENGTH(MESSAGE);
  124.   WHILE W>0 DO
  125.     BEGIN
  126.       IF MESSAGE[W] IN [',', '$', '+'] THEN
  127.         BEGIN
  128.           DELETE(MESSAGE,W,1);
  129.           MESSAGE := ' ' + MESSAGE;
  130.         END
  131.       ELSE W := W-1;
  132.     END;
  133. END;
  134. {================================================================}
  135. {                         BEEP PROCEDURE                         }
  136. {================================================================}
  137. PROCEDURE BEEP;
  138. BEGIN
  139.   SOUND(800);
  140.   DELAY(100);
  141.   NOSOUND;
  142. END;
  143. {================================================================}
  144. {               STRING TO REAL NUMBER PROCEDURE                  }
  145. {================================================================}
  146. PROCEDURE STRINGTOREAL(VAR SOURCE:STRING60;VAR NUMB:REAL;VAR CODE:INTEGER);
  147. VAR
  148.   X,W  :  INTEGER;
  149. BEGIN
  150.   W := 1;
  151.   WHILE (W < LENGTH(SOURCE)+1) AND (SOURCE[W] = ' ') DO
  152.     W := W+1;
  153.   X := W;
  154.   WHILE (W < LENGTH(SOURCE)+1) AND (SOURCE[W] <> ' ') DO
  155.     W := W+1;
  156.   SOURCE := COPY(SOURCE,X,W-X);
  157.   VAL( SOURCE,NUMB,CODE );
  158.   IF CODE <> 0 THEN BEEP;
  159. END;
  160. {================================================================}
  161. {           STORE DATA IN ARRAY GETDATA PROCEDURE                }
  162. {================================================================}
  163. PROCEDURE STOREDATAINARRAY;
  164.  
  165. BEGIN
  166.   FIRST := 1;
  167.   IF DATAFORM[Z] <> ASCII THEN
  168.     BEGIN                       { RIGHT JUSTIFY NUMBER }
  169.       IF LENGTH(ANS) > 0 THEN STRINGTOREAL(ANS,NUMVALUE,CODE)
  170.         ELSE NUMVALUE := 0;
  171.       STR(NUMVALUE:20:8,ANS);
  172.       FIRST := POS('.',ANS)-DATALEN[Z];
  173.       IF DATAFORM[Z] <> 0 THEN FIRST := FIRST + DATAFORM[Z] + 1;
  174.       IF DATAFORM[Z] = ASCII THEN FIRST := 1;
  175.     END;
  176.   FILLCHAR(GETDATA[PRECBYTE+DATAPOSN[Z]],DATALEN[Z],' ');
  177.   MOVE(ANS[FIRST],GETDATA[PRECBYTE+DATAPOSN[Z]],DATALEN[Z]);
  178. END;
  179.