File: DUMP.PA of Tape: Sources/Other/new-16
(Source file text) 

/	:::DUMP:::  V 3.5
/4/13/78 - VEC
/DUMPS 1-6 RKO5'S TO A TU10/TM8E MAGTAPE
/
/PROGRAM EQUATES
AUTO10=	10	/AUTOINDEX REGISTER
AUTO11=	11
STIBUF=	3000	/STARTING ADDRESS OF INPUT, OUTPUT BUFFERS
/TM8E COMMANDS
CLT=	6712	/CLEAR TRANSPORT, REGISTERS
CLMF=	6725	/CLEAR REGISTERS IF NOT BUSY
SKTD=	6724	/SKIP ON TAPE READY
SKEF=	6721	/SKIP ON ERROR FLAG
SKJD=	6723	/SKIP ON JOB DONE
LMCR=	6705	/LOAD MAGTAPE COMMAND REG
RMCR=	6715	/READ MAGTAPE COMMAND REG
RMSR=	6714	/READ MAIN STATUS REG
LCAR=	6703	/LOAD CURRENT ADDRESS REGISTER
RCAR=	6713	/READ CURRENT ADDRESS REG
LWCR=	6701	/LOAD WORD COUNT REG
RWCR=	6711	/READ WORD COUNT REG
LFGR=	6706	/LOAD FUNCTION REGISTER, GO BIT
RFSR=	6716	/READ SECOND STATUS REG
/RK8E COMMANDS
DSKP=	6741	/SKIP ON ERROR OR DISK DONE
DCLR=	6742	/CLEAR ALL; ALSO RECALIBRATE
DLAG=	6743	/LOAD DISK ADDRESS, EXECUTE
DLCA=	6744	/LOAD CURRENT ADDRESS REG
DRST=	6745	/READ STATUS REGISTER
DLDC=	6746	/LOAD COMMAND REGISTER
/
/PAGE ZERO LOCATIONS
*20
OKREAD,	0	/READ 2K IF ZERO
BUFSTR,	STIBUF	/START OF OUTPUT BUFFERS
MTAX,	0	/MAGTAPE TRANSPORT NUMBER
COMND1,	0402
REWFCN,	1100	/RWIND MTAX
EOFUN,	5100	/WRITE AN EOF ON MTAX
SKPFUN,	6100	/SKIP FWD -WC RECORDS
BKSFUN,	7100	/SPACE REVERSE WC RECORDS
WTFUN,	4100	/WRITE A BLOCK OF DATA
OBUFLD,	10	/OUTPUT BUFFER FIELD (SWITCHED)
IBUFLD,	00	/INPUT BUFFER FIELD (SWITCHED)
DRIVE,	0	/RK8E INPUT DRIVE NUMBER
TMDRIV,	0	/TEMP DRIVE NUMBER
BUFLG,	0	/BUFFER SWITCH FLAG
CTR,	-1453	/COUNT OF 2K SEGMENTS ON DISK
FILCTR,	7777	/NUMBER OF FILES TO PROCESS
FCTR,	7777	/PROCESS COUNTER
FILNUM,	"1	/ASCII DISPLAY COUNTER
WTLOK,	0	/SKIP-AFTER-WRITE FLAG
FILE1,	0	/SEQUENTIAL LIST OF INPUT DRIVE NUMBERS
FILE2,	0
FILE3,	0
FILE4,	0
FILE5,	0
FILE6,	0
CTRLG,	207
EJECT
/SUBROUTINE CALL PSEUDO-OPS
ABORT=	JMS I .;CANCEL	/CANCEL PGM (ERROR HLT)
BACKSP=	JMS I .;XBKSPC	/BACKSPACE ONE RECORD
BUFSW=	JMS I .;XBUFSW	/SWAP PACK, OUTPUT BUFFER FIELDS
BUF1=	JMS I .;XBUF1	/INITIALIZE PACK BUFF 1
CRLF=	JMS I .;XCRLF	/PRINT CR, LF
CRWAIT=	JMS I .;XCRWAI	/PRINT, WAIT FOR CR
FWDSKP=	JMS I .;XFWSKP	/SKIP FWD PAST FILE
GTWAIT=	JMS I .;MTWAIT	/GO TO BACKGROUND (JMP .-1)
KBDCHK=	JMS I .;XKBDCH	/TEST KBD (MAY RETURN CHAR)
MTEXEC=	JMS I .;XMTEXC	/EXECUTE A TM8E FUNCTION
MTONLN=	JMS I .;XMTOLN	/TEST MTAX ONLINE, BOT, WE
MTWRTE=	JMS I .;XMTWRT	/WRITE 2K TO MT (ACTUALLY 3K)
OCTIN=	JMS I .;XOCTIN	/RETURN KBD ENTRY 0-7 OR -1 FOR CR
OS8MON=	JMP I .;7605	/RETURN TO MONITOR
PRINT=	JMS I .;XPRINT	/PRINT 6BIT ASCII STRING
READRK=	JMS I .;XRDRK	/READ 2K FROM DRIVE
REWMTA=	JMS I .;XREW1	/GIVE REWIND COMMAND AND RETURN
STRTRK=	JMS I .;XSTRTR	/INITIALIZE DRIVE
TYPE=	JMS I .;XTYPE	/PRINT CHARACTER FROM AC
WTEOF=	JMS I .;XWTEOF	/WRITE EOF ON MTAX
WTMTAX=	JMS I .;XWTFIL	/DUMP ONE RKOF TO MTAX
/
/CORE LAYOUT:
/PAGE 1--MAIN CONTROL SEQUENCE, WTMTAX
/PAGE 2--RKO5 ROUTINES: STRTRK,READRK
/PAGE 3--TM8E ROUTINES: MTONLN,WTEOF,REWMTA,MTWRTE
/PAGE 4--BACKGROUND ROUTINES:
/	GTWAIT,FWDSKP,ABORT,BUF1,BUFSW,WAIT
/PAGE 5--CONSOLE ROUTINES: PRINT,TYPE,CRLF,KBDCHK,OCTIN
/TEXT FILES
/MAIN PROGRAM SEQUENCING
/
*200
START,	CLA CLL
	PRINT
	    HEADER	/DUMP V 3.5
	CLA CLL CMA	/-1 INHIBITS TERMINAL CRLF
	PRINT
	    NUMTX	/NUMBER OF FILES TO PROCESS
	OCTIN		/GET THE NUMBER
	SPA
	OS8MON		/FAST EXIT IF NONE
	SNA		/CONVERT 0 TO 8
	TAD (10
	CIA		/NEGATE FOR COUNTER
	DCA FILCTR
	DCA WTLOK	/CLEAR SKP/WRITE FLAG
	ISZ DRIVE	/SO FIRST USE WILL NOT BE REPEAT
	CRLF
	CLA CLL CMA
	PRINT
	    MTRANS	/MAGTAPE TRANSPORT? (0-7)
	OCTIN
	SPA
	OS8MON		/FAST EXIT IF NO TAPE
	CLL;RTR;RTR	/SHIFT TO HIGH ORDER
	DCA MTAX
	CRLF
	PRINT
	    DRIVTX	/ENTER DRIVES FOR FILES 1-6:
/ACCEPT 1-6 DRIVE NUMBERS (ANY ORDER) FOR OUTPUT FILES
	TAD (FILE1-1	/STORAGE ADDRESS
	DCA AUTO10
	TAD FILCTR
	DCA FCTR	/LOOP COUNTER
	TAD ("1
	DCA FILNUM
FILOOP,	JMS FILIN	/GET NEXT DRIVE NUMBER
	DCA I AUTO10
	ISZ FCTR
	JMP FILOOP
/WE HAVE NOW IDENTIFIED THE INPUT AND OUTPUT DEVICES
/REWIND MTAX, MAKES SURE THAT TRANSPORT IS ONLINE
	CRWAIT		/PRINT, WAIT FOR CR
	    TCONT	/PRESS CR TO CONTINUE
	MTONLN
	TAD FILCTR		/FILES COUNT
	DCA FCTR
	TAD (FILE1-1	/RESET ADDRESS POINTER
	DCA AUTO10	/TO LIST OF DRIVES
	TAD ("1		/FOR PRINT "DONE"
	DCA FILNUM
FLOOP2,	TAD I AUTO10	/GET NEXT DRIVE NUMBER
	SPA		/IF NEGATIVE, WE'RE DONE
	JMP FILSKP	/CAN SKIP AT BEGINNING OF TAPE
/NOW DUMP THE FILE
	DCA TMDRIV	/TEMP SAVE DRIVE NUMBER
	TAD DRIVE	/WHILE CHECKING LAST ONE
	CIA
	TAD TMDRIV	/SAME DRIVE?
	SZA CLA
	JMP LOOPGO	/NO--JUST CONTINUE
	CRWAIT
	    WAITX	/RELOAD DRIVE, HIT CR
LOOPGO,	TAD TMDRIV	/RESTORE DRIVE NUMBER
	WTMTAX		/SEEMS SIMPLE ENOUGH
	CLA CLL CMA
	PRINT
	    FILDON	/FINISHED FILE X
	TAD FILNUM
	TYPE
	CRLF
FILISZ,	ISZ FILNUM
	ISZ FCTR
	JMP FLOOP2	/AND REPEAT
/FALL THROUGH TO NORMAL EXIT
DEXIT,	REWMTA		/REWIND MTAX, BUT DON'T WAIT
	PRINT
	    TERMIN	/NORMAL TERMINATION.
	OS8MON
FILSKP,	CLA CLL
	TAD WTLOK	/CAN WE SKIP?
	SZA CLA
	JMP BADSKP	/NOT AFTER WRITE
CLA CLL CMA
	PRINT
	    FSKPTX	/SKIPPING FILE X
	TAD FILNUM
	TYPE
	CRLF
	FWDSKP		/SKIP ONE FILE
	JMP FILISZ	/AND CONTINUE
BADSKP,	PRINT
	BADSTX		/NO SKIP AFTER WRITE.
	OS8MON
FILIN,	0	/READ DRIVE NUMBER
	CLA CLL CMA	/INHIBIT CRLF
	PRINT
	    FILTX	/FILE-
	TAD FILNUM	/ASCII NUMBER
	TYPE
	ISZ FILNUM
	OCTIN	/GET NUMBER
	CLL RAL
	JMP I FILIN
/WRITE ONE DISK FILE ON MTAX
XWTFIL,	0
	STRTRK		/INITIALIZE DRIVE (WAS IN AC)
	BUF1		/SET FOR PACKING BUF1
	READRK		/READ INITIAL 2K FROM DISK
MORE,	BUFSW		/REVERSE INPUT, OUTPUT FIELDS
	MTWRTE		/WRITE 2K TO MTAX
			/READ 2K IN BACKGROUND
	TAD CTR		/GET FOR MQ DISPLAY
	MQL
	ISZ CTR		/DONE WITH READING?
	JMP MORE	/NO- WRITE AND READ 2K MORE
	BUFSW		/LAST BUFFER SWAP
	ISZ OKREAD	/CANCEL BACKGROUND READER
	MTWRTE		/AND EXECUTE WRITE
	WTEOF		/END THE FILE
	ISZ WTLOK	/LOCK OUT SKIP/WRITE FLAG
	JMP I XWTFIL	/AND EXIT
PAGE
/RK8E-RKO5 ROUTINES
/
/INITIALIZE SELECTED DRIVE
/ENTERED WITH DRIVE NUMBER IN AC
XSTRTR,	0
	DCA DRIVE
XSTRT1,	DCLR		/CLEAR REGISTERS
	TAD DRIVE
	DLDC		/SELECT THIS DRIVE
	DRST		/AND SEE IF IT'S AVAILABLE
	AND (200	/BY CHECKING FILE-NOT-READY
	SZA CLA
	JMP NODRIV	/NOT AVAILABLE--QUERY USER
	DCA SECTOR
	DCA HIGH	/INITIALIZE TO ADDRESS 00000
	TAD (-1453	/NUMBER OF 2K SEGMENTS
	DCA CTR
	JMS DRECAL	/FORCE HEADS TO START
	JMP I XSTRTR	/AND INITIALIZATION COMPLETE
NODRIV,	CRWAIT
	    NODRTX	/PRESS CR TO CONTINUE
	JMP XSTRT1	/TRY AGAIN
EJECT
/READ 2K WORDS (8 SECTORS) FROM DISK
XRDRK,	0
	ISZ OKREAD	/PREVENT REPEAT CALLS
XRDRK1,	TAD (-10	/SECTOR COUNT
	DCA BLOCKS
	TAD INBUF	/ONLY ONE INPUT BUFFER
	DLCA		/LOAD MEMORY ADDRESS
	DCA DATALL	/SET DATA/ALL SWITCH TO DATA
XRDRK2,	TAD RKCOM	/READ COMMAND, NO-INT,F0
	TAD DRIVE	/FROM SELECTED DRIVE
	TAD IBUFLD	/SELECT INPUT FIELD
	TAD HIGH	/PART OF DISK ADDRESS
	TAD DATALL	/SELECT 'READ DATA' OR 'ALL'
	DLDC		/LOAD COMMAND REG
	TAD SECTOR	/REMAINDER OF DISK ADDRESS
	DLAG		/EXECUTE
	DSKP		/WAIT HERE TILL DONE
	JMP .-1
	DRST		/AND TEST FOR ERRORS
	CLL RAL		/GET RID OF DONE BIT
	SZA CLA
	JMP DKERR	/FLAG SET, SO ERROR RETRY
/READ WAS SUCCESSFUL - TRY FOR 8 IN A ROW
	TAD (1000	/SWITCH TO 'READ ALL'
	DCA DATALL
	ISZ SECTOR
	SKP
	ISZ HIGH
	ISZ BLOCKS	/DONE ALL 8?
	JMP XRDRK2	/NO--REPEAT LOOP
/8 SECTORS (2K) READ INTO INBUF
	CLA CLL CMA RTL	/AC = -3 FOR ERROR COUNT
	DCA ERRCT1
	CMA CLL RAL	/ALSO RESET RECLA COUNTER
	DCA ERRCT2
	JMP I XRDRK	/EXIT
/DISK ERROR--TRY REREAD, THEN RECALIBRATE
DKERR,	ISZ ERRCT1	/TRIED BEFORE?
	JMP RESET1	/NO, PROCEED
	ISZ ERRCT2	/ALREADY RECALIBRATED?
	JMP RECAL1		/NO, TRY IT ONCE
	PRINT
	    DSKBAD	/FATAL DISK ERROR
	ABORT
RECAL1,	CLL CMA RAL	/ALLOW 1 RETRY AFTER RECAL
	DCA ERRCT1
	JMS DRECAL
RESET1,	TAD SECTOR
	AND (7770	/RESET FOR 8 BLOCKS
	DCA SECTOR
	JMP XRDRK1	/TRY ALL OVER
SECTOR,	0
HIGH,	0
DATALL,	0
BLOCKS,	-10
RKCOM,	0
/RECALIBRATE DRIVE (SEND HEADS TO 00000)
DRECAL,	0
	CLA CLL
	DCLR
	CLA CLL STL RTL	/SET RECAL BIT
	DCLR
	DSKP
	JMP .-1
	TAD (0200	/ENABLE DONE BIT
	TAD DRIVE
	DLDC		/LOAD THIS COMMAND
	DSKP		/NOW WAIT FOR COMPLETION
	JMP .-1
	JMP I DRECAL
INBUF,	STIBUF		/START OF INPUT BUFFER
ERRCT1,	-3		/REREAD TRY COUNTER
ERRCT2,	-2		/RECAL TRY COUNTER
PAGE
/TM8E-TU10 ROUTINES
/
/VERIFY THAT MTAX IS ONLINE, WRITE ENABLED, AT BOT
XMTOLN,	0
XMTOL1,	CLT		/CLEAR EVERYTHING
	TAD REWFCN	/START BY ATTEMPTING REWIND
	MTEXEC		/(WILL FAIL IF AT BOT)
	    JMP ERRCHK
	SKTD		/WAS OK, WAIT FOR DONE
	JMP .-1
WLTEST,	RMSR		/MUST BE SURE TAPE IS
	AND (0004	/WRITE-ENABLED
	SZA CLA
	JMP WLERR	/NOPE--MUST DO IT ALL OVER
	JMP I XMTOLN	/ALL SET--EXIT
WLERR,	CRWAIT
	    WLERTX	/PLEASE INSERT WRITE-RING
	JMP XMTOL1	/TRY IT AGAIN
ERRCHK,	AND (0400	/TEST FOR UNSELECTED TRANSPORT
	SZA CLA
	JMP SLERR	/COMPLAIN ABOUT IT
	RMSR		/TEST FOR BOT (FUNCTION ERROR)
	AND (1000
	SZA CLA
	JMP WLTEST	/OO, WE'RE AT BOT
	PRINT
	    TRANSX	/ANYTHING ELSE IS FATAL
	ABORT
SLERR,	CRWAIT
	    SLERTX
	JMP XMTOL1
EJECT
/ISSUE REWIND COMMAND/EXECUTE A MAGTAPE COMMAND (FUNCTION IN AC)
XMTEXC,	0
	DCA MTFUN	/SAVE FUNCTION
	TAD COMND1
	TAD MTAX
	LMCR		/SET SUP STANDARD COMMAND
	TAD MTFUN
	LFGR		/EXECUTE IT
XMTEX1,	SKEF
	JMP XMTEX2	/NO ERRORS YET
XMTERR,	RMSR
	JMP I XMTEXC	/RETURN WITH ERROR
XMTEX2,	CLA CLL
	KBDCHK
	SKJD		/FINISHED?
	JMP XMTEX1
	SKEF		/DONE--TEST ERROR
	SKP
	JMP XMTERR
	ISZ XMTEXC	/SKIP PAST ERROR RETURN
	JMP I XMTEXC
MTFUN,	0
/COMND1,	0402
/
/REWIND THE TAPE
XREW1,	0
	CLMF
	TAD REWFCN	/REWIND AND GO
	MTEXEC
	    SKP
	JMP I XREW1	/GOOD RETURN
	PRINT
	     TRANSX
	ABORT
/REWFCN,	1100
/
/WRITE AN EOF ON THE TAPE
XWTEOF,	0
	TAD EOFUN	/WRITE EOF
	MTEXEC
	    SKP
	JMP I XWTEOF
	PRINT
	    EOFTX
	ABORT
/EOFUN,	5100
/
/BACKSPACE ONE RECORD (FOR RETRY)
XBKSPC,	0
	CLA CLL CMA
	LWCR		/SET TO -1
	TAD BKSFUN
	MTEXEC
	    SKP
	JMP I XBKSPC
	PRINT
	    BKSPTX
	ABORT
/BKSFUN,	7100
EJECT
/MAGTAPE WRITER ROUTINE; WRITES 2K, DOES PACKING
/VIA BACKGROUND TASK (INSTEAD OF SKIP/JMP .-1)
/
XMTWRT,	0
XMTWT1,	CLMF
	CLA CLL CMA
	TAD BUFSTR	/STARTING ADDRESS OF OUTPUT
	LCAR
	TAD WDCNT	/NUMBER OF WORDS/RECORD
	LWCR
	TAD MTCOM	/ODD, NO-INT, 800BPI, COREDUMP
	TAD MTAX	/TRANSPORT NUMBER
	TAD OBUFLD	/OUTPUT BUFFER FIELF
	LMCR
	TAD WTFUN	/WRITE FUNCTION
	LFGR		/EXECUTE
	GTWAIT		/AND WAIT FOR COMPLETION
	JMP XMTERW	/ERROR RETURN
	CLA CLL CMA RTL
	DCA MTERCT
	JMP I XMTWRT	/NORMAL RETURN
MTCOM,	0402
/WTFUN,	4100
WDCNT,	4000
/
XMTERW,	ISZ MTERCT
	JMP MTRTRY
	PRINT
	    MTERTX
	ABORT
MTRTRY,	CLA CLL
	CLMF
	BACKSP		/BACKUP UNE RECORD
	JMP XMTWT1
MTERCT,	-3
PAGE
EJECT
/REPLACES JMP .-1 CONSTRUCTION IN MTWRITER
MTWAIT,	0
	KBDCHK
	SKEF	/TEST FOR IMMED. ERROR
	SKP
	JMP MTWERR
/NOT INSTANT ERROR, SO READ 2K
	TAD OKREAD	/IF ZERO, FIRST CALL
	SNA CLA
	READRK
MTWT2,	KBDCHK
	SKEF
	SKP
	JMP MTWERR
	SKJD
	JMP MTWT2	/HANG IN THERE
	SKEF		/ERROR SET AFTER MTBF?
	JMP MTGOOD	/NO--WE'RE ALL SET
MTWERR,	RMSR
	JMP I MTWAIT
MTGOOD,	ISZ MTWAIT
	JMP I MTWAIT
/SKIP OVER A FILE (ONLY AT BEGINNING OF TAPE)
XFWSKP,	0
	CLMF
	TAD (-1454
	LWCR
	TAD SKPFUN
	MTEXEC
	    SKP
	JMP I XFWSKP
	PRINT
	    SKERTX	/ERROR ON FWD SKIP
	ABORT
/FATAL ERROR--READ AND STORE ERROR CALL, REGISTERS
CANCEL,	0
	PRINT
	    HALTX	/FATAL ERROR HALT
	OS8MON	/RETURN TO OS8
	TAD (DATLOC-1
	DCA AUTO10
	TAD CANCEL	/CALLING ADDRESS
	DCA I AUTO10
	RMSR
	DCA I AUTO10
	RMCR
	DCA I AUTO10
	RFSR
	DCA I AUTO10
	RCAR
	DCA I AUTO10
	RWCR
	DCA I AUTO10
	DRST
	DCA I AUTO10
	HLT
DATLOC,	ZBLOCK 7
/BACKGROUND ROUTINES
/
/BUF1 INITIALIZES BUFFERS FOR FIRST ACCESS
XBUF1,	0
	CLA CLL
	DCA IBUFLD	/INPUT BUFFER F0
	TAD (10
	DCA OBUFLD	/WRITE BUFFER F1
	DCA BUFLG	/SWAPSWITCH
	DCA OKREAD	/CLEAR READ FLAG
	JMP I XBUF1
/
/BUFSW SWAPS THE INPUT, OUTPUT BUFFERS, CLEARS TO READ
XBUFSW,	0
	DCA OKREAD
	ISZ BUFLG	/TEST SWAPSWITCH
	JMP XBFS1
/STATUS WAS INBUF=10,OUTBUF=00
	TAD (10
	DCA OBUFLD
	DCA IBUFLD
	JMP I XBUFSW
/STATUS WAS INBUF=00, OUTBUF=10
XBFS1,	TAD (10
	DCA IBUFLD
	DCA OBUFLD
	CLA CLL CMA	/RESET SWAPSWITCH
	DCA BUFLG
	JMP I XBUFSW
/
/CRWAIT--PRINT MESSAGE AND PAUSE FOR RESPONSE
XCRWAI,	0
	TAD I XCRWAI	/GET TEXT ADDRESS
	DCA TXTADR
	ISZ XCRWAI
	CLA CLL CMA	/INHIBIT CRLF
	PRINT
TXTADR,	    HALTX	/DUMMY TEXT
	TAD CTRLG
	TYPE
	CLA CLL CMA
	KBDCHK		/NOW WAIT FOR RESPONSE
	CLA CLL		/BUT DONT RETURN IT
	JMP I XCRWAI
PAGE
/CONSOLE I/O ROUTINES
/PRINTER FOR 6BIT ASCII STRINGS-- IF AC IS -1 ON ENTRY,
/INHIBITS TERMINAL CRLF.  STRING ADDRESS IS AT CALL+1
/RETURNS TO CALL+2
/
XPRINT,	0
	DCA CRSWTC	/SET CRLF INHIBIT
	CLA CLL CMA	/NEED ADDRESS-1
	TAD I XPRINT	/GET STRING ADDRESS
	DCA AUTO11
	ISZ XPRINT
XPRNXT,	TAD I AUTO11
	SNA		/LIST TERMINATED WITH 0
	JMP XPRXIT	/SO (CRLF AND) EXIT
	MQL
	MQA
	BSW		/GET FIRST BYTE
	JMS X8BIT	/CONVERT 6BIT TO ASCII
	MQA
	JMS X8BIT	/AND SAME WITH SECOND BYTE
	JMP XPRNXT	/AND TRY TO REPEAT CYCLE
XPRXIT,	ISZ CRSWTC	/TEST FOR CRLF INHIBIT
	JMS XCRLF	/NO--DO IT
	JMP I XPRINT
/
X8BIT,	0
	AND (77		/CLEAR TO SINGLE BYTE
	SNA		/TEST FOR NULL
	JMP I X8BIT	/DON'T PRINT @-SIGN
	TAD (40
	AND (77
	TAD (240	/MAKE INTO ASCII
	JMS XTYPE	/AND PRINT IT
	JMP I X8BIT
/
XTYPE,	0
	SNA		/DON'T PRINT NULL
	JMP I XTYPE
	TLS
	TSF
	JMP .-1		/WAIT FOR DONE
	CLA CLL
	JMP I XTYPE
/
XCRLF,	0
	CLA CLL
	TAD KCR
	JMS XTYPE
	TAD KLF
	JMS XTYPE
	JMP I XCRLF
KCR,	215
KLF,	212
CRSWTC,	0
EJECT
/KBDCHK--LOOK AT KBD, TEST FOR CTRL/C, GET CHAR IF
/ANY.  IF AC =-1 ON ENTRY, WAIT FOR A CHARACTER.
/
XKBDCH,	0
	DCA KBDFLG
	TAD KBDFLG
	SNA CLA
	JMP LISTEN	/NO WAIT, JUST TEST BUFFER
	KRB
	CLA CLL	/CLEAR OUT OPTIONAL CR
	TAD (">		/GET SIGNATURE
	JMS XTYPE
LISTEN,	KSF		/ANYTHING TYPED?
	JMP WTTEST	/NO--MUST WE WAIT?
	KRB		/READ CHAR, CLEAR FLAG
	MQL
	MQA
	TAD MCTRLC	/DO WE GIVE UP?
	SNA
	JMP OS8BAK	/YES--CRLF AND EXIT TO MON
	TAD MCR		/WAS IT CR?
	SNA
	JMP CREXIT	/YES, ECHO A CRLF
	TAD MCTRLP	/WAS IT CTRLP?
	SNA CLA
	JMP I (START	/RESTART
	MQA
	JMS XTYPE	/JUST ECHO THE CHAR
RTCHAR,	MQA
	ISZ KBDFLG	/DO WE RETURN A CHARACTER?
	CLA CLL		/NO--CLEAR IT
	JMP I XKBDCH	/AND RETURN
WTTEST,	CLA CLL
	TAD KBDFLG	/ARE WE WAITING?
	SNA CLA
	JMP I XKBDCH	/NO--JUST RETURN
	JMP LISTEN	/YES--LISTEN SOME MORE
CREXIT,	JMS XCRLF	/ECHO A CR,LF
	TAD (240	/RETURN A SPACE
	MQL
	JMP RTCHAR
OS8BAK,	JMS XCRLF
	OS8MON		/RETURN TO MONITOR
MCTRLC,	-203
MCR,	-12
MCTRLP,	-3
KBDFLG,	0
EJECT
/OCTIN--GET AN OCTAL DIGIT, RETURN -1 IF WAS SPACE
XOCTIN,	0
XOCT1,	CLA CLL CMA	/TELL KBDCHK TO WAIT
	KBDCHK
	MQL
	MQA
	TAD (-240	/TEST FOR SPACE
	SNA CLA
	JMP SPCRTN	/YES--RETUN -1
	MQA
	TAD (-260	/SUBTRACT ASCII
	MQL
	MQA
	SPA		/IF MINUS, WASN'T A DIGIT
	JMP BDCHAR	/SO TRY AGAIN
	AND (7770		/GOTTA BE OCTAL
	SZA
	JMP BDCHAR
	JMS XCRLF	/WASNT CR, SO FAKE IT
	MQA
	JMP I XOCTIN	/RETURN OCTAL DIGIT
SPCRTN,	CLA CMA CLL
	JMP I XOCTIN
BDCHAR,	CRLF
	CLA CLL CMA
	PRINT
	    NOTOCT	/MUST BE CR OR 0-7
	JMP XOCT1
PAGE
/TEXT SEGMENTS
HEADER,	TEXT /DUMP V 3.5/
	0
NUMTX,	TEXT /NUMBER OF FILES TO PROCESS/
	0
MTRANS,	TEXT /MAGTAPE TRANSPORT (0-7)/
	0
DRIVTX,	TEXT /ENTER DRIVE NUMBERS OR CR TO SKIP:/
	0
TERMIN,	TEXT /NORMAL TERMINATION./
	0
TCONT,	TEXT /MASH ANY KEY TO PROCEED/
	0
FILTX,	TEXT /FILE /
	0
BADSTX,	TEXT /ILLEGAL TO SKIP AFTER WRITE./
	0
HALTX,	TEXT /FATAL ERROR ON TRANSFER./
	0
NODRTX,	TEXT /REQUESTED DRIVE NOT AVAILABLE. LOAD IT NOW/
	0
DSKBAD,	TEXT /FATAL ERROR ON RK05./
	0
SLERTX,	TEXT /PLEASE PUT TRANSPORT ON LINE/
	0
TRANSX,	TEXT /FATAL ERROR ON MAGTAPE./
	0
MTERTX,	TEXT /FATAL ERROR WRITING TAPE./
	0
NOTOCT,	TEXT /PLEASE ENTER 0-7 OR CR/
	0
EOFTX,	TEXT /FATAL ERROR WRITING EOF./
	0
BKSPTX,	TEXT /FATAL ERROR ON BACKSPACE./
0
WLERTX,	TEXT /PLEASE WRITE ENABLE TRANSPORT/
0
SKERTX,	TEXT /ERROR ON FWD SKIP./
	0
FILDON,	TEXT /FINISHED FILE /
	0
FSKPTX,	TEXT /SKIPPING FILE /
	0
WAITX,	TEXT /RELOAD DRIVE, HIT CR TO CONTINUE./
	0