1
0
mirror of https://github.com/cc65/cc65.git synced 2024-12-25 02:29:52 +00:00

new TGI driver for interlaced VDC 640x480 mode

git-svn-id: svn://svn.cc65.org/cc65/trunk@1830 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
izydorst 2002-12-23 14:15:46 +00:00
parent e2e2b02c3d
commit 578443610d
7 changed files with 1302 additions and 15 deletions

View File

@ -37,6 +37,7 @@
TGI_MODE_320_200_2 = 1 ; 320x200, 2 colors (b/w)
TGI_MODE_160_200_4 = 2 ; 160x200, 4 colors
TGI_MODE_640_200_2 = 3 ; 640x200, 2 colors (b/w)
TGI_MODE_640_480_2 = 4 ; 640x480, 2 colors (b/w)

View File

@ -48,6 +48,7 @@
#define TGI_MODE_320_200_2 1U /* 320x200, 2 colors (b/w) */
#define TGI_MODE_160_200_4 2U /* 160x200, 4 colors */
#define TGI_MODE_640_200_2 3U /* 640x200, 2 colors (b/w) */
#define TGI_MODE_640_480_2 4U /* 640x480, 2 colors (b/w) */

View File

@ -145,6 +145,7 @@ c128lib:
cp c128/*.emd .
cp c128/*.joy .
cp c128/c128-640-200-2.tgi c128-vdc.tgi
cp c128/c128-640-480-2.tgi c128-vdc2.tgi
#-----------------------------------------------------------------------------
# Commdore P500 / CBM 5x0

View File

@ -51,7 +51,7 @@ EMDS = c128-georam.emd c128-ram.emd c128-ramcart.emd c128-reu.emd c128-vdc.emd
JOYS = c128-stdjoy.joy
TGIS = c128-640-200-2.tgi
TGIS = c128-640-200-2.tgi c128-640-480-2.tgi
#--------------------------------------------------------------------------
# Targets

View File

@ -1,17 +1,14 @@
;
; Graphics driver for the 640x200x2 mode on the C128 VDC
; Maciej 'YTM/Elysium' Witkowiak <ytm@friko.onet.pl>
; 22.12.2002
; Maciej 'YTM/Elysium' Witkowiak <ytm@elysium.pl>
; 23.12.2002
;
; NOTES:
; On the real machine there are some additional pixels appearing (probably bad reads)
; VICE emulator does not show them. Needs further investigation.
;
; Only DONE routine contains C128-mode specific stuff, everything else will work in
; C64-mode of C128.
;
; All Y-axis calculations are 16-bit, so this driver will support 640x400 (interlaced)
; mode only with gfx-mode initialization changed.
; (is the above true? I can't remember if interlace skips lines or takes them from two
; different places (same offset, different base))
; C64-mode of C128 (C64 needs full VDC init then).
;
; X-axis resolution can be changed by manipulating xres header field so
; any resolution 8..708 is possible only with gfx-mode initialization and CALC changed.
@ -428,7 +425,7 @@ SETDRAWPAGE:
ror
ror
sta SCRBASE
rts
rts
; ------------------------------------------------------------------------
; SETCOLOR: Set the drawing color (in A). The new color is already checked
@ -1142,13 +1139,10 @@ OUTTEXT:
rts
; ------------------------------------------------------------------------
; Calculate all variables to plot the pixel at X1/Y1. If the point is out
; of range, a carry is returned and INRANGE is set to a value !0 zero. If
; the coordinates are valid, INRANGE is zero and the carry clear.
; Calculate all variables to plot the pixel at X1/Y1.
;------------------------
;< X1,Y1 - pixel
;> ADDR - address of card, INRANGE
;> ADDR - address of card
;> X - bit number (X1 & 7)
CALC:
lda Y1+1
@ -1253,6 +1247,8 @@ VDCSetSourceAddr:
sta VDC_DATA_REG
dex
tya
@L1: bit VDC_ADDR_REG
bpl @L1
stx VDC_ADDR_REG
sta VDC_DATA_REG
rts

1287
libsrc/c128/c128-640-480-2.s Normal file

File diff suppressed because it is too large Load Diff

View File

@ -18,4 +18,5 @@
_tgi_mode_table:
.byte TGI_MODE_640_200_2, "c128-vdc.tgi", 0
.byte TGI_MODE_640_480_2, "c128-vdc2.tgi", 0
.byte 0 ; End marker