|
|
1.1 ! root 1: #include <stdio.h> ! 2: #include <time.h> ! 3: ! 4: void ! 5: X(struct tm& tm) ! 6: { ! 7: printf("450007f8;l,80%02x%02x%02x\n", ! 8: tm.tm_sec, tm.tm_min, tm.tm_hour); ! 9: printf("450007fc;l,%02x%02x%02x%02x\n", ! 10: tm.tm_wday, tm.tm_mday, tm.tm_mon, tm.tm_year); ! 11: printf("450007f8;,0\n"); ! 12: printf("@1010\n"); ! 13: printf("450007f8\n"); ! 14: return; ! 15: } ! 16: ! 17: // x が正常な BCD でかつ start <= x <= end ならば true ! 18: bool ! 19: BCDCheck(int x, int start, int end) ! 20: { ! 21: int xh = (x >> 4) & 0xf; ! 22: int xl = x & 0xf; ! 23: ! 24: if ((0 <= xh && xh <= 9) && (0 <= xl && xl <= 9)) { ! 25: int v = xh * 10 + xl; ! 26: return (start <= v && v <= end); ! 27: } ! 28: return false; ! 29: } ! 30: ! 31: ! 32: int ! 33: main(int ac, char *av[]) ! 34: { ! 35: struct tm tm {}; ! 36: ! 37: // 0 リセット ! 38: X(tm); ! 39: ! 40: // 秒テスト ! 41: for (int i = 0; i <= 0x7f; i++) { ! 42: if (BCDCheck(i, 0, 58)) { ! 43: continue; ! 44: } ! 45: tm.tm_sec = i; ! 46: X(tm); ! 47: } ! 48: tm.tm_sec = 0x59; ! 49: ! 50: // 分テスト ! 51: for (int i = 0; i <= 0x7f; i++) { ! 52: if (BCDCheck(i, 0, 58)) { ! 53: continue; ! 54: } ! 55: tm.tm_min = i; ! 56: X(tm); ! 57: } ! 58: tm.tm_min = 0x59; ! 59: ! 60: // 時テスト ! 61: for (int i = 0; i <= 0x3f; i++) { ! 62: if (BCDCheck(i, 0, 22)) { ! 63: continue; ! 64: } ! 65: tm.tm_hour = i; ! 66: X(tm); ! 67: } ! 68: tm.tm_hour = 0x23; ! 69: ! 70: // 曜日テスト ! 71: for (int i = 0; i <= 7; i++) { ! 72: tm.tm_wday = i; ! 73: X(tm); ! 74: } ! 75: ! 76: // 年月日テスト ! 77: for (int y = 0; y <= 1; y++) { ! 78: tm.tm_year = y; ! 79: for (int m = 0; m <= 0x1f; m++) { ! 80: tm.tm_mon = m; ! 81: for (int d = 0; d <= 0x3f; d++) { ! 82: if (BCDCheck(d, 2, 27)) { ! 83: continue; ! 84: } ! 85: tm.tm_mday = d; ! 86: X(tm); ! 87: } ! 88: } ! 89: } ! 90: return 0; ! 91: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.