From d55fb5217e6ca56162a2b32c6af0c8feb02c6972 Mon Sep 17 00:00:00 2001 From: uz Date: Sun, 27 Sep 2009 18:45:08 +0000 Subject: [PATCH] Changed the solution for the PLOT problem with old -02 kernals to that used for the VIC20: PLOT is not an kernal entry but a library function that will do the right stuff. This makes it work with other stuff that calls PLOT, too. git-svn-id: svn://svn.cc65.org/cc65/trunk@4249 b7a2c559-68d2-44c3-8de9-860c34a00d81 --- libsrc/c64/Makefile | 1 + libsrc/c64/cputc.s | 12 ++---------- libsrc/c64/kernal.s | 2 -- libsrc/c64/kplot.s | 21 +++++++++++++++++++++ 4 files changed, 24 insertions(+), 12 deletions(-) create mode 100644 libsrc/c64/kplot.s diff --git a/libsrc/c64/Makefile b/libsrc/c64/Makefile index bfce3e8f9..eb0d41226 100644 --- a/libsrc/c64/Makefile +++ b/libsrc/c64/Makefile @@ -58,6 +58,7 @@ OBJS = _scrsize.o \ joy_stddrv.o \ kbhit.o \ kernal.o \ + kplot.o \ mainargs.o \ mcbdefault.o \ mouse_stddrv.o \ diff --git a/libsrc/c64/cputc.s b/libsrc/c64/cputc.s index 6df02b405..d5ba79ed7 100644 --- a/libsrc/c64/cputc.s +++ b/libsrc/c64/cputc.s @@ -84,20 +84,12 @@ L11: ora #$40 -; Set cursor position, calculate RAM pointers. Because kernal -02 doesn't -; update the color RAM pointer, we have to do that manually here. +; Set cursor position, calculate RAM pointers. plot: ldy CURS_X ldx CURS_Y clc - jsr PLOT ; Set the new cursor - lda SCREEN_PTR ; Low byte of color RAM ... - sta CRAM_PTR ; ... is same as text screen pointer - lda SCREEN_PTR+1 ; While high byte of color RAM - and #$03 - ora #$D8 ; ... needs to be adjusted - sta CRAM_PTR+1 - rts + jmp PLOT ; Set the new cursor diff --git a/libsrc/c64/kernal.s b/libsrc/c64/kernal.s index ac39779a3..22160c911 100644 --- a/libsrc/c64/kernal.s +++ b/libsrc/c64/kernal.s @@ -41,7 +41,6 @@ .export CLALL .export UDTIM .export SCREEN - .export PLOT .export IOBASE @@ -85,6 +84,5 @@ GETIN = $FFE4 CLALL = $FFE7 UDTIM = $FFEA SCREEN = $FFED -PLOT = $FFF0 IOBASE = $FFF3 diff --git a/libsrc/c64/kplot.s b/libsrc/c64/kplot.s new file mode 100644 index 000000000..2d60fd4a6 --- /dev/null +++ b/libsrc/c64/kplot.s @@ -0,0 +1,21 @@ +; +; Ullrich von Bassewitz, 2002-12-09, 2009-09-27 +; +; PLOT replacement function for the C64. The kernal function in the -02 kernals +; does not set the pointer to the color RAM correctly, so we need to fix that. +; + + .export PLOT + + +.proc PLOT + + bcs @L1 + jsr $FFF0 ; Set cursor position + jmp $EA24 ; Set pointer to color RAM + +@L1: jmp $FFF0 ; Get cursor position + +.endproc + + -- 2.39.5