Index: vlib/acctrl.s
===================================================================
--- vlib/acctrl.s	(revision f40a3096572fd1b0696a7f7c717464e68652e655)
+++ vlib/acctrl.s	(revision 283e7a64dc74f7abe8a66f643e188bbe4f250aa4)
@@ -1,127 +1,127 @@
-* ------------------------------------------------------------------------------
-* acctrl.s -- VSDD access table control functions
-* Version 6 -- 1987-04-13 -- D.N. Lynx Crowe
-* (c) Copyright 1987 -- D.N. Lynx Crowe
-* ------------------------------------------------------------------------------
-*
-*	objclr(obj)
-*	unsigned int obj;
-*
-*		Clear bits in access table for object 'obj'.
-*		Disables object 'obj'.
-*
-*	objoff(obj, line, num)
-*	unsigned int obj, line, num;
-*
-*		Disable object obj at line thru line+num.
-*
-*	objon(obj, line, num)
-*	unsigned int obj, line, num;
-*
-*		Enable object obj at line thru line+num.
-*
-*
-*	Assumes VSDD is looking at bank 0.
-*	Assumes a screen height of 350 lines.
-*	No error checks are done, so beware.
-* ------------------------------------------------------------------------------
+| ------------------------------------------------------------------------------
+| acctrl.s -- VSDD access table control functions
+| Version 6 -- 1987-04-13 -- D.N. Lynx Crowe
+| (c) Copyright 1987 -- D.N. Lynx Crowe
+| ------------------------------------------------------------------------------
+
+|	objclr(obj)
+|	unsigned int obj;
+
+|		Clear bits in access table for object 'obj'.
+|		Disables object 'obj'.
+
+|	objoff(obj, line, num)
+|	unsigned int obj, line, num;
+
+|		Disable object obj at line thru line+num.
+
+|	objon(obj, line, num)
+|	unsigned int obj, line, num;
+
+|		Enable object obj at line thru line+num.
+
+
+|	Assumes VSDD is looking at bank 0.
+|	Assumes a screen height of 350 lines.
+|	No error checks are done, so beware.
+| ------------------------------------------------------------------------------
 		.text
-*
+
 		.xdef	_objclr,_objoff,_objon
-*
+
 		.xref	_v_actab
-*
-SCSIZE		.equ	350		* Screen height
-*
-OBJ		.equ	8		* Object number argument offset
-LINE		.equ	10		* Beginning line argument offset
-NUM		.equ	12		* Object height argument offset
-* ------------------------------------------------------------------------------
+
+SCSIZE		=	350		| Screen height
+
+OBJ		=	8		| Object number argument offset
+LINE		=	10		| Beginning line argument offset
+NUM		=	12		| Object height argument offset
+| ------------------------------------------------------------------------------
 		.page
-* ------------------------------------------------------------------------------
-*
-*	objclr(obj)
-*	unsigned int obj;
-*
-*		Disables object obj in access table by turning on
-*		its bit in all words of the access table.
-* ------------------------------------------------------------------------------
-_objclr:	link	a6,#0		* Link stack frames
-		move.w	OBJ(a6),d1	* Get object bit number in d1
-		lea	_v_actab,a0	* Get base of object table in a0
-		move.w	#SCSIZE-1,d2	* Put line count in d2
-*
-objclr1:	move.w	(a0),d0		* Get access table word
-		bset.l	d1,d0		* Set the bit
-		move.w	d0,(a0)+	* Update word in access table
-		dbf	d2,objclr1	* Loop until done
-*
-		unlk	a6		* Unlink stack frame
-		rts			* Return to caller
-*
+| ------------------------------------------------------------------------------
+
+|	objclr(obj)
+|	unsigned int obj;
+
+|		Disables object obj in access table by turning on
+|		its bit in all words of the access table.
+| ------------------------------------------------------------------------------
+_objclr:	link	a6,#0		| Link stack frames
+		move.w	OBJ(a6),d1	| Get object bit number in d1
+		lea	_v_actab,a0	| Get base of object table in a0
+		move.w	#SCSIZE-1,d2	| Put line count in d2
+
+objclr1:	move.w	(a0),d0		| Get access table word
+		bset.l	d1,d0		| Set the bit
+		move.w	d0,(a0)+	| Update word in access table
+		dbf	d2,objclr1	| Loop until done
+
+		unlk	a6		| Unlink stack frame
+		rts			| Return to caller
+
 		.page
-* ------------------------------------------------------------------------------
-*	objoff(obj, line, num)
-*	unsigned int obj, line, num;
-*
-*		Turn on access table bits for object 'obj' at
-*		lines 'line' through 'line'+'num'.  Disables the object.
-*		Assumes object bits were set at those locations.
-* ------------------------------------------------------------------------------
-_objoff:	link	a6,#0		* Link stack frames
-		move.w	OBJ(a6),d1	* Get object bit number into d1
-		move.w	LINE(a6),d2	* Get top line number
-		add.w	d2,d2		* Convert to word offset
-		lea	_v_actab,a0	* Get base address of access table
-		move.w	0(a0,d2),d0	* Get top line access word
-		bset.l	d1,d0		* Set object bit
-		move.w	d0,0(a0,d2)	* Update word in access table
-		tst.w	NUM(a6)		* Number of lines = 0 ?
-		beq	objoff1		* Done if so
-*
-		move.w	NUM(a6),d2	* Get object depth
-		add.w	LINE(a6),d2	* Add to top line number
-		cmpi.w	#SCSIZE,d2	* Bottom line >= screen height ?
-		bge	objoff1		* Done if so
-*
-		add.w	d2,d2		* Convert to word offset
-		move.w	0(a0,d2),d0	* Get bottom line access word
-		bset.l	d1,d0		* Set object bit
-		move.w	d0,0(a0,d2)	* Update word in access table
-*
-objoff1:	unlk	a6		* Unlink stack frame
-		rts			* Return to caller
-*
+| ------------------------------------------------------------------------------
+|	objoff(obj, line, num)
+|	unsigned int obj, line, num;
+
+|		Turn on access table bits for object 'obj' at
+|		lines 'line' through 'line'+'num'.  Disables the object.
+|		Assumes object bits were set at those locations.
+| ------------------------------------------------------------------------------
+_objoff:	link	a6,#0		| Link stack frames
+		move.w	OBJ(a6),d1	| Get object bit number into d1
+		move.w	LINE(a6),d2	| Get top line number
+		add.w	d2,d2		| Convert to word offset
+		lea	_v_actab,a0	| Get base address of access table
+		move.w	0(a0,d2),d0	| Get top line access word
+		bset.l	d1,d0		| Set object bit
+		move.w	d0,0(a0,d2)	| Update word in access table
+		tst.w	NUM(a6)		| Number of lines = 0 ?
+		beq	objoff1		| Done if so
+
+		move.w	NUM(a6),d2	| Get object depth
+		add.w	LINE(a6),d2	| Add to top line number
+		cmpi.w	#SCSIZE,d2	| Bottom line >= screen height ?
+		bge	objoff1		| Done if so
+
+		add.w	d2,d2		| Convert to word offset
+		move.w	0(a0,d2),d0	| Get bottom line access word
+		bset.l	d1,d0		| Set object bit
+		move.w	d0,0(a0,d2)	| Update word in access table
+
+objoff1:	unlk	a6		| Unlink stack frame
+		rts			| Return to caller
+
 		.page
-* ------------------------------------------------------------------------------
-*	objon(obj, line, num)
-*	unsigned int obj, line, num;
-*
-*		Turn off access table bits for object 'obj'
-*		at 'line' thru 'line'+'num'.  Enables the object.
-* ------------------------------------------------------------------------------
-_objon:		link	a6,#0		* Link stack frames
-		move.w	OBJ(a6),d1	* Get object bit number into d1
-		move.w	LINE(a6),d2	* Get top line number
-		add.w	d2,d2		* Convert to word offset
-		lea	_v_actab,a0	* Get base address of access table
-		move.w	0(a0,d2),d0	* Get top line access word
-		bclr.l	d1,d0		* Clear object bit
-		move.w	d0,0(a0,d2)	* Update word in access table
-		tst.w	NUM(a6)		* Number of lines = 0 ?
-		beq	objon1		* Done if so
-*
-		move.w	NUM(a6),d2	* Get object depth
-		add.w	LINE(a6),d2	* Add top line number
-		cmpi.w	#SCSIZE,d2	* Bottom line >= screen height ?
-		bge	objon1		* Done if so
-*
-		add.w	d2,d2		* Convert to word offset
-		move.w	0(a0,d2),d0	* Get bottom line access word
-		bclr.l	d1,d0		* Clear object bit
-		move.w	d0,0(a0,d2)	* Update word in access table
-*
-objon1:		unlk	a6		* Unlink stack frame
-		rts			* Return to caller
-*
+| ------------------------------------------------------------------------------
+|	objon(obj, line, num)
+|	unsigned int obj, line, num;
+
+|		Turn off access table bits for object 'obj'
+|		at 'line' thru 'line'+'num'.  Enables the object.
+| ------------------------------------------------------------------------------
+_objon:		link	a6,#0		| Link stack frames
+		move.w	OBJ(a6),d1	| Get object bit number into d1
+		move.w	LINE(a6),d2	| Get top line number
+		add.w	d2,d2		| Convert to word offset
+		lea	_v_actab,a0	| Get base address of access table
+		move.w	0(a0,d2),d0	| Get top line access word
+		bclr.l	d1,d0		| Clear object bit
+		move.w	d0,0(a0,d2)	| Update word in access table
+		tst.w	NUM(a6)		| Number of lines = 0 ?
+		beq	objon1		| Done if so
+
+		move.w	NUM(a6),d2	| Get object depth
+		add.w	LINE(a6),d2	| Add top line number
+		cmpi.w	#SCSIZE,d2	| Bottom line >= screen height ?
+		bge	objon1		| Done if so
+
+		add.w	d2,d2		| Convert to word offset
+		move.w	0(a0,d2),d0	| Get bottom line access word
+		bclr.l	d1,d0		| Clear object bit
+		move.w	d0,0(a0,d2)	| Update word in access table
+
+objon1:		unlk	a6		| Unlink stack frame
+		rts			| Return to caller
+
 		.end
Index: vlib/glcplot.s
===================================================================
--- vlib/glcplot.s	(revision f40a3096572fd1b0696a7f7c717464e68652e655)
+++ vlib/glcplot.s	(revision 283e7a64dc74f7abe8a66f643e188bbe4f250aa4)
@@ -1,68 +1,68 @@
-* ------------------------------------------------------------------------------
-* glcplot.s -- plot a pixel on the LCD display
-* Version 2 -- 1987-04-23 -- D.N. Lynx Crowe
-* (c) Copyright 1987 -- D.N. Lynx Crowe
-*
-*	GLCplot(x, y, val)
-*	unsigned x, y, val);
-*
-*		Plot a pixel at ('x', 'y') using lcdbase as the plane address
-*		in GLC RAM.  If 'val' is zero, the pixel is cleared,
-*		otherwise the pixel is cleared.  No error checking is done.
-*		Limits:  0 LE x LE 511,  0 LE y LE 63.
-* ------------------------------------------------------------------------------
+| ------------------------------------------------------------------------------
+| glcplot.s -- plot a pixel on the LCD display
+| Version 2 -- 1987-04-23 -- D.N. Lynx Crowe
+| (c) Copyright 1987 -- D.N. Lynx Crowe
+
+|	GLCplot(x, y, val)
+|	unsigned x, y, val);
+
+|		Plot a pixel at ('x', 'y') using lcdbase as the plane address
+|		in GLC RAM.  If 'val' is zero, the pixel is cleared,
+|		otherwise the pixel is cleared.  No error checking is done.
+|		Limits:  0 LE x LE 511,  0 LE y LE 63.
+| ------------------------------------------------------------------------------
 		.text
-*
+
 		.xdef	_GLCplot
 		.xref	_lcd_a0,_lcd_a1,_lcdbase
-*
-XLOC		.equ	8			* 'x' parameter offset
-YLOC		.equ	10			* 'y' parameter offset
-VAL		.equ	12			* 'val' parameter offset
-*
-G_CRSWR		.equ	$46			* GLC set cursor command
-G_MWRITE	.equ	$42			* GLC write command
-G_MREAD		.equ	$43			* GLC read command
-*
+
+XLOC		=	8			| 'x' parameter offset
+YLOC		=	10			| 'y' parameter offset
+VAL		=	12			| 'val' parameter offset
+
+G_CRSWR		=	0x46			| GLC set cursor command
+G_MWRITE	=	0x42			| GLC write command
+G_MREAD		=	0x43			| GLC read command
+
 		.page
-*
-_GLCplot:	link	a6,#0			* Link stack frames
-		moveq	#63,d0			* d0 = (63-y) * 85
-		sub.w	YLOC(a6),d0		* ...
-		mulu	#85,d0			* ...
-		clr.l	d1			* d1 = x/6
-		move.w	XLOC(a6),d1		* ...
-		divu	#6,d1			* ...
-		add.w	d1,d0			* d0 = (63-y)*85 + (x/6)
-		swap	d1			* d2 = 7 - (x%6) % 8
-		moveq	#7,d2			* ...
-		sub.w	d1,d2			* ...
-		andi.w	#7,d2			* ...
-		lsr.w	#3,d1			* d1 = (x%6) / 8
-		add.w	d1,d0			* d0 = cursor address
-		add.w	_lcdbase,d0		* ...
-		move.w	d0,d1			* d1 = cursor address, too
-		move.b	#G_CRSWR,_lcd_a1	* Send cursor address to GLC
-		move.b	d0,_lcd_a0		* ...
-		lsr.w	#8,d0			* ...
-		move.b	d0,_lcd_a0		* ...
-		move.b	#G_MREAD,_lcd_a1	* Read old pixel byte
-		move.b	_lcd_a1,d0		* ... into d0
-		tst.w	VAL(a6)			* Check val for zero
-		beq	glcplt1			* Jump if val EQ 0
-*
-		bset	d2,d0			* Set the pixel to 1
-		bra	glcplt2			* Go write pixel to GLC
-*
-glcplt1:	bclr	d2,d0			* Clear the pixel to 0
-*
-glcplt2:	move.b	#G_CRSWR,_lcd_a1	* Send cursor address to GLC
-		move.b	d1,_lcd_a0		* ...
-		lsr.w	#8,d1			* ...
-		move.b	d1,_lcd_a0		* ...
-		move.b	#G_MWRITE,_lcd_a1	* Setup GLC to write pixel
-		move.b	d0,_lcd_a0		* Write pixel
-		unlk	a6			* Unlink stack frames
-		rts				* Return to caller
-*
+
+_GLCplot:	link	a6,#0			| Link stack frames
+		moveq	#63,d0			| d0 = (63-y) | 85
+		sub.w	YLOC(a6),d0		| ...
+		mulu	#85,d0			| ...
+		clr.l	d1			| d1 = x/6
+		move.w	XLOC(a6),d1		| ...
+		divu	#6,d1			| ...
+		add.w	d1,d0			| d0 = (63-y)|85 + (x/6)
+		swap	d1			| d2 = 7 - (x%6) % 8
+		moveq	#7,d2			| ...
+		sub.w	d1,d2			| ...
+		andi.w	#7,d2			| ...
+		lsr.w	#3,d1			| d1 = (x%6) / 8
+		add.w	d1,d0			| d0 = cursor address
+		add.w	_lcdbase,d0		| ...
+		move.w	d0,d1			| d1 = cursor address, too
+		move.b	#G_CRSWR,_lcd_a1	| Send cursor address to GLC
+		move.b	d0,_lcd_a0		| ...
+		lsr.w	#8,d0			| ...
+		move.b	d0,_lcd_a0		| ...
+		move.b	#G_MREAD,_lcd_a1	| Read old pixel byte
+		move.b	_lcd_a1,d0		| ... into d0
+		tst.w	VAL(a6)			| Check val for zero
+		beq	glcplt1			| Jump if val EQ 0
+
+		bset	d2,d0			| Set the pixel to 1
+		bra	glcplt2			| Go write pixel to GLC
+
+glcplt1:	bclr	d2,d0			| Clear the pixel to 0
+
+glcplt2:	move.b	#G_CRSWR,_lcd_a1	| Send cursor address to GLC
+		move.b	d1,_lcd_a0		| ...
+		lsr.w	#8,d1			| ...
+		move.b	d1,_lcd_a0		| ...
+		move.b	#G_MWRITE,_lcd_a1	| Setup GLC to write pixel
+		move.b	d0,_lcd_a0		| Write pixel
+		unlk	a6			| Unlink stack frames
+		rts				| Return to caller
+
 		.end
Index: vlib/tsplot4.s
===================================================================
--- vlib/tsplot4.s	(revision f40a3096572fd1b0696a7f7c717464e68652e655)
+++ vlib/tsplot4.s	(revision 283e7a64dc74f7abe8a66f643e188bbe4f250aa4)
@@ -1,154 +1,154 @@
-* ------------------------------------------------------------------------------
-* tsplot4.s -- output characters to a 4-bit / pixel graphics window
-*    with variable vertical pitch
-* Version 1 -- 1987-08-04 -- D.N. Lynx Crowe
-* (c) Copyright 1987 -- D.N. Lynx Crowe
-* ------------------------------------------------------------------------------
-*
-*	tsplot4(obase, nw, fg, row, col, str. pitch)
-*	int *obase, nw, fg, row, col, pitch;
-*	char *str;
-*
-*		Outputs characters from the string at 'str' to an 'nw'
-*		character wide 4-bit per pixel graphics window at 'obase'
-*		at ('row','col'), using 'fg' as the foreground color.
-*		Uses cgtable[][256] as the VSDD formatted character
-*		generator table.  Assumes 12 bit high characters in the
-*		cgtable.  Uses 'pitch' as the vertical spacing between
-*		character rows.  No error checks are done.
-*		The string must fit the output area (no overlaps, single line).
-*
-* ------------------------------------------------------------------------------
+| ------------------------------------------------------------------------------
+| tsplot4.s -- output characters to a 4-bit / pixel graphics window
+|    with variable vertical pitch
+| Version 1 -- 1987-08-04 -- D.N. Lynx Crowe
+| (c) Copyright 1987 -- D.N. Lynx Crowe
+| ------------------------------------------------------------------------------
+
+|	tsplot4(obase, nw, fg, row, col, str. pitch)
+|	int |obase, nw, fg, row, col, pitch;
+|	char |str;
+
+|		Outputs characters from the string at 'str' to an 'nw'
+|		character wide 4-bit per pixel graphics window at 'obase'
+|		at ('row','col'), using 'fg' as the foreground color.
+|		Uses cgtable[][256] as the VSDD formatted character
+|		generator table.  Assumes 12 bit high characters in the
+|		cgtable.  Uses 'pitch' as the vertical spacing between
+|		character rows.  No error checks are done.
+|		The string must fit the output area (no overlaps, single line).
+
+| ------------------------------------------------------------------------------
 		.text
-*
+
 		.xdef	_tsplot4
-*
+
 		.xref	_cgtable
-*
-* Argument offsets from a6:
-*
-OBASE		.equ	8		* LONG - Output area base address
-NW		.equ	12		* WORD - Character width of output area
-FG		.equ	14		* WORD - Foreground color
-ROW		.equ	16		* WORD - Row
-COL		.equ	18		* WORD - Column
-STR		.equ	20		* LONG - String base address
-PITCH		.equ	24		* WORD - Vertical spacing between rows
-*
-* Program constant definitions:
-*
-HPIX		.equ	8		* Character width in pixels
-VPIX		.equ	12		* Character height in pixels
-HCW		.equ	4		* Horizontal character width (bytes)
-PSHIFT		.equ	12		* Pixel shift into MS bits
-HSHIFT		.equ	4		* Pixel right shift
-*
+
+| Argument offsets from a6:
+
+OBASE		=	8		| LONG - Output area base address
+NW		=	12		| WORD - Character width of output area
+FG		=	14		| WORD - Foreground color
+ROW		=	16		| WORD - Row
+COL		=	18		| WORD - Column
+STR		=	20		| LONG - String base address
+PITCH		=	24		| WORD - Vertical spacing between rows
+
+| Program constant definitions:
+
+HPIX		=	8		| Character width in pixels
+VPIX		=	12		| Character height in pixels
+HCW		=	4		| Horizontal character width (bytes)
+PSHIFT		=	12		| Pixel shift into MS bits
+HSHIFT		=	4		| Pixel right shift
+
 		.page
