![]() |
![]() |
#1 |
Fernando Cabrera
Join Date: Oct 2013
Location: Spain
Posts: 106
|
Error "No object" generating executable from ASM-One 1.20
Hi there,
I'm trying to generate an executable from ASM-One 1.20. I assemble the source ('a') and the write the object ('wo test.o') but it keeps saying "No Object". I have read this thread (eab.abime.net/showthread.php?t=37243&page=1) and it all works perfect with the moveq example... I have 'LOAD', 'ORG' and 'JUMPPTR' at the beginning of my source code and I use 'EVEN' and 'SECTION chip, BSS_C' also. Can anybody help me with this, please? Thanks! |
![]() |
![]() |
#2 |
move.l #$c0ff33,throat
Join Date: Dec 2005
Location: Berlin/Joymoney
Posts: 6,865
|
Remove the LOAD/ORG directives as ASM-One can't create an executable when these are used (there's no way to tell AmigaDOS to load to the specified address). If you really need to use absolute addresses you need to save your code as binary and then either crunch it with a cruncher that supports absolute address binaries or create the header yourself and generate the executable.
|
![]() |
![]() |
#3 | |
Fernando Cabrera
Join Date: Oct 2013
Location: Spain
Posts: 106
|
Quote:
dc.w $120,(Spr0_Pad>>16)&$ffff ... As it is said in ASM-One manual: "39. Relative Mode Error If try to use a relativ value as a constant (e.g. word size or in calculations other than »+ -«) this is the error message you will get." How could I solve this? Thanks again! ![]() Last edited by nandius_c; 29 October 2013 at 18:16. |
|
![]() |
![]() |
#4 |
Moderator
Join Date: Nov 2004
Location: Eksjö / Sweden
Posts: 5,690
|
Since you have removed the statements that fixate the program in a specific place in memory, the calculation on this line has no value for "Spr0_Pad". You have to poke it when the program is running.
To do this, remove the calculation causing the error and put a 0 instead. Add a unique label before that copper line, and put a # before the calculation and poke it to that label+2: Code:
move.w #(Spr0_Pad>>16)&$ffff,SprP00+2 ... SprP00: dc.w $120,0 ;<--calculation was here The line that pokes the copper must be put at the start of your program, so that it has been executed before you start the copper list. |
![]() |
![]() |
#5 |
move.l #$c0ff33,throat
Join Date: Dec 2005
Location: Berlin/Joymoney
Posts: 6,865
|
Not really true, this is more or less an ASM-One bug/limitation. It doesn't matter where something is located, you can always divide by 65536 (i.e. swap) to get the high word of something. That this calculation has no value isn't true.
|
![]() |
![]() |
#6 |
Natteravn
Join Date: Nov 2009
Location: Herford / Germany
Posts: 2,552
|
Hmm... I tend to disagree with both of you.
![]() It is neither true that the expression with Spr0_Pad cannot be evaluated nor is it correct that this is an AsmOne bug or limitation. The problem only appears when creating an executable, because the AmigaDOS hunk file format has no relocation type to represent the high-word of an address (assuming Spr0_Pad is a label in this source and not an equate). |
![]() |
![]() |
#7 |
Moderator
Join Date: Nov 2004
Location: Eksjö / Sweden
Posts: 5,690
|
Evaluation, reloc, hunk... these are all pretty abstract to a new coder.
Starting to talk about them would make a simple problem confusing. It's better to explain the assembler doesn't know the value yet. Each assembler's different types of temporary internal work-values for its labels is pretty irrelevant to the problem at hand. |
![]() |
![]() |
#8 | |
Fernando Cabrera
Join Date: Oct 2013
Location: Spain
Posts: 106
|
Quote:
|
|
![]() |
![]() |
#9 |
Moderator
Join Date: Nov 2004
Location: Eksjö / Sweden
Posts: 5,690
|
Yes, how stupid of me. I did teach how to poke the Logo bitplane pointers in this same tutorial 11, though.
You do the same here, except if you only have a single pointer to poke you don't need a loop. To set a sprite pointer, change to: Code:
move.l #Spr0_Pad,d0 swap d0 move.w d0,SprP00+2 swap d0 move.w d0,SprP01+2 ... SprP00: dc.w $120,0 SprP01: dc.w $122,0 |
![]() |
![]() |
#10 | |
Fernando Cabrera
Join Date: Oct 2013
Location: Spain
Posts: 106
|
Quote:
|
|
![]() |
![]() |
#11 |
Moderator
Join Date: Nov 2004
Location: Eksjö / Sweden
Posts: 5,690
|
What you're doing is adapting a whole source in the middle of its development. The reason it's doesn't work to write an object file from it is because it isn't made for that yet. I've briefly shown the SECTION statements to warm viewers up for the change. Likely you just need to add SECTION mydemo,CODE_C at the start and it will work. If you still get problems, you need to link or attach your source.
|
![]() |
![]() |
#12 | |||
move.l #$c0ff33,throat
Join Date: Dec 2005
Location: Berlin/Joymoney
Posts: 6,865
|
Quote:
Quote:
Quote:
This is probably because the code assumes that the screen is located at a fixed address (often done to speed up some effects since if the screen is aligned only the low word needs to be modified). Can you upload your source somewhere? Would make it easier to check. ![]() |
|||
![]() |
![]() |
#13 | |
Fernando Cabrera
Join Date: Oct 2013
Location: Spain
Posts: 106
|
Quote:
![]() ![]() |
|
![]() |
Currently Active Users Viewing This Thread: 1 (0 members and 1 guests) | |
Thread Tools | |
![]() |
||||
Thread | Thread Starter | Forum | Replies | Last Post |
Hired Guns WHDload Error #205 (object not found) on writing "SavedGames/Track00"? | dex | support.Games | 12 | 08 February 2019 03:35 |
"Exception "Line 1111 Emulator" ($2c) Error at $1004" when exiting game | demolition | support.WinUAE | 15 | 30 November 2012 16:43 |
Aminet ZipPPC "not executable" ??? | keropi | support.Apps | 5 | 02 April 2007 13:51 |
"DOS-Error #205 (object not found) on reading "devs:kickstarts/kick 40068.a4000" | Brutal_dentist | New to Emulation or Amiga scene | 10 | 03 April 2005 23:12 |
"DOS-Error #205 (object not found) on reading "devs:kickstarts/kick 40068.a4000" | Unregistered | New to Emulation or Amiga scene | 1 | 22 December 2004 09:48 |
|
|