v1.9 win32 binaries don't run on some windows

Installing on windows
Post Reply
Mochilote
Member
Posts: 42
Joined: Thu Jul 19, 2007 10:54 am

v1.9 win32 binaries don't run on some windows

Post by Mochilote »

Same problem than i discovered on v1.7 :/

http://www.z88dk.org/forum/viewtopic.php?id=10

So, maibe some people may have problems with v1.9 sourceforge binaries.
User avatar
dom
Well known member
Posts: 1194
Joined: Sun Jul 15, 2007 10:01 pm

Post by dom »

Hmm, looks like this time I chose to do a release build rather than debug, and I'd only checked it that flag on the debug build option.
Mochilote
Member
Posts: 42
Joined: Thu Jul 19, 2007 10:54 am

Post by Mochilote »

Now it works on any machine :D

It's not problem with Release or Debug, you must change in project settings->General->Use of MFC From "Use Standard Windows Libraries" to "Use MFC in a Static Library" in both realease and debug settings in project, they are independent and you must chage it manually in both.

You can check the dependencies with Dependency Walker, v1.9 exe's have dependecies with MSVCR80.dll (the VSC++ runtime), now de 1.9a doesn't have this dependency.

cheers.
Ragooman
Member
Posts: 11
Joined: Thu Aug 13, 2009 1:55 pm

Post by Ragooman »

Hi,

I installed v1.9a for windows too just recently.
I added the extra paths for this.
C:\z88dk\bin
C:\z88dk\lib
C:\z88dk\lib\config

my temp dir is this
C:\z88dk\build

when I compile the example program Hello.c
I get 2 kinds of errors--[see output below]
"Unrecognised argument: \\"
" File open/read error"
I'm not sure what is causing this.
------------------------------------------------------------------------------------------------------
C:\z88dk\examples\embedded>zcc hello.c
copy c:\z88dk\lib\z88_crt0.opt C:\z88dk\build\s3o0_1.opt
1 file(s) copied.
copy C:\z88dk\build\s3o0_1.opt C:\z88dk\build\s3o0_1.asm
1 file(s) copied.
zcpp -I. -DZ80 -DSMALL_C -DZ88 -D__Z88__ -DSCCZ80 -Ic:\z88dk\include hello.c C:\z88dk\build\s3o0_.i
sccz80 -\\ C:\z88dk\build\s3o0_.i
Unrecognised argument: \\
copt c:\z88dk\lib\z80rules.2 < C:\z88dk\build\s3o0_.asm > C:\z88dk\build\s3o0_.op1
copt c:\z88dk\lib\z80rules.1 < C:\z88dk\build\s3o0_.op1 > C:\z88dk\build\s3o0_.opt
z80asm -eopt -ns -Mo -Ic:\z88dk\lib C:\z88dk\build\s3o0_.opt
z80asm -a -m -Mo -Lc:\z88dk\lib\clibs -oa.bas -iz88_clib -iz80_crt0 C:\z88dk\build\s3o0_1.opt C:\z88dk\build\s3o0_.o
1 errors occurred during assembly
Key to filenames:
C:\z88dk\build\s3o0_.o = hello.c
File 'C:\z88dk\build\s3o0_1.asm', at line 2, File open/read error

------------------------------------------------------------------------------------------------------


thanks,
=Dan
Ragooman
Member
Posts: 11
Joined: Thu Aug 13, 2009 1:55 pm

Post by Ragooman »

There's an additional question that I have

Do I need to install "z88dk-1.8.0-setup.exe" still even though I downloaded "z88dk-win32-1.9a.zip" ?

thanks
=Dan
User avatar
dom
Well known member
Posts: 1194
Joined: Sun Jul 15, 2007 10:01 pm

Post by dom »

Nope, we've just not get an installer this time.

You just need to unzip the zip file to c:\ and setup the path and environment variables.
Ragooman
Member
Posts: 11
Joined: Thu Aug 13, 2009 1:55 pm

Post by Ragooman »

What about the error messages in my previous post ?
This all happens when trying to compile the test program from the install files, Hello.c
I'm not having any luck here.

One error during this compilation is about the assembly having 1 error

z80asm -eopt -ns -Mo -Ic:\z88dk\lib C:\z88dk\build\s3o0_.opt
z80asm -a -m -Mo -Lc:\z88dk\lib\clibs -oa.bas -iz88_clib -iz80_crt0 C:\z88dk\build\s3o0_1.opt C:\z88dk\build\s3o0_.o
1 errors occurred during assembly

Another error during this compilation is about the flags not be recognized

sccz80 -\\ C:\z88dk\build\s3o0_.i
Unrecognised argument: \\

