home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / PASCAL / MADTRB33.ZIP / HEXCALC.PAS < prev    next >
Encoding:
Pascal/Delphi Source File  |  1986-02-10  |  3.5 KB  |  154 lines

  1. {$V-}
  2. PROGRAM HEX;
  3.  
  4. type s4=string[4];
  5. type pinteger=^integer;
  6. VAR H:ARRAY[0..255] OF STRING[2];
  7. var pp:pinteger;
  8. var ii,jj,i,j,k:integer;
  9. var a,b:string[255];
  10. label 1,2,3;
  11. VAR X,Y:REAL;
  12. VAR N1,N2,N3,N4,N5:REAL;
  13.  
  14. PROCEDURE SETUP;
  15. VAR T1,T2:CHAR;
  16. VAR I,J,K:INTEGER;
  17. BEGIN;
  18.    K:=0;
  19.    FOR I:=0 TO 15 DO BEGIN;
  20.       FOR J:=0 TO 15 DO BEGIN;
  21.      IF I>9 THEN T1:=CHR(I+55)
  22.      ELSE T1:=CHR(I+48);
  23.      IF J>9 THEN T2:=CHR(J+55)
  24.      ELSE T2:=CHR(J+48);
  25.      H[K]:=T1+T2;
  26.      K:=K+1;
  27.       END;
  28.    END;
  29. END;
  30.  
  31. FUNCTION HEXWORD(j:integer): s4;
  32. type bytes=array[1..2] of byte;
  33. type bp=^bytes;
  34. var q:bp;
  35. VAR S:STRING[4];
  36. begin;
  37.    q:=addr(j);
  38.    hexword:=h[q^[2]]+h[q^[1]];
  39. end;
  40.  
  41. begin;
  42.       clrscr; setup;
  43.       gotoxy(1,3);
  44.       writeln('                Hex Converter/Calculator Program');
  45.       writeln;
  46.       writeln('       Enter two numbers in HEX or in DECIMAL preceeded by "."');
  47.       writeln;
  48.       WRITELN('ENTER NUMBERS AT THE "N1:" AND "N2:" PROMPTS, USE "return" TO EXIT.');
  49.       repeat
  50.       1: ;
  51.      gotoxy(10,11);
  52.      write('   N1        N2     N1+N2     N1-N2     N2-N1');
  53.      gotoxy(1,20);
  54.      write('N1: ');
  55.      clreol;
  56.      gotoxy(1,21);
  57.      write('N2: ');
  58.      clreol;
  59.      gotoxy(5,20);
  60.      readln(a);
  61.      if a='' then
  62.      else begin;
  63.         if a[1]<>'.' then a:='$'+a
  64.         else BEGIN;
  65.            delete(a,1,1);
  66.            VAL(A,X,K);
  67.            IF K<>0 THEN BEGIN;
  68.           gotoxy(20,20);
  69.           write('Invalid Numeric Input');
  70.           sound(220);
  71.           delay(550);
  72.           nosound;
  73.           repeat; until(keypressed);
  74.           goto 1;
  75.           end;
  76.            IF X>32767.0 THEN X:=X*(-1.0)+32767;
  77.            I:=TRUNC(X);
  78.            GOTO 2;
  79.            END;
  80.         val(a,i,k);
  81.         if k<>0 then begin;
  82.            gotoxy(20,20);
  83.            write('Invalid Numeric Input');
  84.            sound(220);
  85.            delay(550);
  86.            nosound;
  87.            repeat; until(keypressed);
  88.            goto 1;
  89.            end;
  90.  2:        gotoxy(5,21);
  91.         readln(b);
  92.         if b[1]<>'.' then b:='$'+b
  93.         else BEGIN;
  94.            delete(b,1,1);
  95.            VAL(B,Y,K);
  96.            IF K<>0 THEN BEGIN;
  97.           gotoxy(20,21);
  98.           write('Invalid Numeric Input');
  99.           sound(220);
  100.           delay(550);
  101.           nosound;
  102.           repeat; until(keypressed);
  103.           goto 1;
  104.           end;
  105.            IF Y>32767.0 THEN Y:=Y*(-1.0)+32767;
  106.            j:=TRUNC(Y);
  107.            GOTO 3;
  108.            END;
  109.         val(b,j,k);
  110.         if k<>0 then begin;
  111.            gotoxy(20,21);
  112.            write('Invalid Numeric Input');
  113.            sound(220);
  114.            delay(550);
  115.            nosound;
  116.            repeat; until(keypressed);
  117.            goto 1;
  118.            end;
  119. 3:        N1:=INT(I);
  120.         N2:=INT(J);
  121.         N3:=N1+N2;
  122.         N4:=N1-N2;
  123.         N5:=N2-N1;
  124.         GOTOXY(1,13);
  125.         WRITE('HEX:');
  126.         GOTOXY(1,14);
  127.         WRITE('DEC:');
  128.         GOTOXY(5,14);
  129.         WRITE(N1:10:0,N2:10:0,N3:10:0,N4:10:0,N5:10:0);
  130.         GOTOXY(11,13);
  131.         write(hexword(i));
  132.         gotoxy(21,13);
  133.         write(hexword(j));
  134.         gotoxy(31,13);
  135.         ii:=i+j;
  136.         write(hexword(ii));
  137.         gotoxy(41,13);
  138.         jj:=i-j;
  139.         write(hexword(jj));
  140.         JJ:=J-I;
  141.         gotoxy(51,13);
  142.         write(hexword(jj));
  143.         GOTOXY(1,22);
  144.         repeat;
  145.         until(keypressed);
  146.         GOTOXY(1,13);
  147.         CLREOL;
  148.         GOTOXY(1,14);
  149.         CLREOL;
  150.      end;
  151.       until (a='');
  152.       gotoxy(1,22);
  153. end.
  154.