changeset 3250:13737f3608e6

Updated Level 1 VTIO and CoVDG for updates to do CoCoVGA. Updated Level 1 CoCo1 area makefile's to produce binaries and disk images needed for the CoCoVGA video output.
author David Ladd <drencor-xeen@users.sourceforge.net>
date Wed, 28 Mar 2018 21:20:31 -0500
parents 6ea55a46a963
children 4393a2b5b9a0
files level1/coco1/bootfiles/makefile level1/coco1/makefile level1/coco1/modules/makefile level1/modules/covdg.asm level1/modules/vtio.asm
diffstat 5 files changed, 826 insertions(+), 74 deletions(-) [+]
line wrap: on
line diff
--- a/level1/coco1/bootfiles/makefile	Mon Mar 12 19:35:56 2018 -0500
+++ b/level1/coco1/bootfiles/makefile	Wed Mar 28 21:20:31 2018 -0500
@@ -44,6 +44,7 @@
 FLOPPY_80D	= $(MD)/rb1773.dr $(MD)/d0_40d.dd $(MD)/d1_40d.dd $(MD)/d2_40d.dd 
 
 VTIO_COVDG	= $(MD)/vtio.dr $(MD)/covdg.io $(MD)/term_vdg.dt
+VTIO_COVGA	= $(MD)/vtio_vga.dr $(MD)/covga.io $(MD)/term_vga.dt
 VTIO_COHR	= $(MD)/vtio.dr $(MD)/cohr.io $(MD)/term_hr.dt
 VTIO_CO80	= $(MD)/vtio.dr $(MD)/co80.io $(MD)/term_80.dt
 VTIO_CO42	= $(MD)/vtio.dr $(MD)/co42.io $(MD)/term_42.dt
@@ -99,6 +100,18 @@
 		$(CLOCK60HZ) \
 		$(MD)/sysgo_dd
 
+BOOTFILE_COVGA	= $(MD)/ioman \
+		$(MD)/rbf.mn \
+		$(FLOPPY_40D) \
+		$(MD)/ddd0_40d.dd \
+		$(MD)/scf.mn \
+		$(VTIO_COVGA) \
+		$(MD)/scbbp.dr $(MD)/p_scbbp.dd \
+		$(MD)/scbbt.dr $(MD)/t1_scbbt.dd \
+		$(PIPE) \
+		$(CLOCK60HZ) \
+		$(MD)/sysgo_dd
+
 BOOTFILE_COHR	= $(MD)/ioman \
 		$(MD)/rbf.mn \
 		$(FLOPPY_40D) \
@@ -240,6 +253,21 @@
 		$(CLOCK60HZDW) \
 		$(MD)/sysgo_dd
 
+BOOTFILE_COVGA_DW	= $(MD)/ioman \
+		$(MD)/rbf.mn \
+		$(FLOPPY_40D) \
+		$(RBDW) \
+		$(MD)/ddx0.dd \
+		$(MD)/scf.mn \
+		$(VTIO_COVGA) \
+		$(MD)/scdwv.dr \
+		$(SCDWV_NET) \
+		$(SCDWV_WIN) \
+		$(SCDWP) \
+		$(PIPE) \
+		$(CLOCK60HZDW) \
+		$(MD)/sysgo_dd
+
 BOOTFILE_COVDG_DW_GAME	= $(MD)/ioman \
 		$(MD)/rbf.mn \
 		$(RBDW) \
@@ -251,6 +279,17 @@
 		$(MD)/sysgo_dd \
 		$(CMDSDIR)/shell_21
 
+BOOTFILE_COVGA_DW_GAME	= $(MD)/ioman \
+		$(MD)/rbf.mn \
+		$(RBDW) \
+		$(MD)/ddx0.dd \
+		$(MD)/scf.mn \
+		$(VTIO_COVGA) \
+		$(PIPE) \
+		$(CLOCK60HZDW) \
+		$(MD)/sysgo_dd \
+		$(CMDSDIR)/shell_21
+
 BOOTFILE_COVDG_BECKER	= $(MD)/ioman \
 		$(MD)/rbf.mn \
 		$(RBBECKER) \
@@ -266,6 +305,21 @@
 		$(CLOCK60HZDW) \
 		$(MD)/sysgo_dd
 
+BOOTFILE_COVGA_BECKER	= $(MD)/ioman \
+		$(MD)/rbf.mn \
+		$(RBBECKER) \
+		$(FLOPPY_40D) \
+		$(MD)/ddx0.dd \
+		$(MD)/scf.mn \
+		$(VTIO_COVGA) \
+		$(MD)/scdwv.dr \
+		$(SCDWV_NET) \
+		$(SCDWV_WIN) \
+		$(SCDWP) \
+		$(PIPE) \
+		$(CLOCK60HZDW) \
+		$(MD)/sysgo_dd
+
 BOOTFILE_COVDG_RS232PAK	= $(MD)/ioman \
 		$(MD)/rbf.mn \
 		$(RBRS232PAK) \
@@ -281,6 +335,21 @@
 		$(CLOCK60HZDW) \
 		$(MD)/sysgo_dd
 
+BOOTFILE_COVGA_RS232PAK	= $(MD)/ioman \
+		$(MD)/rbf.mn \
+		$(RBRS232PAK) \
+		$(FLOPPY_40D) \
+		$(MD)/ddx0.dd \
+		$(MD)/scf.mn \
+		$(VTIO_COVGA) \
+		$(MD)/scdwv.dr \
+		$(SCDWV_NET) \
+		$(SCDWV_WIN) \
+		$(SCDWP) \
+		$(PIPE) \
+		$(CLOCK60HZDW) \
+		$(MD)/sysgo_dd
+
 BOOTFILE_COVDG_COCOLINK	= $(MD)/ioman \
 		$(MD)/rbf.mn \
 		$(RBCOCOLINK) \
@@ -296,6 +365,21 @@
 		$(CLOCK60HZDW) \
 		$(MD)/sysgo_dd
 
+BOOTFILE_COVGA_COCOLINK	= $(MD)/ioman \
+		$(MD)/rbf.mn \
+		$(RBCOCOLINK) \
+		$(FLOPPY_40D) \
+		$(MD)/ddx0.dd \
+		$(MD)/scf.mn \
+		$(VTIO_COVGA) \
+		$(MD)/scdwv.dr \
+		$(SCDWV_NET) \
+		$(SCDWV_WIN) \
+		$(SCDWP) \
+		$(PIPE) \
+		$(CLOCK60HZDW) \
+		$(MD)/sysgo_dd
+
 BOOTFILE_COVDG_DIRECTMODEMPAK	= $(MD)/ioman \
 		$(MD)/rbf.mn \
 		$(RBDIRECTMODEMPAK) \
@@ -311,6 +395,21 @@
 		$(CLOCK60HZDW) \
 		$(MD)/sysgo_dd
 
+BOOTFILE_COVGA_DIRECTMODEMPAK	= $(MD)/ioman \
+		$(MD)/rbf.mn \
+		$(RBDIRECTMODEMPAK) \
+		$(FLOPPY_40D) \
+		$(MD)/ddx0.dd \
+		$(MD)/scf.mn \
+		$(VTIO_COVGA) \
+		$(MD)/scdwv.dr \
+		$(SCDWV_NET) \
+		$(SCDWV_WIN) \
+		$(SCDWP) \
+		$(PIPE) \
+		$(CLOCK60HZDW) \
+		$(MD)/sysgo_dd
+
 BOOTFILE_COVDG_BECKER_GAME	= $(MD)/ioman \
 		$(MD)/rbf.mn \
 		$(RBBECKER) \
@@ -333,6 +432,17 @@
 		$(MD)/sysgo_dd \
 		$(CMDSDIR)/shell_21
 
+BOOTFILE_COVGA_RS232PAK_GAME	= $(MD)/ioman \
+		$(MD)/rbf.mn \
+		$(RBRS232PAK) \
+		$(MD)/ddx0.dd \
+		$(MD)/scf.mn \
+		$(VTIO_COVGA) \
+		$(PIPE) \
+		$(CLOCK60HZDW) \
+		$(MD)/sysgo_dd \
+		$(CMDSDIR)/shell_21
+
 BOOTFILE_COVDG_COCOLINK_GAME	= $(MD)/ioman \
 		$(MD)/rbf.mn \
 		$(RBCOCOLINK) \
@@ -344,6 +454,17 @@
 		$(MD)/sysgo_dd \
 		$(CMDSDIR)/shell_21
 
+BOOTFILE_COVGA_COCOLINK_GAME	= $(MD)/ioman \
+		$(MD)/rbf.mn \
+		$(RBCOCOLINK) \
+		$(MD)/ddx0.dd \
+		$(MD)/scf.mn \
+		$(VTIO_COVGA) \
+		$(PIPE) \
+		$(CLOCK60HZDW) \
+		$(MD)/sysgo_dd \
+		$(CMDSDIR)/shell_21
+
 BOOTFILE_COVDG_DIRECTMODEMPAK_GAME	= $(MD)/ioman \
 		$(MD)/rbf.mn \
 		$(RBDIRECTMODEMPAK) \
@@ -355,6 +476,17 @@
 		$(MD)/sysgo_dd \
 		$(CMDSDIR)/shell_21
 
+BOOTFILE_COVGA_DIRECTMODEMPAK_GAME	= $(MD)/ioman \
+		$(MD)/rbf.mn \
+		$(RBDIRECTMODEMPAK) \
+		$(MD)/ddx0.dd \
+		$(MD)/scf.mn \
+		$(VTIO_COVGA) \
+		$(PIPE) \
+		$(CLOCK60HZDW) \
+		$(MD)/sysgo_dd \
+		$(CMDSDIR)/shell_21
+
 BOOTFILE_COVDG_ARDUINO	= $(MD)/ioman \
 		$(MD)/rbf.mn \
 		$(FLOPPY_40D) \
@@ -369,7 +501,22 @@
 		$(PIPE) \
 		$(CLOCK60HZDW) \
 		$(MD)/sysgo_dd
-		
+
+BOOTFILE_COVGA_ARDUINO	= $(MD)/ioman \
+		$(MD)/rbf.mn \
+		$(FLOPPY_40D) \
+		$(RBARDUINO) \
+		$(MD)/ddx0.dd \
+		$(MD)/scf.mn \
+		$(VTIO_COVGA) \
+		$(MD)/scdwv.dr \
+		$(SCDWV_NET) \
+		$(SCDWV_WIN) \
+		$(SCDWP) \
+		$(PIPE) \
+		$(CLOCK60HZDW) \
+		$(MD)/sysgo_dd
+
 BOOTFILE_COVDG_ARDUINO_GAME	= $(MD)/ioman \
 		$(MD)/rbf.mn \
 		$(RBARDUINO) \
@@ -380,7 +527,18 @@
 		$(CLOCK60HZDW) \
 		$(MD)/sysgo_dd \
 		$(CMDSDIR)/shell_21
-		
+
+BOOTFILE_COVGA_ARDUINO_GAME	= $(MD)/ioman \
+		$(MD)/rbf.mn \
+		$(RBARDUINO) \
+		$(MD)/ddx0.dd \
+		$(MD)/scf.mn \
+		$(VTIO_COVGA) \
+		$(PIPE) \
+		$(CLOCK60HZDW) \
+		$(MD)/sysgo_dd \
+		$(CMDSDIR)/shell_21
+
 BOOTFILE_COVDG_DS80	= $(MD)/ioman \
 		$(MD)/rbf.mn \
 		$(FLOPPY_80D) \
@@ -393,6 +551,18 @@
 		$(CLOCK60HZ) \
 		$(MD)/sysgo_dd
 
