fastlynx.h
上传用户:xiaoan1112
上传日期:2013-04-11
资源大小:19621k
文件大小:5k
源码类别:

操作系统开发

开发平台:

Visual C++

  1. #ifndef TRUE
  2. #define TRUE    1
  3. #endif
  4. #ifndef FALSE
  5. #define FALSE   0
  6. #endif
  7. #define MAX_PORTS 8
  8. #pragma pack(1)
  9. typedef unsigned char byte;
  10. typedef unsigned int  word;
  11. #define SERIAL_PORT         0
  12. #define PARALLEL_PORT       1
  13. #define  PARALLEL_NORMAL   0
  14. #define  PARALLEL_TURBO    1
  15. const int _near fx_port;            // -1 if not connected, else current port index.
  16. const byte _near fx_baud;           // Current serial baud rate (index to baud_table)
  17. const byte _near fx_serial_7_wire;
  18. const byte _near fx_send_variable;
  19. const byte _near fx_recv_variable;
  20. const byte _near fx_parallel_speed; // Current parallel operating speed
  21. const byte fx_max_serial_baud;
  22. word fx_max_serial_block;
  23. byte fx_error_checking_mode;     // Set to ECM_ALLOW_CHECKSUM or ECM_FORCE_CRC
  24. byte fx_force_variable;
  25. #ifdef _PAR18
  26. #define  PARALLEL_11_WIRE        0
  27. #define  PARALLEL_18_WIRE        1
  28. #define  PARALLEL_BIDIRECTIONAL  2
  29. const byte _near fx_parallel_mode;  // Indicates current parallel operating mode.
  30. byte _near fx_disable_par18;        // Set to TRUE to disable parallel 18 wire
  31. #endif
  32. enum fx_errno {
  33.     FX_ERR_TIMEOUT = -1,         // Timeout during initial packet negotiation
  34.     FX_ERR_CRC     = -2,         // Packet completed, but got a CRC / Checksum error
  35.     FX_ERR_FAIL    = -3          // Packet failed to complete
  36. };
  37. const enum fx_errno _near fx_errno;   // Set only on failure of FxSend or FxReceive
  38. #define BAUD_1200       0
  39. #define BAUD_2400       1
  40. #define BAUD_4800       2
  41. #define BAUD_9600       3
  42. #define BAUD_19200      4
  43. #define BAUD_38400      5
  44. #define BAUD_57600      6
  45. #define BAUD_115200     7
  46. #ifdef FX_MAIN
  47. char *baud_table[] = {
  48.     "1200  ",
  49.     "2400  ",
  50.     "4800  ",
  51.     "9600  ",
  52.     "19200 ",
  53.     "38400 ",
  54.     "57600 ",
  55.     "115200"
  56. };
  57. #else
  58. extern char *baud_table[];
  59. #endif
  60. int _near fx_num_ports;               // Number of ports in FxPortInfo array.
  61. struct FxBiosInfo {
  62.     byte num_serial;
  63.     byte num_parallel;
  64.     word serial_address[4];
  65.     word parallel_address[3];
  66. };
  67. #define PF_BAD_PORT     0x80
  68. struct FxPortInfo {
  69.     byte type;
  70.     byte biosnum;
  71.     word address;
  72.     const byte flags;   // Set to PF_BAD_PORT by FastLynxInit if hardware error.
  73. };
  74. struct FxPortInfo _near FxPortInfo[MAX_PORTS];
  75. #define ECM_FORCE_CRC         0
  76. #define ECM_ALLOW_CHECKSUM    8 // Note: must correpond to internal flag bit.
  77. #define MAX_SERIAL_BLOCK    8 * 1024
  78. struct FxSettings {
  79.     word time_out;  // Timeout value in ticks for FxConnect() and FxListen().
  80.     byte error_checking_mode;   // ECM_CRC or ECM_CHECKSUM
  81.     word max_serial_block;
  82.     byte max_serial_baud;
  83.     word allow_7_wire;          // TRUE to enable 7 wire
  84. };
  85. extern struct FxSettings _near FxSettings;
  86. typedef unsigned long FILESIZE;
  87. typedef unsigned long FILEDATE;
  88. struct dir_entry {
  89.     byte attrib;        /* Attribute of matching file        */
  90.     FILEDATE date;      /* Time stamp of file                */
  91.     FILESIZE size;      /* Size of file in bytes             */
  92.     char name[13];      /* Name of matching file             */
  93. };
  94. /*** Bootstrap loader command codes. ***/
  95. #define CLONE_CREATE_CMD  1
  96. #define CLONE_WRITE_CMD   2
  97. #define CLONE_CLOSE_CMD   3
  98. #define CLONE_EXIT_CMD    4
  99. #define CLONE_UNKNOWN_CMD 5
  100. /*** Structure for packets sent to clone bootstrap loader. ***/
  101. #define MAX_CLONE_DATA      2048
  102. struct clone_cmd {
  103.     byte command;
  104.     char ok_msg[80];
  105.     char error_msg[80];
  106.     struct dir_entry dir;
  107.     unsigned cnt;           // Number of bytes of data to write.
  108.     byte   data[MAX_CLONE_DATA];
  109. };
  110. /*** Function prototypes. ***/
  111. void _far _fastcall FxQueryBios(struct FxBiosInfo _near *bios_info);
  112. void _far _pascal FxInit(void); 
  113. // Call once during program init.
  114. void _far _pascal FxExit(void);       // MUST be called before exiting!
  115. int  _far _pascal FxConnect(void);
  116. // FxConnect returns either:
  117. //  Success (1) -  Connected
  118. //  Failure (-1) - Timed out - can retry on next call
  119. //  Continue (0) - Will continue on next call
  120. int  _far _pascal FxListen(void);
  121. // FxStartIdle should be called to restart the idler after a call to FxSend or
  122. // FxReceive, both of which stop the idler.
  123. void _far _pascal FxStartIdle(void);
  124. void _far _pascal FxDisconnect(void);
  125. #define CHECK_ABORT_WAITING     0
  126. #define CHECK_ABORT_DONE        1
  127. void _far _fastcall FxSetCheckAbort(int (_far _fastcall *CheckAbort)(word elapsed_ticks, byte status));
  128. #define SYNC_NO_TIMEOUT         0xFFFF
  129. #define SYNC_ONE_SECOND             18
  130. void _far _fastcall FxSyncTimeout(word timeout);
  131. int _far _fastcall FxSendWord(word command);
  132. int _far _fastcall FxSend(void const _far * buf, word length);
  133. word _far _fastcall FxReceive(void _far *buf, word max_len);
  134. void _far _pascal FxShowBaud (void (_far _pascal *ShowBaud)(void));
  135. int _far _fastcall FxCloneInit(int port_index, int remote_port, char const _near *loading_bootstrap_msg, int (_far _cdecl *CheckAbort)(void));
  136. int _far _fastcall FxBootstrapInit(void);
  137. int _far _fastcall FxSendBootstrap(int num_bytes);
  138. int _far _pascal FxBootstrapVerify(void);
  139. int _far _pascal FxStartBootstrap(void);
  140. int _far _fastcall FxSendSerialBlock(void const _far * buf, word length);
  141. int _far _pascal FxCloneExit(void);
  142. int _far _fastcall FxSetBaud(byte BaudIndex, word PortAddress);
  143. #pragma pack()