home *** CD-ROM | disk | FTP | other *** search
- Path: informatik.tu-muenchen.de!fischerj
- From: fischerj@Informatik.TU-Muenchen.DE (Juergen "Rally" Fischer)
- Newsgroups: comp.sys.amiga.programmer
- Subject: Qblit intereference again
- Date: 20 Feb 1996 01:05:26 GMT
- Organization: Technische Universitaet Muenchen, Germany
- Distribution: world
- Message-ID: <4gb6om$104@sunsystem5.informatik.tu-muenchen.de>
- NNTP-Posting-Host: hphalle5.informatik.tu-muenchen.de
- X-Newsreader: TIN [version 1.2 PL2]
-
- My Qblit function still locks up if OS does small blits between it.
- help please.
-
- Best is IMHO I post the source:
-
- * === THE QBLIT CALL
- move.w #1,_bltbsy ;MY FLAG TELLING THAT QBLIT SEQUENCE IS WORKING.
-
- move.l bltnode,a0
-
- clr.l (a0)+ : move.l #function,(a0)+
- move.w #$4000,(a0)+ ;do cleanup
- move.w #$2020,(a0)+ ;DUMMY SIZE. HOW TO DO LARGE BLIT IN A .W ? HUH HUH
- clr.w (a0)+
- move.l #cleanup,(a0)+
-
- move.l bltnode,a1 : move.l _GfxBase,a6 : jsr -276(a6)
-
- * NO I WON'T TOUCH THIS BLTNODE UNTIL MY cleanup: WAS CALLED.
-
- *===== THE FUNCTIONS
- function:
- * DO I MISS CLEARING THE BLITTER INTREQ BIT HERE ?
-
- movem.l d1/a6,-(sp)
- move.l bltpc(pc),a6
-
- bltsetreg:
- move.l (a6)+,d0 : move.w d0,d1 : swap d0
- move.w d0,0(a0,d1.w)
- * ^------- ??? $DFF000 BY OS ???
-
- cmp.w #$5e,d1 : beq.s bltstarted
- cmp.w #$58,d1 : bne.s bltsetreg
- * ---
- bltstarted:
- move.l a6,bltpc
- cmp.l #0,(a6) : beq bltintend
-
- movem.l (sp)+,d1/a6
-
- move.l #1,d0 ;TO BE RECALLED
- rts
-
- bltintend:
- movem.l (sp)+,d1/a6
-
- move.l #0,d0 ;ALL DONE
- rts
-
- cleanup:
- clr.w _bltbsy
- moveq #0,d0
- rts
-
- *===============================
-
- The bugs:
-
- blitter lockup most likely if lots of small blits are done
- by other programs, while mine does quite large blits.
-
- if I just let the function run without any pokes to blitter,
- the lockup is also caused!
-
- It's just a lockup, no memory trashed.
-
-
-
-
-
-
-