changeset 2724:05b648103e78 lwtools-port

Renamed dw3.sb to dwio.sb and rbdw3 to rbdw
author Boisy Pitre <boisy.pitre@nuance.com>
date Mon, 30 Jul 2012 19:35:05 -0500
parents 22bdfbe8bc68
children c2112f93923a
files 3rdparty/customboots/boisy/makefile 3rdparty/customboots/boisy/makefile.6309 3rdparty/packages/fsim2/makefile 3rdparty/packages/koronis/makefile 3rdparty/packages/kyumgai/makefile 3rdparty/packages/mm/makefile 3rdparty/packages/multivue/makefile 3rdparty/packages/rof/makefile 3rdparty/packages/sierra/blackcauldron/makefile 3rdparty/packages/sierra/christmas86/makefile 3rdparty/packages/sierra/goldrush/makefile 3rdparty/packages/sierra/kingsquest1/makefile 3rdparty/packages/sierra/kingsquest2/makefile 3rdparty/packages/sierra/kingsquest3/makefile 3rdparty/packages/sierra/kingsquest4/makefile 3rdparty/packages/sierra/leisuresuitlarry/makefile 3rdparty/packages/sierra/manhunter1/makefile 3rdparty/packages/sierra/manhunter2/makefile 3rdparty/packages/sierra/policequest1/makefile 3rdparty/packages/sierra/spacequest0/makefile 3rdparty/packages/sierra/spacequest1/makefile 3rdparty/packages/sierra/spacequest2/makefile 3rdparty/packages/subsim/makefile 3rdparty/utils/aaw/mkdskindex level1/atari/bootfiles/makefile level1/atari/makefile level1/atari/modules/makefile level1/coco1/bootfiles/makefile level1/coco1/bootlists/dw.bl level1/coco1/bootlists/dw3.bl level1/coco1/bootlists/standard.bl level1/coco1/makefile level1/coco1/modules/makefile level1/coco1/scripts/mb.dw level1/coco1/scripts/mb.dw3 level1/coco2/bootlists/dw.bl level1/coco2/bootlists/dw3.bl level1/coco2/bootlists/standard.bl level1/coco2/scripts/mb.dw level1/coco2/scripts/mb.dw3 level1/coco2b/bootlists/dw.bl level1/coco2b/bootlists/dw3.bl level1/coco2b/bootlists/standard.bl level1/coco2b/scripts/mb.dw level1/coco2b/scripts/mb.dw3 level1/modules/boot_dw.asm level1/modules/boot_dw3.asm level1/modules/clock2_dw.asm level1/modules/clock2_dw3.asm level1/modules/dw3.asm level1/modules/dw3mess.asm level1/modules/dwdesc.asm level1/modules/dwio.asm level1/modules/dwiomess.asm level1/modules/rbdw.asm level1/modules/rbdw3.asm level1/modules/scdwp.asm level1/modules/scdwv.asm level1/modules/wbug.asm level2/coco3/bootfiles/makefile level2/coco3/bootlists/dw.bl level2/coco3/bootlists/dw3.bl level2/coco3/bootlists/standard.bl level2/coco3/makefile level2/coco3/modules/makefile level2/coco3/scripts/mb.dw level2/coco3/scripts/mb.dw3 level2/coco3_6309/bootlists/dw.bl level2/coco3_6309/bootlists/dw3.bl level2/coco3_6309/bootlists/standard.bl level2/coco3_6309/scripts/mb.dw level2/coco3_6309/scripts/mb.dw3 level3/coco3/bootfiles/makefile level3/coco3/makefile level3/coco3/modules/makefile level3/coco3_6309/modules/makefile makefile rules.mak
diffstat 78 files changed, 3664 insertions(+), 3662 deletions(-) [+]
line wrap: on
line diff
--- a/3rdparty/customboots/boisy/makefile	Mon Jul 30 17:31:30 2012 -0500
+++ b/3rdparty/customboots/boisy/makefile	Mon Jul 30 19:35:05 2012 -0500
@@ -38,10 +38,10 @@
 SRC_THESIS	= testmul.a testtfr.a testexg.a testadd.a testnop.a
 
 # We make our own bootfile and kernel track
-KERNEL		= $(MD)/rel_80 $(MD)/boot_dw3 $(MD)/krn
+KERNEL		= $(MD)/rel_80 $(MD)/boot_dw $(MD)/krn
 BOOTFILE_DWTERM	= $(MD)/krnp2 $(MD)/ioman $(MD)/init \
 		$(MD)/rbf.mn \
-		$(MD)/rbdw3.dr $(MD)/dw3.sb \
+		$(MD)/rbdw.dr $(MD)/dwio.sb \
 		$(MD)/rammer.dr $(MD)/r0_128k.dd \
 		$(MD)/ddx0.dd $(MD)/x1.dd $(MD)/x2.dd $(MD)/x3.dd \
 		$(MD)/scf.mn \
@@ -55,12 +55,12 @@
 		$(MD)/n13_scdwn.dd $(MD)/n14_scdwn.dd \
 		$(MD)/scdwp.dr $(MD)/p_scdwp.dd \
 		$(MD)/pipeman.mn $(MD)/piper.dr $(MD)/pipe.dd \
-		$(MD)/clock_60hz $(MD)/clock2_dw3 \
+		$(MD)/clock_60hz $(MD)/clock2_dw \
 		$(MD)/sysgo_dd
 
 BOOTFILE_WINTERM	= $(MD)/krnp2 $(MD)/ioman $(MD)/init \
 		$(MD)/rbf.mn \
-		$(MD)/rbdw3.dr $(MD)/dw3.sb \
+		$(MD)/rbdw.dr $(MD)/dwio.sb \
 		$(MD)/ddx0.dd $(MD)/x1.dd $(MD)/x2.dd $(MD)/x3.dd \
 		$(MD)/scf.mn \
 		$(MD)/vtio.dr \
@@ -77,7 +77,7 @@
 		$(MD)/n13_scdwn.dd $(MD)/n14_scdwn.dd \
 		$(MD)/scdwp.dr $(MD)/p_scdwp.dd \
 		$(MD)/pipeman.mn $(MD)/piper.dr $(MD)/pipe.dd \
-		$(MD)/clock_60hz $(MD)/clock2_dw3 \
+		$(MD)/clock_60hz $(MD)/clock2_dw \
 		$(MD)/sysgo_dd
 
 SUPPORTFILES	= startup
--- a/3rdparty/customboots/boisy/makefile.6309	Mon Jul 30 17:31:30 2012 -0500
+++ b/3rdparty/customboots/boisy/makefile.6309	Mon Jul 30 19:35:05 2012 -0500
@@ -38,10 +38,10 @@
 SRC_THESIS	= testmisc.a testmul.a testdivq.a testtfr.a testexg.a testadd.a testnop.a testsync.a testlda.a teststa.a testlbra.a
 
 # We make our own bootfile and kernel track
-KERNEL		= $(MD)/rel_80 $(MD)/boot_dw3 $(MD)/krn
+KERNEL		= $(MD)/rel_80 $(MD)/boot_dw $(MD)/krn
 BOOTFILE_DWTERM	= $(MD)/krnp2 $(MD)/ioman $(MD)/init \
 		$(MD)/rbf.mn \
-		$(MD)/rbdw3.dr $(MD)/dw3.sb \
+		$(MD)/rbdw.dr $(MD)/dwio.sb \
 		$(MD)/rammer.dr $(MD)/r0_128k.dd \
 		$(MD)/ddx0.dd $(MD)/x1.dd $(MD)/x2.dd $(MD)/x3.dd \
 		$(MD)/scf.mn \
@@ -55,12 +55,12 @@
 		$(MD)/n13_scdwn.dd $(MD)/n14_scdwn.dd \
 		$(MD)/scdwp.dr $(MD)/p_scdwp.dd \
 		$(MD)/pipeman.mn $(MD)/piper.dr $(MD)/pipe.dd \
-		$(MD)/clock_60hz $(MD)/clock2_dw3 \
+		$(MD)/clock_60hz $(MD)/clock2_dw \
 		$(MD)/sysgo_dd
 
 BOOTFILE_WINTERM	= $(MD)/krnp2 $(MD)/ioman $(MD)/init \
 		$(MD)/rbf.mn \
-		$(MD)/rbdw3.dr $(MD)/dw3.sb \
+		$(MD)/rbdw.dr $(MD)/dwio.sb \
 		$(MD)/ddx0.dd $(MD)/x1.dd $(MD)/x2.dd $(MD)/x3.dd \
 		$(MD)/scf.mn \
 		$(MD)/vtio.dr \
@@ -77,12 +77,12 @@
 		$(MD)/n13_scdwn.dd $(MD)/n14_scdwn.dd \
 		$(MD)/scdwp.dr $(MD)/p_scdwp.dd \
 		$(MD)/pipeman.mn $(MD)/piper.dr $(MD)/pipe.dd \
-		$(MD)/clock_60hz $(MD)/clock2_dw3 \
+		$(MD)/clock_60hz $(MD)/clock2_dw \
 		$(MD)/sysgo_dd
 
 BOOTFILE_VDGTERM	= $(MD)/krnp2 $(MD)/ioman $(MD)/init \
 		$(MD)/rbf.mn \
-		$(MD)/rbdw3.dr $(MD)/dw3.sb \
+		$(MD)/rbdw.dr $(MD)/dwio.sb \
 		$(MD)/ddx0.dd $(MD)/x1.dd $(MD)/x2.dd $(MD)/x3.dd \
 		$(MD)/scf.mn \
 		$(MD)/vtio.dr \
@@ -96,7 +96,7 @@
 		$(MD)/n7_scdwn.dd $(MD)/n8_scdwn.dd $(MD)/n9_scdwn.dd \
 		$(MD)/n10_scdwn.dd $(MD)/n11_scdwn.dd $(MD)/n12_scdwn.dd \
 		$(MD)/n13_scdwn.dd $(MD)/n14_scdwn.dd \
-		$(MD)/clock_60hz $(MD)/clock2_dw3 \
+		$(MD)/clock_60hz $(MD)/clock2_dw \
 		$(MD)/sysgo_dd
 
 SUPPORTFILES	= startup
--- a/3rdparty/packages/fsim2/makefile	Mon Jul 30 17:31:30 2012 -0500
+++ b/3rdparty/packages/fsim2/makefile	Mon Jul 30 19:35:05 2012 -0500
@@ -3,15 +3,15 @@
 DEPENDS		= ./makefile
 
 DSK_FLOPPY	= fsim2.dsk
-DSK_DW3		= fsim2_dw3.dsk
+DSK_DW		= fsim2_dw.dsk
 CMDS		= fs f2 f3 f4
 MD		= $(LEVEL2)/coco3/modules
 
-DSKS		= $(DSK_FLOPPY) $(DSK_DW3)
+DSKS		= $(DSK_FLOPPY) $(DSK_DW)
 
 # We make our own bootfile and kernel track
 KERNEL_FLOPPY	= $(MD)/rel_32 $(MD)/boot_1773_6ms $(MD)/krn
-KERNEL_DW3	= $(MD)/rel_32 $(MD)/boot_dw3 $(MD)/krn
+KERNEL_DW	= $(MD)/rel_32 $(MD)/boot_dw $(MD)/krn
 
 BOOTFILE_FLOPPY	= $(MD)/krnp2 $(MD)/ioman $(MD)/init \
 		$(MD)/rbf.mn \
@@ -23,14 +23,14 @@
 		$(MD)/clock_60hz $(MD)/clock2_soft \
 		$(MD)/sysgo_dd
 
-BOOTFILE_DW3	= $(MD)/krnp2 $(MD)/ioman $(MD)/init \
+BOOTFILE_DW	= $(MD)/krnp2 $(MD)/ioman $(MD)/init \
 		$(MD)/rbf.mn \
-		$(MD)/rbdw3.dr $(MD)/dw3.sb $(MD)/ddx0.dd \
+		$(MD)/rbdw.dr $(MD)/dwio.sb $(MD)/ddx0.dd \
 		$(MD)/scf.mn $(MD)/vtio.dr \
 		$(MD)/keydrv_cc3.sb $(MD)/joydrv_joy.sb $(MD)/snddrv_cc3.sb \
 		$(MD)/covdg_small.io $(MD)/term_vdg.dt \
 		$(MD)/vrn.dr $(MD)/ftdd.dd \
-		$(MD)/clock_60hz $(MD)/clock2_dw3 \
+		$(MD)/clock_60hz $(MD)/clock2_dw \
 		$(MD)/sysgo_dd
 
 SUPPORTFILES	= fa fd fp sf.standard
@@ -44,12 +44,12 @@
 
 dsk:	$(DSKS)
 
-$(DSK_DW3):
+$(DSK_DW):
 	$(RM) $@
 	$(CD) $(LEVEL2)/coco3; make
 	$(OS9FORMAT_SS35) -q $@ -n"Flight Simulator 2"
-	$(MERGE) $(BOOTFILE_DW3)>os9boot
-	$(MERGE) $(KERNEL_DW3)>kernel_1773
+	$(MERGE) $(BOOTFILE_DW)>os9boot
+	$(MERGE) $(KERNEL_DW)>kernel_1773
 	$(OS9GEN) $@ -b=os9boot -t=kernel_1773
 	$(RM) os9boot kernel_1773
 	$(MAKDIR) $@,CMDS
--- a/3rdparty/packages/koronis/makefile	Mon Jul 30 17:31:30 2012 -0500
+++ b/3rdparty/packages/koronis/makefile	Mon Jul 30 19:35:05 2012 -0500
@@ -3,15 +3,15 @@
 DEPENDS		= ./makefile
 
 DSK_FLOPPY	= koronis.dsk
-DSK_DW3		= koronis_dw3.dsk
+DSK_DW		= koronis_dw.dsk
 CMDS		= koronis
 MD		= $(LEVEL2)/coco3/modules
 
-DSKS		= $(DSK_FLOPPY) $(DSK_DW3)
+DSKS		= $(DSK_FLOPPY) $(DSK_DW)
 
 # We make our own bootfile and kernel track
 KERNEL_FLOPPY	= $(MD)/rel_32 $(MD)/boot_1773_6ms $(MD)/krn
-KERNEL_DW3	= $(MD)/rel_32 $(MD)/boot_dw3 $(MD)/krn
+KERNEL_DW	= $(MD)/rel_32 $(MD)/boot_dw $(MD)/krn
 BOOTFILE_FLOPPY	= $(MD)/krnp2 $(MD)/ioman $(MD)/init \
 		$(MD)/rbf.mn \
 		$(MD)/rb1773.dr $(MD)/ddd0_40d.dd \
@@ -20,13 +20,13 @@
 		$(MD)/covdg_small.io $(MD)/term_vdg.dt \
 		$(MD)/clock_60hz $(MD)/clock2_soft $(MD)/sysgo_dd
 
-BOOTFILE_DW3	= $(MD)/krnp2 $(MD)/ioman $(MD)/init \
+BOOTFILE_DW	= $(MD)/krnp2 $(MD)/ioman $(MD)/init \
 		$(MD)/rbf.mn \
-		$(MD)/rbdw3.dr $(MD)/dw3.sb $(MD)/ddx0.dd \
+		$(MD)/rbdw.dr $(MD)/dwio.sb $(MD)/ddx0.dd \
 		$(MD)/scf.mn $(MD)/vtio.dr \
 		$(MD)/keydrv_cc3.sb $(MD)/joydrv_joy.sb $(MD)/snddrv_cc3.sb \
 		$(MD)/covdg_small.io $(MD)/term_vdg.dt \
-		$(MD)/clock_60hz $(MD)/clock2_dw3 $(MD)/sysgo_dd
+		$(MD)/clock_60hz $(MD)/clock2_dw $(MD)/sysgo_dd
 
 SUPPORTFILES	= SAVE1 SAVE2 crobot2.c ctitle.c korvar \
 		level01 level02 level03 level04 level05 level06 level07 \
@@ -59,12 +59,12 @@
 	$(OS9RENAME) $@,CMDS/koronis AutoEx
 	$(CP) $(SUPPORTFILES) $@,.
 
-$(DSK_DW3):
+$(DSK_DW):
 	$(RM) $@
 	$(CD) $(LEVEL2)/coco3; make
 	$(OS9FORMAT_SS35) -q $@ -n"Koronis Rift"
-	$(MERGE) $(BOOTFILE_DW3)>os9boot
-	$(MERGE) $(KERNEL_DW3)>kernel
+	$(MERGE) $(BOOTFILE_DW)>os9boot
+	$(MERGE) $(KERNEL_DW)>kernel
 	$(OS9GEN) $@ -b=os9boot -t=kernel
 	$(RM) os9boot kernel
 	$(MAKDIR) $@,CMDS
--- a/3rdparty/packages/kyumgai/makefile	Mon Jul 30 17:31:30 2012 -0500
+++ b/3rdparty/packages/kyumgai/makefile	Mon Jul 30 19:35:05 2012 -0500
@@ -3,15 +3,15 @@
 DEPENDS		= ./makefile
 
 DSK_FLOPPY	= kyumgai.dsk
-DSK_DW3		= kyumgai_dw3.dsk
+DSK_DW		= kyumgai_dw.dsk
 CMDS		= ninja ninja.snd1 ninja.snd2
 MD		= $(LEVEL2)/coco3/modules
 
-DSKS		= $(DSK_FLOPPY) $(DSK_DW3)
+DSKS		= $(DSK_FLOPPY) $(DSK_DW)
 
 # We make our own bootfile and kernel track
 KERNEL_FLOPPY	= $(MD)/rel_32 $(MD)/boot_1773_6ms $(MD)/krn
-KERNEL_DW3	= $(MD)/rel_32 $(MD)/boot_dw3 $(MD)/krn
+KERNEL_DW	= $(MD)/rel_32 $(MD)/boot_dw $(MD)/krn
 BOOTFILE_FLOPPY	= $(MD)/krnp2 $(MD)/ioman $(MD)/init \
 		$(MD)/rbf.mn \
 		$(MD)/rb1773.dr $(MD)/ddd0_40d.dd \
@@ -20,13 +20,13 @@
 		$(MD)/covdg_small.io $(MD)/term_vdg.dt \
 		$(MD)/clock_60hz $(MD)/clock2_soft $(MD)/sysgo_dd
 
-BOOTFILE_DW3	= $(MD)/krnp2 $(MD)/ioman $(MD)/init \
+BOOTFILE_DW	= $(MD)/krnp2 $(MD)/ioman $(MD)/init \
 		$(MD)/rbf.mn \
-		$(MD)/rbdw3.dr $(MD)/dw3.sb $(MD)/ddx0.dd \
+		$(MD)/rbdw.dr $(MD)/dwio.sb $(MD)/ddx0.dd \
 		$(MD)/scf.mn $(MD)/vtio.dr \
 		$(MD)/keydrv_cc3.sb $(MD)/joydrv_joy.sb $(MD)/snddrv_cc3.sb \
 		$(MD)/covdg_small.io $(MD)/term_vdg.dt \
-		$(MD)/clock_60hz $(MD)/clock2_dw3 $(MD)/sysgo_dd
+		$(MD)/clock_60hz $(MD)/clock2_dw $(MD)/sysgo_dd
 
 SUPPORTFILES	= backgnd.dat backgnd2.dat bigblocks.dat blakguy.dat \
 		gameover.dat giant.dat kyumgai.pla level1.dat level2.dat \
@@ -62,12 +62,12 @@
 	$(CP) $(SUPPORTFILES) $@,.
 	$(foreach file, $(SUPPORTFILES), $(OS9ATTR_TEXT) $@,$(file);)
 
-$(DSK_DW3):
+$(DSK_DW):
 	$(RM) $@
 	$(CD) $(LEVEL2)/coco3; make
 	$(OS9FORMAT_SS80) -q $@ -n"Kyum-Gai: To Be Ninja"
-	$(MERGE) $(BOOTFILE_DW3)>os9boot
-	$(MERGE) $(KERNEL_DW3)>kernel
+	$(MERGE) $(BOOTFILE_DW)>os9boot
+	$(MERGE) $(KERNEL_DW)>kernel
 	$(OS9GEN) $@ -b=os9boot -t=kernel
 	$(RM) os9boot kernel
 	$(MAKDIR) $@,CMDS
--- a/3rdparty/packages/mm/makefile	Mon Jul 30 17:31:30 2012 -0500
+++ b/3rdparty/packages/mm/makefile	Mon Jul 30 19:35:05 2012 -0500
@@ -3,16 +3,16 @@
 DEPENDS		= ./makefile
 
 DSK_FLOPPY	= mm.dsk
-DSK_DW3		= mm_dw3.dsk
+DSK_DW		= mm_dw.dsk
 CMDS		= mm mod1.dat mod2.dat mod3.dat mod4.dat mod5.dat \
 		mod6.sbr mod7.sbr mod8.sbr
 MD		= $(LEVEL2)/coco3/modules
 
-DSKS		= $(DSK_FLOPPY) $(DSK_DW3)
+DSKS		= $(DSK_FLOPPY) $(DSK_DW)
 
 # We make our own bootfile and kernel track
 KERNEL_FLOPPY	= $(MD)/rel_32 $(MD)/boot_1773_6ms $(MD)/krn
-KERNEL_DW3	= $(MD)/rel_32 $(MD)/boot_dw3 $(MD)/krn
+KERNEL_DW	= $(MD)/rel_32 $(MD)/boot_dw $(MD)/krn
 BOOTFILE_FLOPPY	= $(MD)/krnp2 $(MD)/ioman $(MD)/init \
 		$(MD)/rbf.mn \
 		$(MD)/rb1773.dr $(MD)/ddd0_40d.dd \
@@ -21,13 +21,13 @@
 		$(MD)/covdg_small.io $(MD)/term_vdg.dt \
 		$(MD)/clock_60hz $(MD)/clock2_soft $(MD)/sysgo_dd
 
-BOOTFILE_DW3	= $(MD)/krnp2 $(MD)/ioman $(MD)/init \
+BOOTFILE_DW	= $(MD)/krnp2 $(MD)/ioman $(MD)/init \
 		$(MD)/rbf.mn \
-		$(MD)/rbdw3.dr $(MD)/dw3.sb $(MD)/ddx0.dd \
+		$(MD)/rbdw.dr $(MD)/dwio.sb $(MD)/ddx0.dd \
 		$(MD)/scf.mn $(MD)/vtio.dr \
 		$(MD)/keydrv_cc3.sb $(MD)/joydrv_joy.sb $(MD)/snddrv_cc3.sb \
 		$(MD)/covdg_small.io $(MD)/term_vdg.dt \
-		$(MD)/clock_60hz $(MD)/clock2_dw3 $(MD)/sysgo_dd
+		$(MD)/clock_60hz $(MD)/clock2_dw $(MD)/sysgo_dd
 
 SUPPORTFILES	= global.dat mm.lib mm.pnl mm.ttl mod7.lib
 
@@ -57,12 +57,12 @@
 	$(CP) $(SUPPORTFILES) $@,.
 	$(foreach file, $(SUPPORTFILES), $(OS9ATTR_EXEC) $@,$(file);)
 
-$(DSK_DW3):
+$(DSK_DW):
 	$(RM) $@
 	$(CD) $(LEVEL2)/coco3; make
 	$(OS9FORMAT_SS80) -q $@ -n"Microscopic Mission"
-	$(MERGE) $(BOOTFILE_DW3)>os9boot
-	$(MERGE) $(KERNEL_DW3)>kernel
+	$(MERGE) $(BOOTFILE_DW)>os9boot
+	$(MERGE) $(KERNEL_DW)>kernel
 	$(OS9GEN) $@ -b=os9boot -t=kernel
 	$(RM) os9boot kernel
 	$(MAKDIR) $@,CMDS
--- a/3rdparty/packages/multivue/makefile	Mon Jul 30 17:31:30 2012 -0500
+++ b/3rdparty/packages/multivue/makefile	Mon Jul 30 19:35:05 2012 -0500
@@ -2,8 +2,8 @@
 
 DSK68_FLOPPY	= multivue_6809.dsk
 DSK63_FLOPPY	= multivue_6309.dsk
-DSK68_DW3	= multivue_6809_dw3.dsk
-DSK63_DW3	= multivue_6309_dw3.dsk
+DSK68_DW	= multivue_6809_dw.dsk
+DSK63_DW	= multivue_6309_dw.dsk
 CMDS68	= $(shell $(CD) cmds_6809; make --no-print-directory showobjs)
 CMDS63	= $(shell $(CD) cmds_6309; make --no-print-directory showobjs)
 ICONS	= icon.demo
@@ -12,15 +12,15 @@
 DEMO	= aif.dmo
 ROOTFILES = startup
 
-DSKS	= $(DSK68_FLOPPY) $(DSK63_FLOPPY) $(DSK68_DW3) $(DSK63_DW3)
+DSKS	= $(DSK68_FLOPPY) $(DSK63_FLOPPY) $(DSK68_DW) $(DSK63_DW)
 
 MD68	= $(LEVEL2)/coco3/modules
 MD63	= $(LEVEL2)/coco3_6309/modules
 
 KERNEL68_FLOPPY	= $(MD68)/rel_40 $(MD68)/boot_1773_6ms $(MD68)/krn
 KERNEL63_FLOPPY	= $(MD63)/rel_40 $(MD63)/boot_1773_6ms $(MD63)/krn
-KERNEL68_DW3	= $(MD68)/rel_40 $(MD68)/boot_dw3 $(MD68)/krn
-KERNEL63_DW3	= $(MD63)/rel_40 $(MD63)/boot_dw3 $(MD63)/krn
+KERNEL68_DW	= $(MD68)/rel_40 $(MD68)/boot_dw $(MD68)/krn
+KERNEL63_DW	= $(MD63)/rel_40 $(MD63)/boot_dw $(MD63)/krn
 
 BOOTFILE68_FLOPPY	= $(MD68)/krnp2 $(MD68)/ioman $(MD68)/init \
 		$(MD68)/rbf.mn \
@@ -46,28 +46,28 @@
 		$(MD63)/clock_60hz $(MD63)/clock2_soft \
 		$(MD63)/sysgo_dd
 
-BOOTFILE68_DW3	= $(MD68)/krnp2 $(MD68)/ioman $(MD68)/init \
+BOOTFILE68_DW	= $(MD68)/krnp2 $(MD68)/ioman $(MD68)/init \
 		$(MD68)/rbf.mn \
-		$(MD68)/rbdw3.dr $(MD68)/dw3.sb $(MD68)/ddx0.dd \
+		$(MD68)/rbdw.dr $(MD68)/dwio.sb $(MD68)/ddx0.dd \
 		$(MD68)/rb1773.dr $(MD68)/d0_40d.dd $(MD68)/d1_40d.dd \
 		$(MD68)/scf.mn $(MD68)/vtio.dr \
 		$(MD68)/keydrv_cc3.sb $(MD68)/joydrv_joy.sb $(MD68)/snddrv_cc3.sb \
 		$(MD68)/cowin.io $(MD68)/term_win40.dt \
 		$(MD68)/w.dw $(MD68)/w1.dw $(MD68)/w2.dw $(MD68)/w3.dw \
 		$(MD68)/w4.dw $(MD68)/w5.dw $(MD68)/w6.dw $(MD68)/w7.dw \
-		$(MD68)/clock_60hz $(MD68)/clock2_dw3 \
+		$(MD68)/clock_60hz $(MD68)/clock2_dw \
 		$(MD68)/sysgo_dd
 
-BOOTFILE63_DW3	= $(MD63)/krnp2 $(MD63)/ioman $(MD63)/init \
+BOOTFILE63_DW	= $(MD63)/krnp2 $(MD63)/ioman $(MD63)/init \
 		$(MD63)/rbf.mn \
-		$(MD63)/rbdw3.dr $(MD63)/dw3.sb $(MD63)/ddx0.dd \
+		$(MD63)/rbdw.dr $(MD63)/dwio.sb $(MD63)/ddx0.dd \
 		$(MD68)/rb1773.dr $(MD68)/d0_40d.dd $(MD68)/d1_40d.dd \
 		$(MD63)/scf.mn $(MD63)/vtio.dr \
 		$(MD63)/keydrv_cc3.sb $(MD63)/joydrv_joy.sb $(MD63)/snddrv_cc3.sb \
 		$(MD63)/cowin.io $(MD63)/term_win40.dt \
 		$(MD63)/w.dw $(MD63)/w1.dw $(MD63)/w2.dw $(MD63)/w3.dw \
 		$(MD63)/w4.dw $(MD63)/w5.dw $(MD63)/w6.dw $(MD63)/w7.dw \
-		$(MD63)/clock_60hz $(MD63)/clock2_dw3 \
+		$(MD63)/clock_60hz $(MD63)/clock2_dw \
 		$(MD63)/sysgo_dd
 
 # Make all components
@@ -140,11 +140,11 @@
 	$(CPL) $(ROOTFILES) $@,.
 	$(foreach file, $(ROOTFILES), $(OS9ATTR_TEXT) $@,$(file);)
 
-$(DSK68_DW3):
+$(DSK68_DW):
 	$(RM) $@
 	$(OS9FORMAT_SS80) $@ -q -n"Multi-Vue"
-	$(MERGE) $(BOOTFILE68_DW3)>os9boot
-	$(MERGE) $(KERNEL68_DW3)>kernel
+	$(MERGE) $(BOOTFILE68_DW)>os9boot
+	$(MERGE) $(KERNEL68_DW)>kernel
 	$(OS9GEN) $@ -b=os9boot -t=kernel
 	$(RM) os9boot kernel
 	$(MAKDIR) $@,CMDS
@@ -165,11 +165,11 @@
 	$(CPL) $(ROOTFILES) $@,.
 	$(foreach file, $(ROOTFILES), $(OS9ATTR_TEXT) $@,$(file);)
 
-$(DSK63_DW3):
+$(DSK63_DW):
 	$(RM) $@
 	$(OS9FORMAT_SS80) $@ -q -n"Multi-Vue"
-	$(MERGE) $(BOOTFILE63_DW3)>os9boot
-	$(MERGE) $(KERNEL63_DW3)>kernel
+	$(MERGE) $(BOOTFILE63_DW)>os9boot
+	$(MERGE) $(KERNEL63_DW)>kernel
 	$(OS9GEN) $@ -b=os9boot -t=kernel
 	$(RM) os9boot kernel
 	$(MAKDIR) $@,CMDS
--- a/3rdparty/packages/rof/makefile	Mon Jul 30 17:31:30 2012 -0500
+++ b/3rdparty/packages/rof/makefile	Mon Jul 30 19:35:05 2012 -0500
@@ -3,15 +3,15 @@
 DEPENDS		= ./makefile
 
 DSK_FLOPPY	= rof.dsk
-DSK_DW3		= rof_dw3.dsk
+DSK_DW		= rof_dw.dsk
 CMDS		= rescue
 MD		= $(LEVEL2)/coco3/modules
 
-DSKS		= $(DSK_FLOPPY) $(DSK_DW3)
+DSKS		= $(DSK_FLOPPY) $(DSK_DW)
 
 # We make our own bootfile and kernel track
 KERNEL_FLOPPY	= $(MD)/rel_32 $(MD)/boot_1773_6ms $(MD)/krn
-KERNEL_DW3	= $(MD)/rel_32 $(MD)/boot_dw3 $(MD)/krn
+KERNEL_DW	= $(MD)/rel_32 $(MD)/boot_dw $(MD)/krn
 BOOTFILE_FLOPPY	= $(MD)/krnp2 $(MD)/ioman $(MD)/init \
 		$(MD)/rbf.mn \
 		$(MD)/rb1773.dr $(MD)/ddd0_40d.dd \
@@ -20,13 +20,13 @@
 		$(MD)/covdg_small.io $(MD)/term_vdg.dt \
 		$(MD)/clock_60hz $(MD)/clock2_soft $(MD)/sysgo_dd
 
-BOOTFILE_DW3	= $(MD)/krnp2 $(MD)/ioman $(MD)/init \
+BOOTFILE_DW	= $(MD)/krnp2 $(MD)/ioman $(MD)/init \
 		$(MD)/rbf.mn \
-		$(MD)/rbdw3.dr $(MD)/dw3.sb $(MD)/ddx0.dd \
+		$(MD)/rbdw.dr $(MD)/dwio.sb $(MD)/ddx0.dd \
 		$(MD)/scf.mn $(MD)/vtio.dr \
 		$(MD)/keydrv_cc3.sb $(MD)/joydrv_joy.sb $(MD)/snddrv_cc3.sb \
 		$(MD)/covdg_small.io $(MD)/term_vdg.dt \
-		$(MD)/clock_60hz $(MD)/clock2_dw3 $(MD)/sysgo_dd
+		$(MD)/clock_60hz $(MD)/clock2_dw $(MD)/sysgo_dd
 
 SUPPORTFILES	= body heads larms legs lips panel1 rofvar rship.c rtitle.c scores
 
@@ -56,12 +56,12 @@
 	$(CP) $(SUPPORTFILES) $@,.
 	$(foreach file, $(SUPPORTFILES), $(OS9ATTR_TEXT) $@,$(file);)
 
-$(DSK_DW3):
+$(DSK_DW):
 	$(RM) $@
 	$(CD) $(LEVEL2)/coco3; make
 	$(OS9FORMAT_SS35) -q $@ -n"Rescue on Fractalus"
-	$(MERGE) $(BOOTFILE_DW3)>os9boot
-	$(MERGE) $(KERNEL_DW3)>kernel
+	$(MERGE) $(BOOTFILE_DW)>os9boot
+	$(MERGE) $(KERNEL_DW)>kernel
 	$(OS9GEN) $@ -b=os9boot -t=kernel
 	$(RM) os9boot kernel
 	$(MAKDIR) $@,CMDS
--- a/3rdparty/packages/sierra/blackcauldron/makefile	Mon Jul 30 17:31:30 2012 -0500
+++ b/3rdparty/packages/sierra/blackcauldron/makefile	Mon Jul 30 19:35:05 2012 -0500
@@ -10,21 +10,21 @@
 DSK_1_40D	= blackcauldron_d1_40d.dsk
 DSK_2_40D	= blackcauldron_d2_40d.dsk
 DSK_80D		= blackcauldron_80d.dsk
-DSK_DW3		= blackcauldron_dw3.dsk
+DSK_DW		= blackcauldron_dw.dsk
 
-DSKS		= $(DSK_1_40D) $(DSK_2_40D) $(DSK_80D) $(DSK_DW3)
+DSKS		= $(DSK_1_40D) $(DSK_2_40D) $(DSK_80D) $(DSK_DW)
 
 DSK_1_40D_NAME = "The Black Cauldron Disk 1"
 DSK_2_40D_NAME = "The Black Cauldron Disk 2"
 DSK_80D_NAME   = "The Black Cauldron"
-DSK_DW3_NAME   = $(DSK_80D_NAME)
+DSK_DW_NAME   = $(DSK_80D_NAME)
 
 CMDS		= sierra mnln scrn shdw tocgen
 MD		= $(LEVEL2)/coco3/modules
 
 # We make our own bootfile and KERNEL_FLOPPY track
 KERNEL_FLOPPY	= $(MD)/rel_32 $(MD)/boot_1773_6ms $(MD)/krn
-KERNEL_DW3	= $(MD)/rel_32 $(MD)/boot_dw3 $(MD)/krn
+KERNEL_DW	= $(MD)/rel_32 $(MD)/boot_dw $(MD)/krn
 BOOTFILE_40D	= $(MD)/krnp2 $(MD)/ioman $(MD)/init \
 		$(MD)/rbf.mn \
 		$(MD)/rb1773.dr $(MD)/ddd0_40d.dd \
@@ -43,14 +43,14 @@
 		$(MD)/vrn.dr $(MD)/vi.dd \
 		$(MD)/clock_60hz $(MD)/clock2_soft $(MD)/sysgo_dd
 
-BOOTFILE_DW3	= $(MD)/krnp2 $(MD)/ioman $(MD)/init \
+BOOTFILE_DW	= $(MD)/krnp2 $(MD)/ioman $(MD)/init \
 		$(MD)/rbf.mn \
-		$(MD)/rbdw3.dr $(MD)/dw3.sb $(MD)/ddx0.dd \
+		$(MD)/rbdw.dr $(MD)/dwio.sb $(MD)/ddx0.dd \
 		$(MD)/scf.mn $(MD)/vtio.dr \
 		$(MD)/keydrv_cc3.sb $(MD)/joydrv_joy.sb $(MD)/snddrv_cc3.sb \
 		$(MD)/covdg_small.io $(MD)/term_vdg.dt \
 		$(MD)/vrn.dr $(MD)/vi.dd \
-		$(MD)/clock_60hz $(MD)/clock2_dw3 $(MD)/sysgo_dd
+		$(MD)/clock_60hz $(MD)/clock2_dw $(MD)/sysgo_dd
 
 BOOTCMDS	= $(LEVEL2)/coco3/cmds/shell_21 $(LEVEL2)/coco3/cmds/date \
 		$(LEVEL2)/coco3/cmds/echo $(LEVEL2)/coco3/cmds/link \
@@ -121,29 +121,29 @@
 	tocgen $(DSK_80D),tOC.txt $(DSK_80D),tOC
 	$(MOVE) toctmp tocgen
 
-dsk_dw3:	all
-	$(RM) $(DSK_DW3)
+dsk_dw:	all
+	$(RM) $(DSK_DW)
 	$(CD) $(LEVEL2)/coco3; make
-	$(OS9FORMAT_DW3) -q $(DSK_DW3) -n$(DSK_DW3_NAME)
-	$(MERGE) $(BOOTFILE_DW3)>os9boot
-	$(MERGE) $(KERNEL_DW3)>kernel
-	$(OS9GEN) $(DSK_DW3) -b=os9boot -t=kernel
+	$(OS9FORMAT_DW) -q $(DSK_DW) -n$(DSK_DW_NAME)
+	$(MERGE) $(BOOTFILE_DW)>os9boot
+	$(MERGE) $(KERNEL_DW)>kernel
+	$(OS9GEN) $(DSK_DW) -b=os9boot -t=kernel
 	$(RM) os9boot kernel
-	$(MAKDIR) $(DSK_DW3),CMDS
-	$(CP) $(CMDS) $(DSK_DW3),CMDS
-	$(foreach file, $(CMDS), $(OS9ATTR_EXEC) $(DSK_DW3),CMDS/$(file);)
+	$(MAKDIR) $(DSK_DW),CMDS
+	$(CP) $(CMDS) $(DSK_DW),CMDS
+	$(foreach file, $(CMDS), $(OS9ATTR_EXEC) $(DSK_DW),CMDS/$(file);)
 	$(MERGE) $(BOOTCMDS)>shell
-	$(CP) shell $(DSK_DW3),CMDS
+	$(CP) shell $(DSK_DW),CMDS
 	$(RM) shell
-	$(OS9ATTR) $(DSK_DW3),CMDS/shell -e -pe -pr -e -w -r
-	$(OS9RENAME) $(DSK_DW3),CMDS/sierra AutoEx
-	$(CPL) $(TEXTFILES) $(DSK_DW3),.
-	$(OS9RENAME) $(DSK_DW3),tOC_40d.txt tOC.txt
-	$(CP) $(SUPPORTFILES) $(DSK_DW3),.
+	$(OS9ATTR) $(DSK_DW),CMDS/shell -e -pe -pr -e -w -r
+	$(OS9RENAME) $(DSK_DW),CMDS/sierra AutoEx
+	$(CPL) $(TEXTFILES) $(DSK_DW),.
+	$(OS9RENAME) $(DSK_DW),tOC_40d.txt tOC.txt
+	$(CP) $(SUPPORTFILES) $(DSK_DW),.
 	$(RM) tocgen
-	tocgen $(DSK_DW3),tOC.txt $(DSK_DW3),tOC
+	tocgen $(DSK_DW),tOC.txt $(DSK_DW),tOC
 
-dsk:	dsk_40d dsk_80d dsk_dw3
+dsk:	dsk_40d dsk_80d dsk_dw
 
 dskcopy: dsk
 	$(CP) $(DSKS) $(DSKDIR)
--- a/3rdparty/packages/sierra/christmas86/makefile	Mon Jul 30 17:31:30 2012 -0500
+++ b/3rdparty/packages/sierra/christmas86/makefile	Mon Jul 30 19:35:05 2012 -0500
@@ -8,9 +8,9 @@
 DEPENDS		= ./makefile
 
 DSK_FLOPPY	= christmas86.dsk
-DSK_DW3		= christmas86_dw3.dsk
+DSK_DW		= christmas86_dw.dsk
 
-DSKS		= $(DSK_FLOPPY) $(DSK_DW3)
+DSKS		= $(DSK_FLOPPY) $(DSK_DW)
 
 DSK_NAME	= "Christmas 1986"
 
@@ -19,7 +19,7 @@
 
 # We make our own bootfile and kernel track
 KERNEL_FLOPPY	= $(MD)/rel_32 $(MD)/boot_1773_6ms $(MD)/krn
-KERNEL_DW3	= $(MD)/rel_32 $(MD)/boot_dw3 $(MD)/krn
+KERNEL_DW	= $(MD)/rel_32 $(MD)/boot_dw $(MD)/krn
 
 BOOTFILE_FLOPPY	= $(MD)/krnp2 $(MD)/ioman $(MD)/init \
 		$(MD)/rbf.mn \
@@ -30,14 +30,14 @@
 		$(MD)/vrn.dr $(MD)/vi.dd \
 		$(MD)/clock_60hz $(MD)/clock2_soft $(MD)/sysgo_dd
 
-BOOTFILE_DW3	= $(MD)/krnp2 $(MD)/ioman $(MD)/init \
+BOOTFILE_DW	= $(MD)/krnp2 $(MD)/ioman $(MD)/init \
 		$(MD)/rbf.mn \
-		$(MD)/rbdw3.dr $(MD)/dw3.sb $(MD)/ddx0.dd \
+		$(MD)/rbdw.dr $(MD)/dwio.sb $(MD)/ddx0.dd \
 		$(MD)/scf.mn $(MD)/vtio.dr \
 		$(MD)/keydrv_cc3.sb $(MD)/joydrv_joy.sb $(MD)/snddrv_cc3.sb \
 		$(MD)/covdg_small.io $(MD)/term_vdg.dt \
 		$(MD)/vrn.dr $(MD)/vi.dd \
-		$(MD)/clock_60hz $(MD)/clock2_dw3 $(MD)/sysgo_dd
+		$(MD)/clock_60hz $(MD)/clock2_dw $(MD)/sysgo_dd
 
 BOOTCMDS	= $(LEVEL2)/coco3/cmds/shell_21 $(LEVEL2)/coco3/cmds/date \
 		$(LEVEL2)/coco3/cmds/echo $(LEVEL2)/coco3/cmds/link \
@@ -78,12 +78,12 @@
 	$(MOVE) toctmp tocgen
 	$(CP) $(SUPPORTFILES) $@,.
 
-$(DSK_DW3):	all
+$(DSK_DW):	all
 	$(RM) $@
 	$(CD) $(LEVEL2)/coco3; make
 	$(OS9FORMAT_DS40) -q $@ -n$(DSK_NAME)
-	$(MERGE) $(BOOTFILE_DW3)>os9boot
-	$(MERGE) $(KERNEL_DW3)>kernel
+	$(MERGE) $(BOOTFILE_DW)>os9boot
+	$(MERGE) $(KERNEL_DW)>kernel
 	$(OS9GEN) $@ -b=os9boot -t=kernel
 	$(RM) os9boot kernel
 	$(MAKDIR) $@,CMDS
--- a/3rdparty/packages/sierra/goldrush/makefile	Mon Jul 30 17:31:30 2012 -0500
+++ b/3rdparty/packages/sierra/goldrush/makefile	Mon Jul 30 19:35:05 2012 -0500
@@ -7,24 +7,24 @@
 
 DEPENDS		= ./makefile
 
-DSKDW3		= goldrush_dw3.dsk
+DSKDW		= goldrush_dw.dsk
 DISK_1_80D	= goldrush_d1_80d.dsk
 DISK_2_80D	= goldrush_d2_80d.dsk
 DISK_3_80D	= goldrush_d3_80d.dsk
 
-DSKS		= $(DISK_1_80D) $(DISK_2_80D) $(DISK_3_80D) $(DSKDW3)
+DSKS		= $(DISK_1_80D) $(DISK_2_80D) $(DISK_3_80D) $(DSKDW)
 
 DISK_1_80D_NAME = "Gold Rush Disk 1"
 DISK_2_80D_NAME = "Gold Rush Disk 2"
 DISK_3_80D_NAME = "Gold Rush Disk 3"
-DSKDW3_NAME	= "Gold Rush"
+DSKDW_NAME	= "Gold Rush"
 
 CMDS		= sierra mnln scrn shdw tocgen
 MD		= $(LEVEL2)/coco3/modules
 
 # We make our own bootfile and kernel track
 KERNEL_FLOPPY	= $(MD)/rel_32 $(MD)/boot_1773_6ms $(MD)/krn
-KERNEL_DW3	= $(MD)/rel_32 $(MD)/boot_dw3 $(MD)/krn
+KERNEL_DW	= $(MD)/rel_32 $(MD)/boot_dw $(MD)/krn
 BOOTFILE_80D	= $(MD)/krnp2 $(MD)/ioman $(MD)/init \
 		$(MD)/rbf.mn \
 		$(MD)/rb1773.dr $(MD)/ddd0_80d.dd \
@@ -34,21 +34,21 @@
 		$(MD)/vrn.dr $(MD)/vi.dd \
 		$(MD)/clock_60hz $(MD)/clock2_soft $(MD)/sysgo_dd
 
-BOOTFILE_DW3	= $(MD)/krnp2 $(MD)/ioman $(MD)/init \
+BOOTFILE_DW	= $(MD)/krnp2 $(MD)/ioman $(MD)/init \
 		$(MD)/rbf.mn \
-		$(MD)/rbdw3.dr $(MD)/dw3.sb $(MD)/ddx0.dd \
+		$(MD)/rbdw.dr $(MD)/dwio.sb $(MD)/ddx0.dd \
 		$(MD)/scf.mn $(MD)/vtio.dr \
 		$(MD)/keydrv_cc3.sb $(MD)/joydrv_joy.sb $(MD)/snddrv_cc3.sb \
 		$(MD)/covdg_small.io $(MD)/term_vdg.dt \
 		$(MD)/vrn.dr $(MD)/vi.dd \
-		$(MD)/clock_60hz $(MD)/clock2_dw3 $(MD)/sysgo_dd
+		$(MD)/clock_60hz $(MD)/clock2_dw $(MD)/sysgo_dd
 
 BOOTCMDS	= $(LEVEL2)/coco3/cmds/shell_21 $(LEVEL2)/coco3/cmds/date \
 		$(LEVEL2)/coco3/cmds/echo $(LEVEL2)/coco3/cmds/link \
 		$(LEVEL2)/coco3/cmds/setime
 
 TEXTFILES_D1	= ../startup tOC_80d.txt
-TEXTFILES_DW3	= ../startup tOC_dw3.txt
+TEXTFILES_DW	= ../startup tOC_dw.txt
 
 SUPPORTFILES_D1	= logDir object picDir sndDir viewDir vol.0 \
 		vol.1 vol.2 vol.9 vol.10 vol.11 vol.12 words.tok
@@ -64,14 +64,14 @@
 clean:	dskclean
 	$(RM) $(ALLOBJS) kernel os9boot
 
-dsk:	all $(DSKDW3) $(DISK_1_80D) $(DISK_2_80D) $(DISK_3_80D)
+dsk:	all $(DSKDW) $(DISK_1_80D) $(DISK_2_80D) $(DISK_3_80D)
 
-$(DSKDW3):
+$(DSKDW):
 	$(RM) $@
 	$(CD) $(LEVEL2)/coco3; make
-	$(OS9FORMAT_DW3) -q $@ -n$(DSKDW3_NAME)
-	$(MERGE) $(BOOTFILE_DW3)>os9boot
-	$(MERGE) $(KERNEL_DW3)>kernel
+	$(OS9FORMAT_DW) -q $@ -n$(DSKDW_NAME)
+	$(MERGE) $(BOOTFILE_DW)>os9boot
+	$(MERGE) $(KERNEL_DW)>kernel
 	$(OS9GEN) $@ -b=os9boot -t=kernel
 	$(RM) os9boot kernel
 	$(MAKDIR) $@,CMDS
@@ -82,8 +82,8 @@
 	$(RM) shell
 	$(OS9ATTR) $@,CMDS/shell -e -pe -pr -e -w -r
 	$(OS9RENAME) $@,CMDS/sierra AutoEx
-	$(CPL) $(TEXTFILES_DW3) $@,.
-	$(OS9RENAME) $@,tOC_dw3.txt tOC.txt
+	$(CPL) $(TEXTFILES_DW) $@,.
+	$(OS9RENAME) $@,tOC_dw.txt tOC.txt
 	$(CP) $(SUPPORTFILES_D1) $@,.
 	$(CP) $(SUPPORTFILES_D2) $@,.
 	$(CP) $(SUPPORTFILES_D3) $@,.
--- a/3rdparty/packages/sierra/kingsquest1/makefile	Mon Jul 30 17:31:30 2012 -0500
+++ b/3rdparty/packages/sierra/kingsquest1/makefile	Mon Jul 30 19:35:05 2012 -0500
@@ -8,19 +8,19 @@
 DEPENDS		= ./makefile
 
 DISK_40D	= kingsquest1_40d.dsk
-DSKDW3		= kingsquest1_dw3.dsk
+DSKDW		= kingsquest1_dw.dsk
 
-DSKS		= $(DISK_40D) $(DSKDW3)
+DSKS		= $(DISK_40D) $(DSKDW)
 
 DISK_40D_NAME	= "King's Quest I"
-DSKDW3_NAME	= $(DISK_40D_NAME)
+DSKDW_NAME	= $(DISK_40D_NAME)
 
 CMDS		= sierra mnln scrn shdw tocgen
 MD		= $(LEVEL2)/coco3/modules
 
 # We make our own bootfile and kernel track
 KERNEL_FLOPPY	= $(MD)/rel_32 $(MD)/boot_1773_6ms $(MD)/krn
-KERNEL_DW3	= $(MD)/rel_32 $(MD)/boot_dw3 $(MD)/krn
+KERNEL_DW	= $(MD)/rel_32 $(MD)/boot_dw $(MD)/krn
 
 BOOTFILE_40D	= $(MD)/krnp2 $(MD)/ioman $(MD)/init \
 		$(MD)/rbf.mn \
@@ -31,14 +31,14 @@
 		$(MD)/vrn.dr $(MD)/vi.dd \
 		$(MD)/clock_60hz $(MD)/clock2_soft $(MD)/sysgo_dd
 
-BOOTFILE_DW3	= $(MD)/krnp2 $(MD)/ioman $(MD)/init \
+BOOTFILE_DW	= $(MD)/krnp2 $(MD)/ioman $(MD)/init \
 		$(MD)/rbf.mn \
-		$(MD)/rbdw3.dr $(MD)/dw3.sb $(MD)/ddx0.dd \
+		$(MD)/rbdw.dr $(MD)/dwio.sb $(MD)/ddx0.dd \
 		$(MD)/scf.mn $(MD)/vtio.dr \
 		$(MD)/keydrv_cc3.sb $(MD)/joydrv_joy.sb $(MD)/snddrv_cc3.sb \
 		$(MD)/covdg_small.io $(MD)/term_vdg.dt \
 		$(MD)/vrn.dr $(MD)/vi.dd \
-		$(MD)/clock_60hz $(MD)/clock2_dw3 $(MD)/sysgo_dd
+		$(MD)/clock_60hz $(MD)/clock2_dw $(MD)/sysgo_dd
 
 BOOTCMDS	= $(LEVEL2)/coco3/cmds/shell_21 $(LEVEL2)/coco3/cmds/date \
 		$(LEVEL2)/coco3/cmds/echo $(LEVEL2)/coco3/cmds/link \
@@ -56,7 +56,7 @@
 clean:	dskclean
 	$(RM) $(ALLOBJS)
 
-dsk:	all $(DISK_40D) $(DSKDW3)
+dsk:	all $(DISK_40D) $(DSKDW)
 
 $(DISK_40D):
 	$(RM) $@
@@ -81,12 +81,12 @@
 	$(MOVE) toctmp tocgen
 	$(CP) $(SUPPORTFILES) $@,.
 
-$(DSKDW3):
+$(DSKDW):
 	$(RM) $@
 	$(CD) $(LEVEL2)/coco3; make
-	$(OS9FORMAT_DW3) -q $@ -n$(DISK_40D_NAME)
-	$(MERGE) $(BOOTFILE_DW3)>os9boot
-	$(MERGE) $(KERNEL_DW3)>kernel
+	$(OS9FORMAT_DW) -q $@ -n$(DISK_40D_NAME)
+	$(MERGE) $(BOOTFILE_DW)>os9boot
+	$(MERGE) $(KERNEL_DW)>kernel
 	$(OS9GEN) $@ -b=os9boot -t=kernel
 	$(RM) os9boot kernel
 	$(MAKDIR) $@,CMDS
--- a/3rdparty/packages/sierra/kingsquest2/makefile	Mon Jul 30 17:31:30 2012 -0500
+++ b/3rdparty/packages/sierra/kingsquest2/makefile	Mon Jul 30 19:35:05 2012 -0500
@@ -10,21 +10,21 @@
 DSK_1_40D	= kingsquest2_d1_40d.dsk
 DSK_2_40D	= kingsquest2_d2_40d.dsk
 DSK_80D		= kingsquest2_80d.dsk
-DSK_DW3          = kingsquest2_dw3.dsk
+DSK_DW          = kingsquest2_dw.dsk
 
-DSKS		= $(DSK_1_40D) $(DSK_2_40D) $(DSK_80D) $(DSK_DW3)
+DSKS		= $(DSK_1_40D) $(DSK_2_40D) $(DSK_80D) $(DSK_DW)
 
 DSK_1_40D_NAME	= "King's Quest II Disk 1"
 DSK_2_40D_NAME	= "King's Quest II Disk 2"
 DSK_80D_NAME	= "King's Quest II"
-DSK_DW3_NAME	= "King's Quest II"
+DSK_DW_NAME	= "King's Quest II"
 
 CMDS		= sierra mnln scrn shdw tocgen
 MD		= $(LEVEL2)/coco3/modules
 
 # We make our own bootfile and kernel track
 KERNEL_FLOPPY	= $(MD)/rel_32 $(MD)/boot_1773_6ms $(MD)/krn
-KERNEL_DW3      =$(MD)/rel_32 $(MD)/boot_dw3 $(MD)/krn
+KERNEL_DW      =$(MD)/rel_32 $(MD)/boot_dw $(MD)/krn
 BOOTFILE_40D	= $(MD)/krnp2 $(MD)/ioman $(MD)/init \
 		$(MD)/rbf.mn \
 		$(MD)/rb1773.dr $(MD)/ddd0_40d.dd \
@@ -43,14 +43,14 @@
 		$(MD)/vrn.dr $(MD)/vi.dd \
 		$(MD)/clock_60hz $(MD)/clock2_soft $(MD)/sysgo_dd
 
-BOOTFILE_DW3    = $(MD)/krnp2 $(MD)/ioman $(MD)/init \
+BOOTFILE_DW    = $(MD)/krnp2 $(MD)/ioman $(MD)/init \
 		$(MD)/rbf.mn \
-		$(MD)/rbdw3.dr $(MD)/dw3.sb $(MD)/ddx0.dd \
+		$(MD)/rbdw.dr $(MD)/dwio.sb $(MD)/ddx0.dd \
 		$(MD)/scf.mn $(MD)/vtio.dr \
 		$(MD)/keydrv_cc3.sb $(MD)/joydrv_joy.sb $(MD)/snddrv_cc3.sb \
 		$(MD)/covdg_small.io $(MD)/term_vdg.dt \
 		$(MD)/vrn.dr $(MD)/vi.dd \
-		$(MD)/clock_60hz $(MD)/clock2_dw3 $(MD)/sysgo_dd
+		$(MD)/clock_60hz $(MD)/clock2_dw $(MD)/sysgo_dd
 
 BOOTCMDS	= $(LEVEL2)/coco3/cmds/shell_21 $(LEVEL2)/coco3/cmds/date \
 		$(LEVEL2)/coco3/cmds/echo $(LEVEL2)/coco3/cmds/link \
@@ -125,12 +125,12 @@
 	tocgen $@,tOC.txt $@,tOC
 	$(MOVE) toctmp tocgen
 
-$(DSK_DW3):
+$(DSK_DW):
 	$(RM) $@
 	$(CD) $(LEVEL2)/coco3; make
-	$(OS9FORMAT_DW3) -q $@ -n$(DSK_DW3_NAME)
-	$(MERGE) $(BOOTFILE_DW3)>os9boot
-	$(MERGE) $(KERNEL_DW3)>kernel
+	$(OS9FORMAT_DW) -q $@ -n$(DSK_DW_NAME)
+	$(MERGE) $(BOOTFILE_DW)>os9boot
+	$(MERGE) $(KERNEL_DW)>kernel
 	$(OS9GEN) $@ -b=os9boot -t=kernel
 	$(RM) os9boot kernel
 	$(MAKDIR) $@,CMDS
--- a/3rdparty/packages/sierra/kingsquest3/makefile	Mon Jul 30 17:31:30 2012 -0500
+++ b/3rdparty/packages/sierra/kingsquest3/makefile	Mon Jul 30 19:35:05 2012 -0500
@@ -11,22 +11,22 @@
 DISK_2_40D	= kingquest3_d2_40d.dsk
 DISK_3_40D	= kingquest3_d3_40d.dsk
 DISK_80D	= kingquest3_80d.dsk
-DSK_DW3	= kingsquest3_dw3.dsk
+DSK_DW	= kingsquest3_dw.dsk
 
-DSKS		= $(DISK_1_40D) $(DISK_2_40D) $(DISK_3_40D) $(DISK_80D) $(DSK_DW3)
+DSKS		= $(DISK_1_40D) $(DISK_2_40D) $(DISK_3_40D) $(DISK_80D) $(DSK_DW)
 
 DISK_1_40D_NAME = "King's Quest III Disk 1"
 DISK_2_40D_NAME = "King's Quest III Disk 2"
 DISK_3_40D_NAME = "King's Quest III Disk 3"
 DISK_80D_NAME   = "King's Quest III"
-DSK_DW3_NAME	= "King's Quest III"
+DSK_DW_NAME	= "King's Quest III"
 
 CMDS		= sierra mnln scrn shdw tocgen
 MD		= $(LEVEL2)/coco3/modules
 
 # We make our own bootfile and kernel track
 KERNEL		= $(MD)/rel_32 $(MD)/boot_1773_6ms $(MD)/krn
-KERNEL_DW3	= $(MD)/rel_32 $(MD)/boot_dw3 $(MD)/krn
+KERNEL_DW	= $(MD)/rel_32 $(MD)/boot_dw $(MD)/krn
 
 OS9BOOT_40D	= $(MD)/krnp2 $(MD)/ioman $(MD)/init \
 		$(MD)/rbf.mn \
@@ -46,14 +46,14 @@
 		$(MD)/vrn.dr $(MD)/vi.dd \
 		$(MD)/clock_60hz $(MD)/clock2_soft $(MD)/sysgo_dd
 
-BOOTFILE_DW3    = $(MD)/krnp2 $(MD)/ioman $(MD)/init \
+BOOTFILE_DW    = $(MD)/krnp2 $(MD)/ioman $(MD)/init \
 		$(MD)/rbf.mn \
-		$(MD)/rbdw3.dr $(MD)/dw3.sb $(MD)/ddx0.dd \
+		$(MD)/rbdw.dr $(MD)/dwio.sb $(MD)/ddx0.dd \
 		$(MD)/scf.mn $(MD)/vtio.dr \
 		$(MD)/keydrv_cc3.sb $(MD)/joydrv_joy.sb $(MD)/snddrv_cc3.sb \
 		$(MD)/covdg_small.io $(MD)/term_vdg.dt \
 		$(MD)/vrn.dr $(MD)/vi.dd \
-		$(MD)/clock_60hz $(MD)/clock2_dw3 $(MD)/sysgo_dd
+		$(MD)/clock_60hz $(MD)/clock2_dw $(MD)/sysgo_dd
 
 BOOTCMDS	= $(LEVEL2)/coco3/cmds/shell_21 $(LEVEL2)/coco3/cmds/date \
 		$(LEVEL2)/coco3/cmds/echo $(LEVEL2)/coco3/cmds/link \
@@ -61,7 +61,7 @@
 
 TEXTFILES_D1	= ../startup tOC_40d.txt
 TEXTFILES	= ../startup tOC_80d.txt
-TEXTFILES_DW3 = ../startup tOC_dw3.txt
+TEXTFILES_DW = ../startup tOC_dw.txt
 
 SUPPORTFILES_D1	= logDir object picDir sndDir viewDir vol.0 \
 		vol.1 vol.2 vol.3 vol.4 vol.12 vol.14 words.tok
@@ -131,29 +131,29 @@
 	tocgen $(DISK_80D),tOC.txt $(DISK_80D),tOC
 	$(MOVE) toctmp tocgen
 
-dsk_dw3:	all
-	$(RM) $(DSK_DW3)
+dsk_dw:	all
+	$(RM) $(DSK_DW)
 	$(CD) $(LEVEL2)/coco3; make
-	$(OS9FORMAT_DW3) -q $(DSK_DW3) -n$(DSK_DW3_NAME)
-	$(MERGE) $(BOOTFILE_DW3)>os9boot_dw3
-	$(MERGE) $(KERNEL_DW3)>kernel_dw3
-	$(OS9GEN) $(DSK_DW3) -b=os9boot_dw3 -t=kernel_dw3
-	$(RM) os9boot_dw3 kernel_dw3
-	$(MAKDIR) $(DSK_DW3),CMDS
-	$(CP) $(CMDS) $(DSK_DW3),CMDS
-	$(foreach file, $(CMDS), $(OS9ATTR_EXEC) $(DSK_DW3),CMDS/$(file);)
+	$(OS9FORMAT_DW) -q $(DSK_DW) -n$(DSK_DW_NAME)
+	$(MERGE) $(BOOTFILE_DW)>os9boot_dw
+	$(MERGE) $(KERNEL_DW)>kernel_dw
+	$(OS9GEN) $(DSK_DW) -b=os9boot_dw -t=kernel_dw
+	$(RM) os9boot_dw kernel_dw
+	$(MAKDIR) $(DSK_DW),CMDS
+	$(CP) $(CMDS) $(DSK_DW),CMDS
+	$(foreach file, $(CMDS), $(OS9ATTR_EXEC) $(DSK_DW),CMDS/$(file);)
 	$(MERGE) $(BOOTCMDS)>shell
-	$(CP) shell $(DSK_DW3),CMDS
+	$(CP) shell $(DSK_DW),CMDS
 	$(RM) shell
-	$(OS9ATTR) $(DSK_DW3),CMDS/shell -e -pe -pr -e -w -r
-	$(OS9RENAME) $(DSK_DW3),CMDS/sierra AutoEx
-	$(CPL) $(TEXTFILES_DW3) $(DSK_DW3),.
-	$(OS9RENAME) $(DSK_DW3),tOC_dw3.txt tOC.txt
-	$(CP) $(SUPPORTFILES) $(DSK_DW3),.
+	$(OS9ATTR) $(DSK_DW),CMDS/shell -e -pe -pr -e -w -r
+	$(OS9RENAME) $(DSK_DW),CMDS/sierra AutoEx
+	$(CPL) $(TEXTFILES_DW) $(DSK_DW),.
+	$(OS9RENAME) $(DSK_DW),tOC_dw.txt tOC.txt
+	$(CP) $(SUPPORTFILES) $(DSK_DW),.
 	$(RM) tocgen
-	tocgen $(DSK_DW3),tOC.txt $(DSK_DW3),tOC
+	tocgen $(DSK_DW),tOC.txt $(DSK_DW),tOC
 
-dsk:	dsk_40d dsk_80d dsk_dw3
+dsk:	dsk_40d dsk_80d dsk_dw
 
 dskcopy: dsk
 	$(CP) $(DSKS) $(DSKDIR)
--- a/3rdparty/packages/sierra/kingsquest4/makefile	Mon Jul 30 17:31:30 2012 -0500
+++ b/3rdparty/packages/sierra/kingsquest4/makefile	Mon Jul 30 19:35:05 2012 -0500
@@ -10,21 +10,21 @@
 DISK_1_80D	= kingsquest4_d1_80d.dsk
 DISK_2_80D	= kingsquest4_d2_80d.dsk
 DISK_3_80D	= kingsquest4_d3_80d.dsk
-DISK_DW3	= kingsquest4_dw3.dsk
+DISK_DW	= kingsquest4_dw.dsk
 
-DSKS		= $(DISK_1_80D) $(DISK_2_80D) $(DISK_3_80D) $(DISK_DW3)
+DSKS		= $(DISK_1_80D) $(DISK_2_80D) $(DISK_3_80D) $(DISK_DW)
 
 DISK_1_80D_NAME = "King's Quest IV Disk 1"
 DISK_2_80D_NAME = "King's Quest IV Disk 2"
 DISK_3_80D_NAME = "King's Quest IV Disk 3"
-DISK_DW3_NAME =	"King's Quest IV"
+DISK_DW_NAME =	"King's Quest IV"
 
 CMDS		= sierra mnln scrn shdw tocgen
 MD		= $(LEVEL2)/coco3/modules
 
 # We make our own bootfile and kernel track
 KERNEL		= $(MD)/rel_32 $(MD)/boot_1773_6ms $(MD)/krn
-KERNEL_DW3	= $(MD)/rel_32 $(MD)/boot_dw3 $(MD)/krn
+KERNEL_DW	= $(MD)/rel_32 $(MD)/boot_dw $(MD)/krn
 OS9BOOT_80D	= $(MD)/krnp2 $(MD)/ioman $(MD)/init \
 		$(MD)/rbf.mn \
 		$(MD)/rb1773.dr $(MD)/ddd0_80d.dd \
@@ -34,14 +34,14 @@
 		$(MD)/vrn.dr $(MD)/vi.dd \
 		$(MD)/clock_60hz $(MD)/clock2_soft $(MD)/sysgo_dd
 
-BOOTFILE_DW3    = $(MD)/krnp2 $(MD)/ioman $(MD)/init \
+BOOTFILE_DW    = $(MD)/krnp2 $(MD)/ioman $(MD)/init \
 		$(MD)/rbf.mn \
-		$(MD)/rbdw3.dr $(MD)/dw3.sb $(MD)/ddx0.dd \
+		$(MD)/rbdw.dr $(MD)/dwio.sb $(MD)/ddx0.dd \
 		$(MD)/scf.mn $(MD)/vtio.dr \
 		$(MD)/keydrv_cc3.sb $(MD)/joydrv_joy.sb $(MD)/snddrv_cc3.sb \
 		$(MD)/covdg_small.io $(MD)/term_vdg.dt \
 		$(MD)/vrn.dr $(MD)/vi.dd \
-		$(MD)/clock_60hz $(MD)/clock2_dw3 $(MD)/sysgo_dd
+		$(MD)/clock_60hz $(MD)/clock2_dw $(MD)/sysgo_dd
 
 BOOTCMDS	= $(LEVEL2)/coco3/cmds/shell_21 $(LEVEL2)/coco3/cmds/date \
 		$(LEVEL2)/coco3/cmds/echo $(LEVEL2)/coco3/cmds/link \
@@ -49,7 +49,7 @@
 
 TEXTFILES_D1	= startup tOC_80d.txt
 TEXTFILES	= startup tOC_80d.txt
-TEXTFILES_DW3	= startup tOC_dw3.txt
+TEXTFILES_DW	= startup tOC_dw.txt
 
 SUPPORTFILES_D1	= logDir object picDir sndDir viewDir vol.0 \
 		vol.1 vol.6 vol.9 vol.11 words.tok
@@ -58,7 +58,7 @@
 
 SUPPORTFILES_D3	= object vol.0 vol.4 vol.5 vol.10 vol.11
 
-SUPPORTFILES_DW3	= logDir object picDir sndDir viewDir vol.0 \
+SUPPORTFILES_DW	= logDir object picDir sndDir viewDir vol.0 \
 		vol.1 vol.2 vol.3 vol.4 vol.5 vol.6 vol.9 vol.10 \
 		vol.11 words.tok
 
@@ -70,40 +70,40 @@
 	$(RM) $(ALLOBJS)
 
 dsk:	all
-	$(RM) $(DISK_1_80D) $(DISK_2_80D) $(DISK_3_80D) $(DISK_DW3)
+	$(RM) $(DISK_1_80D) $(DISK_2_80D) $(DISK_3_80D) $(DISK_DW)
 	$(CD) $(LEVEL2)/coco3; make
 	$(OS9FORMAT_DS80) -q $(DISK_1_80D) -n$(DISK_1_80D_NAME)
 	$(MERGE) $(OS9BOOT_80D)>os9boot_80d
 	$(MERGE) $(KERNEL)>kernel_1773
-	$(OS9FORMAT_DW3) -q $(DISK_DW3) -n$(DISK_DW3_NAME)
-	$(MERGE) $(BOOTFILE_DW3)>os9boot_dw3
-	$(MERGE) $(KERNEL_DW3)>kernel_dw3
+	$(OS9FORMAT_DW) -q $(DISK_DW) -n$(DISK_DW_NAME)
+	$(MERGE) $(BOOTFILE_DW)>os9boot_dw
+	$(MERGE) $(KERNEL_DW)>kernel_dw
 	$(OS9GEN) $(DISK_1_80D) -b=os9boot_80d -t=kernel_1773
-	$(OS9GEN) $(DISK_DW3) -b=os9boot_dw3 -t=kernel_dw3
-	$(RM) os9boot_80d os9boot_80d kernel_1773 os9boot_dw3 kernel_dw3
+	$(OS9GEN) $(DISK_DW) -b=os9boot_dw -t=kernel_dw
+	$(RM) os9boot_80d os9boot_80d kernel_1773 os9boot_dw kernel_dw
 	$(MAKDIR) $(DISK_1_80D),CMDS
-	$(MAKDIR) $(DISK_DW3),CMDS
+	$(MAKDIR) $(DISK_DW),CMDS
 	$(CP) $(CMDS) $(DISK_1_80D),CMDS
-	$(CP) $(CMDS) $(DISK_DW3),CMDS
+	$(CP) $(CMDS) $(DISK_DW),CMDS
 	$(foreach file, $(CMDS), $(OS9ATTR_EXEC) $(DISK_1_80D),CMDS/$(file);)
-	$(foreach file, $(CMDS), $(OS9ATTR_EXEC) $(DISK_DW3),CMDS/$(file);)
+	$(foreach file, $(CMDS), $(OS9ATTR_EXEC) $(DISK_DW),CMDS/$(file);)
 	$(MERGE) $(BOOTCMDS)>shell
 	$(CP) shell $(DISK_1_80D),CMDS
-	$(CP) shell $(DISK_DW3),CMDS
+	$(CP) shell $(DISK_DW),CMDS
 	$(RM) shell
 	$(OS9ATTR) $(DISK_1_80D),CMDS/shell -e -pe -pr -e -w -r
-	$(OS9ATTR) $(DISK_DW3),CMDS/shell -e -pe -pr -e -w -r
+	$(OS9ATTR) $(DISK_DW),CMDS/shell -e -pe -pr -e -w -r
 	$(OS9RENAME) $(DISK_1_80D),CMDS/sierra AutoEx
-	$(OS9RENAME) $(DISK_DW3),CMDS/sierra AutoEx
+	$(OS9RENAME) $(DISK_DW),CMDS/sierra AutoEx
 	$(CPL) $(TEXTFILES_D1) $(DISK_1_80D),.
 	$(OS9RENAME) $(DISK_1_80D),tOC_80d.txt tOC.txt
-	$(CPL) $(TEXTFILES_DW3) $(DISK_DW3),.
-	$(OS9RENAME) $(DISK_DW3),tOC_dw3.txt tOC.txt
+	$(CPL) $(TEXTFILES_DW) $(DISK_DW),.
+	$(OS9RENAME) $(DISK_DW),tOC_dw.txt tOC.txt
 	$(CP) $(SUPPORTFILES_D1) $(DISK_1_80D),.
-	$(CP) $(SUPPORTFILES_DW3) $(DISK_DW3),.
+	$(CP) $(SUPPORTFILES_DW) $(DISK_DW),.
 	$(RM) tocgen
 	tocgen $(DISK_1_80D),tOC.txt $(DISK_1_80D),tOC
-	tocgen $(DISK_DW3),tOC.txt $(DISK_DW3),tOC
+	tocgen $(DISK_DW),tOC.txt $(DISK_DW),tOC
 	$(OS9FORMAT_DS80) -q $(DISK_2_80D) -n$(DISK_2_80D_NAME)
 	$(CP) $(SUPPORTFILES_D2) $(DISK_2_80D),.
 	$(OS9FORMAT_DS80) -q $(DISK_3_80D) -n$(DISK_3_80D_NAME)
--- a/3rdparty/packages/sierra/leisuresuitlarry/makefile	Mon Jul 30 17:31:30 2012 -0500
+++ b/3rdparty/packages/sierra/leisuresuitlarry/makefile	Mon Jul 30 19:35:05 2012 -0500
@@ -8,17 +8,17 @@
 DEPENDS		= ./makefile
 
 DSK_FLOPPY	= leisuresuitlarry.dsk
-DSK_DW3		= leisuresuitlarry_dw3.dsk
+DSK_DW		= leisuresuitlarry_dw.dsk
 DSK_NAME	= "Leisure Suit Larry"
 
-DSKS		= $(DSK_FLOPPY) $(DSK_DW3)
+DSKS		= $(DSK_FLOPPY) $(DSK_DW)
 
 CMDS		= sierra mnln scrn shdw tocgen
 MD		= $(LEVEL2)/coco3/modules
 
 # We make our own bootfile and kernel track
 KERNEL_FLOPPY	= $(MD)/rel_32 $(MD)/boot_1773_6ms $(MD)/krn
-KERNEL_DW3	= $(MD)/rel_32 $(MD)/boot_dw3 $(MD)/krn
+KERNEL_DW	= $(MD)/rel_32 $(MD)/boot_dw $(MD)/krn
 BOOTFILE_FLOPPY	= $(MD)/krnp2 $(MD)/ioman $(MD)/init \
 		$(MD)/rbf.mn \
 		$(MD)/rb1773.dr $(MD)/ddd0_40d.dd \
@@ -27,14 +27,14 @@
 		$(MD)/covdg_small.io $(MD)/term_vdg.dt \
 		$(MD)/vrn.dr $(MD)/vi.dd \
 		$(MD)/clock_60hz $(MD)/clock2_soft $(MD)/sysgo_dd
-BOOTFILE_DW3	= $(MD)/krnp2 $(MD)/ioman $(MD)/init \
+BOOTFILE_DW	= $(MD)/krnp2 $(MD)/ioman $(MD)/init \
 		$(MD)/rbf.mn \
-		$(MD)/rbdw3.dr $(MD)/dw3.sb $(MD)/ddx0.dd \
+		$(MD)/rbdw.dr $(MD)/dwio.sb $(MD)/ddx0.dd \
 		$(MD)/scf.mn $(MD)/vtio.dr \
 		$(MD)/keydrv_cc3.sb $(MD)/joydrv_joy.sb $(MD)/snddrv_cc3.sb \
 		$(MD)/covdg_small.io $(MD)/term_vdg.dt \
 		$(MD)/vrn.dr $(MD)/vi.dd \
-		$(MD)/clock_60hz $(MD)/clock2_dw3 $(MD)/sysgo_dd
+		$(MD)/clock_60hz $(MD)/clock2_dw $(MD)/sysgo_dd
 
 SUPPORTFILES	= logDir object picDir sndDir viewDir vol.0 \
 		vol.1 vol.2 vol.3 vol.4 words.tok
@@ -66,12 +66,12 @@
 	$(MOVE) toctmp tocgen
 	$(foreach file, $(SUPPORTFILES), $(OS9ATTR_TEXT) $@,$(file);)
 
-$(DSK_DW3):
+$(DSK_DW):
 	$(RM) $@
 	$(CD) $(LEVEL2)/coco3; make
-	$(OS9FORMAT_DW3) -q $@ -n$(DSK_NAME)
-	$(MERGE) $(BOOTFILE_DW3)>os9boot
-	$(MERGE) $(KERNEL_DW3)>kernel
+	$(OS9FORMAT_DW) -q $@ -n$(DSK_NAME)
+	$(MERGE) $(BOOTFILE_DW)>os9boot
+	$(MERGE) $(KERNEL_DW)>kernel
 	$(OS9GEN) $@ -b=os9boot -t=kernel
 	$(RM) os9boot kernel
 	$(MAKDIR) $@,CMDS
--- a/3rdparty/packages/sierra/manhunter1/makefile	Mon Jul 30 17:31:30 2012 -0500
+++ b/3rdparty/packages/sierra/manhunter1/makefile	Mon Jul 30 19:35:05 2012 -0500
@@ -10,21 +10,21 @@
 DISK_1_80D	= manhunter1_d1_80d.dsk
 DISK_2_80D	= manhunter1_d2_80d.dsk
 DISK_3_80D	= manhunter1_d3_80d.dsk
-DISK_DW3	= manhunter1_dw3.dsk
+DISK_DW	= manhunter1_dw.dsk
 
-DSKS		= $(DISK_1_80D) $(DISK_2_80D) $(DISK_3_80D) $(DISK_DW3)
+DSKS		= $(DISK_1_80D) $(DISK_2_80D) $(DISK_3_80D) $(DISK_DW)
 
 DISK_1_80D_NAME = "Manhunter I Disk 1"
 DISK_2_80D_NAME = "Manhunter I Disk 2"
 DISK_3_80D_NAME = "Manhunter I Disk 3"
-DISK_DW3_NAME = "Manhunter I"
+DISK_DW_NAME = "Manhunter I"
 
 CMDS		= sierra mnln scrn shdw tocgen
 MD		= $(LEVEL2)/coco3/modules
 
 # We make our own bootfile and kernel track
 KERNEL		= $(MD)/rel_32 $(MD)/boot_1773_6ms $(MD)/krn
-KERNEL_DW3	= $(MD)/rel_32 $(MD)/boot_dw3 $(MD)/krn
+KERNEL_DW	= $(MD)/rel_32 $(MD)/boot_dw $(MD)/krn
 
 OS9BOOT_80D	= $(MD)/krnp2 $(MD)/ioman $(MD)/init \
 		$(MD)/rbf.mn \
@@ -35,14 +35,14 @@
 		$(MD)/vrn.dr $(MD)/vi.dd \
 		$(MD)/clock_60hz $(MD)/clock2_soft $(MD)/sysgo_dd
 
-OS9BOOT_DW3 = $(MD)/krnp2 $(MD)/ioman $(MD)/init \
+OS9BOOT_DW = $(MD)/krnp2 $(MD)/ioman $(MD)/init \
 		$(MD)/rbf.mn \
-		$(MD)/rbdw3.dr $(MD)/dw3.sb $(MD)/ddx0.dd \
+		$(MD)/rbdw.dr $(MD)/dwio.sb $(MD)/ddx0.dd \
 		$(MD)/scf.mn $(MD)/vtio.dr \
 		$(MD)/keydrv_cc3.sb $(MD)/joydrv_joy.sb $(MD)/snddrv_cc3.sb \
 		$(MD)/covdg_small.io $(MD)/term_vdg.dt \
 		$(MD)/vrn.dr $(MD)/vi.dd \
-		$(MD)/clock_60hz $(MD)/clock2_dw3 $(MD)/sysgo_dd
+		$(MD)/clock_60hz $(MD)/clock2_dw $(MD)/sysgo_dd
 
 BOOTCMDS	= $(LEVEL2)/coco3/cmds/shell_21 $(LEVEL2)/coco3/cmds/date \
 		$(LEVEL2)/coco3/cmds/echo $(LEVEL2)/coco3/cmds/link \
@@ -50,7 +50,7 @@
 
 TEXTFILES_D1	= ../startup tOC_80d.txt
 TEXTFILES	= ../startup tOC_80d.txt
-TEXTFILES_DW3	= ../startup tOC_dw3.txt
+TEXTFILES_DW	= ../startup tOC_dw.txt
 
 SUPPORTFILES_D1	= logDir object picDir sndDir viewDir vol.0 \
 		vol.1 vol.2 vol.9 vol.10 vol.11 vol.12 words.tok
@@ -59,7 +59,7 @@
 
 SUPPORTFILES_D3	= object vol.0 vol.5 vol.9 vol.10 vol.11 vol.12
 
-SUPPORTFILES_DW3	= logDir object picDir sndDir viewDir vol.0 \
+SUPPORTFILES_DW	= logDir object picDir sndDir viewDir vol.0 \
 		vol.1 vol.2 vol.3 vol.4 vol.5 vol.9 vol.10 vol.11 vol.12 words.tok
 
 ALLOBJS		= $(CMDS)
@@ -70,40 +70,40 @@
 	$(RM) $(ALLOBJS)
 
 dsk:	all
-	$(RM) $(DISK_1_80D) $(DISK_2_80D) $(DISK_3_80D) $(DISK_DW3)
+	$(RM) $(DISK_1_80D) $(DISK_2_80D) $(DISK_3_80D) $(DISK_DW)
 	$(CD) $(LEVEL2)/coco3; make
 	$(OS9FORMAT_DS80) -q $(DISK_1_80D) -n$(DISK_1_80D_NAME)
-	$(OS9FORMAT_DW3) -q $(DISK_DW3) -n$(DISK_DW3_NAME)
+	$(OS9FORMAT_DW) -q $(DISK_DW) -n$(DISK_DW_NAME)
 	$(MERGE) $(OS9BOOT_80D)>os9boot_80d
-	$(MERGE) $(OS9BOOT_DW3)>os9boot_dw3
+	$(MERGE) $(OS9BOOT_DW)>os9boot_dw
 	$(MERGE) $(KERNEL)>kernel_1773
-	$(MERGE) $(KERNEL_DW3)>kernel_dw3
+	$(MERGE) $(KERNEL_DW)>kernel_dw
 	$(OS9GEN) $(DISK_1_80D) -b=os9boot_80d -t=kernel_1773
-	$(OS9GEN) $(DISK_DW3) -b=os9boot_dw3 -t=kernel_dw3
-	$(RM) os9boot_80d os9boot_80d kernel_1773 os9boot_dw3 kernel_dw3
+	$(OS9GEN) $(DISK_DW) -b=os9boot_dw -t=kernel_dw
+	$(RM) os9boot_80d os9boot_80d kernel_1773 os9boot_dw kernel_dw
 	$(MAKDIR) $(DISK_1_80D),CMDS
-	$(MAKDIR) $(DISK_DW3),CMDS
+	$(MAKDIR) $(DISK_DW),CMDS
 	$(CP) $(CMDS) $(DISK_1_80D),CMDS
-	$(CP) $(CMDS) $(DISK_DW3),CMDS
+	$(CP) $(CMDS) $(DISK_DW),CMDS
 	$(foreach file, $(CMDS), $(OS9ATTR_EXEC) $(DISK_1_80D),CMDS/$(file);)
-	$(foreach file, $(CMDS), $(OS9ATTR_EXEC) $(DISK_DW3),CMDS/$(file);)
+	$(foreach file, $(CMDS), $(OS9ATTR_EXEC) $(DISK_DW),CMDS/$(file);)
 	$(MERGE) $(BOOTCMDS)>shell
 	$(CP) shell $(DISK_1_80D),CMDS
-	$(CP) shell $(DISK_DW3),CMDS
+	$(CP) shell $(DISK_DW),CMDS
 	$(RM) shell
 	$(OS9ATTR) $(DISK_1_80D),CMDS/shell -e -pe -pr -e -w -r
-	$(OS9ATTR) $(DISK_DW3),CMDS/shell -e -pe -pr -e -w -r
+	$(OS9ATTR) $(DISK_DW),CMDS/shell -e -pe -pr -e -w -r
 	$(OS9RENAME) $(DISK_1_80D),CMDS/sierra AutoEx
-	$(OS9RENAME) $(DISK_DW3),CMDS/sierra AutoEx
+	$(OS9RENAME) $(DISK_DW),CMDS/sierra AutoEx
 	$(CPL) $(TEXTFILES_D1) $(DISK_1_80D),.
-	$(CPL) $(TEXTFILES_DW3) $(DISK_DW3),.
+	$(CPL) $(TEXTFILES_DW) $(DISK_DW),.
 	$(OS9RENAME) $(DISK_1_80D),tOC_80d.txt tOC.txt
-	$(OS9RENAME) $(DISK_DW3),tOC_dw3.txt tOC.txt
+	$(OS9RENAME) $(DISK_DW),tOC_dw.txt tOC.txt
 	$(CP) $(SUPPORTFILES_D1) $(DISK_1_80D),.
-	$(CP) $(SUPPORTFILES_DW3) $(DISK_DW3),.
+	$(CP) $(SUPPORTFILES_DW) $(DISK_DW),.
 	$(RM) tocgen
 	tocgen $(DISK_1_80D),tOC.txt $(DISK_1_80D),tOC
-	tocgen $(DISK_DW3),tOC.txt $(DISK_DW3),tOC
+	tocgen $(DISK_DW),tOC.txt $(DISK_DW),tOC
 	$(OS9FORMAT_DS80) -q $(DISK_2_80D) -n$(DISK_2_80D_NAME)
 	$(CP) $(SUPPORTFILES_D2) $(DISK_2_80D),.
 	$(OS9FORMAT_DS80) -q $(DISK_3_80D) -n$(DISK_3_80D_NAME)
--- a/3rdparty/packages/sierra/manhunter2/makefile	Mon Jul 30 17:31:30 2012 -0500
+++ b/3rdparty/packages/sierra/manhunter2/makefile	Mon Jul 30 19:35:05 2012 -0500
@@ -10,21 +10,21 @@
 DISK_1_80D	= manhunter2_d1_80d.dsk
 DISK_2_80D	= manhunter2_d2_80d.dsk
 DISK_3_80D	= manhunter2_d3_80d.dsk
-DISK_DW3	= manhunter2_dw3.dsk
+DISK_DW	= manhunter2_dw.dsk
 
-DSKS		= $(DISK_1_80D) $(DISK_2_80D) $(DISK_3_80D) $(DISK_DW3)
+DSKS		= $(DISK_1_80D) $(DISK_2_80D) $(DISK_3_80D) $(DISK_DW)
 
 DISK_1_80D_NAME = "Manhunter II Disk 1"
 DISK_2_80D_NAME = "Manhunter II Disk 2"
 DISK_3_80D_NAME = "Manhunter II Disk 3"
-DISK_DW3_NAME = "Manhunter II"
+DISK_DW_NAME = "Manhunter II"
 
 CMDS		= sierra mnln scrn shdw tocgen
 MD		= $(LEVEL2)/coco3/modules
 
 # We make our own bootfile and kernel track
 KERNEL		= $(MD)/rel_32 $(MD)/boot_1773_6ms $(MD)/krn
-KERNEL_DW3	= $(MD)/rel_32 $(MD)/boot_dw3 $(MD)/krn
+KERNEL_DW	= $(MD)/rel_32 $(MD)/boot_dw $(MD)/krn
 OS9BOOT_80D	= $(MD)/krnp2 $(MD)/ioman $(MD)/init \
 		$(MD)/rbf.mn \
 		$(MD)/rb1773.dr $(MD)/ddd0_80d.dd \
@@ -34,14 +34,14 @@
 		$(MD)/vrn.dr $(MD)/vi.dd \
 		$(MD)/clock_60hz $(MD)/clock2_soft $(MD)/sysgo_dd
 
-OS9BOOT_DW3 = $(MD)/krnp2 $(MD)/ioman $(MD)/init \
+OS9BOOT_DW = $(MD)/krnp2 $(MD)/ioman $(MD)/init \
 		$(MD)/rbf.mn \
-		$(MD)/rbdw3.dr $(MD)/dw3.sb $(MD)/ddx0.dd \
+		$(MD)/rbdw.dr $(MD)/dwio.sb $(MD)/ddx0.dd \
 		$(MD)/scf.mn $(MD)/vtio.dr \
 		$(MD)/keydrv_cc3.sb $(MD)/joydrv_joy.sb $(MD)/snddrv_cc3.sb \
 		$(MD)/covdg_small.io $(MD)/term_vdg.dt \
 		$(MD)/vrn.dr $(MD)/vi.dd \
-		$(MD)/clock_60hz $(MD)/clock2_dw3 $(MD)/sysgo_dd
+		$(MD)/clock_60hz $(MD)/clock2_dw $(MD)/sysgo_dd
 
 BOOTCMDS	= $(LEVEL2)/coco3/cmds/shell_21 $(LEVEL2)/coco3/cmds/date \
 		$(LEVEL2)/coco3/cmds/echo $(LEVEL2)/coco3/cmds/link \
@@ -49,7 +49,7 @@
 
 TEXTFILES_D1	= ../startup tOC_80d.txt
 TEXTFILES	= ../startup tOC_80d.txt
-TEXTFILES_DW3	= ../startup tOC_dw3.txt
+TEXTFILES_DW	= ../startup tOC_dw.txt
 
 SUPPORTFILES_D1	= logDir object picDir sndDir viewDir vol.0 \
 		vol.1 vol.9 vol.10 vol.11 words.tok
@@ -58,7 +58,7 @@
 
 SUPPORTFILES_D3	= object vol.0 vol.3 vol.9 vol.10 vol.11
 
-SUPPORTFILES_DW3	= logDir object picDir sndDir viewDir vol.0 \
+SUPPORTFILES_DW	= logDir object picDir sndDir viewDir vol.0 \
 		vol.1 vol.2 vol.3 vol.9 vol.10 vol.11 words.tok
 
 ALLOBJS		= $(CMDS)
@@ -69,40 +69,40 @@
 	$(RM) $(ALLOBJS)
 
 dsk:	all
-	$(RM) $(DISK_1_80D) $(DISK_2_80D) $(DISK_3_80D) $(DISK_DW3)
+	$(RM) $(DISK_1_80D) $(DISK_2_80D) $(DISK_3_80D) $(DISK_DW)
 	$(CD) $(LEVEL2)/coco3; make
 	$(OS9FORMAT_DS80) -q $(DISK_1_80D) -n$(DISK_1_80D_NAME)
-	$(OS9FORMAT_DW3) -q $(DISK_DW3) -n$(DISK_DW3_NAME)
+	$(OS9FORMAT_DW) -q $(DISK_DW) -n$(DISK_DW_NAME)
 	$(MERGE) $(OS9BOOT_80D)>os9boot_80d
-	$(MERGE) $(OS9BOOT_DW3)>os9boot_dw3
+	$(MERGE) $(OS9BOOT_DW)>os9boot_dw
 	$(MERGE) $(KERNEL)>kernel_1773
-	$(MERGE) $(KERNEL_DW3)>kernel_dw3
+	$(MERGE) $(KERNEL_DW)>kernel_dw
 	$(OS9GEN) $(DISK_1_80D) -b=os9boot_80d -t=kernel_1773
-	$(OS9GEN) $(DISK_DW3) -b=os9boot_dw3 -t=kernel_dw3
-	$(RM) os9boot_80d os9boot_80d os9boot_dw3 kernel_1773 kernel_dw3
+	$(OS9GEN) $(DISK_DW) -b=os9boot_dw -t=kernel_dw
+	$(RM) os9boot_80d os9boot_80d os9boot_dw kernel_1773 kernel_dw
 	$(MAKDIR) $(DISK_1_80D),CMDS
-	$(MAKDIR) $(DISK_DW3),CMDS
+	$(MAKDIR) $(DISK_DW),CMDS
 	$(CP) $(CMDS) $(DISK_1_80D),CMDS
-	$(CP) $(CMDS) $(DISK_DW3),CMDS
+	$(CP) $(CMDS) $(DISK_DW),CMDS
 	$(foreach file, $(CMDS), $(OS9ATTR_EXEC) $(DISK_1_80D),CMDS/$(file);)
-	$(foreach file, $(CMDS), $(OS9ATTR_EXEC) $(DISK_DW3),CMDS/$(file);)
+	$(foreach file, $(CMDS), $(OS9ATTR_EXEC) $(DISK_DW),CMDS/$(file);)
 	$(MERGE) $(BOOTCMDS)>shell
 	$(CP) shell $(DISK_1_80D),CMDS
-	$(CP) shell $(DISK_DW3),CMDS
+	$(CP) shell $(DISK_DW),CMDS
 	$(RM) shell
 	$(OS9ATTR) $(DISK_1_80D),CMDS/shell -e -pe -pr -e -w -r
-	$(OS9ATTR) $(DISK_DW3),CMDS/shell -e -pe -pr -e -w -r
+	$(OS9ATTR) $(DISK_DW),CMDS/shell -e -pe -pr -e -w -r
 	$(OS9RENAME) $(DISK_1_80D),CMDS/sierra AutoEx
-	$(OS9RENAME) $(DISK_DW3),CMDS/sierra AutoEx
+	$(OS9RENAME) $(DISK_DW),CMDS/sierra AutoEx
 	$(CPL) $(TEXTFILES_D1) $(DISK_1_80D),.
-	$(CPL) $(TEXTFILES_DW3) $(DISK_DW3),.
+	$(CPL) $(TEXTFILES_DW) $(DISK_DW),.
 	$(OS9RENAME) $(DISK_1_80D),tOC_80d.txt tOC.txt
-	$(OS9RENAME) $(DISK_DW3),tOC_dw3.txt tOC.txt
+	$(OS9RENAME) $(DISK_DW),tOC_dw.txt tOC.txt
 	$(CP) $(SUPPORTFILES_D1) $(DISK_1_80D),.
-	$(CP) $(SUPPORTFILES_DW3) $(DISK_DW3),.
+	$(CP) $(SUPPORTFILES_DW) $(DISK_DW),.
 	$(RM) tocgen
 	tocgen $(DISK_1_80D),tOC.txt $(DISK_1_80D),tOC
-	tocgen $(DISK_DW3),tOC.txt $(DISK_DW3),tOC
+	tocgen $(DISK_DW),tOC.txt $(DISK_DW),tOC
 	$(OS9FORMAT_DS80) -q $(DISK_2_80D) -n$(DISK_2_80D_NAME)
 	$(CP) $(SUPPORTFILES_D2) $(DISK_2_80D),.
 	$(OS9FORMAT_DS80) -q $(DISK_3_80D) -n$(DISK_3_80D_NAME)
--- a/3rdparty/packages/sierra/policequest1/makefile	Mon Jul 30 17:31:30 2012 -0500
+++ b/3rdparty/packages/sierra/policequest1/makefile	Mon Jul 30 19:35:05 2012 -0500
@@ -10,21 +10,21 @@
 DISK_1_40D	= policequest1_d1_40d.dsk
 DISK_2_40D	= policequest1_d2_40d.dsk
 DISK_3_40D	= policequest1_d3_40d.dsk
-DISK_DW3	= policequest1_dw3.dsk
+DISK_DW	= policequest1_dw.dsk
 
-DSKS		= $(DISK_1_40D) $(DISK_2_40D) $(DISK_3_40D) $(DISK_DW3)
+DSKS		= $(DISK_1_40D) $(DISK_2_40D) $(DISK_3_40D) $(DISK_DW)
 
 DISK_1_40D_NAME = "Police Quest I Disk 1"
 DISK_2_40D_NAME = "Police Quest I Disk 2"
 DISK_3_40D_NAME = "Police Quest I Disk 3"
-DISK_DW3_NAME	= "Police Quest I Disk"
+DISK_DW_NAME	= "Police Quest I Disk"
 
 CMDS		= sierra mnln scrn shdw tocgen
 MD		= $(LEVEL2)/coco3/modules
 
 # We make our own bootfile and kernel track
 KERNEL		= $(MD)/rel_32 $(MD)/boot_1773_6ms $(MD)/krn
-KERNEL_DW3	= $(MD)/rel_32 $(MD)/boot_dw3 $(MD)/krn
+KERNEL_DW	= $(MD)/rel_32 $(MD)/boot_dw $(MD)/krn
 OS9BOOT_40D	= $(MD)/krnp2 $(MD)/ioman $(MD)/init \
 		$(MD)/rbf.mn \
 		$(MD)/rb1773.dr $(MD)/ddd0_40d.dd \
@@ -33,14 +33,14 @@
 		$(MD)/covdg_small.io $(MD)/term_vdg.dt \
 		$(MD)/vrn.dr $(MD)/vi.dd \
 		$(MD)/clock_60hz $(MD)/clock2_soft $(MD)/sysgo_dd
-OS9BOOT_DW3 = $(MD)/krnp2 $(MD)/ioman $(MD)/init \
+OS9BOOT_DW = $(MD)/krnp2 $(MD)/ioman $(MD)/init \
 		$(MD)/rbf.mn \
-		$(MD)/rbdw3.dr $(MD)/dw3.sb $(MD)/ddx0.dd \
+		$(MD)/rbdw.dr $(MD)/dwio.sb $(MD)/ddx0.dd \
 		$(MD)/scf.mn $(MD)/vtio.dr \
 		$(MD)/keydrv_cc3.sb $(MD)/joydrv_joy.sb $(MD)/snddrv_cc3.sb \
 		$(MD)/covdg_small.io $(MD)/term_vdg.dt \
 		$(MD)/vrn.dr $(MD)/vi.dd \
-		$(MD)/clock_60hz $(MD)/clock2_dw3 $(MD)/sysgo_dd
+		$(MD)/clock_60hz $(MD)/clock2_dw $(MD)/sysgo_dd
 
 BOOTCMDS	= $(LEVEL2)/coco3/cmds/shell_21 $(LEVEL2)/coco3/cmds/date \
 		$(LEVEL2)/coco3/cmds/echo $(LEVEL2)/coco3/cmds/link \
@@ -48,7 +48,7 @@
 
 TEXTFILES_D1	= ../startup tOC_40d.txt
 TEXTFILES	= ../startup tOC_80d.txt
-TEXTFILES_DW3	= ../startup tOC_dw3.txt
+TEXTFILES_DW	= ../startup tOC_dw.txt
 
 SUPPORTFILES_D1	= logDir object picDir sndDir viewDir vol.0 \
 		vol.1 words.tok
@@ -68,40 +68,40 @@
 	$(RM) $(ALLOBJS)
 
 dsk:	all
-	$(RM) $(DISK_1_40D) $(DISK_2_40D) $(DISK_3_40D) $(DISK_DW3)
+	$(RM) $(DISK_1_40D) $(DISK_2_40D) $(DISK_3_40D) $(DISK_DW)
 	$(CD) $(LEVEL2)/coco3; make
 	$(OS9FORMAT_DS40) -q $(DISK_1_40D) -n$(DISK_1_40D_NAME)
-	$(OS9FORMAT_DW3) -q $(DISK_DW3) -n$(DISK_DW3_NAME)
+	$(OS9FORMAT_DW) -q $(DISK_DW) -n$(DISK_DW_NAME)
 	$(MERGE) $(OS9BOOT_40D)>os9boot_40d
-	$(MERGE) $(OS9BOOT_DW3)>os9boot_dw3
+	$(MERGE) $(OS9BOOT_DW)>os9boot_dw
 	$(MERGE) $(KERNEL)>kernel_1773
-	$(MERGE) $(KERNEL_DW3)>kernel_dw3
+	$(MERGE) $(KERNEL_DW)>kernel_dw
 	$(OS9GEN) $(DISK_1_40D) -b=os9boot_40d -t=kernel_1773
-	$(OS9GEN) $(DISK_DW3) -b=os9boot_dw3 -t=kernel_dw3
-	$(RM) os9boot_40d os9boot_80d os9boot_dw3 kernel_1773 kernel_dw3
+	$(OS9GEN) $(DISK_DW) -b=os9boot_dw -t=kernel_dw
+	$(RM) os9boot_40d os9boot_80d os9boot_dw kernel_1773 kernel_dw
 	$(MAKDIR) $(DISK_1_40D),CMDS
-	$(MAKDIR) $(DISK_DW3),CMDS
+	$(MAKDIR) $(DISK_DW),CMDS
 	$(CP) $(CMDS) $(DISK_1_40D),CMDS
-	$(CP) $(CMDS) $(DISK_DW3),CMDS
+	$(CP) $(CMDS) $(DISK_DW),CMDS
 	$(foreach file, $(CMDS), $(OS9ATTR_EXEC) $(DISK_1_40D),CMDS/$(file);)
-	$(foreach file, $(CMDS), $(OS9ATTR_EXEC) $(DISK_DW3),CMDS/$(file);)
+	$(foreach file, $(CMDS), $(OS9ATTR_EXEC) $(DISK_DW),CMDS/$(file);)
 	$(MERGE) $(BOOTCMDS)>shell
 	$(CP) shell $(DISK_1_40D),CMDS
-	$(CP) shell $(DISK_DW3),CMDS
+	$(CP) shell $(DISK_DW),CMDS
 	$(RM) shell
 	$(OS9ATTR) $(DISK_1_40D),CMDS/shell -e -pe -pr -e -w -r
-	$(OS9ATTR) $(DISK_DW3),CMDS/shell -e -pe -pr -e -w -r
+	$(OS9ATTR) $(DISK_DW),CMDS/shell -e -pe -pr -e -w -r
 	$(OS9RENAME) $(DISK_1_40D),CMDS/sierra AutoEx
-	$(OS9RENAME) $(DISK_DW3),CMDS/sierra AutoEx
+	$(OS9RENAME) $(DISK_DW),CMDS/sierra AutoEx
 	$(CPL) $(TEXTFILES_D1) $(DISK_1_40D),.
-	$(CPL) $(TEXTFILES_DW3) $(DISK_DW3),.
+	$(CPL) $(TEXTFILES_DW) $(DISK_DW),.
 	$(OS9RENAME) $(DISK_1_40D),tOC_40d.txt tOC.txt
-	$(OS9RENAME) $(DISK_DW3),tOC_dw3.txt tOC.txt
+	$(OS9RENAME) $(DISK_DW),tOC_dw.txt tOC.txt
 	$(CP) $(SUPPORTFILES_D1) $(DISK_1_40D),.
-	$(CP) $(SUPPORTFILES) $(DISK_DW3),.
+	$(CP) $(SUPPORTFILES) $(DISK_DW),.
 	$(RM) tocgen
 	tocgen $(DISK_1_40D),tOC.txt $(DISK_1_40D),tOC
-	tocgen $(DISK_DW3),tOC.txt $(DISK_DW3),tOC
+	tocgen $(DISK_DW),tOC.txt $(DISK_DW),tOC
 	$(OS9FORMAT_DS40) -q $(DISK_2_40D) -n$(DISK_2_40D_NAME)
 	$(CP) $(SUPPORTFILES_D2) $(DISK_2_40D),.
 	$(OS9FORMAT_DS40) -q $(DISK_3_40D) -n$(DISK_3_40D_NAME)
--- a/3rdparty/packages/sierra/spacequest0/makefile	Mon Jul 30 17:31:30 2012 -0500
+++ b/3rdparty/packages/sierra/spacequest0/makefile	Mon Jul 30 19:35:05 2012 -0500
@@ -12,23 +12,23 @@
 DISK_3_40D	= spacequest0_d3_40d.dsk
 DISK_1_80D	= spacequest0_d1_80d.dsk
 DISK_2_80D	= spacequest0_d2_80d.dsk
-DISK_DW3	= spacequest0_dw3.dsk
+DISK_DW	= spacequest0_dw.dsk
 
-DSKS		= $(DISK_1_40D) $(DISK_2_40D) $(DISK_3_40D) $(DISK_1_80D) $(DISK_2_80D) $(DISK_DW3)
+DSKS		= $(DISK_1_40D) $(DISK_2_40D) $(DISK_3_40D) $(DISK_1_80D) $(DISK_2_80D) $(DISK_DW)
 
 DISK_1_40D_NAME	= "Space Quest 0 Disk 1"
 DISK_2_40D_NAME	= "Space Quest 0 Disk 2"
 DISK_3_40D_NAME	= "Space Quest 0 Disk 3"
 DISK_1_80D_NAME	= "Space Quest 0 Disk 1"
 DISK_2_80D_NAME	= "Space Quest 0 Disk 2"
-DISK_DW3_NAME	= "Space Quest 0"
+DISK_DW_NAME	= "Space Quest 0"
 
 CMDS		= sierra mnln scrn shdw tocgen
 MD		= $(LEVEL2)/coco3/modules
 
 # We make our own bootfile and kernel track
 KERNEL		= $(MD)/rel_32 $(MD)/boot_1773_6ms $(MD)/krn
-KERNEL_DW3		= $(MD)/rel_32 $(MD)/boot_dw3 $(MD)/krn
+KERNEL_DW		= $(MD)/rel_32 $(MD)/boot_dw $(MD)/krn
 OS9BOOT_40D	= $(MD)/krnp2 $(MD)/ioman $(MD)/init \
 		$(MD)/rbf.mn \
 		$(MD)/rb1773.dr $(MD)/ddd0_40d.dd \
@@ -47,14 +47,14 @@
 		$(MD)/vrn.dr $(MD)/vi.dd \
 		$(MD)/clock_60hz $(MD)/clock2_soft $(MD)/sysgo_dd
 
-OS9BOOT_DW3 = $(MD)/krnp2 $(MD)/ioman $(MD)/init \
+OS9BOOT_DW = $(MD)/krnp2 $(MD)/ioman $(MD)/init \
 		$(MD)/rbf.mn \
-		$(MD)/rbdw3.dr $(MD)/dw3.sb $(MD)/ddx0.dd \
+		$(MD)/rbdw.dr $(MD)/dwio.sb $(MD)/ddx0.dd \
 		$(MD)/scf.mn $(MD)/vtio.dr \
 		$(MD)/keydrv_cc3.sb $(MD)/joydrv_joy.sb $(MD)/snddrv_cc3.sb \
 		$(MD)/covdg_small.io $(MD)/term_vdg.dt \
 		$(MD)/vrn.dr $(MD)/vi.dd \
-		$(MD)/clock_60hz $(MD)/clock2_dw3 $(MD)/sysgo_dd
+		$(MD)/clock_60hz $(MD)/clock2_dw $(MD)/sysgo_dd
 
 BOOTCMDS	= $(LEVEL2)/coco3/cmds/shell_21 $(LEVEL2)/coco3/cmds/date \
 		$(LEVEL2)/coco3/cmds/echo $(LEVEL2)/coco3/cmds/link \
@@ -62,7 +62,7 @@
 
 TEXTFILES_D1	= ../startup tOC_40d.txt
 TEXTFILES	= ../startup tOC_80d.txt
-TEXTFILES_DW3	= ../startup tOC_dw3.txt
+TEXTFILES_DW	= ../startup tOC_dw.txt
 
 SUPPORTFILES_D1	= logDir object picDir sndDir viewDir vol.0 \
 		vol.1 words.tok
@@ -74,7 +74,7 @@
 SUPPORTFILES	= logDir object picDir sndDir viewDir vol.0 \
 		vol.1 vol.2 words.tok
 
-SUPPORTFILES_DW3	= logDir object picDir sndDir viewDir vol.0 \
+SUPPORTFILES_DW	= logDir object picDir sndDir viewDir vol.0 \
 		vol.1 vol.2 vol.3 words.tok
 
 ALLOBJS		= $(CMDS)
@@ -136,29 +136,29 @@
 	$(CP) $(SUPPORTFILES) $(DISK_1_80D),.
 	$(CP) $(SUPPORTFILES_D3) $(DISK_2_80D),.
 
-dsk_dw3:	all
-	$(RM) $(DISK_DW3)
+dsk_dw:	all
+	$(RM) $(DISK_DW)
 	$(CD) $(LEVEL2)/coco3; make
-	$(OS9FORMAT_DW3) -q $(DISK_DW3) -n$(DISK_DW3_NAME)
-	$(MERGE) $(OS9BOOT_DW3)>os9boot_dw3
-	$(MERGE) $(KERNEL_DW3)>kernel_dw3
-	$(OS9GEN) $(DISK_DW3) -b=os9boot_dw3 -t=kernel_dw3
-	$(RM) os9boot_dw3 kernel_dw3
-	$(MAKDIR) $(DISK_DW3),CMDS
-	$(CP) $(CMDS) $(DISK_DW3),CMDS
-	$(foreach file, $(CMDS), $(OS9ATTR_EXEC) $(DISK_DW3),CMDS/$(file);)
+	$(OS9FORMAT_DW) -q $(DISK_DW) -n$(DISK_DW_NAME)
+	$(MERGE) $(OS9BOOT_DW)>os9boot_dw
+	$(MERGE) $(KERNEL_DW)>kernel_dw
+	$(OS9GEN) $(DISK_DW) -b=os9boot_dw -t=kernel_dw
+	$(RM) os9boot_dw kernel_dw
+	$(MAKDIR) $(DISK_DW),CMDS
+	$(CP) $(CMDS) $(DISK_DW),CMDS
+	$(foreach file, $(CMDS), $(OS9ATTR_EXEC) $(DISK_DW),CMDS/$(file);)
 	$(MERGE) $(BOOTCMDS)>shell
-	$(CP) shell $(DISK_DW3),CMDS
+	$(CP) shell $(DISK_DW),CMDS
 	$(RM) shell
-	$(OS9ATTR) $(DISK_DW3),CMDS/shell -e -pe -pr -e -w -r
-	$(OS9RENAME) $(DISK_DW3),CMDS/sierra AutoEx
-	$(CPL) $(TEXTFILES_DW3) $(DISK_DW3),.
-	$(OS9RENAME) $(DISK_DW3),tOC_dw3.txt tOC.txt
+	$(OS9ATTR) $(DISK_DW),CMDS/shell -e -pe -pr -e -w -r
+	$(OS9RENAME) $(DISK_DW),CMDS/sierra AutoEx
+	$(CPL) $(TEXTFILES_DW) $(DISK_DW),.
+	$(OS9RENAME) $(DISK_DW),tOC_dw.txt tOC.txt
 	$(RM) tocgen
-	tocgen $(DISK_DW3),tOC.txt $(DISK_DW3),tOC
-	$(CP) $(SUPPORTFILES) $(DISK_DW3),.
+	tocgen $(DISK_DW),tOC.txt $(DISK_DW),tOC
+	$(CP) $(SUPPORTFILES) $(DISK_DW),.
 
-dsk:	dsk_40d dsk_80d dsk_dw3
+dsk:	dsk_40d dsk_80d dsk_dw
 	$(CD) $(LEVEL2)/coco3; make
 
 dskcopy: dsk
--- a/3rdparty/packages/sierra/spacequest1/makefile	Mon Jul 30 17:31:30 2012 -0500
+++ b/3rdparty/packages/sierra/spacequest1/makefile	Mon Jul 30 19:35:05 2012 -0500
@@ -10,21 +10,21 @@
 DISK_1_40D	= spacequest1_d1_40d.dsk
 DISK_2_40D	= spacequest1_d2_40d.dsk
 DISK_80D	= spacequest1_80d.dsk
-DISK_DW3	= spacequest1_dw3.dsk
+DISK_DW	= spacequest1_dw.dsk
 
-DSKS		= $(DISK_1_40D) $(DISK_2_40D) $(DISK_80D) $(DISK_DW3)
+DSKS		= $(DISK_1_40D) $(DISK_2_40D) $(DISK_80D) $(DISK_DW)
 
 DISK_1_40D_NAME	= "Space Quest I Disk 1"
 DISK_2_40D_NAME	= "Space Quest I Disk 2"
 DISK_80D_NAME	= "Space Quest I"
-DISK_DW3_NAME	= "Space Quest I"
+DISK_DW_NAME	= "Space Quest I"
 
 CMDS		= sierra mnln scrn shdw tocgen
 MD		= $(LEVEL2)/coco3/modules
 
 # We make our own bootfile and kernel track
 KERNEL		= $(MD)/rel_32 $(MD)/boot_1773_6ms $(MD)/krn
-KERNEL_DW3		= $(MD)/rel_32 $(MD)/boot_dw3 $(MD)/krn
+KERNEL_DW		= $(MD)/rel_32 $(MD)/boot_dw $(MD)/krn
 OS9BOOT_40D	= $(MD)/krnp2 $(MD)/ioman $(MD)/init \
 		$(MD)/rbf.mn \
 		$(MD)/rb1773.dr $(MD)/ddd0_40d.dd \
@@ -43,14 +43,14 @@
 		$(MD)/vrn.dr $(MD)/vi.dd \
 		$(MD)/clock_60hz $(MD)/clock2_soft $(MD)/sysgo_dd
 
-OS9BOOT_DW3 = $(MD)/krnp2 $(MD)/ioman $(MD)/init \
+OS9BOOT_DW = $(MD)/krnp2 $(MD)/ioman $(MD)/init \
 		$(MD)/rbf.mn \
-		$(MD)/rbdw3.dr $(MD)/dw3.sb $(MD)/ddx0.dd \
+		$(MD)/rbdw.dr $(MD)/dwio.sb $(MD)/ddx0.dd \
 		$(MD)/scf.mn $(MD)/vtio.dr \
 		$(MD)/keydrv_cc3.sb $(MD)/joydrv_joy.sb $(MD)/snddrv_cc3.sb \
 		$(MD)/covdg_small.io $(MD)/term_vdg.dt \
 		$(MD)/vrn.dr $(MD)/vi.dd \
-		$(MD)/clock_60hz $(MD)/clock2_dw3 $(MD)/sysgo_dd
+		$(MD)/clock_60hz $(MD)/clock2_dw $(MD)/sysgo_dd
 
 BOOTCMDS	= $(LEVEL2)/coco3/cmds/shell_21 $(LEVEL2)/coco3/cmds/date \
 		$(LEVEL2)/coco3/cmds/echo $(LEVEL2)/coco3/cmds/link \
@@ -122,30 +122,30 @@
 	$(MOVE) toctmp tocgen
 	$(CP) $(SUPPORTFILES) $(DISK_80D),.
 
-dsk_dw3:	all
-	$(RM) $(DISK_DW3)
+dsk_dw:	all
+	$(RM) $(DISK_DW)
 	$(CD) $(LEVEL2)/coco3; make
-	$(OS9FORMAT_DW3) -q $(DISK_DW3) -n$(DISK_DW3_NAME)
-	$(MERGE) $(OS9BOOT_DW3)>os9boot_dw3
-	$(MERGE) $(KERNEL_DW3)>kernel_dw3
-	$(OS9GEN) $(DISK_DW3) -b=os9boot_dw3 -t=kernel_dw3
-	$(RM) os9boot_dw3 kernel_dw3
-	$(MAKDIR) $(DISK_DW3),CMDS
-	$(CP) $(CMDS) $(DISK_DW3),CMDS
-	$(foreach file, $(CMDS), $(OS9ATTR_EXEC) $(DISK_DW3),CMDS/$(file);)
+	$(OS9FORMAT_DW) -q $(DISK_DW) -n$(DISK_DW_NAME)
+	$(MERGE) $(OS9BOOT_DW)>os9boot_dw
+	$(MERGE) $(KERNEL_DW)>kernel_dw
+	$(OS9GEN) $(DISK_DW) -b=os9boot_dw -t=kernel_dw
+	$(RM) os9boot_dw kernel_dw
+	$(MAKDIR) $(DISK_DW),CMDS
+	$(CP) $(CMDS) $(DISK_DW),CMDS
+	$(foreach file, $(CMDS), $(OS9ATTR_EXEC) $(DISK_DW),CMDS/$(file);)
 	$(MERGE) $(BOOTCMDS)>shell
-	$(CP) shell $(DISK_DW3),CMDS
+	$(CP) shell $(DISK_DW),CMDS
 	$(RM) shell
-	$(OS9ATTR) $(DISK_DW3),CMDS/shell -e -pe -pr -e -w -r
-	$(OS9RENAME) $(DISK_DW3),CMDS/sierra AutoEx
-	$(CPL) $(TEXTFILES) $(DISK_DW3),.
-	$(OS9RENAME) $(DISK_DW3),tOC_80d.txt tOC.txt
+	$(OS9ATTR) $(DISK_DW),CMDS/shell -e -pe -pr -e -w -r
+	$(OS9RENAME) $(DISK_DW),CMDS/sierra AutoEx
+	$(CPL) $(TEXTFILES) $(DISK_DW),.
+	$(OS9RENAME) $(DISK_DW),tOC_80d.txt tOC.txt
 	$(RM) tocgen
-	tocgen $(DISK_DW3),tOC.txt $(DISK_DW3),tOC
-	$(CP) $(SUPPORTFILES) $(DISK_DW3),.
+	tocgen $(DISK_DW),tOC.txt $(DISK_DW),tOC
+	$(CP) $(SUPPORTFILES) $(DISK_DW),.
 
 
-dsk:	dsk_40d dsk_80d dsk_dw3
+dsk:	dsk_40d dsk_80d dsk_dw
 
 dskcopy: dsk
 	$(CP) $(DSKS) $(DSKDIR)
--- a/3rdparty/packages/sierra/spacequest2/makefile	Mon Jul 30 17:31:30 2012 -0500
+++ b/3rdparty/packages/sierra/spacequest2/makefile	Mon Jul 30 19:35:05 2012 -0500
@@ -11,22 +11,22 @@
 DISK_2_40D	= spacequest2_d2_40d.dsk
 DISK_3_40D	= spacequest2_d3_40d.dsk
 DISK_80D	= spacequest2_80d.dsk
-DISK_DW3	= spacequest3_dw3.dsk
+DISK_DW	= spacequest3_dw.dsk
 
-DSKS		= $(DISK_1_40D) $(DISK_2_40D) $(DISK_3_40D) $(DISK_80D) $(DISK_DW3)
+DSKS		= $(DISK_1_40D) $(DISK_2_40D) $(DISK_3_40D) $(DISK_80D) $(DISK_DW)
 
 DISK_1_40D_NAME = "Space Quest II Disk 1"
 DISK_2_40D_NAME = "Space Quest II Disk 2"
 DISK_3_40D_NAME = "Space Quest II Disk 3"
 DISK_80D_NAME   = "Space Quest II"
-DISK_DW3_NAME   = "Space Quest II"
+DISK_DW_NAME   = "Space Quest II"
 
 CMDS		= sierra mnln scrn shdw tocgen
 MD		= $(LEVEL2)/coco3/modules
 
 # We make our own bootfile and kernel track
 KERNEL		= $(MD)/rel_32 $(MD)/boot_1773_6ms $(MD)/krn
-KERNEL_DW3		= $(MD)/rel_32 $(MD)/boot_dw3 $(MD)/krn
+KERNEL_DW		= $(MD)/rel_32 $(MD)/boot_dw $(MD)/krn
 OS9BOOT_40D	= $(MD)/krnp2 $(MD)/ioman $(MD)/init \
 		$(MD)/rbf.mn \
 		$(MD)/rb1773.dr $(MD)/ddd0_40d.dd \
@@ -45,14 +45,14 @@
 		$(MD)/vrn.dr $(MD)/vi.dd \
 		$(MD)/clock_60hz $(MD)/clock2_soft $(MD)/sysgo_dd
 
-OS9BOOT_DW3 = $(MD)/krnp2 $(MD)/ioman $(MD)/init \
+OS9BOOT_DW = $(MD)/krnp2 $(MD)/ioman $(MD)/init \
 		$(MD)/rbf.mn \
-		$(MD)/rbdw3.dr $(MD)/dw3.sb $(MD)/ddx0.dd \
+		$(MD)/rbdw.dr $(MD)/dwio.sb $(MD)/ddx0.dd \
 		$(MD)/scf.mn $(MD)/vtio.dr \
 		$(MD)/keydrv_cc3.sb $(MD)/joydrv_joy.sb $(MD)/snddrv_cc3.sb \
 		$(MD)/covdg_small.io $(MD)/term_vdg.dt \
 		$(MD)/vrn.dr $(MD)/vi.dd \
-		$(MD)/clock_60hz $(MD)/clock2_dw3 $(MD)/sysgo_dd
+		$(MD)/clock_60hz $(MD)/clock2_dw $(MD)/sysgo_dd
 
 BOOTCMDS	= $(LEVEL2)/coco3/cmds/shell_21 $(LEVEL2)/coco3/cmds/date \
 		$(LEVEL2)/coco3/cmds/echo $(LEVEL2)/coco3/cmds/link \
@@ -128,30 +128,30 @@
 	tocgen $(DISK_80D),tOC.txt $(DISK_80D),tOC
 	$(MOVE) toctmp tocgen
 
-dsk_dw3:	all
-	$(RM) $(DISK_DW3)
+dsk_dw:	all
+	$(RM) $(DISK_DW)
 	$(CD) $(LEVEL2)/coco3; make
-	$(OS9FORMAT_DW3) -q $(DISK_DW3) -n$(DISK_DW3_NAME)
-	$(MERGE) $(OS9BOOT_DW3)>os9boot_dw3
-	$(MERGE) $(KERNEL_DW3)>kernel_dw3
-	$(OS9GEN) $(DISK_DW3) -b=os9boot_dw3 -t=kernel_dw3
-	$(RM) os9boot_dw3 kernel_dw3
-	$(MAKDIR) $(DISK_DW3),CMDS
-	$(CP) $(CMDS) $(DISK_DW3),CMDS
-	$(foreach file, $(CMDS), $(OS9ATTR_EXEC) $(DISK_DW3),CMDS/$(file);)
+	$(OS9FORMAT_DW) -q $(DISK_DW) -n$(DISK_DW_NAME)
+	$(MERGE) $(OS9BOOT_DW)>os9boot_dw
+	$(MERGE) $(KERNEL_DW)>kernel_dw
+	$(OS9GEN) $(DISK_DW) -b=os9boot_dw -t=kernel_dw
+	$(RM) os9boot_dw kernel_dw
+	$(MAKDIR) $(DISK_DW),CMDS
+	$(CP) $(CMDS) $(DISK_DW),CMDS
+	$(foreach file, $(CMDS), $(OS9ATTR_EXEC) $(DISK_DW),CMDS/$(file);)
 	$(MERGE) $(BOOTCMDS)>shell
-	$(CP) shell $(DISK_DW3),CMDS
+	$(CP) shell $(DISK_DW),CMDS
 	$(RM) shell
-	$(OS9ATTR) $(DISK_DW3),CMDS/shell -e -pe -pr -e -w -r
-	$(OS9RENAME) $(DISK_DW3),CMDS/sierra AutoEx
-	$(CPL) $(TEXTFILES) $(DISK_DW3),.
-	$(OS9RENAME) $(DISK_DW3),tOC_80d.txt tOC.txt
+	$(OS9ATTR) $(DISK_DW),CMDS/shell -e -pe -pr -e -w -r
+	$(OS9RENAME) $(DISK_DW),CMDS/sierra AutoEx
+	$(CPL) $(TEXTFILES) $(DISK_DW),.
+	$(OS9RENAME) $(DISK_DW),tOC_80d.txt tOC.txt
 	$(RM) tocgen
-	tocgen $(DISK_DW3),tOC.txt $(DISK_DW3),tOC
-	$(CP) $(SUPPORTFILES) $(DISK_DW3),.
+	tocgen $(DISK_DW),tOC.txt $(DISK_DW),tOC
+	$(CP) $(SUPPORTFILES) $(DISK_DW),.
 
 
-dsk:	dsk_40d dsk_80d dsk_dw3
+dsk:	dsk_40d dsk_80d dsk_dw
 
 dskcopy: dsk
 	$(CP) $(DSKS) $(DSKDIR)
--- a/3rdparty/packages/subsim/makefile	Mon Jul 30 17:31:30 2012 -0500
+++ b/3rdparty/packages/subsim/makefile	Mon Jul 30 19:35:05 2012 -0500
@@ -3,15 +3,15 @@
 DEPENDS		= ./makefile
 
 DSK_FLOPPY	= subsim.dsk
-DSK_DW3		= subsim_dw3.dsk
+DSK_DW		= subsim_dw.dsk
 CMDS		= presub sub sub1 sub2 sub3 sub4 sub5 sub6
 MD		= $(LEVEL2)/coco3/modules
 
-DSKS		= $(DSK_FLOPPY) $(DSK_DW3)
+DSKS		= $(DSK_FLOPPY) $(DSK_DW)
 
 # We make our own bootfile and kernel track
 KERNEL_FLOPPY	= $(MD)/rel_32 $(MD)/boot_1773_6ms $(MD)/krn
-KERNEL_DW3	= $(MD)/rel_32 $(MD)/boot_dw3 $(MD)/krn
+KERNEL_DW	= $(MD)/rel_32 $(MD)/boot_dw $(MD)/krn
 BOOTFILE_FLOPPY	= $(MD)/krnp2 $(MD)/ioman $(MD)/init \
 		$(MD)/rbf.mn \
 		$(MD)/rb1773.dr $(MD)/ddd0_40d.dd \
@@ -20,13 +20,13 @@
 		$(MD)/covdg_small.io $(MD)/term_vdg.dt \
 		$(MD)/clock_60hz $(MD)/clock2_soft $(MD)/sysgo_dd
 
-BOOTFILE_DW3	= $(MD)/krnp2 $(MD)/ioman $(MD)/init \
+BOOTFILE_DW	= $(MD)/krnp2 $(MD)/ioman $(MD)/init \
 		$(MD)/rbf.mn \
-		$(MD)/rbdw3.dr $(MD)/dw3.sb $(MD)/ddx0.dd \
+		$(MD)/rbdw.dr $(MD)/dwio.sb $(MD)/ddx0.dd \
 		$(MD)/scf.mn $(MD)/vtio.dr \
 		$(MD)/keydrv_cc3.sb $(MD)/joydrv_joy.sb $(MD)/snddrv_cc3.sb \
 		$(MD)/covdg_small.io $(MD)/term_vdg.dt \
-		$(MD)/clock_60hz $(MD)/clock2_dw3 $(MD)/sysgo_dd
+		$(MD)/clock_60hz $(MD)/clock2_dw $(MD)/sysgo_dd
 
 SUPPORTFILES	= control1.cmp convoys.dat diesel.dat fonts.dat germap.cmp \
 		hiscore.dat mission.txt missions.dat radar.dat shipmap2.dat \
@@ -60,12 +60,12 @@
 	$(OS9ATTR_EXEC) $@,SUB/sub6
 	$(foreach file, $(SUPPORTFILES), $(OS9ATTR_TEXT) $@,SUB/$(file);)
 
-$(DSK_DW3):
+$(DSK_DW):
 	$(RM) $@
 	$(CD) $(LEVEL2)/coco3; make
 	$(OS9FORMAT_SS80) $@ -n"Sub Battle Simulator"
-	$(MERGE) $(BOOTFILE_DW3)>os9boot
-	$(MERGE) $(KERNEL_DW3)>kernel
+	$(MERGE) $(BOOTFILE_DW)>os9boot
+	$(MERGE) $(KERNEL_DW)>kernel
 	$(OS9GEN) $@ -b=os9boot -t=kernel
 	$(RM) os9boot kernel
 	$(MAKDIR) $@,CMDS $@,SUB
--- a/3rdparty/utils/aaw/mkdskindex	Mon Jul 30 17:31:30 2012 -0500
+++ b/3rdparty/utils/aaw/mkdskindex	Mon Jul 30 19:35:05 2012 -0500
@@ -45,9 +45,9 @@
 
   }  
 
-  if ($dsk =~ m/_dw3[\._]/)
+  if ($dsk =~ m/_dw[\._]/)
   {
-    $format = "DriveWire 3/4";
+    $format = "DriveWire";
   }
 
   $size = -s "$dirtoget/$dsk";
--- a/level1/atari/bootfiles/makefile	Mon Jul 30 17:31:30 2012 -0500
+++ b/level1/atari/bootfiles/makefile	Mon Jul 30 19:35:05 2012 -0500
@@ -8,7 +8,7 @@
 
 DEPENDS		= ./makefile
 
-RBDW3      = $(MD)/rbdw3.dr \
+RBDW       = $(MD)/rbdw.dr \
 		$(MD)/ddx0.dd $(MD)/x1.dd $(MD)/x2.dd $(MD)/x3.dd
 SCDWV_NET  = $(MD)/n_scdwv.dd $(MD)/n1_scdwv.dd $(MD)/n2_scdwv.dd \
 		$(MD)/n3_scdwv.dd $(MD)/n4_scdwv.dd $(MD)/n5_scdwv.dd \
@@ -22,14 +22,14 @@
 
 # IMPORTANT! KRN MUST BE THE LAST MODULE IN BOOTFILE_P1!!
 BOOTFILE_P1 = $(MD)/krnp2 $(MD)/init $(MD)/ioman $(MD)/sysgo \
-		$(MD)/dw3.sb \
-		$(MD)/clock_60hz $(MD)/clock2_dw3 \
+		$(MD)/dwio.sb \
+		$(MD)/clock_60hz $(MD)/clock2_dw \
           $(MD)/krn
 
 BOOTFILE_P2 = $(MD)/scf.mn \
 		$(MD)/vtio.dr $(MD)/term.dt \
 		$(MD)/rbf.mn \
-		$(RBDW3) \
+		$(RBDW) \
 		$(MD)/scdwv.dr \
 		$(SCDWV_NET) \
 		$(SCDWV_WIN) \
--- a/level1/atari/makefile	Mon Jul 30 17:31:30 2012 -0500
+++ b/level1/atari/makefile	Mon Jul 30 19:35:05 2012 -0500
@@ -57,7 +57,7 @@
 #	$(OS9GEN) $@ -b=$(BOOTFILE)	
 $(DSK):
 	$(RM) $@
-	$(OS9FORMAT_DW3) -q $@ -n"NitrOS-9/$(CPU) Level 1"
+	$(OS9FORMAT_DW) -q $@ -n"NitrOS-9/$(CPU) Level 1"
 	$(MAKDIR) $@,CMDS
 	$(MAKDIR) $@,SYS
 	$(MAKDIR) $@,DEFS
@@ -73,7 +73,7 @@
 
 $(DSK_DEMO):
 	$(RM) $@
-	$(OS9FORMAT_DW3) -q $@ -n"NitrOS-9 Atari Demo Disk"
+	$(OS9FORMAT_DW) -q $@ -n"NitrOS-9 Atari Demo Disk"
 	$(MAKDIR) $@,CMDS
 	$(CD) cmds; $(CP) $(CMDS_DEMO) ../$@,CMDS
 	$(foreach file, $(CMDS_DEMO), $(OS9ATTR_EXEC) $@,CMDS/$(file);)
--- a/level1/atari/modules/makefile	Mon Jul 30 17:31:30 2012 -0500
+++ b/level1/atari/modules/makefile	Mon Jul 30 19:35:05 2012 -0500
@@ -13,9 +13,9 @@
 BOOTERS		= 
 KERNEL		= krn krnp2
 SYSMODS		= ioman init sysgo sysgo_rom
-CLOCKS      = clock_60hz clock_50hz clock2_soft clock2_dw3
+CLOCKS      = clock_60hz clock_50hz clock2_soft clock2_dw
 
-RBF		= rbf.mn rbdw3.dr dw3.sb ddx0.dd x0.dd x1.dd x2.dd x3.dd
+RBF		= rbf.mn rbdw.dr dwio.sb ddx0.dd x0.dd x1.dd x2.dd x3.dd
 
 SCF		= scf.mn \
 		vrn.dr vtio.dr \
--- a/level1/coco1/bootfiles/makefile	Mon Jul 30 17:31:30 2012 -0500
+++ b/level1/coco1/bootfiles/makefile	Mon Jul 30 19:35:05 2012 -0500
@@ -13,8 +13,8 @@
 KERNEL_1773	= $(MD)/rel $(MD)/krn $(MD)/krnp2 $(MD)/init \
 		$(MD)/boot_1773_6ms
 
-KERNEL_DW3	= $(MD)/rel $(MD)/krn $(MD)/krnp2 $(MD)/init \
-		$(MD)/boot_dw3
+KERNEL_DW	= $(MD)/rel $(MD)/krn $(MD)/krnp2 $(MD)/init \
+		$(MD)/boot_dw
 
 IDE		= $(3PD)/ide
 SCSI		= $(3PD)/scsisys
@@ -28,8 +28,8 @@
 VTIO_CO80  = $(MD)/vtio.dr $(MD)/co80.io $(MD)/term_80.dt
 PIPE       = $(MD)/pipeman.mn $(MD)/piper.dr $(MD)/pipe.dd
 CLOCK60HZ  = $(MD)/clock_60hz $(MD)/clock2_soft
-CLOCK60HZDW = $(MD)/clock_60hz $(MD)/clock2_dw3
-RBDW3      = $(MD)/rbdw3.dr $(MD)/dw3.sb \
+CLOCK60HZDW = $(MD)/clock_60hz $(MD)/clock2_dw
+RBDW       = $(MD)/rbdw.dr $(MD)/dwio.sb \
 		$(MD)/ddx0.dd $(MD)/x1.dd $(MD)/x2.dd $(MD)/x3.dd
 SCDWV_NET  = $(MD)/n_scdwv.dd $(MD)/n1_scdwv.dd $(MD)/n2_scdwv.dd \
 		$(MD)/n3_scdwv.dd $(MD)/n4_scdwv.dd $(MD)/n5_scdwv.dd \
@@ -74,9 +74,9 @@
 		$(CLOCK60HZ) \
 		$(MD)/sysgo_dd
 
-BOOTFILE_HEADLESS_DW3	= $(MD)/ioman \
+BOOTFILE_HEADLESS_DW	= $(MD)/ioman \
 		$(MD)/rbf.mn \
-		$(RBDW3) \
+		$(RBDW) \
 		$(MD)/scf.mn \
 		$(MD)/scdwv.dr \
 		$(MD)/term_scdwv.dt \
@@ -86,10 +86,10 @@
 		$(CLOCK60HZDW) \
 		$(MD)/sysgo_dd
 
-BOOTFILE_COVDG_DW3	= $(MD)/ioman \
+BOOTFILE_COVDG_DW	= $(MD)/ioman \
 		$(MD)/rbf.mn \
 		$(FLOPPY_40D) \
-		$(RBDW3) \
+		$(RBDW) \
 		$(MD)/scf.mn \
 		$(VTIO_COVDG) \
 		$(MD)/scdwv.dr \
@@ -111,10 +111,10 @@
 		$(CLOCK60HZ) \
 		$(MD)/sysgo_dd
 
-BOOTFILE_COHR_DW3	= $(MD)/ioman \
+BOOTFILE_COHR_DW	= $(MD)/ioman \
 		$(MD)/rbf.mn \
 		$(FLOPPY_40D) \
-		$(RBDW3) \
+		$(RBDW) \
 		$(MD)/scf.mn \
 		$(VTIO_COHR) \
 		$(MD)/scdwv.dr \
@@ -135,10 +135,10 @@
 		$(CLOCK60HZ) \
 		$(MD)/sysgo_dd
 
-BOOTFILES	= bootfile_covdg bootfile_cohr bootfile_covdg_dw3 \
-		bootfile_headless_dw3 \
-		bootfile_cohr_dw3 bootfile_covdg_ds80 bootfile_cohr_ds80
-KERNELS		= kernel_1773 kernel_dw3
+BOOTFILES	= bootfile_covdg bootfile_cohr bootfile_covdg_dw \
+		bootfile_headless_dw \
+		bootfile_cohr_dw bootfile_covdg_ds80 bootfile_cohr_ds80
+KERNELS		= kernel_1773 kernel_dw
 
 ALLOBJS		= $(BOOTFILES) $(KERNELS)
 
@@ -156,17 +156,17 @@
 bootfile_covdg_ds80: $(BOOTFILE_COVDG_DS80) $(DEPENDS)
 	$(MERGE) $(BOOTFILE_COVDG_DS80)>$@
 
-bootfile_headless_dw3: $(BOOTFILE_HEADLESS_DW3) $(DEPENDS)
-	$(MERGE) $(BOOTFILE_HEADLESS_DW3)>$@
+bootfile_headless_dw: $(BOOTFILE_HEADLESS_DW) $(DEPENDS)
+	$(MERGE) $(BOOTFILE_HEADLESS_DW)>$@
 
-bootfile_covdg_dw3: $(BOOTFILE_COVDG_DW3) $(DEPENDS)
-	$(MERGE) $(BOOTFILE_COVDG_DW3)>$@
+bootfile_covdg_dw: $(BOOTFILE_COVDG_DW) $(DEPENDS)
+	$(MERGE) $(BOOTFILE_COVDG_DW)>$@
 
 bootfile_cohr_ds80: $(BOOTFILE_COHR_DS80) $(DEPENDS)
 	$(MERGE) $(BOOTFILE_COHR_DS80)>$@
 
-bootfile_cohr_dw3: $(BOOTFILE_COHR_DW3) $(DEPENDS)
-	$(MERGE) $(BOOTFILE_COHR_DW3)>$@
+bootfile_cohr_dw: $(BOOTFILE_COHR_DW) $(DEPENDS)
+	$(MERGE) $(BOOTFILE_COHR_DW)>$@
 
 # WD1773 Kernel
 kernel_1773: $(KERNEL_1773) $(DEPENDS)
@@ -174,8 +174,8 @@
 	$(PADROM) 4608 $@
 
 # DriveWire 3 Kernel
-kernel_dw3: $(KERNEL_DW3) $(DEPENDS)
-	$(MERGE) $(KERNEL_DW3)>$@
+kernel_dw: $(KERNEL_DW) $(DEPENDS)
+	$(MERGE) $(KERNEL_DW)>$@
 	$(PADROM) 4608 $@
 
 clean:
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/level1/coco1/bootlists/dw.bl	Mon Jul 30 19:35:05 2012 -0500
@@ -0,0 +1,200 @@
+***************************************
+* NitrOS-9 Level 1 CoCo Bootlist
+*
+* $Id$
+*
+* This bootlist is presented as an example for creating custom bootfiles.
+* A module may be excluded from the bootfile if an asterisk (*) is the
+* first character of the line.
+*
+***************************************
+* Kernel/System Section
+*
+* These modules are mandatory.
+../MODULES/SYSMODS/ioman
+*
+***************************************
+* CDF Section (HawkSoft)
+*
+*../MODULES/CDF/cdf.mn
+*
+* CDF descriptors - select as needed
+* SCSI descriptors (IDs 0-6)
+*../MODULES/CDF/sc0.dd
+*../MODULES/CDF/sc1.dd
+*../MODULES/CDF/sc2.dd
+*../MODULES/CDF/sc3.dd
+*../MODULES/CDF/sc4.dd
+*../MODULES/CDF/sc5.dd
+*../MODULES/CDF/sc6.dd
+* IDE descriptors (master/slave)
+*../MODULES/CDF/ic0.dd
+*../MODULES/CDF/ic1.dd
+*
+***************************************
+* RBF Section
+*
+../MODULES/RBF/rbf.mn
+*
+* DriveWire RBF driver 
+../MODULES/RBF/rbdw.dr
+../MODULES/RBF/dwio.sb
+* DriveWire descriptors - select as needed
+../MODULES/RBF/ddx0.dd
+*../MODULES/RBF/x0.dd
+../MODULES/RBF/x1.dd
+../MODULES/RBF/x2.dd
+../MODULES/RBF/x3.dd
+*
+* SuperDriver Package
+*../MODULES/RBF/rbsuper.dr
+* Select Low level SCSI and/or IDE driver
+*../MODULES/RBF/lltc3.dr
+*../MODULES/RBF/llide.dr
+* SuperDriver descriptors - select as needed
+* TC^3 SCSI DD Descriptor (ID 0)
+*../MODULES/RBF/dds0_tc3.dd
+* TC^3 SCSI descriptors (IDs 0-6)
+*../MODULES/RBF/s0_tc3.dd
+*../MODULES/RBF/s1_tc3.dd
+*../MODULES/RBF/s2_tc3.dd
+*../MODULES/RBF/s3_tc3.dd
+*../MODULES/RBF/s4_tc3.dd
+*../MODULES/RBF/s5_tc3.dd
+*../MODULES/RBF/s6_tc3.dd
+* TC^3 SCSI HDB-DOS descriptor
+*../MODULES/RBF/sh_tc3.dd
+* IDE DD descriptor (Master)
+*../MODULES/RBF/ddi0_ide.dd
+* IDE descriptors (master/slave)
+*../MODULES/RBF/i0_ide.dd
+*../MODULES/RBF/i1_ide.dd
+* IDE HDB-DOS descriptor
+*../MODULES/RBF/ih_ide.dd
+*
+* WD1773 floppy support for Tandy and compatible disk controllers
+../MODULES/RBF/rb1773.dr
+* WD1773 floppy support for Disto Super Controller II
+*../MODULES/RBF/rb1773_scii_ff74.dr
+*../MODULES/RBF/rb1773_scii_ff58.dr
+* Floppy device descriptors
+* DD - default device - choose one if needed
+*../MODULES/RBF/ddd0_35s.dd
+*../MODULES/RBF/ddd0_40d.dd
+*../MODULES/RBF/ddd0_80d.dd
+* D0 - drive 0 - choose one if needed
+*../MODULES/RBF/d0_35s.dd
+../MODULES/RBF/d0_40d.dd
+*../MODULES/RBF/d0_80d.dd
+* D1 - drive 1 - choose one if needed
+*../MODULES/RBF/d1_35s.dd
+../MODULES/RBF/d1_40d.dd
+*../MODULES/RBF/d1_80d.dd
+* D2 - drive 2 - choose one if needed
+*../MODULES/RBF/d2_35s.dd
+../MODULES/RBF/d2_40d.dd
+*../MODULES/RBF/d2_80d.dd
+* D3 - drive 3 - choose if needed
+*../MODULES/RBF/d3_35s.dd
+***************************************
+* SCF Section
+*
+../MODULES/SCF/scf.mn
+*
+* Video Terminal I/O driver and subroutine modules
+../MODULES/SCF/vtio.dr
+* Choose from CoVDG (32x16 VDG), CoHR (Hi-Res 51x24 graphics screen) or Co80 (Word-Pak)
+../MODULES/SCF/covdg.io
+*../MODULES/SCF/cohr.io
+*../MODULES/SCF/co80.io
+*
+* Select only one term descriptor
+../MODULES/SCF/term_vdg.dt
+*../MODULES/SCF/term_hr.dt
+*../MODULES/SCF/term_80.dt
+*../MODULES/SCF/term_scbbt.dt
+*../MODULES/SCF/term_sc6551.dt
+*
+* Serial port drivers
+* CoCo Bit-Banger terminal port
+*../MODULES/SCF/scbbt.dr
+*../MODULES/SCF/t1_scbbt.dd
+* 6551 ACIA
+*../MODULES/SCF/sc6551.dr
+*../MODULES/SCF/t2_sc6551.dd
+*../MODULES/SCF/t3_sc6551.dd
+*
+* Printer drivers
+* ../MODULES/SCF/scbbp.dr
+* ../MODULES/SCF/p_scbbp.dd
+*
+* DriveWire 3 Printer drivers
+* ../MODULES/SCF/scdwp.dr
+* ../MODULES/SCF/p_scdwp.dd
+*
+* DriveWire Virtual Channel Driver
+*../MODULES/SCF/scdwv.dr
+*../MODULES/SCF/term_scdwv.dt
+*../MODULES/SCF/n_scdwv.dd
+*../MODULES/SCF/n1_scdwv.dd
+*../MODULES/SCF/n2_scdwv.dd
+*../MODULES/SCF/n3_scdwv.dd
+*../MODULES/SCF/n4_scdwv.dd
+*../MODULES/SCF/n5_scdwv.dd
+*../MODULES/SCF/n6_scdwv.dd
+*../MODULES/SCF/n7_scdwv.dd
+*../MODULES/SCF/n8_scdwv.dd
+*../MODULES/SCF/n9_scdwv.dd
+*../MODULES/SCF/n10_scdwv.dd
+*../MODULES/SCF/n11_scdwv.dd
+*../MODULES/SCF/n12_scdwv.dd
+*../MODULES/SCF/n13_scdwv.dd
+*../MODULES/SCF/n14_scdwv.dd
+*../MODULES/SCF/term_z_scdwv.dt
+*../MODULES/SCF/z1_scdwv.dd
+*../MODULES/SCF/z2_scdwv.dd
+*../MODULES/SCF/z3_scdwv.dd
+*../MODULES/SCF/z4_scdwv.dd
+*../MODULES/SCF/z5_scdwv.dd
+*../MODULES/SCF/z6_scdwv.dd
+*../MODULES/SCF/z7_scdwv.dd
+*
+***************************************
+* Pipe Section
+*
+* Pipes are a useful but optional part of a system.
+../MODULES/PIPE/pipeman.mn
+../MODULES/PIPE/piper.dr
+../MODULES/PIPE/pipe.dd
+*
+***************************************
+* Clock Section
+*
+* Select one clock module depending upon your power line frequency
+* (60Hz = USA/Canada; 50Hz = Europe, Australia)
+../MODULES/CLOCKS/clock_60hz
+*../MODULES/CLOCKS/clock_50hz
+* Select one clock2 module that supports your real-time clock, if any.
+* Besides support for the internal software clock, the following
+* hardware clocks are supported: Burke & Burke, Disto 2-N-1, Disto 4-N-1,
+* Eliminator, Harris, SmartWatch, Cloud-9, the MESS emulator, Jeff
+* Vavasour's CoCo emulator, and DriveWire.
+*../MODULES/CLOCKS/clock2_soft
+*../MODULES/CLOCKS/clock2_bnb
+*../MODULES/CLOCKS/clock2_disto2
+*../MODULES/CLOCKS/clock2_disto4
+*../MODULES/CLOCKS/clock2_elim
+*../MODULES/CLOCKS/clock2_harris
+*../MODULES/CLOCKS/clock2_smart
+*../MODULES/CLOCKS/clock2_jvemu
+*../MODULES/CLOCKS/clock2_messemu
+*../MODULES/CLOCKS/clock2_cloud9
+../MODULES/CLOCKS/clock2_dw
+* 
+***************************************
+* System Kick-Start Module
+*
+* Choose which startup module you wish to use. (sysgo_dd is recommended
+* for most configurations.)
+../MODULES/SYSMODS/sysgo_dd
+*../MODULES/SYSMODS/sysgo_h0
--- a/level1/coco1/bootlists/dw3.bl	Mon Jul 30 17:31:30 2012 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,200 +0,0 @@
-***************************************
-* NitrOS-9 Level 1 CoCo Bootlist
-*
-* $Id$
-*
-* This bootlist is presented as an example for creating custom bootfiles.
-* A module may be excluded from the bootfile if an asterisk (*) is the
-* first character of the line.
-*
-***************************************
-* Kernel/System Section
-*
-* These modules are mandatory.
-../MODULES/SYSMODS/ioman
-*
-***************************************
-* CDF Section (HawkSoft)
-*
-*../MODULES/CDF/cdf.mn
-*
-* CDF descriptors - select as needed
-* SCSI descriptors (IDs 0-6)
-*../MODULES/CDF/sc0.dd
-*../MODULES/CDF/sc1.dd
-*../MODULES/CDF/sc2.dd
-*../MODULES/CDF/sc3.dd
-*../MODULES/CDF/sc4.dd
-*../MODULES/CDF/sc5.dd
-*../MODULES/CDF/sc6.dd
-* IDE descriptors (master/slave)
-*../MODULES/CDF/ic0.dd
-*../MODULES/CDF/ic1.dd
-*
-***************************************
-* RBF Section
-*
-../MODULES/RBF/rbf.mn
-*
-* DriveWire 3 RBF driver 
-../MODULES/RBF/rbdw3.dr
-../MODULES/RBF/dw3.sb
-* DriveWire descriptors - select as needed
-../MODULES/RBF/ddx0.dd
-*../MODULES/RBF/x0.dd
-../MODULES/RBF/x1.dd
-../MODULES/RBF/x2.dd
-../MODULES/RBF/x3.dd
-*
-* SuperDriver Package
-*../MODULES/RBF/rbsuper.dr
-* Select Low level SCSI and/or IDE driver
-*../MODULES/RBF/lltc3.dr
-*../MODULES/RBF/llide.dr
-* SuperDriver descriptors - select as needed
-* TC^3 SCSI DD Descriptor (ID 0)
-*../MODULES/RBF/dds0_tc3.dd
-* TC^3 SCSI descriptors (IDs 0-6)
-*../MODULES/RBF/s0_tc3.dd
-*../MODULES/RBF/s1_tc3.dd
-*../MODULES/RBF/s2_tc3.dd
-*../MODULES/RBF/s3_tc3.dd
-*../MODULES/RBF/s4_tc3.dd
-*../MODULES/RBF/s5_tc3.dd
-*../MODULES/RBF/s6_tc3.dd
-* TC^3 SCSI HDB-DOS descriptor
-*../MODULES/RBF/sh_tc3.dd
-* IDE DD descriptor (Master)
-*../MODULES/RBF/ddi0_ide.dd
-* IDE descriptors (master/slave)
-*../MODULES/RBF/i0_ide.dd
-*../MODULES/RBF/i1_ide.dd
-* IDE HDB-DOS descriptor
-*../MODULES/RBF/ih_ide.dd
-*
-* WD1773 floppy support for Tandy and compatible disk controllers
-../MODULES/RBF/rb1773.dr
-* WD1773 floppy support for Disto Super Controller II
-*../MODULES/RBF/rb1773_scii_ff74.dr
-*../MODULES/RBF/rb1773_scii_ff58.dr
-* Floppy device descriptors
-* DD - default device - choose one if needed
-*../MODULES/RBF/ddd0_35s.dd
-*../MODULES/RBF/ddd0_40d.dd
-*../MODULES/RBF/ddd0_80d.dd
-* D0 - drive 0 - choose one if needed
-*../MODULES/RBF/d0_35s.dd
-../MODULES/RBF/d0_40d.dd
-*../MODULES/RBF/d0_80d.dd
-* D1 - drive 1 - choose one if needed
-*../MODULES/RBF/d1_35s.dd
-../MODULES/RBF/d1_40d.dd
-*../MODULES/RBF/d1_80d.dd
-* D2 - drive 2 - choose one if needed
-*../MODULES/RBF/d2_35s.dd
-../MODULES/RBF/d2_40d.dd
-*../MODULES/RBF/d2_80d.dd
-* D3 - drive 3 - choose if needed
-*../MODULES/RBF/d3_35s.dd
-***************************************
-* SCF Section
-*
-../MODULES/SCF/scf.mn
-*
-* Video Terminal I/O driver and subroutine modules
-../MODULES/SCF/vtio.dr
-* Choose from CoVDG (32x16 VDG), CoHR (Hi-Res 51x24 graphics screen) or Co80 (Word-Pak)
-../MODULES/SCF/covdg.io
-*../MODULES/SCF/cohr.io
-*../MODULES/SCF/co80.io
-*
-* Select only one term descriptor
-../MODULES/SCF/term_vdg.dt
-*../MODULES/SCF/term_hr.dt
-*../MODULES/SCF/term_80.dt
-*../MODULES/SCF/term_scbbt.dt
-*../MODULES/SCF/term_sc6551.dt
-*
-* Serial port drivers
-* CoCo Bit-Banger terminal port
-*../MODULES/SCF/scbbt.dr
-*../MODULES/SCF/t1_scbbt.dd
-* 6551 ACIA
-*../MODULES/SCF/sc6551.dr
-*../MODULES/SCF/t2_sc6551.dd
-*../MODULES/SCF/t3_sc6551.dd
-*
-* Printer drivers
-* ../MODULES/SCF/scbbp.dr
-* ../MODULES/SCF/p_scbbp.dd
-*
-* DriveWire 3 Printer drivers
-* ../MODULES/SCF/scdwp.dr
-* ../MODULES/SCF/p_scdwp.dd
-*
-* DriveWire Virtual Channel Driver
-*../MODULES/SCF/scdwv.dr
-*../MODULES/SCF/term_scdwv.dt
-*../MODULES/SCF/n_scdwv.dd
-*../MODULES/SCF/n1_scdwv.dd
-*../MODULES/SCF/n2_scdwv.dd
-*../MODULES/SCF/n3_scdwv.dd
-*../MODULES/SCF/n4_scdwv.dd
-*../MODULES/SCF/n5_scdwv.dd
-*../MODULES/SCF/n6_scdwv.dd
-*../MODULES/SCF/n7_scdwv.dd
-*../MODULES/SCF/n8_scdwv.dd
-*../MODULES/SCF/n9_scdwv.dd
-*../MODULES/SCF/n10_scdwv.dd
-*../MODULES/SCF/n11_scdwv.dd
-*../MODULES/SCF/n12_scdwv.dd
-*../MODULES/SCF/n13_scdwv.dd
-*../MODULES/SCF/n14_scdwv.dd
-*../MODULES/SCF/term_z_scdwv.dt
-*../MODULES/SCF/z1_scdwv.dd
-*../MODULES/SCF/z2_scdwv.dd
-*../MODULES/SCF/z3_scdwv.dd
-*../MODULES/SCF/z4_scdwv.dd
-*../MODULES/SCF/z5_scdwv.dd
-*../MODULES/SCF/z6_scdwv.dd
-*../MODULES/SCF/z7_scdwv.dd
-*
-***************************************
-* Pipe Section
-*
-* Pipes are a useful but optional part of a system.
-../MODULES/PIPE/pipeman.mn
-../MODULES/PIPE/piper.dr
-../MODULES/PIPE/pipe.dd
-*
-***************************************
-* Clock Section
-*
-* Select one clock module depending upon your power line frequency
-* (60Hz = USA/Canada; 50Hz = Europe, Australia)
-../MODULES/CLOCKS/clock_60hz
-*../MODULES/CLOCKS/clock_50hz
-* Select one clock2 module that supports your real-time clock, if any.
-* Besides support for the internal software clock, the following
-* hardware clocks are supported: Burke & Burke, Disto 2-N-1, Disto 4-N-1,
-* Eliminator, Harris, SmartWatch, Cloud-9, the MESS emulator, Jeff
-* Vavasour's CoCo emulator, and DriveWire.
-*../MODULES/CLOCKS/clock2_soft
-*../MODULES/CLOCKS/clock2_bnb
-*../MODULES/CLOCKS/clock2_disto2
-*../MODULES/CLOCKS/clock2_disto4
-*../MODULES/CLOCKS/clock2_elim
-*../MODULES/CLOCKS/clock2_harris
-*../MODULES/CLOCKS/clock2_smart
-*../MODULES/CLOCKS/clock2_jvemu
-*../MODULES/CLOCKS/clock2_messemu
-*../MODULES/CLOCKS/clock2_cloud9
-../MODULES/CLOCKS/clock2_dw3
-* 
-***************************************
-* System Kick-Start Module
-*
-* Choose which startup module you wish to use. (sysgo_dd is recommended
-* for most configurations.)
-../MODULES/SYSMODS/sysgo_dd
-*../MODULES/SYSMODS/sysgo_h0
--- a/level1/coco1/bootlists/standard.bl	Mon Jul 30 17:31:30 2012 -0500
+++ b/level1/coco1/bootlists/standard.bl	Mon Jul 30 19:35:05 2012 -0500
@@ -36,9 +36,9 @@
 *
 ../MODULES/RBF/rbf.mn
 *
-* DriveWire 3 RBF driver
-*../MODULES/RBF/rbdw3.dr
-*../MODULES/RBF/dw3.sb
+* DriveWire RBF driver
+*../MODULES/RBF/rbdw.dr
+*../MODULES/RBF/dwio.sb
 * DriveWire descriptors - select as needed
 *../MODULES/RBF/ddx0.dd
 *../MODULES/RBF/x0.dd
@@ -188,7 +188,7 @@
 *../MODULES/CLOCKS/clock2_jvemu
 *../MODULES/CLOCKS/clock2_messemu
 *../MODULES/CLOCKS/clock2_cloud9
-*../MODULES/CLOCKS/clock2_dw3
+*../MODULES/CLOCKS/clock2_dw
 * 
 ***************************************
 * System Kick-Start Module
--- a/level1/coco1/makefile	Mon Jul 30 17:31:30 2012 -0500
+++ b/level1/coco1/makefile	Mon Jul 30 19:35:05 2012 -0500
@@ -16,12 +16,12 @@
 BOOTFILE_COVDG	= bootfiles/bootfile_covdg
 BOOTFILE_COHR	= bootfiles/bootfile_cohr
 BOOTFILE_COVDG_DS80	= bootfiles/bootfile_covdg_ds80
-BOOTFILE_HEADLESS_DW3	= bootfiles/bootfile_headless_dw3
-BOOTFILE_COVDG_DW3	= bootfiles/bootfile_covdg_dw3
+BOOTFILE_HEADLESS_DW	= bootfiles/bootfile_headless_dw
+BOOTFILE_COVDG_DW	= bootfiles/bootfile_covdg_dw
 BOOTFILE_COHR_DS80	= bootfiles/bootfile_cohr_ds80
-BOOTFILE_COHR_DW3	= bootfiles/bootfile_cohr_dw3
+BOOTFILE_COHR_DW	= bootfiles/bootfile_cohr_dw
 KERNELFILE	= bootfiles/kernel_1773
-KERNELFILE_DW3	= bootfiles/kernel_dw3
+KERNELFILE_DW	= bootfiles/kernel_dw
 DIRS		= cmds modules defs sys bootfiles bootroms
 
 
@@ -43,10 +43,10 @@
 STARTUP_DW	= startup.dw
 
 PACKAGENAME	 = $(DISTROVER).zip
-DSKDW3          = $(DISTROVER)_dw3.dsk
-LDSKDW3         = $(DISTRONAME)$(PORT)_dw3.dsk
-DSKDW3HEADLESS  = $(DISTROVER)_dw3_headless.dsk
-LDSKDW3HEADLESS = $(DISTRONAME)$(PORT)_dw3_headless.dsk
+DSKDW           = $(DISTROVER)_dw.dsk
+LDSKDW          = $(DISTRONAME)$(PORT)_dw.dsk
+DSKDWHEADLESS   = $(DISTROVER)_dw_headless.dsk
+LDSKDWHEADLESS  = $(DISTRONAME)$(PORT)_dw_headless.dsk
 DSK360K_1       = $(DISTROVER)_40d_1.dsk
 LDSK360K_1      = $(DISTRONAME)_40d_1.dsk
 DSK360K_2       = $(DISTROVER)_40d_2.dsk
@@ -55,8 +55,8 @@
 LDSK720K        = $(DISTRONAME)_80d.dsk
 
 
-DSKS		= $(DSKDW3) $(DSKDW3HEADLESS) $(DSK360K_1) $(DSK360K_2) $(DSK720K)
-LDSKS		= $(LDSKDW3) $(LDSKDW3HEADLESS) $(LDSK360K_1) $(LDSK360K_2) $(LDSK720K)
+DSKS		= $(DSKDW) $(DSKDWHEADLESS) $(DSK360K_1) $(DSK360K_2) $(DSK720K)
+LDSKS		= $(LDSKDW) $(LDSKDWHEADLESS) $(LDSK360K_1) $(LDSK360K_2) $(LDSK720K)
 
 # Make all components
 all:
@@ -85,10 +85,10 @@
 $(PACKAGENAME): $(DSKS) ../../ReadMe ../../ChangeLog
 	$(ARCHIVE) $@ $^
 
-$(DSKDW3):
+$(DSKDW):
 	$(RM) $@
-	$(OS9FORMAT_DW3) -q $@ -n"NitrOS-9/$(CPU) Level 1"
-	$(OS9GEN) $@ -b=$(BOOTFILE_COVDG_DW3) -t=$(KERNELFILE_DW3)
+	$(OS9FORMAT_DW) -q $@ -n"NitrOS-9/$(CPU) Level 1"
+	$(OS9GEN) $@ -b=$(BOOTFILE_COVDG_DW) -t=$(KERNELFILE_DW)
 	$(MAKDIR) $@,CMDS
 	$(MAKDIR) $@,SYS
 	$(MAKDIR) $@,DEFS
@@ -135,13 +135,13 @@
 	$(CD) bootlists; $(CPL) *.bl ../$@,NITROS9/6809L1/BOOTLISTS
 	$(MAKDIR) $@,NITROS9/6809L1/SCRIPTS
 	$(CD) scripts; $(CPL) mb* ../$@,NITROS9/6809L1/SCRIPTS
-	$(RM) $(LDSKDW3)
-	$(SOFTLINK) $@ $(LDSKDW3)
+	$(RM) $(LDSKDW)
+	$(SOFTLINK) $@ $(LDSKDW)
 
-$(DSKDW3HEADLESS):
+$(DSKDWHEADLESS):
 	$(RM) $@
-	$(OS9FORMAT_DW3) -q $@ -n"NitrOS-9/$(CPU) Level 1"
-	$(OS9GEN) $@ -b=$(BOOTFILE_HEADLESS_DW3) -t=$(KERNELFILE_DW3)
+	$(OS9FORMAT_DW) -q $@ -n"NitrOS-9/$(CPU) Level 1"
+	$(OS9GEN) $@ -b=$(BOOTFILE_HEADLESS_DW) -t=$(KERNELFILE_DW)
 	$(MAKDIR) $@,CMDS
 	$(MAKDIR) $@,SYS
 	$(MAKDIR) $@,DEFS
@@ -188,8 +188,8 @@
 	$(CD) bootlists; $(CPL) *.bl ../$@,NITROS9/6809L1/BOOTLISTS
 	$(MAKDIR) $@,NITROS9/6809L1/SCRIPTS
 	$(CD) scripts; $(CPL) mb* ../$@,NITROS9/6809L1/SCRIPTS
-	$(RM) $(LDSKDW3)
-	$(SOFTLINK) $@ $(LDSKDW3)
+	$(RM) $(LDSKDW)
+	$(SOFTLINK) $@ $(LDSKDW)
 
 $(DSK360K_1):
 	$(RM) $@
--- a/level1/coco1/modules/makefile	Mon Jul 30 17:31:30 2012 -0500
+++ b/level1/coco1/modules/makefile	Mon Jul 30 19:35:05 2012 -0500
@@ -24,7 +24,7 @@
 TPB		= $(3RDPARTY)/booters
 
 BOOTERS		= boot_1773_6ms boot_1773_30ms \
-		boot_burke boot_rampak boot_wd1002 boot_dw3 \
+		boot_burke boot_rampak boot_wd1002 boot_dw \
 		boot_tc3 boot_ide boot_rom
 BOOTTRACK	= rel $(BOOTERS)
 KERNEL		= krn krnp2 wbug
@@ -32,10 +32,10 @@
 CLOCKS          = clock_60hz clock_50hz \
 		clock2_elim clock2_disto2 clock2_disto4 clock2_bnb \
                 clock2_smart clock2_harris clock2_cloud9 clock2_soft \
-		clock2_messemu clock2_jvemu clock2_dw3
+		clock2_messemu clock2_jvemu clock2_dw
 
 RBF		= rbf.mn \
-		rbdw3.dr dw3.sb \
+		rbdw.dr dwio.sb \
 		rb1773.dr rb1773_scii_ff74.dr rb1773_scii_ff58.dr \
 		ddd0_35s.dd d0_35s.dd d1_35s.dd d2_35s.dd d3_35s.dd \
 		ddd0_40d.dd d0_40d.dd d1_40d.dd d2_40d.dd \
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/level1/coco1/scripts/mb.dw	Mon Jul 30 19:35:05 2012 -0500
@@ -0,0 +1,30 @@
+-t
+-x
+tmode .1 pau=0
+echo * NitrOS-9 Level 1 Boot Creation Script
+echo *
+echo * This script creates a bootable DriveWire 3 disk image
+echo * using the dw.bl bootlist file.
+echo *
+echo * The resulting disk will boot NitrOS-9 from DriveWire drive 0.
+echo *
+prompt Insert a blank disk in /x1 and press a key:
+echo *
+echo * Step 1: Format disk in /x1
+format /x1 "NitrOS-9 Level 1 Boot Disk" r
+ynn
+echo *
+echo * Step 2: Create a custom boot track
+del bttemp
+merge ../MODULES/BOOTTRACK/rel ../MODULES/KERNEL/krn ../MODULES/KERNEL/krnp2 ../MODULES/SYSMODS/init ../MODULES/BOOTTRACK/boot_dw>bttemp
+echo *
+echo * Step 3: Create the bootfile and boot track
+os9gen /x1 -t=bttemp<../BOOTLISTS/dw.bl
+del bttemp
+echo *
+echo * Step 4: Populate the disk with essential files
+copy ../MODULES/SYSMODS/sysgo_dd /x1/sysgo
+makdir /x1/CMDS
+copy -w=/x1/CMDS ../CMDS/shell
+echo *
+echo * We're done
--- a/level1/coco1/scripts/mb.dw3	Mon Jul 30 17:31:30 2012 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
--t
--x
-tmode .1 pau=0
-echo * NitrOS-9 Level 1 Boot Creation Script
-echo *
-echo * This script creates a bootable DriveWire 3 disk image
-echo * using the dw3.bl bootlist file.
-echo *
-echo * The resulting disk will boot NitrOS-9 from DriveWire drive 0.
-echo *
-prompt Insert a blank disk in /x1 and press a key:
-echo *
-echo * Step 1: Format disk in /x1
-format /x1 "NitrOS-9 Level 1 Boot Disk" r
-ynn
-echo *
-echo * Step 2: Create a custom boot track
-del bttemp
-merge ../MODULES/BOOTTRACK/rel ../MODULES/KERNEL/krn ../MODULES/KERNEL/krnp2 ../MODULES/SYSMODS/init ../MODULES/BOOTTRACK/boot_dw3>bttemp
-echo *
-echo * Step 3: Create the bootfile and boot track
-os9gen /x1 -t=bttemp<../BOOTLISTS/dw3.bl
-del bttemp
-echo *
-echo * Step 4: Populate the disk with essential files
-copy ../MODULES/SYSMODS/sysgo_dd /x1/sysgo
-makdir /x1/CMDS
-copy -w=/x1/CMDS ../CMDS/shell
-echo *
-echo * We're done
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/level1/coco2/bootlists/dw.bl	Mon Jul 30 19:35:05 2012 -0500
@@ -0,0 +1,200 @@
+***************************************
+* NitrOS-9 Level 1 CoCo Bootlist
+*
+* $Id$
+*
+* This bootlist is presented as an example for creating custom bootfiles.
+* A module may be excluded from the bootfile if an asterisk (*) is the
+* first character of the line.
+*
+***************************************
+* Kernel/System Section
+*
+* These modules are mandatory.
+../MODULES/SYSMODS/ioman
+*
+***************************************
+* CDF Section (HawkSoft)
+*
+*../MODULES/CDF/cdf.mn
+*
+* CDF descriptors - select as needed
+* SCSI descriptors (IDs 0-6)
+*../MODULES/CDF/sc0.dd
+*../MODULES/CDF/sc1.dd
+*../MODULES/CDF/sc2.dd
+*../MODULES/CDF/sc3.dd
+*../MODULES/CDF/sc4.dd
+*../MODULES/CDF/sc5.dd
+*../MODULES/CDF/sc6.dd
+* IDE descriptors (master/slave)
+*../MODULES/CDF/ic0.dd
+*../MODULES/CDF/ic1.dd
+*
+***************************************
+* RBF Section
+*
+../MODULES/RBF/rbf.mn
+*
+* DriveWire RBF driver 
+../MODULES/RBF/rbdw.dr
+../MODULES/RBF/dwio.sb
+* DriveWire descriptors - select as needed
+../MODULES/RBF/ddx0.dd
+*../MODULES/RBF/x0.dd
+../MODULES/RBF/x1.dd
+../MODULES/RBF/x2.dd
+../MODULES/RBF/x3.dd
+*
+* SuperDriver Package
+*../MODULES/RBF/rbsuper.dr
+* Select Low level SCSI and/or IDE driver
+*../MODULES/RBF/lltc3.dr
+*../MODULES/RBF/llide.dr
+* SuperDriver descriptors - select as needed
+* TC^3 SCSI DD Descriptor (ID 0)
+*../MODULES/RBF/dds0_tc3.dd
+* TC^3 SCSI descriptors (IDs 0-6)
+*../MODULES/RBF/s0_tc3.dd
+*../MODULES/RBF/s1_tc3.dd
+*../MODULES/RBF/s2_tc3.dd
+*../MODULES/RBF/s3_tc3.dd
+*../MODULES/RBF/s4_tc3.dd
+*../MODULES/RBF/s5_tc3.dd
+*../MODULES/RBF/s6_tc3.dd
+* TC^3 SCSI HDB-DOS descriptor
+*../MODULES/RBF/sh_tc3.dd
+* IDE DD descriptor (Master)
+*../MODULES/RBF/ddi0_ide.dd
+* IDE descriptors (master/slave)
+*../MODULES/RBF/i0_ide.dd
+*../MODULES/RBF/i1_ide.dd
+* IDE HDB-DOS descriptor
+*../MODULES/RBF/ih_ide.dd
+*
+* WD1773 floppy support for Tandy and compatible disk controllers
+../MODULES/RBF/rb1773.dr
+* WD1773 floppy support for Disto Super Controller II
+*../MODULES/RBF/rb1773_scii_ff74.dr
+*../MODULES/RBF/rb1773_scii_ff58.dr
+* Floppy device descriptors
+* DD - default device - choose one if needed
+*../MODULES/RBF/ddd0_35s.dd
+*../MODULES/RBF/ddd0_40d.dd
+*../MODULES/RBF/ddd0_80d.dd
+* D0 - drive 0 - choose one if needed
+*../MODULES/RBF/d0_35s.dd
+../MODULES/RBF/d0_40d.dd
+*../MODULES/RBF/d0_80d.dd
+* D1 - drive 1 - choose one if needed
+*../MODULES/RBF/d1_35s.dd
+../MODULES/RBF/d1_40d.dd
+*../MODULES/RBF/d1_80d.dd
+* D2 - drive 2 - choose one if needed
+*../MODULES/RBF/d2_35s.dd
+../MODULES/RBF/d2_40d.dd
+*../MODULES/RBF/d2_80d.dd
+* D3 - drive 3 - choose if needed
+*../MODULES/RBF/d3_35s.dd
+***************************************
+* SCF Section
+*
+../MODULES/SCF/scf.mn
+*
+* Video Terminal I/O driver and subroutine modules
+../MODULES/SCF/vtio.dr
+* Choose from CoVDG (32x16 VDG), CoHR (Hi-Res 51x24 graphics screen), or Co80 (WordPak)
+../MODULES/SCF/covdg.io
+*../MODULES/SCF/cohr.io
+*../MODULES/SCF/co80.io
+*
+* Select only one term descriptor
+../MODULES/SCF/term_vdg.dt
+*../MODULES/SCF/term_hr.dt
+*../MODULES/SCF/term_51.dt
+*../MODULES/SCF/term_scbbt.dt
+*../MODULES/SCF/term_sc6551.dt
+*
+* Serial port drivers
+* CoCo Bit-Banger terminal port
+*../MODULES/SCF/scbbt.dr
+*../MODULES/SCF/t1_scbbt.dd
+* 6551 ACIA
+*../MODULES/SCF/sc6551.dr
+*../MODULES/SCF/t2_sc6551.dd
+*../MODULES/SCF/t3_sc6551.dd
+*
+* Printer drivers
+* ../MODULES/SCF/scbbp.dr
+* ../MODULES/SCF/p_scbbp.dd
+*
+* DriveWire 3 Printer drivers
+* ../MODULES/SCF/scdwp.dr
+* ../MODULES/SCF/p_scdwp.dd
+*
+* DriveWire Virtual Channel Driver
+*../MODULES/SCF/scdwv.dr
+*../MODULES/SCF/term_scdwv.dt
+*../MODULES/SCF/n_scdwv.dd
+*../MODULES/SCF/n1_scdwv.dd
+*../MODULES/SCF/n2_scdwv.dd
+*../MODULES/SCF/n3_scdwv.dd
+*../MODULES/SCF/n4_scdwv.dd
+*../MODULES/SCF/n5_scdwv.dd
+*../MODULES/SCF/n6_scdwv.dd
+*../MODULES/SCF/n7_scdwv.dd
+*../MODULES/SCF/n8_scdwv.dd
+*../MODULES/SCF/n9_scdwv.dd
+*../MODULES/SCF/n10_scdwv.dd
+*../MODULES/SCF/n11_scdwv.dd
+*../MODULES/SCF/n12_scdwv.dd
+*../MODULES/SCF/n13_scdwv.dd
+*../MODULES/SCF/n14_scdwv.dd
+*../MODULES/SCF/term_z_scdwv.dt
+*../MODULES/SCF/z1_scdwv.dd
+*../MODULES/SCF/z2_scdwv.dd
+*../MODULES/SCF/z3_scdwv.dd
+*../MODULES/SCF/z4_scdwv.dd
+*../MODULES/SCF/z5_scdwv.dd
+*../MODULES/SCF/z6_scdwv.dd
+*../MODULES/SCF/z7_scdwv.dd
+*
+***************************************
+* Pipe Section
+*
+* Pipes are a useful but optional part of a system.
+../MODULES/PIPE/pipeman.mn
+../MODULES/PIPE/piper.dr
+../MODULES/PIPE/pipe.dd
+*
+***************************************
+* Clock Section
+*
+* Select one clock module depending upon your power line frequency
+* (60Hz = USA/Canada; 50Hz = Europe, Australia)
+../MODULES/CLOCKS/clock_60hz
+*../MODULES/CLOCKS/clock_50hz
+* Select one clock2 module that supports your real-time clock, if any.
+* Besides support for the internal software clock, the following
+* hardware clocks are supported: Burke & Burke, Disto 2-N-1, Disto 4-N-1,
+* Eliminator, Harris, SmartWatch, Cloud-9, the MESS emulator, Jeff
+* Vavasour's CoCo emulator, and DriveWire.
+*../MODULES/CLOCKS/clock2_soft
+*../MODULES/CLOCKS/clock2_bnb
+*../MODULES/CLOCKS/clock2_disto2
+*../MODULES/CLOCKS/clock2_disto4
+*../MODULES/CLOCKS/clock2_elim
+*../MODULES/CLOCKS/clock2_harris
+*../MODULES/CLOCKS/clock2_smart
+*../MODULES/CLOCKS/clock2_jvemu
+*../MODULES/CLOCKS/clock2_messemu
+*../MODULES/CLOCKS/clock2_cloud9
+../MODULES/CLOCKS/clock2_dw
+* 
+***************************************
+* System Kick-Start Module
+*
+* Choose which startup module you wish to use. (sysgo_dd is recommended
+* for most configurations.)
+../MODULES/SYSMODS/sysgo_dd
+*../MODULES/SYSMODS/sysgo_h0
--- a/level1/coco2/bootlists/dw3.bl	Mon Jul 30 17:31:30 2012 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,200 +0,0 @@
-***************************************
-* NitrOS-9 Level 1 CoCo Bootlist
-*
-* $Id$
-*
-* This bootlist is presented as an example for creating custom bootfiles.
-* A module may be excluded from the bootfile if an asterisk (*) is the
-* first character of the line.
-*
-***************************************
-* Kernel/System Section
-*
-* These modules are mandatory.
-../MODULES/SYSMODS/ioman
-*
-***************************************
-* CDF Section (HawkSoft)
-*
-*../MODULES/CDF/cdf.mn
-*
-* CDF descriptors - select as needed
-* SCSI descriptors (IDs 0-6)
-*../MODULES/CDF/sc0.dd
-*../MODULES/CDF/sc1.dd
-*../MODULES/CDF/sc2.dd
-*../MODULES/CDF/sc3.dd
-*../MODULES/CDF/sc4.dd
-*../MODULES/CDF/sc5.dd
-*../MODULES/CDF/sc6.dd
-* IDE descriptors (master/slave)
-*../MODULES/CDF/ic0.dd
-*../MODULES/CDF/ic1.dd
-*
-***************************************
-* RBF Section
-*
-../MODULES/RBF/rbf.mn
-*
-* DriveWire 3 RBF driver 
-../MODULES/RBF/rbdw3.dr
-../MODULES/RBF/dw3.sb
-* DriveWire descriptors - select as needed
-../MODULES/RBF/ddx0.dd
-*../MODULES/RBF/x0.dd
-../MODULES/RBF/x1.dd
-../MODULES/RBF/x2.dd
-../MODULES/RBF/x3.dd
-*
-* SuperDriver Package
-*../MODULES/RBF/rbsuper.dr
-* Select Low level SCSI and/or IDE driver
-*../MODULES/RBF/lltc3.dr
-*../MODULES/RBF/llide.dr
-* SuperDriver descriptors - select as needed
-* TC^3 SCSI DD Descriptor (ID 0)
-*../MODULES/RBF/dds0_tc3.dd
-* TC^3 SCSI descriptors (IDs 0-6)
-*../MODULES/RBF/s0_tc3.dd
-*../MODULES/RBF/s1_tc3.dd
-*../MODULES/RBF/s2_tc3.dd
-*../MODULES/RBF/s3_tc3.dd
-*../MODULES/RBF/s4_tc3.dd
-*../MODULES/RBF/s5_tc3.dd
-*../MODULES/RBF/s6_tc3.dd
-* TC^3 SCSI HDB-DOS descriptor
-*../MODULES/RBF/sh_tc3.dd
-* IDE DD descriptor (Master)
-*../MODULES/RBF/ddi0_ide.dd
-* IDE descriptors (master/slave)
-*../MODULES/RBF/i0_ide.dd
-*../MODULES/RBF/i1_ide.dd
-* IDE HDB-DOS descriptor
-*../MODULES/RBF/ih_ide.dd
-*
-* WD1773 floppy support for Tandy and compatible disk controllers
-../MODULES/RBF/rb1773.dr
-* WD1773 floppy support for Disto Super Controller II
-*../MODULES/RBF/rb1773_scii_ff74.dr
-*../MODULES/RBF/rb1773_scii_ff58.dr
-* Floppy device descriptors
-* DD - default device - choose one if needed
-*../MODULES/RBF/ddd0_35s.dd
-*../MODULES/RBF/ddd0_40d.dd
-*../MODULES/RBF/ddd0_80d.dd
-* D0 - drive 0 - choose one if needed
-*../MODULES/RBF/d0_35s.dd
-../MODULES/RBF/d0_40d.dd
-*../MODULES/RBF/d0_80d.dd
-* D1 - drive 1 - choose one if needed
-*../MODULES/RBF/d1_35s.dd
-../MODULES/RBF/d1_40d.dd
-*../MODULES/RBF/d1_80d.dd
-* D2 - drive 2 - choose one if needed
-*../MODULES/RBF/d2_35s.dd
-../MODULES/RBF/d2_40d.dd
-*../MODULES/RBF/d2_80d.dd
-* D3 - drive 3 - choose if needed
-*../MODULES/RBF/d3_35s.dd
-***************************************
-* SCF Section
-*
-../MODULES/SCF/scf.mn
-*
-* Video Terminal I/O driver and subroutine modules
-../MODULES/SCF/vtio.dr
-* Choose from CoVDG (32x16 VDG), CoHR (Hi-Res 51x24 graphics screen), or Co80 (WordPak)
-../MODULES/SCF/covdg.io
-*../MODULES/SCF/cohr.io
-*../MODULES/SCF/co80.io
-*
-* Select only one term descriptor
-../MODULES/SCF/term_vdg.dt
-*../MODULES/SCF/term_hr.dt
-*../MODULES/SCF/term_51.dt
-*../MODULES/SCF/term_scbbt.dt
-*../MODULES/SCF/term_sc6551.dt
-*
-* Serial port drivers
-* CoCo Bit-Banger terminal port
-*../MODULES/SCF/scbbt.dr
-*../MODULES/SCF/t1_scbbt.dd
-* 6551 ACIA
-*../MODULES/SCF/sc6551.dr
-*../MODULES/SCF/t2_sc6551.dd
-*../MODULES/SCF/t3_sc6551.dd
-*
-* Printer drivers
-* ../MODULES/SCF/scbbp.dr
-* ../MODULES/SCF/p_scbbp.dd
-*
-* DriveWire 3 Printer drivers
-* ../MODULES/SCF/scdwp.dr
-* ../MODULES/SCF/p_scdwp.dd
-*
-* DriveWire Virtual Channel Driver
-*../MODULES/SCF/scdwv.dr
-*../MODULES/SCF/term_scdwv.dt
-*../MODULES/SCF/n_scdwv.dd
-*../MODULES/SCF/n1_scdwv.dd
-*../MODULES/SCF/n2_scdwv.dd
-*../MODULES/SCF/n3_scdwv.dd
-*../MODULES/SCF/n4_scdwv.dd
-*../MODULES/SCF/n5_scdwv.dd
-*../MODULES/SCF/n6_scdwv.dd
-*../MODULES/SCF/n7_scdwv.dd
-*../MODULES/SCF/n8_scdwv.dd
-*../MODULES/SCF/n9_scdwv.dd
-*../MODULES/SCF/n10_scdwv.dd
-*../MODULES/SCF/n11_scdwv.dd
-*../MODULES/SCF/n12_scdwv.dd
-*../MODULES/SCF/n13_scdwv.dd
-*../MODULES/SCF/n14_scdwv.dd
-*../MODULES/SCF/term_z_scdwv.dt
-*../MODULES/SCF/z1_scdwv.dd
-*../MODULES/SCF/z2_scdwv.dd
-*../MODULES/SCF/z3_scdwv.dd
-*../MODULES/SCF/z4_scdwv.dd
-*../MODULES/SCF/z5_scdwv.dd
-*../MODULES/SCF/z6_scdwv.dd
-*../MODULES/SCF/z7_scdwv.dd
-*
-***************************************
-* Pipe Section
-*
-* Pipes are a useful but optional part of a system.
-../MODULES/PIPE/pipeman.mn
-../MODULES/PIPE/piper.dr
-../MODULES/PIPE/pipe.dd
-*
-***************************************
-* Clock Section
-*
-* Select one clock module depending upon your power line frequency
-* (60Hz = USA/Canada; 50Hz = Europe, Australia)
-../MODULES/CLOCKS/clock_60hz
-*../MODULES/CLOCKS/clock_50hz
-* Select one clock2 module that supports your real-time clock, if any.
-* Besides support for the internal software clock, the following
-* hardware clocks are supported: Burke & Burke, Disto 2-N-1, Disto 4-N-1,
-* Eliminator, Harris, SmartWatch, Cloud-9, the MESS emulator, Jeff
-* Vavasour's CoCo emulator, and DriveWire.
-*../MODULES/CLOCKS/clock2_soft
-*../MODULES/CLOCKS/clock2_bnb
-*../MODULES/CLOCKS/clock2_disto2
-*../MODULES/CLOCKS/clock2_disto4
-*../MODULES/CLOCKS/clock2_elim
-*../MODULES/CLOCKS/clock2_harris
-*../MODULES/CLOCKS/clock2_smart
-*../MODULES/CLOCKS/clock2_jvemu
-*../MODULES/CLOCKS/clock2_messemu
-*../MODULES/CLOCKS/clock2_cloud9
-../MODULES/CLOCKS/clock2_dw3
-* 
-***************************************
-* System Kick-Start Module
-*
-* Choose which startup module you wish to use. (sysgo_dd is recommended
-* for most configurations.)
-../MODULES/SYSMODS/sysgo_dd
-*../MODULES/SYSMODS/sysgo_h0
--- a/level1/coco2/bootlists/standard.bl	Mon Jul 30 17:31:30 2012 -0500
+++ b/level1/coco2/bootlists/standard.bl	Mon Jul 30 19:35:05 2012 -0500
@@ -36,9 +36,9 @@
 *
 ../MODULES/RBF/rbf.mn
 *
-* DriveWire 3 RBF driver
-*../MODULES/RBF/rbdw3.dr
-*../MODULES/RBF/dw3.sb
+* DriveWire RBF driver
+*../MODULES/RBF/rbdw.dr
+*../MODULES/RBF/dwio.sb
 * DriveWire descriptors - select as needed
 *../MODULES/RBF/ddx0.dd
 *../MODULES/RBF/x0.dd
@@ -189,7 +189,7 @@
 *../MODULES/CLOCKS/clock2_jvemu
 *../MODULES/CLOCKS/clock2_messemu
 *../MODULES/CLOCKS/clock2_cloud9
-*../MODULES/CLOCKS/clock2_dw3
+*../MODULES/CLOCKS/clock2_dw
 * 
 ***************************************
 * System Kick-Start Module
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/level1/coco2/scripts/mb.dw	Mon Jul 30 19:35:05 2012 -0500
@@ -0,0 +1,30 @@
+-t
+-x
+tmode .1 pau=0
+echo * NitrOS-9 Level 1 Boot Creation Script
+echo *
+echo * This script creates a bootable DriveWire 3 disk image
+echo * using the dw.bl bootlist file.
+echo *
+echo * The resulting disk will boot NitrOS-9 from DriveWire drive 0.
+echo *
+prompt Insert a blank disk in /x1 and press a key:
+echo *
+echo * Step 1: Format disk in /x1
+format /x1 "NitrOS-9 Level 1 Boot Disk" r
+ynn
+echo *
+echo * Step 2: Create a custom boot track
+del bttemp
+merge ../MODULES/BOOTTRACK/rel ../MODULES/KERNEL/krn ../MODULES/KERNEL/krnp2 ../MODULES/SYSMODS/init ../MODULES/BOOTTRACK/boot_dw>bttemp
+echo *
+echo * Step 3: Create the bootfile and boot track
+os9gen /x1 -t=bttemp<../BOOTLISTS/dw.bl
+del bttemp
+echo *
+echo * Step 4: Populate the disk with essential files
+copy ../MODULES/SYSMODS/sysgo_dd /x1/sysgo
+makdir /x1/CMDS
+copy -w=/x1/CMDS ../CMDS/shell
+echo *
+echo * We're done
--- a/level1/coco2/scripts/mb.dw3	Mon Jul 30 17:31:30 2012 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
--t
--x
-tmode .1 pau=0
-echo * NitrOS-9 Level 1 Boot Creation Script
-echo *
-echo * This script creates a bootable DriveWire 3 disk image
-echo * using the dw3.bl bootlist file.
-echo *
-echo * The resulting disk will boot NitrOS-9 from DriveWire drive 0.
-echo *
-prompt Insert a blank disk in /x1 and press a key:
-echo *
-echo * Step 1: Format disk in /x1
-format /x1 "NitrOS-9 Level 1 Boot Disk" r
-ynn
-echo *
-echo * Step 2: Create a custom boot track
-del bttemp
-merge ../MODULES/BOOTTRACK/rel ../MODULES/KERNEL/krn ../MODULES/KERNEL/krnp2 ../MODULES/SYSMODS/init ../MODULES/BOOTTRACK/boot_dw3>bttemp
-echo *
-echo * Step 3: Create the bootfile and boot track
-os9gen /x1 -t=bttemp<../BOOTLISTS/dw3.bl
-del bttemp
-echo *
-echo * Step 4: Populate the disk with essential files
-copy ../MODULES/SYSMODS/sysgo_dd /x1/sysgo
-makdir /x1/CMDS
-copy -w=/x1/CMDS ../CMDS/shell
-echo *
-echo * We're done
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/level1/coco2b/bootlists/dw.bl	Mon Jul 30 19:35:05 2012 -0500
@@ -0,0 +1,200 @@
+***************************************
+* NitrOS-9 Level 1 CoCo Bootlist
+*
+* $Id$
+*
+* This bootlist is presented as an example for creating custom bootfiles.
+* A module may be excluded from the bootfile if an asterisk (*) is the
+* first character of the line.
+*
+***************************************
+* Kernel/System Section
+*
+* These modules are mandatory.
+../MODULES/SYSMODS/ioman
+*
+***************************************
+* CDF Section (HawkSoft)
+*
+*../MODULES/CDF/cdf.mn
+*
+* CDF descriptors - select as needed
+* SCSI descriptors (IDs 0-6)
+*../MODULES/CDF/sc0.dd
+*../MODULES/CDF/sc1.dd
+*../MODULES/CDF/sc2.dd
+*../MODULES/CDF/sc3.dd
+*../MODULES/CDF/sc4.dd
+*../MODULES/CDF/sc5.dd
+*../MODULES/CDF/sc6.dd
+* IDE descriptors (master/slave)
+*../MODULES/CDF/ic0.dd
+*../MODULES/CDF/ic1.dd
+*
+***************************************
+* RBF Section
+*
+../MODULES/RBF/rbf.mn
+*
+* DriveWire RBF driver 
+../MODULES/RBF/rbdw.dr
+../MODULES/RBF/dwio.sb
+* DriveWire descriptors - select as needed
+../MODULES/RBF/ddx0.dd
+*../MODULES/RBF/x0.dd
+../MODULES/RBF/x1.dd
+../MODULES/RBF/x2.dd
+../MODULES/RBF/x3.dd
+*
+* SuperDriver Package
+*../MODULES/RBF/rbsuper.dr
+* Select Low level SCSI and/or IDE driver
+*../MODULES/RBF/lltc3.dr
+*../MODULES/RBF/llide.dr
+* SuperDriver descriptors - select as needed
+* TC^3 SCSI DD Descriptor (ID 0)
+*../MODULES/RBF/dds0_tc3.dd
+* TC^3 SCSI descriptors (IDs 0-6)
+*../MODULES/RBF/s0_tc3.dd
+*../MODULES/RBF/s1_tc3.dd
+*../MODULES/RBF/s2_tc3.dd
+*../MODULES/RBF/s3_tc3.dd
+*../MODULES/RBF/s4_tc3.dd
+*../MODULES/RBF/s5_tc3.dd
+*../MODULES/RBF/s6_tc3.dd
+* TC^3 SCSI HDB-DOS descriptor
+*../MODULES/RBF/sh_tc3.dd
+* IDE DD descriptor (Master)
+*../MODULES/RBF/ddi0_ide.dd
+* IDE descriptors (master/slave)
+*../MODULES/RBF/i0_ide.dd
+*../MODULES/RBF/i1_ide.dd
+* IDE HDB-DOS descriptor
+*../MODULES/RBF/ih_ide.dd
+*
+* WD1773 floppy support for Tandy and compatible disk controllers
+../MODULES/RBF/rb1773.dr
+* WD1773 floppy support for Disto Super Controller II
+*../MODULES/RBF/rb1773_scii_ff74.dr
+*../MODULES/RBF/rb1773_scii_ff58.dr
+* Floppy device descriptors
+* DD - default device - choose one if needed
+*../MODULES/RBF/ddd0_35s.dd
+*../MODULES/RBF/ddd0_40d.dd
+*../MODULES/RBF/ddd0_80d.dd
+* D0 - drive 0 - choose one if needed
+*../MODULES/RBF/d0_35s.dd
+../MODULES/RBF/d0_40d.dd
+*../MODULES/RBF/d0_80d.dd
+* D1 - drive 1 - choose one if needed
+*../MODULES/RBF/d1_35s.dd
+../MODULES/RBF/d1_40d.dd
+*../MODULES/RBF/d1_80d.dd
+* D2 - drive 2 - choose one if needed
+*../MODULES/RBF/d2_35s.dd
+../MODULES/RBF/d2_40d.dd
+*../MODULES/RBF/d2_80d.dd
+* D3 - drive 3 - choose if needed
+*../MODULES/RBF/d3_35s.dd
+***************************************
+* SCF Section
+*
+../MODULES/SCF/scf.mn
+*
+* Video Terminal I/O driver and subroutine modules
+../MODULES/SCF/vtio.dr
+* Choose from CoVDG (32x16 VDG), CoHR (Hi-Res 51x24 graphics screen), or Co80 (WordPak)
+../MODULES/SCF/covdg.io
+*../MODULES/SCF/cohr.io
+*../MODULES/SCF/co80.io
+*
+* Select only one term descriptor
+../MODULES/SCF/term_vdg.dt
+*../MODULES/SCF/term_hr.dt
+*../MODULES/SCF/term_51.dt
+*../MODULES/SCF/term_scbbt.dt
+*../MODULES/SCF/term_sc6551.dt
+*
+* Serial port drivers
+* CoCo Bit-Banger terminal port
+*../MODULES/SCF/scbbt.dr
+*../MODULES/SCF/t1_scbbt.dd
+* 6551 ACIA
+*../MODULES/SCF/sc6551.dr
+*../MODULES/SCF/t2_sc6551.dd
+*../MODULES/SCF/t3_sc6551.dd
+*
+* Printer drivers
+* ../MODULES/SCF/scbbp.dr
+* ../MODULES/SCF/p_scbbp.dd
+*
+* DriveWire 3 Printer drivers
+* ../MODULES/SCF/scdwp.dr
+* ../MODULES/SCF/p_scdwp.dd
+*
+* DriveWire Virtual Channel Driver
+*../MODULES/SCF/scdwv.dr
+*../MODULES/SCF/term_scdwv.dt
+*../MODULES/SCF/n_scdwv.dd
+*../MODULES/SCF/n1_scdwv.dd
+*../MODULES/SCF/n2_scdwv.dd
+*../MODULES/SCF/n3_scdwv.dd
+*../MODULES/SCF/n4_scdwv.dd
+*../MODULES/SCF/n5_scdwv.dd
+*../MODULES/SCF/n6_scdwv.dd
+*../MODULES/SCF/n7_scdwv.dd
+*../MODULES/SCF/n8_scdwv.dd
+*../MODULES/SCF/n9_scdwv.dd
+*../MODULES/SCF/n10_scdwv.dd
+*../MODULES/SCF/n11_scdwv.dd
+*../MODULES/SCF/n12_scdwv.dd
+*../MODULES/SCF/n13_scdwv.dd
+*../MODULES/SCF/n14_scdwv.dd
+*../MODULES/SCF/term_z_scdwv.dt
+*../MODULES/SCF/z1_scdwv.dd
+*../MODULES/SCF/z2_scdwv.dd
+*../MODULES/SCF/z3_scdwv.dd
+*../MODULES/SCF/z4_scdwv.dd
+*../MODULES/SCF/z5_scdwv.dd
+*../MODULES/SCF/z6_scdwv.dd
+*../MODULES/SCF/z7_scdwv.dd
+*
+***************************************
+* Pipe Section
+*
+* Pipes are a useful but optional part of a system.
+../MODULES/PIPE/pipeman.mn
+../MODULES/PIPE/piper.dr
+../MODULES/PIPE/pipe.dd
+*
+***************************************
+* Clock Section
+*
+* Select one clock module depending upon your power line frequency
+* (60Hz = USA/Canada; 50Hz = Europe, Australia)
+../MODULES/CLOCKS/clock_60hz
+*../MODULES/CLOCKS/clock_50hz
+* Select one clock2 module that supports your real-time clock, if any.
+* Besides support for the internal software clock, the following
+* hardware clocks are supported: Burke & Burke, Disto 2-N-1, Disto 4-N-1,
+* Eliminator, Harris, SmartWatch, Cloud-9, the MESS emulator, Jeff
+* Vavasour's CoCo emulator, and DriveWire.
+*../MODULES/CLOCKS/clock2_soft
+*../MODULES/CLOCKS/clock2_bnb
+*../MODULES/CLOCKS/clock2_disto2
+*../MODULES/CLOCKS/clock2_disto4
+*../MODULES/CLOCKS/clock2_elim
+*../MODULES/CLOCKS/clock2_harris
+*../MODULES/CLOCKS/clock2_smart
+*../MODULES/CLOCKS/clock2_jvemu
+*../MODULES/CLOCKS/clock2_messemu
+*../MODULES/CLOCKS/clock2_cloud9
+../MODULES/CLOCKS/clock2_dw
+* 
+***************************************
+* System Kick-Start Module
+*
+* Choose which startup module you wish to use. (sysgo_dd is recommended
+* for most configurations.)
+../MODULES/SYSMODS/sysgo_dd
+*../MODULES/SYSMODS/sysgo_h0
--- a/level1/coco2b/bootlists/dw3.bl	Mon Jul 30 17:31:30 2012 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,200 +0,0 @@
-***************************************
-* NitrOS-9 Level 1 CoCo Bootlist
-*
-* $Id$
-*
-* This bootlist is presented as an example for creating custom bootfiles.
-* A module may be excluded from the bootfile if an asterisk (*) is the
-* first character of the line.
-*
-***************************************
-* Kernel/System Section
-*
-* These modules are mandatory.
-../MODULES/SYSMODS/ioman
-*
-***************************************
-* CDF Section (HawkSoft)
-*
-*../MODULES/CDF/cdf.mn
-*
-* CDF descriptors - select as needed
-* SCSI descriptors (IDs 0-6)
-*../MODULES/CDF/sc0.dd
-*../MODULES/CDF/sc1.dd
-*../MODULES/CDF/sc2.dd
-*../MODULES/CDF/sc3.dd
-*../MODULES/CDF/sc4.dd
-*../MODULES/CDF/sc5.dd
-*../MODULES/CDF/sc6.dd
-* IDE descriptors (master/slave)
-*../MODULES/CDF/ic0.dd
-*../MODULES/CDF/ic1.dd
-*
-***************************************
-* RBF Section
-*
-../MODULES/RBF/rbf.mn
-*
-* DriveWire 3 RBF driver 
-../MODULES/RBF/rbdw3.dr
-../MODULES/RBF/dw3.sb
-* DriveWire descriptors - select as needed
-../MODULES/RBF/ddx0.dd
-*../MODULES/RBF/x0.dd
-../MODULES/RBF/x1.dd
-../MODULES/RBF/x2.dd
-../MODULES/RBF/x3.dd
-*
-* SuperDriver Package
-*../MODULES/RBF/rbsuper.dr
-* Select Low level SCSI and/or IDE driver
-*../MODULES/RBF/lltc3.dr
-*../MODULES/RBF/llide.dr
-* SuperDriver descriptors - select as needed
-* TC^3 SCSI DD Descriptor (ID 0)
-*../MODULES/RBF/dds0_tc3.dd
-* TC^3 SCSI descriptors (IDs 0-6)
-*../MODULES/RBF/s0_tc3.dd
-*../MODULES/RBF/s1_tc3.dd
-*../MODULES/RBF/s2_tc3.dd
-*../MODULES/RBF/s3_tc3.dd
-*../MODULES/RBF/s4_tc3.dd
-*../MODULES/RBF/s5_tc3.dd
-*../MODULES/RBF/s6_tc3.dd
-* TC^3 SCSI HDB-DOS descriptor
-*../MODULES/RBF/sh_tc3.dd
-* IDE DD descriptor (Master)
-*../MODULES/RBF/ddi0_ide.dd
-* IDE descriptors (master/slave)
-*../MODULES/RBF/i0_ide.dd
-*../MODULES/RBF/i1_ide.dd
-* IDE HDB-DOS descriptor
-*../MODULES/RBF/ih_ide.dd
-*
-* WD1773 floppy support for Tandy and compatible disk controllers
-../MODULES/RBF/rb1773.dr
-* WD1773 floppy support for Disto Super Controller II
-*../MODULES/RBF/rb1773_scii_ff74.dr
-*../MODULES/RBF/rb1773_scii_ff58.dr
-* Floppy device descriptors
-* DD - default device - choose one if needed
-*../MODULES/RBF/ddd0_35s.dd
-*../MODULES/RBF/ddd0_40d.dd
-*../MODULES/RBF/ddd0_80d.dd
-* D0 - drive 0 - choose one if needed
-*../MODULES/RBF/d0_35s.dd
-../MODULES/RBF/d0_40d.dd
-*../MODULES/RBF/d0_80d.dd
-* D1 - drive 1 - choose one if needed
-*../MODULES/RBF/d1_35s.dd
-../MODULES/RBF/d1_40d.dd
-*../MODULES/RBF/d1_80d.dd
-* D2 - drive 2 - choose one if needed
-*../MODULES/RBF/d2_35s.dd
-../MODULES/RBF/d2_40d.dd
-*../MODULES/RBF/d2_80d.dd
-* D3 - drive 3 - choose if needed
-*../MODULES/RBF/d3_35s.dd
-***************************************
-* SCF Section
-*
-../MODULES/SCF/scf.mn
-*
-* Video Terminal I/O driver and subroutine modules
-../MODULES/SCF/vtio.dr
-* Choose from CoVDG (32x16 VDG), CoHR (Hi-Res 51x24 graphics screen), or Co80 (WordPak)
-../MODULES/SCF/covdg.io
-*../MODULES/SCF/cohr.io
-*../MODULES/SCF/co80.io
-*
-* Select only one term descriptor
-../MODULES/SCF/term_vdg.dt
-*../MODULES/SCF/term_hr.dt
-*../MODULES/SCF/term_51.dt
-*../MODULES/SCF/term_scbbt.dt
-*../MODULES/SCF/term_sc6551.dt
-*
-* Serial port drivers
-* CoCo Bit-Banger terminal port
-*../MODULES/SCF/scbbt.dr
-*../MODULES/SCF/t1_scbbt.dd
-* 6551 ACIA
-*../MODULES/SCF/sc6551.dr
-*../MODULES/SCF/t2_sc6551.dd
-*../MODULES/SCF/t3_sc6551.dd
-*
-* Printer drivers
-* ../MODULES/SCF/scbbp.dr
-* ../MODULES/SCF/p_scbbp.dd
-*
-* DriveWire 3 Printer drivers
-* ../MODULES/SCF/scdwp.dr
-* ../MODULES/SCF/p_scdwp.dd
-*
-* DriveWire Virtual Channel Driver
-*../MODULES/SCF/scdwv.dr
-*../MODULES/SCF/term_scdwv.dt
-*../MODULES/SCF/n_scdwv.dd
-*../MODULES/SCF/n1_scdwv.dd
-*../MODULES/SCF/n2_scdwv.dd
-*../MODULES/SCF/n3_scdwv.dd
-*../MODULES/SCF/n4_scdwv.dd
-*../MODULES/SCF/n5_scdwv.dd
-*../MODULES/SCF/n6_scdwv.dd
-*../MODULES/SCF/n7_scdwv.dd
-*../MODULES/SCF/n8_scdwv.dd
-*../MODULES/SCF/n9_scdwv.dd
-*../MODULES/SCF/n10_scdwv.dd
-*../MODULES/SCF/n11_scdwv.dd
-*../MODULES/SCF/n12_scdwv.dd
-*../MODULES/SCF/n13_scdwv.dd
-*../MODULES/SCF/n14_scdwv.dd
-*../MODULES/SCF/term_z_scdwv.dt
-*../MODULES/SCF/z1_scdwv.dd
-*../MODULES/SCF/z2_scdwv.dd
-*../MODULES/SCF/z3_scdwv.dd
-*../MODULES/SCF/z4_scdwv.dd
-*../MODULES/SCF/z5_scdwv.dd
-*../MODULES/SCF/z6_scdwv.dd
-*../MODULES/SCF/z7_scdwv.dd
-*
-***************************************
-* Pipe Section
-*
-* Pipes are a useful but optional part of a system.
-../MODULES/PIPE/pipeman.mn
-../MODULES/PIPE/piper.dr
-../MODULES/PIPE/pipe.dd
-*
-***************************************
-* Clock Section
-*
-* Select one clock module depending upon your power line frequency
-* (60Hz = USA/Canada; 50Hz = Europe, Australia)
-../MODULES/CLOCKS/clock_60hz
-*../MODULES/CLOCKS/clock_50hz
-* Select one clock2 module that supports your real-time clock, if any.
-* Besides support for the internal software clock, the following
-* hardware clocks are supported: Burke & Burke, Disto 2-N-1, Disto 4-N-1,
-* Eliminator, Harris, SmartWatch, Cloud-9, the MESS emulator, Jeff
-* Vavasour's CoCo emulator, and DriveWire.
-*../MODULES/CLOCKS/clock2_soft
-*../MODULES/CLOCKS/clock2_bnb
-*../MODULES/CLOCKS/clock2_disto2
-*../MODULES/CLOCKS/clock2_disto4
-*../MODULES/CLOCKS/clock2_elim
-*../MODULES/CLOCKS/clock2_harris
-*../MODULES/CLOCKS/clock2_smart
-*../MODULES/CLOCKS/clock2_jvemu
-*../MODULES/CLOCKS/clock2_messemu
-*../MODULES/CLOCKS/clock2_cloud9
-../MODULES/CLOCKS/clock2_dw3
-* 
-***************************************
-* System Kick-Start Module
-*
-* Choose which startup module you wish to use. (sysgo_dd is recommended
-* for most configurations.)
-../MODULES/SYSMODS/sysgo_dd
-*../MODULES/SYSMODS/sysgo_h0
--- a/level1/coco2b/bootlists/standard.bl	Mon Jul 30 17:31:30 2012 -0500
+++ b/level1/coco2b/bootlists/standard.bl	Mon Jul 30 19:35:05 2012 -0500
@@ -36,9 +36,9 @@
 *
 ../MODULES/RBF/rbf.mn
 *
-* DriveWire 3 RBF driver
-*../MODULES/RBF/rbdw3.dr
-*../MODULES/RBF/dw3.sb
+* DriveWire RBF driver
+*../MODULES/RBF/rbdw.dr
+*../MODULES/RBF/dwio.sb
 * DriveWire descriptors - select as needed
 *../MODULES/RBF/ddx0.dd
 *../MODULES/RBF/x0.dd
@@ -189,7 +189,7 @@
 *../MODULES/CLOCKS/clock2_jvemu
 *../MODULES/CLOCKS/clock2_messemu
 *../MODULES/CLOCKS/clock2_cloud9
-*../MODULES/CLOCKS/clock2_dw3
+*../MODULES/CLOCKS/clock2_dw
 * 
 ***************************************
 * System Kick-Start Module
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/level1/coco2b/scripts/mb.dw	Mon Jul 30 19:35:05 2012 -0500
@@ -0,0 +1,30 @@
+-t
+-x
+tmode .1 pau=0
+echo * NitrOS-9 Level 1 Boot Creation Script
+echo *
+echo * This script creates a bootable DriveWire 3 disk image
+echo * using the dw.bl bootlist file.
+echo *
+echo * The resulting disk will boot NitrOS-9 from DriveWire drive 0.
+echo *
+prompt Insert a blank disk in /x1 and press a key:
+echo *
+echo * Step 1: Format disk in /x1
+format /x1 "NitrOS-9 Level 1 Boot Disk" r
+ynn
+echo *
+echo * Step 2: Create a custom boot track
+del bttemp
+merge ../MODULES/BOOTTRACK/rel ../MODULES/KERNEL/krn ../MODULES/KERNEL/krnp2 ../MODULES/SYSMODS/init ../MODULES/BOOTTRACK/boot_dw>bttemp
+echo *
+echo * Step 3: Create the bootfile and boot track
+os9gen /x1 -t=bttemp<../BOOTLISTS/dw.bl
+del bttemp
+echo *
+echo * Step 4: Populate the disk with essential files
+copy ../MODULES/SYSMODS/sysgo_dd /x1/sysgo
+makdir /x1/CMDS
+copy -w=/x1/CMDS ../CMDS/shell
+echo *
+echo * We're done
--- a/level1/coco2b/scripts/mb.dw3	Mon Jul 30 17:31:30 2012 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
--t
--x
-tmode .1 pau=0
-echo * NitrOS-9 Level 1 Boot Creation Script
-echo *
-echo * This script creates a bootable DriveWire 3 disk image
-echo * using the dw3.bl bootlist file.
-echo *
-echo * The resulting disk will boot NitrOS-9 from DriveWire drive 0.
-echo *
-prompt Insert a blank disk in /x1 and press a key:
-echo *
-echo * Step 1: Format disk in /x1
-format /x1 "NitrOS-9 Level 1 Boot Disk" r
-ynn
-echo *
-echo * Step 2: Create a custom boot track
-del bttemp
-merge ../MODULES/BOOTTRACK/rel ../MODULES/KERNEL/krn ../MODULES/KERNEL/krnp2 ../MODULES/SYSMODS/init ../MODULES/BOOTTRACK/boot_dw3>bttemp
-echo *
-echo * Step 3: Create the bootfile and boot track
-os9gen /x1 -t=bttemp<../BOOTLISTS/dw3.bl
-del bttemp
-echo *
-echo * Step 4: Populate the disk with essential files
-copy ../MODULES/SYSMODS/sysgo_dd /x1/sysgo
-makdir /x1/CMDS
-copy -w=/x1/CMDS ../CMDS/shell
-echo *
-echo * We're done
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/level1/modules/boot_dw.asm	Mon Jul 30 19:35:05 2012 -0500
@@ -0,0 +1,143 @@
+********************************************************************
+* Boot - DriveWire 3 Boot Module
+*
+* $Id$
+*
+* Edt/Rev  YYYY/MM/DD  Modified by
+* Comment
+* ------------------------------------------------------------------
+*   1      2008/02/09  Boisy G. Pitre
+* Created.
+
+               NAM       Boot
+               TTL       DriveWire Boot Module
+
+               IFP1      
+               USE       defsfile
+               USE       drivewire.d
+               ENDC      
+
+tylg           SET       Systm+Objct
+atrv           SET       ReEnt+rev
+rev            SET       0
+edition        SET       1
+
+               MOD       eom,name,tylg,atrv,start,size
+
+* on-stack buffer to use
+               ORG       0
+seglist        RMB       2                   pointer to segment list
+blockloc       RMB       2                   pointer to memory requested
+blockimg       RMB       2                   duplicate of the above
+bootloc        RMB       3                   sector pointer; not byte pointer
+bootsize       RMB       2                   size in bytes
+LSN0Ptr        RMB       2                   LSN0 pointer
+size           EQU       .
+
+name           EQU       *
+               FCS       /Boot/
+               FCB       edition
+
+
+* Common booter-required defines
+LSN24BIT       EQU       1
+FLOPPY         EQU       0
+
+
+               USE       boot_common.asm
+
+
+************************************************************
+************************************************************
+*              Hardware-Specific Booter Area               *
+************************************************************
+************************************************************                   
+
+* HWInit - Initialize the device
+*   Entry: Y = hardware address
+*   Exit:  Carry Clear = OK, Set = Error
+*          B = error (Carry Set)
+HWInit                   
+* Set up DDR for side B
+*               ldx       #PIA1Base           get base address of PIA
+*               ldb       3,x
+*               andb      #%11111011
+*               stb       3,x
+*               lda       #%11111010
+*               sta       2,x
+*               orb       #%00000100
+*               stb       3,x
+
+* Set up DDR for side A
+*               ldb       1,x
+*               andb      #%11111011
+*               stb       1,x                 $FF20 is now Data Direction Register
+*               lda       #%11111110          data direction bits (1=out, 0=in)
+*               sta       ,x                  tell HW
+*               orb       #%00000100          reset $FF20 to I/O register
+*               stb       1,x                 $FF20 is now Data Direction Register
+HWTerm         clrb      
+               rts       
+
+
+* HWRead - Read a 256 byte sector from the device
+*   Entry: Y = hardware address
+*          B = bits 23-16 of LSN
+*          X = bits 15-0  of LSN
+* 		   blockloc,u = ptr to 256 byte sector
+*   Exit:  X = ptr to data (i.e. ptr in blockloc,u)
+HWRead         
+               pshs      cc,d,x
+* Send out op code and 3 byte LSN
+               lda       #OP_READEX           load A with READ opcode
+Read2          ldb       WhichDrv,pcr
+               std       ,s
+               leax      ,s
+               ldy       #5
+               lbsr      DWWrite              send it to server
+* Get 256 bytes of sector data
+               ldx       blockloc,u
+               ldy       #256
+               bsr       DWRead               read bytes from server
+               bcs       ReadEr               branch if framing error
+               bne       ReadEr2
+               
+* Send two byte checksum
+               pshs      y
+	 		      leax      ,s
+			      ldy       #2
+			      lbsr      DWWrite 
+                              ldy       #1
+			      bsr       DWRead 
+			      leas      2,s
+     			   bcs       ReadEx
+                           bne      ReadEr2
+			      ldb       ,s
+			      beq       ReadEx
+			      cmpb      #E_CRC
+			      bne       ReadEr
+               lda       #OP_REREADEX
+               bra       Read2
+ReadEx         EQU       *
+               leas      5,s                 eat stack
+               ldx       blockloc,u
+               clrb      
+               rts
+ReadEr2        ldb       #E$Read
+ReadEr
+               leas      5,s                 eat stack
+               orcc      #Carry
+               rts
+
+               USE       dwread.asm
+               USE       dwwrite.asm
+
+               IFGT      Level-1
+Pad            FILL      $39,$1D0-3-2-1-*
+               ENDC      
+
+Address        FDB       $0000
+WhichDrv       FCB       $00
+               EMOD      
+eom            EQU       *
+               END       
--- a/level1/modules/boot_dw3.asm	Mon Jul 30 17:31:30 2012 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,143 +0,0 @@
-********************************************************************
-* Boot - DriveWire 3 Boot Module
-*
-* $Id$
-*
-* Edt/Rev  YYYY/MM/DD  Modified by
-* Comment
-* ------------------------------------------------------------------
-*   1      2008/02/09  Boisy G. Pitre
-* Created.
-
-               NAM       Boot
-               TTL       DriveWire Boot Module
-
-               IFP1      
-               USE       defsfile
-               USE       drivewire.d
-               ENDC      
-
-tylg           SET       Systm+Objct
-atrv           SET       ReEnt+rev
-rev            SET       0
-edition        SET       1
-
-               MOD       eom,name,tylg,atrv,start,size
-
-* on-stack buffer to use
-               ORG       0
-seglist        RMB       2                   pointer to segment list
-blockloc       RMB       2                   pointer to memory requested
-blockimg       RMB       2                   duplicate of the above
-bootloc        RMB       3                   sector pointer; not byte pointer
-bootsize       RMB       2                   size in bytes
-LSN0Ptr        RMB       2                   LSN0 pointer
-size           EQU       .
-
-name           EQU       *
-               FCS       /Boot/
-               FCB       edition
-
-
-* Common booter-required defines
-LSN24BIT       EQU       1
-FLOPPY         EQU       0
-
-
-               USE       boot_common.asm
-
-
-************************************************************
-************************************************************
-*              Hardware-Specific Booter Area               *
-************************************************************
-************************************************************                   
-
-* HWInit - Initialize the device
-*   Entry: Y = hardware address
-*   Exit:  Carry Clear = OK, Set = Error
-*          B = error (Carry Set)
-HWInit                   
-* Set up DDR for side B
-*               ldx       #PIA1Base           get base address of PIA
-*               ldb       3,x
-*               andb      #%11111011
-*               stb       3,x
-*               lda       #%11111010
-*               sta       2,x
-*               orb       #%00000100
-*               stb       3,x
-
-* Set up DDR for side A
-*               ldb       1,x
-*               andb      #%11111011
-*               stb       1,x                 $FF20 is now Data Direction Register
-*               lda       #%11111110          data direction bits (1=out, 0=in)
-*               sta       ,x                  tell HW
-*               orb       #%00000100          reset $FF20 to I/O register
-*               stb       1,x                 $FF20 is now Data Direction Register
-HWTerm         clrb      
-               rts       
-
-
-* HWRead - Read a 256 byte sector from the device
-*   Entry: Y = hardware address
-*          B = bits 23-16 of LSN
-*          X = bits 15-0  of LSN
-* 		   blockloc,u = ptr to 256 byte sector
-*   Exit:  X = ptr to data (i.e. ptr in blockloc,u)
-HWRead         
-               pshs      cc,d,x
-* Send out op code and 3 byte LSN
-               lda       #OP_READEX           load A with READ opcode
-Read2          ldb       WhichDrv,pcr
-               std       ,s
-               leax      ,s
-               ldy       #5
-               lbsr      DWWrite              send it to server
-* Get 256 bytes of sector data
-               ldx       blockloc,u
-               ldy       #256
-               bsr       DWRead               read bytes from server
-               bcs       ReadEr               branch if framing error
-               bne       ReadEr2
-               
-* Send two byte checksum
-               pshs      y
-	 		      leax      ,s
-			      ldy       #2
-			      lbsr      DWWrite 
-                              ldy       #1
-			      bsr       DWRead 
-			      leas      2,s
-     			   bcs       ReadEx
-                           bne      ReadEr2
-			      ldb       ,s
-			      beq       ReadEx
-			      cmpb      #E_CRC
-			      bne       ReadEr
-               lda       #OP_REREADEX
-               bra       Read2
-ReadEx         EQU       *
-               leas      5,s                 eat stack
-               ldx       blockloc,u
-               clrb      
-               rts
-ReadEr2        ldb       #E$Read
-ReadEr
-               leas      5,s                 eat stack
-               orcc      #Carry
-               rts
-
-               USE       dwread.asm
-               USE       dwwrite.asm
-
-               IFGT      Level-1
-Pad            FILL      $39,$1D0-3-2-1-*
-               ENDC      
-
-Address        FDB       $0000
-WhichDrv       FCB       $00
-               EMOD      
-eom            EQU       *
-               END       
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/level1/modules/clock2_dw.asm	Mon Jul 30 19:35:05 2012 -0500
@@ -0,0 +1,123 @@
+********************************************************************
+* Clock2 - DriveWire 3 RTC Driver
+*
+* $Id$
+*
+* Edt/Rev  YYYY/MM/DD  Modified by
+* Comment
+* ------------------------------------------------------------------
+*   1      2004/08/18  Boisy G. Pitre
+* Separated clock2 modules for source clarity.
+*
+*   2      2010/01/02  Boisy G. Pitre
+* Saved some bytes by optimizing
+
+          nam       Clock2
+          ttl       DriveWire 3 RTC Driver
+
+          ifp1            
+          use       defsfile  
+          use       drivewire.d  
+          endc            
+
+tylg      set       Sbrtn+Objct
+atrv      set       ReEnt+rev
+rev       set       $00
+edition   set       2
+
+
+RTC.Base  equ       $0000     
+
+          mod       eom,name,tylg,atrv,JmpTable,RTC.Base
+
+name      fcs       "Clock2"  
+          fcb       edition
+
+subname   fcs       "dwio"
+
+* Three Entry Points:
+*   - Init
+*   - GetTime
+*   - SetTIme
+JmpTable                 
+          bra       Init
+          nop
+          bra       GetTime   	RTC Get Time
+          nop
+
+SetTime   
+          IFGT      Level-1
+          lda       <D.DWSrvID
+          ELSE
+          lda       >D.DWSrvID
+          ENDC
+          cmpa      #128
+          bne       leave
+          pshs      u,y,x,d
+          IFGT      Level-1
+          ldu       <D.DWSubAddr
+          ELSE
+          ldu       >D.DWSubAddr
+          ENDC
+          beq       UpdLeave      in case we failed to link it, just exit
+          lda       #OP_SETTIME
+          pshs      a
+          ldy       #$0001
+          leax      ,s
+          jsr       DW$Write,u
+          puls      a
+          ldx       #D.Year
+          ldy       #$0006
+          jsr       DW$Write,u
+          bra       UpdLeave
+
+GetTime 
+          lda       #OP_TIME        Time packet
+          pshs      u,y,x,d
+          IFGT      Level-1
+          ldu       <D.DWSubAddr
+          ELSE
+          ldu       >D.DWSubAddr
+          ENDC
+          beq       UpdLeave      in case we failed to link it, just exit
+          leax      ,s
+          ldy       #$0001
+          jsr       DW$Write,u
+          ldx       #D.Year
+          ldy       #$0006
+          jsr       DW$Read,u
+UpdLeave  puls      d,x,y,u,pc
+
+
+Init     
+* Check if subroutine already linked
+          IFGT      Level-1
+          ldx       <D.DWSubAddr
+          ELSE
+          ldx       >D.DWSubAddr
+          ENDC
+          bne       leave
+          IFGT      Level-1
+          ldx       <D.Proc
+          pshs      x
+          ldx       <D.SysPrc
+          stx       <D.Proc
+          ENDC
+          leax      subname,pcr
+          clra
+          os9       F$Link
+          IFGT      Level-1
+          puls      x
+          stx       <D.Proc
+          bcs       leave
+          sty       <D.DWSubAddr
+          ELSE
+          bcs       leave
+          sty       >D.DWSubAddr
+          ENDC
+          jmp       ,y			call initialization routine
+leave     rts
+
+          emod          
+eom       equ   *         
+          end             
--- a/level1/modules/clock2_dw3.asm	Mon Jul 30 17:31:30 2012 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,123 +0,0 @@
-********************************************************************
-* Clock2 - DriveWire 3 RTC Driver
-*
-* $Id$
-*
-* Edt/Rev  YYYY/MM/DD  Modified by
-* Comment
-* ------------------------------------------------------------------
-*   1      2004/08/18  Boisy G. Pitre
-* Separated clock2 modules for source clarity.
-*
-*   2      2010/01/02  Boisy G. Pitre
-* Saved some bytes by optimizing
-
-          nam       Clock2
-          ttl       DriveWire 3 RTC Driver
-
-          ifp1            
-          use       defsfile  
-          use       drivewire.d  
-          endc            
-
-tylg      set       Sbrtn+Objct
-atrv      set       ReEnt+rev
-rev       set       $00
-edition   set       2
-
-
-RTC.Base  equ       $0000     
-
-          mod       eom,name,tylg,atrv,JmpTable,RTC.Base
-
-name      fcs       "Clock2"  
-          fcb       edition
-
-subname   fcs       "dw3"
-
-* Three Entry Points:
-*   - Init
-*   - GetTime
-*   - SetTIme
-JmpTable                 
-          bra       Init
-          nop
-          bra       GetTime   	RTC Get Time
-          nop
-
-SetTime   
-          IFGT      Level-1
-          lda       <D.DWSrvID
-          ELSE
-          lda       >D.DWSrvID
-          ENDC
-          cmpa      #128
-          bne       leave
-          pshs      u,y,x,d
-          IFGT      Level-1
-          ldu       <D.DWSubAddr
-          ELSE
-          ldu       >D.DWSubAddr
-          ENDC
-          beq       UpdLeave      in case we failed to link it, just exit
-          lda       #OP_SETTIME
-          pshs      a
-          ldy       #$0001
-          leax      ,s
-          jsr       DW$Write,u
-          puls      a
-          ldx       #D.Year
-          ldy       #$0006
-          jsr       DW$Write,u
-          bra       UpdLeave
-
-GetTime 
-          lda       #OP_TIME        Time packet
-          pshs      u,y,x,d
-          IFGT      Level-1
-          ldu       <D.DWSubAddr
-          ELSE
-          ldu       >D.DWSubAddr
-          ENDC
-          beq       UpdLeave      in case we failed to link it, just exit
-          leax      ,s
-          ldy       #$0001
-          jsr       DW$Write,u
-          ldx       #D.Year
-          ldy       #$0006
-          jsr       DW$Read,u
-UpdLeave  puls      d,x,y,u,pc
-
-
-Init     
-* Check if subroutine already linked
-          IFGT      Level-1
-          ldx       <D.DWSubAddr
-          ELSE
-          ldx       >D.DWSubAddr
-          ENDC
-          bne       leave
-          IFGT      Level-1
-          ldx       <D.Proc
-          pshs      x
-          ldx       <D.SysPrc
-          stx       <D.Proc
-          ENDC
-          leax      subname,pcr
-          clra
-          os9       F$Link
-          IFGT      Level-1
-          puls      x
-          stx       <D.Proc
-          bcs       leave
-          sty       <D.DWSubAddr
-          ELSE
-          bcs       leave
-          sty       >D.DWSubAddr
-          ENDC
-          jmp       ,y			call initialization routine
-leave     rts
-
-          emod          
-eom       equ   *         
-          end             
--- a/level1/modules/dw3.asm	Mon Jul 30 17:31:30 2012 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,585 +0,0 @@
-********************************************************************
-* DW3 - DriveWire 3 Low Level Subroutine Module
-*
-* $Id$
-*
-* Edt/Rev  YYYY/MM/DD  Modified by
-* Comment
-* ------------------------------------------------------------------
-*   1      2008/01/26  Boisy G. Pitre
-* Started as a segregated subroutine module.
-*
-*   2      2010/01/20  Boisy G. Pitre
-* Added support for DWNet
-*
-*   3      2010/01/23  Aaron A. Wolfe
-* Added dynamic polling frequency
-*
-               nam       DW3
-               ttl       DriveWire 3 Low Level Subroutine Module
-
-               ifp1      
-               use       defsfile
-               use       drivewire.d
-               endc      
-
-tylg           set       Sbrtn+Objct
-atrv           set       ReEnt+rev
-rev            set       $01
-
-               mod       eom,name,tylg,atrv,start,0
-
-* irq
-IRQPckt        fcb       $00,$01,$0A         ;IRQ packet Flip(1),Mask(1),Priority(1) bytes
-* Default time packet
-DefTime        fcb       109,12,31,23,59,59
-
-* for dynamic poll frequency, number of ticks between firing poller - should we move to dwdefs?
-* speed 1 = interactive (typing)
-PollSpd1       fcb       3
-* speed 2 = bulk transfer (depending on how much processing needs to be done to incoming stream, 5-8 seems good)
-PollSpd2       fcb       6
-* speed 3 = idle 
-PollSpd3       fcb       40
-* X pollidle -> drop to next slower rate
-PollIdle       fcb       60
-
-
-name           fcs       /dw3/
-
-* DriveWire subroutine entry table
-start          lbra      Init
-               bra       Read
-               nop       
-               lbra      Write
-
-* Term
-*
-* Entry:
-*    U  = address of device memory area
-*
-* Exit:
-*    CC = carry set on error
-*    B  = error code
-*
-Term                     
-               clrb                          clear Carry
-               rts       
-
-Read                     
-               use       dwread.asm
-
-Write                    
-               use       dwwrite.asm
-
-
-			use		dwinit.asm
-			
-* Init
-*
-* Entry:
-*    Y  = address of device descriptor
-*    U  = address of device memory area
-*
-* Exit:
-*    CC = carry set on error
-*    B  = error code
-*
-* Initialize the serial device
-Init                     
-               clrb                          clear Carry
-               pshs      y,x,cc              then push CC on stack
-               bsr		DWInit
-
-; allocate DW statics page
-               pshs      u
-               ldd       #$0100
-               os9       F$SRqMem
-               tfr       u,x
-               puls      u
-               lbcs      InitEx
-               ifgt      Level-1
-               stx       <D.DWStat
-               else      
-               stx       >D.DWStat
-               endc      
-; clear out 256 byte page at X
-               clrb      
-loop@          clr       ,x+
-               decb      
-               bne       loop@
-
-* send OP_DWINIT
-         ; setup DWsub command
-               pshs      u
-               ldb		 #1					 ; DRIVER VERSION
-               lda       #OP_DWINIT          ; load command
-               pshs      d                   ; command store on stack
-               leax      ,s                  ; point X to stack 
-               ldy       #2                  ; 1 byte to send
-               ifgt      Level-1
-               ldu       <D.DWSubAddr
-               else      
-               ldu       >D.DWSubAddr
-               endc      
-               jsr       DW$Write,u                 ; call DWrite
-               leas      1,s                 ; leave one byte on stack for response 
-               
-               ; read protocol version response, 1 byte
-               leax      ,s                  ; point X to stack head
-               ldy       #1                  ; 1 byte to retrieve
-               jsr       DW$Read,u                 ; call DWRead
-               beq       InstIRQ             ; branch if no error
-               leas      3,s                 ; error, cleanup stack (u and 1 byte from read) 
-               lbra      InitEx            	 ; don't install IRQ handler
-
-* install ISR
-InstIRQ                  
-			   puls      a,u		; a has proto version from server.. not used yet
-
-			   ifgt      Level-1
-               ldx       <D.DWStat
-               else      
-               ldx       >D.DWStat
-               endc      
-               leax      DW.VIRQPkt,x
-               pshs      u
-               tfr       x,u
-               leax      Vi.Stat,x           ;fake VIRQ status register
-               lda       #$80                ;VIRQ flag clear, repeated VIRQs
-               sta       ,x                  ;set it while we're here...
-               tfr       x,d                 ;copy fake VIRQ status register address
-               leax      IRQPckt,pcr         ;IRQ polling packet
-               leay      IRQSvc,pcr          ;IRQ service entry
-               os9       F$IRQ               ;install
-               puls      u
-               bcs       InitEx              ;exit with error
-               clra      
-               ldb       PollSpd3,pcr        ; start at idle
-               ifgt      Level-1
-               ldx       <D.DWStat
-               else      
-               ldx       >D.DWStat
-               endc      
-               leax      DW.VIRQPkt,x
-               std       Vi.Rst,x            ; reset count
-               tfr       x,y                 ; move VIRQ software packet to Y
-tryagain                 
-               ldx       #$0001              ; code to install new VIRQ
-               os9       F$VIRQ              ; install
-               bcc       IRQok               ; no error, continue
-               cmpb      #E$UnkSvc
-               bne       InitEx
-; if we get an E$UnkSvc error, then clock has not been initialized, so do it here
-               leax      DefTime,pcr
-               os9       F$STime
-               bra       tryagain            ; note: this has the slim potential of looping forever
-IRQok                    
-               ifgt      Level-1
-               ldx       <D.DWStat
-               else      
-               ldx       >D.DWStat
-               endc      
-; cheat: we know DW.StatTbl is at offset $00 from D.DWStat, do not bother with leax
-               leax      DW.StatTbl,x
-               tfr       u,d
-               ldb       <V.PORT+1,u         ; get our port #
-               sta       b,x                 ; store in table
-
-InitEx                   
-               puls      cc,x,y,pc
-
-
-; ***********************************************************************
-; Interrupt handler  - Much help from Darren Atkinson
-
-IRQMulti3      anda      #$0F                ; mask first 4 bits, a is now port #+1
-               deca                          ; we pass +1 to use 0 for no data
-               pshs      a                   ; save port #
-               cmpb      RxGrab,u            ; compare room in buffer to server's byte
-               bhs       IRQM06              ; room left >= server's bytes, no problem
-
-               stb       RxGrab,u            ; else replace with room left in our buffer
-
-          ; also limit to end of buffer
-IRQM06         ldd       RxBufEnd,u          ; end addr of buffer
-               subd      RxBufPut,u          ; subtract current write pointer, result is # bytes left going forward in buff.
-
-IRQM05         cmpb      RxGrab,u            ; compare b (room left) to grab bytes  
-               bhs       IRQM03              ; branch if we have room for grab bytes
-
-               stb       RxGrab,u            ; else set grab to room left
-
-          ; send multiread req
-IRQM03         puls      a                   ; port # is on stack
-               ldb       RxGrab,u
-
-               pshs      u
-
-          ; setup DWsub command
-               pshs      d                   ; (a port, b bytes)
-               lda       #OP_SERREADM        ; load command
-               pshs      a                   ; command store on stack
-               leax      ,s                  ; point X to stack 
-               ldy       #3                  ; 3 bytes to send
-
-               ifgt      Level-1
-               ldu       <D.DWSubAddr
-               else      
-               ldu       >D.DWSubAddr
-               endc      
-               jsr       DW$Write,u                 ; call DWrite
-
-               leas      3,s                 ; clean 3 DWsub args from stack 
-
-               ldx       ,s                  ; pointer to this port's area (from U prior), leave it on stack
-               ldb       RxGrab,x            ; set B to grab bytes
-               clra                          ; 0 in high byte		
-               tfr       d,y                 ; set # bytes for DW
-
-               ldx       RxBufPut,x          ; point X to insert position in this port's buffer
-          ; receive response
-               jsr       DW$Read,u                 ; call DWRead
-          ; handle errors?
-
-
-               puls      u
-               ldb       RxGrab,u            ; our grab bytes
-
-          ; set new RxBufPut
-               ldx       RxBufPut,u          ; current write pointer
-               abx                           ; add b (# bytes) to RxBufPut
-               cmpx      RxBufEnd,u          ; end of Rx buffer?
-               blo       IRQM04              ; no, go keep laydown pointer
-               ldx       RxBufPtr,u          ; get Rx buffer start address
-IRQM04         stx       RxBufPut,u          ; set new Rx data laydown pointer
-
-          ; set new RxDatLen
-               ldb       RxDatLen,u
-               addb      RxGrab,u
-               stb       RxDatLen,u          ; store new value
-
-               lbra      CkSSig              ; had to lbra
-
-IRQMulti                 
-		  ; set IRQ freq for bulk
-               pshs      a
-               lda       PollSpd2,pcr
-               lbsr      IRQsetFRQ
-               puls      a
-
-          ; initial grab bytes
-               stb       RxGrab,u
-
-          ; limit server bytes to bufsize - datlen
-               ldb       RxBufSiz,u          ; size of buffer
-               subb      RxDatLen,u          ; current bytes in buffer
-               bne       IRQMulti3           ; continue, we have some space in buffer
-          ; no room in buffer
-               tstb      
-               lbne      CkSSig              ;had to lbra
-               lbra      IRQExit             ;had to lbra
-
-bad
-               leas      2,s                 ; error, cleanup stack 2
-               lbra      IRQExit2            ; don't reset error count on the way out
-
-; **** IRQ ENTRY POINT
-IRQSvc         equ       *
-               pshs      cc,dp               ; save system cc,DP
-               orcc      #IntMasks           ; mask interrupts
-
-          ; mark VIRQ handled (note U is pointer to our VIRQ packet in DP)
-               lda       Vi.Stat,u           ; VIRQ status register
-               anda      #^Vi.IFlag          ; clear flag in VIRQ status register
-               sta       Vi.Stat,u           ; save it...
-
-          ; poll server for incoming serial data
-
-          ; send request
-               lda       #OP_SERREAD         ; load command
-               pshs      a                   ; command store on stack
-               leax      ,s                  ; point X to stack 
-               ldy       #1                  ; 1 byte to send
-
-               ifgt      Level-1
-               ldu       <D.DWSubAddr
-               else      
-               ldu       >D.DWSubAddr
-               endc      
-               jsr       DW$Write,u                 ; call DWrite
-
-          ; receive response
-               leas      -1,s                ; one more byte to fit response
-               leax      ,s                  ; point X to stack head
-               ldy       #2                  ; 2 bytes to retrieve
-               jsr       DW$Read,u                 ; call DWRead
-               bcs       bad
-               bne       bad
-
-          ; process response	
-IRQSvc2                  
-               ldd       ,s++                ; pull returned status byte into A,data into B (set Z if zero, N if multiread)
-               bne       IRQGotOp            ; branch if D != 0 (something to do)
-* this is a NOP response.. do we need to reschedule
-               ifgt      Level-1
-               ldx       <D.DWStat
-               else      
-               ldx       >D.DWStat
-               endc      
-               lda       DW.VIRQPkt+Vi.Rst+1,x
-               cmpa      PollSpd3,pcr
-               lbeq      IRQExit             ;we are already at idle speed
-
-               lda       DW.VIRQNOP,x
-               inca      
-               cmpa      PollIdle,pcr
-               beq       FRQdown
-
-               sta       DW.VIRQNOP,x        ;inc NOP count, exit
-               lbra      IRQExit
-
-FRQdown        lda       DW.VIRQPkt+Vi.Rst+1,x
-               cmpa      PollSpd1,pcr
-               beq       FRQd1
-               lda       PollSpd3,pcr
-FRQd2                    
-               sta       DW.VIRQPkt+Vi.Rst+1,x
-               clr       DW.VIRQNOP,x
-               lbra      IRQExit
-FRQd1          lda       PollSpd2,pcr
-               bra       FRQd2
-
-; save back D on stack and build our U
-IRQGotOp       pshs      d
-          * mode switch on bits 7+6 of A: 00 = vserial, 01 = vwindow, 10 = wirebug?, 11 = ?							
-               anda      #$C0                ; mask last 6 bits
-               beq       mode00              ; virtual serial mode
-          					; future - handle other modes
-               cmpa      #%01000000          ; vwindow?
-               beq       mode01
-               lbra      IRQExit             ; for now, bail
-
-* Virtual Window Handler
-mode01
-               lda       ,s
-               anda      #%00110000
-               beq       key
-               lbra      IRQExit
-
-key
-               lda       ,s
-               anda      #$0F
-               ora       #$10
-               ifgt      Level-1
-               ldx       <D.DWStat
-               else      
-               ldx       >D.DWStat
-               endc      
-; cheat: we know DW.StatTbl is at offset $00 from D.DWStat, do not bother with leax
-;			leax    DW.StatTbl,x
-               lda       a,x
-               clrb      
-               tfr       d,u
-               puls      d
-               lbra      IRQPutch
-
-               
-* Virtual Serial Handler
-mode00         lda       ,s                  ; restore A		  
-               anda      #$0F                ; mask first 4 bits, a is now port #+1
-               beq       IRQCont             ; if we're here with 0 in the port, its not really a port # (can we jump straight to status?)
-               deca                          ; we pass +1 to use 0 for no data
-; here we set U to the static storage area of the device we are working with
-               ifgt      Level-1
-               ldx       <D.DWStat
-               else      
-               ldx       >D.DWStat
-               endc      
-; cheat: we know DW.StatTbl is at offset $00 from D.DWStat, do not bother with leax
-;			leax    DW.StatTbl,x
-               lda       a,x
-               bne       IRQCont             ; if A is 0, then this device is not active, so exit
-               puls      d
-               lbra      IRQExit
-IRQCont                  
-               clrb      
-               tfr       d,u
-
-               puls      d
-
-          * multiread/status flag is in bit 4 of A
-               bita      #$10
-               lbeq       IRQPutch            ; branch for read1 if multiread not set
-
-          * all 0s in port means status, anything else is multiread
-
-               bita      #$0F                ;mask bit 7-4
-               beq       dostat              ;port # all 0, this is a status response
-               lbra      IRQMulti            ;its not all 0, this is a multiread
-
-
-		 * in status events, databyte is split, 4bits status, 4bits port #          
-dostat         bitb      #$F0                ;mask low bits
-               lbne      IRQExit             ;we only implement code 0000, term
-			* set u to port #
-               ifgt      Level-1
-               ldx       <D.DWStat
-               else      
-               ldx       >D.DWStat
-               endc      
-               lda       b,x
-               bne       statcont            ; if A is 0, then this device is not active, so exit
-               lbra      IRQExit
-
-* IRQ set freq routine
-* sets freq and clears NOP counter
-* a = desired IRQ freq
-IRQsetFRQ      pshs      x                   ; preserve
-               ifgt      Level-1
-               ldx       <D.DWStat
-               else      
-               ldx       >D.DWStat
-               endc      
-               sta       DW.VIRQPkt+Vi.Rst+1,x
-* +++ BGP +++ added following line so that the counter (which was copied by
-* clock before calling us) gets reset to the same value the reset value. Without
-* this line, we get called again with the PRIOR Vi.Rst value.
-               sta       DW.VIRQPkt+Vi.Cnt+1,x
-               clr       DW.VIRQNOP,x
-               puls      x
-               rts       
-
-
-* This routine roots through process descriptors in a queue and
-* checks to see if the process has a path that is open to the device
-* represented by the static storage pointer in U. If so, set the Condem
-* bit of the P$State of that process.
-*
-* Note: we start with path 0 and continue until we get to either (a) the
-* last path for that process or (b) a hit on the static storage that we
-* are seeking.
-*
-* Entry: X = process descriptor to evaluate
-*        U = static storage of device we want to check against
-RootThrough              
-               clrb
-               leay      P$Path,x
-               pshs      x
-loop           cmpb      #NumPaths      
-               beq       out
-               incb
-               lda       ,y+
-               beq       loop
-               pshs      y
-               ifgt      Level-1
-               ldx       <D.PthDBT
-               else      
-               ldx       >D.PthDBT
-               endc      
-               os9       F$Find64
-               ldx       PD.DEV,y
-               leax      V$STAT,x
-               puls      y
-               bcs       loop   +BGP+ Jul 20, 2012: continue even if error in F$Find64
-
-               cmpu      ,x
-               bne       loop
-
-               ldx       ,s
-			lda   	P$State,x		get state of recipient
-			ora   	#Condem			set condemn bit
-			sta   	P$State,x		and set it back
-
-out            puls      x
-               ldx       P$Queue,x
-               bne       RootThrough
-               rts       
-
-statcont       clrb      
-               tfr       d,u
-* NEW: root through all process descriptors. if any has a path open to this
-* device, condem it
-               ldx       <D.AProcQ
-               beq       dowaitq
-               bsr       RootThrough
-dowaitq        ldx       <D.WProcQ
-               beq       dosleepq
-               bsr       RootThrough
-dosleepq       ldx       <D.SProcQ
-               beq       CkLPRC
-               bsr       RootThrough
-
-CkLPRC                   
-               lda       <V.LPRC,u
-               beq       IRQExit             ; no last process, bail
-               ldb       #S$HUP
-               os9       F$Send              ; send signal, don't think we can do anything about an error result anyway.. so
-               bra       CkSuspnd            ; do we need to go check suspend?
-
-; put byte B in port As buffer - optimization help from Darren Atkinson       
-IRQPutCh                 
-		  ; set IRQ freq for bulk
-               lda       PollSpd1,pcr
-               lbsr      IRQsetFRQ
-               ldx       RxBufPut,u          ; point X to the data buffer
-
-; process interrupt/quit characters here
-; note we will have to do this in the multiread (ugh)
-               tfr       b,a                 ; put byte in A
-               ldb       #S$Intrpt
-               cmpa      V.INTR,u
-               beq       send@
-               ldb       #S$Abort
-               cmpa      V.QUIT,u
-               bne       store
-send@          lda       V.LPRC,u
-               beq       IRQExit
-               os9       F$Send
-               bra       IRQExit
-
-store                    
-          ; store our data byte
-               sta       ,x+                 ; store and increment buffer pointer
-
-          ; adjust RxBufPut	
-               cmpx      RxBufEnd,u          ; end of Rx buffer?
-               blo       IRQSkip1            ; no, go keep laydown pointer
-               ldx       RxBufPtr,u          ; get Rx buffer start address
-IRQSkip1       stx       RxBufPut,u          ; set new Rx data laydown pointer
-
-          ; increment RxDatLen
-               inc       RxDatLen,u
-
-CkSSig                   
-               lda       <SSigID,u           ; send signal on data ready?
-               beq       CkSuspnd
-               ldb       <SSigSg,u           ; else get signal code
-               os9       F$Send
-               clr       <SSigID,u
-               bra       IRQExit
-
-          ; check if we have a process waiting for data	
-CkSuspnd                 
-               lda       <V.WAKE,u           ; V.WAKE?
-               beq       IRQExit             ; no
-               clr       <V.WAKE,u           ; clear V.WAKE
-
-          ; wake up waiter for read
-               ifeq      Level-1
-               ldb       #S$Wake
-               os9       F$Send
-               else      
-               clrb      
-               tfr       d,x                 ; copy process descriptor pointer
-               lda       P$State,x           ; get state flags
-               anda      #^Suspend           ; clear suspend state
-               sta       P$State,x           ; save state flags
-               endc      
-
-IRQExit                  
-IRQExit2       puls      cc,dp,pc            ; restore interrupts cc,dp, return
-
-               emod      
-eom            equ       *
-               end       
--- a/level1/modules/dw3mess.asm	Mon Jul 30 17:31:30 2012 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,574 +0,0 @@
-********************************************************************
-* DW3 - DriveWire 3 Low Level Subroutine Module - MESS version
-*
-* $Id$
-*
-* Edt/Rev  YYYY/MM/DD  Modified by
-* Comment
-* ------------------------------------------------------------------
-*   1      2008/01/26  Boisy G. Pitre
-* Started as a segregated subroutine module.
-*
-*   2      2010/01/20  Boisy G. Pitre
-* Added support for DWNet
-*
-*   3      2010/01/23  Aaron A. Wolfe
-* Added dynamic polling frequency
-*
-*   4     2010/04/27   Aaron A. Wolfe
-* hacked to use MESS FIFO routines
-*
-*
-               nam       DW3
-               ttl       DriveWire 3 Low Level Subroutine Module
-
-               ifp1      
-               use       defsfile
-               use       dwdefs.d
-               endc      
-
-tylg           set       Sbrtn+Objct
-atrv           set       ReEnt+rev
-rev            set       $01
-
-               mod       eom,name,tylg,atrv,start,0
-
-* irq
-IRQPckt        fcb       $00,$01,$0A         ;IRQ packet Flip(1),Mask(1),Priority(1) bytes
-* Default time packet
-DefTime        fcb       109,12,31,23,59,59
-
-* for dynamic poll frequency, number of ticks between firing poller - should we move to dwdefs?
-* speed 1 = interactive (typing)
-PollSpd1       fcb       3
-* speed 2 = bulk transfer (depending on how much processing needs to be done to incoming stream, 5-8 seems good)
-PollSpd2       fcb       6
-* speed 3 = idle 
-PollSpd3       fcb       40
-* X pollidle -> drop to next slower rate
-PollIdle       fcb       60
-
-
-name           fcs       /dw3/
-
-* DriveWire subroutine entry table
-start          lbra      Init
-               bra       Read
-               nop       
-               lbra      Write
-
-* Term
-*
-* Entry:
-*    U  = address of device memory area
-*
-* Exit:
-*    CC = carry set on error
-*    B  = error code
-*
-Term                     
-               clrb                          clear Carry
-               rts       
-
-* Read
-*
-*  ON ENTRY:
-*    X = ADDRESS OF THE RECEIVE BUFFER
-*    A = TIMEOUT VALUE (182 = APPROX ONE SECOND @ 0.89 MHz)
-*
-*  ON EXIT:
-*    Y = DATA CHECKSUM
-*    D = ACTUAL NUMBER OF BYTES RECEIVED
-*    X AND U ARE PRESERVED
-*    CC.CARRY IS SET IF A FRAMING ERROR WAS DETECTED
-*
-Read                     
-               use       dwrdmess.asm
-
-* Write
-*
-* Entry:
-Write                    
-               use       dwwrmess.asm
-
-* Init
-*
-* Entry:
-*    Y  = address of device descriptor
-*    U  = address of device memory area
-*
-* Exit:
-*    CC = carry set on error
-*    B  = error code
-*
-* Initialize the serial device
-Init                     
-               clrb                          clear Carry
-               pshs      y,x,cc              then push CC on stack
-               orcc      #IntMasks
-* no init for bitbanger in mess
-*               ldx       #PIA1Base           $FF20
-*               clr       1,x                 clear CD
-*               lda       #%11111110
-*               sta       ,x
-*               lda       #%00110100
-*               sta       1,x
-*               lda       ,x
-
-; allocate DW statics page
-               pshs      u
-               ldd       #$0100
-               os9       F$SRqMem
-               tfr       u,x
-               puls      u
-               lbcs      InitEx
-               ifgt      Level-1
-               stx       <D.DWStat
-               else      
-               stx       >D.DWStat
-               endc      
-; clear out 256 byte page at X
-               clrb      
-loop@          clr       ,x+
-               decb      
-               bne       loop@
-
-* send OP_DWINIT
-         ; setup DWsub command
-               pshs      u
-               ldb		 #1					 ; DRIVER VERSION
-               lda       #OP_DWINIT          ; load command
-               pshs      d                   ; command store on stack
-               leax      ,s                  ; point X to stack 
-               ldy       #2                  ; 1 byte to send
-               ifgt      Level-1
-               ldu       <D.DWSubAddr
-               else      
-               ldu       >D.DWSubAddr
-               endc      
-               jsr       6,u                 ; call DWrite
-               leas      1,s                 ; leave one byte on stack for response 
-               
-               ; read protocol version response, 1 byte
-               leax      ,s                  ; point X to stack head
-               ldy       #1                  ; 1 byte to retrieve
-               jsr       3,u                 ; call DWRead
-               beq       InstIRQ             ; branch if no error
-               leas      3,s                 ; error, cleanup stack (u and 1 byte from read) 
-               lbra      InitEx            	 ; don't install IRQ handler
-
-* install ISR
-InstIRQ                  
-			   puls      a,u		; a has proto version from server.. not used yet
-
-			   ifgt      Level-1
-               ldx       <D.DWStat
-               else      
-               ldx       >D.DWStat
-               endc      
-               leax      DW.VIRQPkt,x
-               pshs      u
-               tfr       x,u
-               leax      Vi.Stat,x           ;fake VIRQ status register
-               lda       #$80                ;VIRQ flag clear, repeated VIRQs
-               sta       ,x                  ;set it while we're here...
-               tfr       x,d                 ;copy fake VIRQ status register address
-               leax      IRQPckt,pcr         ;IRQ polling packet
-               leay      IRQSvc,pcr          ;IRQ service entry
-               os9       F$IRQ               ;install
-               puls      u
-               bcs       InitEx              ;exit with error
-               clra      
-               ldb       PollSpd3,pcr        ; start at idle
-               ifgt      Level-1
-               ldx       <D.DWStat
-               else      
-               ldx       >D.DWStat
-               endc      
-               leax      DW.VIRQPkt,x
-               std       Vi.Rst,x            ; reset count
-               tfr       x,y                 ; move VIRQ software packet to Y
-tryagain                 
-               ldx       #$0001              ; code to install new VIRQ
-               os9       F$VIRQ              ; install
-               bcc       IRQok               ; no error, continue
-               cmpb      #E$UnkSvc
-               bne       InitEx
-; if we get an E$UnkSvc error, then clock has not been initialized, so do it here
-               leax      DefTime,pcr
-               os9       F$STime
-               bra       tryagain            ; note: this has the slim potential of looping forever
-IRQok                    
-               ifgt      Level-1
-               ldx       <D.DWStat
-               else      
-               ldx       >D.DWStat
-               endc      
-; cheat: we know DW.StatTbl is at offset $00 from D.DWStat, do not bother with leax
-               leax      DW.StatTbl,x
-               tfr       u,d
-               ldb       <V.PORT+1,u         ; get our port #
-               sta       b,x                 ; store in table
-
-InitEx                   
-               puls      cc,x,y,pc
-
-
-; ***********************************************************************
-; Interrupt handler  - Much help from Darren Atkinson
-
-IRQMulti3      anda      #$0F                ; mask first 4 bits, a is now port #+1
-               deca                          ; we pass +1 to use 0 for no data
-               pshs      a                   ; save port #
-               cmpb      RxGrab,u            ; compare room in buffer to server's byte
-               bhs       IRQM06              ; room left >= server's bytes, no problem
-
-               stb       RxGrab,u            ; else replace with room left in our buffer
-
-          ; also limit to end of buffer
-IRQM06         ldd       RxBufEnd,u          ; end addr of buffer
-               subd      RxBufPut,u          ; subtract current write pointer, result is # bytes left going forward in buff.
-
-IRQM05         cmpb      RxGrab,u            ; compare b (room left) to grab bytes  
-               bhs       IRQM03              ; branch if we have room for grab bytes
-
-               stb       RxGrab,u            ; else set grab to room left
-
-          ; send multiread req
-IRQM03         puls      a                   ; port # is on stack
-               ldb       RxGrab,u
-
-               pshs      u
-
-          ; setup DWsub command
-               pshs      d                   ; (a port, b bytes)
-               lda       #OP_SERREADM        ; load command
-               pshs      a                   ; command store on stack
-               leax      ,s                  ; point X to stack 
-               ldy       #3                  ; 3 bytes to send
-
-               ifgt      Level-1
-               ldu       <D.DWSubAddr
-               else      
-               ldu       >D.DWSubAddr
-               endc      
-               jsr       6,u                 ; call DWrite
-
-               leas      3,s                 ; clean 3 DWsub args from stack 
-
-               ldx       ,s                  ; pointer to this port's area (from U prior), leave it on stack
-               ldb       RxGrab,x            ; set B to grab bytes
-               clra                          ; 0 in high byte		
-               tfr       d,y                 ; set # bytes for DW
-
-               ldx       RxBufPut,x          ; point X to insert position in this port's buffer
-          ; receive response
-               jsr       3,u                 ; call DWRead
-          ; handle errors?
-
-
-               puls      u
-               ldb       RxGrab,u            ; our grab bytes
-
-          ; set new RxBufPut
-               ldx       RxBufPut,u          ; current write pointer
-               abx                           ; add b (# bytes) to RxBufPut
-               cmpx      RxBufEnd,u          ; end of Rx buffer?
-               blo       IRQM04              ; no, go keep laydown pointer
-               ldx       RxBufPtr,u          ; get Rx buffer start address
-IRQM04         stx       RxBufPut,u          ; set new Rx data laydown pointer
-
-          ; set new RxDatLen
-               ldb       RxDatLen,u
-               addb      RxGrab,u
-               stb       RxDatLen,u          ; store new value
-
-               lbra      CkSSig              ; had to lbra
-
-IRQMulti                 
-		  ; set IRQ freq for bulk
-               pshs      a
-               lda       PollSpd2,pcr
-               lbsr      IRQsetFRQ
-               puls      a
-
-          ; initial grab bytes
-               stb       RxGrab,u
-
-          ; limit server bytes to bufsize - datlen
-               ldb       RxBufSiz,u          ; size of buffer
-               subb      RxDatLen,u          ; current bytes in buffer
-               bne       IRQMulti3           ; continue, we have some space in buffer
-          ; no room in buffer
-               tstb      
-               lbne      CkSSig              ;had to lbra
-               lbra      IRQExit             ;had to lbra
-
-
-; **** IRQ ENTRY POINT
-IRQSvc         equ       *
-               pshs      cc,dp               ; save system cc,DP
-               orcc      #IntMasks           ; mask interrupts
-
-          ; mark VIRQ handled (note U is pointer to our VIRQ packet in DP)
-               lda       Vi.Stat,u           ; VIRQ status register
-               anda      #^Vi.IFlag          ; clear flag in VIRQ status register
-               sta       Vi.Stat,u           ; save it...
-
-          ; poll server for incoming serial data
-
-          ; send request
-               lda       #OP_SERREAD         ; load command
-               pshs      a                   ; command store on stack
-               leax      ,s                  ; point X to stack 
-               ldy       #1                  ; 1 byte to send
-
-               ifgt      Level-1
-               ldu       <D.DWSubAddr
-               else      
-               ldu       >D.DWSubAddr
-               endc      
-               jsr       6,u                 ; call DWrite
-
-          ; receive response
-               leas      -1,s                ; one more byte to fit response
-               leax      ,s                  ; point X to stack head
-               ldy       #2                  ; 2 bytes to retrieve
-               jsr       3,u                 ; call DWRead
-               beq       IRQSvc2             ; branch if no error
-               leas      2,s                 ; error, cleanup stack 2
-               lbra      IRQExit2            ; don't reset error count on the way out
-
-          ; process response	
-IRQSvc2                  
-               ldd       ,s++                ; pull returned status byte into A,data into B (set Z if zero, N if multiread)
-               bne       IRQGotOp            ; branch if D != 0 (something to do)
-* this is a NOP response.. do we need to reschedule
-               ifgt      Level-1
-               ldx       <D.DWStat
-               else      
-               ldx       >D.DWStat
-               endc      
-               lda       DW.VIRQPkt+Vi.Rst+1,x
-               cmpa      PollSpd3,pcr
-               lbeq      IRQExit             ;we are already at idle speed
-
-               lda       DW.VIRQNOP,x
-               inca      
-               cmpa      PollIdle,pcr
-               beq       FRQdown
-
-               sta       DW.VIRQNOP,x        ;inc NOP count, exit
-               lbra      IRQExit
-
-FRQdown        lda       DW.VIRQPkt+Vi.Rst+1,x
-               cmpa      PollSpd1,pcr
-               beq       FRQd1
-               lda       PollSpd3,pcr
-FRQd2                    
-               sta       DW.VIRQPkt+Vi.Rst+1,x
-               clr       DW.VIRQNOP,x
-               lbra      IRQExit
-FRQd1          lda       PollSpd2,pcr
-               bra       FRQd2
-
-; save back D on stack and build our U
-IRQGotOp       pshs      d
-          * mode switch on bits 7+6 of A: 00 = vserial, 01 = system, 10 = wirebug?, 11 = ?							
-               anda      #$C0                ; mask last 6 bits
-               beq       mode00              ; virtual serial mode
-          					; future - handle other modes
-               lbra      IRQExit             ; for now, bail
-
-mode00         lda       ,s                  ; restore A		  
-               anda      #$0F                ; mask first 4 bits, a is now port #+1
-               beq       IRQCont             ; if we're here with 0 in the port, its not really a port # (can we jump straight to status?)
-               deca                          ; we pass +1 to use 0 for no data
-; here we set U to the static storage area of the device we are working with
-               ifgt      Level-1
-               ldx       <D.DWStat
-               else      
-               ldx       >D.DWStat
-               endc      
-; cheat: we know DW.StatTbl is at offset $00 from D.DWStat, do not bother with leax
-;			leax    DW.StatTbl,x
-               lda       a,x
-               bne       IRQCont             ; if A is 0, then this device is not active, so exit
-               puls      d
-               lbra      IRQExit
-IRQCont                  
-               clrb      
-               tfr       d,u
-
-               puls      d
-
-          * multiread/status flag is in bit 4 of A
-               bita      #$10
-               beq       IRQPutch            ; branch for read1 if multiread not set
-
-          * all 0s in port means status, anything else is multiread
-
-               bita      #$0F                ;mask bit 7-4
-               beq       dostat              ;port # all 0, this is a status response
-               lbra      IRQMulti            ;its not all 0, this is a multiread
-
-
-		 * in status events, databyte is split, 4bits status, 4bits port #          
-dostat         bitb      #$F0                ;mask low bits
-               lbne      IRQExit             ;we only implement code 0000, term
-			* set u to port #
-               ifgt      Level-1
-               ldx       <D.DWStat
-               else      
-               ldx       >D.DWStat
-               endc      
-               lda       b,x
-               bne       statcont            ; if A is 0, then this device is not active, so exit
-               lbra      IRQExit
-
-* IRQ set freq routine
-* sets freq and clears NOP counter
-* a = desired IRQ freq
-IRQsetFRQ      pshs      x                   ; preserve
-               ifgt      Level-1
-               ldx       <D.DWStat
-               else      
-               ldx       >D.DWStat
-               endc      
-               sta       DW.VIRQPkt+Vi.Rst+1,x
-* +++ BGP +++ added following line so that the counter (which was copied by
-* clock before calling us) gets reset to the same value the reset value. Without
-* this line, we get called again with the PRIOR Vi.Rst value.
-               sta       DW.VIRQPkt+Vi.Cnt+1,x
-               clr       DW.VIRQNOP,x
-               puls      x
-               rts       
-
-
-* This routine roots through process descriptors in a queue and
-* checks to see if the process has a path that is open to the device
-* represented by the static storage pointer in U. if so, the S$HUP
-* signal is sent to that process
-*
-* Entry: X = process descriptor to evaluate
-*        U = static storage of device we want to check against
-RootThrough              
-               ldb       #NumPaths
-               leay      P$Path,x
-               pshs      x
-loop           decb      
-               bmi       out
-               lda       ,y+
-               beq       loop
-               pshs      y
-               ifgt      Level-1
-               ldx       <D.PthDBT
-               else      
-               ldx       >D.PthDBT
-               endc      
-               os9       F$Find64
-               ldx       PD.DEV,y
-               leax      V$STAT,x
-               puls      y
-               bcs       out
-
-               cmpu      ,x
-               bne       loop
-
-               ldx       ,s
-               lda       P$ID,x
-               ldb       #S$HUP
-               os9       F$Send
-
-out            puls      x
-               ldx       P$Queue,x
-               bne       RootThrough
-               rts       
-
-statcont       clrb      
-               tfr       d,u
-* NEW: root through all process descriptors. if any has a path open to this
-* device, send then S$HUP
-               ldx       <D.AProcQ
-               beq       dowaitq
-               bsr       RootThrough
-dowaitq        ldx       <D.WProcQ
-               beq       dosleepq
-               bsr       RootThrough
-dosleepq       ldx       <D.SProcQ
-               beq       CkLPRC
-               bsr       RootThrough
-
-CkLPRC                   
-               lda       <V.LPRC,u
-               beq       IRQExit             ; no last process, bail
-               ldb       #S$HUP
-               os9       F$Send              ; send signal, don't think we can do anything about an error result anyway.. so
-               bra       CkSuspnd            ; do we need to go check suspend?
-
-; put byte B in port As buffer - optimization help from Darren Atkinson       
-IRQPutCh                 
-		  ; set IRQ freq for bulk
-               lda       PollSpd1,pcr
-               lbsr      IRQsetFRQ
-               ldx       RxBufPut,u          ; point X to the data buffer
-
-; process interrupt/quit characters here
-; note we will have to do this in the multiread (ugh)
-               tfr       b,a                 ; put byte in A
-               ldb       #S$Intrpt
-               cmpa      V.INTR,u
-               beq       send@
-               ldb       #S$Abort
-               cmpa      V.QUIT,u
-               bne       store
-send@          lda       V.LPRC,u
-               beq       IRQExit
-               os9       F$Send
-               bra       IRQExit
-
-store                    
-          ; store our data byte
-               sta       ,x+                 ; store and increment buffer pointer
-
-          ; adjust RxBufPut	
-               cmpx      RxBufEnd,u          ; end of Rx buffer?
-               blo       IRQSkip1            ; no, go keep laydown pointer
-               ldx       RxBufPtr,u          ; get Rx buffer start address
-IRQSkip1       stx       RxBufPut,u          ; set new Rx data laydown pointer
-
-          ; increment RxDatLen
-               inc       RxDatLen,u
-
-CkSSig                   
-               lda       <SSigID,u           ; send signal on data ready?
-               beq       CkSuspnd
-               ldb       <SSigSg,u           ; else get signal code
-               os9       F$Send
-               clr       <SSigID,u
-               bra       IRQExit
-
-          ; check if we have a process waiting for data	
-CkSuspnd                 
-               lda       <V.WAKE,u           ; V.WAKE?
-               beq       IRQExit             ; no
-               clr       <V.WAKE,u           ; clear V.WAKE
-
-          ; wake up waiter for read
-               ifeq      Level-1
-               ldb       #S$Wake
-               os9       F$Send
-               else      
-               clrb      
-               tfr       d,x                 ; copy process descriptor pointer
-               lda       P$State,x           ; get state flags
-               anda      #^Suspend           ; clear suspend state
-               sta       P$State,x           ; save state flags
-               endc      
-
-IRQExit                  
-IRQExit2       puls      cc,dp,pc            ; restore interrupts cc,dp, return
-
-               emod      
-eom            equ       *
-               end       
--- a/level1/modules/dwdesc.asm	Mon Jul 30 17:31:30 2012 -0500
+++ b/level1/modules/dwdesc.asm	Mon Jul 30 19:35:05 2012 -0500
@@ -62,7 +62,7 @@
          fcb   176+DNum
          ENDC
 mgrnam   fcs   /RBF/
-drvnam   fcs   /rbdw3/
+drvnam   fcs   /rbdw/
 
          emod  
 eom      equ   *
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/level1/modules/dwio.asm	Mon Jul 30 19:35:05 2012 -0500
@@ -0,0 +1,585 @@
+********************************************************************
+* dwio - DriveWire Low Level Subroutine Module
+*
+* $Id$
+*
+* Edt/Rev  YYYY/MM/DD  Modified by
+* Comment
+* ------------------------------------------------------------------
+*   1      2008/01/26  Boisy G. Pitre
+* Started as a segregated subroutine module.
+*
+*   2      2010/01/20  Boisy G. Pitre
+* Added support for DWNet
+*
+*   3      2010/01/23  Aaron A. Wolfe
+* Added dynamic polling frequency
+*
+               nam       dwio
+               ttl       DriveWire 3 Low Level Subroutine Module
+
+               ifp1      
+               use       defsfile
+               use       drivewire.d
+               endc      
+
+tylg           set       Sbrtn+Objct
+atrv           set       ReEnt+rev
+rev            set       $01
+
+               mod       eom,name,tylg,atrv,start,0
+
+* irq
+IRQPckt        fcb       $00,$01,$0A         ;IRQ packet Flip(1),Mask(1),Priority(1) bytes
+* Default time packet
+DefTime        fcb       109,12,31,23,59,59
+
+* for dynamic poll frequency, number of ticks between firing poller - should we move to dwdefs?
+* speed 1 = interactive (typing)
+PollSpd1       fcb       3
+* speed 2 = bulk transfer (depending on how much processing needs to be done to incoming stream, 5-8 seems good)
+PollSpd2       fcb       6
+* speed 3 = idle 
+PollSpd3       fcb       40
+* X pollidle -> drop to next slower rate
+PollIdle       fcb       60
+
+
+name           fcs       /dwio/
+
+* DriveWire subroutine entry table
+start          lbra      Init
+               bra       Read
+               nop       
+               lbra      Write
+
+* Term
+*
+* Entry:
+*    U  = address of device memory area
+*
+* Exit:
+*    CC = carry set on error
+*    B  = error code
+*
+Term                     
+               clrb                          clear Carry
+               rts       
+
+Read                     
+               use       dwread.asm
+
+Write                    
+               use       dwwrite.asm
+
+
+			use		dwinit.asm
+			
+* Init
+*
+* Entry:
+*    Y  = address of device descriptor
+*    U  = address of device memory area
+*
+* Exit:
+*    CC = carry set on error
+*    B  = error code
+*
+* Initialize the serial device
+Init                     
+               clrb                          clear Carry
+               pshs      y,x,cc              then push CC on stack
+               bsr		DWInit
+
+; allocate DW statics page
+               pshs      u
+               ldd       #$0100
+               os9       F$SRqMem
+               tfr       u,x
+               puls      u
+               lbcs      InitEx
+               ifgt      Level-1
+               stx       <D.DWStat
+               else      
+               stx       >D.DWStat
+               endc      
+; clear out 256 byte page at X
+               clrb      
+loop@          clr       ,x+
+               decb      
+               bne       loop@
+
+* send OP_DWINIT
+         ; setup DWsub command
+               pshs      u
+               ldb		 #1					 ; DRIVER VERSION
+               lda       #OP_DWINIT          ; load command
+               pshs      d                   ; command store on stack
+               leax      ,s                  ; point X to stack 
+               ldy       #2                  ; 1 byte to send
+               ifgt      Level-1
+               ldu       <D.DWSubAddr
+               else      
+               ldu       >D.DWSubAddr
+               endc      
+               jsr       DW$Write,u                 ; call DWrite
+               leas      1,s                 ; leave one byte on stack for response 
+               
+               ; read protocol version response, 1 byte
+               leax      ,s                  ; point X to stack head
+               ldy       #1                  ; 1 byte to retrieve
+               jsr       DW$Read,u                 ; call DWRead
+               beq       InstIRQ             ; branch if no error
+               leas      3,s                 ; error, cleanup stack (u and 1 byte from read) 
+               lbra      InitEx            	 ; don't install IRQ handler
+
+* install ISR
+InstIRQ                  
+			   puls      a,u		; a has proto version from server.. not used yet
+
+			   ifgt      Level-1
+               ldx       <D.DWStat
+               else      
+               ldx       >D.DWStat
+               endc      
+               leax      DW.VIRQPkt,x
+               pshs      u
+               tfr       x,u
+               leax      Vi.Stat,x           ;fake VIRQ status register
+               lda       #$80                ;VIRQ flag clear, repeated VIRQs
+               sta       ,x                  ;set it while we're here...
+               tfr       x,d                 ;copy fake VIRQ status register address
+               leax      IRQPckt,pcr         ;IRQ polling packet
+               leay      IRQSvc,pcr          ;IRQ service entry
+               os9       F$IRQ               ;install
+               puls      u
+               bcs       InitEx              ;exit with error
+               clra      
+               ldb       PollSpd3,pcr        ; start at idle
+               ifgt      Level-1
+               ldx       <D.DWStat
+               else      
+               ldx       >D.DWStat
+               endc      
+               leax      DW.VIRQPkt,x
+               std       Vi.Rst,x            ; reset count
+               tfr       x,y                 ; move VIRQ software packet to Y
+tryagain                 
+               ldx       #$0001              ; code to install new VIRQ
+               os9       F$VIRQ              ; install
+               bcc       IRQok               ; no error, continue
+               cmpb      #E$UnkSvc
+               bne       InitEx
+; if we get an E$UnkSvc error, then clock has not been initialized, so do it here
+               leax      DefTime,pcr
+               os9       F$STime
+               bra       tryagain            ; note: this has the slim potential of looping forever
+IRQok                    
+               ifgt      Level-1
+               ldx       <D.DWStat
+               else      
+               ldx       >D.DWStat
+               endc      
+; cheat: we know DW.StatTbl is at offset $00 from D.DWStat, do not bother with leax
+               leax      DW.StatTbl,x
+               tfr       u,d
+               ldb       <V.PORT+1,u         ; get our port #
+               sta       b,x                 ; store in table
+
+InitEx                   
+               puls      cc,x,y,pc
+
+
+; ***********************************************************************
+; Interrupt handler  - Much help from Darren Atkinson
+
+IRQMulti3      anda      #$0F                ; mask first 4 bits, a is now port #+1
+               deca                          ; we pass +1 to use 0 for no data
+               pshs      a                   ; save port #
+               cmpb      RxGrab,u            ; compare room in buffer to server's byte
+               bhs       IRQM06              ; room left >= server's bytes, no problem
+
+               stb       RxGrab,u            ; else replace with room left in our buffer
+
+          ; also limit to end of buffer
+IRQM06         ldd       RxBufEnd,u          ; end addr of buffer
+               subd      RxBufPut,u          ; subtract current write pointer, result is # bytes left going forward in buff.
+
+IRQM05         cmpb      RxGrab,u            ; compare b (room left) to grab bytes  
+               bhs       IRQM03              ; branch if we have room for grab bytes
+
+               stb       RxGrab,u            ; else set grab to room left
+
+          ; send multiread req
+IRQM03         puls      a                   ; port # is on stack
+               ldb       RxGrab,u
+
+               pshs      u
+
+          ; setup DWsub command
+               pshs      d                   ; (a port, b bytes)
+               lda       #OP_SERREADM        ; load command
+               pshs      a                   ; command store on stack
+               leax      ,s                  ; point X to stack 
+               ldy       #3                  ; 3 bytes to send
+
+               ifgt      Level-1
+               ldu       <D.DWSubAddr
+               else      
+               ldu       >D.DWSubAddr
+               endc      
+               jsr       DW$Write,u                 ; call DWrite
+
+               leas      3,s                 ; clean 3 DWsub args from stack 
+
+               ldx       ,s                  ; pointer to this port's area (from U prior), leave it on stack
+               ldb       RxGrab,x            ; set B to grab bytes
+               clra                          ; 0 in high byte		
+               tfr       d,y                 ; set # bytes for DW
+
+               ldx       RxBufPut,x          ; point X to insert position in this port's buffer
+          ; receive response
+               jsr       DW$Read,u                 ; call DWRead
+          ; handle errors?
+
+
+               puls      u
+               ldb       RxGrab,u            ; our grab bytes
+
+          ; set new RxBufPut
+               ldx       RxBufPut,u          ; current write pointer
+               abx                           ; add b (# bytes) to RxBufPut
+               cmpx      RxBufEnd,u          ; end of Rx buffer?
+               blo       IRQM04              ; no, go keep laydown pointer
+               ldx       RxBufPtr,u          ; get Rx buffer start address
+IRQM04         stx       RxBufPut,u          ; set new Rx data laydown pointer
+
+          ; set new RxDatLen
+               ldb       RxDatLen,u
+               addb      RxGrab,u
+               stb       RxDatLen,u          ; store new value
+
+               lbra      CkSSig              ; had to lbra
+
+IRQMulti                 
+		  ; set IRQ freq for bulk
+               pshs      a
+               lda       PollSpd2,pcr
+               lbsr      IRQsetFRQ
+               puls      a
+
+          ; initial grab bytes
+               stb       RxGrab,u
+
+          ; limit server bytes to bufsize - datlen
+               ldb       RxBufSiz,u          ; size of buffer
+               subb      RxDatLen,u          ; current bytes in buffer
+               bne       IRQMulti3           ; continue, we have some space in buffer
+          ; no room in buffer
+               tstb      
+               lbne      CkSSig              ;had to lbra
+               lbra      IRQExit             ;had to lbra
+
+bad
+               leas      2,s                 ; error, cleanup stack 2
+               lbra      IRQExit2            ; don't reset error count on the way out
+
+; **** IRQ ENTRY POINT
+IRQSvc         equ       *
+               pshs      cc,dp               ; save system cc,DP
+               orcc      #IntMasks           ; mask interrupts
+
+          ; mark VIRQ handled (note U is pointer to our VIRQ packet in DP)
+               lda       Vi.Stat,u           ; VIRQ status register
+               anda      #^Vi.IFlag          ; clear flag in VIRQ status register
+               sta       Vi.Stat,u           ; save it...
+
+          ; poll server for incoming serial data
+
+          ; send request
+               lda       #OP_SERREAD         ; load command
+               pshs      a                   ; command store on stack
+               leax      ,s                  ; point X to stack 
+               ldy       #1                  ; 1 byte to send
+
+               ifgt      Level-1
+               ldu       <D.DWSubAddr
+               else      
+               ldu       >D.DWSubAddr
+               endc      
+               jsr       DW$Write,u                 ; call DWrite
+
+          ; receive response
+               leas      -1,s                ; one more byte to fit response
+               leax      ,s                  ; point X to stack head
+               ldy       #2                  ; 2 bytes to retrieve
+               jsr       DW$Read,u                 ; call DWRead
+               bcs       bad
+               bne       bad
+
+          ; process response	
+IRQSvc2                  
+               ldd       ,s++                ; pull returned status byte into A,data into B (set Z if zero, N if multiread)
+               bne       IRQGotOp            ; branch if D != 0 (something to do)
+* this is a NOP response.. do we need to reschedule
+               ifgt      Level-1
+               ldx       <D.DWStat
+               else      
+               ldx       >D.DWStat
+               endc      
+               lda       DW.VIRQPkt+Vi.Rst+1,x
+               cmpa      PollSpd3,pcr
+               lbeq      IRQExit             ;we are already at idle speed
+
+               lda       DW.VIRQNOP,x
+               inca      
+               cmpa      PollIdle,pcr
+               beq       FRQdown
+
+               sta       DW.VIRQNOP,x        ;inc NOP count, exit
+               lbra      IRQExit
+
+FRQdown        lda       DW.VIRQPkt+Vi.Rst+1,x
+               cmpa      PollSpd1,pcr
+               beq       FRQd1
+               lda       PollSpd3,pcr
+FRQd2                    
+               sta       DW.VIRQPkt+Vi.Rst+1,x
+               clr       DW.VIRQNOP,x
+               lbra      IRQExit
+FRQd1          lda       PollSpd2,pcr
+               bra       FRQd2
+
+; save back D on stack and build our U
+IRQGotOp       pshs      d
+          * mode switch on bits 7+6 of A: 00 = vserial, 01 = vwindow, 10 = wirebug?, 11 = ?							
+               anda      #$C0                ; mask last 6 bits
+               beq       mode00              ; virtual serial mode
+          					; future - handle other modes
+               cmpa      #%01000000          ; vwindow?
+               beq       mode01
+               lbra      IRQExit             ; for now, bail
+
+* Virtual Window Handler
+mode01
+               lda       ,s
+               anda      #%00110000
+               beq       key
+               lbra      IRQExit
+
+key
+               lda       ,s
+               anda      #$0F
+               ora       #$10
+               ifgt      Level-1
+               ldx       <D.DWStat
+               else      
+               ldx       >D.DWStat
+               endc      
+; cheat: we know DW.StatTbl is at offset $00 from D.DWStat, do not bother with leax
+;			leax    DW.StatTbl,x
+               lda       a,x
+               clrb      
+               tfr       d,u
+               puls      d
+               lbra      IRQPutch
+
+               
+* Virtual Serial Handler
+mode00         lda       ,s                  ; restore A		  
+               anda      #$0F                ; mask first 4 bits, a is now port #+1
+               beq       IRQCont             ; if we're here with 0 in the port, its not really a port # (can we jump straight to status?)
+               deca                          ; we pass +1 to use 0 for no data
+; here we set U to the static storage area of the device we are working with
+               ifgt      Level-1
+               ldx       <D.DWStat
+               else      
+               ldx       >D.DWStat
+               endc      
+; cheat: we know DW.StatTbl is at offset $00 from D.DWStat, do not bother with leax
+;			leax    DW.StatTbl,x
+               lda       a,x
+               bne       IRQCont             ; if A is 0, then this device is not active, so exit
+               puls      d
+               lbra      IRQExit
+IRQCont                  
+               clrb      
+               tfr       d,u
+
+               puls      d
+
+          * multiread/status flag is in bit 4 of A
+               bita      #$10
+               lbeq       IRQPutch            ; branch for read1 if multiread not set
+
+          * all 0s in port means status, anything else is multiread
+
+               bita      #$0F                ;mask bit 7-4
+               beq       dostat              ;port # all 0, this is a status response
+               lbra      IRQMulti            ;its not all 0, this is a multiread
+
+
+		 * in status events, databyte is split, 4bits status, 4bits port #          
+dostat         bitb      #$F0                ;mask low bits
+               lbne      IRQExit             ;we only implement code 0000, term
+			* set u to port #
+               ifgt      Level-1
+               ldx       <D.DWStat
+               else      
+               ldx       >D.DWStat
+               endc      
+               lda       b,x
+               bne       statcont            ; if A is 0, then this device is not active, so exit
+               lbra      IRQExit
+
+* IRQ set freq routine
+* sets freq and clears NOP counter
+* a = desired IRQ freq
+IRQsetFRQ      pshs      x                   ; preserve
+               ifgt      Level-1
+               ldx       <D.DWStat
+               else      
+               ldx       >D.DWStat
+               endc      
+               sta       DW.VIRQPkt+Vi.Rst+1,x
+* +++ BGP +++ added following line so that the counter (which was copied by
+* clock before calling us) gets reset to the same value the reset value. Without
+* this line, we get called again with the PRIOR Vi.Rst value.
+               sta       DW.VIRQPkt+Vi.Cnt+1,x
+               clr       DW.VIRQNOP,x
+               puls      x
+               rts       
+
+
+* This routine roots through process descriptors in a queue and
+* checks to see if the process has a path that is open to the device
+* represented by the static storage pointer in U. If so, set the Condem
+* bit of the P$State of that process.
+*
+* Note: we start with path 0 and continue until we get to either (a) the
+* last path for that process or (b) a hit on the static storage that we
+* are seeking.
+*
+* Entry: X = process descriptor to evaluate
+*        U = static storage of device we want to check against
+RootThrough              
+               clrb
+               leay      P$Path,x
+               pshs      x
+loop           cmpb      #NumPaths      
+               beq       out
+               incb
+               lda       ,y+
+               beq       loop
+               pshs      y
+               ifgt      Level-1
+               ldx       <D.PthDBT
+               else      
+               ldx       >D.PthDBT
+               endc      
+               os9       F$Find64
+               ldx       PD.DEV,y
+               leax      V$STAT,x
+               puls      y
+               bcs       loop   +BGP+ Jul 20, 2012: continue even if error in F$Find64
+
+               cmpu      ,x
+               bne       loop
+
+               ldx       ,s
+			lda   	P$State,x		get state of recipient
+			ora   	#Condem			set condemn bit
+			sta   	P$State,x		and set it back
+
+out            puls      x
+               ldx       P$Queue,x
+               bne       RootThrough
+               rts       
+
+statcont       clrb      
+               tfr       d,u
+* NEW: root through all process descriptors. if any has a path open to this
+* device, condem it
+               ldx       <D.AProcQ
+               beq       dowaitq
+               bsr       RootThrough
+dowaitq        ldx       <D.WProcQ
+               beq       dosleepq
+               bsr       RootThrough
+dosleepq       ldx       <D.SProcQ
+               beq       CkLPRC
+               bsr       RootThrough
+
+CkLPRC                   
+               lda       <V.LPRC,u
+               beq       IRQExit             ; no last process, bail
+               ldb       #S$HUP
+               os9       F$Send              ; send signal, don't think we can do anything about an error result anyway.. so
+               bra       CkSuspnd            ; do we need to go check suspend?
+
+; put byte B in port As buffer - optimization help from Darren Atkinson       
+IRQPutCh                 
+		  ; set IRQ freq for bulk
+               lda       PollSpd1,pcr
+               lbsr      IRQsetFRQ
+               ldx       RxBufPut,u          ; point X to the data buffer
+
+; process interrupt/quit characters here
+; note we will have to do this in the multiread (ugh)
+               tfr       b,a                 ; put byte in A
+               ldb       #S$Intrpt
+               cmpa      V.INTR,u
+               beq       send@
+               ldb       #S$Abort
+               cmpa      V.QUIT,u
+               bne       store
+send@          lda       V.LPRC,u
+               beq       IRQExit
+               os9       F$Send
+               bra       IRQExit
+
+store                    
+          ; store our data byte
+               sta       ,x+                 ; store and increment buffer pointer
+
+          ; adjust RxBufPut	
+               cmpx      RxBufEnd,u          ; end of Rx buffer?
+               blo       IRQSkip1            ; no, go keep laydown pointer
+               ldx       RxBufPtr,u          ; get Rx buffer start address
+IRQSkip1       stx       RxBufPut,u          ; set new Rx data laydown pointer
+
+          ; increment RxDatLen
+               inc       RxDatLen,u
+
+CkSSig                   
+               lda       <SSigID,u           ; send signal on data ready?
+               beq       CkSuspnd
+               ldb       <SSigSg,u           ; else get signal code
+               os9       F$Send
+               clr       <SSigID,u
+               bra       IRQExit
+
+          ; check if we have a process waiting for data	
+CkSuspnd                 
+               lda       <V.WAKE,u           ; V.WAKE?
+               beq       IRQExit             ; no
+               clr       <V.WAKE,u           ; clear V.WAKE
+
+          ; wake up waiter for read
+               ifeq      Level-1
+               ldb       #S$Wake
+               os9       F$Send
+               else      
+               clrb      
+               tfr       d,x                 ; copy process descriptor pointer
+               lda       P$State,x           ; get state flags
+               anda      #^Suspend           ; clear suspend state
+               sta       P$State,x           ; save state flags
+               endc      
+
+IRQExit                  
+IRQExit2       puls      cc,dp,pc            ; restore interrupts cc,dp, return
+
+               emod      
+eom            equ       *
+               end       
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/level1/modules/dwiomess.asm	Mon Jul 30 19:35:05 2012 -0500
@@ -0,0 +1,574 @@
+********************************************************************
+* dwio - DriveWire I/O Subroutine Module - MESS version
+*
+* $Id$
+*
+* Edt/Rev  YYYY/MM/DD  Modified by
+* Comment
+* ------------------------------------------------------------------
+*   1      2008/01/26  Boisy G. Pitre
+* Started as a segregated subroutine module.
+*
+*   2      2010/01/20  Boisy G. Pitre
+* Added support for DWNet
+*
+*   3      2010/01/23  Aaron A. Wolfe
+* Added dynamic polling frequency
+*
+*   4     2010/04/27   Aaron A. Wolfe
+* hacked to use MESS FIFO routines
+*
+*
+               nam       dwio
+               ttl       DriveWire I/O Subroutine Module - MESS version
+
+               ifp1      
+               use       defsfile
+               use       dwdefs.d
+               endc      
+
+tylg           set       Sbrtn+Objct
+atrv           set       ReEnt+rev
+rev            set       $01
+
+               mod       eom,name,tylg,atrv,start,0
+
+* irq
+IRQPckt        fcb       $00,$01,$0A         ;IRQ packet Flip(1),Mask(1),Priority(1) bytes
+* Default time packet
+DefTime        fcb       109,12,31,23,59,59
+
+* for dynamic poll frequency, number of ticks between firing poller - should we move to dwdefs?
+* speed 1 = interactive (typing)
+PollSpd1       fcb       3
+* speed 2 = bulk transfer (depending on how much processing needs to be done to incoming stream, 5-8 seems good)
+PollSpd2       fcb       6
+* speed 3 = idle 
+PollSpd3       fcb       40
+* X pollidle -> drop to next slower rate
+PollIdle       fcb       60
+
+
+name           fcs       /dwio/
+
+* DriveWire subroutine entry table
+start          lbra      Init
+               bra       Read
+               nop       
+               lbra      Write
+
+* Term
+*
+* Entry:
+*    U  = address of device memory area
+*
+* Exit:
+*    CC = carry set on error
+*    B  = error code
+*
+Term                     
+               clrb                          clear Carry
+               rts       
+
+* Read
+*
+*  ON ENTRY:
+*    X = ADDRESS OF THE RECEIVE BUFFER
+*    A = TIMEOUT VALUE (182 = APPROX ONE SECOND @ 0.89 MHz)
+*
+*  ON EXIT:
+*    Y = DATA CHECKSUM
+*    D = ACTUAL NUMBER OF BYTES RECEIVED
+*    X AND U ARE PRESERVED
+*    CC.CARRY IS SET IF A FRAMING ERROR WAS DETECTED
+*
+Read                     
+               use       dwrdmess.asm
+
+* Write
+*
+* Entry:
+Write                    
+               use       dwwrmess.asm
+
+* Init
+*
+* Entry:
+*    Y  = address of device descriptor
+*    U  = address of device memory area
+*
+* Exit:
+*    CC = carry set on error
+*    B  = error code
+*
+* Initialize the serial device
+Init                     
+               clrb                          clear Carry
+               pshs      y,x,cc              then push CC on stack
+               orcc      #IntMasks
+* no init for bitbanger in mess
+*               ldx       #PIA1Base           $FF20
+*               clr       1,x                 clear CD
+*               lda       #%11111110
+*               sta       ,x
+*               lda       #%00110100
+*               sta       1,x
+*               lda       ,x
+
+; allocate DW statics page
+               pshs      u
+               ldd       #$0100
+               os9       F$SRqMem
+               tfr       u,x
+               puls      u
+               lbcs      InitEx
+               ifgt      Level-1
+               stx       <D.DWStat
+               else      
+               stx       >D.DWStat
+               endc      
+; clear out 256 byte page at X
+               clrb      
+loop@          clr       ,x+
+               decb      
+               bne       loop@
+
+* send OP_DWINIT
+         ; setup DWsub command
+               pshs      u
+               ldb		 #1					 ; DRIVER VERSION
+               lda       #OP_DWINIT          ; load command
+               pshs      d                   ; command store on stack
+               leax      ,s                  ; point X to stack 
+               ldy       #2                  ; 1 byte to send
+               ifgt      Level-1
+               ldu       <D.DWSubAddr
+               else      
+               ldu       >D.DWSubAddr
+               endc      
+               jsr       6,u                 ; call DWrite
+               leas      1,s                 ; leave one byte on stack for response 
+               
+               ; read protocol version response, 1 byte
+               leax      ,s                  ; point X to stack head
+               ldy       #1                  ; 1 byte to retrieve
+               jsr       3,u                 ; call DWRead
+               beq       InstIRQ             ; branch if no error
+               leas      3,s                 ; error, cleanup stack (u and 1 byte from read) 
+               lbra      InitEx            	 ; don't install IRQ handler
+
+* install ISR
+InstIRQ                  
+			   puls      a,u		; a has proto version from server.. not used yet
+
+			   ifgt      Level-1
+               ldx       <D.DWStat
+               else      
+               ldx       >D.DWStat
+               endc      
+               leax      DW.VIRQPkt,x
+               pshs      u
+               tfr       x,u
+               leax      Vi.Stat,x           ;fake VIRQ status register
+               lda       #$80                ;VIRQ flag clear, repeated VIRQs
+               sta       ,x                  ;set it while we're here...
+               tfr       x,d                 ;copy fake VIRQ status register address
+               leax      IRQPckt,pcr         ;IRQ polling packet
+               leay      IRQSvc,pcr          ;IRQ service entry
+               os9       F$IRQ               ;install
+               puls      u
+               bcs       InitEx              ;exit with error
+               clra      
+               ldb       PollSpd3,pcr        ; start at idle
+               ifgt      Level-1
+               ldx       <D.DWStat
+               else      
+               ldx       >D.DWStat
+               endc      
+               leax      DW.VIRQPkt,x
+               std       Vi.Rst,x            ; reset count
+               tfr       x,y                 ; move VIRQ software packet to Y
+tryagain                 
+               ldx       #$0001              ; code to install new VIRQ
+               os9       F$VIRQ              ; install
+               bcc       IRQok               ; no error, continue
+               cmpb      #E$UnkSvc
+               bne       InitEx
+; if we get an E$UnkSvc error, then clock has not been initialized, so do it here
+               leax      DefTime,pcr
+               os9       F$STime
+               bra       tryagain            ; note: this has the slim potential of looping forever
+IRQok                    
+               ifgt      Level-1
+               ldx       <D.DWStat
+               else      
+               ldx       >D.DWStat
+               endc      
+; cheat: we know DW.StatTbl is at offset $00 from D.DWStat, do not bother with leax
+               leax      DW.StatTbl,x
+               tfr       u,d
+               ldb       <V.PORT+1,u         ; get our port #
+               sta       b,x                 ; store in table
+
+InitEx                   
+               puls      cc,x,y,pc
+
+
+; ***********************************************************************
+; Interrupt handler  - Much help from Darren Atkinson
+
+IRQMulti3      anda      #$0F                ; mask first 4 bits, a is now port #+1
+               deca                          ; we pass +1 to use 0 for no data
+               pshs      a                   ; save port #
+               cmpb      RxGrab,u            ; compare room in buffer to server's byte
+               bhs       IRQM06              ; room left >= server's bytes, no problem
+
+               stb       RxGrab,u            ; else replace with room left in our buffer
+
+          ; also limit to end of buffer
+IRQM06         ldd       RxBufEnd,u          ; end addr of buffer
+               subd      RxBufPut,u          ; subtract current write pointer, result is # bytes left going forward in buff.
+
+IRQM05         cmpb      RxGrab,u            ; compare b (room left) to grab bytes  
+               bhs       IRQM03              ; branch if we have room for grab bytes
+
+               stb       RxGrab,u            ; else set grab to room left
+
+          ; send multiread req
+IRQM03         puls      a                   ; port # is on stack
+               ldb       RxGrab,u
+
+               pshs      u
+
+          ; setup DWsub command
+               pshs      d                   ; (a port, b bytes)
+               lda       #OP_SERREADM        ; load command
+               pshs      a                   ; command store on stack
+               leax      ,s                  ; point X to stack 
+               ldy       #3                  ; 3 bytes to send
+
+               ifgt      Level-1
+               ldu       <D.DWSubAddr
+               else      
+               ldu       >D.DWSubAddr
+               endc      
+               jsr       6,u                 ; call DWrite
+
+               leas      3,s                 ; clean 3 DWsub args from stack 
+
+               ldx       ,s                  ; pointer to this port's area (from U prior), leave it on stack
+               ldb       RxGrab,x            ; set B to grab bytes
+               clra                          ; 0 in high byte		
+               tfr       d,y                 ; set # bytes for DW
+
+               ldx       RxBufPut,x          ; point X to insert position in this port's buffer
+          ; receive response
+               jsr       3,u                 ; call DWRead
+          ; handle errors?
+
+
+               puls      u
+               ldb       RxGrab,u            ; our grab bytes
+
+          ; set new RxBufPut
+               ldx       RxBufPut,u          ; current write pointer
+               abx                           ; add b (# bytes) to RxBufPut
+               cmpx      RxBufEnd,u          ; end of Rx buffer?
+               blo       IRQM04              ; no, go keep laydown pointer
+               ldx       RxBufPtr,u          ; get Rx buffer start address
+IRQM04         stx       RxBufPut,u          ; set new Rx data laydown pointer
+
+          ; set new RxDatLen
+               ldb       RxDatLen,u
+               addb      RxGrab,u
+               stb       RxDatLen,u          ; store new value
+
+               lbra      CkSSig              ; had to lbra
+
+IRQMulti                 
+		  ; set IRQ freq for bulk
+               pshs      a
+               lda       PollSpd2,pcr
+               lbsr      IRQsetFRQ
+               puls      a
+
+          ; initial grab bytes
+               stb       RxGrab,u
+
+          ; limit server bytes to bufsize - datlen
+               ldb       RxBufSiz,u          ; size of buffer
+               subb      RxDatLen,u          ; current bytes in buffer
+               bne       IRQMulti3           ; continue, we have some space in buffer
+          ; no room in buffer
+               tstb      
+               lbne      CkSSig              ;had to lbra
+               lbra      IRQExit             ;had to lbra
+
+
+; **** IRQ ENTRY POINT
+IRQSvc         equ       *
+               pshs      cc,dp               ; save system cc,DP
+               orcc      #IntMasks           ; mask interrupts
+
+          ; mark VIRQ handled (note U is pointer to our VIRQ packet in DP)
+               lda       Vi.Stat,u           ; VIRQ status register
+               anda      #^Vi.IFlag          ; clear flag in VIRQ status register
+               sta       Vi.Stat,u           ; save it...
+
+          ; poll server for incoming serial data
+
+          ; send request
+               lda       #OP_SERREAD         ; load command
+               pshs      a                   ; command store on stack
+               leax      ,s                  ; point X to stack 
+               ldy       #1                  ; 1 byte to send
+
+               ifgt      Level-1
+               ldu       <D.DWSubAddr
+               else      
+               ldu       >D.DWSubAddr
+               endc      
+               jsr       6,u                 ; call DWrite
+
+          ; receive response
+               leas      -1,s                ; one more byte to fit response
+               leax      ,s                  ; point X to stack head
+               ldy       #2                  ; 2 bytes to retrieve
+               jsr       3,u                 ; call DWRead
+               beq       IRQSvc2             ; branch if no error
+               leas      2,s                 ; error, cleanup stack 2
+               lbra      IRQExit2            ; don't reset error count on the way out
+
+          ; process response	
+IRQSvc2                  
+               ldd       ,s++                ; pull returned status byte into A,data into B (set Z if zero, N if multiread)
+               bne       IRQGotOp            ; branch if D != 0 (something to do)
+* this is a NOP response.. do we need to reschedule
+               ifgt      Level-1
+               ldx       <D.DWStat
+               else      
+               ldx       >D.DWStat
+               endc      
+               lda       DW.VIRQPkt+Vi.Rst+1,x
+               cmpa      PollSpd3,pcr
+               lbeq      IRQExit             ;we are already at idle speed
+
+               lda       DW.VIRQNOP,x
+               inca      
+               cmpa      PollIdle,pcr
+               beq       FRQdown
+
+               sta       DW.VIRQNOP,x        ;inc NOP count, exit
+               lbra      IRQExit
+
+FRQdown        lda       DW.VIRQPkt+Vi.Rst+1,x
+               cmpa      PollSpd1,pcr
+               beq       FRQd1
+               lda       PollSpd3,pcr
+FRQd2                    
+               sta       DW.VIRQPkt+Vi.Rst+1,x
+               clr       DW.VIRQNOP,x
+               lbra      IRQExit
+FRQd1          lda       PollSpd2,pcr
+               bra       FRQd2
+
+; save back D on stack and build our U
+IRQGotOp       pshs      d
+          * mode switch on bits 7+6 of A: 00 = vserial, 01 = system, 10 = wirebug?, 11 = ?							
+               anda      #$C0                ; mask last 6 bits
+               beq       mode00              ; virtual serial mode
+          					; future - handle other modes
+               lbra      IRQExit             ; for now, bail
+
+mode00         lda       ,s                  ; restore A		  
+               anda      #$0F                ; mask first 4 bits, a is now port #+1
+               beq       IRQCont             ; if we're here with 0 in the port, its not really a port # (can we jump straight to status?)
+               deca                          ; we pass +1 to use 0 for no data
+; here we set U to the static storage area of the device we are working with
+               ifgt      Level-1
+               ldx       <D.DWStat
+               else      
+               ldx       >D.DWStat
+               endc      
+; cheat: we know DW.StatTbl is at offset $00 from D.DWStat, do not bother with leax
+;			leax    DW.StatTbl,x
+               lda       a,x
+               bne       IRQCont             ; if A is 0, then this device is not active, so exit
+               puls      d
+               lbra      IRQExit
+IRQCont                  
+               clrb      
+               tfr       d,u
+
+               puls      d
+
+          * multiread/status flag is in bit 4 of A
+               bita      #$10
+               beq       IRQPutch            ; branch for read1 if multiread not set
+
+          * all 0s in port means status, anything else is multiread
+
+               bita      #$0F                ;mask bit 7-4
+               beq       dostat              ;port # all 0, this is a status response
+               lbra      IRQMulti            ;its not all 0, this is a multiread
+
+
+		 * in status events, databyte is split, 4bits status, 4bits port #          
+dostat         bitb      #$F0                ;mask low bits
+               lbne      IRQExit             ;we only implement code 0000, term
+			* set u to port #
+               ifgt      Level-1
+               ldx       <D.DWStat
+               else      
+               ldx       >D.DWStat
+               endc      
+               lda       b,x
+               bne       statcont            ; if A is 0, then this device is not active, so exit
+               lbra      IRQExit
+
+* IRQ set freq routine
+* sets freq and clears NOP counter
+* a = desired IRQ freq
+IRQsetFRQ      pshs      x                   ; preserve
+               ifgt      Level-1
+               ldx       <D.DWStat
+               else      
+               ldx       >D.DWStat
+               endc      
+               sta       DW.VIRQPkt+Vi.Rst+1,x
+* +++ BGP +++ added following line so that the counter (which was copied by
+* clock before calling us) gets reset to the same value the reset value. Without
+* this line, we get called again with the PRIOR Vi.Rst value.
+               sta       DW.VIRQPkt+Vi.Cnt+1,x
+               clr       DW.VIRQNOP,x
+               puls      x
+               rts       
+
+
+* This routine roots through process descriptors in a queue and
+* checks to see if the process has a path that is open to the device
+* represented by the static storage pointer in U. if so, the S$HUP
+* signal is sent to that process
+*
+* Entry: X = process descriptor to evaluate
+*        U = static storage of device we want to check against
+RootThrough              
+               ldb       #NumPaths
+               leay      P$Path,x
+               pshs      x
+loop           decb      
+               bmi       out
+               lda       ,y+
+               beq       loop
+               pshs      y
+               ifgt      Level-1
+               ldx       <D.PthDBT
+               else      
+               ldx       >D.PthDBT
+               endc      
+               os9       F$Find64
+               ldx       PD.DEV,y
+               leax      V$STAT,x
+               puls      y
+               bcs       out
+
+               cmpu      ,x
+               bne       loop
+
+               ldx       ,s
+               lda       P$ID,x
+               ldb       #S$HUP
+               os9       F$Send
+
+out            puls      x
+               ldx       P$Queue,x
+               bne       RootThrough
+               rts       
+
+statcont       clrb      
+               tfr       d,u
+* NEW: root through all process descriptors. if any has a path open to this
+* device, send then S$HUP
+               ldx       <D.AProcQ
+               beq       dowaitq
+               bsr       RootThrough
+dowaitq        ldx       <D.WProcQ
+               beq       dosleepq
+               bsr       RootThrough
+dosleepq       ldx       <D.SProcQ
+               beq       CkLPRC
+               bsr       RootThrough
+
+CkLPRC                   
+               lda       <V.LPRC,u
+               beq       IRQExit             ; no last process, bail
+               ldb       #S$HUP
+               os9       F$Send              ; send signal, don't think we can do anything about an error result anyway.. so
+               bra       CkSuspnd            ; do we need to go check suspend?
+
+; put byte B in port As buffer - optimization help from Darren Atkinson       
+IRQPutCh                 
+		  ; set IRQ freq for bulk
+               lda       PollSpd1,pcr
+               lbsr      IRQsetFRQ
+               ldx       RxBufPut,u          ; point X to the data buffer
+
+; process interrupt/quit characters here
+; note we will have to do this in the multiread (ugh)
+               tfr       b,a                 ; put byte in A
+               ldb       #S$Intrpt
+               cmpa      V.INTR,u
+               beq       send@
+               ldb       #S$Abort
+               cmpa      V.QUIT,u
+               bne       store
+send@          lda       V.LPRC,u
+               beq       IRQExit
+               os9       F$Send
+               bra       IRQExit
+
+store                    
+          ; store our data byte
+               sta       ,x+                 ; store and increment buffer pointer
+
+          ; adjust RxBufPut	
+               cmpx      RxBufEnd,u          ; end of Rx buffer?
+               blo       IRQSkip1            ; no, go keep laydown pointer
+               ldx       RxBufPtr,u          ; get Rx buffer start address
+IRQSkip1       stx       RxBufPut,u          ; set new Rx data laydown pointer
+
+          ; increment RxDatLen
+               inc       RxDatLen,u
+
+CkSSig                   
+               lda       <SSigID,u           ; send signal on data ready?
+               beq       CkSuspnd
+               ldb       <SSigSg,u           ; else get signal code
+               os9       F$Send
+               clr       <SSigID,u
+               bra       IRQExit
+
+          ; check if we have a process waiting for data	
+CkSuspnd                 
+               lda       <V.WAKE,u           ; V.WAKE?
+               beq       IRQExit             ; no
+               clr       <V.WAKE,u           ; clear V.WAKE
+
+          ; wake up waiter for read
+               ifeq      Level-1
+               ldb       #S$Wake
+               os9       F$Send
+               else      
+               clrb      
+               tfr       d,x                 ; copy process descriptor pointer
+               lda       P$State,x           ; get state flags
+               anda      #^Suspend           ; clear suspend state
+               sta       P$State,x           ; save state flags
+               endc      
+
+IRQExit                  
+IRQExit2       puls      cc,dp,pc            ; restore interrupts cc,dp, return
+
+               emod      
+eom            equ       *
+               end       
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/level1/modules/rbdw.asm	Mon Jul 30 19:35:05 2012 -0500
@@ -0,0 +1,400 @@
+********************************************************************
+* rbdw - DriveWire RBF driver
+*
+* $Id$
+*
+* This driver works in conjuction with the DriveWire Server on Linux,
+* Mac or Windows, providing the CoCo with pseudo-disk access through
+* the serial port.
+*
+* It adheres to the DriveWire Version 3 Protocol.
+*
+* The baud rate is set at 115200 and the communications requirements
+* are set to 8-N-1.  For OS-9 Level One on a CoCo 2, the baud rate
+* is 57600.
+*
+* Edt/Rev  YYYY/MM/DD  Modified by
+* Comment
+* ------------------------------------------------------------------
+*   1      2008/02/08  Boisy G. Pitre
+* Started from drivewire.asm in DriveWire 2 Product folder.
+*
+*   2      2008/04/22  Boisy G. Pitre
+* Verified working operation on a CoCo 3 running NitrOS-9/6809 Level 1 @ 57.6Kbps
+*
+*   3      2009/03/09  Boisy G. Pitre
+* Added checks for size after reading as noted by Darren A's email.
+*
+*   4      2009/12/31  Boisy G. Pitre
+* Fixed a crash in Term by adding a check for DWSubAddr of $0000 
+* (possible if Init fails due to subroutine module not being in
+*  memory and I$Detach calls Term)
+
+         nam   rbdw
+         ttl   DriveWire RBF driver
+
+NUMRETRIES equ  8
+
+         ifp1
+         use   defsfile
+         use   drivewire.d
+         endc
+
+NumDrvs  set   4
+
+tylg     set   Drivr+Objct   
+atrv     set   ReEnt+rev
+rev      set   $01
+edition  set   4
+
+         mod   eom,name,tylg,atrv,start,size
+
+         rmb   DRVBEG+(DRVMEM*NumDrvs)
+driveno  rmb   1
+retries  rmb   1
+size     equ   .
+
+         fcb   DIR.+SHARE.+PEXEC.+PREAD.+PWRIT.+EXEC.+UPDAT.
+
+name     fcs   /rbdw/
+         fcb   edition
+
+start    bra   Init
+         nop
+         lbra   Read
+         lbra  Write
+         lbra  GetStat
+         lbra  SetStat
+
+* Term
+*
+* Entry:
+*    U  = address of device memory area
+*
+* Exit:
+*    CC = carry set on error
+*    B  = error code
+*
+Term
+         clrb
+         pshs cc
+* Send OP_TERM to the server
+          IFGT  LEVEL-1
+         ldu   <D.DWSubAddr
+         ELSE
+         ldu   >D.DWSubAddr
+         ENDC
+* Fix crash in certain cases
+         beq   no@
+         ldy   #$0001
+         lda   #OP_TERM
+         pshs a
+         leax ,s
+         orcc  #IntMasks
+         jsr   DW$Write,u
+         clrb
+         puls a
+no@      puls cc,pc
+
+* Init
+*
+* Entry:
+*    Y  = address of device descriptor
+*    U  = address of device memory area
+*
+* Exit:
+*    CC = carry set on error
+*    B  = error code
+*
+Init
+         IFGT  Level-1
+* Perform this so we can successfully do F$Link below
+         ldx   <D.Proc
+         pshs  a,x
+         ldx   <D.SysPrc
+         stx   <D.Proc 
+         ELSE
+         pshs  a
+         ENDC
+
+         ldb   #NumDrvs
+         stb   V.NDRV,u
+         leax  DRVBEG,u
+         lda   #$FF
+Init2    sta   DD.TOT,x			invalidate drive tables
+         sta   DD.TOT+1,x
+         sta   DD.TOT+2,x
+         leax  DRVMEM,x
+         decb
+         bne   Init2
+
+* Check if subroutine module has already been linked
+         IFGT  LEVEL-1
+         ldu   <D.DWSubAddr
+         ELSE
+         ldu   >D.DWSubAddr
+         ENDC
+         bne   InitEx
+* Link to subroutine module
+         clra
+         leax  dwiosub,pcr
+         os9   F$Link
+         bcs   InitEx 
+         tfr   y,u		 
+         IFGT  LEVEL-1
+         stu   <D.DWSubAddr
+         ELSE
+         stu   >D.DWSubAddr
+         ENDC
+* Initialize the low level device
+         jsr   DW$Init,u
+         lda   #OP_INIT
+         sta   ,s
+         leax  ,s
+         ldy   #$0001
+         jsr   DW$Write,u
+         clrb
+
+InitEx
+         IFGT  Level-1
+         puls  a,x
+         stx   <D.Proc
+InitEx2
+         rts
+         ELSE
+InitEx2
+         puls  a,pc
+         ENDC
+
+* Read
+*
+* Entry:
+*    B  = MSB of LSN
+*    X  = LSB of LSN
+*    Y  = address of path descriptor
+*    U  = address of device memory area
+*
+* Exit:
+*    CC = carry set on error
+*    B  = error code
+*
+Read 
+         lda   #NUMRETRIES
+         sta   retries,u
+         cmpx  #$0000			LSN 0?
+         bne   ReadSect			branch if not
+         tstb	   			LSN 0?
+         bne   ReadSect			branch if not
+* At this point we are reading LSN0
+         bsr   ReadSect			read the sector
+         bcs   CpyLSNEx			if error, exit
+         leax  DRVBEG,u			point to start of drive table
+         ldb   <PD.DRV,y		get drive number
+NextDrv  beq   CopyLSN0			branch if terminal count
+         leax  <DRVMEM,x		else move to next drive table entry
+         decb				decrement counter
+         bra   NextDrv			and continue
+CopyLSN0 ldb   #DD.SIZ			get size to copy
+         ldy   PD.BUF,y			point to buffer
+CpyLSNLp lda   ,y+			get byte from buffer
+         sta   ,x+			and save in drive table
+         decb
+         bne   CpyLSNLp
+CpyLSNEx rts
+
+
+ReadSect pshs  cc
+         pshs  u,y,x,b,a,cc			then push CC and others on stack
+* Send out op code and 3 byte LSN
+         lda   PD.DRV,y			get drive number
+         cmpa  #NumDrvs
+         blo   Read1
+         ldb   #E$Unit
+         bra   ReadEr2
+Read1    sta   driveno,u
+         lda   #OP_READEX		load A with READ opcode
+         
+Read2
+         ldb   driveno,u
+         leax  ,s
+         std   ,x
+         ldy   #5 
+         IFGT  LEVEL-1
+         ldu   <D.DWSubAddr
+         ELSE
+         ldu   >D.DWSubAddr
+         ENDC
+         orcc  #IntMasks
+         jsr   DW$Write,u
+		 
+* Get 256 bytes of sector data
+         ldx   5,s
+         ldx   PD.BUF,x			get buffer pointer into X
+         ldy   #$0100
+         jsr   DW$Read,u
+         bcs   ReadEr1
+         bne   ReadEr1
+         pshs  y
+         leax  ,s
+         ldy   #$0002
+         jsr   DW$Write,u				write checksum to server
+
+* Get error code byte
+         leax  ,s
+         ldy   #$0001
+         jsr   DW$Read,u
+         puls  d
+         bcs   ReadEr0			branch if we timed out
+         bne   ReadEr0
+         tfr   a,b				transfer byte to B (in case of error)
+         tstb					is it zero?
+         beq   ReadEx			if not, exit with error
+         cmpb  #E$CRC
+         bne   ReadEr2
+         ldu   7,s				get U from stack
+         dec   retries,u		decrement retries
+         beq   ReadEr1
+         
+         lda   #OP_REREADEX		reread opcode
+         bra   Read2			and try getting sector again
+ReadEr0 
+ReadEr1  ldb   #E$Read			read error
+ReadEr2  lda   9,s
+         ora   #Carry
+         sta   9,s
+ReadEx   leas  5,s
+         puls  y,u
+         puls  cc,pc
+
+* Write
+*
+* Entry:
+*    B  = MSB of LSN
+*    X  = LSB of LSN
+*    Y  = address of path descriptor
+*    U  = address of device memory area
+*
+* Exit:
+*    CC = carry set on error
+*    B  = error code
+*
+Write    lda   #NUMRETRIES
+         sta   retries,u
+         pshs  cc
+         pshs  u,y,x,b,a,cc
+         ENDC
+* Send out op code and 3 byte LSN
+         lda   PD.DRV,y
+         cmpa  #NumDrvs
+         blo   Write1
+         comb			set Carry
+         ldb   #E$Unit
+         bra   WritEx
+Write1   sta   driveno,u
+         lda   #OP_WRITE
+Write15
+         ldb   driveno,u
+         leax  ,s
+         std   ,x
+         ldy   #$0005
+         IFGT  LEVEL-1
+         ldu   <D.DWSubAddr
+         ELSE
+         ldu   >D.DWSubAddr
+         ENDC
+         orcc  #IntMasks
+         jsr   DW$Write,u
+
+* Compute checksum on sector we just sent and send checksum to server
+         ldy   5,s				get Y from stack
+         ldx   PD.BUF,y			point to buffer
+         ldy   #256
+         jsr   6,u
+         leax  -256,x
+         bsr   DoCSum
+         pshs  d
+         leax  ,s
+         ldy   #$0002
+         jsr   DW$Write,u
+
+* Await acknowledgement from server on receipt of sector
+         leax  ,s
+         ldy   #$0001
+         jsr   DW$Read,u				read ack byte from server
+         bcs   WritEx0
+         bne   WritEx0
+         puls  d				  
+         tsta
+         beq   WritEx			yep
+         tfr   a,b
+         cmpb  #E$CRC			checksum error?
+         bne   WritEx2
+         ldu   7,s				get U from stack
+         dec   retries,u		decrement retries
+         beq   WritEx1			exit with error if no more
+         lda   #OP_REWRIT		else resend
+         bra   Write15
+WritEx0  puls  d
+WritEx1  ldb   #E$Write
+WritEx2  lda   9,s
+         ora   #Carry
+         sta   9,s
+WritEx   leas  5,s
+         puls  y,u
+         puls  cc,pc
+ 
+         use   dwcheck.asm
+		 
+* SetStat
+*
+* Entry:
+*    R$B = function code
+*    Y   = address of path descriptor
+*    U   = address of device memory area
+*
+* Exit:
+*    CC = carry set on error
+*    B  = error code
+*
+SetStat  lda   #OP_SETSTA
+* Size optimization
+		 fcb   $8C  skip next two bytes
+
+
+* GetStat
+*
+* Entry:
+*    R$B = function code
+*    Y   = address of path descriptor
+*    U   = address of device memory area
+*
+* Exit:
+*    CC = carry set on error
+*    B  = error code
+*
+GetStat  
+         lda   #OP_GETSTA
+         clrb				clear Carry
+         pshs  cc			and push CC on stack
+         leas  -3,s
+         sta   ,s
+         lda   PD.DRV,y			get drive number
+         ldx   PD.RGS,y
+         ldb   R$B,x
+         std   1,s
+         leax  ,s
+         ldy   #$0003
+         IFGT  LEVEL-1
+         ldu   <D.DWSubAddr
+         ELSE
+         ldu   >D.DWSubAddr
+         ENDC
+         jsr   6,u
+         leas  3,s
+         puls  cc,pc
+
+dwiosub  fcs   /dwio/
+		 
+         emod
+eom      equ   *
+         end
--- a/level1/modules/rbdw3.asm	Mon Jul 30 17:31:30 2012 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,398 +0,0 @@
-********************************************************************
-* rbdw3 - DriveWire 3 driver
-*
-* $Id$
-*
-* This driver works in conjuction with the DriveWire Server on Linux,
-* Mac or Windows, providing the CoCo with pseudo-disk access through
-* the serial port.
-*
-* It adheres to the DriveWire Version 3 Protocol.
-*
-* The baud rate is set at 115200 and the communications requirements
-* are set to 8-N-1.  For OS-9 Level One on a CoCo 2, the baud rate
-* is 57600.
-*
-* Edt/Rev  YYYY/MM/DD  Modified by
-* Comment
-* ------------------------------------------------------------------
-*   1      2008/02/08  Boisy G. Pitre
-* Started from drivewire.asm in DriveWire 2 Product folder.
-*
-*   2      2008/04/22  Boisy G. Pitre
-* Verified working operation on a CoCo 3 running NitrOS-9/6809 Level 1 @ 57.6Kbps
-*
-*   3      2009/03/09  Boisy G. Pitre
-* Added checks for size after reading as noted by Darren A's email.
-*
-*   4      2009/12/31  Boisy G. Pitre
-* Fixed a crash in Term by adding a check for DWSubAddr of $0000 
-* (possible if Init fails due to subroutine module not being in
-*  memory and I$Detach calls Term)
-
-         nam   rbdw3
-         ttl   DriveWire 3 driver
-
-NUMRETRIES equ  8
-
-         ifp1
-         use   defsfile
-         use   drivewire.d
-         endc
-
-NumDrvs  set   4
-
-tylg     set   Drivr+Objct   
-atrv     set   ReEnt+rev
-rev      set   $01
-edition  set   4
-
-         mod   eom,name,tylg,atrv,start,size
-
-         rmb   DRVBEG+(DRVMEM*NumDrvs)
-driveno  rmb   1
-retries  rmb   1
-size     equ   .
-
-         fcb   DIR.+SHARE.+PEXEC.+PREAD.+PWRIT.+EXEC.+UPDAT.
-
-name     fcs   /rbdw3/
-         fcb   edition
-
-start    bra   Init
-         nop
-         lbra   Read
-         lbra  Write
-         lbra  GetStat
-         lbra  SetStat
-
-* Term
-*
-* Entry:
-*    U  = address of device memory area
-*
-* Exit:
-*    CC = carry set on error
-*    B  = error code
-*
-Term
-         clrb
-         pshs cc
-* Send OP_TERM to the server
-          IFGT  LEVEL-1
-         ldu   <D.DWSubAddr
-         ELSE
-         ldu   >D.DWSubAddr
-         ENDC
-* Fix crash in certain cases
-         beq   no@
-         ldy   #$0001
-         lda   #OP_TERM
-         pshs a
-         leax ,s
-         orcc  #IntMasks
-         jsr   DW$Write,u
-         clrb
-         puls a
-no@      puls cc,pc
-
-* Init
-*
-* Entry:
-*    Y  = address of device descriptor
-*    U  = address of device memory area
-*
-* Exit:
-*    CC = carry set on error
-*    B  = error code
-*
-Init
-         IFGT  Level-1
-* Perform this so we can successfully do F$Link below
-         ldx   <D.Proc
-         pshs  a,x
-         ldx   <D.SysPrc
-         stx   <D.Proc 
-         ELSE
-         pshs  a
-         ENDC
-
-         ldb   #NumDrvs
-         stb   V.NDRV,u
-         leax  DRVBEG,u
-         lda   #$FF
-Init2    sta   DD.TOT,x			invalidate drive tables
-         sta   DD.TOT+1,x
-         sta   DD.TOT+2,x
-         leax  DRVMEM,x
-         decb
-         bne   Init2
-
-* Check if subroutine module has already been linked
-         IFGT  LEVEL-1
-         ldu   <D.DWSubAddr
-         ELSE
-         ldu   >D.DWSubAddr
-         ENDC
-         bne   InitEx
-* Link to subroutine module
-         clra
-         leax  name+2,pcr
-         os9   F$Link
-         bcs   InitEx 
-         tfr   y,u		 
-         IFGT  LEVEL-1
-         stu   <D.DWSubAddr
-         ELSE
-         stu   >D.DWSubAddr
-         ENDC
-* Initialize the low level device
-         jsr   DW$Init,u
-         lda   #OP_INIT
-         sta   ,s
-         leax  ,s
-         ldy   #$0001
-         jsr   DW$Write,u
-         clrb
-
-InitEx
-         IFGT  Level-1
-         puls  a,x
-         stx   <D.Proc
-InitEx2
-         rts
-         ELSE
-InitEx2
-         puls  a,pc
-         ENDC
-
-* Read
-*
-* Entry:
-*    B  = MSB of LSN
-*    X  = LSB of LSN
-*    Y  = address of path descriptor
-*    U  = address of device memory area
-*
-* Exit:
-*    CC = carry set on error
-*    B  = error code
-*
-Read 
-         lda   #NUMRETRIES
-         sta   retries,u
-         cmpx  #$0000			LSN 0?
-         bne   ReadSect			branch if not
-         tstb	   			LSN 0?
-         bne   ReadSect			branch if not
-* At this point we are reading LSN0
-         bsr   ReadSect			read the sector
-         bcs   CpyLSNEx			if error, exit
-         leax  DRVBEG,u			point to start of drive table
-         ldb   <PD.DRV,y		get drive number
-NextDrv  beq   CopyLSN0			branch if terminal count
-         leax  <DRVMEM,x		else move to next drive table entry
-         decb				decrement counter
-         bra   NextDrv			and continue
-CopyLSN0 ldb   #DD.SIZ			get size to copy
-         ldy   PD.BUF,y			point to buffer
-CpyLSNLp lda   ,y+			get byte from buffer
-         sta   ,x+			and save in drive table
-         decb
-         bne   CpyLSNLp
-CpyLSNEx rts
-
-
-ReadSect pshs  cc
-         pshs  u,y,x,b,a,cc			then push CC and others on stack
-* Send out op code and 3 byte LSN
-         lda   PD.DRV,y			get drive number
-         cmpa  #NumDrvs
-         blo   Read1
-         ldb   #E$Unit
-         bra   ReadEr2
-Read1    sta   driveno,u
-         lda   #OP_READEX		load A with READ opcode
-         
-Read2
-         ldb   driveno,u
-         leax  ,s
-         std   ,x
-         ldy   #5 
-         IFGT  LEVEL-1
-         ldu   <D.DWSubAddr
-         ELSE
-         ldu   >D.DWSubAddr
-         ENDC
-         orcc  #IntMasks
-         jsr   DW$Write,u
-		 
-* Get 256 bytes of sector data
-         ldx   5,s
-         ldx   PD.BUF,x			get buffer pointer into X
-         ldy   #$0100
-         jsr   DW$Read,u
-         bcs   ReadEr1
-         bne   ReadEr1
-         pshs  y
-         leax  ,s
-         ldy   #$0002
-         jsr   DW$Write,u				write checksum to server
-
-* Get error code byte
-         leax  ,s
-         ldy   #$0001
-         jsr   DW$Read,u
-         puls  d
-         bcs   ReadEr0			branch if we timed out
-         bne   ReadEr0
-         tfr   a,b				transfer byte to B (in case of error)
-         tstb					is it zero?
-         beq   ReadEx			if not, exit with error
-         cmpb  #E$CRC
-         bne   ReadEr2
-         ldu   7,s				get U from stack
-         dec   retries,u		decrement retries
-         beq   ReadEr1
-         
-         lda   #OP_REREADEX		reread opcode
-         bra   Read2			and try getting sector again
-ReadEr0 
-ReadEr1  ldb   #E$Read			read error
-ReadEr2  lda   9,s
-         ora   #Carry
-         sta   9,s
-ReadEx   leas  5,s
-         puls  y,u
-         puls  cc,pc
-
-* Write
-*
-* Entry:
-*    B  = MSB of LSN
-*    X  = LSB of LSN
-*    Y  = address of path descriptor
-*    U  = address of device memory area
-*
-* Exit:
-*    CC = carry set on error
-*    B  = error code
-*
-Write    lda   #NUMRETRIES
-         sta   retries,u
-         pshs  cc
-         pshs  u,y,x,b,a,cc
-         ENDC
-* Send out op code and 3 byte LSN
-         lda   PD.DRV,y
-         cmpa  #NumDrvs
-         blo   Write1
-         comb			set Carry
-         ldb   #E$Unit
-         bra   WritEx
-Write1   sta   driveno,u
-         lda   #OP_WRITE
-Write15
-         ldb   driveno,u
-         leax  ,s
-         std   ,x
-         ldy   #$0005
-         IFGT  LEVEL-1
-         ldu   <D.DWSubAddr
-         ELSE
-         ldu   >D.DWSubAddr
-         ENDC
-         orcc  #IntMasks
-         jsr   DW$Write,u
-
-* Compute checksum on sector we just sent and send checksum to server
-         ldy   5,s				get Y from stack
-         ldx   PD.BUF,y			point to buffer
-         ldy   #256
-         jsr   6,u
-         leax  -256,x
-         bsr   DoCSum
-         pshs  d
-         leax  ,s
-         ldy   #$0002
-         jsr   DW$Write,u
-
-* Await acknowledgement from server on receipt of sector
-         leax  ,s
-         ldy   #$0001
-         jsr   DW$Read,u				read ack byte from server
-         bcs   WritEx0
-         bne   WritEx0
-         puls  d				  
-         tsta
-         beq   WritEx			yep
-         tfr   a,b
-         cmpb  #E$CRC			checksum error?
-         bne   WritEx2
-         ldu   7,s				get U from stack
-         dec   retries,u		decrement retries
-         beq   WritEx1			exit with error if no more
-         lda   #OP_REWRIT		else resend
-         bra   Write15
-WritEx0  puls  d
-WritEx1  ldb   #E$Write
-WritEx2  lda   9,s
-         ora   #Carry
-         sta   9,s
-WritEx   leas  5,s
-         puls  y,u
-         puls  cc,pc
- 
-         use   dwcheck.asm
-		 
-* SetStat
-*
-* Entry:
-*    R$B = function code
-*    Y   = address of path descriptor
-*    U   = address of device memory area
-*
-* Exit:
-*    CC = carry set on error
-*    B  = error code
-*
-SetStat  lda   #OP_SETSTA
-* Size optimization
-		 fcb   $8C  skip next two bytes
-
-
-* GetStat
-*
-* Entry:
-*    R$B = function code
-*    Y   = address of path descriptor
-*    U   = address of device memory area
-*
-* Exit:
-*    CC = carry set on error
-*    B  = error code
-*
-GetStat  
-         lda   #OP_GETSTA
-         clrb				clear Carry
-         pshs  cc			and push CC on stack
-         leas  -3,s
-         sta   ,s
-         lda   PD.DRV,y			get drive number
-         ldx   PD.RGS,y
-         ldb   R$B,x
-         std   1,s
-         leax  ,s
-         ldy   #$0003
-         IFGT  LEVEL-1
-         ldu   <D.DWSubAddr
-         ELSE
-         ldu   >D.DWSubAddr
-         ENDC
-         jsr   6,u
-         leas  3,s
-         puls  cc,pc
-		 
-         emod
-eom      equ   *
-         end
--- a/level1/modules/scdwp.asm	Mon Jul 30 17:31:30 2012 -0500
+++ b/level1/modules/scdwp.asm	Mon Jul 30 19:35:05 2012 -0500
@@ -90,7 +90,7 @@
          stx   <D.Proc
          ENDC
          clra
-         leax  dw3name,pcr
+         leax  dwioname,pcr
          os9   F$Link
          IFGT  Level-1
          puls  x
@@ -105,7 +105,7 @@
          jsr   ,y			call init routine
 InitEx   rts
 
-dw3name  fcs  /dw3/
+dwioname fcs  /dwio/
 
 * Write
 *
--- a/level1/modules/scdwv.asm	Mon Jul 30 17:31:30 2012 -0500
+++ b/level1/modules/scdwv.asm	Mon Jul 30 19:35:05 2012 -0500
@@ -162,7 +162,7 @@
                endc      
                clra      
 
-               leax      dw3name,pcr
+               leax      dwioname,pcr
                os9       F$Link
                ifgt      Level-1
                puls      x
@@ -225,7 +225,7 @@
                rts       
 
 ; drivewire info
-dw3name        fcs       /dw3/
+dwioname       fcs       /dwio/
 
 
 *****************************************************************************
--- a/level1/modules/wbug.asm	Mon Jul 30 17:31:30 2012 -0500
+++ b/level1/modules/wbug.asm	Mon Jul 30 19:35:05 2012 -0500
@@ -70,7 +70,7 @@
                FCB       C$CR
                ENDC
 			   
-subname        FCS       /dw3/
+subname        FCS       /dwio/
 
 start
 * attach to low level module
--- a/level2/coco3/bootfiles/makefile	Mon Jul 30 17:31:30 2012 -0500
+++ b/level2/coco3/bootfiles/makefile	Mon Jul 30 19:35:05 2012 -0500
@@ -9,8 +9,8 @@
 
 KERNEL_1773	= $(MD)/rel_80 $(MD)/boot_1773_6ms $(MD)/krn
 KERNEL_1773_50HZ	= $(MD)/rel_80_50hz $(MD)/boot_1773_6ms $(MD)/krn
-KERNEL_DW3	= $(MD)/rel_80 $(MD)/boot_dw3 $(MD)/krn
-KERNEL_BECKER	= $(MD)/rel_80 $(MD)/boot_dw3_becker $(MD)/krn
+KERNEL_DW 	= $(MD)/rel_80 $(MD)/boot_dw $(MD)/krn
+KERNEL_BECKER	= $(MD)/rel_80 $(MD)/boot_dw_becker $(MD)/krn
 
 FLOPPY_40D = $(MD)/rb1773.dr $(MD)/d0_40d.dd $(MD)/d1_40d.dd $(MD)/d2_40d.dd
 FLOPPY_80D = $(MD)/rb1773.dr $(MD)/d0_80d.dd $(MD)/d1_80d.dd $(MD)/d2_80d.dd \
@@ -39,9 +39,9 @@
 		$(MD)/term_win80.dt \
 		$(MD)/w.dw $(MD)/w1.dw $(MD)/w2.dw $(MD)/w3.dw $(MD)/w4.dw \
 		$(MD)/w5.dw $(MD)/w6.dw $(MD)/w7.dw
-RBDW3      = $(MD)/rbdw3.dr $(MD)/dw3.sb \
+RBDW       = $(MD)/rbdw.dr $(MD)/dwio.sb \
 		$(MD)/x1.dd $(MD)/x2.dd $(MD)/x3.dd
-RBDW3BECKER = $(MD)/rbdw3.dr $(MD)/dw3_becker.sb \
+RBDWBECKER = $(MD)/rbdw.dr $(MD)/dwio_becker.sb \
 		$(MD)/x1.dd $(MD)/x2.dd $(MD)/x3.dd
 SCDWV_NET  = $(MD)/n_scdwv.dd $(MD)/n1_scdwv.dd $(MD)/n2_scdwv.dd \
 		$(MD)/n3_scdwv.dd $(MD)/n4_scdwv.dd $(MD)/n5_scdwv.dd \
@@ -55,14 +55,14 @@
 PIPE       = $(MD)/pipeman.mn $(MD)/piper.dr $(MD)/pipe.dd
 CLOCK50HZ  = $(MD)/clock_50hz $(MD)/clock2_soft
 CLOCK60HZ  = $(MD)/clock_60hz $(MD)/clock2_soft
-CLOCK60HZDW = $(MD)/clock_60hz $(MD)/clock2_dw3
-CLOCK60HZBECKER = $(MD)/clock_60hz $(MD)/clock2_dw3_becker
+CLOCK60HZDW = $(MD)/clock_60hz $(MD)/clock2_dw
+CLOCK60HZBECKER = $(MD)/clock_60hz $(MD)/clock2_dw_becker
           
 # NitrOS-9 disk bootfile to allow booting from DriveWire server
 # on a DE1 or Xilinx using Gary Becker's CoCo 3 FGPA
 BOOTFILE_BECKER	= $(MD)/krnp2 $(MD)/ioman $(MD)/init \
 		$(MD)/rbf.mn \
-		$(RBDW3BECKER) \
+		$(RBDWBECKER) \
 		$(FLOPPY_40D) \
 	     $(MD)/ddd0_40d.dd \
 		$(MD)/scf.mn \
@@ -74,9 +74,9 @@
 		$(CLOCK60HZBECKER)
 
 # NitrOS-9 disk bootfile to allow booting from DriveWire 3 server
-BOOTFILE_DW3	= $(MD)/krnp2 $(MD)/ioman $(MD)/init \
+BOOTFILE_DW	= $(MD)/krnp2 $(MD)/ioman $(MD)/init \
 		$(MD)/rbf.mn \
-		$(RBDW3) \
+		$(RBDW) \
           $(MD)/ddx0.dd \
 		$(MD)/scf.mn \
 		$(VTIO_COGRF_80) \
@@ -94,9 +94,9 @@
 
 # NitrOS-9 disk bootfile to allow booting from DriveWire 3 server
 # Headless mode
-BOOTFILE_DW3_HEADLESS	= $(MD)/krnp2 $(MD)/ioman $(MD)/init \
+BOOTFILE_DW_HEADLESS	= $(MD)/krnp2 $(MD)/ioman $(MD)/init \
 		$(MD)/rbf.mn \
-		$(RBDW3) \
+		$(RBDW) \
           $(MD)/ddx0.dd \
 		$(FLOPPY_40D) \
 		$(MD)/scf.mn \
@@ -144,8 +144,8 @@
 		$(PIPE) \
 		$(CLOCK50HZ)
 
-BOOTFILES	= bootfile_40d bootfile_40d_50hz bootfile_80d bootfile_80d_50hz bootfile_dw3 bootfile_dw3_headless bootfile_becker
-KERNELS		= kernel_1773 kernel_1773_50hz kernel_dw3 kernel_becker
+BOOTFILES	= bootfile_40d bootfile_40d_50hz bootfile_80d bootfile_80d_50hz bootfile_dw bootfile_dw_headless bootfile_becker
+KERNELS		= kernel_1773 kernel_1773_50hz kernel_dw kernel_becker
 
 ALLOBJS		= $(BOOTFILES) $(KERNELS)
 
@@ -167,11 +167,11 @@
 bootfile_80d_50hz: $(BOOTFILE_80D_50HZ) $(DEPENDS)
 	$(MERGE) $(BOOTFILE_80D_50HZ)>$@
 
-bootfile_dw3: $(BOOTFILE_DW3) $(DEPENDS)
-	$(MERGE) $(BOOTFILE_DW3)>$@
+bootfile_dw: $(BOOTFILE_DW) $(DEPENDS)
+	$(MERGE) $(BOOTFILE_DW)>$@
 
-bootfile_dw3_headless: $(BOOTFILE_DW3_HEADLESS) $(DEPENDS)
-	$(MERGE) $(BOOTFILE_DW3_HEADLESS)>$@
+bootfile_dw_headless: $(BOOTFILE_DW_HEADLESS) $(DEPENDS)
+	$(MERGE) $(BOOTFILE_DW_HEADLESS)>$@
 
 # Kernels
 kernel_becker: $(KERNEL_BECKER) $(DEPENDS)
@@ -183,8 +183,8 @@
 kernel_1773_50hz: $(KERNEL_1773_50HZ) $(DEPENDS)
 	$(MERGE) $(KERNEL_1773_50HZ)>$@
 
-kernel_dw3: $(KERNEL_DW3) $(DEPENDS)
-	$(MERGE) $(KERNEL_DW3)>$@
+kernel_dw: $(KERNEL_DW) $(DEPENDS)
+	$(MERGE) $(KERNEL_DW)>$@
 
 clean:
 	$(RM) $(ALLOBJS)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/level2/coco3/bootlists/dw.bl	Mon Jul 30 19:35:05 2012 -0500
@@ -0,0 +1,277 @@
+***************************************
+* NitrOS-9 Level 2 CoCo 3 Bootlist
+*
+* $Id$
+*
+* This bootlist is presented as an example for creating custom bootfiles.
+* A module may be excluded from the bootfile if an asterisk (*) is the
+* first character of the line.
+*
+***************************************
+* Kernel/System Section
+*
+* These modules are mandatory.
+../MODULES/KERNEL/krnp2
+*../MODULES/KERNEL/krnp3_perr
+*../MODULES/KERNEL/krnp4_regdump
+../MODULES/SYSMODS/ioman
+../MODULES/SYSMODS/init
+*
+***************************************
+* CDF Section (HawkSoft)
+*
+*../MODULES/CDF/cdf.mn
+*
+* CDF descriptors - select as needed
+* SCSI descriptors (IDs 0-6)
+*../MODULES/CDF/sc0.dd
+*../MODULES/CDF/sc1.dd
+*../MODULES/CDF/sc2.dd
+*../MODULES/CDF/sc3.dd
+*../MODULES/CDF/sc4.dd
+*../MODULES/CDF/sc5.dd
+*../MODULES/CDF/sc6.dd
+* IDE descriptors (master/slave)
+*../MODULES/CDF/ic0.dd
+*../MODULES/CDF/ic1.dd
+*
+***************************************
+* RBF Section
+*
+../MODULES/RBF/rbf.mn
+*
+* DriveWire driver
+../MODULES/RBF/rbdw.dr
+../MODULES/RBF/dwio.sb
+* DriveWire descriptors - select as needed
+../MODULES/RBF/ddx0.dd
+*../MODULES/RBF/x0.dd
+../MODULES/RBF/x1.dd
+../MODULES/RBF/x2.dd
+../MODULES/RBF/x3.dd  
+*
+* SuperDriver Package (Cloud-9 product)
+*../MODULES/RBF/rbsuper.dr
+* Select Low level SCSI and/or IDE driver
+*../MODULES/RBF/lltc3.dr
+*../MODULES/RBF/llide.dr
+* SuperDriver descriptors - select as needed
+* TC^3 SCSI DD descriptor (ID 0)
+*../MODULES/RBF/dds0_tc3.dd
+* TC^3 SCSI descriptors (IDs 0-6)
+*../MODULES/RBF/s0_tc3.dd
+*../MODULES/RBF/s1_tc3.dd
+*../MODULES/RBF/s2_tc3.dd
+*../MODULES/RBF/s3_tc3.dd
+*../MODULES/RBF/s4_tc3.dd
+*../MODULES/RBF/s5_tc3.dd
+*../MODULES/RBF/s6_tc3.dd
+* TC^3 SCSI HDB-DOS descriptor
+*../MODULES/RBF/sh_tc3.dd
+* IDE DD descriptor (Master)
+*../MODULES/RBF/ddi0_ide.dd
+* IDE descriptors (master/slave)
+*../MODULES/RBF/i0_ide.dd
+*../MODULES/RBF/i1_ide.dd
+* IDE HDB-DOS descriptor
+*../MODULES/RBF/ih_ide.dd
+*
+* WD1773 floppy support for Tandy and compatible disk controllers
+../MODULES/RBF/rb1773.dr
+* WD1773 floppy support for Disto Super Controller II
+*../MODULES/RBF/rb1773_scii_ff74.dr
+*../MODULES/RBF/rb1773_scii_ff58.dr
+* Floppy device descriptors
+* DD - default device - choose one if needed
+*../MODULES/RBF/ddd0_35s.dd
+*../MODULES/RBF/ddd0_40d.dd
+*../MODULES/RBF/ddd0_80d.dd
+* D0 - drive 0 - choose one if needed
+*../MODULES/RBF/d0_35s.dd
+../MODULES/RBF/d0_40d.dd
+*../MODULES/RBF/d0_80d.dd
+* D1 - drive 1 - choose one if needed
+*../MODULES/RBF/d1_35s.dd
+../MODULES/RBF/d1_40d.dd
+*../MODULES/RBF/d1_80d.dd
+* D2 - drive 2 - choose one if needed
+*../MODULES/RBF/d2_35s.dd
+../MODULES/RBF/d2_40d.dd
+*../MODULES/RBF/d2_80d.dd
+* D3 - drive 3 - choose if needed
+*../MODULES/RBF/d3_35s.dd
+*
+* RAMDisk driver
+*../MODULES/RBF/rammer.dr
+* RAMDisk descriptors - select as needed
+*../MODULES/RBF/ddr0_8k.dd
+*../MODULES/RBF/ddr0_96k.dd
+*../MODULES/RBF/ddr0_128k.dd
+*../MODULES/RBF/ddr0_192k.dd
+*../MODULES/RBF/r0_8k.dd
+*../MODULES/RBF/r0_96k.dd
+*../MODULES/RBF/r0_128k.dd
+*../MODULES/RBF/r0_192k.dd
+* Memory device descriptor
+*../MODULES/RBF/md.dd
+***************************************
+* SCF Section
+*
+../MODULES/SCF/scf.mn
+*
+* CoCo 3 I/O sub-drivers
+../MODULES/SCF/vtio.dr
+../MODULES/SCF/keydrv_cc3.sb
+* Sound module: CoCo 3 built-in sound generator
+../MODULES/SCF/snddrv_cc3.sb
+* Joystick modules: choose joy for hi-res joystick adapter or
+* (M)icrosoft or (L)ogitech mouse using 6551 or 6552 ACIA
+../MODULES/SCF/joydrv_joy.sb
+*../MODULES/SCF/joydrv_6551M.sb
+*../MODULES/SCF/joydrv_6552M.sb
+*../MODULES/SCF/joydrv_6551L.sb
+*../MODULES/SCF/joydrv_6552L.sb
+*
+* CoGrf/CoWin subroutine module
+* Use CoWin with Multi-Vue; use CoGrf
+* for basic text and graphic window support..
+* Select only one.
+*../MODULES/SCF/cogrf.io
+../MODULES/SCF/cowin.io
+*
+* CoVDG I/O subroutine module
+* Select one or both
+*../MODULES/SCF/covdg.io
+*../MODULES/SCF/covdg_small.io
+*
+* Select only one term descriptor
+*../MODULES/SCF/term_vdg.dt
+*../MODULES/SCF/term_win40.dt
+../MODULES/SCF/term_win80.dt
+*../MODULES/SCF/term_scbbt.dt
+*../MODULES/SCF/term_sc6551.dt
+*
+* Select as many window descriptors as needed
+../MODULES/SCF/w.dw
+../MODULES/SCF/w1.dw
+../MODULES/SCF/w2.dw
+../MODULES/SCF/w3.dw
+../MODULES/SCF/w4.dw
+../MODULES/SCF/w5.dw
+../MODULES/SCF/w6.dw
+../MODULES/SCF/w7.dw
+../MODULES/SCF/w8.dw
+../MODULES/SCF/w9.dw
+../MODULES/SCF/w10.dw
+../MODULES/SCF/w11.dw
+../MODULES/SCF/w12.dw
+../MODULES/SCF/w13.dw
+../MODULES/SCF/w14.dw
+../MODULES/SCF/w15.dw
+*
+* Select as many VDG window descriptors as needed
+*../MODULES/SCF/v1.dw
+*../MODULES/SCF/v2.dw
+*../MODULES/SCF/v3.dw
+*../MODULES/SCF/v4.dw
+*../MODULES/SCF/v5.dw
+*../MODULES/SCF/v6.dw
+*../MODULES/SCF/v7.dw
+*
+* Serial port drivers
+* CoCo Bit-Banger terminal port
+*../MODULES/SCF/scbbt.dr
+*../MODULES/SCF/t1_scbbt.dd
+* 6551 ACIA
+*../MODULES/SCF/sc6551.dr
+*../MODULES/SCF/t2_sc6551.dd
+*../MODULES/SCF/t3_sc6551.dd
+* Tandy Modem Pak
+*../MODULES/SCF/modpak.dr
+*../MODULES/SCF/m1.dd
+*../MODULES/SCF/m2.dd
+*
+* Printer drivers
+* ../MODULES/SCF/scbbp.dr
+* ../MODULES/SCF/p_scbbp.dd
+*
+* DriveWire 3 Printer drivers
+* ../MODULES/SCF/scdwp.dr
+* ../MODULES/SCF/p_scdwp.dd
+*
+* DriveWire Virtual Channel Driver
+*../MODULES/SCF/scdwv.dr
+*../MODULES/SCF/term_scdwv.dt
+*../MODULES/SCF/n_scdwv.dd
+*../MODULES/SCF/n1_scdwv.dd
+*../MODULES/SCF/n2_scdwv.dd
+*../MODULES/SCF/n3_scdwv.dd
+*../MODULES/SCF/n4_scdwv.dd
+*../MODULES/SCF/n5_scdwv.dd
+*../MODULES/SCF/n6_scdwv.dd
+*../MODULES/SCF/n7_scdwv.dd
+*../MODULES/SCF/n8_scdwv.dd
+*../MODULES/SCF/n9_scdwv.dd
+*../MODULES/SCF/n10_scdwv.dd
+*../MODULES/SCF/n11_scdwv.dd
+*../MODULES/SCF/n12_scdwv.dd
+*../MODULES/SCF/n13_scdwv.dd
+*../MODULES/SCF/n14_scdwv.dd
+*../MODULES/SCF/term_z_scdwv.dt
+*../MODULES/SCF/z1_scdwv.dd
+*../MODULES/SCF/z2_scdwv.dd
+*../MODULES/SCF/z3_scdwv.dd
+*../MODULES/SCF/z4_scdwv.dd
+*../MODULES/SCF/z5_scdwv.dd
+*../MODULES/SCF/z6_scdwv.dd
+*../MODULES/SCF/z7_scdwv.dd
+*
+* VRN is a driver module used by certain games, including King's Quest III,
+* Leisure Suit Larry and Flight Simulator II.  A /nil descriptor is also
+* supported.
+../MODULES/SCF/vrn.dr
+../MODULES/SCF/vi.dd
+../MODULES/SCF/ftdd.dd
+*
+***************************************
+* Pipe Section
+*
+* Pipes are a useful but optional part of a system.
+../MODULES/PIPE/pipeman.mn
+../MODULES/PIPE/piper.dr
+../MODULES/PIPE/pipe.dd
+*
+***************************************
+* Clock Section
+*
+* Select one clock module depending upon your power line frequency
+* (60Hz = USA/Canada; 50Hz = Europe, Australia)
+../MODULES/CLOCKS/clock_60hz
+*../MODULES/CLOCKS/clock_50hz
+* Select one clock2 module that supports your real-time clock, if any.
+* Besides support for the internal software clock, the following
+* hardware clocks are supported: Burke & Burke, Disto 2-N-1, Disto 4-N-1,
+* Eliminator, Harris, SmartWatch, Cloud-9 (SuperIDE), the MESS emulator, Jeff
+* Vavasour's CoCo emulator and DriveWire
+*../MODULES/CLOCKS/clock2_soft
+*../MODULES/CLOCKS/clock2_bnb
+*../MODULES/CLOCKS/clock2_disto2
+*../MODULES/CLOCKS/clock2_disto4
+*../MODULES/CLOCKS/clock2_elim
+*../MODULES/CLOCKS/clock2_harris
+*../MODULES/CLOCKS/clock2_smart
+*../MODULES/CLOCKS/clock2_jvemu
+*../MODULES/CLOCKS/clock2_messemu
+*../MODULES/CLOCKS/clock2_cloud9
+../MODULES/CLOCKS/clock2_dw
+*
+***************************************
+* System Kick-Start Module
+*
+* Choose which startup module you wish to use. (sysgo_dd is recommended
+* for most configurations.)
+* 
+* Alternatively, this module can reside in the root directory of the
+* boot device, saving precious system RAM.
+../MODULES/SYSMODS/sysgo_dd
+*../MODULES/SYSMODS/sysgo_h0
--- a/level2/coco3/bootlists/dw3.bl	Mon Jul 30 17:31:30 2012 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,277 +0,0 @@
-***************************************
-* NitrOS-9 Level 2 CoCo 3 Bootlist
-*
-* $Id$
-*
-* This bootlist is presented as an example for creating custom bootfiles.
-* A module may be excluded from the bootfile if an asterisk (*) is the
-* first character of the line.
-*
-***************************************
-* Kernel/System Section
-*
-* These modules are mandatory.
-../MODULES/KERNEL/krnp2
-*../MODULES/KERNEL/krnp3_perr
-*../MODULES/KERNEL/krnp4_regdump
-../MODULES/SYSMODS/ioman
-../MODULES/SYSMODS/init
-*
-***************************************
-* CDF Section (HawkSoft)
-*
-*../MODULES/CDF/cdf.mn
-*
-* CDF descriptors - select as needed
-* SCSI descriptors (IDs 0-6)
-*../MODULES/CDF/sc0.dd
-*../MODULES/CDF/sc1.dd
-*../MODULES/CDF/sc2.dd
-*../MODULES/CDF/sc3.dd
-*../MODULES/CDF/sc4.dd
-*../MODULES/CDF/sc5.dd
-*../MODULES/CDF/sc6.dd
-* IDE descriptors (master/slave)
-*../MODULES/CDF/ic0.dd
-*../MODULES/CDF/ic1.dd
-*
-***************************************
-* RBF Section
-*
-../MODULES/RBF/rbf.mn
-*
-* DriveWire 3 driver
-../MODULES/RBF/rbdw3.dr
-../MODULES/RBF/dw3.sb
-* DriveWire descriptors - select as needed
-../MODULES/RBF/ddx0.dd
-*../MODULES/RBF/x0.dd
-../MODULES/RBF/x1.dd
-../MODULES/RBF/x2.dd
-../MODULES/RBF/x3.dd  
-*
-* SuperDriver Package (Cloud-9 product)
-*../MODULES/RBF/rbsuper.dr
-* Select Low level SCSI and/or IDE driver
-*../MODULES/RBF/lltc3.dr
-*../MODULES/RBF/llide.dr
-* SuperDriver descriptors - select as needed
-* TC^3 SCSI DD descriptor (ID 0)
-*../MODULES/RBF/dds0_tc3.dd
-* TC^3 SCSI descriptors (IDs 0-6)
-*../MODULES/RBF/s0_tc3.dd
-*../MODULES/RBF/s1_tc3.dd
-*../MODULES/RBF/s2_tc3.dd
-*../MODULES/RBF/s3_tc3.dd
-*../MODULES/RBF/s4_tc3.dd
-*../MODULES/RBF/s5_tc3.dd
-*../MODULES/RBF/s6_tc3.dd
-* TC^3 SCSI HDB-DOS descriptor
-*../MODULES/RBF/sh_tc3.dd
-* IDE DD descriptor (Master)
-*../MODULES/RBF/ddi0_ide.dd
-* IDE descriptors (master/slave)
-*../MODULES/RBF/i0_ide.dd
-*../MODULES/RBF/i1_ide.dd
-* IDE HDB-DOS descriptor
-*../MODULES/RBF/ih_ide.dd
-*
-* WD1773 floppy support for Tandy and compatible disk controllers
-../MODULES/RBF/rb1773.dr
-* WD1773 floppy support for Disto Super Controller II
-*../MODULES/RBF/rb1773_scii_ff74.dr
-*../MODULES/RBF/rb1773_scii_ff58.dr
-* Floppy device descriptors
-* DD - default device - choose one if needed
-*../MODULES/RBF/ddd0_35s.dd
-*../MODULES/RBF/ddd0_40d.dd
-*../MODULES/RBF/ddd0_80d.dd
-* D0 - drive 0 - choose one if needed
-*../MODULES/RBF/d0_35s.dd
-../MODULES/RBF/d0_40d.dd
-*../MODULES/RBF/d0_80d.dd
-* D1 - drive 1 - choose one if needed
-*../MODULES/RBF/d1_35s.dd
-../MODULES/RBF/d1_40d.dd
-*../MODULES/RBF/d1_80d.dd
-* D2 - drive 2 - choose one if needed
-*../MODULES/RBF/d2_35s.dd
-../MODULES/RBF/d2_40d.dd
-*../MODULES/RBF/d2_80d.dd
-* D3 - drive 3 - choose if needed
-*../MODULES/RBF/d3_35s.dd
-*
-* RAMDisk driver
-*../MODULES/RBF/rammer.dr
-* RAMDisk descriptors - select as needed
-*../MODULES/RBF/ddr0_8k.dd
-*../MODULES/RBF/ddr0_96k.dd
-*../MODULES/RBF/ddr0_128k.dd
-*../MODULES/RBF/ddr0_192k.dd
-*../MODULES/RBF/r0_8k.dd
-*../MODULES/RBF/r0_96k.dd
-*../MODULES/RBF/r0_128k.dd
-*../MODULES/RBF/r0_192k.dd
-* Memory device descriptor
-*../MODULES/RBF/md.dd
-***************************************
-* SCF Section
-*
-../MODULES/SCF/scf.mn
-*
-* CoCo 3 I/O sub-drivers
-../MODULES/SCF/vtio.dr
-../MODULES/SCF/keydrv_cc3.sb
-* Sound module: CoCo 3 built-in sound generator
-../MODULES/SCF/snddrv_cc3.sb
-* Joystick modules: choose joy for hi-res joystick adapter or
-* (M)icrosoft or (L)ogitech mouse using 6551 or 6552 ACIA
-../MODULES/SCF/joydrv_joy.sb
-*../MODULES/SCF/joydrv_6551M.sb
-*../MODULES/SCF/joydrv_6552M.sb
-*../MODULES/SCF/joydrv_6551L.sb
-*../MODULES/SCF/joydrv_6552L.sb
-*
-* CoGrf/CoWin subroutine module
-* Use CoWin with Multi-Vue; use CoGrf
-* for basic text and graphic window support..
-* Select only one.
-*../MODULES/SCF/cogrf.io
-../MODULES/SCF/cowin.io
-*
-* CoVDG I/O subroutine module
-* Select one or both
-*../MODULES/SCF/covdg.io
-*../MODULES/SCF/covdg_small.io
-*
-* Select only one term descriptor
-*../MODULES/SCF/term_vdg.dt
-*../MODULES/SCF/term_win40.dt
-../MODULES/SCF/term_win80.dt
-*../MODULES/SCF/term_scbbt.dt
-*../MODULES/SCF/term_sc6551.dt
-*
-* Select as many window descriptors as needed
-../MODULES/SCF/w.dw
-../MODULES/SCF/w1.dw
-../MODULES/SCF/w2.dw
-../MODULES/SCF/w3.dw
-../MODULES/SCF/w4.dw
-../MODULES/SCF/w5.dw
-../MODULES/SCF/w6.dw
-../MODULES/SCF/w7.dw
-../MODULES/SCF/w8.dw
-../MODULES/SCF/w9.dw
-../MODULES/SCF/w10.dw
-../MODULES/SCF/w11.dw
-../MODULES/SCF/w12.dw
-../MODULES/SCF/w13.dw
-../MODULES/SCF/w14.dw
-../MODULES/SCF/w15.dw
-*
-* Select as many VDG window descriptors as needed
-*../MODULES/SCF/v1.dw
-*../MODULES/SCF/v2.dw
-*../MODULES/SCF/v3.dw
-*../MODULES/SCF/v4.dw
-*../MODULES/SCF/v5.dw
-*../MODULES/SCF/v6.dw
-*../MODULES/SCF/v7.dw
-*
-* Serial port drivers
-* CoCo Bit-Banger terminal port
-*../MODULES/SCF/scbbt.dr
-*../MODULES/SCF/t1_scbbt.dd
-* 6551 ACIA
-*../MODULES/SCF/sc6551.dr
-*../MODULES/SCF/t2_sc6551.dd
-*../MODULES/SCF/t3_sc6551.dd
-* Tandy Modem Pak
-*../MODULES/SCF/modpak.dr
-*../MODULES/SCF/m1.dd
-*../MODULES/SCF/m2.dd
-*
-* Printer drivers
-* ../MODULES/SCF/scbbp.dr
-* ../MODULES/SCF/p_scbbp.dd
-*
-* DriveWire 3 Printer drivers
-* ../MODULES/SCF/scdwp.dr
-* ../MODULES/SCF/p_scdwp.dd
-*
-* DriveWire Virtual Channel Driver
-*../MODULES/SCF/scdwv.dr
-*../MODULES/SCF/term_scdwv.dt
-*../MODULES/SCF/n_scdwv.dd
-*../MODULES/SCF/n1_scdwv.dd
-*../MODULES/SCF/n2_scdwv.dd
-*../MODULES/SCF/n3_scdwv.dd
-*../MODULES/SCF/n4_scdwv.dd
-*../MODULES/SCF/n5_scdwv.dd
-*../MODULES/SCF/n6_scdwv.dd
-*../MODULES/SCF/n7_scdwv.dd
-*../MODULES/SCF/n8_scdwv.dd
-*../MODULES/SCF/n9_scdwv.dd
-*../MODULES/SCF/n10_scdwv.dd
-*../MODULES/SCF/n11_scdwv.dd
-*../MODULES/SCF/n12_scdwv.dd
-*../MODULES/SCF/n13_scdwv.dd
-*../MODULES/SCF/n14_scdwv.dd
-*../MODULES/SCF/term_z_scdwv.dt
-*../MODULES/SCF/z1_scdwv.dd
-*../MODULES/SCF/z2_scdwv.dd
-*../MODULES/SCF/z3_scdwv.dd
-*../MODULES/SCF/z4_scdwv.dd
-*../MODULES/SCF/z5_scdwv.dd
-*../MODULES/SCF/z6_scdwv.dd
-*../MODULES/SCF/z7_scdwv.dd
-*
-* VRN is a driver module used by certain games, including King's Quest III,
-* Leisure Suit Larry and Flight Simulator II.  A /nil descriptor is also
-* supported.
-../MODULES/SCF/vrn.dr
-../MODULES/SCF/vi.dd
-../MODULES/SCF/ftdd.dd
-*
-***************************************
-* Pipe Section
-*
-* Pipes are a useful but optional part of a system.
-../MODULES/PIPE/pipeman.mn
-../MODULES/PIPE/piper.dr
-../MODULES/PIPE/pipe.dd
-*
-***************************************
-* Clock Section
-*
-* Select one clock module depending upon your power line frequency
-* (60Hz = USA/Canada; 50Hz = Europe, Australia)
-../MODULES/CLOCKS/clock_60hz
-*../MODULES/CLOCKS/clock_50hz
-* Select one clock2 module that supports your real-time clock, if any.
-* Besides support for the internal software clock, the following
-* hardware clocks are supported: Burke & Burke, Disto 2-N-1, Disto 4-N-1,
-* Eliminator, Harris, SmartWatch, Cloud-9 (SuperIDE), the MESS emulator, Jeff
-* Vavasour's CoCo emulator and DriveWire
-*../MODULES/CLOCKS/clock2_soft
-*../MODULES/CLOCKS/clock2_bnb
-*../MODULES/CLOCKS/clock2_disto2
-*../MODULES/CLOCKS/clock2_disto4
-*../MODULES/CLOCKS/clock2_elim
-*../MODULES/CLOCKS/clock2_harris
-*../MODULES/CLOCKS/clock2_smart
-*../MODULES/CLOCKS/clock2_jvemu
-*../MODULES/CLOCKS/clock2_messemu
-*../MODULES/CLOCKS/clock2_cloud9
-../MODULES/CLOCKS/clock2_dw3
-*
-***************************************
-* System Kick-Start Module
-*
-* Choose which startup module you wish to use. (sysgo_dd is recommended
-* for most configurations.)
-* 
-* Alternatively, this module can reside in the root directory of the
-* boot device, saving precious system RAM.
-../MODULES/SYSMODS/sysgo_dd
-*../MODULES/SYSMODS/sysgo_h0
--- a/level2/coco3/bootlists/standard.bl	Mon Jul 30 17:31:30 2012 -0500
+++ b/level2/coco3/bootlists/standard.bl	Mon Jul 30 19:35:05 2012 -0500
@@ -40,9 +40,9 @@
 *
 ../MODULES/RBF/rbf.mn
 *
-* DriveWire 3 driver
-*../MODULES/RBF/rbdw3.dr
-*../MODULES/RBF/dw3.sb
+* DriveWire driver
+*../MODULES/RBF/rbdw.dr
+*../MODULES/RBF/dwio.sb
 * DriveWire descriptors - select as needed
 *../MODULES/RBF/ddx0.dd
 *../MODULES/RBF/x0.dd
@@ -264,7 +264,7 @@
 *../MODULES/CLOCKS/clock2_jvemu
 *../MODULES/CLOCKS/clock2_messemu
 *../MODULES/CLOCKS/clock2_cloud9
-*../MODULES/CLOCKS/clock2_dw3
+*../MODULES/CLOCKS/clock2_dw
 *
 ***************************************
 * System Kick-Start Module
--- a/level2/coco3/makefile	Mon Jul 30 17:31:30 2012 -0500
+++ b/level2/coco3/makefile	Mon Jul 30 19:35:05 2012 -0500
@@ -10,8 +10,8 @@
 DISTRONAME	= nos9$(CPU)l$(LEVEL)
 DISTROVER	= $(DISTRONAME)$(NITROS9VER)$(PORT)
 BOOTFILE_BECKER	= bootfiles/bootfile_becker
-BOOTFILE_DW3	= bootfiles/bootfile_dw3
-BOOTFILE_DW3HEADLESS	= bootfiles/bootfile_dw3_headless
+BOOTFILE_DW 	= bootfiles/bootfile_dw
+BOOTFILE_DWHEADLESS	= bootfiles/bootfile_dw_headless
 BOOTFILE_40D	= bootfiles/bootfile_40d
 BOOTFILE_80D	= bootfiles/bootfile_80d
 BOOTFILE_40D_50HZ	= bootfiles/bootfile_40d_50hz
@@ -19,7 +19,7 @@
 KERNELFILE_BECKER	= bootfiles/kernel_becker
 KERNELFILE	= bootfiles/kernel_1773
 KERNELFILE_50HZ	= bootfiles/kernel_1773_50hz
-KERNELFILE_DW3	= bootfiles/kernel_dw3
+KERNELFILE_DW 	= bootfiles/kernel_dw
 DIRS		= cmds modules defs sys bootfiles
 
 CMDS		= $(shell $(CD) cmds; make --no-print-directory showobjs)
@@ -43,10 +43,10 @@
 CCBKRN		= ccbkrn
 
 PACKAGENAME	= $(DISTROVER).zip
-DSKDW3		= $(DISTROVER)_dw3.dsk
-LDSKDW3		= $(DISTRONAME)_dw3.dsk
-DSKDW3HEADLESS	= $(DISTROVER)_dw3_headless.dsk
-LDSKDW3HEADLESS	= $(DISTRONAME)_dw3_headless.dsk
+DSKDW		= $(DISTROVER)_dw.dsk
+LDSKDW		= $(DISTRONAME)_dw.dsk
+DSKDWHEADLESS	= $(DISTROVER)_dw_headless.dsk
+LDSKDWHEADLESS	= $(DISTRONAME)_dw_headless.dsk
 DSK360K_1	= $(DISTROVER)_40d_1.dsk
 LDSK360K_1	= $(DISTRONAME)_40d_1.dsk
 DSK360K_1_50HZ	= $(DISTROVER)_40d_1_50hz.dsk
@@ -61,8 +61,8 @@
 LDSKBECKER	= $(DISTRONAME)_80d_becker.dsk
 TESTDSK		= test.dsk
 
-DSKS		= $(DSKDW3) $(DSK360K_1) $(DSK360K_1_50HZ) $(DSK360K_2) $(DSK720K) $(DSK720K_50HZ) $(DSKDW3) $(DSKDW3HEADLESS) $(DSKBECKER)
-LDSKS		= $(LDSKDW3) $(LDSK360K_1) $(LDSK360K_1_50HZ) $(LDSK360K_2) $(LDSK720K) $(LDSK720K_50HZ) $(LDSKDW3) $(LDSKDW3HEADLESS) $(LDSKBECKER)
+DSKS		= $(DSKDW) $(DSK360K_1) $(DSK360K_1_50HZ) $(DSK360K_2) $(DSK720K) $(DSK720K_50HZ) $(DSKDW) $(DSKDWHEADLESS) $(DSKBECKER)
+LDSKS		= $(LDSKDW) $(LDSK360K_1) $(LDSK360K_1_50HZ) $(LDSK360K_2) $(LDSK720K) $(LDSK720K_50HZ) $(LDSKDW) $(LDSKDWHEADLESS) $(LDSKBECKER)
 
 # Make all components
 all:
@@ -94,7 +94,7 @@
 
 $(DSKBECKER):
 	-$(RM) $@
-	$(OS9FORMAT_DW3) -q $@ -n"NitrOS-9/$(CPU) Level 2"
+	$(OS9FORMAT_DW) -q $@ -n"NitrOS-9/$(CPU) Level 2"
 	$(OS9GEN) $@ -b=$(BOOTFILE_BECKER) -t=$(KERNELFILE_BECKER)
 	$(MAKDIR) $@,CMDS
 	$(MAKDIR) $@,SYS
@@ -146,10 +146,10 @@
 	$(RM) $(LDSKBECKER)
 	$(SOFTLINK) $@ $(LDSKBECKER)
 
-$(DSKDW3):
+$(DSKDW):
 	-$(RM) $@
-	$(OS9FORMAT_DW3) -q $@ -n"NitrOS-9/$(CPU) Level 2"
-	$(OS9GEN) $@ -b=$(BOOTFILE_DW3) -t=$(KERNELFILE_DW3)
+	$(OS9FORMAT_DW) -q $@ -n"NitrOS-9/$(CPU) Level 2"
+	$(OS9GEN) $@ -b=$(BOOTFILE_DW) -t=$(KERNELFILE_DW)
 	$(MAKDIR) $@,CMDS
 	$(MAKDIR) $@,SYS
 	$(MAKDIR) $@,DEFS
@@ -197,13 +197,13 @@
 	$(CD) bootlists; $(CPL) *.bl ../$@,NITROS9/$(DISTRO)/BOOTLISTS
 	$(MAKDIR) $@,NITROS9/$(DISTRO)/SCRIPTS
 	$(CD) scripts; $(CPL) mb* ../$@,NITROS9/$(DISTRO)/SCRIPTS
-	$(RM) $(LDSKDW3)
-	$(SOFTLINK) $@ $(LDSKDW3)
+	$(RM) $(LDSKDW)
+	$(SOFTLINK) $@ $(LDSKDW)
 
-$(DSKDW3HEADLESS):
+$(DSKDWHEADLESS):
 	-$(RM) $@
-	$(OS9FORMAT_DW3) -q $@ -n"NitrOS-9/$(CPU) Level 2"
-	$(OS9GEN) $@ -b=$(BOOTFILE_DW3HEADLESS) -t=$(KERNELFILE_DW3)
+	$(OS9FORMAT_DW) -q $@ -n"NitrOS-9/$(CPU) Level 2"
+	$(OS9GEN) $@ -b=$(BOOTFILE_DWHEADLESS) -t=$(KERNELFILE_DW)
 	$(MAKDIR) $@,CMDS
 	$(MAKDIR) $@,SYS
 	$(MAKDIR) $@,DEFS
@@ -251,8 +251,8 @@
 	$(CD) bootlists; $(CPL) *.bl ../$@,NITROS9/$(DISTRO)/BOOTLISTS
 	$(MAKDIR) $@,NITROS9/$(DISTRO)/SCRIPTS
 	$(CD) scripts; $(CPL) mb* ../$@,NITROS9/$(DISTRO)/SCRIPTS
-	$(RM) $(LDSKDW3HEADLESS)
-	$(SOFTLINK) $@ $(LDSKDW3HEADLESS)
+	$(RM) $(LDSKDWHEADLESS)
+	$(SOFTLINK) $@ $(LDSKDWHEADLESS)
 
 $(DSK360K_1):
 	-$(RM) $@
--- a/level2/coco3/modules/makefile	Mon Jul 30 17:31:30 2012 -0500
+++ b/level2/coco3/modules/makefile	Mon Jul 30 19:35:05 2012 -0500
@@ -22,7 +22,7 @@
 TPB		= $(3RDPARTY)/booters
 
 BOOTERS		= boot_1773_6ms boot_1773_30ms \
-		 boot_burke boot_rampak boot_wd1002 boot_dw3 boot_dw3_becker \
+		 boot_burke boot_rampak boot_wd1002 boot_dw boot_dw_becker \
 		boot_tc3 boot_ide boot_rom
 BOOTTRACK	= rel_32 rel_40 rel_80 rel_32_50hz rel_40_50hz rel_80_50hz $(BOOTERS) krn
 KERNEL		= krnp2 krnp3_perr krnp4_regdump
@@ -30,10 +30,10 @@
 CLOCKS          = clock_60hz clock_50hz \
 		clock2_elim clock2_disto2 clock2_disto4 clock2_bnb \
 		clock2_smart clock2_harris clock2_cloud9 clock2_soft \
-		clock2_jvemu clock2_messemu clock2_dw3 clock2_dw3_becker
+		clock2_jvemu clock2_messemu clock2_dw clock2_dw_becker
 
 RBF		= rbf.mn \
-		rbdw3.dr dw3.sb dw3_becker.sb \
+		rbdw.dr dwio.sb dwio_becker.sb \
 		rb1773.dr rb1773_scii_ff74.dr rb1773_scii_ff58.dr \
 		d0_35s.dd d1_35s.dd d2_35s.dd d3_35s.dd \
 		d0_40d.dd d1_40d.dd d2_40d.dd d0_80d.dd \
@@ -101,11 +101,11 @@
 	$(AS) $(ASOUT)$@ $< $(IDEFLAGS)
 
 # DriveWire 3 Becker Booter
-boot_dw3_becker: boot_dw3.asm
+boot_dw_becker: boot_dw.asm
 	$(AS) $< $(ASOUT)$@ $(AFLAGS) -DBECKER=1
 
 # DriveWire 3 Becker Submodule
-dw3_becker.sb: dw3.asm
+dwio_becker.sb: dwio.asm
 	$(AS) $< $(ASOUT)$@ $(AFLAGS) -DBECKER=1
 
 # CoGrf/CoVDG Modules
@@ -376,7 +376,7 @@
 clock2_bnb: clock2_ds1315.asm
 	$(AS) $(AFLAGS) $(ASOUT)$@ $< -DBNB=1
 
-clock2_dw3_becker: clock2_dw3.asm
+clock2_dw_becker: clock2_dw.asm
 	$(AS) $(AFLAGS) $(ASOUT)$@ $< -DBECKER=1
 
 clean:
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/level2/coco3/scripts/mb.dw	Mon Jul 30 19:35:05 2012 -0500
@@ -0,0 +1,31 @@
+-t
+-x
+tmode .1 pau=0
+echo * NitrOS-9 Level 2 Boot Creation Script
+echo *
+echo * This script creates a bootable DriveWire 3 disk image
+echo * using the .bl bootlist file.
+echo *
+echo * The resulting disk will boot NitrOS-9 from DriveWire disk 0.
+echo *
+echo "Please type the destination device (e.g. /x0, /x1)"
+var.1
+prompt Insert a blank disk in %1 and press a key:
+echo *
+echo * Step 1: Format disk in %1
+format %1 "NitrOS-9 Level 2 Boot Disk" r
+ynn
+echo *
+echo * Step 2: Create a custom boot track
+merge ../MODULES/BOOTTRACK/rel_80 ../MODULES/BOOTTRACK/boot_dw ../MODULES/BOOTTRACK/krn>-bttemp
+echo *
+echo * Step 3: Create the bootfile and boot track
+os9gen %1 -t=bttemp<../BOOTLISTS/dw.bl
+del bttemp
+echo *
+echo * Step 4: Populate the disk with essential files
+copy ../MODULES/SYSMODS/sysgo_dd %1/sysgo
+makdir %1/CMDS
+copy -w=%1/CMDS ../CMDS/shell ../CMDS/grfdrv
+echo *
+echo * We're done
--- a/level2/coco3/scripts/mb.dw3	Mon Jul 30 17:31:30 2012 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,31 +0,0 @@
--t
--x
-tmode .1 pau=0
-echo * NitrOS-9 Level 2 Boot Creation Script
-echo *
-echo * This script creates a bootable DriveWire 3 disk image
-echo * using the dw3.bl bootlist file.
-echo *
-echo * The resulting disk will boot NitrOS-9 from DriveWire disk 0.
-echo *
-echo "Please type the destination device (e.g. /x0, /x1)"
-var.1
-prompt Insert a blank disk in %1 and press a key:
-echo *
-echo * Step 1: Format disk in %1
-format %1 "NitrOS-9 Level 2 Boot Disk" r
-ynn
-echo *
-echo * Step 2: Create a custom boot track
-merge ../MODULES/BOOTTRACK/rel_80 ../MODULES/BOOTTRACK/boot_dw3 ../MODULES/BOOTTRACK/krn>-bttemp
-echo *
-echo * Step 3: Create the bootfile and boot track
-os9gen %1 -t=bttemp<../BOOTLISTS/dw3.bl
-del bttemp
-echo *
-echo * Step 4: Populate the disk with essential files
-copy ../MODULES/SYSMODS/sysgo_dd %1/sysgo
-makdir %1/CMDS
-copy -w=%1/CMDS ../CMDS/shell ../CMDS/grfdrv
-echo *
-echo * We're done
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/level2/coco3_6309/bootlists/dw.bl	Mon Jul 30 19:35:05 2012 -0500
@@ -0,0 +1,288 @@
+***************************************
+* NitrOS-9 Level 2 CoCo 3 Bootlist
+*
+* $Id$
+*
+* This bootlist is presented as an example for creating custom bootfiles.
+* A module may be excluded from the bootfile if an asterisk (*) is the
+* first character of the line.
+*
+***************************************
+* Kernel/System Section
+*
+* These modules are mandatory.
+../MODULES/KERNEL/krnp2
+*../MODULES/KERNEL/krnp3_perr
+*../MODULES/KERNEL/krnp4_regdump
+../MODULES/SYSMODS/ioman
+../MODULES/SYSMODS/init
+*
+***************************************
+* CDF Section (HawkSoft)
+*
+*../MODULES/CDF/cdf.mn
+*
+* CDF descriptors - select as needed
+* SCSI descriptors (IDs 0-6)
+*../MODULES/CDF/sc0.dd
+*../MODULES/CDF/sc1.dd
+*../MODULES/CDF/sc2.dd
+*../MODULES/CDF/sc3.dd
+*../MODULES/CDF/sc4.dd
+*../MODULES/CDF/sc5.dd
+*../MODULES/CDF/sc6.dd
+* IDE descriptors (master/slave)
+*../MODULES/CDF/ic0.dd
+*../MODULES/CDF/ic1.dd
+*
+***************************************
+* RBF Section
+*
+../MODULES/RBF/rbf.mn
+*
+* DriveWire driver
+../MODULES/RBF/rbdw.dr
+../MODULES/RBF/dwio.sb
+* DriveWire descriptors - select as needed
+../MODULES/RBF/ddx0.dd
+*../MODULES/RBF/x0.dd
+../MODULES/RBF/x1.dd
+../MODULES/RBF/x2.dd
+../MODULES/RBF/x3.dd  
+*
+* SuperDriver Package (Cloud-9 product)
+*../MODULES/RBF/rbsuper.dr
+* Select Low level SCSI and/or IDE driver
+*../MODULES/RBF/lltc3.dr
+*../MODULES/RBF/llide.dr
+* SuperDriver descriptors - select as needed
+* TC^3 SCSI DD descriptor (ID 0)
+*../MODULES/RBF/dds0_tc3.dd
+* TC^3 SCSI descriptors (IDs 0-6)
+*../MODULES/RBF/s0_tc3.dd
+*../MODULES/RBF/s1_tc3.dd
+*../MODULES/RBF/s2_tc3.dd
+*../MODULES/RBF/s3_tc3.dd
+*../MODULES/RBF/s4_tc3.dd
+*../MODULES/RBF/s5_tc3.dd
+*../MODULES/RBF/s6_tc3.dd
+* TC^3 SCSI HDB-DOS descriptor
+*../MODULES/RBF/sh_tc3.dd
+* IDE DD descriptor (Master)
+*../MODULES/RBF/ddi0_ide.dd
+* IDE descriptors (master/slave)
+*../MODULES/RBF/i0_ide.dd
+*../MODULES/RBF/i1_ide.dd
+* IDE HDB-DOS descriptor
+*../MODULES/RBF/ih_ide.dd
+*
+* WD1773 floppy support for Tandy and compatible disk controllers
+../MODULES/RBF/rb1773.dr
+* WD1773 floppy support for Disto Super Controller II
+*../MODULES/RBF/rb1773_scii_ff74.dr
+*../MODULES/RBF/rb1773_scii_ff58.dr
+* Floppy device descriptors
+* DD - default device - choose one if needed
+*../MODULES/RBF/ddd0_35s.dd
+*../MODULES/RBF/ddd0_40d.dd
+*../MODULES/RBF/ddd0_80d.dd
+* D0 - drive 0 - choose one if needed
+*../MODULES/RBF/d0_35s.dd
+../MODULES/RBF/d0_40d.dd
+*../MODULES/RBF/d0_80d.dd
+* D1 - drive 1 - choose one if needed
+*../MODULES/RBF/d1_35s.dd
+../MODULES/RBF/d1_40d.dd
+*../MODULES/RBF/d1_80d.dd
+* D2 - drive 2 - choose one if needed
+*../MODULES/RBF/d2_35s.dd
+../MODULES/RBF/d2_40d.dd
+*../MODULES/RBF/d2_80d.dd
+* D3 - drive 3 - choose if needed
+*../MODULES/RBF/d3_35s.dd
+*
+* RAMDisk driver
+*../MODULES/RBF/rammer.dr
+* RAMDisk descriptors - select as needed
+*../MODULES/RBF/ddr0_8k.dd
+*../MODULES/RBF/ddr0_96k.dd
+*../MODULES/RBF/ddr0_128k.dd
+*../MODULES/RBF/ddr0_192k.dd
+*../MODULES/RBF/r0_8k.dd
+*../MODULES/RBF/r0_96k.dd
+*../MODULES/RBF/r0_128k.dd
+*../MODULES/RBF/r0_192k.dd
+* Memory device descriptor
+*../MODULES/RBF/md.dd
+***************************************
+* SCF Section
+*
+../MODULES/SCF/scf.mn
+*
+* CoCo 3 I/O sub-drivers
+../MODULES/SCF/vtio.dr
+../MODULES/SCF/keydrv_cc3.sb
+* Sound module: CoCo 3 built-in sound generator
+../MODULES/SCF/snddrv_cc3.sb
+* Joystick modules: choose joy for hi-res joystick adapter or
+* (M)icrosoft or (L)ogitech mouse using 6551 or 6552 ACIA
+../MODULES/SCF/joydrv_joy.sb
+*../MODULES/SCF/joydrv_6551M.sb
+*../MODULES/SCF/joydrv_6552M.sb
+*../MODULES/SCF/joydrv_6551L.sb
+*../MODULES/SCF/joydrv_6552L.sb
+*
+* CoGrf/CoWin subroutine module
+* Use CoWin with Multi-Vue; use CoGrf
+* for basic text and graphic window support..
+* Select only one.
+*../MODULES/SCF/cogrf.io
+../MODULES/SCF/cowin.io
+*
+* CoVDG I/O subroutine module
+* Select one or both
+*../MODULES/SCF/covdg.io
+*../MODULES/SCF/covdg_small.io
+*
+* Select only one term descriptor
+*../MODULES/SCF/term_vdg.dt
+*../MODULES/SCF/term_win40.dt
+../MODULES/SCF/term_win80.dt
+*../MODULES/SCF/term_scbbt.dt
+*../MODULES/SCF/term_sc6551.dt
+*
+* Select as many window descriptors as needed
+../MODULES/SCF/w.dw
+../MODULES/SCF/w1.dw
+../MODULES/SCF/w2.dw
+../MODULES/SCF/w3.dw
+../MODULES/SCF/w4.dw
+../MODULES/SCF/w5.dw
+../MODULES/SCF/w6.dw
+../MODULES/SCF/w7.dw
+../MODULES/SCF/w8.dw
+../MODULES/SCF/w9.dw
+../MODULES/SCF/w10.dw
+../MODULES/SCF/w11.dw
+../MODULES/SCF/w12.dw
+../MODULES/SCF/w13.dw
+../MODULES/SCF/w14.dw
+../MODULES/SCF/w15.dw
+*
+* Select as many VDG window descriptors as needed
+*../MODULES/SCF/v1.dw
+*../MODULES/SCF/v2.dw
+*../MODULES/SCF/v3.dw
+*../MODULES/SCF/v4.dw
+*../MODULES/SCF/v5.dw
+*../MODULES/SCF/v6.dw
+*../MODULES/SCF/v7.dw
+*
+* Serial port drivers
+* CoCo Bit-Banger terminal port
+*../MODULES/SCF/scbbt.dr
+*../MODULES/SCF/t1_scbbt.dd
+* 6551 ACIA
+*../MODULES/SCF/sc6551.dr
+*../MODULES/SCF/t2_sc6551.dd
+*../MODULES/SCF/t3_sc6551.dd
+* Tandy Modem Pak
+*../MODULES/SCF/modpak.dr
+*../MODULES/SCF/m1.dd
+*../MODULES/SCF/m2.dd
+*
+* Printer drivers
+* ../MODULES/SCF/scbbp.dr
+* ../MODULES/SCF/p_scbbp.dd
+*
+* DriveWire 3 Printer drivers
+* ../MODULES/SCF/scdwp.dr
+* ../MODULES/SCF/p_scdwp.dd
+*
+* DriveWire Networking
+*../MODULES/SCF/scdwn.dr
+*../MODULES/SCF/term_scdwn.dt
+*../MODULES/SCF/n_scdwn.dd
+*../MODULES/SCF/n1_scdwn.dd
+*../MODULES/SCF/n2_scdwn.dd
+*../MODULES/SCF/n3_scdwn.dd
+*../MODULES/SCF/n4_scdwn.dd
+*../MODULES/SCF/n5_scdwn.dd
+*../MODULES/SCF/n6_scdwn.dd
+*../MODULES/SCF/n7_scdwn.dd
+*../MODULES/SCF/n8_scdwn.dd
+*../MODULES/SCF/n9_scdwn.dd
+*../MODULES/SCF/n10_scdwn.dd
+*../MODULES/SCF/n11_scdwn.dd
+*../MODULES/SCF/n12_scdwn.dd
+*../MODULES/SCF/n13_scdwn.dd
+*../MODULES/SCF/n14_scdwn.dd
+*
+* DriveWire Networking
+*../MODULES/SCF/scdwn.dr
+*../MODULES/SCF/term_scdwn.dt
+*../MODULES/SCF/n0_scdwn.dd
+*../MODULES/SCF/n1_scdwn.dd
+*../MODULES/SCF/n2_scdwn.dd
+*../MODULES/SCF/n3_scdwn.dd
+*../MODULES/SCF/n4_scdwn.dd
+*../MODULES/SCF/n5_scdwn.dd
+*../MODULES/SCF/n6_scdwn.dd
+*../MODULES/SCF/n7_scdwn.dd
+*../MODULES/SCF/n8_scdwn.dd
+*../MODULES/SCF/n9_scdwn.dd
+*../MODULES/SCF/n10_scdwn.dd
+*../MODULES/SCF/n11_scdwn.dd
+*../MODULES/SCF/n12_scdwn.dd
+*../MODULES/SCF/n13_scdwn.dd
+*../MODULES/SCF/n14_scdwn.dd
+*
+* VRN is a driver module used by certain games, including King's Quest III,
+* Leisure Suit Larry and Flight Simulator II.  A /nil descriptor is also
+* supported.
+../MODULES/SCF/vrn.dr
+../MODULES/SCF/vi.dd
+../MODULES/SCF/ftdd.dd
+*
+***************************************
+* Pipe Section
+*
+* Pipes are a useful but optional part of a system.
+../MODULES/PIPE/pipeman.mn
+../MODULES/PIPE/piper.dr
+../MODULES/PIPE/pipe.dd
+*
+***************************************
+* Clock Section
+*
+* Select one clock module depending upon your power line frequency
+* (60Hz = USA/Canada; 50Hz = Europe, Australia)
+../MODULES/CLOCKS/clock_60hz
+*../MODULES/CLOCKS/clock_50hz
+* Select one clock2 module that supports your real-time clock, if any.
+* Besides support for the internal software clock, the following
+* hardware clocks are supported: Burke & Burke, Disto 2-N-1, Disto 4-N-1,
+* Eliminator, Harris, SmartWatch, Cloud-9 (SuperIDE), the MESS emulator, Jeff
+* Vavasour's CoCo emulator and DriveWire
+*../MODULES/CLOCKS/clock2_soft
+*../MODULES/CLOCKS/clock2_bnb
+*../MODULES/CLOCKS/clock2_disto2
+*../MODULES/CLOCKS/clock2_disto4
+*../MODULES/CLOCKS/clock2_elim
+*../MODULES/CLOCKS/clock2_harris
+*../MODULES/CLOCKS/clock2_smart
+*../MODULES/CLOCKS/clock2_jvemu
+*../MODULES/CLOCKS/clock2_messemu
+*../MODULES/CLOCKS/clock2_cloud9
+../MODULES/CLOCKS/clock2_dw
+*
+***************************************
+* System Kick-Start Module
+*
+* Choose which startup module you wish to use. (sysgo_dd is recommended
+* for most configurations.)
+* 
+* Alternatively, this module can reside in the root directory of the
+* boot device, saving precious system RAM.
+../MODULES/SYSMODS/sysgo_dd
+*../MODULES/SYSMODS/sysgo_h0
--- a/level2/coco3_6309/bootlists/dw3.bl	Mon Jul 30 17:31:30 2012 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,288 +0,0 @@
-***************************************
-* NitrOS-9 Level 2 CoCo 3 Bootlist
-*
-* $Id$
-*
-* This bootlist is presented as an example for creating custom bootfiles.
-* A module may be excluded from the bootfile if an asterisk (*) is the
-* first character of the line.
-*
-***************************************
-* Kernel/System Section
-*
-* These modules are mandatory.
-../MODULES/KERNEL/krnp2
-*../MODULES/KERNEL/krnp3_perr
-*../MODULES/KERNEL/krnp4_regdump
-../MODULES/SYSMODS/ioman
-../MODULES/SYSMODS/init
-*
-***************************************
-* CDF Section (HawkSoft)
-*
-*../MODULES/CDF/cdf.mn
-*
-* CDF descriptors - select as needed
-* SCSI descriptors (IDs 0-6)
-*../MODULES/CDF/sc0.dd
-*../MODULES/CDF/sc1.dd
-*../MODULES/CDF/sc2.dd
-*../MODULES/CDF/sc3.dd
-*../MODULES/CDF/sc4.dd
-*../MODULES/CDF/sc5.dd
-*../MODULES/CDF/sc6.dd
-* IDE descriptors (master/slave)
-*../MODULES/CDF/ic0.dd
-*../MODULES/CDF/ic1.dd
-*
-***************************************
-* RBF Section
-*
-../MODULES/RBF/rbf.mn
-*
-* DriveWire 3 driver
-../MODULES/RBF/rbdw3.dr
-../MODULES/RBF/dw3.sb
-* DriveWire descriptors - select as needed
-../MODULES/RBF/ddx0.dd
-*../MODULES/RBF/x0.dd
-../MODULES/RBF/x1.dd
-../MODULES/RBF/x2.dd
-../MODULES/RBF/x3.dd  
-*
-* SuperDriver Package (Cloud-9 product)
-*../MODULES/RBF/rbsuper.dr
-* Select Low level SCSI and/or IDE driver
-*../MODULES/RBF/lltc3.dr
-*../MODULES/RBF/llide.dr
-* SuperDriver descriptors - select as needed
-* TC^3 SCSI DD descriptor (ID 0)
-*../MODULES/RBF/dds0_tc3.dd
-* TC^3 SCSI descriptors (IDs 0-6)
-*../MODULES/RBF/s0_tc3.dd
-*../MODULES/RBF/s1_tc3.dd
-*../MODULES/RBF/s2_tc3.dd
-*../MODULES/RBF/s3_tc3.dd
-*../MODULES/RBF/s4_tc3.dd
-*../MODULES/RBF/s5_tc3.dd
-*../MODULES/RBF/s6_tc3.dd
-* TC^3 SCSI HDB-DOS descriptor
-*../MODULES/RBF/sh_tc3.dd
-* IDE DD descriptor (Master)
-*../MODULES/RBF/ddi0_ide.dd
-* IDE descriptors (master/slave)
-*../MODULES/RBF/i0_ide.dd
-*../MODULES/RBF/i1_ide.dd
-* IDE HDB-DOS descriptor
-*../MODULES/RBF/ih_ide.dd
-*
-* WD1773 floppy support for Tandy and compatible disk controllers
-../MODULES/RBF/rb1773.dr
-* WD1773 floppy support for Disto Super Controller II
-*../MODULES/RBF/rb1773_scii_ff74.dr
-*../MODULES/RBF/rb1773_scii_ff58.dr
-* Floppy device descriptors
-* DD - default device - choose one if needed
-*../MODULES/RBF/ddd0_35s.dd
-*../MODULES/RBF/ddd0_40d.dd
-*../MODULES/RBF/ddd0_80d.dd
-* D0 - drive 0 - choose one if needed
-*../MODULES/RBF/d0_35s.dd
-../MODULES/RBF/d0_40d.dd
-*../MODULES/RBF/d0_80d.dd
-* D1 - drive 1 - choose one if needed
-*../MODULES/RBF/d1_35s.dd
-../MODULES/RBF/d1_40d.dd
-*../MODULES/RBF/d1_80d.dd
-* D2 - drive 2 - choose one if needed
-*../MODULES/RBF/d2_35s.dd
-../MODULES/RBF/d2_40d.dd
-*../MODULES/RBF/d2_80d.dd
-* D3 - drive 3 - choose if needed
-*../MODULES/RBF/d3_35s.dd
-*
-* RAMDisk driver
-*../MODULES/RBF/rammer.dr
-* RAMDisk descriptors - select as needed
-*../MODULES/RBF/ddr0_8k.dd
-*../MODULES/RBF/ddr0_96k.dd
-*../MODULES/RBF/ddr0_128k.dd
-*../MODULES/RBF/ddr0_192k.dd
-*../MODULES/RBF/r0_8k.dd
-*../MODULES/RBF/r0_96k.dd
-*../MODULES/RBF/r0_128k.dd
-*../MODULES/RBF/r0_192k.dd
-* Memory device descriptor
-*../MODULES/RBF/md.dd
-***************************************
-* SCF Section
-*
-../MODULES/SCF/scf.mn
-*
-* CoCo 3 I/O sub-drivers
-../MODULES/SCF/vtio.dr
-../MODULES/SCF/keydrv_cc3.sb
-* Sound module: CoCo 3 built-in sound generator
-../MODULES/SCF/snddrv_cc3.sb
-* Joystick modules: choose joy for hi-res joystick adapter or
-* (M)icrosoft or (L)ogitech mouse using 6551 or 6552 ACIA
-../MODULES/SCF/joydrv_joy.sb
-*../MODULES/SCF/joydrv_6551M.sb
-*../MODULES/SCF/joydrv_6552M.sb
-*../MODULES/SCF/joydrv_6551L.sb
-*../MODULES/SCF/joydrv_6552L.sb
-*
-* CoGrf/CoWin subroutine module
-* Use CoWin with Multi-Vue; use CoGrf
-* for basic text and graphic window support..
-* Select only one.
-*../MODULES/SCF/cogrf.io
-../MODULES/SCF/cowin.io
-*
-* CoVDG I/O subroutine module
-* Select one or both
-*../MODULES/SCF/covdg.io
-*../MODULES/SCF/covdg_small.io
-*
-* Select only one term descriptor
-*../MODULES/SCF/term_vdg.dt
-*../MODULES/SCF/term_win40.dt
-../MODULES/SCF/term_win80.dt
-*../MODULES/SCF/term_scbbt.dt
-*../MODULES/SCF/term_sc6551.dt
-*
-* Select as many window descriptors as needed
-../MODULES/SCF/w.dw
-../MODULES/SCF/w1.dw
-../MODULES/SCF/w2.dw
-../MODULES/SCF/w3.dw
-../MODULES/SCF/w4.dw
-../MODULES/SCF/w5.dw
-../MODULES/SCF/w6.dw
-../MODULES/SCF/w7.dw
-../MODULES/SCF/w8.dw
-../MODULES/SCF/w9.dw
-../MODULES/SCF/w10.dw
-../MODULES/SCF/w11.dw
-../MODULES/SCF/w12.dw
-../MODULES/SCF/w13.dw
-../MODULES/SCF/w14.dw
-../MODULES/SCF/w15.dw
-*
-* Select as many VDG window descriptors as needed
-*../MODULES/SCF/v1.dw
-*../MODULES/SCF/v2.dw
-*../MODULES/SCF/v3.dw
-*../MODULES/SCF/v4.dw
-*../MODULES/SCF/v5.dw
-*../MODULES/SCF/v6.dw
-*../MODULES/SCF/v7.dw
-*
-* Serial port drivers
-* CoCo Bit-Banger terminal port
-*../MODULES/SCF/scbbt.dr
-*../MODULES/SCF/t1_scbbt.dd
-* 6551 ACIA
-*../MODULES/SCF/sc6551.dr
-*../MODULES/SCF/t2_sc6551.dd
-*../MODULES/SCF/t3_sc6551.dd
-* Tandy Modem Pak
-*../MODULES/SCF/modpak.dr
-*../MODULES/SCF/m1.dd
-*../MODULES/SCF/m2.dd
-*
-* Printer drivers
-* ../MODULES/SCF/scbbp.dr
-* ../MODULES/SCF/p_scbbp.dd
-*
-* DriveWire 3 Printer drivers
-* ../MODULES/SCF/scdwp.dr
-* ../MODULES/SCF/p_scdwp.dd
-*
-* DriveWire Networking
-*../MODULES/SCF/scdwn.dr
-*../MODULES/SCF/term_scdwn.dt
-*../MODULES/SCF/n_scdwn.dd
-*../MODULES/SCF/n1_scdwn.dd
-*../MODULES/SCF/n2_scdwn.dd
-*../MODULES/SCF/n3_scdwn.dd
-*../MODULES/SCF/n4_scdwn.dd
-*../MODULES/SCF/n5_scdwn.dd
-*../MODULES/SCF/n6_scdwn.dd
-*../MODULES/SCF/n7_scdwn.dd
-*../MODULES/SCF/n8_scdwn.dd
-*../MODULES/SCF/n9_scdwn.dd
-*../MODULES/SCF/n10_scdwn.dd
-*../MODULES/SCF/n11_scdwn.dd
-*../MODULES/SCF/n12_scdwn.dd
-*../MODULES/SCF/n13_scdwn.dd
-*../MODULES/SCF/n14_scdwn.dd
-*
-* DriveWire Networking
-*../MODULES/SCF/scdwn.dr
-*../MODULES/SCF/term_scdwn.dt
-*../MODULES/SCF/n0_scdwn.dd
-*../MODULES/SCF/n1_scdwn.dd
-*../MODULES/SCF/n2_scdwn.dd
-*../MODULES/SCF/n3_scdwn.dd
-*../MODULES/SCF/n4_scdwn.dd
-*../MODULES/SCF/n5_scdwn.dd
-*../MODULES/SCF/n6_scdwn.dd
-*../MODULES/SCF/n7_scdwn.dd
-*../MODULES/SCF/n8_scdwn.dd
-*../MODULES/SCF/n9_scdwn.dd
-*../MODULES/SCF/n10_scdwn.dd
-*../MODULES/SCF/n11_scdwn.dd
-*../MODULES/SCF/n12_scdwn.dd
-*../MODULES/SCF/n13_scdwn.dd
-*../MODULES/SCF/n14_scdwn.dd
-*
-* VRN is a driver module used by certain games, including King's Quest III,
-* Leisure Suit Larry and Flight Simulator II.  A /nil descriptor is also
-* supported.
-../MODULES/SCF/vrn.dr
-../MODULES/SCF/vi.dd
-../MODULES/SCF/ftdd.dd
-*
-***************************************
-* Pipe Section
-*
-* Pipes are a useful but optional part of a system.
-../MODULES/PIPE/pipeman.mn
-../MODULES/PIPE/piper.dr
-../MODULES/PIPE/pipe.dd
-*
-***************************************
-* Clock Section
-*
-* Select one clock module depending upon your power line frequency
-* (60Hz = USA/Canada; 50Hz = Europe, Australia)
-../MODULES/CLOCKS/clock_60hz
-*../MODULES/CLOCKS/clock_50hz
-* Select one clock2 module that supports your real-time clock, if any.
-* Besides support for the internal software clock, the following
-* hardware clocks are supported: Burke & Burke, Disto 2-N-1, Disto 4-N-1,
-* Eliminator, Harris, SmartWatch, Cloud-9 (SuperIDE), the MESS emulator, Jeff
-* Vavasour's CoCo emulator and DriveWire
-*../MODULES/CLOCKS/clock2_soft
-*../MODULES/CLOCKS/clock2_bnb
-*../MODULES/CLOCKS/clock2_disto2
-*../MODULES/CLOCKS/clock2_disto4
-*../MODULES/CLOCKS/clock2_elim
-*../MODULES/CLOCKS/clock2_harris
-*../MODULES/CLOCKS/clock2_smart
-*../MODULES/CLOCKS/clock2_jvemu
-*../MODULES/CLOCKS/clock2_messemu
-*../MODULES/CLOCKS/clock2_cloud9
-../MODULES/CLOCKS/clock2_dw3
-*
-***************************************
-* System Kick-Start Module
-*
-* Choose which startup module you wish to use. (sysgo_dd is recommended
-* for most configurations.)
-* 
-* Alternatively, this module can reside in the root directory of the
-* boot device, saving precious system RAM.
-../MODULES/SYSMODS/sysgo_dd
-*../MODULES/SYSMODS/sysgo_h0
--- a/level2/coco3_6309/bootlists/standard.bl	Mon Jul 30 17:31:30 2012 -0500
+++ b/level2/coco3_6309/bootlists/standard.bl	Mon Jul 30 19:35:05 2012 -0500
@@ -40,9 +40,9 @@
 *
 ../MODULES/RBF/rbf.mn
 *
-* DriveWire 3 driver
-*../MODULES/RBF/rbdw3.dr
-*../MODULES/RBF/dw3.sb
+* DriveWire driver
+*../MODULES/RBF/rbdw.dr
+*../MODULES/RBF/dwio.sb
 * DriveWire descriptors - select as needed
 *../MODULES/RBF/ddx0.dd
 *../MODULES/RBF/x0.dd
@@ -256,7 +256,7 @@
 *../MODULES/CLOCKS/clock2_jvemu
 *../MODULES/CLOCKS/clock2_messemu
 *../MODULES/CLOCKS/clock2_cloud9
-*../MODULES/CLOCKS/clock2_dw3
+*../MODULES/CLOCKS/clock2_dw
 *
 ***************************************
 * System Kick-Start Module
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/level2/coco3_6309/scripts/mb.dw	Mon Jul 30 19:35:05 2012 -0500
@@ -0,0 +1,31 @@
+g-t
+-x
+tmode .1 pau=0
+echo * NitrOS-9 Level 2 Boot Creation Script
+echo *
+echo * This script creates a bootable DriveWire 3 disk image
+echo * using the dw.bl bootlist file.
+echo *
+echo * The resulting disk will boot NitrOS-9 from DriveWire disk 0.
+echo *
+echo "Please type the destination device (e.g. /x0, /x1)"
+var.1
+prompt Insert a blank disk in %1 and press a key:
+echo *
+echo * Step 1: Format disk in %1
+format %1 "NitrOS-9 Level 2 Boot Disk" r
+ynn
+echo *
+echo * Step 2: Create a custom boot track
+merge ../MODULES/BOOTTRACK/rel_80 ../MODULES/BOOTTRACK/boot_dw ../MODULES/BOOTTRACK/krn>-bttemp
+echo *
+echo * Step 3: Create the bootfile and boot track
+os9gen %1 -t=bttemp<../BOOTLISTS/dw.bl
+del bttemp
+echo *
+echo * Step 4: Populate the disk with essential files
+copy ../MODULES/SYSMODS/sysgo_dd %1/sysgo
+makdir %1/CMDS
+copy -w=%1/CMDS ../CMDS/shell ../CMDS/grfdrv
+echo *
+echo * We're done
--- a/level2/coco3_6309/scripts/mb.dw3	Mon Jul 30 17:31:30 2012 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,31 +0,0 @@
--t
--x
-tmode .1 pau=0
-echo * NitrOS-9 Level 2 Boot Creation Script
-echo *
-echo * This script creates a bootable DriveWire 3 disk image
-echo * using the dw3.bl bootlist file.
-echo *
-echo * The resulting disk will boot NitrOS-9 from DriveWire disk 0.
-echo *
-echo "Please type the destination device (e.g. /x0, /x1)"
-var.1
-prompt Insert a blank disk in %1 and press a key:
-echo *
-echo * Step 1: Format disk in %1
-format %1 "NitrOS-9 Level 2 Boot Disk" r
-ynn
-echo *
-echo * Step 2: Create a custom boot track
-merge ../MODULES/BOOTTRACK/rel_80 ../MODULES/BOOTTRACK/boot_dw3 ../MODULES/BOOTTRACK/krn>-bttemp
-echo *
-echo * Step 3: Create the bootfile and boot track
-os9gen %1 -t=bttemp<../BOOTLISTS/dw3.bl
-del bttemp
-echo *
-echo * Step 4: Populate the disk with essential files
-copy ../MODULES/SYSMODS/sysgo_dd %1/sysgo
-makdir %1/CMDS
-copy -w=%1/CMDS ../CMDS/shell ../CMDS/grfdrv
-echo *
-echo * We're done
--- a/level3/coco3/bootfiles/makefile	Mon Jul 30 17:31:30 2012 -0500
+++ b/level3/coco3/bootfiles/makefile	Mon Jul 30 19:35:05 2012 -0500
@@ -9,7 +9,7 @@
 
 KERNEL_1773	= $(MD)/rel_80 $(MD)/boot_1773_6ms $(MD)/krn
 KERNEL_1773_50HZ	= $(MD)/rel_80_50hz $(MD)/boot_1773_6ms $(MD)/krn
-KERNEL_DW3	= $(MD)/rel_80 $(MD)/boot_dw3 $(MD)/krn
+KERNEL_DW 	= $(MD)/rel_80 $(MD)/boot_dw $(MD)/krn
 
 # NitrOS-9 disk bootfile to allow booting from WD1773 disk controller
 BOOTFILE_40D	= $(MD)/scf.mn \
@@ -76,8 +76,8 @@
 		$(MD)/pipeman.mn $(MD)/piper.dr $(MD)/pipe.dd \
 		$(MD)/clock_50hz $(MD)/clock2_soft
 
-BOOTFILES	= bootfile_40d bootfile_40d_50hz bootfile_80d bootfile_80d_50hz bootfile_dw3
-KERNELS		= kernel_1773 kernel_1773_50hz kernel_dw3
+BOOTFILES	= bootfile_40d bootfile_40d_50hz bootfile_80d bootfile_80d_50hz bootfile_dw
+KERNELS		= kernel_1773 kernel_1773_50hz kernel_dw
 
 ALLOBJS		= $(BOOTFILES) $(KERNELS)
 
@@ -96,8 +96,8 @@
 bootfile_80d_50hz: $(BOOTFILE_80D_50HZ) $(DEPENDS)
 	$(MERGE) $(BOOTFILE_80D_50HZ)>$@
 
-bootfile_dw3: $(BOOTFILE_DW3) $(DEPENDS)
-	$(MERGE) $(BOOTFILE_DW3)>$@
+bootfile_dw: $(BOOTFILE_DW) $(DEPENDS)
+	$(MERGE) $(BOOTFILE_DW)>$@
 
 # Kernels
 kernel_1773: $(KERNEL_1773) $(DEPENDS)
@@ -106,8 +106,8 @@
 kernel_1773_50hz: $(KERNEL_1773_50HZ) $(DEPENDS)
 	$(MERGE) $(KERNEL_1773_50HZ)>$@
 
-kernel_dw3: $(KERNEL_DW3) $(DEPENDS)
-	$(MERGE) $(KERNEL_DW3)>$@
+kernel_dw: $(KERNEL_DW) $(DEPENDS)
+	$(MERGE) $(KERNEL_DW)>$@
 
 clean:
 	$(RM) $(ALLOBJS)
--- a/level3/coco3/makefile	Mon Jul 30 17:31:30 2012 -0500
+++ b/level3/coco3/makefile	Mon Jul 30 19:35:05 2012 -0500
@@ -7,14 +7,14 @@
 DISTRO		= $(CPU)L$(LEVEL)
 DISTRONAME	= nos9$(CPU)l$(LEVEL)
 DISTROVER	= $(DISTRONAME)$(NITROS9VER)$(PORT)
-BOOTFILE_DW3	= bootfiles/bootfile_dw3
+BOOTFILE_DW	= bootfiles/bootfile_dw
 BOOTFILE_40D	= bootfiles/bootfile_40d
 BOOTFILE_80D	= bootfiles/bootfile_80d
 BOOTFILE_40D_50HZ	= bootfiles/bootfile_40d_50hz
 BOOTFILE_80D_50HZ	= bootfiles/bootfile_80d_50hz
 KERNELFILE	= bootfiles/kernel_1773
 KERNELFILE_50HZ	= bootfiles/kernel_1773_50hz
-KERNELFILE_DW3	= bootfiles/kernel_dw3
+KERNELFILE_DW	= bootfiles/kernel_dw
 DIRS		= cmds modules defs sys bootfiles
 
 CMDS		= $(shell $(CD) cmds; make showobjs)
@@ -35,8 +35,8 @@
 SYSGO		= sysgo_dd
 
 PACKAGENAME	= $(DISTROVER).zip
-DSKDW3		= $(DISTROVER)_dw3.dsk
-LDSKDW3		= $(DISTRONAME)_dw3.dsk
+DSKDW		= $(DISTROVER)_dw.dsk
+LDSKDW		= $(DISTRONAME)_dw.dsk
 DSK360K_1	= $(DISTROVER)_40d_1.dsk
 LDSK360K_1	= $(DISTRONAME)_40d_1.dsk
 DSK360K_1_50HZ	= $(DISTROVER)_40d_1_50hz.dsk
@@ -49,8 +49,8 @@
 LDSK720K_50HZ	= $(DISTRONAME)_80d_50hz.dsk
 TESTDSK		= test.dsk
 
-DSKS		= $(DSKDW3) $(DSK360K_1) $(DSK360K_1_50HZ) $(DSK360K_2) $(DSK720K) $(DSK720K_50HZ)
-LDSKS		= $(LDSKDW3) $(LDSK360K_1) $(LDSK360K_1_50HZ) $(LDSK360K_2) $(LDSK720K) $(LDSK720K_50HZ)
+DSKS		= $(DSKDW) $(DSK360K_1) $(DSK360K_1_50HZ) $(DSK360K_2) $(DSK720K) $(DSK720K_50HZ)
+LDSKS		= $(LDSKDW) $(LDSK360K_1) $(LDSK360K_1_50HZ) $(LDSK360K_2) $(LDSK720K) $(LDSK720K_50HZ)
 
 # Make all components
 all:
@@ -79,10 +79,10 @@
 $(PACKAGENAME): $(DSKS) ../../ReadMe ../../ChangeLog
 	$(ARCHIVE) $@ $^
 
-$(DSKDW3):
+$(DSKDW):
 	-$(RM) $@
-	$(OS9FORMAT_DW3) -q $@ -n"NitrOS-9/$(CPU) Level 2"
-	$(OS9GEN) $@ -b=$(BOOTFILE_DW3) -t=$(KERNELFILE_DW3)
+	$(OS9FORMAT_DW) -q $@ -n"NitrOS-9/$(CPU) Level 2"
+	$(OS9GEN) $@ -b=$(BOOTFILE_DW) -t=$(KERNELFILE_DW)
 	$(MAKDIR) $@,CMDS
 	$(MAKDIR) $@,SYS
 	$(MAKDIR) $@,DEFS
@@ -129,8 +129,8 @@
 	$(CD) bootlists; $(CPL) *.bl ../$@,NITROS9/$(DISTRO)/BOOTLISTS
 	$(MAKDIR) $@,NITROS9/$(DISTRO)/SCRIPTS
 	$(CD) scripts; $(CPL) mb* ../$@,NITROS9/$(DISTRO)/SCRIPTS
-	$(RM) $(LDSKDW3)
-	$(SOFTLINK) $@ $(LDSKDW3)
+	$(RM) $(LDSKDW)
+	$(SOFTLINK) $@ $(LDSKDW)
 
 $(DSK360K_1):
 	-$(RM) $@
--- a/level3/coco3/modules/makefile	Mon Jul 30 17:31:30 2012 -0500
+++ b/level3/coco3/modules/makefile	Mon Jul 30 19:35:05 2012 -0500
@@ -20,17 +20,17 @@
 TPB		= ../../3rdparty/booters
 
 BOOTERS		= boot_1773_6ms boot_1773_30ms \
-		 boot_burke boot_rampak boot_wd1002 boot_dw3
+		 boot_burke boot_rampak boot_wd1002 boot_dw
 BOOTTRACK	= rel_32 rel_40 rel_80 rel_32_50hz rel_40_50hz rel_80_50hz $(BOOTERS) krn
 KERNEL		= krnp2 krnp3_perr krnp4_regdump
 SYSMODS		= ioman init sysgo_h0 sysgo_dd nitro end
 CLOCKS          = clock_60hz clock_50hz \
 		clock2_elim clock2_disto2 clock2_disto4 clock2_bnb \
 		clock2_smart clock2_harris clock2_cloud9 clock2_soft \
-		clock2_jvemu clock2_messemu clock2_dw3
+		clock2_jvemu clock2_messemu clock2_dw
 
 RBF		= rbf.mn \
-		rbdw3.dr dw3.sb \
+		rbdw.dr dwio.sb \
 		rb1773.dr rb1773_scii_ff74.dr rb1773_scii_ff58.dr \
 		d0_35s.dd d1_35s.dd d2_35s.dd d3_35s.dd \
 		d0_40d.dd d1_40d.dd d2_40d.dd d0_80d.dd \
--- a/level3/coco3_6309/modules/makefile	Mon Jul 30 17:31:30 2012 -0500
+++ b/level3/coco3_6309/modules/makefile	Mon Jul 30 19:35:05 2012 -0500
@@ -20,17 +20,17 @@
 TPB		= ../../3rdparty/booters
 
 BOOTERS		= boot_1773_6ms boot_1773_30ms \
-		 boot_burke boot_rampak boot_wd1002 boot_dw3
+		 boot_burke boot_rampak boot_wd1002 boot_dw
 BOOTTRACK	= rel_32 rel_40 rel_80 rel_32_50hz rel_40_50hz rel_80_50hz $(BOOTERS) krn
 KERNEL		= krnp2 krnp3_perr krnp4_regdump
 SYSMODS		= ioman init sysgo_h0 sysgo_dd nitro end
 CLOCKS          = clock_60hz clock_50hz \
 		clock2_elim clock2_disto2 clock2_disto4 clock2_bnb \
 		clock2_smart clock2_harris clock2_cloud9 clock2_soft \
-		clock2_jvemu clock2_messemu clock2_dw3
+		clock2_jvemu clock2_messemu clock2_dw
 
 RBF		= rbf.mn \
-		rbdw3.dr dw3.sb \
+		rbdw.dr dwio.sb \
 		rb1773.dr rb1773_scii_ff74.dr rb1773_scii_ff58.dr \
 		d0_35s.dd d1_35s.dd d2_35s.dd d3_35s.dd \
 		d0_40d.dd d1_40d.dd d2_40d.dd d0_80d.dd \
--- a/makefile	Mon Jul 30 17:31:30 2012 -0500
+++ b/makefile	Mon Jul 30 19:35:05 2012 -0500
@@ -35,12 +35,12 @@
 dskclean:
 	$(foreach dir, $(dirs), ($(CD) $(dir); make dskclean);)
 
-# DriveWire 3 DSK images
-dw3dsk = $(LEVEL1)/coco/nos96809l1coco1_dw3.dsk $(LEVEL1)/coco/nos96809l1coco2_dw3.dsk \
-	$(LEVEL2)/coco3/nos96809l2_dw3.dsk $(LEVEL2)/coco3_6309/nos96309l2_dw3.dsk
+# DriveWire DSK images
+dwdsk = $(LEVEL1)/coco/nos96809l1coco1_dw.dsk $(LEVEL1)/coco/nos96809l1coco2_dw.dsk \
+	$(LEVEL2)/coco3/nos96809l2_dw.dsk $(LEVEL2)/coco3_6309/nos96309l2_dw.dsk
 
-dw3:
-	$(ARCHIVE) nitros9_drivewire3.zip $(dw3dsk)
+dw:
+	$(ARCHIVE) nitros9_drivewire.zip $(dwdsk)
 
 info:
 	@$(foreach dir, $(dirs), ($(CD) $(dir); make info);)
--- a/rules.mak	Mon Jul 30 17:31:30 2012 -0500
+++ b/rules.mak	Mon Jul 30 19:35:05 2012 -0500
@@ -75,7 +75,7 @@
 OS9FORMAT_SS80	= os9 format -t80 -ss -dd
 OS9FORMAT_DS40	= os9 format -t40 -ds -dd
 OS9FORMAT_DS80	= os9 format -t80 -ds -dd
-OS9FORMAT_DW3	= os9 format -t1024 -ss -dd
+OS9FORMAT_DW	= os9 format -t1024 -ss -dd
 OS9GEN		= os9 gen
 OS9RENAME	= os9 rename
 OS9ATTR		= os9 attr -q