+BOOTFILE_COVGA_DS80	= $(MD)/ioman \
+		$(MD)/rbf.mn \
+		$(FLOPPY_80D) \
+		$(MD)/ddd0_80d.dd \
+		$(MD)/scf.mn \
+		$(VTIO_COVGA) \
+		$(MD)/scbbp.dr $(MD)/p_scbbp.dd \
+		$(MD)/scbbt.dr $(MD)/t1_scbbt.dd \
+		$(PIPE) \
+		$(CLOCK60HZ) \
+		$(MD)/sysgo_dd
+
 BOOTFILE_COVDG_COCOSDC	= $(MD)/ioman \
 		$(MD)/rbf.mn \
 		$(RBCOCOSDC) \
@@ -406,6 +576,19 @@
 		$(CLOCK60HZ) \
 		$(MD)/sysgo_dd
 
+BOOTFILE_COVGA_COCOSDC	= $(MD)/ioman \
+		$(MD)/rbf.mn \
+		$(RBCOCOSDC) \
+		$(MD)/ddsd0_cocosdc.dd \
+		$(FLOPPY_40D) \
+		$(MD)/scf.mn \
+		$(VTIO_COVGA) \
+		$(MD)/scbbp.dr $(MD)/p_scbbp.dd \
+		$(MD)/scbbt.dr $(MD)/t1_scbbt.dd \
+		$(PIPE) \
+		$(CLOCK60HZ) \
+		$(MD)/sysgo_dd
+
 BOOTFILE_CO42_COCOSDC	= $(MD)/ioman \
 		$(MD)/rbf.mn \
 		$(RBCOCOSDC) \
@@ -417,7 +600,7 @@
 		$(MD)/scbbt.dr $(MD)/t1_scbbt.dd \
 		$(PIPE) \
 		$(CLOCK60HZ) \
-		$(MD)/sysgo_dd		
+		$(MD)/sysgo_dd
 
 BOOTFILE_COVDG_COCOSDC_GAME	= $(MD)/ioman \
 		$(MD)/rbf.mn \
@@ -430,6 +613,17 @@
 		$(MD)/sysgo_dd \
 		$(CMDSDIR)/shell_21
 
+BOOTFILE_COVGA_COCOSDC_GAME	= $(MD)/ioman \
+		$(MD)/rbf.mn \
+		$(RBCOCOSDC) \
+		$(MD)/ddsd0_cocosdc.dd \
+		$(MD)/scf.mn \
+		$(VTIO_COVGA) \
+		$(PIPE) \
+		$(CLOCK60HZ) \
+		$(MD)/sysgo_dd \
+		$(CMDSDIR)/shell_21
+
 BOOTFILE_COHR_DW	= $(MD)/ioman \
 		$(MD)/rbf.mn \
 		$(FLOPPY_40D) \
@@ -565,7 +759,11 @@
 		bootfile_cohr_cocolink bootfile_cocolink_headless \
 		bootfile_cohr_directmodempak bootfile_directmodempak_headless \
 		bootfile_covdg_arduino bootfile_arduino_headless \
-		bootfile_cohr_arduino bootfile_covdg_arduino_game
+		bootfile_cohr_arduino bootfile_covdg_arduino_game \
+		bootfile_covga_ds80 bootfile_covga_cocosdc bootfile_covga_dw bootfile_covga_rs232pak \
+		bootfile_covga_directmodempak bootfile_covga_cocolink bootfile_covga_dw_game \
+		bootfile_covga_cocosdc_game bootfile_covga_rs232pak_game bootfile_covga_directmodempak_game \
+		bootfile_covga_cocolink_game bootfile_covga bootfile_covga_arduino
 
 KERNELS		= kernel_1773 kernel_dw kernel_becker kernel_arduino kernel_cocosdc \
 			kernel_rs232pak kernel_directmodempak kernel_cocolink
@@ -577,6 +775,9 @@
 bootfile_covdg: $(BOOTFILE_COVDG) $(DEPENDS)
 	$(MERGE) $(BOOTFILE_COVDG)>$@
 
+bootfile_covga: $(BOOTFILE_COVGA) $(DEPENDS)
+	$(MERGE) $(BOOTFILE_COVGA)>$@
+
 bootfile_cohr: $(BOOTFILE_COHR) $(DEPENDS)
 	$(MERGE) $(BOOTFILE_COHR)>$@
 
@@ -585,13 +786,16 @@
 
 bootfile_co80: $(BOOTFILE_CO80) $(DEPENDS)
 	$(MERGE) $(BOOTFILE_CO80)>$@
-	
+
 bootfile_cowprs: $(BOOTFILE_COWPRS) $(DEPENDS)
 	$(MERGE) $(BOOTFILE_COWPRS)>$@
 
 bootfile_covdg_ds80: $(BOOTFILE_COVDG_DS80) $(DEPENDS)
 	$(MERGE) $(BOOTFILE_COVDG_DS80)>$@
 
+bootfile_covga_ds80: $(BOOTFILE_COVGA_DS80) $(DEPENDS)
+	$(MERGE) $(BOOTFILE_COVGA_DS80)>$@
+
 bootfile_dw_headless: $(BOOTFILE_DW_HEADLESS) $(DEPENDS)
 	$(MERGE) $(BOOTFILE_DW_HEADLESS)>$@
 
@@ -613,48 +817,90 @@
 bootfile_covdg_dw: $(BOOTFILE_COVDG_DW) $(DEPENDS)
 	$(MERGE) $(BOOTFILE_COVDG_DW)>$@
 
+bootfile_covga_dw: $(BOOTFILE_COVGA_DW) $(DEPENDS)
+	$(MERGE) $(BOOTFILE_COVGA_DW)>$@
+
 bootfile_covdg_dw_game: $(BOOTFILE_COVDG_DW_GAME) $(DEPENDS)
 	$(MERGE) $(BOOTFILE_COVDG_DW_GAME)>$@
 
+bootfile_covga_dw_game: $(BOOTFILE_COVGA_DW_GAME) $(DEPENDS)
+	$(MERGE) $(BOOTFILE_COVGA_DW_GAME)>$@
+
 bootfile_covdg_becker: $(BOOTFILE_COVDG_BECKER) $(DEPENDS)
 	$(MERGE) $(BOOTFILE_COVDG_BECKER)>$@
 
+bootfile_covga_becker: $(BOOTFILE_COVGA_BECKER) $(DEPENDS)
+	$(MERGE) $(BOOTFILE_COVGA_BECKER)>$@
+
 bootfile_covdg_rs232pak: $(BOOTFILE_COVDG_RS232PAK) $(DEPENDS)
 	$(MERGE) $(BOOTFILE_COVDG_RS232PAK)>$@
 
+bootfile_covga_rs232pak: $(BOOTFILE_COVGA_RS232PAK) $(DEPENDS)
+	$(MERGE) $(BOOTFILE_COVGA_RS232PAK)>$@
+
 bootfile_covdg_cocolink: $(BOOTFILE_COVDG_COCOLINK) $(DEPENDS)
 	$(MERGE) $(BOOTFILE_COVDG_COCOLINK)>$@
 
+bootfile_covga_cocolink: $(BOOTFILE_COVGA_COCOLINK) $(DEPENDS)
+	$(MERGE) $(BOOTFILE_COVGA_COCOLINK)>$@
+
 bootfile_covdg_directmodempak: $(BOOTFILE_COVDG_DIRECTMODEMPAK) $(DEPENDS)
 	$(MERGE) $(BOOTFILE_COVDG_DIRECTMODEMPAK)>$@
 
+bootfile_covga_directmodempak: $(BOOTFILE_COVGA_DIRECTMODEMPAK) $(DEPENDS)
+	$(MERGE) $(BOOTFILE_COVGA_DIRECTMODEMPAK)>$@
+
 bootfile_covdg_becker_game: $(BOOTFILE_COVDG_BECKER_GAME) $(DEPENDS)
 	$(MERGE) $(BOOTFILE_COVDG_BECKER_GAME)>$@
 
+bootfile_covga_becker_game: $(BOOTFILE_COVGA_BECKER_GAME) $(DEPENDS)
+	$(MERGE) $(BOOTFILE_COVGA_BECKER_GAME)>$@
+
 bootfile_covdg_rs232pak_game: $(BOOTFILE_COVDG_RS232PAK_GAME) $(DEPENDS)
 	$(MERGE) $(BOOTFILE_COVDG_RS232PAK_GAME)>$@
 
+bootfile_covga_rs232pak_game: $(BOOTFILE_COVGA_RS232PAK_GAME) $(DEPENDS)
+	$(MERGE) $(BOOTFILE_COVGA_RS232PAK_GAME)>$@
+
 bootfile_covdg_cocolink_game: $(BOOTFILE_COVDG_COCOLINK_GAME) $(DEPENDS)
 	$(MERGE) $(BOOTFILE_COVDG_COCOLINK_GAME)>$@
 
+bootfile_covga_cocolink_game: $(BOOTFILE_COVGA_COCOLINK_GAME) $(DEPENDS)
+	$(MERGE) $(BOOTFILE_COVGA_COCOLINK_GAME)>$@
+
 bootfile_covdg_directmodempak_game: $(BOOTFILE_COVDG_DIRECTMODEMPAK_GAME) $(DEPENDS)
 	$(MERGE) $(BOOTFILE_COVDG_DIRECTMODEMPAK_GAME)>$@
 
+bootfile_covga_directmodempak_game: $(BOOTFILE_COVGA_DIRECTMODEMPAK_GAME) $(DEPENDS)
+	$(MERGE) $(BOOTFILE_COVGA_DIRECTMODEMPAK_GAME)>$@
+
 bootfile_covdg_arduino: $(BOOTFILE_COVDG_ARDUINO) $(DEPENDS)
 	$(MERGE) $(BOOTFILE_COVDG_ARDUINO)>$@
 
+bootfile_covga_arduino: $(BOOTFILE_COVGA_ARDUINO) $(DEPENDS)
+	$(MERGE) $(BOOTFILE_COVGA_ARDUINO)>$@
+
 bootfile_covdg_arduino_game: $(BOOTFILE_COVDG_ARDUINO_GAME) $(DEPENDS)
 	$(MERGE) $(BOOTFILE_COVDG_ARDUINO_GAME)>$@
 
+bootfile_covga_arduino_game: $(BOOTFILE_COVGA_ARDUINO_GAME) $(DEPENDS)
+	$(MERGE) $(BOOTFILE_COVGA_ARDUINO_GAME)>$@
+
 bootfile_covdg_cocosdc: $(BOOTFILE_COVDG_COCOSDC) $(DEPENDS)
 	$(MERGE) $(BOOTFILE_COVDG_COCOSDC)>$@
 
+bootfile_covga_cocosdc: $(BOOTFILE_COVGA_COCOSDC) $(DEPENDS)
+	$(MERGE) $(BOOTFILE_COVGA_COCOSDC)>$@
+
 bootfile_co42_cocosdc: $(BOOTFILE_CO42_COCOSDC) $(DEPENDS)
 	$(MERGE) $(BOOTFILE_CO42_COCOSDC)>$@
 
 bootfile_covdg_cocosdc_game: $(BOOTFILE_COVDG_COCOSDC_GAME) $(DEPENDS)
 	$(MERGE) $(BOOTFILE_COVDG_COCOSDC_GAME)>$@
 
+bootfile_covga_cocosdc_game: $(BOOTFILE_COVGA_COCOSDC_GAME) $(DEPENDS)
+	$(MERGE) $(BOOTFILE_COVGA_COCOSDC_GAME)>$@
+
 bootfile_cohr_ds80: $(BOOTFILE_COHR_DS80) $(DEPENDS)
 	$(MERGE) $(BOOTFILE_COHR_DS80)>$@
 
