From: Kevin Z. <ps...@hu...> - 2009-05-05 02:21:57
|
Thanks for the info... That is exactly what I am doing (although my screen size is 80 by 40 and with attribute bytes like dos used to be). This is actually just an FPGA project to learn with. Implementing a z80, a 640x480 vga core (text only so far), an SD card, etc. All running software compiled with sdcc hopefully :) Thanks for more pointers! Kevin Richard Gray wrote: > I gather from elsewhere that your target is a Z80? If so, you need at least > an '-mz80' on the command line, thus you would use... > > sdcc -mz80 putchar.c > > On your code - I would comment that you're using a '=' on your if comparison, > you probably mean '=='. I would simplify the pointer declarations too with a > typedef, then things might be clearer for the compiler. If you're declaring > an absolute address in memory, then you should use something like this array > declaration I used on a recent project... > > typedef unsigned char byte_t; > > volatile byte_t __at 0xD000 VideoRAM[25*40]; > > The 'volatile' keyword may or may not be appropriate in your application, but > the '__at' allows you to declare an absolute address. The byte_t type I > declare is useful because 8-bit signed integers (chars) aren't all that > useful much of the time. If you need a signed integer, you will probably want > short or int. > > On Tuesday 05 May 2009 02:35:11 Kevin Zee wrote: > >> I have gotten the libraries to build an am trying (unsuccessfully) to >> make a custom putchar.c (I removed the putchar.s file). This is what I >> have so far: >> >> #include "memory.h" >> void putchar(char ch) { >> *(unsigned char *)pScreen = video; >> *(unsigned char *)pX = caratx; >> *(unsigned char *)pY = caraty; >> >> char x; >> char y; >> >> x = pX; >> y = pY; >> >> pScreen += y * 160; >> pScreen += x * 2; >> >> if (ch = 0x0d) { >> // Adjust the cursor position, checking to see if we need to >> scrool the screen >> >> return; >> } >> >> return; >> } >> >> >> It gets errors on just about every line. The first error says syntax >> error: token 'char' where I declare x. Then, everywhere that a variable >> is mentioned, it says undefined identifier - even when I declare a variable >> >> the .h file is. >> #ifndef MEMORY_H >> #define MEMORY_H >> >> #define caratx 0x1FFE >> #define caraty 0x1FFF >> #define video 0x2000 >> >> #endif >> >> I simply use "sdcc putchar.c" without quotes to compile. >> >> I have been trying for hours to get this thing to work. What am I doing >> wrong? >> >> > <snip> > > > |