1) Are you just trying to write 1 sub-brick at a time, to a new file at each TR?
2) THD_copy_dset_subs() does call the load function, but that should do nothing if the dataset is already in memory. Are you actually seeing it access disk?
3) We talked about this a little on Friday, to avoid real work and to avoid thinking about the stock market, and I thought that a way to maintain real-time-ositiness would be to do the disk writing in a forked sub-process. That would be more complicated to code, of course.
4) Matlab? eeeewww.