Merge pull request #238 from mrdudz/gamate
Bit Corporation 'Gamate' support
This commit is contained in:
@@ -15,6 +15,15 @@
|
||||
#include <stdlib.h>
|
||||
#include <joystick.h>
|
||||
|
||||
#if defined(__GAMATE__)
|
||||
/* there is not enough screen space to show all 256 characters at the bottom */
|
||||
#define NUMCHARS 128
|
||||
#define NUMCOLS 4
|
||||
#else
|
||||
#define NUMCHARS 256
|
||||
#define NUMCOLS 16
|
||||
#endif
|
||||
|
||||
static char grid[5][5] = {
|
||||
{ CH_ULCORNER, CH_HLINE, CH_TTEE, CH_HLINE, CH_URCORNER },
|
||||
{ CH_VLINE, ' ', CH_VLINE, ' ', CH_VLINE },
|
||||
@@ -27,10 +36,15 @@ void main(void)
|
||||
{
|
||||
int i, j, n;
|
||||
unsigned char xsize, ysize, tcol, bgcol, bcol, inpos = 0;
|
||||
#if defined(__NES__) || defined(__PCE__) || defined(__GAMATE__)
|
||||
unsigned char joy;
|
||||
|
||||
joy_install(joy_static_stddrv);
|
||||
#endif
|
||||
clrscr();
|
||||
screensize(&xsize, &ysize);
|
||||
cputs("cc65 conio test\n\rInput: [ ]");
|
||||
cputs("cc65 conio test\n\r");
|
||||
cputs("Input:[ ]");
|
||||
|
||||
cputsxy(0, 2, "Colors:" );
|
||||
tcol = textcolor(0); /* remember original textcolor */
|
||||
@@ -39,14 +53,14 @@ void main(void)
|
||||
bgcolor(bgcol);bordercolor(bcol);
|
||||
for (i = 0; i < 3; ++i) {
|
||||
gotoxy(i,3 + i);
|
||||
for (j = 0; j < 16; ++j) {
|
||||
for (j = 0; j < NUMCOLS; ++j) {
|
||||
textcolor(j);
|
||||
cputc('X');
|
||||
}
|
||||
}
|
||||
textcolor(tcol);
|
||||
|
||||
cprintf("\n\n\r Screensize is: %dx%d", xsize, ysize);
|
||||
cprintf("\n\n\r Screensize: %dx%d", xsize, ysize );
|
||||
|
||||
chlinexy(0,6,xsize);
|
||||
cvlinexy(0,6,3);
|
||||
@@ -64,13 +78,13 @@ void main(void)
|
||||
}
|
||||
}
|
||||
|
||||
gotoxy(0,ysize - 2 - ((256 + xsize) / xsize));
|
||||
gotoxy(0,ysize - 2 - ((NUMCHARS + xsize) / xsize));
|
||||
revers(1);
|
||||
for (i = 0; i < xsize; ++i) {
|
||||
cputc('0' + i % 10);
|
||||
}
|
||||
revers(0);
|
||||
for (i = 0; i < 256; ++i) {
|
||||
for (i = 0; i < NUMCHARS; ++i) {
|
||||
if ((i != '\n') && (i != '\r')) {
|
||||
cputc(i);
|
||||
} else {
|
||||
@@ -89,23 +103,27 @@ void main(void)
|
||||
cursor(1);
|
||||
for (;;) {
|
||||
|
||||
/* do the "rvs" blinking */
|
||||
i = textcolor(COLOR_BLACK);
|
||||
gotoxy(8, 2);
|
||||
j = n & 1;
|
||||
j = n >> 4 & 1;
|
||||
revers(j);
|
||||
cputc(j ? 'R' : ' ');
|
||||
revers(j ^ 1);
|
||||
cputs(" revers");
|
||||
cputs(" rvs");
|
||||
revers(0);
|
||||
textcolor(i);
|
||||
|
||||
#if defined(__NES__) || defined(__PCE__)
|
||||
|
||||
joy_install(joy_static_stddrv);
|
||||
while (!joy_read(JOY_1)) ;
|
||||
joy_uninstall();
|
||||
gotoxy(7 + inpos,1);
|
||||
|
||||
#if defined(__NES__) || defined(__PCE__) || defined(__GAMATE__)
|
||||
/* not all targets have waitvblank */
|
||||
waitvblank();
|
||||
/* for targets that do not have a keyboard, read the first
|
||||
joystick */
|
||||
joy = joy_read(JOY_1);
|
||||
cprintf("%02x", joy);
|
||||
#else
|
||||
|
||||
gotoxy(8 + inpos,1);
|
||||
i = cgetc();
|
||||
if ((i >= '0') && (i<='9')) {
|
||||
textcolor(i - '0');
|
||||
@@ -129,9 +147,7 @@ void main(void)
|
||||
cputc(i);
|
||||
inpos = (inpos + 1) & 7;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
++n;
|
||||
}
|
||||
}
|
||||
|
||||
25
testcode/lib/gamate/Makefile
Normal file
25
testcode/lib/gamate/Makefile
Normal file
@@ -0,0 +1,25 @@
|
||||
|
||||
all: audiotest.bin lcdtest.bin ctest.bin
|
||||
|
||||
audiotest.bin: audiotest.s
|
||||
../../../bin/cl65 -l audiotest.lst -t gamate -o audiotest.bin audiotest.s
|
||||
lcdtest.bin: lcdtest.s
|
||||
../../../bin/cl65 -l lcdtest.lst -t gamate -o lcdtest.bin lcdtest.s
|
||||
ctest.bin: ctest.c
|
||||
../../../bin/cl65 -l ctest.lst -t gamate -o ctest.bin ctest.c
|
||||
nachtm.bin: nachtm.c
|
||||
../../../bin/cl65 -Os -l nachtm.lst -t gamate -o nachtm.bin nachtm.c
|
||||
gamate-fixcart nachtm.bin
|
||||
|
||||
test1: lcdtest.bin
|
||||
cd ~/Desktop/mame/winmess/ && wine mess.exe gamate -window -skip_gameinfo -cart ~/Desktop/cc65/github/cc65/testcode/lib/gamate/lcdtest.bin
|
||||
test2: audiotest.bin
|
||||
cd ~/Desktop/mame/winmess/ && wine mess.exe gamate -window -skip_gameinfo -cart ~/Desktop/cc65/github/cc65/testcode/lib/gamate/audiotest.bin
|
||||
testc: ctest.bin
|
||||
cd ~/Desktop/mame/winmess/ && wine mess.exe gamate -window -skip_gameinfo -cart ~/Desktop/cc65/github/cc65/testcode/lib/gamate/ctest.bin
|
||||
testn: nachtm.bin
|
||||
cd ~/Desktop/mame/winmess/ && wine mess.exe gamate -window -skip_gameinfo -cart ~/Desktop/cc65/github/cc65/testcode/lib/gamate/nachtm.bin
|
||||
|
||||
clean:
|
||||
rm -f lcdtest.o audiotest.o ctest.o
|
||||
rm -f lcdtest.bin audiotest.bin ctest.bin nachtm.bin
|
||||
457
testcode/lib/gamate/audiotest.s
Normal file
457
testcode/lib/gamate/audiotest.s
Normal file
@@ -0,0 +1,457 @@
|
||||
;
|
||||
; original audiotest.s by PeT (mess@utanet.at)
|
||||
;
|
||||
; cl65 -t gamate -o audiotest.bin audiotest.s
|
||||
;
|
||||
|
||||
.include "gamate.inc"
|
||||
|
||||
.zeropage
|
||||
addr: .word 0
|
||||
psa: .word 0
|
||||
readaddr: .word 0
|
||||
editbuffer1: .byte 0,0,0,0, 0,0,0,0
|
||||
writeaddr: .word 0
|
||||
editbuffer2: .byte 0,0,0,0, 0,0,0,0
|
||||
cursor: .byte 0
|
||||
controlslast: .byte 0
|
||||
controlsedge: .byte 0
|
||||
|
||||
.bss
|
||||
temp_x: .byte 0
|
||||
temp_y: .byte 0
|
||||
temp_a: .byte 0
|
||||
irq_count: .byte 0
|
||||
nmi_count: .byte 0
|
||||
psx: .byte 0
|
||||
psy: .byte 0
|
||||
xpos: .byte 0
|
||||
ypos: .byte 0
|
||||
|
||||
.rodata
|
||||
|
||||
chars: .incbin "cga2.chr"
|
||||
hex2asc: .byte "0123456789abcdef"
|
||||
|
||||
.code
|
||||
|
||||
;-------------------------------------------------------------------------------
|
||||
.export IRQStub, NMIStub
|
||||
|
||||
.proc NMIStub
|
||||
inc nmi_count
|
||||
rts
|
||||
.endproc
|
||||
|
||||
.proc IRQStub
|
||||
inc irq_count
|
||||
rts
|
||||
.endproc
|
||||
|
||||
;-------------------------------------------------------------------------------
|
||||
.export Start
|
||||
|
||||
.proc Start
|
||||
sei
|
||||
lda #0
|
||||
sta ZP_IRQ_CTRL
|
||||
|
||||
lda #>AUDIO_BASE
|
||||
sta writeaddr+1
|
||||
sta readaddr+1
|
||||
lda #<AUDIO_BASE
|
||||
sta writeaddr
|
||||
sta readaddr
|
||||
|
||||
lda #$10
|
||||
sta editbuffer1+6
|
||||
lda #$e
|
||||
sta editbuffer2+5
|
||||
lda #$ff
|
||||
sta editbuffer2+3
|
||||
lda #$ff
|
||||
sta editbuffer2+4
|
||||
lda #$0f
|
||||
sta editbuffer2
|
||||
lda #$0f
|
||||
sta editbuffer2+1
|
||||
lda #$0e
|
||||
sta editbuffer2+2
|
||||
lda #$38
|
||||
sta editbuffer1+7
|
||||
|
||||
lda #0
|
||||
sta LCD_XPOS
|
||||
sta LCD_YPOS
|
||||
sta irq_count
|
||||
sta cursor
|
||||
lda #1
|
||||
sta nmi_count
|
||||
cli
|
||||
lda #LCD_MODE_INC_Y
|
||||
sta LCD_MODE
|
||||
|
||||
jsr printy
|
||||
|
||||
lda #1
|
||||
sta ZP_IRQ_CTRL
|
||||
|
||||
loop:
|
||||
lda irq_count
|
||||
loop1:
|
||||
cmp irq_count
|
||||
beq loop1
|
||||
lda irq_count
|
||||
and #7
|
||||
bne loop1
|
||||
|
||||
lda #LCD_MODE_INC_Y
|
||||
sta LCD_MODE
|
||||
|
||||
ldx #3
|
||||
ldy #32
|
||||
lda irq_count
|
||||
jsr printhex
|
||||
|
||||
lda cursor
|
||||
ldy #0
|
||||
cmp #20
|
||||
bcc firstline
|
||||
sec
|
||||
sbc #20
|
||||
ldy #24
|
||||
firstline:
|
||||
sta LCD_X
|
||||
sty LCD_Y
|
||||
lda #' '
|
||||
jsr printsign
|
||||
norclearcursor:
|
||||
|
||||
jsr inputs
|
||||
|
||||
lda irq_count
|
||||
and #8
|
||||
bne nocursor
|
||||
lda cursor
|
||||
ldy #0
|
||||
cmp #20
|
||||
bcc firstline2
|
||||
sec
|
||||
sbc #20
|
||||
ldy #24
|
||||
firstline2:
|
||||
sta LCD_X
|
||||
sty LCD_Y
|
||||
lda #'x'
|
||||
jsr printsign
|
||||
nocursor:
|
||||
|
||||
lda #LCD_MODE_INC_Y
|
||||
sta LCD_MODE
|
||||
jsr printy
|
||||
jmp loop
|
||||
.endproc
|
||||
|
||||
.proc printy
|
||||
|
||||
ldy #0
|
||||
loop1:
|
||||
tya
|
||||
pha
|
||||
asl
|
||||
tax
|
||||
lda readaddr,y
|
||||
ldy #8
|
||||
jsr printhex
|
||||
pla
|
||||
tay
|
||||
iny
|
||||
cpy #10
|
||||
bne loop1
|
||||
|
||||
loop2:
|
||||
tya
|
||||
pha
|
||||
tya
|
||||
sec
|
||||
sbc #10
|
||||
asl
|
||||
tax
|
||||
lda readaddr,y
|
||||
ldy #16
|
||||
jsr printhex
|
||||
pla
|
||||
tay
|
||||
iny
|
||||
cpy #20
|
||||
bne loop2
|
||||
|
||||
ldx #0
|
||||
ldy #32
|
||||
lda nmi_count
|
||||
jsr printhex
|
||||
|
||||
rts
|
||||
.endproc
|
||||
|
||||
;-------------------------------------------------------------------------------
|
||||
|
||||
.proc inputs
|
||||
lda controlslast
|
||||
eor JOY_DATA
|
||||
and controlslast
|
||||
eor #$ff
|
||||
sta controlsedge
|
||||
and #JOY_DATA_UP
|
||||
bne notup
|
||||
|
||||
lda cursor
|
||||
lsr
|
||||
tay
|
||||
bcs uplow
|
||||
lda readaddr,y
|
||||
clc
|
||||
adc #$10
|
||||
sta readaddr,y
|
||||
jmp notup
|
||||
uplow:
|
||||
lda readaddr,y
|
||||
clc
|
||||
adc #1
|
||||
sta readaddr,y
|
||||
notup:
|
||||
lda controlsedge
|
||||
and #JOY_DATA_DOWN
|
||||
bne notdown
|
||||
lda cursor
|
||||
lsr
|
||||
tay
|
||||
bcs downlow
|
||||
lda readaddr,y
|
||||
sec
|
||||
sbc #$10
|
||||
sta readaddr,y
|
||||
jmp notdown
|
||||
downlow:
|
||||
lda readaddr,y
|
||||
sec
|
||||
sbc #1
|
||||
sta readaddr,y
|
||||
notdown:
|
||||
lda controlsedge
|
||||
and #JOY_DATA_LEFT
|
||||
bne notleft
|
||||
lda cursor
|
||||
beq notleft
|
||||
dec cursor
|
||||
notleft:
|
||||
lda controlsedge
|
||||
and #JOY_DATA_RIGHT
|
||||
bne notright
|
||||
lda cursor
|
||||
cmp #40
|
||||
beq notright
|
||||
inc cursor
|
||||
notright:
|
||||
lda controlsedge
|
||||
and #JOY_DATA_START
|
||||
bne notstart
|
||||
lda #0
|
||||
sta AUDIO_BASE
|
||||
sta AUDIO_BASE+1
|
||||
sta AUDIO_BASE+2
|
||||
sta AUDIO_BASE+3
|
||||
sta AUDIO_BASE+4
|
||||
sta AUDIO_BASE+5
|
||||
sta AUDIO_BASE+6
|
||||
sta AUDIO_BASE+8
|
||||
sta AUDIO_BASE+9
|
||||
sta AUDIO_BASE+10
|
||||
sta AUDIO_BASE+11
|
||||
sta AUDIO_BASE+12
|
||||
sta AUDIO_BASE+13
|
||||
sta AUDIO_BASE+7
|
||||
notstart:
|
||||
lda controlsedge
|
||||
and #JOY_DATA_SELECT
|
||||
bne notselect
|
||||
|
||||
lda editbuffer1
|
||||
sta AUDIO_BASE
|
||||
lda editbuffer1+1
|
||||
sta AUDIO_BASE+1
|
||||
lda editbuffer1+2
|
||||
sta AUDIO_BASE+2
|
||||
lda editbuffer1+3
|
||||
sta AUDIO_BASE+3
|
||||
lda editbuffer1+4
|
||||
sta AUDIO_BASE+4
|
||||
lda editbuffer1+5
|
||||
sta AUDIO_BASE+5
|
||||
lda editbuffer1+6
|
||||
sta AUDIO_BASE+6
|
||||
lda editbuffer2
|
||||
sta AUDIO_BASE+8
|
||||
lda editbuffer2+1
|
||||
sta AUDIO_BASE+9
|
||||
lda editbuffer2+2
|
||||
sta AUDIO_BASE+10
|
||||
lda editbuffer2+3
|
||||
sta AUDIO_BASE+11
|
||||
lda editbuffer2+4
|
||||
sta AUDIO_BASE+12
|
||||
lda editbuffer2+5
|
||||
sta AUDIO_BASE+13
|
||||
lda editbuffer1+7
|
||||
sta AUDIO_BASE+7
|
||||
notselect:
|
||||
lda controlsedge
|
||||
and #JOY_DATA_FIRE_A
|
||||
bne notbuttona
|
||||
ldy #0
|
||||
ldy #0
|
||||
writea:
|
||||
lda editbuffer1,y
|
||||
sta (writeaddr),y
|
||||
iny
|
||||
cpy #8
|
||||
bne writea
|
||||
writeb:
|
||||
lda editbuffer2-8,y
|
||||
sta (writeaddr),y
|
||||
iny
|
||||
cpy #16
|
||||
bne writeb
|
||||
notbuttona:
|
||||
lda controlsedge
|
||||
and #JOY_DATA_FIRE_B
|
||||
bne notbuttonb
|
||||
ldy #0
|
||||
reada:
|
||||
lda (readaddr),y
|
||||
sta editbuffer1,y
|
||||
iny
|
||||
cpy #8
|
||||
bne reada
|
||||
|
||||
readb: lda (readaddr),y
|
||||
sta editbuffer2-8,y
|
||||
iny
|
||||
cpy #16
|
||||
bne readb
|
||||
notbuttonb:
|
||||
lda JOY_DATA
|
||||
sta controlslast
|
||||
rts
|
||||
.endproc
|
||||
|
||||
;-------------------------------------------------------------------------------
|
||||
|
||||
.proc printstring
|
||||
sta psa
|
||||
stx psa+1
|
||||
ldx #0
|
||||
stx psx
|
||||
sty psy
|
||||
printstring2:
|
||||
ldy #0
|
||||
lda (psa),y
|
||||
beq printstring1
|
||||
ldx psx
|
||||
stx LCD_X
|
||||
ldy psy
|
||||
sty LCD_Y
|
||||
jsr printsign
|
||||
inc psx
|
||||
lda psa
|
||||
clc
|
||||
adc #1
|
||||
sta psa
|
||||
lda psa+1
|
||||
adc #0
|
||||
sta psa+1
|
||||
jmp printstring2
|
||||
printstring1:
|
||||
rts
|
||||
.endproc
|
||||
|
||||
.proc printstringy
|
||||
sta psa
|
||||
stx psa+1
|
||||
printstring2:
|
||||
ldy #0
|
||||
lda (psa),y
|
||||
beq printstring1
|
||||
jsr printsign
|
||||
lda psa
|
||||
clc
|
||||
adc #1
|
||||
sta psa
|
||||
lda psa+1
|
||||
adc #0
|
||||
sta psa+1
|
||||
jmp printstring2
|
||||
printstring1:
|
||||
rts
|
||||
.endproc
|
||||
|
||||
|
||||
.proc printhex
|
||||
pha
|
||||
lsr
|
||||
lsr
|
||||
lsr
|
||||
lsr
|
||||
and #$0f
|
||||
stx temp_x
|
||||
tax
|
||||
lda hex2asc,x
|
||||
ldx temp_x
|
||||
stx LCD_X
|
||||
sty LCD_Y
|
||||
jsr printsign
|
||||
pla
|
||||
and #$0f
|
||||
inx
|
||||
stx temp_x
|
||||
tax
|
||||
lda hex2asc,x
|
||||
ldx temp_x
|
||||
stx LCD_X
|
||||
sty LCD_Y
|
||||
jmp printsign
|
||||
.endproc
|
||||
|
||||
.proc printsign
|
||||
sty temp_y
|
||||
stx temp_x
|
||||
sta temp_a
|
||||
lda temp_a
|
||||
sta addr
|
||||
lda #0
|
||||
sta addr+1
|
||||
asl addr
|
||||
rol addr+1
|
||||
asl addr
|
||||
rol addr+1
|
||||
asl addr
|
||||
rol addr+1
|
||||
lda addr
|
||||
clc
|
||||
adc #<chars
|
||||
sta addr
|
||||
lda addr+1
|
||||
adc #>chars
|
||||
sta addr+1
|
||||
ldx #8
|
||||
ldy #0
|
||||
printsign1:
|
||||
lda (addr),y
|
||||
sta LCD_DATA
|
||||
iny
|
||||
dex
|
||||
bne printsign1
|
||||
ldx temp_x
|
||||
ldy temp_y
|
||||
rts
|
||||
.endproc
|
||||
BIN
testcode/lib/gamate/cga2.chr
Normal file
BIN
testcode/lib/gamate/cga2.chr
Normal file
Binary file not shown.
52
testcode/lib/gamate/ctest.c
Normal file
52
testcode/lib/gamate/ctest.c
Normal file
@@ -0,0 +1,52 @@
|
||||
|
||||
#include <gamate.h>
|
||||
#include <time.h>
|
||||
#include <conio.h>
|
||||
|
||||
unsigned char y = 0;
|
||||
unsigned char x = 0;
|
||||
unsigned short n;
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
clrscr();
|
||||
gotoxy(0,0);cputs("Gamate C-Test");
|
||||
|
||||
textcolor(0);gotoxy(0,5);cputs("abcdABCD 0");
|
||||
textcolor(1);gotoxy(0,6);cputs("abcdABCD 1");
|
||||
textcolor(2);gotoxy(0,7);cputs("abcdABCD 2");
|
||||
textcolor(3);gotoxy(0,8);cputs("abcdABCD 3");
|
||||
|
||||
while(1) {
|
||||
textcolor(COLOR_BLACK);
|
||||
|
||||
n = clock();
|
||||
|
||||
gotoxy(0,2);cprintf("%04x %02x %02x %02x", n, x, y, *((unsigned char*)JOY_DATA));
|
||||
|
||||
switch((*((unsigned char*)JOY_DATA))) {
|
||||
case 0xff ^ JOY_DATA_UP:
|
||||
++y; if (y == 0xc8) y = 0;
|
||||
break;
|
||||
case 0xff ^ JOY_DATA_DOWN:
|
||||
--y; if (y == 0xff) y = 0xc7;
|
||||
break;
|
||||
case 0xff ^ JOY_DATA_LEFT:
|
||||
++x;
|
||||
break;
|
||||
case 0xff ^ JOY_DATA_RIGHT:
|
||||
--x;
|
||||
break;
|
||||
case 0xff ^ JOY_DATA_FIRE_A:
|
||||
break;
|
||||
}
|
||||
|
||||
waitvblank();
|
||||
|
||||
(*((unsigned char*)LCD_XPOS)) = x;
|
||||
(*((unsigned char*)LCD_YPOS)) = y;
|
||||
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
422
testcode/lib/gamate/lcdtest.s
Normal file
422
testcode/lib/gamate/lcdtest.s
Normal file
@@ -0,0 +1,422 @@
|
||||
;
|
||||
; original lcdtest.s by PeT (mess@utanet.at)
|
||||
;
|
||||
; cl65 -t gamate -o lcdtest.bin lcdtest.s
|
||||
;
|
||||
|
||||
.include "gamate.inc"
|
||||
|
||||
.zeropage
|
||||
addr: .word 0
|
||||
psa: .word 0
|
||||
|
||||
.bss
|
||||
temp_x: .byte 0
|
||||
temp_y: .byte 0
|
||||
temp_a: .byte 0
|
||||
irq_count: .byte 0
|
||||
nmi_count: .byte 0
|
||||
psx: .byte 0
|
||||
psy: .byte 0
|
||||
count: .word 0
|
||||
counted: .word 0
|
||||
xpos: .byte 0
|
||||
ypos: .byte 0
|
||||
|
||||
.rodata
|
||||
|
||||
chars: .incbin "cga2.chr"
|
||||
|
||||
hex2asc: .byte "0123456789abcdef"
|
||||
format: .byte "IrqNmiCountXposYpos", 0
|
||||
xdesc: .byte "0123456789abcdefghijklmnopqrstuv", 0
|
||||
ydesc: .byte "0123456789ABCDEFGHIJKLMNOPQRSTUV", 0
|
||||
|
||||
.code
|
||||
|
||||
;-------------------------------------------------------------------------------
|
||||
.export IRQStub, NMIStub
|
||||
|
||||
|
||||
.proc NMIStub
|
||||
|
||||
inc nmi_count
|
||||
rts
|
||||
.endproc
|
||||
|
||||
.proc IRQStub
|
||||
|
||||
inc irq_count
|
||||
lda count
|
||||
sta counted
|
||||
lda count+1
|
||||
sta counted+1
|
||||
lda #0
|
||||
sta count
|
||||
sta count+1
|
||||
rts
|
||||
.endproc
|
||||
|
||||
;-------------------------------------------------------------------------------
|
||||
.export Start
|
||||
|
||||
.proc Start
|
||||
sei
|
||||
lda #0
|
||||
sta ZP_IRQ_CTRL
|
||||
|
||||
lda #0
|
||||
sta LCD_XPOS
|
||||
sta LCD_YPOS
|
||||
cli
|
||||
lda #LCD_MODE_INC_Y
|
||||
sta LCD_MODE
|
||||
|
||||
lda #0
|
||||
sta LCD_X
|
||||
lda #<xdesc
|
||||
ldx #>xdesc
|
||||
ldy #0
|
||||
jsr printstring
|
||||
|
||||
lda #LCD_XPOS_PLANE2
|
||||
sta LCD_X
|
||||
lda #<xdesc
|
||||
ldx #>xdesc
|
||||
ldy #128
|
||||
jsr printstring
|
||||
|
||||
lda #0
|
||||
sta LCD_X
|
||||
lda #<ydesc
|
||||
ldx #>ydesc
|
||||
ldy #0
|
||||
sty LCD_Y
|
||||
jsr printstringy
|
||||
|
||||
lda #(LCD_XPOS_PLANE2|(128/8)) ; ???
|
||||
sta LCD_X
|
||||
lda #<ydesc
|
||||
ldx #>ydesc
|
||||
ldy #0
|
||||
sty LCD_Y
|
||||
jsr printstringy
|
||||
|
||||
lda #<format
|
||||
ldx #>format
|
||||
ldy #8
|
||||
jsr printstring
|
||||
|
||||
lda #0
|
||||
sta LCD_MODE
|
||||
lda #24/8
|
||||
sta LCD_X
|
||||
lda #24
|
||||
sta LCD_Y
|
||||
lda #'X'
|
||||
jsr printsign
|
||||
|
||||
lda #$80
|
||||
sta LCD_MODE
|
||||
lda #32/8
|
||||
sta LCD_X
|
||||
lda #32
|
||||
sta LCD_Y
|
||||
lda #'Y'
|
||||
jsr printsign
|
||||
|
||||
lda #$c0
|
||||
sta LCD_MODE
|
||||
lda #40/8
|
||||
sta LCD_X
|
||||
lda #40
|
||||
sta LCD_Y
|
||||
lda #'Z'
|
||||
jsr printsign
|
||||
|
||||
lda #0
|
||||
sta LCD_MODE
|
||||
lda #LCD_XPOS_PLANE2|(48/8)
|
||||
sta LCD_X
|
||||
lda #48
|
||||
sta LCD_Y
|
||||
lda #'x'
|
||||
jsr printsign
|
||||
|
||||
lda #$80
|
||||
sta LCD_MODE
|
||||
lda #(LCD_XPOS_PLANE2|(56/8))
|
||||
sta LCD_X
|
||||
lda #56
|
||||
sta LCD_Y
|
||||
lda #'y'
|
||||
jsr printsign
|
||||
|
||||
lda #$c0
|
||||
sta LCD_MODE
|
||||
lda #(LCD_XPOS_PLANE2|(64/8))
|
||||
sta LCD_X
|
||||
lda #64
|
||||
sta LCD_Y
|
||||
lda #'z'
|
||||
jsr printsign
|
||||
|
||||
lda #LCD_MODE_INC_Y|1
|
||||
sta LCD_MODE
|
||||
lda #16/8
|
||||
sta LCD_X
|
||||
lda #72
|
||||
sta LCD_Y
|
||||
lda #'V'
|
||||
jsr printsign
|
||||
|
||||
lda #LCD_MODE_INC_Y|2
|
||||
sta LCD_MODE
|
||||
lda #24/8
|
||||
sta LCD_X
|
||||
lda #72
|
||||
sta LCD_Y
|
||||
lda #'V'
|
||||
jsr printsign
|
||||
|
||||
lda #LCD_MODE_INC_Y|4
|
||||
sta LCD_MODE
|
||||
lda #32/8
|
||||
sta LCD_X
|
||||
lda #72
|
||||
sta LCD_Y
|
||||
lda #'V'
|
||||
jsr printsign
|
||||
|
||||
lda #LCD_MODE_INC_Y|8
|
||||
sta LCD_MODE
|
||||
lda #40/8
|
||||
sta LCD_X
|
||||
lda #72
|
||||
sta LCD_Y
|
||||
lda #'V'
|
||||
jsr printsign
|
||||
|
||||
lda #1
|
||||
sta ZP_IRQ_CTRL
|
||||
|
||||
loop:
|
||||
lda count
|
||||
clc
|
||||
adc #1
|
||||
sta count
|
||||
lda count+1
|
||||
adc #0
|
||||
sta count+1
|
||||
|
||||
lda irq_count
|
||||
cmp irq_count
|
||||
beq loop
|
||||
|
||||
jsr inputs
|
||||
|
||||
lda #LCD_MODE_INC_Y
|
||||
sta LCD_MODE
|
||||
jsr printy
|
||||
|
||||
jmp loop
|
||||
.endproc
|
||||
|
||||
|
||||
;-------------------------------------------------------------------------------
|
||||
|
||||
.proc printy
|
||||
ldx #0
|
||||
ldy #16
|
||||
lda irq_count
|
||||
jsr printhex
|
||||
|
||||
ldx #3
|
||||
ldy #16
|
||||
lda nmi_count
|
||||
jsr printhex
|
||||
|
||||
ldx #6
|
||||
ldy #16
|
||||
lda counted+1
|
||||
jsr printhex
|
||||
ldx #8
|
||||
ldy #16
|
||||
lda counted
|
||||
jsr printhex
|
||||
|
||||
ldx #11
|
||||
ldy #16
|
||||
lda xpos
|
||||
jsr printhex
|
||||
ldx #14
|
||||
ldy #16
|
||||
lda ypos
|
||||
jsr printhex
|
||||
rts
|
||||
.endproc
|
||||
|
||||
.proc inputs
|
||||
lda JOY_DATA
|
||||
and #JOY_DATA_UP
|
||||
bne notup
|
||||
dec ypos
|
||||
lda ypos
|
||||
sta LCD_YPOS
|
||||
notup:
|
||||
lda JOY_DATA
|
||||
and #JOY_DATA_DOWN
|
||||
bne notdown
|
||||
inc ypos
|
||||
lda ypos
|
||||
sta LCD_YPOS
|
||||
notdown:
|
||||
lda JOY_DATA
|
||||
and #JOY_DATA_LEFT
|
||||
bne notleft
|
||||
dec xpos
|
||||
lda xpos
|
||||
sta LCD_XPOS
|
||||
notleft:
|
||||
lda JOY_DATA
|
||||
and #JOY_DATA_RIGHT
|
||||
bne notright
|
||||
inc xpos
|
||||
lda xpos
|
||||
sta LCD_XPOS
|
||||
notright:
|
||||
lda JOY_DATA
|
||||
and #JOY_DATA_START
|
||||
bne notstart
|
||||
notstart:
|
||||
lda JOY_DATA
|
||||
and #JOY_DATA_SELECT
|
||||
bne notselect
|
||||
notselect:
|
||||
lda JOY_DATA
|
||||
and #JOY_DATA_FIRE_A
|
||||
bne notbuttona
|
||||
notbuttona:
|
||||
lda JOY_DATA
|
||||
and #JOY_DATA_FIRE_B
|
||||
bne notbuttonb
|
||||
notbuttonb:
|
||||
rts
|
||||
.endproc
|
||||
|
||||
;-------------------------------------------------------------------------------
|
||||
|
||||
.proc printstring
|
||||
sta psa
|
||||
stx psa+1
|
||||
ldx #0
|
||||
stx psx
|
||||
sty psy
|
||||
printstring2:
|
||||
ldy #0
|
||||
lda (psa),y
|
||||
beq printstring1
|
||||
ldx psx
|
||||
stx LCD_X
|
||||
ldy psy
|
||||
sty LCD_Y
|
||||
jsr printsign
|
||||
inc psx
|
||||
lda psa
|
||||
clc
|
||||
adc #1
|
||||
sta psa
|
||||
lda psa+1
|
||||
adc #0
|
||||
sta psa+1
|
||||
jmp printstring2
|
||||
printstring1:
|
||||
rts
|
||||
.endproc
|
||||
|
||||
.proc printstringy
|
||||
sta psa
|
||||
stx psa+1
|
||||
printstring2:
|
||||
ldy #0
|
||||
lda (psa),y
|
||||
beq printstring1
|
||||
jsr printsign
|
||||
lda psa
|
||||
clc
|
||||
adc #1
|
||||
sta psa
|
||||
lda psa+1
|
||||
adc #0
|
||||
sta psa+1
|
||||
jmp printstring2
|
||||
printstring1:
|
||||
rts
|
||||
.endproc
|
||||
|
||||
|
||||
.proc printhex
|
||||
pha
|
||||
lsr
|
||||
lsr
|
||||
lsr
|
||||
lsr
|
||||
and #$0f
|
||||
stx temp_x
|
||||
tax
|
||||
lda hex2asc,x
|
||||
ldx temp_x
|
||||
stx LCD_X
|
||||
sty LCD_Y
|
||||
jsr printsign
|
||||
pla
|
||||
and #$0f
|
||||
inx
|
||||
stx temp_x
|
||||
tax
|
||||
lda hex2asc,x
|
||||
ldx temp_x
|
||||
stx LCD_X
|
||||
sty LCD_Y
|
||||
jmp printsign
|
||||
.endproc
|
||||
|
||||
.proc printsign
|
||||
sty temp_y
|
||||
stx temp_x
|
||||
sta temp_a
|
||||
|
||||
lda temp_a
|
||||
sta addr
|
||||
|
||||
lda #0
|
||||
sta addr+1
|
||||
asl addr
|
||||
rol addr+1
|
||||
asl addr
|
||||
rol addr+1
|
||||
asl addr
|
||||
rol addr+1
|
||||
|
||||
lda addr
|
||||
clc
|
||||
adc #<chars
|
||||
sta addr
|
||||
lda addr+1
|
||||
adc #>chars
|
||||
sta addr+1
|
||||
|
||||
ldx #8
|
||||
ldy #0
|
||||
printsign1:
|
||||
lda (addr),y
|
||||
sta LCD_DATA
|
||||
iny
|
||||
dex
|
||||
bne printsign1
|
||||
|
||||
ldx temp_x
|
||||
ldy temp_y
|
||||
rts
|
||||
.endproc
|
||||
|
||||
1157
testcode/lib/gamate/nachtm.c
Normal file
1157
testcode/lib/gamate/nachtm.c
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user