-/* The syntax is "OSZC" where each character is one of the following:
- - = flag unchanged
- 0 = flag cleared
- 1 = flag set
- ? = flag undefined
- x = flag set (any letter will do, use it for hints :). */
-
-static void
-store_flags (RX_Opcode_Decoded * rx, char * str)
-{
- int i, mask;
- rx->flags_0 = 0;
- rx->flags_1 = 0;
- rx->flags_s = 0;
-
- for (i = 0; i < 4; i++)
- {
- mask = 8 >> i;
- switch (str[i])
- {
- case 0:
- abort ();
- case '-':
- break;
- case '0':
- rx->flags_0 |= mask;
- break;
- case '1':
- rx->flags_1 |= mask;
- break;
- case '?':
- break;
- default:
- rx->flags_0 |= mask;
- rx->flags_s |= mask;
- break;
- }
- }
-}
+#define xO 8
+#define xS 4
+#define xZ 2
+#define xC 1
+
+#define F_____
+#define F___ZC rx->flags_0 = rx->flags_s = xZ|xC;
+#define F__SZ_ rx->flags_0 = rx->flags_s = xS|xZ;
+#define F__SZC rx->flags_0 = rx->flags_s = xS|xZ|xC;
+#define F_0SZC rx->flags_0 = xO|xS|xZ|xC; rx->flags_s = xS|xZ|xC;
+#define F_O___ rx->flags_0 = rx->flags_s = xO;
+#define F_OS__ rx->flags_0 = rx->flags_s = xO|xS;
+#define F_OSZ_ rx->flags_0 = rx->flags_s = xO|xS|xZ;
+#define F_OSZC rx->flags_0 = rx->flags_s = xO|xS|xZ|xC;