CPCWiki forum

General Category => Programming => Topic started by: AHack on 19:47, 29 April 19

Title: Is it possible to start an interrupt early?
Post by: AHack on 19:47, 29 April 19
I have a screen size of 40*28 in size and would like to extend it to 40x30. Video memory is pretty tight and I use two 16k areas and mix things up with 4 ruptures. With all this going on I have space left of 40x2 chars, hence I would like to use it and extend the display.


It's pretty easy for me to extend for the bottom part of the screen but the top half is not so easy. After the Vblank I set CRTC registor 1 to 0 and in interrupt 2 I set it to 40 which creates a border for the top half of the screen - this way I don't show video memory that would wrap from the bottom part of the screen. I know I could put a massive delay in interrupt 1 but that really is not ideal. So is it possible to make interrupt 2 start early by one char?


If this is not possible then I'm still happy with a 40x28 screen size but it would be nice to use that spare video memory and extend the display. Thanks for any help in advance :)



Title: Re: Is it possible to start an interrupt early?
Post by: AHack on 09:11, 30 April 19
I worked it out another way by adding in a new rupture but at the sacrifice of losing 1 char line. My display is 40x29 and is built up from two 16k screens.


By doing this I uncovered some CRTC type 1 timing issues with the ruptures which I fixed up. Winape is such an awesome emulator for the CRTC differences. It must of been a minefield back in the 80s for anybody to get things to work on the different CRTC types. I think it would of been pot luck if you got something to work on all types.


Ok, all my test stuff works really great now! And it will definitly work on 64k machines as I have 32k to play with for code and graphics. If I just made it for the 128k machines the code would run quicker and more effects could be done but I want to keep this within 64k limits. Since I started looking into this I am very surprised on what the Amstrad can do with all the techniques that were discovered long after the machine's commercial use was over. I have heaps of raster time after the scrolling system is implemented.


I think the Amstard has the potential to be the best 8bit computer in terms of what you can do with it. I would say it's a hybred of the Spectrum and C64. The Spectrum was just pure CPU programming with no hardware assist and because of that it was open to a lot of experimentation and clever coding tricks. The C64 had all the hardware like scrolling and sprites with the limitation of a char screen but that tended to make programmers just work within what the hardware can do... don't get me wrong coders found ways to use the hardware with clever programming tricks. The Amstrad on the other hand has harwdare assist with the CRTC and a Z80 CPU where stack abuse can speed things up dramatically. Coders on the Amstrad have the freedom to play around with the CRTC to get hardware scrolling and rupture tricks with a Z80 CPU that has good insructions to do 16bit writes and reads with stack abuse to emulate fast sprites. And to boot it has a bitmap screen that allows all the colours to be used freely.


Next on my list is to turn all this test code into something special that will prove the Amstrad was the best 8bit computer ;)  The only downside for the Amstrad is that it has no SID sound chip but in graphics terms it has the potential to beat the C64 at some types of games.
Title: Re: Is it possible to start an interrupt early?
Post by: pelrun on 09:29, 30 April 19
Check Amstrad Computer User issues 38 and 39 (Jan-Feb 1988), there's a Big Screen typein which provides a 32 line mode.  ;D
Title: Re: Is it possible to start an interrupt early?
Post by: AHack on 09:36, 30 April 19
Unfortunately no good for me because I rupture the screen all over the place for scrolling and static areas.
Powered by SMFPacks Menu Editor Mod