The last error during this compilation is about a file access
Key to filenames:
C:\z88dk\build\s3o0_.o = hello.c
File 'C:\z88dk\build\s3o0_1.asm', at line 2, File open/read error

What is also weird is that I do not see any of these files in my temp dir, C:\z88dk\build\
s3o0_.opt
s3o0_.i
s3o0_.o
s3o0_1.asm


Are there any other paths that I have to setup ?

thanks,
=Dan
User avatar
dom
Well known member
Posts: 1194
Joined: Sun Jul 15, 2007 10:01 pm

Post by dom »

Ooops, missed that post!

The -\\ thing looks like I was a tad over zealous in replacing the / with \ .

You'll need to replace the -\\ with -// on the OPTIONS line of the z88dk/lib/config/*.cfg files for the targets you're using.

Alternatively, grab a nightly which hasn't got that problem.
Ragooman
Member
Posts: 11
Joined: Thu Aug 13, 2009 1:55 pm

Post by Ragooman »

Well, I decided to manually compile the Hello world test program provided to see what happens

BTW, the flags that were used in the zcc "script" were incorrect.
I only suspected that the "-\\" had to be removed from the command line.
I couldn't find any docs on the proper flags for 'sccz80' - if someone could point out to this to me.

the command line; sccz80 -\\ C:\z88dk\build\s3o0_.i
should have been; sccz80 C:\z88dk\build\s3o0_.i

This is what I did
--------------------------------------------------------------------------------------------------------------------------------------------------
C:\z88dk\examples\embedded>copy c:\z88dk\lib\z88_crt0.opt C:\z88dk\build\s3o0_1.opt
1 file(s) copied.

C:\z88dk\examples\embedded>copy C:\z88dk\build\s3o0_1.opt C:\z88dk\build\s3o0_1.asm
1 file(s) copied.

C:\z88dk\examples\embedded>zcpp -I. -DZ80 -DSMALL_C -DZ88 -D__Z88__ -DSCCZ80 -Ic:\z88dk\include hello.c C:\z88dk\build\s3o0_.i

C:\z88dk\examples\embedded>sccz80 C:\z88dk\build\s3o0_.i

C:\z88dk\examples\embedded>copt c:\z88dk\lib\z80rules.2 < C:\z88dk\build\s3o0_.asm > C:\z88dk\build\s3o0_.op1

C:\z88dk\examples\embedded>copt c:\z88dk\lib\z80rules.1 < C:\z88dk\build\s3o0_.op1 > C:\z88dk\build\s3o0_.opt

C:\z88dk\examples\embedded>z80asm -eopt -ns -Mo -Ic:\z88dk\lib C:\z88dk\build\s3o0_.opt

C:\z88dk\examples\embedded>z80asm -a -m -Mo -Lc:\z88dk\lib\clibs -oa.bas -iz88_clib -iz80_crt0 C:\z88dk\build\s3o0_1.opt C:\z88dk\build\s3o0_.o
1 errors occurred during assembly
--------------------------------------------------------------------------------------------------------------------------------------------------
I can see the copied files:
s3o0_1.opt
s3o0_1.asm

I can see the various file that are generated during compilation:
s3o0_.opt
s3o0_.asm
s3o0_.op1
s3o0_.opt
s3o0_.o
s3o0_.err


In the *.err file I have the following message

File 'C:\z88dk\build\s3o0_1.asm', at line 2, File open/read error


However, in this file 's3o0_1.asm" I have this when I look with my editor

INCLUDE "z88_crt0.asm"


The file "z88_crt0.asm" happens to be in the correct dir , as I understand, C:\z88dk\lib
and I can open the file in my editor without any problem.


Does this provide some clue to this problem ?


thanks
=Dan
Ragooman
Member
Posts: 11
Joined: Thu Aug 13, 2009 1:55 pm

Post by Ragooman »

sorry about that I didn't see your post at 17:49:50
I went ahead and edited the zcc.cfg file like you said.

That error with the flags is gone now.

But I still have the other 2 errors from before

