WORDWRAP:
	chr%=1
	if out$="" then \BEGINNING OF PARAGRAPH-SPACES INCLUDED BUT IGNORED
		while mid$(para$,chr%,1)=" ": \THEY DO NOT SEPARATE WORDS!
			ldots%=ldots%+cdots%(32): \LDOTS%=LINE DOTS,A SPACE=10
			chr%=chr%+1: \
		wend \
	ELSE \STRIP LEADING SPACES AT BEGINNING OF EACH LINE
		while asc(left$(para$,1))=32 or asc(left$(para$,1))=160: \
			para$=right$(para$,len(para$)-1): \
		wend
for x%=chr% to len(para$)			REM LOOPS TO END-OF-LINE (OUT$)
		i%=asc(mid$(para$,x%,1))	REM WHAT IS CHAR IN DECIMAL?
	if i%=173 then \THIS IS A SOFT.HYPHEN CHARACTER
		if ldots%<=dpl%+cdots%(32) then \IT MAY FIT INTO THIS LINE
			hyph.dots%=ldots%+cdots%(32): \=HIGHEST HYPH DOTS IF PRINTED
			soft.hyphen%=x%:hyphen%=x%
	if i%>127 then i%=i%-128		REM STRIPS HI-BIT
	if i%=2 then \^B IN TEXT - TAB TOGGLE
		if tabsetting% then \
			tabsetting%=false% \
		ELSE tabsetting%=x%
	if tabsetting% and x%>tabsetting% then \NXT CHR AFTER^B=1ST ADDED UP
		tab%=(tab%*10)+val(chr$(i%)):goto GETNEXT.CHAR
REM VAL OF TAB% ACCUMULATES AS DECIMAL NUMBER UNTIL TAB% TOGGLES OFF!
	if tab% then \
		if x%>tab%+3 or tab%>160 then \
			CONSOLE:print "ERROR: TAB TOO LARGE; TAB=";tab%: \
			print "OR NO PAIRED ^I TO CLOSE TAB VALUE":CALL PAUSE
	if i%=24 then \^X IN TEXT - EXPANDED PRINT
		if xpand% then \
			xpand%=false% \
		ELSE xpand%=x%
	if i%=25 then \TOGGLES SHADOW PRINTING OFF/ON @WORDWRAP TIME!
		if shadow% then \
			shadow%=false%: \
		ELSE shadow%=x%
	ldots%=ldots%+cdots%(i%) 	REM FROM PS DOT ARRAY TABLE
	if xpand% then \EACH CHARACTER IS DOUBLE THE DOTS IN WIDTH
		ldots%=ldots%+cdots%(i%)
	if shadow% then \
		if i%>32 then ldots%=ldots%+1: \FOR 12 & 10 PITCH
			if pitch.factor=.72 then \CDOTS ARE MAGNIFICATION OF 10
				ldots%=ldots%+9	REM SO ADD 9 MORE-TOTAL=10
	if ldots%>dpl% then \
		if i%<>32 then \
			ldots%=ldots%-cdots%(i%):goto EOL.FOUND
	if i%=45 and soft.hyphen%<>x% then \THIS IS A HARD.HYPHEN
		if ldots%<=dpl% then \HYPHEN MAY BE USED AS A BREAK POINT
			hyph.dots%=ldots%: \HIGHEST HYPHEN POINT SO FAR...
			hyphen%=x%
	if i%=32 then \BREAK-SPACE BETWEEN WORDS ENCOUNTERED
		if ldots%<=dpl%+cdots%(32) then \A POSSIBLE BREAK-SPACE
		space.place%=space.place%+1: \KEEPS COUNT OF SEPARATING SPACES
		gap%(space.place%)=x%: \AND THE CHARACTER LOCATION
		tdots%(space.place%)=ldots%	REM + TOTAL DOTS TO THAT POINT
	if ldots%>=dpl% then\THIS LAST CHAR POSSIBLE ON THIS LINE
		goto EOL.FOUND
	if soft.hyphen%=x% then \S.HYPH MAY NOT BE PRINTED
		ldots%=ldots%-cdots%(32): \RESETS AS IF NO S.HYPH DOTS
		soft.hyphen%=false%
GETNEXT.CHAR:
next x%
NOWRAP:	if ldots%<dpl% then \REMAINDER OF PARA$ IS TOO SHORT TO WRAP
		if right.justify% then \LINE SHOULD BE JUSTIFIED
			out$=para$:wrap%=false%:justify%=true%: \
			right.justify%=false%: \RESETS VALUE SET BY DOT CMD
			goto WW.EXIT \
		ELSE \LINE SHOULD NOT BE JUSTIFIED
			out$=para$:wrap%=false%:justify%=false%:goto WW.EXIT
EOL.FOUND:	if hyphen%>gap%(space.place%) then \BREAK ON HYPHEN
			out$=left$(para$,hyphen%): \
			ldots%=hyph.dots%: \
			para$=right$(para$,len(para$)-hyphen%): \
			goto WW.EXIT \
		ELSE \BREAK ON LAST AVAILABLE SPACE CHARACTER
			out$=left$(para$,gap%(space.place%)-1): \
			ldots%=tdots%(space.place%)-cdots%(32): \
			para$=right$(para$,len(para$)-gap%(space.place%)): \
			gosub RESET.SHADOW: \
			gosub DECREMENT.SPACE.PLACES : \
			while asc(right$(out$,1))=32 or \
				asc(right$(out$,1))=160: \STRIP TRAILING SPACES
					out$=left$(out$,len(out$)-1): \
					ldots%=ldots%-cdots%(32): \
					gosub DECREMENT.SPACE.PLACES: \
			wend
WW.EXIT:	
	soft.hyphen%=false%:hyph.dots%=false%:hyphen%=false%
	return

DECREMENT.SPACE.PLACES:
	gap%(space.place%)=false%
	tdots%(space.place%)=false%
	space.place%=space.place%-1
	return

RESET.SHADOW:					REM TOGGLES ON @ POSITIVE %
	if shadow%>gap%(space.place%) then \WILL REPEAT THE MEET @NEXT LINE
		shadow%=false%			REM NOW SET OFF!
	if xpand%>gap%(space.place%) then \SAME-O SAME-O
		xpand%=false%	REM EXPANDED PRINT CANCELLED @CR ANYWAY! BEWARE
	return
