Log inRegister an accountBrowse CSDbHelp & documentationFacts & StatisticsThe forumsAvailable RSS-feeds on CSDbSupport CSDb Commodore 64 Scene Database
You are not logged in - nap
CSDb User Forums


Forums > C64 Coding > Kick Assembler Thread 2
2009-07-21 17:20
Slammer

Registered: Feb 2004
Posts: 449
Kick Assembler Thread 2

The previous thread took a little long to load, so this is a new fresh one..
 
... 647 posts hidden. Click here to view all posts....
 
2023-03-29 21:34
Joodas

Registered: Oct 2011
Posts: 8
Hi lads

I'am trying to configure (https://goatpower.org/2013/09/11/c64-development-with-kick-asse..) KickAss, Notepad++ and VICE (GTK3VICE-3.7-win64) and compile example code. Unfortunatelly Notepad++ returns error:

java -jar "C:\C64\Tools\KickAssembler\KickAss.jar" -log C:\C64\c64error.txt "C:\C64\GoatPowerExample.asm" -libdir C:\noice\C64\ -o "C:\C64\GoatPowerExample.prg" -vicesymbols -showmem -execute "x64.exe -moncommands C:\C64\GoatPowerExample.vs +confirmexit"
; about to start a child process: "java -jar "C:\C64\Tools\KickAssembler\KickAss.jar" -log C:\C64\c64error.txt "C:\C64\GoatPowerExample.asm" -libdir C:\noice\C64\ -o "C:\C64\GoatPowerExample.prg" -vicesymbols -showmem -execute "x64.exe -moncommands C:\C64\GoatPowerExample.vs +confirmexit""
CreateProcess() failed with error code 2:

Do you know how to change command line:
::KickAss & run
java -jar "C:\C64\Tools\KickAssembler\KickAss.jar" -log $(CURRENT_DIRECTORY)\c64error.txt "$(FULL_CURRENT_PATH)" -libdir C:\noice\C64\ -o "$(CURRENT_DIRECTORY)\$(NAME_PART).prg" -vicesymbols -showmem -execute "x64.exe -moncommands $(CURRENT_DIRECTORY)\$(NAME_PART).vs +confirmexit"
to adopt it to the new VICE (GTK3VICE-3.7-win64)?

Thank you in advance
2023-03-30 06:41
Endurion

Registered: Mar 2007
Posts: 73
Error Code 2 is file/path not found.

Make sure the paths are correct, and there's no quoting issue. Also not sure if java can cope with backslashes. Try replacing all backslashes with slashes. Windows has no problems with them.
2023-03-30 20:00
Frostbyte

Registered: Aug 2003
Posts: 184
Hopefully not too late to the game, but as far as I know x64 doesn't exist anymore on official VICE distributions. If that is the case on yours, change x64.exe to x64sc.exe in the command.

x64 is (was) the less resource-demanding but less accurate C64 emu, whereas x64sc is the more resource-demanding but more accurate one.
2023-06-13 09:46
TWW

Registered: Jul 2009
Posts: 557
Think I found a bug (and a workaround):

When processing (ZP,X) (Indirect Zero Page,X) inside a pseudocommand, the "AT_IZEROPAGEX" isn't recognized properly.

For example (source = Some (zp,x) type/value):

.if (source.getType() == AT_IZEROPAGEX) - Does not work
.if (source.getType() == -5) - does work.