-*
-* Register usage:
-*
-*	d0	output word and scratch
-*	d1	CG word and scratch
-*	d2	pixel counter
-*
-*	d3	foreground color (in the 4 ms bits)
-*	d4	background color (in the 4 ms bits)
-*	d5	width of the area in bytes
-*	d6	scan line counter
-*
-*	a0	CG table pointer
-*	a1	output area scan line pointer
-*	a2	input string character pointer
-*
-*	a3	output area character base pointer
-*
-*	a6	frame pointer
-*	a7	stack pointer
-*
+
+| Register usage:
+
+|	d0	output word and scratch
+|	d1	CG word and scratch
+|	d2	pixel counter
+
+|	d3	foreground color (in the 4 ms bits)
+|	d4	background color (in the 4 ms bits)
+|	d5	width of the area in bytes
+|	d6	scan line counter
+
+|	a0	CG table pointer
+|	a1	output area scan line pointer
+|	a2	input string character pointer
+
+|	a3	output area character base pointer
+
+|	a6	frame pointer
+|	a7	stack pointer
+
 		.page
-*
-_tsplot4:	link	a6,#0		* Link stack frames
-		movem.l	d3-d6/a3,-(a7)	* Save registers we use
-		move.w	#PSHIFT,d1	* Set shift constant
-		move.w	FG(a6),d3	* Setup foreground color
-		lsl.w	d1,d3		* ... in ms 4 bits of d3.W
-		move.w	NW(a6),d5	* Get line width in d5.W
-		lsl.w	#2,d5		* Multiply width by 4 for offset
-		move.w	ROW(a6),d0	* Calculate output address
-		move.w	PITCH(a6),d1	* ... PITCH
-		mulu	d1,d0		* ... * ROW
-		add.w	#VPIX-1,d0	* ... + VPIX-1
-		mulu	d5,d0		* ... * NW
-		clr.l	d1		* ...
-		move.w	COL(a6),d1	* ... + 
-		lsl.w	#2,d1		* ... COL * 4
-		add.l	d1,d0		* ...
-		add.l	OBASE(a6),d0	* ... + OBASE
-		movea.l	d0,a3		* Leave output address in a3
-		movea.l	STR(a6),a2	* Put string address in a2
-*
-cgl0:		clr.l	d0		* Clear out upper bits of d0
-		move.b	(a2)+,d0	* Get next character
-		beq	cgl5		* Done if character EQ 0
-*
-		movea.l	a3,a1		* Establish output pointer in a1
-		adda.l	#HCW,a3		* Update output pointer for next char.
-		lea	_cgtable,a0	* Establish CG pointer in a0
-		lsl.w	#1,d0		* ... 2 * character
-		adda.w	d0,a0		* ... + _cgtable address
-		move.w	#VPIX-1,d6	* Set scan line counter in d6
-*
+
+_tsplot4:	link	a6,#0		| Link stack frames
+		movem.l	d3-d6/a3,-(a7)	| Save registers we use
+		move.w	#PSHIFT,d1	| Set shift constant
+		move.w	FG(a6),d3	| Setup foreground color
+		lsl.w	d1,d3		| ... in ms 4 bits of d3.W
+		move.w	NW(a6),d5	| Get line width in d5.W
+		lsl.w	#2,d5		| Multiply width by 4 for offset
+		move.w	ROW(a6),d0	| Calculate output address
+		move.w	PITCH(a6),d1	| ... PITCH
+		mulu	d1,d0		| ... | ROW
+		add.w	#VPIX-1,d0	| ... + VPIX-1
+		mulu	d5,d0		| ... | NW
+		clr.l	d1		| ...
+		move.w	COL(a6),d1	| ... +
+		lsl.w	#2,d1		| ... COL | 4
+		add.l	d1,d0		| ...
+		add.l	OBASE(a6),d0	| ... + OBASE
+		movea.l	d0,a3		| Leave output address in a3
+		movea.l	STR(a6),a2	| Put string address in a2
+
+cgl0:		clr.l	d0		| Clear out upper bits of d0
+		move.b	(a2)+,d0	| Get next character
+		beq	cgl5		| Done if character EQ 0
+
+		movea.l	a3,a1		| Establish output pointer in a1
+		adda.l	#HCW,a3		| Update output pointer for next char.
+		lea	_cgtable,a0	| Establish CG pointer in a0
+		lsl.w	#1,d0		| ... 2 | character
+		adda.w	d0,a0		| ... + _cgtable address
+		move.w	#VPIX-1,d6	| Set scan line counter in d6
+
 		.page
-cgl1:		move.w	(a0),d1		* Get character generator word in d1
-		move.w	#(HPIX/2)-1,d2	* Set pixel counter in d2
-		clr.l	d4		* Get old output word as background
-		move.w	(a1),d4		* ...
-		swap	d4		* ...
-*
-cgl2:		lsr.w	#HSHIFT,d0	* Shift output word right 1 pixel
-		lsr.l	#HSHIFT,d4	* Shift background word 1 pixel
-		andi.l	#$FFFFF000,d4	* Mask for upper 4 bits of d4.W
-		btst.l	#0,d1		* Check CG word ls bit
-		beq	cgl3		* Set background color if bit EQ 0
-*
-		or.w	d3,d0		* OR foreground color into output word
-		bra	cgl4		* Go update CG word
-*
-cgl3:		or.w	d4,d0		* OR background color into output word
-*
-cgl4:		lsr.w	#1,d1		* Shift CG word right 1 pixel
-		dbf	d2,cgl2		* Loop for first 4 pixels
-*
-		move.w	d0,(a1)+	* Store first output word in scan line
-		move.w	#(HPIX/2)-1,d2	* Set pixel counter in d2
-		clr.l	d4		* Get old output word as background
-		move.w	(a1),d4		* ...
-		swap	d4		* ...
-*
-cgl2a:		lsr.w	#HSHIFT,d0	* Shift output word right 1 pixel
-		lsr.l	#HSHIFT,d4	* Shift background word 1 pixel
-		andi.l	#$FFFFF000,d4	* Mask for upper bits of d4.W
-		btst.l	#0,d1		* Check CG word ls bit
-		beq	cgl3a		* Set background color if bit EQ 0
-*
-		or.w	d3,d0		* OR foreground color into output word
-		bra	cgl4a		* Go update CG word
-*
-cgl3a:		or.w	d4,d0		* OR background color into output word
-*
-cgl4a:		lsr.w	#1,d1		* Shift CG word right 1 pixel
-		dbf	d2,cgl2a	* Loop for last 4 pixels
-*
-		move.w	d0,(a1)		* Store second output word in scan line
-		suba.w	d5,a1		* Update output pointer
-		suba.w	#2,a1		* ...
-		adda.l	#512,a0		* Update CG pointer for next scan line
-		dbf	d6,cgl1		* Loop for all scan lines
-*
-		bra	cgl0		* Loop for next character
-*
-cgl5:		movem.l	(a7)+,d3-d6/a3	* Restore registers
-		unlk	a6		* Unlink stack frames
-		rts			* Return to caller
-*
+cgl1:		move.w	(a0),d1		| Get character generator word in d1
+		move.w	#(HPIX/2)-1,d2	| Set pixel counter in d2
+		clr.l	d4		| Get old output word as background
+		move.w	(a1),d4		| ...
+		swap	d4		| ...
+
+cgl2:		lsr.w	#HSHIFT,d0	| Shift output word right 1 pixel
+		lsr.l	#HSHIFT,d4	| Shift background word 1 pixel
+		andi.l	#0xFFFFF000,d4	| Mask for upper 4 bits of d4.W
+		btst.l	#0,d1		| Check CG word ls bit
+		beq	cgl3		| Set background color if bit EQ 0
+
+		or.w	d3,d0		| OR foreground color into output word
+		bra	cgl4		| Go update CG word
+
+cgl3:		or.w	d4,d0		| OR background color into output word
+
+cgl4:		lsr.w	#1,d1		| Shift CG word right 1 pixel
+		dbf	d2,cgl2		| Loop for first 4 pixels
+
+		move.w	d0,(a1)+	| Store first output word in scan line
+		move.w	#(HPIX/2)-1,d2	| Set pixel counter in d2
+		clr.l	d4		| Get old output word as background
+		move.w	(a1),d4		| ...
+		swap	d4		| ...
+
+cgl2a:		lsr.w	#HSHIFT,d0	| Shift output word right 1 pixel
+		lsr.l	#HSHIFT,d4	| Shift background word 1 pixel
+		andi.l	#0xFFFFF000,d4	| Mask for upper bits of d4.W
+		btst.l	#0,d1		| Check CG word ls bit
+		beq	cgl3a		| Set background color if bit EQ 0
+
+		or.w	d3,d0		| OR foreground color into output word
+		bra	cgl4a		| Go update CG word
+
+cgl3a:		or.w	d4,d0		| OR background color into output word
+
+cgl4a:		lsr.w	#1,d1		| Shift CG word right 1 pixel
+		dbf	d2,cgl2a	| Loop for last 4 pixels
+
+		move.w	d0,(a1)		| Store second output word in scan line
+		suba.w	d5,a1		| Update output pointer
+		suba.w	#2,a1		| ...
+		adda.l	#512,a0		| Update CG pointer for next scan line
+		dbf	d6,cgl1		| Loop for all scan lines
+
+		bra	cgl0		| Loop for next character
+
+cgl5:		movem.l	(a7)+,d3-d6/a3	| Restore registers
+		unlk	a6		| Unlink stack frames
+		rts			| Return to caller
+
 		.end
Index: vlib/vbank.s
===================================================================
--- vlib/vbank.s	(revision f40a3096572fd1b0696a7f7c717464e68652e655)
+++ vlib/vbank.s	(revision 283e7a64dc74f7abe8a66f643e188bbe4f250aa4)
@@ -1,112 +1,112 @@
-* ------------------------------------------------------------------------------
-* vbank.s -- VSDD bank switching control functions
-* Version 3 -- 1989-12-19 -- D.N. Lynx Crowe
-*
-*	unsigned
-*	vbank(b)
-*	unsigned b;
-*
-*		Set VSDD Data Segment bank to b.
-*		Return old bank select value.
-*
-*
-*	vfwait()
-*
-*		Wait for a FRAMESTOP update to transpire.
-* ------------------------------------------------------------------------------
+| ------------------------------------------------------------------------------
+| vbank.s -- VSDD bank switching control functions
+| Version 3 -- 1989-12-19 -- D.N. Lynx Crowe
+
+|	unsigned
+|	vbank(b)
+|	unsigned b;
+
+|		Set VSDD Data Segment bank to b.
+|		Return old bank select value.
+
+
+|	vfwait()
+
+|		Wait for a FRAMESTOP update to transpire.
+| ------------------------------------------------------------------------------
 		.xdef	_vbank
 		.xdef	_vfwait
-*
+
 		.xref	_v_regs
-*
+
 		.text
-*
-B		.equ	8
-*
-OLDB		.equ	d6
-NEWB		.equ	d7
-*
-VSDD_R5		.equ	10
-VSDD_R11	.equ	22
-*
-VT_BASE		.equ	128		* word offset of VSDD Access Table
-*
-VT_1		.equ	VT_BASE+300	* high time
-VT_2		.equ	VT_BASE+2	* low time
-*
+
+B		=	8
+
+OLDB		=	d6
+NEWB		=	d7
+
+VSDD_R5		=	10
+VSDD_R11	=	22
+
+VT_BASE		=	128		| word offset of VSDD Access Table
+
+VT_1		=	VT_BASE+300	| high time
+VT_2		=	VT_BASE+2	| low time
+
 		.page
-* ------------------------------------------------------------------------------
-*	vbank(b) -- change VSDD Data Segment bank to b.  Return old bank.
-*	Assumes a 128K byte window, sets S15..S11 to zero.
-* ------------------------------------------------------------------------------
-*
+| ------------------------------------------------------------------------------
+|	vbank(b) -- change VSDD Data Segment bank to b.  Return old bank.
+|	Assumes a 128K byte window, sets S15..S11 to zero.
+| ------------------------------------------------------------------------------
 
-_vbank:		link	a6,#0			* link stack frames
-		movem.l	d5-d7,-(sp)		* preserve registers
-		move.w	_v_regs+VSDD_R5,OLDB	* get v_regs[5]
-		lsr.w	#6,OLDB			* extract BS bits
-		move.w	OLDB,d0			* ...
-		andi.w	#2,d0			* ...
-		move.w	OLDB,d1			* ...
-		lsr.w	#2,d1			* ...
-		andi.w	#1,d1			* ...
-		or.w	d1,d0			* ...
-		move.w	d0,OLDB			* ...
-		cmp.w	B(a6),OLDB		* see if they're what we want
-		bne	L2			* jump if not
-*
-		move.w	B(a6),d0		* setup to return b
+
+_vbank:		link	a6,#0			| link stack frames
+		movem.l	d5-d7,-(sp)		| preserve registers
+		move.w	_v_regs+VSDD_R5,OLDB	| get v_regs[5]
+		lsr.w	#6,OLDB			| extract BS bits
+		move.w	OLDB,d0			| ...
+		andi.w	#2,d0			| ...
+		move.w	OLDB,d1			| ...
+		lsr.w	#2,d1			| ...
+		andi.w	#1,d1			| ...
+		or.w	d1,d0			| ...
+		move.w	d0,OLDB			| ...
+		cmp.w	B(a6),OLDB		| see if they're what we want
+		bne	L2			| jump if not
+
+		move.w	B(a6),d0		| setup to return b
 		bra	L1
-*
-L2:		move.w	B(a6),NEWB		* get bank bits from b
-		lsl.w	#6,NEWB			* shift bits from b into BS bits
-		move.w	NEWB,d0			* ...
-		andi.w	#128,d0			* ...
-		lsl.w	#2,NEWB			* ...
-		andi.w	#256,NEWB		* ...
-		or.w	NEWB,d0			* ...
-		move.w	d0,_v_regs+VSDD_R5	* set v_regs[5] with new BS bits
-*
-vw1b:		cmp.w	#VT_1,_v_regs+VSDD_R11	* wait for FRAMESTOP
-		bcc	vw1b			* ...
-*
-vw2b:		cmp.w	#VT_1,_v_regs+VSDD_R11	* ...
-		bcs	vw2b			* ...
-*
-vw3b:		cmp.w	#VT_1,_v_regs+VSDD_R11	* ...
-		bcc	vw3b			* ...
-*
-vw4b:		cmp.w	#VT_2,_v_regs+VSDD_R11	* ...
-		bcs	vw4b			* ...
-*
-		move.w	OLDB,d0			* setup to return OLDB
-*
-L1:		tst.l	(sp)+			* fixup stack
-		movem.l	(sp)+,OLDB-NEWB		* restore registers
-		unlk	a6			* unlink stack frames
-		rts				* return to caller
-*
+
+L2:		move.w	B(a6),NEWB		| get bank bits from b
+		lsl.w	#6,NEWB			| shift bits from b into BS bits
+		move.w	NEWB,d0			| ...
+		andi.w	#128,d0			| ...
+		lsl.w	#2,NEWB			| ...
+		andi.w	#256,NEWB		| ...
+		or.w	NEWB,d0			| ...
+		move.w	d0,_v_regs+VSDD_R5	| set v_regs[5] with new BS bits
+
+vw1b:		cmp.w	#VT_1,_v_regs+VSDD_R11	| wait for FRAMESTOP
+		bcc	vw1b			| ...
+
+vw2b:		cmp.w	#VT_1,_v_regs+VSDD_R11	| ...
+		bcs	vw2b			| ...
+
+vw3b:		cmp.w	#VT_1,_v_regs+VSDD_R11	| ...
+		bcc	vw3b			| ...
+
+vw4b:		cmp.w	#VT_2,_v_regs+VSDD_R11	| ...
+		bcs	vw4b			| ...
+
+		move.w	OLDB,d0			| setup to return OLDB
+
+L1:		tst.l	(sp)+			| fixup stack
+		movem.l	(sp)+,OLDB-NEWB		| restore registers
+		unlk	a6			| unlink stack frames
+		rts				| return to caller
+
 		.page
-*
-* ------------------------------------------------------------------------------
-*	vfwait() -- Wait for a FRAMESTOP update to transpire.
-* ------------------------------------------------------------------------------
-*
-_vfwait:	link	a6,#0			* link stack frames
-*
-vw1a:		cmp.w	#VT_1,_v_regs+VSDD_R11	* wait for FRAMESTOP
-		bcc	vw1a			* ...
-*
-vw2a:		cmp.w	#VT_1,_v_regs+VSDD_R11	* ...
-		bcs	vw2a			* ...
-*
-vw3a:		cmp.w	#VT_1,_v_regs+VSDD_R11	* ...
-		bcc	vw3a			* ...
-*
-vw4a:		cmp.w	#VT_2,_v_regs+VSDD_R11	* ...
-		bcs	vw4a			* ...
-*
-		unlk	a6			* unlink stack frames
-		rts				* return to caller
-*
+
+| ------------------------------------------------------------------------------
+|	vfwait() -- Wait for a FRAMESTOP update to transpire.
+| ------------------------------------------------------------------------------
+
+_vfwait:	link	a6,#0			| link stack frames
+
+vw1a:		cmp.w	#VT_1,_v_regs+VSDD_R11	| wait for FRAMESTOP
+		bcc	vw1a			| ...
+
+vw2a:		cmp.w	#VT_1,_v_regs+VSDD_R11	| ...
+		bcs	vw2a			| ...
+
+vw3a:		cmp.w	#VT_1,_v_regs+VSDD_R11	| ...
+		bcc	vw3a			| ...
+
+vw4a:		cmp.w	#VT_2,_v_regs+VSDD_R11	| ...
+		bcs	vw4a			| ...
+
+		unlk	a6			| unlink stack frames
+		rts				| return to caller
+
 		.end
Index: vlib/vclrav.s
===================================================================
--- vlib/vclrav.s	(revision f40a3096572fd1b0696a7f7c717464e68652e655)
+++ vlib/vclrav.s	(revision 283e7a64dc74f7abe8a66f643e188bbe4f250aa4)
@@ -1,51 +1,51 @@
-* ------------------------------------------------------------------------------
-* vclrav.s -- clear a character's attributes in video RAM
-* Version 1 -- 1988-10-11 -- D.N. Lynx Crowe
-* (c) Copyright 1988 -- D.N. Lynx Crowe
-* ------------------------------------------------------------------------------
-*
-*	vclrav(adr, row, col, atr, len)
-*	unsigned int *adr, row, col, atr, len;
-*
-*		Clears attribute 'atr' at ('row', 'col') in the
-*		full attribute text object at 'adr'
-*		using a line length of 'len'.
-* ------------------------------------------------------------------------------
+| ------------------------------------------------------------------------------
+| vclrav.s -- clear a character's attributes in video RAM
+| Version 1 -- 1988-10-11 -- D.N. Lynx Crowe
+| (c) Copyright 1988 -- D.N. Lynx Crowe
+| ------------------------------------------------------------------------------
+
+|	vclrav(adr, row, col, atr, len)
+|	unsigned int |adr, row, col, atr, len;
+
+|		Clears attribute 'atr' at ('row', 'col') in the
+|		full attribute text object at 'adr'
+|		using a line length of 'len'.
+| ------------------------------------------------------------------------------
 		.text
-*
+
 		.xdef	_vclrav
