source: buchla-68k/lib700/micons.c@ e102943

Last change on this file since e102943 was ace9ee7, checked in by Thomas Lopatic <thomas@…>, 7 years ago

Fix shift count overflow.

  • Property mode set to 100644
File size: 2.2 KB
Line 
1/*
2 =============================================================================
3 micons.c -- motorola / intel format conversion functions
4 Version 3 -- 1987-06-11 -- D.N. Lynx Crowe
5
6 short
7 micons(wi)
8 short wi;
9
10 Convert between motorola and intel format for a short.
11
12 int
13 miconi(wi)
14 int wi;
15
16 Convert between motorola and intel format for an int.
17
18 long
19 miconl(wi)
20 long wi;
21
22 Convert between motorola and intel format for a long.
23 =============================================================================
24*/
25
26#include "ram.h"
27
28#define TESTER 0 /* define non-zero for a test program */
29
30/*
31 =============================================================================
32 micons(wi) -- Convert between motorola and intel format for a short.
33 =============================================================================
34*/
35
36int16_t micons(int16_t wi)
37{
38 return((int16_t)( ((wi << 8) & 0xFF00) | ((wi >> 8) & 0x00FF) ) );
39}
40
41/*
42 =============================================================================
43 miconi(wi) -- Convert between motorola and intel format for an int.
44 =============================================================================
45*/
46
47int16_t miconi(int16_t wi)
48{
49 return(((wi << 8) & 0xFF00) | ((wi >> 8) & 0x00FF));
50}
51
52/*
53 =============================================================================
54 miconl(wi) -- Convert between motorola and intel format for a long.
55 =============================================================================
56*/
57
58int32_t miconl(int32_t wi)
59{
60 return( ((wi << 24) & 0xFF000000L) | ((wi << 8) & 0x00FF0000L) |
61 ((wi >> 8) & 0x0000FF00L) | ((wi >> 24) & 0x000000FFL) );
62}
63
64#if TESTER
65
66#include "ram.h"
67
68/*
69 =============================================================================
70 test program for micon functions
71 =============================================================================
72*/
73
74main()
75{
76 printf("micons(0x1234) returned 0x%04x\n", micons(0x1234));
77
78 if (sizeof (int) == 4)
79 printf("miconi(0x1234) returned 0x%04x\n", miconi(0x1234));
80 else
81 printf("miconi(0x12345678L) returned 0x%08lx\n",
82 miconi(0x12345678L));
83
84 printf("miconl(0x12345678L) returned 0x%08lx\n",
85 miconl(0x12345678L));
86}
87
88#endif
89
Note: See TracBrowser for help on using the repository browser.