/* SG C Tools 1.1 (C) 1993 Steve Goldsmith All Rights Reserved Compiled with HI-TECH C 3.09 (CP/M-80). */ #include #include uchar vdcRegsToSave[] = /* vdc registers to save and restore */ {0,1,2,3,4,5,6,7,8,9,10,11,12,13, 22,23,24,25,26,27,28,29,34,35,36}; uchar vdcRegs[sizeof(vdcRegsToSave)-1]; /* saved vdc registers */ uchar vdcScrHorz; /* vars initilized by savevdc() */ uchar vdcScrVert; ushort vdcScrSize; ushort vdcDispMem; ushort vdcAttrMem; ushort vdcCharMem; ushort vdcCharMemSize; uchar vdcCharBytes; ushort vdcBitMapMem; /* save and restore key vdc registers and initilize 'vdc' vars */ void savevdc(void) { uchar I; for(I = 0; I < sizeof(vdcRegs); I++) /* save key vdc regs */ vdcRegs[I] = invdc(vdcRegsToSave[I]); vdcScrHorz = invdc(vdcHzDisp); /* init global vdc vars */ vdcScrVert = invdc(vdcVtDisp); vdcScrSize = vdcScrHorz*vdcScrVert; vdcDispMem = (invdc(vdcDspStAddrHi) << 8)+invdc(vdcDspStAddrLo); vdcAttrMem = (invdc(vdcAttrStAddrHi) << 8)+invdc(vdcAttrStAddrLo); if ((invdc(vdcChTotalVt) & 0x1F) > 0x0F) { vdcCharMem = (invdc(vdcChSetStAddr) & 0xC0) << 8; vdcCharBytes = vdcMaxCharBytes; vdcCharMemSize = (vdcCharsPerSet*vdcCharBytes) << 1; } else { vdcCharMem = (invdc(vdcChSetStAddr) & 0xE0) << 8; vdcCharBytes = vdcMaxCharBytes >> 1; vdcCharMemSize = (vdcCharsPerSet*vdcCharBytes) << 1; } vdcBitMapMem = 0; } void restorevdc(void) { uchar I; for(I = 0; I < sizeof(vdcRegs); I++) /* restore vdc regs saved with savevdc() */ outvdc(vdcRegsToSave[I],vdcRegs[I]); }