/* Special Conformance Test 25.0.2: Verification of long addressing in mini- */ /* assembler when using large memory model */ /* */ /* Other files needed: spc25.2.exec - EXEC file which separately compiles, */ /* links, and executes the two files */ /* comprising this test */ /* spc25.2.1.cc - Separately compiled file which */ /* contains global data and routines */ /* accessed by the main program */ #pragma memorymodel 1 #include static int i1 = 33; extern char ch0 []; extern int i0 []; extern char * Init_Ch (void); extern int * Init_Int (int i []); int main (void) { char *chPtr; int *iPtr; int count = 0; /* Call routines to initialize global arrays. Verify initialization. */ count++; chPtr = Init_Ch (); if ((*chPtr != 'e') || (chPtr [1] != 'd') || (chPtr [2] != 'c')) goto Fail; count++; iPtr = Init_Int (i0); if ((*iPtr != 10) || (iPtr [1] != 20) || (iPtr [2] != 30)) goto Fail; asm { bra Test uch1: dcb 't' /* Test expressions */ Test: lda i1 cmp #33 bne Err lda uch1 and #0x00FF cmp #0x0074 bne Err lda [iPtr] cmp #10 beq Out Err: inc count jmp Fail } Out: printf ("Passed Conformance Test 25.0.2\n"); return 0; Fail: printf ("count = %d\n", count); printf ("Failed Conformance Test 25.0.2\n"); }