mirror of
https://github.com/cc65/cc65.git
synced 2024-06-08 15:29:37 +00:00
Add linedraw
This commit is contained in:
parent
2fa6d453a3
commit
73adf7ddb9
BIN
samples/kim1/kimGFX.bin
Normal file
BIN
samples/kim1/kimGFX.bin
Normal file
Binary file not shown.
|
@ -18,6 +18,7 @@ extern void DrawCircle(void);
|
|||
extern void SetPixel(void);
|
||||
extern void ClearPixel(void);
|
||||
extern void DrawChar(void);
|
||||
extern void DrawLine();
|
||||
extern void Demo(void);
|
||||
extern byte __fastcall__ AscToPet(byte in);
|
||||
extern byte __fastcall__ ReverseBits(byte in);
|
||||
|
@ -134,7 +135,7 @@ void DrawTextAt(int x, int y, char * psz)
|
|||
}
|
||||
|
||||
// Something like Bresenham's algorithm for drawing a line
|
||||
|
||||
/*
|
||||
void DrawLine(int x0, int y0, int x1, int y1, byte val)
|
||||
{
|
||||
int dx = abs(x1 - x0), sx = x0 < x1 ? 1 : -1;
|
||||
|
@ -162,6 +163,7 @@ void DrawLine(int x0, int y0, int x1, int y1, byte val)
|
|||
}
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
// DrawCircle
|
||||
//
|
||||
|
@ -175,6 +177,15 @@ void DrawCircleC(int x0, int y0, int radius, byte)
|
|||
DrawCircle();
|
||||
}
|
||||
|
||||
void DrawLineC(int x0, int x1, int y0, int y1)
|
||||
{
|
||||
x1cord = x0;
|
||||
y1cord = y0;
|
||||
x2cord = x1;
|
||||
y2cord = y1;
|
||||
DrawLine();
|
||||
}
|
||||
|
||||
// MirrorFont
|
||||
//
|
||||
// RAM font is backwards left-right relative to the way memory is laid out on the KIM-1, so we swap all the
|
||||
|
@ -197,34 +208,34 @@ void DrawScreenMoire(int left, int top, int right, int bottom)
|
|||
{
|
||||
int x, y;
|
||||
|
||||
DrawLine(left, top, right, top, 1);
|
||||
DrawLine(left, bottom, right, bottom, 1);
|
||||
DrawLine(left, top, left, bottom, 1);
|
||||
DrawLine(right, top, right, bottom, 1);
|
||||
DrawLineC(left, top, right, top);
|
||||
DrawLineC(left, bottom, right, bottom);
|
||||
DrawLineC(left, top, left, bottom);
|
||||
DrawLineC(right, top, right, bottom);
|
||||
|
||||
for (x = left; x < right; x += 6)
|
||||
DrawLine(x, top, right - x + left, bottom, 1);
|
||||
DrawLineC(x, top, right - x + left, bottom);
|
||||
|
||||
for (y = top; y < bottom; y += 6)
|
||||
DrawLine(left, y, right, bottom - y + top, 1);
|
||||
DrawLineC(left, y, right, bottom - y + top);
|
||||
|
||||
}
|
||||
|
||||
int main (void)
|
||||
{
|
||||
int i;
|
||||
//int i;
|
||||
|
||||
// Clear the screen memory
|
||||
ClearScreen();
|
||||
Demo();
|
||||
//Demo();
|
||||
|
||||
//DrawTextAt(184, 192, "TEST");
|
||||
|
||||
// DrawScreenMoire(0,30, 319, 199);
|
||||
DrawScreenMoire(0,30, 319, 199);
|
||||
|
||||
// Print the numbers from 0-9999, forcing the screen to scroll
|
||||
for (i = 5; i < 80; i+=5)
|
||||
DrawCircleC(SCREEN_WIDTH/2, SCREEN_HEIGHT/2 + 20, i, 1);
|
||||
//for (i = 5; i < 80; i+=5)
|
||||
// DrawCircleC(SCREEN_WIDTH/2, SCREEN_HEIGHT/2 + 20, i, 1);
|
||||
|
||||
printf("Done, exiting...\r\n");
|
||||
return 0;
|
||||
|
|
|
@ -105,18 +105,18 @@ Current file: kimGFX.s
|
|||
000000r 2
|
||||
000000r 1 .forceimport __STARTUP__
|
||||
000000r 1 .import _printf
|
||||
000000r 1 .import _abs
|
||||
000000r 1 .import _ClearScreen
|
||||
000000r 1 .import _ScrollScreen
|
||||
000000r 1 .import _DrawCircle
|
||||
000000r 1 .import _SetPixel
|
||||
000000r 1 .import _ClearPixel
|
||||
000000r 1 .import _DrawChar
|
||||
000000r 1 .import _Demo
|
||||
000000r 1 .import _DrawLine
|
||||
000000r 1 .import _ReverseBits
|
||||
000000r 1 .import _font8x8_basic
|
||||
000000r 1 .import _x1cord
|
||||
000000r 1 .import _y1cord
|
||||
000000r 1 .import _x2cord
|
||||
000000r 1 .import _y2cord
|
||||
000000r 1 .import _cursorX
|
||||
000000r 1 .import _cursorY
|
||||
|
@ -126,8 +126,8 @@ Current file: kimGFX.s
|
|||
000000r 1 .export _c
|
||||
000000r 1 .export _DrawText
|
||||
000000r 1 .export _DrawTextAt
|
||||
000000r 1 .export _DrawLine
|
||||
000000r 1 .export _DrawCircleC
|
||||
000000r 1 .export _DrawLineC
|
||||
000000r 1 .export _MirrorFont
|
||||
000000r 1 .export _DrawScreenMoire
|
||||
000000r 1 .export _main
|
||||
|
@ -337,468 +337,302 @@ Current file: kimGFX.s
|
|||
00014Cr 1 .endproc
|
||||
00014Cr 1
|
||||
00014Cr 1 ; ---------------------------------------------------------------
|
||||
00014Cr 1 ; void __near__ DrawLine (int x0, int y0, int x1, int y1, unsigned char val)
|
||||
00014Cr 1 ; void __near__ DrawCircleC (int x0, int y0, int radius, unsigned char)
|
||||
00014Cr 1 ; ---------------------------------------------------------------
|
||||
00014Cr 1
|
||||
00014Cr 1 .segment "CODE"
|
||||
00014Cr 1
|
||||
00014Cr 1 .proc _DrawLine: near
|
||||
00014Cr 1 .proc _DrawCircleC: near
|
||||
00014Cr 1
|
||||
00014Cr 1 .segment "CODE"
|
||||
00014Cr 1
|
||||
00014Cr 1 20 rr rr jsr pusha
|
||||
00014Fr 1 A0 04 ldy #$04
|
||||
00014Fr 1 A0 06 ldy #$06
|
||||
000151r 1 20 rr rr jsr ldaxysp
|
||||
000154r 1 20 rr rr jsr pushax
|
||||
000157r 1 A0 0A ldy #$0A
|
||||
000159r 1 20 rr rr jsr ldaxysp
|
||||
00015Cr 1 20 rr rr jsr tossubax
|
||||
00015Fr 1 20 rr rr jsr _abs
|
||||
000162r 1 20 rr rr jsr pushax
|
||||
000165r 1 A0 0A ldy #$0A
|
||||
000154r 1 8D rr rr sta _x1cord
|
||||
000157r 1 8E rr rr stx _x1cord+1
|
||||
00015Ar 1 A0 04 ldy #$04
|
||||
00015Cr 1 20 rr rr jsr ldaxysp
|
||||
00015Fr 1 8D rr rr sta _y1cord
|
||||
000162r 1 8E rr rr stx _y1cord+1
|
||||
000165r 1 A0 02 ldy #$02
|
||||
000167r 1 20 rr rr jsr ldaxysp
|
||||
00016Ar 1 20 rr rr jsr pushax
|
||||
00016Dr 1 A0 08 ldy #$08
|
||||
00016Fr 1 20 rr rr jsr ldaxysp
|
||||
000172r 1 20 rr rr jsr tosltax
|
||||
000175r 1 D0 03 4C rr jeq L0002
|
||||
000179r 1 rr
|
||||
00017Ar 1 A2 00 ldx #$00
|
||||
00017Cr 1 A9 01 lda #$01
|
||||
00017Er 1 4C rr rr jmp L0003
|
||||
000181r 1 A2 FF L0002: ldx #$FF
|
||||
000183r 1 A9 FF lda #$FF
|
||||
000185r 1 20 rr rr L0003: jsr pushax
|
||||
000188r 1 A0 06 ldy #$06
|
||||
00018Ar 1 20 rr rr jsr ldaxysp
|
||||
00018Dr 1 20 rr rr jsr pushax
|
||||
000190r 1 A0 0C ldy #$0C
|
||||
00016Ar 1 8D rr rr sta _y2cord
|
||||
00016Dr 1 8E rr rr stx _y2cord+1
|
||||
000170r 1 20 rr rr jsr _DrawCircle
|
||||
000173r 1 20 rr rr jsr incsp7
|
||||
000176r 1 60 rts
|
||||
000177r 1
|
||||
000177r 1 .endproc
|
||||
000177r 1
|
||||
000177r 1 ; ---------------------------------------------------------------
|
||||
000177r 1 ; void __near__ DrawLineC (int x0, int x1, int y0, int y1)
|
||||
000177r 1 ; ---------------------------------------------------------------
|
||||
000177r 1
|
||||
000177r 1 .segment "CODE"
|
||||
000177r 1
|
||||
000177r 1 .proc _DrawLineC: near
|
||||
000177r 1
|
||||
000177r 1 .segment "CODE"
|
||||
000177r 1
|
||||
000177r 1 20 rr rr jsr pushax
|
||||
00017Ar 1 A0 07 ldy #$07
|
||||
00017Cr 1 20 rr rr jsr ldaxysp
|
||||
00017Fr 1 8D rr rr sta _x1cord
|
||||
000182r 1 8E rr rr stx _x1cord+1
|
||||
000185r 1 A0 03 ldy #$03
|
||||
000187r 1 20 rr rr jsr ldaxysp
|
||||
00018Ar 1 8D rr rr sta _y1cord
|
||||
00018Dr 1 8E rr rr stx _y1cord+1
|
||||
000190r 1 A0 05 ldy #$05
|
||||
000192r 1 20 rr rr jsr ldaxysp
|
||||
000195r 1 20 rr rr jsr tossubax
|
||||
000198r 1 20 rr rr jsr _abs
|
||||
00019Br 1 20 rr rr jsr pushax
|
||||
00019Er 1 A0 0C ldy #$0C
|
||||
0001A0r 1 20 rr rr jsr ldaxysp
|
||||
0001A3r 1 20 rr rr jsr pushax
|
||||
0001A6r 1 A0 0A ldy #$0A
|
||||
0001A8r 1 20 rr rr jsr ldaxysp
|
||||
0001ABr 1 20 rr rr jsr tosltax
|
||||
0001AEr 1 D0 03 4C rr jeq L0004
|
||||
0001B2r 1 rr
|
||||
0001B3r 1 A2 00 ldx #$00
|
||||
0001B5r 1 A9 01 lda #$01
|
||||
0001B7r 1 4C rr rr jmp L0005
|
||||
0001BAr 1 A2 FF L0004: ldx #$FF
|
||||
0001BCr 1 A9 FF lda #$FF
|
||||
0001BEr 1 20 rr rr L0005: jsr pushax
|
||||
0001C1r 1 A0 07 ldy #$07
|
||||
0001C3r 1 20 rr rr jsr ldaxysp
|
||||
0001C6r 1 20 rr rr jsr pushax
|
||||
0001C9r 1 A0 05 ldy #$05
|
||||
0001CBr 1 20 rr rr jsr ldaxysp
|
||||
0001CEr 1 20 rr rr jsr tosgtax
|
||||
0001D1r 1 D0 03 4C rr jeq L0006
|
||||
0001D5r 1 rr
|
||||
0001D6r 1 A0 07 ldy #$07
|
||||
0001D8r 1 20 rr rr jsr ldaxysp
|
||||
0001DBr 1 4C rr rr jmp L0007
|
||||
0001DEr 1 A0 03 L0006: ldy #$03
|
||||
0001E0r 1 20 rr rr jsr ldaxysp
|
||||
0001E3r 1 20 rr rr jsr negax
|
||||
0001E6r 1 20 rr rr L0007: jsr pushax
|
||||
0001E9r 1 A2 00 ldx #$00
|
||||
0001EBr 1 A9 02 lda #$02
|
||||
0001EDr 1 20 rr rr jsr tosdivax
|
||||
0001F0r 1 20 rr rr jsr pushax
|
||||
0001F3r 1 20 rr rr jsr decsp2
|
||||
0001F6r 1 4C rr rr jmp L0010
|
||||
0001F9r 1 A0 14 L0008: ldy #$14
|
||||
0001FBr 1 20 rr rr jsr ldaxysp
|
||||
0001FEr 1 20 rr rr jsr pushax
|
||||
000201r 1 A0 14 ldy #$14
|
||||
000203r 1 20 rr rr jsr ldaxysp
|
||||
000206r 1 20 rr rr jsr pushax
|
||||
000209r 1 A0 10 ldy #$10
|
||||
00020Br 1 A2 00 ldx #$00
|
||||
00020Dr 1 B1 rr lda (sp),y
|
||||
00020Fr 1 20 rr rr jsr _SETPIXEL
|
||||
000212r 1 A0 14 ldy #$14
|
||||
000214r 1 20 rr rr jsr ldaxysp
|
||||
000217r 1 20 rr rr jsr pushax
|
||||
00021Ar 1 A0 12 ldy #$12
|
||||
00021Cr 1 20 rr rr jsr ldaxysp
|
||||
00021Fr 1 20 rr rr jsr toseqax
|
||||
000222r 1 D0 03 4C rr jeq L000C
|
||||
000226r 1 rr
|
||||
000227r 1 A0 12 ldy #$12
|
||||
000229r 1 20 rr rr jsr ldaxysp
|
||||
00022Cr 1 20 rr rr jsr pushax
|
||||
00022Fr 1 A0 10 ldy #$10
|
||||
000231r 1 20 rr rr jsr ldaxysp
|
||||
000234r 1 20 rr rr jsr toseqax
|
||||
000237r 1 F0 03 4C rr jne L000D
|
||||
00023Br 1 rr
|
||||
00023Cr 1 A2 00 L000C: ldx #$00
|
||||
00023Er 1 A9 00 lda #$00
|
||||
000240r 1 D0 03 4C rr jeq L000E
|
||||
000244r 1 rr
|
||||
000245r 1 A2 00 L000D: ldx #$00
|
||||
000247r 1 A9 01 lda #$01
|
||||
000249r 1 D0 03 4C rr L000E: jeq L000B
|
||||
00024Dr 1 rr
|
||||
00024Er 1 4C rr rr jmp L0009
|
||||
000251r 1 A0 03 L000B: ldy #$03
|
||||
000253r 1 20 rr rr jsr ldaxysp
|
||||
000256r 1 A0 00 ldy #$00
|
||||
000258r 1 20 rr rr jsr staxysp
|
||||
00025Br 1 A0 01 ldy #$01
|
||||
00025Dr 1 20 rr rr jsr ldaxysp
|
||||
000260r 1 20 rr rr jsr pushax
|
||||
000263r 1 A0 0D ldy #$0D
|
||||
000265r 1 20 rr rr jsr ldaxysp
|
||||
000268r 1 20 rr rr jsr negax
|
||||
00026Br 1 20 rr rr jsr tosgtax
|
||||
00026Er 1 D0 03 4C rr jeq L000F
|
||||
000272r 1 rr
|
||||
000273r 1 A0 07 ldy #$07
|
||||
000275r 1 20 rr rr jsr ldaxysp
|
||||
000278r 1 A0 02 ldy #$02
|
||||
00027Ar 1 20 rr rr jsr subeqysp
|
||||
00027Dr 1 A0 09 ldy #$09
|
||||
00027Fr 1 20 rr rr jsr ldaxysp
|
||||
000282r 1 A0 13 ldy #$13
|
||||
000284r 1 20 rr rr jsr addeqysp
|
||||
000287r 1 A0 01 L000F: ldy #$01
|
||||
000289r 1 20 rr rr jsr ldaxysp
|
||||
00028Cr 1 20 rr rr jsr pushax
|
||||
00028Fr 1 A0 09 ldy #$09
|
||||
000291r 1 20 rr rr jsr ldaxysp
|
||||
000294r 1 20 rr rr jsr tosltax
|
||||
000297r 1 D0 03 4C rr jeq L0010
|
||||
00029Br 1 rr
|
||||
00029Cr 1 A0 0B ldy #$0B
|
||||
00029Er 1 20 rr rr jsr ldaxysp
|
||||
0002A1r 1 A0 02 ldy #$02
|
||||
0002A3r 1 20 rr rr jsr addeqysp
|
||||
0002A6r 1 A0 05 ldy #$05
|
||||
0002A8r 1 20 rr rr jsr ldaxysp
|
||||
0002ABr 1 A0 11 ldy #$11
|
||||
0002ADr 1 20 rr rr jsr addeqysp
|
||||
0002B0r 1 4C rr rr L0010: jmp L0008
|
||||
0002B3r 1 A0 15 L0009: ldy #$15
|
||||
0002B5r 1 20 rr rr jsr addysp
|
||||
0002B8r 1 60 rts
|
||||
0002B9r 1
|
||||
0002B9r 1 .endproc
|
||||
0002B9r 1
|
||||
0002B9r 1 ; ---------------------------------------------------------------
|
||||
0002B9r 1 ; void __near__ DrawCircleC (int x0, int y0, int radius, unsigned char)
|
||||
0002B9r 1 ; ---------------------------------------------------------------
|
||||
0002B9r 1
|
||||
0002B9r 1 .segment "CODE"
|
||||
0002B9r 1
|
||||
0002B9r 1 .proc _DrawCircleC: near
|
||||
0002B9r 1
|
||||
0002B9r 1 .segment "CODE"
|
||||
0002B9r 1
|
||||
0002B9r 1 20 rr rr jsr pusha
|
||||
0002BCr 1 A0 06 ldy #$06
|
||||
0002BEr 1 20 rr rr jsr ldaxysp
|
||||
0002C1r 1 8D rr rr sta _x1cord
|
||||
0002C4r 1 8E rr rr stx _x1cord+1
|
||||
0002C7r 1 A0 04 ldy #$04
|
||||
0002C9r 1 20 rr rr jsr ldaxysp
|
||||
0002CCr 1 8D rr rr sta _y1cord
|
||||
0002CFr 1 8E rr rr stx _y1cord+1
|
||||
0002D2r 1 A0 02 ldy #$02
|
||||
0002D4r 1 20 rr rr jsr ldaxysp
|
||||
0002D7r 1 8D rr rr sta _y2cord
|
||||
0002DAr 1 8E rr rr stx _y2cord+1
|
||||
0002DDr 1 20 rr rr jsr _DrawCircle
|
||||
0002E0r 1 20 rr rr jsr incsp7
|
||||
0002E3r 1 60 rts
|
||||
0002E4r 1
|
||||
0002E4r 1 .endproc
|
||||
0002E4r 1
|
||||
0002E4r 1 ; ---------------------------------------------------------------
|
||||
0002E4r 1 ; void __near__ MirrorFont (void)
|
||||
0002E4r 1 ; ---------------------------------------------------------------
|
||||
0002E4r 1
|
||||
0002E4r 1 .segment "CODE"
|
||||
0002E4r 1
|
||||
0002E4r 1 .proc _MirrorFont: near
|
||||
0002E4r 1
|
||||
0002E4r 1 .segment "CODE"
|
||||
0002E4r 1
|
||||
0002E4r 1 20 rr rr jsr decsp2
|
||||
0002E7r 1 A9 rr lda #<(_font8x8_basic)
|
||||
0002E9r 1 A2 rr ldx #>(_font8x8_basic)
|
||||
0002EBr 1 20 rr rr jsr pushax
|
||||
0002EEr 1 A2 00 ldx #$00
|
||||
0002F0r 1 A9 00 lda #$00
|
||||
0002F2r 1 A0 02 ldy #$02
|
||||
0002F4r 1 20 rr rr jsr staxysp
|
||||
0002F7r 1 A0 03 L0002: ldy #$03
|
||||
0002F9r 1 20 rr rr jsr ldaxysp
|
||||
0002FCr 1 C9 00 cmp #$00
|
||||
0002FEr 1 8A txa
|
||||
0002FFr 1 E9 04 sbc #$04
|
||||
000301r 1 50 02 bvc L0006
|
||||
000303r 1 49 80 eor #$80
|
||||
000305r 1 0A L0006: asl a
|
||||
000306r 1 A9 00 lda #$00
|
||||
000308r 1 A2 00 ldx #$00
|
||||
00030Ar 1 2A rol a
|
||||
00030Br 1 F0 03 4C rr jne L0005
|
||||
00030Fr 1 rr
|
||||
000310r 1 4C rr rr jmp L0003
|
||||
000313r 1 A0 01 L0005: ldy #$01
|
||||
000315r 1 20 rr rr jsr ldaxysp
|
||||
000318r 1 20 rr rr jsr pushax
|
||||
00031Br 1 A0 05 ldy #$05
|
||||
00031Dr 1 20 rr rr jsr ldaxysp
|
||||
000320r 1 20 rr rr jsr tosaddax
|
||||
000323r 1 20 rr rr jsr pushax
|
||||
000326r 1 A0 03 ldy #$03
|
||||
000328r 1 20 rr rr jsr ldaxysp
|
||||
00032Br 1 20 rr rr jsr pushax
|
||||
00032Er 1 A0 07 ldy #$07
|
||||
000330r 1 20 rr rr jsr ldaxysp
|
||||
000333r 1 20 rr rr jsr tosaddax
|
||||
000336r 1 A0 00 ldy #$00
|
||||
000338r 1 20 rr rr jsr ldauidx
|
||||
00033Br 1 20 rr rr jsr _ReverseBits
|
||||
00033Er 1 A0 00 ldy #$00
|
||||
000340r 1 20 rr rr jsr staspidx
|
||||
000343r 1 A0 02 ldy #$02
|
||||
000345r 1 A2 00 ldx #$00
|
||||
000347r 1 A9 01 lda #$01
|
||||
000349r 1 20 rr rr jsr addeqysp
|
||||
00034Cr 1 4C rr rr jmp L0002
|
||||
00034Fr 1 20 rr rr L0003: jsr incsp4
|
||||
000352r 1 60 rts
|
||||
000353r 1
|
||||
000353r 1 .endproc
|
||||
000353r 1
|
||||
000353r 1 ; ---------------------------------------------------------------
|
||||
000353r 1 ; void __near__ DrawScreenMoire (int left, int top, int right, int bottom)
|
||||
000353r 1 ; ---------------------------------------------------------------
|
||||
000353r 1
|
||||
000353r 1 .segment "CODE"
|
||||
000353r 1
|
||||
000353r 1 .proc _DrawScreenMoire: near
|
||||
000353r 1
|
||||
000353r 1 .segment "CODE"
|
||||
000353r 1
|
||||
000353r 1 20 rr rr jsr pushax
|
||||
000356r 1 20 rr rr jsr decsp4
|
||||
000359r 1 A0 0B ldy #$0B
|
||||
00035Br 1 20 rr rr jsr ldaxysp
|
||||
00035Er 1 20 rr rr jsr pushax
|
||||
000361r 1 A0 0B ldy #$0B
|
||||
000363r 1 20 rr rr jsr ldaxysp
|
||||
000366r 1 20 rr rr jsr pushax
|
||||
000369r 1 A0 0B ldy #$0B
|
||||
00036Br 1 20 rr rr jsr ldaxysp
|
||||
00036Er 1 20 rr rr jsr pushax
|
||||
000371r 1 A0 0F ldy #$0F
|
||||
000373r 1 20 rr rr jsr ldaxysp
|
||||
000376r 1 20 rr rr jsr pushax
|
||||
000379r 1 A2 00 ldx #$00
|
||||
00037Br 1 A9 01 lda #$01
|
||||
00037Dr 1 20 rr rr jsr _DrawLine
|
||||
000380r 1 A0 0B ldy #$0B
|
||||
000382r 1 20 rr rr jsr ldaxysp
|
||||
000195r 1 8D rr rr sta _x2cord
|
||||
000198r 1 8E rr rr stx _x2cord+1
|
||||
00019Br 1 A0 01 ldy #$01
|
||||
00019Dr 1 20 rr rr jsr ldaxysp
|
||||
0001A0r 1 8D rr rr sta _y2cord
|
||||
0001A3r 1 8E rr rr stx _y2cord+1
|
||||
0001A6r 1 20 rr rr jsr _DrawLine
|
||||
0001A9r 1 20 rr rr jsr incsp8
|
||||
0001ACr 1 60 rts
|
||||
0001ADr 1
|
||||
0001ADr 1 .endproc
|
||||
0001ADr 1
|
||||
0001ADr 1 ; ---------------------------------------------------------------
|
||||
0001ADr 1 ; void __near__ MirrorFont (void)
|
||||
0001ADr 1 ; ---------------------------------------------------------------
|
||||
0001ADr 1
|
||||
0001ADr 1 .segment "CODE"
|
||||
0001ADr 1
|
||||
0001ADr 1 .proc _MirrorFont: near
|
||||
0001ADr 1
|
||||
0001ADr 1 .segment "CODE"
|
||||
0001ADr 1
|
||||
0001ADr 1 20 rr rr jsr decsp2
|
||||
0001B0r 1 A9 rr lda #<(_font8x8_basic)
|
||||
0001B2r 1 A2 rr ldx #>(_font8x8_basic)
|
||||
0001B4r 1 20 rr rr jsr pushax
|
||||
0001B7r 1 A2 00 ldx #$00
|
||||
0001B9r 1 A9 00 lda #$00
|
||||
0001BBr 1 A0 02 ldy #$02
|
||||
0001BDr 1 20 rr rr jsr staxysp
|
||||
0001C0r 1 A0 03 L0002: ldy #$03
|
||||
0001C2r 1 20 rr rr jsr ldaxysp
|
||||
0001C5r 1 C9 00 cmp #$00
|
||||
0001C7r 1 8A txa
|
||||
0001C8r 1 E9 04 sbc #$04
|
||||
0001CAr 1 50 02 bvc L0006
|
||||
0001CCr 1 49 80 eor #$80
|
||||
0001CEr 1 0A L0006: asl a
|
||||
0001CFr 1 A9 00 lda #$00
|
||||
0001D1r 1 A2 00 ldx #$00
|
||||
0001D3r 1 2A rol a
|
||||
0001D4r 1 F0 03 4C rr jne L0005
|
||||
0001D8r 1 rr
|
||||
0001D9r 1 4C rr rr jmp L0003
|
||||
0001DCr 1 A0 01 L0005: ldy #$01
|
||||
0001DEr 1 20 rr rr jsr ldaxysp
|
||||
0001E1r 1 20 rr rr jsr pushax
|
||||
0001E4r 1 A0 05 ldy #$05
|
||||
0001E6r 1 20 rr rr jsr ldaxysp
|
||||
0001E9r 1 20 rr rr jsr tosaddax
|
||||
0001ECr 1 20 rr rr jsr pushax
|
||||
0001EFr 1 A0 03 ldy #$03
|
||||
0001F1r 1 20 rr rr jsr ldaxysp
|
||||
0001F4r 1 20 rr rr jsr pushax
|
||||
0001F7r 1 A0 07 ldy #$07
|
||||
0001F9r 1 20 rr rr jsr ldaxysp
|
||||
0001FCr 1 20 rr rr jsr tosaddax
|
||||
0001FFr 1 A0 00 ldy #$00
|
||||
000201r 1 20 rr rr jsr ldauidx
|
||||
000204r 1 20 rr rr jsr _ReverseBits
|
||||
000207r 1 A0 00 ldy #$00
|
||||
000209r 1 20 rr rr jsr staspidx
|
||||
00020Cr 1 A0 02 ldy #$02
|
||||
00020Er 1 A2 00 ldx #$00
|
||||
000210r 1 A9 01 lda #$01
|
||||
000212r 1 20 rr rr jsr addeqysp
|
||||
000215r 1 4C rr rr jmp L0002
|
||||
000218r 1 20 rr rr L0003: jsr incsp4
|
||||
00021Br 1 60 rts
|
||||
00021Cr 1
|
||||
00021Cr 1 .endproc
|
||||
00021Cr 1
|
||||
00021Cr 1 ; ---------------------------------------------------------------
|
||||
00021Cr 1 ; void __near__ DrawScreenMoire (int left, int top, int right, int bottom)
|
||||
00021Cr 1 ; ---------------------------------------------------------------
|
||||
00021Cr 1
|
||||
00021Cr 1 .segment "CODE"
|
||||
00021Cr 1
|
||||
00021Cr 1 .proc _DrawScreenMoire: near
|
||||
00021Cr 1
|
||||
00021Cr 1 .segment "CODE"
|
||||
00021Cr 1
|
||||
00021Cr 1 20 rr rr jsr pushax
|
||||
00021Fr 1 20 rr rr jsr decsp4
|
||||
000222r 1 A0 0B ldy #$0B
|
||||
000224r 1 20 rr rr jsr ldaxysp
|
||||
000227r 1 20 rr rr jsr pushax
|
||||
00022Ar 1 A0 0B ldy #$0B
|
||||
00022Cr 1 20 rr rr jsr ldaxysp
|
||||
00022Fr 1 20 rr rr jsr pushax
|
||||
000232r 1 A0 0B ldy #$0B
|
||||
000234r 1 20 rr rr jsr ldaxysp
|
||||
000237r 1 20 rr rr jsr pushax
|
||||
00023Ar 1 A0 0F ldy #$0F
|
||||
00023Cr 1 20 rr rr jsr ldaxysp
|
||||
00023Fr 1 20 rr rr jsr _DrawLineC
|
||||
000242r 1 A0 0B ldy #$0B
|
||||
000244r 1 20 rr rr jsr ldaxysp
|
||||
000247r 1 20 rr rr jsr pushax
|
||||
00024Ar 1 A0 07 ldy #$07
|
||||
00024Cr 1 20 rr rr jsr ldaxysp
|
||||
00024Fr 1 20 rr rr jsr pushax
|
||||
000252r 1 A0 0B ldy #$0B
|
||||
000254r 1 20 rr rr jsr ldaxysp
|
||||
000257r 1 20 rr rr jsr pushax
|
||||
00025Ar 1 A0 0B ldy #$0B
|
||||
00025Cr 1 20 rr rr jsr ldaxysp
|
||||
00025Fr 1 20 rr rr jsr _DrawLineC
|
||||
000262r 1 A0 0B ldy #$0B
|
||||
000264r 1 20 rr rr jsr ldaxysp
|
||||
000267r 1 20 rr rr jsr pushax
|
||||
00026Ar 1 A0 0B ldy #$0B
|
||||
00026Cr 1 20 rr rr jsr ldaxysp
|
||||
00026Fr 1 20 rr rr jsr pushax
|
||||
000272r 1 A0 0F ldy #$0F
|
||||
000274r 1 20 rr rr jsr ldaxysp
|
||||
000277r 1 20 rr rr jsr pushax
|
||||
00027Ar 1 A0 0B ldy #$0B
|
||||
00027Cr 1 20 rr rr jsr ldaxysp
|
||||
00027Fr 1 20 rr rr jsr _DrawLineC
|
||||
000282r 1 A0 07 ldy #$07
|
||||
000284r 1 20 rr rr jsr ldaxysp
|
||||
000287r 1 20 rr rr jsr pushax
|
||||
00028Ar 1 A0 0B ldy #$0B
|
||||
00028Cr 1 20 rr rr jsr ldaxysp
|
||||
00028Fr 1 20 rr rr jsr pushax
|
||||
000292r 1 A0 0B ldy #$0B
|
||||
000294r 1 20 rr rr jsr ldaxysp
|
||||
000297r 1 20 rr rr jsr pushax
|
||||
00029Ar 1 A0 0B ldy #$0B
|
||||
00029Cr 1 20 rr rr jsr ldaxysp
|
||||
00029Fr 1 20 rr rr jsr _DrawLineC
|
||||
0002A2r 1 A0 0B ldy #$0B
|
||||
0002A4r 1 20 rr rr jsr ldaxysp
|
||||
0002A7r 1 A0 02 ldy #$02
|
||||
0002A9r 1 20 rr rr jsr staxysp
|
||||
0002ACr 1 A0 03 L0002: ldy #$03
|
||||
0002AEr 1 20 rr rr jsr ldaxysp
|
||||
0002B1r 1 20 rr rr jsr pushax
|
||||
0002B4r 1 A0 09 ldy #$09
|
||||
0002B6r 1 20 rr rr jsr ldaxysp
|
||||
0002B9r 1 20 rr rr jsr tosltax
|
||||
0002BCr 1 F0 03 4C rr jne L0005
|
||||
0002C0r 1 rr
|
||||
0002C1r 1 4C rr rr jmp L0003
|
||||
0002C4r 1 A0 03 L0005: ldy #$03
|
||||
0002C6r 1 20 rr rr jsr ldaxysp
|
||||
0002C9r 1 20 rr rr jsr pushax
|
||||
0002CCr 1 A0 0B ldy #$0B
|
||||
0002CEr 1 20 rr rr jsr ldaxysp
|
||||
0002D1r 1 20 rr rr jsr pushax
|
||||
0002D4r 1 A0 0B ldy #$0B
|
||||
0002D6r 1 20 rr rr jsr ldaxysp
|
||||
0002D9r 1 20 rr rr jsr pushax
|
||||
0002DCr 1 A0 09 ldy #$09
|
||||
0002DEr 1 20 rr rr jsr ldaxysp
|
||||
0002E1r 1 20 rr rr jsr tossubax
|
||||
0002E4r 1 20 rr rr jsr pushax
|
||||
0002E7r 1 A0 11 ldy #$11
|
||||
0002E9r 1 20 rr rr jsr ldaxysp
|
||||
0002ECr 1 20 rr rr jsr tosaddax
|
||||
0002EFr 1 20 rr rr jsr pushax
|
||||
0002F2r 1 A0 0B ldy #$0B
|
||||
0002F4r 1 20 rr rr jsr ldaxysp
|
||||
0002F7r 1 20 rr rr jsr _DrawLineC
|
||||
0002FAr 1 A0 02 ldy #$02
|
||||
0002FCr 1 A2 00 ldx #$00
|
||||
0002FEr 1 A9 06 lda #$06
|
||||
000300r 1 20 rr rr jsr addeqysp
|
||||
000303r 1 4C rr rr jmp L0002
|
||||
000306r 1 A0 09 L0003: ldy #$09
|
||||
000308r 1 20 rr rr jsr ldaxysp
|
||||
00030Br 1 A0 00 ldy #$00
|
||||
00030Dr 1 20 rr rr jsr staxysp
|
||||
000310r 1 A0 01 L0006: ldy #$01
|
||||
000312r 1 20 rr rr jsr ldaxysp
|
||||
000315r 1 20 rr rr jsr pushax
|
||||
000318r 1 A0 07 ldy #$07
|
||||
00031Ar 1 20 rr rr jsr ldaxysp
|
||||
00031Dr 1 20 rr rr jsr tosltax
|
||||
000320r 1 F0 03 4C rr jne L0009
|
||||
000324r 1 rr
|
||||
000325r 1 4C rr rr jmp L0007
|
||||
000328r 1 A0 0B L0009: ldy #$0B
|
||||
00032Ar 1 20 rr rr jsr ldaxysp
|
||||
00032Dr 1 20 rr rr jsr pushax
|
||||
000330r 1 A0 03 ldy #$03
|
||||
000332r 1 20 rr rr jsr ldaxysp
|
||||
000335r 1 20 rr rr jsr pushax
|
||||
000338r 1 A0 0B ldy #$0B
|
||||
00033Ar 1 20 rr rr jsr ldaxysp
|
||||
00033Dr 1 20 rr rr jsr pushax
|
||||
000340r 1 A0 0B ldy #$0B
|
||||
000342r 1 20 rr rr jsr ldaxysp
|
||||
000345r 1 20 rr rr jsr pushax
|
||||
000348r 1 A0 09 ldy #$09
|
||||
00034Ar 1 20 rr rr jsr ldaxysp
|
||||
00034Dr 1 20 rr rr jsr tossubax
|
||||
000350r 1 20 rr rr jsr pushax
|
||||
000353r 1 A0 11 ldy #$11
|
||||
000355r 1 20 rr rr jsr ldaxysp
|
||||
000358r 1 20 rr rr jsr tosaddax
|
||||
00035Br 1 20 rr rr jsr _DrawLineC
|
||||
00035Er 1 A0 00 ldy #$00
|
||||
000360r 1 A2 00 ldx #$00
|
||||
000362r 1 A9 06 lda #$06
|
||||
000364r 1 20 rr rr jsr addeqysp
|
||||
000367r 1 4C rr rr jmp L0006
|
||||
00036Ar 1 A0 0C L0007: ldy #$0C
|
||||
00036Cr 1 20 rr rr jsr addysp
|
||||
00036Fr 1 60 rts
|
||||
000370r 1
|
||||
000370r 1 .endproc
|
||||
000370r 1
|
||||
000370r 1 ; ---------------------------------------------------------------
|
||||
000370r 1 ; int __near__ main (void)
|
||||
000370r 1 ; ---------------------------------------------------------------
|
||||
000370r 1
|
||||
000370r 1 .segment "CODE"
|
||||
000370r 1
|
||||
000370r 1 .proc _main: near
|
||||
000370r 1
|
||||
000370r 1 .segment "CODE"
|
||||
000370r 1
|
||||
000370r 1 20 rr rr jsr _ClearScreen
|
||||
000373r 1 A2 00 ldx #$00
|
||||
000375r 1 A9 00 lda #$00
|
||||
000377r 1 20 rr rr jsr pushax
|
||||
00037Ar 1 A2 00 ldx #$00
|
||||
00037Cr 1 A9 1E lda #$1E
|
||||
00037Er 1 20 rr rr jsr pushax
|
||||
000381r 1 A2 01 ldx #$01
|
||||
000383r 1 A9 3F lda #$3F
|
||||
000385r 1 20 rr rr jsr pushax
|
||||
000388r 1 A0 07 ldy #$07
|
||||
00038Ar 1 20 rr rr jsr ldaxysp
|
||||
00038Dr 1 20 rr rr jsr pushax
|
||||
000390r 1 A0 0B ldy #$0B
|
||||
000392r 1 20 rr rr jsr ldaxysp
|
||||
000395r 1 20 rr rr jsr pushax
|
||||
000398r 1 A0 0B ldy #$0B
|
||||
00039Ar 1 20 rr rr jsr ldaxysp
|
||||
00039Dr 1 20 rr rr jsr pushax
|
||||
0003A0r 1 A2 00 ldx #$00
|
||||
0003A2r 1 A9 01 lda #$01
|
||||
0003A4r 1 20 rr rr jsr _DrawLine
|
||||
0003A7r 1 A0 0B ldy #$0B
|
||||
0003A9r 1 20 rr rr jsr ldaxysp
|
||||
0003ACr 1 20 rr rr jsr pushax
|
||||
0003AFr 1 A0 0B ldy #$0B
|
||||
0003B1r 1 20 rr rr jsr ldaxysp
|
||||
0003B4r 1 20 rr rr jsr pushax
|
||||
0003B7r 1 A0 0F ldy #$0F
|
||||
0003B9r 1 20 rr rr jsr ldaxysp
|
||||
0003BCr 1 20 rr rr jsr pushax
|
||||
0003BFr 1 A0 0B ldy #$0B
|
||||
0003C1r 1 20 rr rr jsr ldaxysp
|
||||
0003C4r 1 20 rr rr jsr pushax
|
||||
0003C7r 1 A2 00 ldx #$00
|
||||
0003C9r 1 A9 01 lda #$01
|
||||
0003CBr 1 20 rr rr jsr _DrawLine
|
||||
0003CEr 1 A0 07 ldy #$07
|
||||
0003D0r 1 20 rr rr jsr ldaxysp
|
||||
0003D3r 1 20 rr rr jsr pushax
|
||||
0003D6r 1 A0 0B ldy #$0B
|
||||
0003D8r 1 20 rr rr jsr ldaxysp
|
||||
0003DBr 1 20 rr rr jsr pushax
|
||||
0003DEr 1 A0 0B ldy #$0B
|
||||
0003E0r 1 20 rr rr jsr ldaxysp
|
||||
0003E3r 1 20 rr rr jsr pushax
|
||||
0003E6r 1 A0 0B ldy #$0B
|
||||
0003E8r 1 20 rr rr jsr ldaxysp
|
||||
0003EBr 1 20 rr rr jsr pushax
|
||||
0003EEr 1 A2 00 ldx #$00
|
||||
0003F0r 1 A9 01 lda #$01
|
||||
0003F2r 1 20 rr rr jsr _DrawLine
|
||||
0003F5r 1 A0 0B ldy #$0B
|
||||
0003F7r 1 20 rr rr jsr ldaxysp
|
||||
0003FAr 1 A0 02 ldy #$02
|
||||
0003FCr 1 20 rr rr jsr staxysp
|
||||
0003FFr 1 A0 03 L0002: ldy #$03
|
||||
000401r 1 20 rr rr jsr ldaxysp
|
||||
000404r 1 20 rr rr jsr pushax
|
||||
000407r 1 A0 09 ldy #$09
|
||||
000409r 1 20 rr rr jsr ldaxysp
|
||||
00040Cr 1 20 rr rr jsr tosltax
|
||||
00040Fr 1 F0 03 4C rr jne L0005
|
||||
000413r 1 rr
|
||||
000414r 1 4C rr rr jmp L0003
|
||||
000417r 1 A0 03 L0005: ldy #$03
|
||||
000419r 1 20 rr rr jsr ldaxysp
|
||||
00041Cr 1 20 rr rr jsr pushax
|
||||
00041Fr 1 A0 0B ldy #$0B
|
||||
000421r 1 20 rr rr jsr ldaxysp
|
||||
000424r 1 20 rr rr jsr pushax
|
||||
000427r 1 A0 0B ldy #$0B
|
||||
000429r 1 20 rr rr jsr ldaxysp
|
||||
00042Cr 1 20 rr rr jsr pushax
|
||||
00042Fr 1 A0 09 ldy #$09
|
||||
000431r 1 20 rr rr jsr ldaxysp
|
||||
000434r 1 20 rr rr jsr tossubax
|
||||
000437r 1 20 rr rr jsr pushax
|
||||
00043Ar 1 A0 11 ldy #$11
|
||||
00043Cr 1 20 rr rr jsr ldaxysp
|
||||
00043Fr 1 20 rr rr jsr tosaddax
|
||||
000442r 1 20 rr rr jsr pushax
|
||||
000445r 1 A0 0B ldy #$0B
|
||||
000447r 1 20 rr rr jsr ldaxysp
|
||||
00044Ar 1 20 rr rr jsr pushax
|
||||
00044Dr 1 A2 00 ldx #$00
|
||||
00044Fr 1 A9 01 lda #$01
|
||||
000451r 1 20 rr rr jsr _DrawLine
|
||||
000454r 1 A0 02 ldy #$02
|
||||
000456r 1 A2 00 ldx #$00
|
||||
000458r 1 A9 06 lda #$06
|
||||
00045Ar 1 20 rr rr jsr addeqysp
|
||||
00045Dr 1 4C rr rr jmp L0002
|
||||
000460r 1 A0 09 L0003: ldy #$09
|
||||
000462r 1 20 rr rr jsr ldaxysp
|
||||
000465r 1 A0 00 ldy #$00
|
||||
000467r 1 20 rr rr jsr staxysp
|
||||
00046Ar 1 A0 01 L0006: ldy #$01
|
||||
00046Cr 1 20 rr rr jsr ldaxysp
|
||||
00046Fr 1 20 rr rr jsr pushax
|
||||
000472r 1 A0 07 ldy #$07
|
||||
000474r 1 20 rr rr jsr ldaxysp
|
||||
000477r 1 20 rr rr jsr tosltax
|
||||
00047Ar 1 F0 03 4C rr jne L0009
|
||||
00047Er 1 rr
|
||||
00047Fr 1 4C rr rr jmp L0007
|
||||
000482r 1 A0 0B L0009: ldy #$0B
|
||||
000484r 1 20 rr rr jsr ldaxysp
|
||||
000487r 1 20 rr rr jsr pushax
|
||||
00048Ar 1 A0 03 ldy #$03
|
||||
00048Cr 1 20 rr rr jsr ldaxysp
|
||||
00048Fr 1 20 rr rr jsr pushax
|
||||
000492r 1 A0 0B ldy #$0B
|
||||
000494r 1 20 rr rr jsr ldaxysp
|
||||
000497r 1 20 rr rr jsr pushax
|
||||
00049Ar 1 A0 0B ldy #$0B
|
||||
00049Cr 1 20 rr rr jsr ldaxysp
|
||||
00049Fr 1 20 rr rr jsr pushax
|
||||
0004A2r 1 A0 09 ldy #$09
|
||||
0004A4r 1 20 rr rr jsr ldaxysp
|
||||
0004A7r 1 20 rr rr jsr tossubax
|
||||
0004AAr 1 20 rr rr jsr pushax
|
||||
0004ADr 1 A0 11 ldy #$11
|
||||
0004AFr 1 20 rr rr jsr ldaxysp
|
||||
0004B2r 1 20 rr rr jsr tosaddax
|
||||
0004B5r 1 20 rr rr jsr pushax
|
||||
0004B8r 1 A2 00 ldx #$00
|
||||
0004BAr 1 A9 01 lda #$01
|
||||
0004BCr 1 20 rr rr jsr _DrawLine
|
||||
0004BFr 1 A0 00 ldy #$00
|
||||
0004C1r 1 A2 00 ldx #$00
|
||||
0004C3r 1 A9 06 lda #$06
|
||||
0004C5r 1 20 rr rr jsr addeqysp
|
||||
0004C8r 1 4C rr rr jmp L0006
|
||||
0004CBr 1 A0 0C L0007: ldy #$0C
|
||||
0004CDr 1 20 rr rr jsr addysp
|
||||
0004D0r 1 60 rts
|
||||
0004D1r 1
|
||||
0004D1r 1 .endproc
|
||||
0004D1r 1
|
||||
0004D1r 1 ; ---------------------------------------------------------------
|
||||
0004D1r 1 ; int __near__ main (void)
|
||||
0004D1r 1 ; ---------------------------------------------------------------
|
||||
0004D1r 1
|
||||
0004D1r 1 .segment "CODE"
|
||||
0004D1r 1
|
||||
0004D1r 1 .proc _main: near
|
||||
0004D1r 1
|
||||
0004D1r 1 .segment "CODE"
|
||||
0004D1r 1
|
||||
0004D1r 1 20 rr rr jsr decsp2
|
||||
0004D4r 1 20 rr rr jsr _ClearScreen
|
||||
0004D7r 1 20 rr rr jsr _Demo
|
||||
0004DAr 1 A2 00 ldx #$00
|
||||
0004DCr 1 A9 05 lda #$05
|
||||
0004DEr 1 A0 00 ldy #$00
|
||||
0004E0r 1 20 rr rr jsr staxysp
|
||||
0004E3r 1 A0 01 L0002: ldy #$01
|
||||
0004E5r 1 20 rr rr jsr ldaxysp
|
||||
0004E8r 1 C9 50 cmp #$50
|
||||
0004EAr 1 8A txa
|
||||
0004EBr 1 E9 00 sbc #$00
|
||||
0004EDr 1 50 02 bvc L0006
|
||||
0004EFr 1 49 80 eor #$80
|
||||
0004F1r 1 0A L0006: asl a
|
||||
0004F2r 1 A9 00 lda #$00
|
||||
0004F4r 1 A2 00 ldx #$00
|
||||
0004F6r 1 2A rol a
|
||||
0004F7r 1 F0 03 4C rr jne L0005
|
||||
0004FBr 1 rr
|
||||
0004FCr 1 4C rr rr jmp L0003
|
||||
0004FFr 1 A2 00 L0005: ldx #$00
|
||||
000501r 1 A9 A0 lda #$A0
|
||||
000503r 1 20 rr rr jsr pushax
|
||||
000506r 1 A2 00 ldx #$00
|
||||
000508r 1 A9 78 lda #$78
|
||||
00050Ar 1 20 rr rr jsr pushax
|
||||
00050Dr 1 A0 05 ldy #$05
|
||||
00050Fr 1 20 rr rr jsr ldaxysp
|
||||
000512r 1 20 rr rr jsr pushax
|
||||
000515r 1 A2 00 ldx #$00
|
||||
000517r 1 A9 01 lda #$01
|
||||
000519r 1 20 rr rr jsr _DrawCircleC
|
||||
00051Cr 1 A0 00 ldy #$00
|
||||
00051Er 1 A2 00 ldx #$00
|
||||
000520r 1 A9 05 lda #$05
|
||||
000522r 1 20 rr rr jsr addeqysp
|
||||
000525r 1 4C rr rr jmp L0002
|
||||
000528r 1 A9 rr L0003: lda #<(S0004)
|
||||
00052Ar 1 A2 rr ldx #>(S0004)
|
||||
00052Cr 1 20 rr rr jsr pushax
|
||||
00052Fr 1 A0 02 ldy #$02
|
||||
000531r 1 20 rr rr jsr _printf
|
||||
000534r 1 A2 00 ldx #$00
|
||||
000536r 1 A9 00 lda #$00
|
||||
000538r 1 4C rr rr jmp L0001
|
||||
00053Br 1 20 rr rr L0001: jsr incsp2
|
||||
00053Er 1 60 rts
|
||||
00053Fr 1
|
||||
00053Fr 1 .endproc
|
||||
00053Fr 1
|
||||
00053Fr 1
|
||||
000388r 1 A2 00 ldx #$00
|
||||
00038Ar 1 A9 C7 lda #$C7
|
||||
00038Cr 1 20 rr rr jsr _DrawScreenMoire
|
||||
00038Fr 1 A9 rr lda #<(S0004)
|
||||
000391r 1 A2 rr ldx #>(S0004)
|
||||
000393r 1 20 rr rr jsr pushax
|
||||
000396r 1 A0 02 ldy #$02
|
||||
000398r 1 20 rr rr jsr _printf
|
||||
00039Br 1 A2 00 ldx #$00
|
||||
00039Dr 1 A9 00 lda #$00
|
||||
00039Fr 1 4C rr rr jmp L0001
|
||||
0003A2r 1 60 L0001: rts
|
||||
0003A3r 1
|
||||
0003A3r 1 .endproc
|
||||
0003A3r 1
|
||||
0003A3r 1
|
||||
|
|
Binary file not shown.
|
@ -17,6 +17,7 @@
|
|||
.export _SetPixel
|
||||
.export _ClearPixel
|
||||
.export _DrawCircle
|
||||
.export _DrawLine
|
||||
.export _AscToPet
|
||||
.export _ReverseBits
|
||||
.export _DrawChar
|
||||
|
@ -24,7 +25,15 @@
|
|||
|
||||
.import _font8x8_basic
|
||||
|
||||
; This is the assumed location of the MTU visible memory board's 8K of memory. You can adjust this
|
||||
; constant to refelct other locations as needed.
|
||||
|
||||
SCREEN = $A000
|
||||
|
||||
; Note that even though these constants are defined here and respected, there are still going to be
|
||||
; logic assumptions in GetPixelAddress that assume a 320x200 screen. If you change these, you'll
|
||||
; need to adjust GetPixelAddress to match.
|
||||
|
||||
SCREEN_WIDTH = 320
|
||||
SCREEN_HEIGHT = 200
|
||||
SCREEN_BYTES = SCREEN_WIDTH * SCREEN_HEIGHT / 8
|
||||
|
@ -717,7 +726,6 @@ _DrawChar: sty tempy
|
|||
|
||||
lda #0 ; Get the address in font memory where this
|
||||
sta src_hi ; Petscii chracter lives (after conversion from
|
||||
|
||||
lda tempa ; ascii)
|
||||
|
||||
sty temp2
|
||||
|
@ -823,7 +831,220 @@ _Demo: lda #0
|
|||
jsr _DrawText
|
||||
jmp :-
|
||||
|
||||
;-----------------------------------------------------------------------------------
|
||||
; DrawCircle - Draws a circle in video memory of a given radius at a given coord
|
||||
;-----------------------------------------------------------------------------------
|
||||
; _x1cord (16-bit)
|
||||
; _y1cord (8-bit)
|
||||
; _x2cord (16-bit)
|
||||
; _y2cord (8-bit)
|
||||
;-----------------------------------------------------------------------------------
|
||||
; Implements something like Bresenham's algorithm for drawing a line
|
||||
;-----------------------------------------------------------------------------------
|
||||
; void DrawLine(int x0, int y0, int x1, int y1, byte val)
|
||||
; {
|
||||
; int dx = abs(_x2cord - _x1cord), sx = _x1cord < _x2cord ? 1 : -1;
|
||||
; int dy = abs(_y2cord - _y1cord), sy = _y1cord < _y2cord ? 1 : -1;
|
||||
; int err = (dx > dy ? dx : -dy) / 2, e2;
|
||||
;
|
||||
; while (1)
|
||||
; {
|
||||
; SETPIXEL(_x1cord, _y1cord, val);
|
||||
;
|
||||
; if (_x1cord == _x2cord && _y1cord == _y2cord)
|
||||
; break;
|
||||
;
|
||||
; e2 = err;
|
||||
;
|
||||
; if (e2 > -dx)
|
||||
; {
|
||||
; err -= dy;
|
||||
; _x1cord += sx;
|
||||
; }
|
||||
; if (e2 < dy)
|
||||
; {
|
||||
; err += dx;
|
||||
; _y1cord += sy;
|
||||
; }
|
||||
; }
|
||||
; }
|
||||
;-----------------------------------------------------------------------------------
|
||||
|
||||
dx: .res 2
|
||||
dy: .res 2
|
||||
e2: .res 2
|
||||
sx: .res 1
|
||||
sy: .res 1
|
||||
dltemp: .res 2
|
||||
|
||||
_DrawLine: lda _x2cord ; Calculate dx = (x2cord - X1cord)
|
||||
sec
|
||||
sbc _x1cord
|
||||
sta dx
|
||||
lda _x2cord+1
|
||||
sbc _x1cord+1
|
||||
sta dx+1
|
||||
bpl positivedx ; dx is positive, so we're good
|
||||
|
||||
lda dx ; dx is negative, so compute absolute value
|
||||
clc ; by inverting bits and adding 1
|
||||
eor #$ff
|
||||
adc #1
|
||||
sta dx
|
||||
lda dx+1
|
||||
eor #$ff
|
||||
adc #0
|
||||
sta dx+1
|
||||
positivedx:
|
||||
lda _y2cord ; Calculate dy = (y2cord - y1cord)
|
||||
sec
|
||||
sbc _y1cord
|
||||
sta dy
|
||||
lda _y2cord+1
|
||||
sbc _y1cord+1
|
||||
sta dy+1
|
||||
bpl positivedy ; dy is positive, so we're good
|
||||
|
||||
lda dy ; It's negative, so compute the absolute value
|
||||
clc ; by inverting bits and adding 1
|
||||
eor #$ff
|
||||
adc #1
|
||||
sta dy
|
||||
lda dy+1
|
||||
eor #$ff
|
||||
adc #0
|
||||
sta dy+1
|
||||
positivedy: ; Check if dx > dy
|
||||
lda dy+1
|
||||
cmp dx+1
|
||||
bcc dxgt
|
||||
bne dygt
|
||||
lda dy
|
||||
cmp dx
|
||||
bcs dygt
|
||||
|
||||
dxgt: lda dx ; We found dx>dy so err = dx
|
||||
sta err
|
||||
lda dx+1
|
||||
sta err+1
|
||||
jmp div2
|
||||
|
||||
dygt: lda dy ; else err = -dy
|
||||
clc
|
||||
eor #$ff
|
||||
adc #1
|
||||
sta err
|
||||
lda dy+1
|
||||
eor #$ff
|
||||
adc #0
|
||||
sta err+1
|
||||
div2: clc
|
||||
lsr err+1 ; err /= 2
|
||||
ror err
|
||||
|
||||
calcsx: lda _x1cord+1 ; if (x1cord < x2cord) then sx = 1
|
||||
cmp _x2cord+1
|
||||
bcc x1lt
|
||||
bne x1gt
|
||||
lda _x1cord
|
||||
cmp _x2cord
|
||||
bcc x1lt
|
||||
|
||||
x1gt: lda #$FF
|
||||
sta sx
|
||||
bne calcsy
|
||||
|
||||
x1lt: lda #1 ; otherwise sx = 1
|
||||
sta sx
|
||||
|
||||
calcsy: lda _y1cord+1 ; if (y1cord < y2cord) then sy = 1
|
||||
cmp _y2cord+1
|
||||
bcc y1lt
|
||||
bne y1gt
|
||||
lda _y1cord
|
||||
cmp _y2cord
|
||||
bcc y1lt
|
||||
y1gt: lda _y1cord ; if (_y1cord > _y2cord) then sy = -1
|
||||
lda #$FF
|
||||
sta sy
|
||||
bne loop
|
||||
|
||||
y1lt: lda #1 ; otherwise sy = 1
|
||||
sta sy
|
||||
|
||||
loop: jsr _SetPixel ; Plot the current _x1cord, _y1cord
|
||||
|
||||
lda _x1cord ; if (_x1cord == _x2cord && _y1cord == _y2cord) then we rts
|
||||
cmp _x2cord
|
||||
bne noteq
|
||||
lda _x1cord+1
|
||||
cmp _x2cord+1
|
||||
bne noteq
|
||||
lda _y1cord
|
||||
cmp _y2cord
|
||||
bne noteq
|
||||
lda _y1cord+1
|
||||
cmp _y2cord+1
|
||||
bne noteq
|
||||
|
||||
rts
|
||||
|
||||
noteq: lda err
|
||||
sta e2
|
||||
lda err+1
|
||||
sta e2+1
|
||||
|
||||
lda e2 ; if (e2 > -dx) is the same as if (e2 + dx > 0), so we test that.
|
||||
clc ; If its true then we dec err and inc _x1cord
|
||||
adc dx
|
||||
lda e2+1
|
||||
adc dx+1
|
||||
bmi noincx
|
||||
|
||||
incx: lda err ; err -= dy
|
||||
sec
|
||||
sbc dy
|
||||
sta err
|
||||
lda err+1
|
||||
sbc dy+1
|
||||
sta err+1
|
||||
lda _x1cord ; _x1cord += sx
|
||||
clc
|
||||
adc sx
|
||||
sta _x1cord
|
||||
lda _x1cord+1
|
||||
adc #0
|
||||
sta _x1cord+1
|
||||
|
||||
noincx: lda e2+1 ; if (e2 < dy) then we inc err and inc _y1cord
|
||||
cmp dy+1
|
||||
bcc noincy
|
||||
bne incy
|
||||
lda e2
|
||||
cmp dy
|
||||
bcc noincy
|
||||
incy: lda err ; err += dx
|
||||
clc
|
||||
adc dx
|
||||
sta err
|
||||
lda err+1
|
||||
adc dx+1
|
||||
sta err+1
|
||||
lda _y1cord ; _y1cord += sy
|
||||
clc
|
||||
adc sy
|
||||
sta _y1cord
|
||||
lda _y1cord+1
|
||||
adc #0
|
||||
sta _y1cord+1
|
||||
noincy:
|
||||
jmp loop
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
Binary file not shown.
Loading…
Reference in New Issue
Block a user