2009-11-10 21:53:55 +00:00
|
|
|
;
|
|
|
|
; Graphics driver for the 160x96x4 (CIO mode 7, ANTIC mode D) on the Atari.
|
|
|
|
;
|
|
|
|
; Fatih Aygun (2009)
|
|
|
|
;
|
|
|
|
|
|
|
|
.include "atari.inc"
|
|
|
|
.include "zeropage.inc"
|
|
|
|
|
|
|
|
.include "tgi-kernel.inc"
|
|
|
|
.include "tgi-error.inc"
|
|
|
|
|
|
|
|
.macpack generic
|
|
|
|
|
|
|
|
; ******************************************************************************
|
|
|
|
|
|
|
|
; ----------------------------------------------------------------------
|
|
|
|
;
|
|
|
|
; Constants and tables
|
|
|
|
;
|
|
|
|
; ----------------------------------------------------------------------
|
|
|
|
|
|
|
|
; Graphics mode
|
2009-11-15 14:46:09 +00:00
|
|
|
grmode = 7
|
2009-11-10 21:53:55 +00:00
|
|
|
; X resolution
|
2009-11-15 14:46:09 +00:00
|
|
|
x_res = 160
|
2009-11-10 21:53:55 +00:00
|
|
|
; Y resolution
|
2009-11-15 14:46:09 +00:00
|
|
|
y_res = 96
|
2009-11-10 21:53:55 +00:00
|
|
|
; Number of colors
|
2009-11-15 14:46:09 +00:00
|
|
|
colors = 4
|
2009-11-10 21:53:55 +00:00
|
|
|
; Pixels per byte
|
2009-11-15 14:46:09 +00:00
|
|
|
ppb = 4
|
2009-11-10 21:53:55 +00:00
|
|
|
; Screen memory size in bytes
|
2009-11-15 14:46:09 +00:00
|
|
|
scrsize = x_res * y_res / ppb
|
2009-11-10 21:53:55 +00:00
|
|
|
; Pixel aspect ratio
|
2011-04-30 12:46:03 +00:00
|
|
|
aspect = $00CC ; based on 4/3 display
|
2009-11-10 21:53:55 +00:00
|
|
|
; Free memory needed
|
2009-11-15 14:46:09 +00:00
|
|
|
mem_needed = 3209
|
2009-11-10 21:53:55 +00:00
|
|
|
; Number of screen pages
|
2009-11-15 14:46:09 +00:00
|
|
|
pages = 1
|
2009-11-10 21:53:55 +00:00
|
|
|
|
|
|
|
.rodata
|
|
|
|
mask_table: ; Mask table to set pixels
|
|
|
|
.byte %11000000, %00110000, %00001100, %00000011
|
|
|
|
masks: ; Color masks
|
|
|
|
.byte %00000000, %01010101, %10101010, %11111111
|
|
|
|
bar_table: ; Mask table for BAR
|
|
|
|
.byte %11111111, %00111111, %00001111, %00000011, %00000000
|
|
|
|
default_palette:
|
|
|
|
.byte $00, $0E, $32, $96
|
|
|
|
|
|
|
|
.code
|
|
|
|
|
|
|
|
; ******************************************************************************
|
|
|
|
|
|
|
|
.proc SETPALETTE
|
|
|
|
|
|
|
|
; ----------------------------------------------------------------------
|
|
|
|
;
|
|
|
|
; SETPALETTE: Set the palette (in ptr1)
|
|
|
|
;
|
|
|
|
; ----------------------------------------------------------------------
|
|
|
|
|
|
|
|
.code
|
|
|
|
; Copy the palette
|
|
|
|
ldy #colors - 1
|
|
|
|
loop: lda (ptr1),y
|
|
|
|
sta palette,y
|
|
|
|
dey
|
|
|
|
bpl loop
|
|
|
|
|
|
|
|
; Get the color entries from the palette
|
|
|
|
lda palette
|
|
|
|
sta COLOR4
|
|
|
|
lda palette + 1
|
|
|
|
sta COLOR0
|
|
|
|
lda palette + 2
|
|
|
|
sta COLOR1
|
|
|
|
lda palette + 3
|
|
|
|
sta COLOR2
|
|
|
|
|
|
|
|
; Done, reset the error code
|
|
|
|
lda #TGI_ERR_OK
|
|
|
|
sta error
|
|
|
|
rts
|
|
|
|
.endproc
|
|
|
|
|
|
|
|
.include "atari_tgi_common.inc"
|