--- a/level1/coco1/makefile	Mon Mar 12 19:35:56 2018 -0500
+++ b/level1/coco1/makefile	Wed Mar 28 21:20:31 2018 -0500
@@ -8,10 +8,12 @@
 DISTRONAME	= NOS9_$(CPU)_L$(LEVEL)
 DISTROVER	= $(DISTRONAME)_$(NITROS9VER)_$(PORT)
 BOOTFILE_COVDG	= bootfiles/bootfile_covdg
+BOOTFILE_COVGA	= bootfiles/bootfile_covga
 BOOTFILE_COHR	= bootfiles/bootfile_cohr
 BOOTFILE_CO42	= bootfiles/bootfile_co42
 BOOTFILE_COWPRS	    = bootfiles/bootfile_cowprs
 BOOTFILE_COVDG_DS80	= bootfiles/bootfile_covdg_ds80
+BOOTFILE_COVGA_DS80	= bootfiles/bootfile_covga_ds80
 BOOTFILE_DW_HEADLESS	= bootfiles/bootfile_dw_headless
 BOOTFILE_BECKER_HEADLESS	= bootfiles/bootfile_becker_headless
 BOOTFILE_COCOLINK_HEADLESS	= bootfiles/bootfile_cocolink_headless
@@ -19,12 +21,19 @@
 BOOTFILE_DIRECTMODEMPAK_HEADLESS	= bootfiles/bootfile_directmodempak_headless
 BOOTFILE_ARDUINO_HEADLESS	= bootfiles/bootfile_arduino_headless
 BOOTFILE_COVDG_DW	= bootfiles/bootfile_covdg_dw
+BOOTFILE_COVGA_DW	= bootfiles/bootfile_covga_dw
 BOOTFILE_COVDG_BECKER	= bootfiles/bootfile_covdg_becker
+BOOTFILE_COVGA_BECKER	= bootfiles/bootfile_covga_becker
 BOOTFILE_COVDG_COCOLINK	= bootfiles/bootfile_covdg_cocolink
+BOOTFILE_COVGA_COCOLINK	= bootfiles/bootfile_covga_cocolink
 BOOTFILE_COVDG_RS232PAK	= bootfiles/bootfile_covdg_rs232pak
+BOOTFILE_COVGA_RS232PAK	= bootfiles/bootfile_covga_rs232pak
 BOOTFILE_COVDG_DIRECTMODEMPAK	= bootfiles/bootfile_covdg_directmodempak
+BOOTFILE_COVGA_DIRECTMODEMPAK	= bootfiles/bootfile_covga_directmodempak
 BOOTFILE_COVDG_ARDUINO	= bootfiles/bootfile_covdg_arduino
+BOOTFILE_COVGA_ARDUINO	= bootfiles/bootfile_covga_arduino
 BOOTFILE_COVDG_COCOSDC	= bootfiles/bootfile_covdg_cocosdc
+BOOTFILE_COVGA_COCOSDC	= bootfiles/bootfile_covga_cocosdc
 BOOTFILE_COHR_DS80	= bootfiles/bootfile_cohr_ds80
 BOOTFILE_CO42_DS80	= bootfiles/bootfile_co42_ds80
 BOOTFILE_COHR_DW	= bootfiles/bootfile_cohr_dw
@@ -65,45 +74,67 @@
 
 DSKDW           = $(DISTROVER)_dw.dsk
 LDSKDW          = $(DISTRONAME)_$(PORT)_dw.dsk
+DSKVGADW        = $(DISTROVER)_vga_dw.dsk
+LDSKVGADW       = $(DISTRONAME)_$(PORT)_vga_dw.dsk
 DSKDWHEADLESS   = $(DISTROVER)_dw_headless.dsk
 LDSKDWHEADLESS  = $(DISTRONAME)_$(PORT)_dw_headless.dsk
 DSK360K_1       = $(DISTROVER)_40d_1.dsk
 LDSK360K_1      = $(DISTRONAME)_$(PORT)_40d_1.dsk
+DSKVGA360K_1    = $(DISTROVER)_vga_40d_1.dsk
+LDSKVGA360K_1   = $(DISTRONAME)_$(PORT)_vga_40d_1.dsk
 DSK360K_2       = $(DISTROVER)_40d_2.dsk
 LDSK360K_2      = $(DISTRONAME)_$(PORT)_40d_2.dsk
 DSK720K         = $(DISTROVER)_80d.dsk
 LDSK720K        = $(DISTRONAME)_$(PORT)_80d.dsk
-DSKBECKER	= $(DISTROVER)_becker.dsk
-LDSKBECKER	= $(DISTRONAME)_$(PORT)_becker.dsk
-DSKCOCOLINK	= $(DISTROVER)_dw_cocolink.dsk
-LDSKCOCOLINK	= $(DISTRONAME)_$(PORT)_dw_cocolink.dsk
-DSKRS232PAK	= $(DISTROVER)_dw_rs232pak.dsk
-LDSKRS232PAK	= $(DISTRONAME)_$(PORT)_dw_rs232pak.dsk
-DSKDIRECTMODEMPAK	= $(DISTROVER)_dw_directmodempak.dsk
-LDSKDIRECTMODEMPAK	= $(DISTRONAME)_$(PORT)_dw_directmodempak.dsk
-DSKBECKERHEADLESS	= $(DISTROVER)_becker_headless.dsk
-LDSKBECKERHEADLESS	= $(DISTRONAME)_$(PORT)_becker_headless.dsk
-DSKRS232PAKHEADLESS	= $(DISTROVER)_dw_rs232pak_headless.dsk
+DSKVGA720K      = $(DISTROVER)_vga_80d.dsk
+LDSKVGA720K     = $(DISTRONAME)_$(PORT)_vga_80d.dsk
+DSKBECKER       = $(DISTROVER)_becker.dsk
+LDSKBECKER      = $(DISTRONAME)_$(PORT)_becker.dsk
+DSKVGABECKER    = $(DISTROVER)_vga_becker.dsk
+LDSKVGABECKER   = $(DISTRONAME)_$(PORT)_vga_becker.dsk
+DSKCOCOLINK     = $(DISTROVER)_dw_cocolink.dsk
+LDSKCOCOLINK    = $(DISTRONAME)_$(PORT)_dw_cocolink.dsk
+DSKVGACOCOLINK  = $(DISTROVER)_vga_dw_cocolink.dsk
+LDSKVGACOCOLINK = $(DISTRONAME)_$(PORT)_vga_dw_cocolink.dsk
+DSKRS232PAK     = $(DISTROVER)_dw_rs232pak.dsk
+LDSKRS232PAK    = $(DISTRONAME)_$(PORT)_dw_rs232pak.dsk
+DSKVGARS232PAK         = $(DISTROVER)_vga_dw_rs232pak.dsk
+LDSKVGARS232PAK        = $(DISTRONAME)_$(PORT)_vga_dw_rs232pak.dsk
+DSKDIRECTMODEMPAK      = $(DISTROVER)_dw_directmodempak.dsk
+LDSKDIRECTMODEMPAK     = $(DISTRONAME)_$(PORT)_dw_directmodempak.dsk
+DSKVGADIRECTMODEMPAK   = $(DISTROVER)_vga_dw_directmodempak.dsk
+LDSKVGADIRECTMODEMPAK  = $(DISTRONAME)_$(PORT)_vga_dw_directmodempak.dsk
+DSKBECKERHEADLESS   = $(DISTROVER)_becker_headless.dsk
+LDSKBECKERHEADLESS  = $(DISTRONAME)_$(PORT)_becker_headless.dsk
+DSKRS232PAKHEADLESS = $(DISTROVER)_dw_rs232pak_headless.dsk
 LDSKRS232PAKHEADLESS	= $(DISTRONAME)_$(PORT)_dw_rs232pak_headless.dsk
 DSKDIRECTMODEMPAKHEADLESS	= $(DISTROVER)_dw_directmodempak_headless.dsk
 LDSKDIRECTMODEMPAKHEADLESS	= $(DISTRONAME)_$(PORT)_dw_directmodempak_headless.dsk
 DSKARDUINO	= $(DISTROVER)_arduino.dsk
 LDSKARDUINO	= $(DISTRONAME)_$(PORT)_arduino.dsk
+DSKVGAARDUINO	= $(DISTROVER)_vga_arduino.dsk
+LDSKVGAARDUINO	= $(DISTRONAME)_$(PORT)_vga_arduino.dsk
 DSKARDUINOHEADLESS	= $(DISTROVER)_arduino_headless.dsk
 LDSKARDUINOHEADLESS	= $(DISTRONAME)_$(PORT)_arduino_headless.dsk
 DSKCOCOSDC	= $(DISTROVER)_cocosdc.dsk
 LDSKCOCOSDC	= $(DISTRONAME)_$(PORT)_cocosdc.dsk
+DSKVGACOCOSDC	= $(DISTROVER)_vga_cocosdc.dsk
+LDSKVGACOCOSDC	= $(DISTRONAME)_$(PORT)_vga_cocosdc.dsk
 
 DSKS		= $(DSKDW) $(DSKDWHEADLESS) $(DSKBECKER) $(DSKBECKERHEADLESS) \
 		$(DSKARDUINO) $(DSKARDUINOHEADLESS) $(DSK360K_1) $(DSK360K_2) \
 		$(DSK720K) $(DSKCOCOSDC) $(DSKRS232PAK) $(DSKDIRECTMODEMPAK) \
 		$(DSKRS232PAKHEADLESS) $(DSKDIRECTMODEMPAKHEADLESS) \
-		$(DSKCOCOLINK)
+		$(DSKCOCOLINK) $(DSKVGA360K_1) $(DSKVGA720K) $(DSKVGACOCOLINK) \
+		$(DSKVGARS232PAK) $(DSKVGADIRECTMODEMPAK) $(DSKVGAARDUINO) \
+		$(DSKVGACOCOSDC) $(DSKVGADW)
 LDSKS		= $(LDSKDW) $(LDSKDWHEADLESS) $(LDSKBECKER) $(LDSKBECKERHEADLESS) \
 		$(LDSKARDUINO) $(LDSKARDUINOHEADLESS) $(LDSK360K_1) $(LDSK360K_2) \
 		$(LDSK720K) $(LDSKCOCOSDC) $(LDSKRS232PAK) $(LDSKDIRECTMODEMPAK) \
 		$(LDSKRS232PAKHEADLESS) $(LDSKDIRECTMODEMPAKHEADLESS) \
-		$(LDSKCOCOLINK)
+		$(LDSKCOCOLINK) $(LDSKVGA360K_1) $(LDSKVGA720K) $(LDSKVGACOCOLINK) \
+		$(LDSKVGARS232PAK) $(LDSKVGADIRECTMODEMPAK) $(LDSKVGAARDUINO) \
+		$(LDSKVGACOCOSDC) $(LDSKVGADW)
 
 # Make all components
 all:
@@ -180,6 +211,60 @@
 	$(RM) $(LDSKDW)
 	$(SOFTLINK) $@ $(LDSKDW)
 
