⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ds400rom.c

📁 Small Device C Compiler 面向Inter8051
💻 C
📖 第 1 页 / 共 2 页
字号:
// Interface to the DS80C400 ROM functions. Largely based on code released// by Dallas, hence the following copyright.// ---------------------------------------------------------------------------//  Copyright (C) 2003 Dallas Semiconductor Corporation, All Rights Reserved.// //  Permission is hereby granted, free of charge, to any person obtaining a//  copy of this software and associated documentation files (the "Software"),//  to deal in the Software without restriction, including without limitation//  the rights to use, copy, modify, merge, publish, distribute, sublicense,//  and/or sell copies of the Software, and to permit persons to whom the//  Software is furnished to do so, subject to the following conditions:////  The above copyright notice and this permission notice shall be included//  in all copies or substantial portions of the Software.////  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS//  OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF//  MERCHANTABILITY,  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.//  IN NO EVENT SHALL DALLAS SEMICONDUCTOR BE LIABLE FOR ANY CLAIM, DAMAGES//  OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,//  ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR//  OTHER DEALINGS IN THE SOFTWARE.////  Except as contained in this notice, the name of Dallas Semiconductor//  shall not be used except as stated in the Dallas Semiconductor//  Branding Policy.// ---------------------------------------------------------------------------#include <stdio.h>#include <ds400rom.h>// ROM globals, taken from startup400.a51data unsigned char at 0x68 DSS_wos_crit_count;data unsigned int at 0x6b DSS_timerReload;data unsigned char at 0x6d DSS_curr_pc[3];data unsigned char at 0x72 DSS_sched[3];data unsigned char at 0x74 DSS_ms_count[5];data unsigned char at 0x7b DSS_hb_chandle[5];    // Register bank 3 equates.#define R0_B3     0x18#define R1_B3     0x19#define R2_B3     0x1A#define R3_B3     0x1B#define R4_B3     0x1C#define R5_B3     0x1D#define R6_B3     0x1E#define R7_B3     0x1F// The top of the redirect function table in RAM.#define CALL_TABLE_TOP	256    // The bank the ROM is stored in.  Should be 0FFh for production// 400's.  Change this value when running with a debug ROM.#define ROM_BANK	0xFF// The address of the ROM export table is stored// at (ROM_BANK << 16) | ROM_EXPORTTABLE_OFFS#define ROM_EXPORTTABLE_OFFS 	2//// Each entry in the ROM export table is 3 bytes.//#define ROMXT_ENTRYSIZE      3//// The number of functions in the ROM export table is stored// first in the export table.//#define ROMXT_NUMFUNCTIONS     (0 * ROMXT_ENTRYSIZE)//// ROM EXPORT TABLE FUNCTIONS (denoted with ROMXT)//// UTILITY functions #define ROMXT_CRC16                     (1 * ROMXT_ENTRYSIZE) //#define ROMXT_MEM_CLEAR_16              (2 * ROMXT_ENTRYSIZE) //#define ROMXT_MEM_COPY_16               (3 * ROMXT_ENTRYSIZE) //#define ROMXT_MEM_COMPARE               (4 * ROMXT_ENTRYSIZE) //#define ROMXT_ADD_DPTR1_16              (5 * ROMXT_ENTRYSIZE) // not implemented for C compiler#define ROMXT_ADD_DPTR2_16              (6 * ROMXT_ENTRYSIZE) // not implemented for C compiler#define ROMXT_SUB_DPTR1_16              (7 * ROMXT_ENTRYSIZE) // not implemented for C compiler#define ROMXT_SUB_DPTR2_16              (8 * ROMXT_ENTRYSIZE) // not implemented for C compiler#define ROMXT_GETPSEUDORANDOM           (9 * ROMXT_ENTRYSIZE) //// MEMORY MGR#define ROMXT_KERNELMALLOC              (10 * ROMXT_ENTRYSIZE) // not exposed#define ROMXT_KERNELFREE                (11 * ROMXT_ENTRYSIZE) // not exposed#define ROMXT_MM_MALLOC                 (12 * ROMXT_ENTRYSIZE) // exposed as redirected function#define ROMXT_MM_MALLOC_DIRTY           (13 * ROMXT_ENTRYSIZE) // exposed as redirected function#define ROMXT_MM_FREE                   (14 * ROMXT_ENTRYSIZE) // exposed as redirected function#define ROMXT_MM_DEREF                  (15 * ROMXT_ENTRYSIZE) // exposed as redirected function#define ROMXT_GETFREERAM                (16 * ROMXT_ENTRYSIZE) // exposed as redirected function// SOCKET functions#define ROMXT_ROM_SOCKET                (17 * ROMXT_ENTRYSIZE) //#define ROMXT_ROM_CLOSESOCKET           (18 * ROMXT_ENTRYSIZE) //#define ROMXT_ROM_SENDTO                (19 * ROMXT_ENTRYSIZE) //#define ROMXT_ROM_RECVFROM              (20 * ROMXT_ENTRYSIZE) //#define ROMXT_ROM_CONNECT               (21 * ROMXT_ENTRYSIZE) //#define ROMXT_ROM_BIND                  (22 * ROMXT_ENTRYSIZE) //#define ROMXT_ROM_LISTEN                (23 * ROMXT_ENTRYSIZE) //#define ROMXT_ROM_ACCEPT                (24 * ROMXT_ENTRYSIZE) //#define ROMXT_ROM_RECV                  (25 * ROMXT_ENTRYSIZE) //#define ROMXT_ROM_SEND                  (26 * ROMXT_ENTRYSIZE) //#define ROMXT_ROM_GETSOCKOPT            (27 * ROMXT_ENTRYSIZE) //#define ROMXT_ROM_SETSOCKOPT            (28 * ROMXT_ENTRYSIZE) //#define ROMXT_ROM_GETSOCKNAME           (29 * ROMXT_ENTRYSIZE) //#define ROMXT_ROM_GETPEERNAME           (30 * ROMXT_ENTRYSIZE) //#define ROMXT_ROM_CLEANUP               (31 * ROMXT_ENTRYSIZE) //#define ROMXT_ROM_AVAIL                 (32 * ROMXT_ENTRYSIZE) //#define ROMXT_ROM_JOIN                  (33 * ROMXT_ENTRYSIZE) //#define ROMXT_ROM_LEAVE                 (34 * ROMXT_ENTRYSIZE) //#define ROMXT_ROM_PING                  (35 * ROMXT_ENTRYSIZE) //#define ROMXT_ROM_GETNETWORKPARAMS      (36 * ROMXT_ENTRYSIZE) //#define ROMXT_ROM_SETNETWORKPARAMS      (37 * ROMXT_ENTRYSIZE) //#define ROMXT_ROM_GETIPV6PARAMS         (38 * ROMXT_ENTRYSIZE) //#define ROMXT_ROM_GETETHERNETSTATUS     (39 * ROMXT_ENTRYSIZE) //#define ROMXT_ROM_GETTFTPSERVER         (40 * ROMXT_ENTRYSIZE) //#define ROMXT_ROM_SETTFTPSERVER         (41 * ROMXT_ENTRYSIZE) //#define ROMXT_ETH_PROCESSINTERRUPT      (42 * ROMXT_ENTRYSIZE) // not implemented for C compiler#define ROMXT_ARP_GENERATEREQUEST       (43 * ROMXT_ENTRYSIZE) // not implemented for C compiler#define ROMXT_NET_ETH0_MAC_ID           (44 * ROMXT_ENTRYSIZE) //// DHCP functions#define ROMXT_DHCP_INIT                 (45 * ROMXT_ENTRYSIZE) //#define ROMXT_DHCP_SETUP                (46 * ROMXT_ENTRYSIZE) // not implemented for C compiler#define ROMXT_DHCP_STARTUP              (47 * ROMXT_ENTRYSIZE) // not implemented for C compiler#define ROMXT_DHCP_RUN                  (48 * ROMXT_ENTRYSIZE) // not implemented for C compiler#define ROMXT_DHCP_STATUS               (49 * ROMXT_ENTRYSIZE) //#define ROMXT_DHCP_STOP                 (50 * ROMXT_ENTRYSIZE) //#define ROMXT_DHCPNOTIFY                (51 * ROMXT_ENTRYSIZE) // empty redirect stub, not implemented// TFTP functions#define ROMXT_TFTP_INIT                 (52 * ROMXT_ENTRYSIZE) //#define ROMXT_TFTP_FIRST                (53 * ROMXT_ENTRYSIZE) //#define ROMXT_TFTP_NEXT                 (54 * ROMXT_ENTRYSIZE) //#define ROMXT_TFTP_MSG                  (55 * ROMXT_ENTRYSIZE) //// SCHEDULER functions#define ROMXT_TASK_GENESIS              (56 * ROMXT_ENTRYSIZE) //#define ROMXT_TASK_GETCURRENT           (57 * ROMXT_ENTRYSIZE) //#define ROMXT_TASK_GETPRIORITY          (58 * ROMXT_ENTRYSIZE) //#define ROMXT_TASK_SETPRIORITY          (59 * ROMXT_ENTRYSIZE) //#define ROMXT_TASK_FORK                 (60 * ROMXT_ENTRYSIZE) //#define ROMXT_TASK_KILL                 (61 * ROMXT_ENTRYSIZE) //#define ROMXT_TASK_SUSPEND              (62 * ROMXT_ENTRYSIZE) //#define ROMXT_TASK_SLEEP                (63 * ROMXT_ENTRYSIZE) //#define ROMXT_TASK_SIGNAL               (64 * ROMXT_ENTRYSIZE) //#define ROMXT_ROM_TASK_SWITCH_IN        (65 * ROMXT_ENTRYSIZE) // empty redirect stub, not implemented#define ROMXT_ROM_TASK_SWITCH_OUT       (66 * ROMXT_ENTRYSIZE) // empty redirect stub, not implemented#define ROMXT_ENTERCRITSECTION          (67 * ROMXT_ENTRYSIZE) //#define ROMXT_LEAVECRITSECTION          (68 * ROMXT_ENTRYSIZE) //// INIT functions#define ROMXT_ROM_INIT                  (69 * ROMXT_ENTRYSIZE) //#define ROMXT_ROM_COPYIVT               (70 * ROMXT_ENTRYSIZE) //#define ROMXT_ROM_REDIRECT_INIT         (71 * ROMXT_ENTRYSIZE) //#define ROMXT_MM_INIT                   (72 * ROMXT_ENTRYSIZE) //#define ROMXT_KM_INIT                   (73 * ROMXT_ENTRYSIZE) //#define ROMXT_OW_INIT                   (74 * ROMXT_ENTRYSIZE) //#define ROMXT_NETWORK_INIT              (75 * ROMXT_ENTRYSIZE) //#define ROMXT_ETH_INIT                  (76 * ROMXT_ENTRYSIZE) //#define ROMXT_INIT_SOCKETS              (77 * ROMXT_ENTRYSIZE) //#define ROMXT_TICK_INIT                 (78 * ROMXT_ENTRYSIZE) //// Timer Interrupt vectors#define ROMXT_WOS_TICK                  (79 * ROMXT_ENTRYSIZE) // not implemented for C compiler#define ROMXT_BLOB                      (80 * ROMXT_ENTRYSIZE) // not implemented for C compiler// Maintenance functions#define ROMXT_WOS_IOPOLL                (81 * ROMXT_ENTRYSIZE) // not implemented for C compiler#define ROMXT_IP_PROCESSRECEIVEQUEUES   (82 * ROMXT_ENTRYSIZE) // not implemented for C compiler#define ROMXT_IP_PROCESSOUTPUT          (83 * ROMXT_ENTRYSIZE) // not implemented for C compiler#define ROMXT_TCP_RETRYTOP              (84 * ROMXT_ENTRYSIZE) // not implemented for C compiler#define ROMXT_ETH_PROCESSOUTPUT         (85 * ROMXT_ENTRYSIZE) // not implemented for C compiler#define ROMXT_IGMP_GROUPMAINTAINENCE    (86 * ROMXT_ENTRYSIZE) // not implemented for C compiler#define ROMXT_IP6_PROCESSRECEIVEQUEUES  (87 * ROMXT_ENTRYSIZE) // not implemented for C compiler#define ROMXT_IP6_PROCESSOUTPUT         (88 * ROMXT_ENTRYSIZE) // not implemented for C compiler#define ROMXT_PARAMBUFFER               (89 * ROMXT_ENTRYSIZE) // not implemented for C compiler#define ROMXT_RAM_TOP                   (90 * ROMXT_ENTRYSIZE) // not implemented for C compiler#define ROMXT_BOOT_MEMBEGIN             (91 * ROMXT_ENTRYSIZE) // not implemented for C compiler#define ROMXT_BOOT_MEMEND               (92 * ROMXT_ENTRYSIZE) // not implemented for C compiler// 1-Wire#define ROMXT_OWM_FIRST                 (93 * ROMXT_ENTRYSIZE) //#define ROMXT_OWM_NEXT                  (94 * ROMXT_ENTRYSIZE) //#define ROMXT_OWM_RESET                 (95 * ROMXT_ENTRYSIZE) //#define ROMXT_OWM_BYTE                  (96 * ROMXT_ENTRYSIZE) //#define ROMXT_OWM_SEARCH                (97 * ROMXT_ENTRYSIZE) // not implemented for C compiler#define ROMXT_OW_ROMID                  (98 * ROMXT_ENTRYSIZE) //// Misc, extras, late additions#define ROMXT_AUTOBAUD                  (99 * ROMXT_ENTRYSIZE)#define ROMXT_TFTP_CLOSE                (100 * ROMXT_ENTRYSIZE)#define ROMRT_ENTRYSIZE  3//

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -