]> 4ch.mooo.com Git - 16.git/commitdiff
modified: 16/DOS_GFX.OBJ
authorsparky4 <sparky4@4ch.maidlab.jp>
Thu, 22 May 2014 16:50:45 +0000 (11:50 -0500)
committersparky4 <sparky4@4ch.maidlab.jp>
Thu, 22 May 2014 16:50:45 +0000 (11:50 -0500)
modified:   16/Project 16.bfproject
modified:   16/dos_gfx.cpp
modified:   16/lib/x/MODEX.BAK
modified:   16/lib/x/MODEX.H

16/DOS_GFX.OBJ
16/Project 16.bfproject
16/dos_gfx.cpp
16/dos_gfx.h
16/dos_kb.c
16/lib/x/MODEX.BAK
16/lib/x/MODEX.H
16/scroll.txt

index dd4ed8e32bf240aa5ec9841d2fcf10878baf6d13..d5b35927b3ab31ac8a71738e2ad1dfd6067da226 100644 (file)
Binary files a/16/DOS_GFX.OBJ and b/16/DOS_GFX.OBJ differ
index e04b651f9eb3d07235771c729adc39eb1b25f65d..af88c95db62acf306a9a77a814cb434b8834a4b6 100644 (file)
@@ -1,6 +1,6 @@
 c2e.convert_special: 0
 e2c.convert_num: 0
-openfiles: /dos/z/16/16/dos_gfx.cpp:11047:10691:1:
+openfiles: /dos/z/16/16/dos_gfx.cpp:38508:37505:1:
 openfiles: /dos/z/16/16/dos_gfx.h:607:0:0:
 openfiles: /dos/z/16/16/dos_kb.c:892:395:0:
 openfiles: /dos/z/16/16/dos_kb.h:60:0:0:
@@ -9,7 +9,6 @@ openfiles: /dos/z/16/16/lib/lib_com.h:2553:1575:0:
 openfiles: /dos/z/16/16/scroll.txt:5307:5103:0:
 openfiles: /dos/z/16/16/project16.txt:1675:950:0:
 openfiles: /dos/z/16/16/16.txt:0:0:0:
-openfiles: /dos/z/16/16/lib/x/MODEX.DEF:1385:1054:0:
 snr_recursion_level: 0
 convertcolumn_horizontally: 0
 adv_open_matchname: 0
@@ -21,7 +20,7 @@ view_left_panel: 0
 default_mime_type: text/plain
 e2c.convert_xml: 1
 c2e.convert_iso: 0
-opendir: file:///dos/z/16/16
+opendir: file:///dos/z/16/16/lib/x
 wrap_text_default: 0
 bookmarks_filename_mode: 1
 ssearch_text: mxpan
@@ -69,15 +68,15 @@ recent_files: file:///dos/z/16/16/w_modex/XPRIM.CPP
 recent_files: file:///dos/z/16/16/w_modex/MODEX.CPP
 recent_files: file:///dos/z/16/16/w_modex/TEST.CPP
 recent_files: file:///dos/z/16/16/x.bat
+recent_files: file:///dos/z/16/16/lib/x/MODEX.DEF
+recent_files: file:///dos/z/16/16/Project%2016.bfproject
+recent_files: file:///dos/z/16/16/dos_gfx.cpp
 recent_files: file:///dos/z/16/16/dos_gfx.h
-recent_files: file:///dos/z/16/16/dos_kb.c
 recent_files: file:///dos/z/16/16/lib/lib_com.h
-recent_files: file:///dos/z/16/16/dos_kb.h
 recent_files: file:///dos/z/16/16/lib/lib_com.cpp
-recent_files: file:///dos/z/16/16/dos_gfx.cpp
-recent_files: file:///dos/z/16/16/lib/x/MODEX.DEF
-recent_files: file:///dos/z/16/16/Project%2016.bfproject
+recent_files: file:///dos/z/16/16/dos_kb.c
 recent_files: file:///dos/z/16/16/project16.txt
+recent_files: file:///dos/z/16/16/dos_kb.h
 recent_files: file:///dos/z/16/16/16.txt
 recent_files: file:///dos/z/16/16/scroll.txt
 snr_replacetype: 0
@@ -97,7 +96,7 @@ searchlist: ding
 searchlist: font
 searchlist: wi
 searchlist: waiyt
-searchlist:       ENDP
+searchlist: ENDP
 searchlist: mss
 searchlist: mxset
 searchlist: mspai
index 1f2385132babdf617d0988f50e20a831b8dee6e3..b3bd315594e0dc088b309c326588f44dc72c4df5 100644 (file)
@@ -6,20 +6,20 @@
  *\r
  * Simple graphics library to accompany the article\r
  * \r
- *                                        INTRODUCTION TO MODE X.\r
+ *                                     INTRODUCTION TO MODE X.\r
  * \r
  * This library provides the basic functions for initializing and using\r
  * unchained (planar) 256-color VGA modes.  Currently supported are:\r
  *\r
- *        - 320x200\r
- *        - 320x240\r
+ *     - 320x200\r
+ *     - 320x240\r
  *\r
  * Functions are provided for:\r
  *\r
- *        - initializing one of the available modes\r
- *        - setting the start address of the VGA refresh data\r
- *        - setting active and visible display pages\r
- *        - writing and reading a single pixel to/from video memory\r
+ *     - initializing one of the available modes\r
+ *     - setting the start address of the VGA refresh data\r
+ *     - setting active and visible display pages\r
+ *     - writing and reading a single pixel to/from video memory\r
  *\r
  * The library is provided as a demonstration only, and is not claimed\r
  * to be particularly efficient or suited for any purpose.  It has only\r
@@ -76,18 +76,18 @@ byte coor;
 /*\r
  * Define the port addresses of some VGA registers.\r
  */\r
-#define CRTC_ADDR          0x3d4   /* Base port of the CRT Controller (color) */\r
+#define CRTC_ADDR        0x3d4   /* Base port of the CRT Controller (color) */\r
 \r
-#define SEQU_ADDR          0x3c4   /* Base port of the Sequencer */\r
-#define GRAC_ADDR          0x3ce   /* Base port of the Graphics Controller */\r
+#define SEQU_ADDR        0x3c4   /* Base port of the Sequencer */\r
+#define GRAC_ADDR        0x3ce   /* Base port of the Graphics Controller */\r
 #define STATUS_ADDR     0x3DA\r
 \r
 unsigned char *RowsX[600];\r
 unsigned char write_plane, read_plane;\r
 unsigned short text_mask[16] = { 0x0002, 0x0102, 0x0202, 0x0302,\r
-                                 0x0402, 0x0502, 0x0602, 0x0702,\r
-                                 0x0802, 0x0902, 0x0A02, 0x0B02,\r
-                                 0x0C02, 0x0D02, 0x0E02, 0x0F02 };\r
+                                0x0402, 0x0502, 0x0602, 0x0702,\r
+                                0x0802, 0x0902, 0x0A02, 0x0B02,\r
+                                0x0C02, 0x0D02, 0x0E02, 0x0F02 };\r
 \r
 \r
 /*\r
@@ -112,48 +112,48 @@ unsigned actStart, visStart;
 \r
 /*\r
  * set320x200x256_X()\r
- *        sets mode 13h, then turns it into an unchained (planar), 4-page\r
- *        320x200x256 mode.\r
+ *     sets mode 13h, then turns it into an unchained (planar), 4-page\r
+ *     320x200x256 mode.\r
  */\r
 void set320x200x256_X(void)\r