-----------------------------------------------------------------------------------------------------------------------------------
C:\z88dk\examples\embedded>zcc hello.c
copy c:\z88dk\lib\z88_crt0.opt C:\z88dk\build\s3vg_1.opt
1 file(s) copied.
copy C:\z88dk\build\s3vg_1.opt C:\z88dk\build\s3vg_1.asm
1 file(s) copied.
zcpp -I. -DZ80 -DSMALL_C -DZ88 -D__Z88__ -DSCCZ80 -Ic:\z88dk\include hello.c C:\z88dk\build\s3vg_.i
sccz80 -// C:\z88dk\build\s3vg_.i
copt c:\z88dk\lib\z80rules.2 < C:\z88dk\build\s3vg_.asm > C:\z88dk\build\s3vg_.op1
copt c:\z88dk\lib\z80rules.1 < C:\z88dk\build\s3vg_.op1 > C:\z88dk\build\s3vg_.opt
z80asm -eopt -ns -Mo -Ic:\z88dk\lib C:\z88dk\build\s3vg_.opt
z80asm -a -m -Mo -Lc:\z88dk\lib\clibs -oa.bas -iz88_clib -iz80_crt0 C:\z88dk\build\s3vg_1.opt C:\z88dk\build\s3vg_.o
1 errors occurred during assembly
Key to filenames:
C:\z88dk\build\s3vg_.o = hello.c
File 'C:\z88dk\build\s3vg_1.asm', at line 2, File open/read error
-----------------------------------------------------------------------------------------------------------------------------------

thanks,
=Dan
alvin
Well known member
Posts: 1872
Joined: Mon Jul 16, 2007 7:39 pm

Post by alvin »

Ragooman wrote:-----------------------------------------------------------------------------------------------------------------------------------
C:\z88dk\examples\embedded>zcc hello.c
You need to specify a target platform for the compile. I'm not sure if that will solve this specific problem but it would certainly solve others that would crop up later :-)

Seeing as you're in the embedded directory:

zcc +embedded hello.c

The makefile in that dir is meant for the embedded target which uses the ns16450 UART for stdio output. The compile for hello.c shows that the code related to the ns16450 also needs to be linked in:

zcc +embedded hello.c ns16450.o

If you're making for another target let us know what it is!
Ragooman
Member
Posts: 11
Joined: Thu Aug 13, 2009 1:55 pm

Post by Ragooman »

Ok, I see that info about the zcc flags, I read that but overlooked it when I tried to compile.

I first tried this command line:
C:\z88dk\examples\embedded>zcc +embedded hello.c

However, now I get a different error plus the same 'File open/read error':

Code: Select all

z80asm -a -m -Mo -iembedded_clib2 -Lc:\z88dk\lib\clibs -oa.bin -indos  -iembedded_clib  -iz80_crt0  C:\z88dk\build\s3do_1.opt C:\z88dk\build\s3do_.o
[b]File 'embedded_clib2.lib', Couldn't open library file[/b]
2 errors occurred during assembly
Key to filenames:
C:\z88dk\build\s3do_.o = hello.c
File 'C:\z88dk\build\s3do_1.asm', at line 2,[b] File open/read error[/b]
I did a dir search and there is no "embedded_clib2.lib" anywhere in the z88dk dir tree

However, there is a "embedded_clib.lib" file in C:\z88dk\lib\clibs

Is this the file that the compiler supposed to retrieve instead ?


then when I try the command line:
zcc +embedded hello.c ns16450.o

I get the following error:

Code: Select all

C:\z88dk\examples\embedded>zcc +embedded hello.c ns16450.o
copy ns16450.o C:\z88dk\build\s35o_1.o
The system cannot find the file specified.
Cannot copy input file
There's no "ns16450.o" file anywhere in the z88dk dir tree
Did you mean to use the "ns16450.c" file in the embedded dir instead ?

When I tried that
zcc +embedded hello.c ns16450.c
it appears to compile correctly until near the end when I get the same 2 errors that I mentioned above.


I hope this provides some more clues.

thanks
=Dan
alvin
Well known member
Posts: 1872
Joined: Mon Jul 16, 2007 7:39 pm

Post by alvin »

I'm just about to head out for the evening so I'm just going to fire this post off so as not to leave you hanging. Both dom and stef are in a time zone where it's the middle of the night so it's unlikely they'll be on again tonight :-))
Ragooman wrote:I did a dir search and there is no "embedded_clib2.lib" anywhere in the z88dk dir tree

However, there is a "embedded_clib.lib" file in C:\z88dk\lib\clibs

Is this the file that the compiler supposed to retrieve instead ?
I don't have the time at the moment to check into exactly what has gone wrong with the embedded target but I'm guessing yes that is what it should have retrieved. Trying making a copy of embedded_clib.lib to embedded_clib2.lib. The big Makefile in z88dk/libsrc makes all the target libraries. The next place I will look is into this Makefile to find out what is going on in the build for the embedded lib.
then when I try the command line:
zcc +embedded hello.c ns16450.o

I get the following error:

Code: Select all

C:\z88dk\examples\embedded>zcc +embedded hello.c ns16450.o
copy ns16450.o C:\z88dk\build\s35o_1.o
The system cannot find the file specified.
Cannot copy input file
There's no "ns16450.o" file anywhere in the z88dk dir tree
Did you mean to use the "ns16450.c" file in the embedded dir instead ?

