/* Project 16 Source Code~\r
- * Copyright (C) 2012-2016 sparky4 & pngwen & andrius4669 & joncampbell123 & yakui-lover\r
+ * Copyright (C) 2012-2017 sparky4 & pngwen & andrius4669 & joncampbell123 & yakui-lover\r
*\r
* This file is part of Project 16.\r
*\r
modexCalcVmemRemain(video);\r
video->p=0;\r
video->r=1;\r
+ video->vh=video->page[0].height+video->page[1].height+video->page[2].height+video->page[3].height;\r
//doslib origi var\r
video->omemptr= vga_state.vga_graphics_ram;\r
video->vga_draw_stride= vga_state.vga_draw_stride;\r
outp(AC_INDEX, 0x33);\r
outp(AC_INDEX, (page[0].dx & 0x03) << 1);\r
}\r
-\r
-//another variant\r
//args: page, vertical sync switch, screen resolution switch, page0 switch\r
void\r
VL_ShowPage(page_t *page, boolean vsync, boolean sr) {\r
_fmemset(Where, color, page->width*(page->height)/4);\r
}\r
\r
+//\r
+// pattern filler from joncampbell123's code\r
+//\r
+void VL_PatternDraw(video_t *video, word pn, boolean sw, boolean allsw)\r
+{\r
+ unsigned int i,j,o, d,h,s;\r
+ word w;\r
+\r
+ switch(sw)\r
+ {\r
+ case 0:\r
+ w=vga_state.vga_width;\r
+ d=0;\r
+ s=vga_state.vga_stride;\r
+ switch(allsw)\r
+ {\r
+ case 0:\r
+ h=vga_state.vga_height;\r
+ break;\r
+ case 1:\r
+ h=video->vh;\r
+ break;\r
+ }\r
+ break;\r
+ default:\r
+ w=video->page[pn].width;\r
+ d=(0x10000UL - (uint16_t)video->page[pn].data);\r
+ s=video->page[pn].stridew;\r
+ switch(allsw)\r
+ {\r
+ case 0:\r
+ h=video->page[pn].height;\r
+ break;\r
+ case 1:\r
+ if(!pn) h=video->vh;\r
+ else h=video->page[pn].height;\r
+ break;\r
+ }\r
+ break;\r
+ }\r
+\r
+ /* fill screen/pattern with a distinctive pattern */\r
+ for (i=0;i < w;i++) {\r
+ o = (i >> 2) + d;\r
+ vga_write_sequencer(0x02/*map mask*/,1 << (i&3));\r
+ for (j=0;j < h;j++,o += s)\r
+ vga_state.vga_graphics_ram[o] = (i^j)&15; // VRL samples put all colors in first 15!\r
+ }\r
+}\r
+\r
void\r
modexWaitBorder() {\r
while(inp(INPUT_STATUS_1) & 8) {\r