-                {\r
-                union REGS r;\r
+               {\r
+               union REGS r;\r
 \r
-                /* Set VGA BIOS mode 13h: */\r
-                r.x.ax = 0x0013;\r
-                int86(0x10, &r, &r);\r
+               /* Set VGA BIOS mode 13h: */\r
+               r.x.ax = 0x0013;\r
+               int86(0x10, &r, &r);\r
 \r
-                /* Turn off the Chain-4 bit (bit 3 at index 4, port 0x3c4): */\r
-                outpw(SEQU_ADDR, 0x0604);\r
+               /* Turn off the Chain-4 bit (bit 3 at index 4, port 0x3c4): */\r
+               outpw(SEQU_ADDR, 0x0604);\r
 \r
-                /* Turn off word mode, by setting the Mode Control register\r
-                of the CRT Controller (index 0x17, port 0x3d4): */\r
-                outpw(CRTC_ADDR, 0xE317);\r
+               /* Turn off word mode, by setting the Mode Control register\r
+               of the CRT Controller (index 0x17, port 0x3d4): */\r
+               outpw(CRTC_ADDR, 0xE317);\r
 \r
-                /* Turn off doubleword mode, by setting the Underline Location\r
-                   register (index 0x14, port 0x3d4): */\r
-                outpw(CRTC_ADDR, 0x0014);\r
+               /* Turn off doubleword mode, by setting the Underline Location\r
+                  register (index 0x14, port 0x3d4): */\r
+               outpw(CRTC_ADDR, 0x0014);\r
 \r
-                /* Clear entire video memory, by selecting all four planes, then\r
-                   writing 0 to entire segment. */\r
-                outpw(SEQU_ADDR, 0x0F02);\r
-                memset(vga+1, 0, 0xffff); /* stupid size_t exactly 1 too small */\r
-                vga[0] = 0;\r
+               /* Clear entire video memory, by selecting all four planes, then\r
+                  writing 0 to entire segment. */\r
+               outpw(SEQU_ADDR, 0x0F02);\r
+               memset(vga+1, 0, 0xffff); /* stupid size_t exactly 1 too small */\r
+               vga[0] = 0;\r
 \r
-                /* Update the global variables to reflect dimensions of this\r
-                   mode.  This is needed by most future drawing operations. */\r
-                width              = 320;\r
-                height  = 200;\r
+               /* Update the global variables to reflect dimensions of this\r
+                  mode.  This is needed by most future drawing operations. */\r
+               width           = 320;\r
+               height  = 200;\r
 \r
-                /* Each byte addresses four pixels, so the width of a scan line\r
-                   in *bytes* is one fourth of the number of pixels on a line. */\r
-                widthBytes = width / 4;\r
+               /* Each byte addresses four pixels, so the width of a scan line\r
+                  in *bytes* is one fourth of the number of pixels on a line. */\r
+               widthBytes = width / 4;\r
 \r
-                /* By default we want screen refreshing and drawing operations\r
-                   to be based at offset 0 in the video segment. */\r
-                actStart = visStart = 0;\r
+               /* By default we want screen refreshing and drawing operations\r
+                  to be based at offset 0 in the video segment. */\r
+               actStart = visStart = 0;\r
 \r
-                /*\r
+               /*\r
 --------------------\r
 HORIZONTAL SCROLLING\r
 --------------------\r
@@ -191,16 +191,16 @@ OUT value TO PORT 3C0H (where "value" is the
 -----------------------------------------------\r
 */\r
 \r
-                }\r
+               }\r
 \r
 /*\r
  * setActiveStart() tells our graphics operations which address in video\r
  * memory should be considered the top left corner.\r
  */\r
 void setActiveStart(unsigned offset)\r
-                {\r
-                actStart = offset;\r
-                }\r
+               {\r
+               actStart = offset;\r
+               }\r
 \r
 /*\r
  * setVisibleStart() tells the VGA from which byte to fetch the first\r
@@ -211,13 +211,13 @@ void setActiveStart(unsigned offset)
  * set, but before the low byte is set, which produces a bad flicker.\r
  */\r
 void setVisibleStart(unsigned offset)\r
-                {\r
-                visStart = offset;\r
-                outpw(CRTC_ADDR, 0x0C);          /* set high byte */\r
-                outpw(CRTC_ADDR+1, visStart >> 8);\r
-                outpw(CRTC_ADDR, 0x0D);          /* set low byte */\r
-                outpw(CRTC_ADDR+1, visStart & 0xff);\r
-                }\r
+               {\r
+               visStart = offset;\r
+               outpw(CRTC_ADDR, 0x0C);   /* set high byte */\r
+               outpw(CRTC_ADDR+1, visStart >> 8);\r
+               outpw(CRTC_ADDR, 0x0D);   /* set low byte */\r
+               outpw(CRTC_ADDR+1, visStart & 0xff);\r
+               }\r
 \r
 /*\r
  * setXXXPage() sets the specified page by multiplying the page number\r
@@ -226,78 +226,78 @@ void setVisibleStart(unsigned offset)
  * function.  The first page is number 0.\r
  */\r
 void setActivePage(int page)\r
-                {\r
-                setActiveStart(page * widthBytes * height);\r
-                }\r
+               {\r
+               setActiveStart(page * widthBytes * height);\r
+               }\r
 \r
 void setVisiblePage(int page)\r
-                {\r
-                setVisibleStart(page * widthBytes * height);\r
-                }\r
+               {\r
+               setVisibleStart(page * widthBytes * height);\r
+               }\r
 \r
 void putPixel_X(int x, int y, byte color)\r
-                {\r
-                /* Each address accesses four neighboring pixels, so set\r
-                   Write Plane Enable according to which pixel we want\r
-                   to modify.  The plane is determined by the two least\r
-                   significant bits of the x-coordinate: */\r
-                outp(0x3c4, 0x02);\r
-                outp(0x3c5, 0x01 << (x & 3));\r
-\r
-                /* The offset of the pixel into the video segment is\r
-                   offset = (width * y + x) / 4, and write the given\r
-                   color to the plane we selected above.  Heed the active\r
-                   page start selection. */\r
-                vga[(unsigned)(widthBytes * y) + (x / 4) + actStart] = color;\r
-\r
-                }\r
+               {\r
+               /* Each address accesses four neighboring pixels, so set\r
+                  Write Plane Enable according to which pixel we want\r
+                  to modify.  The plane is determined by the two least\r
+                  significant bits of the x-coordinate: */\r
+               outp(0x3c4, 0x02);\r
+               outp(0x3c5, 0x01 << (x & 3));\r
+\r
+               /* The offset of the pixel into the video segment is\r
+                  offset = (width * y + x) / 4, and write the given\r
+                  color to the plane we selected above.  Heed the active\r
+                  page start selection. */\r
+               vga[(unsigned)(widthBytes * y) + (x / 4) + actStart] = color;\r
+\r
+               }\r
 \r
 byte getPixel_X(int x, int y)\r
-                {\r
-                /* Select the plane from which we must read the pixel color: */\r
-                outpw(GRAC_ADDR, 0x04);\r
-                outpw(GRAC_ADDR+1, x & 3);\r
+               {\r
+               /* Select the plane from which we must read the pixel color: */\r
+               outpw(GRAC_ADDR, 0x04);\r
+               outpw(GRAC_ADDR+1, x & 3);\r
 \r
-                return vga[(unsigned)(widthBytes * y) + (x / 4) + actStart];\r
+               return vga[(unsigned)(widthBytes * y) + (x / 4) + actStart];\r
 \r
-                }\r
+               }\r
 \r
 void set320x240x256_X(void)\r
-                {\r
-                /* Set the unchained version of mode 13h: */\r
-                set320x200x256_X();\r
-\r
-                /* Modify the vertical sync polarity bits in the Misc. Output\r
-                   Register to achieve square aspect ratio: */\r
-                outp(0x3C2, 0xE3);\r
-\r
-                /* Modify the vertical timing registers to reflect the increased\r
-                   vertical resolution, and to center the image as good as\r
-                   possible: */\r
-                outpw(0x3D4, 0x2C11);              /* turn off write protect */\r
-                outpw(0x3D4, 0x0D06);              /* vertical total */\r
-                outpw(0x3D4, 0x3E07);              /* overflow register */\r
-                outpw(0x3D4, 0xEA10);              /* vertical retrace start */\r
-                outpw(0x3D4, 0xAC11);              /* vertical retrace end AND wr.prot */\r
-                outpw(0x3D4, 0xDF12);              /* vertical display enable end */\r
-                outpw(0x3D4, 0xE715);              /* start vertical blanking */\r
-                outpw(0x3D4, 0x0616);              /* end vertical blanking */\r
-\r
-                /* Update mode info, so future operations are aware of the\r
-                   resolution */\r
-                height = 240;\r
+               {\r
+               /* Set the unchained version of mode 13h: */\r
+               set320x200x256_X();\r
+\r
+               /* Modify the vertical sync polarity bits in the Misc. Output\r
+                  Register to achieve square aspect ratio: */\r
+               outp(0x3C2, 0xE3);\r
+\r
+               /* Modify the vertical timing registers to reflect the increased\r
+                  vertical resolution, and to center the image as good as\r
+                  possible: */\r
+               outpw(0x3D4, 0x2C11);           /* turn off write protect */\r
+               outpw(0x3D4, 0x0D06);           /* vertical total */\r
+               outpw(0x3D4, 0x3E07);           /* overflow register */\r
+               outpw(0x3D4, 0xEA10);           /* vertical retrace start */\r
+               outpw(0x3D4, 0xAC11);           /* vertical retrace end AND wr.prot */\r
+               outpw(0x3D4, 0xDF12);           /* vertical display enable end */\r
+               outpw(0x3D4, 0xE715);           /* start vertical blanking */\r
+               outpw(0x3D4, 0x0616);           /* end vertical blanking */\r
+\r
+               /* Update mode info, so future operations are aware of the\r
+                  resolution */\r
+               height = 240;\r
 \r
 //*$pragma aux mxSetVirtualScreen "MXSETVIRTUALSCREEN"\r
-mxSetVirtualScreen(480,360);\r
-                }\r
+//mxSetVirtualScreen(480,360);\r
+               }\r
 \r
 \r
 /*-----------XXXX-------------*/\r
 \r
 /////////////////////////////////////////////////////////////////////////////\r
