Annotation of generator/cpu68k/test/test-abcd.c, revision 1.1

1.1     ! root        1: #include <stdio.h>
        !             2: 
        !             3: /* SYNTAX: a.out A B Z */
        !             4: /* e.g. ./a.out 31 32 1 adds 0x31 + 0x32 with Z flag set */
        !             5: 
        !             6: typedef unsigned char uint8;
        !             7: typedef signed char sint8;
        !             8: typedef unsigned short uint16;
        !             9: typedef signed short sint16;
        !            10: typedef unsigned int uint32;
        !            11: typedef signed int sint32;
        !            12: 
        !            13: int main(int argc, char *argv[])
        !            14: {
        !            15:   uint16 a[3];
        !            16: 
        !            17:   if (argc < 3 ||
        !            18:       sscanf(argv[1], "%x", &a[0]) == 0 ||
        !            19:       sscanf(argv[2], "%x", &a[1]) == 0 ||
        !            20:       sscanf(argv[3], "%x", &a[2]) == 0) {
        !            21:     printf("Syntax: <hexval> <hexval> <xflag>\n");
        !            22:     exit(1);
        !            23:   }
        !            24: 
        !            25:   uint8 dstdata = a[0];
        !            26:   uint8 srcdata = a[1];
        !            27:   uint8 XFLAG = a[2];
        !            28:   uint8 NFLAG, VFLAG;
        !            29:   uint8 CFLAG;
        !            30: 
        !            31:   uint8 outdata;
        !            32:   uint8 outdata_low = (dstdata & 0xF) + (srcdata & 0xF) + XFLAG;
        !            33:   uint16 precalc = dstdata + srcdata + XFLAG;
        !            34:   uint16 outdata_tmp = precalc;
        !            35: 
        !            36:   if (outdata_low > 0x09)
        !            37:     outdata_tmp+= 0x06;
        !            38:   if (outdata_tmp > 0x90) {
        !            39:     outdata_tmp+= 0x60;
        !            40:     CFLAG = 1;
        !            41:     XFLAG = 1;
        !            42:   } else {
        !            43:     CFLAG = 0;
        !            44:     XFLAG = 0;
        !            45:   }
        !            46:   outdata = outdata_tmp;
        !            47:   if (outdata) printf("ZFLAG = 0\n");
        !            48:   NFLAG = ((sint8)outdata) < 0;
        !            49:   VFLAG = ((precalc & 1<<7) == 0) && (outdata & 1<<7);
        !            50:   printf("CFLAG = %d\n", CFLAG);
        !            51:   printf("XFLAG = %d\n", XFLAG);
        !            52:   printf("NFLAG = %d\n", NFLAG);
        !            53:   printf("VFLAG = %d\n", VFLAG);
        !            54:   printf("( precalc = %X outdata = %X )\n", precalc, outdata);
        !            55:   printf("%X - %X (- %X) = %X\n", dstdata, srcdata, XFLAG, outdata);
        !            56:   exit(0);
        !            57: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.