Пример #1
0
int main(void)
{
    void    *vfBuffer;

    printf("Program running in ");
    switch (PM_getModeType()) {
	case PM_realMode:
	    printf("real mode.\n\n");
	    break;
	case PM_286:
	    printf("16 bit protected mode.\n\n");
	    break;
	case PM_386:
	    printf("32 bit protected mode.\n\n");
	    break;
	}

    if (!VF_available()) {
	printf("Virtual Linear Framebuffer not available.\n");
	exit(1);
	}

    vfBuffer = VF_init(0xA0000,64,sizeof(code),code);
    if (!vfBuffer) {
	printf("Failure to initialise Virtual Linear Framebuffer!\n");
	exit(1);
	}
    VF_exit();
    printf("Virtual Linear Framebuffer set up successfully!\n");
    return 0;
}
Пример #2
0
int main(void)
{
    FILE    *f;

    printf("Program running in ");
    switch (PM_getModeType()) {
	case PM_realMode:
	    printf("real mode.\n\n");
	    break;
	case PM_286:
	    printf("16 bit protected mode.\n\n");
	    break;
	case PM_386:
	    printf("32 bit protected mode.\n\n");
	    break;
	}

    PM_installAltCriticalHandler(criticalHandler);
    printf("Critical Error handler installed - trying to read from A: drive...\n");
    f = fopen("a:\bog.bog","rb");
    if (f) fclose(f);
    if (criticalError) {
	printf("Critical error occured on INT 21h function %02X!\n",
	    axValue >> 8);
	}
    else
Пример #3
0
int main(void)
{
    RMREGS          regs;
    RMSREGS         sregs;
    VgaInfoBlock    vgaInfo;
    ushort          *mode;
    uint            vgLen;
    uchar           *vgPtr;
    unsigned        r_vgseg,r_vgoff;

    printf("Program running in ");
    switch (PM_getModeType()) {
	case PM_realMode:
	    printf("real mode.\n\n");
	    break;
	case PM_286:
	    printf("16 bit protected mode.\n\n");
	    break;
	case PM_386:
	    printf("32 bit protected mode.\n\n");
	    break;
	}

    /* Allocate a 256 byte block of real memory for communicating with
     * the VESA BIOS.
     */
    if ((vgPtr = PM_getVESABuf(&vgLen,&r_vgseg,&r_vgoff)) == NULL) {
	printf("Unable to allocate VESA memory buffer!\n");
	exit(1);
	}

    /* Call the VESA VBE to see if it is out there */
    regs.x.ax = 0x4F00;
    regs.x.di = r_vgoff;
    sregs.es = r_vgseg;
    memcpy(vgPtr,"VBE2",4);
    PM_int86x(0x10, &regs, &regs, &sregs);
    memcpy(&vgaInfo,vgPtr,sizeof(VgaInfoBlock));
    if (regs.x.ax == 0x4F && strncmp(vgaInfo.VESASignature,"VESA",4) == 0) {
	printf("VESA VBE version %d.%d BIOS detected\n\n",
	    vgaInfo.VESAVersion >> 8, vgaInfo.VESAVersion & 0xF);
	printf("Available video modes:\n");
	mode = PM_mapRealPointer(vgaInfo.VideoModePtr >> 16, vgaInfo.VideoModePtr & 0xFFFF);
	while (*mode != 0xFFFF) {
	    printf("    %04hXh (%08X)\n", *mode, (int)mode);
	    mode++;
	    }
	}
Пример #4
0
int main(void)
{
    long            oldCount;
    PM_lockHandle   lh;

    printf("Program running in ");
    switch (PM_getModeType()) {
	case PM_realMode:
	    printf("real mode.\n\n");
	    break;
	case PM_286:
	    printf("16 bit protected mode.\n\n");
	    break;
	case PM_386:
	    printf("32 bit protected mode.\n\n");
	    break;
	}

    /* Install our timer handler and lock handler pages in memory. It is
     * difficult to get the size of a function in C, but we know our
     * function is well less than 100 bytes (and an entire 4k page will
     * need to be locked by the server anyway).
     */
    PM_lockCodePages((__codePtr)RTCHandler,100,&lh);
    PM_lockDataPages((void*)&count,sizeof(count),&lh);
    PM_installBreakHandler();           /* We *DONT* want Ctrl-Breaks! */
    PM_setRealTimeClockHandler(RTCHandler,128);
    printf("RealTimeClock interrupt handler installed - Hit ESC to exit\n");
    oldCount = count;
    while (1) {
	if (PM_kbhit() && (PM_getch() == 0x1B))
	    break;
	if (count != oldCount) {
	    printf("Tick, Tock: %ld\n", count);
	    oldCount = count;
	    }
	}

    PM_restoreRealTimeClockHandler();
    PM_restoreBreakHandler();
    PM_unlockDataPages((void*)&count,sizeof(count),&lh);
    PM_unlockCodePages((__codePtr)RTCHandler,100,&lh);
    printf("RealTimeClock handler was called %ld times\n", count);
    return 0;
}
Пример #5
0
int main(void)
{
    int             ch;
    PM_lockHandle   lh;

    printf("Program running in ");
    switch (PM_getModeType()) {
	case PM_realMode:
	    printf("real mode.\n\n");
	    break;
	case PM_286:
	    printf("16 bit protected mode.\n\n");
	    break;
	case PM_386:
	    printf("32 bit protected mode.\n\n");
	    break;
	}

    /* Install our timer handler and lock handler pages in memory. It is
     * difficult to get the size of a function in C, but we know our
     * function is well less than 100 bytes (and an entire 4k page will
     * need to be locked by the server anyway).
     */
    PM_lockCodePages((__codePtr)keyHandler,100,&lh);
    PM_lockDataPages((void*)&count,sizeof(count),&lh);
    PM_installBreakHandler();           /* We *DONT* want Ctrl-Breaks! */
    PM_setKeyHandler(keyHandler);
    printf("Keyboard interrupt handler installed - Type some characters and\n");
    printf("hit ESC to exit\n");
    while ((ch = PM_getch()) != 0x1B) {
	printf("%c", ch);
	fflush(stdout);
	}

    PM_restoreKeyHandler();
    PM_restoreBreakHandler();
    PM_unlockDataPages((void*)&count,sizeof(count),&lh);
    PM_unlockCodePages((__codePtr)keyHandler,100,&lh);
    printf("\n\nKeyboard handler was called %ld times\n", count);
    return 0;
}
Пример #6
0
int main(void)
{
	printf("Program running in ");
	switch (PM_getModeType()) {
		case PM_realMode:
			printf("real mode.\n\n");
			break;
		case PM_286:
			printf("16 bit protected mode.\n\n");
			break;
		case PM_386:
			printf("32 bit protected mode.\n\n");
			break;
		}

	PM_installAltBreakHandler(breakHandler);
	printf("Control C/Break interrupt handler installed\n");
	while (1) {
		if (ctrlCHit) {
			printf("Code termimated with Ctrl-C.\n");
			break;
			}
		if (breakHit) {
			printf("Code termimated with Ctrl-Break.\n");
			break;
			}
		if (PM_kbhit() && PM_getch() == 0x1B) {
			printf("No break code detected!\n");
			break;
			}
		printf("Hit Ctrl-C or Ctrl-Break to exit!\n");
		}

	PM_restoreBreakHandler();
	return 0;
}