Hi All,

I've been digging into assembly language programming on the M100 and the documentation is fragmented, to say the least and so progress is stilted a bit. I've made significant progress on the programming toolchain - CP/M is great for this. It gives a rational file system, ed, asm, load, ddt, a way to run the app, a way to display the source, listings, etc. VEDIT is available as a visual editor, but editing on a host and running on CP/M is workable and fast. I've also gotten MAC, RMAC, and LINK working which is nice.

CP/M provides functions that are callable in assembly code and I've made good progress on how to make CP/M work for simple I/O and File I/O. But, the M100 has features, like the LCD, the serial and parallel ports, etc. that make it unique. Is the assembly language CP/M programmer left on their own to interface with these devices or are they given access to something akin to BIOS (maybe the ROM functions) to make it easier?

Say that I want to place a pixel, or draw a line, or whatnot. Does CP/M have any machine level routines to call, or what? Can I call the ROM routines from CP/M? I saw some trampoline code on the wiki, some language saying that it was tricky to do, a pointer to some old docs, etc. Is that the way forward - call the main rom from CP/M as described in https://bitchin100.com/wiki/index.php?title=Calling_the_Main_ROM_from_Option_ROM, or, is it a matter of programming the ports?

On the one hand, my questions are simple - how do I put a pixel on the screen at a give location and erase it when I want to? With minimal fuss. On the other hand, I'm curious about how CP/M and the M100 coexist and what overlap exists between the two when CP/M is active.

Thanks,

Will

Reply via email to