mirror of
https://gitlab.com/camelot/kickc.git
synced 2024-12-19 15:29:48 +00:00
Moved bresenham into main()
This commit is contained in:
parent
2707bd5861
commit
ffce3298ef
@ -1,23 +1,30 @@
|
||||
byte STAR = 81;
|
||||
byte[40*25] SCREEN = $0400;
|
||||
byte x0 = 0;
|
||||
byte y0 = 0;
|
||||
byte x1 = 39;
|
||||
byte y1 = 24;
|
||||
byte xd = x1-x0;
|
||||
byte yd = y1-y0;
|
||||
byte x = x0;
|
||||
byte y = y0;
|
||||
byte e = yd/2;
|
||||
byte *cursor = SCREEN+y*40+x;
|
||||
do {
|
||||
*cursor = STAR;
|
||||
x = x + 1;
|
||||
cursor = cursor + 1;
|
||||
e = e+yd;
|
||||
if(xd<e) {
|
||||
y = y+1;
|
||||
cursor = cursor + 40;
|
||||
e = e - xd;
|
||||
}
|
||||
} while (x<(x1+1))
|
||||
|
||||
|
||||
|
||||
main();
|
||||
|
||||
void main() {
|
||||
byte x0 = 0;
|
||||
byte y0 = 0;
|
||||
byte x1 = 39;
|
||||
byte y1 = 24;
|
||||
byte xd = x1-x0;
|
||||
byte yd = y1-y0;
|
||||
byte x = x0;
|
||||
byte y = y0;
|
||||
byte e = yd/2;
|
||||
byte *cursor = SCREEN+y*40+x;
|
||||
do {
|
||||
*cursor = STAR;
|
||||
x = x + 1;
|
||||
cursor = cursor + 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
|
||||
sta $5
|
||||
ldx #$c
|
||||
lda #$0
|
||||
sta $4
|
||||
lda #<$400
|
||||
sta $2
|
||||
lda #>$400
|
||||
sta $2+$1
|
||||
b1:
|
||||
ldy #$0
|
||||
lda #$51
|
||||
sta ($2),y
|
||||
inc $4
|
||||
inc $2
|
||||
bne !+
|
||||
inc $2+$1
|
||||
!:
|
||||
txa
|
||||
clc
|
||||
adc #$18
|
||||
tax
|
||||
cpx #$27
|
||||
bcc b2
|
||||
inc $5
|
||||
lda $2
|
||||
clc
|
||||
adc #$28
|
||||
sta $2
|
||||
bcc !+
|
||||
inc $2+$1
|
||||
!:
|
||||
txa
|
||||
sec
|
||||
sbc #$27
|
||||
tax
|
||||
b2:
|
||||
lda $4
|
||||
cmp #$28
|
||||
bcc b1
|
||||
jsr main
|
||||
main: {
|
||||
lda #$0
|
||||
sta $5
|
||||
ldx #$c
|
||||
lda #$0
|
||||
sta $4
|
||||
lda #<$400
|
||||
sta $2
|
||||
lda #>$400
|
||||
sta $2+$1
|
||||
b1:
|
||||
ldy #$0
|
||||
lda #$51
|
||||
sta ($2),y
|
||||
inc $4
|
||||
inc $2
|
||||
bne !+
|
||||
inc $2+$1
|
||||
!:
|
||||
txa
|
||||
clc
|
||||
adc #$18
|
||||
tax
|
||||
cpx #$27
|
||||
bcc b2
|
||||
inc $5
|
||||
lda $2
|
||||
clc
|
||||
adc #$28
|
||||
sta $2
|
||||
bcc !+
|
||||
inc $2+$1
|
||||
!:
|
||||
txa
|
||||
sec
|
||||
sbc #$27
|
||||
tax
|
||||
b2:
|
||||
lda $4
|
||||
cmp #$28
|
||||
bcc b1
|
||||
rts
|
||||
}
|
||||
|
@ -1,25 +1,31 @@
|
||||
@begin: scope:[] from
|
||||
to:@1
|
||||
@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 ]
|
||||
[0] call main param-assignment [ ]
|
||||
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) @end
|
||||
(byte[1000]) SCREEN
|
||||
(byte) STAR
|
||||
(byte*) cursor
|
||||
(byte*) cursor#1 zp ptr byte:2 8.25
|
||||
(byte*) cursor#2 zp ptr byte:2 11.0
|
||||
(byte*) cursor#3 zp ptr byte:2 11.0
|
||||
(byte*) cursor#5 zp ptr byte:2 16.5
|
||||
(byte) e
|
||||
(byte) e#1 reg byte x 11.0
|
||||
(byte) e#2 reg byte x 22.0
|
||||
(byte) e#3 reg byte x 5.5
|
||||
(byte) e#5 reg byte x 16.5
|
||||
(byte) x
|
||||
(byte) x#1 zp byte:4 3.666666666666667
|
||||
(byte) x#2 zp byte:4 11.0
|
||||
(byte) x0
|
||||
(byte) x1
|
||||
(byte) xd
|
||||
(byte) y
|
||||
(byte) y#1 zp byte:5 7.333333333333333
|
||||
(byte) y#2 zp byte:5 5.5
|
||||
(byte) y#4 zp byte:5 16.5
|
||||
(byte) y0
|
||||
(byte) y1
|
||||
(byte) yd
|
||||
(void()) main()
|
||||
(label) main::@1
|
||||
(label) main::@2
|
||||
(label) main::@3
|
||||
(label) main::@return
|
||||
(byte*) main::cursor
|
||||
(byte*) main::cursor#1 zp ptr byte:2 8.25
|
||||
(byte*) main::cursor#2 zp ptr byte:2 11.0
|
||||
(byte*) main::cursor#3 zp ptr byte:2 11.0
|
||||
(byte*) main::cursor#5 zp ptr byte:2 16.5
|
||||
(byte) main::e
|
||||
(byte) main::e#1 reg byte x 11.0
|
||||
(byte) main::e#2 reg byte x 22.0
|
||||
(byte) main::e#3 reg byte x 5.5
|
||||
(byte) main::e#5 reg byte x 16.5
|
||||
(byte) main::x
|
||||
(byte) main::x#1 zp byte:4 3.666666666666667
|
||||
(byte) main::x#2 zp byte:4 11.0
|
||||
(byte) main::x0
|
||||
(byte) main::x1
|
||||
(byte) main::xd
|
||||
(byte) main::y
|
||||
(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 byte:4 [ x#2 x#1 ]
|
||||
reg byte x [ e#3 e#5 e#1 e#2 ]
|
||||
zp byte:5 [ y#2 y#4 y#1 ]
|
||||
zp ptr byte:2 [ main::cursor#3 main::cursor#5 main::cursor#1 main::cursor#2 ]
|
||||
zp byte:4 [ main::x#2 main::x#1 ]
|
||||
reg byte x [ main::e#3 main::e#5 main::e#1 main::e#2 ]
|
||||
zp byte:5 [ main::y#2 main::y#4 main::y#1 ]
|
||||
|
Loading…
Reference in New Issue
Block a user