mirror of
https://gitlab.com/camelot/kickc.git
synced 2025-03-08 02:34:04 +00:00
Moved bresenham into main()
This commit is contained in:
parent
2707bd5861
commit
ffce3298ef
@ -1,23 +1,30 @@
|
|||||||
byte STAR = 81;
|
byte STAR = 81;
|
||||||
byte[40*25] SCREEN = $0400;
|
byte[40*25] SCREEN = $0400;
|
||||||
byte x0 = 0;
|
|
||||||
byte y0 = 0;
|
|
||||||
byte x1 = 39;
|
|
||||||
byte y1 = 24;
|
main();
|
||||||
byte xd = x1-x0;
|
|
||||||
byte yd = y1-y0;
|
void main() {
|
||||||
byte x = x0;
|
byte x0 = 0;
|
||||||
byte y = y0;
|
byte y0 = 0;
|
||||||
byte e = yd/2;
|
byte x1 = 39;
|
||||||
byte *cursor = SCREEN+y*40+x;
|
byte y1 = 24;
|
||||||
do {
|
byte xd = x1-x0;
|
||||||
*cursor = STAR;
|
byte yd = y1-y0;
|
||||||
x = x + 1;
|
byte x = x0;
|
||||||
cursor = cursor + 1;
|
byte y = y0;
|
||||||
e = e+yd;
|
byte e = yd/2;
|
||||||
if(xd<e) {
|
byte *cursor = SCREEN+y*40+x;
|
||||||
y = y+1;
|
do {
|
||||||
cursor = cursor + 40;
|
*cursor = STAR;
|
||||||
e = e - xd;
|
x = x + 1;
|
||||||
}
|
cursor = cursor + 1;
|
||||||
} while (x<(x1+1))
|
e = e+yd;
|
||||||
|
if(xd<e) {
|
||||||
|
y = y+1;
|
||||||
|
cursor = cursor + 40;
|
||||||
|
e = e - xd;
|
||||||
|
}
|
||||||
|
} while (x<(x1+1))
|
||||||
|
}
|
@ -1,40 +1,44 @@
|
|||||||
lda #$0
|
jsr main
|
||||||
sta $5
|
main: {
|
||||||
ldx #$c
|
lda #$0
|
||||||
lda #$0
|
sta $5
|
||||||
sta $4
|
ldx #$c
|
||||||
lda #<$400
|
lda #$0
|
||||||
sta $2
|
sta $4
|
||||||
lda #>$400
|
lda #<$400
|
||||||
sta $2+$1
|
sta $2
|
||||||
b1:
|
lda #>$400
|
||||||
ldy #$0
|
sta $2+$1
|
||||||
lda #$51
|
b1:
|
||||||
sta ($2),y
|
ldy #$0
|
||||||
inc $4
|
lda #$51
|
||||||
inc $2
|
sta ($2),y
|
||||||
bne !+
|
inc $4
|
||||||
inc $2+$1
|
inc $2
|
||||||
!:
|
bne !+
|
||||||
txa
|
inc $2+$1
|
||||||
clc
|
!:
|
||||||
adc #$18
|
txa
|
||||||
tax
|
clc
|
||||||
cpx #$27
|
adc #$18
|
||||||
bcc b2
|
tax
|
||||||
inc $5
|
cpx #$27
|
||||||
lda $2
|
bcc b2
|
||||||
clc
|
inc $5
|
||||||
adc #$28
|
lda $2
|
||||||
sta $2
|
clc
|
||||||
bcc !+
|
adc #$28
|
||||||
inc $2+$1
|
sta $2
|
||||||
!:
|
bcc !+
|
||||||
txa
|
inc $2+$1
|
||||||
sec
|
!:
|
||||||
sbc #$27
|
txa
|
||||||
tax
|
sec
|
||||||
b2:
|
sbc #$27
|
||||||
lda $4
|
tax
|
||||||
cmp #$28
|
b2:
|
||||||
bcc b1
|
lda $4
|
||||||
|
cmp #$28
|
||||||
|
bcc b1
|
||||||
|
rts
|
||||||
|
}
|
||||||
|
@ -1,25 +1,31 @@
|
|||||||
@begin: scope:[] from
|
@begin: scope:[] from
|
||||||
to:@1
|
[0] call main param-assignment [ ]
|
||||||
@1: scope:[] from @2 @begin
|
|
||||||
[0] (byte) y#2 ← phi( @2/(byte) y#4 @begin/(byte) 0 ) [ cursor#3 x#2 e#3 y#2 ]
|
|
||||||
[0] (byte) e#3 ← phi( @2/(byte) e#5 @begin/(byte) 12 ) [ cursor#3 x#2 e#3 y#2 ]
|
|
||||||
[0] (byte) x#2 ← phi( @2/(byte) x#1 @begin/(byte) 0 ) [ cursor#3 x#2 e#3 y#2 ]
|
|
||||||
[0] (byte*) cursor#3 ← phi( @2/(byte*) cursor#5 @begin/(word) 1024 ) [ cursor#3 x#2 e#3 y#2 ]
|
|
||||||
[1] *((byte*) cursor#3) ← (byte) 81 [ cursor#3 x#2 e#3 y#2 ]
|
|
||||||
[2] (byte) x#1 ← (byte) x#2 + (byte) 1 [ x#1 cursor#3 e#3 y#2 ]
|
|
||||||
[3] (byte*) cursor#1 ← (byte*) cursor#3 + (byte) 1 [ x#1 e#3 y#2 cursor#1 ]
|
|
||||||
[4] (byte) e#1 ← (byte) e#3 + (byte) 24 [ x#1 e#1 y#2 cursor#1 ]
|
|
||||||
[5] if((byte) 39>=(byte) e#1) goto @2 [ x#1 e#1 y#2 cursor#1 ]
|
|
||||||
to:@3
|
|
||||||
@3: scope:[] from @1
|
|
||||||
[6] (byte) y#1 ← (byte) y#2 + (byte) 1 [ x#1 e#1 cursor#1 y#1 ]
|
|
||||||
[7] (byte*) cursor#2 ← (byte*) cursor#1 + (byte) 40 [ x#1 e#1 cursor#2 y#1 ]
|
|
||||||
[8] (byte) e#2 ← (byte) e#1 - (byte) 39 [ x#1 cursor#2 e#2 y#1 ]
|
|
||||||
to:@2
|
|
||||||
@2: scope:[] from @1 @3
|
|
||||||
[9] (byte) y#4 ← phi( @1/(byte) y#2 @3/(byte) y#1 ) [ cursor#5 x#1 e#5 y#4 ]
|
|
||||||
[9] (byte) e#5 ← phi( @1/(byte) e#1 @3/(byte) e#2 ) [ cursor#5 x#1 e#5 y#4 ]
|
|
||||||
[9] (byte*) cursor#5 ← phi( @1/(byte*) cursor#1 @3/(byte*) cursor#2 ) [ cursor#5 x#1 e#5 y#4 ]
|
|
||||||
[10] if((byte) x#1<(byte) 40) goto @1 [ cursor#5 x#1 e#5 y#4 ]
|
|
||||||
to:@end
|
to:@end
|
||||||
@end: scope:[] from @2
|
@end: scope:[] from @begin
|
||||||
|
main: scope:[main] from @begin
|
||||||
|
to:main::@1
|
||||||
|
main::@1: scope:[main] from main main::@2
|
||||||
|
[1] (byte) main::y#2 ← phi( main/(byte) 0 main::@2/(byte) main::y#4 ) [ main::cursor#3 main::x#2 main::e#3 main::y#2 ]
|
||||||
|
[1] (byte) main::e#3 ← phi( main/(byte) 12 main::@2/(byte) main::e#5 ) [ main::cursor#3 main::x#2 main::e#3 main::y#2 ]
|
||||||
|
[1] (byte) main::x#2 ← phi( main/(byte) 0 main::@2/(byte) main::x#1 ) [ main::cursor#3 main::x#2 main::e#3 main::y#2 ]
|
||||||
|
[1] (byte*) main::cursor#3 ← phi( main/(word) 1024 main::@2/(byte*) main::cursor#5 ) [ main::cursor#3 main::x#2 main::e#3 main::y#2 ]
|
||||||
|
[2] *((byte*) main::cursor#3) ← (byte) 81 [ main::cursor#3 main::x#2 main::e#3 main::y#2 ]
|
||||||
|
[3] (byte) main::x#1 ← (byte) main::x#2 + (byte) 1 [ main::x#1 main::cursor#3 main::e#3 main::y#2 ]
|
||||||
|
[4] (byte*) main::cursor#1 ← (byte*) main::cursor#3 + (byte) 1 [ main::x#1 main::e#3 main::y#2 main::cursor#1 ]
|
||||||
|
[5] (byte) main::e#1 ← (byte) main::e#3 + (byte) 24 [ main::x#1 main::e#1 main::y#2 main::cursor#1 ]
|
||||||
|
[6] if((byte) 39>=(byte) main::e#1) goto main::@2 [ main::x#1 main::e#1 main::y#2 main::cursor#1 ]
|
||||||
|
to:main::@3
|
||||||
|
main::@3: scope:[main] from main::@1
|
||||||
|
[7] (byte) main::y#1 ← (byte) main::y#2 + (byte) 1 [ main::x#1 main::e#1 main::cursor#1 main::y#1 ]
|
||||||
|
[8] (byte*) main::cursor#2 ← (byte*) main::cursor#1 + (byte) 40 [ main::x#1 main::e#1 main::cursor#2 main::y#1 ]
|
||||||
|
[9] (byte) main::e#2 ← (byte) main::e#1 - (byte) 39 [ main::x#1 main::cursor#2 main::e#2 main::y#1 ]
|
||||||
|
to:main::@2
|
||||||
|
main::@2: scope:[main] from main::@1 main::@3
|
||||||
|
[10] (byte) main::y#4 ← phi( main::@1/(byte) main::y#2 main::@3/(byte) main::y#1 ) [ main::cursor#5 main::x#1 main::e#5 main::y#4 ]
|
||||||
|
[10] (byte) main::e#5 ← phi( main::@1/(byte) main::e#1 main::@3/(byte) main::e#2 ) [ main::cursor#5 main::x#1 main::e#5 main::y#4 ]
|
||||||
|
[10] (byte*) main::cursor#5 ← phi( main::@1/(byte*) main::cursor#1 main::@3/(byte*) main::cursor#2 ) [ main::cursor#5 main::x#1 main::e#5 main::y#4 ]
|
||||||
|
[11] if((byte) main::x#1<(byte) 40) goto main::@1 [ main::cursor#5 main::x#1 main::e#5 main::y#4 ]
|
||||||
|
to:main::@return
|
||||||
|
main::@return: scope:[main] from main::@2
|
||||||
|
[12] return [ ]
|
||||||
|
to:@return
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -1,35 +1,37 @@
|
|||||||
(label) @1
|
|
||||||
(label) @2
|
|
||||||
(label) @3
|
|
||||||
(label) @begin
|
(label) @begin
|
||||||
(label) @end
|
(label) @end
|
||||||
(byte[1000]) SCREEN
|
(byte[1000]) SCREEN
|
||||||
(byte) STAR
|
(byte) STAR
|
||||||
(byte*) cursor
|
(void()) main()
|
||||||
(byte*) cursor#1 zp ptr byte:2 8.25
|
(label) main::@1
|
||||||
(byte*) cursor#2 zp ptr byte:2 11.0
|
(label) main::@2
|
||||||
(byte*) cursor#3 zp ptr byte:2 11.0
|
(label) main::@3
|
||||||
(byte*) cursor#5 zp ptr byte:2 16.5
|
(label) main::@return
|
||||||
(byte) e
|
(byte*) main::cursor
|
||||||
(byte) e#1 reg byte x 11.0
|
(byte*) main::cursor#1 zp ptr byte:2 8.25
|
||||||
(byte) e#2 reg byte x 22.0
|
(byte*) main::cursor#2 zp ptr byte:2 11.0
|
||||||
(byte) e#3 reg byte x 5.5
|
(byte*) main::cursor#3 zp ptr byte:2 11.0
|
||||||
(byte) e#5 reg byte x 16.5
|
(byte*) main::cursor#5 zp ptr byte:2 16.5
|
||||||
(byte) x
|
(byte) main::e
|
||||||
(byte) x#1 zp byte:4 3.666666666666667
|
(byte) main::e#1 reg byte x 11.0
|
||||||
(byte) x#2 zp byte:4 11.0
|
(byte) main::e#2 reg byte x 22.0
|
||||||
(byte) x0
|
(byte) main::e#3 reg byte x 5.5
|
||||||
(byte) x1
|
(byte) main::e#5 reg byte x 16.5
|
||||||
(byte) xd
|
(byte) main::x
|
||||||
(byte) y
|
(byte) main::x#1 zp byte:4 3.666666666666667
|
||||||
(byte) y#1 zp byte:5 7.333333333333333
|
(byte) main::x#2 zp byte:4 11.0
|
||||||
(byte) y#2 zp byte:5 5.5
|
(byte) main::x0
|
||||||
(byte) y#4 zp byte:5 16.5
|
(byte) main::x1
|
||||||
(byte) y0
|
(byte) main::xd
|
||||||
(byte) y1
|
(byte) main::y
|
||||||
(byte) yd
|
(byte) main::y#1 zp byte:5 7.333333333333333
|
||||||
|
(byte) main::y#2 zp byte:5 5.5
|
||||||
|
(byte) main::y#4 zp byte:5 16.5
|
||||||
|
(byte) main::y0
|
||||||
|
(byte) main::y1
|
||||||
|
(byte) main::yd
|
||||||
|
|
||||||
zp ptr byte:2 [ cursor#3 cursor#5 cursor#1 cursor#2 ]
|
zp ptr byte:2 [ main::cursor#3 main::cursor#5 main::cursor#1 main::cursor#2 ]
|
||||||
zp byte:4 [ x#2 x#1 ]
|
zp byte:4 [ main::x#2 main::x#1 ]
|
||||||
reg byte x [ e#3 e#5 e#1 e#2 ]
|
reg byte x [ main::e#3 main::e#5 main::e#1 main::e#2 ]
|
||||||
zp byte:5 [ y#2 y#4 y#1 ]
|
zp byte:5 [ main::y#2 main::y#4 main::y#1 ]
|
||||||
|
Loading…
x
Reference in New Issue
Block a user