#include "modex16.h"\r
#include <stdio.h>\r
-#include <stdlib.h>
+#include <stdlib.h>\r
#include "dos_kb.h"\r
\r
//word far *clock= (word far*) 0x046C; /* 18.2hz clock */\r
void mapDrawRow(map_view_t *mv, int tx, int ty, word y);\r
void mapDrawCol(map_view_t *mv, int tx, int ty, word x);\r
\r
+#define SWAP(a, b) tmp=a; a=b; b=tmp;\r
void main() {\r
int show1=1;\r
int tx, ty;\r
- int x, y;
- //int ch=0x0;
- byte ch;
+ int x, y;\r
+ //int ch=0x0;\r
+ byte ch;\r
int q=0;\r
- page_t screen;\r
+ page_t screen,screen2;\r
map_t map;\r
- map_view_t mv;\r
- byte *ptr;
-
- setkb(1);\r
-\r
+ map_view_t mv, mv2;\r
+ map_view_t *draw, *show, *tmp;\r
+ byte *ptr;\r
+ \r
/* create the map */\r
map = allocMap(40,30);\r
initMap(&map);\r
mv.map = ↦\r
+ mv2.map = ↦\r
\r
/* draw the tiles */\r
ptr = map.data;\r
screen = modexDefaultPage();\r
screen.width = 352;\r
mv.page = &screen;\r
+ screen2=modexNextPage(mv.page);\r
+ mv2.page = &screen2;\r
mapGoTo(&mv, 0, 0);\r
+ mapGoTo(&mv2, 0, 0);\r
modexShowPage(mv.page);\r
-
- while(!keyp(1))
- {\r
- // scroll all the way to the right\r
- //for(x=0; x<(map.width*16-SCREEN_WIDTH); x++) {
- //if(ch==0x4d){
- if(keyp(77)){
- for(q=0; q<16; q++) {\r
- mapScrollRight(&mv, 1);\r
- modexShowPage(mv.page);
+\r
+ /* set up paging */\r
+ show = &mv;\r
+ draw = &mv2;\r
+\r
+ while(!keyp(1)) {\r
+ if(keyp(77)){\r
+ for(q=0; q<16; q++) {\r
+ mapScrollRight(draw, 1);\r
+ modexShowPage(draw->page);\r
+ SWAP(draw, show);\r
+ }\r
}\r
- }\r
\r
- // scroll all the way to the left\r
- //for(; x>0; x--) {
- //if(ch==0x4b){
- if(keyp(75)){
- for(q=0; q<16; q++) {\r
- mapScrollLeft(&mv, 1);\r
- modexShowPage(mv.page);
+ if(keyp(75)){\r
+ for(q=0; q<16; q++) {\r
+ mapScrollLeft(draw, 1);\r
+ modexShowPage(draw->page);\r
+ SWAP(draw, show);\r
+ }\r
}\r
- }\r
\r
- // scroll all the way down\r
- //for(y=0; y<(map.height*16-SCREEN_HEIGHT); y++) {
- //if(ch==0x50){
- if(keyp(80)){
- for(q=0; q<16; q++) {\r
- mapScrollDown(&mv, 1);\r
- modexShowPage(mv.page);
- }\r
- }\r
+ if(keyp(80)){\r
+ for(q=0; q<16; q++) {\r
+ mapScrollDown(draw, 1);\r
+ modexShowPage(draw->page);\r
+ SWAP(draw, show);\r
+ }\r
+ }\r
+\r
+\r
+ if(keyp(72)){\r
+ for(q=0; q<16; q++) {\r
+ mapScrollUp(draw, 1);\r
+ modexShowPage(draw->page);\r
+ SWAP(draw, show);\r
\r
- // scroll all the way up\r
- //for(; y>0; y--) {
- //if(ch==0x48){
- if(keyp(72)){
- for(q=0; q<16; q++) {\r
- mapScrollUp(&mv, 1);\r
- modexShowPage(mv.page);
+ }\r
}\r
+\r
+ keyp(ch);\r
+\r
}\r
\r
- // spin for a time \r
- /*for(x=0; x<500; x++) {\r
- modexWaitBorder();\r
- }*/
- //while(1){
-// ch=getch();
- //printf("0x%02x\n", ch);
- keyp(ch);\r
-// if(ch==0x71)break; // 'q'\r
-// if(ch==0x1b)break; // 'ESC'\r
-}\r
- modexLeave();
- setkb(0);\r
+ modexLeave();\r
+ setkb(0);\r
}\r
\r
\r