From d173c64f8f2db1b117bf25e4b74db4f404ea9d79 Mon Sep 17 00:00:00 2001 From: sparky4 Date: Tue, 25 Aug 2015 12:27:25 -0500 Subject: [PATCH] more cleanings!! renamed: 16/16_mm.c -> 16/16/16_mm.c renamed: 16/SCRC/CONSTANT.H -> 16/16/SCRC/CONSTANT.H renamed: 16/SCRC/FUNPTR.EXE -> 16/16/SCRC/FUNPTR.EXE renamed: 16/SCRC/MAKEFILE -> 16/16/SCRC/MAKEFILE renamed: 16/SCRC/PALETTE.C -> 16/16/SCRC/PALETTE.C renamed: 16/SCRC/PALETTE.H -> 16/16/SCRC/PALETTE.H renamed: 16/SCRC/TEST.C -> 16/16/SCRC/TEST.C renamed: 16/SCRC/TEST.EXE -> 16/16/SCRC/TEST.EXE renamed: 16/SCRC/funptr.c -> 16/16/SCRC/funptr.c renamed: 16/TEST.C -> 16/16/TEST.C renamed: 16/ed.pcx -> 16/16/ed.pcx renamed: 16/emmo/emmtest.exe -> 16/16/emmo/emmtest.exe renamed: 16/emmo/emsdump.exe -> 16/16/emmo/emsdump.exe renamed: 16/emmo/maptest0.exe -> 16/16/emmo/maptest0.exe renamed: 16/gfx.pal -> 16/16/gfx.pal renamed: 16/inpu.bat -> 16/16/inpu.bat renamed: 16/inputest.bfproject -> 16/16/inputest.bfproject renamed: 16/lib/MODEX16.C -> 16/16/lib/MODEX16.C renamed: 16/lib/MODEX16.H -> 16/16/lib/MODEX16.H renamed: 16/lib/lib_com.cpp -> 16/16/lib/lib_com.cpp renamed: 16/lib/lib_com.h -> 16/16/lib/lib_com.h renamed: 16/makefile -> 16/16/makefile renamed: 16/modex16.7z -> 16/16/modex16.7z renamed: 16/old16.7z -> 16/16/old16.7z renamed: 16/opl2.c -> 16/16/opl2.c renamed: 16/opl2.h -> 16/16/opl2.h renamed: 16/src/inputest.c -> 16/16/src/inputest.c renamed: 16/src/lib/16_in.c -> 16/16/src/lib/16_in.c renamed: 16/src/lib/16_in.h -> 16/16/src/lib/16_in.h renamed: 16/src/lib/lib_head.c -> 16/16/src/lib/lib_head.c renamed: 16/src/lib/lib_head.h -> 16/16/src/lib/lib_head.h renamed: 16/src/lib/types.h -> 16/16/src/lib/types.h deleted: 16/RUN.BAT renamed: 16/lib/graph.h -> 16/graph.h deleted: 16/lib/intro/M13ORG.ASC deleted: 16/lib/intro/M13ORG.GIF deleted: 16/lib/intro/MXORG.ASC deleted: 16/lib/intro/MXORG.GIF deleted: 16/lib/intro/XINTRO.TXT deleted: 16/lib/intro/lib.c deleted: 16/lib/modex105/DEMOS/BASIC7/MODEX.LIB deleted: 16/lib/modex105/DEMOS/QB45/MODEX.LIB renamed: 16/lib/modex105/ASM.BAT -> 16/modex105/ASM.BAT renamed: 16/lib/modex105/DEMOS/BASIC7/CHARDEMO.BAS -> 16/modex105/DEMOS/BASIC7/CHARDEMO.BAS renamed: 16/lib/modex105/DEMOS/BASIC7/MAKE-LIB.BAT -> 16/modex105/DEMOS/BASIC7/MAKE-LIB.BAT renamed: 16/lib/modex105/MODEX.BI -> 16/modex105/DEMOS/BASIC7/MODEX.BI renamed: 16/lib/modex105/DEMOS/BASIC7/MODEX.QLB -> 16/modex105/DEMOS/BASIC7/MODEX.QLB renamed: 16/lib/modex105/DEMOS/BASIC7/TEST6.BAS -> 16/modex105/DEMOS/BASIC7/TEST6.BAS renamed: 16/lib/modex105/DEMOS/BASIC7/UASM-BC7.BAT -> 16/modex105/DEMOS/BASIC7/UASM-BC7.BAT renamed: 16/lib/modex105/DEMOS/QB45/UTILS.ASM -> 16/modex105/DEMOS/BASIC7/UTILS.ASM renamed: 16/lib/modex105/DEMOS/QB45/UTILS.BI -> 16/modex105/DEMOS/BASIC7/UTILS.BI renamed: 16/lib/modex105/DEMOS/C/C_UTILS.ASM -> 16/modex105/DEMOS/C/C_UTILS.ASM renamed: 16/lib/modex105/DEMOS/C/C_UTILS.H -> 16/modex105/DEMOS/C/C_UTILS.H renamed: 16/lib/modex105/DEMOS/C/C_UTILS.LST -> 16/modex105/DEMOS/C/C_UTILS.LST renamed: 16/lib/modex105/DEMOS/C/C_UTILS.SBR -> 16/modex105/DEMOS/C/C_UTILS.SBR renamed: 16/lib/modex105/MODEX.ASM -> 16/modex105/DEMOS/C/MODEX.ASM renamed: 16/lib/modex105/DEMOS/QB45/MODEX.BI -> 16/modex105/DEMOS/C/MODEX.BI renamed: 16/lib/modex105/MODEX.H -> 16/modex105/DEMOS/C/MODEX.H renamed: 16/lib/modex105/DEMOS/C/UTLS-ASM.BAT -> 16/modex105/DEMOS/C/UTLS-ASM.BAT renamed: 16/lib/modex105/DEMOS/C/X-DEMO.C -> 16/modex105/DEMOS/C/X-DEMO.C renamed: 16/lib/modex105/DEMOS/C/X-DEMO.EXE -> 16/modex105/DEMOS/C/X-DEMO.EXE renamed: 16/lib/modex105/DEMOS/C/X-DEMO.PRJ -> 16/modex105/DEMOS/C/X-DEMO.PRJ renamed: 16/lib/modex105/DEMOS/C/x.exe -> 16/modex105/DEMOS/C/x.exe renamed: 16/lib/modex105/DEMOS/CHARDEMO.EXE -> 16/modex105/DEMOS/CHARDEMO.EXE renamed: 16/lib/modex105/DEMOS/PASCAL/TEST5.PAS -> 16/modex105/DEMOS/PASCAL/TEST5.PAS renamed: 16/lib/modex105/DEMOS/QB45/MAKE-LIB.BAT -> 16/modex105/DEMOS/QB45/MAKE-LIB.BAT renamed: 16/lib/modex105/DEMOS/C/MODEX.BI -> 16/modex105/DEMOS/QB45/MODEX.BI renamed: 16/lib/modex105/DEMOS/QB45/MODEX.QLB -> 16/modex105/DEMOS/QB45/MODEX.QLB renamed: 16/lib/modex105/DEMOS/QB45/TEST6A.BAS -> 16/modex105/DEMOS/QB45/TEST6A.BAS renamed: 16/lib/modex105/DEMOS/QB45/TEST6A.EXE -> 16/modex105/DEMOS/QB45/TEST6A.EXE renamed: 16/lib/modex105/DEMOS/QB45/UASM-QB4.BAT -> 16/modex105/DEMOS/QB45/UASM-QB4.BAT renamed: 16/lib/modex105/DEMOS/BASIC7/UTILS.ASM -> 16/modex105/DEMOS/QB45/UTILS.ASM renamed: 16/lib/modex105/DEMOS/BASIC7/UTILS.BI -> 16/modex105/DEMOS/QB45/UTILS.BI renamed: 16/lib/modex105/FONTEDIT/ROM_8X8.FNT -> 16/modex105/DEMOS/ROM_8X8.FNT renamed: 16/lib/modex105/FONTEDIT/SPACEAGE.FNT -> 16/modex105/DEMOS/SPACEAGE.FNT renamed: 16/lib/modex105/FONTEDIT/SYSTEM.FNT -> 16/modex105/DEMOS/SYSTEM.FNT renamed: 16/lib/modex105/DEMOS/TEST6.EXE -> 16/modex105/DEMOS/TEST6.EXE renamed: 16/lib/modex105/PALEDIT/CHARSETS.CS -> 16/modex105/FONTEDIT/CHARSETS.CS renamed: 16/lib/modex105/FONTEDIT/CSEDIT.DOC -> 16/modex105/FONTEDIT/CSEDIT.DOC renamed: 16/lib/modex105/FONTEDIT/CSEDIT.EXE -> 16/modex105/FONTEDIT/CSEDIT.EXE renamed: 16/lib/modex105/FONTEDIT/INVERSE.FNT -> 16/modex105/FONTEDIT/INVERSE.FNT renamed: 16/lib/modex105/PALEDIT/MOUSEIMG.CS -> 16/modex105/FONTEDIT/MOUSEIMG.CS renamed: 16/lib/modex105/FONTEDIT/PALETTE.CS -> 16/modex105/FONTEDIT/PALETTE.CS renamed: 16/lib/modex105/DEMOS/ROM_8X8.FNT -> 16/modex105/FONTEDIT/ROM_8X8.FNT renamed: 16/lib/modex105/DEMOS/SPACEAGE.FNT -> 16/modex105/FONTEDIT/SPACEAGE.FNT renamed: 16/lib/modex105/DEMOS/SYSTEM.FNT -> 16/modex105/FONTEDIT/SYSTEM.FNT renamed: 16/lib/modex105/MODE-X.TXT -> 16/modex105/MODE-X.TXT renamed: 16/lib/modex105/DEMOS/C/MODEX.ASM -> 16/modex105/MODEX.ASM renamed: 16/lib/modex105/DEMOS/BASIC7/MODEX.BI -> 16/modex105/MODEX.BI renamed: 16/lib/modex105/DEMOS/C/MODEX.H -> 16/modex105/MODEX.H renamed: 16/lib/modex105/MODEX.LST -> 16/modex105/MODEX.LST renamed: 16/lib/modex105/MODEX.SBR -> 16/modex105/MODEX.SBR renamed: 16/lib/modex105/PACKING.LST -> 16/modex105/PACKING.LST renamed: 16/lib/modex105/PALEDIT/BAKAPI.PAL -> 16/modex105/PALEDIT/BAKAPI.PAL renamed: 16/lib/modex105/FONTEDIT/CHARSETS.CS -> 16/modex105/PALEDIT/CHARSETS.CS renamed: 16/lib/modex105/PALEDIT/DIAGONAL.PAL -> 16/modex105/PALEDIT/DIAGONAL.PAL renamed: 16/lib/modex105/PALEDIT/GAMECOLR.PAL -> 16/modex105/PALEDIT/GAMECOLR.PAL renamed: 16/lib/modex105/FONTEDIT/MOUSEIMG.CS -> 16/modex105/PALEDIT/MOUSEIMG.CS renamed: 16/lib/modex105/PALEDIT/PALEDIT.DOC -> 16/modex105/PALEDIT/PALEDIT.DOC renamed: 16/lib/modex105/PALEDIT/PALEDIT.EXE -> 16/modex105/PALEDIT/PALEDIT.EXE renamed: 16/lib/modex105/PALEDIT/PALVIEW.EXE -> 16/modex105/PALEDIT/PALVIEW.EXE renamed: 16/lib/modex105/PALEDIT/PRIME.PAL -> 16/modex105/PALEDIT/PRIME.PAL renamed: 16/lib/modex105/PALEDIT/RGB.PAL -> 16/modex105/PALEDIT/RGB.PAL renamed: 16/lib/modex105/PALEDIT/SCROLL.PAL -> 16/modex105/PALEDIT/SCROLL.PAL renamed: 16/lib/modex105/README.DOC -> 16/modex105/README.DOC renamed: 16/lib/modex105/modex105.zip -> 16/modex105/modex105.zip renamed: 16/lib/x.zip -> 16/x.zip --- 16/{ => 16}/16_mm.c | 0 16/{ => 16}/SCRC/CONSTANT.H | 0 16/{ => 16}/SCRC/FUNPTR.EXE | Bin 16/{ => 16}/SCRC/MAKEFILE | 0 16/{ => 16}/SCRC/PALETTE.C | 0 16/{ => 16}/SCRC/PALETTE.H | 0 16/{ => 16}/SCRC/TEST.C | 0 16/{ => 16}/SCRC/TEST.EXE | Bin 16/{ => 16}/SCRC/funptr.c | 0 16/{ => 16}/TEST.C | 0 16/{ => 16}/ed.pcx | Bin 16/{ => 16}/emmo/emmtest.exe | Bin 16/{ => 16}/emmo/emsdump.exe | Bin 16/{ => 16}/emmo/maptest0.exe | Bin 16/{ => 16}/gfx.pal | Bin 16/{ => 16}/inpu.bat | 0 16/{ => 16}/inputest.bfproject | 0 16/{ => 16}/lib/MODEX16.C | 0 16/{ => 16}/lib/MODEX16.H | 0 16/{ => 16}/lib/lib_com.cpp | 0 16/{ => 16}/lib/lib_com.h | 0 16/{ => 16}/makefile | 0 16/{ => 16}/modex16.7z | Bin 16/{ => 16}/old16.7z | Bin 16/{ => 16}/opl2.c | 0 16/{ => 16}/opl2.h | 0 16/{ => 16}/src/inputest.c | 0 16/{ => 16}/src/lib/16_in.c | 0 16/{ => 16}/src/lib/16_in.h | 0 16/{ => 16}/src/lib/lib_head.c | 0 16/{ => 16}/src/lib/lib_head.h | 0 16/{ => 16}/src/lib/types.h | 0 16/RUN.BAT | 4 - 16/{lib => }/graph.h | 0 16/lib/intro/M13ORG.ASC | 55 -- 16/lib/intro/M13ORG.GIF | Bin 8860 -> 0 bytes 16/lib/intro/MXORG.ASC | 49 -- 16/lib/intro/MXORG.GIF | Bin 10178 -> 0 bytes 16/lib/intro/XINTRO.TXT | 569 ------------------ 16/lib/intro/lib.c | 359 ----------- 16/lib/modex105/DEMOS/BASIC7/MODEX.LIB | Bin 7189 -> 0 bytes 16/lib/modex105/DEMOS/QB45/MODEX.LIB | Bin 7189 -> 0 bytes 16/{lib => }/modex105/ASM.BAT | 0 .../modex105/DEMOS/BASIC7/CHARDEMO.BAS | 0 .../modex105/DEMOS/BASIC7/MAKE-LIB.BAT | 0 16/{lib => }/modex105/DEMOS/BASIC7/MODEX.BI | 0 16/{lib => }/modex105/DEMOS/BASIC7/MODEX.QLB | Bin 16/{lib => }/modex105/DEMOS/BASIC7/TEST6.BAS | 0 .../modex105/DEMOS/BASIC7/UASM-BC7.BAT | 0 16/{lib => }/modex105/DEMOS/BASIC7/UTILS.ASM | 0 16/{lib => }/modex105/DEMOS/BASIC7/UTILS.BI | 0 16/{lib => }/modex105/DEMOS/C/C_UTILS.ASM | 0 16/{lib => }/modex105/DEMOS/C/C_UTILS.H | 0 16/{lib => }/modex105/DEMOS/C/C_UTILS.LST | 0 16/{lib => }/modex105/DEMOS/C/C_UTILS.SBR | Bin 16/{lib => }/modex105/DEMOS/C/MODEX.ASM | 0 16/{lib => }/modex105/DEMOS/C/MODEX.BI | 0 16/{lib => }/modex105/DEMOS/C/MODEX.H | 0 16/{lib => }/modex105/DEMOS/C/UTLS-ASM.BAT | 0 16/{lib => }/modex105/DEMOS/C/X-DEMO.C | 0 16/{lib => }/modex105/DEMOS/C/X-DEMO.EXE | Bin 16/{lib => }/modex105/DEMOS/C/X-DEMO.PRJ | Bin 16/{lib => }/modex105/DEMOS/C/x.exe | Bin 16/{lib => }/modex105/DEMOS/CHARDEMO.EXE | Bin 16/{lib => }/modex105/DEMOS/PASCAL/TEST5.PAS | 0 16/{lib => }/modex105/DEMOS/QB45/MAKE-LIB.BAT | 0 16/{lib => }/modex105/DEMOS/QB45/MODEX.BI | 0 16/{lib => }/modex105/DEMOS/QB45/MODEX.QLB | Bin 16/{lib => }/modex105/DEMOS/QB45/TEST6A.BAS | 0 16/{lib => }/modex105/DEMOS/QB45/TEST6A.EXE | Bin 16/{lib => }/modex105/DEMOS/QB45/UASM-QB4.BAT | 0 16/{lib => }/modex105/DEMOS/QB45/UTILS.ASM | 0 16/{lib => }/modex105/DEMOS/QB45/UTILS.BI | 0 16/{lib => }/modex105/DEMOS/ROM_8X8.FNT | Bin 16/{lib => }/modex105/DEMOS/SPACEAGE.FNT | Bin 16/{lib => }/modex105/DEMOS/SYSTEM.FNT | Bin 16/{lib => }/modex105/DEMOS/TEST6.EXE | Bin 16/{lib => }/modex105/FONTEDIT/CHARSETS.CS | Bin 16/{lib => }/modex105/FONTEDIT/CSEDIT.DOC | 0 16/{lib => }/modex105/FONTEDIT/CSEDIT.EXE | Bin 16/{lib => }/modex105/FONTEDIT/INVERSE.FNT | Bin 16/{lib => }/modex105/FONTEDIT/MOUSEIMG.CS | Bin 16/{lib => }/modex105/FONTEDIT/PALETTE.CS | Bin 16/{lib => }/modex105/FONTEDIT/ROM_8X8.FNT | Bin 16/{lib => }/modex105/FONTEDIT/SPACEAGE.FNT | Bin 16/{lib => }/modex105/FONTEDIT/SYSTEM.FNT | Bin 16/{lib => }/modex105/MODE-X.TXT | 0 16/{lib => }/modex105/MODEX.ASM | 0 16/{lib => }/modex105/MODEX.BI | 0 16/{lib => }/modex105/MODEX.H | 0 16/{lib => }/modex105/MODEX.LST | 0 16/{lib => }/modex105/MODEX.SBR | Bin 16/{lib => }/modex105/PACKING.LST | 0 16/{lib => }/modex105/PALEDIT/BAKAPI.PAL | Bin 16/{lib => }/modex105/PALEDIT/CHARSETS.CS | Bin 16/{lib => }/modex105/PALEDIT/DIAGONAL.PAL | Bin 16/{lib => }/modex105/PALEDIT/GAMECOLR.PAL | Bin 16/{lib => }/modex105/PALEDIT/MOUSEIMG.CS | Bin 16/{lib => }/modex105/PALEDIT/PALEDIT.DOC | 0 16/{lib => }/modex105/PALEDIT/PALEDIT.EXE | Bin 16/{lib => }/modex105/PALEDIT/PALVIEW.EXE | Bin 16/{lib => }/modex105/PALEDIT/PRIME.PAL | Bin 16/{lib => }/modex105/PALEDIT/RGB.PAL | Bin 16/{lib => }/modex105/PALEDIT/SCROLL.PAL | Bin 16/{lib => }/modex105/README.DOC | 0 16/{lib => }/modex105/modex105.zip | Bin 16/{lib => }/x.zip | Bin 107 files changed, 1036 deletions(-) rename 16/{ => 16}/16_mm.c (100%) rename 16/{ => 16}/SCRC/CONSTANT.H (100%) rename 16/{ => 16}/SCRC/FUNPTR.EXE (100%) rename 16/{ => 16}/SCRC/MAKEFILE (100%) rename 16/{ => 16}/SCRC/PALETTE.C (100%) rename 16/{ => 16}/SCRC/PALETTE.H (100%) rename 16/{ => 16}/SCRC/TEST.C (100%) rename 16/{ => 16}/SCRC/TEST.EXE (100%) rename 16/{ => 16}/SCRC/funptr.c (100%) rename 16/{ => 16}/TEST.C (100%) rename 16/{ => 16}/ed.pcx (100%) rename 16/{ => 16}/emmo/emmtest.exe (100%) rename 16/{ => 16}/emmo/emsdump.exe (100%) rename 16/{ => 16}/emmo/maptest0.exe (100%) rename 16/{ => 16}/gfx.pal (100%) rename 16/{ => 16}/inpu.bat (100%) rename 16/{ => 16}/inputest.bfproject (100%) rename 16/{ => 16}/lib/MODEX16.C (100%) rename 16/{ => 16}/lib/MODEX16.H (100%) rename 16/{ => 16}/lib/lib_com.cpp (100%) rename 16/{ => 16}/lib/lib_com.h (100%) rename 16/{ => 16}/makefile (100%) rename 16/{ => 16}/modex16.7z (100%) rename 16/{ => 16}/old16.7z (100%) rename 16/{ => 16}/opl2.c (100%) rename 16/{ => 16}/opl2.h (100%) rename 16/{ => 16}/src/inputest.c (100%) rename 16/{ => 16}/src/lib/16_in.c (100%) rename 16/{ => 16}/src/lib/16_in.h (100%) rename 16/{ => 16}/src/lib/lib_head.c (100%) rename 16/{ => 16}/src/lib/lib_head.h (100%) rename 16/{ => 16}/src/lib/types.h (100%) delete mode 100755 16/RUN.BAT rename 16/{lib => }/graph.h (100%) delete mode 100755 16/lib/intro/M13ORG.ASC delete mode 100755 16/lib/intro/M13ORG.GIF delete mode 100755 16/lib/intro/MXORG.ASC delete mode 100755 16/lib/intro/MXORG.GIF delete mode 100755 16/lib/intro/XINTRO.TXT delete mode 100755 16/lib/intro/lib.c delete mode 100755 16/lib/modex105/DEMOS/BASIC7/MODEX.LIB delete mode 100755 16/lib/modex105/DEMOS/QB45/MODEX.LIB rename 16/{lib => }/modex105/ASM.BAT (100%) rename 16/{lib => }/modex105/DEMOS/BASIC7/CHARDEMO.BAS (100%) rename 16/{lib => }/modex105/DEMOS/BASIC7/MAKE-LIB.BAT (100%) rename 16/{lib => }/modex105/DEMOS/BASIC7/MODEX.BI (100%) rename 16/{lib => }/modex105/DEMOS/BASIC7/MODEX.QLB (100%) rename 16/{lib => }/modex105/DEMOS/BASIC7/TEST6.BAS (100%) rename 16/{lib => }/modex105/DEMOS/BASIC7/UASM-BC7.BAT (100%) rename 16/{lib => }/modex105/DEMOS/BASIC7/UTILS.ASM (100%) rename 16/{lib => }/modex105/DEMOS/BASIC7/UTILS.BI (100%) rename 16/{lib => }/modex105/DEMOS/C/C_UTILS.ASM (100%) rename 16/{lib => }/modex105/DEMOS/C/C_UTILS.H (100%) rename 16/{lib => }/modex105/DEMOS/C/C_UTILS.LST (100%) rename 16/{lib => }/modex105/DEMOS/C/C_UTILS.SBR (100%) rename 16/{lib => }/modex105/DEMOS/C/MODEX.ASM (100%) rename 16/{lib => }/modex105/DEMOS/C/MODEX.BI (100%) rename 16/{lib => }/modex105/DEMOS/C/MODEX.H (100%) rename 16/{lib => }/modex105/DEMOS/C/UTLS-ASM.BAT (100%) rename 16/{lib => }/modex105/DEMOS/C/X-DEMO.C (100%) rename 16/{lib => }/modex105/DEMOS/C/X-DEMO.EXE (100%) rename 16/{lib => }/modex105/DEMOS/C/X-DEMO.PRJ (100%) rename 16/{lib => }/modex105/DEMOS/C/x.exe (100%) rename 16/{lib => }/modex105/DEMOS/CHARDEMO.EXE (100%) rename 16/{lib => }/modex105/DEMOS/PASCAL/TEST5.PAS (100%) rename 16/{lib => }/modex105/DEMOS/QB45/MAKE-LIB.BAT (100%) rename 16/{lib => }/modex105/DEMOS/QB45/MODEX.BI (100%) rename 16/{lib => }/modex105/DEMOS/QB45/MODEX.QLB (100%) rename 16/{lib => }/modex105/DEMOS/QB45/TEST6A.BAS (100%) rename 16/{lib => }/modex105/DEMOS/QB45/TEST6A.EXE (100%) rename 16/{lib => }/modex105/DEMOS/QB45/UASM-QB4.BAT (100%) rename 16/{lib => }/modex105/DEMOS/QB45/UTILS.ASM (100%) rename 16/{lib => }/modex105/DEMOS/QB45/UTILS.BI (100%) rename 16/{lib => }/modex105/DEMOS/ROM_8X8.FNT (100%) rename 16/{lib => }/modex105/DEMOS/SPACEAGE.FNT (100%) rename 16/{lib => }/modex105/DEMOS/SYSTEM.FNT (100%) rename 16/{lib => }/modex105/DEMOS/TEST6.EXE (100%) rename 16/{lib => }/modex105/FONTEDIT/CHARSETS.CS (100%) rename 16/{lib => }/modex105/FONTEDIT/CSEDIT.DOC (100%) rename 16/{lib => }/modex105/FONTEDIT/CSEDIT.EXE (100%) rename 16/{lib => }/modex105/FONTEDIT/INVERSE.FNT (100%) rename 16/{lib => }/modex105/FONTEDIT/MOUSEIMG.CS (100%) rename 16/{lib => }/modex105/FONTEDIT/PALETTE.CS (100%) rename 16/{lib => }/modex105/FONTEDIT/ROM_8X8.FNT (100%) rename 16/{lib => }/modex105/FONTEDIT/SPACEAGE.FNT (100%) rename 16/{lib => }/modex105/FONTEDIT/SYSTEM.FNT (100%) rename 16/{lib => }/modex105/MODE-X.TXT (100%) rename 16/{lib => }/modex105/MODEX.ASM (100%) rename 16/{lib => }/modex105/MODEX.BI (100%) rename 16/{lib => }/modex105/MODEX.H (100%) rename 16/{lib => }/modex105/MODEX.LST (100%) rename 16/{lib => }/modex105/MODEX.SBR (100%) rename 16/{lib => }/modex105/PACKING.LST (100%) rename 16/{lib => }/modex105/PALEDIT/BAKAPI.PAL (100%) rename 16/{lib => }/modex105/PALEDIT/CHARSETS.CS (100%) rename 16/{lib => }/modex105/PALEDIT/DIAGONAL.PAL (100%) rename 16/{lib => }/modex105/PALEDIT/GAMECOLR.PAL (100%) rename 16/{lib => }/modex105/PALEDIT/MOUSEIMG.CS (100%) rename 16/{lib => }/modex105/PALEDIT/PALEDIT.DOC (100%) rename 16/{lib => }/modex105/PALEDIT/PALEDIT.EXE (100%) rename 16/{lib => }/modex105/PALEDIT/PALVIEW.EXE (100%) rename 16/{lib => }/modex105/PALEDIT/PRIME.PAL (100%) rename 16/{lib => }/modex105/PALEDIT/RGB.PAL (100%) rename 16/{lib => }/modex105/PALEDIT/SCROLL.PAL (100%) rename 16/{lib => }/modex105/README.DOC (100%) rename 16/{lib => }/modex105/modex105.zip (100%) rename 16/{lib => }/x.zip (100%) diff --git a/16/16_mm.c b/16/16/16_mm.c similarity index 100% rename from 16/16_mm.c rename to 16/16/16_mm.c diff --git a/16/SCRC/CONSTANT.H b/16/16/SCRC/CONSTANT.H similarity index 100% rename from 16/SCRC/CONSTANT.H rename to 16/16/SCRC/CONSTANT.H diff --git a/16/SCRC/FUNPTR.EXE b/16/16/SCRC/FUNPTR.EXE similarity index 100% rename from 16/SCRC/FUNPTR.EXE rename to 16/16/SCRC/FUNPTR.EXE diff --git a/16/SCRC/MAKEFILE b/16/16/SCRC/MAKEFILE similarity index 100% rename from 16/SCRC/MAKEFILE rename to 16/16/SCRC/MAKEFILE diff --git a/16/SCRC/PALETTE.C b/16/16/SCRC/PALETTE.C similarity index 100% rename from 16/SCRC/PALETTE.C rename to 16/16/SCRC/PALETTE.C diff --git a/16/SCRC/PALETTE.H b/16/16/SCRC/PALETTE.H similarity index 100% rename from 16/SCRC/PALETTE.H rename to 16/16/SCRC/PALETTE.H diff --git a/16/SCRC/TEST.C b/16/16/SCRC/TEST.C similarity index 100% rename from 16/SCRC/TEST.C rename to 16/16/SCRC/TEST.C diff --git a/16/SCRC/TEST.EXE b/16/16/SCRC/TEST.EXE similarity index 100% rename from 16/SCRC/TEST.EXE rename to 16/16/SCRC/TEST.EXE diff --git a/16/SCRC/funptr.c b/16/16/SCRC/funptr.c similarity index 100% rename from 16/SCRC/funptr.c rename to 16/16/SCRC/funptr.c diff --git a/16/TEST.C b/16/16/TEST.C similarity index 100% rename from 16/TEST.C rename to 16/16/TEST.C diff --git a/16/ed.pcx b/16/16/ed.pcx similarity index 100% rename from 16/ed.pcx rename to 16/16/ed.pcx diff --git a/16/emmo/emmtest.exe b/16/16/emmo/emmtest.exe similarity index 100% rename from 16/emmo/emmtest.exe rename to 16/16/emmo/emmtest.exe diff --git a/16/emmo/emsdump.exe b/16/16/emmo/emsdump.exe similarity index 100% rename from 16/emmo/emsdump.exe rename to 16/16/emmo/emsdump.exe diff --git a/16/emmo/maptest0.exe b/16/16/emmo/maptest0.exe similarity index 100% rename from 16/emmo/maptest0.exe rename to 16/16/emmo/maptest0.exe diff --git a/16/gfx.pal b/16/16/gfx.pal similarity index 100% rename from 16/gfx.pal rename to 16/16/gfx.pal diff --git a/16/inpu.bat b/16/16/inpu.bat similarity index 100% rename from 16/inpu.bat rename to 16/16/inpu.bat diff --git a/16/inputest.bfproject b/16/16/inputest.bfproject similarity index 100% rename from 16/inputest.bfproject rename to 16/16/inputest.bfproject diff --git a/16/lib/MODEX16.C b/16/16/lib/MODEX16.C similarity index 100% rename from 16/lib/MODEX16.C rename to 16/16/lib/MODEX16.C diff --git a/16/lib/MODEX16.H b/16/16/lib/MODEX16.H similarity index 100% rename from 16/lib/MODEX16.H rename to 16/16/lib/MODEX16.H diff --git a/16/lib/lib_com.cpp b/16/16/lib/lib_com.cpp similarity index 100% rename from 16/lib/lib_com.cpp rename to 16/16/lib/lib_com.cpp diff --git a/16/lib/lib_com.h b/16/16/lib/lib_com.h similarity index 100% rename from 16/lib/lib_com.h rename to 16/16/lib/lib_com.h diff --git a/16/makefile b/16/16/makefile similarity index 100% rename from 16/makefile rename to 16/16/makefile diff --git a/16/modex16.7z b/16/16/modex16.7z similarity index 100% rename from 16/modex16.7z rename to 16/16/modex16.7z diff --git a/16/old16.7z b/16/16/old16.7z similarity index 100% rename from 16/old16.7z rename to 16/16/old16.7z diff --git a/16/opl2.c b/16/16/opl2.c similarity index 100% rename from 16/opl2.c rename to 16/16/opl2.c diff --git a/16/opl2.h b/16/16/opl2.h similarity index 100% rename from 16/opl2.h rename to 16/16/opl2.h diff --git a/16/src/inputest.c b/16/16/src/inputest.c similarity index 100% rename from 16/src/inputest.c rename to 16/16/src/inputest.c diff --git a/16/src/lib/16_in.c b/16/16/src/lib/16_in.c similarity index 100% rename from 16/src/lib/16_in.c rename to 16/16/src/lib/16_in.c diff --git a/16/src/lib/16_in.h b/16/16/src/lib/16_in.h similarity index 100% rename from 16/src/lib/16_in.h rename to 16/16/src/lib/16_in.h diff --git a/16/src/lib/lib_head.c b/16/16/src/lib/lib_head.c similarity index 100% rename from 16/src/lib/lib_head.c rename to 16/16/src/lib/lib_head.c diff --git a/16/src/lib/lib_head.h b/16/16/src/lib/lib_head.h similarity index 100% rename from 16/src/lib/lib_head.h rename to 16/16/src/lib/lib_head.h diff --git a/16/src/lib/types.h b/16/16/src/lib/types.h similarity index 100% rename from 16/src/lib/types.h rename to 16/16/src/lib/types.h diff --git a/16/RUN.BAT b/16/RUN.BAT deleted file mode 100755 index ed9144d3..00000000 --- a/16/RUN.BAT +++ /dev/null @@ -1,4 +0,0 @@ -wsample dos_gfx.exe -call \z\bat\hres.bat -wprof dos_gfx.smp -rem vi DOS_GFX.CPP diff --git a/16/lib/graph.h b/16/graph.h similarity index 100% rename from 16/lib/graph.h rename to 16/graph.h diff --git a/16/lib/intro/M13ORG.ASC b/16/lib/intro/M13ORG.ASC deleted file mode 100755 index 906ec42c..00000000 --- a/16/lib/intro/M13ORG.ASC +++ /dev/null @@ -1,55 +0,0 @@ -Figure 1: Memory organization in mode 13h (ASCII version) - by Robert Schmidt - (C) 1993 Ztiff Zox Softwear - -a. Imagine that the top of the screen looks like this (pixel values are - represented by color digits 0-9 for simplicity - actual colors may - range from 0 to 255) - a screen width of 320 pixels is assumed: - - address: 0 10 310 319 - ---------------------------------------- - |0123456789012345 ..... 0123456789| - | | - | | - | - -b. In VGA memory, the screen is represented as follows (question marks - represent unused bytes): - - Plane 0: - - address: 0 10 310 319 - ---------------------------------------- - |0???4???8???2??? ..... ??2???6???| - | | - | | - - Plane 1: - - address: 0 10 310 319 - ---------------------------------------- - |?1???5???9???3?? ..... ???3???7??| - | | - | | - - Plane 2: - - address: 0 10 310 319 - ---------------------------------------- - |??2???6???0???4? ..... 0???4???8?| - | | - | | - - Plane 3: - - address: 0 10 310 319 - ---------------------------------------- - |???3???7???1???5 ..... ?1???5???9| - | | - | | - - I.e. a plane is selected automatically by the two least significant - bits of the address of the byte being read from or written two. - This renders 3/4 of the video memory unavailable and useless, but - all visible pixels are easily accessed, as each address in the video - segment provides access to one and ONLY ONE pixel. diff --git a/16/lib/intro/M13ORG.GIF b/16/lib/intro/M13ORG.GIF deleted file mode 100755 index 1fb4fc424630cfa1a380c5bd2ecb6cecfbba7551..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8860 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 diff --git a/16/lib/intro/XINTRO.TXT b/16/lib/intro/XINTRO.TXT deleted file mode 100755 index 0ac05850..00000000 --- a/16/lib/intro/XINTRO.TXT +++ /dev/null @@ -1,569 +0,0 @@ -Title: INTRODUCTION TO MODE X (XINTRO.TXT) - -Version: 1.8 - -Author: Robert Schmidt - -Copyright: (C) 1993 of Ztiff Zox Softwear - refer to Status below. - -Last revision: 25-Nov-93 - -Figures: 1. M13ORG - memory organization in mode 13h - 2. MXORG - memory organization in unchained modes - - The figures are available both as 640x480x16 bitmaps - (in GIF format), and as 7-bit ASCII text (ASC) files. - -C sources: 1. LIB.C v1.2 - simple graphics library for planar, - 256-color modes - optionally self-testing. - - Excerpts from the source(s) appear in this article. - Whenever there are conflicts, the external source file(s) - are correct (or, at least, newest), _not_ the excerpts - provided here. - -Status: This article, its associated figures and source listings - named above, are all donated to the public domain. - Do with it whatever you like, but give credit where - credit is due. I would prefer it if this archive was - distributed in its entirety, including the files - mentioned above. - - The standard disclaimer applies. - -Index: 0. ABSTRACT - 1. INTRODUCTION TO THE VGA AND ITS 256-COLOR MODE - 2. GETTING MORE PAGES AND PUTTING YOUR FIRST PIXEL - 3. THE ROAD FROM HERE - 4. BOOKS ON THE SUBJECT - 5. BYE - FOR NOW - - -0. ABSTRACT - -This text gives a fairly basic, yet technical, explanation to what, why -and how Mode X is. It first tries to explain the layout of the VGA -memory and the shortcomings of the standard 320x200 256-color mode, -then gives instructions on how one can progress from mode 13h to a -multipage, planar 320x200 256-color mode, and from there to the -quasi-standard 320x240 mode, known as Mode X. - -A little experience in programming the standard VGA mode 13h -(320x200 in 256 colors) is assumed. Likewise a good understanding of -hexadecimal notation and the concepts of segments and I/O ports is -assumed. Keep a VGA reference handy, which at least should have -definitions of the VGA registers at bit level. - -Throughout the article, a simple graphics library for unchained (planar) -256-color modes is developed. The library supports the 320x200 and -320x240 modes, active and visible pages, and writing and reading -individual pixels. - - -1. INTRODUCTION TO THE VGA AND ITS 256-COLOR MODE - -Since its first appearance on the motherboards of the IBM PS/2 50, 60 -and 80 models in 1987, the Video Graphics Array has been the de facto -standard piece of graphics hardware for IBM and compatible personal -computers. The abbreviation, VGA, was to most people synonymous with -acceptable resolution (640x480 pixels), and a stunning rainbow of colors -(256 from a palette of 262,144), at least compared to the rather gory -CGA and EGA cards. - -Sadly, to use 256 colors, the VGA BIOS limited the users to 320x200 -pixels, i.e. the well-known mode 13h. This mode has one good and one -bad asset. The good one is that each one of the 64,000 pixels is easily -addressable in the 64 Kb video memory segment at 0A000h. Simply calculate -the offset using this formula: - -offset = (y * 320) + x; - -Set the byte at this address (0A000h:offset) to the color you want, and -the pixel is there. Reading a pixel is just as simple: just read the -corresponding byte. This was heaven, compared to the havoc of planes and -masking registers needed in 16-color modes. Suddenly, the distance from a -graphics algorithm on paper to an implemented graphics routine in assembly -was cut down to a fraction. The results were impressively fast, too! - -The bad asset is that mode 13h is also limited to only one page, i.e. -the VGA can hold only one screenful at any one time (plus 1536 pixels, or -about four lines). Most 16-color modes let the VGA hold more than one page, -and this enables you to show one of the pages to the user, while drawing on -another page in the meantime. Page flipping is an important concept in making -flicker free animations. Nice looking and smooth scrolling is also almost -impossible in mode 13h using plain VGA hardware. - -Now, the alert reader might say: "Hold on a minute! If mode 13h enables -only one page, this means that there is memory for only one page. But I -know for a fact that all VGAs have at least 256 Kb RAM, and one 320x200 -256-color page should consume only 320*200=64000 bytes, which is less -than 64 Kb. A standard VGA should room a little more than four 320x200 -pages!" Quite correct, and to see how the BIOS puts this limitation on -mode 13h, I'll elaborate a little on the memory organization of the VGA. - -The memory is separated into four bit planes. The reason for this stems -from the EGA, where graphics modes were 16-color. Using bit planes, the -designers chose to let each pixel on screen be addressable by a single -bit in a single byte in the video segment. Assuming the palette has -not been modified from the default, each plane represent one of the EGA -primary colors: red, green, blue and intensity. When modifying the bit -representing a pixel, the Write Plane Enable register is set to the -wanted color. Reading is more complex and slower, since you can -only read from a single plane at a time, by setting the Read Plane -Select register. Now, since each address in the video segment can -access 8 pixels, and there are 64 Kb addresses, 8 * 65,536 = 524,288 -16-color pixels can be accessed. In a 320x200 16-color mode, this makes -for about 8 (524,288/(320*200)) pages, in 640x480 you get nearly 2 -(524,288/(640*480)) pages. - -In a 256-color mode, the picture changes subtly. The designers decided -to fix the number of bit planes to 4, so extending the logic above to 8 -planes and 256 colors does not work. Instead, one of their goals was to -make the 256-color mode as easily accessible as possible. Comparing the -8 pixels/address in 16-color modes to the 1-to-1 correspondence of -pixels and addresses of mode 13h, one can say that they have -succeeded, but at a certain cost. For reasons I am not aware of, the -designers came up with the following effective, but memory-wasting -scheme: - -The address space of mode 13h is divided evenly across the four bit -planes. When an 8-bit color value is written to a 16-bit address in the -VGA segment, a bit plane is automatically selected by the 2 least -significant bits of the address. Then all 8 bits of the data is written -to the byte at the 16-bit address in the selected bitplane (have a look at -figure 1). Reading works exactly the same way. Since the bit planes are so -closely tied to the address, only every fourth byte in the video memory is -accessible, and 192 Kb of a 256 Kb VGA go to waste. Eliminating the -need to bother about planes sure is convenient and beneficial, but to -most people the loss of 3/4 of the total VGA memory sounds just hilarious. - -To accomodate this new method of accessing video memory, the VGA -designers introduced a new configuration bit called Chain-4, which -resides as bit number 3 in index 4 of the Sequencer. In 16-color modes, -the default state for this bit is off (zero), and the VGA operates as -described earlier. In the VGA's standard 256-color mode, mode 13h, this -bit is turned on (set to one), and this turns the tieing of bit -planes and memory address on. - -In this state, the bit planes are said to be chained together, thus mode -13h is often called a _chained mode_. - -Note that Chain-4 in itself is not enough to set a 256-color mode - -there are other registers which deals with the other subtle changes in -nature from 16 to 256 colors. But, as we now will base our work with -mode X on mode 13h, which already is 256-color, we won't bother about -these for now. - - - -2. GETTING MORE PAGES AND PUTTING YOUR FIRST PIXEL - -The observant reader might at this time suggest that clearing the -Chain-4 bit after setting mode 13h will give us access to all 256 Kb of -video memory, as the two least significant bits of the byte address -won't be `wasted' on selecting a bit plane. This is correct. You might -also start feeling a little uneasy, because something tells you that -you'll instantly loose the simple addressing scheme of mode 13h. Sadly, -that is also correct. - -At the moment Chain-4 is cleared, each byte offset addresses *four* -sequential pixels, corresponding to the four planes addressed in 16-color -modes. Every fourth pixel belong in the same plane. Before writing to a byte -offset in the video segment, you should make sure that the 4-bit mask in the -Write Plane Enable register is set correctly, according to which of the four -addressable pixels you want to modify. In essence, it works like a 16-color -mode with a twist. See figure 2. - -So, is this mode X? Not quite. We need to elaborate to the VGA how to -fetch data for refreshing the monitor image. Explaining the logic -behind this is beyond the scope of this getting-you-started text, and it -wouldn't be very interesting anyway. Also, mode 13h has only 200 lines, -while I promised 240 lines. I'll fix that later below. Here is the minimum -snippet of code to initiate the 4 page variant of mode 13h (320x200), written -in plain C, using some DOS specific features (see header for a note about the -sources included): - -----8<-------cut begin------ - -/* width and height should specify the mode dimensions. widthBytes - specify the width of a line in addressable bytes. */ - -int width, height, widthBytes; - -/* actStart specifies the start of the page being accessed by - drawing operations. visStart specifies the contents of the Screen - Start register, i.e. the start of the visible page */ - -unsigned actStart, visStart; - -/* - * set320x200x256_X() - * sets mode 13h, then turns it into an unchained (planar), 4-page - * 320x200x256 mode. - */ - -set320x200x256_X() - { - - union REGS r; - - /* Set VGA BIOS mode 13h: */ - - r.x.ax = 0x0013; - int86(0x10, &r, &r); - - /* Turn off the Chain-4 bit (bit 3 at index 4, port 0x3c4): */ - - outport(SEQU_ADDR, 0x0604); - - /* Turn off word mode, by setting the Mode Control register - of the CRT Controller (index 0x17, port 0x3d4): */ - - outport(CRTC_ADDR, 0xE317); - - /* Turn off doubleword mode, by setting the Underline Location - register (index 0x14, port 0x3d4): */ - - outport(CRTC_ADDR, 0x0014); - - /* Clear entire video memory, by selecting all four planes, then - writing 0 to the entire segment. */ - - outport(SEQU_ADDR, 0x0F02); - memset(vga+1, 0, 0xffff); /* stupid size_t exactly 1 too small */ - vga[0] = 0; - - /* Update the global variables to reflect the dimensions of this - mode. This is needed by most future drawing operations. */ - - width = 320; - height = 200; - - /* Each byte addresses four pixels, so the width of a scan line - in *bytes* is one fourth of the number of pixels on a line. */ - - widthBytes = width / 4; - - /* By default we want screen refreshing and drawing operations - to be based at offset 0 in the video segment. */ - - actStart = visStart = 0; - - } - -----8<-------cut end------ - -As you can see, I've already provided some of the mechanics needed to -support multiple pages, by providing the actStart and visStart variables. -Selecting pages can be done in one of two contexts: - - 1) selecting the visible page, i.e. which page is visible on - screen, and - - 2) selecting the active page, i.e. which page is accessed by - drawing operations - -Selecting the active page is just a matter of offsetting our graphics -operations by the address of the start of the page, as demonstrated in -the put pixel routine below. Selecting the visual page must be passed -in to the VGA, by setting the Screen Start register. Sadly enough, the -resolution of this register is limited to one addressable byte, which -means four pixels in unchained 256-color modes. Some further trickery is -needed for 1-pixel smooth, horizontal scrolling, but I'll make that a subject -for later. The setXXXStart() functions provided here accept byte -offsets as parameters, so they'll work in any mode. If widthBytes and -height are set correctly, so will the setXXXPage() functions. - -----8<-------cut begin------ - -/* - * setActiveStart() tells our graphics operations which address in video - * memory should be considered the top left corner. - */ - -setActiveStart(unsigned offset) - { - actStart = offset; - } - -/* - * setVisibleStart() tells the VGA from which byte to fetch the first - * pixel when starting refresh at the top of the screen. This version - * won't look very well in time critical situations (games for - * instance) as the register outputs are not synchronized with the - * screen refresh. This refresh might start when the high byte is - * set, but before the low byte is set, which produces a bad flicker. - * I won't bother with this now. - */ - -setVisibleStart(unsigned offset) - { - visStart = offset; - outport(CRTC_ADDR, 0x0C); /* set high byte */ - outport(CRTC_ADDR+1, visStart >> 8); - outport(CRTC_ADDR, 0x0D); /* set low byte */ - outport(CRTC_ADDR+1, visStart & 0xff); - } - -/* - * setXXXPage() sets the specified page by multiplying the page number - * with the size of one page at the current resolution, then handing the - * resulting offset value over to the corresponding setXXXStart() - * function. The first page number is 0. - */ - -setActivePage(int page) - { - setActiveStart(page * widthBytes * height); - } - -setVisiblePage(int page) - { - setVisibleStart(page * widthBytes * height); - } - -----8<-------cut end------ - -Due to the use of bit planes, the graphics routines tend to get more -complex than in mode 13h, and your first versions will generally tend to -be a little slower than mode 13h algorithms. Here's a put pixel routine -for any unchained 256-color mode (it assumes that the 'width' variable -from the above code is set correctly). Optimizing is left as an exercise -to you, the reader. This will be the only drawing operation I'll cover -in this article, but all general primitives like lines and circles can be -based on this routine. (You'll probably not want to do that though, due -to the inefficiency.) - -----8<-------cut begin------ - -putPixel_X(int x, int y, char color) - { - - /* Each address accesses four neighboring pixels, so set - Write Plane Enable according to which pixel we want - to modify. The plane is determined by the two least - significant bits of the x-coordinate: */ - - outportb(0x3c4, 0x02); - outportb(0x3c5, 0x01 << (x & 3)); - - /* The offset of the pixel into the video segment is - offset = (width * y + x) / 4, and write the given - color to the plane we selected above. Heed the active - page start selection. */ - - vga[(unsigned)(widthBytes * y) + (x / 4) + actStart] = color; - - } - -char getPixel_X(int x, int y) - { - - /* Select the plane from which we must read the pixel color: */ - - outport(GRAC_ADDR, 0x04); - outport(GRAC_ADDR+1, x & 3); - - return vga[(unsigned)(widthBytes * y) + (x / 4) + actStart]; - - } - -----8<-------cut end------ - - -However, by now you should be aware of that the Write Plane Enable -register isn't limited to selecting just one bit plane, like the -Read Plane Select register is. You can enable any combination of all -four to be written. This ability to access 4 pixels with one -instruction helps quadrupling the speed in certain respects, especially when -drawing horizontal lines and filling polygons of a constant color. Also, most -block algorithms can be optimized in various ways so that they need only -a constant number of OUTs (typically four) to the Write Plane Enable -register. OUT is a relatively slow instruction. - -The gained ability to access the full 256 Kb of memory on a standard -VGA enables you to do paging and all the goodies following from that: -smooth scrolling over large maps, page flipping for flicker free -animation... and I'll leave something for your own imagination. - -In short, the stuff gained from unchaining mode 13h more than -upweighs the additional complexity of using a planar mode. - -Now, the resolution of the mode is of little interest in this -context. Nearly any 256-color resolution from (about) 80x8 to 400x300 -is available for most VGAs. I'll dwell particularly by 320x240, as this -is the mode that Michael Abrash introduced as 'Mode X' in his DDJ -articles. It is also the resolution that most people refer to when -using that phrase. - -The good thing about the 320x240 mode is that the aspect ratio is -1:1, which means that each pixel is 'perfectly' square, i.e. not -rectangular like in 320x200. An ellipse drawn with the same number of -pixels along both main axes will look like a perfect circle in 320x240, -but like a subtly tall ellipse in 320x200. - -Here's a function which sets the 320x240 mode. You'll notice that -it depends on the first piece of code above: - -----8<-------cut begin------ - -set320x240x256_X() - { - - /* Set the unchained version of mode 13h: */ - - set320x200x256_X(); - - /* Modify the vertical sync polarity bits in the Misc. Output - Register to achieve square aspect ratio: */ - - outportb(0x3C2, 0xE3); - - /* Modify the vertical timing registers to reflect the increased - vertical resolution, and to center the image as good as - possible: */ - - outport(0x3D4, 0x2C11); /* turn off write protect */ - outport(0x3D4, 0x0D06); /* vertical total */ - outport(0x3D4, 0x3E07); /* overflow register */ - outport(0x3D4, 0xEA10); /* vertical retrace start */ - outport(0x3D4, 0xAC11); /* vertical retrace end AND wr.prot */ - outport(0x3D4, 0xDF12); /* vertical display enable end */ - outport(0x3D4, 0xE715); /* start vertical blanking */ - outport(0x3D4, 0x0616); /* end vertical blanking */ - - /* Update mode info, so future operations are aware of the - resolution: */ - - height = 240; - - } - -----8<-------cut end------ - - -As you've figured out, this mode will be completely compatible with the -utility functions presented earlier, thanks to the global variable -'height'. Boy, am I foreseeing or what! - -Other resolutions are achieved through giving other values to the sync -timing registers of the VGA, but this is quite a large and complex -subject, so I'll postpone this to later, if ever. - -Anyway, I hope I've helped getting you started using mode X. As far as -I know, the two modes I've used above should work on *any* VGA and Super -VGA available, so this is pretty stable stuff. Let me know of any -trouble, and - - good luck! - - - -3. THE ROAD FROM HERE - -I'm providing information on various libraries and archives which relate -to what this article deals with. If you want me to add anything to this -list (for future articles), let me know, although I can't promise anything. -I am assuming you have ftp access. - - -wuarchive.wustl.edu:/pub/MSDOS_UPLOADS/programming/xlib06.zip - -This is the current de facto C/assembler library for programming -unchained modes (do not confuse with a X Windows library). All sources -are included, and the library is totally free. It has functions for -pixels, lines, circles, bezier curves, mouse handling, sprites (bitmaps), -compiled bitmaps, and supports a number of resolutions. The version number -('06') is current as of November 1993. - - -graphprg.zip - -Michael Abrash' articles in Doctor Dobbs Journal is always mentioned -with awe. In this 350 Kb archive, most of his interesting stuff has -been gathered. Read about Mode X development and techniques from month -to month. Included is also all the individual source code snippets from -each article, and also the full XSHARP library providing linedrawing, -polygons, bitmaps, solid 3D projection and speedy rendering, and even an -implementation of 2D texture mapping (can be used for quasi-3D texture -mapping), plus an article on assembly optimization on the i86 processor -family. Definitely recommended. - - -oak.oakland.edu:/pub/msdos/vga/vgadoc2.zip - -This is a bare bones VGA register reference. It also contains register -references for the CGA, EGA and Hercules cards, in addition to dozens of -SuperVGAs. Check out the BOOKS section for some decent VGA references -though - you don't want to start tweaking without a real one. - - -wuarchive.wustl.edu:/pub/MSDOS_UPLOADS/programming/tweak15b.zip - -TWEAK might be of interest to the more adventurous reader. TWEAK lets you -play around with the registers of the VGA in an interactive manner. -Various testing screens for viewing your newmade modes are applied at -the press of a key. Version 1.5 adds a test screen which autodetects your -graphics mode and displays various information about resolutions etc. -Keep a VGA reference handy. Don't try it if this is the first time you've -heard of 'registers' or 'mode X' or 'tweaking'. I was planning a version -based on the Turbo Vision interface, but time has been short. Maybe later! - - - - -4. BOOKS ON THE SUBJECT - -Extremely little has been published in written form about using -'Mode X'-style modes. Below are some books which cover VGA programming -at varying degrees of technical level, but the only one to mention -unchained modes and Mode X, is Michael Abrash'. I'd get one of the VGA -references first, though. - - o George Sutty & Steve Blair : "Advanced Pogrammer's Guide to the - EGA/VGA" from Brady. A bit old perhaps, but covers all *standard* - EGA/VGA registers, and discusses most BIOS functions and other - operations. Contains disk with C/Pascal/assembler source code. - There's a sequel out for SuperVGAs, which I haven't seen. - - o Michael Abrash : "Power Graphics Programming" from QUE/Programmer's - Journal. Collections of (old) articles from Programmer's Journal on - EGA/VGA, read modes and write modes, animation, tweaking (320x400 - and 360x480). His newer ravings in DDJ covers fast 256-color - bitmaps, compiled bitmaps, polygons, 3D graphics, texture mapping - among other stuff. - - o Richard F. Ferraro : "Programmer's Guide to the EGA and VGA video - cards including Super VGA". I don't have this one, but heard it's - nice. Detailed coverage of all EGA/VGA registers. The Super VGA - reference makes it attractive. - - o Richard Wilton : "Programmer's Guide to PC & PS/2 Video Systems" - Less technical, more application/algorithm oriented. Nice enough, - even though it is a bit outdated, in that he discusses CGA and - Hercules cards just as much as EGA/VGA. - - - - -5. BYE - FOR NOW - -I am considering writing a text describing in more detail the process of -using TWEAK to achieve the VGA resolution you want or need. However, I -thought I'd let this document go first, and see if I get any reactions. -If I don't, I'll stop. Feel free to forward any suggestions, -criticisms, bombs and beers. - -I can be reached via: - - o e-mail: robert@stud.unit.no - - o land mail: - - Robert Schmidt - Stud.post 170 - NTH - N-7034 Trondheim - NORWAY - -Nothing would encourage or please me more than a postcard from where you -live! diff --git a/16/lib/intro/lib.c b/16/lib/intro/lib.c deleted file mode 100755 index d0e7a83b..00000000 --- a/16/lib/intro/lib.c +++ /dev/null @@ -1,359 +0,0 @@ -/* - * LIB.C v1.2a - * - * by Robert Schmidt - * (C)1993 Ztiff Zox Softwear - * - * Simple graphics library to accompany the article - * - * INTRODUCTION TO MODE X. - * - * This library provides the basic functions for initializing and using - * unchained (planar) 256-color VGA modes. Currently supported are: - * - * - 320x200 - * - 320x240 - * - * Functions are provided for: - * - * - initializing one of the available modes - * - setting the start address of the VGA refresh data - * - setting active and visible display pages - * - writing and reading a single pixel to/from video memory - * - * The library is provided as a demonstration only, and is not claimed - * to be particularly efficient or suited for any purpose. It has only - * been tested with Borland C++ 3.1 by the author. Comments on success - * or disaster with other compilers are welcome. - * - * This file is public domain. Do with it whatever you'd like, but - * please don't distribute it without the article. - * - * Thanks go out to various helpful netters who spotted the 0xE7 bug - * in the set320x240x256() function! - * - * Modified by sparky4 so it can be compiled in open watcom ^^ - */ - - - - -/* - * We 'require' a large data model simply to get rid of explicit 'far' - * pointers and compiler specific '_fmemset()' functions and the likes. - */ -#if !defined(__COMPACT__) -# if !defined(__LARGE__) -# if !defined(__HUGE__) -# error Large data model required! Try compiling with 'wcc -0 -ml lib.c'. -# endif -# endif -#endif - -#include -#include -#include - -//code from old library! -/*src¥lib¥*/ -#include "dos_gfx.h" - -int old_mode; -//color てすと -int gq = LGQ; -//てすと -int q = 0; -int bakax = 0, bakay = 0; -cord xx = rand()&0%320, yy = rand()&0%240, sx = 0, sy = 0; -byte coor; - -/* - * Comment out the following #define if you don't want the testing main() - * to be included. - */ -#define TESTING - -/* - * Define the port addresses of some VGA registers. - */ -#define CRTC_ADDR 0x3d4 /* Base port of the CRT Controller (color) */ - -#define SEQU_ADDR 0x3c4 /* Base port of the Sequencer */ -#define GRAC_ADDR 0x3ce /* Base port of the Graphics Controller */ -#define STATUS_ADDR 0x3DA - - -/* - * Make a far pointer to the VGA graphics buffer segment. Your compiler - * might not have the MK_FP macro, but you'll figure something out. - */ -byte *vga = (byte *) MK_FP(0xA000, 0); - - -/* - * width and height should specify the mode dimensions. widthBytes - * specify the width of a line in addressable bytes. - */ -unsigned width, height, widthBytes; - -/* - * actStart specifies the start of the page being accessed by - * drawing operations. visStart specifies the contents of the Screen - * Start register, i.e. the start of the visible page. - */ -unsigned actStart, visStart; - -/* - * set320x200x256_X() - * sets mode 13h, then turns it into an unchained (planar), 4-page - * 320x200x256 mode. - */ -void set320x200x256_X(void) - { - union REGS r; - - /* Set VGA BIOS mode 13h: */ - r.x.ax = 0x0013; - int86(0x10, &r, &r); - - /* Turn off the Chain-4 bit (bit 3 at index 4, port 0x3c4): */ - outpw(SEQU_ADDR, 0x0604); - - /* Turn off word mode, by setting the Mode Control register - of the CRT Controller (index 0x17, port 0x3d4): */ - outpw(CRTC_ADDR, 0xE317); - - /* Turn off doubleword mode, by setting the Underline Location - register (index 0x14, port 0x3d4): */ - outpw(CRTC_ADDR, 0x0014); - - /* Clear entire video memory, by selecting all four planes, then - writing 0 to entire segment. */ - outpw(SEQU_ADDR, 0x0F02); - memset(vga+1, 0, 0xffff); /* stupid size_t exactly 1 too small */ - vga[0] = 0; - - /* Update the global variables to reflect dimensions of this - mode. This is needed by most future drawing operations. */ - width = 320; - height = 200; - - /* Each byte addresses four pixels, so the width of a scan line - in *bytes* is one fourth of the number of pixels on a line. */ - widthBytes = width / 4; - - /* By default we want screen refreshing and drawing operations - to be based at offset 0 in the video segment. */ - actStart = visStart = 0; - - } - -/* - * setActiveStart() tells our graphics operations which address in video - * memory should be considered the top left corner. - */ -void setActiveStart(unsigned offset) - { - actStart = offset; - } - -/* - * setVisibleStart() tells the VGA from which byte to fetch the first - * pixel when starting refresh at the top of the screen. This version - * won't look very well in time critical situations (games for - * instance) as the register outputs are not synchronized with the - * screen refresh. This refresh might start when the high byte is - * set, but before the low byte is set, which produces a bad flicker. - */ -void setVisibleStart(unsigned offset) - { - visStart = offset; - outpw(CRTC_ADDR, 0x0C); /* set high byte */ - outpw(CRTC_ADDR+1, visStart >> 8); - outpw(CRTC_ADDR, 0x0D); /* set low byte */ - outpw(CRTC_ADDR+1, visStart & 0xff); - } - -/* - * setXXXPage() sets the specified page by multiplying the page number - * with the size of one page at the current resolution, then handing the - * resulting offset value over to the corresponding setXXXStart() - * function. The first page is number 0. - */ -void setActivePage(int page) - { - setActiveStart(page * widthBytes * height); - } - -void setVisiblePage(int page) - { - setVisibleStart(page * widthBytes * height); - } - -void putPixel_X(int x, int y, byte color) - { - /* Each address accesses four neighboring pixels, so set - Write Plane Enable according to which pixel we want - to modify. The plane is determined by the two least - significant bits of the x-coordinate: */ - outp(0x3c4, 0x02); - outp(0x3c5, 0x01 << (x & 3)); - - /* The offset of the pixel into the video segment is - offset = (width * y + x) / 4, and write the given - color to the plane we selected above. Heed the active - page start selection. */ - vga[(unsigned)(widthBytes * y) + (x / 4) + actStart] = color; - - } - -byte getPixel_X(int x, int y) - { - /* Select the plane from which we must read the pixel color: */ - outpw(GRAC_ADDR, 0x04); - outpw(GRAC_ADDR+1, x & 3); - - return vga[(unsigned)(widthBytes * y) + (x / 4) + actStart]; - - } - -void set320x240x256_X(void) - { - /* Set the unchained version of mode 13h: */ - set320x200x256_X(); - - /* Modify the vertical sync polarity bits in the Misc. Output - Register to achieve square aspect ratio: */ - outp(0x3C2, 0xE3); - - /* Modify the vertical timing registers to reflect the increased - vertical resolution, and to center the image as good as - possible: */ - outpw(0x3D4, 0x2C11); /* turn off write protect */ - outpw(0x3D4, 0x0D06); /* vertical total */ - outpw(0x3D4, 0x3E07); /* overflow register */ - outpw(0x3D4, 0xEA10); /* vertical retrace start */ - outpw(0x3D4, 0xAC11); /* vertical retrace end AND wr.prot */ - outpw(0x3D4, 0xDF12); /* vertical display enable end */ - outpw(0x3D4, 0xE715); /* start vertical blanking */ - outpw(0x3D4, 0x0616); /* end vertical blanking */ - - /* Update mode info, so future operations are aware of the - resolution */ - height = 240; - - } - -/* - * The library testing routines follows below. - */ - - -#ifdef TESTING - -#include -#include - -void doTest(void) - { - int p, x, y, pages; - - /* This is the way to calculate the number of pages available. */ - pages = 65536L/(widthBytes*height); // apparently this takes the A000 address - - for (p = 0; p <= pages; ++p) - { - setActivePage(p); - - /* On each page draw a single colored border, and dump the palette - onto a small square about the middle of the page. */ - - //{ - for (x = 0; x <= width; ++x) - { - putPixel_X(x, 0, p+1); - if(p!=pages) putPixel_X(x, height-1, p+1); - else if(height==240) putPixel_X(x, 99-1, p+1); - } - - for (y = 0; y <= height; ++y) - { - putPixel_X(0, y, p+1); - if(p!=pages) putPixel_X(width-1, y, p+1); - else if(height==240) putPixel_X(width-1, y, p+1); - } - - for (x = 0; x < TILEWH; ++x) - for (y = 0; y < TILEWH; ++y) - putPixel_X(x+(p+2)*16, y+(p+2)*TILEWH, x + y*TILEWH); - //} - - } - - /* Each pages will now contain a different image. Let the user cycle - through all the pages by pressing a key. */ - for (p = 0; p < pages; ++p) - { - setVisiblePage(p); - getch(); - } - - } - -/* - * Library test (program) entry point. - */ - -int main(void) - { - int key,d; - //short int temp; - // main variables - d=1; // switch variable - key=4; // default screensaver number -// puts("First, have a look at the 320x200 mode. I will draw some rubbish"); -// puts("on all of the four pages, then let you cycle through them by"); -// puts("hitting a key on each page."); -// puts("Press a key when ready..."); -// getch(); - -// doTest(); - -// puts("Then, check out Mode X, 320x240 with 3 (and a half) pages."); -// puts("Press a key when ready..."); -// getch(); - - setvideo(1); -// screen savers - -/*while(d!=0){ // on! - if(!kbhit()){ // conditions of screen saver - ding(key); - }else{ - setvideo(0); - // user imput switch - printf("Enter 1, 2, 3, 4, or 6 to run a screensaver, or enter 5 to quit.¥n", getch()); // prompt the user - scanf("%d", &key); - //if(key==3){xx=yy=0;} // crazy screen saver wwww - if(key==5) d=0; - setvideo(1); - } - }*/ // else off - while(!kbhit()){ // conditions of screen saver - ding(key); - } - //end of screen savers - doTest(); - while(!kbhit()){ - - } - setvideo(0); - printf("wwww¥n%dx%d¥n", width,height); - printf("[%d]¥n", mxGetVersion()); - puts("where to next? It's your move! wwww"); - printf("bakapi ver. 1.04.09.04¥nis made by sparky4(≧ω≦) feel free to use it ^^¥nLicence: GPL v2¥n"); - return 0; - } - -#endif -#endif \ No newline at end of file diff --git a/16/lib/modex105/DEMOS/BASIC7/MODEX.LIB b/16/lib/modex105/DEMOS/BASIC7/MODEX.LIB deleted file mode 100755 index 0a0364a32d1d28549fa263da9c503a29079be2ea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7189 zcmds6e^lGob-&;5`yvS;KvoE29wClPs24KgLg#ZDycAhTAO{PAWNfF6w6i3xn|WSm zOSnCCDJODbOJ9$8P3EMTmpYEKwr+YxPuv)jw1M!Igzeygou$~$PV8XEKcIj^JKUIr zect;@AZ%yd{@5R#ID9|v-FNSOzwdqTzVU3L0wS4`zt$|u{F}dhKDUyY!?ji$|&OdJ;d0L)kU)lM#M3Sx1X|INuBhcuqaeIBvM(+;{WUH&cp1RIJ z7GHIveN|wY+qc5r&}Sx#ca6spsCIiB>g;QtHIk*q=?kn5)Vo|>r|+p`eoZp}w2_Q8 z4UKM(&+)R6vcVB(s<8(|;}wZazGUG`Cd%b{><*v1$r)&{*Ela2C{xs2=k_?W6v}ke zH>?pQZ)8y}*ObP51k9Wy6h9#AnTC4QyB8VJfPmN6xH*%|E_YpBU|C(g<9=dfb<{cS zjiOCnN2Al}X_d(=21f`Vm&wYTl|E7qLz1SCfM`*Pk*vJ>biNYs30fN8uz}2+w#x0P zu3vRmN-D|Ws`vPQix&E3+S`#yS!ts`&rDfj6!gikTIf%=D@1#xfjwq)Ci(O3%_U|a zg)q?|VX57>X92OCRQXNuo;`&5pxhjbNn*xatR9POHsnZ|8QCn$n44LZM}IU#lxf$I z0#d!)z#dn88LiOw*U}pKLDr`DGoo0uZyIm6?w;3Xd+OF*`G=6tHr{8wJa32X{aY{O z8*Z%qVWmpyrTmP=Gd*}%u99|2+vQox1-4Ear)p(zX5(Ct)=6ii1@bIqh*g27N-3Yw zGbB}kr%;}yd<}YdU9(bOgPyr{tt@I<6&{h*5!Ig;zGm7~GcZ)99wdr1lj_MS|8?2D zb<*bYp~c~~wyUbkR#sUpZ~Pp-hRwIBers9fSCx%<_?kB7bYGMw&rS~goq2gye=wt> z>k?7NE!1c2)L4gN7~??FSm#@;EUJu(92@I=hqcceT{cqu-BBdNadVlvG#r<+ri0mK zYDPFAXLSWf#)c;%_n}2M`R|}TFA=F|tIMYLmX+4Y5zIVV0_woU1GhY>jj1jxFZrs% zOF*715rEEdLd9wIMC4hbaF5LT-J##`cFDP88tSU(nmR=!l6{HmM^OU8>*2N3zhH9Llokpp1W|ELts`&B zXw>;lI=?x|->yW@ww`01$Jki;xsoX7R*28NI>Py6P<)i4&sqAS{B7WP`rGt)$ zKZomKnEE_Sw=)NRZ4ulw{y7Y)T9{!L8Ki?U{1aBo8RVUS^oT$s9 z77>+fSJ=ezAlk_>G+yJjtIbyMhd*V((lilv#q-%x?%)GpZONL(FReyIsxrv3(*jWjAFKDT9U!8xr3&ccVCvYM@W)_q^$)!N!mKV8PXmD zd_>xMz#F7(030Lj8-V9X+X&cCS_@ziX{~^2(jEsaAZ@2k{GLvH22eoSUceI4_5pmP z{R;q`2Xx|VIuW~qbH)MC*{c(e0Khq@6Hn>H_WHjeZH zicJ7yicNCT$4KW;TmmQ*&jc7KUI@se_&tDy6t4gjQ~W+a3B{KI7E%0B(W+yc0g4p= zdk`V;EC9-Wr04z>`s0Io`hBDmCXr5j9_ek%A$Xi6zM@D{VjVAR7haKD=HCrmyzjx`j@ULi8 z5a(S-9DWDQtLWM`a5L%58CmwpjC4A2_?_YJ>_ij3{25Is)@$qUT56kVfpsoz_}$@q zciyZ4T-KD5OxDk3(`du*24I=7G+>x}8BE4#=V5>u^J&7rVN_Uo6ed!I6C3=2LCkC(05jP9{D^-`F(m=GiPW6~7pXBZod_zmH+?B}`1Z{M9MZT)kYgoL7f2_`{v z!bWKI!bWIogmuyWk<<6+>DQ3ndKkqE3|gN~`T(R@4n9xZ0s6j-C%D5{U^waWQJW3XrLIV`p`xq&^obtsN^^x%4H~0s^ZB+fkMU$4 zPu6tzC^zBwV(tt_>u+;gf2RaL_ZggNy6RaAf%{XBEDUd0Go?(mIHlgWAoBTwD41Cg z^ZyqM;`jF+9lWml%1t^fXvr?#dR-SqSz4#$;k~Io;jk!9U#cf>=pL;lza*M*=QIV2 zr#*SouKWhoZ}WzGOgM(&*yY8c4F49dFeJloi$TemQD7S?)mrkB3KmRzY}2khD6r}Z z;3Lw7`-QNDTR5%7^h$CEJ}+T3Sv^vv5L5_Afq^n z%zVX@)RyY)F7&qWGkXj7I=8zx#Hg+uZl5>(1y+f$*k7#d2`+|5c#|7XAZ~R0Vu9Ie z>uMY9Y}tL7w8gMnCej*p*dk!-4*>H_+G{Wrd88eJCDBeJT|(OX031-cMO#SPB|tI7 z?h#TkhYtLpX`;SY0WTZ-#sM#x;))Q6=Kyd9EC%4XcQ+KrUHo%KCtTzv0IwD1?$wp64AOV7`M5XR6jWV>6)xMIj6z@6ZJ`h+oS5=UUGuB3zPXucDum;~ z&8PG&P~_yO>brxDLj`wBB+_S(r&ZTNdTM z(_es+vV}Tg|si}5CRxT+k!dQ+VnJcz+3t4s5M)Ally0W4T8kKb2?v6-^$jmf*vCf zVtoB76szRvhw%T*hJs&Tzlp~i@7CjuD}C-d?~+}`2-WEE#@Se-S(K%P z8AWh$k(8lGAM)U09uF>FdtTwe#lVgt1P6Tx_SMumJvF{s#QQ|fUR~Yj^m-|=^P9MZ zWqTcVPvCy%nq~F&#_A13MnvfX-Uk{ne>prj*5s~s){98qg9tcP*LwpZ9)?bs8|{dj ztq4G12XZq--X%m?Zjaj+&>7xC*5_W~Yz#Q+S9*N&B`QkA$qINp?0lhd(?a$t9i-QY zwPv;Ewq~1;@3~u&DCI$#Elt9+w4GA>hm5aFbfBv5jt-cL!A_z>G9@WfVoDLV&>h!J zrRMUKpTiNl&zdH8K$JG||AuA1B7&tEe&v4u5s64TS zm7b{j;39LGx-XhUXe1?FqULWMD$DBl4LiFPs!qQlo>5*S4Ei^8rhqS?WL%@25mKKNxZBE=i zl~2X(kxy;QTInY50w_0#So$qZel1I`~YdEMTpa zX7XyKIZp%94euw?%*zWn(~M)SH2WTcwKHo{q4D}>73s!j4UG7lx#LeYsksv?Lb~3H uLvPxn2YBbaAn|*k-!H&4Pslacb(+NM-Ma49 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