Page 1 of 1

WDC816CC and sprintf

Posted: Tue Apr 30, 2024 11:19 am
by AndrewP
... Or it might be better to call this WDC816CC and anything from fcntl as it seems that all the low level I/O stuff is missing.

Still if anyone has managed to use sprintf with WDC's C compiler I would dearly love to know how.

Compiling with the Large memory model (-ml) and linking with the Large C library (-lcl)

Code: Select all

wdc816cc.exe  -bs -DUSING_816 -ml -wr -wu -so -sp -lt -pb -pp -px -o Main.obj Main.c
wdcln.exe -C20000,00000 -g -t -sz -HB -obin\VideoUpload.bin Main.obj -lcl -lml
then I get the following undefined symbols:

Code: Select all

Undefined symbol: ~~unlink
Undefined symbol: ~~close
Undefined symbol: ~~isatty
Undefined symbol: ~~write
Undefined symbol: ~~lseek
I also tried compiling with the Small memory model (-ms) and linking with the Small C library (-lcs)

Code: Select all

wdc816cc.exe  -bs -DUSING_816 -mcs -wr -wu -so -sp -lt -pb -pp -px -o Main.obj Main.c
wdcln.exe -g -t -sz -HB -obin\VideoUpload.bin Main.obj -lcs -lms
but still get similar undefined symbols:

Code: Select all

Undefined symbol: _~unlink
Undefined symbol: _~close
Undefined symbol: _~isatty
Undefined symbol: _~write
Undefined symbol: _~lseek
So I don't think it's a Large or Compact only deficiency.

Re: WDC816CC and sprintf

Posted: Wed May 01, 2024 4:00 am
by Yuri
Does anything work in their library?

If you need a printf() function, I have one of those I wrote:
https://raw.githubusercontent.com/Kelma ... snprintf.c


XD

Re: WDC816CC and sprintf

Posted: Wed May 01, 2024 5:36 am
by BigDumbDinosaur
Yuri wrote:
Does anything work in their library?

If you need a printf() function, I have one of those I wrote:
https://raw.githubusercontent.com/Kelma ... snprintf.c

I suspect the TIDE library is all relocatable assembly language stuff.

Re: WDC816CC and sprintf

Posted: Wed May 01, 2024 5:10 pm
by AndrewP
Yuri wrote:
Does anything work in their library?

If you need a printf() function, I have one of those I wrote
Thank you, that looks nice and compact - I do believe I will be borrowing it :D

Most of the standard C library works (it's only the far heap stuff and fcntl I've had issues with) and the mathematical stuff works, floats, long ints, quotients, multiplication etc... The problem is that some of the standard functions depend on malloc (as opposed to farmalloc) and I don't fully understand how to make that play nicely with the large memory model.
BigDumbDinosaur wrote:
I suspect the TIDE library is all relocatable assembly language stuff.
It's gotta be. I haven't tried decompiling it (and don't have an emulator to step through it yet either) but the locations of the standard C functions move around and some of the calls seem non-C; i.e. they must be assembly.