|
|
1.1 ! root 1: /* Builds with Borland C++ for DOS, v3.1 */ ! 2: ! 3: #include <dos.h> ! 4: #include <stdio.h> ! 5: #include <memory.h> ! 6: #include <string.h> /* _fstrncpy */ ! 7: #include "fossdefs.h" ! 8: ! 9: void main(int argc, char** argv) ! 10: { ! 11: BYTE far* bp; ! 12: fossil_info_t info; ! 13: WORD ax,bx; ! 14: char id_string[128]; ! 15: union REGS regs; ! 16: struct SREGS sregs; ! 17: ! 18: printf("\nChecking FOSSIL interrupt vector (interrupt 0x%02X)\n", FOSSIL_INTERRUPT); ! 19: bp=(void far*)_dos_getvect(FOSSIL_INTERRUPT); ! 20: ! 21: printf("FOSSIL interrupt vector: 0x%08lX\n",bp); ! 22: printf("Signature: 0x%04X (should be 0x%04X)\n", *(WORD far*)(bp+6), FOSSIL_SIGNATURE); ! 23: printf("Highest function supported: 0x%02X\n", *(BYTE far*)(bp+8)); ! 24: ! 25: ! 26: printf("\nInitializing FOSSIL\n"); ! 27: regs.h.ah = FOSSIL_FUNC_INIT; ! 28: int86(FOSSIL_INTERRUPT, ®s, ®s); ! 29: printf("AX=0x%04X (should be 0x%04X)\n", regs.x.ax, FOSSIL_SIGNATURE); ! 30: printf("BX=0x%04X (FOSSIL rev %u, highest function supported: 0x%02X)\n" ! 31: ,regs.x.bx, regs.h.bh, regs.h.bl); ! 32: ! 33: printf("\nGetting FOSSIL Information\n"); ! 34: printf("sizeof(info)=%u\n",sizeof(info)); ! 35: memset(&info,0,sizeof(info)); ! 36: ! 37: /** ! 38: AH = 1Bh Return information about the driver ! 39: ! 40: Parameters: ! 41: Entry: CX = Size of user info buffer in bytes ! 42: DX = Port number ! 43: ES = Segment of user info buffer ! 44: DI = Offset into ES of user info buffer ! 45: Exit: AX = Number of bytes actually transferred ! 46: ! 47: **/ ! 48: ! 49: bp = (BYTE far*)&info; ! 50: regs.h.ah = FOSSIL_FUNC_GET_INFO; ! 51: regs.x.cx = sizeof(info); ! 52: regs.x.dx = 0; ! 53: sregs.es = FP_SEG(bp); ! 54: regs.x.di = FP_OFF(bp); ! 55: ! 56: int86x(FOSSIL_INTERRUPT, ®s, ®s, &sregs); ! 57: printf("AX=0x%04X (%u)\n",regs.x.ax,regs.x.ax); ! 58: printf("Information structure size: %u\n", info.info_size); ! 59: printf("FOSSIL specific revision: %u\n", info.curr_fossil); ! 60: printf("FOSSIL driver revision: %u\n", info.curr_rev); ! 61: printf("ID string: 0x%08lX\n",info.id_string); ! 62: if(info.id_string) { ! 63: _fstrncpy(id_string,(char far *)info.id_string,sizeof(id_string)); ! 64: printf("ID string: %s\n", id_string); ! 65: } ! 66: printf("Receive buffer size: %u\n", info.inbuf_size); ! 67: printf("Receive buffer space: %u\n",info.inbuf_free); ! 68: printf("Transmit buffer size: %u\n", info.outbuf_size); ! 69: printf("Transmit buffer space: %u\n",info.outbuf_free); ! 70: printf("Screen width: %u\n",info.screen_width); ! 71: printf("Screen height: %u\n", info.screen_height); ! 72: printf("Baud rate: 0x%02X (%u %c-%u-%u)\n" ! 73: ,info.baud_rate ! 74: ,fossil_baud_rate[(info.baud_rate&FOSSIL_BAUD_RATE_MASK)>>FOSSIL_BAUD_RATE_SHIFT] ! 75: ,fossil_parity[(info.baud_rate&FOSSIL_PARITY_MASK)>>FOSSIL_PARITY_SHIFT] ! 76: ,fossil_data_bits[(info.baud_rate&FOSSIL_DATA_BITS_MASK)>>FOSSIL_DATA_BITS_SHIFT] ! 77: ,fossil_stop_bits[(info.baud_rate&FOSSIL_STOP_BITS_MASK)>>FOSSIL_STOP_BITS_SHIFT] ! 78: ); ! 79: ! 80: if(argc>1 && stricmp(argv[1],"pause")==0) { ! 81: printf("\nHit enter to continue..."); ! 82: getchar(); ! 83: } ! 84: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.