-//                                                                         //\r
-// WaitRetrace() - This waits until you are in a Verticle Retrace.         //\r
-//                                                                         //\r
+//                                                                      //\r
+// WaitRetrace() - This waits until you are in a Verticle Retrace.      //\r
+//                                                                      //\r
 /////////////////////////////////////////////////////////////////////////////\r
 void wait_for_retrace(void)\r
 {\r
@@ -305,17 +305,17 @@ void wait_for_retrace(void)
 }\r
 \r
 /////////////////////////////////////////////////////////////////////////////\r
-//                                                                         //\r
-// MoveTo() - This moves to position X*4 on a chain 4 screen.              //\r
-//                Note: As soon as I find documentation, this function     //\r
-//                will be better documented.  - Snowman                    //\r
-//                                                                         //\r
+//                                                                      //\r
+// MoveTo() - This moves to position X*4 on a chain 4 screen.          //\r
+//             Note: As soon as I find documentation, this function     //\r
+//             will be better documented.  - Snowman               //\r
+//                                                                      //\r
 /////////////////////////////////////////////////////////////////////////////\r
 /*\r
 void MoveTo (word X, word Y) {\r
 \r
-//      word O = Y*SIZE*2+X;\r
-        word O = Y*widthBytes*2+X;\r
+//     word O = Y*SIZE*2+X;\r
+       word O = Y*widthBytes*2+X;\r
 \r
   asm {\r
     mov    bx, [O]\r
@@ -346,51 +346,51 @@ void MoveTo (word X, word Y) {
 "EXTRN   mxWaitDisplay   : FAR" \\r
 "EXTRN   mxStartAddress  : FAR" \\r
 \r
-MX_TEXT         SEGMENT USE16 PARA PUBLIC 'CODE'\r
-                ASSUME cs:MX_TEXT, ds:NOTHING, es:NOTHING\r
-\r
-EXTRN   mx_BytesPerLine : WORD\r
-\r
-;-----------------------------------------------------------\r
-;\r
-; Moves the screen.\r
-;\r
-; Input:\r
-;       X, Y    = new X, Y coordinates of view screen\r
-; Output:\r
-;       none\r
-;\r
-mxPan           PROC    FAR\r
-        ARG     Y:WORD,                 \\r
-                X:WORD                  = ARG_SIZE\r
-        ASSUME  ds:NOTHING\r
-        .enter  0\r
-\r
-        mov     ax, [Y]\r
-        mul     [mx_BytesPerLine]\r
-        mov     dx, [X]\r
-        shr     dx, 1\r
-        shr     dx, 1\r
-        add     ax, dx\r
-        push    ax                      ; Push the start address\r
-        call    mxWaitDisplay\r
-        call    mxStartAddress\r
-\r
-        mov     dx, 03DAh               ; Set the pixel pan register\r
-        in      al, dx\r
-        mov     dx, 03C0h\r
-        mov     al, 33h\r
-        out     dx, al\r
-        mov     al, BYTE PTR [X]\r
-        and     al, 3\r
-        shl     al, 1\r
-        out     dx, al\r
-\r
-        xor     ax, ax\r
-        .leave  ARG_SIZE\r
-mxPan           ENDP\r
-\r
-MX_TEXT         ENDS\r
+"MX_TEXT        SEGMENT USE16 PARA PUBLIC 'CODE'\r
+               ASSUME cs:MX_TEXT, ds:NOTHING, es:NOTHING" \\r
+\r
+"EXTRN   mx_BytesPerLine : WORD" \\r
+\r
+//;-----------------------------------------------------------\r
+//;\r
+//; Moves the screen.\r
+//;\r
+//; Input:\r
+//;     X, Y    = new X, Y coordinates of view screen\r
+//; Output:\r
+//;     none\r
+//;\r
+mxPan     PROC    FAR\r
+       ARG     Y:WORD,          \\r
+               X:WORD            = ARG_SIZE\r
+       ASSUME  ds:NOTHING\r
+       .enter  0\r
+\r
+       mov     ax, [Y]\r
+       mul     [mx_BytesPerLine]\r
+       mov     dx, [X]\r
+       shr     dx, 1\r
+       shr     dx, 1\r
+       add     ax, dx\r
+       push    ax                      ; Push the start address\r
+       call    mxWaitDisplay\r
+       call    mxStartAddress\r
+\r
+       mov     dx, 03DAh                ; Set the pixel pan register\r
+       in      al, dx\r
+       mov     dx, 03C0h\r
+       mov     al, 33h\r
+       out     dx, al\r
+       mov     al, BYTE PTR [X]\r
+       and     al, 3\r
+       shl     al, 1\r
+       out     dx, al\r
+\r
+       xor     ax, ax\r
+       .leave  ARG_SIZE\r
+mxPan     ENDP\r
+\r
+MX_TEXT         ENDS\r
 END\r
 \r
 \r
@@ -409,14 +409,14 @@ void Play()
 \r
 //   for(loop1=0;loop1<=3;loop1++)\r
 //     for(loop2=0;loop2<=5;loop2++)\r
-//       Putpic (loop1*160,loop2*66); // { This places the picture all over the\r
-                                    //  chain-4 screen }\r
+//      Putpic (loop1*160,loop2*66); // { This places the picture all over the\r
+                                   //  chain-4 screen }\r
 //   getch();\r
 //   ch=0x0;\r
 //   xpos=rand (78)+1;\r
 //   ypos=rand (198)+1; // { Random start positions for the view }\r
-        xpos=0;\r
-        ypos=0;\r
+       xpos=0;\r
+       ypos=0;\r
    xdir=1;\r
    ydir=1;\r
 //   while(1)\r
@@ -427,61 +427,61 @@ void Play()
      ypos=ypos+ydir;\r
      if( (xpos>79)  || (xpos<1))xdir=-xdir;\r
      if( (ypos>199) || (ypos<1))ydir=-ydir; // { Hit a boundry, change\r
-                                            //    direction! }\r
+                                           //    direction! }\r
 //     if(_bios_keybrd(_KEYBRD_READY))ch=getch();\r
-//       if(ch==0x71)break; // 'q'\r
-//       if(ch==0x1b)break; // 'ESC'\r
+//      if(ch==0x71)break; // 'q'\r
+//      if(ch==0x1b)break; // 'ESC'\r
 //   }\r
 }\r
 */\r
 /*tile*/\r
 //king_crimson's code\r
 void putColorBox_X(int x, int y, int w, int h, byte color) {\r
-        outp(0x3c4, 0x02);\r
-\r
-        int curx, cury;\r
-        unsigned drawptr;\r
-        for (curx=x; curx<(x+w); curx++) {\r
-                outp(0x3c5, 0x01 << (curx & 3));\r
-                drawptr = (unsigned)(widthBytes * y) + (curx / 4) + actStart;\r
-                for (cury=0; cury<h; cury++) {\r
-                        vga[drawptr] = color;\r
-                        drawptr += widthBytes;\r
-                }\r
-        }\r
+       outp(0x3c4, 0x02);\r
+\r
+       int curx, cury;\r
+       unsigned drawptr;\r
+       for (curx=x; curx<(x+w); curx++) {\r
+               outp(0x3c5, 0x01 << (curx & 3));\r
+               drawptr = (unsigned)(widthBytes * y) + (curx / 4) + actStart;\r
+               for (cury=0; cury<h; cury++) {\r
+                       vga[drawptr] = color;\r
+                       drawptr += widthBytes;\r
+               }\r
+       }\r
 }\r
 \r
 void vScroll(int rows)\r
 {\r
-        // Scrolling = current start + (rows * bytes in a row)\r
-        setVisibleStart(visStart + (rows * width));\r
+       // Scrolling = current start + (rows * bytes in a row)\r
+       setVisibleStart(visStart + (rows * width));\r
 }\r
 \r
 void scrolly(int bongy)\r
 {\r
-        int boingy=0;\r
-        if(bongy<0)\r
-                boingy=-1;\r
-        else if(bongy>0)\r
-                boingy=1;\r
-\r
-        for(int ti=0;ti<TILEWH;ti++)\r
-        {\r
-                delay(1);\r
-                vScroll(boingy);\r
-        }\r
+       int boingy=0;\r
+       if(bongy<0)\r
+               boingy=-1;\r
+       else if(bongy>0)\r
+               boingy=1;\r
+\r
+       for(int ti=0;ti<TILEWH;ti++)\r
+       {\r
+               delay(1);\r
+               vScroll(boingy);\r
+       }\r
 }\r
 \r
 //king_crimson's code\r
 void hScroll(int Cols) {\r
-        wait_for_retrace();\r
-        outp(0x3C0, 0x13);\r
-        outp(0x3C0, Cols & 3);\r
-        outp(0x3D4, 0x13);\r
-        outp(0x3D5, Cols >> 2);\r
-        outp(0x3D4, Cols);\r
-        //setVisibleStart(visStart + (Cols * height));\r
-        setVisibleStart(visStart + (Cols * width));\r
+       wait_for_retrace();\r
+       outp(0x3C0, 0x13);\r
+       outp(0x3C0, Cols & 3);\r
+       outp(0x3D4, 0x13);\r
+       outp(0x3D5, Cols >> 2);\r
+       outp(0x3D4, Cols);\r
+       //setVisibleStart(visStart + (Cols * height));\r
+       setVisibleStart(visStart + (Cols * width));\r
 }\r
 \r
 /*To implement smooth horizontal scrolling, you would do the following:\r
@@ -525,29 +525,29 @@ so we can draw off the edge of the screen.
 Perhaps a little diagram will clarify it. The following picture is of a\r
 standard X-mode addressing scheme with the OFFSET register set to 80.\r
 \r
-      ROW    OFFSET\r
-              0 ========================\r
-      1        80 [                      ]\r
-      2       160 [                      ]\r
-      ..       .. [       VISIBLE        ]\r
-                  [        SCREEN        ]\r
-                  [                      ]\r
-                  [                      ]\r
-      ..       .. [                      ]\r
-      199   15920 ========================\r
+       ROW    OFFSET\r
+       0        0 ========================\r
+       1       80 [                    ]\r
+       2        160 [                  ]\r
+       ..       .. [    VISIBLE        ]\r
+                 [     SCREEN  ]\r
+                 [                     ]\r
+                 [                     ]\r
+       ..       .. [                   ]\r
+       199   15920 ========================\r
 \r
 and the next diagram is of a modified addressing scheme with the OFFSET\r
 register set to 82 (to give us 4 extra pixels on each side of the screen)\r
 \r
 ROW    OFFSET\r
-0         0 ------========================------\r
-1        82 |   V [                      ]   V |\r
-2       164 |   I [                      ]   I |\r
-..       .. | N S [      VISIBLE         ] N S |\r
-            | O I [       SCREEN         ] O I |\r
-            | T B [                      ] T B |\r
-            |   L [                      ]   L |\r
-..       .. |   E [                      ]   E |\r
+0       0 ------========================------\r
+1      82 |   V [                      ]   V |\r
+2       164 |   I [                    ]   I |\r
+..      .. | N S [     VISIBLE  ] N S |\r
+           | O I [      SCREEN  ] O I |\r
+           | T B [                     ] T B |\r
+           |   L [                     ]   L |\r
+..      .. |   E [                     ]   E |\r
 199   16318 ------========================------\r
 \r
 Beautiful!!!\r
@@ -581,297 +581,297 @@ I'm sorry about this being so confusing but it's a bit difficult to explain.
 */\r
 int loadfontX(char *fname)\r
 {\r
-        FILE *fp;\r
+       FILE *fp;\r
 \r
-        fp = fopen(fname, "rb");\r
+       fp = fopen(fname, "rb");\r
 \r
-        if (fp == NULL) {\r
-                return 0;\r
-        } else {\r
-                fread(Xfont, 8, 256, fp);\r
-                fclose(fp);\r
-                return 1;\r
-        }\r
+       if (fp == NULL) {\r
+               return 0;\r
+       } else {\r
+               fread(Xfont, 8, 256, fp);\r
+               fclose(fp);\r
+               return 1;\r
+       }\r
 }\r
 \r
 void putchX(cord x, cord y, char c, byte color)\r
 {\r
-        int i;\r
-        byte *vga_ptr;\r
-        byte *font_ptr;\r
-        byte temp;\r
-\r
-        // 8x8 font\r
-        vga_ptr = RowsX[y << 3] + (x << 1) + actStart;\r
-        write_plane = -1;\r
-\r
-        font_ptr = Xfont + (c << 3);\r
-\r
-        i=8;\r
-        while (i--) {\r
-                temp = *font_ptr++;\r
-                outpw(SEQU_ADDR, text_mask[temp & 0x0F]);\r
-                *vga_ptr++ = color;\r
-\r
-                outpw(SEQU_ADDR, text_mask[temp >> 4]);\r
-                *vga_ptr-- = color;\r
-                vga_ptr += widthBytes;\r
-        }\r
+       int i;\r
+       byte *vga_ptr;\r
+       byte *font_ptr;\r
+       byte temp;\r
+\r
+       // 8x8 font\r
+       vga_ptr = RowsX[y << 3] + (x << 1) + actStart;\r
+       write_plane = -1;\r
+\r
+       font_ptr = Xfont + (c << 3);\r
+\r
+       i=8;\r
+       while (i--) {\r
+               temp = *font_ptr++;\r
+               outpw(SEQU_ADDR, text_mask[temp & 0x0F]);\r
+               *vga_ptr++ = color;\r
+\r
+               outpw(SEQU_ADDR, text_mask[temp >> 4]);\r
+               *vga_ptr-- = color;\r
+               vga_ptr += widthBytes;\r
+       }\r
 }\r
 \r
 void putstringX(cord x, cord y, char *str, byte color)\r
 {\r
-        int i, skip;\r
-        byte *vga_ptr;\r
-        byte *font_ptr;\r
-        byte c, temp;\r
+       int i, skip;\r
+       byte *vga_ptr;\r
+       byte *font_ptr;\r
+       byte c, temp;\r
 \r
-        // 8x8 font\r
-        vga_ptr = RowsX[y << 3] + (x << 1) + actStart;\r
-        write_plane = -1;\r
+       // 8x8 font\r
+       vga_ptr = RowsX[y << 3] + (x << 1) + actStart;\r
+       write_plane = -1;\r
 \r
-        skip = 2 - (widthBytes << 3);\r
+       skip = 2 - (widthBytes << 3);\r
 \r
-        while (c = *str++) {\r
-                font_ptr = Xfont + (c << 3);\r
+       while (c = *str++) {\r
+               font_ptr = Xfont + (c << 3);\r
 \r
-                i=8;\r
-                while (i--) {\r
-                        temp = *font_ptr++;\r
-                        outpw(SEQU_ADDR, text_mask[temp & 0x0F]);\r
-                        *vga_ptr++ = color;\r
+               i=8;\r
+               while (i--) {\r
+                       temp = *font_ptr++;\r
+                       outpw(SEQU_ADDR, text_mask[temp & 0x0F]);\r
+                       *vga_ptr++ = color;\r
 \r
-                        outpw(SEQU_ADDR, text_mask[temp >> 4]);\r
-                        *vga_ptr-- = color;\r
-                        vga_ptr += widthBytes;\r
-                }\r
+                       outpw(SEQU_ADDR, text_mask[temp >> 4]);\r
+                       *vga_ptr-- = color;\r
+                       vga_ptr += widthBytes;\r
+               }\r
 \r
-                vga_ptr += skip;\r
-        }\r
+               vga_ptr += skip;\r
+       }\r
 }\r
 \r
 /////////////////////////////////////////////////////////////////////////////\r
