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


Forums > C64 Coding > Code indenting
2017-09-11 09:40
oziphantom

Registered: Oct 2014
Posts: 153
Code indenting

I've always been a strict
label code comment
kinda guy but of late I've been experimenting with code readability and speed boosts. Indenting does seem to improve things
updateMovement
	ldx Ents.movementPtr
-	lda YXDeltas,x
	cmp #$AA
	bne +
	ldx Ents.movementPtrBase
	stx Ents.movementPtr
	jmp -
+	clc
	adc Ents.y
	sta Ents.y
	inx	
	lda YXDeltas,x
	beq _endAdd
	bmi _sub
	clc
	adc Ents.x
	sta Ents.x
	bcc _endAdd
	inc Ents.xMSB
	jmp _endAdd
_sub
	clc
	adc Ents.x
	sta Ents.x
	lda Ents.xMSB
	adc #$ff
	sta Ents.xMSB
_endAdd
	inx
	stx Ents.movementPtr
	rts
vs
updateMovement
	ldx Ents.movementPtr
-	lda YXDeltas,x
	cmp #$AA
	bne +
	    ldx Ents.movementPtrBase
	    stx Ents.movementPtr
	jmp -
+	clc
	adc Ents.y
	sta Ents.y
	inx	
	lda YXDeltas,x
	beq _endAdd
	    bmi _sub
                clc
                adc Ents.x
                sta Ents.x
                bcc _endAdd
                    inc Ents.xMSB
                    jmp _endAdd
       _sub
            clc
            adc Ents.x
            sta Ents.x
            lda Ents.xMSB
            adc #$ff
            sta Ents.xMSB
_endAdd
	inx
	stx Ents.movementPtr
	rts
this kind of falls apart when you get the to the leap frog code. I.e something like
bmi C
beq B
A
A
A
bne C
A
A
jmp D
B
B
B
B
beq D
C
C
C
C
D
D
D
So I was wondering if anybody else had tumbled down this rabbit hole or had other things to do to help?
 
... 13 posts hidden. Click here to view all posts....
 
2017-09-11 14:46
Mr. SID

Registered: Jan 2003
Posts: 337
You lost me at the + and - labels... :)
2017-09-11 15:16
Oswald

Registered: Apr 2002
Posts: 4065
I still hate all that branching going on, why not just 16 bit math?

bmi case:

+3 cycle bmi -2 cycle at adc # = +1 cycle slower than adc abs,x

bpl case:

not taken branch:2
not taken bcc: 2
inc 5
jmp 4

13 cycles = +1 cycle slower than lda adc sta (Each 4)


only 1 case its faster.

instead of #$aa it could be a dec counter bmi.
2017-09-11 18:28
Perplex

Registered: Feb 2009
Posts: 194
Quoting Cruzer
The only time it makes sense to indent asm code is if it's in curly brackets, e.g. because of an if-statement or for-loop.


This.
2017-09-12 02:17
Skate

Registered: Jul 2003
Posts: 466
C64 has no tab key for a reason. :)
2017-09-12 02:51
Groepaz

Registered: Dec 2001
Posts: 8148
and TASS already auto-idents the way god intended!
2017-09-12 09:32
oziphantom

Registered: Oct 2014
Posts: 153
Quoting Perplex
Quoting Cruzer
The only time it makes sense to indent asm code is if it's in curly brackets, e.g. because of an if-statement or for-loop.


This.


Python, Ruby et al ?
2017-09-12 09:44
oziphantom

Registered: Oct 2014
Posts: 153
Quoting Skate
C64 has no tab key for a reason. :)


And the C128 does for a reason ;) The Kernal even has Tab Stops build in.
2017-09-15 21:37
Skate

Registered: Jul 2003
Posts: 466
Quote: Quoting Skate
C64 has no tab key for a reason. :)


And the C128 does for a reason ;) The Kernal even has Tab Stops build in.


We are free to use indenting for our C128 projects then, good to know.

I have a C128 but it will take a few more decades until i need that much memory and speed. ;)
2017-09-15 22:00
Compyx

Registered: Jan 2005
Posts: 268
Quoting Cruzer
Looks retarded to me. I would just add some newlines to split the code into logical blocks. The only time it makes sense to indent asm code is if it's in curly brackets, e.g. because of an if-statement or for-loop.


I agree with the retarded bit. But even using brackets doesn't make sense, asm doesn't have block-level scope. And if there are assemblers that support that, those are retarded.
2017-09-16 07:19
Hypnosis

Registered: Mar 2015
Posts: 25
I also indent my code in loops, if-end and if-else-end cases. I indent as well as I can in other cases but fail when it gets too hairy. My assembler has some syntactic sugar to help this structuring by using curly braces. They limit the lifetime of local variables but also add automatic loop and continue labels, so you can write a loop like this.

	ldx #0
	{
		lda string,x
		beq @continue

		jsr CHROUT
		inx
		bne @loop
	}
Previous - 1 | 2 | 3 - 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
zzarko
Trash
Jammer/TooMany
Guests online: 37
Top Demos
1 Uncensored  (9.7)
2 Edge of Disgrace  (9.7)
3 Coma Light 13  (9.6)
4 The Shores of Reflec..  (9.6)
5 Lunatico  (9.6)
6 Comaland 100%  (9.5)
7 Incoherent Nightmare  (9.5)
8 Quad Core 100%  (9.5)
9 Wonderland XII  (9.5)
10 Comaland  (9.5)
Top onefile Demos
1 Pandemoniac Part 2 o..  (9.6)
2 Field Sort  (9.6)
3 Dawnfall V1.1  (9.5)
4 Daah, Those Acid Pil..  (9.5)
5 Treu Love [reu]  (9.4)
6 Dawnfall  (9.2)
7 Veterans of Style  (9.2)
8 KAOS 64  (9.2)
9 One-Der  (9.2)
10 Game of Thrones [2sid]  (9.2)
Top Groups
1 Blazon  (9.5)
2 Booze Design  (9.4)
3 Censor Design  (9.4)
4 Oxyron  (9.4)
5 Crest  (9.3)
Top Webmasters
1 Slaygon  (9.6)
2 Perff  (9.6)
3 Morpheus  (9.5)
4 Sabbi  (9.4)
5 CreaMD  (9.3)

Home - Disclaimer
Copyright © No Name 2001-2017
Page generated in: 0.729 sec.