-*
-P_ADR		.equ	8
-P_ROW		.equ	12
-P_COL		.equ	14
-P_ATR		.equ	16
-P_LEN		.equ	18
-*
-_vclrav:	link	a6,#0		* Link stack frame pointer
-		move.w	P_ROW(a6),d0	* Get row
-		mulu	P_LEN(a6),d0	* Multiply by len
-		clr.l	d1		* Clear out d1
-		move.w	P_COL(a6),d1	* Get col
-		add.l	d1,d0		* Add col into d0 to get char. #
-		move.l	d0,d1		* Develop cw = (cn/2)*6 in d1
-		andi.l	#$FFFFFFFE,d1	* ...
-		move.l	d1,d2		* ...
-		add.l	d1,d1		* ...
-		add.l	d2,d1		* ...
-		add.l	P_ADR(a6),d1	* Add sbase to cw
-		movea.l	d1,a0		* a0 points at the word with the char.
-		btst.l	#0,d0		* Odd char. location ?
-		bne	vclrav1		* Jump if so
-*
-		addq.l	#2,a0		* Point at the attribute word
-		bra	vclravx		* Go set attribute
-*
-vclrav1:	addq.l	#4,a0		* Point at the attribute word
-*
-vclravx:	move.w	P_ATR(a6),d0	* Get attribute mask
-		not.w	d0		* Complement the mask
-		and.w	d0,(a0)		* Clear attributes in video RAM
-		unlk	a6		* Unlink the stack frame
-		rts			* Return to caller
-*
+
+P_ADR		=	8
+P_ROW		=	12
+P_COL		=	14
+P_ATR		=	16
+P_LEN		=	18
+
+_vclrav:	link	a6,#0		| Link stack frame pointer
+		move.w	P_ROW(a6),d0	| Get row
+		mulu	P_LEN(a6),d0	| Multiply by len
+		clr.l	d1		| Clear out d1
+		move.w	P_COL(a6),d1	| Get col
+		add.l	d1,d0		| Add col into d0 to get char. #
+		move.l	d0,d1		| Develop cw = (cn/2)|6 in d1
+		andi.l	#0xFFFFFFFE,d1	| ...
+		move.l	d1,d2		| ...
+		add.l	d1,d1		| ...
+		add.l	d2,d1		| ...
+		add.l	P_ADR(a6),d1	| Add sbase to cw
+		movea.l	d1,a0		| a0 points at the word with the char.
+		btst.l	#0,d0		| Odd char. location ?
+		bne	vclrav1		| Jump if so
+
+		addq.l	#2,a0		| Point at the attribute word
+		bra	vclravx		| Go set attribute
+
+vclrav1:	addq.l	#4,a0		| Point at the attribute word
+
+vclravx:	move.w	P_ATR(a6),d0	| Get attribute mask
+		not.w	d0		| Complement the mask
+		and.w	d0,(a0)		| Clear attributes in video RAM
+		unlk	a6		| Unlink the stack frame
+		rts			| Return to caller
+
 		.end
Index: vlib/vcputs.s
===================================================================
--- vlib/vcputs.s	(revision f40a3096572fd1b0696a7f7c717464e68652e655)
+++ vlib/vcputs.s	(revision 283e7a64dc74f7abe8a66f643e188bbe4f250aa4)
@@ -1,140 +1,140 @@
-* ------------------------------------------------------------------------------
-* vcputs.s -- output a character string to a 4-bit per pixel graphics window
-* Version 3 -- 1987-07-31 -- D.N. Lynx Crowe
-* (c) Copyright 1987 -- D.N. Lynx Crowe
-* ------------------------------------------------------------------------------
-*
-*	vcputs(obase, nw, fg, bg, row, col, str)
-*	int *obase, nw, fg, bg, row, col;
-*	char *str;
-*
-*		Outputs characters from the string at 'str' to an 'nw'
-*		character wide 4-bit per pixel graphics window at 'obase'
-*		at ('row','col'), using 'fg' as the foreground color, and
-*		'bg' as the background color.  Uses cgtable[][256] as the
-*		VSDD formatted character generator table.
-*		No error checks are done.
-*
-* ------------------------------------------------------------------------------
+| ------------------------------------------------------------------------------
+| vcputs.s -- output a character string to a 4-bit per pixel graphics window
+| Version 3 -- 1987-07-31 -- D.N. Lynx Crowe
+| (c) Copyright 1987 -- D.N. Lynx Crowe
+| ------------------------------------------------------------------------------
+
+|	vcputs(obase, nw, fg, bg, row, col, str)
+|	int |obase, nw, fg, bg, row, col;
+|	char |str;
+
+|		Outputs characters from the string at 'str' to an 'nw'
+|		character wide 4-bit per pixel graphics window at 'obase'
+|		at ('row','col'), using 'fg' as the foreground color, and
+|		'bg' as the background color.  Uses cgtable[][256] as the
+|		VSDD formatted character generator table.
+|		No error checks are done.
+
+| ------------------------------------------------------------------------------
 		.text
-*
+
 		.xdef	_vcputs
-*
+
 		.xref	_cgtable
-*
-* Argument offsets from a6:
-*
-OBASE		.equ	8		* Output area base address
-NW		.equ	12		* Character width of output area
-FG		.equ	14		* Foreground color
-BG		.equ	16		* Background color
-ROW		.equ	18		* Row
-COL		.equ	20		* Column
-STR		.equ	22		* String base address
-*
-* Program constant definitions:
-*
-HPIX		.equ	8		* Character width in pixels
-VPIX		.equ	12		* Character height in pixels
-HCW		.equ	4		* Horizontal character width (bytes)
-PSHIFT		.equ	12		* Pixel shift into MS bits
-HSHIFT		.equ	4		* Pixel right shift
-*
+
+| Argument offsets from a6:
+
+OBASE		=	8		| Output area base address
+NW		=	12		| Character width of output area
+FG		=	14		| Foreground color
+BG		=	16		| Background color
+ROW		=	18		| Row
+COL		=	20		| Column
+STR		=	22		| String base address
+
+| Program constant definitions:
+
+HPIX		=	8		| Character width in pixels
+VPIX		=	12		| Character height in pixels
+HCW		=	4		| Horizontal character width (bytes)
+PSHIFT		=	12		| Pixel shift into MS bits
+HSHIFT		=	4		| Pixel right shift
+
 		.page
-*
-* Register usage:
-*
-*	d0	output word and scratch
-*	d1	CG word and scratch
-*	d2	pixel counter
-*
-*	d3	foreground color (in the 4 ms bits)
-*	d4	background color (in the 4 ms bits)
-*	d5	width of the area in bytes
-*	d6	scan line counter
-*
-*	a0	CG table pointer
-*	a1	output area scan line pointer
-*	a2	input string character pointer
-*
-*	a3	output area character base pointer
-*
+
+| Register usage:
+
+|	d0	output word and scratch
+|	d1	CG word and scratch
+|	d2	pixel counter
+
+|	d3	foreground color (in the 4 ms bits)
+|	d4	background color (in the 4 ms bits)
+|	d5	width of the area in bytes
+|	d6	scan line counter
+
+|	a0	CG table pointer
+|	a1	output area scan line pointer
+|	a2	input string character pointer
+
+|	a3	output area character base pointer
+
 		.page
-*
-_vcputs:	link	a6,#0		* Link stack frames
-		movem.l	d3-d6/a3,-(a7)	* Save registers we use
-		move.w	#PSHIFT,d1	* Set shift constant
-		move.w	FG(a6),d3	* Setup foreground color
-		lsl.w	d1,d3		* ... in ms 4 bits of d3.W
-		move.w	BG(a6),d4	* Setup background color
-		lsl.w	d1,d4		* ... in ms 4 bits of d4.W
-		move.w	NW(a6),d5	* Get line width in d5.W
-		lsl.w	#2,d5		* Multiply width by 4 for offset
-		move.w	ROW(a6),d0	* Calculate output address
-		move.w	#VPIX,d1	* ... VPIX
-		mulu	d1,d0		* ... * ROW
-		add.w	#VPIX-1,d0	* ... + VPIX-1
-		mulu	d5,d0		* ... * NW
-		clr.l	d1		* ...
-		move.w	COL(a6),d1	* ... + 
-		lsl.w	#2,d1		* ... COL * 4
-		add.l	d1,d0		* ...
-		add.l	OBASE(a6),d0	* ... + OBASE
-		movea.l	d0,a3		* Leave output address in a3
-		movea.l	STR(a6),a2	* Put string address in a2
-*
-cgl0:		clr.l	d0		* Clear out upper bits of d0
-		move.b	(a2)+,d0	* Get next character
-		beq	cgl5		* Done if character EQ 0
-*
-		movea.l	a3,a1		* Establish output pointer in a1
-		adda.l	#HCW,a3		* Update output pointer for next char.
-		lea	_cgtable,a0	* Establish CG pointer in a0
-		lsl.w	#1,d0		* ... 2 * character
-		adda.w	d0,a0		* ... + _cgtable address
-		move.w	#VPIX-1,d6	* Set scan line counter in d6
-*
+
+_vcputs:	link	a6,#0		| Link stack frames
+		movem.l	d3-d6/a3,-(a7)	| Save registers we use
+		move.w	#PSHIFT,d1	| Set shift constant
+		move.w	FG(a6),d3	| Setup foreground color
+		lsl.w	d1,d3		| ... in ms 4 bits of d3.W
+		move.w	BG(a6),d4	| Setup background color
+		lsl.w	d1,d4		| ... in ms 4 bits of d4.W
+		move.w	NW(a6),d5	| Get line width in d5.W
+		lsl.w	#2,d5		| Multiply width by 4 for offset
+		move.w	ROW(a6),d0	| Calculate output address
+		move.w	#VPIX,d1	| ... VPIX
+		mulu	d1,d0		| ... | ROW
+		add.w	#VPIX-1,d0	| ... + VPIX-1
+		mulu	d5,d0		| ... | NW
+		clr.l	d1		| ...
+		move.w	COL(a6),d1	| ... +
+		lsl.w	#2,d1		| ... COL | 4
+		add.l	d1,d0		| ...
+		add.l	OBASE(a6),d0	| ... + OBASE
+		movea.l	d0,a3		| Leave output address in a3
+		movea.l	STR(a6),a2	| Put string address in a2
+
+cgl0:		clr.l	d0		| Clear out upper bits of d0
+		move.b	(a2)+,d0	| Get next character
+		beq	cgl5		| Done if character EQ 0
+
+		movea.l	a3,a1		| Establish output pointer in a1
+		adda.l	#HCW,a3		| Update output pointer for next char.
+		lea	_cgtable,a0	| Establish CG pointer in a0
+		lsl.w	#1,d0		| ... 2 | character
+		adda.w	d0,a0		| ... + _cgtable address
+		move.w	#VPIX-1,d6	| Set scan line counter in d6
+
 		.page
-cgl1:		move.w	(a0),d1		* Get character generator word in d1
-		move.w	#(HPIX/2)-1,d2	* Set pixel counter in d2
-*
-cgl2:		lsr.w	#HSHIFT,d0	* Shift output word right 1 pixel
-		btst.l	#0,d1		* Check CG word ls bit
-		beq	cgl3		* Set background color if bit EQ 0
-*
-		or.w	d3,d0		* OR foreground color into output word
-		bra	cgl4		* Go update CG word
-*
-cgl3:		or.w	d4,d0		* OR background color into output word
-*
-cgl4:		lsr.w	#1,d1		* Shift CG word right 1 pixel
-		dbf	d2,cgl2		* Loop for first 4 pixels
-*
-		move.w	d0,(a1)+	* Store first output word in scan line
-		move.w	#(HPIX/2)-1,d2	* Set pixel counter in d2
-*
-cgl2a:		lsr.w	#HSHIFT,d0	* Shift output word right 1 pixel
-		btst.l	#0,d1		* Check CG word ls bit
-		beq	cgl3a		* Set background color if bit EQ 0
-*
-		or.w	d3,d0		* OR foreground color into output word
-		bra	cgl4a		* Go update CG word
-*
-cgl3a:		or.w	d4,d0		* OR background color into output word
-*
-cgl4a:		lsr.w	#1,d1		* Shift CG word right 1 pixel
-		dbf	d2,cgl2a	* Loop for last 4 pixels
-*
-		move.w	d0,(a1)		* Store second output word in scan line
-		suba.w	d5,a1		* Update output pointer
-		suba.w	#2,a1		* ...
-		adda.l	#512,a0		* Update CG pointer for next scan line
-		dbf	d6,cgl1		* Loop for all scan lines
-*
-		bra	cgl0		* Loop for next character
-*
-cgl5:		movem.l	(a7)+,d3-d6/a3	* Restore registers
-		unlk	a6		* Unlink stack frames
-		rts			* Return to caller
-*
+cgl1:		move.w	(a0),d1		| Get character generator word in d1
+		move.w	#(HPIX/2)-1,d2	| Set pixel counter in d2
+
+cgl2:		lsr.w	#HSHIFT,d0	| Shift output word right 1 pixel
+		btst.l	#0,d1		| Check CG word ls bit
+		beq	cgl3		| Set background color if bit EQ 0
+
+		or.w	d3,d0		| OR foreground color into output word
+		bra	cgl4		| Go update CG word
+
+cgl3:		or.w	d4,d0		| OR background color into output word
+
+cgl4:		lsr.w	#1,d1		| Shift CG word right 1 pixel
+		dbf	d2,cgl2		| Loop for first 4 pixels
+
+		move.w	d0,(a1)+	| Store first output word in scan line
+		move.w	#(HPIX/2)-1,d2	| Set pixel counter in d2
+
+cgl2a:		lsr.w	#HSHIFT,d0	| Shift output word right 1 pixel
+		btst.l	#0,d1		| Check CG word ls bit
+		beq	cgl3a		| Set background color if bit EQ 0
+
+		or.w	d3,d0		| OR foreground color into output word
+		bra	cgl4a		| Go update CG word
+
+cgl3a:		or.w	d4,d0		| OR background color into output word
+
+cgl4a:		lsr.w	#1,d1		| Shift CG word right 1 pixel
+		dbf	d2,cgl2a	| Loop for last 4 pixels
+
+		move.w	d0,(a1)		| Store second output word in scan line
+		suba.w	d5,a1		| Update output pointer
+		suba.w	#2,a1		| ...
+		adda.l	#512,a0		| Update CG pointer for next scan line
+		dbf	d6,cgl1		| Loop for all scan lines
+
+		bra	cgl0		| Loop for next character
+
+cgl5:		movem.l	(a7)+,d3-d6/a3	| Restore registers
+		unlk	a6		| Unlink stack frames
+		rts			| Return to caller
+
 		.end
Index: vlib/vcputsv.s
===================================================================
--- vlib/vcputsv.s	(revision f40a3096572fd1b0696a7f7c717464e68652e655)
+++ vlib/vcputsv.s	(revision 283e7a64dc74f7abe8a66f643e188bbe4f250aa4)
@@ -1,147 +1,147 @@
-* ------------------------------------------------------------------------------
-* vcputsv.s -- output characters to a 4-bit / pixel graphics window
-* with variable vertical pitch
-* Version 2 -- 1987-08-03 -- D.N. Lynx Crowe
-* (c) Copyright 1987 -- D.N. Lynx Crowe
-* ------------------------------------------------------------------------------
-*
-*	vcputsv(obase, nw, fg, bg, row, col, str. pitch)
-*	int *obase, nw, fg, bg, row, col, pitch;
-*	char *str;
-*
-*		Outputs characters from the string at 'str' to an 'nw'
-*		character wide 4-bit per pixel graphics window at 'obase'
-*		at ('row','col'), using 'fg' as the foreground color, and
-*		'bg' as the background color.  Uses cgtable[][256] as the
-*		VSDD formatted character generator table.  Assumes 12 bit
-*		high characters in the cgtable.  Uses 'pitch' as the vertical
-*		spacing between character rows.  No error checks are done.
-*		The string must fit the output area (no overlaps, single line).
-*
-* ------------------------------------------------------------------------------
+| ------------------------------------------------------------------------------
+| vcputsv.s -- output characters to a 4-bit / pixel graphics window
+| with variable vertical pitch
+| Version 2 -- 1987-08-03 -- D.N. Lynx Crowe
+| (c) Copyright 1987 -- D.N. Lynx Crowe
+| ------------------------------------------------------------------------------
+
+|	vcputsv(obase, nw, fg, bg, row, col, str. pitch)
+|	int |obase, nw, fg, bg, row, col, pitch;
+|	char |str;
+
+|		Outputs characters from the string at 'str' to an 'nw'
+|		character wide 4-bit per pixel graphics window at 'obase'
+|		at ('row','col'), using 'fg' as the foreground color, and
+|		'bg' as the background color.  Uses cgtable[][256] as the
+|		VSDD formatted character generator table.  Assumes 12 bit
+|		high characters in the cgtable.  Uses 'pitch' as the vertical
+|		spacing between character rows.  No error checks are done.
+|		The string must fit the output area (no overlaps, single line).
+
+| ------------------------------------------------------------------------------
 		.text
-*
+
 		.xdef	_vcputsv
-*
+
 		.xref	_cgtable
-*
-* Argument offsets from a6:
-*
-OBASE		.equ	8		* LONG - Output area base address
-NW		.equ	12		* WORD - Character width of output area
-FG		.equ	14		* WORD - Foreground color
-BG		.equ	16		* WORD - Background color
-ROW		.equ	18		* WORD - Row
-COL		.equ	20		* WORD - Column
-STR		.equ	22		* LONG - String base address
-PITCH		.equ	26		* WORD - Vertical spacing between rows
-*
-* Program constant definitions:
-*
-HPIX		.equ	8		* Character width in pixels
-VPIX		.equ	12		* Character height in pixels
-HCW		.equ	4		* Horizontal character width (bytes)
-PSHIFT		.equ	12		* Pixel shift into MS bits
-HSHIFT		.equ	4		* Pixel right shift
-*
+
+| Argument offsets from a6:
+
+OBASE		=	8		| LONG - Output area base address
+NW		=	12		| WORD - Character width of output area
+FG		=	14		| WORD - Foreground color
+BG		=	16		| WORD - Background color
+ROW		=	18		| WORD - Row
+COL		=	20		| WORD - Column
+STR		=	22		| LONG - String base address
+PITCH		=	26		| WORD - Vertical spacing between rows
+
+| Program constant definitions:
+
+HPIX		=	8		| Character width in pixels
+VPIX		=	12		| Character height in pixels
+HCW		=	4		| Horizontal character width (bytes)
+PSHIFT		=	12		| Pixel shift into MS bits
+HSHIFT		=	4		| Pixel right shift
+
 		.page
-*
-* Register usage:
-*
-*	d0	output word and scratch
-*	d1	CG word and scratch
-*	d2	pixel counter
-*
-*	d3	foreground color (in the 4 ms bits)
-*	d4	background color (in the 4 ms bits)
-*	d5	width of the area in bytes
-*	d6	scan line counter
-*
-*	a0	CG table pointer
-*	a1	output area scan line pointer
-*	a2	input string character pointer
-*
-*	a3	output area character base pointer
-*
-*	a6	frame pointer
-*	a7	stack pointer
-*
+
+| Register usage:
+
+|	d0	output word and scratch
+|	d1	CG word and scratch
+|	d2	pixel counter
+
+|	d3	foreground color (in the 4 ms bits)
+|	d4	background color (in the 4 ms bits)
+|	d5	width of the area in bytes
+|	d6	scan line counter
+
+|	a0	CG table pointer
+|	a1	output area scan line pointer
+|	a2	input string character pointer
+
+|	a3	output area character base pointer
+
+|	a6	frame pointer
+|	a7	stack pointer
+
 		.page
-*
-_vcputsv:	link	a6,#0		* Link stack frames
-		movem.l	d3-d6/a3,-(a7)	* Save registers we use
-		move.w	#PSHIFT,d1	* Set shift constant
-		move.w	FG(a6),d3	* Setup foreground color
-		lsl.w	d1,d3		* ... in ms 4 bits of d3.W
-		move.w	BG(a6),d4	* Setup background color
-		lsl.w	d1,d4		* ... in ms 4 bits of d4.W
-		move.w	NW(a6),d5	* Get line width in d5.W
-		lsl.w	#2,d5		* Multiply width by 4 for offset
-		move.w	ROW(a6),d0	* Calculate output address
-		move.w	PITCH(a6),d1	* ... PITCH
-		mulu	d1,d0		* ... * ROW
-		add.w	#VPIX-1,d0	* ... + VPIX-1
-		mulu	d5,d0		* ... * NW
-		clr.l	d1		* ...
-		move.w	COL(a6),d1	* ... + 
-		lsl.w	#2,d1		* ... COL * 4
-		add.l	d1,d0		* ...
-		add.l	OBASE(a6),d0	* ... + OBASE
-		movea.l	d0,a3		* Leave output address in a3
-		movea.l	STR(a6),a2	* Put string address in a2
-*
-cgl0:		clr.l	d0		* Clear out upper bits of d0
-		move.b	(a2)+,d0	* Get next character
-		beq	cgl5		* Done if character EQ 0
-*
-		movea.l	a3,a1		* Establish output pointer in a1
-		adda.l	#HCW,a3		* Update output pointer for next char.
-		lea	_cgtable,a0	* Establish CG pointer in a0
-		lsl.w	#1,d0		* ... 2 * character
-		adda.w	d0,a0		* ... + _cgtable address
-		move.w	#VPIX-1,d6	* Set scan line counter in d6
-*
+
+_vcputsv:	link	a6,#0		| Link stack frames
+		movem.l	d3-d6/a3,-(a7)	| Save registers we use
+		move.w	#PSHIFT,d1	| Set shift constant
+		move.w	FG(a6),d3	| Setup foreground color
+		lsl.w	d1,d3		| ... in ms 4 bits of d3.W
+		move.w	BG(a6),d4	| Setup background color
+		lsl.w	d1,d4		| ... in ms 4 bits of d4.W
+		move.w	NW(a6),d5	| Get line width in d5.W
+		lsl.w	#2,d5		| Multiply width by 4 for offset
+		move.w	ROW(a6),d0	| Calculate output address
+		move.w	PITCH(a6),d1	| ... PITCH
+		mulu	d1,d0		| ... | ROW
+		add.w	#VPIX-1,d0	| ... + VPIX-1
+		mulu	d5,d0		| ... | NW
+		clr.l	d1		| ...
+		move.w	COL(a6),d1	| ... +
+		lsl.w	#2,d1		| ... COL | 4
+		add.l	d1,d0		| ...
+		add.l	OBASE(a6),d0	| ... + OBASE
+		movea.l	d0,a3		| Leave output address in a3
+		movea.l	STR(a6),a2	| Put string address in a2
+
+cgl0:		clr.l	d0		| Clear out upper bits of d0
+		move.b	(a2)+,d0	| Get next character
+		beq	cgl5		| Done if character EQ 0
+
+		movea.l	a3,a1		| Establish output pointer in a1
+		adda.l	#HCW,a3		| Update output pointer for next char.
+		lea	_cgtable,a0	| Establish CG pointer in a0
+		lsl.w	#1,d0		| ... 2 | character
+		adda.w	d0,a0		| ... + _cgtable address
+		move.w	#VPIX-1,d6	| Set scan line counter in d6
+
 		.page
