#!/usr/local/bin/tcc -run #include #include #define N_DBG_MAX (1024 * 6) char bb_dbg_buf[N_DBG_MAX]; int cw_dbg_cnt, bw_dbg_rdptr; int s_get_logsize ( int cnt ) { int size; int i; size = 0; for ( i = 0; i < 2; i++, cnt++ ) { if ( cnt >= N_DBG_MAX ) { cnt = 0; } size |= ( ( short int ) bb_dbg_buf[cnt] << ( i * 8 ) ); } return size; } int s_get_termlog ( int no, int *rdpnt ) { int pnt; int size; int ret; pnt = cw_dbg_cnt; do { if ( pnt < 2 ) { pnt = N_DBG_MAX - ( 2 - pnt ); } else { pnt -= 2; } size = s_get_logsize ( pnt ); if ( size == 0 ) { ret = 0; break; } else { ret = size; } if ( pnt < size ) { pnt = N_DBG_MAX - ( size - pnt ); } else { pnt -= size; } *rdpnt = pnt; } while ( no-- > 0 ); return ret; } void main(void) { int i size; cw_dbg_cnt = 0; bw_dbg_rdptr = 0; for (i = 0; i < N_DBG_MAX / (3 + 6); i++) { bb_dbg_buf[i * 9 + 0] = 'A'; bb_dbg_buf[i * 9 + 1] = 'B'; bb_dbg_buf[i * 9 + 2] = 'C'; bb_dbg_buf[i * 9 + 3] = 0; bb_dbg_buf[i * 9 + 4] = 0; bb_dbg_buf[i * 9 + 5] = 0; bb_dbg_buf[i * 9 + 6] = 0; bb_dbg_buf[i * 9 + 7] = 7; bb_dbg_buf[i * 9 + 8] = 0; } cw_dbg_cnt = i * 9; size = (N_DBG_MAX + cw_dbg_cnt - bw_dbg_rdptr) % N_DBG_MAX printf("%d\n", N_DBG_MAX - size); }