My car uses a very early draft of the same protocol, ISO 14230.
I'm working on porting some code that talks using this protocol and have got it to work with an ecu emulator. I'll be fabbing up the actual K-line circuitry this weekend using an L9637D line driver, but I need to get my hands on a plug for the OBD port (I may butcher an ELM 327 that I have).
It may be that this port (which is partially functional now) would be a good start point for you -> https://github.com/BennehBoy/td5opencomstm32
The only finicky bits that will likely differ is that my vehicle expects a key response to a seed, you might need to hack that bit out of the code. It also has some strict timing to start the initialisation (300ms K-line held active), and 25ms delays between responses.
The emulator is also in the archive so that too might be a good place to look.
If you have a logic analyser I'd strongly recommend that you sniff the k-line on your vehicle, probably best done in conjunction with a working diags unit (which sort of defeats the purpose!).
Happy to help with any queries you might have.
To be clear....
I have working ELM327 code that happily reads generic diag info from an ELM327 emulator. My ELM clone also does not support k-line so it fails to work with this, however it will read the same PIDS from CAN vehicles.
I _also_ am working on a K-line based port of a diag system that is for my actual vehicle, the intention is that I will either directly integrate the code into my other project, or more likely I'll make an ELM327 translator that my other project will connect to via bluetooth.