-cgl1:		move.w	(a0),d1		* Get character generator word in d1
-		move.w	#(HPIX/2)-1,d2	* Set pixel counter in d2
-*
-cgl2:		lsr.w	#HSHIFT,d0	* Shift output word right 1 pixel
-		btst.l	#0,d1		* Check CG word ls bit
-		beq	cgl3		* Set background color if bit EQ 0
-*
-		or.w	d3,d0		* OR foreground color into output word
-		bra	cgl4		* Go update CG word
-*
-cgl3:		or.w	d4,d0		* OR background color into output word
-*
-cgl4:		lsr.w	#1,d1		* Shift CG word right 1 pixel
-		dbf	d2,cgl2		* Loop for first 4 pixels
-*
-		move.w	d0,(a1)+	* Store first output word in scan line
-		move.w	#(HPIX/2)-1,d2	* Set pixel counter in d2
-*
-cgl2a:		lsr.w	#HSHIFT,d0	* Shift output word right 1 pixel
-		btst.l	#0,d1		* Check CG word ls bit
-		beq	cgl3a		* Set background color if bit EQ 0
-*
-		or.w	d3,d0		* OR foreground color into output word
-		bra	cgl4a		* Go update CG word
-*
-cgl3a:		or.w	d4,d0		* OR background color into output word
-*
-cgl4a:		lsr.w	#1,d1		* Shift CG word right 1 pixel
-		dbf	d2,cgl2a	* Loop for last 4 pixels
-*
-		move.w	d0,(a1)		* Store second output word in scan line
-		suba.w	d5,a1		* Update output pointer
-		suba.w	#2,a1		* ...
-		adda.l	#512,a0		* Update CG pointer for next scan line
-		dbf	d6,cgl1		* Loop for all scan lines
-*
-		bra	cgl0		* Loop for next character
-*
-cgl5:		movem.l	(a7)+,d3-d6/a3	* Restore registers
-		unlk	a6		* Unlink stack frames
-		rts			* Return to caller
-*
+cgl1:		move.w	(a0),d1		| Get character generator word in d1
+		move.w	#(HPIX/2)-1,d2	| Set pixel counter in d2
+
+cgl2:		lsr.w	#HSHIFT,d0	| Shift output word right 1 pixel
+		btst.l	#0,d1		| Check CG word ls bit
+		beq	cgl3		| Set background color if bit EQ 0
+
+		or.w	d3,d0		| OR foreground color into output word
+		bra	cgl4		| Go update CG word
+
+cgl3:		or.w	d4,d0		| OR background color into output word
+
+cgl4:		lsr.w	#1,d1		| Shift CG word right 1 pixel
+		dbf	d2,cgl2		| Loop for first 4 pixels
+
+		move.w	d0,(a1)+	| Store first output word in scan line
+		move.w	#(HPIX/2)-1,d2	| Set pixel counter in d2
+
+cgl2a:		lsr.w	#HSHIFT,d0	| Shift output word right 1 pixel
+		btst.l	#0,d1		| Check CG word ls bit
+		beq	cgl3a		| Set background color if bit EQ 0
+
+		or.w	d3,d0		| OR foreground color into output word
+		bra	cgl4a		| Go update CG word
+
+cgl3a:		or.w	d4,d0		| OR background color into output word
+
+cgl4a:		lsr.w	#1,d1		| Shift CG word right 1 pixel
+		dbf	d2,cgl2a	| Loop for last 4 pixels
+
+		move.w	d0,(a1)		| Store second output word in scan line
+		suba.w	d5,a1		| Update output pointer
+		suba.w	#2,a1		| ...
+		adda.l	#512,a0		| Update CG pointer for next scan line
+		dbf	d6,cgl1		| Loop for all scan lines
+
+		bra	cgl0		| Loop for next character
+
+cgl5:		movem.l	(a7)+,d3-d6/a3	| Restore registers
+		unlk	a6		| Unlink stack frames
+		rts			| Return to caller
+
 		.end
Index: vlib/viint.s
===================================================================
--- vlib/viint.s	(revision f40a3096572fd1b0696a7f7c717464e68652e655)
+++ vlib/viint.s	(revision 283e7a64dc74f7abe8a66f643e188bbe4f250aa4)
@@ -1,232 +1,232 @@
-* ------------------------------------------------------------------------------
-* viint.s -- VSDD Vertical Interval interrupt handler for the Buchla 700
-* Version 17 -- 1989-12-19 -- D.N. Lynx Crowe
-*
-*	VIint
-*
-*		VSDD Vertical Interval interrupt handler.  Enables display of
-*		any object whose bit is set in vi_ctl.  Bit 0 = object 0, etc.
-*
-*		SetPri() uses BIOS(B_SETV, 25, VIint) to set the interrupt
-*		vector and lets VIint() enable the object.  If vi_dis
-*		is set, SetPri() won't enable the interrupt or set the vector
-*		so that several objects can be started up at once.
-*
-*		This routine also sets the base address and scroll offset
-*		for the score display object if vi_sadr is non-zero,
-*		after a delay for VSDD FRAMESTOP synchronization.
-* ------------------------------------------------------------------------------
+| ------------------------------------------------------------------------------
+| viint.s -- VSDD Vertical Interval interrupt handler for the Buchla 700
+| Version 17 -- 1989-12-19 -- D.N. Lynx Crowe
+
+|	VIint
+
+|		VSDD Vertical Interval interrupt handler.  Enables display of
+|		any object whose bit is set in vi_ctl.  Bit 0 = object 0, etc.
+
+|		SetPri() uses BIOS(B_SETV, 25, VIint) to set the interrupt
+|		vector and lets VIint() enable the object.  If vi_dis
+|		is set, SetPri() won't enable the interrupt or set the vector
+|		so that several objects can be started up at once.
+
+|		This routine also sets the base address and scroll offset
+|		for the score display object if vi_sadr is non-zero,
+|		after a delay for VSDD FRAMESTOP synchronization.
+| ------------------------------------------------------------------------------
 		.text
-*
-		.xdef	_VIint			* Vertical Interval int. handler
-*
-		.xdef	_vi_sadr		* score object base address
-		.xdef	_vi_scrl		* score object scroll offset
-		.xdef	lclsadr			* local scroll address
-		.xdef	lclscrl			* local scroll offset
-		.xdef	vdelay			* VSDD scroll delay
-*
-		.xdef	VIct1			* VSDD interrupt R11 
-		.xdef	VIct2			* VSDD interrupt R11 
-		.xdef	VIct3			* VSDD interrupt R11 
-		.xdef	VIct4			* VSDD interrupt R11 
-*
-		.xref	_v_regs			* VSDD registers
-		.xref	_v_odtab		* VSDD object descriptor table
-*
-		.xref	_vi_clk			* scroll delay timer
-		.xref	_vi_ctl			* unblank control word
-		.xref	_vi_tag			* VSDD 'needs service' tag
-*
-		.page
-*
-* Miscellaneous equates:
-* ----------------------
-*
-DELAY		.equ	17			* FRAMESTOP sync delay in Ms
-STACKSR		.equ	32			* offset to sr on stack
-V_BLA		.equ	4			* V_BLA (blank) bit number
-VSDD_R5		.equ	10			* VSDD R5 byte offset in _v_regs
-VSDD_R11	.equ	22			* VSDD R11 byte offset in _v_regs
-*
-VT_BASE		.equ	128			* word offset of VSDD Access Table
-*
-VT_1		.equ	VT_BASE+300		* high time
-VT_2		.equ	VT_BASE+2		* low time
-* ------------------------------------------------------------------------------
-*
-* Stack picture after movem.l at entry:
-* -------------------------------------
-*
-*	LONG	PC	+34
-*	WORD	SR	+32	STACKSR
-*	LONG	A6	+28
-*	LONG	A2	+24
-*	LONG	A1	+20
-*	LONG	A0	+16
-*	LONG	D3	+12
-*	LONG	D2	+8
-*	LONG	D1	+4
-*	LONG	D0	+0
-*
-* ------------------------------------------------------------------------------
-*
-		.page
-*
-* _VIint -- Vertical interval interrupt handler
-* ------    -----------------------------------
-_VIint:		movem.l	d0-d3/a0-a2/a6,-(a7)	* save registers
-		addi.w	#$0100,STACKSR(a7)	* raise IPL in sr on the stack
-*
-		move.w	_v_regs+VSDD_R11,VIct1	* save the VSDD R11 value
-*
-		tst.w	_vi_sadr		* see if we should scroll
-		beq	viunbl			* jump if not
-*
-* ------------------------------------------------------------------------------
-* setup delayed scroll parameters
-* ------------------------------------------------------------------------------
-		move.w	_v_regs+VSDD_R5,d0	* get VSDD R5
-		move.w	d0,d1			* save it for later
-		andi.w	#$0180,d0		* see if we're already in bank 0
-		beq	dlyscrl			* jump if so
-*
-		clr.w	_v_regs+VSDD_R5		* set bank 0
-*
-		move.w	_v_regs+VSDD_R11,VIct2	* save the VSDD R11 value
-*
-vw1a:		cmp.w	#VT_1,_v_regs+VSDD_R11	* wait for FRAMESTOP
-		bcc	vw1a			* ...
-*
-vw2a:		cmp.w	#VT_1,_v_regs+VSDD_R11	* ...
-		bcs	vw2a			* ...
-*
-vw3a:		cmp.w	#VT_1,_v_regs+VSDD_R11	* ...
-		bcc	vw3a			* ...
-*
-vw4a:		cmp.w	#VT_2,_v_regs+VSDD_R11	* ...
-		bcs	vw4a			* ...
-*
-dlyscrl:	tst.w	_vi_tag			* wait for previous scroll
-		bne	dlyscrl			* ...
-*
-		move.w	_vi_sadr,lclsadr	* save address for timeint
-		move.w	_vi_scrl,lclscrl	* save offset for timeint
-		clr.w	_vi_sadr		* reset for next time
-		clr.w	_vi_scrl		* ...
-		move.w	vdelay,_vi_clk		* set the scroll delay timer
-		st	_vi_tag			* set the 'need service' tag
-* ------------------------------------------------------------------------------
-* check for unblank requests
-* ------------------------------------------------------------------------------
-		move.w	_vi_ctl,d2		* get the unblank control word
-		beq	viexit			* exit if nothing to unblank
-*
-		bra	unblnk			* go unblank some objects
-*
-viunbl:		move.w	_vi_ctl,d2		* get the unblank control word
-		beq	vidone			* exit if nothing to unblank
-*
-		move.w	_v_regs+VSDD_R5,d0	* get VSDD R5
-		move.w	d0,d1			* save it for later
-		andi.w	#$0180,d0		* see if we're already in bank 0
-		beq	unblnk			* jump if so
-*
-		clr.w	_v_regs+VSDD_R5		* set bank 0
-*
-		move.w	_v_regs+VSDD_R11,VIct3	* save the VSDD R11 value
-*
-vw1b:		cmp.w	#VT_1,_v_regs+VSDD_R11	* wait for FRAMESTOP
-		bcc	vw1b			* ...
-*
-vw2b:		cmp.w	#VT_1,_v_regs+VSDD_R11	* ...
-		bcs	vw2b			* ...
-*
-vw3b:		cmp.w	#VT_1,_v_regs+VSDD_R11	* ...
-		bcc	vw3b			* ...
-*
-vw4b:		cmp.w	#VT_2,_v_regs+VSDD_R11	* ...
-		bcs	vw4b			* ...
-*
-		.page
-*
-* ------------------------------------------------------------------------------
-* unblank objects indicated by contents of d2  (loaded earlier from _vi_ctl)
-* ------------------------------------------------------------------------------
-*
-unblnk:		clr.w	d3			* clear the counter
-		clr.w	_vi_ctl			* clear the unblank control word
-		lea	_v_odtab,a1		* point at first object
-*
-vicheck:	btst	d3,d2			* check the object bit
-		beq	vinext			* go check next one if not set
-*
-		move.w	(a1),d0			* get v_odtab[obj][0]
-		bclr	#V_BLA,d0		* clear the blanking bit
-		move.w	d0,(a1)			* set v_odtab[obj][0]
-*
-vinext:		cmpi.w	#15,d3			* see if we're done
-		beq	viexit			* jump if so
-*
-		addq.l	#8,a1			* point at next object
-		addq.w	#1,d3			* increment object counter
-		bra	vicheck			* go check next object
-*
-* ------------------------------------------------------------------------------
-* switch back to the bank the interrupted code was using if we changed it
-* ------------------------------------------------------------------------------
-*
-viexit:		move.w	d1,d0			* see if we were in bank 0
-		andi.w	#$0180,d0		* ...
-		beq	vidone			* jump if so
-*
-viwait:		tst.w	_vi_tag			* wait for timer to run out
-		bne	viwait			* ... so timeint sees bank 0
-*
-		move.w	d1,_v_regs+VSDD_R5	* restore v_regs[5] to old bank
-*
-		move.w	_v_regs+VSDD_R11,VIct4	* save the VSDD R11 value
-*
-vw1c:		cmp.w	#VT_1,_v_regs+VSDD_R11	* wait for FRAMESTOP
-		bcc	vw1c			* ...
-*
-vw2c:		cmp.w	#VT_1,_v_regs+VSDD_R11	* ...
-		bcs	vw2c			* ...
-*
-vw3c:		cmp.w	#VT_1,_v_regs+VSDD_R11	* ...
-		bcc	vw3c			* ...
-*
-vw4c:		cmp.w	#VT_2,_v_regs+VSDD_R11	* ...
-		bcs	vw4c			* ...
-*
-* ------------------------------------------------------------------------------
-* restore registers and return to interrupted code
-* ------------------------------------------------------------------------------
-*
-vidone:		movem.l	(a7)+,d0-d3/a0-a2/a6	* restore registers
-		rte				* return from interrupt
-*
-		.page
-*
-* ------------------------------------------------------------------------------
+
+		.xdef	_VIint			| Vertical Interval int. handler
+
+		.xdef	_vi_sadr		| score object base address
+		.xdef	_vi_scrl		| score object scroll offset
+		.xdef	lclsadr			| local scroll address
+		.xdef	lclscrl			| local scroll offset
+		.xdef	vdelay			| VSDD scroll delay
+
+		.xdef	VIct1			| VSDD interrupt R11
+		.xdef	VIct2			| VSDD interrupt R11
+		.xdef	VIct3			| VSDD interrupt R11
+		.xdef	VIct4			| VSDD interrupt R11
+
+		.xref	_v_regs			| VSDD registers
+		.xref	_v_odtab		| VSDD object descriptor table
+
+		.xref	_vi_clk			| scroll delay timer
+		.xref	_vi_ctl			| unblank control word
+		.xref	_vi_tag			| VSDD 'needs service' tag
+
+		.page
+
+| Miscellaneous equates:
+| ----------------------
+
+DELAY		=	17			| FRAMESTOP sync delay in Ms
+STACKSR		=	32			| offset to sr on stack
+V_BLA		=	4			| V_BLA (blank) bit number
+VSDD_R5		=	10			| VSDD R5 byte offset in _v_regs
+VSDD_R11	=	22			| VSDD R11 byte offset in _v_regs
+
+VT_BASE		=	128			| word offset of VSDD Access Table
+
+VT_1		=	VT_BASE+300		| high time
+VT_2		=	VT_BASE+2		| low time
+| ------------------------------------------------------------------------------
+
+| Stack picture after movem.l at entry:
+| -------------------------------------
+
+|	LONG	PC	+34
+|	WORD	SR	+32	STACKSR
+|	LONG	A6	+28
+|	LONG	A2	+24
+|	LONG	A1	+20
+|	LONG	A0	+16
+|	LONG	D3	+12
+|	LONG	D2	+8
+|	LONG	D1	+4
+|	LONG	D0	+0
+
+| ------------------------------------------------------------------------------
+
+		.page
+
+| _VIint -- Vertical interval interrupt handler
+| ------    -----------------------------------
+_VIint:		movem.l	d0-d3/a0-a2/a6,-(a7)	| save registers
+		addi.w	#0x0100,STACKSR(a7)	| raise IPL in sr on the stack
+
+		move.w	_v_regs+VSDD_R11,VIct1	| save the VSDD R11 value
+
+		tst.w	_vi_sadr		| see if we should scroll
+		beq	viunbl			| jump if not
+
+| ------------------------------------------------------------------------------
+| setup delayed scroll parameters
+| ------------------------------------------------------------------------------
+		move.w	_v_regs+VSDD_R5,d0	| get VSDD R5
+		move.w	d0,d1			| save it for later
+		andi.w	#0x0180,d0		| see if we're already in bank 0
+		beq	dlyscrl			| jump if so
+
+		clr.w	_v_regs+VSDD_R5		| set bank 0
+
+		move.w	_v_regs+VSDD_R11,VIct2	| save the VSDD R11 value
+
+vw1a:		cmp.w	#VT_1,_v_regs+VSDD_R11	| wait for FRAMESTOP
+		bcc	vw1a			| ...
+
+vw2a:		cmp.w	#VT_1,_v_regs+VSDD_R11	| ...
+		bcs	vw2a			| ...
+
+vw3a:		cmp.w	#VT_1,_v_regs+VSDD_R11	| ...
+		bcc	vw3a			| ...
+
+vw4a:		cmp.w	#VT_2,_v_regs+VSDD_R11	| ...
+		bcs	vw4a			| ...
+
+dlyscrl:	tst.w	_vi_tag			| wait for previous scroll
+		bne	dlyscrl			| ...
+
+		move.w	_vi_sadr,lclsadr	| save address for timeint
+		move.w	_vi_scrl,lclscrl	| save offset for timeint
+		clr.w	_vi_sadr		| reset for next time
+		clr.w	_vi_scrl		| ...
+		move.w	vdelay,_vi_clk		| set the scroll delay timer
+		st	_vi_tag			| set the 'need service' tag
+| ------------------------------------------------------------------------------
+| check for unblank requests
+| ------------------------------------------------------------------------------
+		move.w	_vi_ctl,d2		| get the unblank control word
+		beq	viexit			| exit if nothing to unblank
+
+		bra	unblnk			| go unblank some objects
+
+viunbl:		move.w	_vi_ctl,d2		| get the unblank control word
+		beq	vidone			| exit if nothing to unblank
+
+		move.w	_v_regs+VSDD_R5,d0	| get VSDD R5
+		move.w	d0,d1			| save it for later
+		andi.w	#0x0180,d0		| see if we're already in bank 0
+		beq	unblnk			| jump if so
+
+		clr.w	_v_regs+VSDD_R5		| set bank 0
+
+		move.w	_v_regs+VSDD_R11,VIct3	| save the VSDD R11 value
+
+vw1b:		cmp.w	#VT_1,_v_regs+VSDD_R11	| wait for FRAMESTOP
+		bcc	vw1b			| ...
+
+vw2b:		cmp.w	#VT_1,_v_regs+VSDD_R11	| ...
+		bcs	vw2b			| ...
+
+vw3b:		cmp.w	#VT_1,_v_regs+VSDD_R11	| ...
+		bcc	vw3b			| ...
+
+vw4b:		cmp.w	#VT_2,_v_regs+VSDD_R11	| ...
+		bcs	vw4b			| ...
+
+		.page
+
+| ------------------------------------------------------------------------------
+| unblank objects indicated by contents of d2  (loaded earlier from _vi_ctl)
+| ------------------------------------------------------------------------------
+
+unblnk:		clr.w	d3			| clear the counter
+		clr.w	_vi_ctl			| clear the unblank control word
+		lea	_v_odtab,a1		| point at first object
+
+vicheck:	btst	d3,d2			| check the object bit
+		beq	vinext			| go check next one if not set
+
+		move.w	(a1),d0			| get v_odtab[obj][0]
+		bclr	#V_BLA,d0		| clear the blanking bit
+		move.w	d0,(a1)			| set v_odtab[obj][0]
+
+vinext:		cmpi.w	#15,d3			| see if we're done
+		beq	viexit			| jump if so
+
+		addq.l	#8,a1			| point at next object
+		addq.w	#1,d3			| increment object counter
+		bra	vicheck			| go check next object
+
+| ------------------------------------------------------------------------------
+| switch back to the bank the interrupted code was using if we changed it
+| ------------------------------------------------------------------------------
+
+viexit:		move.w	d1,d0			| see if we were in bank 0
+		andi.w	#0x0180,d0		| ...
+		beq	vidone			| jump if so
+
+viwait:		tst.w	_vi_tag			| wait for timer to run out
+		bne	viwait			| ... so timeint sees bank 0
+
+		move.w	d1,_v_regs+VSDD_R5	| restore v_regs[5] to old bank
+
+		move.w	_v_regs+VSDD_R11,VIct4	| save the VSDD R11 value
+
+vw1c:		cmp.w	#VT_1,_v_regs+VSDD_R11	| wait for FRAMESTOP
+		bcc	vw1c			| ...
+
+vw2c:		cmp.w	#VT_1,_v_regs+VSDD_R11	| ...
+		bcs	vw2c			| ...
+
+vw3c:		cmp.w	#VT_1,_v_regs+VSDD_R11	| ...
+		bcc	vw3c			| ...
+
+vw4c:		cmp.w	#VT_2,_v_regs+VSDD_R11	| ...
+		bcs	vw4c			| ...
+
+| ------------------------------------------------------------------------------
+| restore registers and return to interrupted code
+| ------------------------------------------------------------------------------
+
+vidone:		movem.l	(a7)+,d0-d3/a0-a2/a6	| restore registers
+		rte				| return from interrupt
+
+		.page
+
+| ------------------------------------------------------------------------------
 		.data
