home *** CD-ROM | disk | FTP | other *** search
File List | 1989-09-07 | 27.1 KB | 591 lines |
- ####################################################################################################
- # #
- # Archimedes 8051 C-Compiler V2.20A/MD2 07/Sep/89 15:00:13 #
- # #
- # Memory model = large reentrant #
- # Source file = example.c #
- # List file = example.lst #
- # Object file = example.r03 #
- # Command line = example -m0 -V -e -g -L -q #
- # #
- # (c) Copyright Archimedes Software Inc. 1988 #
- ####################################################################################################
-
- \ 0000 NAME example(16)
- \ 0000 RSEG CODE(0)
- \ 0000 RSEG ECSTR(0)
- \ 0000 RSEG CCSTR(0)
- \ 0000 RSEG UDATA(0)
- \ 0000 RSEG CDATA(0)
- \ 0000 RSEG IDATA(0)
- \ 0000 PUBLIC do_io(147,31)
- \ 0000 PUBLIC flags(10,171)
- \ 0000 PUBLIC main(147,31)
- \ 0000 EXTERN printf(155,66)
- \ 0000 EXTERN pulse(117,128)
- \ 0000 EXTERN putchar(22,128)
- \ 0000 PUBLIC ring_bell(147,31)
- \ 0000 PUBLIC set_timer(147,31)
- \ 0000 PUBLIC sieve(147,31)
- \ 0000 EXTERN ?POP_R5_L17
- \ 0000 EXTERN ?I_ADD_L14
- \ 0000 EXTERN ?I_ADD_ASG_L00
- \ 0000 EXTERN ?ENTER_L17
- \ 0000 EXTERN ?LEAVE_L17
- \ 0000 EXTERN ?ST_IND1_L08
- \ 0000 EXTERN ?ST_REL1_L13
- \ 0000 EXTERN ?ST_REL2_L13
- \ 0000 EXTERN ?LD_REL1_L11
- \ 0000 EXTERN ?LD_REL2_L11
- \ 0000 EXTERN ?PUSH_R3_L17
- \ 0000 EXTERN ?PUSH_R5_L17
- \ 0000 EXTERN ?PUSH_R2_R3_L17
- \ 0000 EXTERN ?SI_CMP_LE_L02
- \ 0000 EXTERN ?I_CMP_EQ_L02
- \ 0000 EXTERN ?PRINC1_L05
- \ 0000 EXTERN ?POINC1_L05
- \ 0000 EXTERN ?CL8051_2_20_L17
- \ 0000 EXTERN _R
- \ 0000 RSEG CODE
- 1 /* EXAMPLE.C: Some sample code for the Archimedes C-51 compiler kit.
- 2 * See the file EXAMPLE.DOC and the Tutorial Introduction to the
- 3 * manual for more information. Revised 9-14-87, VC. */
- 4
- 5 #include <stdio.h> /* required header for printf, putchar */
- 6 #include <io51.h> /* required header for output, bit_set, etc. */
- 7
- 8 #define TRUE 1
- 9 #define FALSE 0
- 10 #define BELL 7 /* ASCII terminal bell */
- 11
- 12 /* The following is a function prototype for the assembly
- 13 * language routine, pulse. See the source file PULSE.S03 */
- 14
- 15 extern int pulse(int count, char value);
- 16
- 17
- 18 /* ------------------------------------------------------------ */
- 19 void set_timer() /* initialize Timer 0 to generate interupts */
- 20 {
- \ 0000 set_timer:
- \ 0000 E4 CLR A
- \ 0001 7800 MOV R0,#0
- \ 0003 7904 MOV R1,#4
- \ 0005 120000 LCALL ?ENTER_L17
- 21 output(TMOD,1); /* Timer-0: mode 1 (16-bit timer) */
- \ 0008 7B01 MOV R3,#1
- \ 000A 8B89 MOV 137,R3
- 22 output(TH0,0x4C); /* load 4C00h for interrupt every 50 ms */
- \ 000C 7B4C MOV R3,#76
- \ 000E 8B8C MOV 140,R3
- 23 output(TL0,0);
- \ 0010 7B00 MOV R3,#0
- \ 0012 8B8A MOV 138,R3
- 24 set_bit(TR0_bit); /* set Timer 0 run control bit */
- \ 0014 D28C SETB TCON.4
- 25 set_bit(ET0_bit); /* set interrupt mask bit ET0 */
- \ 0016 D2A9 SETB IE.1
- 26 set_bit(EA_bit); /* enable interrupts bit EA */
- \ 0018 D2AF SETB IE.7
- 27 }
- \ 001A ?0000:
- \ 001A 020000 LJMP ?LEAVE_L17
- 28
- 29
- 30 /* ------------------------------------------------------------ */
- 31 void ring_bell() /* Timer-0 interrupt handler, rings the CRT
- 32 * bell approximately every 3 seconds; called
- 33 * from vector in CSTARTUP module */
- 34 {
- \ 001D ring_bell:
- \ 001D E4 CLR A
- \ 001E 7800 MOV R0,#0
- \ 0020 7904 MOV R1,#4
- \ 0022 120000 LCALL ?ENTER_L17
- 35 static int intr_ctr = 0; /* counter for number of interrupts */
- 36
- 37 output(TH0,0x4C); /* reload timer again, hi byte */
- \ 0025 7B4C MOV R3,#76
- \ 0027 8B8C MOV 140,R3
- 38 output(TL0,0); /* low byte */
- \ 0029 7B00 MOV R3,#0
- \ 002B 8B8A MOV 138,R3
- 39 if(++intr_ctr == 60) /* only do every 60 interrupts */
- \ 002D 7B00 MOV R3,#LOW(?0001)
- \ 002F 7A00 MOV R2,#HIGH(?0001)
- \ 0031 120000 LCALL ?PRINC1_L05
- \ 0034 02 DB 2
- \ 0035 8B05 MOV _R+5,R3
- \ 0037 8A04 MOV _R+4,R2
- \ 0039 7B3C MOV R3,#60
- \ 003B 7A00 MOV R2,#0
- \ 003D 120000 LCALL ?I_CMP_EQ_L02
- \ 0040 6016 JZ ?0003
- \ 0042 ?0002:
- 40 {
- 41 putchar(BELL); /* ring the bell, or do some useful task */
- \ 0042 7B07 MOV R3,#7
- \ 0044 7A00 MOV R2,#0
- \ 0046 900002 MOV DPTR,#2
- \ 0049 120000 LCALL putchar
- 42 intr_ctr = 0;
- \ 004C 7B00 MOV R3,#0
- \ 004E 7A00 MOV R2,#0
- \ 0050 900000 MOV DPTR,#?0001
- \ 0053 EA MOV A,R2
- \ 0054 F0 MOVX @DPTR,A
- \ 0055 EB MOV A,R3
- \ 0056 A3 INC DPTR
- \ 0057 F0 MOVX @DPTR,A
- \ 0058 ?0003:
- 43 }
- 44 }
- \ 0058 ?0004:
- \ 0058 020000 LJMP ?LEAVE_L17
- 45
- 46
- 47 /* ------------------------------------------------------------ */
- 48
- 49 #define BIT_VAR 0 /* 1st bit address in internal RAM (20.0 hex) */
- 50
- 51 void do_io() /* demonstrate 8051 I/O functions */
- 52 {
- \ 005B do_io:
- \ 005B E4 CLR A
- \ 005C 7800 MOV R0,#0
- \ 005E 7905 MOV R1,#5
- \ 0060 120000 LCALL ?ENTER_L17
- 53 char c;
- 54
- 55 /* write and read Port 1 */
- 56 output(P1,0x0F);
- \ 0063 7B0F MOV R3,#15
- \ 0065 8B90 MOV 144,R3
- 57 printf("\nPort 1: %02X\n",input(P1));
- \ 0067 AB90 MOV R3,144
- \ 0069 7A00 MOV R2,#0
- \ 006B 120000 LCALL ?PUSH_R2_R3_L17
- \ 006E 7B00 MOV R3,#LOW(?0005)
- \ 0070 7A00 MOV R2,#HIGH(?0005)
- \ 0072 900004 MOV DPTR,#4
- \ 0075 120000 LCALL printf
- 58 /* Write and read an absolute external data address,
- 59 * such as a UART or other memory-mapped I/O device.
- 60 * "(char *)" casts the int constant to a char pointer. */
- 61 *(char *)0xE000 = c; /* write */
- \ 0078 120000 LCALL ?LD_REL1_L11
- \ 007B 0400 DW 1024
- \ 007D 8B05 MOV _R+5,R3
- \ 007F 7B00 MOV R3,#0
- \ 0081 7AE0 MOV R2,#224
- \ 0083 120000 LCALL ?ST_IND1_L08
- 62 c = *(char *)0xE000; /* read */
- \ 0086 7B00 MOV R3,#0
- \ 0088 7AE0 MOV R2,#224
- \ 008A 8A83 MOV DPH,R2
- \ 008C 8B82 MOV DPL,R3
- \ 008E E0 MOVX A,@DPTR
- \ 008F FB MOV R3,A
- \ 0090 120000 LCALL ?ST_REL1_L13
- \ 0093 0400 DW 1024
- 63 c = read_XDATA(0xE00); /* another way, for SMALL model */
- \ 0095 7B00 MOV R3,#0
- \ 0097 7A0E MOV R2,#14
- \ 0099 8A83 MOV DPH,R2
- \ 009B 8B82 MOV DPL,R3
- \ 009D E0 MOVX A,@DPTR
- \ 009E FB MOV R3,A
- \ 009F 120000 LCALL ?ST_REL1_L13
- \ 00A2 0400 DW 1024
- 64 printf("Data at E000h = %02Xh\n",c);
- \ 00A4 120000 LCALL ?LD_REL1_L11
- \ 00A7 0400 DW 1024
- \ 00A9 7A00 MOV R2,#0
- \ 00AB 120000 LCALL ?PUSH_R2_R3_L17
- \ 00AE 7B0F MOV R3,#LOW(?0006)
- \ 00B0 7A00 MOV R2,#HIGH(?0006)
- \ 00B2 900004 MOV DPTR,#4
- \ 00B5 120000 LCALL printf
- 65 /* read a byte of CODE memory */
- 66 printf("Location 0 in code memory is: %02X",read_CODE(0));
- \ 00B8 7B00 MOV R3,#0
- \ 00BA 7A00 MOV R2,#0
- \ 00BC 8A83 MOV DPH,R2
- \ 00BE 8B82 MOV DPL,R3
- \ 00C0 E4 CLR A
- \ 00C1 93 MOVC A,@A+DPTR
- \ 00C2 FB MOV R3,A
- \ 00C3 7A00 MOV R2,#0
- \ 00C5 120000 LCALL ?PUSH_R2_R3_L17
- \ 00C8 7B26 MOV R3,#LOW(?0007)
- \ 00CA 7A00 MOV R2,#HIGH(?0007)
- \ 00CC 900004 MOV DPTR,#4
- \ 00CF 120000 LCALL printf
- 67 /* show use of bit-addressable RAM variables */
- 68 if(read_bit(P1_0_bit) || read_bit(P1_1_bit))
- \ 00D2 209003 JB P1.0,?0008
- \ 00D5 309102 JNB P1.1,?0009
- \ 00D8 ?0010:
- \ 00D8 ?0011:
- \ 00D8 ?0008:
- 69 set_bit(BIT_VAR);
- \ 00D8 D200 SETB 32.0
- \ 00DA ?0009:
- 70 }
- \ 00DA ?0012:
- \ 00DA 020000 LJMP ?LEAVE_L17
- 71
- 72 /* ------------------------------------------------------------
- 73 * Eratosthenese Sieve program from BYTE, 1/83 */
- 74
- 75 #define SIZE 8190 /* size of array for sieve routine */
- 76 char flags[SIZE+1]; /* array for sieve */
- 77
- 78 void sieve()
- 79 {
- \ 00DD sieve:
- \ 00DD E4 CLR A
- \ 00DE 7800 MOV R0,#0
- \ 00E0 790E MOV R1,#14
- \ 00E2 120000 LCALL ?ENTER_L17
- 80 register int i,k; /* register class NOT supported -- ignored */
- 81 int prime,count,iter;
- 82
- 83 printf("\nSieve: 10 iterations...\n");
- \ 00E5 7B49 MOV R3,#LOW(?0013)
- \ 00E7 7A00 MOV R2,#HIGH(?0013)
- \ 00E9 900002 MOV DPTR,#2
- \ 00EC 120000 LCALL printf
- 84 for (iter = 1; iter <= 10; iter++) /* do program 10 times */
- \ 00EF 7B01 MOV R3,#1
- \ 00F1 7A00 MOV R2,#0
- \ 00F3 120000 LCALL ?ST_REL2_L13
- \ 00F6 0C00 DW 3072
- \ 00F8 ?0015:
- \ 00F8 120000 LCALL ?LD_REL2_L11
- \ 00FB 0C00 DW 3072
- \ 00FD 8B05 MOV _R+5,R3
- \ 00FF 8A04 MOV _R+4,R2
- \ 0101 7B0A MOV R3,#10
- \ 0103 7A00 MOV R2,#0
- \ 0105 120000 LCALL ?SI_CMP_LE_L02
- \ 0108 7003 JNZ $+5
- \ 010A 020235 LJMP ?0014
- \ 010D ?0016:
- 85 {
- 86 count = 0; /* initialize prime counter */
- \ 010D 7B00 MOV R3,#0
- \ 010F 7A00 MOV R2,#0
- \ 0111 120000 LCALL ?ST_REL2_L13
- \ 0114 0A00 DW 2560
- 87 for (i = 0; i <= SIZE; i++) /* set all flags true */
- \ 0116 7B00 MOV R3,#0
- \ 0118 7A00 MOV R2,#0
- \ 011A 120000 LCALL ?ST_REL2_L13
- \ 011D 0400 DW 1024
- \ 011F ?0019:
- \ 011F 120000 LCALL ?LD_REL2_L11
- \ 0122 0400 DW 1024
- \ 0124 8B05 MOV _R+5,R3
- \ 0126 8A04 MOV _R+4,R2
- \ 0128 7BFE MOV R3,#254
- \ 012A 7A1F MOV R2,#31
- \ 012C 120000 LCALL ?SI_CMP_LE_L02
- \ 012F 602A JZ ?0018
- \ 0131 ?0020:
- 88 flags[i] = TRUE;
- \ 0131 7B01 MOV R3,#1
- \ 0133 8B05 MOV _R+5,R3
- \ 0135 7B00 MOV R3,#LOW(flags)
- \ 0137 7A00 MOV R2,#HIGH(flags)
- \ 0139 120000 LCALL ?PUSH_R5_L17
- \ 013C 8B05 MOV _R+5,R3
- \ 013E 8A04 MOV _R+4,R2
- \ 0140 120000 LCALL ?LD_REL2_L11
- \ 0143 0500 DW 1280
- \ 0145 120000 LCALL ?I_ADD_L14
- \ 0148 120000 LCALL ?POP_R5_L17
- \ 014B 120000 LCALL ?ST_IND1_L08
- \ 014E 7404 MOV A,#4
- \ 0150 2F ADD A,R7
- \ 0151 FB MOV R3,A
- \ 0152 E4 CLR A
- \ 0153 3E ADDC A,R6
- \ 0154 FA MOV R2,A
- \ 0155 120000 LCALL ?POINC1_L05
- \ 0158 02 DB 2
- 89 for (i = 0; i <= SIZE; i++)
- \ 0159 80C4 SJMP ?0019
- \ 015B ?0018:
- \ 015B 7B00 MOV R3,#0
- \ 015D 7A00 MOV R2,#0
- \ 015F 120000 LCALL ?ST_REL2_L13
- \ 0162 0400 DW 1024
- \ 0164 ?0023:
- \ 0164 120000 LCALL ?LD_REL2_L11
- \ 0167 0400 DW 1024
- \ 0169 8B05 MOV _R+5,R3
- \ 016B 8A04 MOV _R+4,R2
- \ 016D 7BFE MOV R3,#254
- \ 016F 7A1F MOV R2,#31
- \ 0171 120000 LCALL ?SI_CMP_LE_L02
- \ 0174 7003 JNZ $+5
- \ 0176 020227 LJMP ?0022
- \ 0179 ?0024:
- 90 {
- 91 if (flags[i]) /* found a prime */
- \ 0179 7B00 MOV R3,#LOW(flags)
- \ 017B 7A00 MOV R2,#HIGH(flags)
- \ 017D 8B05 MOV _R+5,R3
- \ 017F 8A04 MOV _R+4,R2
- \ 0181 120000 LCALL ?LD_REL2_L11
- \ 0184 0400 DW 1024
- \ 0186 120000 LCALL ?I_ADD_L14
- \ 0189 8A83 MOV DPH,R2
- \ 018B 8B82 MOV DPL,R3
- \ 018D E0 MOVX A,@DPTR
- \ 018E 7003 JNZ $+5
- \ 0190 020219 LJMP ?0027
- \ 0193 ?0026:
- 92 {
- 93 prime = i + i + 3; /* twice index + 3 */
- \ 0193 120000 LCALL ?LD_REL2_L11
- \ 0196 0400 DW 1024
- \ 0198 8B05 MOV _R+5,R3
- \ 019A 8A04 MOV _R+4,R2
- \ 019C 120000 LCALL ?LD_REL2_L11
- \ 019F 0400 DW 1024
- \ 01A1 120000 LCALL ?I_ADD_L14
- \ 01A4 8B05 MOV _R+5,R3
- \ 01A6 8A04 MOV _R+4,R2
- \ 01A8 7B03 MOV R3,#3
- \ 01AA 7A00 MOV R2,#0
- \ 01AC 120000 LCALL ?I_ADD_L14
- \ 01AF 120000 LCALL ?ST_REL2_L13
- \ 01B2 0800 DW 2048
- 94 for (k = i + prime; k <= SIZE; k += prime)
- \ 01B4 120000 LCALL ?LD_REL2_L11
- \ 01B7 0400 DW 1024
- \ 01B9 8B05 MOV _R+5,R3
- \ 01BB 8A04 MOV _R+4,R2
- \ 01BD 120000 LCALL ?LD_REL2_L11
- \ 01C0 0800 DW 2048
- \ 01C2 120000 LCALL ?I_ADD_L14
- \ 01C5 120000 LCALL ?ST_REL2_L13
- \ 01C8 0600 DW 1536
- \ 01CA ?0029:
- \ 01CA 120000 LCALL ?LD_REL2_L11
- \ 01CD 0600 DW 1536
- \ 01CF 8B05 MOV _R+5,R3
- \ 01D1 8A04 MOV _R+4,R2
- \ 01D3 7BFE MOV R3,#254
- \ 01D5 7A1F MOV R2,#31
- \ 01D7 120000 LCALL ?SI_CMP_LE_L02
- \ 01DA 6032 JZ ?0028
- \ 01DC ?0030:
- 95 flags[k] = FALSE; /* kill all multiples */
- \ 01DC 7B00 MOV R3,#0
- \ 01DE 8B05 MOV _R+5,R3
- \ 01E0 7B00 MOV R3,#LOW(flags)
- \ 01E2 7A00 MOV R2,#HIGH(flags)
- \ 01E4 120000 LCALL ?PUSH_R5_L17
- \ 01E7 8B05 MOV _R+5,R3
- \ 01E9 8A04 MOV _R+4,R2
- \ 01EB 120000 LCALL ?LD_REL2_L11
- \ 01EE 0700 DW 1792
- \ 01F0 120000 LCALL ?I_ADD_L14
- \ 01F3 120000 LCALL ?POP_R5_L17
- \ 01F6 120000 LCALL ?ST_IND1_L08
- \ 01F9 120000 LCALL ?LD_REL2_L11
- \ 01FC 0800 DW 2048
- \ 01FE 8B05 MOV _R+5,R3
- \ 0200 8A04 MOV _R+4,R2
- \ 0202 7406 MOV A,#6
- \ 0204 2F ADD A,R7
- \ 0205 FB MOV R3,A
- \ 0206 E4 CLR A
- \ 0207 3E ADDC A,R6
- \ 0208 FA MOV R2,A
- \ 0209 120000 LCALL ?I_ADD_ASG_L00
- 96 count++; /* primes found */
- \ 020C 80BC SJMP ?0029
- \ 020E ?0028:
- \ 020E 740A MOV A,#10
- \ 0210 2F ADD A,R7
- \ 0211 FB MOV R3,A
- \ 0212 E4 CLR A
- \ 0213 3E ADDC A,R6
- \ 0214 FA MOV R2,A
- \ 0215 120000 LCALL ?POINC1_L05
- \ 0218 02 DB 2
- \ 0219 ?0027:
- \ 0219 7404 MOV A,#4
- \ 021B 2F ADD A,R7
- \ 021C FB MOV R3,A
- \ 021D E4 CLR A
- \ 021E 3E ADDC A,R6
- \ 021F FA MOV R2,A
- \ 0220 120000 LCALL ?POINC1_L05
- \ 0223 02 DB 2
- 97 }
- 98 }
- 99 }
- \ 0224 020164 LJMP ?0023
- \ 0227 ?0022:
- \ 0227 740C MOV A,#12
- \ 0229 2F ADD A,R7
- \ 022A FB MOV R3,A
- \ 022B E4 CLR A
- \ 022C 3E ADDC A,R6
- \ 022D FA MOV R2,A
- \ 022E 120000 LCALL ?POINC1_L05
- \ 0231 02 DB 2
- 100 printf("%d primes, sieve done.\n",count); /* found in 10th pass */
- \ 0232 0200F8 LJMP ?0015
- \ 0235 ?0014:
- \ 0235 120000 LCALL ?LD_REL2_L11
- \ 0238 0A00 DW 2560
- \ 023A 120000 LCALL ?PUSH_R2_R3_L17
- \ 023D 7B63 MOV R3,#LOW(?0032)
- \ 023F 7A00 MOV R2,#HIGH(?0032)
- \ 0241 900004 MOV DPTR,#4
- \ 0244 120000 LCALL printf
- 101 }
- \ 0247 ?0033:
- \ 0247 020000 LJMP ?LEAVE_L17
- 102
- 103 /* ------------------------------------------------------------ */
- 104 void main() /* Main EXAMPLE.C program */
- 105 {
- \ 024A main:
- \ 024A E4 CLR A
- \ 024B 7800 MOV R0,#0
- \ 024D 7904 MOV R1,#4
- \ 024F 120000 LCALL ?ENTER_L17
- 106 printf("EXAMPLE.C sample program.\n");
- \ 0252 7B7B MOV R3,#LOW(?0034)
- \ 0254 7A00 MOV R2,#HIGH(?0034)
- \ 0256 900002 MOV DPTR,#2
- \ 0259 120000 LCALL printf
- 107 set_timer(); /* turn on timer and interrupts */
- \ 025C 900000 MOV DPTR,#0
- \ 025F 120000 LCALL set_timer
- 108 printf("Timer enabled, bell should ring every 3 seconds.\n\n");
- \ 0262 7B96 MOV R3,#LOW(?0035)
- \ 0264 7A00 MOV R2,#HIGH(?0035)
- \ 0266 900002 MOV DPTR,#2
- \ 0269 120000 LCALL printf
- 109 do_io(); /* display RAM, Port1, etc. */
- \ 026C 900000 MOV DPTR,#0
- \ 026F 12005B LCALL do_io
- 110 printf("\nPulsing Port 1.7 (8051 pin 8)\n");
- \ 0272 7BC9 MOV R3,#LOW(?0036)
- \ 0274 7A00 MOV R2,#HIGH(?0036)
- \ 0276 900002 MOV DPTR,#2
- \ 0279 120000 LCALL printf
- 111 pulse(200,0xA5); /* call assembler routine pulse P1 */
- \ 027C 7BA5 MOV R3,#165
- \ 027E 120000 LCALL ?PUSH_R3_L17
- \ 0281 7BC8 MOV R3,#200
- \ 0283 7A00 MOV R2,#0
- \ 0285 900003 MOV DPTR,#3
- \ 0288 120000 LCALL pulse
- 112 sieve(); /* do the Sieve benchmark */
- \ 028B 900000 MOV DPTR,#0
- \ 028E 1200DD LCALL sieve
- 113 }
- \ 0291 ?0037:
- \ 0291 020000 LJMP ?LEAVE_L17
- \ 0000 RSEG ECSTR
- \ 0000 ?0005:
- \ 000F DS 15
- \ 000F ?0006:
- \ 0026 DS 23
- \ 0026 ?0007:
- \ 0049 DS 35
- \ 0049 ?0013:
- \ 0063 DS 26
- \ 0063 ?0032:
- \ 007B DS 24
- \ 007B ?0034:
- \ 0096 DS 27
- \ 0096 ?0035:
- \ 00C9 DS 51
- \ 00C9 ?0036:
- \ 00E9 DS 32
- \ 0000 RSEG CCSTR
- \ 0000 0A506F72 DB 10,'Port 1: %02X',10,0
- \ 0004 7420313A
- \ 0008 20253032
- \ 000C 580A00
- \ 000F 44617461 DB 'Data at E000h = %02Xh',10,0
- \ 0013 20617420
- \ 0017 45303030
- \ 001B 68203D20
- \ 001F 25303258
- \ 0023 680A00
- \ 0026 4C6F6361 DB 'Location 0 in code memory is: %02X',0
- \ 002A 74696F6E
- \ 002E 20302069
- \ 0032 6E20636F
- \ 0036 6465206D
- \ 003A 656D6F72
- \ 003E 79206973
- \ 0042 3A202530
- \ 0046 325800
- \ 0049 0A536965 DB 10,'Sieve: 10 iterations...',10,0
- \ 004D 76653A20
- \ 0051 31302069
- \ 0055 74657261
- \ 0059 74696F6E
- \ 005D 732E2E2E
- \ 0061 0A00
- \ 0063 25642070 DB '%d primes, sieve done.',10,0
- \ 0067 72696D65
- \ 006B 732C2073
- \ 006F 69657665
- \ 0073 20646F6E
- \ 0077 652E0A00
- \ 007B 4558414D DB 'EXAMPLE.C sample program.',10,0
- \ 007F 504C452E
- \ 0083 43207361
- \ 0087 6D706C65
- \ 008B 2070726F
- \ 008F 6772616D
- \ 0093 2E0A00
- \ 0096 54696D65 DB 'Timer enabled, bell should ring every 3 seconds.',10,10,0
- \ 009A 7220656E
- \ 009E 61626C65
- \ 00A2 642C2062
- \ 00A6 656C6C20
- \ 00AA 73686F75
- \ 00AE 6C642072
- \ 00B2 696E6720
- \ 00B6 65766572
- \ 00BA 79203320
- \ 00BE 7365636F
- \ 00C2 6E64732E
- \ 00C6 0A0A00
- \ 00C9 0A50756C DB 10,'Pulsing Port 1.7 (8051 pin 8)',10,0
- \ 00CD 73696E67
- \ 00D1 20506F72
- \ 00D5 7420312E
- \ 00D9 37202838
- \ 00DD 30353120
- \ 00E1 70696E20
- \ 00E5 38290A00
- \ 0000 RSEG UDATA
- \ 0000 flags:
- \ 1FFF DS 8191
- \ 0000 RSEG CDATA
- \ 0000 0000 DW 0
- \ 0000 RSEG IDATA
- \ 0000 ?0001:
- \ 0002 DS 2
- \ 0002 END
-
- Errors: none
- Warnings: none
- Code size: 660
-
-