From: sparky4 Date: Mon, 10 Apr 2017 15:55:09 +0000 (-0500) Subject: exmmtest.exe \> exmmtest.l16 == BOOM X-Git-Url: http://4ch.mooo.com/gitweb/?p=16.git;a=commitdiff_plain;h=5d9205e1e89bb330c1930f0260039edb846091eb exmmtest.exe \> exmmtest.l16 == BOOM --- diff --git a/bcexmm.exe b/bcexmm.exe index 791949f7..116738ad 100755 Binary files a/bcexmm.exe and b/bcexmm.exe differ diff --git a/bcexmm.prj b/bcexmm.prj index 388aa864..36465707 100755 Binary files a/bcexmm.prj and b/bcexmm.prj differ diff --git a/ca.file b/ca.file new file mode 100755 index 00000000..66ceb9e5 --- /dev/null +++ b/ca.file @@ -0,0 +1,495 @@ +------------------------------------------------------------------------------- + ./q.sh start +------------------------------------------------------------------------------- +src/imfplay.c: printf("bigbuffer %Fp\t", gvar->ca.audiosegs[0]);\ +src/imfplay.c: printf("&%Fp\n", MEMPTR gvar->ca.audiosegs[0]);\ +src/imfplay.c: MM_FreePtr(MEMPTR gvar->ca.audiosegs[0], gvar); +src/imfplay.c: MM_GetPtr(MEMPTR gvar->ca.audiosegs[0],len, gvar); +src/imfplay.c: imf_music = (struct imf_entry *)gvar->ca.audiosegs[0]; +src/lib/16_ca.c: value = *(long far *)(((byte far *)gvar->ca.grstarts)+offset); +src/lib/16_ca.c:#define GRFILEPOS(c) (gvar->ca.grstarts[c]) +src/lib/16_ca.c: gvar->handle.debughandle = open("debug.16b", O_CREAT | O_WRONLY | O_TEXT); +src/lib/16_ca.c: gvar->handle.debughandle = open("debug.16w", O_CREAT | O_WRONLY | O_TEXT); +src/lib/16_ca.c: close(gvar->handle.debughandle); +src/lib/16_ca.c: if(gvar->pm.emm.EMSVer<0x40) +src/lib/16_ca.c: if(gvar->pm.emm.EMSVer<0x40) +src/lib/16_ca.c: MM_GetPtr (MEMPTR gvar->ca.tinf,length,gvar); +src/lib/16_ca.c: CA_FarRead(handle, gvar->ca.tinf, length,gvar); +src/lib/16_ca.c: gvar->ca.tinf = (byte _seg *)FP_SEG(&maphead); +src/lib/16_ca.c: if ((gvar->ca.file.maphandle[0] = open("data/test.map", +src/lib/16_ca.c:if ((gvar->ca.file.audiohandle = open("data/02.imf", +src/lib/16_ca.c: gvar->handle.profilehandle = open("profile.16b", O_CREAT | O_WRONLY | O_TEXT); +src/lib/16_ca.c: gvar->handle.profilehandle = open("profile.16w", O_CREAT | O_WRONLY | O_TEXT); +src/lib/16_ca.c: gvar->handle.showmemhandle = open("meminfo.16b", O_CREAT | O_WRONLY | O_TEXT); +src/lib/16_ca.c: gvar->handle.showmemhandle = open("meminfo.16w", O_CREAT | O_WRONLY | O_TEXT); +src/lib/16_ca.c: gvar->ca.camap.mapon = -1; +src/lib/16_ca.c: gvar->ca.ca_levelbit = 1; +src/lib/16_ca.c: gvar->ca.ca_levelnum = 0; +src/lib/16_ca.c: close(gvar->handle.profilehandle); +src/lib/16_ca.c: close(gvar->handle.showmemhandle); +src/lib/16_ca.c: close(*(gvar->ca.file.maphandle)); +src/lib/16_ca.c: gvar->ca.grneeded[chunk] |= ca_levelbit; // make sure it doesn't get removed +src/lib/16_ca.c: if (gvar->ca.camap.mapon>-1 && gvar->ca.camap.mapheaderseg[gvar->ca.camap.mapon]) +src/lib/16_ca.c: MM_SetPurge (((memptr)gvar->ca.camap.mapheaderseg[(gvar->ca.camap.mapon)]), 3, gvar); +src/lib/16_ca.c: if (gvar->ca.camap.mapsegs[plane]) +src/lib/16_ca.c: MM_FreePtr ((memptr)gvar->ca.camap.mapsegs[plane], gvar); +src/lib/16_ca.c: gvar->ca.camap.mapon = gvar->ca.camap.mapnum; +src/lib/16_ca.c:// if (!gvar->ca.camap.mapheaderseg[gvar->ca.camap.mapnum]) +src/lib/16_ca.c:// //pos = ((_seg *)gvar->ca.camap.tinf)->headeroffsets[gvar->ca.camap.mapnum]; +src/lib/16_ca.c:// pos = ((memptr)gvar->ca.camap.tinf)->headeroffsets[gvar->ca.camap.mapnum]; +src/lib/16_ca.c:// MM_GetPtr(MEMPTR gvar->ca.camapheaderseg[mapnum],sizeof(maptype)); +src/lib/16_ca.c:// MM_SetPurge (MEMPTR mapheaderseg[mapnum], 0, &(gvar->mm)); +src/lib/16_ca.c: if (gvar->ca.ca_levelnum==7) +src/lib/16_ca.c: gvar->ca.ca_levelbit<<=1; +src/lib/16_ca.c: gvar->ca.ca_levelnum++; +src/lib/16_ca.c: if (!gvar->ca.ca_levelnum) +src/lib/16_ca.c: gvar->ca.ca_levelbit>>=1; +src/lib/16_ca.c: gvar->ca.ca_levelnum--; +src/lib/16_ca.c: gvar->ca.grneeded[i]&=~gvar->ca.ca_levelbit; +src/lib/16_ca.c: _fmemset (gvar->ca.grneeded,0,sizeof(gvar->ca.grneeded)); +src/lib/16_ca.c: gvar->ca.ca_levelbit = 1; +src/lib/16_ca.c: gvar->ca.ca_levelnum = 0; +src/lib/16_ca.c: if (gvar->ca.grsegs[i]) +src/lib/16_ca.c: MM_SetPurge (gvar->ca.grsegs[i],3, gvar); +src/lib/16_ca.c:// if (gvar->ca.camap.mapheaderseg[i]) +src/lib/16_ca.c:// MM_SetPurge (gvar->ca.camap.mapheaderseg[i],3, gvar); +src/lib/16_ca.c: if (gvar->ca.mapsegs[i]) +src/lib/16_ca.c: MM_FreePtr ((memptr *)&gvar->ca.mapsegs[i], gvar); +src/lib/16_ca.c: if (gvar->ca.audiosegs[i]) +src/lib/16_ca.c: MM_SetPurge ((memptr *)&gvar->ca.audiosegs[i],3, gvar); +src/lib/16_ca.c: if (gvar->ca.grneeded[i]&(gvar->ca.ca_levelbit))//if (grneeded[i]&ca_levelbit) +src/lib/16_ca.c: if (gvar->ca.grsegs[i]) // its allready in memory, make +src/lib/16_ca.c: MM_SetPurge(gvar->ca.grsegs[i],0,gvar); // sure it stays there! +src/lib/16_ca.c: if (gvar->ca.grsegs[i]) // not needed, so make it purgeable +src/lib/16_ca.c: MM_SetPurge(gvar->ca.grsegs[i],3,gvar); +src/lib/16_ca.c: if ( (gvar->ca.grneeded[i]&(gvar->ca.ca_levelbit)) && !gvar->ca.grsegs[i]) +src/lib/16_ca.c: !(gvar->video.grneeded[next]&ca_levelbit && !grsegs[next])) +src/lib/16_ca.c: CA_FarRead(grhandle,(gvar->mm.bufferseg),endpos-pos,gvar); +src/lib/16_dbg.c: page = &(gvar->pm.PMPages[i]); +src/lib/16_dbg.c://++ if (i < (gvar->pm.fi.PMSpriteStart)) +src/lib/16_dbg.c:/* else if (i < (gvar->pm.fi.PMSoundStart)) +src/lib/16_dbg.c: else if (i == (gvar->pm.fi.ChunksInFile - 1)) +src/lib/16_dbg.c: while (!(scan = gvar->in.inst->LastScan)) +src/lib/16_dbg.c: if (++i >= (gvar->pm.fi.ChunksInFile)) +src/lib/16_dbg.c:// i = (gvar->pm.fi.PMSpriteStart); +src/lib/16_dbg.c:// i = (gvar->pm.fi.PMSoundStart); +src/lib/16_dbg.c: i = (gvar->pm.fi.ChunksInFile - 1); +src/lib/16_dbg.c: for (j = 0;j < (gvar->pm.fi.ChunksInFile);j++) +src/lib/16_hc.c: write(gvar->handle.heaphandle,scratch,strlen(scratch)); +src/lib/16_hc.c: write(gvar->handle.heaphandle,scratch,strlen(scratch)); +src/lib/16_hc.c: write(gvar->handle.heaphandle,scratch,strlen(scratch)); +src/lib/16_hc.c: write(gvar->handle.heaphandle,scratch,strlen(scratch)); +src/lib/16_hc.c: write(gvar->handle.heaphandle,scratch,strlen(scratch)); +src/lib/16_hc.c: write(gvar->handle.heaphandle,scratch,strlen(scratch)); +src/lib/16_hc.c: write(gvar->handle.heaphandle,scratch,strlen(scratch)); +src/lib/16_hc.c: write(gvar->handle.heaphandle,(str),strlen((str))); +src/lib/16_hc.c: gvar->handle.heaphandle = open("heap.16b", O_CREAT | O_WRONLY | O_TEXT); +src/lib/16_hc.c: gvar->handle.heaphandle = open("heap.16w", O_CREAT | O_WRONLY | O_TEXT); +src/lib/16_hc.c: close(gvar->handle.heaphandle); +src/lib/16_in.c://gvar->in.KbdDefs = {0x1d,0x38,/*0x47,*/0x48,/*0x49,*/0x4b,0x4d,/*0x4f,*/0x50/*,0x51*/}; +src/lib/16_in.c: def = gvar->in.JoyDefs + joy; +src/lib/16_in.c: def = &(gvar->in.JoyDefs[joy]); +src/lib/16_in.c: def = &(gvar->in.JoyDefs[joy]); +src/lib/16_in.c: gvar->in.JoysPresent[joy] = false; +src/lib/16_in.c: if (gvar->in.IN_Started) +src/lib/16_in.c: gvar->in.MousePresent = checkmouse? INL_StartMouse() : false; +src/lib/16_in.c: gvar->in.JoysPresent[i] = checkjoys? INL_StartJoy(i, gvar) : false; +src/lib/16_in.c: gvar->in.inst = &inst; +src/lib/16_in.c: gvar->in.IN_Started = true; +src/lib/16_in.c: || ((nt == ctrl_Joystick1) && !gvar->in.JoysPresent[0]) +src/lib/16_in.c: || ((nt == ctrl_Joystick2) && !gvar->in.JoysPresent[1]) +src/lib/16_in.c: || ((nt == ctrl_Mouse) && !gvar->in.MousePresent) +src/lib/16_in.c: gvar->in.KbdDefs[0].button0 = 0x1c; +src/lib/16_in.c: gvar->in.KbdDefs[0].button1 = 0x38; +src/lib/16_in.c: gvar->in.KbdDefs[0].up = 0x48; +src/lib/16_in.c: gvar->in.KbdDefs[0].left = 0x4b; +src/lib/16_in.c: gvar->in.KbdDefs[0].right = 0x4d; +src/lib/16_in.c: gvar->in.KbdDefs[0].down = 0x50; +src/lib/16_in.c: if (!gvar->in.IN_Started) +src/lib/16_in.c: gvar->in.IN_Started = false; +src/lib/16_in.c: if (gvar->in.MousePresent) +src/lib/16_in.c: if (!gvar->in.JoysPresent[i]) +src/lib/16_in.c: def = &(gvar->in.KbdDefs[type - ctrl_Keyboard]); +src/lib/16_in.c: if (gvar->in.MousePresent) +src/lib/16_in.c: if(!gvar->in.IN_Started) +src/lib/16_in.c: if (gvar->in.MousePresent) +src/lib/16_in.c: if (gvar->in.MousePresent) +src/lib/16_in.c: if (gvar->in.JoysPresent[i]) +src/lib/16_in.c: if (gvar->in.MousePresent) +src/lib/16_map.c:#define MAPBUFINLM *(gvar->ca.mapsegs) +src/lib/16_mm.c: gvar->mm.totalEMSpages=totalEMSpages; +src/lib/16_mm.c: gvar->mm.freeEMSpages=freeEMSpages; +src/lib/16_mm.c: gvar->mm.EMSPageFrame=EMSPageFrame; +src/lib/16_mm.c: gvar->mm.EMSpagesmapped=EMSpagesmapped; +src/lib/16_mm.c: gvar->mm.EMSHandle=EMSHandle; +src/lib/16_mm.c: gvar->mm.EMSVer=EMSVer; +src/lib/16_mm.c: unsigned EMSHandle=gvar->mm.EMSHandle; +src/lib/16_mm.c: EMSHandle=gvar->mm.EMSHandle; +src/lib/16_mm.c: gvar->mmi.EMSmem = (i)*0x4000lu; +src/lib/16_mm.c: EMSHandle=gvar->mm.EMSHandle; +src/lib/16_mm.c: if(gvar->mm.EMSVer<0x40) +src/lib/16_mm.c: gvar->mmi.EMSmem = (i)*0x4000lu; +src/lib/16_mm.c: gvar->mmi.XMSmem += size*16; +src/lib/16_mm.c: gvar->mm.UMBbase[gvar->mm.numUMBs] = base; +src/lib/16_mm.c: gvar->mm.numUMBs++; +src/lib/16_mm.c: if(gvar->mm.numUMBs < MAXUMBS) +src/lib/16_mm.c: for (i=0;imm.numUMBs;i++) +src/lib/16_mm.c: base = gvar->mm.UMBbase[i]; +src/lib/16_mm.c: scan = last = gvar->mm.mmhead; +src/lib/16_mm.c: gvar->mm.mmrover = gvar->mm.mmhead; // reset rover to start of memory +src/lib/16_mm.c: gvar->mm.mmnew->useptr = NULL; +src/lib/16_mm.c: gvar->mm.mmnew->next = scan->next; +src/lib/16_mm.c: scan->next = gvar->mm.mmnew; +src/lib/16_mm.c: gvar->mm.mmnew->start = segstart+seglength; +src/lib/16_mm.c: gvar->mm.mmnew->length = extra; +src/lib/16_mm.c: gvar->mm.mmnew->attributes = LOCKBIT; +src/lib/16_mm.c: scan = gvar->mm.mmhead->next; +src/lib/16_mm.c: if(gvar->mm.mmstarted) +src/lib/16_mm.c: gvar->mm.mmstarted = true; +src/lib/16_mm.c: gvar->mm.bombonerror = true; +src/lib/16_mm.c: gvar->mm.mmhead = NULL; +src/lib/16_mm.c: gvar->mm.mmfree = &(gvar->mm.mmblocks[0]); +src/lib/16_mm.c: gvar->mm.mmblocks[i].next = &(gvar->mm.mmblocks[i+1]); +src/lib/16_mm.c: gvar->mm.mmblocks[i].next = NULL; +src/lib/16_mm.c: gvar->mm.mmhead = gvar->mm.mmnew; // this will allways be the first node +src/lib/16_mm.c: gvar->mm.mmnew->start = 0; +src/lib/16_mm.c: gvar->mm.mmnew->length = 0xffff; +src/lib/16_mm.c: gvar->mm.mmnew->attributes = LOCKBIT; +src/lib/16_mm.c: gvar->mm.mmnew->next = NULL; +src/lib/16_mm.c: gvar->mm.mmrover = gvar->mm.mmhead; +src/lib/16_mm.c: //start = gvar->mm.nearheap = _fmalloc(length); +src/lib/16_mm.c: start = (void __far *)(gvar->mm.nearheap = _nmalloc(length)); +src/lib/16_mm.c: start = (void far *)(gvar->mm.nearheap = malloc(length)); +src/lib/16_mm.c: gvar->mmi.nearheap = length; +src/lib/16_mm.c: start = gvar->mm.farheap = _fmalloc(length);//start = gvar->mm.farheap = halloc(length, 1); +src/lib/16_mm.c: gvar->mmi.farheap = length; +src/lib/16_mm.c: gvar->mmi.mainmem = gvar->mmi.nearheap + gvar->mmi.farheap; +src/lib/16_mm.c: gvar->mmi.EMSmem = 0; +src/lib/16_mm.c: MML_UseSpace(gvar->mm.EMSPageFrame,(MAPPAGES)*0x4000lu, gvar); +src/lib/16_mm.c: //if(gvar->pm.emm.EMSVer<0x40) +src/lib/16_mm.c: gvar->mmi.XMSmem = 0; +src/lib/16_mm.c: gvar->mm.mmrover = gvar->mm.mmhead; // start looking for space after low block +src/lib/16_mm.c: MM_GetPtr(&(gvar->mm.bufferseg),BUFFERSIZE, gvar); +src/lib/16_mm.c: if(!(gvar->mm.mmstarted)) +src/lib/16_mm.c: _ffree(gvar->mm.farheap);// printf(" far freed\n"); +src/lib/16_mm.c: _nfree(gvar->mm.nearheap);// printf(" near freed\n"); +src/lib/16_mm.c: free(gvar->mm.nearheap);// printf(" near freed\n"); +src/lib/16_mm.c: gvar->mm.mmnew->length = needed; +src/lib/16_mm.c: gvar->mm.mmnew->useptr = baseptr; +src/lib/16_mm.c: //if(gvar->mm.mmnew->useptr==NULL){ +src/lib/16_mm.c: printf(" baseptr=%Fp ", baseptr); printf("useptr=%Fp\n", gvar->mm.mmnew->useptr); +src/lib/16_mm.c: printf(" *baseptr=%Fp ", *baseptr); printf("*useptr=%Fp\n", *(gvar->mm.mmnew->useptr)); +src/lib/16_mm.c: printf(" &baseptr=%Fp ", &baseptr); printf("&useptr=%Fp\n", &(gvar->mm.mmnew->useptr)); +src/lib/16_mm.c: //Quit(gvar, "gvar->mm.mmnew->useptr==NULL"); } +src/lib/16_mm.c: gvar->mm.mmnew->attributes = BASEATTRIBUTES; +src/lib/16_mm.c: if (search == 1 && gvar->mm.mmrover == gvar->mm.mmhead) +src/lib/16_mm.c: lastscan = gvar->mm.mmrover; +src/lib/16_mm.c: scan = gvar->mm.mmrover->next; +src/lib/16_mm.c: lastscan = gvar->mm.mmhead; +src/lib/16_mm.c: scan = gvar->mm.mmhead->next; +src/lib/16_mm.c: endscan = gvar->mm.mmrover; +src/lib/16_mm.c: lastscan = gvar->mm.mmhead; +src/lib/16_mm.c: scan = gvar->mm.mmhead->next; +src/lib/16_mm.c: lastscan->next = gvar->mm.mmnew; +src/lib/16_mm.c: gvar->mm.mmnew->start = *(unsigned *)baseptr = startseg; +src/lib/16_mm.c: gvar->mm.mmnew->next = scan; +src/lib/16_mm.c: gvar->mm.mmrover = gvar->mm.mmnew; +src/lib/16_mm.c: if (gvar->mm.bombonerror) +src/lib/16_mm.c: printf(OUT_OF_MEM_MSG,(size-gvar->mmi.nearheap)); +src/lib/16_mm.c: gvar->mm.mmerror = true; +src/lib/16_mm.c: last = gvar->mm.mmhead; +src/lib/16_mm.c: if(baseptr == gvar->mm.mmrover->useptr) // removed the last allocated block +src/lib/16_mm.c: gvar->mm.mmrover = gvar->mm.mmhead; +src/lib/16_mm.c: start = gvar->mm.mmrover; +src/lib/16_mm.c: if(gvar->mm.mmrover->useptr == baseptr) +src/lib/16_mm.c: gvar->mm.mmrover = gvar->mm.mmrover->next; +src/lib/16_mm.c: if(!gvar->mm.mmrover) +src/lib/16_mm.c: gvar->mm.mmrover = gvar->mm.mmhead; +src/lib/16_mm.c: else if(gvar->mm.mmrover == start) +src/lib/16_mm.c: gvar->mm.mmrover->attributes &= ~PURGEBITS; +src/lib/16_mm.c: gvar->mm.mmrover->attributes |= purge; +src/lib/16_mm.c: start = gvar->mm.mmrover; +src/lib/16_mm.c: if(gvar->mm.mmrover->useptr == baseptr) +src/lib/16_mm.c: gvar->mm.mmrover = gvar->mm.mmrover->next; +src/lib/16_mm.c: if(!gvar->mm.mmrover) +src/lib/16_mm.c: gvar->mm.mmrover = gvar->mm.mmhead; +src/lib/16_mm.c: else if(gvar->mm.mmrover == start) +src/lib/16_mm.c: gvar->mm.mmrover->attributes &= ~LOCKBIT; +src/lib/16_mm.c: gvar->mm.mmrover->attributes |= locked*LOCKBIT; +src/lib/16_mm.c: oldborder = gvar->video.bordercolor; +src/lib/16_mm.c: gvar->video.bordercolor = modexPalOverscan(15); +src/lib/16_mm.c: scan = gvar->mm.mmhead; +src/lib/16_mm.c: gvar->mm.mmrover = gvar->mm.mmhead; +src/lib/16_mm.c: VL_SetLineWidth(40, &gvar->video.ofs); +src/lib/16_mm.c: temp = gvar->video.ofs.bufferofs; +src/lib/16_mm.c: gvar->video.ofs.bufferofs = gvar->video.ofs.displayofs; +src/lib/16_mm.c: scan = gvar->mm.mmhead; +src/lib/16_mm.c: write(gvar->handle.debughandle,scratch,strlen(scratch)); +src/lib/16_mm.c: VW_Hlin(x,x+end,y,color, &gvar->video.ofs); +src/lib/16_mm.c: VL_Plot(x,y,15, &gvar->video.ofs); +src/lib/16_mm.c: VW_Hlin(x+end+1,x+(scan->next->start-scan->start),y,0, &gvar->video.ofs); // black = free +src/lib/16_mm.c: write(gvar->handle.debughandle,scratch,strlen(scratch)); +src/lib/16_mm.c: write(gvar->handle.debughandle,scratch0,strlen(scratch0)); +src/lib/16_mm.c: gvar->video.ofs.bufferofs = temp; +src/lib/16_mm.c: _nfree(gvar->mm.nearheap); +src/lib/16_mm.c: free(gvar->mm.nearheap); +src/lib/16_mm.c: scan = gvar->mm.mmhead; +src/lib/16_mm.c: scan = gvar->mm.mmhead; +src/lib/16_mm.c: scan = gvar->mm.mmhead; +src/lib/16_mm.c: printf(" %cLIMEMS %u\n", 0xC9, gvar->pm.emm.EMSPresent); +src/lib/16_mm.c: printf(" %c%cEMM v%x.%x available\n", 0xC7, 0xC4, gvar->pm.emm.EMSVer>>4,gvar->pm.emm.EMSVer&0x0F); +src/lib/16_mm.c: printf(" %c%ctotalEMSpages: %u ", 0xC7, 0xC4, gvar->pm.emm.totalEMSpages); printf("freeEMSpages: %u\n", gvar->pm.emm.freeEMSpages); +src/lib/16_mm.c: printf(" %c%cEMSPageFrame: %04x\n", 0xC7, 0xC4, gvar->pm.emm.EMSPageFrame); +src/lib/16_mm.c: printf(" %c%cEMSmem: %lu or %luk\n", 0xD3, 0xC4, gvar->mmi.EMSmem, gvar->mmi.EMSmem/1204); +src/lib/16_mm.c: printf(" %cXMS %u\n", 0xC9, gvar->pm.xmm.XMSPresent); +src/lib/16_mm.c: printf(" %c%cXMSHandle: %04x\n", 0xC7, 0xC4, gvar->pm.xmm.XMSHandle); +src/lib/16_mm.c: printf(" %c%cXMSmem: %lu or %lukb\n", 0xD3, 0xC4, gvar->mmi.XMSmem, gvar->mmi.XMSmem/1024); +src/lib/16_mm.c: printf(" %cConv. %u\n", 0xC9, gvar->pm.mm.MainPresent); DebugMemory_(gvar, 0); +src/lib/16_mm.c: //printf("mainmem: %lu\n", gvar->mmi.mainmem); +src/lib/16_mm.c: //printf("Total convmem: %lu ", gvar->mmi.mainmem); printf("TotalFree: %lu ", MM_TotalFree(gvar)+gvar->mmi.EMSmem+gvar->mmi.XMSmem+gvar->mmi.XMSmem); printf("TotalUsed: %lu\n", gvar->mmi.mainmem); +src/lib/16_mm.c: printf("nearheap: %lu ", gvar->mmi.nearheap); printf("farheap: %lu\n", gvar->mmi.farheap); +src/lib/16_mm.c: gvar->mm.bombonerror = bomb; +src/lib/16_mm.c: if(!gvar->mm.mmfree) +src/lib/16_mm.c: gvar->mm.mmnew=gvar->mm.mmfree; +src/lib/16_mm.c: gvar->mm.mmfree=gvar->mm.mmfree->next; +src/lib/16_mm.c: if(!(gvar->mm.mmnew=gvar->mm.mmfree)) +src/lib/16_mm.c: gvar->mm.mmfree=gvar->mm.mmfree->next; +src/lib/16_mm.c: x->next=gvar->mm.mmfree; +src/lib/16_mm.c: gvar->mm.mmfree=x; +src/lib/16_mm.c: dword XMSDriver = gvar->pm.xmm.XMSDriver; +src/lib/16_pm.c: PMBlockAttr gvar->pm.mm.MainMemUsed[PMMaxMainMem]; +src/lib/16_pm.c: int gvar->pm.mm.MainPagesAvail;*/ +src/lib/16_pm.c:/* word gvar->pm.emm.EMSAvail,gvar->pm.emm.EMSPagesAvail,gvar->pm.emm.EMSHandle, +src/lib/16_pm.c: gvar->pm.emm.EMSPageFrame,gvar->pm.emm.EMSPhysicalPage; +src/lib/16_pm.c: gvar->pm.emm.EMSListStruct gvar->pm.emm.EMSList[EMSFrameCount];*/ +src/lib/16_pm.c: //word gvar->pm.xmm.XMSAvail,gvar->pm.xmm.XMSPagesAvail,gvar->pm.xmm.XMSHandle; +src/lib/16_pm.c:/* int gvar->pm.xmm.XMSProtectPage = -1; +src/lib/16_pm.c: char gvar->pm.fi.PageFileName[13] = {"VSWAP."}; +src/lib/16_pm.c: word gvar->pm.fi.ChunksInFile; +src/lib/16_pm.c: gvar->pm.PMPanicMode, +src/lib/16_pm.c: gvar->pm.PMThrashing; +src/lib/16_pm.c: word gvar->pm.XMSPagesUsed, +src/lib/16_pm.c: gvar->pm.EMSPagesUsed, +src/lib/16_pm.c: gvar->pm.PMNumBlocks; +src/lib/16_pm.c: PageListStruct far *gvar->pm.PMPages, +src/lib/16_pm.c: _seg *gvar->pm.PMSegPages;*/ +src/lib/16_pm.c: EMShandle=gvar->pm.emm.EMSHandle; +src/lib/16_pm.c: gvar->pm.emm.EMSPresent = false; // Assume that we'll fail +src/lib/16_pm.c: gvar->pm.emm.EMSAvail = gvar->mmi.EMSmem = 0; +src/lib/16_pm.c: size = gvar->pm.emm.EMSAvail * (long)EMSPageSize; +src/lib/16_pm.c: if (size - (EMSPageSize * 2) > (gvar->pm.fi.ChunksInFile * (long)PMPageSize)) +src/lib/16_pm.c: size = (gvar->pm.fi.ChunksInFile * (long)PMPageSize) + EMSPageSize; +src/lib/16_pm.c: gvar->pm.emm.EMSAvail = size / EMSPageSize; +src/lib/16_pm.c: return(gvar->pm.emm.EMSPresent); +src/lib/16_pm.c: gvar->mmi.EMSmem = EMSAvail * (dword)EMSPageSize; +src/lib/16_pm.c: gvar->pm.emm.EMSList[i].baseEMSPage = -1; +src/lib/16_pm.c: gvar->pm.emm.EMSPresent = true; // We have EMS +src/lib/16_pm.c: gvar->pm.emm.EMSPageFrame = EMSPageFrame; +src/lib/16_pm.c: gvar->pm.emm.EMSAvail = EMSAvail; +src/lib/16_pm.c: gvar->pm.emm.EMSVer = EMSVer; +src/lib/16_pm.c: gvar->pm.emm.EMSHandle = EMSHandle; +src/lib/16_pm.c: gvar->pm.emm.freeEMSpages = freeEMSpages; +src/lib/16_pm.c: gvar->pm.emm.totalEMSpages = totalEMSpages; +src/lib/16_pm.c: return(gvar->pm.emm.EMSPresent); +src/lib/16_pm.c: EMSHandle=gvar->pm.emm.EMSHandle; +src/lib/16_pm.c: if (gvar->pm.emm.EMSPresent) +src/lib/16_pm.c: gvar->pm.xmm.XMSPresent = false; // Assume failure +src/lib/16_pm.c: XMSAvail = gvar->mmi.XMSmem = 0; +src/lib/16_pm.c: gvar->mmi.XMSmem = (dword)(XMSAvail) * 1024; +src/lib/16_pm.c: gvar->pm.xmm.XMSAvail = XMSAvail; +src/lib/16_pm.c: gvar->pm.xmm.XMSHandle = XMSHandle; +src/lib/16_pm.c: //gvar->pm.xmm.XMSVer = XMSVer; +src/lib/16_pm.c: gvar->pm.xmm.XMSPresent = true; +src/lib/16_pm.c: printf(" XMSmem=%lu XMSAvail=%u\n", gvar->mmi.XMSmem, XMSAvail); +src/lib/16_pm.c: //printf(" %u", gvar->pm.xmm.XMSHandle); +src/lib/16_pm.c: return(gvar->pm.xmm.XMSPresent); +src/lib/16_pm.c: copy.source_handle = toxms? 0 : gvar->pm.xmm.XMSHandle; +src/lib/16_pm.c: copy.target_handle = toxms? gvar->pm.xmm.XMSHandle : 0; +src/lib/16_pm.c: word XMSHandle = gvar->pm.xmm.XMSHandle; +src/lib/16_pm.c: if (gvar->pm.xmm.XMSPresent) +src/lib/16_pm.c: if(gvar->pm.mm.MainPresent) +src/lib/16_pm.c: printf("PM_SetMainMemPurge() info of gvar->pm.mm.MainMemPages[i]\n"); +src/lib/16_pm.c: printf("& %Fp, %Fp\n", &gvar->pm.mm.MainMemPages[i], &(gvar->pm.mm.MainMemPages[i])); +src/lib/16_pm.c: if (gvar->pm.mm.MainMemPages[i]) +src/lib/16_pm.c: MM_SetPurge(&(gvar->pm.mm.MainMemPages[i]),level, gvar); +src/lib/16_pm.c: if (!gvar->pm.mm.MainPresent) +src/lib/16_pm.c: for (i = 0,page = gvar->pm.PMPages;i < gvar->pm.fi.ChunksInFile;i++,page++) +src/lib/16_pm.c: if (!gvar->pm.mm.MainMemPages[n]) // Yep, was the block purged? +src/lib/16_pm.c: for (i = 0,p = gvar->pm.mm.MainMemPages,used = gvar->pm.mm.MainMemUsed; i < PMMaxMainMem;i++,p++,used++) +src/lib/16_pm.c: gvar->pm.mm.MainPagesAvail--; // and decrease available count +src/lib/16_pm.c: gvar->pm.MainPagesUsed--; // and decrease used count +src/lib/16_pm.c: if (gvar->mm.mmerror) // If it failed, +src/lib/16_pm.c: gvar->pm.mm.MainPagesAvail++; // and increase available count +src/lib/16_pm.c: if (gvar->mm.mmerror) +src/lib/16_pm.c: gvar->mm.mmerror = false; +src/lib/16_pm.c: gvar->pm.mm.MainPagesAvail = 0; +src/lib/16_pm.c: gvar->pm.mm.MainPresent = false; +src/lib/16_pm.c: for (i = 0,p = gvar->pm.mm.MainMemPages;i < PMMaxMainMem;i++,p++) +src/lib/16_pm.c: if (gvar->mm.mmerror) +src/lib/16_pm.c: gvar->pm.mm.MainPagesAvail++; +src/lib/16_pm.c: gvar->pm.mm.MainMemUsed[i] = pmba_Allocated; +src/lib/16_pm.c: if (gvar->mm.mmerror) +src/lib/16_pm.c: gvar->mm.mmerror = false; +src/lib/16_pm.c: if (gvar->pm.mm.MainPagesAvail < PMMinMainMem) +src/lib/16_pm.c: gvar->pm.mm.MainPresent = true; +src/lib/16_pm.c: for (i = 0,p = gvar->pm.mm.MainMemPages;i < PMMaxMainMem;i++,p++) +src/lib/16_pm.c: if (lseek(gvar->pm.fi.PageFile,offset,SEEK_SET) != offset) +src/lib/16_pm.c: if (!CA_FarRead(gvar->pm.fi.PageFile,buf,length, gvar)) +src/lib/16_pm.c: gvar->pm.fi.PageFile = open(gvar->pm.fi.PageFileName,O_RDONLY + O_BINARY); +src/lib/16_pm.c: if (gvar->pm.fi.PageFile == -1) +src/lib/16_pm.c: read(gvar->pm.fi.PageFile,&gvar->pm.fi.ChunksInFile,sizeof(gvar->pm.fi.ChunksInFile)); +src/lib/16_pm.c: read(gvar->pm.fi.PageFile,&gvar->pm.fi.PMSpriteStart,sizeof(gvar->pm.fi.PMSpriteStart)); +src/lib/16_pm.c: read(gvar->pm.fi.PageFile,&gvar->pm.fi.PMSoundStart,sizeof(gvar->pm.fi.PMSoundStart)); +src/lib/16_pm.c: gvar->pm.PMNumBlocks = gvar->pm.fi.ChunksInFile; +src/lib/16_pm.c: MM_GetPtr((memptr *)&gvar->pm.PMSegPages, sizeof(PageListStruct) * (gvar->pm.PMNumBlocks), gvar); +src/lib/16_pm.c: MM_SetLock((memptr *)&gvar->pm.PMSegPages,true, gvar); +src/lib/16_pm.c: gvar->pm.PMPages = (PageListStruct far *)gvar->pm.PMSegPages; +src/lib/16_pm.c: _fmemset(gvar->pm.PMPages,0,sizeof(PageListStruct) * gvar->pm.PMNumBlocks); +src/lib/16_pm.c: size = sizeof(dword) * gvar->pm.fi.ChunksInFile; +src/lib/16_pm.c: if (!CA_FarRead(gvar->pm.fi.PageFile,(byte far *)buf,size, gvar)) +src/lib/16_pm.c: for (i = 0,page = gvar->pm.PMPages;i < gvar->pm.fi.ChunksInFile;i++,page++) +src/lib/16_pm.c: size = sizeof(word) * gvar->pm.fi.ChunksInFile; +src/lib/16_pm.c: if (!CA_FarRead(gvar->pm.fi.PageFile,(byte far *)buf,size, gvar)) +src/lib/16_pm.c: for (i = 0,page = gvar->pm.PMPages;i < gvar->pm.fi.ChunksInFile;i++,page++) +src/lib/16_pm.c: if (gvar->pm.fi.PageFile != -1) +src/lib/16_pm.c: close(gvar->pm.fi.PageFile); +src/lib/16_pm.c: if (gvar->pm.PMSegPages) +src/lib/16_pm.c: MM_SetLock((memptr *)&gvar->pm.PMSegPages,false, gvar); +src/lib/16_pm.c: MM_FreePtr((void _seg *)&gvar->pm.PMSegPages, gvar); +src/lib/16_pm.c: if (gvar->pm.emm.EMSList[i].baseEMSPage == emsbase) +src/lib/16_pm.c: if (gvar->pm.emm.EMSList[i].lastHit < last) +src/lib/16_pm.c: last = gvar->pm.emm.EMSList[i].lastHit; +src/lib/16_pm.c: gvar->pm.emm.EMSList[emspage].baseEMSPage = emsbase; +src/lib/16_pm.c: gvar->pm.emm.EMSList[emspage].lastHit = gvar->pm.PMFrameCount; +src/lib/16_pm.c: return((memptr)(gvar->pm.emm.EMSPageFrame + offset)); +src/lib/16_pm.c: page = &gvar->pm.PMPages[pagenum]; +src/lib/16_pm.c: return(gvar->pm.mm.MainMemPages[page->mainPage]); +src/lib/16_pm.c: for (i = 0,page = gvar->pm.PMPages,lru = -1,last = LONG_MAX;i < gvar->pm.fi.ChunksInFile;i++,page++) +src/lib/16_pm.c: for (i = 0,page = gvar->pm.PMPages,lru = -1,last = LONG_MAX;i < gvar->pm.fi.ChunksInFile;i++,page++) +src/lib/16_pm.c: && (i != gvar->pm.xmm.XMSProtectPage) +src/lib/16_pm.c: if (!gvar->pm.xmm.XMSPresent) +src/lib/16_pm.c: page = &gvar->pm.PMPages[pagenum]; +src/lib/16_pm.c: if (gvar->pm.XMSPagesUsed < gvar->pm.xmm.XMSPagesAvail) +src/lib/16_pm.c: page->xmsPage = gvar->pm.XMSPagesUsed++; +src/lib/16_pm.c: page->xmsPage = gvar->pm.PMPages[usexms].xmsPage; +src/lib/16_pm.c: gvar->pm.PMPages[usexms].xmsPage = -1; +src/lib/16_pm.c: origpage = &gvar->pm.PMPages[orig]; +src/lib/16_pm.c: newpage = &gvar->pm.PMPages[new]; +src/lib/16_pm.c: page = &gvar->pm.PMPages[pagenum]; +src/lib/16_pm.c: if ((gvar->pm.EMSPagesUsed < gvar->pm.emm.EMSPagesAvail) && !mainonly) +src/lib/16_pm.c: page->emsPage = gvar->pm.EMSPagesUsed++; +src/lib/16_pm.c: else if (gvar->pm.MainPagesUsed < gvar->pm.mm.MainPagesAvail) +src/lib/16_pm.c: for (i = 0,n = -1,used = gvar->pm.mm.MainMemUsed;i < PMMaxMainMem;i++,used++) +src/lib/16_pm.c: addr = gvar->pm.mm.MainMemPages[n]; +src/lib/16_pm.c: gvar->pm.MainPagesUsed++; +src/lib/16_pm.c: page = &gvar->pm.PMPages[pagenum]; +src/lib/16_pm.c: if (gvar->pm.xmm.XMSPresent && (page->xmsPage != -1)) +src/lib/16_pm.c: gvar->pm.xmm.XMSProtectPage = pagenum; +src/lib/16_pm.c: gvar->pm.xmm.XMSProtectPage = -1; +src/lib/16_pm.c: page = &gvar->pm.PMPages[pagenum]; +src/lib/16_pm.c: if (pagenum >= gvar->pm.fi.ChunksInFile) +src/lib/16_pm.c: boolean mainonly = (pagenum >= gvar->pm.fi.PMSoundStart); +src/lib/16_pm.c:if (!gvar->pm.PMPages[pagenum].offset) // JDC: sparse page +src/lib/16_pm.c: if (gvar->pm.PMPages[pagenum].lastHit == gvar->pm.PMFrameCount) +src/lib/16_pm.c: gvar->pm.PMThrashing++; +src/lib/16_pm.c: gvar->pm.PMPages[pagenum].lastHit = gvar->pm.PMFrameCount; +src/lib/16_pm.c: if (pagenum < gvar->pm.fi.PMSoundStart) +src/lib/16_pm.c: gvar->pm.PMPages[pagenum].locked = lock; +src/lib/16_pm.c: mainfree = (gvar->pm.mm.MainPagesAvail - gvar->pm.MainPagesUsed) + (gvar->pm.emm.EMSPagesAvail - gvar->pm.EMSPagesUsed); +src/lib/16_pm.c: xmsfree = (gvar->pm.xmm.XMSPagesAvail - gvar->pm.XMSPagesUsed); +src/lib/16_pm.c: for (i = 0;i < gvar->pm.fi.ChunksInFile;i++) +src/lib/16_pm.c: if (!gvar->pm.PMPages[i].offset) +src/lib/16_pm.c: if ( gvar->pm.PMPages[i].emsPage != -1 || gvar->pm.PMPages[i].mainPage != -1 ) +src/lib/16_pm.c: else if ( xmsfree && (gvar->pm.PMPages[i].xmsPage == -1) ) +src/lib/16_pm.c: while ( !gvar->pm.PMPages[page].offset || gvar->pm.PMPages[page].mainPage != -1 +src/lib/16_pm.c: || gvar->pm.PMPages[page].emsPage != -1 ) +src/lib/16_pm.c: if (page >= gvar->pm.fi.ChunksInFile) +src/lib/16_pm.c: Quit (gvar, "PM_Preload: Pages>=gvar->pm.fi.ChunksInFile"); +src/lib/16_pm.c: for (oogypage = 0 ; gvar->pm.PMPages[oogypage].mainPage == -1 ; oogypage++) +src/lib/16_pm.c: while ( !gvar->pm.PMPages[page].offset || gvar->pm.PMPages[page].xmsPage != -1 ) +src/lib/16_pm.c: if (page >= gvar->pm.fi.ChunksInFile) +src/lib/16_pm.c: Quit (gvar, "PM_Preload: Pages>=gvar->pm.fi.ChunksInFile"); +src/lib/16_pm.c: p = &gvar->pm.PMPages[page]; +src/lib/16_pm.c: p->xmsPage = gvar->pm.XMSPagesUsed++; +src/lib/16_pm.c: if (gvar->pm.XMSPagesUsed > gvar->pm.xmm.XMSPagesAvail) +src/lib/16_pm.c: p = &gvar->pm.PMPages[oogypage]; +src/lib/16_pm.c: if (++gvar->pm.PMFrameCount >= LONG_MAX - 4) +src/lib/16_pm.c: for (i = 0;i < gvar->pm.PMNumBlocks;i++) +src/lib/16_pm.c: gvar->pm.PMPages[i].lastHit = 0; +src/lib/16_pm.c: gvar->pm.PMFrameCount = 0; +src/lib/16_pm.c: for (i = 0;i < gvar->pm.fi.PMSoundStart;i++) +src/lib/16_pm.c: if (gvar->pm.PMPages[i].locked) +src/lib/16_pm.c: if (gvar->pm.PMPanicMode) +src/lib/16_pm.c: if ((!gvar->pm.PMThrashing) && (!--gvar->pm.PMPanicMode)) +src/lib/16_pm.c: if (gvar->pm.PMThrashing >= PMThrashThreshold) +src/lib/16_pm.c: gvar->pm.PMPanicMode = PMUnThrashThreshold; +src/lib/16_pm.c: gvar->pm.PMThrashing = false; +src/lib/16_pm.c: gvar->pm.xmm.XMSPagesAvail = gvar->pm.xmm.XMSAvail / PMPageSizeKB; +src/lib/16_pm.c: gvar->pm.emm.EMSPagesAvail = gvar->pm.emm.EMSAvail * (EMSPageSizeKB / PMPageSizeKB); +src/lib/16_pm.c: gvar->pm.emm.EMSPhysicalPage = 0; +src/lib/16_pm.c: gvar->pm.MainPagesUsed = gvar->pm.EMSPagesUsed = gvar->pm.XMSPagesUsed = 0; +src/lib/16_pm.c: gvar->pm.PMPanicMode = false; +src/lib/16_pm.c: gvar->pm.fi.PageFile = -1; +src/lib/16_pm.c: gvar->pm.xmm.XMSProtectPage = -1; +src/lib/16_pm.c: for (i = 0,page = gvar->pm.PMPages;i < gvar->pm.PMNumBlocks;i++,page++) +src/lib/16_pm.c: if (gvar->pm.PMStarted) +src/lib/16_pm.c: //0000+=+=strcpy(&(gvar->pm.fi.PageFileName), "VSWAP."); +src/lib/16_pm.c: if (!gvar->pm.mm.MainPresent && !gvar->pm.emm.EMSPresent && !gvar->pm.xmm.XMSPresent) +src/lib/16_pm.c: gvar->pm.PMStarted = true; +src/lib/16_pm.c: if (!gvar->pm.PMStarted) +src/lib/16_sd.c: gvar->ca.sd.irq0_ticks= +src/lib/16_sd.c: //gvar->ca.sd.irq0_cnt= +src/lib/16_sd.c: //gvar->ca.sd.irq0_add= +src/lib/16_sd.c: gvar->ca.sd.imf_delay_countdown= +src/lib/16_sd.c: gvar->ca.sd.irq0_max=0; +src/lib/16_sd.c: gvar->ca.sd.imf_music= +src/lib/16_sd.c: gvar->ca.sd.imf_play_ptr= +src/lib/16_sd.c: gvar->ca.sd.imf_music_end=NULL; +src/lib/16_sd.c: gvar->ca.sd.irq0_cnt = 0; +src/lib/16_sd.c: gvar->ca.sd.irq0_add = 182; +src/lib/16_sd.c: gvar->ca.sd.irq0_max = 1000; /* about 18.2Hz */ +src/lib/16_sd.c: if (gvar->ca.sd.imf_music) free(gvar->ca.sd.imf_music); +src/lib/16_sd.c: MM_FreePtr(MEMPTR gvar->ca.audiosegs[0], gvar); //TODO make behave like id engine +src/lib/16_sd.c: gvar->ca.sd.imf_music = gvar->ca.sd.imf_play_ptr = gvar->ca.sd.imf_music_end = NULL; +src/lib/16_sd.c: gvar->ca.sd.imf_delay_countdown = 0; +src/lib/16_sd.c: MM_GetPtr(MEMPTR gvar->ca.audiosegs[0],len, gvar); +src/lib/16_sd.c: gvar->ca.sd.imf_music = (struct imf_entry *)gvar->ca.audiosegs[0]; +src/lib/16_sd.c: if (gvar->ca.sd.imf_music == NULL) { +src/lib/16_sd.c: read(fd,gvar->ca.sd.imf_music,len); +src/lib/16_sd.c: gvar->ca.sd.imf_play_ptr = gvar->ca.sd.imf_music; +src/lib/16_sd.c: gvar->ca.sd.imf_music_end = gvar->ca.sd.imf_music + (len >> 2UL); +src/lib/16_sd.c: if (gvar->ca.sd.imf_delay_countdown == 0) { +src/lib/16_sd.c: adlib_write(gvar->ca.sd.imf_play_ptr->reg,gvar->ca.sd.imf_play_ptr->data); +src/lib/16_sd.c: gvar->ca.sd.imf_delay_countdown = gvar->ca.sd.imf_play_ptr->delay; +src/lib/16_sd.c: gvar->ca.sd.imf_play_ptr++; +src/lib/16_sd.c: if (gvar->ca.sd.imf_play_ptr == gvar->ca.sd.imf_music_end) +src/lib/16_sd.c: gvar->ca.sd.imf_play_ptr = gvar->ca.sd.imf_music; +src/lib/16_sd.c: } while (gvar->ca.sd.imf_delay_countdown == 0); +src/lib/16_sd.c: gvar->ca.sd.imf_delay_countdown--; +src/lib/16_tail.c: gvar->video.VL_Started=0; +src/lib/16_tail.c: gvar->mm.mmstarted=0; +src/lib/16_tail.c: gvar->pm.PMStarted=0; +src/lib/16_tail.c: if(gvar->video.VL_Started) +src/lib/16_tail.c: if(!gvar->video.old_mode) gvar->video.old_mode = vgaGetMode();//out.h.al; +src/lib/16_tail.c: gvar->video.old_mode = 3; +src/lib/16_tail.c: gvar->video.VL_Initiated = 1; +src/lib/16_tail.c: printf("Total: "); if(q) printf(" "); printf("%uk", gvar->mmi.mainmem/1024); +src/lib/16_us.c: VLB_Bar(px,py,42,6,3/*BackColor*/, &gvar->video.ofs); +src/lib/16_us.c: modexprint(gvar->video.page, px, py, 1, 0, 4, 8, 1, "YOU:"); +src/lib/16_us.c: VLB_Bar(px,py,50,6,3/*BackColor*/, &gvar->video.ofs); +src/lib/16_us.c: modexprint(gvar->video.page, px, py, 1, 0, 4, 8, 1, "COMP:"); +src/lib/16_us.c: 3/*BackColor*/, &gvar->video.ofs); +src/lib/16_us.c: modexputPixel(gvar->video.page, BallMinX, BallMinY, 3); +src/lib/16_us.c: modexputPixel(gvar->video.page, cx, CPaddleY, 3); +src/lib/16_us.c: modexputPixel(gvar->video.page, kx, KPaddleY, 3); +src/lib/16_us.c: } while ((gvar->in.inst->LastScan != sc_Escape) && !done); +src/lib/16_vrs.c: CA_ReadFile(filename, &gvar->ca.spribuff, gvar); +src/lib/16_vrs.c: CA_LoadFile(filename, &gvar->ca.spribuff, gvar); +src/lib/16_vrs.c: enti->spri.spritesheet.buffer = gvar->ca.spribuff; +src/lib/16_mm.h:#define GETNEWBLOCK {if(!gvar->mm.mmfree)MML_ClearBlock(gvar);gvar->mm.mmnew=gvar->mm.mmfree;gvar->mm.mmfree=gvar->mm.mmfree->next;} +src/lib/16_mm.h:#define FREEBLOCK(x) {*x->useptr=NULL;x->next=gvar->mm.mmfree;gvar->mm.mmfree=x;} +src/lib/16_mm.h:#define MAPPAGES 4//gvar->mm.EMSpagesmapped +src/lib/vgmsnd/vgmSnd.c: MM_GetPtr(MEMPTR gvar->ca.audiosegs[0], vgmFile->dataLen, gvar); +src/lib/vgmsnd/vgmSnd.c: vgmFile->data = (UINT8*)gvar->ca.audiosegs[0]; +src/lib/vgmsnd/vgmSnd.c: MM_FreePtr(MEMPTR gvar->ca.audiosegs[0], gvar); +=============== ./q.sh end =============== diff --git a/makefile b/makefile index ee61e51c..9be1782e 100755 --- a/makefile +++ b/makefile @@ -138,7 +138,7 @@ LIBFLAGS=$(WLIBQ) -b -n VGMSNDOBJ = vgmSnd.$(OBJ) #OLDLIBOBJS=bitmap.$(OBJ) 16render.$(OBJ) GFXLIBOBJS = 16_vl.$(OBJ) 16_vl_1.$(OBJ) 16_vlpal.$(OBJ) 16text.$(OBJ) bakapee.$(OBJ) scroll16.$(OBJ) 16_vrs.$(OBJ) 16_spri.$(OBJ) $(OLDLIBOBJS) -16LIBOBJS = 16_mm.$(OBJ) 16_pm.$(OBJ) 16_ca.$(OBJ) 16_tail.$(OBJ) 16_head.$(OBJ) 16_enti.$(OBJ) 16_dbg.$(OBJ) 16_in.$(OBJ) kitten.$(OBJ) 16_hc.$(OBJ) 16_wcpu.$(OBJ) 16_timer.$(OBJ) jsmn.$(OBJ) 16_map.$(OBJ) 16text.$(OBJ) 16_sd.$(OBJ) +16LIBOBJS = 16_mm.$(OBJ) 16_pm.$(OBJ) 16_ca.$(OBJ) 16_tail.$(OBJ) 16_head.$(OBJ) 16_enti.$(OBJ) 16_dbg.$(OBJ) 16_in.$(OBJ) kitten.$(OBJ) 16_hc.$(OBJ) 16_wcpu.$(OBJ) 16_timer.$(OBJ) jsmn.$(OBJ) 16_map.$(OBJ) 16text.$(OBJ) 16_sd.$(OBJ) 16_tail_.$(OBJ) 16_dbg_1.$(OBJ) DOSLIBOBJ = adlib.$(OBJ) 8254.$(OBJ) 8259.$(OBJ) dos.$(OBJ) cpu.$(OBJ) !ifeq DEBUGSERIAL 1 DOSLIBOBJ += 8250.$(OBJ) @@ -286,7 +286,8 @@ pcxtest2.exe: pcxtest2.$(OBJ) gfx.lib $(DOSLIB) #planrpcx.exe: planrpcx.$(OBJ) gfx.lib maptest.exe: maptest.$(OBJ) 16_map.$(OBJ) 16_head.$(OBJ) gfx.lib $(DOSLIB) $(16LIB) fmemtest.exe: fmemtest.$(OBJ) -exmmtest.exe: exmmtest.$(OBJ) $(16LIB) gfx.lib $(DOSLIB) +exmmtest.exe: exmmtest.$(OBJ) 16_pm.$(OBJ) 16_head.$(OBJ) 16_ca.$(OBJ) 16_mm.$(OBJ) 16_hc.$(OBJ) kitten.$(OBJ) 16_vl_1.$(OBJ) 16_tail.$(OBJ) 16_in.$(OBJ) 16_dbg.$(OBJ) +#$(16LIB) gfx.lib $(DOSLIB) vgmtest.exe: vgmtest.$(OBJ) vgmsnd.lib $(16LIB) $(DOSLIB) gfx.lib db.exe: db.$(OBJ) ps.exe: ps.$(OBJ) 16_head.$(OBJ) @@ -396,9 +397,11 @@ mapread.$(OBJ):$(SRCLIB)/mapread.c $(SRCLIB)/mapread.h 16_ca.$(OBJ): $(SRCLIB)/16_ca.c $(SRCLIB)/16_ca.h 16_us.$(OBJ): $(SRCLIB)/16_us.c 16_dbg.$(OBJ): $(SRCLIB)/16_dbg.c $(SRCLIB)/16_dbg.h +16_dbg_1.$(OBJ): $(SRCLIB)/16_dbg_1.c $(SRCLIB)/16_dbg.h midi.$(OBJ): $(SRCLIB)/midi.c $(SRCLIB)/midi.h 16_head.$(OBJ):$(SRCLIB)/16_head.c $(SRCLIB)/16_head.h 16_tail.$(OBJ):$(SRCLIB)/16_tail.c $(SRCLIB)/16_tail.h +16_tail_.$(OBJ):$(SRCLIB)/16_tail_.c $(SRCLIB)/16_tail.h 16_hc.$(OBJ): $(SRCLIB)/16_hc.c $(SRCLIB)/16_hc.h 16_sd.$(OBJ): $(SRCLIB)/16_sd.c $(SRCLIB)/16_sd.h jsmn.$(OBJ): $(JSMNLIB)/jsmn.c $(JSMNLIB)/jsmn.h diff --git a/src/exmmtest.c b/src/exmmtest.c index 7e9ba334..67343f1e 100755 --- a/src/exmmtest.c +++ b/src/exmmtest.c @@ -63,12 +63,24 @@ #endif //////////////////////////////////////////////////////////////////////////// -#ifdef __BORLANDC__ +//#ifdef __BORLANDC__ void VGAmodeX(sword vq, boolean cmem, global_game_variables_t *gv) { printf("VGAmodeX dummy:\n %Fp %Fp %Fp\n", &vq, &cmem, gv); } -#endif + +word modexPalOverscan(word col) +{ + //modexWaitBorder(); + outp(PAL_WRITE_REG, 0); /* start at the beginning of palette */ + outp(PAL_DATA_REG, col); + return col; +} +void TL_VidInit(global_game_variables_t *gvar) +{ + gvar->video.old_mode = 3; +} +//#endif //printf("* %Fp\t", *BBUF); //printf("* %04x\t", *BBUF); diff --git a/src/lib/16_ca.c b/src/lib/16_ca.c index ca0ad837..95fa5446 100755 --- a/src/lib/16_ca.c +++ b/src/lib/16_ca.c @@ -1123,15 +1123,13 @@ dinorm: void CAL_SetupMapFile (global_game_variables_t *gvar) { -#ifndef MAPHEADERLINKED - int handle; - long length; -#endif +//++ int handle; +//++ long length; // // load maphead.ext (offsets and tileinfo for map file) // -#ifndef MAPHEADERLINKED +/*#ifndef MAPHEADERLINKED if ((handle = open("maphead.mph", O_RDONLY | O_BINARY, S_IREAD)) == -1) Quit (gvar, "Can't open maphead.mph"); @@ -1143,13 +1141,13 @@ void CAL_SetupMapFile (global_game_variables_t *gvar) gvar->ca.tinf = (byte _seg *)FP_SEG(&maphead); -#endif +#endif*/ // // open the data file // //TODO: multiple files - if ((gvar->ca.file.maphandle[0] = open("data/test.map", + if ((gvar->ca.file.maphandle = open("data/test.map", O_RDONLY | O_BINARY, S_IREAD)) == -1) Quit (gvar, "Can't open data/test.map!"); /*#ifdef MAPHEADERLINKED @@ -1174,18 +1172,18 @@ void CAL_SetupMapFile (global_game_variables_t *gvar) ====================== */ -/*void CAL_SetupAudioFile (void) +void CAL_SetupAudioFile (global_game_variables_t *gvar) { - int handle; - long length; +//++ int handle; +//++ long length; // // load maphead.ext (offsets and tileinfo for map file) // -#ifndef AUDIOHEADERLINKED - if ((handle = open("AUDIOHED."EXT, +/*#ifndef AUDIOHEADERLINKED + if ((handle = open("audihead.adh, O_RDONLY | O_BINARY, S_IREAD)) == -1) - Quit (gvar, "Can't open AUDIOHED."EXT"!"); + Quit (gvar, "Can't open audihead.adh!"); length = filelength(handle); MM_GetPtr (MEMPTR audiostarts,length); CA_FarRead(handle, (byte far *)audiostarts, length); @@ -1194,21 +1192,25 @@ void CAL_SetupMapFile (global_game_variables_t *gvar) audiohuffman = (huffnode *)&audiodict; CAL_OptimizeNodes (audiohuffman); audiostarts = (long _seg *)FP_SEG(&audiohead); -#endif +#endif*/ // // open the data file // -#ifndef AUDIOHEADERLINKED +//TODO: multiple files + if ((gvar->ca.file.audiohandle = open("data/02.imf", + O_RDONLY | O_BINARY, S_IREAD)) == -1) + Quit (gvar, "Can't open data/02.imf!"); +/*#ifndef AUDIOHEADERLINKED if ((audiohandle = open("AUDIOT."EXT, O_RDONLY | O_BINARY, S_IREAD)) == -1) Quit (gvar, "Can't open AUDIOT."EXT"!"); -#else +//#else if ((audiohandle = open("AUDIO."EXT, O_RDONLY | O_BINARY, S_IREAD)) == -1) Quit (gvar, "Can't open AUDIO."EXT"!"); -#endif -}*/ +#endif*/ +} //========================================================================== @@ -1253,7 +1255,7 @@ void CA_Startup(global_game_variables_t *gvar) CAL_SetupGrFile (gvar); #endif #ifndef NOAUDIO - CAL_SetupMapFile (gvar); + CAL_SetupAudioFile (gvar); #endif gvar->ca.camap.mapon = -1; @@ -1285,10 +1287,9 @@ void CA_Shutdown(global_game_variables_t *gvar) #endif close(gvar->handle.showmemhandle); - close(*(gvar->ca.file.maphandle)); -/*++++ - close(grhandle); - close(audiohandle);*/ + close(gvar->ca.file.maphandle); + close(gvar->ca.file.grhandle); + close(gvar->ca.file.audiohandle); } //=========================================================================== diff --git a/src/lib/16_ca.h b/src/lib/16_ca.h index 29b6c627..0f0222a5 100755 --- a/src/lib/16_ca.h +++ b/src/lib/16_ca.h @@ -29,9 +29,9 @@ //#define NOMAPS #define NOGRAPHICS -#define NOAUDIO +//#define NOAUDIO -#define MAPHEADERLINKED +//#define MAPHEADERLINKED //#define GRHEADERLINKED //#define AUDIOHEADERLINKED diff --git a/src/lib/16_dbg.c b/src/lib/16_dbg.c index fff20c22..321388c9 100755 --- a/src/lib/16_dbg.c +++ b/src/lib/16_dbg.c @@ -25,80 +25,7 @@ boolean dbg_delayanimation=0; #endif #endif //debug -#ifdef __WATCOMC__ -// TODO: Could we also provide a build mode to emit debug to the "Bochs E9 hack?" -#ifdef DEBUGSERIAL -# include -# include -# include -unsigned char _DEBUG_INITed = 0; -struct info_8250 *_DEBUG_uart = NULL; - -int _DEBUG_INIT() { - if (!_DEBUG_INITed) { - unsigned int i; - uint16_t port; - - if (!init_8250()) return 0; - - // what does the BIOS say the serial ports are? - probe_8250_bios_ports(); - for (i=0;i < bios_8250_ports;i++) { - port = get_8250_bios_port(i); - if (port == 0) continue; - probe_8250(port); - } - - // what about the standard serial ports? - for (i=0;i < (sizeof(standard_8250_ports)/sizeof(standard_8250_ports[0]));i++) { - port = standard_8250_ports[i]; - if (port == 0) continue; - probe_8250(port); - } - - // pick the first port, which is probably COM1 - if (base_8250_ports == 0) return 0; // FIXME: You know "base_8250_ports" is probably a bad variable name for the max entries in info_8250_port[] - _DEBUG_uart = &info_8250_port[0]; - _DEBUG_INITed = 1; - - // init the COM port. - // in DOSBox-X, the "log" mode will receive our text and print it into the log file - // on real hardware, our text will likely go over a null modem cable to another PC running a serial terminal program like PuTTY or minicom. - // if nothing is connected, then the bytes go off into the ether to get lost and life goes on. - uart_8250_enable_interrupt(_DEBUG_uart,0); // disable interrupts - uart_8250_set_FIFO(_DEBUG_uart,0x07); // enable FIFO (why not?), also clear xmit/recv FIFO buffers, set threshhold to 1 byte - uart_8250_set_MCR(_DEBUG_uart,3); // RTS and DTS on - uart_8250_set_line_control(_DEBUG_uart,UART_8250_LCR_8BIT | UART_8250_LCR_PARITY); // 8 bit 1 stop bit odd parity - uart_8250_set_baudrate(_DEBUG_uart,uart_8250_baud_to_divisor(_DEBUG_uart,9600)); // 9600 baud - } - - return _DEBUG_INITed; -} - -void _DEBUG(const char *msg) { - if (_DEBUG_uart != NULL) { - char c; - - while ((c=(*msg++)) != 0/*NUL*/) { - while (!uart_8250_can_write(_DEBUG_uart)); // wait for the UART to indicate readiness for our output - uart_8250_write(_DEBUG_uart,(uint8_t)c); // then write it - } - } -} - -static char _DEBUGF_TMP[256]; - -void _DEBUGF(const char *fmt,...) { - va_list va; - - va_start(va,fmt); - vsnprintf(_DEBUGF_TMP,sizeof(_DEBUGF_TMP),fmt,va); - _DEBUG(_DEBUGF_TMP); - va_end(va); -} -#endif //serial -#endif //watcomc /* ================ = diff --git a/src/lib/16_dbg_1.c b/src/lib/16_dbg_1.c new file mode 100755 index 00000000..03c86f5e --- /dev/null +++ b/src/lib/16_dbg_1.c @@ -0,0 +1,74 @@ +#include "src/lib/16_dbg.h" + +// TODO: Could we also provide a build mode to emit debug to the "Bochs E9 hack?" +#ifdef DEBUGSERIAL +# include +# include +# include + +unsigned char _DEBUG_INITed = 0; +struct info_8250 *_DEBUG_uart = NULL; + +int _DEBUG_INIT() { + if (!_DEBUG_INITed) { + unsigned int i; + uint16_t port; + + if (!init_8250()) return 0; + + // what does the BIOS say the serial ports are? + probe_8250_bios_ports(); + for (i=0;i < bios_8250_ports;i++) { + port = get_8250_bios_port(i); + if (port == 0) continue; + probe_8250(port); + } + + // what about the standard serial ports? + for (i=0;i < (sizeof(standard_8250_ports)/sizeof(standard_8250_ports[0]));i++) { + port = standard_8250_ports[i]; + if (port == 0) continue; + probe_8250(port); + } + + // pick the first port, which is probably COM1 + if (base_8250_ports == 0) return 0; // FIXME: You know "base_8250_ports" is probably a bad variable name for the max entries in info_8250_port[] + _DEBUG_uart = &info_8250_port[0]; + _DEBUG_INITed = 1; + + // init the COM port. + // in DOSBox-X, the "log" mode will receive our text and print it into the log file + // on real hardware, our text will likely go over a null modem cable to another PC running a serial terminal program like PuTTY or minicom. + // if nothing is connected, then the bytes go off into the ether to get lost and life goes on. + uart_8250_enable_interrupt(_DEBUG_uart,0); // disable interrupts + uart_8250_set_FIFO(_DEBUG_uart,0x07); // enable FIFO (why not?), also clear xmit/recv FIFO buffers, set threshhold to 1 byte + uart_8250_set_MCR(_DEBUG_uart,3); // RTS and DTS on + uart_8250_set_line_control(_DEBUG_uart,UART_8250_LCR_8BIT | UART_8250_LCR_PARITY); // 8 bit 1 stop bit odd parity + uart_8250_set_baudrate(_DEBUG_uart,uart_8250_baud_to_divisor(_DEBUG_uart,9600)); // 9600 baud + } + + return _DEBUG_INITed; +} + +void _DEBUG(const char *msg) { + if (_DEBUG_uart != NULL) { + char c; + + while ((c=(*msg++)) != 0/*NUL*/) { + while (!uart_8250_can_write(_DEBUG_uart)); // wait for the UART to indicate readiness for our output + uart_8250_write(_DEBUG_uart,(uint8_t)c); // then write it + } + } +} + +static char _DEBUGF_TMP[256]; + +void _DEBUGF(const char *fmt,...) { + va_list va; + + va_start(va,fmt); + vsnprintf(_DEBUGF_TMP,sizeof(_DEBUGF_TMP),fmt,va); + _DEBUG(_DEBUGF_TMP); + va_end(va); +} +#endif //serial diff --git a/src/lib/16_tail.c b/src/lib/16_tail.c index f7d5a71a..638e7110 100755 --- a/src/lib/16_tail.c +++ b/src/lib/16_tail.c @@ -40,9 +40,6 @@ static word far* clockw= (word far*) 0x046C; /* 18.2hz clock */ void Startup16(global_game_variables_t *gvar) { -#ifdef __WATCOMC__ - start_timer(gvar); -#endif gvar->video.VL_Started=0; TL_VidInit(gvar); gvar->mm.mmstarted=0; @@ -93,51 +90,6 @@ void Shutdown16(global_game_variables_t *gvar) #endif } -void TL_VidInit(global_game_variables_t *gvar) -{ -#ifdef __WATCOMC__ - // DOSLIB: check our environment - probe_dos(); - - // DOSLIB: what CPU are we using? - // NTS: I can see from the makefile Sparky4 intends this to run on 8088 by the -0 switch in CFLAGS. - // So this code by itself shouldn't care too much what CPU it's running on. Except that other - // parts of this project (DOSLIB itself) rely on CPU detection to know what is appropriate for - // the CPU to carry out tasks. --J.C. - cpu_probe(); - - // DOSLIB: check for VGA - if (!probe_vga()) { - printf("VGA probe failed\n"); - return; - } - // hardware must be VGA or higher! - if (!(vga_state.vga_flags & VGA_IS_VGA)) { - printf("This program requires VGA or higher graphics hardware\n"); - return; - } - - if (_DEBUG_INIT() == 0) { -#ifdef DEBUGSERIAL - //printf("WARNING: Failed to initialize DEBUG output\n"); -#endif - } - _DEBUG("Serial debug output started\n"); // NTS: All serial output must end messages with newline, or DOSBox-X will not emit text to log - _DEBUGF("Serial debug output printf test %u %u %u\n",1U,2U,3U); - - textInit(); - - // get old video mode - //in.h.ah = 0xf; - //int86(0x10, &in, &out); - if(!gvar->video.old_mode) gvar->video.old_mode = vgaGetMode();//out.h.al; -#else - gvar->video.old_mode = 3; -#endif - gvar->video.VL_Initiated = 1; -} - - //=========================================================================== /* @@ -677,13 +629,3 @@ void booleantest() printf(" sizeof(boolean)=%s\n", boolean_to_binary(sizeof(boolean))); printf("end of boolean test\n"); } - -#ifdef __BORLANDC__ -word modexPalOverscan(word col) -{ - //modexWaitBorder(); - outp(PAL_WRITE_REG, 0); /* start at the beginning of palette */ - outp(PAL_DATA_REG, col); - return col; -} -#endif diff --git a/src/lib/16_tail_.c b/src/lib/16_tail_.c new file mode 100755 index 00000000..10ef7395 --- /dev/null +++ b/src/lib/16_tail_.c @@ -0,0 +1,43 @@ +#include "src/lib/16_tail.h" + +void TL_VidInit(global_game_variables_t *gvar) +{ + start_timer(gvar); + + // DOSLIB: check our environment + probe_dos(); + + // DOSLIB: what CPU are we using? + // NTS: I can see from the makefile Sparky4 intends this to run on 8088 by the -0 switch in CFLAGS. + // So this code by itself shouldn't care too much what CPU it's running on. Except that other + // parts of this project (DOSLIB itself) rely on CPU detection to know what is appropriate for + // the CPU to carry out tasks. --J.C. + cpu_probe(); + + // DOSLIB: check for VGA + if (!probe_vga()) { + printf("VGA probe failed\n"); + return; + } + // hardware must be VGA or higher! + if (!(vga_state.vga_flags & VGA_IS_VGA)) { + printf("This program requires VGA or higher graphics hardware\n"); + return; + } + + if (_DEBUG_INIT() == 0) { +#ifdef DEBUGSERIAL + //printf("WARNING: Failed to initialize DEBUG output\n"); +#endif + } + _DEBUG("Serial debug output started\n"); // NTS: All serial output must end messages with newline, or DOSBox-X will not emit text to log + _DEBUGF("Serial debug output printf test %u %u %u\n",1U,2U,3U); + + textInit(); + + // get old video mode + //in.h.ah = 0xf; + //int86(0x10, &in, &out); + if(!gvar->video.old_mode) gvar->video.old_mode = vgaGetMode();//out.h.al; + gvar->video.VL_Initiated = 1; +} diff --git a/src/lib/16_tdef.h b/src/lib/16_tdef.h index 22e9812b..418750fb 100755 --- a/src/lib/16_tdef.h +++ b/src/lib/16_tdef.h @@ -599,8 +599,8 @@ typedef struct #pragma pack(push,1) typedef struct imf_entry { - uint8_t reg,data; - uint16_t delay; + byte reg,data; + word delay; } imf_entry_t; #pragma pack(pop) @@ -611,7 +611,7 @@ typedef struct imf_entry_t* imf_music;//=NULL; imf_entry_t* imf_play_ptr;//=NULL; imf_entry_t* imf_music_end;//=NULL; - uint16_t imf_delay_countdown;//=0; + word imf_delay_countdown;//=0; } sd_t; //========================================================================== @@ -643,9 +643,9 @@ typedef struct typedef struct { - int maphandle[4]; // handle to MAPTEMP / GAMEMAPS - int grhandle[4]; // handle to EGAGRAPH - int audiohandle[4]; // handle to AUDIOT / AUDIO + int maphandle; // handle to MAPTEMP / GAMEMAPS + int grhandle; // handle to EGAGRAPH + int audiohandle; // handle to AUDIOT / AUDIO } ca_handle_t; /* 16/wf3d8086/id_ca.c: grstarts = (long _seg *)FP_SEG(&EGAhead);