Topic: New command available for ESXDOS
Eons ago, I started making my own video players, first for the DivIDE, then for the +3e system, and now with the ZX-Uno development almost finished, I've ported one of these players to it.
It's a video-only player (no sound, sorry), but it is device-independent. That is: you can use it with DivIDE and/or DivMMC. It uses the double screen buffer mode of the 128K, so you need one of these.
Asuming you have the ESXDOS SDK (which I won't post here), all you need is to assemble this source code with PASMO using binary output mode (not tap or tapbas) and you're done
The video format is explained as a comment at the beginning of the source code, but as this is in spanish, I will translate it into english:
VIDEO is composed of HEADER, followed by a sequence of one or more FRAMES
HEADER: 256 fixed block.
Offsets 00h to 02h contains the letteres Z X M
Offset 10h-11h contains the number of frame of current video (not used by this player)
Offset 12h contains the number of 512 byte sectors used per frame, including padding. The value in this offset is 0Ch for a monochrome video data (0Ch = 12 sectors * 512 = 6144 bytes), and 0Eh for colour video data (0Eh = 14 * 512 = 7168 bytes)
Rest of bytes in header have reserved meaning. Currently they are set to 0.
For monochrome videos, a frame is just 6144 bytes of frame data in the same format as the ZX Spectrum screen memory. A pixel with value 0 is displayed as white. A pixel with value 1 is displayed as black
For colour videos, a frame is composed by a small padding block of 256 bytes followed by 6912 bytes of frame data in the same format as the ZX Spectrum screen memory. The padding is to ensure each frame uses an integral number of sectors
You can test this command with two provided videos from the ZX-Uno repository