This is msscrn.c in view mode; [Download] [Up]
/* MSDOS screen interface for JOE */ #include <stdio.h> #include <dos.h> #include "blocks.h" #include "vs.h" #include "tty.h" #include "zstr.h" #include "scrn.h" int skiptop=0; int lines=0; int columns=0; int dopadding=0; extern int mid; /* Table of MSDOS monochrome screen attribute combinations */ unsigned atab[]= { 7*256, 112*256, 1*256, 112*256, 15*256, 112*256, 9*256, 112*256 }; /* How to display characters */ unsigned xlata[256]= { UNDERLINE, UNDERLINE, UNDERLINE, UNDERLINE, UNDERLINE, UNDERLINE, UNDERLINE, UNDERLINE, UNDERLINE, UNDERLINE, UNDERLINE, UNDERLINE, UNDERLINE, UNDERLINE, UNDERLINE, UNDERLINE, UNDERLINE, UNDERLINE, UNDERLINE, UNDERLINE, UNDERLINE, UNDERLINE, UNDERLINE, UNDERLINE, UNDERLINE, UNDERLINE, UNDERLINE, UNDERLINE, UNDERLINE, UNDERLINE, UNDERLINE, UNDERLINE, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, UNDERLINE, INVERSE+UNDERLINE, INVERSE+UNDERLINE, INVERSE+UNDERLINE, INVERSE+UNDERLINE, INVERSE+UNDERLINE, INVERSE+UNDERLINE, INVERSE+UNDERLINE, INVERSE+UNDERLINE, INVERSE+UNDERLINE, INVERSE+UNDERLINE, INVERSE+UNDERLINE, INVERSE+UNDERLINE, INVERSE+UNDERLINE, INVERSE+UNDERLINE, INVERSE+UNDERLINE, INVERSE+UNDERLINE, INVERSE+UNDERLINE, INVERSE+UNDERLINE, INVERSE+UNDERLINE, INVERSE+UNDERLINE, INVERSE+UNDERLINE, INVERSE+UNDERLINE, INVERSE+UNDERLINE, INVERSE+UNDERLINE, INVERSE+UNDERLINE, INVERSE+UNDERLINE, INVERSE+UNDERLINE, INVERSE+UNDERLINE, INVERSE+UNDERLINE, INVERSE+UNDERLINE, INVERSE+UNDERLINE, INVERSE+UNDERLINE, INVERSE, INVERSE, INVERSE, INVERSE, INVERSE, INVERSE, INVERSE, INVERSE, INVERSE, INVERSE, INVERSE, INVERSE, INVERSE, INVERSE, INVERSE, INVERSE, INVERSE, INVERSE, INVERSE, INVERSE, INVERSE, INVERSE, INVERSE, INVERSE, INVERSE, INVERSE, INVERSE, INVERSE, INVERSE, INVERSE, INVERSE, INVERSE, INVERSE, INVERSE, INVERSE, INVERSE, INVERSE, INVERSE, INVERSE, INVERSE, INVERSE, INVERSE, INVERSE, INVERSE, INVERSE, INVERSE, INVERSE, INVERSE, INVERSE, INVERSE, INVERSE, INVERSE, INVERSE, INVERSE, INVERSE, INVERSE, INVERSE, INVERSE, INVERSE, INVERSE, INVERSE, INVERSE, INVERSE, INVERSE, INVERSE, INVERSE, INVERSE, INVERSE, INVERSE, INVERSE, INVERSE, INVERSE, INVERSE, INVERSE, INVERSE, INVERSE, INVERSE, INVERSE, INVERSE, INVERSE, INVERSE, INVERSE, INVERSE, INVERSE, INVERSE, INVERSE, INVERSE, INVERSE, INVERSE, INVERSE, INVERSE, INVERSE, INVERSE, INVERSE, INVERSE, INVERSE+UNDERLINE, }; unsigned char xlatc[256]= { 64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79, 80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95, 32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47, 48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, 64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79, 80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95, 96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111, 112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,63, 64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79, 80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95, 32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47, 48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, 64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79, 80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95, 96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111, 112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,63 }; /* Set attributes */ int attr(t,c) SCRN *t; int c; { return 0; } void setregn() {} void setins() {} int clrins() { return 0; } int eraeol(t,x,y) SCRN *t; { while(x<t->co) t->scrn[y*t->co+x++]=0x0720; } SCRN *nopen() { SCRN *t=(SCRN *)malloc(sizeof(SCRN)); short *screen; union REGS regs; ttopen(); regs.h.ah=0x0F; int86(0x10,®s,®s); if(regs.h.al==7) t->scrn=(char *)0xB0000000; else t->scrn=(char *)0xB8000000; t->co=regs.h.ah; t->li= *(unsigned char *)0x00400084+1; if(!t->li) t->li=25; t->scroll=0; t->insdel=0; t->updtab=0; t->sary=0; t->compose=0; nresize(t,t->co,t->li); return t; } void nresize(t,w,h) SCRN *t; { if(h<4) h=4; if(w<8) w=8; t->li=h; t->co=w; if(t->updtab) free(t->updtab); if(t->sary) free(t->sary); if(t->compose) free(t->compose); t->updtab=(int *)malloc(t->li*sizeof(int)); t->sary=(int *)malloc(t->li*sizeof(int)); t->compose=(int *)malloc(t->co*sizeof(int)); nredraw(t); } int cpos(t,x,y) SCRN *t; { union REGS regs; regs.h.ah=2; regs.h.dh=y; regs.h.dl=x; regs.h.bh=0; int86(0x10,®s,®s); return 0; } void magic() {} void nscroll() {} void npartial(t) SCRN *t; { } void nescape(t) SCRN *t; { cpos(t,0,t->li-1); } void nreturn(t) SCRN *t; { nredraw(t); } void nclose(t) SCRN *t; { cpos(t,0,t->li-1); eraeol(t,0,t->li-1); ttclose(); } void nscrldn(t,top,bot,amnt) SCRN *t; { nredraw(t); } void nscrlup(t,top,bot,amnt) SCRN *t; { nredraw(t); } void nredraw(t) SCRN *t; { msetI(t->updtab+skiptop,-1,t->li-skiptop); }
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.