I think if you check the BMAP struct in atypes.h you can access the actual bytes (maybe called as finalbits) to handle my a loop of memsets (resulting in areay loop length instead of areax*areay). But the BMAP should be locked/unlocked.
By the way, bmap_blit() is not okay for bmaps having an alpha channel at all.
Please tell me if succeeded, I would use it too.