(-5 seems to be the value connected to AT_IZEROPAGEX which was found by doing a .print source.getType() when passing a (ZP,X) value.
2023-06-27 05:40
Frodo
Account closed

Registered: May 2020
Posts: 2
Quote: Hello

I get the following error:

    .if (CopyStop-CopyStart >= 256) {
    ^

Error: The condition must be able to evaluate in first parse
at line 57, column 5 in Asset Manager.asm


I am using the pseudopc directive. I have found a (messy) workaround but wondered if there is a way to allow two parses?

Also, any future plans to allow pseudopc nesting in the future (useful for cartridge images where you need the assembled code pseudopc to $8000, then pseudopc code to $0800 (example) which is to be copied to RAM while it all in fact is located at $2040 in the .crt image. Again, I have a workaround but wondered if this is planned or if there might be some more delicate way to handle this?

EDIT:

Simplified question:

test1:
test2:
    .if ([test1 - test2] == 0) .print "This Works!"
    .if ([test3 - test4] == 0) .print "This Does Not Work!"
test3:
test4:


Is there a way to get the 2nd .if statement to work without getting the "Error: The condition must be able to evaluate in first parse" issue?


Thanks for posting this!

Were you able to get this resolved by any chance?

I have the same issue with Kick Assembler v5.25.

My workaround isn't great either, e.g. bne_perf(*+2)

Thank you,
2023-06-27 17:09
TWW

Registered: Jul 2009
Posts: 557
Quote: Thanks for posting this!

Were you able to get this resolved by any chance?

I have the same issue with Kick Assembler v5.25.

My workaround isn't great either, e.g. bne_perf(*+2)

Thank you,


Yes, you can do it like that since *+2 is known when you call the pseudo. Another workaraound is to use .label to pre-define memory locations in advance, but for branches and such this isn't a very good solution. Maybee there is a way with segments (as they seem flexible of sorts) but perhaps combersome when dealing with pseudo/macros.

An example is to get a branch-pseudo to determine if a branch should be long or short (bne label or beq *+4 + jmp label) to a label further down your code. Not trivial...

It has been explained that it's a chicken/egg issue as the unresolved label may change depending on the conditional checks (.if(sometthing) - change something) made inside the pseudocommand or macro. What perhaps could solve it is to allow additional passes to try and resolve "resolvable" labels and then tap out if it not able to do it in n times.

Either way, not sure if this is the right forum to discuss this anymore. There is a facebook group which exists (I am not on FB!) which perhaps could yield a response :)

Another feature request: Make assertions which passes silent (or an option to do so).
2023-06-27 21:19
Avalanche

Registered: Aug 2002
Posts: 6
I am working with Kick-Ass now for a while. Though Slammer is giving his best, I'd love to see Kick-Ass going "open-source". Some things are buggy, some features missing, and sometimes old socks need to be cut off for better understanding of how to do things.

The FB group is a place to post, and others can like it or write comments on it. But thats all about it. Its not really a good way of taking care and responsibility upon a product-like tool. Plus: you cut off anybody else that is willing to help or would take the responsibility to add improvements/features by himself.

When it comes down to Kick-Ass' future its all depending upon Slammer, in good aswell as in bad terms.
2023-07-01 08:58
Style

Registered: Jun 2004
Posts: 498
Apologies if this has been covered, I havent been following the thread, but two things Id love in kickass:

1) Overloading macros and functions
2) naming parameters in calls, cos it's clearer and will support 1

Thoughts?
2023-07-01 09:12
Style

Registered: Jun 2004
Posts: 498
Oh, I forgot

3) Passing nothing to a macro parameter results in null. Or allow defaults for parameters, making the parameter optional.
2023-07-03 10:23
TWW

Registered: Jul 2009
Posts: 557
Quote: Oh, I forgot

3) Passing nothing to a macro parameter results in null. Or allow defaults for parameters, making the parameter optional.


You can do this with pseudocommands (allows "null" parameters).

I.e. add16 $1000 : #100 : (optional destination)

Depending on what it is you want to do, you can #define 'something' which alters the behavior of a macro (example):

#define WhateverCondition
:MyMacro(a, b)
#undefine WhateverCondition

#if WhateverCondition {
.MyMacro(a, b) {}
}
#else{
.MyMacro(a) {}
}


Or simply make 2 macros, one normal and one stable. But yes agree it would be a nice addition.
Previous - 1 | ... | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | ... | 66 - Next
RefreshSubscribe to this thread:

You need to be logged in to post in the forum.

Search the forum:
Search   for   in  
All times are CET.
Search CSDb
Advanced
Users Online
Courage
Mythus/Delysid
Visage/Lethargy
Guests online: 323
Top Demos
1 Next Level  (9.7)
2 13:37  (9.7)
3 Codeboys & Endians  (9.7)
4 Mojo  (9.6)
5 Coma Light 13  (9.6)
6 Edge of Disgrace  (9.6)
7 Signal Carnival  (9.6)
8 Wonderland XIV  (9.5)
9 Uncensored  (9.5)
10 Comaland 100%  (9.5)
Top onefile Demos
1 Nine  (9.7)
2 Layers  (9.6)
3 Cubic Dream  (9.6)
4 Party Elk 2  (9.6)
5 Copper Booze  (9.5)
6 Scan and Spin  (9.5)
7 Onscreen 5k  (9.5)
8 Grey  (9.5)
9 Dawnfall V1.1  (9.5)
10 Rainbow Connection  (9.5)
Top Groups
1 Artline Designs  (9.3)
2 Booze Design  (9.3)
3 Performers  (9.3)
4 Oxyron  (9.3)
5 Censor Design  (9.3)
Top Cover Designers
1 Duce  (9.8)
2 Electric  (9.8)
3 Junkie  (9.6)
4 The Elegance  (9.5)
5 Mermaid  (9.3)

Home - Disclaimer
Copyright © No Name 2001-2025
Page generated in: 0.075 sec.