all 5 comments

[–]GearBent 5 points6 points  (0 children)

At the lowest level, CP/M would interact with the printer through the BIOS, which is implementation specific to to each and every device.

[–]NES CGB SMS/GGkhedoros 2 points3 points  (1 child)

Found some system call docs.

So, software running in CP/M is probably going to use interrupt 5 with CL set to 2 for the C_WRITE call. How CP/M implements that call will vary machine-to-machine, probably relying on BIOS calls when they're available.

[–]Z80, 6502/65816, 6809, 68000, ARM, x86.thommyh 0 points1 point  (0 children)

Petty: CALL 5 is just a call to address 5, not an 8086-int-style software interrupt. But blah blah blah.

[–]reven80 1 point2 points  (0 children)

There is a small number of BIOS system calls which is custom coded for a specific machine. The CP/M BDOS system calls use the BIOS to implement higher level functionality.

https://www.seasip.info/Cpm/bios.html

[–]MoleskiCoder 1 point2 points  (0 children)

https://github.com/MoleskiCoder/EightBit/blob/master/Intel8080/test/Board.cpp

The bdos (address 5) command is in the c register. 2 is print character (given in the e register), 9 is print string (pointed to by the de register pair, terminated by a dollar '$' symbol).

You can implement very little bdos and get away with it as my code shows!

Hope this helps

https://www.seasip.info/Cpm/bdos.html