1
0
mirror of https://github.com/cc65/cc65.git synced 2024-12-27 00:29:31 +00:00

fixed screensize, timertick, revers mode

This commit is contained in:
mrdudz 2015-07-16 16:00:32 +02:00
parent 1414411bba
commit 21ef6b8510
8 changed files with 86 additions and 27 deletions

View File

@ -14,8 +14,7 @@ BGCOLOR = $38
tickcount = $39 ;4
screenrows = (224/8)
charsperline = (512/8)
xsize = charsperline
charsperline = 61
CH_HLINE = 7
CH_VLINE = 7

View File

@ -100,9 +100,8 @@ unsigned _clocks_per_sec (void);
# define CLK_TCK 50 /* POSIX */
# define CLOCKS_PER_SEC 50 /* ANSI */
#elif defined(__PCE__)
/* FIXME: we likely need to read it at runtime */
# define CLK_TCK 50 /* POSIX */
# define CLOCKS_PER_SEC 50 /* ANSI */
# define CLK_TCK 60 /* POSIX */
# define CLOCKS_PER_SEC 60 /* ANSI */
#elif defined(__GEOS__)
# define CLK_TCK 1 /* POSIX */
# define CLOCKS_PER_SEC 1 /* ANSI */

View File

@ -1,9 +1,10 @@
;
; Screen size variables
;
.include "pce.inc"
.export _screensize
_screensize:
.export screensize
screensize:
ldx xsize
ldy ysize
rts
@ -13,5 +14,5 @@ _screensize:
.rodata
.export xsize, ysize
xsize: .byte 64
ysize: .byte 28
xsize: .byte charsperline
ysize: .byte screenrows

View File

@ -51,7 +51,7 @@ set_palette:
;
;----------------------------------------------------------------------------
.importzp ptr1
.importzp ptr1, tmp1
conio_init:
; Load font
st0 #VDC_MAWR
@ -65,10 +65,35 @@ conio_init:
sta ptr1+1
st0 #VDC_VWR ; VWR
lda #0
sta tmp1
jsr copy
lda #<font
sta ptr1
lda #>font
sta ptr1+1
lda #$ff
sta tmp1
jsr copy
ldx #0
stx BGCOLOR
inx
stx CHARCOLOR
rts
copy:
ldy #$80 ; 128 chars
charloop: ldx #$08 ; 8 bytes/char
lineloop:
lda (ptr1)
eor tmp1
sta a:VDC_DATA_LO ; bitplane 0
stz a:VDC_DATA_HI ; bitplane 1
@ -89,12 +114,6 @@ fillloop: st1 #$00
dey
bne charloop ; next character
ldx #0
stx BGCOLOR
inx
stx CHARCOLOR
rts
.rodata

View File

@ -7,6 +7,7 @@
.export newline, plot
.import popa, _gotoxy
.import PLOT
.import xsize
.importzp tmp3,tmp4
@ -38,7 +39,7 @@ cputdirect:
advance:
ldy CURS_X
iny
cpy #xsize
cpy xsize
bne L3
jsr newline ; new line
ldy #0 ; + cr

View File

@ -6,16 +6,11 @@ joystick support should get verified on real hw
- the masks for buttons may be wrong.
- 6 button gamepads are different and need slightly different code
revers() is a dummy function, actual reverse output is not supported yet
some graphical petscii chars should get added to the charset
interruptor support in crt0 (and cfg) is missing
- clock() should be hooked to a VBL interrupt
conio lacks support for different screen sizes, which could be used with
different video modes
--------------------------------------------------------------------------------
a good emulator to use for PC-Engine is "mednafen" (mednafen.sourceforge.net)

View File

@ -1,10 +1,24 @@
; FIXME: actual revers output is not supported yet
.include "pce.inc"
.export _revers
_revers:
lda #0
rts
.export _revers
.proc _revers
ldx #$00 ; Assume revers off
tay ; Test onoff
beq L1 ; Jump if off
ldx #$80 ; Load on value
ldy #$00 ; Assume old value is zero
L1: lda RVS ; Load old value
stx RVS ; Set new value
beq L2 ; Jump if old value zero
iny ; Make old value = 1
L2: ldx #$00 ; Load high byte of result
tya ; Load low byte, set CC
rts
.endproc
;-------------------------------------------------------------------------------
; force the init constructor to be imported

View File

@ -13,10 +13,12 @@ void main(void)
int i, j;
clock_t clk;
char *p;
unsigned char xsize, ysize, n;
joy_install(&joy_static_stddrv);
clrscr();
screensize(&xsize, &ysize);
cputs("hello world");
cputsxy(0, 2, "colors:" );
@ -43,6 +45,25 @@ void main(void)
);
}
gotoxy(0,ysize - 1);
for (i = 0; i < xsize; ++i) {
cputc('0' + i % 10);
}
gotoxy(0,ysize - 2 - ((256 + xsize) / xsize));
for (i = 0; i < xsize; ++i) {
cputc('0' + i % 10);
}
for (i = 0; i < (xsize * 5); ++i) {
cputc('#');
}
gotoxy(0,ysize - 1 - ((256 + xsize) / xsize));
for (i = 0; i < 256; ++i) {
if ((i != '\n') && (i != '\r')) {
cputc(i);
}
}
i = get_tv();
gotoxy(30,0);
cputs("TV Mode: ");
@ -57,6 +78,7 @@ void main(void)
cputs("OTHER");
break;
}
cprintf(" %dx%d", xsize, ysize);
for(;;) {
gotoxy(13,4);
@ -82,7 +104,16 @@ void main(void)
(j & joy_masks[JOY_FIRE])? " fire " : " ---- ",
(j & joy_masks[JOY_FIRE2])? "fire2 " : " ---- ");
}
gotoxy(xsize - 10, 3);
j = (n >> 5) & 1;
revers(j);
cputc(j ? 'R' : ' ');
cputs(" revers");
revers(0);
waitvblank();
++n;
}
for(;;);
}