From 39dd8d280506fbdbb6790e0b71f4ed977e0b605f Mon Sep 17 00:00:00 2001 From: chopps Date: Sun, 30 Jan 1994 08:25:02 +0000 Subject: [PATCH] Added PAL mode for A2024 monitor, cleaned A2024 code, added borderblank to all modes that support it. --- .../amiga/dev/grf/grf_cc/grf_cc_a2024_mode.c | 102 +++--- sys/arch/amiga/dev/grf/grf_cc/grf_cc_global.c | 76 +++- sys/arch/amiga/dev/grf/grf_cc/grf_cc_h_mode.c | 6 +- .../amiga/dev/grf/grf_cc/grf_cc_hdl_mode.c | 4 +- .../amiga/dev/grf/grf_cc/grf_cc_hl_mode.c | 4 +- sys/arch/amiga/dev/grf/grf_cc/grf_cc_mode.c | 7 +- .../dev/grf/grf_cc/grf_cc_pal_a2024_mode.c | 324 ++++++++++++++++++ .../amiga/dev/grf/grf_cc/grf_cc_ph_mode.c | 8 +- .../amiga/dev/grf/grf_cc/grf_cc_phdl_mode.c | 4 +- .../amiga/dev/grf/grf_cc/grf_cc_phl_mode.c | 8 +- sys/arch/amiga/dev/grf/grf_cc/grf_cc_priv.h | 11 +- 11 files changed, 470 insertions(+), 84 deletions(-) create mode 100644 sys/arch/amiga/dev/grf/grf_cc/grf_cc_pal_a2024_mode.c diff --git a/sys/arch/amiga/dev/grf/grf_cc/grf_cc_a2024_mode.c b/sys/arch/amiga/dev/grf/grf_cc/grf_cc_a2024_mode.c index 7b4323a71108..fc27b8647fcd 100644 --- a/sys/arch/amiga/dev/grf/grf_cc/grf_cc_a2024_mode.c +++ b/sys/arch/amiga/dev/grf/grf_cc/grf_cc_a2024_mode.c @@ -27,7 +27,7 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $Id: grf_cc_a2024_mode.c,v 1.2 1994/01/29 07:00:14 chopps Exp $ + * $Id: grf_cc_a2024_mode.c,v 1.3 1994/01/30 08:25:02 chopps Exp $ */ #if defined (GRF_A2024) @@ -156,15 +156,15 @@ display_a2024_view (view_t *v) u_byte **plane = inst_plane; u_long full_line = v->bitmap->bytes_per_row+v->bitmap->row_mod; u_long half_plane = full_line * v->bitmap->rows / 2; - + int line_mod = 0xbc; /* standard 2024 15khz mod. */ int depth = v->bitmap->depth, i, j; - + plane[0] = v->bitmap->plane[0]; if (depth == 2) { plane[1] = v->bitmap->plane[1]; } - + if (this_data->current_view) { VDATA(this_data->current_view)->flags &= ~VF_DISPLAY; /* mark as no longer displayed. */ } @@ -173,38 +173,25 @@ display_a2024_view (view_t *v) tmp = find_copper_inst (cp, CI_MOVE(R_COLOR1F)); tmp = find_copper_inst (tmp, CI_MOVE(R_BPLCON0)); /* grab third one. */ tmp->cp.inst.operand = this_data->bplcon0 | ((depth & 0x7) << 13); /* times 2 */ -#if 0 - /* change display wait if 2 bitplanes. */ - if (depth == 2) { - tmp = find_copper_inst (cp, CI_WAIT(0, 43)); - if (tmp) { - tmp->cp.inst.opcode = CI_WAIT (0,42); - } - } else { - /* XXX does same thing as above */ - tmp = find_copper_inst (cp, CI_WAIT(0, 43)); - if (tmp) { - tmp->cp.inst.opcode = CI_WAIT (0, 42); - } -#if 0 /* blows away the coplc data load :^) */ - if (depth == 1) { - tmp = find_copper_inst (cp, CI_MOVE(R_BPL2PTH)); - CWAIT (tmp, 255,255); - CWAIT (tmp, 255,255); - } -#endif - } - - /* set new modulos FIX: doesn't support larger bitmaps. */ - tmp = find_copper_inst (cp, CI_MOVE(R_BPLMOD1)); - tmp[0].cp.inst.operand = 0xbc + v->bitmap->row_mod; - tmp[1].cp.inst.operand = 0xbc + v->bitmap->row_mod; -#endif bcopy (this_data->frames[F_STORE_QUAD0], this_data->frames[F_STORE_QUAD1], std_a2024_copper_list_size); bcopy (this_data->frames[F_STORE_QUAD0], this_data->frames[F_STORE_QUAD2], std_a2024_copper_list_size); bcopy (this_data->frames[F_STORE_QUAD0], this_data->frames[F_STORE_QUAD3], std_a2024_copper_list_size); + /* + * Mark Id's + */ + tmp = find_copper_inst (this_data->frames[F_STORE_QUAD1], CI_WAIT (126,21)); + CBUMP(tmp); + CMOVE (tmp, R_COLOR01, QUAD1_ID); + tmp = find_copper_inst (this_data->frames[F_STORE_QUAD2], CI_WAIT (126,21)); + CBUMP(tmp); + CMOVE (tmp, R_COLOR01, QUAD2_ID); + tmp = find_copper_inst (this_data->frames[F_STORE_QUAD3], CI_WAIT (126,21)); + CBUMP(tmp); + CMOVE (tmp, R_COLOR01, QUAD3_ID); + + #define HALF_2024_LINE (512>>3) plane[0]--; @@ -229,6 +216,12 @@ display_a2024_view (view_t *v) CMOVE (tmp, R_BPL3PTH, HIADDR (PREP_DMA_MEM (&plane[1][full_line]))); CMOVE (tmp, R_BPL3PTL, LOADDR (PREP_DMA_MEM (&plane[1][full_line]))); } +#if defined (GRF_ECS) + CMOVE (tmp, R_DIWHIGH, 0x2000); +#endif + CMOVE (tmp, R_COP1LCH, HIADDR (PREP_DMA_MEM (this_data->frames[F_STORE_QUAD1]))); + CMOVE (tmp, R_COP1LCL, LOADDR (PREP_DMA_MEM (this_data->frames[F_STORE_QUAD1]))); + CEND (tmp); CEND (tmp); tmp = find_copper_inst (this_data->frames[F_STORE_QUAD1], CI_MOVE (R_BPLMOD2)); CBUMP(tmp); @@ -242,6 +235,12 @@ display_a2024_view (view_t *v) CMOVE (tmp, R_BPL3PTH, HIADDR (PREP_DMA_MEM (&plane[1][full_line+HALF_2024_LINE]))); CMOVE (tmp, R_BPL3PTL, LOADDR (PREP_DMA_MEM (&plane[1][full_line+HALF_2024_LINE]))); } +#if defined (GRF_ECS) + CMOVE (tmp, R_DIWHIGH, 0x2000); +#endif + CMOVE (tmp, R_COP1LCH, HIADDR (PREP_DMA_MEM (this_data->frames[F_STORE_QUAD2]))); + CMOVE (tmp, R_COP1LCL, LOADDR (PREP_DMA_MEM (this_data->frames[F_STORE_QUAD2]))); + CEND (tmp); CEND (tmp); tmp = find_copper_inst (this_data->frames[F_STORE_QUAD2], CI_MOVE (R_BPLMOD2)); CBUMP(tmp); @@ -255,6 +254,12 @@ display_a2024_view (view_t *v) CMOVE (tmp, R_BPL3PTH, HIADDR (PREP_DMA_MEM (&plane[1][half_plane+full_line]))); CMOVE (tmp, R_BPL3PTL, LOADDR (PREP_DMA_MEM (&plane[1][half_plane+full_line]))); } +#if defined (GRF_ECS) + CMOVE (tmp, R_DIWHIGH, 0x2000); +#endif + CMOVE (tmp, R_COP1LCH, HIADDR (PREP_DMA_MEM (this_data->frames[F_STORE_QUAD3]))); + CMOVE (tmp, R_COP1LCL, LOADDR (PREP_DMA_MEM (this_data->frames[F_STORE_QUAD3]))); + CEND (tmp); CEND (tmp); tmp = find_copper_inst (this_data->frames[F_STORE_QUAD3], CI_MOVE (R_BPLMOD2)); CBUMP(tmp); @@ -268,34 +273,13 @@ display_a2024_view (view_t *v) CMOVE (tmp, R_BPL3PTH, HIADDR (PREP_DMA_MEM (&plane[1][half_plane+full_line+HALF_2024_LINE]))); CMOVE (tmp, R_BPL3PTL, LOADDR (PREP_DMA_MEM (&plane[1][half_plane+full_line+HALF_2024_LINE]))); } - - /* - * Mark Id's - */ - tmp = find_copper_inst (this_data->frames[F_STORE_QUAD1], CI_WAIT (126,21)); - CBUMP(tmp); - CMOVE (tmp, R_COLOR01, QUAD1_ID); - tmp = find_copper_inst (this_data->frames[F_STORE_QUAD2], CI_WAIT (126,21)); - CBUMP(tmp); - CMOVE (tmp, R_COLOR01, QUAD2_ID); - tmp = find_copper_inst (this_data->frames[F_STORE_QUAD3], CI_WAIT (126,21)); - CBUMP(tmp); - CMOVE (tmp, R_COLOR01, QUAD3_ID); - - /* set next pointers correctly */ - tmp = find_copper_inst (this_data->frames[F_STORE_QUAD0], CI_MOVE (R_COP1LCH)); - tmp[0].cp.inst.operand = HIADDR (PREP_DMA_MEM (this_data->frames[F_STORE_QUAD1])); - tmp[1].cp.inst.operand = LOADDR (PREP_DMA_MEM (this_data->frames[F_STORE_QUAD1])); - tmp = find_copper_inst (this_data->frames[F_STORE_QUAD1], CI_MOVE (R_COP1LCH)); - tmp[0].cp.inst.operand = HIADDR (PREP_DMA_MEM (this_data->frames[F_STORE_QUAD2])); - tmp[1].cp.inst.operand = LOADDR (PREP_DMA_MEM (this_data->frames[F_STORE_QUAD2])); - tmp = find_copper_inst (this_data->frames[F_STORE_QUAD2], CI_MOVE (R_COP1LCH)); - tmp[0].cp.inst.operand = HIADDR (PREP_DMA_MEM (this_data->frames[F_STORE_QUAD3])); - tmp[1].cp.inst.operand = LOADDR (PREP_DMA_MEM (this_data->frames[F_STORE_QUAD3])); - tmp = find_copper_inst (this_data->frames[F_STORE_QUAD3], CI_MOVE (R_COP1LCH)); - tmp[0].cp.inst.operand = HIADDR (PREP_DMA_MEM (this_data->frames[F_STORE_QUAD0])); - tmp[1].cp.inst.operand = LOADDR (PREP_DMA_MEM (this_data->frames[F_STORE_QUAD0])); - +#if defined (GRF_ECS) + CMOVE (tmp, R_DIWHIGH, 0x2000); +#endif + CMOVE (tmp, R_COP1LCH, HIADDR (PREP_DMA_MEM (this_data->frames[F_STORE_QUAD0]))); + CMOVE (tmp, R_COP1LCL, LOADDR (PREP_DMA_MEM (this_data->frames[F_STORE_QUAD0]))); + CEND (tmp); CEND (tmp); + /* swap new pointers in. */ for (i = F_STORE_QUAD0, j = F_QUAD0; i <= F_STORE_QUAD3; i++, j++) { diff --git a/sys/arch/amiga/dev/grf/grf_cc/grf_cc_global.c b/sys/arch/amiga/dev/grf/grf_cc/grf_cc_global.c index 75bc6a375d22..0643f8686827 100644 --- a/sys/arch/amiga/dev/grf/grf_cc/grf_cc_global.c +++ b/sys/arch/amiga/dev/grf/grf_cc/grf_cc_global.c @@ -27,7 +27,7 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $Id: grf_cc_global.c,v 1.2 1994/01/29 07:00:19 chopps Exp $ + * $Id: grf_cc_global.c,v 1.3 1994/01/30 08:25:04 chopps Exp $ */ #include "grf_cc_priv.h" @@ -39,6 +39,7 @@ cop_t std_copper_list[] = { { CI_WAIT (0, 12), 0xfffe }, #if defined (GRF_ECS) { R_BEAMCON0, 0x0000 }, + { R_BPLCON3, 0x0020 }, /* enable border blank */ #endif /* bit plane pointers */ { R_BPL0PTH, 0x0000 }, { R_BPL0PTL, 0x0000 }, @@ -84,6 +85,7 @@ cop_t std_dlace_copper_list[] = { { CI_WAIT(0,12), 0xfffe }, /* WAIT (0, 12) */ #if defined (GRF_ECS) { R_BEAMCON0, 0x0000 }, + { R_BPLCON3, 0x0020 }, /* enable border blank */ #endif /* colors */ { R_COLOR00, 0x0000 }, { R_COLOR01, 0x0000 }, { R_COLOR02, 0x0000 }, { R_COLOR03, 0x0000 }, @@ -115,13 +117,21 @@ cop_t std_dlace_copper_list[] = { { R_COP1LCH, 0x0000 }, { R_COP1LCL, 0x0000 }, { 0xffff, 0xfffe }, { 0xffff, 0xfffe } /* COPEND, COPEND */ }; +int std_dlace_copper_list_len = sizeof (std_dlace_copper_list) / sizeof (cop_t); +int std_dlace_copper_list_size = sizeof (std_dlace_copper_list); cop_t std_a2024_copper_list[] = { { CI_WAIT(0,12), 0xfffe }, /* WAIT (0, 12) */ +#if defined (GRF_ECS) + { R_BEAMCON0, 0x0000 }, +#endif /* hedley card init setup section */ { R_COLOR00, 0x0f00 }, { R_BPL0PTH, 0x0000 }, { R_BPL0PTL, 0x0000 }, /* init plane of 1's with first set for centering */ { R_DIWSTRT, 0x1561 }, { R_DIWSTOP, 0x16d1 }, +#if defined (GRF_ECS) + { R_DIWHIGH, 0x2000 }, +#endif { R_DDFSTRT, 0x0040 }, { R_DDFSTOP, 0x00d0 }, { R_BPLCON0, 0x9200 }, /* actual data that will be latched by hedley card. */ @@ -131,7 +141,7 @@ cop_t std_a2024_copper_list[] = { { CI_WAIT(190,21), 0xfffe }, { R_COLOR01, 0x0ff1 }, /* Stuff2 */ { CI_WAIT(0,22), 0xfffe }, { R_COLOR00, 0x0000 }, { R_BPLCON0, 0x0000 }, - { CI_WAIT(0,42), 0xfffe }, + { CI_WAIT(0,43), 0xfffe }, /* set the registers up. */ { R_COLOR00, 0x0009 }, { R_COLOR01, 0x0001 }, { R_COLOR02, 0x0008 }, { R_COLOR03, 0x0000 }, { R_COLOR04, 0x0809 }, { R_COLOR05, 0x0801 }, { R_COLOR06, 0x0808 }, { R_COLOR07, 0x0800 }, @@ -152,13 +162,71 @@ cop_t std_a2024_copper_list[] = { { R_BPL1PTH, 0x0000 }, { R_BPL1PTL, 0x0000 }, { R_BPL2PTH, 0x0000 }, { R_BPL2PTL, 0x0000 }, { R_BPL3PTH, 0x0000 }, { R_BPL3PTL, 0x0000 }, +#if defined (GRF_ECS) + { R_DIWHIGH, 0x2000 }, +#endif { R_COP1LCH, 0x0000 }, { R_COP1LCL, 0x0000 }, { 0xffff, 0xfffe }, { 0xffff, 0xfffe } /* COPEND, COPEND */ }; int std_a2024_copper_list_len = sizeof (std_a2024_copper_list) / sizeof (cop_t); int std_a2024_copper_list_size = sizeof (std_a2024_copper_list); -int std_dlace_copper_list_len = sizeof (std_dlace_copper_list) / sizeof (cop_t); -int std_dlace_copper_list_size = sizeof (std_dlace_copper_list); + +cop_t std_pal_a2024_copper_list[] = { + { CI_WAIT(0,20), 0xfffe }, /* WAIT (0, 12) */ +#if defined (GRF_ECS) + { R_BEAMCON0, STANDARD_PAL_BEAMCON }, +#endif + /* hedley card init setup section */ + { R_COLOR00, 0x0f00 }, + { R_BPL0PTH, 0x0000 }, { R_BPL0PTL, 0x0000 }, /* init plane of 1's with first set for centering */ + { R_DIWSTRT, 0x1d61 }, { R_DIWSTOP, 0x1ed1 }, +#if defined (GRF_ECS) + { R_DIWHIGH, 0x2000 }, +#endif + { R_DDFSTRT, 0x0040 }, { R_DDFSTOP, 0x00d0 }, + { R_BPLCON0, 0x9200 }, + /* actual data that will be latched by hedley card. */ + { R_COLOR01, 0x0001 }, /* Stuff1 */ + { CI_WAIT(126,29), 0xfffe }, { R_COLOR01, 0x0001 }, /* Display Quadrent */ + { CI_WAIT(158,29), 0xfffe }, { R_COLOR01, 0x08f0 }, /* Stuff */ + { CI_WAIT(190,29), 0xfffe }, { R_COLOR01, 0x0ff1 }, /* Stuff2 */ + { CI_WAIT(0,30), 0xfffe }, + { R_COLOR00, 0x0000 }, { R_BPLCON0, 0x0000 }, + { CI_WAIT(0,43), 0xfffe }, + + /* set the registers up. */ + { R_COLOR00, 0x0009 }, { R_COLOR01, 0x0001 }, { R_COLOR02, 0x0008 }, { R_COLOR03, 0x0000 }, + { R_COLOR04, 0x0809 }, { R_COLOR05, 0x0801 }, { R_COLOR06, 0x0808 }, { R_COLOR07, 0x0800 }, + { R_COLOR08, 0x0089 }, { R_COLOR09, 0x0081 }, { R_COLOR0A, 0x0088 }, { R_COLOR0B, 0x0080 }, + { R_COLOR0C, 0x0889 }, { R_COLOR0D, 0x0881 }, { R_COLOR0E, 0x0888 }, { R_COLOR0F, 0x0880 }, + { R_COLOR10, 0x0009 }, { R_COLOR11, 0x0009 }, { R_COLOR12, 0x0001 }, { R_COLOR13, 0x0809 }, + { R_COLOR14, 0x0009 }, { R_COLOR15, 0x0009 }, { R_COLOR16, 0x0001 }, { R_COLOR17, 0x0809 }, + { R_COLOR18, 0x0008 }, { R_COLOR19, 0x0008 }, { R_COLOR1A, 0x0000 }, { R_COLOR1B, 0x0808 }, + { R_COLOR1C, 0x0089 }, { R_COLOR1D, 0x0089 }, { R_COLOR1E, 0x0081 }, { R_COLOR1F, 0x0889 }, + /* window size. */ + { R_DIWSTRT, 0x2c81 }, { R_BPLCON0, 0x0000 }, { R_DIWSTOP, 0x2c81 }, + /* datafetch */ + { R_DDFSTRT, 0x0038 }, { R_DDFSTOP, 0x00b8 }, + { R_BPLCON1, 0x0000 }, + { R_BPL1MOD, 0x00bc }, { R_BPL2MOD, 0x00bc }, + /* bitplanes */ + { R_BPL0PTH, 0x0000 }, { R_BPL0PTL, 0x0000 }, + { R_BPL1PTH, 0x0000 }, { R_BPL1PTL, 0x0000 }, + { R_BPL2PTH, 0x0000 }, { R_BPL2PTL, 0x0000 }, + { R_BPL3PTH, 0x0000 }, { R_BPL3PTL, 0x0000 }, +#if defined (GRF_ECS) + { R_DIWHIGH, 0x2100 }, +#endif + { R_COP1LCH, 0x0000 }, { R_COP1LCL, 0x0000 }, + { 0xffff, 0xfffe }, { 0xffff, 0xfffe } /* COPEND, COPEND */ +}; +int std_pal_a2024_copper_list_len = sizeof (std_pal_a2024_copper_list) / sizeof (cop_t); +int std_pal_a2024_copper_list_size = sizeof (std_pal_a2024_copper_list); + #endif /* GRF_A2024 */ + + + + diff --git a/sys/arch/amiga/dev/grf/grf_cc/grf_cc_h_mode.c b/sys/arch/amiga/dev/grf/grf_cc/grf_cc_h_mode.c index f989e8111ea5..829e542ec466 100644 --- a/sys/arch/amiga/dev/grf/grf_cc/grf_cc_h_mode.c +++ b/sys/arch/amiga/dev/grf/grf_cc/grf_cc_h_mode.c @@ -27,7 +27,7 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $Id: grf_cc_h_mode.c,v 1.2 1994/01/29 07:00:20 chopps Exp $ + * $Id: grf_cc_h_mode.c,v 1.3 1994/01/30 08:25:05 chopps Exp $ */ #if defined (GRF_NTSC) @@ -67,7 +67,7 @@ cc_init_ntsc_hires (void) this->nominal_size.width = 640; this->nominal_size.height = 200; this_data->max_size.width = 724; - this_data->max_size.height = 241; + this_data->max_size.height = 242; this_data->min_size.width = 320; this_data->min_size.height = 100; this_data->min_depth = 1; @@ -95,7 +95,7 @@ cc_init_ntsc_hires (void) bcopy (std_copper_list, this_data->frames[F_STORE_LONG], std_copper_list_size); bcopy (std_copper_list, this_data->frames[F_LONG], std_copper_list_size); - this_data->bplcon0 = 0x8200; /* hires, color composite enable, lace. */ + this_data->bplcon0 = 0x8200|USE_CON3; /* hires, color composite enable, lace. */ this_data->std_start_x = STANDARD_VIEW_X; this_data->std_start_y = STANDARD_VIEW_Y; this_data->vbl_handler = (vbl_handler_func *) hires_mode_vbl_handler; diff --git a/sys/arch/amiga/dev/grf/grf_cc/grf_cc_hdl_mode.c b/sys/arch/amiga/dev/grf/grf_cc/grf_cc_hdl_mode.c index e3442e28ff2d..980fedd692ac 100644 --- a/sys/arch/amiga/dev/grf/grf_cc/grf_cc_hdl_mode.c +++ b/sys/arch/amiga/dev/grf/grf_cc/grf_cc_hdl_mode.c @@ -27,7 +27,7 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $Id: grf_cc_hdl_mode.c,v 1.2 1994/01/29 07:00:22 chopps Exp $ + * $Id: grf_cc_hdl_mode.c,v 1.3 1994/01/30 08:25:06 chopps Exp $ */ #if defined (GRF_A2024) && defined (GRF_NTSC) @@ -111,7 +111,7 @@ cc_init_ntsc_hires_dlace (void) bcopy (std_dlace_copper_list, this_data->frames[F_LONG], std_dlace_copper_list_size); bcopy (std_dlace_copper_list, this_data->frames[F_SHORT], std_dlace_copper_list_size); - this_data->bplcon0 = 0x8204; /* hires, color composite enable, dlace. */ + this_data->bplcon0 = 0x8204|USE_CON3; /* hires, color composite enable, dlace. */ this_data->std_start_x = STANDARD_VIEW_X; this_data->std_start_y = STANDARD_VIEW_Y; this_data->vbl_handler = (vbl_handler_func *) hires_dlace_mode_vbl_handler; diff --git a/sys/arch/amiga/dev/grf/grf_cc/grf_cc_hl_mode.c b/sys/arch/amiga/dev/grf/grf_cc/grf_cc_hl_mode.c index 9d06941b510c..c8d167c3ca03 100644 --- a/sys/arch/amiga/dev/grf/grf_cc/grf_cc_hl_mode.c +++ b/sys/arch/amiga/dev/grf/grf_cc/grf_cc_hl_mode.c @@ -27,7 +27,7 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $Id: grf_cc_hl_mode.c,v 1.2 1994/01/29 07:00:24 chopps Exp $ + * $Id: grf_cc_hl_mode.c,v 1.3 1994/01/30 08:25:08 chopps Exp $ */ #if defined (GRF_NTSC) @@ -102,7 +102,7 @@ cc_init_ntsc_hires_lace (void) bcopy (std_copper_list, this_data->frames[F_LONG], std_copper_list_size); bcopy (std_copper_list, this_data->frames[F_SHORT], std_copper_list_size); - this_data->bplcon0 = 0x8204; /* hires, color composite enable, lace. */ + this_data->bplcon0 = 0x8204|USE_CON3; /* hires, color composite enable, lace. */ this_data->std_start_x = STANDARD_VIEW_X; this_data->std_start_y = STANDARD_VIEW_Y; this_data->vbl_handler = (vbl_handler_func *) hires_lace_mode_vbl_handler; diff --git a/sys/arch/amiga/dev/grf/grf_cc/grf_cc_mode.c b/sys/arch/amiga/dev/grf/grf_cc/grf_cc_mode.c index 19bd109abb0e..234559ff861a 100644 --- a/sys/arch/amiga/dev/grf/grf_cc/grf_cc_mode.c +++ b/sys/arch/amiga/dev/grf/grf_cc/grf_cc_mode.c @@ -27,7 +27,7 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $Id: grf_cc_mode.c,v 1.2 1994/01/29 07:00:26 chopps Exp $ + * $Id: grf_cc_mode.c,v 1.3 1994/01/30 08:25:09 chopps Exp $ */ #include "errno.h" #include "grf_cc_priv.h" @@ -50,6 +50,7 @@ dmode_t *(*mode_init_funcs[])(void) = { #endif /* GRF_NTSC */ #if defined (GRF_PAL) #if defined (GRF_A2024) + cc_init_pal_a2024, cc_init_pal_hires_dlace, #endif /* GRF_A2024 */ cc_init_pal_hires_lace, @@ -149,7 +150,7 @@ cc_alloc_colormap (int depth) cm->blue_mask = 0x0F; cm->first = 0; cm->size = size; - cm->entry = &cm[1]; /* table directly after. */ + cm->entry = (u_long *) &cm[1]; /* table directly after. */ for (i=0; i < min(size,32); i++) { cm->entry[i] = CM_WTOL(cc_default_colors[i]); } @@ -170,7 +171,7 @@ cc_a2024_alloc_colormap (int depth) cm->grey_mask = 0x03; cm->first = 0; cm->size = size; - cm->entry = &cm[1]; /* table directly after. */ + cm->entry = (u_long *) &cm[1]; /* table directly after. */ for (i=0; i < size; i++) { cm->entry[i] = CM_WTOL(cc_a2024_default_colors[i]); } diff --git a/sys/arch/amiga/dev/grf/grf_cc/grf_cc_pal_a2024_mode.c b/sys/arch/amiga/dev/grf/grf_cc/grf_cc_pal_a2024_mode.c new file mode 100644 index 000000000000..8a29662d1530 --- /dev/null +++ b/sys/arch/amiga/dev/grf/grf_cc/grf_cc_pal_a2024_mode.c @@ -0,0 +1,324 @@ +/* + * Copyright (c) 1993 Christian E. Hopps + * All rights reserved. + * + * This code is derived from software contributed to Berkeley by + * Christian E. Hopps. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by the University of + * California, Berkeley and its contributors. + * 4. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + */ +#if defined (GRF_A2024) && defined (GRF_PAL) + +#include "grf_cc_priv.h" +#include "../../../amiga/cc_2024.h" + +#if defined (AMIGA_TEST) +#define DEBUG +#include +#else +#define D(x) +#endif + +static void pal_a2024_mode_vbl_handler (dmode_t *d); +static void display_pal_a2024_view (view_t *v); +static view_t *get_current_view (dmode_t *d); + +/* ------- + * |0 |1 | + * |------ + * |2 |3 | + * ------- + */ + +#define QUAD0_ID 0x0001 +#define QUAD1_ID 0x00f1 +#define QUAD2_ID 0x0f01 +#define QUAD3_ID 0x0ff1 + +/* display order Q0 -> Q2 -> Q1 -> Q3 ---> */ + +enum frame_numbers { + F_QUAD0, F_QUAD1, F_QUAD2, F_QUAD3, + F_STORE_QUAD0, F_STORE_QUAD1, F_STORE_QUAD2, F_STORE_QUAD3, + F_TOTAL +}; + +static dmode_t pal_a2024_mode; +static dmdata_t pal_a2024_mode_data; +static cop_t *pal_a2024_frames[F_TOTAL]; +static u_byte *hedley_init; /* init bitplane. */ +static dmode_t *this; +static dmdata_t *this_data; + +dmode_t * +cc_init_pal_a2024 (void) +{ + /* this function should only be called once. */ + if (!this) { + int i; + u_word len = std_pal_a2024_copper_list_len; + cop_t *cp; + + this = &pal_a2024_mode; + this_data = &pal_a2024_mode_data; + bzero (this, sizeof (dmode_t)); + bzero (this_data, sizeof (dmdata_t)); + + this->name = "pal: A2024 15khz"; + this->nominal_size.width = 1024; + this->nominal_size.height = 1024; + this_data->max_size.width = 1024; + this_data->max_size.height = 1024; + this_data->min_size.width = 1024; + this_data->min_size.height = 1024; + this_data->min_depth = 1; + this_data->max_depth = 2; + this->data = this_data; + + this->get_monitor = cc_get_monitor; + this->alloc_view = cc_alloc_view; + this->get_current_view = get_current_view; + + this_data->use_colormap = cc_a2024_use_colormap; + this_data->get_colormap = cc_a2024_get_colormap; + this_data->display_view = display_pal_a2024_view; + this_data->alloc_colormap = cc_a2024_alloc_colormap; + this_data->monitor = cc_monitor; + + this_data->flags |= DMF_HEDLEY_EXP; + + this_data->frames = pal_a2024_frames; + this_data->frames[F_QUAD0] = alloc_chipmem (std_pal_a2024_copper_list_size*F_TOTAL); + if (!this_data->frames[F_QUAD0]) { + panic ("couldn't get chipmem for copper list"); + } + + /* setup the hedley init bitplane. */ + hedley_init = alloc_chipmem (128); + if (!hedley_init) { + panic ("couldn't get chipmem for hedley init bitplane"); + } + for (i = 1; i < 128; i++) hedley_init[i] = 0xff; + hedley_init[0] = 0x03; + + /* copy image of standard copper list. */ + bcopy (std_pal_a2024_copper_list, this_data->frames[0], std_pal_a2024_copper_list_size); + + /* set the init plane pointer. */ + cp = find_copper_inst (this_data->frames[F_QUAD0], CI_MOVE(R_BPL0PTH)); + cp[0].cp.inst.operand = HIADDR (PREP_DMA_MEM (hedley_init)); + cp[1].cp.inst.operand = LOADDR (PREP_DMA_MEM (hedley_init)); + + for (i = 1; i < F_TOTAL; i++) { + this_data->frames[i] = &this_data->frames[i-1][len]; + bcopy (this_data->frames[0], this_data->frames[i], std_pal_a2024_copper_list_size); + } + + this_data->bplcon0 = 0x8200; /* hires */ + this_data->vbl_handler = (vbl_handler_func *) pal_a2024_mode_vbl_handler; + + + dadd_head (&MDATA(cc_monitor)->modes, &this->node); + } + return (this); +} + +static void +display_pal_a2024_view (view_t *v) +{ + if (this_data->current_view != v) { + vdata_t *vd = VDATA(v); + monitor_t *monitor = this_data->monitor; + cop_t *cp, *tmp; + u_byte *inst_plane[2]; + u_byte **plane = inst_plane; + u_long full_line = v->bitmap->bytes_per_row+v->bitmap->row_mod; + u_long half_plane = full_line * v->bitmap->rows / 2; + + int line_mod = 0xbc; /* standard 2024 15khz mod. */ + int depth = v->bitmap->depth, i, j; + + plane[0] = v->bitmap->plane[0]; + if (depth == 2) { + plane[1] = v->bitmap->plane[1]; + } + + if (this_data->current_view) { + VDATA(this_data->current_view)->flags &= ~VF_DISPLAY; /* mark as no longer displayed. */ + } + + cp = this_data->frames[F_STORE_QUAD0]; + tmp = find_copper_inst (cp, CI_MOVE(R_COLOR1F)); + tmp = find_copper_inst (tmp, CI_MOVE(R_BPLCON0)); /* grab third one. */ + tmp->cp.inst.operand = this_data->bplcon0 | ((depth & 0x7) << 13); /* times 2 */ + + bcopy (this_data->frames[F_STORE_QUAD0], this_data->frames[F_STORE_QUAD1], std_pal_a2024_copper_list_size); + bcopy (this_data->frames[F_STORE_QUAD0], this_data->frames[F_STORE_QUAD2], std_pal_a2024_copper_list_size); + bcopy (this_data->frames[F_STORE_QUAD0], this_data->frames[F_STORE_QUAD3], std_pal_a2024_copper_list_size); + + /* + * Mark Id's + */ + tmp = find_copper_inst (this_data->frames[F_STORE_QUAD1], CI_WAIT (126,29)); + CBUMP(tmp); + CMOVE (tmp, R_COLOR01, QUAD1_ID); + tmp = find_copper_inst (this_data->frames[F_STORE_QUAD2], CI_WAIT (126,29)); + CBUMP(tmp); + CMOVE (tmp, R_COLOR01, QUAD2_ID); + tmp = find_copper_inst (this_data->frames[F_STORE_QUAD3], CI_WAIT (126,29)); + CBUMP(tmp); + CMOVE (tmp, R_COLOR01, QUAD3_ID); + + +#define HALF_2024_LINE (512>>3) + + plane[0]--; + plane[0]--; + if (depth == 2) { + plane[1]--; + plane[1]--; + } + + /* + * Set bitplane pointers. + */ + tmp = find_copper_inst (this_data->frames[F_STORE_QUAD0], CI_MOVE (R_BPLMOD2)); + CBUMP(tmp); + CMOVE (tmp, R_BPL0PTH, HIADDR (PREP_DMA_MEM (&plane[0][0]))); + CMOVE (tmp, R_BPL0PTL, LOADDR (PREP_DMA_MEM (&plane[0][0]))); + CMOVE (tmp, R_BPL1PTH, HIADDR (PREP_DMA_MEM (&plane[0][full_line]))); + CMOVE (tmp, R_BPL1PTL, LOADDR (PREP_DMA_MEM (&plane[0][full_line]))); + if (depth == 2) { + CMOVE (tmp, R_BPL2PTH, HIADDR (PREP_DMA_MEM (&plane[1][0]))); + CMOVE (tmp, R_BPL2PTL, LOADDR (PREP_DMA_MEM (&plane[1][0]))); + CMOVE (tmp, R_BPL3PTH, HIADDR (PREP_DMA_MEM (&plane[1][full_line]))); + CMOVE (tmp, R_BPL3PTL, LOADDR (PREP_DMA_MEM (&plane[1][full_line]))); + } +#if defined (GRF_ECS) + CMOVE (tmp, R_DIWHIGH, 0x2100); +#endif + CMOVE (tmp, R_COP1LCH, HIADDR (PREP_DMA_MEM (this_data->frames[F_STORE_QUAD1]))); + CMOVE (tmp, R_COP1LCL, LOADDR (PREP_DMA_MEM (this_data->frames[F_STORE_QUAD1]))); + CEND (tmp); CEND (tmp); + + tmp = find_copper_inst (this_data->frames[F_STORE_QUAD1], CI_MOVE (R_BPLMOD2)); + CBUMP(tmp); + CMOVE (tmp, R_BPL0PTH, HIADDR (PREP_DMA_MEM (&plane[0][HALF_2024_LINE]))); + CMOVE (tmp, R_BPL0PTL, LOADDR (PREP_DMA_MEM (&plane[0][HALF_2024_LINE]))); + CMOVE (tmp, R_BPL1PTH, HIADDR (PREP_DMA_MEM (&plane[0][full_line+HALF_2024_LINE]))); + CMOVE (tmp, R_BPL1PTL, LOADDR (PREP_DMA_MEM (&plane[0][full_line+HALF_2024_LINE]))); + if (depth == 2) { + CMOVE (tmp, R_BPL2PTH, HIADDR (PREP_DMA_MEM (&plane[1][HALF_2024_LINE]))); + CMOVE (tmp, R_BPL2PTL, LOADDR (PREP_DMA_MEM (&plane[1][HALF_2024_LINE]))); + CMOVE (tmp, R_BPL3PTH, HIADDR (PREP_DMA_MEM (&plane[1][full_line+HALF_2024_LINE]))); + CMOVE (tmp, R_BPL3PTL, LOADDR (PREP_DMA_MEM (&plane[1][full_line+HALF_2024_LINE]))); + } +#if defined (GRF_ECS) + CMOVE (tmp, R_DIWHIGH, 0x2100); +#endif + CMOVE (tmp, R_COP1LCH, HIADDR (PREP_DMA_MEM (this_data->frames[F_STORE_QUAD2]))); + CMOVE (tmp, R_COP1LCL, LOADDR (PREP_DMA_MEM (this_data->frames[F_STORE_QUAD2]))); + CEND (tmp); CEND (tmp); + + tmp = find_copper_inst (this_data->frames[F_STORE_QUAD2], CI_MOVE (R_BPLMOD2)); + CBUMP(tmp); + CMOVE (tmp, R_BPL0PTH, HIADDR (PREP_DMA_MEM (&plane[0][half_plane]))); + CMOVE (tmp, R_BPL0PTL, LOADDR (PREP_DMA_MEM (&plane[0][half_plane]))); + CMOVE (tmp, R_BPL1PTH, HIADDR (PREP_DMA_MEM (&plane[0][half_plane+full_line]))); + CMOVE (tmp, R_BPL1PTL, LOADDR (PREP_DMA_MEM (&plane[0][half_plane+full_line]))); + if (depth == 2) { + CMOVE (tmp, R_BPL2PTH, HIADDR (PREP_DMA_MEM (&plane[1][half_plane]))); + CMOVE (tmp, R_BPL2PTL, LOADDR (PREP_DMA_MEM (&plane[1][half_plane]))); + CMOVE (tmp, R_BPL3PTH, HIADDR (PREP_DMA_MEM (&plane[1][half_plane+full_line]))); + CMOVE (tmp, R_BPL3PTL, LOADDR (PREP_DMA_MEM (&plane[1][half_plane+full_line]))); + } +#if defined (GRF_ECS) + CMOVE (tmp, R_DIWHIGH, 0x2100); +#endif + CMOVE (tmp, R_COP1LCH, HIADDR (PREP_DMA_MEM (this_data->frames[F_STORE_QUAD3]))); + CMOVE (tmp, R_COP1LCL, LOADDR (PREP_DMA_MEM (this_data->frames[F_STORE_QUAD3]))); + CEND (tmp); CEND (tmp); + + tmp = find_copper_inst (this_data->frames[F_STORE_QUAD3], CI_MOVE (R_BPLMOD2)); + CBUMP(tmp); + CMOVE (tmp, R_BPL0PTH, HIADDR (PREP_DMA_MEM (&plane[0][half_plane+HALF_2024_LINE]))); + CMOVE (tmp, R_BPL0PTL, LOADDR (PREP_DMA_MEM (&plane[0][half_plane+HALF_2024_LINE]))); + CMOVE (tmp, R_BPL1PTH, HIADDR (PREP_DMA_MEM (&plane[0][half_plane+full_line+HALF_2024_LINE]))); + CMOVE (tmp, R_BPL1PTL, LOADDR (PREP_DMA_MEM (&plane[0][half_plane+full_line+HALF_2024_LINE]))); + if (depth == 2) { + CMOVE (tmp, R_BPL2PTH, HIADDR (PREP_DMA_MEM (&plane[1][half_plane+HALF_2024_LINE]))); + CMOVE (tmp, R_BPL2PTL, LOADDR (PREP_DMA_MEM (&plane[1][half_plane+HALF_2024_LINE]))); + CMOVE (tmp, R_BPL3PTH, HIADDR (PREP_DMA_MEM (&plane[1][half_plane+full_line+HALF_2024_LINE]))); + CMOVE (tmp, R_BPL3PTL, LOADDR (PREP_DMA_MEM (&plane[1][half_plane+full_line+HALF_2024_LINE]))); + } +#if defined (GRF_ECS) + CMOVE (tmp, R_DIWHIGH, 0x2100); +#endif + CMOVE (tmp, R_COP1LCH, HIADDR (PREP_DMA_MEM (this_data->frames[F_STORE_QUAD0]))); + CMOVE (tmp, R_COP1LCL, LOADDR (PREP_DMA_MEM (this_data->frames[F_STORE_QUAD0]))); + CEND (tmp); CEND (tmp); + + /* swap new pointers in. */ + for (i = F_STORE_QUAD0, j = F_QUAD0; + i <= F_STORE_QUAD3; i++, j++) { + cp = this_data->frames[j]; + this_data->frames[j] = this_data->frames[i]; + this_data->frames[i] = cp; + } + + this_data->current_view = v; + vd->flags |= VF_DISPLAY; + + cc_a2024_use_colormap (v, vd->colormap); + } + cc_load_mode (this); +} + +static view_t * +get_current_view (dmode_t *d) +{ + return (this_data->current_view); +} + +static void +pal_a2024_mode_vbl_handler (dmode_t *d) +{ + u_word vp = ((custom.vposr & 0x0007) << 8) | ((custom.vhposr) >> 8); + + if (vp < 20) { + custom.cop1lc = PREP_DMA_MEM (this_data->frames[this_data->hedley_current]); + custom.copjmp1 = 0; + } + this_data->hedley_current++; + this_data->hedley_current &= 0x3; /* if 4 then 0. */ +} + +#endif /* GRF_A2024 & GRF_PAL */ + diff --git a/sys/arch/amiga/dev/grf/grf_cc/grf_cc_ph_mode.c b/sys/arch/amiga/dev/grf/grf_cc/grf_cc_ph_mode.c index d1f2e48185d5..8ed482a1cb51 100644 --- a/sys/arch/amiga/dev/grf/grf_cc/grf_cc_ph_mode.c +++ b/sys/arch/amiga/dev/grf/grf_cc/grf_cc_ph_mode.c @@ -27,7 +27,7 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $Id: grf_cc_ph_mode.c,v 1.2 1994/01/29 07:00:28 chopps Exp $ + * $Id: grf_cc_ph_mode.c,v 1.3 1994/01/30 08:25:11 chopps Exp $ */ #if defined (GRF_PAL) @@ -66,9 +66,9 @@ cc_init_pal_hires (void) this->nominal_size.width = 640; this->nominal_size.height = 256; this_data->max_size.width = 724; - this_data->max_size.height = 283; + this_data->max_size.height = 289; this_data->min_size.width = 320; - this_data->min_size.height = 128; + this_data->min_size.height = 244; this_data->min_depth = 1; this_data->max_depth = 4; this->data = this_data; @@ -94,7 +94,7 @@ cc_init_pal_hires (void) bcopy (std_copper_list, this_data->frames[F_STORE_LONG], std_copper_list_size); bcopy (std_copper_list, this_data->frames[F_LONG], std_copper_list_size); - this_data->bplcon0 = 0x8200; /* pal_hires, color composite enable, lace. */ + this_data->bplcon0 = 0x8200|USE_CON3; /* pal_hires, color composite enable, lace. */ this_data->std_start_x = STANDARD_VIEW_X; this_data->std_start_y = STANDARD_VIEW_Y; this_data->vbl_handler = (vbl_handler_func *) pal_hires_mode_vbl_handler; diff --git a/sys/arch/amiga/dev/grf/grf_cc/grf_cc_phdl_mode.c b/sys/arch/amiga/dev/grf/grf_cc/grf_cc_phdl_mode.c index 6574f4be2446..32a5215da8c0 100644 --- a/sys/arch/amiga/dev/grf/grf_cc/grf_cc_phdl_mode.c +++ b/sys/arch/amiga/dev/grf/grf_cc/grf_cc_phdl_mode.c @@ -27,7 +27,7 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $Id: grf_cc_phdl_mode.c,v 1.2 1994/01/29 07:00:30 chopps Exp $ + * $Id: grf_cc_phdl_mode.c,v 1.3 1994/01/30 08:25:12 chopps Exp $ */ #if defined (GRF_A2024) && defined (GRF_PAL) @@ -110,7 +110,7 @@ cc_init_pal_hires_dlace (void) bcopy (std_dlace_copper_list, this_data->frames[F_LONG], std_dlace_copper_list_size); bcopy (std_dlace_copper_list, this_data->frames[F_SHORT], std_dlace_copper_list_size); - this_data->bplcon0 = 0x8204; /* hires, color composite enable, dlace. */ + this_data->bplcon0 = 0x8204|USE_CON3; /* hires, color composite enable, dlace. */ this_data->std_start_x = STANDARD_VIEW_X; this_data->std_start_y = STANDARD_VIEW_Y; this_data->vbl_handler = (vbl_handler_func *) pal_hires_dlace_mode_vbl_handler; diff --git a/sys/arch/amiga/dev/grf/grf_cc/grf_cc_phl_mode.c b/sys/arch/amiga/dev/grf/grf_cc/grf_cc_phl_mode.c index 4d82008e7f4b..5048dae62524 100644 --- a/sys/arch/amiga/dev/grf/grf_cc/grf_cc_phl_mode.c +++ b/sys/arch/amiga/dev/grf/grf_cc/grf_cc_phl_mode.c @@ -27,7 +27,7 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $Id: grf_cc_phl_mode.c,v 1.2 1994/01/29 07:00:32 chopps Exp $ + * $Id: grf_cc_phl_mode.c,v 1.3 1994/01/30 08:25:14 chopps Exp $ */ #if defined (GRF_PAL) @@ -68,9 +68,9 @@ cc_init_pal_hires_lace (void) this->nominal_size.width = 640; this->nominal_size.height = 512; this_data->max_size.width = 724; - this_data->max_size.height = 566; + this_data->max_size.height = 578; this_data->min_size.width = 320; - this_data->min_size.height = 256; + this_data->min_size.height = 484; this_data->min_depth = 1; this_data->max_depth = 4; this->data = this_data; @@ -102,7 +102,7 @@ cc_init_pal_hires_lace (void) bcopy (std_copper_list, this_data->frames[F_LONG], std_copper_list_size); bcopy (std_copper_list, this_data->frames[F_SHORT], std_copper_list_size); - this_data->bplcon0 = 0x8204; /* hires, color composite enable, lace. */ + this_data->bplcon0 = 0x8204|USE_CON3; /* hires, color composite enable, lace. */ this_data->std_start_x = STANDARD_VIEW_X; this_data->std_start_y = STANDARD_VIEW_Y; this_data->vbl_handler = (vbl_handler_func *) pal_hires_lace_mode_vbl_handler; diff --git a/sys/arch/amiga/dev/grf/grf_cc/grf_cc_priv.h b/sys/arch/amiga/dev/grf/grf_cc/grf_cc_priv.h index fd259c23d46d..b06361e771bd 100644 --- a/sys/arch/amiga/dev/grf/grf_cc/grf_cc_priv.h +++ b/sys/arch/amiga/dev/grf/grf_cc/grf_cc_priv.h @@ -27,7 +27,7 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $Id: grf_cc_priv.h,v 1.2 1994/01/29 07:00:34 chopps Exp $ + * $Id: grf_cc_priv.h,v 1.3 1994/01/30 08:25:16 chopps Exp $ */ #if ! defined (_GRF_CCPRIV_H) @@ -150,6 +150,12 @@ int cc_a2024_use_colormap (view_t *v, colormap_t *); int cc_a2024_get_colormap (view_t *v, colormap_t *); colormap_t * cc_a2024_alloc_colormap (int); +#if defined (GRF_PAL) +extern cop_t std_pal_a2024_copper_list[]; +extern int std_pal_a2024_copper_list_len; +extern int std_pal_a2024_copper_list_size; +#endif + extern cop_t std_a2024_copper_list[]; extern int std_a2024_copper_list_len; extern int std_a2024_copper_list_size; @@ -173,6 +179,9 @@ extern monitor_t *cc_monitor; #if defined (GRF_ECS) #define CALC_DIWHIGH(hs, vs, he, ve) \ ((u_word)((he&0x100)<<5)|(ve&0x700)|((hs&0x100)>>3)|((vs&0x700)>>8)) +#define USE_CON3 0x0001 +#else +#define USE_CON3 0x0 #endif #endif /* _GRF_CCPRIV_H */