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:
parent
1414411bba
commit
21ef6b8510
@ -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
|
||||
|
@ -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 */
|
||||
|
@ -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
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
@ -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(;;);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user