BRUCE@UMDD.BITNET (Bruce Crabill) (01/08/88)
Talking to a DCSS is quite simple, you just use Diagnose X'64'. Use the LOADSYS function to attach it to your virtual machine (making sure that it isn't overlaying something important like CMS) and branch to the appropriate place in the DCSS. Exactly how you use the DCSS is up to the person who put the code in the DCSS. I would recommend that if you are doing one from scratch to use a branch vector table at the beginning of the DCSS. This is a table of branch statements (you could also use an ACON table) that contains the proper address within the DCSS of the desired routine. To use it, you would branch into the branch table at a fixed offset for a given routine (or load the ACON for a given entry point) and this would branch to the proper location in the DCSS. This has the advantage that the user code doesn't have to change if you update the DCSS and things move around. The segment loader could also be a bit fancier and do a FINDSYS to find the starting address of the segment, in case you want to move it later. If it is a shared DCSS, make sure that all of your code is reenterant. Bruce