From a2af2f9151b1ef17067cd5a7940a4b251b4d0e22 Mon Sep 17 00:00:00 2001 From: logicog Date: Fri, 11 Jul 2025 15:50:55 +0200 Subject: [PATCH] Empty application for testing --- hello-world/Makefile | 21 ++ hello-world/hello-world.asm | 264 +++++++++++++++++++++ hello-world/hello-world.c | 108 +++++++++ hello-world/hello-world.h | 52 +++++ hello-world/hello-world.lst | 267 +++++++++++++++++++++ hello-world/hello-world.rel | 131 +++++++++++ hello-world/hello-world.rst | 267 +++++++++++++++++++++ hello-world/hello-world.sym | 450 ++++++++++++++++++++++++++++++++++++ 8 files changed, 1560 insertions(+) create mode 100644 hello-world/Makefile create mode 100644 hello-world/hello-world.asm create mode 100644 hello-world/hello-world.c create mode 100644 hello-world/hello-world.h create mode 100644 hello-world/hello-world.lst create mode 100644 hello-world/hello-world.rel create mode 100644 hello-world/hello-world.rst create mode 100644 hello-world/hello-world.sym diff --git a/hello-world/Makefile b/hello-world/Makefile new file mode 100644 index 0000000..8a2645e --- /dev/null +++ b/hello-world/Makefile @@ -0,0 +1,21 @@ +CC = sdcc +CC_FLAGS = -mmcs51 -I. -I../uip +ASM = sdas8051 +AFLAGS= -plosgff + +SRCS = hello-world.c +OBJS = ${SRCS:.c=.rel} + +all: $(OBJS) + +%.rel: %.c + $(CC) $(CC_FLAGS) -c $< + +%.rel: %.asm + ${ASM} ${AFLAGS} $^ + +clean: + rm *.ihx *.lk *.lst *.map *.mem *.rel *.rst *.sym *.bin + +.PHONY: all clean + diff --git a/hello-world/hello-world.asm b/hello-world/hello-world.asm new file mode 100644 index 0000000..15a9ca4 --- /dev/null +++ b/hello-world/hello-world.asm @@ -0,0 +1,264 @@ +;-------------------------------------------------------- +; File Created by SDCC : free open source ANSI-C Compiler +; Version 4.2.0 #13081 (Linux) +;-------------------------------------------------------- + .module hello_world + .optsdcc -mmcs51 --model-small + +;-------------------------------------------------------- +; Public variables in this module +;-------------------------------------------------------- + .globl _uip_listen + .globl _psock_readto + .globl _psock_init + .globl _strtox + .globl _write_char + .globl _hello_world_init + .globl _hello_world_appcall +;-------------------------------------------------------- +; special function registers +;-------------------------------------------------------- + .area RSEG (ABS,DATA) + .org 0x0000 +;-------------------------------------------------------- +; special function bits +;-------------------------------------------------------- + .area RSEG (ABS,DATA) + .org 0x0000 +;-------------------------------------------------------- +; overlayable register banks +;-------------------------------------------------------- + .area REG_BANK_0 (REL,OVR,DATA) + .ds 8 +;-------------------------------------------------------- +; internal ram data +;-------------------------------------------------------- + .area DSEG (DATA) +;-------------------------------------------------------- +; overlayable items in internal ram +;-------------------------------------------------------- +;-------------------------------------------------------- +; indirectly addressable internal ram data +;-------------------------------------------------------- + .area ISEG (DATA) +;-------------------------------------------------------- +; absolute internal ram data +;-------------------------------------------------------- + .area IABS (ABS,DATA) + .area IABS (ABS,DATA) +;-------------------------------------------------------- +; bit data +;-------------------------------------------------------- + .area BSEG (BIT) +;-------------------------------------------------------- +; paged external ram data +;-------------------------------------------------------- + .area PSEG (PAG,XDATA) +;-------------------------------------------------------- +; external ram data +;-------------------------------------------------------- + .area XSEG (XDATA) +_handle_connection_buf_65536_59: + .ds 100 +;-------------------------------------------------------- +; absolute external ram data +;-------------------------------------------------------- + .area XABS (ABS,XDATA) +;-------------------------------------------------------- +; external initialized ram data +;-------------------------------------------------------- + .area XISEG (XDATA) + .area HOME (CODE) + .area GSINIT0 (CODE) + .area GSINIT1 (CODE) + .area GSINIT2 (CODE) + .area GSINIT3 (CODE) + .area GSINIT4 (CODE) + .area GSINIT5 (CODE) + .area GSINIT (CODE) + .area GSFINAL (CODE) + .area CSEG (CODE) +;-------------------------------------------------------- +; global & static initialisations +;-------------------------------------------------------- + .area HOME (CODE) + .area GSINIT (CODE) + .area GSFINAL (CODE) + .area GSINIT (CODE) +;-------------------------------------------------------- +; Home +;-------------------------------------------------------- + .area HOME (CODE) + .area HOME (CODE) +;-------------------------------------------------------- +; code +;-------------------------------------------------------- + .area BANK1 (CODE) +;------------------------------------------------------------ +;Allocation info for local variables in function 'hello_world_init' +;------------------------------------------------------------ +; hello-world.c:43: hello_world_init(void) +; ----------------------------------------- +; function hello_world_init +; ----------------------------------------- +_hello_world_init: + ar7 = 0x07 + ar6 = 0x06 + ar5 = 0x05 + ar4 = 0x04 + ar3 = 0x03 + ar2 = 0x02 + ar1 = 0x01 + ar0 = 0x00 +; hello-world.c:46: uip_listen(HTONS(1000)); + mov dptr,#0xe803 +; hello-world.c:47: } + ljmp _uip_listen +;------------------------------------------------------------ +;Allocation info for local variables in function 'hello_world_appcall' +;------------------------------------------------------------ +;s Allocated to registers r6 r7 +;------------------------------------------------------------ +; hello-world.c:57: hello_world_appcall(void) +; ----------------------------------------- +; function hello_world_appcall +; ----------------------------------------- +_hello_world_appcall: +; hello-world.c:64: __xdata struct hello_world_state *s = &(uip_conn->appstate); + mov a,#0x1c + add a,_uip_conn + mov r6,a + clr a + addc a,(_uip_conn + 1) + mov r7,a +; hello-world.c:70: if(uip_connected()) { + mov dptr,#_uip_flags + movx a,@dptr + jnb acc.6,00102$ +; hello-world.c:71: PSOCK_INIT(&s->p, s->inputbuffer, sizeof(s->inputbuffer)); + mov a,#0x15 + add a,r6 + mov _psock_init_PARM_2,a + clr a + addc a,r7 + mov (_psock_init_PARM_2 + 1),a + mov _psock_init_PARM_3,#0x0a + mov (_psock_init_PARM_3 + 1),#0x00 + mov dpl,r6 + mov dph,r7 + push ar7 + push ar6 + lcall _psock_init + pop ar6 + pop ar7 +00102$: +; hello-world.c:79: write_char('A'); + mov dpl,#0x41 + push ar7 + push ar6 + lcall _write_char + pop ar6 + pop ar7 +; hello-world.c:80: handle_connection(s); + mov dpl,r6 + mov dph,r7 +; hello-world.c:81: } + ljmp _handle_connection +;------------------------------------------------------------ +;Allocation info for local variables in function 'handle_connection' +;------------------------------------------------------------ +;s Allocated to registers r6 r7 +;PT_YIELD_FLAG Allocated to registers +;buf Allocated with name '_handle_connection_buf_65536_59' +;------------------------------------------------------------ +; hello-world.c:90: handle_connection(__xdata struct hello_world_state *s) +; ----------------------------------------- +; function handle_connection +; ----------------------------------------- +_handle_connection: +; hello-world.c:94: PSOCK_BEGIN(&s->p); + mov r6,dpl + mov r7,dph + movx a,@dptr + mov r4,a + inc dptr + movx a,@dptr + mov r5,a + cjne r4,#0x00,00123$ + cjne r5,#0x00,00123$ + sjmp 00101$ +00123$: + cjne r4,#0x63,00108$ + cjne r5,#0x00,00108$ + sjmp 00102$ +00101$: +; hello-world.c:96: strtox(buf, "Hello. What is your name?\n"); + mov _strtox_PARM_2,#___str_0 + mov (_strtox_PARM_2 + 1),#(___str_0 >> 8) + mov dptr,#_handle_connection_buf_65536_59 + push ar7 + push ar6 + lcall _strtox + pop ar6 + pop ar7 +; hello-world.c:99: PSOCK_READTO(&s->p, '\n'); + mov dpl,r6 + mov dph,r7 + mov a,#0x63 + movx @dptr,a + clr a + inc dptr + movx @dptr,a +00102$: + mov _psock_readto_PARM_2,#0x0a + mov dpl,r6 + mov dph,r7 + push ar7 + push ar6 + lcall _psock_readto + mov a,dpl + pop ar6 + pop ar7 + jnz 00106$ + mov dpl,a + ret +00106$: +; hello-world.c:101: strtox(buf, "Name: "); + mov _strtox_PARM_2,#___str_1 + mov (_strtox_PARM_2 + 1),#(___str_1 >> 8) + mov dptr,#_handle_connection_buf_65536_59 + push ar7 + push ar6 + lcall _strtox + pop ar6 + pop ar7 +; hello-world.c:104: PSOCK_CLOSE(&s->p); + mov dptr,#_uip_flags + mov a,#0x10 + movx @dptr,a +; hello-world.c:106: PSOCK_END(&s->p); +00108$: + mov dpl,r6 + mov dph,r7 + clr a + movx @dptr,a + inc dptr + movx @dptr,a + mov dpl,#0x02 +; hello-world.c:107: } + ret + .area BANK1 (CODE) + .area CONST (CODE) + .area CONST (CODE) +___str_0: + .ascii "Hello. What is your name?" + .db 0x0a + .db 0x00 + .area BANK1 (CODE) + .area CONST (CODE) +___str_1: + .ascii "Name: " + .db 0x00 + .area BANK1 (CODE) + .area XINIT (CODE) + .area CABS (ABS,CODE) diff --git a/hello-world/hello-world.c b/hello-world/hello-world.c new file mode 100644 index 0000000..e09b436 --- /dev/null +++ b/hello-world/hello-world.c @@ -0,0 +1,108 @@ +/** + * \addtogroup helloworld + * @{ + */ + +/** + * \file + * An example of how to write uIP applications + * with protosockets. + * \author + * Adam Dunkels + */ + +/* + * This is a short example of how to write uIP applications using + * protosockets. + */ + +/* + * We define the application state (struct hello_world_state) in the + * hello-world.h file, so we need to include it here. We also include + * uip.h (since this cannot be included in hello-world.h) and + * , since we use the memcpy() function in the code. + */ +#include "hello-world.h" +#include "../rtl837x_common.h" +#include "uip.h" + +#pragma codeseg BANK1 + +/* + * Declaration of the protosocket function that handles the connection + * (defined at the end of the code). + */ +static uint8_t handle_connection(__xdata struct hello_world_state *s); +/*---------------------------------------------------------------------------*/ +/* + * The initialization function. We must explicitly call this function + * from the system initialization code, some time after uip_init() is + * called. + */ +void +hello_world_init(void) +{ + /* We start to listen for connections on TCP port 1000. */ + uip_listen(HTONS(1000)); +} +/*---------------------------------------------------------------------------*/ +/* + * In hello-world.h we have defined the UIP_APPCALL macro to + * hello_world_appcall so that this funcion is uIP's application + * function. This function is called whenever an uIP event occurs + * (e.g. when a new connection is established, new data arrives, sent + * data is acknowledged, data needs to be retransmitted, etc.). + */ +void +hello_world_appcall(void) +{ + /* + * The uip_conn structure has a field called "appstate" that holds + * the application state of the connection. We make a pointer to + * this to access it easier. + */ + __xdata struct hello_world_state *s = &(uip_conn->appstate); + + /* + * If a new connection was just established, we should initialize + * the protosocket in our applications' state structure. + */ + if(uip_connected()) { + PSOCK_INIT(&s->p, s->inputbuffer, sizeof(s->inputbuffer)); + } + + /* + * Finally, we run the protosocket function that actually handles + * the communication. We pass it a pointer to the application state + * of the current connection. + */ + write_char('A'); + handle_connection(s); +} +/*---------------------------------------------------------------------------*/ +/* + * This is the protosocket function that handles the communication. A + * protosocket function must always return an int, but must never + * explicitly return - all return statements are hidden in the PSOCK + * macros. + */ +static uint8_t +handle_connection(__xdata struct hello_world_state *s) +{ + __xdata char buf[100]; + + PSOCK_BEGIN(&s->p); + + strtox(buf, "Hello. What is your name?\n"); +// PSOCK_SEND_STR(&s->p, &buf[0]); +// PSOCK_SEND_STR(&s->p, "Hello. What is your name?\n"); + PSOCK_READTO(&s->p, '\n'); +// strncpy(s->name, s->inputbuffer, sizeof(s->name)); + strtox(buf, "Name: "); +// PSOCK_SEND_STR(&s->p, &buf[0]); +// PSOCK_SEND_STR(&s->p, s->name); + PSOCK_CLOSE(&s->p); + + PSOCK_END(&s->p); +} +/*---------------------------------------------------------------------------*/ diff --git a/hello-world/hello-world.h b/hello-world/hello-world.h new file mode 100644 index 0000000..5ef333b --- /dev/null +++ b/hello-world/hello-world.h @@ -0,0 +1,52 @@ +/** + * \addtogroup apps + * @{ + */ + +/** + * \defgroup helloworld Hello, world + * @{ + * + * A small example showing how to write applications with + * \ref psock "protosockets". + */ + +/** + * \file + * Header file for an example of how to write uIP applications + * with protosockets. + * \author + * Adam Dunkels + */ + +#ifndef __HELLO_WORLD_H__ +#define __HELLO_WORLD_H__ + +/* Since this file will be included by uip.h, we cannot include uip.h + here. But we might need to include uipopt.h if we need the u8_t and + u16_t datatypes. */ +#include "uipopt.h" + +#include "psock.h" + +/* Next, we define the uip_tcp_appstate_t datatype. This is the state + of our application, and the memory required for this state is + allocated together with each TCP connection. One application state + for each TCP connection. */ +typedef struct hello_world_state { + struct psock p; + char inputbuffer[10]; + char name[40]; +} uip_tcp_appstate_t; + +/* Finally we define the application function to be called by uIP. */ +void hello_world_appcall(void); +#ifndef UIP_APPCALL +#define UIP_APPCALL hello_world_appcall +#endif /* UIP_APPCALL */ + +void hello_world_init(void); + +#endif /* __HELLO_WORLD_H__ */ +/** @} */ +/** @} */ diff --git a/hello-world/hello-world.lst b/hello-world/hello-world.lst new file mode 100644 index 0000000..a881d44 --- /dev/null +++ b/hello-world/hello-world.lst @@ -0,0 +1,267 @@ + 1 ;-------------------------------------------------------- + 2 ; File Created by SDCC : free open source ANSI-C Compiler + 3 ; Version 4.2.0 #13081 (Linux) + 4 ;-------------------------------------------------------- + 5 .module hello_world + 6 .optsdcc -mmcs51 --model-small + 7 + 8 ;-------------------------------------------------------- + 9 ; Public variables in this module + 10 ;-------------------------------------------------------- + 11 .globl _uip_listen + 12 .globl _psock_readto + 13 .globl _psock_init + 14 .globl _strtox + 15 .globl _write_char + 16 .globl _hello_world_init + 17 .globl _hello_world_appcall + 18 ;-------------------------------------------------------- + 19 ; special function registers + 20 ;-------------------------------------------------------- + 21 .area RSEG (ABS,DATA) + 000000 22 .org 0x0000 + 23 ;-------------------------------------------------------- + 24 ; special function bits + 25 ;-------------------------------------------------------- + 26 .area RSEG (ABS,DATA) + 000000 27 .org 0x0000 + 28 ;-------------------------------------------------------- + 29 ; overlayable register banks + 30 ;-------------------------------------------------------- + 31 .area REG_BANK_0 (REL,OVR,DATA) + 000000 32 .ds 8 + 33 ;-------------------------------------------------------- + 34 ; internal ram data + 35 ;-------------------------------------------------------- + 36 .area DSEG (DATA) + 37 ;-------------------------------------------------------- + 38 ; overlayable items in internal ram + 39 ;-------------------------------------------------------- + 40 ;-------------------------------------------------------- + 41 ; indirectly addressable internal ram data + 42 ;-------------------------------------------------------- + 43 .area ISEG (DATA) + 44 ;-------------------------------------------------------- + 45 ; absolute internal ram data + 46 ;-------------------------------------------------------- + 47 .area IABS (ABS,DATA) + 48 .area IABS (ABS,DATA) + 49 ;-------------------------------------------------------- + 50 ; bit data + 51 ;-------------------------------------------------------- + 52 .area BSEG (BIT) + 53 ;-------------------------------------------------------- + 54 ; paged external ram data + 55 ;-------------------------------------------------------- + 56 .area PSEG (PAG,XDATA) + 57 ;-------------------------------------------------------- + 58 ; external ram data + 59 ;-------------------------------------------------------- + 60 .area XSEG (XDATA) + 000000 61 _handle_connection_buf_65536_59: + 000000 62 .ds 100 + 63 ;-------------------------------------------------------- + 64 ; absolute external ram data + 65 ;-------------------------------------------------------- + 66 .area XABS (ABS,XDATA) + 67 ;-------------------------------------------------------- + 68 ; external initialized ram data + 69 ;-------------------------------------------------------- + 70 .area XISEG (XDATA) + 71 .area HOME (CODE) + 72 .area GSINIT0 (CODE) + 73 .area GSINIT1 (CODE) + 74 .area GSINIT2 (CODE) + 75 .area GSINIT3 (CODE) + 76 .area GSINIT4 (CODE) + 77 .area GSINIT5 (CODE) + 78 .area GSINIT (CODE) + 79 .area GSFINAL (CODE) + 80 .area CSEG (CODE) + 81 ;-------------------------------------------------------- + 82 ; global & static initialisations + 83 ;-------------------------------------------------------- + 84 .area HOME (CODE) + 85 .area GSINIT (CODE) + 86 .area GSFINAL (CODE) + 87 .area GSINIT (CODE) + 88 ;-------------------------------------------------------- + 89 ; Home + 90 ;-------------------------------------------------------- + 91 .area HOME (CODE) + 92 .area HOME (CODE) + 93 ;-------------------------------------------------------- + 94 ; code + 95 ;-------------------------------------------------------- + 96 .area BANK1 (CODE) + 97 ;------------------------------------------------------------ + 98 ;Allocation info for local variables in function 'hello_world_init' + 99 ;------------------------------------------------------------ + 100 ; hello-world.c:43: hello_world_init(void) + 101 ; ----------------------------------------- + 102 ; function hello_world_init + 103 ; ----------------------------------------- + 000000 104 _hello_world_init: + 000007 105 ar7 = 0x07 + 000006 106 ar6 = 0x06 + 000005 107 ar5 = 0x05 + 000004 108 ar4 = 0x04 + 000003 109 ar3 = 0x03 + 000002 110 ar2 = 0x02 + 000001 111 ar1 = 0x01 + 000000 112 ar0 = 0x00 + 113 ; hello-world.c:46: uip_listen(HTONS(1000)); + 000000 90 E8 03 [24] 114 mov dptr,#0xe803 + 115 ; hello-world.c:47: } + 000003 02r00r00 [24] 116 ljmp _uip_listen + 117 ;------------------------------------------------------------ + 118 ;Allocation info for local variables in function 'hello_world_appcall' + 119 ;------------------------------------------------------------ + 120 ;s Allocated to registers r6 r7 + 121 ;------------------------------------------------------------ + 122 ; hello-world.c:57: hello_world_appcall(void) + 123 ; ----------------------------------------- + 124 ; function hello_world_appcall + 125 ; ----------------------------------------- + 000006 126 _hello_world_appcall: + 127 ; hello-world.c:64: __xdata struct hello_world_state *s = &(uip_conn->appstate); + 000006 74 1C [12] 128 mov a,#0x1c + 000008 25*00 [12] 129 add a,_uip_conn + 00000A FE [12] 130 mov r6,a + 00000B E4 [12] 131 clr a + 00000C 35*01 [12] 132 addc a,(_uip_conn + 1) + 00000E FF [12] 133 mov r7,a + 134 ; hello-world.c:70: if(uip_connected()) { + 00000F 90r00r00 [24] 135 mov dptr,#_uip_flags + 000012 E0 [24] 136 movx a,@dptr + 000013 30 E6 1E [24] 137 jnb acc.6,00102$ + 138 ; hello-world.c:71: PSOCK_INIT(&s->p, s->inputbuffer, sizeof(s->inputbuffer)); + 000016 74 15 [12] 139 mov a,#0x15 + 000018 2E [12] 140 add a,r6 + 000019 F5*00 [12] 141 mov _psock_init_PARM_2,a + 00001B E4 [12] 142 clr a + 00001C 3F [12] 143 addc a,r7 + 00001D F5*01 [12] 144 mov (_psock_init_PARM_2 + 1),a + 00001F 75*00 0A [24] 145 mov _psock_init_PARM_3,#0x0a + 000022 75*01 00 [24] 146 mov (_psock_init_PARM_3 + 1),#0x00 + 000025 8E 82 [24] 147 mov dpl,r6 + 000027 8F 83 [24] 148 mov dph,r7 + 000029 C0 07 [24] 149 push ar7 + 00002B C0 06 [24] 150 push ar6 + 00002D 12r00r00 [24] 151 lcall _psock_init + 000030 D0 06 [24] 152 pop ar6 + 000032 D0 07 [24] 153 pop ar7 + 000034 154 00102$: + 155 ; hello-world.c:79: write_char('A'); + 000034 75 82 41 [24] 156 mov dpl,#0x41 + 000037 C0 07 [24] 157 push ar7 + 000039 C0 06 [24] 158 push ar6 + 00003B 12r00r00 [24] 159 lcall _write_char + 00003E D0 06 [24] 160 pop ar6 + 000040 D0 07 [24] 161 pop ar7 + 162 ; hello-world.c:80: handle_connection(s); + 000042 8E 82 [24] 163 mov dpl,r6 + 000044 8F 83 [24] 164 mov dph,r7 + 165 ; hello-world.c:81: } + 000046 02r00r49 [24] 166 ljmp _handle_connection + 167 ;------------------------------------------------------------ + 168 ;Allocation info for local variables in function 'handle_connection' + 169 ;------------------------------------------------------------ + 170 ;s Allocated to registers r6 r7 + 171 ;PT_YIELD_FLAG Allocated to registers + 172 ;buf Allocated with name '_handle_connection_buf_65536_59' + 173 ;------------------------------------------------------------ + 174 ; hello-world.c:90: handle_connection(__xdata struct hello_world_state *s) + 175 ; ----------------------------------------- + 176 ; function handle_connection + 177 ; ----------------------------------------- + 000049 178 _handle_connection: + 179 ; hello-world.c:94: PSOCK_BEGIN(&s->p); + 000049 AE 82 [24] 180 mov r6,dpl + 00004B AF 83 [24] 181 mov r7,dph + 00004D E0 [24] 182 movx a,@dptr + 00004E FC [12] 183 mov r4,a + 00004F A3 [24] 184 inc dptr + 000050 E0 [24] 185 movx a,@dptr + 000051 FD [12] 186 mov r5,a + 000052 BC 00 05 [24] 187 cjne r4,#0x00,00123$ + 000055 BD 00 02 [24] 188 cjne r5,#0x00,00123$ + 000058 80 08 [24] 189 sjmp 00101$ + 00005A 190 00123$: + 00005A BC 63 56 [24] 191 cjne r4,#0x63,00108$ + 00005D BD 00 53 [24] 192 cjne r5,#0x00,00108$ + 000060 80 1E [24] 193 sjmp 00102$ + 000062 194 00101$: + 195 ; hello-world.c:96: strtox(buf, "Hello. What is your name?\n"); + 000062 75*00r00 [24] 196 mov _strtox_PARM_2,#___str_0 + 000065 75*01s00 [24] 197 mov (_strtox_PARM_2 + 1),#(___str_0 >> 8) + 000068 90r00r00 [24] 198 mov dptr,#_handle_connection_buf_65536_59 + 00006B C0 07 [24] 199 push ar7 + 00006D C0 06 [24] 200 push ar6 + 00006F 12r00r00 [24] 201 lcall _strtox + 000072 D0 06 [24] 202 pop ar6 + 000074 D0 07 [24] 203 pop ar7 + 204 ; hello-world.c:99: PSOCK_READTO(&s->p, '\n'); + 000076 8E 82 [24] 205 mov dpl,r6 + 000078 8F 83 [24] 206 mov dph,r7 + 00007A 74 63 [12] 207 mov a,#0x63 + 00007C F0 [24] 208 movx @dptr,a + 00007D E4 [12] 209 clr a + 00007E A3 [24] 210 inc dptr + 00007F F0 [24] 211 movx @dptr,a + 000080 212 00102$: + 000080 75*00 0A [24] 213 mov _psock_readto_PARM_2,#0x0a + 000083 8E 82 [24] 214 mov dpl,r6 + 000085 8F 83 [24] 215 mov dph,r7 + 000087 C0 07 [24] 216 push ar7 + 000089 C0 06 [24] 217 push ar6 + 00008B 12r00r00 [24] 218 lcall _psock_readto + 00008E E5 82 [12] 219 mov a,dpl + 000090 D0 06 [24] 220 pop ar6 + 000092 D0 07 [24] 221 pop ar7 + 000094 70 03 [24] 222 jnz 00106$ + 000096 F5 82 [12] 223 mov dpl,a + 000098 22 [24] 224 ret + 000099 225 00106$: + 226 ; hello-world.c:101: strtox(buf, "Name: "); + 000099 75*00r1B [24] 227 mov _strtox_PARM_2,#___str_1 + 00009C 75*01s00 [24] 228 mov (_strtox_PARM_2 + 1),#(___str_1 >> 8) + 00009F 90r00r00 [24] 229 mov dptr,#_handle_connection_buf_65536_59 + 0000A2 C0 07 [24] 230 push ar7 + 0000A4 C0 06 [24] 231 push ar6 + 0000A6 12r00r00 [24] 232 lcall _strtox + 0000A9 D0 06 [24] 233 pop ar6 + 0000AB D0 07 [24] 234 pop ar7 + 235 ; hello-world.c:104: PSOCK_CLOSE(&s->p); + 0000AD 90r00r00 [24] 236 mov dptr,#_uip_flags + 0000B0 74 10 [12] 237 mov a,#0x10 + 0000B2 F0 [24] 238 movx @dptr,a + 239 ; hello-world.c:106: PSOCK_END(&s->p); + 0000B3 240 00108$: + 0000B3 8E 82 [24] 241 mov dpl,r6 + 0000B5 8F 83 [24] 242 mov dph,r7 + 0000B7 E4 [12] 243 clr a + 0000B8 F0 [24] 244 movx @dptr,a + 0000B9 A3 [24] 245 inc dptr + 0000BA F0 [24] 246 movx @dptr,a + 0000BB 75 82 02 [24] 247 mov dpl,#0x02 + 248 ; hello-world.c:107: } + 0000BE 22 [24] 249 ret + 250 .area BANK1 (CODE) + 251 .area CONST (CODE) + 252 .area CONST (CODE) + 000000 253 ___str_0: + 000000 48 65 6C 6C 6F 2E 20 254 .ascii "Hello. What is your name?" + 57 68 61 74 20 69 73 + 20 79 6F 75 72 20 6E + 61 6D 65 3F + 000019 0A 255 .db 0x0a + 00001A 00 256 .db 0x00 + 257 .area BANK1 (CODE) + 258 .area CONST (CODE) + 00001B 259 ___str_1: + 00001B 4E 61 6D 65 3A 20 260 .ascii "Name: " + 000021 00 261 .db 0x00 + 262 .area BANK1 (CODE) + 263 .area XINIT (CODE) + 264 .area CABS (ABS,CODE) diff --git a/hello-world/hello-world.rel b/hello-world/hello-world.rel new file mode 100644 index 0000000..2b9b374 --- /dev/null +++ b/hello-world/hello-world.rel @@ -0,0 +1,131 @@ +XH3 +H 1B areas E global symbols +M hello_world +O -mmcs51 --model-small +S _write_char Ref000000 +S _psock_init Ref000000 +S _strtox Ref000000 +S _uip_flags Ref000000 +S _uip_listen Ref000000 +S _psock_readto Ref000000 +S .__.ABS. Def000000 +S _psock_init_PARM_2 Ref000000 +S _strtox_PARM_2 Ref000000 +S _psock_init_PARM_3 Ref000000 +S _uip_conn Ref000000 +S _psock_readto_PARM_2 Ref000000 +A _CODE size 0 flags 0 addr 0 +A RSEG size 0 flags 8 addr 0 +A RSEG0 size 0 flags 8 addr 0 +A RSEG1 size 0 flags 8 addr 0 +A REG_BANK_0 size 8 flags 4 addr 0 +A DSEG size 0 flags 0 addr 0 +A ISEG size 0 flags 0 addr 0 +A IABS size 0 flags 8 addr 0 +A BSEG size 0 flags 80 addr 0 +A PSEG size 0 flags 50 addr 0 +A XSEG size 64 flags 40 addr 0 +A XABS size 0 flags 48 addr 0 +A XISEG size 0 flags 40 addr 0 +A HOME size 0 flags 20 addr 0 +A GSINIT0 size 0 flags 20 addr 0 +A GSINIT1 size 0 flags 20 addr 0 +A GSINIT2 size 0 flags 20 addr 0 +A GSINIT3 size 0 flags 20 addr 0 +A GSINIT4 size 0 flags 20 addr 0 +A GSINIT5 size 0 flags 20 addr 0 +A GSINIT size 0 flags 20 addr 0 +A GSFINAL size 0 flags 20 addr 0 +A CSEG size 0 flags 20 addr 0 +A BANK1 size BF flags 20 addr 0 +S _hello_world_init Def000000 +S _hello_world_appcall Def000006 +A CONST size 22 flags 20 addr 0 +A XINIT size 0 flags 20 addr 0 +A CABS size 0 flags 28 addr 0 +T 00 00 00 +R 00 00 00 02 +T 00 00 00 +R 00 00 00 03 +T 00 00 00 +R 00 00 00 04 +T 00 00 00 +R 00 00 00 0A +T 00 00 00 +R 00 00 00 0A +T 00 00 00 +R 00 00 00 17 +T 00 00 00 90 E8 03 02 00 00 +R 00 00 00 17 02 07 00 04 +T 00 00 06 +R 00 00 00 17 +T 00 00 06 74 1C 25 00 00 00 FE E4 35 00 00 01 FF +R 00 00 00 17 F1 23 06 00 0A F1 23 0C 00 0A +T 00 00 0F 90 00 00 E0 30 E6 1E 74 15 2E F5 +R 00 00 00 17 02 04 00 03 +T 00 00 1A 00 00 00 E4 3F F5 00 00 01 75 +R 00 00 00 17 F1 23 03 00 07 F1 23 09 00 07 +T 00 00 20 00 00 00 0A 75 00 00 01 00 8E 82 8F 83 +R 00 00 00 17 F1 23 03 00 09 F1 23 08 00 09 +T 00 00 29 C0 07 C0 06 12 00 00 D0 06 D0 07 +R 00 00 00 17 02 08 00 01 +T 00 00 34 +R 00 00 00 17 +T 00 00 34 75 82 41 C0 07 C0 06 12 00 00 D0 06 D0 +R 00 00 00 17 02 0B 00 00 +T 00 00 41 07 8E 82 8F 83 02 00 49 +R 00 00 00 17 00 09 00 17 +T 00 00 49 +R 00 00 00 17 +T 00 00 49 AE 82 AF 83 E0 FC A3 E0 FD BC 00 05 BD +R 00 00 00 17 +T 00 00 56 00 02 80 08 +R 00 00 00 17 +T 00 00 5A +R 00 00 00 17 +T 00 00 5A BC 63 56 BD 00 53 80 1E +R 00 00 00 17 +T 00 00 62 +R 00 00 00 17 +T 00 00 62 75 00 00 00 00 00 00 75 +R 00 00 00 17 F1 23 04 00 08 F1 01 07 00 18 +T 00 00 66 00 00 01 00 00 00 90 +R 00 00 00 17 F1 23 03 00 08 F1 81 06 00 18 +T 00 00 69 00 00 C0 07 C0 06 12 00 00 D0 06 D0 07 +R 00 00 00 17 00 03 00 0A 02 0A 00 02 +T 00 00 76 8E 82 8F 83 74 63 F0 E4 A3 F0 +R 00 00 00 17 +T 00 00 80 +R 00 00 00 17 +T 00 00 80 75 00 00 00 0A 8E 82 8F 83 C0 07 C0 06 +R 00 00 00 17 F1 23 04 00 0B +T 00 00 8B 12 00 00 E5 82 D0 06 D0 07 70 03 F5 82 +R 00 00 00 17 02 04 00 05 +T 00 00 98 22 +R 00 00 00 17 +T 00 00 99 +R 00 00 00 17 +T 00 00 99 75 00 00 00 00 00 1B 75 +R 00 00 00 17 F1 23 04 00 08 F1 01 07 00 18 +T 00 00 9D 00 00 01 00 00 1B 90 +R 00 00 00 17 F1 23 03 00 08 F1 81 06 00 18 +T 00 00 A0 00 00 C0 07 C0 06 12 00 00 D0 06 D0 07 +R 00 00 00 17 00 03 00 0A 02 0A 00 02 +T 00 00 AD 90 00 00 74 10 F0 +R 00 00 00 17 02 04 00 03 +T 00 00 B3 +R 00 00 00 17 +T 00 00 B3 8E 82 8F 83 E4 F0 A3 F0 75 82 02 22 +R 00 00 00 17 +T 00 00 00 +R 00 00 00 18 +T 00 00 00 48 65 6C 6C 6F 2E 20 57 68 61 74 20 69 +R 00 00 00 18 +T 00 00 0D 73 20 79 6F 75 72 20 6E 61 6D 65 3F 0A +R 00 00 00 18 +T 00 00 1A 00 +R 00 00 00 18 +T 00 00 1B +R 00 00 00 18 +T 00 00 1B 4E 61 6D 65 3A 20 00 +R 00 00 00 18 diff --git a/hello-world/hello-world.rst b/hello-world/hello-world.rst new file mode 100644 index 0000000..55e88a4 --- /dev/null +++ b/hello-world/hello-world.rst @@ -0,0 +1,267 @@ + 1 ;-------------------------------------------------------- + 2 ; File Created by SDCC : free open source ANSI-C Compiler + 3 ; Version 4.2.0 #13081 (Linux) + 4 ;-------------------------------------------------------- + 5 .module hello_world + 6 .optsdcc -mmcs51 --model-small + 7 + 8 ;-------------------------------------------------------- + 9 ; Public variables in this module + 10 ;-------------------------------------------------------- + 11 .globl _uip_listen + 12 .globl _psock_readto + 13 .globl _psock_init + 14 .globl _strtox + 15 .globl _write_char + 16 .globl _hello_world_init + 17 .globl _hello_world_appcall + 18 ;-------------------------------------------------------- + 19 ; special function registers + 20 ;-------------------------------------------------------- + 21 .area RSEG (ABS,DATA) + 000000 22 .org 0x0000 + 23 ;-------------------------------------------------------- + 24 ; special function bits + 25 ;-------------------------------------------------------- + 26 .area RSEG (ABS,DATA) + 000000 27 .org 0x0000 + 28 ;-------------------------------------------------------- + 29 ; overlayable register banks + 30 ;-------------------------------------------------------- + 31 .area REG_BANK_0 (REL,OVR,DATA) + 000000 32 .ds 8 + 33 ;-------------------------------------------------------- + 34 ; internal ram data + 35 ;-------------------------------------------------------- + 36 .area DSEG (DATA) + 37 ;-------------------------------------------------------- + 38 ; overlayable items in internal ram + 39 ;-------------------------------------------------------- + 40 ;-------------------------------------------------------- + 41 ; indirectly addressable internal ram data + 42 ;-------------------------------------------------------- + 43 .area ISEG (DATA) + 44 ;-------------------------------------------------------- + 45 ; absolute internal ram data + 46 ;-------------------------------------------------------- + 47 .area IABS (ABS,DATA) + 48 .area IABS (ABS,DATA) + 49 ;-------------------------------------------------------- + 50 ; bit data + 51 ;-------------------------------------------------------- + 52 .area BSEG (BIT) + 53 ;-------------------------------------------------------- + 54 ; paged external ram data + 55 ;-------------------------------------------------------- + 56 .area PSEG (PAG,XDATA) + 57 ;-------------------------------------------------------- + 58 ; external ram data + 59 ;-------------------------------------------------------- + 60 .area XSEG (XDATA) + 001B2D 61 _handle_connection_buf_65536_59: + 001B2D 62 .ds 100 + 63 ;-------------------------------------------------------- + 64 ; absolute external ram data + 65 ;-------------------------------------------------------- + 66 .area XABS (ABS,XDATA) + 67 ;-------------------------------------------------------- + 68 ; external initialized ram data + 69 ;-------------------------------------------------------- + 70 .area XISEG (XDATA) + 71 .area HOME (CODE) + 72 .area GSINIT0 (CODE) + 73 .area GSINIT1 (CODE) + 74 .area GSINIT2 (CODE) + 75 .area GSINIT3 (CODE) + 76 .area GSINIT4 (CODE) + 77 .area GSINIT5 (CODE) + 78 .area GSINIT (CODE) + 79 .area GSFINAL (CODE) + 80 .area CSEG (CODE) + 81 ;-------------------------------------------------------- + 82 ; global & static initialisations + 83 ;-------------------------------------------------------- + 84 .area HOME (CODE) + 85 .area GSINIT (CODE) + 86 .area GSFINAL (CODE) + 87 .area GSINIT (CODE) + 88 ;-------------------------------------------------------- + 89 ; Home + 90 ;-------------------------------------------------------- + 91 .area HOME (CODE) + 92 .area HOME (CODE) + 93 ;-------------------------------------------------------- + 94 ; code + 95 ;-------------------------------------------------------- + 96 .area BANK1 (CODE) + 97 ;------------------------------------------------------------ + 98 ;Allocation info for local variables in function 'hello_world_init' + 99 ;------------------------------------------------------------ + 100 ; hello-world.c:43: hello_world_init(void) + 101 ; ----------------------------------------- + 102 ; function hello_world_init + 103 ; ----------------------------------------- + 01A00D 104 _hello_world_init: + 000007 105 ar7 = 0x07 + 000006 106 ar6 = 0x06 + 000005 107 ar5 = 0x05 + 000004 108 ar4 = 0x04 + 000003 109 ar3 = 0x03 + 000002 110 ar2 = 0x02 + 000001 111 ar1 = 0x01 + 000000 112 ar0 = 0x00 + 113 ; hello-world.c:46: uip_listen(HTONS(1000)); + 01A00D 90 E8 03 [24] 114 mov dptr,#0xe803 + 115 ; hello-world.c:47: } + 01A010 02 7F C7 [24] 116 ljmp _uip_listen + 117 ;------------------------------------------------------------ + 118 ;Allocation info for local variables in function 'hello_world_appcall' + 119 ;------------------------------------------------------------ + 120 ;s Allocated to registers r6 r7 + 121 ;------------------------------------------------------------ + 122 ; hello-world.c:57: hello_world_appcall(void) + 123 ; ----------------------------------------- + 124 ; function hello_world_appcall + 125 ; ----------------------------------------- + 01A013 126 _hello_world_appcall: + 127 ; hello-world.c:64: __xdata struct hello_world_state *s = &(uip_conn->appstate); + 01A013 74 1C [12] 128 mov a,#0x1c + 01A015 25 50 [12] 129 add a,_uip_conn + 01A017 FE [12] 130 mov r6,a + 01A018 E4 [12] 131 clr a + 01A019 35 51 [12] 132 addc a,(_uip_conn + 1) + 01A01B FF [12] 133 mov r7,a + 134 ; hello-world.c:70: if(uip_connected()) { + 01A01C 90 0A C8 [24] 135 mov dptr,#_uip_flags + 01A01F E0 [24] 136 movx a,@dptr + 01A020 30 E6 1E [24] 137 jnb acc.6,00102$ + 138 ; hello-world.c:71: PSOCK_INIT(&s->p, s->inputbuffer, sizeof(s->inputbuffer)); + 01A023 74 15 [12] 139 mov a,#0x15 + 01A025 2E [12] 140 add a,r6 + 01A026 F5 66 [12] 141 mov _psock_init_PARM_2,a + 01A028 E4 [12] 142 clr a + 01A029 3F [12] 143 addc a,r7 + 01A02A F5 67 [12] 144 mov (_psock_init_PARM_2 + 1),a + 01A02C 75 68 0A [24] 145 mov _psock_init_PARM_3,#0x0a + 01A02F 75 69 00 [24] 146 mov (_psock_init_PARM_3 + 1),#0x00 + 01A032 8E 82 [24] 147 mov dpl,r6 + 01A034 8F 83 [24] 148 mov dph,r7 + 01A036 C0 07 [24] 149 push ar7 + 01A038 C0 06 [24] 150 push ar6 + 01A03A 12 70 C4 [24] 151 lcall _psock_init + 01A03D D0 06 [24] 152 pop ar6 + 01A03F D0 07 [24] 153 pop ar7 + 01A041 154 00102$: + 155 ; hello-world.c:79: write_char('A'); + 01A041 75 82 41 [24] 156 mov dpl,#0x41 + 01A044 C0 07 [24] 157 push ar7 + 01A046 C0 06 [24] 158 push ar6 + 01A048 12 01 D8 [24] 159 lcall _write_char + 01A04B D0 06 [24] 160 pop ar6 + 01A04D D0 07 [24] 161 pop ar7 + 162 ; hello-world.c:80: handle_connection(s); + 01A04F 8E 82 [24] 163 mov dpl,r6 + 01A051 8F 83 [24] 164 mov dph,r7 + 165 ; hello-world.c:81: } + 01A053 02 A0 56 [24] 166 ljmp _handle_connection + 167 ;------------------------------------------------------------ + 168 ;Allocation info for local variables in function 'handle_connection' + 169 ;------------------------------------------------------------ + 170 ;s Allocated to registers r6 r7 + 171 ;PT_YIELD_FLAG Allocated to registers + 172 ;buf Allocated with name '_handle_connection_buf_65536_59' + 173 ;------------------------------------------------------------ + 174 ; hello-world.c:90: handle_connection(__xdata struct hello_world_state *s) + 175 ; ----------------------------------------- + 176 ; function handle_connection + 177 ; ----------------------------------------- + 01A056 178 _handle_connection: + 179 ; hello-world.c:94: PSOCK_BEGIN(&s->p); + 01A056 AE 82 [24] 180 mov r6,dpl + 01A058 AF 83 [24] 181 mov r7,dph + 01A05A E0 [24] 182 movx a,@dptr + 01A05B FC [12] 183 mov r4,a + 01A05C A3 [24] 184 inc dptr + 01A05D E0 [24] 185 movx a,@dptr + 01A05E FD [12] 186 mov r5,a + 01A05F BC 00 05 [24] 187 cjne r4,#0x00,00123$ + 01A062 BD 00 02 [24] 188 cjne r5,#0x00,00123$ + 01A065 80 08 [24] 189 sjmp 00101$ + 01A067 190 00123$: + 01A067 BC 63 56 [24] 191 cjne r4,#0x63,00108$ + 01A06A BD 00 53 [24] 192 cjne r5,#0x00,00108$ + 01A06D 80 1E [24] 193 sjmp 00102$ + 01A06F 194 00101$: + 195 ; hello-world.c:96: strtox(buf, "Hello. What is your name?\n"); + 01A06F 75 66 9E [24] 196 mov _strtox_PARM_2,#___str_0 + 01A072 75 67 2C [24] 197 mov (_strtox_PARM_2 + 1),#(___str_0 >> 8) + 01A075 90 1B 2D [24] 198 mov dptr,#_handle_connection_buf_65536_59 + 01A078 C0 07 [24] 199 push ar7 + 01A07A C0 06 [24] 200 push ar6 + 01A07C 12 02 A6 [24] 201 lcall _strtox + 01A07F D0 06 [24] 202 pop ar6 + 01A081 D0 07 [24] 203 pop ar7 + 204 ; hello-world.c:99: PSOCK_READTO(&s->p, '\n'); + 01A083 8E 82 [24] 205 mov dpl,r6 + 01A085 8F 83 [24] 206 mov dph,r7 + 01A087 74 63 [12] 207 mov a,#0x63 + 01A089 F0 [24] 208 movx @dptr,a + 01A08A E4 [12] 209 clr a + 01A08B A3 [24] 210 inc dptr + 01A08C F0 [24] 211 movx @dptr,a + 01A08D 212 00102$: + 01A08D 75 26 0A [24] 213 mov _psock_readto_PARM_2,#0x0a + 01A090 8E 82 [24] 214 mov dpl,r6 + 01A092 8F 83 [24] 215 mov dph,r7 + 01A094 C0 07 [24] 216 push ar7 + 01A096 C0 06 [24] 217 push ar6 + 01A098 12 6A 24 [24] 218 lcall _psock_readto + 01A09B E5 82 [12] 219 mov a,dpl + 01A09D D0 06 [24] 220 pop ar6 + 01A09F D0 07 [24] 221 pop ar7 + 01A0A1 70 03 [24] 222 jnz 00106$ + 01A0A3 F5 82 [12] 223 mov dpl,a + 01A0A5 22 [24] 224 ret + 01A0A6 225 00106$: + 226 ; hello-world.c:101: strtox(buf, "Name: "); + 01A0A6 75 66 B9 [24] 227 mov _strtox_PARM_2,#___str_1 + 01A0A9 75 67 2C [24] 228 mov (_strtox_PARM_2 + 1),#(___str_1 >> 8) + 01A0AC 90 1B 2D [24] 229 mov dptr,#_handle_connection_buf_65536_59 + 01A0AF C0 07 [24] 230 push ar7 + 01A0B1 C0 06 [24] 231 push ar6 + 01A0B3 12 02 A6 [24] 232 lcall _strtox + 01A0B6 D0 06 [24] 233 pop ar6 + 01A0B8 D0 07 [24] 234 pop ar7 + 235 ; hello-world.c:104: PSOCK_CLOSE(&s->p); + 01A0BA 90 0A C8 [24] 236 mov dptr,#_uip_flags + 01A0BD 74 10 [12] 237 mov a,#0x10 + 01A0BF F0 [24] 238 movx @dptr,a + 239 ; hello-world.c:106: PSOCK_END(&s->p); + 01A0C0 240 00108$: + 01A0C0 8E 82 [24] 241 mov dpl,r6 + 01A0C2 8F 83 [24] 242 mov dph,r7 + 01A0C4 E4 [12] 243 clr a + 01A0C5 F0 [24] 244 movx @dptr,a + 01A0C6 A3 [24] 245 inc dptr + 01A0C7 F0 [24] 246 movx @dptr,a + 01A0C8 75 82 02 [24] 247 mov dpl,#0x02 + 248 ; hello-world.c:107: } + 01A0CB 22 [24] 249 ret + 250 .area BANK1 (CODE) + 251 .area CONST (CODE) + 252 .area CONST (CODE) + 002C9E 253 ___str_0: + 002C9E 48 65 6C 6C 6F 2E 20 254 .ascii "Hello. What is your name?" + 57 68 61 74 20 69 73 + 20 79 6F 75 72 20 6E + 61 6D 65 3F + 002CB7 0A 255 .db 0x0a + 002CB8 00 256 .db 0x00 + 257 .area BANK1 (CODE) + 258 .area CONST (CODE) + 002CB9 259 ___str_1: + 002CB9 4E 61 6D 65 3A 20 260 .ascii "Name: " + 002CBF 00 261 .db 0x00 + 262 .area BANK1 (CODE) + 263 .area XINIT (CODE) + 264 .area CABS (ABS,CODE) diff --git a/hello-world/hello-world.sym b/hello-world/hello-world.sym new file mode 100644 index 0000000..91cfe74 --- /dev/null +++ b/hello-world/hello-world.sym @@ -0,0 +1,450 @@ + ASxxxx Assembler V02.00 + NoICE + SDCC mods (Intel 8051), page 1. +Hexadecimal [24-Bits] + +Symbol Table + + .__.$$$. = 002710 L + .__.ABS. = 000000 G + .__.CPU. = 000000 L + .__.H$L. = 000001 L + A = 0000E0 L + A.0 = 0000E0 L + A.1 = 0000E1 L + A.2 = 0000E2 L + A.3 = 0000E3 L + A.4 = 0000E4 L + A.5 = 0000E5 L + A.6 = 0000E6 L + A.7 = 0000E7 L + AC = 0000D6 L + ACC = 0000E0 L + ACC.0 = 0000E0 L + ACC.1 = 0000E1 L + ACC.2 = 0000E2 L + ACC.3 = 0000E3 L + ACC.4 = 0000E4 L + ACC.5 = 0000E5 L + ACC.6 = 0000E6 L + ACC.7 = 0000E7 L + B = 0000F0 L + B.0 = 0000F0 L + B.1 = 0000F1 L + B.2 = 0000F2 L + B.3 = 0000F3 L + B.4 = 0000F4 L + B.5 = 0000F5 L + B.6 = 0000F6 L + B.7 = 0000F7 L + CPRL2 = 0000C8 L + CT2 = 0000C9 L + CY = 0000D7 L + DPH = 000083 L + DPL = 000082 L + EA = 0000AF L + ES = 0000AC L + ET0 = 0000A9 L + ET1 = 0000AB L + ET2 = 0000AD L + EX0 = 0000A8 L + EX1 = 0000AA L + EXEN2 = 0000CB L + EXF2 = 0000CE L + F0 = 0000D5 L + IE = 0000A8 L + IE.0 = 0000A8 L + IE.1 = 0000A9 L + IE.2 = 0000AA L + IE.3 = 0000AB L + IE.4 = 0000AC L + IE.5 = 0000AD L + IE.7 = 0000AF L + ASxxxx Assembler V02.00 + NoICE + SDCC mods (Intel 8051), page 2. +Hexadecimal [24-Bits] + +Symbol Table + + IE0 = 000089 L + IE1 = 00008B L + INT0 = 0000B2 L + INT1 = 0000B3 L + IP = 0000B8 L + IP.0 = 0000B8 L + IP.1 = 0000B9 L + IP.2 = 0000BA L + IP.3 = 0000BB L + IP.4 = 0000BC L + IP.5 = 0000BD L + IT0 = 000088 L + IT1 = 00008A L + OV = 0000D2 L + P = 0000D0 L + P0 = 000080 L + P0.0 = 000080 L + P0.1 = 000081 L + P0.2 = 000082 L + P0.3 = 000083 L + P0.4 = 000084 L + P0.5 = 000085 L + P0.6 = 000086 L + P0.7 = 000087 L + P1 = 000090 L + P1.0 = 000090 L + P1.1 = 000091 L + P1.2 = 000092 L + P1.3 = 000093 L + P1.4 = 000094 L + P1.5 = 000095 L + P1.6 = 000096 L + P1.7 = 000097 L + P2 = 0000A0 L + P2.0 = 0000A0 L + P2.1 = 0000A1 L + P2.2 = 0000A2 L + P2.3 = 0000A3 L + P2.4 = 0000A4 L + P2.5 = 0000A5 L + P2.6 = 0000A6 L + P2.7 = 0000A7 L + P3 = 0000B0 L + P3.0 = 0000B0 L + P3.1 = 0000B1 L + P3.2 = 0000B2 L + P3.3 = 0000B3 L + P3.4 = 0000B4 L + P3.5 = 0000B5 L + P3.6 = 0000B6 L + P3.7 = 0000B7 L + PCON = 000087 L + PS = 0000BC L + PSW = 0000D0 L + PSW.0 = 0000D0 L + ASxxxx Assembler V02.00 + NoICE + SDCC mods (Intel 8051), page 3. +Hexadecimal [24-Bits] + +Symbol Table + + PSW.1 = 0000D1 L + PSW.2 = 0000D2 L + PSW.3 = 0000D3 L + PSW.4 = 0000D4 L + PSW.5 = 0000D5 L + PSW.6 = 0000D6 L + PSW.7 = 0000D7 L + PT0 = 0000B9 L + PT1 = 0000BB L + PT2 = 0000BD L + PX0 = 0000B8 L + PX1 = 0000BA L + RB8 = 00009A L + RCAP2H = 0000CB L + RCAP2L = 0000CA L + RCLK = 0000CD L + REN = 00009C L + RI = 000098 L + RS0 = 0000D3 L + RS1 = 0000D4 L + RXD = 0000B0 L + SBUF = 000099 L + SCON = 000098 L + SCON.0 = 000098 L + SCON.1 = 000099 L + SCON.2 = 00009A L + SCON.3 = 00009B L + SCON.4 = 00009C L + SCON.5 = 00009D L + SCON.6 = 00009E L + SCON.7 = 00009F L + SM0 = 00009F L + SM1 = 00009E L + SM2 = 00009D L + SP = 000081 L + T2CON = 0000C8 L + T2CON.0 = 0000C8 L + T2CON.1 = 0000C9 L + T2CON.2 = 0000CA L + T2CON.3 = 0000CB L + T2CON.4 = 0000CC L + T2CON.5 = 0000CD L + T2CON.6 = 0000CE L + T2CON.7 = 0000CF L + TB8 = 00009B L + TCLK = 0000CC L + TCON = 000088 L + TCON.0 = 000088 L + TCON.1 = 000089 L + TCON.2 = 00008A L + TCON.3 = 00008B L + TCON.4 = 00008C L + TCON.5 = 00008D L + TCON.6 = 00008E L + TCON.7 = 00008F L + ASxxxx Assembler V02.00 + NoICE + SDCC mods (Intel 8051), page 4. +Hexadecimal [24-Bits] + +Symbol Table + + TF0 = 00008D L + TF1 = 00008F L + TF2 = 0000CF L + TH0 = 00008C L + TH1 = 00008D L + TH2 = 0000CD L + TI = 000099 L + TL0 = 00008A L + TL1 = 00008B L + TL2 = 0000CC L + TMOD = 000089 L + TR0 = 00008C L + TR1 = 00008E L + TR2 = 0000CA L + TXD = 0000B1 L + 18 ___str_0 000000 R + 18 ___str_1 00001B R + 17 _handle_connection 000049 R + A _handle_connection_buf_65536_59 000000 R + 17 _hello_world_appcall 000006 GR + 17 _hello_world_init 000000 GR + _psock_init ****** GX + _psock_init_PARM_2 ****** GX + _psock_init_PARM_3 ****** GX + _psock_readto ****** GX + _psock_readto_PARM_2 ****** GX + _strtox ****** GX + _strtox_PARM_2 ****** GX + _uip_conn ****** GX + _uip_flags ****** GX + _uip_listen ****** GX + _write_char ****** GX + a = 0000E0 L + a.0 = 0000E0 L + a.1 = 0000E1 L + a.2 = 0000E2 L + a.3 = 0000E3 L + a.4 = 0000E4 L + a.5 = 0000E5 L + a.6 = 0000E6 L + a.7 = 0000E7 L + ac = 0000D6 L + acc = 0000E0 L + acc.0 = 0000E0 L + acc.1 = 0000E1 L + acc.2 = 0000E2 L + acc.3 = 0000E3 L + acc.4 = 0000E4 L + acc.5 = 0000E5 L + acc.6 = 0000E6 L + acc.7 = 0000E7 L + ar0 = 000000 + ar1 = 000001 + ar2 = 000002 + ar3 = 000003 + ASxxxx Assembler V02.00 + NoICE + SDCC mods (Intel 8051), page 5. +Hexadecimal [24-Bits] + +Symbol Table + + ar4 = 000004 + ar5 = 000005 + ar6 = 000006 + ar7 = 000007 + b = 0000F0 L + b.0 = 0000F0 L + b.1 = 0000F1 L + b.2 = 0000F2 L + b.3 = 0000F3 L + b.4 = 0000F4 L + b.5 = 0000F5 L + b.6 = 0000F6 L + b.7 = 0000F7 L + cprl2 = 0000C8 L + ct2 = 0000C9 L + cy = 0000D7 L + dph = 000083 L + dpl = 000082 L + ea = 0000AF L + es = 0000AC L + et0 = 0000A9 L + et1 = 0000AB L + et2 = 0000AD L + ex0 = 0000A8 L + ex1 = 0000AA L + exen2 = 0000CB L + exf2 = 0000CE L + f0 = 0000D5 L + ie = 0000A8 L + ie.0 = 0000A8 L + ie.1 = 0000A9 L + ie.2 = 0000AA L + ie.3 = 0000AB L + ie.4 = 0000AC L + ie.5 = 0000AD L + ie.7 = 0000AF L + ie0 = 000089 L + ie1 = 00008B L + int0 = 0000B2 L + int1 = 0000B3 L + ip = 0000B8 L + ip.0 = 0000B8 L + ip.1 = 0000B9 L + ip.2 = 0000BA L + ip.3 = 0000BB L + ip.4 = 0000BC L + ip.5 = 0000BD L + it0 = 000088 L + it1 = 00008A L + ov = 0000D2 L + p = 0000D0 L + p0 = 000080 L + p0.0 = 000080 L + p0.1 = 000081 L + p0.2 = 000082 L + ASxxxx Assembler V02.00 + NoICE + SDCC mods (Intel 8051), page 6. +Hexadecimal [24-Bits] + +Symbol Table + + p0.3 = 000083 L + p0.4 = 000084 L + p0.5 = 000085 L + p0.6 = 000086 L + p0.7 = 000087 L + p1 = 000090 L + p1.0 = 000090 L + p1.1 = 000091 L + p1.2 = 000092 L + p1.3 = 000093 L + p1.4 = 000094 L + p1.5 = 000095 L + p1.6 = 000096 L + p1.7 = 000097 L + p2 = 0000A0 L + p2.0 = 0000A0 L + p2.1 = 0000A1 L + p2.2 = 0000A2 L + p2.3 = 0000A3 L + p2.4 = 0000A4 L + p2.5 = 0000A5 L + p2.6 = 0000A6 L + p2.7 = 0000A7 L + p3 = 0000B0 L + p3.0 = 0000B0 L + p3.1 = 0000B1 L + p3.2 = 0000B2 L + p3.3 = 0000B3 L + p3.4 = 0000B4 L + p3.5 = 0000B5 L + p3.6 = 0000B6 L + p3.7 = 0000B7 L + pcon = 000087 L + ps = 0000BC L + psw = 0000D0 L + psw.0 = 0000D0 L + psw.1 = 0000D1 L + psw.2 = 0000D2 L + psw.3 = 0000D3 L + psw.4 = 0000D4 L + psw.5 = 0000D5 L + psw.6 = 0000D6 L + psw.7 = 0000D7 L + pt0 = 0000B9 L + pt1 = 0000BB L + pt2 = 0000BD L + px0 = 0000B8 L + px1 = 0000BA L + rb8 = 00009A L + rcap2h = 0000CB L + rcap2l = 0000CA L + rclk = 0000CD L + ren = 00009C L + ri = 000098 L + rs0 = 0000D3 L + ASxxxx Assembler V02.00 + NoICE + SDCC mods (Intel 8051), page 7. +Hexadecimal [24-Bits] + +Symbol Table + + rs1 = 0000D4 L + rxd = 0000B0 L + sbuf = 000099 L + scon = 000098 L + scon.0 = 000098 L + scon.1 = 000099 L + scon.2 = 00009A L + scon.3 = 00009B L + scon.4 = 00009C L + scon.5 = 00009D L + scon.6 = 00009E L + scon.7 = 00009F L + sm0 = 00009F L + sm1 = 00009E L + sm2 = 00009D L + sp = 000081 L + t2con = 0000C8 L + t2con.0 = 0000C8 L + t2con.1 = 0000C9 L + t2con.2 = 0000CA L + t2con.3 = 0000CB L + t2con.4 = 0000CC L + t2con.5 = 0000CD L + t2con.6 = 0000CE L + t2con.7 = 0000CF L + tb8 = 00009B L + tclk = 0000CC L + tcon = 000088 L + tcon.0 = 000088 L + tcon.1 = 000089 L + tcon.2 = 00008A L + tcon.3 = 00008B L + tcon.4 = 00008C L + tcon.5 = 00008D L + tcon.6 = 00008E L + tcon.7 = 00008F L + tf0 = 00008D L + tf1 = 00008F L + tf2 = 0000CF L + th0 = 00008C L + th1 = 00008D L + th2 = 0000CD L + ti = 000099 L + tl0 = 00008A L + tl1 = 00008B L + tl2 = 0000CC L + tmod = 000089 L + tr0 = 00008C L + tr1 = 00008E L + tr2 = 0000CA L + txd = 0000B1 L + + ASxxxx Assembler V02.00 + NoICE + SDCC mods (Intel 8051), page 8. +Hexadecimal [24-Bits] + +Area Table + + 0 _CODE size 0 flags 0 + 1 RSEG size 0 flags 8 + 2 RSEG0 size 0 flags 8 + 3 RSEG1 size 0 flags 8 + 4 REG_BANK_0 size 8 flags 4 + 5 DSEG size 0 flags 0 + 6 ISEG size 0 flags 0 + 7 IABS size 0 flags 8 + 8 BSEG size 0 flags 80 + 9 PSEG size 0 flags 50 + A XSEG size 64 flags 40 + B XABS size 0 flags 48 + C XISEG size 0 flags 40 + D HOME size 0 flags 20 + E GSINIT0 size 0 flags 20 + F GSINIT1 size 0 flags 20 + 10 GSINIT2 size 0 flags 20 + 11 GSINIT3 size 0 flags 20 + 12 GSINIT4 size 0 flags 20 + 13 GSINIT5 size 0 flags 20 + 14 GSINIT size 0 flags 20 + 15 GSFINAL size 0 flags 20 + 16 CSEG size 0 flags 20 + 17 BANK1 size BF flags 20 + 18 CONST size 22 flags 20 + 19 XINIT size 0 flags 20 + 1A CABS size 0 flags 28 +