![]() |
Fill Routine - Printable Version +- Forum (https://www.boriel.com/forum) +-- Forum: Compilers and Computer Languages (https://www.boriel.com/forum/forumdisplay.php?fid=12) +--- Forum: ZX Basic Compiler (https://www.boriel.com/forum/forumdisplay.php?fid=11) +---- Forum: How-To & Tutorials (https://www.boriel.com/forum/forumdisplay.php?fid=13) +---- Thread: Fill Routine (/showthread.php?tid=439) |
Fill Routine - britlion - 02-27-2012 I FINALLY (I've been meaning to for years) Got around to making Alvin Albrecht's Fill routine work in ZX BASIC, I think. http://dl.dropbox.com/u/4903664/SPFill.zip Compile SPPFill.bas and it pulls in all the other bits, which I've hacked to ignore timex modes. Boriel - I think this, with a bit of clean up, should possibly go into the compiler as available. Thanks, Na_th_an for reminding me of SPLIB2, which made me see this again, and go "Right, I'm gonna do this this time..." Re: Fill Routine - na_th_an - 02-29-2012 Now THIS is what I was looking for! Thanks, man, now it's time to port SUVLEIR to pure, native ZX Basic, and I'm giving you tons of credits for it! (I was using SUVLEIR in a ZXBasic project, but I *had* to use that ugly, external binary compiled with z88dk from my BASIC code using ugly POKEs and CALLs...) Re: Fill Routine - na_th_an - 02-29-2012 I'm having problems. A call to the routine seems to mess up something (maybe some register should be preserved?). My routine is simple, quoting the interesting bit: Code: While (endOfDrawing > binAddress) Notice the call to SPPFill towards the end of the code. If I comment that line, the vector drawing renders OK (albeit, without fills), but if I leave it uncommented, it somehow messes something so binAddress goes elsewhere and it draws random lines until the program crashes. I've found that somehow ZX Basic doens't like IX messed with, so if I do: Code: Asm It just works! Not a big deal, but I just wanted you to know. I might have something to publish very soon ![]() Re: Fill Routine - britlion - 02-29-2012 Ah yes. ZX Basic points IX into the stack, and uses it as a stack reference (variable x is IX+a etc). Since SPPFill uses that I should push and pop it in there, I think. I'll experiment when I have a little time. Re: Fill Routine - boriel - 02-29-2012 na_th_an Wrote:I've found that somehow ZX Basic doens't like IX messed with, so if I do:That's it. ZX Basic requires IX register to be preserved before exiting/entering BASIC functions. It's used to manage the stack frame: the parameters, for example, are loaded using (IX+n), etc. Re: Fill Routine - na_th_an - 03-01-2012 Good to know ![]() Re: Fill Routine - na_th_an - 03-07-2012 I've updated my vector drawing/displaying package. Release here: http://www.mojontwins.com/mojoniaplus/viewtopic.php?f=12&t=891 Short tutorial (albeit in spanish) here: http://tcyr.wordpress.com/2012/03/07/suvleir-3-0-super-ultra-vector-library-experience-inspire-redux-3-0/ Re: Fill Routine - britlion - 03-07-2012 Very nice, Na_th_an! Re: Fill Routine - na_th_an - 03-07-2012 Only possible thanks to your work ![]() Re: Fill Routine - slenkar - 03-07-2012 good idea to draw background screens that way Re: Fill Routine - boriel - 03-07-2012 ![]() This library *should* go integrated with the compiler. May I :?: BTW as stated before, I've started 2.x branch. This would need extensive compile testing... (if someone dares). The 2.x branch aims to be a new different and extensively rewritten compiler (it might even transform your spectrum into a Commodore VIC-20 :?: :? ![]() Re: Fill Routine - na_th_an - 03-08-2012 As always, feel free to use whatever I produce in the compiler library ![]() If you like, I can try the new compiler branch. I'm developing a series of tutorials and I can try to compile everything with the new version and report how it goes. Re: Fill Routine - slenkar - 03-09-2012 Nathan I like your avatar at ojodepez-fanzine.net/ Re: Fill Routine - boriel - 03-18-2012 britlion Wrote:Boriel - I think this, with a bit of clean up, should possibly go into the compiler as available.Thanks, for this! I'm about to do so, however, notice there are ASM routines called inc and dec screen position. Very (almost identical) routines are already packeted with the optimized DRAW routine (It's really very optimized!). I think it would be a good idea to replace SPPixelUP: body with a simple call to INCY / DECY routines, or vice versa, replace DRAW INC/DEC y routines with these ones. They are almost identical, except some flag check. Since DRAW is alwaws packed with ZX BASIC I guess it would be rather easy to replace them so no duplicated code is included and so, some precious bytes saved! Re: Fill Routine - britlion - 04-07-2012 You could also add extra labels to the inbuilt functions, so they are collected with SPPixelUp and down? This way at least the labelling is consistent with the whole SPLIB2 system, should it be implemented in full. (in short, replace two of Albrecht's routines with the inbuilt ones, but be able to jump to them using the same naming convention as he has in everything else) There may be more of his routines that can be replaced, of course. Edit: Oh, there is a difference: exit : Carry = moved off screen So we'd need to replace the routine with SPPixelUp: call INCY CP $40 ret This would be shorter, it's true; though it buries an extra call and some flagging in it. |