Path: utzoo!utgpu!news-server.csri.toronto.edu!rpi!dali.cs.montana.edu!uakari.primate.wisc.edu!caen!uwm.edu!linac!att!pacbell.com!tandem!zorch!amiga0!mykes From: mykes@amiga0.SF-Bay.ORG (Mike Schwartz) Newsgroups: comp.sys.amiga.programmer Subject: Re: Copper & HiRes Interlace Message-ID: Date: 27 May 91 07:26:00 GMT References: <4892@gumby.Altos.COM> <1991May25.165221.2209@cs.umu.se> Organization: Amiga makes it possible Lines: 57 In article <1991May25.165221.2209@cs.umu.se> dvljrt@cs.umu.se (Joakim Rosqvist) writes: >>When my software is in complete control of my Amiga 2000, I support my >>High Resolution Interlaced display by catching the Vertical blanking >>interrupt. Essentially, my interrupt service routine looks like this: >> >>#define LOF 0x8000 /* Interlace Long Frame Bit */ >>display_intr() >>{ >> if (custom.vposr & LOF) >> custom.bplpt[0] = bitplane; >> else >> custom.bplpt[0] = bitplane + 80; >> custom.intreq = INTF_VERB; /* clear interrupt */ >>} >> >>completely flip out every time I disabled interrupts. The HRM states: >> >> To get the Copper to execute the correct list, you set an interrupt to >> the 68k just after the first line in the display. When the interrupt >> is executed, you change the contents of the COP1LC location register to >> point to the second list. Then, during the vertical blanking interval, >> COP1LC will be automatically reset to point to the original list. >> > >You will have use 2 copperlists, but you don't need any interrupt handling >to install it, the LongFrame bit can be written to as well. > > >/$DR.HEX$ > >-------------------------------------------- >Email to: dvljrt@cs.umu.se >2 Windows on the screen? Oh no, not me. I just Logout & Go. What I do is the following... lea CUSTOM,a6 ; $dff000 move.w #$4000,INTENAW(a6) ; disable ints 10$ cmpi.b #$fc,VHPOSR(a6) bne.s 10$ ; wait for BOVP move.l a0,COP1LC(a6) ; a0 = ptr to copper list clr.w COPJMP1(a6) ; Strobe Copper move.w #$c000,INTENAW(a6) ... I use two copper lists, one for even and one for odd frame. The even frame list ends by storing the address of the odd frame list to COPJMP1, and the odd frame list stores the address of the even frame list to COPJMP1. There is no need for interrupts of any kind. Note: The above code is merely for illustration purposes... CAVEAT USER -- **************************************************** * I want games that look like Shadow of the Beast * * but play like Leisure Suit Larry. * ****************************************************