-* ------------------------------------------------------------------------------
-*
-vdelay:		.dc.w	DELAY			* VSDD scroll delay
-*
-* ------------------------------------------------------------------------------
+| ------------------------------------------------------------------------------
+
+vdelay:		.dc.w	DELAY			| VSDD scroll delay
+
+| ------------------------------------------------------------------------------
 		.bss
-* ------------------------------------------------------------------------------
-*
-_vi_sadr:	.ds.w	1			* score object base address
-_vi_scrl:	.ds.w	1			* score object scroll offset
-*
-lclsadr:	.ds.w	1			* local copy of vi_sadr
-lclscrl:	.ds.w	1			* local copy of vi_scrl
-*
-VIct1:		.ds.w	1			* VSDD R11 value at interrupt
-VIct2:		.ds.w	1			* VSDD R11 value at interrupt
-VIct3:		.ds.w	1			* VSDD R11 value at interrupt
-VIct4:		.ds.w	1			* VSDD R11 value at interrupt
-*
+| ------------------------------------------------------------------------------
+
+_vi_sadr:	.ds.w	1			| score object base address
+_vi_scrl:	.ds.w	1			| score object scroll offset
+
+lclsadr:	.ds.w	1			| local copy of vi_sadr
+lclscrl:	.ds.w	1			| local copy of vi_scrl
+
+VIct1:		.ds.w	1			| VSDD R11 value at interrupt
+VIct2:		.ds.w	1			| VSDD R11 value at interrupt
+VIct3:		.ds.w	1			| VSDD R11 value at interrupt
+VIct4:		.ds.w	1			| VSDD R11 value at interrupt
+
 		.end
Index: vlib/vputa.s
===================================================================
--- vlib/vputa.s	(revision f40a3096572fd1b0696a7f7c717464e68652e655)
+++ vlib/vputa.s	(revision 283e7a64dc74f7abe8a66f643e188bbe4f250aa4)
@@ -1,48 +1,48 @@
-* ------------------------------------------------------------------------------
-* vputa.s -- store character attributes in video RAM
-* Version 1 -- 1988-03-14 -- D.N. Lynx Crowe
-* (c) Copyright 1988 -- D.N. Lynx Crowe
-* ------------------------------------------------------------------------------
-*
-*	vputa(sbase, row, col, attrib)
-*	unsigned int *sbase, row, col, attrib;
-*
-*		Stores attribute value 'attrib' for the character
-*		located at ('row','col') in VSDD RAM starting at 'sbase'.
-*		Assumes a 64 character line and full character attributes.
-* ------------------------------------------------------------------------------
+| ------------------------------------------------------------------------------
+| vputa.s -- store character attributes in video RAM
+| Version 1 -- 1988-03-14 -- D.N. Lynx Crowe
+| (c) Copyright 1988 -- D.N. Lynx Crowe
+| ------------------------------------------------------------------------------
+
+|	vputa(sbase, row, col, attrib)
+|	unsigned int |sbase, row, col, attrib;
+
+|		Stores attribute value 'attrib' for the character
+|		located at ('row','col') in VSDD RAM starting at 'sbase'.
+|		Assumes a 64 character line and full character attributes.
+| ------------------------------------------------------------------------------
 		.text
-*
+
 		.xdef	_vputa
-*
-SBASE		.equ	8		* LONG - 'sbase'
-ROW		.equ	12		* WORD - 'row'
-COL		.equ	14		* WORD - 'col'
-ATTR		.equ	16		* WORD - 'attrib'
-*
-_vputa:		link	a6,#0		* Link stack frame pointer
-		clr.l	d0		* Clear out d0
-		move.w	ROW(a6),d0	* Get row
-		lsl.l	#6,d0		* Multiply by 64  (shift left 6)
-		move.w	COL(a6),d1	* Get col
-		andi.l	#$0000003F,d1	* Mask down to 6 bits
-		or.l	d1,d0		* OR into d0 to get char. #
-		move.w	d0,d1		* Develop cw = (cn/2)*6 in d1
-		andi.l	#$FFFFFFFE,d1	* ...
-		move.l	d1,d2		* ...
-		add.l	d1,d1		* ...
-		add.l	d2,d1		* ...
-		add.l	SBASE(a6),d1	* Add sbase to cw
-		movea.l	d1,a0		* a0 points at the word with the char.
-		btst.l	#0,d0		* Odd char. location ?
-		bne	vputa1		* Jump if so
-*
-		move.w	ATTR(a6),2(a0)	* Store new attribute word in video RAM
-*
-vputax:		unlk	a6		* Unlink the stack frame
-		rts			* Done -- return to caller
-*
-vputa1:		move.w	ATTR(a6),4(a0)	* Store new attribute word in video RAM
-		bra	vputax		* Done -- go return to caller
-*
+
+SBASE		=	8		| LONG - 'sbase'
+ROW		=	12		| WORD - 'row'
+COL		=	14		| WORD - 'col'
+ATTR		=	16		| WORD - 'attrib'
+
+_vputa:		link	a6,#0		| Link stack frame pointer
+		clr.l	d0		| Clear out d0
+		move.w	ROW(a6),d0	| Get row
+		lsl.l	#6,d0		| Multiply by 64  (shift left 6)
+		move.w	COL(a6),d1	| Get col
+		andi.l	#0x0000003F,d1	| Mask down to 6 bits
+		or.l	d1,d0		| OR into d0 to get char. #
+		move.w	d0,d1		| Develop cw = (cn/2)|6 in d1
+		andi.l	#0xFFFFFFFE,d1	| ...
+		move.l	d1,d2		| ...
+		add.l	d1,d1		| ...
+		add.l	d2,d1		| ...
+		add.l	SBASE(a6),d1	| Add sbase to cw
+		movea.l	d1,a0		| a0 points at the word with the char.
+		btst.l	#0,d0		| Odd char. location ?
+		bne	vputa1		| Jump if so
+
+		move.w	ATTR(a6),2(a0)	| Store new attribute word in video RAM
+
+vputax:		unlk	a6		| Unlink the stack frame
+		rts			| Done -- return to caller
+
+vputa1:		move.w	ATTR(a6),4(a0)	| Store new attribute word in video RAM
+		bra	vputax		| Done -- go return to caller
+
 		.end
Index: vlib/vputc.s
===================================================================
--- vlib/vputc.s	(revision f40a3096572fd1b0696a7f7c717464e68652e655)
+++ vlib/vputc.s	(revision 283e7a64dc74f7abe8a66f643e188bbe4f250aa4)
@@ -1,56 +1,56 @@
-* ------------------------------------------------------------------------------
-* vputc.s -- store a character and attributes in video RAM
-* Version 3 -- 1987-03-30 -- D.N. Lynx Crowe
-* (c) Copyright 1987 -- D.N. Lynx Crowe
-* ------------------------------------------------------------------------------
-*
-*	vputc(sbase, row, col, c, attrib)
-*	unsigned int *sbase, row, col, c, attrib;
-*
-*		Stores character c at (row,col) in sbase with
-*		attribute value attrib.
-* ------------------------------------------------------------------------------
-*
+| ------------------------------------------------------------------------------
+| vputc.s -- store a character and attributes in video RAM
+| Version 3 -- 1987-03-30 -- D.N. Lynx Crowe
+| (c) Copyright 1987 -- D.N. Lynx Crowe
+| ------------------------------------------------------------------------------
+
+|	vputc(sbase, row, col, c, attrib)
+|	unsigned int |sbase, row, col, c, attrib;
+
+|		Stores character c at (row,col) in sbase with
+|		attribute value attrib.
+| ------------------------------------------------------------------------------
+
 		.text
-*
+
 		.xdef	_vputc
-*
-_vputc:		link	a6,#0		* Link stack frame pointer
-		clr.l	d0		* Clear out d0
-		move.w	12(a6),d0	* Get row
-		lsl.l	#6,d0		* Multiply by 64  (shift left 6)
-		move.w	14(a6),d1	* Get col
-		andi.l	#$0000003F,d1	* Mask down to 6 bits
-		or.l	d1,d0		* OR into d0 to get char. #
-		move.w	d0,d1		* Develop cw = (cn/2)*6 in d1
-		andi.l	#$FFFFFFFE,d1	* ...
-		move.l	d1,d2		* ...
-		lsl.l	#1,d1		* ...
-		add.l	d2,d1		* ...
-		add.l	8(a6),d1	* Add sbase to cw
-		movea.l	d1,a0		* a0 points at the word with the char.
-		btst.l	#0,d0		* Odd char. location ?
-		bne	vputc1		* Jump if so
-*
-		move.w	16(a6),d0	* Get ch
-		andi.w	#$00FF,d0	* Mask off garbage bits
-		move.w	(a0),d1		* Get word from video RAM
-		andi.w	#$FF00,d1	* Mask off old even character
-		or.w	d0,d1		* OR in the new character
-		move.w	d1,(a0)+	* Store the updated word in video RAM
-		move.w	18(a6),(a0)	* Store new attribute word in video RAM
-*
-vputcx:		unlk	a6		* Unlink the stack frame
-		rts			* Return to caller
-*
-vputc1:		move.w	16(a6),d0	* Get ch
-		lsl.w	#8,d0		* Shift to high (odd) byte
-		move.w	(a0),d1		* Get word from video RAM
-		andi.w	#$00FF,d1	* Mask off old odd character
-		or.w	d0,d1		* OR in the new character
-		move.w	d1,(a0)+	* Store the updated word in video RAM
-		addq.l	#2,a0		* Point at the attribute word
-		move.w	18(a6),(a0)	* Store new attributes in video RAM
-		bra	vputcx		* Done -- go return to caller
-*
+
+_vputc:		link	a6,#0		| Link stack frame pointer
+		clr.l	d0		| Clear out d0
+		move.w	12(a6),d0	| Get row
+		lsl.l	#6,d0		| Multiply by 64  (shift left 6)
+		move.w	14(a6),d1	| Get col
+		andi.l	#0x0000003F,d1	| Mask down to 6 bits
+		or.l	d1,d0		| OR into d0 to get char. #
+		move.w	d0,d1		| Develop cw = (cn/2)|6 in d1
+		andi.l	#0xFFFFFFFE,d1	| ...
+		move.l	d1,d2		| ...
+		lsl.l	#1,d1		| ...
+		add.l	d2,d1		| ...
+		add.l	8(a6),d1	| Add sbase to cw
+		movea.l	d1,a0		| a0 points at the word with the char.
+		btst.l	#0,d0		| Odd char. location ?
+		bne	vputc1		| Jump if so
+
+		move.w	16(a6),d0	| Get ch
+		andi.w	#0x00FF,d0	| Mask off garbage bits
+		move.w	(a0),d1		| Get word from video RAM
+		andi.w	#0xFF00,d1	| Mask off old even character
+		or.w	d0,d1		| OR in the new character
+		move.w	d1,(a0)+	| Store the updated word in video RAM
+		move.w	18(a6),(a0)	| Store new attribute word in video RAM
+
+vputcx:		unlk	a6		| Unlink the stack frame
+		rts			| Return to caller
+
+vputc1:		move.w	16(a6),d0	| Get ch
+		lsl.w	#8,d0		| Shift to high (odd) byte
+		move.w	(a0),d1		| Get word from video RAM
+		andi.w	#0x00FF,d1	| Mask off old odd character
+		or.w	d0,d1		| OR in the new character
+		move.w	d1,(a0)+	| Store the updated word in video RAM
+		addq.l	#2,a0		| Point at the attribute word
+		move.w	18(a6),(a0)	| Store new attributes in video RAM
+		bra	vputcx		| Done -- go return to caller
+
 		.end
Index: vlib/vputcv.s
===================================================================
--- vlib/vputcv.s	(revision f40a3096572fd1b0696a7f7c717464e68652e655)
+++ vlib/vputcv.s	(revision 283e7a64dc74f7abe8a66f643e188bbe4f250aa4)
@@ -1,64 +1,64 @@
-* ------------------------------------------------------------------------------
-* vputcv.s -- store a character and attributes in video RAM
-* Version 1 -- 1988-10-05 -- D.N. Lynx Crowe
-* (c) Copyright 1988 -- D.N. Lynx Crowe
-* ------------------------------------------------------------------------------
-*
-*	vputcv(adr, row, col, chr, atr, cols)
-*	unsigned int *adr, row, col, chr, atr, cols;
-*
-*		Stores character 'chr' at ('row', 'col') in the
-*		full attribute text object at 'adr' with
-*		attribute value 'atr' using a line length of 'len'.
-* ------------------------------------------------------------------------------
-*
+| ------------------------------------------------------------------------------
+| vputcv.s -- store a character and attributes in video RAM
+| Version 1 -- 1988-10-05 -- D.N. Lynx Crowe
+| (c) Copyright 1988 -- D.N. Lynx Crowe
+| ------------------------------------------------------------------------------
+
+|	vputcv(adr, row, col, chr, atr, cols)
+|	unsigned int |adr, row, col, chr, atr, cols;
+
+|		Stores character 'chr' at ('row', 'col') in the
+|		full attribute text object at 'adr' with
+|		attribute value 'atr' using a line length of 'len'.
+| ------------------------------------------------------------------------------
+
 		.text
-*
+
 		.xdef	_vputcv
-*
-P_ADR		.equ	8
-P_ROW		.equ	12
-P_COL		.equ	14
-P_CHR		.equ	16
-P_ATR		.equ	18
-P_LEN		.equ	20
-*
+
+P_ADR		=	8
+P_ROW		=	12
+P_COL		=	14
+P_CHR		=	16
+P_ATR		=	18
+P_LEN		=	20
+
 		.page
-*
-_vputcv:	link	a6,#0		* Link stack frame pointer
-		move.w	P_ROW(a6),d0	* Get row
-		mulu	P_LEN(a6),d0	* Multiply by len
-		clr.l	d1		* Clear out d1
-		move.w	P_COL(a6),d1	* Get col
-		add.l	d1,d0		* Add col into d0 to get char. #
-		move.l	d0,d1		* Develop cw = (cn/2)*6 in d1
-		andi.l	#$FFFFFFFE,d1	* ...
-		move.l	d1,d2		* ...
-		add.l	d1,d1		* ...
-		add.l	d2,d1		* ...
-		add.l	P_ADR(a6),d1	* Add sbase to cw
-		movea.l	d1,a0		* a0 points at the word with the char.
-		btst.l	#0,d0		* Odd char. location ?
-		bne	vputcv1		* Jump if so
-*
-		move.w	P_CHR(a6),d0	* Get chr
-		andi.w	#$00FF,d0	* Mask off garbage bits
-		move.w	(a0),d1		* Get word from video RAM
-		andi.w	#$FF00,d1	* Mask off old even character
-		or.w	d0,d1		* OR in the new character
-		move.w	d1,(a0)+	* Store the updated word in video RAM
-		bra	vputcvx		* Done -- go return to caller
-*
-vputcv1:	move.w	P_CHR(a6),d0	* Get chr
-		lsl.w	#8,d0		* Shift to high (odd) byte
-		move.w	(a0),d1		* Get word from video RAM
-		andi.w	#$00FF,d1	* Mask off old odd character
-		or.w	d0,d1		* OR in the new character
-		move.w	d1,(a0)+	* Store the updated word in video RAM
-		addq.l	#2,a0		* Point at the attribute word
-*
-vputcvx:	move.w	P_ATR(a6),(a0)	* Store new attributes in video RAM
-		unlk	a6		* Unlink the stack frame
-		rts			* Return to caller
-*
+
+_vputcv:	link	a6,#0		| Link stack frame pointer
+		move.w	P_ROW(a6),d0	| Get row
+		mulu	P_LEN(a6),d0	| Multiply by len
+		clr.l	d1		| Clear out d1
+		move.w	P_COL(a6),d1	| Get col
+		add.l	d1,d0		| Add col into d0 to get char. #
+		move.l	d0,d1		| Develop cw = (cn/2)|6 in d1
+		andi.l	#0xFFFFFFFE,d1	| ...
+		move.l	d1,d2		| ...
+		add.l	d1,d1		| ...
+		add.l	d2,d1		| ...
+		add.l	P_ADR(a6),d1	| Add sbase to cw
+		movea.l	d1,a0		| a0 points at the word with the char.
+		btst.l	#0,d0		| Odd char. location ?
+		bne	vputcv1		| Jump if so
+
+		move.w	P_CHR(a6),d0	| Get chr
+		andi.w	#0x00FF,d0	| Mask off garbage bits
+		move.w	(a0),d1		| Get word from video RAM
+		andi.w	#0xFF00,d1	| Mask off old even character
+		or.w	d0,d1		| OR in the new character
+		move.w	d1,(a0)+	| Store the updated word in video RAM
+		bra	vputcvx		| Done -- go return to caller
+
+vputcv1:	move.w	P_CHR(a6),d0	| Get chr
+		lsl.w	#8,d0		| Shift to high (odd) byte
+		move.w	(a0),d1		| Get word from video RAM
+		andi.w	#0x00FF,d1	| Mask off old odd character
+		or.w	d0,d1		| OR in the new character
+		move.w	d1,(a0)+	| Store the updated word in video RAM
+		addq.l	#2,a0		| Point at the attribute word
+
+vputcvx:	move.w	P_ATR(a6),(a0)	| Store new attributes in video RAM
+		unlk	a6		| Unlink the stack frame
+		rts			| Return to caller
+
 		.end
