| static char RCSId[] = "$Id: kernel.c,v 1.2 1993/07/04 04:04:21 root Exp root $"; |
| static char Copyright[] = "Copyright Robert J. Amstadt, 1993"; |
| |
| #include <stdio.h> |
| #include <stdlib.h> |
| #include "prototypes.h" |
| |
| extern unsigned short *Stack16Frame; |
| |
| /********************************************************************** |
| * KERNEL_LockSegment |
| */ |
| int |
| KERNEL_LockSegment(int segment) |
| { |
| if (segment == -1) |
| segment = *(Stack16Frame + 6); |
| |
| #ifdef RELAY_DEBUG |
| printf("LockSegment: segment %x\n", segment); |
| #endif |
| |
| return segment; |
| } |
| |
| /********************************************************************** |
| * KERNEL_UnlockSegment |
| */ |
| int |
| KERNEL_UnlockSegment(int segment) |
| { |
| if (segment == -1) |
| segment = *(Stack16Frame + 6); |
| |
| #ifdef RELAY_DEBUG |
| printf("UnlockSegment: segment %x\n", segment); |
| #endif |
| |
| return segment; |
| } |
| |
| /********************************************************************** |
| * KERNEL_WaitEvent |
| */ |
| int |
| KERNEL_WaitEvent(int task) |
| { |
| #ifdef RELAY_DEBUG |
| printf("WaitEvent: task %d\n", task); |
| #endif |
| return 0; |
| } |
| /********************************************************************** |
| * KERNEL_GetModuleFileName |
| */ |
| int |
| KERNEL_GetModuleFileName(int module, char *filename, int bytes) |
| { |
| #ifdef RELAY_DEBUG |
| printf("GetModuleFileName: module %d, filename %x, bytes %d\n", |
| module, filename, bytes); |
| #endif |
| |
| strcpy(filename, "TEST.EXE"); |
| |
| return strlen(filename); |
| } |
| |
| /********************************************************************** |
| * KERNEL_DOS3Call |
| */ |
| int |
| KERNEL_DOS3Call(int ax, int cx, int dx, int bx, int sp, int bp, |
| int si, int di, int ds, int es) |
| { |
| switch ((ax >> 8) & 0xff) |
| { |
| case 0x30: |
| return 0x0303; |
| |
| case 0x25: |
| case 0x35: |
| return 0; |
| |
| case 0x4c: |
| exit(ax & 0xff); |
| |
| default: |
| fprintf(stderr, "DOS: AX %04x, BX %04x, CX %04x, DX %04x\n", |
| ax, bx, cx, dx); |
| fprintf(stderr, " SP %04x, BP %04x, SI %04x, DI %04x\n", |
| sp, bp, si, di); |
| fprintf(stderr, " DS %04x, ES %04x\n", |
| ds, es); |
| } |
| |
| return 0; |
| } |