A few points here (as I happily steal and repurpose this code for my own demo)...
_RGB32(119, 24, 49) —> Just make these _RGB commands (no 32), and you can use this in other screen modes (like SCREEN 12 or 256-color mode). Only thing to watch for is if the fill color is used elsewhere in the program. In 32-bit mode, that _RGB color isn’t very likely to be used previously (a simple generation of a random color, and a check to make certain it’s not in use could eliminate all “paint bleeds”), but as we reduce our color palette smaller, it’s more likely to fill wrong areas...
I haven’t looked at Petr’s fill routine yet, but it might work better in lower colors modes, without the worry of bad fills. I’ll need to check it out later. ;)
Point 2: Get _DEST and _SOURCE at the start of the sub, and then restore them at exit time, if you want the routine to be more portable. ;)