#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
+ //word far *clock= (word far*) 0x046C; /* 18.2hz clock */\r
\r
typedef struct {\r
bitmap_t *data;\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(80,60);\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
- /* scroll all the way to the right */\r
- for(x=0; x<(map.width*16-SCREEN_WIDTH); x++) {\r
- mapScrollRight(draw, 1);\r
- modexShowPage(draw->page);\r
- mapScrollRight(show, 1);\r
- //SWAP(draw, show);\r
- }\r
- \r
- /* scroll all the way to the left */\r
- for(; x>0; x--) {\r
- mapScrollLeft(&mv, 1);\r
- modexShowPage(mv.page);\r
- }\r
- \r
- /* scroll all the way down */\r
- for(y=0; y<(map.height*16-SCREEN_HEIGHT); y++) {\r
- mapScrollDown(&mv, 1);\r
- modexShowPage(mv.page);\r
- }\r
+\r
- /* scroll all the way up */\r
- for(; y>0; y--) {\r
- mapScrollUp(&mv, 1);\r
- modexShowPage(mv.page);\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
- /* spin for a time */\r
- for(x=0; x<500; x++) {\r
- modexWaitBorder();\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