Index: vlib/vputp.s
===================================================================
--- vlib/vputp.s	(revision f40a3096572fd1b0696a7f7c717464e68652e655)
+++ vlib/vputp.s	(revision 283e7a64dc74f7abe8a66f643e188bbe4f250aa4)
@@ -1,109 +1,109 @@
-* ------------------------------------------------------------------------------
-* vputp.s -- put a pixel into a 4-bit per pixel bitmap object
-* Version 4 -- 1987-08-04 -- D.N. Lynx Crowe
-* (c) Copyright 1987 -- D.N. Lynx Crowe
-* ------------------------------------------------------------------------------
-*	int
-*	vputp(octad, xloc, yloc, val)
-*	struct octent *octad;
-*	int xloc, yloc;
-*
-*		Puts the pixel value 'val' at ('xloc','yloc') in the
-*		4-bit per pixel bitmap object described by 'octad'.
-*
-*	-----
-*	struct octent {
-*
-*		uint	ysize,
-*			xsize;
-*
-*		int	objx,
-*			objy;
-*
-*		uint	*obase;
-*
-*		char	opri,
-*			obank;
-*
-*		uint	odtw0,
-*			odtw1;
-*	};
-*
+| ------------------------------------------------------------------------------
+| vputp.s -- put a pixel into a 4-bit per pixel bitmap object
+| Version 4 -- 1987-08-04 -- D.N. Lynx Crowe
+| (c) Copyright 1987 -- D.N. Lynx Crowe
+| ------------------------------------------------------------------------------
+|	int
+|	vputp(octad, xloc, yloc, val)
+|	struct octent |octad;
+|	int xloc, yloc;
+
+|		Puts the pixel value 'val' at ('xloc','yloc') in the
+|		4-bit per pixel bitmap object described by 'octad'.
+
+|	-----
+|	struct octent {
+
+|		uint	ysize,
+|			xsize;
+
+|		int	objx,
+|			objy;
+
+|		uint	|obase;
+
+|		char	opri,
+|			obank;
+
+|		uint	odtw0,
+|			odtw1;
+|	};
+
 		.text
-*
+
 		.xdef	_vputp
-*
-OCTAD		.equ	8
-XLOC		.equ	12
-YLOC		.equ	14
-VAL		.equ	16
-*
-YSIZE		.equ	0
-XSIZE		.equ	2
-OBJX		.equ	4
-OBJY		.equ	6
-OBASE		.equ	8
-OPRI		.equ	12
-OBANK		.equ	13
-ODTW0		.equ	14
-ODTW1		.equ	16
-*
+
+OCTAD		=	8
+XLOC		=	12
+YLOC		=	14
+VAL		=	16
+
+YSIZE		=	0
+XSIZE		=	2
+OBJX		=	4
+OBJY		=	6
+OBASE		=	8
+OPRI		=	12
+OBANK		=	13
+ODTW0		=	14
+ODTW1		=	16
+
 		.page
-*
-_vputp:		link	a6,#0			* Link stack frames
-		movea.l	OCTAD(a6),a1		* Get OCTAD base into a1
-		move.w	XLOC(a6),d0		* Get XLOC into d0
-		cmp.w	XSIZE(a1),d0		* Check XLOC range
-		bge	vputerr			* ERROR if too large
-*
-		tst.w	d0			* Check XLOC sign
-		bmi	vputerr			* ERROR if negative
-*
-		move.w	YLOC(a6),d1		* Get YLOC into d1 to test
-		cmp.w	YSIZE(a1),d1		* Check YLOC range
-		bge	vputerr			* ERROR if too large
-*
-		tst.w	d1			* Check YLOC sign
-		bmi	vputerr			* ERROR if negative
-*
-		lsr.w	#2,d0			* Divide XLOC by 4
-		move.w	XSIZE(a1),d1		* Get width into d1
-		lsr.w	#2,d1			* Divide width by 4
-		mulu	YLOC(a6),d1		* Multiply width/4 by YLOC
-		ext.l	d0			* Extend XLOC/4 to a long
-		add.l	d0,d1			* ... and add it to d1
-		lsl.l	#1,d1			* Make d1 a word offset
-		add.l	OBASE(a1),d1		* Add OBASE to d1
-		movea.l	d1,a0			* Make a0 point at bitmap data
-		move.w	XLOC(a6),d0		* Get XLOC
-		andi.l	#$03,d0			* Mask to low 2 bits
-		add.l	d0,d0			* Multiply by 2 for word index
-		move.l	d0,d1			* Save index in d1
-		add.l	#MTAB,d0		* Add mask table base
-		movea.l	d0,a2			* a2 points at mask
-		add.l	#STAB,d1		* Add shift table base to index
-		move.l	d1,a1			* a1 points at shift count
-		move.w	(a1),d0			* Get shift count in d0
-		move.w	VAL(a6),d1		* Get new pixel in d1
-		andi.w	#$0F,d1			* Mask down to 4 bits
-		lsl.w	d0,d1			* Shift into position for OR
-		move.w	(a0),d0			* Get old bitmap word in d0
-		and.w	(a2),d0			* Mask out old pixel
-		or.w	d1,d0			* OR in new pixel
-		move.w	d0,(a0)			* Store updated word in bitmap
-		clr.l	d0			* Set return value = 0 = OK
-*
-vputexit:	unlk	a6			* Unlink stack frame
-		rts				* Return to caller
-*
-vputerr:	moveq.l	#-1,d0			* Set return value = -1 = ERROR
-		bra	vputexit		* Go unlink stack and return
-*
+
+_vputp:		link	a6,#0			| Link stack frames
+		movea.l	OCTAD(a6),a1		| Get OCTAD base into a1
+		move.w	XLOC(a6),d0		| Get XLOC into d0
+		cmp.w	XSIZE(a1),d0		| Check XLOC range
+		bge	vputerr			| ERROR if too large
+
+		tst.w	d0			| Check XLOC sign
+		bmi	vputerr			| ERROR if negative
+
+		move.w	YLOC(a6),d1		| Get YLOC into d1 to test
+		cmp.w	YSIZE(a1),d1		| Check YLOC range
+		bge	vputerr			| ERROR if too large
+
+		tst.w	d1			| Check YLOC sign
+		bmi	vputerr			| ERROR if negative
+
+		lsr.w	#2,d0			| Divide XLOC by 4
+		move.w	XSIZE(a1),d1		| Get width into d1
+		lsr.w	#2,d1			| Divide width by 4
+		mulu	YLOC(a6),d1		| Multiply width/4 by YLOC
+		ext.l	d0			| Extend XLOC/4 to a long
+		add.l	d0,d1			| ... and add it to d1
+		lsl.l	#1,d1			| Make d1 a word offset
+		add.l	OBASE(a1),d1		| Add OBASE to d1
+		movea.l	d1,a0			| Make a0 point at bitmap data
+		move.w	XLOC(a6),d0		| Get XLOC
+		andi.l	#0x03,d0		| Mask to low 2 bits
+		add.l	d0,d0			| Multiply by 2 for word index
+		move.l	d0,d1			| Save index in d1
+		add.l	#MTAB,d0		| Add mask table base
+		movea.l	d0,a2			| a2 points at mask
+		add.l	#STAB,d1		| Add shift table base to index
+		move.l	d1,a1			| a1 points at shift count
+		move.w	(a1),d0			| Get shift count in d0
+		move.w	VAL(a6),d1		| Get new pixel in d1
+		andi.w	#0x0F,d1		| Mask down to 4 bits
+		lsl.w	d0,d1			| Shift into position for OR
+		move.w	(a0),d0			| Get old bitmap word in d0
+		and.w	(a2),d0			| Mask out old pixel
+		or.w	d1,d0			| OR in new pixel
+		move.w	d0,(a0)			| Store updated word in bitmap
+		clr.l	d0			| Set return value = 0 = OK
+
+vputexit:	unlk	a6			| Unlink stack frame
+		rts				| Return to caller
+
+vputerr:	moveq.l	#-1,d0			| Set return value = -1 = ERROR
+		bra	vputexit		| Go unlink stack and return
+
 		.page
-*
+
 		.data
-*
-MTAB:		dc.w	$FFF0,$FF0F,$F0FF,$0FFF	* Mask table
-STAB:		dc.w	0,4,8,12		* Shift table
-*
+
+MTAB:		dc.w	0xFFF0,0xFF0F,0xF0FF,0x0FFF	| Mask table
+STAB:		dc.w	0,4,8,12		| Shift table
+
 		.end
Index: vlib/vsetav.s
===================================================================
--- vlib/vsetav.s	(revision f40a3096572fd1b0696a7f7c717464e68652e655)
+++ vlib/vsetav.s	(revision 283e7a64dc74f7abe8a66f643e188bbe4f250aa4)
@@ -1,50 +1,50 @@
-* ------------------------------------------------------------------------------
-* vsetav.s -- set a character's attributes in video RAM
-* Version 1 -- 1988-10-11 -- D.N. Lynx Crowe
-* (c) Copyright 1988 -- D.N. Lynx Crowe
-* ------------------------------------------------------------------------------
-*
-*	vsetav(adr, row, col, atr, len)
-*	unsigned int *adr, row, col, atr, len;
-*
-*		Sets attribute 'atr' at ('row', 'col') in the
-*		full attribute text object at 'adr'
-*		using a line length of 'len'.
-* ------------------------------------------------------------------------------
+| ------------------------------------------------------------------------------
+| vsetav.s -- set a character's attributes in video RAM
+| Version 1 -- 1988-10-11 -- D.N. Lynx Crowe
+| (c) Copyright 1988 -- D.N. Lynx Crowe
+| ------------------------------------------------------------------------------
+
+|	vsetav(adr, row, col, atr, len)
+|	unsigned int |adr, row, col, atr, len;
+
+|		Sets attribute 'atr' at ('row', 'col') in the
+|		full attribute text object at 'adr'
+|		using a line length of 'len'.
+| ------------------------------------------------------------------------------
 		.text
-*
+
 		.xdef	_vsetav
-*
-P_ADR		.equ	8
-P_ROW		.equ	12
-P_COL		.equ	14
-P_ATR		.equ	16
-P_LEN		.equ	18
-*
-_vsetav:	link	a6,#0		* Link stack frame pointer
-		move.w	P_ROW(a6),d0	* Get row
-		mulu	P_LEN(a6),d0	* Multiply by len
-		clr.l	d1		* Clear out d1
-		move.w	P_COL(a6),d1	* Get col
-		add.l	d1,d0		* Add col into d0 to get char. #
-		move.l	d0,d1		* Develop cw = (cn/2)*6 in d1
-		andi.l	#$FFFFFFFE,d1	* ...
-		move.l	d1,d2		* ...
-		add.l	d1,d1		* ...
-		add.l	d2,d1		* ...
-		add.l	P_ADR(a6),d1	* Add sbase to cw
-		movea.l	d1,a0		* a0 points at the word with the char.
-		btst.l	#0,d0		* Odd char. location ?
-		bne	vsetav1		* Jump if so
-*
-		addq.l	#2,a0		* Point at the attribute word
-		bra	vsetavx		* Go set attribute
-*
-vsetav1:	addq.l	#4,a0		* Point at the attribute word
-*
-vsetavx:	move.w	P_ATR(a6),d0	* Get new attributes
-		or.w	d0,(a0)		* Set new attributes in video RAM
-		unlk	a6		* Unlink the stack frame
-		rts			* Return to caller
-*
+
+P_ADR		=	8
+P_ROW		=	12
+P_COL		=	14
+P_ATR		=	16
+P_LEN		=	18
+
+_vsetav:	link	a6,#0		| Link stack frame pointer
+		move.w	P_ROW(a6),d0	| Get row
+		mulu	P_LEN(a6),d0	| Multiply by len
+		clr.l	d1		| Clear out d1
+		move.w	P_COL(a6),d1	| Get col
+		add.l	d1,d0		| Add col into d0 to get char. #
+		move.l	d0,d1		| Develop cw = (cn/2)|6 in d1
+		andi.l	#0xFFFFFFFE,d1	| ...
+		move.l	d1,d2		| ...
+		add.l	d1,d1		| ...
+		add.l	d2,d1		| ...
+		add.l	P_ADR(a6),d1	| Add sbase to cw
+		movea.l	d1,a0		| a0 points at the word with the char.
+		btst.l	#0,d0		| Odd char. location ?
+		bne	vsetav1		| Jump if so
+
+		addq.l	#2,a0		| Point at the attribute word
+		bra	vsetavx		| Go set attribute
+
+vsetav1:	addq.l	#4,a0		| Point at the attribute word
+
+vsetavx:	move.w	P_ATR(a6),d0	| Get new attributes
+		or.w	d0,(a0)		| Set new attributes in video RAM
+		unlk	a6		| Unlink the stack frame
+		rts			| Return to caller
+
 		.end
Index: vlib/vsetcv.s
===================================================================
--- vlib/vsetcv.s	(revision f40a3096572fd1b0696a7f7c717464e68652e655)
+++ vlib/vsetcv.s	(revision 283e7a64dc74f7abe8a66f643e188bbe4f250aa4)
@@ -1,52 +1,52 @@
-* ------------------------------------------------------------------------------
-* vsetcv.s -- set a character's colors in video RAM
-* Version 1 -- 1988-10-11 -- D.N. Lynx Crowe
-* (c) Copyright 1988 -- D.N. Lynx Crowe
-* ------------------------------------------------------------------------------
-*
-*	vsetcv(adr, row, col, cfb, len)
-*	unsigned int *adr, row, col, cfb, len;
-*
-*		Sets colors 'cfb' at ('row', 'col') in the
-*		full attribute text object at 'adr'
-*		using a line length of 'len'.
-* ------------------------------------------------------------------------------
+| ------------------------------------------------------------------------------
+| vsetcv.s -- set a character's colors in video RAM
+| Version 1 -- 1988-10-11 -- D.N. Lynx Crowe
+| (c) Copyright 1988 -- D.N. Lynx Crowe
+| ------------------------------------------------------------------------------
+
+|	vsetcv(adr, row, col, cfb, len)
+|	unsigned int |adr, row, col, cfb, len;
+
+|		Sets colors 'cfb' at ('row', 'col') in the
+|		full attribute text object at 'adr'
+|		using a line length of 'len'.
+| ------------------------------------------------------------------------------
 		.text
-*
+
 		.xdef	_vsetcv
-*
-P_ADR		.equ	8
-P_ROW		.equ	12
-P_COL		.equ	14
-P_CFB		.equ	16
-P_LEN		.equ	18
-*
-_vsetcv:	link	a6,#0		* Link stack frame pointer
-		move.w	P_ROW(a6),d0	* Get row
-		mulu	P_LEN(a6),d0	* Multiply by len
-		clr.l	d1		* Clear out d1
-		move.w	P_COL(a6),d1	* Get col
-		add.l	d1,d0		* Add col into d0 to get char. #
-		move.l	d0,d1		* Develop cw = (cn/2)*6 in d1
-		andi.l	#$FFFFFFFE,d1	* ...
-		move.l	d1,d2		* ...
-		add.l	d1,d1		* ...
-		add.l	d2,d1		* ...
-		add.l	P_ADR(a6),d1	* Add sbase to cw
-		movea.l	d1,a0		* a0 points at the word with the char.
-		btst.l	#0,d0		* Odd char. location ?
-		bne	vsetcv1		* Jump if so
-*
-		addq.l	#2,a0		* Point at the attribute word
-		bra	vsetcvx		* Go set attribute
-*
-vsetcv1:	addq.l	#4,a0		* Point at the attribute word
-*
-vsetcvx:	move.w	(a0),d0		* Get old attributes
-		andi.w	#$FF00,d0	* Remove old colors
-		or.w	P_CFB(a6),d0	* Get new colors
-		move.w	d0,(a0)		* Set new attributes in video RAM
-		unlk	a6		* Unlink the stack frame
-		rts			* Return to caller
-*
+
+P_ADR		=	8
+P_ROW		=	12
+P_COL		=	14
+P_CFB		=	16
+P_LEN		=	18
+
+_vsetcv:	link	a6,#0		| Link stack frame pointer
+		move.w	P_ROW(a6),d0	| Get row
+		mulu	P_LEN(a6),d0	| Multiply by len
+		clr.l	d1		| Clear out d1
+		move.w	P_COL(a6),d1	| Get col
+		add.l	d1,d0		| Add col into d0 to get char. #
+		move.l	d0,d1		| Develop cw = (cn/2)|6 in d1
+		andi.l	#0xFFFFFFFE,d1	| ...
+		move.l	d1,d2		| ...
+		add.l	d1,d1		| ...
+		add.l	d2,d1		| ...
+		add.l	P_ADR(a6),d1	| Add sbase to cw
+		movea.l	d1,a0		| a0 points at the word with the char.
+		btst.l	#0,d0		| Odd char. location ?
+		bne	vsetcv1		| Jump if so
+
+		addq.l	#2,a0		| Point at the attribute word
+		bra	vsetcvx		| Go set attribute
+
+vsetcv1:	addq.l	#4,a0		| Point at the attribute word
+
+vsetcvx:	move.w	(a0),d0		| Get old attributes
+		andi.w	#0xFF00,d0	| Remove old colors
+		or.w	P_CFB(a6),d0	| Get new colors
+		move.w	d0,(a0)		| Set new attributes in video RAM
+		unlk	a6		| Unlink the stack frame
+		rts			| Return to caller
+
 		.end
Index: vlib/vsplot4.s
===================================================================
--- vlib/vsplot4.s	(revision f40a3096572fd1b0696a7f7c717464e68652e655)
+++ vlib/vsplot4.s	(revision 283e7a64dc74f7abe8a66f643e188bbe4f250aa4)
@@ -1,157 +1,157 @@
-* ------------------------------------------------------------------------------
-* vsplot4.s -- output characters to a 4-bit / pixel graphics window
-*    with variable vertical pitch, etc.
-* Version 1 -- 1988-10-07 -- D.N. Lynx Crowe
-* (c) Copyright 1988 -- D.N. Lynx Crowe
-* ------------------------------------------------------------------------------
-*
-*	vsplot4(obase, nw, fg, row, col, str, pitch, ht, cgtab)
-*	uint *obase, nw, fg, row, col, pitch, ht, cgtab[][256];
-*	char *str;
-*
-*		Outputs characters from the string at 'str' to an 'nw'
-*		character wide 4-bit per pixel graphics window at 'obase'
-*		at ('row','col'), using 'fg' as the foreground color.
-*		Uses cgtab[][256] as the VSDD formatted character
-*		generator table.  Assumes 'ht' bit high characters in the
-*		cgtable.  Uses 'pitch' as the vertical spacing between
-*		character rows.  No error checks are done.
-*		The string must fit the output area (no overlaps, single line).
-*		This function leaves the zero pixels alone and just sets the
-*		one pixels to the foreground color, allowing overlapping
-*		character cells.
-* ------------------------------------------------------------------------------
+| ------------------------------------------------------------------------------
+| vsplot4.s -- output characters to a 4-bit / pixel graphics window
+|    with variable vertical pitch, etc.
+| Version 1 -- 1988-10-07 -- D.N. Lynx Crowe
+| (c) Copyright 1988 -- D.N. Lynx Crowe
+| ------------------------------------------------------------------------------
+
+|	vsplot4(obase, nw, fg, row, col, str, pitch, ht, cgtab)
+|	uint |obase, nw, fg, row, col, pitch, ht, cgtab[][256];
+|	char |str;
+
+|		Outputs characters from the string at 'str' to an 'nw'
+|		character wide 4-bit per pixel graphics window at 'obase'
+|		at ('row','col'), using 'fg' as the foreground color.
+|		Uses cgtab[][256] as the VSDD formatted character
+|		generator table.  Assumes 'ht' bit high characters in the
+|		cgtable.  Uses 'pitch' as the vertical spacing between
+|		character rows.  No error checks are done.
+|		The string must fit the output area (no overlaps, single line).
+|		This function leaves the zero pixels alone and just sets the
+|		one pixels to the foreground color, allowing overlapping
+|		character cells.
+| ------------------------------------------------------------------------------
 		.text
-*
+
 		.xdef	_vsplot4
-*
-* Argument offsets from a6:
-*
-OBASE		.equ	8		* LONG - Output area base address
-NW		.equ	12		* WORD - Character width of output area
-FG		.equ	14		* WORD - Foreground color
-ROW		.equ	16		* WORD - Row
-COL		.equ	18		* WORD - Column
-STR		.equ	20		* LONG - String base address
-PITCH		.equ	24		* WORD - Vertical spacing between rows
-HT		.equ	26		* WORD - Character height
-CGTAB		.equ	28		* LONG - Character generator pionter
-*
-* Program constant definitions:
-*
-HPIX		.equ	8		* Character width in pixels
-HCW		.equ	4		* Horizontal character width (bytes)
-PSHIFT		.equ	12		* Pixel shift into MS bits
-HSHIFT		.equ	4		* Pixel right shift
-*
+
+| Argument offsets from a6:
+
+OBASE		=	8		| LONG - Output area base address
+NW		=	12		| WORD - Character width of output area
+FG		=	14		| WORD - Foreground color
+ROW		=	16		| WORD - Row
+COL		=	18		| WORD - Column
+STR		=	20		| LONG - String base address
+PITCH		=	24		| WORD - Vertical spacing between rows
+HT		=	26		| WORD - Character height
+CGTAB		=	28		| LONG - Character generator pionter
+
+| Program constant definitions:
+
+HPIX		=	8		| Character width in pixels
+HCW		=	4		| Horizontal character width (bytes)
+PSHIFT		=	12		| Pixel shift into MS bits
+HSHIFT		=	4		| Pixel right shift
+
 		.page
