*/
#include "src/lib/16_ca.h"
#include "src/lib/16_mm.h"
+#include "src/lib/modex16.h"
void
main(int argc, char *argv[])
__segment segu;
char *bakapee;
word baka;
+ page_t screen;
bakapee = malloc(64);
// memset(bakapee, 0, 64);
if(argv[1]) bakapee = argv[1];
else bakapee = "data/koishi~~.pcx";
+ textInit();\r
+
+ /* setup camera and screen~ */\r
+ screen = modexDefaultPage();\r
+ screen.width += (16*2);\r
+ screen.height += (16*2);
+
printf("start!\n");
MM_Startup(&mm, &mmi);
printf("done!\n");
//MM_GetPtr(&bigbuffer, mmi.nearheap, &mm, &mmi);
//hmm functions in cache system use the buffered stuff
printf("size of big buffer~=%u\n", _bmsize(segu, bigbuffer));
- MM_ShowMemory(&mm);
- MM_Report(&mm, &mmi);
+ getch();
+ modexEnter();
+ MM_ShowMemory(&screen, &mm);
+ getch();
+ MM_Report(&screen, &mm, &mmi);
+ modexLeave();
printf("stop!\n");
MM_FreePtr(&bigbuffer, &mm);
MM_Shutdown(&mm);
MML_SetupEMS(mm); // allocate space
printf("\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"); //bug!
//TODO: EMS4! AND EMS 3.2 MASSIVE DATA HANDLMENT!
- MML_UseSpace(mm->EMSpageframe,(mm->EMSpagesmapped)*0x4000lu, mm);
+ MML_UseSpace(mm->EMSpageframe,(MAPPAGES)*0x4000lu, mm);
//printf("EMS3\n");
MM_MapEMS(mm); // map in used pages
//printf("EMS4\n");
- mmi->EMSmem = (mm->EMSpagesmapped)*0x4000lu;
+ mmi->EMSmem = (MAPPAGES)*0x4000lu;
}
//
=====================
*/
-void MM_ShowMemory(mminfo_t *mm)
+void MM_ShowMemory(page_t *page, mminfo_t *mm)
{
mmblocktype huge *scan;
unsigned color,temp;
long end,owner;
+ word chx,chy;
char scratch[160],str[16];
//**** VW_SetDefaultColors();
//CA_OpenDebug ();
+ chx=0;
+ chy=0;
+
while(scan)
{
if(scan->attributes & PURGEBITS)
color = 12; // red = locked
if(scan->start<=end)
{
- printf("\nMM_ShowMemory: Memory block order currupted!\n");
+ //printf("\nMM_ShowMemory: Memory block order currupted!\n");
+ modexprint(&page, chx, chy, 1, 0, 24, "\nMM_ShowMemory: Memory block order currupted!\n");
return;
}
end = scan->start+scan->length-1;
+//++++ modexhlin(page, scan->start, (unsigned)end, chy, color);
//++++ VW_Hlin(scan->start,(unsigned)end,0,color);
+//void VW_Plot(unsigned x, unsigned y, unsigned color);
+//void VW_Hlin(unsigned xl, unsigned xh, unsigned y, unsigned color);
+
//++++ VW_Plot(scan->start,0,15);
+//++++ modexputPixel(page, scan->start, chy, 15);
if(scan->next->start > end+1)
//++++ VW_Hlin(end+1,scan->next->start,0,0); // black = free
//****#if 0
printf("\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"); //bug!
-strcpy(scratch,"Location:");
+strcpy(scratch,"Seg:");
ultoa (scan->start,str,16);
strcat (scratch,str);
strcat (scratch,"\tSize:");
strcat (scratch,str);
strcat (scratch,"\n");
//++++write (debughandle,scratch,strlen(scratch));
-fprintf(stdout, "%s", scratch);
+modexprint(page, chx, chy, 1, 0, 24, &scratch);
+chy+=8;
+//fprintf(stdout, "%s", scratch);
//****#endif
scan = scan->next;
=====================
*/
-void MM_Report(mminfo_t *mm, mminfotype *mmi)
+void MM_Report(page_t *page, mminfo_t *mm, mminfotype *mmi)
{
if(MML_CheckForEMS())
{
- printf("EMM %x available\n", mm->EMSVer);
+ printf("EMM v%x.%x available\n", mm->EMSVer>>4,mm->EMSVer&0x0F);
printf("totalEMSpages=%u\n", mm->totalEMSpages);
printf("freeEMSpages=%u\n", mm->freeEMSpages);
printf("EMSpageframe=%x\n", mm->EMSpageframe);
#include <malloc.h>
//#include <bios.h>
#include "src/lib/16_head.h"
+#include "src/lib/modex16.h"
//++++mh #include "src/lib/16_in.h"
#ifdef __DEBUG__ // 1 == Debug/Dev ; 0 == Production/final
#define BASEATTRIBUTES 0 // unlocked, non purgable
#define MAXUMBS 12
+#define MAPPAGES 4/*mm->EMSpagesmapped*/
typedef struct mmblockstruct
{
void MM_SetPurge(memptr *baseptr, int purge, mminfo_t *mm);
void MM_SetLock(memptr *baseptr, boolean locked, mminfo_t *mm);
void MM_SortMem(mminfo_t *mm);
-void MM_ShowMemory(mminfo_t *mm);
+void MM_ShowMemory(page_t *page, mminfo_t *mm);
dword MM_UnusedMemory(mminfo_t *mm);
dword MM_TotalFree(mminfo_t *mm);
-void MM_Report(mminfo_t *mm, mminfotype *mmi);
+void MM_Report(page_t *page, mminfo_t *mm, mminfotype *mmi);
//int MM_EMSVer(void);
void MM_BombOnError(boolean bomb, mminfo_t *mm);
void MM_GetNewBlock(mminfo_t *mm);
\r
}\r
\r
-byte modexgetPixel(int x, int y)\r
-{\r
+byte modexgetPixel(page_t *page, int x, int y)\r
+{
+ word pageOff = (word) page->data;\r
/* Select the plane from which we must read the pixel color: */\r
outpw(GC_INDEX, 0x04);\r
outpw(GC_INDEX+1, x & 3);\r
\r
- return VGA[(unsigned)((SCREEN_WIDTH/4) * y) + (x / 4) + 0];\r
+ return VGA[(unsigned)((SCREEN_WIDTH/4) * y) + (x / 4) + pageOff];\r
\r
+}
+
+void modexhlin(page_t *page, word xl, word xh, word y, word color)
+{
+ word x;
+
+ for(x=0;x<xh;x++)
+ modexputPixel(page, x+xl, y, color);
}\r
\r
void modexprint(page_t *page, word x, word y, word t, word col, word bgcol, const byte *str)\r
void modexPalUpdate0(byte *p);
void chkcolor(bitmap_t *bmp, word *q, word *a, word *aa, word *z, word *i/*, word *offset*/);
void modexputPixel(page_t *page, int x, int y, byte color);
+byte modexgetPixel(page_t *page, int x, int y);
+void modexhlin(page_t *page, word xl, word xh, word y, word color);
void modexprint(page_t *page, word x, word y, word t, word col, word bgcol, const byte *str);
void modexprintbig(page_t *page, word x, word y, word t, word col, word bgcol, const byte *str);
void modexWaitBorder();