When I tried that
zcc +embedded hello.c ns16450.c
it appears to compile correctly until near the end when I get the same 2 errors that I mentioned above.
Yeah ns16450.o comes from ns16450.c in that example dir. The ns16450.c code is not integrated into z88dk proper and was written by the person who generated that particular target for his particular hw setup. You can do as you did (add the ns16450.c to the compile) or generate ns16450.o as the makefile does so that it is available in that dir.

The lib linking error is the same as above and the same solution should apply! Hopefully this will solve the problems.
Ragooman
Member
Posts: 11
Joined: Thu Aug 13, 2009 1:55 pm

Post by Ragooman »

Ok, no problem about the time zone support issue - I'm in EST-5 myself(Pittsburgh)
Any help is much obliged -- this work is actually for another vintage computer, IMSAI 8080 -- with a Z80 cpu card.
BTW, I think I neglected to mentioned that I'm using WinXP home edition sp3 for this development work.

No matter what I did to copy the embedded_clib.lib file into embedded_clib2.lib, it wouldn't like it and complained still that the file was not found.
What I did this time was run the makefile to let it create the embedded_clib2.lib instead.
I did this by copying the makefile into a *.bat file.
This properly created the embedded_clib2.lib in the embedded dir and now that error message is *gone*

This also took care of the ns16450.c and created all the proper *.0 files.


BUT, I'm down to the last problem I think.
As for the File Open/read error, that problem is still here.

I currently don't have a clue as to why it cannot find this file directed by the include statement:
The *.err file has this message
File 'C:\z88dk\build\s2ic_2.asm', at line 2, File open/read error

The 's2ic_2.asm' file is copied from c:\z88dk\lib\embedded_crt0.opt during compilation:

copy c:\z88dk\lib\embedded_crt0.opt C:\z88dk\build\s2ic_2.opt
1 file(s) copied.
copy C:\z88dk\build\s2ic_2.opt C:\z88dk\build\s2ic_2.asm
1 file(s) copied.

This is found in the file, with line 2 in question:

[1]
[2] INCLUDE "embedded_crt0.asm"
[3]

Now, this file is located in the C:\z88dk\lib
My environment settings already has this path - I doublechecked this.
C:\z88dk\examples\embedded>path
PATH=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\z88dk\bin;C:\z88dk\lib;C:\z88dk\lib\config;C:\z88dk\lib\clibs


However, it still fails to locate this file -- should this be found in a different dir instead ?


thanks
=Dan
User avatar
dom
Well known member
Posts: 1194
Joined: Sun Jul 15, 2007 10:01 pm

Post by dom »

Ok, I've just tried on a pristine winxp box which has never had z88dk on it before.

It looks like you still need to set Z80_OZFILES=c:\z88dk\lib\, I'll look into this and try and figure out why the new code doesn't work they way it's meant to.
Ragooman
Member
Posts: 11
Joined: Thu Aug 13, 2009 1:55 pm

Post by Ragooman »

That was it !

I added that system variable you mentioned to clear up that problem, Z80_OZFILES=c:\z88dk\lib\

I can now compile all the examples in the embedded dir -- without any errors popping up.

thanks for all your help !

=Dan
alvin
Well known member
Posts: 1872
Joined: Mon Jul 16, 2007 7:39 pm

Post by alvin »

Just to wrap this one up :- after taking a moment to look at the embedded target all is well.

An embedded target can mean just about anything so what Daniel's done makes a lot of sense. The z80 lib for embedded has been made containing everything except the two subroutines fputc_cons and fgetc_cons which are the character in/out functions used by stdio. This lib is located in the correct place z88dk/lib/clibs where the compiler expects to find it and is named embedded_clib.lib.

The last two functions required by stdio must be customized for the embedded hw. In z88dk/embedded/example directory, Daniel does this as, well, an example for an embedded system using an ns16450 connected to stdio. The two missing stdio elements fputc_cons and fgetc_cons are supplied there which contain code to communicate stdio data to an ns16450. The Makefile in that dir generates a second library embedded_clib2.lib containing the remaining elements missing from embedded_clib.lib.

Compiling for this target requires selection of the embedded target "zcc +embedded", which causes the compiler to automatically link against embedded_clib.lib, and manually linking against embedded_clib2.lib to get at the missing stdio primitives. The embedded target's config file z88dk/lib/config/embedded.lnx (or .cfg), which is read by the compiler to set up the emvironment for embedded target compiles, contains link option "LINKOPTS -a -m -Mo -iembedded_clib2 -LDESTDIR/lib/clibs" which automatically links against the additional embedded_clib2 library if it appears in the library search path.
Post Reply