-*
-* Register usage:
-*
-*	d0	output word and scratch
-*	d1	CG word and scratch
-*	d2	pixel counter
-*
-*	d3	foreground color (in the 4 ms bits)
-*	d4	background color (in the 4 ms bits)
-*	d5	width of the area in bytes
-*	d6	scan line counter
-*
-*	a0	CG table pointer
-*	a1	output area scan line pointer
-*	a2	input string character pointer
-*
-*	a3	output area character base pointer
-*
-*	a6	frame pointer
-*	a7	stack pointer
-*
+
+| Register usage:
+
+|	d0	output word and scratch
+|	d1	CG word and scratch
+|	d2	pixel counter
+
+|	d3	foreground color (in the 4 ms bits)
+|	d4	background color (in the 4 ms bits)
+|	d5	width of the area in bytes
+|	d6	scan line counter
+
+|	a0	CG table pointer
+|	a1	output area scan line pointer
+|	a2	input string character pointer
+
+|	a3	output area character base pointer
+
+|	a6	frame pointer
+|	a7	stack pointer
+
 		.page
-*
-_vsplot4:	link	a6,#0		* Link stack frames
-		movem.l	d3-d6/a3,-(a7)	* Save registers we use
-		move.w	#PSHIFT,d1	* Set shift constant
-		move.w	FG(a6),d3	* Setup foreground color
-		lsl.w	d1,d3		* ... in ms 4 bits of d3.W
-		move.w	NW(a6),d5	* Get line width in d5.W
-		lsl.w	#2,d5		* Multiply width by 4 for offset
-		move.w	ROW(a6),d0	* Calculate output address
-		move.w	PITCH(a6),d1	* ... PITCH
-		mulu	d1,d0		* ... * ROW
-		add.w	HT(a6),d0	* ... + HT-1
-		subq.w	#1,d0		* ...
-		mulu	d5,d0		* ... * NW
-		clr.l	d1		* ...
-		move.w	COL(a6),d1	* ... + 
-		lsl.w	#2,d1		* ... COL * 4
-		add.l	d1,d0		* ...
-		add.l	OBASE(a6),d0	* ... + OBASE
-		movea.l	d0,a3		* Leave output address in a3
-		movea.l	STR(a6),a2	* Put string address in a2
-*
-cgl0:		clr.l	d0		* Clear out upper bits of d0
-		move.b	(a2)+,d0	* Get next character
-		beq	cgl5		* Done if character EQ 0
-*
-		movea.l	a3,a1		* Establish output pointer in a1
-		adda.l	#HCW,a3		* Update output pointer for next char.
-		movea.l	CGTAB(a6),a0	* Establish CG pointer in a0
-		lsl.w	#1,d0		* ... 2 * character
-		adda.w	d0,a0		* ... + cgtab address
-		move.w	HT(a6),d6	* Set scan line counter in d6
-		subq.w	#1,d6		* ...
-*
+
+_vsplot4:	link	a6,#0		| Link stack frames
+		movem.l	d3-d6/a3,-(a7)	| Save registers we use
+		move.w	#PSHIFT,d1	| Set shift constant
+		move.w	FG(a6),d3	| Setup foreground color
+		lsl.w	d1,d3		| ... in ms 4 bits of d3.W
+		move.w	NW(a6),d5	| Get line width in d5.W
+		lsl.w	#2,d5		| Multiply width by 4 for offset
+		move.w	ROW(a6),d0	| Calculate output address
+		move.w	PITCH(a6),d1	| ... PITCH
+		mulu	d1,d0		| ... | ROW
+		add.w	HT(a6),d0	| ... + HT-1
+		subq.w	#1,d0		| ...
+		mulu	d5,d0		| ... | NW
+		clr.l	d1		| ...
+		move.w	COL(a6),d1	| ... +
+		lsl.w	#2,d1		| ... COL | 4
+		add.l	d1,d0		| ...
+		add.l	OBASE(a6),d0	| ... + OBASE
+		movea.l	d0,a3		| Leave output address in a3
+		movea.l	STR(a6),a2	| Put string address in a2
+
+cgl0:		clr.l	d0		| Clear out upper bits of d0
+		move.b	(a2)+,d0	| Get next character
+		beq	cgl5		| Done if character EQ 0
+
+		movea.l	a3,a1		| Establish output pointer in a1
+		adda.l	#HCW,a3		| Update output pointer for next char.
+		movea.l	CGTAB(a6),a0	| Establish CG pointer in a0
+		lsl.w	#1,d0		| ... 2 | character
+		adda.w	d0,a0		| ... + cgtab address
+		move.w	HT(a6),d6	| Set scan line counter in d6
+		subq.w	#1,d6		| ...
+
 		.page
-cgl1:		move.w	(a0),d1		* Get character generator word in d1
-		move.w	#(HPIX/2)-1,d2	* Set pixel counter in d2
-		clr.l	d4		* Get old output word as background
-		move.w	(a1),d4		* ...
-		swap	d4		* ...
-*
-cgl2:		lsr.w	#HSHIFT,d0	* Shift output word right 1 pixel
-		lsr.l	#HSHIFT,d4	* Shift background word 1 pixel
-		andi.l	#$FFFFF000,d4	* Mask for upper 4 bits of d4.W
-		btst.l	#0,d1		* Check CG word ls bit
-		beq	cgl3		* Set background color if bit EQ 0
-*
-		or.w	d3,d0		* OR foreground color into output word
-		bra	cgl4		* Go update CG word
-*
-cgl3:		or.w	d4,d0		* OR background color into output word
-*
-cgl4:		lsr.w	#1,d1		* Shift CG word right 1 pixel
-		dbf	d2,cgl2		* Loop for first 4 pixels
-*
-		move.w	d0,(a1)+	* Store first output word in scan line
-		move.w	#(HPIX/2)-1,d2	* Set pixel counter in d2
-		clr.l	d4		* Get old output word as background
-		move.w	(a1),d4		* ...
-		swap	d4		* ...
-*
-cgl2a:		lsr.w	#HSHIFT,d0	* Shift output word right 1 pixel
-		lsr.l	#HSHIFT,d4	* Shift background word 1 pixel
-		andi.l	#$FFFFF000,d4	* Mask for upper bits of d4.W
-		btst.l	#0,d1		* Check CG word ls bit
-		beq	cgl3a		* Set background color if bit EQ 0
-*
-		or.w	d3,d0		* OR foreground color into output word
-		bra	cgl4a		* Go update CG word
-*
-cgl3a:		or.w	d4,d0		* OR background color into output word
-*
-cgl4a:		lsr.w	#1,d1		* Shift CG word right 1 pixel
-		dbf	d2,cgl2a	* Loop for last 4 pixels
-*
-		move.w	d0,(a1)		* Store second output word in scan line
-		suba.w	d5,a1		* Update output pointer
-		suba.w	#2,a1		* ...
-		adda.l	#512,a0		* Update CG pointer for next scan line
-		dbf	d6,cgl1		* Loop for all scan lines
-*
-		bra	cgl0		* Loop for next character
-*
-cgl5:		movem.l	(a7)+,d3-d6/a3	* Restore registers
-		unlk	a6		* Unlink stack frames
-		rts			* Return to caller
-*
+cgl1:		move.w	(a0),d1		| Get character generator word in d1
+		move.w	#(HPIX/2)-1,d2	| Set pixel counter in d2
+		clr.l	d4		| Get old output word as background
+		move.w	(a1),d4		| ...
+		swap	d4		| ...
+
+cgl2:		lsr.w	#HSHIFT,d0	| Shift output word right 1 pixel
+		lsr.l	#HSHIFT,d4	| Shift background word 1 pixel
+		andi.l	#0xFFFFF000,d4	| Mask for upper 4 bits of d4.W
+		btst.l	#0,d1		| Check CG word ls bit
+		beq	cgl3		| Set background color if bit EQ 0
+
+		or.w	d3,d0		| OR foreground color into output word
+		bra	cgl4		| Go update CG word
+
+cgl3:		or.w	d4,d0		| OR background color into output word
+
+cgl4:		lsr.w	#1,d1		| Shift CG word right 1 pixel
+		dbf	d2,cgl2		| Loop for first 4 pixels
+
+		move.w	d0,(a1)+	| Store first output word in scan line
+		move.w	#(HPIX/2)-1,d2	| Set pixel counter in d2
+		clr.l	d4		| Get old output word as background
+		move.w	(a1),d4		| ...
+		swap	d4		| ...
+
+cgl2a:		lsr.w	#HSHIFT,d0	| Shift output word right 1 pixel
+		lsr.l	#HSHIFT,d4	| Shift background word 1 pixel
+		andi.l	#0xFFFFF000,d4	| Mask for upper bits of d4.W
+		btst.l	#0,d1		| Check CG word ls bit
+		beq	cgl3a		| Set background color if bit EQ 0
+
+		or.w	d3,d0		| OR foreground color into output word
+		bra	cgl4a		| Go update CG word
+
+cgl3a:		or.w	d4,d0		| OR background color into output word
+
+cgl4a:		lsr.w	#1,d1		| Shift CG word right 1 pixel
+		dbf	d2,cgl2a	| Loop for last 4 pixels
+
+		move.w	d0,(a1)		| Store second output word in scan line
+		suba.w	d5,a1		| Update output pointer
+		suba.w	#2,a1		| ...
+		adda.l	#512,a0		| Update CG pointer for next scan line
+		dbf	d6,cgl1		| Loop for all scan lines
+
+		bra	cgl0		| Loop for next character
+
+cgl5:		movem.l	(a7)+,d3-d6/a3	| Restore registers
+		unlk	a6		| Unlink stack frames
+		rts			| Return to caller
+
 		.end
Index: vlib/vvputsv.s
===================================================================
--- vlib/vvputsv.s	(revision f40a3096572fd1b0696a7f7c717464e68652e655)
+++ vlib/vvputsv.s	(revision 283e7a64dc74f7abe8a66f643e188bbe4f250aa4)
@@ -1,148 +1,148 @@
-* ------------------------------------------------------------------------------
-* vvputsv.s -- output characters to a 4-bit / pixel graphics window
-* with variable vertical pitch
-* Version 1 -- 1988-10-07 -- D.N. Lynx Crowe
-* (c) Copyright 1988 -- D.N. Lynx Crowe
-* ------------------------------------------------------------------------------
-*
-*	vvputsv(obase, nw, fg, bg, row, col, str, pitch, ht, cgtab)
-*	uint *obase, nw, fg, bg, row, col, pitch, ht, cgtab[][256];
-*	char *str;
-*
-*		Outputs characters from the string at 'str' to an 'nw'
-*		character wide 4-bit per pixel graphics window at 'obase'
-*		at ('row','col'), using 'fg' as the foreground color, and
-*		'bg' as the background color.  Uses cgtab[][256] as the
-*		VSDD formatted character generator table.  Assumes 'ht' line
-*		high characters in the cg table.  Uses 'pitch' as the vertical
-*		spacing between character rows.  No error checks are done.
-*		The string must fit the output area (no overlaps, single line).
-*
-* ------------------------------------------------------------------------------
+| ------------------------------------------------------------------------------
+| vvputsv.s -- output characters to a 4-bit / pixel graphics window
+| with variable vertical pitch
+| Version 1 -- 1988-10-07 -- D.N. Lynx Crowe
+| (c) Copyright 1988 -- D.N. Lynx Crowe
+| ------------------------------------------------------------------------------
+
+|	vvputsv(obase, nw, fg, bg, row, col, str, pitch, ht, cgtab)
+|	uint |obase, nw, fg, bg, row, col, pitch, ht, cgtab[][256];
+|	char |str;
+
+|		Outputs characters from the string at 'str' to an 'nw'
+|		character wide 4-bit per pixel graphics window at 'obase'
+|		at ('row','col'), using 'fg' as the foreground color, and
+|		'bg' as the background color.  Uses cgtab[][256] as the
+|		VSDD formatted character generator table.  Assumes 'ht' line
+|		high characters in the cg table.  Uses 'pitch' as the vertical
+|		spacing between character rows.  No error checks are done.
+|		The string must fit the output area (no overlaps, single line).
+
+| ------------------------------------------------------------------------------
 		.text
-*
+
 		.xdef	_vvputsv
-*
-* Argument offsets from a6:
-*
-OBASE		.equ	8		* LONG - Output area base address
-NW		.equ	12		* WORD - Character width of output area
-FG		.equ	14		* WORD - Foreground color
-BG		.equ	16		* WORD - Background color
-ROW		.equ	18		* WORD - Row
-COL		.equ	20		* WORD - Column
-STR		.equ	22		* LONG - String base address
-PITCH		.equ	26		* WORD - Vertical spacing between rows
-HT		.equ	28		* WORD - Character height  (LE PITCH)
-CGTAB		.equ	30		* LONG - Character generator table
-*
-* Program constant definitions:
-*
-HPIX		.equ	8		* Character width in pixels
-HCW		.equ	4		* Horizontal character width (bytes)
-PSHIFT		.equ	12		* Pixel shift into MS bits
-HSHIFT		.equ	4		* Pixel right shift
-*
+
+| Argument offsets from a6:
+
+OBASE		=	8		| LONG - Output area base address
+NW		=	12		| WORD - Character width of output area
+FG		=	14		| WORD - Foreground color
+BG		=	16		| WORD - Background color
+ROW		=	18		| WORD - Row
+COL		=	20		| WORD - Column
+STR		=	22		| LONG - String base address
+PITCH		=	26		| WORD - Vertical spacing between rows
+HT		=	28		| WORD - Character height  (LE PITCH)
+CGTAB		=	30		| LONG - Character generator table
+
+| Program constant definitions:
+
+HPIX		=	8		| Character width in pixels
+HCW		=	4		| Horizontal character width (bytes)
+PSHIFT		=	12		| Pixel shift into MS bits
+HSHIFT		=	4		| Pixel right shift
+
 		.page
-*
-* Register usage:
-*
-*	d0	output word and scratch
-*	d1	CG word and scratch
-*	d2	pixel counter
-*
-*	d3	foreground color (in the 4 ms bits)
-*	d4	background color (in the 4 ms bits)
-*	d5	width of the area in bytes
-*	d6	scan line counter
-*
-*	a0	CG table pointer
-*	a1	output area scan line pointer
-*	a2	input string character pointer
-*
-*	a3	output area character base pointer
-*
-*	a6	frame pointer
-*	a7	stack pointer
-*
+
+| Register usage:
+
+|	d0	output word and scratch
+|	d1	CG word and scratch
+|	d2	pixel counter
+
+|	d3	foreground color (in the 4 ms bits)
+|	d4	background color (in the 4 ms bits)
+|	d5	width of the area in bytes
+|	d6	scan line counter
+
+|	a0	CG table pointer
+|	a1	output area scan line pointer
+|	a2	input string character pointer
+
+|	a3	output area character base pointer
+
+|	a6	frame pointer
+|	a7	stack pointer
+
 		.page
-*
-_vvputsv:	link	a6,#0		* Link stack frames
-		movem.l	d3-d6/a3,-(a7)	* Save registers we use
-		move.w	#PSHIFT,d1	* Set shift constant
-		move.w	FG(a6),d3	* Setup foreground color
-		lsl.w	d1,d3		* ... in ms 4 bits of d3.W
-		move.w	BG(a6),d4	* Setup background color
-		lsl.w	d1,d4		* ... in ms 4 bits of d4.W
-		move.w	NW(a6),d5	* Get line width in d5.W
-		lsl.w	#2,d5		* Multiply width by 4 for offset
-		move.w	ROW(a6),d0	* Calculate output address
-		move.w	PITCH(a6),d1	* ... PITCH
-		mulu	d1,d0		* ... * ROW
-		add.w	#HT(a6),d0	* ... + HT-1
-		subq.w	#1,d0		* ...
-		mulu	d5,d0		* ... * NW
-		clr.l	d1		* ...
-		move.w	COL(a6),d1	* ... + 
-		lsl.w	#2,d1		* ... COL * 4
-		add.l	d1,d0		* ...
-		add.l	OBASE(a6),d0	* ... + OBASE
-		movea.l	d0,a3		* Leave output address in a3
-		movea.l	STR(a6),a2	* Put string address in a2
-*
-cgl0:		clr.l	d0		* Clear out upper bits of d0
-		move.b	(a2)+,d0	* Get next character
-		beq	cgl5		* Done if character EQ 0
-*
-		movea.l	a3,a1		* Establish output pointer in a1
-		adda.l	#HCW,a3		* Update output pointer for next char.
-		movea.l	CGTAB(a6),a0	* Establish CG pointer in a0
-		lsl.w	#1,d0		* ... 2 * character
-		adda.w	d0,a0		* ... + cg table address
-		move.w	HT(a6),d6	* Set scan line counter in d6
-		subq.w	#1,d6		* ... to HT-1
-*
+
+_vvputsv:	link	a6,#0		| Link stack frames
+		movem.l	d3-d6/a3,-(a7)	| Save registers we use
+		move.w	#PSHIFT,d1	| Set shift constant
+		move.w	FG(a6),d3	| Setup foreground color
+		lsl.w	d1,d3		| ... in ms 4 bits of d3.W
+		move.w	BG(a6),d4	| Setup background color
+		lsl.w	d1,d4		| ... in ms 4 bits of d4.W
+		move.w	NW(a6),d5	| Get line width in d5.W
+		lsl.w	#2,d5		| Multiply width by 4 for offset
+		move.w	ROW(a6),d0	| Calculate output address
+		move.w	PITCH(a6),d1	| ... PITCH
+		mulu	d1,d0		| ... | ROW
+		add.w	HT(a6),d0	| ... + HT-1
+		subq.w	#1,d0		| ...
+		mulu	d5,d0		| ... | NW
+		clr.l	d1		| ...
+		move.w	COL(a6),d1	| ... +
+		lsl.w	#2,d1		| ... COL | 4
+		add.l	d1,d0		| ...
+		add.l	OBASE(a6),d0	| ... + OBASE
+		movea.l	d0,a3		| Leave output address in a3
+		movea.l	STR(a6),a2	| Put string address in a2
+
+cgl0:		clr.l	d0		| Clear out upper bits of d0
+		move.b	(a2)+,d0	| Get next character
+		beq	cgl5		| Done if character EQ 0
+
+		movea.l	a3,a1		| Establish output pointer in a1
+		adda.l	#HCW,a3		| Update output pointer for next char.
+		movea.l	CGTAB(a6),a0	| Establish CG pointer in a0
+		lsl.w	#1,d0		| ... 2 | character
+		adda.w	d0,a0		| ... + cg table address
+		move.w	HT(a6),d6	| Set scan line counter in d6
+		subq.w	#1,d6		| ... to HT-1
+
 		.page
