; ; D52 V3.3.6 8052 Disassembly of base-communicator.hex ; 06/25/05 17:22 ; =========================================================== ; ROM MEMORY LAYOUT ; 0000-002f Interrupt Vector Table ; 0030-003e ??? ; 003f-0074 Copyright Notice ; 0075-0361 Main function ; 0362-0387 ; 0388-03aa HEX Character to Byte Conversion ; 03ab-03c6 Transmit Byte ; 03c7-03d6 Delay ; 03d7-048f Toggle Bit 7? ; 0490-04a6 Check Bit 7 ; 04a7-04db Check config switches ; 04dc-04e6 Transmit Acknowledge ; 04e7-04ea Save Accumulator + Status (macro) ; 04eb-04ee Restore Accumulator + Status (macro) ; 04ef-0539 Timer/Counter 0 Interrupt Service Routine ; 053a-053c INT 0 Interrupt Service Routine ; 053d-0734 Serial Interrupt Service Routine ; ; =========================================================== ; IRAM MEMORY LAYOUT ; 58 Received Byte ; 6b Timer 1 Reload value (for baudrate) ; 6c-7F Stack ; ; ; =========================================================== ; Interrupt Vector Table ; ; org 0 ; reset: ajmp Start ; 0000 01 75 .u ; org 3 ; ie0vec: ajmp INT0_ISR ; 0003 a1 3a !: ; org 0bh ; tf0vec: ajmp CTR0_ISR ; 000b 81 ef .o ; org 13h ; ie1vec: ajmp ie1vec ; 0013 01 13 .. ; org 1bh ; tf1vec: ajmp tf1vec ; 001b 01 1b .. ; org 23h ; servec: ajmp SER_ISR ; 0023 a1 3d != ; ; =========================================================== org 30h ; orl a,@r1 ; 0030 47 G add a,r3 ; 0031 2b + reti ; 0032 32 2 ; addc a,2dh ; 0033 35 2d 5- jnb 26h.1,X0068 ; 0035 30 31 30 010 addc a,@r0 ; 0038 36 6 acall X0136 ; 0039 31 36 16 add a,r5 ; 003b 2d - jnb 26h.0,X0070 ; 003c 30 30 31 001 ; db 'COPYRIGHT (C) 1983 ANDROBOT, INC' ; 003f db '. ALL RI' ; 005f X0068: db 'GHTS RES' ; 0068 X0070: db 'ERVED' ; 0070 ; ; =========================================================== ; Main code ; ; Start: mov 5ah,#20h ; 0075 75 5a 20 uZ ; Initialize RAM mov 5dh,#10h ; 0078 75 5d 10 u]. mov 5eh,#0fh ; 007b 75 5e 0f u^. mov 5fh,#1fh ; 007e 75 5f 1f u_. mov 60h,#50h ; 0081 75 60 50 u`P mov 61h,#41h ; 0084 75 61 41 uaA mov 62h,#82h ; 0087 75 62 82 ub. mov 63h,#0ffh ; 008a 75 63 ff uc. mov 23h,#0 ; 008d 75 23 00 u#. ; Initialize Bits 18-1f mov r0,#51h ; 0090 78 51 xQ mov @r0,#55h ; 0092 76 55 vU inc r0 ; 0094 08 . mov @r0,#4ch ; 0095 76 4c vL inc r0 ; 0097 08 . mov @r0,#31h ; 0098 76 31 v1 inc r0 ; 009a 08 . mov @r0,#46h ; 009b 76 46 vF inc r0 ; 009d 08 . mov @r0,#20h ; 009e 76 20 v mov r0,#48h ; 00a0 78 48 xH Loop01: inc r0 ; 00a2 08 . mov @r0,#20h ; 00a3 76 20 v cjne r0,#4ch,Loop01 ; 00a5 b8 4c fa 8Lz mov p0,#0ffh ; 00a8 75 80 ff u.. ; Initialize Port 0 mov p1,#0ffh ; 00ab 75 90 ff u.. ; Initialize Port 1 mov p2,#0ffh ; 00ae 75 a0 ff u . ; Initialize Port 2 mov p3_switches,#0ffh; 00b1 75 b0 ff u0. ; Initialize Port 3 mov sp,#6bh ; 00b4 75 81 6b u.k ; Initialize Stack Pointer mov 20h,#0e8h ; 00b7 75 20 e8 u h ; Initialize Bits 00-07 mov scon,#70h ; 00ba 75 98 70 u.p ; Initialize Serial Control register (8bit UART, Timer 1, Ignore invalid stop bits, Receiver Enabled) mov ie,#90h ; 00bd 75 a8 90 u(. ; Initialize Interrupt Enable register (Global Interrupt Enabled, Serial Interrupt Enabled) setb Flag_sbuf_empty ; 00c0 d2 12 R. acall sw_chk ; 00c2 91 a7 .' ; Check config switches (P3) acall TX_ACK ; 00c4 91 dc .\ mov b,#0 ; 00c6 75 f0 00 up. mov 21h,#0 ; 00c9 75 21 00 u!. ; Initialize Bits 08-0f mov 22h,#4 ; 00cc 75 22 04 u". ; Initialize Bits 10-17 anl 23h,#4 ; 00cf 53 23 04 S#. ; Initialize Bits 18-1f orl 23h,#30h ; 00d2 43 23 30 C#0 setb OddNibble ; 00d5 d2 0d R. clr Flag_23 ; 00d7 c2 17 B. setb Flag_17 ; 00d9 d2 11 R. mov 69h,#1 ; 00db 75 69 01 ui. mov 6ah,#0d7h ; 00de 75 6a d7 ujW mov 68h,#6 ; 00e1 75 68 06 uh. mov 65h,#0 ; 00e4 75 65 00 ue. mov 66h,#0 ; 00e7 75 66 00 uf. State_1: anl 21h,#60h ; 00ea 53 21 60 S!` setb Flag_22 ; 00ed d2 16 R. clr p1.1 ; 00ef c2 91 B. clr Flag_16 ; 00f1 c2 10 B. clr Flag_20 ; 00f3 c2 14 B. setb p1.0 ; 00f5 d2 90 R. mov ip,#0 ; 00f7 75 b8 00 u8. ; Initialize Interrupt Priority register mov tmod,#21h ; 00fa 75 89 21 u.! mov tl0,#0 ; 00fd 75 8a 00 u.. mov th0,#0 ; 0100 75 8c 00 u.. mov 59h,#3 ; 0103 75 59 03 uY. mov tcon,#51h ; 0106 75 88 51 u.Q mov ie,#92h ; 0109 75 a8 92 u(. mov psw,#0 ; 010c 75 d0 00 uP. mov r2,#0 ; 010f 7a 00 z. mov psw,#8 ; 0111 75 d0 08 uP. mov r2,#0 ; 0114 7a 00 z. mov r1,#28h ; 0116 79 28 y( clr Flag_3 ; 0118 c2 03 B. ajmp State_16 ; 011a 21 5d !] ; State_13: setb Flag_3 ; 011c d2 03 R. mov 69h,#1 ; 011e 75 69 01 ui. mov 6ah,#0d7h ; 0121 75 6a d7 ujW clr Flag_12 ; 0124 c2 0c B. clr Flag_8 ; 0126 c2 08 B. mov r2,#0eh ; 0128 7a 0e z. mov a,#1 ; 012a 74 01 t. ajmp X027d ; 012c 41 7d A} ; State_14: jnb Flag_24,X0136 ; 012e 30 18 05 0.. mov 56h,#36h ; 0131 75 56 36 uV6 sjmp X0139 ; 0134 80 03 .. ; X0136: mov 56h,#3eh ; 0136 75 56 3e uV> X0139: mov r7,#4 ; 0139 7f 04 .. acall delay ; 013b 71 c7 qG mov r2,#2 ; 013d 7a 02 z. ajmp Switch_r2 ; 013f 21 79 !y ; State_15: djnz 68h,X0149 ; 0141 d5 68 05 Uh. setb Flag_1 ; 0144 d2 01 R. mov 68h,#6 ; 0146 75 68 06 uh. X0149: mov 56h,#46h ; 0149 75 56 46 uVF mov 46h,5ah ; 014c 85 5a 46 .ZF mov 47h,62h ; 014f 85 62 47 .bG mov 48h,63h ; 0152 85 63 48 .cH mov r7,#4eh ; 0155 7f 4e .N acall delay ; 0157 71 c7 qG mov r2,#2 ; 0159 7a 02 z. ajmp Switch_r2 ; 015b 21 79 !y ; State_16: mov psw,#0 ; 015d 75 d0 00 uP. mov a,65h ; 0160 e5 65 ee cjne a,#0,X016c ; 0162 b4 00 07 4.. X0165: cjne r2,#0,Switch_r2 ; 0165 ba 00 11 :.. acall Tx_Byte ; 0168 71 ab q+ ajmp X01b5 ; 016a 21 b5 !5 ; X016c: mov r2,65h ; 016c aa 65 *e mov 65h,#0 ; 016e 75 65 00 ue. mov 56h,66h ; 0171 85 66 56 .fV mov 66h,#0 ; 0174 75 66 00 uf. ajmp Switch_r2 ; 0177 21 79 !y ; Switch_r2: mov a,r2 ; 0179 ea j mov dptr,#X017f ; 017a 90 01 7f ... movc a,@a+dptr ; 017d 93 . jmp @a+dptr ; 017e 73 s ; X017f: db 10h,12h,14h,16h,18h,1ah,1ch,1eh ; 017f ........ db 20h,22h,24h,26h,28h,2ah,2ch,2eh ; 0187 "$&(*,. ; ajmp State_1 ; 018f 01 ea .j ; ajmp State_2 ; 0191 21 d5 !U ; ajmp State_3 ; 0193 41 a8 A( ; ajmp State_4 ; 0195 21 dd !] ; ajmp State_5 ; 0197 41 d9 AY ; ajmp State_6 ; 0199 21 f1 !q ; ajmp State_7 ; 019b 41 ef Ao ; ajmp State_8 ; 019d 21 fd !} ; ajmp State_9 ; 019f 61 15 a. ; ajmp State_10 ; 01a1 41 0f A. ; ajmp State_11 ; 01a3 61 25 a% ; ajmp State_12 ; 01a5 41 1f A. ; ajmp State_13 ; 01a7 21 1c !. ; ajmp State_14 ; 01a9 21 2e !. ; ajmp State_15 ; 01ab 21 41 !A ; ajmp State_16 ; 01ad 21 5d !] ; mov psw,#8 ; 01af 75 d0 08 uP. X01b2: cjne r2,#0,Switch_r2 ; 01b2 ba 00 c4 :.D X01b5: jnb Flag_23,State_16; 01b5 30 17 a5 0.% clr Flag_23 ; 01b8 c2 17 B. mov 4eh,5fh ; 01ba 85 5f 4e ._N mov 4fh,60h ; 01bd 85 60 4f .`O mov 50h,61h ; 01c0 85 61 50 .aP mov 56h,#4eh ; 01c3 75 56 4e uVN mov r2,#2 ; 01c6 7a 02 z. ajmp State_16 ; 01c8 21 5d !] ; X01ca: jnb Flag_12,Switch_r2; 01ca 30 0c ac 0., mov r2,#0 ; 01cd 7a 00 z. ajmp State_16 ; 01cf 21 5d !] ; X01d1: acall Tx_Byte ; 01d1 71 ab q+ ajmp Switch_r2 ; 01d3 21 79 !y ; State_2: mov r2,#3 ; 01d5 7a 03 z. mov ie,#93h ; 01d7 75 a8 93 u(. mov ip,#2 ; 01da 75 b8 02 u8. State_4: jnb Flag_8,X01ca ; 01dd 30 08 ea 0.j clr Flag_8 ; 01e0 c2 08 B. clr Flag_11 ; 01e2 c2 0b B. clr Flag_9 ; 01e4 c2 09 B. mov r4,#0ah ; 01e6 7c 0a |. Loop02: djnz r4,Loop02 ; 01e8 dc fe \~ mov tl0,#8ah ; 01ea 75 8a 8a u.. mov r2,#5 ; 01ed 7a 05 z. mov r4,#3 ; 01ef 7c 03 |. State_6: jnb Flag_9,X01ca ; 01f1 30 09 d6 0.V clr Flag_9 ; 01f4 c2 09 B. jnb Flag_10,State_4 ; 01f6 30 0a e4 0.d djnz r4,State_6 ; 01f9 dc f6 \v mov r2,#7 ; 01fb 7a 07 z. State_8: jnb Flag_9,X01ca ; 01fd 30 09 ca 0.J clr Flag_9 ; 0200 c2 09 B. jb Flag_10,State_8 ; 0202 20 0a f8 .x mov r6,#0 ; 0205 7e 00 ~. mov r0,#26h ; 0207 78 26 x& X0209: mov r2,#9 ; 0209 7a 09 z. mov r4,#8 ; 020b 7c 08 |. acall SAVE ; 020d 91 e7 .g State_10: jnb Flag_9,X01d1 ; 020f 30 09 bf 0.? clr Flag_9 ; 0212 c2 09 B. acall RESTORE ; 0214 91 eb .k mov c,Flag_10 ; 0216 a2 0a ". rrc a ; 0218 13 . acall SAVE ; 0219 91 e7 .g djnz r4,State_10 ; 021b dc f2 \r mov r2,#0bh ; 021d 7a 0b z. State_12: jnb Flag_9,X01d1 ; 021f 30 09 af 0./ clr Flag_9 ; 0222 c2 09 B. acall RESTORE ; 0224 91 eb .k mov c,Flag_10 ; 0226 a2 0a ". jnb p,X022f ; 0228 30 d0 04 0P. jc X0279 ; 022b 40 4c @L ajmp X0231 ; 022d 41 31 A1 ; X022f: jnc X0279 ; 022f 50 48 PH X0231: mov @r0,a ; 0231 f6 v cjne r0,#26h,X024e ; 0232 b8 26 19 8&. clr acc.7 ; 0235 c2 e7 Bg cjne a,5eh,X023e ; 0237 b5 5e 04 5^. clr b.7 ; 023a c2 f7 Bw sjmp X0243 ; 023c 80 05 .. ; X023e: cjne a,5dh,X024c ; 023e b5 5d 0b 5]. setb b.7 ; 0241 d2 f7 Rw X0243: acall b7_chk ; 0243 91 90 .. mov a,@r0 ; 0245 e6 f anl a,#80h ; 0246 54 80 T. jz X0266 ; 0248 60 1c `. sjmp X026b ; 024a 80 1f .. ; X024c: ajmp X0279 ; 024c 41 79 Ay ; X024e: cjne r0,#34h,X0253 ; 024e b8 34 02 84. ajmp X025a ; 0251 41 5a AZ ; X0253: mov a,@r0 ; 0253 e6 f add a,r6 ; 0254 2e . mov r6,a ; 0255 fe ~ acall X0362 ; 0256 71 62 qb ajmp X0209 ; 0258 41 09 A. ; X025a: mov a,r6 ; 025a ee n anl a,#0f0h ; 025b 54 f0 Tp add a,#3 ; 025d 24 03 $. add a,34h ; 025f 25 34 %4 cjne a,#0,X0279 ; 0261 b4 00 15 4.. sjmp X028c ; 0264 80 26 .& ; X0266: jb Flag_25,X0273 ; 0266 20 19 0a .. sjmp X026e ; 0269 80 03 .. ; X026b: jnb Flag_25,X0273 ; 026b 30 19 05 0.. X026e: jb b.7,X0253 ; 026e 20 f7 e2 wb ajmp X028e ; 0271 41 8e A. ; X0273: mov r2,#0 ; 0273 7a 00 z. mov a,#0dh ; 0275 74 0d t. sjmp X027d ; 0277 80 04 .. ; X0279: mov r2,#1 ; 0279 7a 01 z. ajmp Switch_r2 ; 027b 21 79 !y ; X027d: jb rs0,X0286 ; 027d 20 d3 06 S. mov psw,#8 ; 0280 75 d0 08 uP. mov r2,a ; 0283 fa z ajmp X01b2 ; 0284 21 b2 !2 ; X0286: mov psw,#0 ; 0286 75 d0 00 uP. mov r2,a ; 0289 fa z ajmp X0165 ; 028a 21 65 !e ; X028c: setb Flag_2 ; 028c d2 02 R. X028e: jnb Flag_30,X0295 ; 028e 30 1e 04 0.. clr Flag_30 ; 0291 c2 1e B. clr Flag_31 ; 0293 c2 1f B. X0295: clr Flag_20 ; 0295 c2 14 B. clr Flag_1 ; 0297 c2 01 B. mov 68h,#6 ; 0299 75 68 06 uh. mov r2,#0 ; 029c 7a 00 z. mov r7,#4 ; 029e 7f 04 .. acall delay ; 02a0 71 c7 qG ajmp Switch_r2 ; 02a2 21 79 !y ; X02a4: acall Tx_Byte ; 02a4 71 ab q+ ajmp Switch_r2 ; 02a6 21 79 !y ; State_3: jnb Flag_20,X02af ; 02a8 30 14 04 0.. mov r7,#4eh ; 02ab 7f 4e .N acall delay ; 02ad 71 c7 qG X02af: clr Flag_22 ; 02af c2 16 B. mov r6,#0 ; 02b1 7e 00 ~. mov r4,#5 ; 02b3 7c 05 |. mov r0,56h ; 02b5 a8 56 (V mov a,56h ; 02b7 e5 56 eV add a,#7 ; 02b9 24 07 $. mov 67h,a ; 02bb f5 67 ug mov tmod,#22h ; 02bd 75 89 22 u." mov tl0,#8ah ; 02c0 75 8a 8a u.. mov th0,#8ah ; 02c3 75 8c 8a u.. clr Flag_11 ; 02c6 c2 0b B. clr Flag_9 ; 02c8 c2 09 B. mov ip,#2 ; 02ca 75 b8 02 u8. mov tcon,#51h ; 02cd 75 88 51 u.Q mov ie,#92h ; 02d0 75 a8 92 u(. mov r2,#4 ; 02d3 7a 04 z. X02d5: setb Flag_15 ; 02d5 d2 0f R. setb Flag_16 ; 02d7 d2 10 R. State_5: jb Flag_16,X02a4 ; 02d9 20 10 c8 .H djnz r4,X02d5 ; 02dc dc f7 \w mov r2,#6 ; 02de 7a 06 z. X02e0: mov r4,#9 ; 02e0 7c 09 |. mov a,@r0 ; 02e2 e6 f add a,r6 ; 02e3 2e . mov r6,a ; 02e4 fe ~ mov a,@r0 ; 02e5 e6 f mov c,p ; 02e6 a2 d0 "P cpl c ; 02e8 b3 3 rrc a ; 02e9 13 . inc r0 ; 02ea 08 . acall SAVE ; 02eb 91 e7 .g setb Flag_16 ; 02ed d2 10 R. State_7: jb Flag_16,X02a4 ; 02ef 20 10 b2 .2 acall RESTORE ; 02f2 91 eb .k mov Flag_15,c ; 02f4 92 0f .. setb Flag_16 ; 02f6 d2 10 R. rrc a ; 02f8 13 . acall SAVE ; 02f9 91 e7 .g djnz r4,State_7 ; 02fb dc f2 \r mov a,67h ; 02fd e5 67 eg mov 57h,r0 ; 02ff 88 57 .W cjne a,57h,X02e0 ; 0301 b5 57 dc 5W\ mov r2,#8 ; 0304 7a 08 z. mov r4,#9 ; 0306 7c 09 |. mov a,r6 ; 0308 ee n anl a,#0f0h ; 0309 54 f0 Tp add a,#3 ; 030b 24 03 $. cpl a ; 030d f4 t inc a ; 030e 04 . mov c,p ; 030f a2 d0 "P cpl c ; 0311 b3 3 rrc a ; 0312 13 . acall SAVE ; 0313 91 e7 .g State_9: jb Flag_16,X02a4 ; 0315 20 10 8c .. acall RESTORE ; 0318 91 eb .k mov Flag_15,c ; 031a 92 0f .. rrc a ; 031c 13 . acall SAVE ; 031d 91 e7 .g setb Flag_16 ; 031f d2 10 R. djnz r4,State_9 ; 0321 dc f2 \r mov r2,#0ah ; 0323 7a 0a z. State_11: jnb Flag_16,X032a ; 0325 30 10 02 0.. ajmp X02a4 ; 0328 41 a4 A$ ; X032a: setb p1.1 ; 032a d2 91 R. mov r4,#0bfh ; 032c 7c bf |? Loop03: djnz r4,Loop03 ; 032e dc fe \~ clr p1.1 ; 0330 c2 91 B. mov r4,#40h ; 0332 7c 40 |@ Loop04: djnz r4,Loop04 ; 0334 dc fe \~ jnb Flag_20,X033c ; 0336 30 14 03 0.. jnb Flag_26,X035b ; 0339 30 1a 1f 0.. X033c: setb Flag_22 ; 033c d2 16 R. clr Flag_20 ; 033e c2 14 B. mov r2,#0 ; 0340 7a 00 z. clr Flag_3 ; 0342 c2 03 B. mov ip,#0 ; 0344 75 b8 00 u8. mov tmod,#21h ; 0347 75 89 21 u.! mov tl0,#0 ; 034a 75 8a 00 u.. mov th0,#0 ; 034d 75 8c 00 u.. mov 59h,#3 ; 0350 75 59 03 uY. mov tcon,#51h ; 0353 75 88 51 u.Q mov ie,#92h ; 0356 75 a8 92 u(. ajmp State_16 ; 0359 21 5d !] ; X035b: mov r2,#0ch ; 035b 7a 0c z. mov ie,#90h ; 035d 75 a8 90 u(. ajmp Switch_r2 ; 0360 21 79 !y ; ; ===========================================================\ X0362: setb b.0 ; 0362 d2 f0 Rp mov a,@r0 ; 0364 e6 f push acc ; 0365 c0 e0 @` anl a,#0f0h ; 0367 54 f0 Tp swap a ; 0369 c4 D X036a: push acc ; 036a c0 e0 @` clr c ; 036c c3 C subb a,#0ah ; 036d 94 0a .. jc X0377 ; 036f 40 06 @. pop acc ; 0371 d0 e0 P` add a,#37h ; 0373 24 37 $7 sjmp X037b ; 0375 80 04 .. ; X0377: pop acc ; 0377 d0 e0 P` add a,#30h ; 0379 24 30 $0 X037b: mov @r0,a ; 037b f6 v inc r0 ; 037c 08 . jnb b.0,X0387 ; 037d 30 f0 07 0p. pop acc ; 0380 d0 e0 P` anl a,#0fh ; 0382 54 0f T. jbc b.0,X036a ; 0384 10 f0 e3 .pc X0387: ret ; 0387 22 " ; ; =========================================================== ; HEX Character to Byte Conversion Hex2Byte: push psw ; 0388 c0 d0 @P push acc ; 038a c0 e0 @` clr c ; 038c c3 C subb a,#3ah ; 038d 94 3a .: jnc X039b ; 038f 50 0a P. pop acc ; 0391 d0 e0 P` clr c ; 0393 c3 C subb a,#30h ; 0394 94 30 .0 jnb OddNibble,X03a6 ; 0396 30 0d 0d 0.. sjmp X03a2 ; 0399 80 07 .. ; X039b: pop acc ; 039b d0 e0 P` subb a,#37h ; 039d 94 37 .7 jnb OddNibble,X03a6 ; 039f 30 0d 04 0.. X03a2: mov Rx_Byte,#0 ; 03a2 75 58 00 uX. swap a ; 03a5 c4 D X03a6: orl Rx_Byte,a ; 03a6 42 58 BX pop psw ; 03a8 d0 d0 PP ret ; 03aa 22 " ; ; =========================================================== ; Transmit Byte Tx_Byte: jb Flag_17,X03c6 ; 03ab 20 11 18 .. jnb Flag_sbuf_empty,X03c6; 03ae 30 12 15 0.. push psw ; 03b1 c0 d0 @P mov psw,#8 ; 03b3 75 d0 08 uP. inc r1 ; 03b6 09 . clr Flag_sbuf_empty ; 03b7 c2 12 B. mov sbuf,@r1 ; 03b9 87 99 .. cjne r1,#33h,X03c4 ; 03bb b9 33 06 93. mov r1,#28h ; 03be 79 28 y( setb Flag_17 ; 03c0 d2 11 R. clr Flag_2 ; 03c2 c2 02 B. X03c4: pop psw ; 03c4 d0 d0 PP X03c6: ret ; 03c6 22 " ; ; =========================================================== ; Delay delay: push psw ; 03c7 c0 d0 @P push acc ; 03c9 c0 e0 @` Loop05: mov a,#0ffh ; 03cb 74 ff t. Loop06: djnz acc,Loop06 ; 03cd d5 e0 fd U`} djnz r7,Loop05 ; 03d0 df f9 _y pop acc ; 03d2 d0 e0 P` pop psw ; 03d4 d0 d0 PP ret ; 03d6 22 " ; ; =========================================================== ; Toggle Bit 7? b7_tgl: push acc ; 03d7 c0 e0 @` jb Flag_26,X042e ; 03d9 20 1a 52 .R mov a,5ah ; 03dc e5 5a eZ cjne a,#30h,X03e8 ; 03de b4 30 07 40. jbc Flag_32,X0430 ; 03e1 10 20 4c . L setb Flag_32 ; 03e4 d2 20 R ajmp X0480 ; 03e6 81 80 .. ; X03e8: cjne a,#31h,X03f2 ; 03e8 b4 31 07 41. jbc Flag_33,X0430 ; 03eb 10 21 42 .!B setb Flag_33 ; 03ee d2 21 R! ajmp X0480 ; 03f0 81 80 .. ; X03f2: cjne a,#32h,X03fc ; 03f2 b4 32 07 42. jbc Flag_34,X0430 ; 03f5 10 22 38 ."8 setb Flag_34 ; 03f8 d2 22 R" ajmp X0480 ; 03fa 81 80 .. ; X03fc: cjne a,#33h,X0406 ; 03fc b4 33 07 43. jbc Flag_35,X0430 ; 03ff 10 23 2e .#. setb Flag_35 ; 0402 d2 23 R# ajmp X0480 ; 0404 81 80 .. ; X0406: cjne a,#34h,X0410 ; 0406 b4 34 07 44. jbc Flag_36,X0430 ; 0409 10 24 24 .$$ setb Flag_36 ; 040c d2 24 R$ ajmp X0480 ; 040e 81 80 .. ; X0410: cjne a,#35h,X041a ; 0410 b4 35 07 45. jbc Flag_37,X0430 ; 0413 10 25 1a .%. setb Flag_37 ; 0416 d2 25 R% ajmp X0480 ; 0418 81 80 .. ; X041a: cjne a,#36h,X0424 ; 041a b4 36 07 46. jbc Flag_38,X0430 ; 041d 10 26 10 .&. setb Flag_38 ; 0420 d2 26 R& ajmp X0480 ; 0422 81 80 .. ; X0424: cjne a,#37h,X0432 ; 0424 b4 37 0b 47. jbc Flag_39,X0430 ; 0427 10 27 06 .'. setb Flag_39 ; 042a d2 27 R' ajmp X0480 ; 042c 81 80 .. ; X042e: ajmp X0488 ; 042e 81 88 .. ; X0430: ajmp X0484 ; 0430 81 84 .. ; X0432: cjne a,#38h,X043c ; 0432 b4 38 07 48. jbc Flag_40,X0484 ; 0435 10 28 4c .(L setb Flag_40 ; 0438 d2 28 R( ajmp X0480 ; 043a 81 80 .. ; X043c: cjne a,#39h,X0446 ; 043c b4 39 07 49. jbc Flag_41,X0484 ; 043f 10 29 42 .)B setb Flag_41 ; 0442 d2 29 R) ajmp X0480 ; 0444 81 80 .. ; X0446: cjne a,#3ah,X0450 ; 0446 b4 3a 07 4:. jbc Flag_42,X0484 ; 0449 10 2a 38 .*8 setb Flag_42 ; 044c d2 2a R* ajmp X0480 ; 044e 81 80 .. ; X0450: cjne a,#3bh,X045a ; 0450 b4 3b 07 4;. jbc Flag_43,X0484 ; 0453 10 2b 2e .+. setb Flag_43 ; 0456 d2 2b R+ ajmp X0480 ; 0458 81 80 .. ; X045a: cjne a,#3ch,X0464 ; 045a b4 3c 07 4<. jbc Flag_44,X0484 ; 045d 10 2c 24 .,$ setb Flag_44 ; 0460 d2 2c R, ajmp X0480 ; 0462 81 80 .. ; X0464: cjne a,#3dh,X046e ; 0464 b4 3d 07 4=. jbc Flag_45,X0484 ; 0467 10 2d 1a .-. setb Flag_45 ; 046a d2 2d R- ajmp X0480 ; 046c 81 80 .. ; X046e: cjne a,#3eh,X0478 ; 046e b4 3e 07 4>. jbc Flag_46,X0484 ; 0471 10 2e 10 ... setb Flag_46 ; 0474 d2 2e R. ajmp X0480 ; 0476 81 80 .. ; X0478: cjne a,#3fh,X0488 ; 0478 b4 3f 0d 4?. jbc Flag_47,X0484 ; 047b 10 2f 06 ./. setb Flag_47 ; 047e d2 2f R/ X0480: setb Flag_14 ; 0480 d2 0e R. sjmp X048d ; 0482 80 09 .. ; X0484: clr Flag_14 ; 0484 c2 0e B. sjmp X048d ; 0486 80 05 .. ; X0488: jbc Flag_14,X048d ; 0488 10 0e 02 ... setb Flag_14 ; 048b d2 0e R. X048d: pop acc ; 048d d0 e0 P` ret ; 048f 22 " ; ; =========================================================== ; Check Bit 7 b7_chk: push acc ; 0490 c0 e0 @` jnb Flag_24,X0499 ; 0492 30 18 04 0.. mov a,36h ; 0495 e5 36 e6 sjmp X049b ; 0497 80 02 .. ; X0499: mov a,3eh ; 0499 e5 3e e> X049b: jb acc.7,X04a2 ; 049b 20 e7 04 g. clr Flag_25 ; 049e c2 19 B. sjmp X04a4 ; 04a0 80 02 .. ; X04a2: setb Flag_25 ; 04a2 d2 19 R. X04a4: pop acc ; 04a4 d0 e0 P` ret ; 04a6 22 " ; ; ; =========================================================== ; Check config switches ; ; Sw | pcon rval | baud ; -- + --- ---_ + ---- ; 00 | 00h fdh | 9600 ; 10 | 00h fah | 4800 ; 20 | 00h f4h | 2400 ; 30 | 00h e8h | 1200 ; 40 | 80h fdh | 19k2 ; sw_chk: mov a,p3_switches ; 04a7 e5 b0 e0 anl a,#0f0h ; 04a9 54 f0 Tp mov t1_rval,#0fdh ; 04ab 75 6b fd uk} ; t1_rval=fdh mov pcon,#0 ; 04ae 75 87 00 u.. ; pcon=00h cjne a,#40h,sw_not4 ; 04b1 b4 40 05 4@. mov pcon,#80h ; 04b4 75 87 80 u.. ; if switches=40h then (t1_rval=fdh,) pcon=80h sjmp sw_end ; 04b7 80 16 .. ; sw_not4: cjne a,#10h,sw_not1 ; 04b9 b4 10 05 4.. mov t1_rval,#0fah ; 04bc 75 6b fa ukz ; if switches=10h then t1_rval=fah, (pcon=00h) sjmp sw_end ; 04bf 80 0e .. ; sw_not1: cjne a,#20h,sw_not2 ; 04c1 b4 20 05 4 . mov t1_rval,#0f4h ; 04c4 75 6b f4 ukt ; if switches=20h then t1_rval=f4h, (pcon=00h) sjmp sw_end ; 04c7 80 06 .. ; sw_not2: cjne a,#30h,sw_end ; 04c9 b4 30 03 40. mov t1_rval,#0e8h ; 04cc 75 6b e8 ukh ; if switches=30h then t1_rval=e8h, (pcon=00h) sw_end: mov tl1,t1_rval ; 04cf 85 6b 8b .k. mov th1,t1_rval ; 04d2 85 6b 8d .k. mov tmod,#21h ; 04d5 75 89 21 u.! ; Timer Mode (Timer 1: 8-bit auto-reload, Timer 2: 16 bit) mov tcon,#41h ; 04d8 75 88 41 u.A ; Timer Control (Timer 1 Run, INT0 falling edge) ret ; 04db 22 " ; ; =========================================================== ; Transmit Acknowledge TX_ACK: setb Flag_3 ; 04dc d2 03 R. Loop07: jnb Flag_sbuf_empty,Loop07; 04de 30 12 fd 0.} clr Flag_sbuf_empty ; 04e1 c2 12 B. mov sbuf,#55h ; 04e3 75 99 55 u.U ret ; 04e6 22 " ; ; =========================================================== ; Save Accumulator + Status SAVE: mov r3,psw ; 04e7 ab d0 +P mov r5,a ; 04e9 fd } ret ; 04ea 22 " ; ; =========================================================== ; Restore Accumulator + Status RESTORE: mov psw,r3 ; 04eb 8b d0 .P mov a,r5 ; 04ed ed m ret ; 04ee 22 " ; ; ; =========================================================== ; Timer/Counter 0 Interrupt Service Routine ; CTR0_ISR: push psw ; 04ef c0 d0 @P push acc ; 04f1 c0 e0 @` jnb Flag_22,X0506 ; 04f3 30 16 10 0.. djnz 59h,X04fe ; 04f6 d5 59 05 UY. setb Flag_23 ; 04f9 d2 17 R. mov 59h,#3 ; 04fb 75 59 03 uY. X04fe: mov tl0,#0 ; 04fe 75 8a 00 u.. mov th0,#0 ; 0501 75 8c 00 u.. ajmp CTR0_END ; 0504 a1 35 !5 ; X0506: jbc Flag_11,X0518 ; 0506 10 0b 0f ... setb Flag_11 ; 0509 d2 0b R. djnz 6ah,CTR0_END ; 050b d5 6a 27 Uj' mov 6ah,#0ffh ; 050e 75 6a ff uj. djnz 69h,CTR0_END ; 0511 d5 69 21 Ui! setb Flag_12 ; 0514 d2 0c R. sjmp CTR0_END ; 0516 80 1d .. ; X0518: clr Flag_10 ; 0518 c2 0a B. jnb Flag_8,X0521 ; 051a 30 08 04 0.. setb Flag_10 ; 051d d2 0a R. clr Flag_8 ; 051f c2 08 B. X0521: setb Flag_9 ; 0521 d2 09 R. jbc Flag_16,X0528 ; 0523 10 10 02 ... sjmp CTR0_END ; 0526 80 0d .. ; X0528: jnb Flag_15,CTR0_END; 0528 30 0f 0a 0.. clr p1.0 ; 052b c2 90 B. nop ; 052d 00 . nop ; 052e 00 . nop ; 052f 00 . nop ; 0530 00 . setb p1.0 ; 0531 d2 90 R. clr Flag_15 ; 0533 c2 0f B. CTR0_END: pop acc ; 0535 d0 e0 P` pop psw ; 0537 d0 d0 PP reti ; 0539 32 2 ; ; ; =========================================================== ; INT 0 Interrupt Service Routine ; ; INT0_ISR: setb Flag_8 ; 053a d2 08 R. reti ; 053c 32 2 ; ; ; ; =========================================================== ; Serial Interrupt Service Routine ; SER_ISR: push psw ; 053d c0 d0 @P push acc ; 053f c0 e0 @` jb ri,SER_RCV ; 0541 20 98 06 .. setb Flag_sbuf_empty ; 0544 d2 12 R. clr ti ; 0546 c2 99 B. ajmp SER_END ; 0548 e1 30 a0 ; SER_RCV: clr ri ; 054a c2 98 B. mov psw,#0 ; 054c 75 d0 00 uP. mov a,sbuf ; 054f e5 99 e. clr acc.7 ; 0551 c2 e7 Bg cjne a,#51h,X055e ; 0553 b4 51 08 4Q. mov sbuf,20h ; 0556 85 20 99 . . anl 20h,#0feh ; 0559 53 20 fe S ~ ajmp SER_END ; 055c e1 30 a0 ; X055e: cjne a,#58h,X056e ; 055e b4 58 0d 4X. pop acc ; 0561 d0 e0 P` pop psw ; 0563 d0 d0 PP mov a,#0a8h ; 0565 74 a8 t( push acc ; 0567 c0 e0 @` mov a,#0 ; 0569 74 00 t. push acc ; 056b c0 e0 @` reti ; 056d 32 2 ; X056e: jb Flag_31,X0579 ; 056e 20 1f 08 .. jb Flag_21,X057b ; 0571 20 15 07 .. jnb b.6,X057d ; 0574 30 f6 06 0v. ajmp X05ee ; 0577 a1 ee !n ; X0579: ajmp X063e ; 0579 c1 3e A> ; X057b: ajmp X06d5 ; 057b c1 d5 AU ; X057d: cjne a,#53h,X058c ; 057d b4 53 0c 4S. setb Flag_31 ; 0580 d2 1f R. setb Flag_28 ; 0582 d2 1c R. setb Flag_29 ; 0584 d2 1d R. clr Flag_27 ; 0586 c2 1b B. setb OddNibble ; 0588 d2 0d R. ajmp SER_END ; 058a e1 30 a0 ; X058c: cjne a,#50h,X0597 ; 058c b4 50 08 4P. setb Flag_21 ; 058f d2 15 R. clr Flag_27 ; 0591 c2 1b B. setb OddNibble ; 0593 d2 0d R. ajmp SER_END ; 0595 e1 30 a0 ; X0597: cjne a,#52h,X05a3 ; 0597 b4 52 09 4R. clr Flag_17 ; 059a c2 11 B. mov psw,#8 ; 059c 75 d0 08 uP. mov r1,#27h ; 059f 79 27 y' ajmp SER_END ; 05a1 e1 30 a0 ; X05a3: cjne a,#59h,X05b8 ; 05a3 b4 59 12 4Y. setb b.6 ; 05a6 d2 f6 Rv clr Flag_27 ; 05a8 c2 1b B. clr b.1 ; 05aa c2 f1 Bq clr b.2 ; 05ac c2 f2 Br clr b.3 ; 05ae c2 f3 Bs clr b.4 ; 05b0 c2 f4 Bt clr b.5 ; 05b2 c2 f5 Bu setb OddNibble ; 05b4 d2 0d R. ajmp SER_END ; 05b6 e1 30 a0 ; X05b8: cjne a,#56h,X05ea ; 05b8 b4 56 2f 4V/ mov 28h,#30h ; 05bb 75 28 30 u(0 mov 29h,#30h ; 05be 75 29 30 u)0 mov 2ah,#30h ; 05c1 75 2a 30 u*0 mov 2bh,#30h ; 05c4 75 2b 30 u+0 mov 2ch,#30h ; 05c7 75 2c 30 u,0 mov 2dh,#31h ; 05ca 75 2d 31 u-1 mov 2eh,#30h ; 05cd 75 2e 30 u.0 mov 2fh,#30h ; 05d0 75 2f 30 u/0 mov 30h,#30h ; 05d3 75 30 30 u00 mov 31h,#31h ; 05d6 75 31 31 u11 mov 32h,#30h ; 05d9 75 32 30 u20 mov 33h,#30h ; 05dc 75 33 30 u30 clr Flag_17 ; 05df c2 11 B. mov psw,#8 ; 05e1 75 d0 08 uP. mov r1,#27h ; 05e4 79 27 y' ajmp SER_END ; 05e6 e1 30 a0 ; X05e8: pop acc ; 05e8 d0 e0 P` X05ea: ajmp X0701 ; 05ea e1 01 a. ; X05ec: ajmp SER_END ; 05ec e1 30 a0 ; X05ee: push acc ; 05ee c0 e0 @` clr c ; 05f0 c3 C subb a,#47h ; 05f1 94 47 .G jnc X05e8 ; 05f3 50 f3 Ps pop acc ; 05f5 d0 e0 P` acall Hex2Byte ; 05f7 71 88 q. jbc OddNibble,X05ec ; 05f9 10 0d f0 ..p setb OddNibble ; 05fc d2 0d R. mov a,Rx_Byte ; 05fe e5 58 eX jbc Flag_27,X0618 ; 0600 10 1b 15 ... jbc b.1,X061e ; 0603 10 f1 18 .q. jbc b.2,X0624 ; 0606 10 f2 1b .r. jbc b.3,X062a ; 0609 10 f3 1e .s. jbc b.4,X0630 ; 060c 10 f4 21 .t! jbc b.5,X0636 ; 060f 10 f5 24 .u$ mov 5dh,a ; 0612 f5 5d u] setb Flag_27 ; 0614 d2 1b R. ajmp SER_END ; 0616 e1 30 a0 ; X0618: mov 5eh,a ; 0618 f5 5e u^ setb b.1 ; 061a d2 f1 Rq ajmp SER_END ; 061c e1 30 a0 ; X061e: mov 5fh,a ; 061e f5 5f u_ setb b.2 ; 0620 d2 f2 Rr ajmp SER_END ; 0622 e1 30 a0 ; X0624: mov 60h,a ; 0624 f5 60 u` setb b.3 ; 0626 d2 f3 Rs ajmp SER_END ; 0628 e1 30 a0 ; X062a: mov 61h,a ; 062a f5 61 ua setb b.4 ; 062c d2 f4 Rt ajmp SER_END ; 062e e1 30 a0 ; X0630: mov 62h,a ; 0630 f5 62 ub setb b.5 ; 0632 d2 f5 Ru ajmp SER_END ; 0634 e1 30 a0 ; X0636: mov 63h,a ; 0636 f5 63 uc clr b.6 ; 0638 c2 f6 Bv clr Flag_3 ; 063a c2 03 B. ajmp SER_END ; 063c e1 30 a0 ; X063e: cjne a,#5ah,X0643 ; 063e b4 5a 02 4Z. ajmp X06ab ; 0641 c1 ab A+ ; X0643: push acc ; 0643 c0 e0 @` clr c ; 0645 c3 C subb a,#47h ; 0646 94 47 .G jnc X05e8 ; 0648 50 9e P. pop acc ; 064a d0 e0 P` acall Hex2Byte ; 064c 71 88 q. jbc OddNibble,X06a9 ; 064e 10 0d 58 ..X setb OddNibble ; 0651 d2 0d R. mov a,Rx_Byte ; 0653 e5 58 eX jnb Flag_29,X06a2 ; 0655 30 1d 4a 0.J jb Flag_24,X067e ; 0658 20 18 23 .# jnb Flag_28,X0669 ; 065b 30 1c 0b 0.. jbc Flag_27,X0667 ; 065e 10 1b 06 ... mov 5bh,a ; 0661 f5 5b u[ setb Flag_27 ; 0663 d2 1b R. sjmp X06a9 ; 0665 80 42 .B ; X0667: mov 5ch,a ; 0667 f5 5c u\ X0669: acall b7_tgl ; 0669 71 d7 qW mov 36h,5ah ; 066b 85 5a 36 .Z6 jnb Flag_14,X0674 ; 066e 30 0e 03 0.. orl 36h,#80h ; 0671 43 36 80 C6. X0674: mov 37h,5bh ; 0674 85 5b 37 .[7 mov 38h,5ch ; 0677 85 5c 38 .\8 mov r1,#39h ; 067a 79 39 y9 sjmp X069f ; 067c 80 21 .! ; X067e: jnb Flag_28,X068c ; 067e 30 1c 0b 0.. jbc Flag_27,X068a ; 0681 10 1b 06 ... mov 5bh,a ; 0684 f5 5b u[ setb Flag_27 ; 0686 d2 1b R. sjmp X06a9 ; 0688 80 1f .. ; X068a: mov 5ch,a ; 068a f5 5c u\ X068c: acall b7_tgl ; 068c 71 d7 qW mov 3eh,5ah ; 068e 85 5a 3e .Z> jnb Flag_14,X0697 ; 0691 30 0e 03 0.. orl 3eh,#80h ; 0694 43 3e 80 C>. X0697: mov 3fh,5bh ; 0697 85 5b 3f .[? mov 40h,5ch ; 069a 85 5c 40 .\@ mov r1,#41h ; 069d 79 41 yA X069f: jbc Flag_28,X06a7 ; 069f 10 1c 05 ... X06a2: mov @r1,a ; 06a2 f7 w clr Flag_29 ; 06a3 c2 1d B. ajmp X0705 ; 06a5 e1 05 a. ; X06a7: clr Flag_29 ; 06a7 c2 1d B. X06a9: ajmp SER_END ; 06a9 e1 30 a0 ; X06ab: jb OddNibble,X06b0 ; 06ab 20 0d 02 .. ajmp X0701 ; 06ae e1 01 a. ; X06b0: jnb Flag_28,X06b5 ; 06b0 30 1c 02 0.. setb Flag_0 ; 06b3 d2 00 R. X06b5: setb Flag_30 ; 06b5 d2 1e R. jnb Flag_26,X06bc ; 06b7 30 1a 02 0.. clr Flag_31 ; 06ba c2 1f B. X06bc: cjne r1,#36h,X06c1 ; 06bc b9 36 02 96. sjmp X06c4 ; 06bf 80 03 .. ; X06c1: cjne r1,#3eh,X06c6 ; 06c1 b9 3e 02 9>. X06c4: ajmp SER_END ; 06c4 e1 30 a0 ; X06c6: cjne r1,#3dh,X06cb ; 06c6 b9 3d 02 9=. ajmp X0716 ; 06c9 e1 16 a. ; X06cb: cjne r1,#45h,X06d0 ; 06cb b9 45 02 9E. ajmp X0716 ; 06ce e1 16 a. ; X06d0: mov @r1,#20h ; 06d0 77 20 w inc r1 ; 06d2 09 . sjmp X06c6 ; 06d3 80 f1 .q ; X06d5: push acc ; 06d5 c0 e0 @` clr c ; 06d7 c3 C subb a,#47h ; 06d8 94 47 .G jnc X06ff ; 06da 50 23 P# pop acc ; 06dc d0 e0 P` acall Hex2Byte ; 06de 71 88 q. jbc OddNibble,SER_END; 06e0 10 0d 4d ..M setb OddNibble ; 06e3 d2 0d R. mov a,Rx_Byte ; 06e5 e5 58 eX jb Flag_27,X06f0 ; 06e7 20 1b 06 .. mov 5ah,a ; 06ea f5 5a uZ setb Flag_27 ; 06ec d2 1b R. sjmp SER_END ; 06ee 80 40 .@ ; X06f0: cjne a,#0,X06f7 ; 06f0 b4 00 04 4.. clr Flag_26 ; 06f3 c2 1a B. sjmp X06f9 ; 06f5 80 02 .. ; X06f7: setb Flag_26 ; 06f7 d2 1a R. X06f9: clr Flag_21 ; 06f9 c2 15 B. clr Flag_3 ; 06fb c2 03 B. ajmp SER_END ; 06fd e1 30 a0 ; X06ff: pop acc ; 06ff d0 e0 P` X0701: setb Flag_0 ; 0701 d2 00 R. ajmp SER_END ; 0703 e1 30 a0 ; X0705: inc r1 ; 0705 09 . jb Flag_24,X070d ; 0706 20 18 04 .. mov a,#36h ; 0709 74 36 t6 sjmp X070f ; 070b 80 02 .. ; X070d: mov a,#3eh ; 070d 74 3e t> X070f: add a,#7 ; 070f 24 07 $. mov 57h,r1 ; 0711 89 57 .W cjne a,57h,SER_END ; 0713 b5 57 1a 5W. X0716: setb Flag_20 ; 0716 d2 14 R. setb Flag_29 ; 0718 d2 1d R. mov 65h,#2 ; 071a 75 65 02 ue. acall TX_ACK ; 071d 91 dc .\ jbc Flag_24,X072b ; 071f 10 18 09 ... setb Flag_24 ; 0722 d2 18 R. mov r1,#3eh ; 0724 79 3e y> mov 66h,#36h ; 0726 75 66 36 uf6 ajmp SER_END ; 0729 e1 30 a0 ; X072b: mov r1,#36h ; 072b 79 36 y6 mov 66h,#3eh ; 072d 75 66 3e uf> SER_END: pop acc ; 0730 d0 e0 P` pop psw ; 0732 d0 d0 PP reti ; 0734 32 2 ; ; =========================================================== ; Register/Memory Equates ; Rx_Byte equ 58h t1_rval equ 6bh ; ; SFR Equates ; p3_switches equ 0b0h ; ; Memory bit Equates ; Flag_0 equ 0 Flag_1 equ 1 Flag_2 equ 2 Flag_3 equ 3 Flag_8 equ 8 Flag_9 equ 9 Flag_10 equ 0ah Flag_11 equ 0bh Flag_12 equ 0ch OddNibble equ 0dh Flag_14 equ 0eh Flag_15 equ 0fh Flag_16 equ 10h Flag_17 equ 11h Flag_sbuf_empty equ 12h Flag_19 equ 13h Flag_20 equ 14h Flag_21 equ 15h Flag_22 equ 16h Flag_23 equ 17h Flag_24 equ 18h Flag_25 equ 19h Flag_26 equ 1ah Flag_27 equ 1bh Flag_28 equ 1ch Flag_29 equ 1dh Flag_30 equ 1eh Flag_31 equ 1fh Flag_32 equ 20h Flag_33 equ 21h Flag_34 equ 22h Flag_35 equ 23h Flag_36 equ 24h Flag_37 equ 25h Flag_38 equ 26h Flag_39 equ 27h Flag_40 equ 28h Flag_41 equ 29h Flag_42 equ 2ah Flag_43 equ 2bh Flag_44 equ 2ch Flag_45 equ 2dh Flag_46 equ 2eh Flag_47 equ 2fh ; end ;