+$(DSKVGADW):
+	$(RM) $@
+	$(OS9FORMAT_DW) -q $@ -n"NitrOS-9/$(CPU) Level $(LEVEL)"
+	$(OS9GEN) $@ -b=$(BOOTFILE_COVGA_DW) -t=$(KERNELFILE_DW)
+	$(MAKDIR) $@,CMDS
+	$(MAKDIR) $@,SYS
+	$(MAKDIR) $@,DEFS
+	$(MAKDIR) $@,WWWROOT
+	$(CD) cmds; $(OS9COPY) $(sort $(CMDS_DW) $(CMDS_D2)) ../$@,CMDS
+	$(OS9ATTR_EXEC) $(foreach file,$(sort $(CMDS_DW) $(CMDS_D2)),$@,CMDS/$(file))
+	$(OS9RENAME) $@,CMDS/$(WHICHSHELL) shell
+	$(CD) sys; $(CPL) $(SYS) ../$@,SYS
+	$(OS9ATTR_TEXT) $(foreach file,$(SYS),$@,SYS/$(file))
+	$(CD) wwwroot; $(OS9COPY) $(WWWROOT) ../$@,WWWROOT
+	$(OS9ATTR_TEXT) $(foreach file,$(WWWROOT),$@,WWWROOT/$(file))
+	$(CD) defs; $(CPL) $(DEFS) ../$@,DEFS
+	$(OS9ATTR_TEXT) $(foreach file,$(DEFS),$@,DEFS/$(file))
+	$(CPL) $(STARTUP_DW) $@,startup
+	$(OS9ATTR_TEXT) $@,startup
+	$(MAKDIR) $@,NITROS9
+	$(MAKDIR) $@,NITROS9/$(DISTRO)
+	$(MAKDIR) $@,NITROS9/$(DISTRO)/CMDS
+	$(CD) cmds; $(OS9COPY) $(MODULECMDS) ../$@,NITROS9/$(DISTRO)/CMDS
+	$(OS9ATTR_EXEC) $(foreach file,$(MODULECMDS),$@,NITROS9/$(DISTRO)/CMDS/$(file))
+	$(OS9RENAME) $@,NITROS9/$(DISTRO)/CMDS/$(WHICHSHELL) shell
+	$(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES
+	$(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/BOOTTRACK
+	$(CD) modules; $(OS9COPY) $(BOOTTRACK) ../$@,NITROS9/$(DISTRO)/MODULES/BOOTTRACK
+	$(OS9ATTR_EXEC) $(foreach file,$(BOOTTRACK),$@,NITROS9/$(DISTRO)/MODULES/BOOTTRACK/$(file))
+	$(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/KERNEL
+	$(CD) modules; $(OS9COPY) $(KERNEL) ../$@,NITROS9/$(DISTRO)/MODULES/KERNEL
+	$(OS9ATTR_EXEC) $(foreach file,$(KERNEL),$@,NITROS9/$(DISTRO)/MODULES/KERNEL/$(file))
+	$(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/SYSMODS
+	$(CD) modules; $(OS9COPY) $(SYSMODS) ../$@,NITROS9/$(DISTRO)/MODULES/SYSMODS
+	$(OS9ATTR_EXEC) $(foreach file,$(SYSMODS),$@,NITROS9/$(DISTRO)/MODULES/SYSMODS/$(file))
+	$(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/CLOCKS
+	$(CD) modules; $(OS9COPY) $(CLOCKS) ../$@,NITROS9/$(DISTRO)/MODULES/CLOCKS
+	$(OS9ATTR_EXEC) $(foreach file,$(CLOCKS),$@,NITROS9/$(DISTRO)/MODULES/CLOCKS/$(file))
+	$(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/RBF
+	$(CD) modules; $(OS9COPY) $(RBF) ../$@,NITROS9/$(DISTRO)/MODULES/RBF
+	$(OS9ATTR_EXEC) $(foreach file,$(RBF),$@,NITROS9/$(DISTRO)/MODULES/RBF/$(file))
+	$(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/SCF
+	$(CD) modules; $(OS9COPY) $(SCF) ../$@,NITROS9/$(DISTRO)/MODULES/SCF
+	$(OS9ATTR_EXEC) $(foreach file,$(SCF),$@,NITROS9/$(DISTRO)/MODULES/SCF/$(file))
+	$(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/PIPE
+	$(CD) modules; $(OS9COPY) $(PIPE) ../$@,NITROS9/$(DISTRO)/MODULES/PIPE
+	$(OS9ATTR_EXEC) $(foreach file,$(PIPE),$@,NITROS9/$(DISTRO)/MODULES/PIPE/$(file))
+	$(MAKDIR) $@,NITROS9/$(DISTRO)/BOOTLISTS
+	$(CD) bootlists; $(CPL) *.bl ../$@,NITROS9/$(DISTRO)/BOOTLISTS
+	$(MAKDIR) $@,NITROS9/$(DISTRO)/SCRIPTS
+	$(CD) scripts; $(CPL) mb* ../$@,NITROS9/$(DISTRO)/SCRIPTS
+	$(RM) $(LDSKVGADW)
+	$(SOFTLINK) $@ $(LDSKVGADW)
+
 $(DSKBECKER):
 	$(RM) $@
 	$(OS9FORMAT_DW) -q $@ -n"NitrOS-9/$(CPU) Level $(LEVEL)"
@@ -288,6 +373,60 @@
 	$(RM) $(LDSKCOCOLINK)
 	$(SOFTLINK) $@ $(LDSKCOCOLINK)
 
+$(DSKVGACOCOLINK):
+	$(RM) $@
+	$(OS9FORMAT_DW) -q $@ -n"NitrOS-9/$(CPU) Level $(LEVEL)"
+	$(OS9GEN) $@ -b=$(BOOTFILE_COVGA_COCOLINK) -t=$(KERNELFILE_COCOLINK)
+	$(MAKDIR) $@,CMDS
+	$(MAKDIR) $@,SYS
+	$(MAKDIR) $@,DEFS
+	$(MAKDIR) $@,WWWROOT
+	$(CD) cmds; $(OS9COPY) $(sort $(CMDS_DW) $(CMDS_D2)) ../$@,CMDS
+	$(OS9ATTR_EXEC) $(foreach file,$(sort $(CMDS_DW) $(CMDS_D2)),$@,CMDS/$(file))
+	$(OS9RENAME) $@,CMDS/$(WHICHSHELL) shell
+	$(CD) sys; $(CPL) $(SYS) ../$@,SYS
+	$(OS9ATTR_TEXT) $(foreach file,$(SYS),$@,SYS/$(file))
+	$(CD) wwwroot; $(OS9COPY) $(WWWROOT) ../$@,WWWROOT
+	$(OS9ATTR_TEXT) $(foreach file,$(WWWROOT),$@,WWWROOT/$(file))
+	$(CD) defs; $(CPL) $(DEFS) ../$@,DEFS
+	$(OS9ATTR_TEXT) $(foreach file,$(DEFS),$@,DEFS/$(file))
+	$(CPL) $(STARTUP_DW) $@,startup
+	$(OS9ATTR_TEXT) $@,startup
+	$(MAKDIR) $@,NITROS9
+	$(MAKDIR) $@,NITROS9/$(DISTRO)
+	$(MAKDIR) $@,NITROS9/$(DISTRO)/CMDS
+	$(CD) cmds; $(OS9COPY) $(MODULECMDS) ../$@,NITROS9/$(DISTRO)/CMDS
+	$(OS9ATTR_EXEC) $(foreach file,$(MODULECMDS),$@,NITROS9/$(DISTRO)/CMDS/$(file))
+	$(OS9RENAME) $@,NITROS9/$(DISTRO)/CMDS/$(WHICHSHELL) shell
+	$(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES
+	$(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/BOOTTRACK
+	$(CD) modules; $(OS9COPY) $(BOOTTRACK) ../$@,NITROS9/$(DISTRO)/MODULES/BOOTTRACK
+	$(OS9ATTR_EXEC) $(foreach file,$(BOOTTRACK),$@,NITROS9/$(DISTRO)/MODULES/BOOTTRACK/$(file))
+	$(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/KERNEL
+	$(CD) modules; $(OS9COPY) $(KERNEL) ../$@,NITROS9/$(DISTRO)/MODULES/KERNEL
+	$(OS9ATTR_EXEC) $(foreach file,$(KERNEL),$@,NITROS9/$(DISTRO)/MODULES/KERNEL/$(file))
+	$(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/SYSMODS
+	$(CD) modules; $(OS9COPY) $(SYSMODS) ../$@,NITROS9/$(DISTRO)/MODULES/SYSMODS
+	$(OS9ATTR_EXEC) $(foreach file,$(SYSMODS),$@,NITROS9/$(DISTRO)/MODULES/SYSMODS/$(file))
+	$(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/CLOCKS
+	$(CD) modules; $(OS9COPY) $(CLOCKS) ../$@,NITROS9/$(DISTRO)/MODULES/CLOCKS
+	$(OS9ATTR_EXEC) $(foreach file,$(CLOCKS),$@,NITROS9/$(DISTRO)/MODULES/CLOCKS/$(file))
+	$(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/RBF
+	$(CD) modules; $(OS9COPY) $(RBF) ../$@,NITROS9/$(DISTRO)/MODULES/RBF
+	$(OS9ATTR_EXEC) $(foreach file,$(RBF),$@,NITROS9/$(DISTRO)/MODULES/RBF/$(file))
+	$(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/SCF
+	$(CD) modules; $(OS9COPY) $(SCF) ../$@,NITROS9/$(DISTRO)/MODULES/SCF
+	$(OS9ATTR_EXEC) $(foreach file,$(SCF),$@,NITROS9/$(DISTRO)/MODULES/SCF/$(file))
+	$(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/PIPE
+	$(CD) modules; $(OS9COPY) $(PIPE) ../$@,NITROS9/$(DISTRO)/MODULES/PIPE
+	$(OS9ATTR_EXEC) $(foreach file,$(PIPE),$@,NITROS9/$(DISTRO)/MODULES/PIPE/$(file))
+	$(MAKDIR) $@,NITROS9/$(DISTRO)/BOOTLISTS
+	$(CD) bootlists; $(CPL) *.bl ../$@,NITROS9/$(DISTRO)/BOOTLISTS
+	$(MAKDIR) $@,NITROS9/$(DISTRO)/SCRIPTS
+	$(CD) scripts; $(CPL) mb* ../$@,NITROS9/$(DISTRO)/SCRIPTS
+	$(RM) $(LDSKVGACOCOLINK)
+	$(SOFTLINK) $@ $(LDSKVGACOCOLINK)
+
 $(DSKRS232PAK):
 	$(RM) $@
 	$(OS9FORMAT_DW) -q $@ -n"NitrOS-9/$(CPU) Level $(LEVEL)"
@@ -342,6 +481,60 @@
 	$(RM) $(LDSKRS232PAK)
 	$(SOFTLINK) $@ $(LDSKRS232PAK)
 
+$(DSKVGARS232PAK):
+	$(RM) $@
+	$(OS9FORMAT_DW) -q $@ -n"NitrOS-9/$(CPU) Level $(LEVEL)"
+	$(OS9GEN) $@ -b=$(BOOTFILE_COVGA_RS232PAK) -t=$(KERNELFILE_RS232PAK)
+	$(MAKDIR) $@,CMDS
+	$(MAKDIR) $@,SYS
+	$(MAKDIR) $@,DEFS
+	$(MAKDIR) $@,WWWROOT
+	$(CD) cmds; $(OS9COPY) $(sort $(CMDS_DW) $(CMDS_D2)) ../$@,CMDS
+	$(OS9ATTR_EXEC) $(foreach file,$(sort $(CMDS_DW) $(CMDS_D2)),$@,CMDS/$(file))
+	$(OS9RENAME) $@,CMDS/$(WHICHSHELL) shell
+	$(CD) sys; $(CPL) $(SYS) ../$@,SYS
+	$(OS9ATTR_TEXT) $(foreach file,$(SYS),$@,SYS/$(file))
+	$(CD) wwwroot; $(OS9COPY) $(WWWROOT) ../$@,WWWROOT
+	$(OS9ATTR_TEXT) $(foreach file,$(WWWROOT),$@,WWWROOT/$(file))
+	$(CD) defs; $(CPL) $(DEFS) ../$@,DEFS
+	$(OS9ATTR_TEXT) $(foreach file,$(DEFS),$@,DEFS/$(file))
+	$(CPL) $(STARTUP_DW) $@,startup
+	$(OS9ATTR_TEXT) $@,startup
+	$(MAKDIR) $@,NITROS9
+	$(MAKDIR) $@,NITROS9/$(DISTRO)
+	$(MAKDIR) $@,NITROS9/$(DISTRO)/CMDS
+	$(CD) cmds; $(OS9COPY) $(MODULECMDS) ../$@,NITROS9/$(DISTRO)/CMDS
+	$(OS9ATTR_EXEC) $(foreach file,$(MODULECMDS),$@,NITROS9/$(DISTRO)/CMDS/$(file))
+	$(OS9RENAME) $@,NITROS9/$(DISTRO)/CMDS/$(WHICHSHELL) shell
+	$(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES
+	$(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/BOOTTRACK
+	$(CD) modules; $(OS9COPY) $(BOOTTRACK) ../$@,NITROS9/$(DISTRO)/MODULES/BOOTTRACK
+	$(OS9ATTR_EXEC) $(foreach file,$(BOOTTRACK),$@,NITROS9/$(DISTRO)/MODULES/BOOTTRACK/$(file))
+	$(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/KERNEL
+	$(CD) modules; $(OS9COPY) $(KERNEL) ../$@,NITROS9/$(DISTRO)/MODULES/KERNEL
+	$(OS9ATTR_EXEC) $(foreach file,$(KERNEL),$@,NITROS9/$(DISTRO)/MODULES/KERNEL/$(file))
+	$(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/SYSMODS
+	$(CD) modules; $(OS9COPY) $(SYSMODS) ../$@,NITROS9/$(DISTRO)/MODULES/SYSMODS
+	$(OS9ATTR_EXEC) $(foreach file,$(SYSMODS),$@,NITROS9/$(DISTRO)/MODULES/SYSMODS/$(file))
+	$(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/CLOCKS
+	$(CD) modules; $(OS9COPY) $(CLOCKS) ../$@,NITROS9/$(DISTRO)/MODULES/CLOCKS
+	$(OS9ATTR_EXEC) $(foreach file,$(CLOCKS),$@,NITROS9/$(DISTRO)/MODULES/CLOCKS/$(file))
+	$(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/RBF
+	$(CD) modules; $(OS9COPY) $(RBF) ../$@,NITROS9/$(DISTRO)/MODULES/RBF
+	$(OS9ATTR_EXEC) $(foreach file,$(RBF),$@,NITROS9/$(DISTRO)/MODULES/RBF/$(file))
+	$(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/SCF
+	$(CD) modules; $(OS9COPY) $(SCF) ../$@,NITROS9/$(DISTRO)/MODULES/SCF
+	$(OS9ATTR_EXEC) $(foreach file,$(SCF),$@,NITROS9/$(DISTRO)/MODULES/SCF/$(file))
+	$(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/PIPE
+	$(CD) modules; $(OS9COPY) $(PIPE) ../$@,NITROS9/$(DISTRO)/MODULES/PIPE
+	$(OS9ATTR_EXEC) $(foreach file,$(PIPE),$@,NITROS9/$(DISTRO)/MODULES/PIPE/$(file))
+	$(MAKDIR) $@,NITROS9/$(DISTRO)/BOOTLISTS
+	$(CD) bootlists; $(CPL) *.bl ../$@,NITROS9/$(DISTRO)/BOOTLISTS
+	$(MAKDIR) $@,NITROS9/$(DISTRO)/SCRIPTS
+	$(CD) scripts; $(CPL) mb* ../$@,NITROS9/$(DISTRO)/SCRIPTS
+	$(RM) $(LDSKVGARS232PAK)
+	$(SOFTLINK) $@ $(LDSKVGARS232PAK)
+
 $(DSKDIRECTMODEMPAK):
 	$(RM) $@
 	$(OS9FORMAT_DW) -q $@ -n"NitrOS-9/$(CPU) Level $(LEVEL)"
@@ -396,6 +589,60 @@
 	$(RM) $(LDSKDIRECTMODEMPAK)
 	$(SOFTLINK) $@ $(LDSKDIRECTMODEMPAK)
 
+$(DSKVGADIRECTMODEMPAK):
+	$(RM) $@
+	$(OS9FORMAT_DW) -q $@ -n"NitrOS-9/$(CPU) Level $(LEVEL)"
+	$(OS9GEN) $@ -b=$(BOOTFILE_COVGA_DIRECTMODEMPAK) -t=$(KERNELFILE_DIRECTMODEMPAK)
+	$(MAKDIR) $@,CMDS
+	$(MAKDIR) $@,SYS
+	$(MAKDIR) $@,DEFS
+	$(MAKDIR) $@,WWWROOT
+	$(CD) cmds; $(OS9COPY) $(sort $(CMDS_DW) $(CMDS_D2)) ../$@,CMDS
+	$(OS9ATTR_EXEC) $(foreach file,$(sort $(CMDS_DW) $(CMDS_D2)),$@,CMDS/$(file))
+	$(OS9RENAME) $@,CMDS/$(WHICHSHELL) shell
+	$(CD) sys; $(CPL) $(SYS) ../$@,SYS
+	$(OS9ATTR_TEXT) $(foreach file,$(SYS),$@,SYS/$(file))
+	$(CD) wwwroot; $(OS9COPY) $(WWWROOT) ../$@,WWWROOT
+	$(OS9ATTR_TEXT) $(foreach file,$(WWWROOT),$@,WWWROOT/$(file))
+	$(CD) defs; $(CPL) $(DEFS) ../$@,DEFS
+	$(OS9ATTR_TEXT) $(foreach file,$(DEFS),$@,DEFS/$(file))
+	$(CPL) $(STARTUP_DW) $@,startup
+	$(OS9ATTR_TEXT) $@,startup
+	$(MAKDIR) $@,NITROS9
+	$(MAKDIR) $@,NITROS9/$(DISTRO)
+	$(MAKDIR) $@,NITROS9/$(DISTRO)/CMDS
+	$(CD) cmds; $(OS9COPY) $(MODULECMDS) ../$@,NITROS9/$(DISTRO)/CMDS
+	$(OS9ATTR_EXEC) $(foreach file,$(MODULECMDS),$@,NITROS9/$(DISTRO)/CMDS/$(file))
+	$(OS9RENAME) $@,NITROS9/$(DISTRO)/CMDS/$(WHICHSHELL) shell
+	$(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES
+	$(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/BOOTTRACK
+	$(CD) modules; $(OS9COPY) $(BOOTTRACK) ../$@,NITROS9/$(DISTRO)/MODULES/BOOTTRACK
+	$(OS9ATTR_EXEC) $(foreach file,$(BOOTTRACK),$@,NITROS9/$(DISTRO)/MODULES/BOOTTRACK/$(file))
+	$(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/KERNEL
+	$(CD) modules; $(OS9COPY) $(KERNEL) ../$@,NITROS9/$(DISTRO)/MODULES/KERNEL
+	$(OS9ATTR_EXEC) $(foreach file,$(KERNEL),$@,NITROS9/$(DISTRO)/MODULES/KERNEL/$(file))
+	$(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/SYSMODS
+	$(CD) modules; $(OS9COPY) $(SYSMODS) ../$@,NITROS9/$(DISTRO)/MODULES/SYSMODS
+	$(OS9ATTR_EXEC) $(foreach file,$(SYSMODS),$@,NITROS9/$(DISTRO)/MODULES/SYSMODS/$(file))
+	$(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/CLOCKS
+	$(CD) modules; $(OS9COPY) $(CLOCKS) ../$@,NITROS9/$(DISTRO)/MODULES/CLOCKS
+	$(OS9ATTR_EXEC) $(foreach file,$(CLOCKS),$@,NITROS9/$(DISTRO)/MODULES/CLOCKS/$(file))
+	$(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/RBF
+	$(CD) modules; $(OS9COPY) $(RBF) ../$@,NITROS9/$(DISTRO)/MODULES/RBF
+	$(OS9ATTR_EXEC) $(foreach file,$(RBF),$@,NITROS9/$(DISTRO)/MODULES/RBF/$(file))
+	$(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/SCF
+	$(CD) modules; $(OS9COPY) $(SCF) ../$@,NITROS9/$(DISTRO)/MODULES/SCF
+	$(OS9ATTR_EXEC) $(foreach file,$(SCF),$@,NITROS9/$(DISTRO)/MODULES/SCF/$(file))
+	$(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/PIPE
+	$(CD) modules; $(OS9COPY) $(PIPE) ../$@,NITROS9/$(DISTRO)/MODULES/PIPE
+	$(OS9ATTR_EXEC) $(foreach file,$(PIPE),$@,NITROS9/$(DISTRO)/MODULES/PIPE/$(file))
+	$(MAKDIR) $@,NITROS9/$(DISTRO)/BOOTLISTS
+	$(CD) bootlists; $(CPL) *.bl ../$@,NITROS9/$(DISTRO)/BOOTLISTS
+	$(MAKDIR) $@,NITROS9/$(DISTRO)/SCRIPTS
+	$(CD) scripts; $(CPL) mb* ../$@,NITROS9/$(DISTRO)/SCRIPTS
+	$(RM) $(LDSKVGADIRECTMODEMPAK)
+	$(SOFTLINK) $@ $(LDSKVGADIRECTMODEMPAK)
+
 $(DSKARDUINO):
 	$(RM) $@
 	$(OS9FORMAT_DW) -q $@ -n"NitrOS-9/$(CPU) Level $(LEVEL)"
@@ -450,6 +697,60 @@
 	$(RM) $(LDSKARDUINO)
 	$(SOFTLINK) $@ $(LDSKARDUINO)
 
+$(DSKVGAARDUINO):
+	$(RM) $@
+	$(OS9FORMAT_DW) -q $@ -n"NitrOS-9/$(CPU) Level $(LEVEL)"
+	$(OS9GEN) $@ -b=$(BOOTFILE_COVGA_ARDUINO) -t=$(KERNELFILE_ARDUINO)
+	$(MAKDIR) $@,CMDS
+	$(MAKDIR) $@,SYS
+	$(MAKDIR) $@,DEFS
+	$(MAKDIR) $@,WWWROOT
+	$(CD) cmds; $(OS9COPY) $(sort $(CMDS_DW) $(CMDS_D2)) ../$@,CMDS
+	$(OS9ATTR_EXEC) $(foreach file,$(sort $(CMDS_DW) $(CMDS_D2)),$@,CMDS/$(file))
+	$(OS9RENAME) $@,CMDS/$(WHICHSHELL) shell
+	$(CD) sys; $(CPL) $(SYS) ../$@,SYS
+	$(OS9ATTR_TEXT) $(foreach file,$(SYS),$@,SYS/$(file))
+	$(CD) wwwroot; $(OS9COPY) $(WWWROOT) ../$@,WWWROOT
+	$(OS9ATTR_TEXT) $(foreach file,$(WWWROOT),$@,WWWROOT/$(file))
+	$(CD) defs; $(CPL) $(DEFS) ../$@,DEFS
+	$(OS9ATTR_TEXT) $(foreach file,$(DEFS),$@,DEFS/$(file))
+	$(CPL) $(STARTUP_DW) $@,startup
+	$(OS9ATTR_TEXT) $@,startup
+	$(MAKDIR) $@,NITROS9
+	$(MAKDIR) $@,NITROS9/$(DISTRO)
+	$(MAKDIR) $@,NITROS9/$(DISTRO)/CMDS
+	$(CD) cmds; $(OS9COPY) $(MODULECMDS) ../$@,NITROS9/$(DISTRO)/CMDS
+	$(OS9ATTR_EXEC) $(foreach file,$(MODULECMDS),$@,NITROS9/$(DISTRO)/CMDS/$(file))
+	$(OS9RENAME) $@,NITROS9/$(DISTRO)/CMDS/$(WHICHSHELL) shell
+	$(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES
+	$(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/BOOTTRACK
+	$(CD) modules; $(OS9COPY) $(BOOTTRACK) ../$@,NITROS9/$(DISTRO)/MODULES/BOOTTRACK
+	$(OS9ATTR_EXEC) $(foreach file,$(BOOTTRACK),$@,NITROS9/$(DISTRO)/MODULES/BOOTTRACK/$(file))
+	$(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/KERNEL
+	$(CD) modules; $(OS9COPY) $(KERNEL) ../$@,NITROS9/$(DISTRO)/MODULES/KERNEL
+	$(OS9ATTR_EXEC) $(foreach file,$(KERNEL),$@,NITROS9/$(DISTRO)/MODULES/KERNEL/$(file))
+	$(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/SYSMODS
+	$(CD) modules; $(OS9COPY) $(SYSMODS) ../$@,NITROS9/$(DISTRO)/MODULES/SYSMODS
+	$(OS9ATTR_EXEC) $(foreach file,$(SYSMODS),$@,NITROS9/$(DISTRO)/MODULES/SYSMODS/$(file))
+	$(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/CLOCKS
+	$(CD) modules; $(OS9COPY) $(CLOCKS) ../$@,NITROS9/$(DISTRO)/MODULES/CLOCKS
+	$(OS9ATTR_EXEC) $(foreach file,$(CLOCKS),$@,NITROS9/$(DISTRO)/MODULES/CLOCKS/$(file))
+	$(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/RBF
+	$(CD) modules; $(OS9COPY) $(RBF) ../$@,NITROS9/$(DISTRO)/MODULES/RBF
+	$(OS9ATTR_EXEC) $(foreach file,$(RBF),$@,NITROS9/$(DISTRO)/MODULES/RBF/$(file))
+	$(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/SCF
+	$(CD) modules; $(OS9COPY) $(SCF) ../$@,NITROS9/$(DISTRO)/MODULES/SCF
+	$(OS9ATTR_EXEC) $(foreach file,$(SCF),$@,NITROS9/$(DISTRO)/MODULES/SCF/$(file))
+	$(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/PIPE
+	$(CD) modules; $(OS9COPY) $(PIPE) ../$@,NITROS9/$(DISTRO)/MODULES/PIPE
+	$(OS9ATTR_EXEC) $(foreach file,$(PIPE),$@,NITROS9/$(DISTRO)/MODULES/PIPE/$(file))
+	$(MAKDIR) $@,NITROS9/$(DISTRO)/BOOTLISTS
+	$(CD) bootlists; $(CPL) *.bl ../$@,NITROS9/$(DISTRO)/BOOTLISTS
+	$(MAKDIR) $@,NITROS9/$(DISTRO)/SCRIPTS
+	$(CD) scripts; $(CPL) mb* ../$@,NITROS9/$(DISTRO)/SCRIPTS
+	$(RM) $(LDSKVGAARDUINO)
+	$(SOFTLINK) $@ $(LDSKVGAARDUINO)
+
 $(DSKCOCOSDC):
 	$(RM) $@
 	$(OS9FORMAT) -t1024 -q $@ -n"NitrOS-9/$(CPU) Level $(LEVEL)"
@@ -504,6 +805,60 @@
 	$(RM) $(LDSKCOCOSDC)
 	$(SOFTLINK) $@ $(LDSKCOCOSDC)
 
+$(DSKVGACOCOSDC):
+	$(RM) $@
+	$(OS9FORMAT) -t1024 -q $@ -n"NitrOS-9/$(CPU) Level $(LEVEL)"
+	$(OS9GEN) $@ -b=$(BOOTFILE_COVGA_COCOSDC) -t=$(KERNELFILE_COCOSDC)
+	$(MAKDIR) $@,CMDS
+	$(MAKDIR) $@,SYS
+	$(MAKDIR) $@,DEFS
+	$(MAKDIR) $@,WWWROOT
+	$(CD) cmds; $(OS9COPY) $(sort $(CMDS_DW) $(CMDS_D2)) ../$@,CMDS
+	$(OS9ATTR_EXEC) $(foreach file,$(sort $(CMDS_DW) $(CMDS_D2)),$@,CMDS/$(file))
+	$(OS9RENAME) $@,CMDS/$(WHICHSHELL) shell
+	$(CD) sys; $(CPL) $(SYS) ../$@,SYS
+	$(OS9ATTR_TEXT) $(foreach file,$(SYS),$@,SYS/$(file))
+	$(CD) wwwroot; $(OS9COPY) $(WWWROOT) ../$@,WWWROOT
+	$(OS9ATTR_TEXT) $(foreach file,$(WWWROOT),$@,WWWROOT/$(file))
+	$(CD) defs; $(CPL) $(DEFS) ../$@,DEFS
+	$(OS9ATTR_TEXT) $(foreach file,$(DEFS),$@,DEFS/$(file))
+	$(CPL) $(STARTUP_DW) $@,startup
+	$(OS9ATTR_TEXT) $@,startup
+	$(MAKDIR) $@,NITROS9
+	$(MAKDIR) $@,NITROS9/$(DISTRO)
+	$(MAKDIR) $@,NITROS9/$(DISTRO)/CMDS
+	$(CD) cmds; $(OS9COPY) $(MODULECMDS) ../$@,NITROS9/$(DISTRO)/CMDS
+	$(OS9ATTR_EXEC) $(foreach file,$(MODULECMDS),$@,NITROS9/$(DISTRO)/CMDS/$(file))
+	$(OS9RENAME) $@,NITROS9/$(DISTRO)/CMDS/$(WHICHSHELL) shell
+	$(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES
+	$(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/BOOTTRACK
+	$(CD) modules; $(OS9COPY) $(BOOTTRACK) ../$@,NITROS9/$(DISTRO)/MODULES/BOOTTRACK
+	$(OS9ATTR_EXEC) $(foreach file,$(BOOTTRACK),$@,NITROS9/$(DISTRO)/MODULES/BOOTTRACK/$(file))
+	$(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/KERNEL
+	$(CD) modules; $(OS9COPY) $(KERNEL) ../$@,NITROS9/$(DISTRO)/MODULES/KERNEL
+	$(OS9ATTR_EXEC) $(foreach file,$(KERNEL),$@,NITROS9/$(DISTRO)/MODULES/KERNEL/$(file))
+	$(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/SYSMODS
+	$(CD) modules; $(OS9COPY) $(SYSMODS) ../$@,NITROS9/$(DISTRO)/MODULES/SYSMODS
+	$(OS9ATTR_EXEC) $(foreach file,$(SYSMODS),$@,NITROS9/$(DISTRO)/MODULES/SYSMODS/$(file))
+	$(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/CLOCKS
+	$(CD) modules; $(OS9COPY) $(CLOCKS) ../$@,NITROS9/$(DISTRO)/MODULES/CLOCKS
+	$(OS9ATTR_EXEC) $(foreach file,$(CLOCKS),$@,NITROS9/$(DISTRO)/MODULES/CLOCKS/$(file))
+	$(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/RBF
+	$(CD) modules; $(OS9COPY) $(RBF) ../$@,NITROS9/$(DISTRO)/MODULES/RBF
+	$(OS9ATTR_EXEC) $(foreach file,$(RBF),$@,NITROS9/$(DISTRO)/MODULES/RBF/$(file))
+	$(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/SCF
+	$(CD) modules; $(OS9COPY) $(SCF) ../$@,NITROS9/$(DISTRO)/MODULES/SCF
+	$(OS9ATTR_EXEC) $(foreach file,$(SCF),$@,NITROS9/$(DISTRO)/MODULES/SCF/$(file))
+	$(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/PIPE
+	$(CD) modules; $(OS9COPY) $(PIPE) ../$@,NITROS9/$(DISTRO)/MODULES/PIPE
+	$(OS9ATTR_EXEC) $(foreach file,$(PIPE),$@,NITROS9/$(DISTRO)/MODULES/PIPE/$(file))
+	$(MAKDIR) $@,NITROS9/$(DISTRO)/BOOTLISTS
+	$(CD) bootlists; $(CPL) *.bl ../$@,NITROS9/$(DISTRO)/BOOTLISTS
+	$(MAKDIR) $@,NITROS9/$(DISTRO)/SCRIPTS
+	$(CD) scripts; $(CPL) mb* ../$@,NITROS9/$(DISTRO)/SCRIPTS
+	$(RM) $(LDSKVGACOCOSDC)
+	$(SOFTLINK) $@ $(LDSKVGACOCOSDC)
+
 $(DSKDWHEADLESS):
 	$(RM) $@
 	$(OS9FORMAT_DW) -q $@ -n"NitrOS-9/$(CPU) Level $(LEVEL)"
@@ -793,6 +1148,25 @@
 	$(RM) $(LDSK360K_1)
 	$(SOFTLINK) $@ $(LDSK360K_1)
 
+$(DSKVGA360K_1):
+	$(RM) $@
+	$(OS9FORMAT_DS40) -q $@ -n"NitrOS-9/$(CPU) Level $(LEVEL) Disk 1"
+	$(OS9GEN) $@ -b=$(BOOTFILE_COVGA) -t=$(KERNELFILE)
+	$(MAKDIR) $@,CMDS
+	$(MAKDIR) $@,SYS
+	$(CD) cmds; $(OS9COPY) $(CMDS) ../$@,CMDS
+	$(OS9ATTR_EXEC) $(foreach file,$(CMDS),$@,CMDS/$(file))
+	$(OS9RENAME) $@,CMDS/$(WHICHSHELL) shell
+	$(CD) sys; $(CPL) $(SYS) ../$@,SYS
+	$(OS9ATTR_TEXT) $(foreach file,$(SYS),$@,SYS/$(file))
+	$(MAKDIR) $@,DEFS
+	$(CD) defs; $(CPL) $(DEFS) ../$@,DEFS
+	$(OS9ATTR_TEXT) $(foreach file,$(DEFS),$@,DEFS/$(file))
+	$(CPL) $(STARTUP) $@,startup
+	$(OS9ATTR_TEXT) $@,startup
+	$(RM) $(LDSKVGA360K_1)
+	$(SOFTLINK) $@ $(LDSKVGA360K_1)
+
 $(DSK360K_2):
 	$(RM) $@
 	$(OS9FORMAT_DS40) -q $@ -n"NitrOS-9/$(CPU) Level $(LEVEL) Disk 2"
@@ -885,6 +1259,57 @@
 	$(RM) $(LDSK720K)
 	$(SOFTLINK) $@ $(LDSK720K)
 
+$(DSKVGA720K):
+	$(RM) $@
+	$(OS9FORMAT_DS80) -q $@ -n"NitrOS-9/$(CPU) Level $(LEVEL)"
+	$(OS9GEN) $@ -b=$(BOOTFILE_COVGA_DS80) -t=$(KERNELFILE)
+	$(MAKDIR) $@,CMDS
+	$(MAKDIR) $@,SYS
+	$(MAKDIR) $@,DEFS
+	$(CD) cmds; $(OS9COPY) $(sort $(CMDS) $(CMDS_D2)) ../$@,CMDS
+	$(OS9ATTR_EXEC) $(foreach file,$(sort $(CMDS) $(CMDS_D2)),$@,CMDS/$(file))
+	$(OS9RENAME) $@,CMDS/$(WHICHSHELL) shell
+	$(CD) sys; $(CPL) $(SYS) ../$@,SYS
+	$(OS9ATTR_TEXT) $(foreach file,$(SYS),$@,SYS/$(file))
+	$(CD) defs; $(CPL) $(DEFS) ../$@,DEFS
+	$(OS9ATTR_TEXT) $(foreach file,$(DEFS),$@,DEFS/$(file))
+	$(CPL) $(STARTUP) $@,startup
+	$(OS9ATTR_TEXT) $@,startup
+	$(MAKDIR) $@,NITROS9
+	$(MAKDIR) $@,NITROS9/$(DISTRO)
+	$(MAKDIR) $@,NITROS9/$(DISTRO)/CMDS
+	$(CD) cmds; $(OS9COPY) $(MODULECMDS) ../$@,NITROS9/$(DISTRO)/CMDS
+	$(OS9ATTR_EXEC) $(foreach file,$(MODULECMDS),$@,NITROS9/$(DISTRO)/CMDS/$(file))
+	$(OS9RENAME) $@,NITROS9/$(DISTRO)/CMDS/$(WHICHSHELL) shell
+	$(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES
+	$(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/BOOTTRACK
+	$(CD) modules; $(OS9COPY) $(BOOTTRACK) ../$@,NITROS9/$(DISTRO)/MODULES/BOOTTRACK
+	$(OS9ATTR_EXEC) $(foreach file,$(BOOTTRACK),$@,NITROS9/$(DISTRO)/MODULES/BOOTTRACK/$(file))
+	$(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/KERNEL
+	$(CD) modules; $(OS9COPY) $(KERNEL) ../$@,NITROS9/$(DISTRO)/MODULES/KERNEL
+	$(OS9ATTR_EXEC) $(foreach file,$(KERNEL),$@,NITROS9/$(DISTRO)/MODULES/KERNEL/$(file))
+	$(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/SYSMODS
+	$(CD) modules; $(OS9COPY) $(SYSMODS) ../$@,NITROS9/$(DISTRO)/MODULES/SYSMODS
+	$(OS9ATTR_EXEC) $(foreach file,$(SYSMODS),$@,NITROS9/$(DISTRO)/MODULES/SYSMODS/$(file))
+	$(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/CLOCKS
+	$(CD) modules; $(OS9COPY) $(CLOCKS) ../$@,NITROS9/$(DISTRO)/MODULES/CLOCKS
+	$(OS9ATTR_EXEC) $(foreach file,$(CLOCKS),$@,NITROS9/$(DISTRO)/MODULES/CLOCKS/$(file))
+	$(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/RBF
+	$(CD) modules; $(OS9COPY) $(RBF) ../$@,NITROS9/$(DISTRO)/MODULES/RBF
+	$(OS9ATTR_EXEC) $(foreach file,$(RBF),$@,NITROS9/$(DISTRO)/MODULES/RBF/$(file))
+	$(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/SCF
+	$(CD) modules; $(OS9COPY) $(SCF) ../$@,NITROS9/$(DISTRO)/MODULES/SCF
+	$(OS9ATTR_EXEC) $(foreach file,$(SCF),$@,NITROS9/$(DISTRO)/MODULES/SCF/$(file))
+	$(MAKDIR) $@,NITROS9/$(DISTRO)/MODULES/PIPE
+	$(CD) modules; $(OS9COPY) $(PIPE) ../$@,NITROS9/$(DISTRO)/MODULES/PIPE
+	$(OS9ATTR_EXEC) $(foreach file,$(PIPE),$@,NITROS9/$(DISTRO)/MODULES/PIPE/$(file))
+	$(MAKDIR) $@,NITROS9/$(DISTRO)/BOOTLISTS
+	$(CD) bootlists; $(CPL) *.bl ../$@,NITROS9/$(DISTRO)/BOOTLISTS
+	$(MAKDIR) $@,NITROS9/$(DISTRO)/SCRIPTS
+	$(CD) scripts; $(CPL) mb* ../$@,NITROS9/$(DISTRO)/SCRIPTS
+	$(RM) $(LDSKVGA720K)
+	$(SOFTLINK) $@ $(LDSKVGA720K)
+
 info:
 	@$(ECHO) "*** NitrOS-9/$(CPU) Level $(LEVEL) for the $(MACHINE) ***"
 	@$(foreach dsk, $(DSKS), $(ECHO) $(dsk);)
--- a/level1/coco1/modules/makefile	Mon Mar 12 19:35:56 2018 -0500
+++ b/level1/coco1/modules/makefile	Wed Mar 28 21:20:31 2018 -0500
@@ -50,11 +50,11 @@
 		ddsd0_cocosdc.dd sd0_cocosdc.dd sd1_cocosdc.dd
 
 SCF		= scf.mn \
-		sc6551.dr vrn.dr scbbp.dr scbbt.dr scdwp.dr sspak.dr vtio.dr \
-		covdg.io cohr.io co42.io co80.io cowprs.io \
+		sc6551.dr vrn.dr scbbp.dr scbbt.dr scdwp.dr sspak.dr vtio.dr vtio_vga.dr \
+		covdg.io covga.io cohr.io co42.io co80.io cowprs.io \
 		nil.dd p_scbbp.dd p_scdwp.dd pipe.dd ssp.dd \
 		term_scbbt.dt term_sc6551.dt t1_scbbt.dd t2_sc6551.dd t3_sc6551.dd \
-		term_vdg.dt term_hr.dt term_42.dt term_80.dt term_wprs.dt \
+		term_vdg.dt term_vga.dt term_hr.dt term_42.dt term_80.dt term_wprs.dt \
 		scdwv.dr term_scdwv.dt n_scdwv.dd n1_scdwv.dd n2_scdwv.dd \
 		n3_scdwv.dd n4_scdwv.dd n5_scdwv.dd n6_scdwv.dd n7_scdwv.dd \
 		n8_scdwv.dd n9_scdwv.dd n10_scdwv.dd n11_scdwv.dd n12_scdwv.dd \
@@ -79,6 +79,12 @@
 
 # Special cases
 
+vtio_vga.dr: vtio.asm
+	$(AS) $(ASOUT)$@ $< $(AFLAGS) -DCOCOVGA=1
+
+covga.io: covdg.asm
+	$(AS) $(ASOUT)$@ $< $(AFLAGS) -DCOCOVGA=1
+
 rominfo_pak: rominfo.asm
 	$(AS) $(ASOUT)$@ $< $(AFLAGS) -DROMPak=1
 
@@ -213,6 +219,10 @@
 d2_80d.dd: rb1773desc.asm
 	$(AS) $< $(ASOUT)$@ $(AFLAGS) $(DSDD80) -DDNum=2
 
+# CoCoVGA SCF descriptors
+term_vga.dt: term_vdg.asm
+	$(AS) $< $(ASOUT)$@ $(AFLAGS) -DCOCOVGA=1
+
 # DriveWire 3 SCF descriptors
 term_scdwv.dt: scdwvdesc.asm
 	$(AS) $< $(ASOUT)$@ $(AFLAGS) -DAddr=0
--- a/level1/modules/covdg.asm	Mon Mar 12 19:35:56 2018 -0500
+++ b/level1/modules/covdg.asm	Wed Mar 28 21:20:31 2018 -0500
@@ -16,10 +16,12 @@
 * Added support for CoCoVGA 64x32 mode
 *
 *   2      2018/03/02  David Ladd
-*                      L. Curtis Boyle
+*        - 2018/03/24  L. Curtis Boyle
 * General optimizations, and support for new V.ClrBlk and V.CpyBlk
 *   vector calls (from VTIO) for either 6309 TFM for mini-stack blasting
 *   (4 bytes/chunk) for screen scroll and screen clears (full & partial)
+* Also, CoVGA support integrated/completed for 64x32 text mode, and SS.Cursr
+*   GetStat call bugs fixed (for both CoVGA and CoVDG)
 
          nam   CoVDG
          ttl   VDG Console Output Subroutine for VTIO
@@ -53,7 +55,7 @@
          fcb   $07 
 
 name     equ   *
-		IFNE	COVGA
+		IFNE	COCOVGA
          fcs   /CoVGA/
 		ELSE
          fcs   /CoVDG/
@@ -81,9 +83,9 @@
          stx   <V.ScrnA,u     save VDG screen memory
          pshs  y
          leay  -$0E,y
-         clra  
-         clrb  
-         jsr   [<V.DspVct,u]  display screen (routine in VTIO)
+         clra
+         clrb
+         jsr   [<V.DspVct,u]  display screen (SetDsply routine in VTIO) (Preserves X)
          puls  y
          stx   <V.CrsrA,u     save start cursor position
          leax  >COLSIZE*ROWSIZE,x   point to end of screen
@@ -96,10 +98,22 @@
 ***** START OF COCOVGA 64x32 MODE
          clr   <V.Caps,u      lowercase mode
          pshs  cc,u
-         orcc  #IntMasks
-         leax  VGASetup,pcr
-         ldu   <V.CrsrA,u
-         ldb   #VGASetupLen
+         orcc  #IntMasks      Shut off IRQ/FIRQ
+         ldx   #$FF03         Point to PIA
+         lda   ,x             Get current state of PIA
+         pshs  a              Save copy
+         lda   ,x             Now, force things necessary for CocoVGA to work
+         ora   #$04           ensure PIA 0B is NOT dir setting
+         sta   ,x
+         lda   ,x
+         anda  #$fd           vsync irq - trigger falling edge
+         sta   ,x
+         lda   ,x
+         ora   #$01           enable vsync IRQ
+         sta   ,x
+         leax  VGASetup,pcr   Point to set up values (9 of them)
+         ldu   <V.ScrnA,u     CoVGA requires are setup sequence to be at start of 512 byte boundary 
+         ldb   #VGASetupLen   This routine copies our 9 bytes to the start of the screen (Based on
 x@       lda   ,x+
          sta   ,u+
          decb
@@ -111,24 +125,29 @@
          lda   $FF02          clear vsync interrupt flag
 
 * PROGRAM THE COCOVGA COMBO LOCK
-BT13     lda   $FF22          GET CURRENT PIA VALUE
+BT13     ldx   #$FF22         Point to PIA
+         lda   ,x             GET CURRENT PIA VALUE
          tfr   A,B            COPY TO B REG TOO
          anda  #$07           MASK OFF BITS WE'LL CHANGE
          ora   #$90           SET COMBO LOCK 1 BITS
-         sta   $FF22          WRITE TO PIA FOR COCOVGA
+         sta   ,x             WRITE TO PIA FOR COCOVGA
          anda  #$07           CLEAR UPPER BITS
          ora   #$48           SET COMBO LOCK 2 BITS
-         sta   $FF22          WRITE TO PIA
+         sta   ,x             WRITE TO PIA
          anda  #$07           CLEAR UPPER BITS
          ora   #$A0           SET COMBO LOCK 3 BITS
-         sta   $FF22          WRITE TO PIA
+         sta   ,x             WRITE TO PIA
          anda  #$07           CLEAR UPPER BITS
          ora   #$F8           SET COMBO LOCK 4 BITS
-         sta   $FF22          WRITE TO PIA
+         sta   ,x             WRITE TO PIA
+         lda   ,x             get current PIA value
          anda  #$07           CLEAR UPPER BITS
 * 6809/6309 - Isn't this next line useless? It does not change any bits, ever
          ora   #$00           SET REGISTER BANK 0 FOR COCOVGA
-         sta   $FF22          WRITE TO PIA
+         sta   ,x             WRITE TO PIA
+         sta   $FFC0          clear SAM_V0  (Force SAM to text mode)
+         sta   $FFC2          clear SAM_V1
+         sta   $FFC4          clear SAM_V2
 
 * Wait for next VSYNC so CoCoVGA can process data from the current video page
 tlp@     lda   $FF03
@@ -136,24 +155,27 @@
 
 * Restore PIA state and return to text mode - restore original video mode, SAM page
 * VDG -> CG2:
-         lda   $FF22
+         lda   ,x
          anda  #$8F
          ora   #$A0
-         sta   $FF22
+         sta   ,x
 
 * SAM -> CG2:
          sta   $FFC0          clear GM0
          sta   $FFC3          set GM1
-         sta   $FFC4          clear GM2
+         sta   $FFC4          clear GM2 FFC4
+         puls  a
+         sta   $FF03          Restore PIA to original state
          puls  u,cc
 ***** END OF COCOVGA 64x32 MODE
      ENDC
          lbsr  ClrScrn        clear the screen
 * Setup page to
          ldb   <V.COLoad,u
-         orb   #ModCoVDG      set to CoVDG found (?)
+         orb   #MODFLAG       set to CoVDG found (?)
 L0086    stb   <V.COLoad,u
-         clrb  
+         clrb
+*The next line is only for testing to see where VGA is breaking
          puls  pc,y,x
 
      IFNE  COCOVGA
@@ -161,18 +183,17 @@
 VGASetup fcb   $00            Reset register
          fcb   $81            Edit mask
          fcb   $00            Reserved
-         fcb   $03            Font
-         fcb   $00            Artifact
-         fcb   $00            Extras
+         fcb   $03            Font (lowercase/t1 character set enabled)
+         fcb   $00            Artifact (off)
+         fcb   $00            Extras (off)
          fcb   $00            Reserved
          fcb   $00            Reserved
-         fcb   $02            Enhanced Modes
+         fcb   $02            Enhanced Modes (64 column enabled)
 VGASetupLen equ *-VGASetup
 ***** END OF COCOVGA 64x32 MODE         
      ENDC
 
-start    bra   Init
-         nop                  Can be used for a constant
+start    lbra  Init           Hopefully once we tighten INIT code, this can go back to BRA
          bra   Write
          nop                  Can be used for a constant
          lbra  GetStat
@@ -184,7 +205,7 @@
          os9   F$SRtMem       return to system
          puls  u              restore U
          ldb   <V.COLoad,u
-         andb  #~ModCoVDG
+         andb  #~MODFLAG
          bra   L0086
 * Write
 * Entry: A = char to write
@@ -265,14 +286,15 @@
 
 * Ctrl char ($00-$1F) special char dispatch
 Dispatch cmpa  #$1B           escape code?
-         bhs   bad@           branch if same or greater (special control codes for screen controls)
+         bhs   bad            branch if same or greater (special control codes for screen controls)
          cmpa  #$0E           $0E?
          bhi   L0102          branch if higher than
          leax  <DCodeTbl,pcr  deal with screen codes
          lsla                 adjust for table entry size
          ldd   a,x            get address in D
          jmp   d,x            and jump to routine
-bad@     comb  
+* 
+bad      comb                 Exit with Write Error
          ldb   #E$Write
 L0102    rts   
 
@@ -296,7 +318,7 @@
 * $0D - move cursor to start of line (carriage return)
 Retrn    bsr   HideCrsr       hide cursor
        IFNE  H6309
-         aim   #$E0,<V.CrsAL,u  Force cursor to beginning of current line (clear low 5 bits of address)
+         aim   #~(COLSIZE-1),<V.CrsAL,u  Force cursor to beginning of current line (clear low 5 OR 6 bits of address)
        ELSE
          tfr   x,d            put cursor address in D
          andb  #~(COLSIZE-1)  place at start of line
@@ -368,7 +390,6 @@
          jsr   ,y             Go clear
          puls  u              Get static mem ptr back
          bra   ShowCrsr       Turn cursor back on
-
          
 * $01 - home cursor
 CurHome  bsr   HideCrsr       hide cursor
@@ -494,27 +515,35 @@
          lda   <V.Caps,u    save caps lock status in A and exit
          bra   SaveA
 
-* SS.Cursr getstat
+* SS.Cursr getstat. NOTE: It appears that X,Y coords are returned with +$20 built in (to match
+*   the original CurXY ($02 xx+$20 yy+$20) display code).
 Rt.Cursr ldd   <V.CrsrA,u     get address of cursor
          subd  <V.ScrnA,u     subtract screen address
          pshs  d              D now holds cursor position relative to screen
          clra  
-         andb  #COLSIZE-1
-         addb  #COLSIZE       compute column position
+         andb  #COLSIZE-1     Keep X coord bits only (0-31 or 0-63)
+         addb  #$20           compute column position (+$20 for CurXY offsets)
          std   R$X,x          save column position to caller's X
-         puls  d              then divide by 32
-* NOTE: will COCOVGA need more 16 bit shifts? It's a 2K screen. 
-         lsra                 
-         rolb  
-         rolb  
-         rolb  
-         rolb  
+         puls  d              then divide by 32 for VDG, and 64 for VGA
        IFNE  COCOVGA
-         rolb                 By 64 is CocoVGA (64x32)
+         lsra                 Need three 16 bit divides (/8) - now 8 bit (2048->1024->512->256)
+         rorb
+         lsra
+         rorb
+         lsra
+         rorb
+         lsrb                 Finish divide by 64 with just 8 bit divides
+         lsrb
+         lsrb
+       ELSE
+         lsra                 16 bit divide - now our result is within 8 bit range(512->256)
+         rorb  
+         lsrb                 Finish divide by 32 with just 8 bit divides
+         lsrb  
+         lsrb
+         lsrb
        ENDC
-         clra  
-         andb  #ROWSIZE-1     lines on the screen
-         addb  #COLSIZE
+         addb  #$20           compute row (+$20 for CurXY offsets
          std   R$Y,x          and save column to caller's Y
          ldb   <V.CFlag,u     Get true lowercase flag
          lda   <V.CChar,u     get character under cursor
--- a/level1/modules/vtio.asm	Mon Mar 12 19:35:56 2018 -0500
+++ b/level1/modules/vtio.asm	Wed Mar 28 21:20:31 2018 -0500
@@ -98,6 +98,12 @@
 L002E    sta   ,x+            clear mem
          decb                 decrement counter
          bne   L002E          continue if more
+       IFEQ    PwrLnFreq-Hz60
+         lda   #CFlash60hz    initialize
+       ELSE
+         lda   #CFlash50hz    initialize
+       ENDC
+         sta   >V.FlashTime,u
          leax  <FlashCursor,pcr Point to dummy cursor flash (just an rts). 
          stx   V.Flash,u      Setup cursor flash
          coma                 A = $FF
@@ -219,7 +225,7 @@
          jsr   [V.Flash,u]    Call flash routine
 * 6809/6309 NOTE: Should add IFEQ of some sort here for CFlash50hz or CFlash60hz - but I am not
 *  sure what to compare it with
-         lda   #CFlash50hz    Re-init count (25 or 30 depending - every 2 clock ticks)
+         lda   >V.FlashTime,u Re-init count
          sta   V.FlashCount,u
 AltIRQEnd
          jmp   [>D.Clock]     jump into clock module
@@ -708,20 +714,31 @@
          ora   ,s+            OR in passed A
          tstb                 display graphics?
          bne   L03DE          branch if so
-         ora   <V.CFlag,u
+       IFNE  COCOVGA
+         ora   #$A0           VGA - force VDG to CG2 (which CocoVGA takes control of)
+       ENDC
+         ora   <V.CFlag,u     Merge in true lowercase bit as well
 L03DE    sta   >PIA1Base+2
          sta   <V.PIA1,u
          ldx   #$FFC6         Point to SAM to set up where to map
          tstb                 display graphics?
          bne   DoGfx          Yes, do that
 * Set up VDG screen for text
-         stb   -6,x           $FFC0  No, set up for 32x16 text screen
+       IFNE  COCOVGA
+* VGA - Set VDG for CG2, which CocoVGA takes over for the 64x32 text mode
+         stb   -6,x           clear GM0
+         stb   -3,x           set GM1
+         stb   -2,x           clear GM2
+       ELSE
+* VDG - Set VDG to Alpha mode
+         stb   -6,x           $FFC0  Set up for 32x16 text screen
          stb   -4,x           $FFC2
          stb   -2,x           $FFC4
+       ENDC
          lda   <V.ScrnA,u     get pointer to alpha screen
-        bra   L0401
+         bra   L0401
 
-* Set up VDG screen for graphics
+* Set up VDG screen for graphics (6144 byte modes only - PMODE 3 or 4)
 DoGfx    stb   -6,x           $FFC0
          stb   -3,x           $FFC3
          stb   -1,x           $FFC5
@@ -994,6 +1011,22 @@
          ldb   #E$BMode
          rts
 
+*SS.Comst GetStat - has some features not documented
+* Entry (From caller):
+* A=path
+* B=$28 (SS.Comst code)
+* NOTE: Since the co-modules are (currently) mutually exclusive (maybe not WP?), change
+*   this system to use lsra and use last 3 bits as driver #, or something similar
+* NOTE 2: Because of the way this is set up now, one could change the co-module on the fly
+* so it will try to load each co-module as assigned, until one runs out of RAM. Some of them
+* may interfere with each other when changing as well.
+* Y=Option flags (high byte of Y)
+*   xxxxxxx1 = True lowercase ON (for Coco 3, Coco2B, possibly CoVGA)
+*   xxxxxx1x = Use CoVDG Co-module (32x16)
+*   xxxxx1xx = Use CoWP (Wordpak) 80x25
+*   xxxx1xxx = Use CoHR (51x25 PMODE 4)
+*   xxx1xxxx = Use Co42 (42x25 PMODE 4)
+*   xx1xxxxx = Use CoVGA (64x32 CocoVGA adaptor)
 SSCOMST  ldd   R$Y,x          Get caller's Y
 SetupTerm
          bita  #ModCoVDG      32x16 VDG bit flag set?
@@ -1007,7 +1040,7 @@
          ldx   #$2010         32x16
          pshs  u,y,x,a
          leax  <CoVDG,pcr
-         bsr   LoadCoModule
+         lbsr  LoadCoModule
          puls  u,y,x,a
          bcs   L0600
          stx   <V.Col,u
@@ -1023,9 +1056,9 @@
 CoHR     fcs   /CoHR/
 Co42     fcs   /Co42/
 CoVGA    fcs   /CoVGA/
-         
+
 GoCoWP   bita  #ModCoWP       CoWP needed ?
-         beq   GOCo42         No, try next co-module
+         beq   GOCoVGA        No, try next co-module
          stb   <V.CFlag,u     allow lowercase
          clr   <V.Caps,u      set caps off
          lda   #ModCoWP       'CoWP is loaded' bit
@@ -1042,6 +1075,15 @@
          sta   <V.CurCo,u     current module in use? ($02=CoVDG, $04=C080, etc.)
 L0600    rts
 
+GoCoVGA  bita  #ModCoVGA      64x32 CoVGA?
+         beq   GoCo42         No, then try next co-module
+         stb   <V.CFlag,u     allow lowercase
+         lda   #ModCoVGA      CoVGA is loaded bit
+         ldx   #$4020         64x32
+         pshs  u,y,x,a
+         leax  <CoVGA,pcr
+         bra   SetupCoModule
+
 GOCo42   bita  #ModCo42       42x24 gfx term?
          beq   GOCoHR         No, try 51 column co-module
          ldb   #$10           Flag that we can do real lowercase