|
|
1.1 ! root 1: #include "udc.h" ! 2: #define SCRATCH CMD_R ! 3: #define TSTBLK 5010 ! 4: ! 5: extern long Probe, iob0, iob1, iob2, iob3, iob4; ! 6: long u_err; ! 7: ! 8: /* Routine to exercise UDC ! 9: */ ! 10: u_ex() ! 11: { ! 12: Probe = 1; ! 13: u_probe(CMD_R); ! 14: u_probe(CMD_F); ! 15: Probe = 0; ! 16: u_ex1(1); ! 17: u_ex1(2); ! 18: u_ex1(3); ! 19: if (!u_err) writes("\nUDC passed..\n"); ! 20: else writes("\nUDC failed..\n"); ! 21: } ! 22: ! 23: u_ex1(factor) ! 24: long factor; ! 25: { register long ix, pat, *sptr, *dptr, blk, loop; ! 26: unsigned short *s, *d; ! 27: char sdev; ! 28: ! 29: sdev = SCRATCH; /* Play on the removable */ ! 30: blk = TSTBLK; /* Read write test from block no. */ ! 31: ! 32: pat = 0xababab00; /* Pattern */ ! 33: sptr = &iob0; /* Source buffer */ ! 34: dptr = &iob3; /* Destination buffer */ ! 35: ! 36: for(u_err=loop=0;loop<40;loop++) ! 37: { ! 38: /* initialize pattern in source buffer */ ! 39: for (ix=0; ix<(BLKSIZ/4)*factor; ix++) { ! 40: sptr[ix] = pat + ix; /* init. pattern in source buffer */ ! 41: dptr[ix] = 0; /* Clear destination buffer */ ! 42: } ! 43: /* Write 1 block of data */ ! 44: if (disk_rw(WRITE,sdev,blk,factor,&iob0)==0) { u_err=1; return(0); } ! 45: ! 46: /* Read 1 block of data */ ! 47: if (disk_rw(READ,sdev,blk,factor,&iob3)==0) { u_err=1; return(0); } ! 48: ! 49: s = (unsigned short *)&iob0; /* Source buffer */ ! 50: d = (unsigned short *)&iob3; /* Destination buffer */ ! 51: for (ix=0; ix<(BLKSIZ/2)*factor; ix++) { ! 52: if (s[ix] != d[ix]) { ! 53: writes("\nExpected "); ! 54: writeh(s[ix] & 0xffff); ! 55: writes(" , actual "); writeh(d[ix] & 0xffff); ! 56: writes(", address "); writeh(&d[ix]); ! 57: u_err = 1; ! 58: } ! 59: } ! 60: if (u_err) loop = 0; /* If error then loop forever */ ! 61: } ! 62: } ! 63: ! 64: ! 65: /* routine to probe CMD disk ! 66: */ ! 67: u_probe(sdev) ! 68: char sdev; ! 69: { register long *dptr, blk, inc; ! 70: ! 71: inc = 200; ! 72: blk = 0; ! 73: while (inc != 1) { ! 74: for(;;blk += inc) { /* Read 1 block (1K) of data */ ! 75: if (disk_rw(READ,sdev,blk,1,&iob0)==0) ! 76: { blk -= inc; break; } ! 77: } ! 78: inc /= 2; ! 79: } ! 80: if (sdev == CMD_F) writes("\n** CMD fixed has "); ! 81: else writes("\n** CMD removable has "); ! 82: writed(blk); writes(" Kbytes\n"); ! 83: ! 84: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.