// -------------------------------------------------------------------- // Call the appropriate routine // -------------------------------------------------------------------- // Look for the help command if (!StrCaselessCompare (argv[0], "help") || !StrCaselessCompare (argv[0], "?")) { // If asking about a particular command, get extended help (??) if (argc > 1) { argv[0] = argv[1]; argv[1] = "??"; } // Else, display 1 line help (?) else { CharPtr helpP; helpP = "?"; for (i = 0; i < NumCommands; i++) { argv[0] = CmdTable[i].nameP; argv[1] = helpP; (CmdTable[i].procP) (2, argv); } printf ("\n"); goto Exit; } } if (!StrCaselessCompare(argv[0], "h")){ // ナイトライダーLED DWord dwCsBase, dwCsSize; CharPtr ptrCard; Err err; int i, j, k, l; char c=0; if (( err = HsCardAttrGet(1, hsCardAttrCsBase, &dwCsBase) ) != 0){ printf("HsCardAttrGet CsBase Error\n"); goto CardErr; } else printf("CsBase:%lx\n", dwCsBase); if (( err = HsCardAttrGet(1, hsCardAttrCsSize, &dwCsSize) ) != 0){ printf("HsCardAttrGet CsSize Error\n"); goto CardErr; } else printf("CsSize:%lx\n", dwCsSize); for (i=0; i<10; i++) for (j=0; j<=13; j++){ switch(j){ case 0: c = 0x01; break; case 1: c = 0x02; break; case 2: c = 0x04; break; case 3: c = 0x08; break; case 4: c = 0x10; break; case 5: c = 0x20; break; case 6: c = 0x40; break; case 7: c = 0x80; break; case 8: c = 0x40; break; case 9: c = 0x20; break; case 10: c = 0x10; break; case 11: c = 0x08; break; case 12: c = 0x04; break; case 13: c = 0x02; break; default: c=0; } ptrCard = (char*)(dwCsBase + dwCsSize); *(ptrCard) = c; // ptrCard = (char*)(dwCsBase); // *(ptrCard) = c; for (l=0; l<5; l++) for (k=0; k<10000; k++); } *(ptrCard) = 0x81; CardErr: goto Exit; } else if (!StrCaselessCompare(argv[0], "i")) // CFアトリビュート読み出し { DWord dwCsBase, dwCsSize; WordPtr ptrWord; Err err; int i, j; char c[8]; long d1, d2; if (( err = HsCardAttrGet(1, hsCardAttrCsBase, &dwCsBase) ) != 0){ printf("HsCardAttrGet CsBase Error\n"); goto CardErr2; } else printf("CsBase:%lx\n", dwCsBase); if (( err = HsCardAttrGet(1, hsCardAttrCsSize, &dwCsSize) ) != 0){ printf("HsCardAttrGet CsSize Error\n"); goto CardErr2; } else printf("CsSize:%lx\n", dwCsSize); #define A23OFFSET (1<<23) // ptrCard = (char*)(dwCsBase); // *(ptrCard) = c; // *(ptrCard) = 0x00; ptrWord = (Word*)(dwCsBase); for (i=0; i<10; i++) { // printf("%X:",i*8); d1 = d2 = 0; for (j=0; j<4; j++) { c[j] = *(ptrWord++); d1 = (d1<<8) + (c[j]&0xff); } for (j=4; j<8; j++) { c[j] = *(ptrWord++); d2 = (d2<<8) + (c[j]&0xff); } printf("%lX %lX ", d1, d2); for (j=0; j<8; j++) if (c[j] >= 0x20) printf("%c", c[j]); else printf("."); printf("\n"); } CardErr2: goto Exit; } // Else, look for this command for (i = 0; i < NumCommands; i++) { if (!StrCaselessCompare (argv[0], CmdTable[i].nameP)) { DWord result; result = (CmdTable[i].procP) (argc, argv); // Print ack with error code and string if (result != appCmdResultQuiet) { printf ("%sACK %s %08lX ", appRespPrefix, argv[0], result); PrvPrintErrorStr (result); printf ("\n"); } goto Exit; } } // Not found printf ("%sACK %s %08lX Command not found\n", appRespPrefix, argv[0], 0xFFFFFFFF); Exit: if (cmdBufP) MemPtrFree (cmdBufP); }