/* Conformance Test 25.0.3:  Verification of code generation for CMP instruct */

#define    DP      0x02                    /* define 1, 2, & 3 byte addresses */
#define    ABS     0x800
#define    LONG    0x123456

#include   <stdio.h>

int main (void)
  {
   int i = 0;

   asm
     {
               brl     Test
       Code:   CMP     #0xF
               CMP     DP
               CMP     DP,X
               CMP     ABS
               CMP     ABS,X
               CMP     ABS,Y
               CMP     (DP),Y
               CMP     (DP,X)
               CMP     (DP)
               CMP     DP,S
               CMP     (DP,S),Y
               CMP     LONG
               CMP     LONG,X
               CMP     [DP]
               CMP     [DP],Y
       Data:   dcb     0xC9
               dcb     0x0F
               dcb     0x00
               dcb     0xC5
               dcb     0x02
               dcb     0xD5
               dcb     0x02
               dcb     0xCD
               dcb     0x00
               dcb     0x08
               dcb     0xDD
               dcb     0x00
               dcb     0x08
               dcb     0xD9
               dcb     0x00
               dcb     0x08
               dcb     0xD1
               dcb     0x02
               dcb     0xC1
               dcb     0x02
               dcb     0xD2
               dcb     0x02
               dcb     0xC3
               dcb     0x02
               dcb     0xD3
               dcb     0x02
               dcb     0xCF
               dcb     0x56
               dcb     0x34
               dcb     0x12
               dcb     0xDF
               dcb     0x56
               dcb     0x34
               dcb     0x12
               dcb     0xC7
               dcb     0x02
               dcb     0xD7
               dcb     0x02
       Test:   ldx     #36
       Lbl1:   lda     Code,X
               cmp     Data,X
               bne     Err1
               dex
               dex
               bpl     Lbl1
               bra     Out
       Err1:   inc     i
       Out:    nop
     }

   if (i)
       goto Fail;
   printf ("Passed Conformance Test 25.0.3\n");
   return 0;

Fail:
   printf ("Failed Conformance Test 25.0.3\n");
  }
