10 #define DRIVERNAME "c64-ram.emd"
11 #elif defined(__C128__)
12 #define DRIVERNAME "c128-ram.emd"
13 #elif defined(__C16__)
14 #define DRIVERNAME "c16-ram.emd"
15 #elif defined(__CBM510__)
16 #define DRIVERNAME "cbm510-ram.emd"
17 #elif defined(__CBM610__)
18 #define DRIVERNAME "cbm610-ram.emd"
19 #elif defined(__APPLE2__)
20 #define DRIVERNAME "a2.auxmem.emd"
21 #elif defined(__APPLE2ENH__)
22 #define DRIVERNAME "a2e.auxmem.emd"
24 #define DRIVERNAME "unknown"
25 #error "Unknown target system"
29 #define FORCE_ERROR1 0
30 #define FORCE_ERROR2 0
33 #define PAGE_SIZE 128 /* Size in words */
34 #define BUF_SIZE (PAGE_SIZE + PAGE_SIZE/2)
35 static unsigned buf[BUF_SIZE];
39 static void cleanup (void)
40 /* Remove the driver on exit */
47 static void fill (register unsigned* page, register unsigned char count, register unsigned num)
49 register unsigned char i;
50 for (i = 0; i < count; ++i, ++page) {
57 static void cmp (unsigned page, register const unsigned* buf,
58 register unsigned char count, register unsigned num)
60 register unsigned char i;
61 for (i = 0; i < count; ++i, ++buf) {
63 cprintf ("\r\nData mismatch in page $%04X at $%04X\r\n"
64 "Data is $%04X (should be $%04X)\r\n",
65 page, buf, *buf, num);
83 Res = em_load_driver (DRIVERNAME);
84 if (Res != EM_ERR_OK) {
85 cprintf ("Error in em_load_driver: %u\r\n", Res);
86 cprintf ("os: %u, %s\r\n", _oserror, _stroserror (_oserror));
91 /* Get the number of available pages */
92 PageCount = em_pagecount ();
93 cprintf ("Loaded ok, page count = $%04X\r\n", PageCount);
95 /* TEST #1: em_map/em_use/em_commit */
96 cputs ("Testing em_map/em_use/em_commit");
99 cputs ("\r\n Filling ");
102 for (I = 0; I < PageCount; ++I) {
104 /* Fill the buffer and copy it to em */
105 fill (em_use (I), PAGE_SIZE, I);
108 /* Keep the user happy */
114 ((unsigned*) em_map (0x03))[0x73] = 0xFFFF;
118 /* Check all pages */
119 cputs ("\r\n Comparing ");
122 for (I = 0; I < PageCount; ++I) {
124 /* Get the buffer and compare it */
125 cmp (I, em_map (I), PAGE_SIZE, I);
127 /* Keep the user happy */
132 /* TEST #2: em_copyfrom/em_copyto. */
133 cputs ("\r\nTesting em_copyfrom/em_copyto");
135 /* We're filling now 384 bytes per run to test the copy routines with
138 PageCount = (PageCount * 2) / 3;
140 /* Setup the copy structure */
142 c.count = sizeof (buf);
144 /* Fill again all pages */
145 cputs ("\r\n Filling ");
150 for (I = 0; I < PageCount; ++I) {
152 /* Fill the buffer and copy it to em */
153 fill (buf, BUF_SIZE, I ^ 0xFFFF);
156 /* Adjust the em offset */
157 Offs = c.offs + sizeof (buf);
158 c.offs = (unsigned char) Offs;
159 c.page += (Offs >> 8);
161 /* Keep the user happy */
173 /* Check all pages */
174 cputs ("\r\n Comparing ");
179 for (I = 0; I < PageCount; ++I) {
181 /* Get the buffer and compare it */
183 cmp (I, buf, BUF_SIZE, I ^ 0xFFFF);
185 /* Adjust the em offset */
186 Offs = c.offs + sizeof (buf);
187 c.offs = (unsigned char) Offs;
188 c.page += (Offs >> 8);
190 /* Keep the user happy */
196 cprintf ("\r\nPassed!\r\n");