1 1 ;--------------------------------------------------------
2 2 ; File Created by SDCC : FreeWare ANSI-C Compiler
3 3 ; Version 2.1.9Ga Sun Jan 16 17:31:32 2000
5 5 ;--------------------------------------------------------
7 7 ;--------------------------------------------------------
8 8 ; publics variables in this module
9 9 ;--------------------------------------------------------
12 12 .globl _longjmp_PARM_2
13 13 ;--------------------------------------------------------
14 14 ; special function registers
15 15 ;--------------------------------------------------------
16 0080 16 G$P0$0$0 == 0x0080
18 0090 18 G$P1$0$0 == 0x0090
20 00A0 20 G$P2$0$0 == 0x00a0
22 00B0 22 G$P3$0$0 == 0x00b0
24 00D0 24 G$PSW$0$0 == 0x00d0
26 00E0 26 G$ACC$0$0 == 0x00e0
28 00F0 28 G$B$0$0 == 0x00f0
30 0081 30 G$SP$0$0 == 0x0081
32 0082 32 G$DPL$0$0 == 0x0082
34 0083 34 G$DPH$0$0 == 0x0083
36 0087 36 G$PCON$0$0 == 0x0087
37 0087 37 _PCON = 0x0087
38 0088 38 G$TCON$0$0 == 0x0088
39 0088 39 _TCON = 0x0088
40 0089 40 G$TMOD$0$0 == 0x0089
41 0089 41 _TMOD = 0x0089
42 008A 42 G$TL0$0$0 == 0x008a
44 008B 44 G$TL1$0$0 == 0x008b
46 008C 46 G$TH0$0$0 == 0x008c
48 008D 48 G$TH1$0$0 == 0x008d
50 008E 50 G$AUXR$0$0 == 0x008e
51 008E 51 _AUXR = 0x008e
52 00A8 52 G$IE$0$0 == 0x00a8
54 00B8 54 G$IP$0$0 == 0x00b8
56 0098 56 G$SCON$0$0 == 0x0098
57 0098 57 _SCON = 0x0098
58 0099 58 G$SBUF$0$0 == 0x0099
59 0099 59 _SBUF = 0x0099
60 00C8 60 G$T2CON$0$0 == 0x00c8
61 00C8 61 _T2CON = 0x00c8
62 00CB 62 G$RCAP2H$0$0 == 0x00cb
63 00CB 63 _RCAP2H = 0x00cb
64 00CA 64 G$RCAP2L$0$0 == 0x00ca
65 00CA 65 _RCAP2L = 0x00ca
66 66 ;--------------------------------------------------------
67 67 ; special function bits
68 68 ;--------------------------------------------------------
69 00D7 69 G$CY$0$0 == 0x00d7
71 00D6 71 G$AC$0$0 == 0x00d6
73 00D5 73 G$F0$0$0 == 0x00d5
75 00D4 75 G$RS1$0$0 == 0x00d4
77 00D3 77 G$RS0$0$0 == 0x00d3
79 00D2 79 G$OV$0$0 == 0x00d2
81 00D0 81 G$P$0$0 == 0x00d0
83 008F 83 G$TF1$0$0 == 0x008f
85 008E 85 G$TR1$0$0 == 0x008e
87 008D 87 G$TF0$0$0 == 0x008d
89 008C 89 G$TR0$0$0 == 0x008c
91 008B 91 G$IE1$0$0 == 0x008b
93 008A 93 G$IT1$0$0 == 0x008a
95 0089 95 G$IE0$0$0 == 0x0089
97 0088 97 G$IT0$0$0 == 0x0088
99 00AF 99 G$EA$0$0 == 0x00af
100 00AF 100 _EA = 0x00af
101 00AC 101 G$ES$0$0 == 0x00ac
102 00AC 102 _ES = 0x00ac
103 00AB 103 G$ET1$0$0 == 0x00ab
104 00AB 104 _ET1 = 0x00ab
105 00AA 105 G$EX1$0$0 == 0x00aa
106 00AA 106 _EX1 = 0x00aa
107 00A9 107 G$ET0$0$0 == 0x00a9
108 00A9 108 _ET0 = 0x00a9
109 00A8 109 G$EX0$0$0 == 0x00a8
110 00A8 110 _EX0 = 0x00a8
111 00BC 111 G$PS$0$0 == 0x00bc
112 00BC 112 _PS = 0x00bc
113 00BB 113 G$PT1$0$0 == 0x00bb
114 00BB 114 _PT1 = 0x00bb
115 00BA 115 G$PX1$0$0 == 0x00ba
116 00BA 116 _PX1 = 0x00ba
117 00B9 117 G$PT0$0$0 == 0x00b9
118 00B9 118 _PT0 = 0x00b9
119 00B8 119 G$PX0$0$0 == 0x00b8
120 00B8 120 _PX0 = 0x00b8
121 00B7 121 G$RD$0$0 == 0x00b7
122 00B7 122 _RD = 0x00b7
123 00B6 123 G$WR$0$0 == 0x00b6
124 00B6 124 _WR = 0x00b6
125 00B5 125 G$T1$0$0 == 0x00b5
126 00B5 126 _T1 = 0x00b5
127 00B4 127 G$T0$0$0 == 0x00b4
128 00B4 128 _T0 = 0x00b4
129 00B3 129 G$INT1$0$0 == 0x00b3
130 00B3 130 _INT1 = 0x00b3
131 00B2 131 G$INT0$0$0 == 0x00b2
132 00B2 132 _INT0 = 0x00b2
133 00B1 133 G$TXD$0$0 == 0x00b1
134 00B1 134 _TXD = 0x00b1
135 00B0 135 G$RXD$0$0 == 0x00b0
136 00B0 136 _RXD = 0x00b0
137 0090 137 G$P1_0$0$0 == 0x0090
138 0090 138 _P1_0 = 0x0090
139 0091 139 G$P1_1$0$0 == 0x0091
140 0091 140 _P1_1 = 0x0091
141 0092 141 G$P1_2$0$0 == 0x0092
142 0092 142 _P1_2 = 0x0092
143 0093 143 G$P1_3$0$0 == 0x0093
144 0093 144 _P1_3 = 0x0093
145 0094 145 G$P1_4$0$0 == 0x0094
146 0094 146 _P1_4 = 0x0094
147 0095 147 G$P1_5$0$0 == 0x0095
148 0095 148 _P1_5 = 0x0095
149 0096 149 G$P1_6$0$0 == 0x0096
150 0096 150 _P1_6 = 0x0096
151 0097 151 G$P1_7$0$0 == 0x0097
152 0097 152 _P1_7 = 0x0097
153 009F 153 G$SM0$0$0 == 0x009f
154 009F 154 _SM0 = 0x009f
155 009E 155 G$SM1$0$0 == 0x009e
156 009E 156 _SM1 = 0x009e
157 009D 157 G$SM2$0$0 == 0x009d
158 009D 158 _SM2 = 0x009d
159 009C 159 G$REN$0$0 == 0x009c
160 009C 160 _REN = 0x009c
161 009B 161 G$TB8$0$0 == 0x009b
162 009B 162 _TB8 = 0x009b
163 009A 163 G$RB8$0$0 == 0x009a
164 009A 164 _RB8 = 0x009a
165 0099 165 G$TI$0$0 == 0x0099
166 0099 166 _TI = 0x0099
167 0098 167 G$RI$0$0 == 0x0098
168 0098 168 _RI = 0x0098
169 00C8 169 G$T2CON_0$0$0 == 0x00c8
170 00C8 170 _T2CON_0 = 0x00c8
171 00C9 171 G$T2CON_1$0$0 == 0x00c9
172 00C9 172 _T2CON_1 = 0x00c9
173 00CA 173 G$T2CON_2$0$0 == 0x00ca
174 00CA 174 _T2CON_2 = 0x00ca
175 00CB 175 G$T2CON_3$0$0 == 0x00cb
176 00CB 176 _T2CON_3 = 0x00cb
177 00CC 177 G$T2CON_4$0$0 == 0x00cc
178 00CC 178 _T2CON_4 = 0x00cc
179 00CD 179 G$T2CON_5$0$0 == 0x00cd
180 00CD 180 _T2CON_5 = 0x00cd
181 00CE 181 G$T2CON_6$0$0 == 0x00ce
182 00CE 182 _T2CON_6 = 0x00ce
183 00CF 183 G$T2CON_7$0$0 == 0x00cf
184 00CF 184 _T2CON_7 = 0x00cf
185 185 ;--------------------------------------------------------
186 186 ; internal ram data
187 187 ;--------------------------------------------------------
188 188 .area DSEG (DATA)
189 0000 189 _setjmp_sloc0_1_0:
191 191 ;--------------------------------------------------------
192 192 ; overlayable items in internal ram
193 193 ;--------------------------------------------------------
194 194 .area OSEG (OVR,DATA)
195 195 ;--------------------------------------------------------
196 196 ; indirectly addressable internal ram data
197 197 ;--------------------------------------------------------
198 198 .area ISEG (DATA)
199 199 ;--------------------------------------------------------
201 201 ;--------------------------------------------------------
203 203 ;--------------------------------------------------------
204 204 ; external ram data
205 205 ;--------------------------------------------------------
206 206 .area XSEG (XDATA)
207 0000 207 _longjmp_PARM_2:
209 0002 209 _longjmp_bp_1_1:
211 0005 211 _setjmp_bp_1_1:
213 213 ;--------------------------------------------------------
214 214 ; global & static initialisations
215 215 ;--------------------------------------------------------
216 216 .area GSINIT (CODE)
217 217 ;--------------------------------------------------------
219 219 ;--------------------------------------------------------
220 220 .area CSEG (CODE)
221 0000 221 G$longjmp$0$0 ==.
223 223 ; -----------------------------------------
224 224 ; function longjmp
225 225 ; -----------------------------------------
236 0000 C0 F0 236 push b
237 0002 C0 83 237 push dph
238 0004 C0 82 238 push dpl
239 0006 90s00r02 239 mov dptr,#_longjmp_bp_1_1
240 0009 D0 E0 240 pop acc
241 000B F0 241 movx @dptr,a
242 000C D0 E0 242 pop acc
244 000F F0 244 movx @dptr,a
245 0010 D0 E0 245 pop acc
247 0013 F0 247 movx @dptr,a
249 0014 90s00r02 249 mov dptr,#_longjmp_bp_1_1
250 0017 E0 250 movx a,@dptr
253 001A E0 253 movx a,@dptr
256 001D E0 256 movx a,@dptr
258 001F 74 02 258 mov a,#0x02
260 0022 F5 82 260 mov dpl,a
261 261 ; Peephole 180 changed mov to clr
263 0025 3B 263 addc a,r3
264 0026 F5 83 264 mov dph,a
265 0028 8C F0 265 mov b,r4
266 002A 12s00r00 266 lcall __gptrget
269 002E 8D 00 269 mov ar0,r5
270 0030 74 01 270 mov a,#0x01
273 273 ; Peephole 180 changed mov to clr
275 0035 3B 275 addc a,r3
277 0037 8C 01 277 mov ar1,r4
278 0039 90s00r02 278 mov dptr,#_longjmp_bp_1_1
280 003D F0 280 movx @dptr,a
283 0040 F0 283 movx @dptr,a
286 0043 F0 286 movx @dptr,a
287 0044 8A 82 287 mov dpl,r2
288 0046 8B 83 288 mov dph,r3
289 0048 8C F0 289 mov b,r4
290 004A 12s00r00 290 lcall __gptrget
291 291 ; Peephole 192 used a instead of ar2 as source
293 004E F6 293 mov @r0,a
296 0050 8E 82 296 mov dpl,r6
297 0052 8F 83 297 mov dph,r7
298 0054 89 F0 298 mov b,r1
299 0056 12s00r00 299 lcall __gptrget
300 300 ; Peephole 192 used a instead of ar6 as source
302 005A F6 302 mov @r0,a
304 005B 8D 81 304 mov _SP,r5
306 005D 90s00r00 306 mov dptr,#_longjmp_PARM_2
307 0060 E0 307 movx a,@dptr
310 0063 E0 310 movx a,@dptr
312 0065 8A 82 312 mov dpl,r2
313 0067 8D 83 313 mov dph,r5
315 0069 315 C$_setjmp.c$36$1$1 ==.
316 0069 316 XG$longjmp$0$0 ==.
318 006A 318 G$setjmp$0$0 ==.
320 320 ; -----------------------------------------
321 321 ; function setjmp
322 322 ; -----------------------------------------
325 006A C0 F0 325 push b
326 006C C0 83 326 push dph
327 006E C0 82 327 push dpl
328 0070 90s00r05 328 mov dptr,#_setjmp_bp_1_1
329 0073 D0 E0 329 pop acc
330 0075 F0 330 movx @dptr,a
331 0076 D0 E0 331 pop acc
333 0079 F0 333 movx @dptr,a
334 007A D0 E0 334 pop acc
336 007D F0 336 movx @dptr,a
338 007E 90s00r05 338 mov dptr,#_setjmp_bp_1_1
339 0081 E0 339 movx a,@dptr
342 0084 E0 342 movx a,@dptr
345 0087 E0 345 movx a,@dptr
347 0089 74 01 347 mov a,#0x01
349 008C F5*00 349 mov _setjmp_sloc0_1_0,a
350 350 ; Peephole 180 changed mov to clr
352 008F 3B 352 addc a,r3
353 0090 F5*01 353 mov (_setjmp_sloc0_1_0 + 1),a
354 0092 8C*02 354 mov (_setjmp_sloc0_1_0 + 2),r4
355 0094 A8 81 355 mov r0,_SP
356 0096 86 05 356 mov ar5,@r0
357 0098 8A 82 357 mov dpl,r2
358 009A 8B 83 358 mov dph,r3
359 009C 8C F0 359 mov b,r4
361 009F 12s00r00 361 lcall __gptrput
363 00A2 74 01 363 mov a,#0x01
364 00A4 25*00 364 add a,_setjmp_sloc0_1_0
366 366 ; Peephole 180 changed mov to clr
368 00A8 35*01 368 addc a,(_setjmp_sloc0_1_0 + 1)
370 00AB AC*02 370 mov r4,(_setjmp_sloc0_1_0 + 2)
371 00AD 90s00r05 371 mov dptr,#_setjmp_bp_1_1
373 00B1 F0 373 movx @dptr,a
376 00B4 F0 376 movx @dptr,a
379 00B7 F0 379 movx @dptr,a
380 00B8 AD 81 380 mov r5,_SP
382 00BB 24 FF 382 add a,#0xff
384 00BE 86 05 384 mov ar5,@r0
385 00C0 85*00 82 385 mov dpl,_setjmp_sloc0_1_0
386 00C3 85*01 83 386 mov dph,(_setjmp_sloc0_1_0 + 1)
387 00C6 85*02 F0 387 mov b,(_setjmp_sloc0_1_0 + 2)
389 00CA 12s00r00 389 lcall __gptrput
391 00CD 8A 82 391 mov dpl,r2
392 00CF 8B 83 392 mov dph,r3
393 00D1 8C F0 393 mov b,r4
394 00D3 E5 81 394 mov a,_SP
395 00D5 12s00r00 395 lcall __gptrput
397 397 ; Peephole 181 used 16 bit load of dptr
398 00D8 90 00 00 398 mov dptr,#0x0000
400 00DB 400 C$_setjmp.c$48$1$1 ==.
401 00DB 401 XG$setjmp$0$0 ==.
403 403 .area CSEG (CODE)