-cgl1:		move.w	(a0),d1		* Get character generator word in d1
-		move.w	#(HPIX/2)-1,d2	* Set pixel counter in d2
-*
-cgl2:		lsr.w	#HSHIFT,d0	* Shift output word right 1 pixel
-		btst.l	#0,d1		* Check CG word ls bit
-		beq	cgl3		* Set background color if bit EQ 0
-*
-		or.w	d3,d0		* OR foreground color into output word
-		bra	cgl4		* Go update CG word
-*
-cgl3:		or.w	d4,d0		* OR background color into output word
-*
-cgl4:		lsr.w	#1,d1		* Shift CG word right 1 pixel
-		dbf	d2,cgl2		* Loop for first 4 pixels
-*
-		move.w	d0,(a1)+	* Store first output word in scan line
-		move.w	#(HPIX/2)-1,d2	* Set pixel counter in d2
-*
-cgl2a:		lsr.w	#HSHIFT,d0	* Shift output word right 1 pixel
-		btst.l	#0,d1		* Check CG word ls bit
-		beq	cgl3a		* Set background color if bit EQ 0
-*
-		or.w	d3,d0		* OR foreground color into output word
-		bra	cgl4a		* Go update CG word
-*
-cgl3a:		or.w	d4,d0		* OR background color into output word
-*
-cgl4a:		lsr.w	#1,d1		* Shift CG word right 1 pixel
-		dbf	d2,cgl2a	* Loop for last 4 pixels
-*
-		move.w	d0,(a1)		* Store second output word in scan line
-		suba.w	d5,a1		* Update output pointer
-		suba.w	#2,a1		* ...
-		adda.l	#512,a0		* Update CG pointer for next scan line
-		dbf	d6,cgl1		* Loop for all scan lines
-*
-		bra	cgl0		* Loop for next character
-*
-cgl5:		movem.l	(a7)+,d3-d6/a3	* Restore registers
-		unlk	a6		* Unlink stack frames
-		rts			* Return to caller
-*
+cgl1:		move.w	(a0),d1		| Get character generator word in d1
+		move.w	#(HPIX/2)-1,d2	| Set pixel counter in d2
+
+cgl2:		lsr.w	#HSHIFT,d0	| Shift output word right 1 pixel
+		btst.l	#0,d1		| Check CG word ls bit
+		beq	cgl3		| Set background color if bit EQ 0
+
+		or.w	d3,d0		| OR foreground color into output word
+		bra	cgl4		| Go update CG word
+
+cgl3:		or.w	d4,d0		| OR background color into output word
+
+cgl4:		lsr.w	#1,d1		| Shift CG word right 1 pixel
+		dbf	d2,cgl2		| Loop for first 4 pixels
+
+		move.w	d0,(a1)+	| Store first output word in scan line
+		move.w	#(HPIX/2)-1,d2	| Set pixel counter in d2
+
+cgl2a:		lsr.w	#HSHIFT,d0	| Shift output word right 1 pixel
+		btst.l	#0,d1		| Check CG word ls bit
+		beq	cgl3a		| Set background color if bit EQ 0
+
+		or.w	d3,d0		| OR foreground color into output word
+		bra	cgl4a		| Go update CG word
+
+cgl3a:		or.w	d4,d0		| OR background color into output word
+
+cgl4a:		lsr.w	#1,d1		| Shift CG word right 1 pixel
+		dbf	d2,cgl2a	| Loop for last 4 pixels
+
+		move.w	d0,(a1)		| Store second output word in scan line
+		suba.w	d5,a1		| Update output pointer
+		suba.w	#2,a1		| ...
+		adda.l	#512,a0		| Update CG pointer for next scan line
+		dbf	d6,cgl1		| Loop for all scan lines
+
+		bra	cgl0		| Loop for next character
+
+cgl5:		movem.l	(a7)+,d3-d6/a3	| Restore registers
+		unlk	a6		| Unlink stack frames
+		rts			| Return to caller
+
 		.end
Index: vlib/vwputp.s
===================================================================
--- vlib/vwputp.s	(revision f40a3096572fd1b0696a7f7c717464e68652e655)
+++ vlib/vwputp.s	(revision 283e7a64dc74f7abe8a66f643e188bbe4f250aa4)
@@ -1,108 +1,108 @@
-* ------------------------------------------------------------------------------
-* vwputp.s -- put a pixel into a 2-bit per pixel bitmap object
-* Version 2 -- 1987-04-14 -- D.N. Lynx Crowe
-* (c) Copyright 1987 -- D.N. Lynx Crowe
-* ------------------------------------------------------------------------------
-*	int
-*	vwputp(octad, xloc, yloc, val)
-*	struct octent *octad;
-*	int xloc, yloc;
-*
-*		Writes the pixel value 'val' into the 2-bit per pixel
-*		bitmap object described by 'octad' at ('xloc','yloc').
-*
-*	-----
-*
-*	struct octent {
-*
-*		uint	ysize,
-*			xsize;
-*
-*		int	objx,
-*			objy;
-*
-*		uint	*obase;
-*
-*		char	opri,
-*			oflags;
-*
-*		uint	odtw0,
-*			odtw1;
-*	};
-*
-*	Upper left corner of screen is (0,0) origin.
-*
+| ------------------------------------------------------------------------------
+| vwputp.s -- put a pixel into a 2-bit per pixel bitmap object
+| Version 2 -- 1987-04-14 -- D.N. Lynx Crowe
+| (c) Copyright 1987 -- D.N. Lynx Crowe
+| ------------------------------------------------------------------------------
+|	int
+|	vwputp(octad, xloc, yloc, val)
+|	struct octent |octad;
+|	int xloc, yloc;
+
+|		Writes the pixel value 'val' into the 2-bit per pixel
+|		bitmap object described by 'octad' at ('xloc','yloc').
+
+|	-----
+
+|	struct octent {
+
+|		uint	ysize,
+|			xsize;
+
+|		int	objx,
+|			objy;
+
+|		uint	|obase;
+
+|		char	opri,
+|			oflags;
+
+|		uint	odtw0,
+|			odtw1;
+|	};
+
+|	Upper left corner of screen is (0,0) origin.
+
 		.text
-*
+
 		.xdef	_vputp
-*
-OCTAD		.equ	8
-XLOC		.equ	12
-YLOC		.equ	14
-VAL		.equ	16
-*
-YSIZE		.equ	0
-XSIZE		.equ	2
-OBJX		.equ	4
-OBJY		.equ	6
-OBASE		.equ	8
-OPRI		.equ	12
-OFLAGS		.equ	13
-ODTW0		.equ	14
-ODTW1		.equ	16
-*
+
+OCTAD		=	8
+XLOC		=	12
+YLOC		=	14
+VAL		=	16
+
+YSIZE		=	0
+XSIZE		=	2
+OBJX		=	4
+OBJY		=	6
+OBASE		=	8
+OPRI		=	12
+OFLAGS		=	13
+ODTW0		=	14
+ODTW1		=	16
+
 		.page
-*
-_vwputp:	link	a6,#0			* Link stack frames
-		movea.l	OCTAD(a6),a1		* Get OCTAD base into a1
-		move.w	XLOC(a6),d0		* Get XLOC into d0
-		cmp.w	XSIZE(a1),d0		* Check XLOC range
-		bge	vputerr			* ERROR if too large
-*
-		tst.w	d0			* Check XLOC sign
-		bmi	vputerr			* ERROR if negative
-*
-		move.w	YLOC(a6),d1		* Get YLOC into d1 to test
-		cmp.w	YSIZE(a1),d1		* Check YLOC range
-		bge	vputerr			* ERROR if too large
-*
-		tst.w	d1			* Check YLOC sign
-		bmi	vputerr			* ERROR if negative
-*
-		lsr.w	#3,d0			* Divide XLOC by 8
-		move.w	XSIZE(a1),d1		* Get width into d1
-		lsr.w	#3,d1			* Divide width by 8
-		mulu	YLOC(a6),d1		* Multiply width/8 by YLOC
-		ext.l	d0			* Extend XLOC/8 to a long
-		add.l	d0,d1			* ... and add it to d1
-		add.l	OBASE(a1),d1		* Add OBASE to d1
-		movea.l	d1,a0			* Make a0 point at bitmap data
-		move.w	XLOC(a6),d0		* Get XLOC
-		andi.l	#$07,d0			* Mask to low 3 bits
-		add.l	d0,d0			* Multiply by 2 for word index
-		move.l	d0,d1			* Save index in d1
-		add.l	#MTAB,d0		* Add mask table base
-		movea.l	d0,a2			* a2 points at mask
-		add.l	#STAB,d1		* Add shift table base to index
-		move.l	d1,a1			* a1 points at shift count
-		move.w	(a1),d0			* Get shift count in d0
-		move.w	VAL(a6),d1		* Get new pixel in d1
-		andi.w	#$03,d1			* Mask down to 2 bits
-		lsl.w	d0,d1			* Shift into position for OR
-		move.w	(a0),d0			* Get old bitmap word in d0
-		and.w	(a2),d0			* Mask out old pixel
-		or.w	d1,d0			* OR in new pixel
-		move.w	d0,(a0)			* Store updated word in bitmap
-		clr.l	d0			* Set return value = 0 = OK
-*
-vputexit:	unlk	a6			* Unlink stack frame
-		rts				* Return to caller
-*
-vputerr:	moveq.l	#-1,d0			* Set return value = -1 = ERROR
-		bra	vputexit		* Go unlink stack and return
-*
-MTAB:		dc.w	$FFFC,$FFF3,$FFCF,$FF3F	* Mask table
-		dc.w	$FCFF,$F3FF,$CFFF,$3FFF
-STAB:		dc.w	0,2,4,6,8,10,12,14	* Shift table
-*
+
+_vwputp:	link	a6,#0			| Link stack frames
+		movea.l	OCTAD(a6),a1		| Get OCTAD base into a1
+		move.w	XLOC(a6),d0		| Get XLOC into d0
+		cmp.w	XSIZE(a1),d0		| Check XLOC range
+		bge	vputerr			| ERROR if too large
+
+		tst.w	d0			| Check XLOC sign
+		bmi	vputerr			| ERROR if negative
+
+		move.w	YLOC(a6),d1		| Get YLOC into d1 to test
+		cmp.w	YSIZE(a1),d1		| Check YLOC range
+		bge	vputerr			| ERROR if too large
+
+		tst.w	d1			| Check YLOC sign
+		bmi	vputerr			| ERROR if negative
+
+		lsr.w	#3,d0			| Divide XLOC by 8
+		move.w	XSIZE(a1),d1		| Get width into d1
+		lsr.w	#3,d1			| Divide width by 8
+		mulu	YLOC(a6),d1		| Multiply width/8 by YLOC
+		ext.l	d0			| Extend XLOC/8 to a long
+		add.l	d0,d1			| ... and add it to d1
+		add.l	OBASE(a1),d1		| Add OBASE to d1
+		movea.l	d1,a0			| Make a0 point at bitmap data
+		move.w	XLOC(a6),d0		| Get XLOC
+		andi.l	#0x07,d0		| Mask to low 3 bits
+		add.l	d0,d0			| Multiply by 2 for word index
+		move.l	d0,d1			| Save index in d1
+		add.l	#MTAB,d0		| Add mask table base
+		movea.l	d0,a2			| a2 points at mask
+		add.l	#STAB,d1		| Add shift table base to index
+		move.l	d1,a1			| a1 points at shift count
+		move.w	(a1),d0			| Get shift count in d0
+		move.w	VAL(a6),d1		| Get new pixel in d1
+		andi.w	#0x03,d1		| Mask down to 2 bits
+		lsl.w	d0,d1			| Shift into position for OR
+		move.w	(a0),d0			| Get old bitmap word in d0
+		and.w	(a2),d0			| Mask out old pixel
+		or.w	d1,d0			| OR in new pixel
+		move.w	d0,(a0)			| Store updated word in bitmap
+		clr.l	d0			| Set return value = 0 = OK
+
+vputexit:	unlk	a6			| Unlink stack frame
+		rts				| Return to caller
+
+vputerr:	moveq.l	#-1,d0			| Set return value = -1 = ERROR
+		bra	vputexit		| Go unlink stack and return
+
+MTAB:		dc.w	0xFFFC,0xFFF3,0xFFCF,0xFF3F	| Mask table
+		dc.w	0xFCFF,0xF3FF,0xCFFF,0x3FFF
+STAB:		dc.w	0,2,4,6,8,10,12,14	| Shift table
+
 		.end
Index: vlib/vwputs.s
===================================================================
--- vlib/vwputs.s	(revision f40a3096572fd1b0696a7f7c717464e68652e655)
+++ vlib/vwputs.s	(revision 283e7a64dc74f7abe8a66f643e188bbe4f250aa4)
@@ -1,118 +1,118 @@
-* ------------------------------------------------------------------------------
-* vwputs.s -- output a character string to a 2-bit per pixel graphics window
-* Version 9 -- 1987-07-28 -- D.N. Lynx Crowe
-* (c) Copyright 1987 -- D.N. Lynx Crowe
-* ------------------------------------------------------------------------------
-*
-*	vwputs(obase, nw, fg, bg, row, col, str)
-*	int *obase, nw, fg, bg, row, col;
-*	char *str;
-*
-*		Outputs characters from the string at 'str' to an 'nw'
-*		character wide 2-bit per pixel graphics window at 'obase'
-*		at ('row','col'), using 'fg' as the foreground color, and
-*		'bg' as the background color.  Uses cgtable[][256] as the
-*		VSDD formatted character generator table.
-*		No error checks are done.
-* ------------------------------------------------------------------------------
-*
+| ------------------------------------------------------------------------------
+| vwputs.s -- output a character string to a 2-bit per pixel graphics window
+| Version 9 -- 1987-07-28 -- D.N. Lynx Crowe
+| (c) Copyright 1987 -- D.N. Lynx Crowe
+| ------------------------------------------------------------------------------
+
+|	vwputs(obase, nw, fg, bg, row, col, str)
+|	int |obase, nw, fg, bg, row, col;
+|	char |str;
+
+|		Outputs characters from the string at 'str' to an 'nw'
+|		character wide 2-bit per pixel graphics window at 'obase'
+|		at ('row','col'), using 'fg' as the foreground color, and
+|		'bg' as the background color.  Uses cgtable[][256] as the
+|		VSDD formatted character generator table.
+|		No error checks are done.
+| ------------------------------------------------------------------------------
+
 		.text
 		.xdef	_vwputs
-*
+
 		.xref	_cgtable
-*
-* Argument offsets from a6:
-*
-OBASE		.equ	8		* L:  Output area base address
-NW		.equ	12		* W:  Character width of output area
-FG		.equ	14		* W:  Foreground color
-BG		.equ	16		* W:  Background color
-ROW		.equ	18		* W:  Row
-COL		.equ	20		* W:  Column
-STR		.equ	22		* L:  String base address
-*
-* Miscellaneous constants:
-*
-HPIX		.equ	8		* Horizontal pixels in the character
-*
-NVPIX		.equ	12		* Vertical pixels in the character
-VPITCH		.equ	12		* Vertical pitch between characters
-*
-* Register usage:
-*
-*	d0	output word and scratch
-*	d1	CG word and scratch
-*	d2	pixel counter
-*	d3	foreground color (in the 2 ms bits)
-*	d4	background color (in the 2 ms bits)
-*	d5	width of the area in bytes
-*	d6	scan line counter
-*
-*	a0	CG table pointer
-*	a1	output area scan line pointer
-*	a2	input character pointer
-*	a3	output area character pointer
-*
+
+| Argument offsets from a6:
+
+OBASE		=	8		| L:  Output area base address
+NW		=	12		| W:  Character width of output area
+FG		=	14		| W:  Foreground color
+BG		=	16		| W:  Background color
+ROW		=	18		| W:  Row
+COL		=	20		| W:  Column
+STR		=	22		| L:  String base address
+
+| Miscellaneous constants:
+
+HPIX		=	8		| Horizontal pixels in the character
+
+NVPIX		=	12		| Vertical pixels in the character
+VPITCH		=	12		| Vertical pitch between characters
+
+| Register usage:
+
+|	d0	output word and scratch
+|	d1	CG word and scratch
+|	d2	pixel counter
+|	d3	foreground color (in the 2 ms bits)
+|	d4	background color (in the 2 ms bits)
+|	d5	width of the area in bytes
+|	d6	scan line counter
+
+|	a0	CG table pointer
+|	a1	output area scan line pointer
+|	a2	input character pointer
+|	a3	output area character pointer
+
 		.page
-*
-_vwputs:	link	a6,#0		* Link stack frames
-		movem.l	d3-d6/a3,-(a7)	* Save registers we use
-		move.w	#14,d1		* Set shift constant
-		move.w	FG(a6),d3	* Setup foreground color
-		lsl.w	d1,d3		* ... in ms 2 bits of d3
-		move.w	BG(a6),d4	* Setup background color
-		lsl.w	d1,d4		* ... in ms 2 bits of d4
-		move.w	NW(a6),d5	* Get width in characters in d5
-		lsl.w	#1,d5		* ... make it words
-		move.w	ROW(a6),d0	* Calculate output address
-		move.w	#VPITCH,d1	* ...
-		mulu	d1,d0		* ... ROW * VPITCH
-		add.w	#NVPIX-1,d0	* ... + NVPIX-1
-		mulu	d5,d0		* ... * NW
-		clr.l	d1		* ...
-		move.w	COL(a6),d1	* ... + (COL * 2)
-		lsl.l	#1,d1		* ...
-		add.l	d1,d0		* ...
-		add.l	OBASE(a6),d0	* ... + OBASE
-		movea.l	d0,a3		* Leave output address in a3
-		movea.l	STR(a6),a2	* Put string address in a2
-*
+
+_vwputs:	link	a6,#0		| Link stack frames
+		movem.l	d3-d6/a3,-(a7)	| Save registers we use
+		move.w	#14,d1		| Set shift constant
+		move.w	FG(a6),d3	| Setup foreground color
+		lsl.w	d1,d3		| ... in ms 2 bits of d3
+		move.w	BG(a6),d4	| Setup background color
+		lsl.w	d1,d4		| ... in ms 2 bits of d4
+		move.w	NW(a6),d5	| Get width in characters in d5
+		lsl.w	#1,d5		| ... make it words
+		move.w	ROW(a6),d0	| Calculate output address
+		move.w	#VPITCH,d1	| ...
+		mulu	d1,d0		| ... ROW | VPITCH
+		add.w	#NVPIX-1,d0	| ... + NVPIX-1
+		mulu	d5,d0		| ... | NW
+		clr.l	d1		| ...
+		move.w	COL(a6),d1	| ... + (COL | 2)
+		lsl.l	#1,d1		| ...
+		add.l	d1,d0		| ...
+		add.l	OBASE(a6),d0	| ... + OBASE
+		movea.l	d0,a3		| Leave output address in a3
+		movea.l	STR(a6),a2	| Put string address in a2
+
 		.page
-cgl0:		clr.l	d0		* Clear out upper bits of d0
-		move.b	(a2)+,d0	* Get next character
-		beq	cgl5		* Done if character EQ 0
-*
-		movea.l	a3,a1		* Establish output pointer in a1
-		adda.l	#2,a3		* Update output pointer for next char.
-		lea	_cgtable,a0	* Establish CG pointer in a0
-		lsl.w	#1,d0		* ... 2 * character
-		adda.w	d0,a0		* ... + _cgtable address
-		move.w	#NVPIX-1,d6	* Set scan line counter in d6
-*
-cgl1:		move.w	#HPIX-1,d2	* Set pixel counter in d2
-		move.w	(a0),d1		* Get character generator word in d1
-*
-cgl2:		lsr.w	#2,d0		* Shift output word right 1 pixel
-		btst.l	#0,d1		* Check CG word ls bit
-		beq	cgl3		* Set background color if bit EQ 0
-*
-		or.w	d3,d0		* OR foreground color into output word
-		bra	cgl4		* Go update CG word
-*
-cgl3:		or.w	d4,d0		* OR background color into  output word
-*
-cgl4:		lsr.w	#1,d1		* Shift CG word right 1 pixel
-		dbf	d2,cgl2		* Loop for all 8 pixels
-*
-		move.w	d0,(a1)		* Store output word in output bitmap
-		suba.w	d5,a1		* Update output pointer
-		adda.l	#512,a0		* Update CG pointer for next scan line
-		dbf	d6,cgl1		* Loop for all scan lines
-*
-		bra	cgl0		* Loop for next character
-*
-cgl5:		movem.l	(a7)+,d3-d6/a3	* Restore registers
-		unlk	a6		* Unlink stack frames
-		rts			* Return to caller
-*
+cgl0:		clr.l	d0		| Clear out upper bits of d0
+		move.b	(a2)+,d0	| Get next character
+		beq	cgl5		| Done if character EQ 0
+
+		movea.l	a3,a1		| Establish output pointer in a1
+		adda.l	#2,a3		| Update output pointer for next char.
+		lea	_cgtable,a0	| Establish CG pointer in a0
+		lsl.w	#1,d0		| ... 2 | character
+		adda.w	d0,a0		| ... + _cgtable address
+		move.w	#NVPIX-1,d6	| Set scan line counter in d6
+
+cgl1:		move.w	#HPIX-1,d2	| Set pixel counter in d2
+		move.w	(a0),d1		| Get character generator word in d1
+
+cgl2:		lsr.w	#2,d0		| Shift output word right 1 pixel
+		btst.l	#0,d1		| Check CG word ls bit
+		beq	cgl3		| Set background color if bit EQ 0
+
+		or.w	d3,d0		| OR foreground color into output word
+		bra	cgl4		| Go update CG word
+
+cgl3:		or.w	d4,d0		| OR background color into  output word
+
+cgl4:		lsr.w	#1,d1		| Shift CG word right 1 pixel
+		dbf	d2,cgl2		| Loop for all 8 pixels
+
+		move.w	d0,(a1)		| Store output word in output bitmap
+		suba.w	d5,a1		| Update output pointer
+		adda.l	#512,a0		| Update CG pointer for next scan line
+		dbf	d6,cgl1		| Loop for all scan lines
+
+		bra	cgl0		| Loop for next character
+
+cgl5:		movem.l	(a7)+,d3-d6/a3	| Restore registers
+		unlk	a6		| Unlink stack frames
+		rts			| Return to caller
+
 		.end
