/  FYLHLP - PS/8 UTILITY (DMK)
/0

/  FILE UTILITY PROGRAM FOR PS/8
/  INCLUDES ABILITY TO EXAMINE DIRECTORY
/  AND BLOCKS ON ANY FILE STRUCTURED DEVICE


ZZZ=0
XR17=17
USR=200
CDP=20
TEMP=21
IOROUT=23
DCB=7760
OPT0=7642
OPT1=7643
OPT2=7644

	FIELD 1
	*2000

	JMS 7700	/GO LOCK USR IN CORE
	 10		/LOCK USR IN CORE
HELP1,	JMS I (USR	/GET CD
	 5
	 0		/NO ASSUMED EXTENSION
	TAD (7616
	DCA CDP		/START OF CD INPUT LIST
	TLS
HELP2,	ISZ CDP
	TAD I CDP
	SZA		/DONE THIS LIST?
	JMP HELP3	/NO
	TAD OPT0	/HI ORDER BIT HAS TERMINATOR
			/INDICATOR (CR OR ALT MODE)
	SMA!CLA		/IS ALT MODE BIT SET?
	JMP HELP1	/NO
	CDF!CIF 0
	JMP 7600	/MONITOR

HELP3,	AND (17
	DCA TEMP	/SAVE DEVICE NUMBER
	TAD TEMP
	TAD (DCB-1	/DEVICE 1 AT 'DCB'
	DCA TEMP1	/POINT TO DCB ENTRY
	JMS CRLF
	TAD ("#
	JMS TYO
	TAD I TEMP1
	SMA!CLA		/FILE-STRUCTURED?
	JMP UNFSER
	TAD (IOHNDL+1	/ALLOW TWO PAGE
	DCA TEMP1	/SAVE HANDLER ADDRESS
	TAD TEMP	/DEVICE NUMBER
	JMS I (USR
	 1		/FETCH HANDLER
TEMP1,	 ZZZ
	HLT		/FATAL ERROR
	TAD TEMP1
	DCA IOROUT	/I/O ROUTINE ENTRY POINT
	ISZ CDP
	TAD I CDP
	SZA!CLA		/START BLOCK 0?
	JMP HELP4	/NO
	TAD OPT1	/YES
	AND (200	/E OPTION SET?
	SZA!CLA
	JMP HELP4	/YES
	TAD OPT2	/NO
	AND (40		/CHECK S OPTION
	SZA!CLA
	JMP FYLLUK	/SET
	JMP HELP2

HELP4,	DCA FOUND
	JMS CRLF
	IAC		/FIRST DIRECTORY BLOCK
HELP6,	DCA INBLK
	CIF 0
	JMS I IOROUT
	 210
	 BUF
INBLK,	 ZZZ
	JMP READER
	TAD INBLK-1
	DCA XR17
	TAD I INBLK-1	/FIRST WORD
	DCA NTRCNT	/IS COUNT OF ENTRIES
	TAD I XR17
	CIA
	DCA BLKNUM	/SECOND IS FIRST BLOCK REFERENCED
	ISZ XR17	/BY SEGMENT
	ISZ XR17
	TAD I XR17	/4TH WORD
	DCA XTRAWD	/IS NUMBER OF EXTRA WORDS
HELP7,	TAD I CDP
	TAD BLKNUM
	SNA!CLA		/LOOKING FOR THIS FILE?
	JMP HELP9	/YES
	TAD I XR17	/NO
	SZA!CLA		/FIRST WORD 0?
	JMP HELP8	/NO
	TAD OPT1	/YES
	AND (200	/E OPTION SET?
	SNA!CLA
	JMP HELP12	/NO
	JMS HDRPNT	/YES
	 0
	TAD I XR17
	DCA TEMP	/SAVE BLOCK COUNT
	STL!RTR		/2000
	AND OPT2	/N OPTION
	SZA!CLA		/SET?
	JMP ELP11A	/YES.  SKIP REST OF PRINTING
	JMS MESAGE	/PRINT <EMPTY>
	 EMTYMS
	JMS CRLF
	JMP HELP11


HELP8,	TAD XTRAWD
	CIA
	TAD (3
	TAD XR17
	DCA XR17	/POINT TO COUNT
	JMP HELP12


/0
/1

	PAGE

HELP9,	JMS HDRPNT	/PRINT HEADER
	 1
	ISZ FOUND	/INDICATE FILE FOUND
	STL RTR
	AND OPT2	/N OPTION
	SNA!CLA		/SET?
	JMP HELP9A	/NO
	TAD XTRAWD	/YES.  SET POINTER TO COUNT
	CIA
	TAD (4
	TAD XR17
	DCA XR17
	TAD I XR17	/GET BLOCK COUNT
	DCA TEMP
	JMP ELP11A	/PRINT MESSAGE

HELP9A,	TAD I XR17
	JMS TWDPNT	/FIRST TWO CHARS
	 " 
	TAD I XR17	/NEXT TWO
	JMS TWDPNT
	 " 
	TAD I XR17	/TWO MORE
	JMS TWDPNT
CSPACE,	 " 
	TAD I XR17
	SZA		/IS THERE AN EXTENSION?
	JMP .+4
	JMS OCTPNT	/JUST PRINT 0'S
	JMS CRLF
	JMP .+3
	JMS TWDPNT
CDOT,	 ".
	TAD XTRAWD
	SNA		/ANY EXTRA WORDS?
	JMP HELP11	/NO
	CIA
	TAD (5260	/YES.
	DCA XTRAMS	/SET UP MESSAGE
	TAD XTRAWD
	CMA
	SZA!CLA		/MORE THAN 1?
	TAD (23-40	/S - (SPACE)
	TAD (0440	/D(SPACE)
	DCA XTRAMS+6
	JMS MESAGE
	 XTRAMS
	JMS CRLF
	TAD I XR17
	DCA TEMP	/DATE
	TAD TEMP
	JMS OCTPNT	/PRINT OCTAL
	TAD ("*
	JMS TYO
	JMS TYO
	TAD TEMP
	SNA
	JMP HELP10
	CLL RTL
	RTL
	RAL
	AND (17
	JMS DECPNT
	TAD ("/
	JMS TYO
	TAD TEMP
	RTR
	RAR
	AND (37
	JMS DECPNT
	TAD ("/
	JMS TYO
	TAD TEMP
	AND (7
	TAD (106	/70 (DEC)
	JMS DECPNT
HELP10,	TAD XTRAWD
	DCA TEMP	/SET COUNTER
ELP10A,	JMS CRLF
	ISZ TEMP
	JMP .+4
	TAD I XR17
	DCA TEMP	/BLOCK COUNT
	JMP HELP11
	TAD I XR17
	JMS OCTPNT
	TAD ("*
	JMS TYO
	JMP ELP10A

/1
/2

	PAGE

HELP11, TAD TEMP	/BLOCK COUNT
	JMS OCTPNT
	JMS TYO
	JMS TYO
	JMS MESAGE
	 FLLNM1		/FILE LENGTH
	TAD TEMP
	CIA
	JMS DECPNT	/NUMBER OF BLOCKS
	JMS MESAGE
	 FLLNM2
	JMS CRLF
	JMS CRLF
ELP11A, JMS MESAGE
	 STBLMS		/START BLOCK
	TAD BLKNUM
	CIA
	JMS OCTPNS
	JMS CRLF
	JMS CRLF
	TAD TEMP
	SKP
HELP12, TAD I XR17
	TAD BLKNUM
	DCA BLKNUM	/UPDATE BLOCK NUMBER
	TAD FOUND
	SNA!CLA		/FIND FILE YET?
	JMP HELP14	/NO
	TAD OPT1
	AND (200
	SZA!CLA		/E OPTION SET?
	JMP HELP14
HELP13, TAD OPT2	/NO.
	AND (40		/S OPTION SET?
	SNA!CLA
	JMP HELP2	/NO
	TAD I CDP	/YES
	JMP FYLLUK	/CARRY START BLOCK TO FYLLUK

HELP14, ISZ NTRCNT
	JMP HELP7	/MORE ENTRIES
	TAD BUF+2	/LINK TO NEXT SEGMENT
	SNA		/IS THERE ONE?
	JMP HELP13	/NO.  CONTINUE
	JMP HELP6	/YES.  GET IT

EMTYMS, TEXT '0000  <EMPTY>'
XTRAMS, TEXT '*# EXTRA WORDS*'
FLLNM1, TEXT 'FILE LENGTH = '
FLLNM2, TEXT ' BLOCKS'
STBLMS, TEXT 'FIRST DATA BLOCK = '
HDRMS,	TEXT 'DIRECTORY ENTRY AT '

FOUND, 0
NTRCNT, 0
XTRAWD, 0
BLKNUM, 0


TYO,	.-.
	SNA
	TAD (240
	TSF
	JMP .-1
	TLS
	CLA
	JMP I TYO

CRLF,	.-.
	TAD (215
	JMS TYO
	TAD (212
	JMS TYO
	JMP I CRLF

/2
/3

	PAGE

OCTPNT, .-.		/PRINT OCTAL WITH LEADING 0'S
	JMS OCTPS1
	TAD OCTPNT
	DCA OCTPNS
	ISZ OCTPC1
	JMP OCTPN1

OCTPNS, .-.		/SUPPRESS LEADING 0'S
	JMS OCTPS1
	JMS OCTPS2
	ISZ OCTPC1
	SZA
	SKP
	JMP .-4
	JMS OCTPS3
OCTPN1, JMS OCTPS2
	JMP .-2

OCTPT1, 0
OCTPC1, 0

OCTPS1, .-.
	CLL!RAL
	DCA OCTPT1
	TAD (-4
	DCA OCTPC1
	JMP I OCTPS1

OCTPS2, .-.
	TAD OCTPT1
	RAL
	RTL
	DCA OCTPT1
	TAD OCTPT1
	AND (7
	JMP I OCTPS2

OCTPS3, .-.
	TAD CZERO
	JMS TYO
	TAD OCTPC1
	SNA!CLA
	JMP I OCTPNS
	ISZ OCTPC1
CZERO,	 "0
	JMP I OCTPS3

HDRPNT, .-.		/PRINT HEADER FOR ENTRY
	JMS MESAGE
	 HDRMS
	TAD INBLK
	JMS OCTPNS
	TAD (".
	JMS TYO
	TAD I HDRPNT
	ISZ HDRPNT
	TAD XR17
	TAD (-BUF
	JMS OCTPNS	/PRINT WORD IN BLOCK
	JMS CRLF
	JMS CRLF
	JMP I HDRPNT

TWDPNT, .-.
	DCA TWDPT1
	TAD TWDPT1
	JMS OCTPNT
	TAD TWDPT1
	SZA!CLA		/0?
	JMP .+3
	ISZ TWDPNT	/DON'T PRINT SPACES
	JMP TWDP1
	JMS TYO
	TAD I TWDPNT	/GET SPECIAL SEPARATOR
	ISZ TWDPNT
	JMS TYO
	JMS MESAGE
	 TWDPT1
TWDP1,	JMS CRLF
	JMP I TWDPNT

TWDPT1, 0;0		/SECOND 0 IS NECESSARY

MESAGE, .-.
	CLA
	TAD I MESAGE
	ISZ MESAGE
	DCA MESP
MESA1,	TAD I MESP
	CLL!RTR
	RTR
	RTR
	JMS MESAS1
	TAD I MESP
	JMS MESAS1
	ISZ MESP
	JMP MESA1

MESAS1, .-.
	AND (77
	SNA
	JMP I MESAGE
	TAD (240
	AND (77
	TAD (240
	JMS TYO
	JMP I MESAS1

MESP, 0

/3
/4

	PAGE

/  BEGINNING OF FYLLUK PORTION OF PROGRAM

OPNPTR=22

FYLLUK, DCA CURBLK
	DCA CURADR
	CMA
	DCA MASK
	TAD (">
	JMS TYO
	CMA CLL RAL	/-2.  BECOMES -1 BELOW.  WILL CAUSE
			/NO READ TO OCCUR ON IMMEDIATED ^C, ^P, ^R
FYLL1,	IAC
	DCA FORCE	/FORCE READ
	STL RAR
	DCA WRTLOK	/PREVENT WRITING CORE BUFFER AREA ON READ
FYLL2,	JMS CRLF
FYLL3,	DCA OPEN
FYLL4,	DCA TYPED
	DCA DOTOUT
	DCA EXPBLK
FYLL5,	DCA EXPR
FYLL6,	TAD CURBLK	/DISPLAY CURRENT BLOCK IN AC
	CLL
	KSF
	JMP .-1
	KRB
	DCA CHAR
	TAD (CHRLST-2
	DCA XR17
FYLL7,	ISZ XR17
	TAD I XR17
	SNA		/END OF LIST?
	JMP FYLL8
	TAD CHAR	/NO.
	SZA!CLA		/MATCH CHAR?
	JMP FYLL7	/NO
	TAD I XR17
	DCA TEMP
	JMP I TEMP	/DISPATCH

FYLL8,	TAD EXPR
	CLL!RAL
	CLL!RAL
	CLL!RAL
	DCA EXPR
	TAD CHAR
	TAD (-"7
	SMA!SZA		/LE 7?
	JMP ERROR1	/NO
	TAD (7
	SPA		/GE 0?
	JMP ERROR1	/NO
	TAD EXPR	/YES.  ADD IN
	DCA EXPR
	JMS ECHO
	JMP FYLL6


FETCH,	.-.		/FETCH WORD BY CURBLK.CURADR
	TAD FORCE
	SZA!CLA		/FORCE NEW READ?
	JMP FETCH1	/YES
	TAD CURBLK
	CIA
	TAD REDBLK
	SNA!CLA		/CURBLK=REDBLK?
	JMP FETCH3	/YES.
FETCH1, TAD WRTLOK	/NO.  WRITE, THEN READ
	SPA!CLA		/WRITE LOCK SET?
	JMP FETCH2	/YES.  DON'T WRITE
	TAD CHANGE
	SNA!CLA		/ANY WORDS CHANGE?
	JMP FETCH2	/NO.  DON'T WRITE
	TAD REDBLK
	DCA WRTBLK
	CIF 0
	JMS I IOROUT
	 4210		/WRITE 2 PAGES, FIELD 1
	 BUF
WRTBLK,	 ZZZ
	JMP WRTERR	/ERROR
FETCH2,	DCA WRTLOK	/CLEAR WRITE LOCK
	TAD CURBLK
	DCA REDBLK
	CIF 0
	JMS I IOROUT	/READ
	 210		/2 PAGES, FIELD 1
	 BUF
REDBLK,  ZZZ
	JMP REDERR
	DCA CHANGE
	DCA FORCE
FETCH3,	TAD REDBLK-1
	TAD CURADR
	DCA OPNPTR	/POINT TO WORD IN BLOCK
	TAD I OPNPTR
	JMP I FETCH

WRTLOK, 0
FORCE, 0
CHANGE, 0

REDERR, JMS MESAGE
	 ERR1
	TAD REDBLK
	JMS OCTPNS
	JMP FYLL1

WRTERR, JMS MESAGE
	 ERR2
	TAD WRTBLK
	JMS OCTPNS
	JMP FYLL2	/DON'T MESS WITH FETCH INDICATORS


EXPR, 0
EXPBLK, 0
CHAR, 0

/4
/5

	PAGE

INM,	TAD DOTOUT
	SZA!CLA
	JMP ERROR1	/YES
	TAD OPEN
	SNA!CLA		/LOCATION OPEN?
	JMP INM1	/NO
	TAD TYPED	/YES
	SZA!CLA
	JMP ERROR1	/SOMETHING TYPED
	TAD I OPNPTR	/NOTHING TYPED
	DCA MASK	/USE CURRENT LOCATION AS MASK
	JMP INM2

INM1,	TAD TYPED
	SNA!CLA		/ANYTHING TYPED?
	JMP INM3	/NO
	TAD EXPR	/YES
	DCA MASK	/STORE NEW MASK
INM2,	JMS ECHO
	JMP FYLL2

INM3,	JMS ECHO	/ECHO
	JMS TYO		/SPACE
	TAD MASK
	JMS OCTPNT
	JMP FYLL2

INDOT,	TAD OPEN
	SZA!CLA		/LOCATION OPEN?
	JMP ERROR1	/YES
	TAD DOTOUT
	SZA!CLA		/DOT ALREADY TYPED?
	JMP ERROR1	/YES
	TAD EXPR
	DCA EXPBLK
	ISZ DOTOUT
	JMS ECHO
	JMP FYLL5

INSLSH,	JMS MOVEXP
	JMP ERROR1	/IF NOTHING OPEN OR TYPED
	 CURBLK
	JMS TYO		/SPACE
INSL1,	JMS FETCH
	JMS OCTPNT
	JMS TYO
	IAC
	JMP FYLL3	/SET OPEN

INSTAR,	TAD OPEN
	TAD TYPED
	SZA!CLA		/ANYTHING OPEN OR TYPED?
	JMP ERROR1
	JMS ECHO	/NO
INST1,	JMS ADRPNT	/PRINT CURRENT ADDRESS
	JMP INSL1

INLF,
INCR,	TAD OPEN
	SNA!CLA		/ANYTHING OPEN?
	JMP INLF1	/NO
	TAD TYPED
	SNA CLA		/ANYTHING TYPED?
	JMP INLF1	/NO
	TAD EXPR
	CIA
	TAD I OPNPTR
	SZA!CLA		/VALUE CHANGE?
	ISZ CHANGE	/YES
	TAD EXPR
	DCA I OPNPTR	/STORE CURRENT EXPRESSION
INLF1,	IAC
	AND CHAR
	SZA!CLA		/CHAR EVEN? (LF)
	JMP FYLL2	/NO.  CR
	JMS NXTADR	/YES
	JMP INST1

INL,	TAD (LLBLK-ULBLK
INU,	TAD (ULBLK
	DCA INLIM1
	JMS MOVEXP
	JMP INLIM2	/NOTHING OPEN OR TYPED
INLIM1,  ZZZ
	JMP FYLL2

INLIM2,	JMS ECHO
	JMS TYO		/SPACE
	TAD I INLIM1	/GET BLOCK
	JMS OCTPNS
	TAD (".
	JMS TYO
	ISZ INLIM1
	TAD I INLIM1	/ADDRESS
	JMS OCTPNS
	JMP FYLL2

ECHO,	.-.
	TAD CHAR
	TAD (-240
	SMA!CLA
	JMP .+4
	TAD ("^
	JMS TYO
	TAD (100
	TAD CHAR
	JMS TYO
	ISZ TYPED
	JMP I ECHO

TYPED, 0
OPEN, 0
DOTOUT, 0

/5
/6

	PAGE

INEQ,	TAD (SZA-SNA	/SET UP SKIP
INLT,	TAD (SNA!CLA	/FOR SEARCH
	DCA SRHSKP
	JMS ECHO
	TAD CURBLK
	DCA HLDBLK	/KEEP CURRENT BLOCK
	TAD CURADR
	DCA HLDADR	/AND ADDRESS
	TAD LLBLK
	DCA CURBLK
	TAD LLADR
	DCA CURADR
	JMS SRHTST
	SKP		/NOT AT END
	JMP SRCH3
SRCH1,	JMS FETCH	/GET WORD
	AND MASK
	CIA
	TAD EXPR
SRHSKP,  ZZZ		/SKIP GOES HERE
	JMP SRCH2	/TEST FAILED
	JMS ADRPNT
	TAD I OPNPTR
	JMS OCTPNT
	TAD CURBLK
	DCA HLDBLK
	TAD CURADR
	DCA HLDADR	/KEEP LAST LOCATION OPEN
SRCH2,	KSF		/CHARACTER TYPED?
	JMP .+3		/NO
	KCC		/CLEAR FLAG
	JMP SRCH3	/THEN END SEARCH
	JMS NXTADR
	JMS SRHTST	/FINISH?
	JMP SRCH1	/NO
SRCH3,	TAD HLDBLK	/YES
	DCA CURBLK
	TAD HLDADR
	DCA CURADR	/RESTORE ADR OF LAST LOC OPEN
	JMP FYLL2

SRHTST, .-.
	TAD ULBLK
	CIA
	TAD CURBLK
	SZA		/BLOCKS EQUAL?
	JMP .+4		/NO
	TAD ULADR
	CIA
	TAD CURADR
	SMA!SZA!CLA	/CURADR>ULADR?
	ISZ SRHTST	/YES.  DONE
	JMP I SRHTST

HLDBLK, 0
HLDADR, 0
LLBLK, 0
LLADR, 0
ULBLK, 0
ULADR, 0
MASK, 0


INC,	TAD OPEN
	TAD TYPED
	SZA!CLA		/ANYTHING OPEN OR TYPED?
	JMP ERROR1	/YES
	JMS ECHO	/NO
	JMP FYLL1	/SET WRITE LOCK AND FORCE

MOVEXP, .-.		/MOVE ADDRESS EXPRESSION
	TAD OPEN
	SZA!CLA		/LOCATION OPEN?
	JMP ERROR1	/YES
	TAD TYPED
	SNA!CLA		/SOMETHING TYPED?
	JMP I MOVEXP	/NO
	JMS ECHO
	ISZ MOVEXP	/YES
	TAD I MOVEXP	/ADDRESS TO MOVE TO
	ISZ MOVEXP
	DCA MOVEP1
	TAD EXPR
	AND (7400	/CHECK UPPER LIMIT (377)
	SZA!CLA		/<=377?
	JMP ERROR2
	TAD DOTOUT
	SNA!CLA
	JMP .+3		/DOT NOT TYPED
	TAD EXPBLK
	SKP
	TAD CURBLK	/USE CURBLK
	DCA I MOVEP1
	ISZ MOVEP1
	TAD EXPR
	DCA I MOVEP1
	JMP I MOVEXP

MOVEP1, 0

/6
/7

	PAGE

NXTADR, .-.
	ISZ CURADR
	TAD CURADR
	TAD (-377
	SPA SNA CLA	/ADR>377?
	JMP I NXTADR	/NO
	DCA CURADR	/YES.  ADR=0
	ISZ CURBLK
	NOP
	JMP I NXTADR	/BLK HAS NO UPPER BOUND

ADRPNT, .-.		/PRINT ADDRESS
	JMS CRLF
	TAD CURBLK
	JMS OCTPNS
	TAD (".
	JMS TYO
	TAD CURADR
	JMS OCTPNS
	TAD ("/
	JMS TYO
	JMS TYO
	JMP I ADRPNT

CURBLK, 0
CURADR, 0

ERROR1, CLA
	JMS ECHO
INRO,
ERROR2, TAD ("?
	JMS TYO
	JMS TYO
	JMP FYLL4

ERR1,	TEXT 'READ ERROR, BLOCK '
ERR2,	TEXT 'WRITE ERROR, BLOCK '

READER, JMS MESAGE
	 ERR1
	TAD INBLK
	JMS OCTPNS
	JMP HELP2

UNFSER, JMS MESAGE
	 ERR3A
	TAD CDP
	TAD (-7617+2
	CLL!RAR		/GIVES REQUEST NUMBER
	TAD ("0
	JMS TYO
	JMS MESAGE
	 ERR3B
	ISZ CDP
	JMS CRLF
	JMP HELP2

ERR3A,	TEXT 'DEVICE IN REQUEST #'
ERR3B,	TEXT ' IS NOT FILE-STRUCTURED'


/7
/8

	PAGE

CHRLST, -215;INCR
	-257;INSLSH
	-212;INLF
	-256;INDOT
	-377;INRO
	-314;INL
	-325;INU
	-315;INM
	-303;INC
	-274;INLT
	-275;INEQ
	-252;INSTAR
	-220;INCTLP
	-222;INCTLR
	-203;INCTLC;0


INCTLP, IAC
INCTLR, IAC
INCTLC, DCA TEMP
	TAD OPEN
	TAD TYPED	/ANYTHING OPEN OR TYPED?
	SZA!CLA
	JMP ERROR1
	JMS ECHO
	JMS CRLF
	ISZ FORCE	/FORCED READ WILL FORCE WRITE
			/IF NECESSARY.  SKIPS IF NO READ DONE
			/YET.
	JMS FETCH	/TO DO WRITE
	CLA		/IGNORE AC
	TAD TEMP
	SNA
	CDF CIF 0	/^C RETURNS TO MONITOR
	TAD .+3
	DCA .+1
	ZZZ
	JMP I .+1
	 7600;HELP1;HELP2


DECPNT, .-.		/PRINT DECIMAL, SUPPRESS 0'S
	DCA DECPT1
	CLA!CMA!CLL!RTL
	DCA DECPC1	/-3
	TAD DECPI1
	DCA DECP3
	DCA DECPT2	/CHAR. OUT INDICATOR
DECP1,	DCA DECPT3	/0 TO DIGIT COUNT
DECP2,	TAD DECPT1
	CLL		/FOR TEST
DECP3,	TAD DECPL1	/GETS INCREMENTED
	SNL		/OVERFLOW?
	JMP DECP4	/YES
	DCA DECPT1	/NO
	ISZ DECPT3	/INC. DIGIT COUNT
	JMP DECP2

DECP4,	CLA
	TAD DECPT3	/DIGIT COUNT
	TAD DECPT2	/CHAR OUT IND.
	SNA
	JMP DECP5	/IGNORE LEADING ZERO
	TAD ("0
	JMS TYO
	STL!RAR
	DCA DECPT2	/SET CHAR OUT IND.
DECP5,	ISZ DECP3	/POWER OF TEN POINTER
	ISZ DECPC1
	JMP DECP1
	TAD DECPT1
	TAD ("0		/ALWAYS PRINT LAST DIGIT
	JMS TYO
	JMP I DECPNT

DECPT1, 0
DECPT2, 0
DECPT3, 0
DECPC1, 0
DECPI1, TAD .+1
DECPL1, -1750;-144;-12

	PAGE

BUF=.
IOHNDL=.+400	/ALLOW 400 FOR 'BUF', ALLOW 2 PAGE
		/HANDLER

$
/8
