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: 416
Kick Assembler Thread 2

The previous thread took a little long to load, so this is a new fresh one..
 
... 590 posts hidden. Click here to view all posts....
 
2014-12-20 12:50
Lead

Registered: Dec 2004
Posts: 20
I just got on the MickAss facebook and saw there is no need for me to add it to the feature request list as it allready is there :

- Auto naming of memory blocks after variables, so you can write: .pc = coolRoutine, and it shows up as coolRoutine in the memory map, instead of "unnamed".

At least, I assume this is the same as I requested. I'll keep an eye on that page and hope this will be implemented in a future update :)
If I come up with other idea's you;ll see them either here or there...
2015-01-04 15:20
Slammer

Registered: Feb 2004
Posts: 416
I gave it a look and found out that both the name and virtual parameters are optional which makes it impossible if we shall maintain backwards compatibility since the parser can see the difference between a string and a indentifer, but not between an expression and an identifer.

Technical talk, i know.. However the wish stays on the wish list. I might revice the .pc syntax in a later version.
2015-01-04 20:34
Mace

Registered: May 2002
Posts: 1799
What about a .name directive with a more elaborate syntax, in addition to what is already possible?
.pc = $2000
.name fileNameOfMacro + " at " + * // result: myMacro.asm at $2000
2015-01-13 11:04
Fresh

Registered: Jan 2005
Posts: 101
Hi slammer,
first of all thanks for a great tool.
I have a little problem with "arrays of labels". This kind of problem is partially solvable (pantaloon already pointed out a working solution in this thread) but it can't be used in every contexts.
The sample code:
.var	test=List()

.for(var i=0;i<10;i++)
  .for(var j=0;j<random()*20;j++)
    {
     .eval test.add(*)
     .byte i
    }

main:
	lda test.get(0)
	rts


This works fine but using a List to store the addresses brings some problem if I need to swap code and data:
.var	test=List()

main:
	lda test.get(0)
	rts

.for(var i=0;i<10;i++)
  .for(var j=0;j<random()*20;j++)
    {
     .eval test.add(*)
     .byte i
    }

This clearly doesn't work because I'm trying to get values from a List which is still empty.
So, based on my example, what to do if the code needs to be located *before* the data? Maybe defining a List of ".label" which may be evaluated after some passes?
2015-01-13 16:46
Slammer

Registered: Feb 2004
Posts: 416
Good question. I can tell you that I had the same problem as late as december where i had some cyclic references in the code, meaning no matter which code you place first you will always get an error. Currently, I got no solution ready yet, but I am thinking about some approches.

If you need a solution now, you might try to have two versions of you code. A virtual (.pc = $1000 virtual), and a non virtual (.pc = $1000), and place them in this order:
1. Virtual version of code, that calculates the label array 
2. Dependant code that uses the label array 
3. Real (nonvirtual) version of code 

If you place the code inside a macro with the label list as argument you only have to define it once. I havn't tried that approch yet though.
2015-03-23 13:43
Agemixer

Registered: Dec 2002
Posts: 38
Hi,

I'm still new to kickassembler and found this thread - in need to continue with the question about conditional assembly.. But it's not exactly the same. I needed something like this to remove some debug code from the final product (simplified example):

.label DEBUG_MODE=1

.if (DEBUG_MODE==1) // debug mode
{
lda #$00
sta $d020
MODIFY_THIS:
lda #$00
sta $d020
}
lda #$00 // normal or debug mode
sta $d020

.if (DEBUG_MODE==1) // debug mode
{
inc MODIFY_THIS+1
}
rts

..which gives "Error: Unknown symbol 'MODIFY_THIS'"

So i needed to pull all labels like MODIFY_THIS out of .if, to get it compiled:


.if (DEBUG_MODE==1) // debug mode
{
lda #$00
sta $d020
}
MODIFY_THIS:
.if (DEBUG_MODE==1) // debug mode
{
lda #$00
sta $d020
}
lda #$00 // normal or debug mode
sta $d020
.if (DEBUG_MODE==1) // debug mode
{
inc MODIFY_THIS+1
}
rts


Are there any better way of doing similiar conditional assembly such like this? I don't even know which order kickass parses the asmfile, but this is just strange. Is that the same scope issue in question? I got a plenty of SMC labels like Something=*-1 so my code looks like ANYTHING else but CLEAN because of this :)

How you would create that kind of label touching code? I spent just several hours just because of this...
2015-03-23 16:18
Pantaloon

Registered: Aug 2003
Posts: 124
To my knowledge the labels are limited to it's scope.

One way of doing the thing you want could be this.

.label DEBUG_MODE=1

.var MODIFY_PTR = 0

.if (DEBUG_MODE==1) // debug mode
{
lda #$00
sta $d020
.eval MODIFY_PTR = *
lda #$00
sta $d020
}
lda #$00 // normal or debug mode
sta $d020

.if (DEBUG_MODE==1) // debug mode
{
inc MODIFY_PTR+1
}
rts
2015-03-24 11:01
Oswald

Registered: Apr 2002
Posts: 5017
seems overcomplicated.. how about:

lda #debug_mode
sta $d020

or:

if debug_mode
inc $d020
else
sta $d020

etc.
2015-03-24 16:39
chatGPZ

Registered: Dec 2001
Posts: 11108
Quote:
Are there any better way of doing similiar conditional assembly such like this?

use an assembler that properly supports scoping.
2015-03-24 16:49
Pantaloon

Registered: Aug 2003
Posts: 124
i was waiting for that comment from Groepaz :)
Previous - 1 | ... | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | ... | 60 - 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
Max/Flat3
radius75
Didi/Laxity
Acidchild/Padua
McMeatLoaf
nucleus/TempesT
The Syndrom/TIA/Pret..
zscs
FABS/HF
Guests online: 131
Top Demos
1 Next Level  (9.8)
2 Mojo  (9.7)
3 Coma Light 13  (9.7)
4 Edge of Disgrace  (9.6)
5 Comaland 100%  (9.6)
6 No Bounds  (9.6)
7 Uncensored  (9.6)
8 The Ghost  (9.6)
9 Wonderland XIV  (9.6)
10 Bromance  (9.6)
Top onefile Demos
1 It's More Fun to Com..  (9.7)
2 Party Elk 2  (9.7)
3 Cubic Dream  (9.6)
4 Copper Booze  (9.5)
5 Rainbow Connection  (9.5)
6 TRSAC, Gabber & Pebe..  (9.5)
7 Onscreen 5k  (9.5)
8 Wafer Demo  (9.5)
9 Dawnfall V1.1  (9.5)
10 Quadrants  (9.5)
Top Groups
1 Oxyron  (9.3)
2 Nostalgia  (9.3)
3 Booze Design  (9.3)
4 Censor Design  (9.3)
5 Crest  (9.3)
Top Webmasters
1 Slaygon  (9.7)
2 Perff  (9.6)
3 Morpheus  (9.5)
4 Sabbi  (9.5)
5 CreaMD  (9.1)

Home - Disclaimer
Copyright © No Name 2001-2024
Page generated in: 0.053 sec.