OpenCores
URL https://opencores.org/ocsvn/light8080/light8080/trunk

Subversion Repositories light8080

[/] [light8080/] [trunk/] [tools/] [c80/] [c80_readme.txt] - Blame information for rev 65

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 65 motilito
Samll-C compiler adapted for embedded systems by Moti Litcochevski.
2
(February 20, 2012)
3
 
4
This compiler is an adapted version of the C80DOS compiler found on
5
http://www.cpm.z80.de/small_c.html.
6
 
7
After downloading the compiler I tried to generate some code for my FPGA SOC
8
using the light8080 CPU. The generated assembler code presented a few issues:
9
 
10
1. The compiler operates in interactive mode requesting the user to enter
11
   filenames step by step. This is very inconvenient when compiling over and over
12
   again.
13
2. The generated assembly code did not compile using my preferred AS80 assembler.
14
   Although other assemblers are available, they are not free to be used for all
15
   purposes.
16
3. The stack pointer was initialized to some constant value.
17
4. Some coding extras where missing. For example, defining IO ports for CPU
18
   peripherals (see below).
19
 
20
The compiler version presented here provides some improvements to the above
21
issues:
22
 
23
1. Main routine was changed to enable command line operation of the compiler.
24
   For command line options just run the compiler without any input options.
25
2. Assembly code was changed to the syntax used by the Z80. This enables the
26
   output assembly file to be compiled using the AS80 tool.
27
3. Stack pointer initial value may be specified in the command line options.
28
4. Supporting line comments "//". this is a must for me.
29
5. Support for hexadecimal values defined with "0x" prefix.
30
6. Defining IO ports using the following syntax:
31
      // value in brackets is the port address
32
      port (128) UDATA;
33
   Address may be entered as hexadecimal value.
34
7. Support for global variable init values either as strings or list.
35
   For example:
36
      // string init value
37
      char tstring[10] = "Hello";
38
      // value list init value
39
      int tint[10] = {1,2,3,4,5,6,7,8,9,10};
40
 
41
Note that one of the program source file must include the "c80.lib" assembler file
42
which defines the library assembler functions used by the compiler. Currently all
43
functions will be added to the output file even if not used. This will increase the
44
size of the program memory by about 300 bytes.
45
 
46
Features that are missing from the current release:
47
1. Add "#ifdef" macro statements.
48
2. Include only the library functions used by the program.
49
 
50
Hope you find this application helpful,
51
Moti

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.