English Amiga Board


Go Back   English Amiga Board > Coders > Coders. Asm / Hardware

 
 
Thread Tools
Old 21 January 2022, 01:32   #21
mc6809e
Registered User
 
Join Date: Jan 2012
Location: USA
Posts: 372
One possible way to gain more color register writes is to wait for $ce and modify the pointers for bitplane 4 before the others.

Should be able to get 14 colors changed.
mc6809e is offline  
Old 21 January 2022, 01:43   #22
ross
Defendit numerus
 
ross's Avatar
 
Join Date: Mar 2017
Location: Crossing the Rubicon
Age: 53
Posts: 4,468
Quote:
Originally Posted by mc6809e View Post
Don't even need the copper. There are enough cycles for a pair of movem.l instructions -- one for the bitplane pointers and one for the color registers.

CPU registers must be preloaded of course.
Well, yes and no.

I would use the copper for *at least* 2 reasons:
- there is no possibility to execute the writing routine with the CPU if the blitter is active and in nasty mode (target seems OCS/Chip or bogus RAM machines), the copper is the only one who can pause it by temporarily disabling its DMA (in any case I would do it even without nasty active, the blitter could steal too many cycles if in a crowded area with other DMA);
- somehow you have to initialize an entry point through an IRQ, if possible of a high level and in a position of the beam that is sufficiently early to also make up for the execution of a possible instruction in progress that requires many cycles (and only the copper can do it properly, there is another problem related to the possible simultaneous use of IRQ6, but the solution is not trivial and I will not discuss it here).

It is therefore not easy to carry out this pair of movem without struggle and for sure the copper is of great help
ross is offline  
Old 21 January 2022, 04:19   #23
mc6809e
Registered User
 
Join Date: Jan 2012
Location: USA
Posts: 372
Quote:
Originally Posted by ross View Post
- somehow you have to initialize an entry point through an IRQ, if possible of a high level and in a position of the beam that is sufficiently early to also make up for the execution of a possible instruction in progress that requires many cycles (and only the copper can do it properly, there is another problem related to the possible simultaneous use of IRQ6, but the solution is not trivial and I will not discuss it here)
CIAB can generate a level 6 interrupt and can trigger on hsync. Seems to have been designed with the idea that the CPU could be used to control display registers on a line by line basis.
mc6809e is offline  
Old 21 January 2022, 09:14   #24
ross
Defendit numerus
 
ross's Avatar
 
Join Date: Mar 2017
Location: Crossing the Rubicon
Age: 53
Posts: 4,468
Quote:
Originally Posted by mc6809e View Post
CIAB can generate a level 6 interrupt and can trigger on hsync. Seems to have been designed with the idea that the CPU could be used to control display registers on a line by line basis.
Another yes and no

What CIAB level 6 interrupt do is use hsync to decrease the prescaler and trigger IRQ on underflow.
So you need the pre-sync the counter to a defined position, and anyway hope that the line start time is right for all the necessary initializations (you basically need a post sync during the Level 6 IRQ).
No one on the Amiga uses CIAB to synchronize line by line basis for a reason, it is used for timed events.

And we are completely excluding the case of another IRQ6 arriving at the same time...

There's a reason why I said it was crazy, for such a case at least.
However I have seen code that does much crazier things
ross is offline  
Old 21 January 2022, 13:27   #25
Jobbo
Registered User
 
Jobbo's Avatar
 
Join Date: Jun 2020
Location: Druidia
Posts: 387
I love all these alternate ideas for something seemingly so simple.

But nobody has suggested using the blitter to set a bunch of color registers. Is that possible? How fast would it be with nasty set?
Jobbo is offline  
Old 21 January 2022, 14:15   #26
Jobbo
Registered User
 
Jobbo's Avatar
 
Join Date: Jun 2020
Location: Druidia
Posts: 387
I looked it up and dff000 is not in chip ram. I guessed as much but couldn’t remember. What a pity. That would have been fun!
Jobbo is offline  
Old 21 January 2022, 15:02   #27
ross
Defendit numerus
 
ross's Avatar
 
Join Date: Mar 2017
Location: Crossing the Rubicon
Age: 53
Posts: 4,468
Quote:
Originally Posted by Jobbo View Post
I looked it up and dff000 is not in chip ram. I guessed as much but couldn’t remember. What a pity. That would have been fun!
Yeah

Another interesting modality it could have been copper with an extra instruction (and it wouldn't have been difficult to implement either): CMOVEM
Some bits in the upper part of the first fetch could have been used as encoding space, as a counter.

In an alternate universe
ross is offline  
Old 21 January 2022, 15:09   #28
roondar
Registered User
 
Join Date: Jul 2015
Location: The Netherlands
Posts: 3,408
Quote:
Originally Posted by ross View Post
Yeah

Another interesting modality it could have been copper with an extra instruction (and it wouldn't have been difficult to implement either): CMOVEM
Some bits in the upper part of the first fetch could have been used as encoding space, as a counter.

In an alternate universe
So I'm not the only one who thought of that one
Same alternative universe could also have a CMOVER (repeatedly move values from the list after the CMOVER to the same register over and over).

Ah well, the Copper is still great even with it's quirks
roondar is offline  
Old 21 January 2022, 15:27   #29
ross
Defendit numerus
 
ross's Avatar
 
Join Date: Mar 2017
Location: Crossing the Rubicon
Age: 53
Posts: 4,468
Quote:
Originally Posted by roondar View Post
Same alternative universe could also have a CMOVER (repeatedly move values from the list after the CMOVER to the same register over and over).
Free chunky modes
ross is offline  
Old 21 January 2022, 18:32   #30
a/b
Registered User
 
Join Date: Jun 2016
Location: europe
Posts: 1,039
While we are still in fantasy land, 68000 with index scaling :P.
a/b is offline  
 


Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 
Thread Tools

Similar Threads
Thread Thread Starter Forum Replies Last Post
Scroll/horizontal delay issue (with copper split) chadderack Coders. Asm / Hardware 8 22 October 2021 13:50
changing colours in c64 forever honx support.Amiga Forever 9 29 March 2019 21:03
DblPAL vs changing the screen bitmap using Copper BSzili Coders. System 2 23 August 2016 14:49
double copper colours turrican3 support.WinUAE 12 19 January 2016 11:20
Changing colours in CLI? Dreedo support.Other 2 09 January 2011 01:02

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT +2. The time now is 22:24.

Top

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2024, vBulletin Solutions Inc.
Page generated in 0.10541 seconds with 16 queries