-//                                                                         //\r
-// setvideo() - This function Manages the video modes                                     //\r
-//                                                                         //\r
+//                                                                      //\r
+// setvideo() - This function Manages the video modes                               //\r
+//                                                                      //\r
 /////////////////////////////////////////////////////////////////////////////\r
 void setvideo(/*byte mode, */int vq){\r
-                union REGS in, out;\r
-\r
-                if(!vq){ // deinit the video\r
-                                // change to the video mode we were in before we switched to mode 13h\r
-                                in.h.ah = 0x00;\r
-                                in.h.al = old_mode;\r
-                                int86(0x10, &in, &out);\r
-\r
-                }else if(vq == 1){ // init the video\r
-                                // get old video mode\r
-                                in.h.ah = 0xf;\r
-                                int86(0x10, &in, &out);\r
-                                old_mode = out.h.al;\r
-\r
-                                // enter mode\r
-                                set320x240x256_X();\r
-                }\r
+               union REGS in, out;\r
+\r
+               if(!vq){ // deinit the video\r
+                               // change to the video mode we were in before we switched to mode 13h\r
+                               in.h.ah = 0x00;\r
+                               in.h.al = old_mode;\r
+                               int86(0x10, &in, &out);\r
+\r
+               }else if(vq == 1){ // init the video\r
+                               // get old video mode\r
+                               in.h.ah = 0xf;\r
+                               int86(0x10, &in, &out);\r
+                               old_mode = out.h.al;\r
+\r
+                               // enter mode\r
+                               set320x240x256_X();\r
+               }\r
 }\r
 \r
 /////////////////////////////////////////////////////////////////////////////\r
