1*31202Sminshall #define LINT_ARGS 2*31202Sminshall #include <stdio.h> 3*31202Sminshall 4*31202Sminshall #include "../api/api.h" 5*31202Sminshall 6*31202Sminshall int api_sup_errno = 0; 7*31202Sminshall 8*31202Sminshall int 9*31202Sminshall api_issue(ah, al, bh, bl, cx, dx, parms) 10*31202Sminshall int 11*31202Sminshall ah, 12*31202Sminshall al, 13*31202Sminshall bh, 14*31202Sminshall bl, 15*31202Sminshall cx, 16*31202Sminshall dx; 17*31202Sminshall char *parms; 18*31202Sminshall { 19*31202Sminshall union REGS regs; 20*31202Sminshall struct SREGS sregs; 21*31202Sminshall static int oures = 0; 22*31202Sminshall 23*31202Sminshall if (oures == 0) { 24*31202Sminshall segread(&sregs); 25*31202Sminshall oures = sregs.es; 26*31202Sminshall } 27*31202Sminshall regs.h.ah = ah; 28*31202Sminshall regs.h.al = al; 29*31202Sminshall regs.h.bh = bh; 30*31202Sminshall regs.h.bl = bl; 31*31202Sminshall regs.x.cx = cx; 32*31202Sminshall regs.x.dx = dx; 33*31202Sminshall sregs.es = oures; 34*31202Sminshall regs.x.di = (int) parms; 35*31202Sminshall 36*31202Sminshall int86x(API_INTERRUPT_NUMBER, ®s, ®s, &sregs); 37*31202Sminshall if (regs.h.cl != 0) { 38*31202Sminshall api_sup_errno = regs.h.cl; 39*31202Sminshall return -1; 40*31202Sminshall } else { 41*31202Sminshall return 0; 42*31202Sminshall } 43*31202Sminshall } 44*31202Sminshall 45*31202Sminshall 46*31202Sminshall int 47*31202Sminshall api_name_resolve(name) 48*31202Sminshall char *name; 49*31202Sminshall { 50*31202Sminshall NameResolveParms parms; 51*31202Sminshall int i; 52*31202Sminshall union REGS regs; 53*31202Sminshall struct SREGS sregs; 54*31202Sminshall static int oures = 0; 55*31202Sminshall 56*31202Sminshall for (i = 0; i < sizeof parms.gate_name; i++) { 57*31202Sminshall if (*name) { 58*31202Sminshall parms.gate_name[i] = *name++; 59*31202Sminshall } else { 60*31202Sminshall parms.gate_name[i] = ' '; 61*31202Sminshall } 62*31202Sminshall } 63*31202Sminshall 64*31202Sminshall if (oures == 0) { 65*31202Sminshall segread(&sregs); 66*31202Sminshall oures = sregs.es; 67*31202Sminshall } 68*31202Sminshall regs.h.ah = NAME_RESOLUTION; 69*31202Sminshall regs.h.al = 0; 70*31202Sminshall regs.h.bh = 0; 71*31202Sminshall regs.h.bl = 0; 72*31202Sminshall regs.x.cx = 0; 73*31202Sminshall regs.x.dx = 0; 74*31202Sminshall sregs.es = oures; 75*31202Sminshall regs.x.di = (int) &parms; 76*31202Sminshall 77*31202Sminshall int86x(API_INTERRUPT_NUMBER, ®s, ®s, &sregs); 78*31202Sminshall if (regs.h.cl != 0) { 79*31202Sminshall api_sup_errno = regs.h.cl; 80*31202Sminshall return -1; 81*31202Sminshall } else { 82*31202Sminshall return regs.x.dx; 83*31202Sminshall } 84*31202Sminshall } 85