]> git.sur5r.net Git - cc65/commitdiff
fixed screensize, timertick, revers mode
authormrdudz <mrdudz@users.noreply.github.com>
Thu, 16 Jul 2015 14:00:32 +0000 (16:00 +0200)
committermrdudz <mrdudz@users.noreply.github.com>
Thu, 16 Jul 2015 14:00:32 +0000 (16:00 +0200)
asminc/pce.inc
include/time.h
libsrc/pce/_scrsize.s [new file with mode: 0644]
libsrc/pce/conio.s
libsrc/pce/cputc.s
libsrc/pce/readme.txt
libsrc/pce/revers.s
libsrc/pce/scrsize.s [deleted file]
testcode/lib/pce/conio.c

index 98364815b93b9edac98165f2aea426c0818d474d..851b2f32a44df70d30157c289e89277d3104037c 100644 (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
index 8fc7872286e18a7c925d4045869e3eb891515ed9..12f130f5235b4add8bc9752676f9811d6216d4cb 100644 (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 */
diff --git a/libsrc/pce/_scrsize.s b/libsrc/pce/_scrsize.s
new file mode 100644 (file)
index 0000000..8dab2cf
--- /dev/null
@@ -0,0 +1,18 @@
+;
+; Screen size variables
+;
+                .include "pce.inc"
+
+                .export screensize
+screensize:
+                ldx     xsize
+                ldy     ysize
+                rts
+
+; FIXME: changing the video mode allows for different screen sizes
+
+.rodata
+                .export xsize, ysize
+
+xsize:          .byte charsperline
+ysize:          .byte screenrows
index a8a9da244338ee82f30bb6cd30f88d5e0432a9ec..4fb3b1394e7715d33a2acf2f667c557ad8ab9551 100644 (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
index e2e345ac2c5aeb5c47eb048fed018fb1bcfd7a8f..918f39e296f8b8e33fe8c2bb3b94fb7d897b84d6 100644 (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
index b201893d12d98bdee30f3ab16528849a3777de03..7dd857f21008f66199efa775fef7864b5e52fb03 100644 (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)
index d3e6f893096f3d171bcb8086178e172875a201b8..061023d092106fb8e277ad1cf02219214d54979d 100644 (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
diff --git a/libsrc/pce/scrsize.s b/libsrc/pce/scrsize.s
deleted file mode 100644 (file)
index 254676a..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-;
-; Screen size variables
-;
-
-                .export _screensize
-_screensize:
-                ldx     xsize
-                ldy     ysize
-                rts
-
-; FIXME: changing the video mode allows for different screen sizes
-
-.rodata
-                .export xsize, ysize
-
-xsize:          .byte 64
-ysize:          .byte 28
index 92431d14225ed28368e8c37bbba31b5e504d53e3..b94c918777448b142670bb26e97e85d36e311a26 100644 (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(;;);
 }