home *** CD-ROM | disk | FTP | other *** search
/ io Programmo 23 / IOPROG_23.ISO / SOFT / ASM / BCDASM.ZIP / BCDASM / EXAMPLES / BCD.H next >
Encoding:
C/C++ Source or Header  |  1997-06-03  |  4.2 KB  |  117 lines

  1. #ifndef BCD_H           /* BCDASM header file */
  2. #define BCD_H           /* Requires 80186 CPU */
  3.  
  4. #ifndef WIN32
  5. #define bcdapi __cdecl          /* bcd16?c.lib */
  6. #else
  7. #define bcdapi __stdcall        /* bcd32fs.lib */
  8. #endif
  9. #ifndef uint
  10. typedef unsigned int    uint;
  11. #endif
  12. #ifndef byte
  13. typedef unsigned char   byte;
  14. #endif
  15. typedef char            chrA;   /* ASCII/ANSI (one-byte char) */
  16.  
  17. /* Limits of packed BCD variables */
  18. #define MIN_SIZEOF_BCD  4U
  19. #define MAX_SIZEOF_BCD  ((uint)(~(MIN_SIZEOF_BCD-1)))
  20. #define MAX_SIZEOF_XBCD ((uint)(MAX_SIZEOF_BCD >> 1))
  21.  
  22.  
  23. #ifdef __cplusplus
  24. extern "C" {
  25. #endif
  26.  
  27. /* BCDASM function prototypes */
  28. /* math */
  29. void bcdapi bcdAbs     (byte *dst, uint sz);
  30. int  bcdapi bcdNeg     (byte *dst, uint sz);
  31. int  bcdapi bcdCmp     (byte *dst, byte *src, uint sz);
  32. int  bcdapi bcdCmpz    (byte *dst, uint sz);
  33. int  bcdapi bcdAdd     (byte *dst, byte *src, uint sz);
  34. int  bcdapi bcdSub     (byte *dst, byte *src, uint sz);
  35. void bcdapi bcdImul    (byte *xdst, byte *xsrc, uint sz);
  36. int  bcdapi bcdIdiv    (byte *xdst, byte *xsrc, uint sz);
  37. int  bcdapi bcdShr     (byte *dst, uint sz, uint count);
  38. int  bcdapi bcdShl     (byte *dst, uint sz, uint count);
  39. /* transfer */
  40. void bcdapi bcdMov     (byte *dst, byte *src, uint sz);
  41. void bcdapi bcdSwap    (byte *dst, byte *src, uint sz);
  42. void bcdapi bcdLdz     (byte *dst, uint sz);
  43. void bcdapi bcdLd1     (byte *dst, uint sz);
  44. void bcdapi bcdLd100   (byte *dst, uint sz);
  45. /* conversion */
  46. void bcdapi bcdSx      (byte *xdst, byte *src, uint srcsz);
  47. int  bcdapi bcdIsbcd   (byte *dst, uint sz);
  48. int  bcdapi bcdA2p     (byte *dst, uint dstsz, chrA *pStr);
  49. uint bcdapi bcdP2a     (chrA *pStr, byte *src, uint srcsz);
  50. int  bcdapi bcdB2p     (byte *dst, uint dstsz, void *src, uint srcsz);
  51. void bcdapi bcdP2b     (void *dst, uint dstsz, byte *src, uint srcsz);
  52. void bcdapi bcdBe2le   (byte *dst, byte *src, uint srcsz);
  53. void bcdapi bcdLe2be   (byte *dst, byte *src, uint srcsz);
  54. int  bcdapi bcdU2p     (byte *dst, byte *usrc, uint srcsz);
  55. void bcdapi bcdP2u     (byte *udst, byte *src, uint srcsz);
  56. uint bcdapi bcdFmt     (chrA *pStr, uint strsz, byte *pBCD, uint sz,
  57.                         uint width, uint numDec, uint prec, byte rtJust,
  58.                         chrA signCh, chrA fillCh, chrA sepCh, chrA sepMCh);
  59.  
  60.  
  61. /* BCDUU  (for unpacked unsigned BCDs) */
  62. void bcdapi BCDUUmov   (byte *dst, byte *src, uint sz);
  63. int  bcdapi BCDUUadd   (byte *dst, byte *src, uint sz);
  64. int  bcdapi BCDUUsub   (byte *dst, byte *src, uint sz);
  65. int  bcdapi BCDUUu2p   (byte *dst, byte *src, uint srcsz);
  66. uint bcdapi BCDUUu2a   (chrA *pStr, byte *src, uint srcsz);
  67. void bcdapi BCDUUmul   (byte *xdst, byte *xsrc, uint sz);
  68.  
  69.  
  70. /* BIN2ASC */
  71. uint bcdapi bin2asc    (chrA *pStr, byte *src, uint srcsz);
  72. uint bcdapi HexN       (chrA *pStr, uint mval);
  73.  
  74.  
  75. /* CONSOLIO */
  76. int  bcdapi IsDevRedir (uint hDev);
  77. byte bcdapi GetKey     (void);
  78. uint bcdapi WriteZStr  (chrA *pStr);
  79. uint bcdapi WriteNL    (void);
  80.  
  81. #ifdef __cplusplus
  82. }
  83. #endif
  84.  
  85. /*
  86.  Function return values (void if not stated)
  87.  Fnx         < 0        == 0        > 0
  88.  bcdNeg    dst < 0    dst == 0    dst > 0
  89.  bcdCmp    dst < src  dst == src  dst > src
  90.  bcdCmpz   dst < 0    dst == 0    dst > 0
  91.  bcdAdd    n/a        No carry    Carry
  92.  bcdSub    n/a        No borrow   Borrow
  93.  bcdIdiv   n/a        DivZ/Ovf    No error
  94.  bcdShr    n/a        dst == 0    dst != 0
  95.  bcdShl    n/a        dst == 0    dst != 0
  96.  bcdIsbcd  n/a        Error       No error
  97.  bcdA2p    n/a        Error       No error
  98.  bcdP2a    n/a        n/a         String length
  99.  bcdB2p    n/a        Error       No error
  100.  bcdU2p    n/a        Error       No error
  101.  bcdFmt    n/a        Error       String length
  102.  -
  103.  BCDUUadd  n/a        No carry    Carry
  104.  BCDUUsub  n/a        No borrow   Borrow
  105.  BCDUUu2p  n/a        Error       No error
  106.  BCDUUu2a  n/a        n/a         String length
  107.  -
  108.  bin2asc   n/a        Error       String length
  109.  HexN      n/a        n/a         String length
  110.  -
  111.  IsDevRedir Error     No          Yes
  112.  GetKey    n/a        Ascii character
  113.  WriteZStr n/a        No. of bytes written to stdout
  114.  WriteNL   n/a        No. of bytes written to stdout
  115. */
  116.  
  117. #endif  /* BCD_H */