-//                                                                                                                                               //\r
+//                                                                                                                                              //\r
 // cls() - This clears the screen to the specified color, on the VGA or on //\r
-//               the Virtual screen.                                                                                     //\r
-//                                                                                                                                               //\r
+//              the Virtual screen.                                                                                 //\r
+//                                                                                                                                              //\r
 /////////////////////////////////////////////////////////////////////////////\r
 void cls(byte color, byte *Where){\r
-                _fmemset(Where, color, width*(height*17));\r
+               _fmemset(Where, color, width*(height*17));\r
 }\r
 \r
 //color \82Ä\82·\82Æ\r
 int colortest(){\r
-                if(gq < NUM_COLORS){\r
-                                cls(gq, vga);\r
-                                gq++;\r
-                }else gq = 0;\r
-                return gq;\r
+               if(gq < NUM_COLORS){\r
+                               cls(gq, vga);\r
+                               gq++;\r
+               }else gq = 0;\r
+               return gq;\r
 }\r
 \r
 //color \82Ä\82·\82Æ\r
 int colorz(){\r
-                if(gq < HGQ){\r
-//----            cls(gq, vaddr);\r
-                                cls(gq, vga);\r
-                                gq++;\r
-                }else gq = LGQ;\r
-                return gq;\r
+               if(gq < HGQ){\r
+//----     cls(gq, vaddr);\r
+                               cls(gq, vga);\r
+                               gq++;\r
+               }else gq = LGQ;\r
+               return gq;\r
 }\r
 \r
 //slow spectrum down\r
 void ssd(int svq){\r
-                if(sy < height+1){\r
-                                if(sx < width+1){\r
-                                                //plotpixel(xx, yy, coor, vga);\r
-                                                //ppf(sx, sy, coor, vga);\r
-                                                putPixel_X(sx, sy, coor);\r
-                                                //printf("%d %d %d %d\n", sx, sy, svq, coor);\r
-                                                sx++;\r
-                                }else sx = 0;\r
-                                if(sx == width){\r
-                                                sy++;\r
-                                                if(svq == 7) coor++;\r
-                                                if(sy == height && svq == 8) coor = rand()%NUM_COLORS;\r
-                                }\r
-                }else sy = 0;\r
+               if(sy < height+1){\r
+                               if(sx < width+1){\r
+                                               //plotpixel(xx, yy, coor, vga);\r
+                                               //ppf(sx, sy, coor, vga);\r
+                                               putPixel_X(sx, sy, coor);\r
+                                               //printf("%d %d %d %d\n", sx, sy, svq, coor);\r
+                                               sx++;\r
+                               }else sx = 0;\r
+                               if(sx == width){\r
+                                               sy++;\r
+                                               if(svq == 7) coor++;\r
+                                               if(sy == height && svq == 8) coor = rand()%NUM_COLORS;\r
+                               }\r
+               }else sy = 0;\r
 }\r
 \r
 /*-----------ding-------------*/\r
 int ding(int q){\r
 \r
-//      if(yy<height){\r
-                setActivePage(0);\r
-                setVisiblePage(0);\r
-/*      }\r
-        if((height)<yy<(height*2)){\r
-                setActivePage(1);\r
-                setVisiblePage(1);\r
-        }\r
-        if((height*2)<yy<(height*3)){\r
-                setActivePage(2);\r
-                setVisiblePage(2);\r
-        }*/\r
-                int d3y;\r
+//     if(yy<height){\r
+               setActivePage(0);\r
+               setVisiblePage(0);\r
+/*     }\r
+       if((height)<yy<(height*2)){\r
+               setActivePage(1);\r
+               setVisiblePage(1);\r
+       }\r
+       if((height*2)<yy<(height*3)){\r
+               setActivePage(2);\r
+               setVisiblePage(2);\r
+       }*/\r
+               int d3y;\r
 \r
 //++++  if(q <= 4 && q!=2 && gq == BONK-1) coor = rand()%HGQ;\r
-                if((q == 2\r
-                ||q==4\r
-                ||q==16\r
-                ) && gq == BONK){\r
-                                                if(coor < HGQ && coor < LGQ) coor = LGQ;\r
-                                                if(coor < HGQ-1){\r
-                                                                coor++;\r
-                                }else{ coor = LGQ;\r
-                                                bakax = rand()%3; bakay = rand()%3;\r
-                                }\r
-                }\r
-\r
-                if(q==8){ colorz(); return gq; }else\r
-                if(q==10){ ssd(q); /*printf("%d\n", coor);*/ }else\r
-                if(q==5){ colortest(); return gq; }else\r
-                if(q==11){ colorz(); delay(100); return gq; }\r
-                if(q==6){\r
-                                coor = rand()%NUM_COLORS;\r
-//----            cls(coor, vaddr);\r
-                                cls(coor, vga);\r
-                                //updatevbuff();\r
-                }\r
-\r
-                if(q==7||q==9){\r
-                                if(gq < HGQ){\r
-                                                if(q == 7) ssd(q);\r
-                                                if(q == 9){ ssd(q); coor++; }\r
-                                                gq++;\r
-                                }else gq = LGQ;\r
-                }\r
-                if((q<5 && gq<BONK) || (q==16 && gq<BONK)){ // the number variable make the colors more noticable\r
-                                if(q==1){\r
-                                                if(xx==width){bakax=0;}\r
-                                                if(xx==0){bakax=1;}\r
-                                                if(yy==height){bakay=0;}\r
-                                                if(yy==0){bakay=1;}\r
-                                }else if(q==3){\r
-                                                if(xx!=width||yy!=height){\r
-                                                                if(xx==0){bakax=1;bakay=-1;d3y=1;}\r
-                                                                if(yy==0){bakax=1;bakay=0;d3y=1;}\r
-                                                                if(xx==width){bakax=-1;bakay=-1;d3y=1;}\r
-                                                                if(yy==height){bakax=1;bakay=0;d3y=1;}\r
-                                                }else if(xx==width&&yy==height) xx=yy=0;\r
-                                }\r
-                                if(q==3){\r
-                                                if(d3y){\r
-                                                                if(bakay<0){\r
-                                                                                yy--;\r
-                                                                                d3y--;\r
-                                                                }else\r
-                                                                if(bakay>0){\r
-                                                                                yy++;\r
-                                                                                d3y--;\r
-                                                                }\r
-                                                }\r
-                                                if(bakax<0){\r
-                                                                xx--;\r
-                                                }else\r
-                                                if(bakax>0){\r
-                                                                xx++;\r
-                                                }\r
-                                }else{\r
-                                                if(q==16)\r
-                                                {\r
-                                                                if(!bakax){\r
-                                                                                xx--;//=TILEWH;\r
-                                                                }else if(bakax>0){\r
-                                                                                xx++;//=TILEWH;\r
-                                                                }\r
-                                                                if(!bakay){\r
-                                                                                yy--;//=TILEWH;\r
-                                                                }else if(bakay>0){\r
-                                                                                yy++;//=TILEWH;\r
-                                                                }\r
-                                                }else{\r
-                                                                if(!bakax){\r
-//                                                                              xx-=TILEWH;\r
-                                                                                xx--;\r
-                                                                }else if(bakax>1){\r
-//                                                                              xx+=TILEWH;\r
-                                                                                xx++;\r
-                                                                }\r
-                                                                if(!bakay){\r
-//                                                                              yy-=TILEWH;\r
-                                                                                yy--;\r
-                                                                }else if(bakay>1){\r
-//                                                                              yy+=TILEWH;\r
-                                                                                yy++;\r
-                                                                }\r
-                                                }\r
-                                }\r
-                                // fixer\r
-//                              if(q!=16){\r
+               if((q == 2\r
+               ||q==4\r
+               ||q==16\r
+               ) && gq == BONK){\r
+                                               if(coor < HGQ && coor < LGQ) coor = LGQ;\r
+                                               if(coor < HGQ-1){\r
+                                                               coor++;\r
+                               }else{ coor = LGQ;\r
+                                               bakax = rand()%3; bakay = rand()%3;\r
+                               }\r
+               }\r
+\r
+               if(q==8){ colorz(); return gq; }else\r
+               if(q==10){ ssd(q); /*printf("%d\n", coor);*/ }else\r
+               if(q==5){ colortest(); return gq; }else\r
+               if(q==11){ colorz(); delay(100); return gq; }\r
+               if(q==6){\r
+                               coor = rand()%NUM_COLORS;\r
+//----     cls(coor, vaddr);\r
+                               cls(coor, vga);\r
+                               //updatevbuff();\r
+               }\r
+\r
+               if(q==7||q==9){\r
+                               if(gq < HGQ){\r
+                                               if(q == 7) ssd(q);\r
+                                               if(q == 9){ ssd(q); coor++; }\r
+                                               gq++;\r
+                               }else gq = LGQ;\r
+               }\r
+               if((q<5 && gq<BONK) || (q==16 && gq<BONK)){ // the number variable make the colors more noticable\r
+                               if(q==1){\r
+                                               if(xx==width){bakax=0;}\r
+                                               if(xx==0){bakax=1;}\r
+                                               if(yy==height){bakay=0;}\r
+                                               if(yy==0){bakay=1;}\r
+                               }else if(q==3){\r
+                                               if(xx!=width||yy!=height){\r
+                                                               if(xx==0){bakax=1;bakay=-1;d3y=1;}\r
+                                                               if(yy==0){bakax=1;bakay=0;d3y=1;}\r
+                                                               if(xx==width){bakax=-1;bakay=-1;d3y=1;}\r
+                                                               if(yy==height){bakax=1;bakay=0;d3y=1;}\r
+                                               }else if(xx==width&&yy==height) xx=yy=0;\r
+                               }\r
+                               if(q==3){\r
+                                               if(d3y){\r
+                                                               if(bakay<0){\r
+                                                                               yy--;\r
+                                                                               d3y--;\r
+                                                               }else\r
+                                                               if(bakay>0){\r
+                                                                               yy++;\r
+                                                                               d3y--;\r
+                                                               }\r
+                                               }\r
+                                               if(bakax<0){\r
+                                                               xx--;\r
+                                               }else\r
+                                               if(bakax>0){\r
+                                                               xx++;\r
+                                               }\r
+                               }else{\r
+                                               if(q==16)\r
+                                               {\r
+                                                               if(!bakax){\r
+                                                                               xx--;//=TILEWH;\r
+                                                               }else if(bakax>0){\r
+                                                                               xx++;//=TILEWH;\r
+                                                               }\r
+                                                               if(!bakay){\r
+                                                                               yy--;//=TILEWH;\r
+                                                               }else if(bakay>0){\r
+                                                                               yy++;//=TILEWH;\r
+                                                               }\r
+                                               }else{\r
+                                                               if(!bakax){\r
+//                                                                             xx-=TILEWH;\r
+                                                                               xx--;\r
+                                                               }else if(bakax>1){\r
+//                                                                             xx+=TILEWH;\r
+                                                                               xx++;\r
+                                                               }\r
+                                                               if(!bakay){\r
+//                                                                             yy-=TILEWH;\r
+                                                                               yy--;\r
+                                                               }else if(bakay>1){\r
+//                                                                             yy+=TILEWH;\r
+                                                                               yy++;\r
+                                                               }\r
+                                               }\r
+                               }\r
+                               // fixer\r
+//                             if(q!=16){\r
 //if(q!=16)\r
-//                                              if(xx<(0/*-(TILEWH/2)*/)) xx=(width/*+(TILEWH)*/);\r
-                                                if(yy<0) yy=(height*3);\r
-//                                              if(xx>(width/*+(TILEWH)*/)) xx=(0/*-(TILEWH/2)*/);\r
-                                                if(yy>(height*3)) yy=0;\r
-//                              }\r
+//                                             if(xx<(0/*-(TILEWH/2)*/)) xx=(width/*+(TILEWH)*/);\r
+                                               if(yy<0) yy=(height*3);\r
+//                                             if(xx>(width/*+(TILEWH)*/)) xx=(0/*-(TILEWH/2)*/);\r
+                                               if(yy>(height*3)) yy=0;\r
+//                             }\r
 \r
 //interesting effects\r
-                                if(q==16)\r
-                                {\r
-                                int tx=0,ty=0;\r
-                                tx+=xx+16;\r
-                                ty+=yy+16;\r
-                                putPixel_X(tx, ty, coor);\r
-                                //drawrect(tx, ty, tx+TILEWH, ty+TILEWH, coor);\r
-                                //printf("%d %d %d %d %d %d\n", xx, yy, tx, ty, TILEWH);\r
-\r
-                                // plot the pixel\r
-//----            ppf(xx, yy, coor, vga);\r
-                                }else /*if(xx>=0 && xx<width && yy>=0 && yy<(height*3))*/{\r
-//                                      putColorBox_X(xx, yy, TILEWH, TILEWH, coor);\r
+                               if(q==16)\r
+                               {\r
+                               int tx=0,ty=0;\r
+                               tx+=xx+16;\r
+                               ty+=yy+16;\r
+                               putPixel_X(tx, ty, coor);\r
+                               //drawrect(tx, ty, tx+TILEWH, ty+TILEWH, coor);\r
+                               //printf("%d %d %d %d %d %d\n", xx, yy, tx, ty, TILEWH);\r
+\r
+                               // plot the pixel\r
+//----     ppf(xx, yy, coor, vga);\r
+                               }else /*if(xx>=0 && xx<width && yy>=0 && yy<(height*3))*/{\r
+//                                     putColorBox_X(xx, yy, TILEWH, TILEWH, coor);\r
 //++++0000\r
-                                        putPixel_X(xx, yy, coor);\r
-                                \r
+                                       putPixel_X(xx, yy, coor);\r
+                               } \r
 \r
-//----            if(q==2) ppf(rand()%, rand()%height, 0, vga);\r
-//                              if(q==2) putColorBox_X(rand()%width, rand()%(height*3), TILEWH, TILEWH, 0);\r
+//----     if(q==2) ppf(rand()%, rand()%height, 0, vga);\r
+//                             if(q==2) putColorBox_X(rand()%width, rand()%(height*3), TILEWH, TILEWH, 0);\r
 //++++0000\r
-                                if(q==2) putPixel_X(rand()%width, rand()%(height*3), 0);\r
-                                if(q==16) putPixel_X(rand()%width, rand()%(height*3), 0);\r
-                                if(q==2||q==4||q==16){ bakax = rand()%3; bakay = rand()%3; }\r
-                                gq++;\r
+                               if(q==2) putPixel_X(rand()%width, rand()%(height*3), 0);\r
+                               if(q==16) putPixel_X(rand()%width, rand()%(height*3), 0);\r
+                               if(q==2||q==4||q==16){ bakax = rand()%3; bakay = rand()%3; }\r
+                               gq++;\r
 //if(xx<0||xx>320||yy<0||yy>(height*3))\r
-//        printf("%d %d %d %d %d %d\n", xx, yy, coor, bakax, bakay, getPixel_X(xx,yy));\r
-//        printf("%d\n", getPixel_X(xx,yy));\r
+//     printf("%d %d %d %d %d %d\n", xx, yy, coor, bakax, bakay, getPixel_X(xx,yy));\r
+//     printf("%d\n", getPixel_X(xx,yy));\r
 //0000\r
-//        drawText(0, 0, 15, getPixel_X(xx,yy));\r
-                }else gq = LGQ;\r
-                return gq;\r
+//     drawText(0, 0, 15, getPixel_X(xx,yy));\r
+               }else gq = LGQ;\r
+               return gq;\r
 }\r
 \r
 \r
@@ -886,123 +886,125 @@ int ding(int q){
 #include <conio.h>\r
 \r
 void doTest(void)\r
-                {\r
-                int p, x, y, pages;\r
-\r
-                /* This is the way to calculate the number of pages available. */\r
-                pages = 65536L/(widthBytes*height); // apparently this takes the A000 address\r
-//              if(height==240) pages++;\r
-\r
-//              printf("%d\n", pages);\r
-\r
-                for (p = 0; p <= pages; ++p)\r
-                                {\r
-                                setActivePage(p);\r
-\r
-                                /* On each page draw a single colored border, and dump the palette\r
-                                   onto a small square about the middle of the page. */\r
-\r
-                                   //{\r
-                                                for (x = 0; x <= width; ++x)\r
-                                                                {\r
-                                                                putPixel_X(x, 0, p+1);\r
-                                                                if(p!=pages) putPixel_X(x, height-1, p+1);\r
-                                                                                else if(height==240) putPixel_X(x, 99-1, p+1);\r
-                                                                }\r
-\r
-                                                for (y = 0; y <= height; ++y)\r
-                                                                {\r
-                                                                putPixel_X(0, y, p+1);\r
-                                                                if(p!=pages) putPixel_X(width-1, y, p+1);\r
-                                                                                else if(height==240) putPixel_X(width-1, y, p+1);\r
-                                                                }\r
-\r
-                                                for (x = 0; x < TILEWH; ++x)\r
-                                                                for (y = 0; y < TILEWH; ++y)\r
-                                                                                putPixel_X(x+(p+2)*16, y+(p+2)*TILEWH, x + y*TILEWH);\r
-                                                //}\r
-\r
-                                }\r
-\r
-                /* Each pages will now contain a different image.  Let the user cycle\r
-                   through all the pages by pressing a key. */\r
-                for (p = 0; p < pages; ++p)\r
-                                {\r
-                                setVisiblePage(p);\r
-                                getch();\r
-                                }\r
-\r
-                }\r
+               {\r
+               int p, x, y, pages;\r
+\r
+               /* This is the way to calculate the number of pages available. */\r
+               pages = 65536L/(widthBytes*height); // apparently this takes the A000 address\r
+//             if(height==240) pages++;\r
+\r
+//             printf("%d\n", pages);\r
+\r
+               for (p = 0; p <= pages; ++p)\r
+                               {\r
+                               setActivePage(p);\r
+\r
+                               /* On each page draw a single colored border, and dump the palette\r
+                                  onto a small square about the middle of the page. */\r
+\r
+                                  //{\r
+                                               for (x = 0; x <= width; ++x)\r
+                                                               {\r
+                                                               putPixel_X(x, 0, p+1);\r
+                                                               if(p!=pages) putPixel_X(x, height-1, p+1);\r
+                                                                               else if(height==240) putPixel_X(x, 99-1, p+1);\r
+                                                               }\r
+\r
+                                               for (y = 0; y <= height; ++y)\r
+                                                               {\r
+                                                               putPixel_X(0, y, p+1);\r
+                                                               if(p!=pages) putPixel_X(width-1, y, p+1);\r
+                                                                               else if(height==240) putPixel_X(width-1, y, p+1);\r
+                                                               }\r
+\r
+                                               for (x = 0; x < TILEWH; ++x)\r
+                                                               for (y = 0; y < TILEWH; ++y)\r
+                                                                               putPixel_X(x+(p+2)*16, y+(p+2)*TILEWH, x + y*TILEWH);\r
+                                               //}\r
+\r
+                               }\r
+\r
+               /* Each pages will now contain a different image.  Let the user cycle\r
+                  through all the pages by pressing a key. */\r
+               for (p = 0; p < pages; ++p)\r
+                               {\r
+                               setVisiblePage(p);\r
+                               getch();\r
+                               }\r
+\r
+               }\r
 \r
 /*\r
  * Library test (program) entry point.\r
  */\r
 \r
 int main(void)\r
-                {\r
-                int key,d;\r
-                //short int temp;\r
-                // main variables\r
-                d=1; // switch variable\r
-                key=4; // default screensaver number\r
-//        puts("First, have a look at the 320x200 mode.  I will draw some rubbish");\r
-//        puts("on all of the four pages, then let you cycle through them by");\r
-//        puts("hitting a key on each page.");\r
-//        puts("Press a key when ready...");\r
-//        getch();\r
-\r
-//        doTest();\r
-\r
-//        puts("Then, check out Mode X, 320x240 with 3 (and a half) pages.");\r
-//        puts("Press a key when ready...");\r
-//        getch();\r
+               {\r
+               int key,d;\r
+               //short int temp;\r
+               // main variables\r
+               d=1; // switch variable\r
+               key=4; // default screensaver number\r
+//     puts("First, have a look at the 320x200 mode.  I will draw some rubbish");\r
+//     puts("on all of the four pages, then let you cycle through them by");\r
+//     puts("hitting a key on each page.");\r
+//     puts("Press a key when ready...");\r
+//     getch();\r
+\r
+//     doTest();\r
+\r
+//     puts("Then, check out Mode X, 320x240 with 3 (and a half) pages.");\r
+//     puts("Press a key when ready...");\r
+//     getch();\r
 \r
 //++++0000\r
-                setvideo(1);\r
-                /*temp = loadfontX("vga8x8.fnt");\r
+               setvideo(1);\r
+               /*temp = loadfontX("vga8x8.fnt");\r
 \r
-                if (temp) {\r
-                        putstringX(0, 0, "bakapi!", 2);\r
-                }\r
-                getch();*/\r
+               if (temp) {\r
+                       putstringX(0, 0, "bakapi!", 2);\r
+               }\r
+               getch();*/\r
 // screen savers\r
 \r
 /*while(d!=0){ // on!\r
-                                if(!kbhit()){ // conditions of screen saver\r
-                                                ding(key);\r
-                                }else{\r
-                                                setvideo(0);\r
-                                                // user imput switch\r
-                                                printf("Enter 1, 2, 3, 4, or 6 to run a screensaver, or enter 5 to quit.\n", getch());  // prompt the user\r
-                                                scanf("%d", &key);\r
-                                                //if(key==3){xx=yy=0;} // crazy screen saver wwww\r
-                                                if(key==5) d=0;\r
-                                                setvideo(1);\r
-                                }\r
-                }*/ // else off\r
-                while(!kbhit()){ // conditions of screen saver\r
-                        ding(4);\r
-                }\r
-                //end of screen savers\r
-                doTest();\r
-//              getch();\r
-\r
-                while(!kbhit()){ // conditions of screen saver\r
-//                      hScroll(1);\r
-//                      scrolly(1);\r
-                        vScroll(1);\r
-//                      delay(100);\r
-//                      Play();\r
-                }\r
+                               if(!kbhit()){ // conditions of screen saver\r
+                                               ding(key);\r
+                               }else{\r
+                                               setvideo(0);\r
+                                               // user imput switch\r
+                                               printf("Enter 1, 2, 3, 4, or 6 to run a screensaver, or enter 5 to quit.\n", getch());  // prompt the user\r
+                                               scanf("%d", &key);\r
+                                               //if(key==3){xx=yy=0;} // crazy screen saver wwww\r
+                                               if(key==5) d=0;\r
+                                               setvideo(1);\r
+                               }\r
+               }*/ // else off\r
+               while(!kbhit()){ // conditions of screen saver\r
+                       ding(4);\r
+               }\r
+               //end of screen savers\r
+               doTest();\r
+//             getch();\r
+\r
+               while(!kbhit()){ // conditions of screen saver\r
+                       hScroll(1);\r
+//                     scrolly(1);\r
+//                     vScroll(1);\r
+//                     delay(100);\r
+//                     Play();\r
+               }\r
 //++++0000\r
-                setvideo(0);\r
-                printf("wwww\n[%d][%d]\n", width,height);\r
-//              setvideo(0);\r
+               setvideo(0);\r
+               printf("Resolution:\n[%d][%d]\n", width,height);\r
+//             setvideo(0);\r
 //mxTerm();\r
-//mxGetVersion();\r
-                puts("where to next?  It's your move! wwww");\r
-                printf("bakapi ver. 1.04.09.03\nis made by sparky4\81i\81\86\83Ö\81\85\81j feel free to use it ^^\nLicence: GPL v2\n");\r
-                return 0;\r
-                }\r
+//mxGetVersion();
+
+               printf("[%d]\n", mxGetVersion());\r
+               puts("where to next?  It's your move! wwww");\r
+               printf("bakapi ver. 1.04.09.03\nis made by sparky4\81i\81\86\83Ö\81\85\81j feel free to use it ^^\nLicence: GPL v2\n");\r
+               return 0;\r
+               }\r
 \r
 #endif\r
index 7a0b100ec0b66a3d14b12e02c0d59f3f11dc54d8..d7fb0474df216c82f18171f920be097a49b2a448 100644 (file)
@@ -5,17 +5,17 @@
 #include "lib\lib_com.h"
 #include "lib\x\modex.h"\r
 \r
-#define NUM_COLORS      256 // number of colors in vga mode\r
+#define NUM_COLORS     256 // number of colors in vga mode\r
 //static lgq=NUM_COLORS/(1/8)\r
 //static hgq=NUM_COLORS/(1/8)\r
-#define BONK            400\r
-#define LGQ             32\r
-#define HGQ             56\r
-#define TILEWH                          16\r
-/*byte SIZE = 80;      // Size =  40 = 1 across, 4 down\r
-                     // Size =  80 = 2 across, 2 down\r
-                     // Size = 160 = 4 across, 1 down*/\r
-//#define VMEM            0xA000 // = vga\r
+#define BONK       400\r
+#define LGQ         32\r
+#define HGQ         56\r
+#define TILEWH                   16\r
+/*byte SIZE = 80;      // Size =  40 = 1 across, 4 down\r
+                    // Size =  80 = 2 across, 2 down\r
+                    // Size = 160 = 4 across, 1 down*/\r
+//#define VMEM     0xA000 // = vga\r
 byte Xfont[2048];\r
 \r
 void drawChar(int x, int y, int color, byte c);\r
index 9e813b898083d26bbffa05f965b754f887eb2ec5..74f5a48a91d3565610afe0970abeac8aa2cd4938 100644 (file)
@@ -28,11 +28,11 @@ void interrupt newkb(void){
        kee = inp(0x60);        /* Read the keyboard scan code */
 
        /* Clear keyboard controller on XT machines */
-       qx = inp(0x61);           /* Get keyboard control register */
+       qx = inp(0x61);    /* Get keyboard control register */
        qx |= 0x82;
-       outp(0x61, qx);           /* Toggle acknowledge bit high */
+       outp(0x61, qx);    /* Toggle acknowledge bit high */
        qx &= 0x7F;
-       outp(0x61, qx);           /* Toggle acknowledge bit low */
+       outp(0x61, qx);    /* Toggle acknowledge bit low */
 
        /* Interpret the scan code and set our flags */
        #ifdef TESTING
@@ -93,11 +93,11 @@ void setkb(int vq){
 }
 
 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\
- * keyp                                                              *
- *                                                                         *
- * Returns the status of the key requested.                                *
+ * keyp                                                              *
+ *                                                                      *
+ * Returns the status of the key requested.                            *
  * The status is 1 if the key is pressed or has been pressed since the     *
- * last call to this function for that particular key.                     *
+ * last call to this function for that particular key.              *
 \* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
 int keyp(byte c){
        register char retVal;
index 0069d2e6cabd41c7fdba764cdfe2a5f913c339f1..5916999f9f258f265688f80c028c4fe85d1dd82b 100644 (file)
Binary files a/16/lib/x/MODEX.BAK and b/16/lib/x/MODEX.BAK differ
index 2c1f1ebe5b99d3778271be8356990ef260695587..4952856ae2374d0b7489e55741a04588aff7730c 100644 (file)
@@ -48,7 +48,7 @@
 #define MXBOOL      short int\r
 #define MXSINT      short int\r
 #define MXUINT      unsigned short int\r
-#define MXAPI       far pascal\r
+#define MXAPI       //far pascal\r
 #define MXPTR       void far *\r
 \r
 // Functions\r
index 89127e89996c21d60a0fbe402224975e9ec4b195..04f4acc0fb5a2eb9ef566c535e3af790daa4fe64 100644 (file)
@@ -5,12 +5,12 @@
      SS   SS CC   CC RR  RR  OO   OO LL    LL      II   NNN   NN GG   GG
      SS      CC      RR   RR OO   OO LL    LL      II   NNNN  NN GG
       SSSSS  CC      RR  RR  OO   OO LL    LL      II   NN NN NN GG
-          SS CC      RRRRR   OO   OO LL    LL      II   NN  NNNN GG  GGG
+         SS CC      RRRRR   OO   OO LL    LL      II   NN  NNNN GG  GGG
      SS   SS CC   CC RR  RR  OO   OO LL    LL      II   NN   NNN GG   GG
       SSSSS   CCCCC  RR   RR  OOOOO  LLLLL LLLLL IIIIII NN    NN  GGGGG
 
-                    by Alec Thomas (Kestrel) of FORGE Software Australia
-                                          (c9223826@cs.newcastle.edu.au)
+                   by Alec Thomas (Kestrel) of FORGE Software Australia
+                                         (c9223826@cs.newcastle.edu.au)
 
 
 ------------
@@ -36,7 +36,7 @@ on with the STUFF!!!
 the same with columns (except 0-319), etc. unless otherwise stated)
 
 ********************************************************************************
-*                               X-MODE SCROLLING                               *
+*                             X-MODE SCROLLING                        *
 ********************************************************************************
 ------------------
 VERTICAL SCROLLING
@@ -174,28 +174,28 @@ Perhaps a little diagram will clarify it. The following picture is of a
 standard X-mode addressing scheme with the OFFSET register set to 80.
 
       ROW    OFFSET
-      0         0 ========================
-      1        80 [                      ]
-      2       160 [                      ]
-      ..       .. [       VISIBLE        ]
-                  [        SCREEN        ]
-                  [                      ]
-                  [                      ]
-      ..       .. [                      ]
+      0         0 ========================
+      1        80 [                  ]
+      2       160 [                  ]
+      ..       .. [       VISIBLE      ]
+                 [     SCREEN  ]
+                 [                   ]
+                 [                   ]
+      ..       .. [                  ]
       199   15920 ========================
 
 and the next diagram is of a modified addressing scheme with the OFFSET
 register set to 82 (to give us 4 extra pixels on each side of the screen)
 
 ROW    OFFSET
-0         0 ------========================------
-1        82 |   V [                      ]   V |
-2       164 |   I [                      ]   I |
-..       .. | N S [      VISIBLE         ] N S |
-            | O I [       SCREEN         ] O I |
-            | T B [                      ] T B |
-            |   L [                      ]   L |
-..       .. |   E [                      ]   E |
+0       0 ------========================------
+1      82 |   V [                    ]   V |
+2       164 |   I [                  ]   I |
+..       .. | N S [      VISIBLE        ] N S |
+           | O I [       SCREEN         ] O I |
+           | T B [                   ] T B |
+           |   L [                   ]   L |
+..       .. |   E [                  ]   E |
 199   16318 ------========================------
 
 Beautiful!!!
@@ -230,7 +230,7 @@ I'm sorry about this being so confusing but it's a bit difficult to explain.
 
 
 ********************************************************************************
-*                            STANDARD VGA SCROLLING                            *
+*                          STANDARD VGA SCROLLING                          *
 ********************************************************************************
 Without X-mode, there is no easy way to do scrolling using the VGA hardware.
 So basically, you have to resort to redrawing the entire screen for every
@@ -258,7 +258,7 @@ END WHILE
 
 
 ********************************************************************************
-*                              PARALLAX SCROLLING                              *
+*                            PARALLAX SCROLLING                              *
 ********************************************************************************
 Parallax scrolling is when the "world" appears to have different levels
 of perspective. That is, images further away from the viewer move
@@ -291,7 +291,7 @@ colour to what was there previously).
 
 
 ********************************************************************************
-*                                  DISCLAIMER                                  *
+*                                DISCLAIMER                              *
 ********************************************************************************
 I'm sorry if any of this is confusing, but hey that's half the fun of it -
 figuring out what the hell I'm raving on about :)