annotate emu_MCS-51/STARTUP.LST @ 33:02241452f397

8052 port code added to repo
author james <jb302@eecs.qmul.ac.uk>
date Tue, 15 Apr 2014 15:49:16 +0100
parents
children
rev   line source
jb302@33 1 A51 MACRO ASSEMBLER STARTUP 04/15/2014 15:32:07 PAGE 1
jb302@33 2
jb302@33 3
jb302@33 4 MACRO ASSEMBLER A51 V8.02
jb302@33 5 OBJECT MODULE PLACED IN STARTUP.OBJ
jb302@33 6 ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE STARTUP.A51 SET(SMALL) DEBUG EP
jb302@33 7
jb302@33 8 LOC OBJ LINE SOURCE
jb302@33 9
jb302@33 10 1 $nomod51
jb302@33 11 2 ;------------------------------------------------------------------------------
jb302@33 12 3 ; This file is part of the C51 Compiler package
jb302@33 13 4 ; Copyright (c) 1988-2005 Keil Elektronik GmbH and Keil Software, Inc.
jb302@33 14 5 ; Version 8.01
jb302@33 15 6 ;
jb302@33 16 7 ; *** <<< Use Configuration Wizard in Context Menu >>> ***
jb302@33 17 8 ;------------------------------------------------------------------------------
jb302@33 18 9 ; STARTUP.A51: This code is executed after processor reset.
jb302@33 19 10 ;
jb302@33 20 11 ; To translate this file use A51 with the following invocation:
jb302@33 21 12 ;
jb302@33 22 13 ; A51 STARTUP.A51
jb302@33 23 14 ;
jb302@33 24 15 ; To link the modified STARTUP.OBJ file to your application use the following
jb302@33 25 16 ; Lx51 invocation:
jb302@33 26 17 ;
jb302@33 27 18 ; Lx51 your object file list, STARTUP.OBJ controls
jb302@33 28 19 ;
jb302@33 29 20 ;------------------------------------------------------------------------------
jb302@33 30 21 ;
jb302@33 31 22 ; User-defined <h> Power-On Initialization of Memory
jb302@33 32 23 ;
jb302@33 33 24 ; With the following EQU statements the initialization of memory
jb302@33 34 25 ; at processor reset can be defined:
jb302@33 35 26 ;
jb302@33 36 27 ; <o> IDATALEN: IDATA memory size <0x0-0x100>
jb302@33 37 28 ; <i> Note: The absolute start-address of IDATA memory is always 0
jb302@33 38 29 ; <i> The IDATA space overlaps physically the DATA and BIT areas.
jb302@33 39 0080 30 IDATALEN EQU 80H
jb302@33 40 31 ;
jb302@33 41 32 ; <o> XDATASTART: XDATA memory start address <0x0-0xFFFF>
jb302@33 42 33 ; <i> The absolute start address of XDATA memory
jb302@33 43 0000 34 XDATASTART EQU 0
jb302@33 44 35 ;
jb302@33 45 36 ; <o> XDATALEN: XDATA memory size <0x0-0xFFFF>
jb302@33 46 37 ; <i> The length of XDATA memory in bytes.
jb302@33 47 0000 38 XDATALEN EQU 0
jb302@33 48 39 ;
jb302@33 49 40 ; <o> PDATASTART: PDATA memory start address <0x0-0xFFFF>
jb302@33 50 41 ; <i> The absolute start address of PDATA memory
jb302@33 51 0000 42 PDATASTART EQU 0H
jb302@33 52 43 ;
jb302@33 53 44 ; <o> PDATALEN: PDATA memory size <0x0-0xFF>
jb302@33 54 45 ; <i> The length of PDATA memory in bytes.
jb302@33 55 0000 46 PDATALEN EQU 0H
jb302@33 56 47 ;
jb302@33 57 48 ;</h>
jb302@33 58 49 ;------------------------------------------------------------------------------
jb302@33 59 50 ;
jb302@33 60 51 ;<h> Reentrant Stack Initialization
jb302@33 61 52 ;
jb302@33 62 53 ; The following EQU statements define the stack pointer for reentrant
jb302@33 63 54 ; functions and initialized it:
jb302@33 64 55 ;
jb302@33 65 56 ; <h> Stack Space for reentrant functions in the SMALL model.
jb302@33 66 57 ; <q> IBPSTACK: Enable SMALL model reentrant stack
jb302@33 67 58 ; <i> Stack space for reentrant functions in the SMALL model.
jb302@33 68 A51 MACRO ASSEMBLER STARTUP 04/15/2014 15:32:07 PAGE 2
jb302@33 69
jb302@33 70 0000 59 IBPSTACK EQU 0 ; set to 1 if small reentrant is used.
jb302@33 71 60 ; <o> IBPSTACKTOP: End address of SMALL model stack <0x0-0xFF>
jb302@33 72 61 ; <i> Set the top of the stack to the highest location.
jb302@33 73 0100 62 IBPSTACKTOP EQU 0xFF +1 ; default 0FFH+1
jb302@33 74 63 ; </h>
jb302@33 75 64 ;
jb302@33 76 65 ; <h> Stack Space for reentrant functions in the LARGE model.
jb302@33 77 66 ; <q> XBPSTACK: Enable LARGE model reentrant stack
jb302@33 78 67 ; <i> Stack space for reentrant functions in the LARGE model.
jb302@33 79 0000 68 XBPSTACK EQU 0 ; set to 1 if large reentrant is used.
jb302@33 80 69 ; <o> XBPSTACKTOP: End address of LARGE model stack <0x0-0xFFFF>
jb302@33 81 70 ; <i> Set the top of the stack to the highest location.
jb302@33 82 0000 71 XBPSTACKTOP EQU 0xFFFF +1 ; default 0FFFFH+1
jb302@33 83 72 ; </h>
jb302@33 84 73 ;
jb302@33 85 74 ; <h> Stack Space for reentrant functions in the COMPACT model.
jb302@33 86 75 ; <q> PBPSTACK: Enable COMPACT model reentrant stack
jb302@33 87 76 ; <i> Stack space for reentrant functions in the COMPACT model.
jb302@33 88 0000 77 PBPSTACK EQU 0 ; set to 1 if compact reentrant is used.
jb302@33 89 78 ;
jb302@33 90 79 ; <o> PBPSTACKTOP: End address of COMPACT model stack <0x0-0xFFFF>
jb302@33 91 80 ; <i> Set the top of the stack to the highest location.
jb302@33 92 0100 81 PBPSTACKTOP EQU 0xFF +1 ; default 0FFH+1
jb302@33 93 82 ; </h>
jb302@33 94 83 ;</h>
jb302@33 95 84 ;------------------------------------------------------------------------------
jb302@33 96 85 ;
jb302@33 97 86 ; Memory Page for Using the Compact Model with 64 KByte xdata RAM
jb302@33 98 87 ; <e>Compact Model Page Definition
jb302@33 99 88 ;
jb302@33 100 89 ; <i>Define the XDATA page used for PDATA variables.
jb302@33 101 90 ; <i>PPAGE must conform with the PPAGE set in the linker invocation.
jb302@33 102 91 ;
jb302@33 103 92 ; Enable pdata memory page initalization
jb302@33 104 0000 93 PPAGEENABLE EQU 0 ; set to 1 if pdata object are used.
jb302@33 105 94 ;
jb302@33 106 95 ; <o> PPAGE number <0x0-0xFF>
jb302@33 107 96 ; <i> uppermost 256-byte address of the page used for PDATA variables.
jb302@33 108 0000 97 PPAGE EQU 0
jb302@33 109 98 ;
jb302@33 110 99 ; <o> SFR address which supplies uppermost address byte <0x0-0xFF>
jb302@33 111 100 ; <i> most 8051 variants use P2 as uppermost address byte
jb302@33 112 00A0 101 PPAGE_SFR DATA 0A0H
jb302@33 113 102 ;
jb302@33 114 103 ; </e>
jb302@33 115 104 ;------------------------------------------------------------------------------
jb302@33 116 105
jb302@33 117 106 ; Standard SFR Symbols
jb302@33 118 00E0 107 ACC DATA 0E0H
jb302@33 119 00F0 108 B DATA 0F0H
jb302@33 120 0081 109 SP DATA 81H
jb302@33 121 0082 110 DPL DATA 82H
jb302@33 122 0083 111 DPH DATA 83H
jb302@33 123 112
jb302@33 124 113 NAME ?C_STARTUP
jb302@33 125 114
jb302@33 126 115
jb302@33 127 116 ?C_C51STARTUP SEGMENT CODE
jb302@33 128 117 ?STACK SEGMENT IDATA
jb302@33 129 118
jb302@33 130 ---- 119 RSEG ?STACK
jb302@33 131 0000 120 DS 1
jb302@33 132 121
jb302@33 133 122 EXTRN CODE (?C_START)
jb302@33 134 123 PUBLIC ?C_STARTUP
jb302@33 135 124
jb302@33 136 A51 MACRO ASSEMBLER STARTUP 04/15/2014 15:32:07 PAGE 3
jb302@33 137
jb302@33 138 ---- 125 CSEG AT 0
jb302@33 139 0000 020000 F 126 ?C_STARTUP: LJMP STARTUP1
jb302@33 140 127
jb302@33 141 ---- 128 RSEG ?C_C51STARTUP
jb302@33 142 129
jb302@33 143 0000 130 STARTUP1:
jb302@33 144 131
jb302@33 145 132 IF IDATALEN <> 0
jb302@33 146 0000 787F 133 MOV R0,#IDATALEN - 1
jb302@33 147 0002 E4 134 CLR A
jb302@33 148 0003 F6 135 IDATALOOP: MOV @R0,A
jb302@33 149 0004 D8FD 136 DJNZ R0,IDATALOOP
jb302@33 150 137 ENDIF
jb302@33 151 138
jb302@33 152 139 IF XDATALEN <> 0
jb302@33 153 MOV DPTR,#XDATASTART
jb302@33 154 MOV R7,#LOW (XDATALEN)
jb302@33 155 IF (LOW (XDATALEN)) <> 0
jb302@33 156 MOV R6,#(HIGH (XDATALEN)) +1
jb302@33 157 ELSE
jb302@33 158 MOV R6,#HIGH (XDATALEN)
jb302@33 159 ENDIF
jb302@33 160 CLR A
jb302@33 161 XDATALOOP: MOVX @DPTR,A
jb302@33 162 INC DPTR
jb302@33 163 DJNZ R7,XDATALOOP
jb302@33 164 DJNZ R6,XDATALOOP
jb302@33 165 ENDIF
jb302@33 166 153
jb302@33 167 154 IF PPAGEENABLE <> 0
jb302@33 168 MOV PPAGE_SFR,#PPAGE
jb302@33 169 ENDIF
jb302@33 170 157
jb302@33 171 158 IF PDATALEN <> 0
jb302@33 172 MOV R0,#LOW (PDATASTART)
jb302@33 173 MOV R7,#LOW (PDATALEN)
jb302@33 174 CLR A
jb302@33 175 PDATALOOP: MOVX @R0,A
jb302@33 176 INC R0
jb302@33 177 DJNZ R7,PDATALOOP
jb302@33 178 ENDIF
jb302@33 179 166
jb302@33 180 167 IF IBPSTACK <> 0
jb302@33 181 EXTRN DATA (?C_IBP)
jb302@33 182
jb302@33 183 MOV ?C_IBP,#LOW IBPSTACKTOP
jb302@33 184 ENDIF
jb302@33 185 172
jb302@33 186 173 IF XBPSTACK <> 0
jb302@33 187 EXTRN DATA (?C_XBP)
jb302@33 188
jb302@33 189 MOV ?C_XBP,#HIGH XBPSTACKTOP
jb302@33 190 MOV ?C_XBP+1,#LOW XBPSTACKTOP
jb302@33 191 ENDIF
jb302@33 192 179
jb302@33 193 180 IF PBPSTACK <> 0
jb302@33 194 EXTRN DATA (?C_PBP)
jb302@33 195 MOV ?C_PBP,#LOW PBPSTACKTOP
jb302@33 196 ENDIF
jb302@33 197 184
jb302@33 198 0006 758100 F 185 MOV SP,#?STACK-1
jb302@33 199 186
jb302@33 200 187 ; This code is required if you use L51_BANK.A51 with Banking Mode 4
jb302@33 201 188 ;<h> Code Banking
jb302@33 202 189 ; <q> Select Bank 0 for L51_BANK.A51 Mode 4
jb302@33 203 190
jb302@33 204 A51 MACRO ASSEMBLER STARTUP 04/15/2014 15:32:07 PAGE 4
jb302@33 205
jb302@33 206
jb302@33 207
jb302@33 208
jb302@33 209
jb302@33 210 195 ;</h>
jb302@33 211 0009 020000 F 196 LJMP ?C_START
jb302@33 212 197
jb302@33 213 198 END
jb302@33 214 A51 MACRO ASSEMBLER STARTUP 04/15/2014 15:32:07 PAGE 5
jb302@33 215
jb302@33 216 SYMBOL TABLE LISTING
jb302@33 217 ------ ----- -------
jb302@33 218
jb302@33 219
jb302@33 220 N A M E T Y P E V A L U E ATTRIBUTES
jb302@33 221
jb302@33 222 ?C_C51STARTUP. . . C SEG 000CH REL=UNIT
jb302@33 223 ?C_START . . . . . C ADDR ----- EXT
jb302@33 224 ?C_STARTUP . . . . C ADDR 0000H A
jb302@33 225 ?STACK . . . . . . I SEG 0001H REL=UNIT
jb302@33 226 ACC. . . . . . . . D ADDR 00E0H A
jb302@33 227 B. . . . . . . . . D ADDR 00F0H A
jb302@33 228 DPH. . . . . . . . D ADDR 0083H A
jb302@33 229 DPL. . . . . . . . D ADDR 0082H A
jb302@33 230 IBPSTACK . . . . . N NUMB 0000H A
jb302@33 231 IBPSTACKTOP. . . . N NUMB 0100H A
jb302@33 232 IDATALEN . . . . . N NUMB 0080H A
jb302@33 233 IDATALOOP. . . . . C ADDR 0003H R SEG=?C_C51STARTUP
jb302@33 234 PBPSTACK . . . . . N NUMB 0000H A
jb302@33 235 PBPSTACKTOP. . . . N NUMB 0100H A
jb302@33 236 PDATALEN . . . . . N NUMB 0000H A
jb302@33 237 PDATASTART . . . . N NUMB 0000H A
jb302@33 238 PPAGE. . . . . . . N NUMB 0000H A
jb302@33 239 PPAGEENABLE. . . . N NUMB 0000H A
jb302@33 240 PPAGE_SFR. . . . . D ADDR 00A0H A
jb302@33 241 SP . . . . . . . . D ADDR 0081H A
jb302@33 242 STARTUP1 . . . . . C ADDR 0000H R SEG=?C_C51STARTUP
jb302@33 243 XBPSTACK . . . . . N NUMB 0000H A
jb302@33 244 XBPSTACKTOP. . . . N NUMB 0000H A
jb302@33 245 XDATALEN . . . . . N NUMB 0000H A
jb302@33 246 XDATASTART . . . . N NUMB 0000H A
jb302@33 247
jb302@33 248
jb302@33 249 REGISTER BANK(S) USED: 0
jb302@33 250
jb302@33 251
jb302@33 252 ASSEMBLY COMPLETE. 0 WARNING(S), 0 ERROR(S)