GEM consists of two modules which provide services:
GEM/1 and GEM/2 hook three interrupts. GEM/3 and ViewMAX hook two...
If CH is not 4, the call returns immediately. Otherwise, the call goes to the VDI with DS:DX pointing to the parameter block.
The ViewMAX and GEM/3 VDIs do not hook this interrupt.
For calls to the AES: DX=0; ES:BX -> AES parameter block; CX=00C8h or 00C9h. For calls to the VDI: DS:DX -> VDI parameter block; CX=0473h (ignored by the VDI, but used to get the call past the AES).If the AES is not loaded, all calls go to the VDI, which ignores CX. The installation check below should be used to find whether the AES or VDI are present.
DD control ;Control array. 5 words. DD global ;Global variables. 15 words. DD int_in ;Integer parameters DD int_out ;Integer results DD addr_in ;Address (DWORD) parameters DD addr_out;Address (DWORD) results
control is five words in size:
DW function ;AES function number, 10-132 DW no. of words in int_in DW no. of words available in int_out DW no. of words in addr_in DW no. of words available in addr_out
DD contrl ;Control array. 11 words. DD intin ;Integer parameters DD ptsin ;(x,y) pair parameters DD intout ;Integer results DD ptsout ;(x,y) pair results
contrl is 11 words:
DW function ;VDI function number, 1-132 DW [in] no. of words in ptsin DW [out] no. of words in ptsout DW [in] no. of words in intin DW [out] no. of words in intout DW subfunction DW graphics handle DD [in] pointer parameter DD [out] pointer return
Two bytes after the INT EFh entry point, one of the following ASCII sequences should appear:
Either sequence is followed by a zero-terminated ASCII number. Known combinations are: