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

Last change on this file since ace9ee7 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
RevLine 
[f40a309]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
[b28a12e]26#include "ram.h"
[6262b5c]27
[f40a309]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
[7258c6a]36int16_t micons(int16_t wi)
[f40a309]37{
[7258c6a]38 return((int16_t)( ((wi << 8) & 0xFF00) | ((wi >> 8) & 0x00FF) ) );
[f40a309]39}
40
41/*
42 =============================================================================
43 miconi(wi) -- Convert between motorola and intel format for an int.
44 =============================================================================
45*/
46
[7258c6a]47int16_t miconi(int16_t wi)
[f40a309]48{
[ace9ee7]49 return(((wi << 8) & 0xFF00) | ((wi >> 8) & 0x00FF));
[f40a309]50}
51
52/*
53 =============================================================================
54 miconl(wi) -- Convert between motorola and intel format for a long.
55 =============================================================================
56*/
57
[7258c6a]58int32_t miconl(int32_t wi)
[f40a309]59{
60 return( ((wi << 24) & 0xFF000000L) | ((wi << 8) & 0x00FF0000L) |
61 ((wi >> 8) & 0x0000FF00L) | ((wi >> 24) & 0x000000FFL) );
62}
63
64#if TESTER
65
[b28a12e]66#include "ram.h"
[f40a309]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
[6262b5c]89
Note: See TracBrowser for help on using the repository browser.