Log inRegister an accountBrowse CSDbHelp & documentationFacts & StatisticsThe forumsAvailable RSS-feeds on CSDbSupport CSDb Commodore 64 Scene Database
 Welcome to our latest new user nurd ! (Registered 2024-06-16) You are not logged in - nap
CSDb User Forums


Forums > C64 Coding > Wanted: Source codes (for badass)
2020-10-17 08:22
Sasq

Registered: Apr 2004
Posts: 155
Wanted: Source codes (for badass)

In order to improve my assembler it would be great to try it on existing projects.

So if you have sources for demos/intros/games that you don't mind sharing it would be kind if you could send them my way, and I'll try to get them working in bass.

They need to be buildable the normal way (Kickass, Acme or whatever) so I can compare the output binaries...

(this also means that if your type of demos requires special tools there is a greater chance I will include such functionality in bass).

-- sasq64@gmail.com
 
... 65 posts hidden. Click here to view all posts....
 
2020-11-05 14:00
Sasq

Registered: Apr 2004
Posts: 155
There is not really an "automatic optimization". It's just that when it is time to assemble the opcode, we don't know which opcode to pick, and it makes most sense to pick the zp opcode if the argument is below $100.

I think the ideal would be something like;

* We support 3 numeric types, 8-bit, 16-bit and automatic.
* A literal matching $xxxx becomes 16-bit, $xx -> 8-bit, all others automatic.
* The type is kept during expression evaluation. If an operation causes an 8-bit value to overflow, then that is an _error_.
* An automatic type is converted to 8 or 16-bit depending on size when it is time to assemble the opcode.
2020-11-05 14:14
Sasq

Registered: Apr 2004
Posts: 155
There are special cases though. Let's say you have some weird routine that matches zero page addresses to the lower byte of some 16-bit address. Which opcode would you expect here ?

data = $c000
sta data & $ff
2020-11-05 14:55
tlr

Registered: Sep 2003
Posts: 1731
Quote: There are special cases though. Let's say you have some weird routine that matches zero page addresses to the lower byte of some 16-bit address. Which opcode would you expect here ?

data = $c000
sta data & $ff


I think it would be reasonable if an '&' masked the size of the other operand, resulting in size 8 in this case.
2020-11-05 15:20
Sasq

Registered: Apr 2004
Posts: 155
So what is the rule ? How do we know what the code actually means ?

We can't demote to 8-bit just because the value becomes < 256, that defeats the whole point. So it must be "if it looks like he REALLY means it", ie explicitly anding with constant $ff.

But what about
sta data & mask
sta data & (size-1)
sta data & (... complex expression)


madness lies here. For cases like this the programmer needs to rely on something like

sta.b data & $ff
2020-11-05 15:29
tlr

Registered: Sep 2003
Posts: 1731
Quoting Sasq
So what is the rule ? How do we know what the code actually means ?

You could demote to 8-bit because one of the operands of '&' is 8-bit. Same for '%' as they are essentially wrapping operations. Not sure if there will be other bad consequences because of this though.
2020-11-05 15:32
chatGPZ

Registered: Dec 2001
Posts: 11154
Quote:
How do we know what the code actually means ?

you write it, explicitly :)
2020-11-05 16:27
Sasq

Registered: Apr 2004
Posts: 155
This would mean that

table:
    !fill 256
end:

size = table-end

sta data & (size-1)
sta data & $ff


would generate different opcodes, because size is not 8-bit

All this would require a complicated type and promotion system, and you could only get it to do _almost_ what you want.

I think

sta     ; addressing mode depends on operand
sta.b   ; zp
sta.w   ; 16-bit


is probably the simplest/best way to do it.
2020-11-05 16:35
Raistlin

Registered: Mar 2007
Posts: 578
Or just use sta.zp and sta.abs in the same way as KickAss?
2020-11-05 16:43
Sasq

Registered: Apr 2004
Posts: 155
Sure, what you call the suffix is no too important :)

Probably .8 .b .zp .z should all be synonyms
And .w .16 .abs
2020-11-05 16:47
chatGPZ

Registered: Dec 2001
Posts: 11154
.whatimean
Previous - 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 - 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
BYB/Hokuto Force
doctorfargo/Binary L..
Bieno/Commodore Plus
Skylab/The Movers
Guests online: 74
Top Demos
1 Next Level  (9.7)
2 13:37  (9.7)
3 Mojo  (9.7)
4 Coma Light 13  (9.7)
5 Edge of Disgrace  (9.7)
6 Aliens in Wonderland  (9.6)
7 Comaland 100%  (9.6)
8 No Bounds  (9.6)
9 Uncensored  (9.6)
10 Wonderland XIV  (9.6)
Top onefile Demos
1 Layers  (9.6)
2 Cubic Dream  (9.6)
3 Party Elk 2  (9.6)
4 Copper Booze  (9.6)
5 Rainbow Connection  (9.5)
6 It's More Fun to Com..  (9.5)
7 Dawnfall V1.1  (9.5)
8 Daah, Those Acid Pil..  (9.5)
9 Birth of a Flower  (9.5)
10 Quadrants  (9.5)
Top Groups
1 Nostalgia  (9.4)
2 Oxyron  (9.3)
3 Booze Design  (9.3)
4 Censor Design  (9.3)
5 SHAPE  (9.3)
Top Musicians
1 Rob Hubbard  (9.7)
2 Stinsen  (9.7)
3 Jeroen Tel  (9.6)
4 Linus  (9.6)
5 psych858o  (9.6)

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