/	KERMIT FOR DEC 12-BIT MACHINES

/	LAST EDIT:	06-SEP-1990	11:00:00	CJL

	XLIST	OFF
	IFNDEF	OFF	<OFF=	1>	/TURN LISTING OFF
	IFNDEF	ON	<ON=	0>	/TURN LISTING ON
	XLIST	ON;	IFZERO	1	<








***	 **** *********** *********    ***      *** *** *********** *****   ****
***	****  *********** **********   ****    **** *** *********** *****  ******
***   ****    ***	  ***	 ****  ****    **** ***	    ***	      *** ***  ***
***  ****     ***	  ***     ***  *****  ***** ***     ***       *** **   ****
*** ****      ***	  ***     ***  *****  ***** ***     ***       *** **    ***
*******       ***	  ***    ****  ************ ***     ***       ***       **
******	      **********  **********   *** **** *** ***	    *** ***** ***      **
*******	      **********  *********    *** **** *** ***	    *** ***** ***     **
*** ****      ***	  *** ****     ***  **  *** ***     ***       ***    **
***  ****     ***	  ***  ****    ***  **  *** ***     ***       ***   **
***   ****    ***	  ***   ****   ***      *** ***     ***       ***  **
***    ****   *********** ***	 ****  ***	*** ***	    ***       *** *********
***	 **** *********** ***	  **** ***	*** ***	    ***	      *** *********
					>	XLIST	ON



















/	COPYRIGHT (C) 1989, 1990 BY THE TRUSTEES OF COLUMBIA UNIVERSITY IN THE CITY OF
/	NEW YORK.



/	PERMISSION IS  GRANTED  TO  ANY  INDIVIDUAL OR INSTITUTION TO COPY OR USE THIS
/	DOCUMENT AND THE  PROGRAM(S) DESCRIBED IN IT, EXCEPT FOR EXPLICITLY COMMERCIAL
/	PURPOSES.
/	EDIT HISTORY.							/014 CJL

/	052	06-SEP-1990	BUG FIX.			CHARLES LASNER (CJL)

/		SENDING A FILE WHICH  EXACTLY  FILLS  THE LAST DATA PACKET AT THE
/		END OF THE FILE WILL  CAUSE  THE  PACKET  TO  BE SENT TWICE.  THE
/		ROUTINE DIDN'T CHECK FOR AN EMPTY OUTPUT BUFFER AT EOF.

/	051	29-AUG-1990	BUG FIX.			CJL

/		PDP-8/A NOT IDENTIFIED CORRECTLY  IN  CPUID ROUTINE.  THE UPDATED
/		PC IS WHAT IS LOADED  INTO  THE  AC  WHEN 7016 IS EXECUTED ON THE
/		KK-8/A CPU.  THE ROUTINE WAS  CHECKING FOR THE NON-UPDATED VALUE.
/		ALSO  NEW  DOCUMENTATION FOR PRE-CLEARING MEMORY FOR  BENEFIT  OF
/		ENCODED BINARY FILES.
/	050	06-SEP-1989	DECMATE I SUPPORT, ETC.		CJL

/		THIS EDIT IMPLEMENTS DECMATE  I  SUPPORT USING THE DP278-A OR -B.
/		A NEW CONDITIONAL 'PORT' SELECTS  WHICH  PORT  IS TO BE USED.  IF
/		KERMIT-12 IS RUN ON DECMATE I  (WHILE  NOT  CONFIGURED FOR SERIAL
/		PRINTER  PORT  COMMUNICATIONS;    SEE  EDIT  048.)   THEN  REMOTE
/		COMMUNICATIONS TAKES PLACE ON THE PORT SELECTED AT  ASSEMBLY TIME
/		('PORT=0' OR 'PORT=1').    ADDED  BAUD  RATE PARAMETER 'BRATE' TO
/		SELECT REMOTE COMMUNICATIONS BAUD  RATE  FROM THE STANDARD TABLE;
/		DEFAULTS TO 1200 BAUD ('BRATE=7').
 
/	049	30-AUG-1989	REMOTE FLOW CONTROL, ETC.	CJL

/		THIS  EDIT  IMPLEMENTS FLOW CONTROL SUPPORT (IF FLOW  CONTROL  IS
/		ENABLED) FOR THE REMOTE LINE WHILE SENDING PACKETS TO  THE REMOTE
/		KERMIT REGARDLESS  OF  STATE.    PREVIOUSLY,  FLOW  CONTROL  ONLY
/		APPLIED TO CONNECT  MODE.  LOCAL FLOW CONTROL (TOWARDS THE REMOTE
/		KERMIT) IS UNNECESSARY AS  LOCAL  BUFFERS  FOR  REMOTE  INPUT ARE
/		ALWAYS AVAILABLE.  CERTAIN ROUTINE  CHANGES  MADE  FOR BENEFIT OF
/		DECMATE I SUPPORT IN A SUBSEQUENT EDIT.

/	048	24-AUG-1989	DECMATE II, ETC. SUPPORT.	CJL

/		ONCE-ONLY CODE ADDED  TO  IMPLEMENT DECMATE II, ETC.  REMOTE LINE
/		SUPPORT  ON  SERIAL  COMMUNICATIONS   PORT.    SELECTED  PORT  IS
/		INDICATED ON OPENING BANNER IF OPERATING ON DECMATE.

/	THIS EDIT PROVIDES BASIC SUPPORT  OF  THE DECMATE II COMMUNICATIONS PORT AS AN
/	AUTOMATIC FEATURE OF THE STANDARD RELEASE  OF  K12MIT.  AUTOMATIC DETECTION OF
/	DECMATE II, ETC.  HARDWARE IS PERFORMED  UNLESS  THE  PDP-8-TYPE  REMOTE  LINE
/	SUPPORT IS ASSEMBLED FOR THE SERIAL PRINTER AS  THE  REMOTE  LINE ('SPRINT' IS
/	SET OR EQUIVALENT).

/	THIS  EDIT INCORPORATES ALL OF THE  INFORMATION  TAKEN  FROM  VARIOUS  SOURCES
/	REGARDING DECMATE PORT INITIALIZATION, ETC.  EVERY  ATTEMPT  HAS  BEEN MADE TO
/	COMPLETELY  SET ALL APPROPRIATE REGISTERS, ETC.  FOR  DECMATE  II,  III,  III+
/	OPERATION.  NO SUPPORT EXISTS FOR THE DECMATE III  BUILT-IN  MODEM  OPTION, AS
/	EXPLICIT  DOCUMENTATION  IS NOT AVAILABLE (SOME OF THE INITIALIZATION CODE  IS
/	APPARENTLY USED TO DISABLE THE MODEM).  THESE ROUTINES ARE ONLY  KNOWN TO WORK
/	ON  THE DECMATE II, AS THE III (ESPECIALLY WITH OPTIONAL MODEM) AND  THE  III+
/	HAVEN'T BEEN  AVAILABLE  TO  THE  AUTHOR FOR TESTING.  THE INITIALIZATION CODE
/	WILL BE UPDATED  LATER  TO  INCLUDE  PANEL  REQUESTS,  ETC.    TO  CORRECT ANY
/	PROBLEMS, ETC.  DECMATE-SPECIFIC  FEATURES  (SUCH  AS  SETUP COMMANDS) WILL BE
/	ADDED LATER AND ENABLED FROM THESE ROUTINES.

/	THIS EDIT INCORPORATES  NON-INTERRUPT  ROUTINES  WHICH HAVE BEEN TESTED AT THE
/	MAXIMUM COMMUNICATIONS SPEED OF  THE  DECMATE  II  (19200  BAUD).    THEY WILL
/	SUFFICE FOR ALL KERMIT IMPROVEMENTS  SHORT  OF  SLIDING  WINDOWS AT WHICH TIME
/	INTERRUPT-DRIVEN I/O WILL BE REQUIRED.   (INTERRUPT-DRIVEN  I/O  IS ILLEGAL ON
/	CERTAIN OS/8 SYSTEMS WHERE INTERRUPTS ARE HARMFUL  TO THE SYSTEM OR NON-SYSTEM
/	HANDLERS.) 
/	047	21-AUG-1989	CODE CLEANUP.			CJL

/		STREAM-LINED CONNECT MODE ROUTINES FOR MINIMUM USE OF IOTS.  THIS
/		IS  IN  PREPARATION  FOR  EVENTUAL DECMATE II OPERATION,  AND  TO
/		MINIMIZE  K12PCH  PATCH  FILE SIZE.  CERTAIN NON-CONNECT ROUTINES
/		MOVED TO FACILIATE CONNECT ROUTINE REORGANIZATION. 

/	046	15-AUG-1989	CODE CLEANUP.			CJL

/		ADDED NEW (NON-CONNECT) MODE COMMUNICATIONS ROUTINES FOR EVENTUAL
/		DECMATE USE.  ELIMINATION OF 'IREM' AND 'IREMW' ROUTINES IN FAVOR
/		OF 'COMIN'.   ELIMINATION  OF 'OREM' IN FAVOR OF 'COMOUT'.  ADDED
/		STATUS UPDATE ROUTINE ('UPSTATUS')  FOR EVENTUAL DECMATE II, ETC.
/		USAGE.  ELIMINATED PDP-8, DECMATE  I,  DECMATE  II  CONDITIONALS.
/		REORGANIZED  SERIAL  LINE  CONDITIONALS  AND ADDED  NEW  'SPRINT'
/		PARAMETER FOR SERIAL PRINTER  PORT  USAGE AS COMMUNICATIONS PORT.
/		ADDED ONCE-ONLY CODE ADDED TO  AUTOMATICALLY  RECOGNIZE DECMATE I
/		AND II OPERATION UNLESS ASSEMBLED FOR  REMOTE  COMMUNICATIONS  ON
/		SERIAL  PRINTER  PORT  ('SPRINT'  SET).   UPDATED  K12PCH.PAL  TO
/		CORRESPOND   TO  NEW  DEFINITIONS.    DEFINED  EVENTUALLY  NEEDED
/		COMMUNICATIONS PORT  INSTRUCTIONS FOR DECMATE II;  ACTUAL DECMATE
/		II OPERATION WILL  BE  DEFINED  IN A SUBSEQUENT EDIT.  DOCUMENTED
/		NEW LOADING AND SAVING  INSTRUCTIONS  FOR  K12MIT  TO  ALLOW  FOR
/		ONCE-ONLY CODE IN 10000-11777 WITHOUT  SWAPPING  THE CODE OUT FOR
/		THE USR.  THIS ELIMINATES OVERHEAD  WHEN  LOADING  K12MIT, BUT IS
/		DIFFERENT  FROM  THE FORMER INSTRUCTIONS WHICH ASSUMED  NO  OTHER
/		USAGE OF 10000-11777 OTHER THAN THE (LOCKED-IN) USR.

/	THIS EDIT  PROVIDES THE FRAMEWORK FOR AUTOMATIC DETECTION OF PROGRAM EXECUTION
/	OF K12MIT ON  ANY  MEMBER  OF  THE  DECMATE  FAMILY  (I, II, III, III+).  WHEN
/	6120-TYPE CPU DETECTION OCCURS,  THE  DECMATE I OR II-TYPE COMMUNICATIONS PORT
/	INITIALIZE CODE IS AUTOMATICALLY SELECTED  AS  NECESSARY UNLESS THE PDP-8-TYPE
/	ROUTINES ARE ASSEMBLED (WITH 'SPRINT' SET  OR  EQUIVALENT USER SETTINGS, ETC.)
/	FOR THE VT-78-TYPE PRINTER PORT (32/33), IN  WHICH  CASE THE COMMUNICATIONS IS
/	DONE VIA THE PRINTER PORT ON THE DECMATE (WHICH IS ALMOST PDP-8 COMPATIBLE AND
/	IS ACCOMODATED AS SUCH).

/	SUBSEQUENT EDITS SHOULD PROVIDE FOR A DECMATE I PARAMETER TO CONTROL  THE PORT
/	SELECTION,  AS  THERE  ARE  AT  LEAST  TWO VARIANT OPTIONS BOARDS (DP-278A AND
/	DP-278B) EACH CONSISTING OF TWO PORTS.
/	045	12-AUG-1989	BUG FIX.  			CJL

/		FINISH,  GET,  AND  RECEIVE  COMMANDS   FAIL  TO  ABORT  PROPERLY
/		(ESPECIALLY AFTER THE SEND COMMAND HAS BEEN USED), AS THE CURRENT
/		OPERATING MODE ('KMODE') IS NEVER PROPERLY SET,  OR  IS SET AFTER
/		SEVERAL PACKETS HAVE BEEN SENT.  EACH COMMAND  NOW  SETS  ITS OWN
/		OPERATING MODE BEFORE INITIATING ANY PACKETS.

/	044	11-AUG-1989	CODE CLEANUP.			CJL

/		CHANGED  'CCMSG'  TO  'ABMSG'  WITH  CLEARER  MESSAGE.    CHANGED
/		'CCFLAG'  TO  'ABFLAG' FOR CONSISTENCY.  CHANGED ABORT  CHARACTER
/		FROM <^C> TO CHOICE OF <^X> OR <^Z> FOR  CONSISTENCY.  ELIMINATED
/		'ITTY'  AND  'ITTYW'  ROUTINES  BY  USING  'CTLCTST'  AND 'INPUT'
/		ROUTINES ALREADY  AVAILABLE  A/O EDIT 043.  ELIMINATED 'TCHAR' IN
/		FAVOR OF 'INCHAR' AVAILABLE A/O EDIT 043.

/	043	07-AUG-1989	CODE CLEANUP, ETC.		CJL

/		REWRITE OF  CONSOLE SUPPORT ROUTINES INCLUDING FORCED-ECHO OUTPUT
/		AND COLUMN COUNT FOR <HT> SIMULATION IN PREPARATION FOR IMPENDING
/		USER-INTERFACE  REWRITE.     'SCRIBE',  'LININP',  AND  'ESCPRNT'
/		ROUTINES NOW CALL  "P7ECHO" ROUTINE TO ENSURE PRINTING OF CRUCIAL
/		MESSAGES.

/	042	13-JUN-1989	CODE CLEANUP.			CJL

/		FIXED VARIOUS NAK-RELATED BUGS AND SEND-INIT PROBLEMS AS IN  K278
/		(SOME  OF  THE K278 STUFF IS DEFICIENT!).  CALCULATION OF  PROPER
/		SEQUENCE  NUMBER  FOR NAK CORRECTED OVER FORMER (K08MIT AND K278)
/		VERSIONS.  ADDED ERROR MESSAGE FOR FULL-DISK PROBLEM.

/	041	12-MAY-1989	BUG FIX.			CJL

/		VARIOUS  VERSIONS  (DECMATE)  WON'T  FUNCTION REMOTELY WHILE KL-8
/		VERSIONS WORK  FINE.    ADDED  REMOTE LINE READ IOT TO INITIALIZE
/		REMOTE  LINE  AT   STARTUP  TIME  FOR  VERSIONS  REQUIRING  THIS.
/		CORRESPONDING CHANGES IN PATCH FILE MADE FOR REMOTE LINE READ IOT
/		IN TWO PLACES.
/	040	07-MAR-1989	COSMETIC CLEANUP.		CJL

/		CLEANUP OF EDIT HISTORY AND OTHER COMMENTS.

/	039	21-MAY-1988	CODE CLEANUP.			CJL

/		ADDED VARIABLE 'INIECHO' TO  ALLOW  DEFAULT CONNECT-MODE STATE TO
/		BE HALF-DUPLEX ("SET LOCAL-ECHO ON").    MODIFIED  INPUT  SERVICE
/		ERROR ADDRESSES TO SIMPLIFY ERROR TABLES.

/	038	19-MAY-1988	CODE CLEANUP.			CJL

/		ELIMINATED  TRAILER FILES DURING ASSEMBLY BY  CREATING  VARIABLES
/		'GENMSG' AND 'UMSG.' THIS ALLOWS THE HEADER  FILE  (PARAM.PA)  TO
/		CONTAIN THE LOCAL MESSAGE TEXT WITHOUT SUBSEQUENT OVERLAY  (WHICH
/		WAS WHY THERE FORMERLY WAS A TRAILER FILE CAPABILITY).    OVERLAY
/		BY  K12PCH.BN  WILL  DEFAULT TO CREATION OF A DUMMY USER  MESSAGE
/		(WITHIN K12PCH) ENCOURAGING LOCAL  CUSTOMIZATION.  K12MIT.BN WILL
/		CONTAIN A NULL MESSAGE BY DEFAULT UNLESS CUSTOMIZED IN PARAM.PA.

/	037	21-JAN-1988	BUG FIX.			CJL

/		RESET OS/8 DEVICE CONTROL WORD  TABLE TO DELETE TENTATIVE FILE IN
/		CASE OF PRIOR INPUT SERVICE ERROR.

/	036	20-JAN-1988	BUG FIX.			CJL

/		RESET 'OFFLG' WHEN DOING INPUT SERVICE IN CASE PRIOR ERRORS LEAVE
/		THE FLAG SET.

/	035	14-JAN-1988	USR RESIDENT CODING.		CJL

/		CALLS TO USR NOW USE 10200 INSTEAD  OF  17700.   NO SWAP OVERHEAD
/		WHEN OPENING OR CLOSING FILES.

/	034	13-JAN-1988	CODE CLEANUP.			CJL

/		ALL  EIGHT-BIT  ORIENTED  CONSOLE  CODE ELIMINATED;  NOW  IGNORES
/		PARITY (JUST SEVEN BITS).

/	033	12-JAN-1988	CODE CLEANUP.			CJL

/		'TTYOUT' AND 'OTTY' ROUTINES ELIMINATED;  NOW USES 'P7CH' FOR ALL
/		CONSOLE OUTPUT (EXCEPT FOR CONNECT MODE).

/	032	12-JAN-1988	CODE CLEANUP.			CJL

/		VARIOUS  ROUTINES REWRITTEN TO ELIMINATE DEPENDENCIES ON CPU TYPE
/		BEYOND THE CLASSIC PDP-8.
/	031	11-JAN-1988	CODE CLEANUP.			CJL

/		ELIMINATED 'RTDISP'  AND  CHANGED CALLING CONVENTION FOR DISPATCH
/		ROUTINE.  ALL  CALLERS  NOW  LOCAL  OR VIA LOCAL POINTERS.  ADDED
/		SEVERAL  CONDITIONAL  PARAMETERS  AND    LABELS  FOR  BENEFIT  OF
/		K12PCH.PAL.

/	030	05-JAN-1988	CODE CLEANUP.			CJL

/		CHANGED LOWER/UPPER CASE CONDITIONAL ASSEMBLY PARAMETERS AND MORE
/		EFFICIENT CODE.

/	029	21-DEC-1987	CODE CLEANUP.			CJL

/		CHANGED CALLING CONVENTIONS FOR 'SCRIBE' AND SIMILAR ROUTINES AND
/		REWROTE 'COMMAND' ROUTINE.

/	028	15-DEC-1987	CODE CLEANUP.			CJL

/		COMPLETE REWRITE OF FILE LOOKUP ROUTINE.   'LUKUP' NOW USES FIELD
/		ONE  BUFFER  AND  ITS OWN AUTO-INDEX REGISTER CONSERVING  PROGRAM
/		SPACE.

/	027	05-DEC-1987	CODE CLEANUP.			CJL

/		CHANGED  DISPATCH  ('DISPA0') ROUTINE TO USE 'SRCHTABLE' ROUTINE.
/		ALL CALLS  MADE COMPATIBLE.  ELIMINATED 'SCANC' CODE.  ELIMINATED
/		CODE WITHIN 'DPARS'  ROUTINE.    'LUKUP' ROUTINE NOW DOES ITS OWN
/		DISK I/O.  ELIMINATED 'BLKIN' ROUTINE.

/	026	27-NOV-1987	NEW CONNECT MODE CODE.		CJL

/		TOTAL  REWRITE  OF ALL CONNECT MODE CONSOLE AND REMOTE INPUT  AND
/		OUTPUT  TERMINAL  ROUTINES.  CONNECT IS NOW FULLY BUFFERED IN ALL
/		DIRECTIONS.   IF  FLOW  CONTROL  IS  OBEYED, ANY BAUD RATE CAN BE
/		ACCOMODATED BOTH LOCALLY  AND  REMOTE  (UP  TO  9600 BAUD TESTED,
/		SHOULD WORK TO AT  LEAST  19200 BAUD BY INSPECTION).  TESTED WITH
/		FAST VT-100 EMULATOR CONSOLE TO  PROVE  ESCAPE  SEQUENCES ARE NOT
/		DROPPED WHEN LOCAL TERMINAL IS FASTER  THAN REMOTE LINE.  LIMITED
/		USE OF SUBROUTINES TO IMPROVE HIGH BAUD  RATE  OPERATION.   ADDED
/		TABLE-DRIVEN ERROR EXIT ROUTINE FOR SEND ROUTINES.

/	THIS EDIT PROVIDES  FULLY  BUFFERED  INPUT/OUTPUT  ROUTINES FOR BOTH LOCAL AND
/	REMOTE PORTS.  NO  INTERRUPTS  ARE  USED  FOR  MAXIMUM COMPATIBILITY WITH OS/8
/	DEVICES (SOME OF WHICH ARE  INTOLERANT OF INTERRUPTS, SUCH AS TD-8/E).  REMOTE
/	FLOW CONTROL (IF ENABLED) WILL SIGNAL BUFFER FILLING VIA <DC3> WHEN THE BUFFER
/	IS 3/4 FULL.  WHEN THE BUFFER  REACHES 1/4 FULL, THE REMOTE WILL BE SENT <DC1>
/	TO ALLOW FURTHER OUTPUT.  REMOTE FLOW CONTROL IS SUPPORTED IN BOTH DIRECTIONS;
/	LOCAL FLOW CONTROL IS FROM THE KEYBOARD ONLY.

/	WHILE THE CONSOLE OUTPUT IS PAUSED BY <DC3>, THE  BUFFER WILL FILL WITH OUTPUT
/	CHARACTERS.  WHEN THE USER RELEASES THE CONSOLE WITH <DC1>,  THE  BUFFER  WILL
/	RAPIDLY  EMPTY  (ASSUMING THE CONSOLE IS FASTER THAN THE REMOTE LINE).    THIS
/	ALLOWS THE USER TO PAUSE THE CONSOLE WITHOUT BACKING UP THE REMOTE  LINE UP TO
/	THE LIMITS OF BOTH LOCAL OUTPUT AND REMOTE INPUT BUFFERS.
/	025	24-NOV-1987	NEW FEATURES AND CODE CLEANUP.	CJL

/		PROPER  INTERRUPT  SETUP  FOR  <^C> AND <^P>, ECHO  STATE.    ALL
/		MESSAGES  IN  NEW  FORMAT,  (SOME NEW ONES HAVE BETTER  CONTENT).
/		ELIMINATED  'PRI6B' AND 'REM6B' ROUTINES.  NEW AND IMPROVED INPUT
/		SERVICE ERROR  CODE  MOVED  TO  PROPER  PAGE.    REWROTE  CONNECT
/		ROUTINES TO ALLOW  NON-INTERRUPT BUFFERED I/O LATER.  CREATED NEW
/		VARIABLE 'ESCHAR' AND PARAMETER  'ESCAPE'  TO  SET DEFAULT ESCAPE
/		CHARACTER.  ESCAPE CHARACTER CAN BE CHANGED IN MEMORY AND WILL BE
/		USED  CORRECTLY  BY ALL ROUTINES.   ADDED  'ESCPRNT'  ROUTINE  TO
/		HANDLE  ALL  CASES  (INCLUDING NON-CONTROL CHARACTERS).   DEFAULT
/		ESCAPE  PARAMETER  VALUE  COMPATIBLE  WITH K08V2, BUT IS  A  USER
/		PARAMETER,  CONFIGURED  AS  OTHER PARAMETERS DEFINED IN EDIT 017.
/		CREATED  ESCAPE FUNCTION TABLE FOR EXPANSION LATER.  NOW SUPPORTS
/		ESCAPE C(LOSE)  IN  UPPER  OR LOWER CASE, ESCAPE ESCAPE (SEND ONE
/		ESCAPE CHARACTER).   ALL  BAD  ESCAPE  COMMANDS  WILL ISSUE <BEL>
/		CHARACTER TO WARN USER  THAT COMMAND IS ILLEGAL AND OTHERWISE WAS
/		IGNORED.  CREATED NEW VARIABLE  'ECHOFLAG' TO ALLOW LOCAL ECHO IN
/		CONNECT MODE.

/	024	19-NOV-1987	NEW FEATURES.			CJL

/		NEW  STARTUP MESSAGES AND HELP METHOD  VIA  COMMAND.    CPU  TYPE
/		IDENTIFICATION TO ALLOW FUTURE VERSIONS TO CHECK  FOR  QUIRKS AND
/		MODEL DEPENDENCIES.  THE DEFAULT PROMPT REFLECTS THE  ACTUAL  CPU
/		TYPE (THUS "KERMIT-12>" ON PDP-12).  VERSION, REVISION, AND  DATE
/		NOW EQUATED SYMBOLS.

/	023	18-NOV-1987	NEW CONSOLE I/O PACKAGE.	CJL

/		NEW  CONSOLE  I/O  ROUTINES  WITH  DC1/DC3  SUPPORT  FOR  CONSOLE
/		TERMINAL MESSAGES NOT ASSOCIATED WITH ANY REMOTE ACTIVITY (NOT TO
/		BE USED DURING CONNECT MODE).  USES FIELD ONE FOR MESSAGE TEXT TO
/		ALLOW FOR MORE PROGRAM  SPACE.    THE  MESSAGES  ARE NOW GIVEN IN
/		UPPER/LOWER SIXBIT FORMAT.  SUPPORT  FOR <^P> RESTART AND <^O> TO
/		FLIP  ECHO.  UPPER-CASE CAN BE  FORCED  BY  CHANGING  A  VARIABLE
/		('UPONLY').

/	022	17-NOV-1987	BUG FIX.			CJL

/		EXTRA-LONG INIT PACKETS CORRUPTING PROGRAM;  NOW  CHECKS  FOR AND
/		IGNORES EXTRA CAPABILITIES BEYOND 'CAPAS' BYTE.
/	021	17-NOV-1987	CODE CLEANUP.			CJL

/		REWROTE  TENTATIVE OUTPUT FILE LENGTH CODE FOR MORE  CONSISTENCY.
/		RENAMED "FINISH" COMMAND CORRECTLY (FORMERLY "BYE").

/	FORMER  CODE  REGARDING  THE  TENTATIVE  FILE  MAXIMUM  LENGTH WAS  ACCEPTABLY
/	ORGANIZED  FOR  ORIGINAL  PS/8, OS/8 CONVENTIONS.  WITH THE EVOLUTION  OF  THE
/	OPERATING  SYSTEM  INTO  OS/78  (VERSIONS  1-4) AND OS/278 (VERSIONS 1-2), THE
/	ENTER OPERATION HAS BEEN CHANGED WITH DANGEROUS CONSEQUENCES.

/	THE  ORIGINAL DEFINITION OF THE LENGTH RETURNED BY ENTER IS THE ACTUAL  LENGTH
/	OF  THE LARGEST EMPTY (IN TWO'S COMPLEMENT FORM).  IF RECORD 7777 IS  PART  OF
/	THE  ACTUAL  LARGEST  EMPTY (FULL SIZE DEVICE AND THE LARGEST EMPTY IS LAST ON
/	THE  DEVICE),  THEN  THE  LENGTH RETURNED IS ONE LESS (THIS IS A LONG STANDING
/	BUG).  SINCE THERE IS NO STRAIGHT-FORWARD WAY TO DETERMINE THIS, THE LENGTH IS
/	ASSUMED TO BE CORRECT.

/	TESTS WITH THE  DECUS  VERSION  OF  OS/278 (DM-101) REVEAL A DANGEROUS CHANGE:
/	THE LENGTH RETURNED IS TWO LARGER THAN ACTUALLY EXISTS!

/	TO COUNTERACT THIS, EDIT  010  INSERTED  A  DECREMENT  OF  TWO INTO THE LENGTH
/	BEFORE PASSING IT BACK TO  THE  KERMIT FILE WRITING ROUTINE.  THE FILE WRITING
/	ROUTINE THEN ADDS ONE TO THE LENGTH TO CREATE A "DANGER COUNT", I.E., IN TWO'S
/	COMPLEMENT  NOTATION,  THIS IS THE AMOUNT THAT  WILL  INDICATE  FILE  OVERFLOW
/	SHOULD IT REACH ZERO.

/	THIS HAS NOW BEEN REORGANIZED TO ALLOW THE  ENTER  ROUTINE  TO  SET THE DANGER
/	COUNT  DIRECTLY.  OS/8 USERS MUST ALLOW FOR THE  EXTRA  ROOM  (WHICH  MUST  BE
/	PRESENT  BUT  WILL NOT BE USED), SINCE NO CHECK FOR  SYSTEM  VERSION  WILL  BE
/	PERFORMED.

/	020	16-NOV-1987	NEW ROUTINES AND CODE CLEANUP.	CJL

/		REWROTE  ENTIRE  OUTPUT  FILE    PACK   ROUTINE.    NOW  SUPPORTS
/		ASCII/BINARY  INTERNAL FILE MODE FOR  LATER  USE.    USES  OUTPUT
/		BUFFER IN FIELD ONE (SAME DEFINITIONS  AS  INPUT BUFFER) TO ALLOW
/		MORE PROGRAM SPACE.  END OF FILE  CONVENTION  IN  ASCII  MODE NOW
/		INCLUDES  ENSURING  <^Z>  CHARACTER  PACKED  INTO FILE (OR  NOT).
/		REWROTE  ENTIRE  OUTPUT  FILE  CLOSE  ROUTINE  TO  IMPLEMENT <^Z>
/		SCHEME.  ELIMINATED SEPARATE OUTPUT FILE INITIALIZE ROUTINE;  USE
/		SPECIAL ROUTINE CALL INSTEAD.  FIXED PACKET WRITE BUG.

/	019	15-NOV-1987	NEW ROUTINES AND CODE CLEANUP.	CJL

/		FIXED UNPACK <^Z> BUG.  REWROTE ENTIRE INPUT FILE UNPACK ROUTINE.
/		NOW SUPPORTS ASCII/BINARY INTERNAL FILE MODE FOR LATER USE.  USES
/		INPUT BUFFER IN FIELD ONE TO ALLOW  MORE  PROGRAM  SPACE.  BUFFER
/		FIELD DEFINED VIA SYMBOLS TO ALLOW CHANGES IN THE FUTURE.  END OF
/		FILE CONVENTION IN ASCII MODE NOW INCLUDES SENDING <^Z> CHARACTER
/		OR  NOT.  ELIMINATED SEPARATE INPUT FILE INITIALIZE ROUTINE;  USE
/		SPECIAL ROUTINE CALL INSTEAD.

/	018	09-NOV-1987	BUG FIX AND CODE CLEANUP.	CJL

/		FIXED RECEIVE BUG; NOW ALLOW DEV: ON RECEIVE.
/	017	05-NOV-1987	NEW FEATURES.			CJL

/		CONDITIONAL ASSEMBLY  PARAMETERS  ADDED  FOR MACHINE TYPE (PDP-8,
/		DECMATE I, DECMATE  II/III/III+),  REMOTE LINE AND LOCAL TERMINAL
/		INTERFACE DEFINITIONS.

/	016	05-NOV-1987	CODE CLEANUP.			CJL

/		OPTIMIZATION OF CODE, LITERALS, CONSTANTS.

/	015	04-NOV-1987	BUG FIX.			CJL

/		INPUT SERVICE ROUTINE ERROR  DOES JMP INSTEAD OF JMS WHEN CALLING
/		COMMON ERROR HANDLER.

/	014	02-NOV-1987	SOURCE FILE CLEANUP.		CJL

/		SOURCE FILE COSMETICALLY CLEANED UP  AND  RENAMED  TO  K12MIT.PAL
/		WHICH CONFORMS WITH CUCCA NAMING CONVENTION.    NO  ACTUAL BINARY
/		CODE CHANGES BEYOND K08V2.  THIS EDIT  HISTORY  ADDED.    ENTRIES
/		PRIOR TO 014 TRANSCRIBED BY CJL.

/	SINCE THE PDP-12 (AND OTHER 12-BIT DEC MACHINES)  IS  THE INTENDED ENVIRONMENT
/	FOR THIS PROGRAM, IT IS NOW KNOWN AS KERMIT-12.

/	ASSEMBLING  THE  SOURCE FILE PRODUCES BINARY IDENTICAL TO K08V2.PA  CONFIRMING
/	THAT SOURCE CLEANUP DOESN'T DAMAGE THE CODING (K08V2 IS NOW OBSOLETE).

/	013	01-OCT-1987	CHANGE TO VERSION 2.0.		R. SCHLERF (RICH)

/		CHANGED  'RKIOT'/'RTIOT'    TO   43/44  REMOTE  LINE  IOT  (LOCAL
/		PREFERENCE).  CHANGED  'ESCAPE'  CHARACTER  TO  ^]  ('CONX1') FOR
/		GENERIC CONFORMITY.  ADDED  VERSION/COMMAND BANNER AT STARTUP FOR
/		MINI-HELP.    INCORPORATED  K278  CHANGES  003-006,  009-010  (NO
/		INTERRUPTS).  DELETED 'ERRMSG.' NOW USES  'STXERR'  AT 'CLOOP9'+2
/		FOR PROGRAM SPACE.  TO CONFORM TO  GENERIC KERMIT, "BACK ON PDP8"
/		MESSAGE  DELETED AND REPLACED WITH BEEP <^G>.   MESSAGE  "SENDING
/		FILE  XXXXXX.XX  CREATED  ON  DD-MM-YY"  REDUCED TO "SENDING FILE
/		XXXXXX.XX"  TO CONFORM TO GENERIC KERMIT.  PARITY BIT IS  IGNORED
/		ON BOTH REMOTE AND TTY LINES.  OUTPUT PARITY IS SET TO SPACE.

/	PROGRAM RENAMED TO K08V2.PA AND MADE AVAILABLE TO CUCCA BY:

/	RICHARD SCHLERF (RICH)
/	AMERICAN CYANAMID COMPANY
/	MEDICAL RESEARCH DIVISION
/	LEDERLE LABORATORIES
/	BUILDING 190 ROOM 115H
/	PEARL RIVER, NEW YORK  10965
/	(914) 732-2186 (09:00 TO 16:00)

/	SINCE  PRIMARY APPLICATION OF K08V2 IS FOR PDP-8 USAGE, THE MODIFICATIONS  NOT
/	SPECIFIC TO DECMATE II/III FROM K278 WERE MOVED TO THE K08MIT VERSION.  FUTURE
/	VERSIONS WILL  INCORPORATE  THE  DECMATE  FEATURES AND THUS OBSOLETE ALL OTHER
/	VERSIONS AT THAT TIME.
/	012	04-JUN-1986	PROGRAM FIX.			SEPP STADELMANN (SSTA)

/		RE-INITIALIZE VIA 'V30ST' AS ROM SETUP CLEARS COMPOSETABLE, ETC.

/	04-JUN-1986 VERSION RELEASED  TO  CUCCA  BY  MARTYN HEMMINGS (DEC GERMANY) AND
/	SEPP STADELMANN (DEC SWITZERLAND) OF:

/	DIGITAL EQUIPMENT CORPORATION (DEC)
/	146 MAIN STREET
/	MAYNARD, MASS  01754
/	(617) 897-5111

/	CUCCA RENAMED FILES (KERMIT.PA AND KERCOM.PA) TO K278.PA AND K278COM.PA (WHICH
/	DOESN'T REALLY CONFORM TO THE NAMING CONVENTION).

/	CUCCA VERSION OF K278.PA FOUND TO BE DEFECTIVE.  FILE REPAIRED BY:

/	CHARLES LASNER (CJL)
/	CLA SYSTEMS
/	72-55 METROPOLITAN AVENUE
/	MIDDLE VILLAGE, NEW YORK  11379-2107
/	(718) 894-6499

/	REPAIRED FILE (K278.PA) NOW AVAILABLE AT CUCCA.

/	PROGRAM IS NOW  THE DECMATE II/III (III-PLUS) KERMIT ONLY.  HOOKS WERE LEFT IN
/	FOR PDP-8 VERSION, BUT  NOT  IMPLEMENTED.    K278  DOES  WORK  WITH ADDITIONAL
/	IMPLEMENTATIONS OF KERMIT, BUT RECEIVE  COMMAND DOES NOT WORK.  PROGRAM YIELDS
/	RECOVERABLE SYSTEM ERROR/HALT WHEN EXITING TO  FLOPPY-BASED DECMATE II SYSTEM.
/	CONNECT MODE IS VT200 8-BIT WHICH CONFUSES EVEN/ODD PARITY SYSTEMS.  K278 DOES
/	NOT SUPPORT SETUP KEY OF DECMATE, BUT IMPLEMENTS SETUP COMMAND.

/	011	04-JUN-1986	NEW FEATURES.			SSTA

/		'PRQ3' CODE CONDITIONALS.  ROM SETUP COMMAND IMPLEMENTED FOR DMII/III.
/		AUTOMATIC UPPERCASE SELECT ON RETURN FROM CONNECT.

/	010	13-MAR-1986	BUG FIX.			MARTYN HEMMINGS (MART)

/		FULL DISK HANDLED WELL.

/	009	13-MAR-1986	BUG FIX.			MART

/		CLEAN UP BREAK AND GET.
/	008	12-MAR-1986	BUG FIX.			MART

/		CLEAR  INPUT  CHARACTERS  FROM  COMMUNICATIONS PORT WHEN IN  IDLE
/		LOOP.

/	007	11-MAR-1986	NEW FEATURES AND BUG FIX.	MARTYN HEMMINGS AND
/								SSEP STADELMANN
/								(MART+SSTA)

/		INTERRUPT DRIVEN AND BUG FIX.

/	006	10-MAR-1986	NEW FEATURE.			MART+SSTA

/		DEVICE PARSE ON GET.

/	005	10-MAR-1986	BUG FIX.			MART+SSTA

/		NO DATE IN FILE WITH <^Z> INTACT.

/	004	10-MAR-1986	NEW FEATURES AND BUG FIX.	MART+SSTA

/		MAXIMUM  RECEIVE  BUFFER  FIXUP  ('RTERMI'),  15  SECOND TIME-OUT
/		DURING CONNECT.

/	003	10-MAR-1986	BUG FIX.			SSTA

/		TWO PAGE HANDLER FIX.

/	K08MIT.PAL  COPIED  TO  DEC  ENGINEERING NETWORK (NODE LSMVAX::) ULTIMATELY TO
/	EUROPE (NODE VIRGIN::) WHERE PROGRAM BECAME KERMIT.PAL AND KERCOM.PAL.

/	KERMIT.PAL  AND KERCOM.PAL ARE TWO SOURCE FILES ASSEMBLED TOGETHER TO  PRODUCE
/	THE RUNNING KERMIT-8.  *THEY ARE FOR THE DECMATE II/III/III-PLUS ONLY.*

/	002	18-JUL-1985	ORIGINAL RELEASE.		RANDY HIPPE

/	18-JUL-1985 VERSION RELEASED TO CUCCA BY JERRY SANDS AND RANDY HIPPE OF:

/	BUREAU OF ENGRAVING, INC.
/	3311 BROADWAY N.E.
/	MINNEAPOLIS, MN  55413
/	(612) 623-0900 X218

/	CUCCA  RENAMED  FILE  (KER8.PAL)  TO  K08MIT.PAL  WHICH  CONFORMS  TO   NAMING
/	CONVENTION OF KERMIT FILES.

/	K08MIT SUPPORTS CONNECT, BYE (REALLY FIN), EXIT, SEND, GET, RECEIVE ONLY.

/	PROGRAM PRONE  TO  GETTING  "CONFUSED" AND OUTPUTS FILE DATE ATTRIBUTE BOTH AS
/	'CAPAS' BYTE FEATURE  AND  ASCII  TEXT INSERTED INTO CONTENTS OF FILE AHEAD OF
/	FILE DATA.  COMMAND PROCESSOR ACCEPTS UPPER-CASE COMPLETE COMMANDS ONLY.  <^C>
/	ABORT FEATURE TAKES VERY LONG TIME TO ACT (IF AT ALL!).  MANY KERMITS WILL NOT
/	WORK WITH K08MIT;  HOWEVER, K08MIT WAS TESTED SUCCESSFULLY WITH KERMIT-20.

/	001	30-JUL-1984	FIRST VERSION (KER8.PAL).	JERRY SANDS
/	HARDWARE HINTS AND KINKS.


/	KERMIT-12 REQUIRES THE FOLLOWING STANDARD OS/8 FAMILY CONFIGURATION:

/	PDP-8 FAMILY MEMBER WITH AT LEAST 8K MEMORY.

/	OS/8 SYSTEM DEVICE (WITH OS/8 FAMILY OPERATING SYSTEM RESIDENT).

/	KL8-COMPATIBLE CONSOLE INTERFACE.

/	7/8-BIT ASCII EXTERNAL CONSOLE TERMINAL DEVICE (TTY:).

/	KL8-COMPATIBLE REMOTE INTERFACE TO OTHER KERMIT.

/	NOTE:  ASSEMBLY  PARAMETERS  OF  KERMIT-12  ALLOW FOR LOCAL KERMIT CONTROLLING
/	TERMINALS TO BE OTHER  THAN  THE  PRIMARY  OS/8  CONSOLE  DEVICE.   THE ACTUAL
/	HARDWARE MUST STILL CONFORM TO  THE  SAME REQUIREMENTS (THE DEVICE CODES WOULD
/	THEN BE USER-SPECIFIED AND DIFFER FROM  THE  STANDARD  03/04)  AS THE STANDARD
/	CONSOLE INTERFACE AND TERMINAL.

/	SPECIAL DECMATE CONSIDERATIONS:

/	DECMATE  USAGE IS USUALLY OBTAINED BY  ASSEMBLING  FOR  THE  STANDARD  CONSOLE
/	DEVICE  (03/04),  AS  THE  BUILT-IN  FIRMWARE/SLUSHWARE  OF  THE  DECMATES  IS
/	SUFFICIENTLY COMPATIBLE WITH THE PDP-8 HARDWARE FOR KERMIT-12'S  REQUIREMENTS.
/	(THE ONLY OTHER ACCEPTABLE CONSOLE DEVICE ON THE DECMATE IS THE PRINTER PORT.)

/	DECMATE  REMOTE  COMMUNICATIONS  PORTS  ARE    *RADICALLY*    DIFFERENT   FROM
/	KL8-COMPATIBLE PORTS.  THESE ARE HANDLED AUTOMATICALLY BY ONCE-ONLY CODE WHICH
/	DETECTS  THE  USAGE  OF  KERMIT-12  ON  THE    SPECIFIC  DECMATE  SYSTEM,  AND
/	SELF-CONFIGURATION AS APPROPRIATE.  THERE IS ONE EXCEPTION  TO THIS, NAMELY IF
/	THE COMMUNICATIONS PORT CODE IS ASSEMBLED FOR THE PRINTER  PORT  (32/33), THEN
/	THE PRINTER PORT, *NOT* THE COMMUNICATIONS PORT WILL BE USED.    THE  STANDARD
/	ASSEMBLY  OF  KERMIT-12 IS FOR A PDP-8 WITH DEVICE 40/41 COMMUNICATIONS  PORT.
/	THIS DESIGNATED VERSION WILL SELF-CONFIGURE WHEN EXECUTED ON A DECMATE.
/	CONFIGURATION RESTRICTIONS:

/	WHEN  INTERRUPTS  ARE SUPPORTED AGAIN, DEVICES SUCH AS THE TD-8/E WON'T  WORK.
/	THE  NON-INTERRUPT  VERSION  SHOULD WORK TO 19200 BAUD ON THE PDP-8/E CPU,  SO
/	THIS  SHOULD NOT BE A PROBLEM.  INTERRUPT-DRIVEN VERSIONS OF KERMIT-12 MUST BE
/	RUN ONLY  ON  SYSTEMS  WHERE  *ALL*  INTENDED  DEVICES CAN HAVE THEIR HANDLERS
/	INTERRUPTED BY THE CONSOLE AND REMOTE LINE INTERRUPT HANDLERS.  WHEN IN DOUBT,
/	THE NON-INTERRUPT VERSION MUST BE USED (CURRENTLY THE ONLY VERSION).

/	IF FLOW CONTROL IS  DISABLED  (DUE  TO  XON/XOFF  BEING  UNAVAILABLE) THEN THE
/	CONSOLE BAUD RATE MUST MEET  OR  EXCEED  THE  REMOTE LINE RATE.  THE USER MUST
/	TAKE MINIMAL CARE NOT TO OVERLOAD  THE  INTERNAL BUFFERS OF KERMIT-12, AS THIS
/	WILL YIELD THE ERROR MESSAGE:  KEYBOARD INPUT ERROR!

/	THIS IS NOT LIKELY TO OCCUR UNLESS  ONE  "PLAYS"  WITH  A  KEYBOARD  WHICH CAN
/	GENERATE NUMEROUS ESCAPE SEQUENCES AS THE BUFFERS ARE  QUITE  ADEQUATE FOR ALL
/	REASONABLE TERMINAL APPLICATIONS.  SIMILARLY, IF THE REMOTE LINE DOES NOT OBEY
/	XON/XOFF  PROTOCOL  (WHILE  KERMIT-12  HAS  IT  ENABLED), THEN INTERNAL BUFFER
/	OVERFLOW WILL YIELD THE ERROR MESSAGE:  REMOTE LINE INPUT ERROR!

/	THESE ERRORS ARE EXTREMELY UNLIKELY AND CAN ONLY BE CREATED BY  MISUSE OF FLOW
/	CONTROL (THE ONLY EXCEPTION TO THIS IS THE ATTEMPT TO USE KERMIT-12  WITH  THE
/	CONSOLE  BAUD  RATE  SLOWER  THAN  THE REMOTE LINE BAUD RATE WITH FLOW CONTROL
/	DISABLED).  IF FLOW CONTROL IS ENABLED AND OBEYED THEN THE BUFFERING OF REMOTE
/	LINE INPUT  WILL  OCCUR  WHILE SHORT PAUSES OCCUR ON THE CONSOLE (ASSUMING THE
/	USER FREEZES/UNFREEZES THE  DISPLAY OFTEN AND THE CONSOLE DISPLAY BAUD RATE IS
/	FASTER THAN THE REMOTE LINE BAUD RATE) WITH PRACTICALLY NO REMOTE LINE DELAY.

/	FLOW CONTROL IS NOT  YET  SUPPORTED  DURING KERMIT TRANSFERS.  SINCE KERMIT-12
/	DOES  NOT SUPPORT SLIDING WINDOWS,  KERMIT-12  WILL  NEVER  GENERATE  OUTGOING
/	XON/XOFF SEQUENCES.  FUTURE REVISIONS WILL  SUPPORT INCOMING XON/XOFF FROM THE
/	REMOTE KERMIT.  XON/XOFF PROTOCOL DURING CONNECT  MODE IS COMPLETELY AVAILABLE
/	AT THE USER'S OPTION.

/	CONSOLE TERMINALS ARE REQUIRED TO SUPPORT "GLASS TTY:"  FEATURES,  I.E.    THE
/	PRINTING ASCII CHARACTER SET (LOWER-CASE DESIRABLE) AND THE CONTROL CHARACTERS
/	<CR>, <LF>, AND <BEL> (THE LAST FOR VARIOUS AUDIBLE REPORTS  ONLY).  TERMINALS
/	LACKING LOWER-CASE  SUPPORT  SHOULD "FOLD" LOWER-CASE CHARACTERS TO UPPER-CASE
/	AUTOMATICALLY.  TERMINALS  SUCH  AS  THE VT05 CAN HAVE THE KEYBOARD LOWER-CASE
/	ENABLED, AS KERMIT-12 SUPPORTS  OPTIONAL  OUTPUT FOLDING.  THE UPPER-CASE ONLY
/	OPTION SHOULD BE ENABLED FOR  TERMINALS WHICH IGNORE LOWER-CASE INPUT FROM THE
/	HOST,  AS KERMIT-12 GENERATES NUMEROUS LOWER-CASE  MESSAGE  CHARACTERS  (WHICH
/	BECOME UPPER-CASE IF THIS OPTION IS SET).   THE <BS> CHARACTER IS REQUIRED FOR
/	VISUAL  RUBOUT  (<BS>  <SPACE>  <BS>)  ONLY.   FUTURE  VERSIONS  WILL  SUPPORT
/	HARD-COPY BACKSPACE TO REMOVE THIS REQUIREMENT.  ALL TERMINAL  FEATURES  (SUCH
/	AS ACTUAL VT-100 FUNCTIONALITY) ARE FREELY PASSED TO THE HOST  DURING  CONNECT
/	MODE;  THE ONLY CHARACTER ACTUALLY RESERVED IS THE ESCAPE CHARACTER WHICH WILL
/	BE  TREATED  AS  A SEVEN-BIT CHARACTER ONLY.  IF THE USER PRESSES  THE  ESCAPE
/	CHARACTER TWICE,  THEN  THE  SEVEN-BIT REPRESENTATION OF THE CHARACTER IS SENT
/	ONCE;  THERE  IS  NO  WAY  TO SEND THE ESCAPE CHARACTER WITH THE HIGH-BIT SET.
/	SINCE THE ESCAPE CHARACTER  ITSELF  CAN  BE SET TO ALMOST ANY SEVEN-BIT VALUE,
/	THIS SHOULD NOT BE A SERIOUS LIMITATION.  TERMINALS THAT DON'T "BEEP" WHEN THE
/	<BEL> CHARACTER IS SENT SHOULD NOT  OUTPUT  A  PRINTABLE RENDITION OF THE <^G>
/	CHARACTER, AS THIS WOULD DISRUPT THE TERMINAL OUTPUT AND INTERNAL COLUMN COUNT
/	DURING VARIOUS MESSAGE SEQUENCES, ETC.
/	KL-8/E INTERFACES SHOULD BE SETUP WITH THE FOLLOWING STANDARD SETTINGS:

/	1 STOP BIT ABOVE 110 BAUD WITH 8 BITS DATA.

/	FUNCTIONAL  BAUD RATES INCLUDE 110, 150, 300, 600,  1200,  2400,  4800,  9600,
/	19200, 38400 AND 76800.  2400 BAUD REQUIRES A  REVISION  "B"  OR  BETTER M8650
/	MODULE  (IF  ONE  USES  DEC'S  DOCUMENTATION  OF AVAILABLE SPLIT-LUG OPTIONS).
/	ACTUAL  BAUD  RATES  UP TO APPROXIMATELY 100 KBAUD SHOULD WORK WHEN  KERMIT-12
/	BECOMES  INTERRUPT-DRIVEN.    RATES  OTHER THAN 110 BAUD REQUIRE A 19.6608 MHZ
/	BAUD-RATE OSCILLATOR.

/	THE BAUD  RATES STATED ABOVE ARE ACTUALLY AVAILABLE ON THE KL-8/E, BUT REQUIRE
/	A SINGLE SOLDER  JUMPER  TO  IMPLEMENT  THE  PROPER BAUD RATE ABOVE 2400 BAUD.
/	CHANGING BAUD-RATE GENERATOR CRYSTALS  WILL  PRODUCE OTHER RATES AS NECESSARY.
/	(SEND INQUIRIES  TO CLA SYSTEMS FOR INFORMATION REGARDING KL-8/E MODIFICATIONS
/	INCLUDING UPGRADED BAUD-RATE  OSCILLATORS,  ETC.) KERMIT-12 HAS BEEN TESTED TO
/	9600 BAUD AND SHOULD WORK TO 19200 BAUD (AS OF THE CURRENT VERSION).


/	KL8-J/A INTERFACES SHOULD BE SETUP WITH THE FOLLOWING STANDARD SETTINGS:

/	1 STOP BIT ABOVE 110 BAUD WITH 8 BITS DATA NO PARITY.

/	FUTURE  VERSIONS  OF KERMIT-12 WILL SUPPORT VARIOUS SOFTWARE-GENERATED  PARITY
/	OPTIONS.  THE FRAMING AND OVERRUN ERRORS CAN BE ENABLED AND WILL EVENTUALLY BE
/	SUPPORTED (BUT THE PARITY GENERATOR SHOULD BE DISABLED TO PREVENT  INTERACTION
/	WITH THE SOFTWARE USE OF PARITY GENERATION/DETECTION).

/	ALL BAUD RATES ARE SUPPORTABLE:

/	110, 150, 300, 600, 1200, 2400, 4800, 9600, 19200.

/	19200 BAUD IS ACHIEVED BY CUTTING JUMPER "W2" AND ADDING JUMPER  "W5" AND THEN
/	SETTING THE BOARD FOR WHAT IS NORMALLY 9600 BAUD.  A WESTERN DIGITAL TR-1602-B
/	OR  EQUIVALENT  UART  IS  REQUIRED TO SUPPORT 19200 BAUD;  MOST OF THE  RECENT
/	PRODUCTION  DEC M8655 BOARDS USE THE SMC COMM 2017 UART WHICH MEETS OR EXCEEDS
/	THIS REQUIREMENT.   EARLY  M8655 BOARDS USE GI UARTS IN CERAMIC PACKAGES WHICH
/	*CANNOT* BE USED AT 19200 BAUD (MANY ARE FLAKY AT 9600 BAUD!).

/	RECEIVE BAUD RATE SHOULD  BE IDENTICAL TO TRANSMIT BAUD RATE.  (DO NOT SET THE
/	RECEIVE=150 BAUD SWITCH!)
/	OTHER INTERFACES:

/	DKC-8/A (8/A OPTION BOARD #1)  INTERFACES  SHOULD  BE SETUP AS PER THE KL8-J/A
/	SPECIFICATIONS INCLUDING THE REQUIREMENTS OF THE UART.  SOME DEC DOCUMENTATION
/	INDICATED A PROHIBITION ON THE USE OF  19200 BAUD, BUT THIS IS OBVIATED BY THE
/	USE OF THE SAME UARTS AS IN THE KL8-J/A.

/	EARLIER DEVICES SUCH AS PT08, DP-12, KL-8/F OR DC02 (CHANNEL ZERO ONLY) SHOULD
/	WORK CORRECTLY AS FACTORY WIRED (MOST OF THESE DEVICES  DO NOT SUPPORT OPTIONS
/	KERMIT-12  WOULD  REQUIRE  TO  BE  DISABLED  ANYWAY.    THESE  INCLUDE  PARITY
/	GENERATION,  FRAMING  ERROR  DETECTION,  ETC.).  TO UTILIZE THESE DEVICES, THE
/	ASSEMBLY PARAMETERS  FOR  USER DEVICES AND THEIR RESPECTIVE DEVICE CODE VALUES
/	SHOULD BE GIVEN  DURING  ASSEMBLY  (SEE ASSEMBLY INSTRUCTIONS).  PROPER DEVICE
/	CODE VALUES MUST BE  OBTAINED  FOR  THE  SELECTED INTERFACE, AS THERE ARE MANY
/	ACTUAL POSSIBILITIES.  (DP-12 DEVICES  ARE  GENERALLY DEVICE 40/41;  PT08/DC02
/	INTERFACES ARE GENERALLY DEVICE 11/12, ETC.)
/	ASSEMBLY INSTRUCTIONS.

/	KERMIT-12 CAN BE ASSEMBLED BY EITHER OF TWO METHODS:


/	P?S/8 METHOD:

/	ASSUMING THE EXTENDED-LENGTH FILE KERM12 IS  THE  SOURCE  FILE,  THE FOLLOWING
/	COMMAND WILL PRODUCE A FULLY ORNAMENTED LISTING:

/	.PAL KB1,KB2,KB3,KB4<KERM12(ACEJLMNPQSX8)

/	OPTION SWITCH BREAKDOWN:

/	/A	ALL SYMBOLS IN SYMBOL PRINTOUT.

/	/C	OPTIMIZE  CORE  DURING ASSEMBLY FOR MORE SYMBOLS,  LESS  BUFFERS.
/		THIS OPTION SHOULD BE DELETED IF MORE THAN  8K  IS  AVAILABLE FOR
/		ASSEMBLY.

/	/E	FORGET LITERAL BOUNDARIES WHEN LEAVING THE CURRENT PAGE.

/	/J	*DO NOT* TERMINATE TEXT STRINGS WITH EXTRA ZERO WORD.

/	/L	PERFORM SECOND-PASS LISTING.

/	/M	CHAIN TO MAP FOR BITMAP OUTPUT AT END OF ASSEMBLY.

/	/N	ENABLE NEATNESS ADORNMENTS TO LISTING OUTPUT.

/	/P	ENABLE PRINTER-ORIENTED (WIDE MODE) LISTING OUTPUT.

/	/Q	ENABLE LITERALS ONLY, GENERATED LINKS ARE ERRORS.

/	/S	ENABLE SYMBOL TABLE PRINTOUT.

/	/X	ENABLE CROSS-REFERENCE OUTPUT AT END OF ASSEMBLY.

/	/8	ENABLE FULL SYMBOL TABLE INCLUDING LINC MODE CROSS ASSEMBLY.

/	THE NUMBER OF BINARY FILES REQUIRED (KB1, KB2, KB3, ETC.) IS  TO BE DETERMINED
/	AT ASSEMBLY TIME, AS KERMIT-12 WILL TEND TO GROW LARGER AS FEATURES ARE ADDED.

/	P?S/8 PAL IS THE PREFERRED METHOD  OF ASSEMBLING K12MIT DURING DEVELOPMENT DUE
/	TO SUPERIOR ERROR DIAGNOSTICS AND OVERALL SPEED.   K12MIT COULD GROW TO A SIZE
/	BEYOND THE CAPABILITIES OF OS/8 CREF.  THIS  LIMITATION  CANNOT  APPLY  TO THE
/	P?S/8 DEVELOPMENT ENVIRONMENT.

/	P?S/8 PAL CAN PRODUCE A LISTING OF K12MIT, BUT THE BINARY FILES CREATED BY THE
/	ASSEMBLY  MUST BE TRANSFERRED TO AN OS/8 ENVIRONMENT FOR USE, SINCE K12MIT (AS
/	SPECIFICALLY WRITTEN) IS FOR THE OS/8 FAMILY OF SYSTEMS ONLY.

/	NOTE:  P?S/8 IS *NOT* A DEC PRODUCT;  IT IS SOLD COMMERCIALLY AND IS AVAILABLE
/	FREE  OF  CHARGE (EXCEPT FOR MEDIA HANDLING CHARGES, ETC.) *ONLY* TO QUALIFIED
/	INSTITUTIONS.  CONTACT CJL FOR ADDITIONAL INFORMATION ON ACQUIRING P?S/8.
/	OS/8 FAMILY OF SYSTEMS METHOD:

/	K12MIT.PA CAN BE ASSEMBLED WITH PAL8 VERSION B0 WHICH IS AVAILABLE FROM  DECUS
/	AS PART OF THE OS/278 RELEASE.  PAL8 VERSION B0 WILL RUN ON  ANY  OS/8  FAMILY
/	SYSTEM,  AS  IT  HAS  NO  HARDWARE  DEPENDENCIES  BEYOND  THE  ORIGINAL  PDP-8
/	REQUIREMENT (NO BSW OR IAC ROTATE OR CAF OR R3L INSTRUCTIONS AS WAS INTENDED).
/	THIS ALSO APPLIES TO CREF  VERSION B0 WHICH IS REQUIRED WHEN A CROSS-REFERENCE
/	IS REQUESTED.  PAL8 VERSION B0  AND  CREF  VERSION B0 ARE AVAILABLE AS PART OF
/	THE KERMIT-12 DISTRIBUTION AS K12PL8.ENC AND K12CRF.ENC RESPECTIVELY.  SEE THE
/	DOCUMENTATION OF K12DEC FOR INFORMATION ON PRODUCING PAL8.SV  AND CREF.SV FROM
/	THESE ENCODED FILES.

/	ASSUMING CCL IS ENABLED, THE FOLLOWING COMMAND WILL PRODUCE A BINARY AND FULLY
/	ORNAMENTED LISTING:

/	.PAL DEV:K12MIT.BN,DEV:K12MIT.LS,DEV:KSCR.TM<DEV:PARAM.PA,DEV:K12MIT.PA(CEFMW)

/	DEV:  IS THE APPLICABLE DEVICE WHERE THE FILES RESIDE.    STANDARD  EXTENSIONS
/	ARE  ASSUMED  (.BN  FOR  BINARY, .LS FOR LISTING, .PA FOR PAL  SOURCE).    THE
/	KSCR.TM  TEMPORARY  OUTPUT FILE SPECIFICATION IS OPTIONAL, BUT IS DEFAULTED TO
/	SYS:CREFLS.TM IF  NOT  EXPLICITLY GIVEN.  MANY SYSTEM DEVICES ARE TOO SMALL TO
/	SUPPORT THIS TEMPORARY  FILE,  THUS  THE  FILE  MAY  BE  DIRECTED  TO  ANOTHER
/	AVAILABLE DEVICE WITH SUFFICIENT SPACE.

/	THE PARAM.PA FILE IS OPTIONAL AND USED TO PASS SHORT USER PARAMETERS, ETC.  TO
/	THE ASSEMBLY.

/	OPTION SWITCH BREAKDOWN:

/	/C	CHAIN TO CREF.SV TO PRODUCE A CROSS-REFERENCED LISTING FILE.

/	/E	GENERATED LINKS ARE ERRORS.

/	/F	*DO NOT* TERMINATE TEXT STRINGS WITH EXTRA ZERO WORD.

/	/M	USE MAMMOTH SYMBOL TABLE OPTION FOR CREF.

/	/W	FORGET LITERAL BOUNDARIES WHEN LEAVING THE CURRENT PAGE.

/	LOADING INSTRUCTIONS:

/	.LOAD DEV:K12CLR,K12MIT.BN	THIS LOADS THE BINARY CLEAR AND KERMIT
/	.SAVE DEV K12MIT.SV=1		THIS SAVES THE CORE IMAGE

/	THE  JOB STATUS WORD (=1) INDICATED THAT K12MIT.SV LOADS INTO 10000-11777, BUT
/	SHOULD NOT BE SAVED/RESTORED  WHEN  THE  USR  IS  LOADED  OVER  THIS  AREA  OR
/	DISMISSED (THE USR IS ACTUALLY  NEVER  DISMISSED  IN NORMAL K12MIT OPERATION).
/	OTHER BITS MAY BE SET AT  THE  USER'S  OPTION,  BUT  ARE UNNECESSARY;  THE BIT
/	INDICATED SERVES ONLY TO REDUCE SYSTEM OVERHEAD  REGARDING  THE DISPOSITION OF
/	10000-11777.  THE  BINARY  FILE  K12CLR.BN  (CREATED  BY ASSEMBLING K12CLR.PA)
/	LOADS ZEROES INTO ALL  OF  MEMORY  TO  CREATE A "CLEAN" CORE IMAGE FILE, WHICH
/	MAKES THE ENCODED BINARY FILE SMALLER DUE TO REPEAT COMPRESSION.
/	PASSING SHORT PARAMETER FILES.

/	WHEN INSERTING A SHORT USER MODIFICATION FILE IN THE INPUT STREAM  (PARAM.PAL)
/	THE FOLLOWING SHOULD BE NOTED:

/	ALWAYS  PUT  THE  SHORT  PARAMETER  FILE  (CONTAINING EQUATED SYMBOLS SUCH  AS
/	USER=1, ETC.) IN FRONT OF K12MIT.PAL.

/	IF TTY:  IS USED FOR DIRECT TYPE-IN OF THESE  PARAMETERS, THE INFORMATION NEED
/	ONLY BE TYPED ENDING WITH <^Z> DURING PASS 1.  SUBSEQUENT  PASSES  REQUIRE THE
/	ENDING <^Z> ONLY.  IF THIS METHOD IS USED, A LISTING WITHOUT  THE  USER  INPUT
/	WHICH  DID THE CUSTOMIZING OF KERMIT-12 CAN BE CREATED.  NOTE:  IF  BINARY  IS
/	GENERATED BY THE CONTENTS OF THE PARAMETER FILE (SUCH AS USE OF THE LOCAL TEXT
/	MESSAGE,  ETC.),  THE  INFORMATION MUST BE TYPED IN DURING PASS 2.  THE PASS 3
/	LISTING MAY  CONTAIN  THE INFORMATION IF SO DESIRED, REQUIRING A REPETITION OF
/	THE INPUT.   PASS  1  INPUT  OF  THE INFORMATION IS EFFECTIVELY IGNORED, AS NO
/	DEFINITIONS ARE CREATED ('LCLMSG' IS DEFINED ELSEWHERE, ETC.).

/	EXPERIENCED PDP-8 USERS NEW TO PAL8 VERSION B0 TAKE SPECIAL NOTICE:

/	DUE TO HARDWARE LIMITATIONS OF THE DECMATES, THE KEYBOARD FLAG WILL BE CLEARED
/	DURING PDP-8 PAL8 B0 OPERATION.  THE KL8E TTY:  HANDLER WILL NO LONGER BE ABLE
/	TO BUFFER <^Z> DURING THE ASSEMBLY;  YOU MUST  WAIT UNTIL THE HANDLER ACCESSES
/	THE KEYBOARD ON EACH PASS *THEN* PRESS <^Z> TO CONTINUE THE ASSEMBLY.


/	CREATING A CUSTOM MESSAGE FROM THE PARAMETER FILE.

/	IF  SO  DESIRED,  A CUSTOM LOCAL HEADER MESSAGE MAY BE ADDED BY INSERTING  THE
/	FOLLOWING INTO THE PARAMETER FILE:

/	BUFFLD=	10		/THESE PROBABLY
/	FILBUFF=2000		/WON'T CHANGE!

/	GENMSG=	0		/DON'T GENERATE STANDARD (NULL) MESSAGE
/	UMSG=	0		/DON'T GENERATE STANDARD (DUMMY) USER MESSAGE

/	FIELD	BUFFLD%10	/FIELD FOR TEXT MESSAGE

/	*FILBUFFER		/LOCAL MESSAGE LOADS THERE

/LCLMSG,TEXT	"%^I^NSERT ^L^OCAL ^M^ESSAGE ^H^ERE!%"

/	ZBLOCK	LCLMSG+40-.	/ZERO REST OF MESSAGE AREA

/	TEXT IS IN  UPPER/LOWER-CASE  SIXBIT  WITH  '^'  MEANING SHIFT CASE (INITIALLY
/	LOWER-CASE) AND '%' MEANING <CR>, <LF>.
/	OTHER METHODS:

/	KERMIT-12  *CANNOT*  BE ASSEMBLED  BY  PAL10  (LAST  KNOWN  VERSION  OF  PDP-8
/	CROSS-ASSEMBLER FOR TOPS10 (142)) BECAUSE IT LACKS CERTAIN FEATURES:

/	DOES NOT SUPPORT 'RELOC' PSEUDO-OP.

/	DOES NOT SUPPORT PAGE ZERO  REDEFINE  (CAUSES  "Z" ERROR ON SOURCE FILES WHICH
/	DON'T HAVE ERRORS WHEN ASSEMBLED BY EITHER P?S/8 PAL OR OS/8 PAL8).

/	INCORRECTLY HANDLES 'ZBLOCK' PSEUDO-OP (LEADS TO  "Q"  ERROR  ON  SOURCE FILES
/	WHICH DON'T HAVE ERRORS WHEN ASSEMBLED BY EITHER P?S/8 PAL OR OS/8 PAL8).

/	DOES NOT SUPPORT LITERAL "FORGETTING" (P?S/8 PAL OPTION /E OR OS/8 PAL8 OPTION
/	/W) WHICH IS REQUIRED FOR DEFINING OVERLAY AREAS, ETC.

/	DOES NOT SUPPORT TEXT WITHOUT ZERO WORD FILL (P?S/8 PAL OPTION /J OR OS/8 PAL8
/	OPTION /F FULFILLS THIS REQUIREMENT) WHICH IS REQUIRED FOR TEXT MESSAGES.


/	P?S/8 PAL IS AN IMPROPER SUPERSET OF PAL10.  PAL10 SUPPORTS MACRO-8 MODE AS AN
/	OPTION AND AUTOMATIC FIELD DUMP BITMAPS;  ALL OTHER KNOWN PAL10 FEATURES EXIST
/	IN  P?S/8  PAL  INCLUDING  THE  SUPPORT  OF  THE  AUTOMATIC FIELD DUMP  BITMAP
/	PSEUDO-OPS ('ENBITS' AND 'NOBITS').

/	OS/8  PAL8 (VERSION B0) IS A SUBSET OF P?S/8 PAL WHICH HAS  SEVERAL  SYNTACTIC
/	QUIRKS (WHICH  ARE AVOIDABLE, BUT NONETHELESS ARE INCOMPATIBLE WITH BOTH P?S/8
/	PAL  AND  PAL10    IN  CERTAIN  MINOR  WAYS);    REGARDLESS,  PAL8  LACKS  THE
/	COMPATIBILITY PROBLEMS OF PAL10.

/	MAINTAINING SOURCE COMPATIBILITY.

/	KERMIT-12 SOURCE FILE CONVENTIONS DEMAND THE USE OF THE COMMON SUBSET OF P?S/8
/	PAL AND OS/8 PAL8 (VERSION  B0).    CERTAIN  FORMS  OF  STATEMENTS  SHOULD  BE
/	AVOIDED:

/	TAD			/NOT LEGAL IN PAL8
/	0+TAD			/NOT LEGAL IN PAL10, AND POSSIBLY WRONG IN PAL8
/	TAD	(3)+1		/GENERATES SAME AS "TAD (3+1)" IN PAL8
/	-A!-B			/UNARY OPERATOR HANDLED WRONG IN PAL8
/	I+N			/NOT LEGAL IN PAL8
/	N+I			/NOT LEGAL IN PAL8
/	I I			/NOT LEGAL IN PAL8

/	THIS  REQUIREMENT IS EASILY MET BY  KERMIT-12  AS  MOST  OF  THESE  CASES  ARE
/	ESOTERIC QUIRKS AND NOT NEEDED FOR THIS ASSEMBLY.

/	THE RESTRICTIONS OF PAL10 (EVEN THOUGH IT  HAS  OTHER DESIRABLE FEATURES, MOST
/	OF WHICH IT SHARES WITH P?S/8 PAL) ARE  TOO SEVERE TO ALLOW USABLE ASSEMBLY OF
/	THIS  PROGRAM.    BETTER  CROSS-ASSEMBLERS  MAY  EXIST  ELSEWHERE  WHICH   ARE
/	SOURCE-COMPATIBLE WITH KERMIT-12.
/	USE OF P?S/8 LANGUAGE EXTENSIONS.

/	P?S/8 OFFERS SEVERAL USEFUL FEATURES OVER PAL8 (AND PAL10) WHICH MAY BE USEFUL
/	FOR  ASSEMBLY  DEVELOPMENT OF KERMIT-12.  THESE INCLUDE LANGUAGE ELEMENTS SUCH
/	AS "TAD (3)+1" HANDLED CORRECTLY, OR PSEUDO-OPS SUCH AS "PAUSE EXPR" WHERE THE
/	VALUE OF 'EXPR'  WILL  BE  DISPLAYED ON THE SYSTEM CONSOLE DURING THE ASSEMBLY
/	WHEN THAT POINT IN  THE  ASSEMBLY  IS  REACHED.   TO ACCESS THESE FEATURES AND
/	STILL  PROVIDE COMPATIBILITY WITH PAL8  (VERSION  B0),  THE  FOLLOWING  CODING
/	TECHNIQUE IS SUGGESTED:


/	IFNDEF	PQS	<PQS=0>	/WILL BE 0 ON PAL8, PAL10


/	IFZERO	PQS	<	/DO PAL8, ETC. STUFF HERE

/	FOO=	(TABLE)		/DEFINE POINTER TO ADDRESS OF TABLE

/	TAD	FOO-1		/GET (POINTER TO ADDRESS OF TABLE)-1
/	DCA	XR1		/SETUP AUTO-INDEX REGISTER

/	WISH WE HAD PAUSE AND ERROR PSEUDO-OPS IN PAL8.

/			>	/END OF PAL8, ETC. VARIANT


/	IFNZRO	PQS	<	/DO P?S/8 PAL STUFF HERE

/	TAD	(TABLE)-1	/GET (POINTER TO ADDRESS OF TABLE)-1
/	DCA	XR1		/SETUP AUTO-INDEX REGISTER

/	IFNDEF	PASS	<PASS=0>/DEFINE PASS VARIABLE

/	PASS=	PASS+1		/BUMP EVERY ASSEMBLER PASS

/	PAUSE	PASS		/DISPLAY PASS NUMBER

/	IFNZRO	.&4000	<

/	ERROR	1234		/DISPLAY ERROR MESSAGE IF THERE ARE PROBLEMS

/			>

/			>	/END OF P?S/8 PAL VARIANT


/	THIS ALLOWS TEMPORARY DEVELOPMENT FEATURES OR  PERMANENT ELEMENTS WHICH MAY BE
/	MORE ELEGANTLY EXPRESSED IN P?S/8 PAL VARIANT  CODING, WHILE THE PAL8 (VERSION
/	B0) VERSION CAN STILL BE USED (VIA DIRECT  OCTAL,  MULTIPLE EQUATE STATEMENTS,
/	CONDITIONAL FLUSH AS IN THE ABOVE EXAMPLE, ETC.   AS  NECESSARY)  FOR STANDARD
/	ASSEMBLY OF KERMIT-12.
/	ASSEMBLY PARAMETERS.

/	SEVERAL  PARAMETERS  MUST  BE  CHANGED  WITHIN  K12MIT.PA  (OR  PASSED TO  THE
/	ASSEMBLER VIA A SHORT FILE INSERTED INTO THE ASSEMBLY STREAM BEFORE  THE  MAIN
/	FILE):

/	SETTING  KEY= [RECEIVE IOT CODE FOR  CONSOLE  KEYBOARD]  DEFINES  THE  CONSOLE
/	KEYBOARD IOT CODE (DEFAULT IS 03).

/	SETTING  TTY=  [TRANSMIT  IOT CODE FOR CONSOLE  OUTPUT]  CHANGES  THE  CONSOLE
/	PRINTER IOT CODE (DEFAULT IS 04).

/	THE FOLLOWING DEFINITIONS ARE  ESSENTIALLY  FOR  KL8-TYPE DEVICES ONLY, AS THE
/	CODE DEMANDS KL8 HARDWARE COMPATIBILITY.    MODELS  OTHER  THAN PDP-8 (SUCH AS
/	DECMATE) GENERALLY EITHER PLACE RESTRICTIONS ON  AVAILABLE  INTERFACES  (OTHER
/	SOFTWARE DESIGNATES A SERIAL INTERFACE AS A  LOGICAL  PRINTER  PORT;  DECMATES
/	SUPPORT A FIRMWARE "PRINT SCREEN" KEY WHICH ENFORCES  THIS.),  OR  DON'T ALLOW
/	USABLE PLUG-IN OPTIONS.

/	IGNORING BUILT-IN DECMATE SUPPORT, THE FOLLOWING PARAMETERS ARE ACTIVE:

/	SETTING DEV30=	1 	CREATES DEVICE 30/31 REMOTE LINE IOTS.

/	SETTING DEV40=	1 	CREATES DEVICE 40/41 REMOTE LINE IOTS.

/	SETTING LEDERLE=1 	CREATES DEVICE 43/44  REMOTE  LINE  IOTS (AND A CUSTOM
/				HEADER).

/	SETTING ORIGNAL=1	CREATES  DEVICE  33/34  REMOTE   LINE  IOTS  (ORIGINAL
/				SETTINGS).

/	SETTING SPRINT= 1	CREATES DEVICE 32/33 REMOTE LINE  IOTS (SERIAL PRINTER
/				PORT).

/	SETTING USER=	1	CREATES DEVICE XX/XY REMOTE LINE IOTS.

/	IF NONE OF THESE ARE SET, THEN DEV40=1 APPLIES BY DEFAULT.



/	SETTING USER=	1	REQUIRES THE USER TO DEFINE TWO ADDITIONAL VALUES:

/		XX=	[RECEIVE IOT DEVICE CODE] (DEFAULT IS 40).

/		XY=	[TRANSMIT IOT DEVICE CODE] (DEFAULT IS 41).
/	SETTING SPRINT= 1	INHIBITS THE BUILT-IN CHECK FOR DECMATE  OPERATION AND
/				USES    THE    SERIAL  PRINTER  PORT  FOUND  ON    ALL
/				WPS-8-CONFIGURED    PDP-8/E,  PDP-8/A  CONFIGURATIONS,
/				VT-78,  AND  ALL DECMATES (VT-278,  DECMATE  II,  III,
/				III+) FOR REMOTE COMMUNICATIONS.

/	THE  USE OF THE SERIAL PRINTER PORT FOR REMOTE COMMUNICATIONS PURPOSES MAY  BE
/	PROBLEMATIC DUE TO CONSIDERATIONS SUCH AS THE RS-232 CONNECTION TO THE PRINTER
/	IS A  MODEM  (DCE), RATHER THAN A TERMINAL (DTE) (DECMATE II, ETC.  REQUIRES A
/	GENDER CHANGER.), OR  THE SOFTWARE DESIGNATION OF THE PORT AS BEING ALLEDGEDLY
/	*ONLY* FOR A PRINTER,  SUCH AS WHEN CERTAIN SYSTEMS SUPPORT THE "PRINT SCREEN"
/	KEY AS A SCREEN DUMP  TO  THE  SERIAL PRINTER PORT, ETC.  THESE ISSUES ARE NOT
/	RELEVANT TO KERMIT-12 OPERATION, AS THE "PRINT SCREEN" KEY IS NOT SUPPORTED BY
/	KERMIT-12 IN THIS CONFIGURATION AS SUCH (FUTURE  VERSIONS  COULD  REDEFINE THE
/	"PRINT SCREEN" KEY TO SUCH FUNCTIONS AS DUMP SCREEN TO A FILE, ETC.).

/	SETTING BRATE= NN	SETS THE DEFAULT BAUD RATE (FOR  SYSTEMS  THAT SUPPORT
/				THIS  FEATURE)  FROM  A  TABLE  OF  VALUES  (0-15)  AS
/				FOLLOWS:

/				NN		BAUD RATE

/				00		50
/				01		75
/				02		110
/				03		134.5
/				04		150
/				05		300
/				06		600
/				07		1200
/				08		1800
/				09		2000
/				10		2400
/				11		3600
/				12		4800
/				13		7200
/				14		9600
/				15		19200

/	SETTING ESCAPE=	NNNN	SETS THE DEFAULT ESCAPE CHARACTER TO NNNN.

/	SETTING FLOW=	1	ENABLES FLOW-CONTROL BY DEFAULT.
/	SETTING FLOW=	0	DISABLES FLOW-CONTROL BY DEFAULT.

/	SETTING FMODE=	0177	SETS THE DEFAULT FILE MODE TO ASCII.
/	SETTING FMODE=	4377	SETS THE DEFAULT FILE MODE TO BINARY.
/	SETTING GENMSG=	0	CAUSES  NO  BINARY TO BE GENERATED WHERE  'LCLMSG'  IS
/				DEFINED.  THIS ALLOWS THE PARAMETER FILE (PARAM.PA) OR
/				SUBSEQUENT  OVERLAY  BY  K12PCH.BN TO DEFINE THE LOCAL
/				HEADER MESSAGE.    THIS  PARAMETER  SHOULD  NOT BE SET
/				UNLESS ONE OF  THESE  METHODS IS USED, ELSE THE HEADER
/				MESSAGE  WILL BE UNDEFINED.    (NOTE:    IF  K12PCH.BN
/				GENERATES  A HEADER MESSAGE, THEN  THIS  PARAMETER  IS
/				UNIMPORTANT,  AS  K12PCH.BN  OVERLAYS  THE  BINARY  OF
/				K12MIT.)
/	SETTING GENMSG=	1	CAUSES A HEADER MESSAGE TO BE GENERATED.  THE CONTENTS
/				OF  THE  MESSAGE  ARE CREATED BY SETTING LEDERLE=1  OR
/				UMSG=1.   IF EITHER IS ZERO, A DEFAULT (NULL)  MESSAGE
/				WILL BE GENERATED.

/	SETTING ICLOSE=	1	ENSURES  A  <^Z>  AT  <EOF>  OF  ASCII  INPUT FILES BY
/				DEFAULT.
/	SETTING ICLOSE=	0	CLOSES ASCII INPUT FILES AS RECEIVED BY DEFAULT.

/	SETTING INIECHO=0	CAUSES A  FULL-DUPLEX CONNECT MODE STATE WITH NO LOCAL
/				CHARACTER ECHOING BY DEFAULT.
/	SETTING INIECHO=1	CAUSES A HALF-DUPLEX  CONNECT  MODE  STATE  WITH LOCAL
/				ECHO OF ALL CONSOLE CHARACTERS BY DEFAULT.

/	SETTING LOWER=	0	ALLOWS LOWER-CASE CONSOLE OUTPUT BY DEFAULT.
/	SETTING LOWER=	-40	FOLDS  LOWER-CASE  CONSOLE  OUTPUT  TO  UPPER-CASE  BY
/				DEFAULT.

/	SETTING OCLOSE=	0	PREVENTS DEFAULT SENDING OF <^Z>  AT  <EOF>  OF  ASCII
/				FILES.
/	SETTING OCLOSE= 1	CAUSES  <^Z> TO BE SENT AT <EOF>  OF  ASCII  FILES  BY
/				DEFAULT.

/	SETTING PORT=	0	CAUSES THE DP-278 PORT 0 TO BE USED  IF  KERMIT-12  IS
/				RUN ON A DECMATE 1 (ASSUMING SPRINT=0).
/	SETTING PORT=	1	CAUSES  THE DP-278 PORT 1 TO BE USED IF  KERMIT-12  IS
/				RUN ON A DECMATE 1 (ASSUMING SPRINT=0).

/	SETTING RETCNT=	NNNN	SETS THE PACKET RETRY COUNT TO NNNN BY DEFAULT.
/	SETTING UMSG=	0	PREVENTS THE  LOCAL  USER  HEADER  MESSAGE  FROM BEING
/				GENERATED.
/	SETTING UMSG=	1	CAUSES THE LOCAL  USER HEADER MESSAGE TO BE GENERATED.
/				THE PARAMETER GENMSG=1 IS  REQUIRED  TO  BE  SET.  THE
/				SOURCE MUST BE MODIFIED LOCALLY  TO CHANGE THE MESSAGE
/				TEXT FROM "INSERT LOCAL USER MESSAGE  HERE!,"  AS THIS
/				IS THE DEFAULT CONTENTS.
/	KERMIT-12 FOR THE FAMILY OF 12-BIT DEC MACHINES.

/	BRIEF USAGE DESCRIPTION.

/	KERMIT-12 IS AN IMPLEMENTATION OF THE KERMIT PROTOCOL FOR THE FAMILY OF 12-BIT
/	DEC (AND COMPATIBLE) MACHINES GENERALLY KNOWN AS PDP-8 OR DECMATE.

/	AS OF THE CURRENT IMPLEMENTATION, THE FOLLOWING COMMANDS ARE EFFECTIVE:

/	1.	CONNECT (TO REMOTE SYSTEM AS TERMINAL).

/	2.	SEND FILESPEC (TO REMOTE RECEIVER OR SERVER).

/	3.	RECEIVE FILESPEC (FROM REMOTE SENDER).

/	4.	GET FILESPEC (FROM REMOTE SERVER).

/	5.	FINISH (SERVING).

/	6.	SETUP (ON DECMATE II/III/III-PLUS ONLY). **** NOT IMPLEMENTED ****

/	7.	EXIT (TO OPERATING SYSTEM).

/	8.	HELP (DISPLAYS HELP MESSAGE).

/	FILESPEC  MAY  BE  ANY LOCAL (OS/8) FILE-STRUCTURED DEVICE:FILENAME.EXTENSION,
/	WHERE THE  FILENAME  AND  EXTENSION WILL BE TRUNCATED TO 6 ALPHANUMERICS AND 2
/	ALPHANUMERICS RESPECTIVELY, AS  NECESSARY (THIS IS REFERRED TO AS 6.2 FILENAME
/	FORMAT).  THE DEVICE:    FIELD  IS  OPTIONAL;   ALL COMMANDS USING THE DEVICE:
/	FIELD FOR LOCAL DEVICE SPECIFICATION  WILL  USE  THIS  DEVICE AS THE SOURCE OR
/	DESTINATION AS NECESSARY FOR THE LOCAL  FILES.    IF  THE  DEVICE:    FIELD IS
/	OMITTED, THE DEFAULT DEVICE DSK:  WILL BE USED.  THE ACTUAL DEVICE USED MAY BE
/	SELECTED BEFORE INVOKING KERMIT-12 BY USING THE OS/8 ASSIGN COMMAND:

/	.ASSIGN DEV DSK

/	WHERE DEV IS ANY AVAILABLE FILE-STRUCTURED DEVICE.

/	KERMIT-12 USES AN UNUSUAL SCHEME FOR ITS PROMPT:    THE  ACTUAL DEFAULT PROMPT
/	TEXT  IS  PARTIALLY  TAKEN  FROM  THE  ACTUAL MACHINE KERMIT-12  IS  CURRENTLY
/	EXECUTING  ON.    FOR  EXAMPLE, IF KERMIT-12 HAS DETERMINED THE  CPU  TYPE  AS
/	PDP-8/E, THE PROMPT WILL BE:

/	KERMIT-8/E>

/	THIS  ALLOWS KERMIT-12 USERS (WITH DIFFERENT CPU-TYPE MACHINES) TO DISTINGUISH
/	MESSAGES ORIGINATING  FROM  THE  RESPECTIVE  SYSTEMS.    FUTURE  VERSIONS WILL
/	SUPPORT USER PROMPT STRINGS TO ALLOW MORE DISTINCTIVE SYSTEM MESSAGES.

/	THE HELP OR CONNECT COMMANDS MAY BE USED TO DETERMINE THE CURRENT CONNECT MODE
/	ESCAPE CHARACTER.
/	COMMAND RESTRICTIONS.

/	THE  SEND  COMMAND  ALLOWS   DEVICE:FILENAME.EXTENSION  (6.2)  WITH  WILD-CARD
/	SUBSTITUTION.  A * MAY  BE  GIVEN  FOR  AN  ENTIRE  FIELD  (EITHER FILENAME OR
/	EXTENSION OR BOTH) ONLY.  A  ?    WILL  MATCH  ANY SINGLE CHARACTER WHICH MUST
/	EXIST IN THE ACTUAL FILENAME OR EXTENSION,  UNLESS  RIGHT-MOST  IN  THE FIELD.
/	ALL  MATCHING FILES WILL BE SENT.  NO  OUTBOUND  FILENAME  (AS-NAME)  FACILITY
/	EXISTS AT THIS TIME.

/	THE  RECEIVE  COMMAND  ALLOWS  OPTIONAL  DEVICE:   ONLY.   *THE  FILENAME  AND
/	EXTENSION  ARE  NOT  ALLOWED*.  NAMES OF RECEIVED FILES WILL  BE  MODIFIED  IF
/	NECESSARY  TO  CONFORM  TO  THE  6.2  FORMAT.   *IMPLEMENTATION RESTRICTION* :
/	CERTAIN REMOTE  FILENAMES  CONTAINING  NON-ALPHANUMERIC  CHARACTERS  MAY CAUSE
/	KERMIT-12 TO HASTILY ABORT THE TRANSMISSION AND RETURN TO COMMAND LEVEL.

/	THE GET COMMAND  ALLOWS  OPTIONAL  DEVICE:    TO  DETERMINE DESTINATION OF THE
/	INCOMING FILES.  THE  OUTBOUND  FILESPEC  MUST  CONFORM  TO  LOCAL CONVENTIONS
/	(FILENAME AND EXTENSION ARE NOT  LIMITED  TO  6.2  FORMAT;  THE DEVICE:  FIELD
/	WILL NOT BE SENT TO THE  REMOTE  KERMIT  UNLESS  IT  IS  ILLEGAL  WITHIN  OS/8
/	SPECIFICATIONS, SUCH AS TOO MANY DEVICE LETTERS.    IN  THIS CASE, THE DEFAULT
/	DEVICE DSK:  APPLIES, AND THE ENTIRE "DEVICE"  FIELD  IS  SENT  ALONG WITH ANY
/	FILENAME  AND EXTENSION).  CERTAIN REMOTE SYSTEMS ARE INCOMPATIBLE  WITH  THIS
/	IMPLEMENTATION,  AS  IMBEDDED  SPACES  OR  NON-ALPHANUMERIC CHARACTERS ARE NOT
/	ALLOWED, EVEN  THOUGH  THEY  MAY  BE REQUIRED ON THE REMOTE SYSTEM.  WILD-CARD
/	CHARACTERS ARE ALLOWED, BUT ONLY AS SPECIFIED IN THE SEND COMMAND ABOVE.

/	<^X>  OR  <^Z>  CAN BE USED TO ABORT KERMIT TRANSMISSIONS (EVENTUALLY) BUT  IS
/	NORMALLY  A  SLOW  PROCESS,  SINCE  THE CHECKING IS DONE BY A SOFTWARE TIMEOUT
/	SCHEME.   AT  THE  PRESENT  TIME,  THERE  IS  NO DISTINCTION BETWEEN THESE THO
/	CHARACTERS, SO IT  IS NOT POSSIBLE TO ABORT A SINGLE FILE; THE ENTIRE BATCH OF
/	FILES INVOLVED IN THE TRANSFER IS ABORTED.

/	DECMATE II/III/III-PLUS CONSIDERATIONS:

/	FUNCTION KEYS SEND <ESC>  SEQUENCES SPECIFIED BY SLUSHWARE/FIRMWARE.  ALL SOFT
/	FUNCTION KEYS ARE THEREFORE INEFFECTIVE  (EXCEPT  FOR HOLD SCREEN WHICH ALWAYS
/	WORKS).

/	CONNECT MODE RUNS IN 8-BIT MODE.

/	THE COMPOSE KEY IS ENABLED FOR USE WITH A LOADED COMPOSE TABLE.

/	ANY VALID DECMATE II/III/III-PLUS CHARACTER SET  IS  ALLOWED  WHILE IN CONNECT
/	MODE  (MCS  TCS  LINE,  ETC.).    ALL   <ESC>  SEQUENCES  ARE  PASSED  TO  THE
/	SLUSHWARE/FIRMWARE UNMODIFIED.

/	KEYBOARD UPPER-CASE LOCK WILL ALWAYS BE AUTOMATICALLY APPLIED UPON RETURN FROM
/	CONNECT MODE.
/	DEFINITIONS.							/017 CJL

	*200					/FOR DEFINITIONS	/047 CJL

/	REMOTE LINE PARAMETERS; SET ONLY ONE AS NECESSARY.		/046 CJL

	IFNDEF	DEV30	<DEV30=	0>		/USE DEVICE 30/31 VALUES
	IFNDEF	DEV40	<DEV40=	0>		/USE DEVICE 40/41 VALUES
	IFNDEF	LEDERLE	<LEDERLE=0>		/USE LEDERLE LABS VALUES
	IFNDEF	ORIGNAL	<ORIGNAL=0>		/USE ORIGINAL VALUES
	IFNDEF	SPRINT	<SPRINT=0>		/USE DEVICE 32/33 VALUES
	IFNDEF	USER	<USER=	0>		/USE USER-DEFINED VALUES

	REMOTE=	DEV30+DEV40+LEDERLE+ORIGNAL	/SET REMOTE LINE IOT CODE
	REMOTE=	REMOTE+SPRINT+USER		/SET REMOTE LINE IOT CODE

	IFZERO	REMOTE	<DEV40=	1>		/DEFAULT TO DEVICE 40/41 VERSION

/	DEV30 PARAMETERS.

	IFNZRO	DEV30			<

	IFNDEF	REC	<REC=	30>		/DEVICE 30 INPUT
	IFNDEF	SEN	<SEN=	31>		/DEVICE 31 OUTPUT

					>

/	DEV40 PARAMETERS (DEFAULT).

	IFNZRO	DEV40			<

	IFNDEF	REC	<REC=	40>		/DEVICE 40 INPUT
	IFNDEF	SEN	<SEN=	41>		/DEVICE 41 OUTPUT

					>

/	LEDERLE PARAMETERS.						/038 CJL

	IFNZRO	LEDERLE			<

	IFNDEF	REC	<REC=	43>		/DEVICE 43 INPUT
	IFNDEF	SEN	<SEN=	44>		/DEVICE 44 OUTPUT
	IFNDEF	GENMSG	<GENMSG=1>		/GENERATE LOCAL HEADER MESSAGE
	IFNDEF	UMSG	<UMSG=	0>		/DON'T GENERATE USER MESSAGE

					>

/	ORIGNAL PARAMETERS.

	IFNZRO	ORIGNAL			<

	IFNDEF	REC	<REC=	33>		/DEVICE 33 INPUT
	IFNDEF	SEN	<SEN=	34>		/DEVICE 34 OUTPUT

					>
/	SPRINT PARAMETERS.						/046 CJL

	IFNZRO	SPRINT			<

	IFNDEF	REC	<REC=	32>		/DEVICE 32 INPUT
	IFNDEF	SEN	<SEN=	33>		/DEVICE 33 OUTPUT

					>

/	USER PARAMETERS.

	IFNZRO	USER			<

	IFNDEF	XX	<XX=	40>		/DEFAULT TO DEVICE 40
	IFNDEF	XY	<XY=	41>		/DEFAULT TO DEVICE 41
	IFNDEF	REC	<REC=	XX>		/DEVICE XX INPUT
	IFNDEF	SEN	<SEN=	XY>		/DEVICE XY OUTPUT
	IFNDEF	GENMSG	<GENMSG=1>		/GENERATE LOCAL HEADER MESSAGE
	IFNDEF	UMSG	<UMSG=	1>		/GENERATE USER MESSAGE

					>

/	REMOTE LINE IOT DEFINITIONS.

/	RECEIVE DEFINITIONS.

	RKRBIOT=REC^10+6006			/READ REMOTE, CLEAR FLAG
	RKSFIOT=REC^10+6001			/SKIP ON REMOTE INPUT FLAG

/	TRANSMIT DEFINITIONS.

	RSBIOT=	SEN^10+6003			/SET BAUD RATE FROM AC[8-11]
	RTLSIOT=SEN^10+6006			/TRANSMIT CHARACTER, CLEAR FLAG
	RTSFIOT=SEN^10+6001			/SKIP ON TRANSMIT FLAG

/	CONSOLE TTY: DEFINITIONS.					/017 CJL

/	KEYBOARD DEFINITIONS.						/017 CJL

	IFNDEF	KEY	<KEY=	03>	/KEYBOARD DEVICE CODE

	KCCIOT=	KEY^10+6002		/CLEAR CONSOLE KEYBOARD FLAG, AC
	KRBIOT=	KEY^10+6006		/READ CONSOLE KEYBOARD BUFFER, CLEAR FLAG
	KRSIOT=	KEY^10+6004		/READ CONSOLE KEYBOARD BUFFER STATIC
	KSFIOT=	KEY^10+6001		/SKIP ON CONSOLE KEYBOARD FLAG

/	TELEPRINTER DEFINITIONS.					/017 CJL

	IFNDEF	TTY	<TTY=	04>	/TELEPRINTER DEVICE CODE

	TLSIOT=	TTY^10+6006		/PRINT CHARACTER, CLEAR FLAG
	TSFIOT=	TTY^10+6001		/SKIP ON TELEPRINTER FLAG
/	DEFAULT ESCAPE CHARACTER DEFINITION.				/025 CJL

	IFNDEF	ESCAPE	<ESCAPE="]&37>	/DEFAULT IS CONTROL-]

/	DEFAULT LOWER-CASE ENABLE DEFINITION.				/030 CJL

	IFNDEF	LOWER	<LOWER=	0/-40>	/LOWER-CASE IS ALLOWED AS IS
					/CHANGE TO -40 IF LOWER-CASE
					/SHOULD BE FOLDED TO UPPER-CASE

/	DEFAULT RETRY COUNT DEFINITION.					/031 CJL

	IFNDEF	RETCNT	<RETCNT=5>	/DEFAULT IS FIVE RETRIES

/	DEFAULT FILE MODE DEFINITION.					/031 CJL

	IFNDEF	FMODE	<FMODE=	0177>	/DEFAULT IS ASCII FILE MODE
					/4377 IS BINARY FILE MODE

/	DEFAULT FLOW-CONTROL MODE DEFINITION.				/031 CJL

	IFNDEF	FLOW	<FLOW=	1>	/DEFAULT IS FLOW-CONTROL ENABLED

/	DEFAULT ASCII INPUT FILE <^Z> DISPOSITION.			/031 CJL

	IFNDEF	ICLOSE	<ICLOSE=1>	/ENSURE <^Z> AT ASCII <EOF>

/	DEFAULT ASCII OUTPUT FILE <^Z> DISPOSITION.			/031 CJL

	IFNDEF	OCLOSE	<OCLOSE=0>	/<^Z> NOT SENT AT ASCII <EOF>

/	DEFAULT LOCAL MESSAGE GENERATION DEFINITIONS.			/038 CJL

	IFNDEF	GENMSG	<GENMSG=1>	/DEFAULT IS TO GENERATE A MESSAGE
	IFNDEF	UMSG	<UMSG=	0>	/DEFAULT IS NO DUMMY USER MESSAGE
	IFNDEF	LEDERLE	<LEDERLE=0>	/DEFAULT IS NO LEDERLE MESSAGE

/	THE NULL MESSAGE WILL BE GENERATED BY DEFAULT.

/	ECHO DEFINITION.						/039 CJL

	IFNDEF	INIECHO	<INIECHO=0>	/DEFAULT IS NO LOCAL ECHO

/	DEFAULT DECMATE I PORT DEFINITION.				/050 CJL

	IFNDEF	PORT	<PORT=	0>	/DEFAULT IS PORT ZERO 

/	DEFAULT BAUD RATE DEFINITION.					/050 CJL

	IFNDEF	BRATE	<BRATE=	7>	/DEFAULT IS 1200 BAUD
/	STATE DEFINITIONS.

	STDAT=	"D&137			/DATA
	STACK=	"Y&137			/ACK
	STNAK=	"N&137			/NAK
	STSIN=	"S&137			/SEND-INIT
	STBRK=	"B&137			/BREAK LINK
	STFIL=	"F&137			/FILENAME HEADER
	STEOF=	"Z&137			/END OF FILE OR REPLY
	STERR=	"E&137			/ERROR PACKET
	STATT=	"A&137			/FILE ATTRIBUTES
	STRIN=	"R&137			/RECEIVE-INIT
	STEOT=	"B&137			/BREAK TRANSMISSION
	STGEN=	"G&137			/KERMIT GENERIC COMMAND

/	DEFAULT INIT PARAMETERS.

	DEFCK=	"1&177			/DEFAULT 1 CHARACTER CHECKSUM	/014 CJL
	DEFEOL=	15+40			/CR IS DEFAULT <EOL>
	DEFQCTL= "#&177			/"#" IS DEFAULT QCTL

/	BUFFER DEFINITIONS.						/014 CJL

	DECIMAL				/MAKE IT EASIER			/014 CJL

	DEFMAXL=94			/DEFAULT MAXIMUM PACKET SIZE

	LINSIZ=	32			/KEYBOARD LINE BUFFER SIZE

	OCTAL				/BACK TO NORMAL			/014 CJL

	BUFSIZE=200			/128 CHARACTER RING BUFFERS	/026 CJL
					/FOR NO-INTERRUPT CONNECT MODE
/	CONTROL CHARACTER DEFINITIONS.					/023 CJL

	CNTRLA=	"A&37			/<^A> DEFAULT MARK CHARACTER	/023 CJL
	CNTRLB=	"B&37			/<^B>				/046 CJL
	CNTRLC=	"C&37			/<^C> PROGRAM EXIT CHARACTER	/023 CJL
	CNTRLD=	"D&37			/<^D>				/046 CJL
	CNTRLE=	"E&37			/<^E>				/046 CJL
	CNTRLF=	"F&37			/<^F>				/046 CJL
	CNTRLG=	"G&37			/<^G> BELL CHARACTER		/023 CJL
	CNTRLH=	"H&37			/<^H> BACKSPACE CHARACTER	/023 CJL
	CNTRLI=	"I&37			/<^I> HORIZONTAL TAB CHARACTER	/043 CJL
	CNTRLJ=	"J&37			/<^J> LINEFEED CHARACTER	/023 CJL
	CNTRLK=	"K&37			/<^K> VERTICAL TAB CHARACTER	/046 CJL
	CNTRLL=	"L&37			/<^L> FORM FEED CHARACTER	/046 CJL
	CNTRLM=	"M&37			/<^M> CARRIAGE RETURN CHARACTER	/023 CJL
	CNTRLN=	"N&37			/<^N>				/046 CJL
	CNTRLO=	"O&37			/<^O> ECHO FLIP CHARACTER	/023 CJL
	CNTRLP=	"P&37			/<^P> PROGRAM RESTART CHARACTER	/023 CJL
	CNTRLQ=	"Q&37			/<^Q> OUTPUT RESUME CHARACTER	/023 CJL
	CNTRLR=	"R&37			/<^R>				/046 CJL
	CNTRLS=	"S&37			/<^S> OUTPUT WAIT CHARACTER	/023 CJL
	CNTRLT=	"T&37			/<^T>				/046 CJL
	CNTRLU=	"U&37			/<^U>				/046 CJL
	CNTRLV=	"V&37			/<^V>				/046 CJL
	CNTRLW=	"W&37			/<^W>				/046 CJL
	CNTRLX=	"X&37			/<^X> FILE ABORT CHARACTER	/044 CJL
	CNTRLY=	"Y&37			/<^Y>				/046 CJL
	CNTRLZ= "Z&37			/<^Z> ABORT AND <EOF> CHARACTER /044 CJL
	DELETE=	177			/<DEL> DELETE OR <RO> CHARACTER	/034 CJL
	LOWERC=	"C&177+40		/LOWER-CASE C (CLOSE CHARACTER)	/025 CJL
	UPPERC=	"C&177			/UPPER-CASE C (CLOSE CHARACTER)	/025 CJL

/	I/O AND FIELD DEFINITIONS.					/019 CJL

	BUFFLD=	10			/I/O BUFFER FIELD		/019 CJL
	DIRFLD=	10			/DIRECTORY LOOKUP BUFFER FIELD	/028 CJL
	DMIFLD=	10			/DECMATE ONCE-ONLY CODE FIELD	/046 CJL
	MSGFLD=	10			/TEXT MESSAGE FIELD		/023 CJL
	PAGCNT=	2			/I/O BUFFER SIZE IN PAGES	/019 CJL
	PRGFLD=	00			/PROGRAM FIELD			/019 CJL
	USRFLD=	10			/USR FIELD			/020 CJL

/	OS/8 MONITOR DEFINITIONS.					/014 CJL

	SBOOT=	7600			/MONITOR EXIT LOCATION IS 07600	/014 CJL
	USR=	7700			/NON-LOCKED USR ENTRY POINT	/035 CJL
/	USER SERVICE ROUTINE AND HANDLER DEFINITIONS.			/020 CJL

	CLOSE=	4			/CLOSE TENTATIVE OUTPUT FILE	/020 CJL
	ENTER=	3			/ENTER TENTATIVE OUTPUT FILE	/020 CJL
	FETCH=	1			/FETCH HANDLER			/020 CJL
	INQUIRE=12			/INQUIRE ABOUT HANDLER		/020 CJL
	LOOKUP=	2			/LOOKUP FILE			/020 CJL
	RESET=	13			/RESET DEVICE CONTROL WORD TABLE/037 CJL
	USRIN=	10			/LOCK USR IN CORE		/020 CJL
	WRITE=	4000			/I/O CALL WRITE BIT		/020 CJL

/	INSTRUCTION DEFINITIONS.

	CLCL=	6136			/CLEAR CLOCK FLAG (8/A, ETC.)	/046 CJL
	CLSK=	6131			/SKIP ON, CLEAR CLOCK FLAG	/046 CJL
	CLSK8A=	6137			/SKIP ON CLOCK FLAG (8/A, ETC.)	/046 CJL
	COM=	0017			/COMPLEMENT AC
	DCAC=	DCA	.		/CURRENT PAGE DCA INSTRUCTION	/047 CJL
	IAAC=	6171			/"A" REGISTER TO AC
	IACA=	6167			/AC TO "A" REGISTER
	ISZC=	ISZ	.		/CURRENT PAGE ISZ INSTRUCTION	/050 CJL
	JMPC=	JMP	.		/CURRENT PAGE JMP INSTRUCTION	/047 CJL
	JMPIC=	JMP I	.		/CURRENT PAGE JMP I INSTRUCTION	/047 CJL
	JMSC=	JMS	.		/CURRENT PAGE JMS INSTRUCTION	/047 CJL
	JMSIC=	JMS I	.		/CURRENT PAGE JMS I INSTRUCTION	/047 CJL
	LINC=	6141			/GOTO LINC MODE
	PDP=	0002			/GOTO PDP-8 MODE
	PRQ3=	6236			/TYPE THREE PANEL REQUEST	/046 CJL
	TADC=	TAD	.		/CURRENT PAGE TAD INSTRUCTION	/047 CJL
	R3L=	7014			/ROTATE AC (NOT LINK) LEFT 3	/046 CJL

/	NUMERIC LOAD DEFINITIONS.					/014 CJL

	NL0000=	CLA			/LOAD AC WITH 0000		/046 CJL
	NL0001=	CLA IAC			/LOAD AC WITH 0001		/014 CJL
	NL0002=	CLA CLL CML RTL		/LOAD AC WITH 0002		/014 CJL
	NL0003=	CLA STL IAC RAL		/LOAD AC WITH 0003 (8/I ON UP)	/046 CJL
	NL0004=	CLA CLL IAC RTL		/LOAD AC WITH 0004 (8/I ON UP)	/046 CJL
	NL0006=	CLA STL IAC RTL		/LOAD AC WITH 0006 (8/I ON UP)	/046 CJL
	NL0010=	CLA IAC RAL RAR		/LOAD AC WITH 0010 (6120)	/024 CJL
	NL0100=	CLA IAC BSW		/LOAD AC WITH 0100 (8/E ON UP)	/024 CJL
	NL3776=	CLA CLL CMA RAR RAL	/LOAD AC WITH 3776 (8/I OR 8/L)	/024 CJL
	NL3777=	CLA CLL CMA RAR		/LOAD AC WITH 3777		/046 CJL
	NL4000=	CLA CLL CML RAR		/LOAD AC WITH 4000		/014 CJL
	NL5777=	CLA CLL CMA RTR		/LOAD AC WITH 5777		/046 CJL
	NL6000=	CLA STL IAC RTR		/LOAD AC WITH 6000 (8/I ON UP)	/046 CJL
	NL7775=	CLA CLL CMA RTL		/LOAD AC WITH 7775		/014 CJL
	NL7776=	CLA CLL CMA RAL		/LOAD AC WITH 7776		/014 CJL
	NL7777=	CLA CMA			/LOAD AC WITH 7777		/014 CJL
/	DECMATE I COMMUNICATIONS PORT DEFINITIONS.			/050 CJL

	IPORT0=	30		/COMMUNICATIONS PORT 0 INPUT DEVICE CODE

	RKFL0=	IPORT0^10+6000	/SET COMMUNICATIONS PORT 0 INPUT FLAG
	RKSF0=	IPORT0^10+6001	/SKIP ON, CLEAR COMMUNICATIONS PORT 0 INPUT FLAG
	RKCC0=	IPORT0^10+6002	/CLEAR AC
	RKIE0=	IPORT0^10+6005	/PORT 0 INPUT INTERRUPT ENABLE PER AC[11]
	RKRB0=	IPORT0^10+6006	/READ COMMUNICATIONS PORT 0 INTO AC

	OPORT0=	31		/COMMUNICATIONS PORT 0 OUTPUT DEVICE CODE

	RTFL0=	OPORT0^10+6000	/SET COMMUNICATIONS PORT 0 OUTPUT FLAG
	RTSF0=	OPORT0^10+6001	/SKIP ON, CLEAR COMMUNICATIONS PORT 0 OUTPUT FLAG
	RTCF0=	OPORT0^10+6002	/NOP
	RTIE0=	OPORT0^10+6005	/PORT 0 OUTPUT INTERRUPT ENABLE PER AC[11]
	RTLS0=	OPORT0^10+6006	/WRITE COMMUNICATIONS PORT 0 FROM AC

	IPORT1=	34		/COMMUNICATIONS PORT 1 INPUT DEVICE CODE

	RKFL1=	IPORT1^10+6000	/SET COMMUNICATIONS PORT 1 INPUT FLAG
	RKSF1=	IPORT1^10+6001	/SKIP ON, CLEAR COMMUNICATIONS PORT 1 INPUT FLAG
	RKCC1=	IPORT1^10+6002	/CLEAR AC
	RKIE1=	IPORT1^10+6005	/PORT 1 INPUT INTERRUPT ENABLE PER AC[11]
	RKRB1=	IPORT1^10+6006	/READ COMMUNICATIONS PORT 1 INTO AC

	OPORT1=	35		/COMMUNICATIONS PORT 1 OUTPUT DEVICE CODE

	RTFL1=	OPORT1^10+6000	/SET COMMUNICATIONS PORT 1 OUTPUT FLAG
	RTSF1=	OPORT1^10+6001	/SKIP ON, CLEAR COMMUNICATIONS PORT 1 OUTPUT FLAG
	RTCF1=	OPORT1^10+6002	/NOP
	RTIE1=	OPORT1^10+6005	/PORT 1 OUTPUT INTERRUPT ENABLE PER AC[11]
	RTLS1=	OPORT1^10+6006	/WRITE COMMUNICATIONS PORT 1 FROM AC

	PCON=	36		/PORT STATUS AND CONTROL DEVICE CODE

	SMFL=	PCON^10+6000	/SET MODEM CHANGE FLAG
	MFSK=	PCON^10+6001	/SKIP ON, CLEAR MODEM CHANGE FLAG
	WCON0=	PCON^10+6002	/WRITE COMMUNICATIONS PORT 0 CONTROL REGISTER
	PSR=	PCON^10+6003	/READ PORT STATUS REGISTER
	PMR=	PCON^10+6004	/READ PORT MODEM REGISTER
	MFIE=	PCON^10+6005	/LOAD MODEM CHANGE INTERRUPT ENABLE PER AC[11]
	WCON1=	PCON^10+6006	/WRITE COMMUNICATIONS PORT 1 CONTROL REGISTER
	RACD=	PCON^10+6007	/RESET ACTIVE COMMUNICATIONS PORT PER AC[0]
/	DECMATE II, ETC. COMMUNICATIONS PORT DEFINITIONS.		/046 CJL

	PORTIN=	30		/COMMUNICATIONS PORT INPUT DEVICE CODE

	IFL=	PORTIN^10+6000	/SET COMMUNICATIONS PORT INPUT/OUTPUT FLAG
	ISF=	PORTIN^10+6001	/SKIP ON, CLEAR COMMUNICATIONS PORT INPUT/OUTPUT FLAG
	ICF=	PORTIN^10+6002	/NOP (CLEAR THE AC?)
	INOP1=	PORTIN^10+6003	/(NOP?)
	IRS=	PORTIN^10+6004	/READ COMMUNICATIONS PORT RECEIVE BUFFER
	IIE=	PORTIN^10+6005	/COMMUNICATIONS PORT I/O INTERRUPT ENABLE PER AC[11]
	IRB=	PORTIN^10+6006	/READ COMMUNICATIONS PORT RECEIVE BUFFER
	INOP2=	PORTIN^10+6007	/(NOP?)

	PORTOUT=31		/COMMUNICATIONS PORT OUTPUT DEVICE CODE

	DUMBFL=	PORTOUT^10+6000	/SET COMMUNICATIONS PORT DUMMY FLAG
	DUMBSF=	PORTOUT^10+6001	/SKIP ON, CLEAR COMMUNICATIONS PORT DUMMY FLAG
	DUMBCF=	PORTOUT^10+6002	/NOP (CLEAR THE AC?)
 	ONOP1=	PORTOUT^10+6003	/(NOP?)
	OPC=	PORTOUT^10+6004	/LOAD COMMUNICATIONS PORT TRANSMIT BUFFER
	DUMBIE=	PORTOUT^10+6005	/COMMUNICATIONS PORT DUMMY INTERRUPT ENABLE PER AC[11]
	OLS=	PORTOUT^10+6006	/LOAD COMMUNICATIONS PORT TRANSMIT BUFFER
	ONOP2=	PORTOUT^10+6007	/(NOP?)

	PORTCON=36		/COMMUNICATIONS PORT CONTROL DEVICE CODE

	MFL=	PORTCON^10+6000	/SET MODEM CHANGE FLAG
	MSF=	PORTCON^10+6001	/SKIP ON, CLEAR MODEM CHANGE FLAG
	MLC=	PORTCON^10+6002	/LOAD MODEM CONTROL REGISTER
	MSB=	PORTCON^10+6003	/LOAD BAUD RATE REGISTER
	MRS=	PORTCON^10+6004	/READ MODEM STATUS REGISTER
	MIE=	PORTCON^10+6005	/MODEM CHANGE INTERRUPT ENABLE PER AC[11]
	MPSCC=	PORTCON^10+6006	/ACCESS MULTIPROTOCOL SERIAL COMMUNICATIONS CONTROLLER
	MPRESET=PORTCON^10+6007 /RESET MULTIPROTOCOL SERIAL COMMUNICATIONS CONTROLLER
/	MISCELLANEOUS DEFINITIONS.					/014 CJL

/	STATIC DATE CALCULATIONS.					/024 CJL

/	THESE EQUATIONS CAUSE PRINTABLE  TEXT OF THE DATE PARTICULARS, WHICH ARE GIVEN
/	IN OS/8 INTERNAL FORMAT.  PROGRAM MAINTAINENCE REQUIRES THE UPDATE OF VERSION,
/	REVISION, REVDATE, AND REVDGRP.  REVDATE  AND  REVDGRP SHOULD BE OBTAINED FROM
/	THE SYSTEM WHEN RELEASING A NEW VERSION  AFTER  FIRST  CORRECTLY  INVOKING THE
/	SYSTEM DATE COMMAND.

/	VERSION=[ANY NUMBER IN THE RANGE 00-143 (DECIMAL 00-99)]

/	REVISIO=[ANY SIX-BIT ALPHA (A-Z); DO NOT FORGET &77]

/	REVDATE=[THE CONTENTS OF 17666 (DATE WORD)]

/	REVDGRP=[THE CONTENTS OF 07777 (ONLY BITS[3-4] ARE USED)]



	IFNDEF	REVDATE	<REVDATE=4464>	/REVISION DATE (LOCATION 17666)

	IFNDEF	REVDGRP	<REVDGRP=0400>	/REVISION 8 YEAR DATE GROUP (LOCATION 07777)

	IFNDEF	REVISIO	<REVISIO="G&77>	/REVISION OF KERMIT-12

	IFNDEF	VERSION	<VERSION=12>	/VERSION OF KERMIT-12


	DAY=	REVDATE&370%10		/REVISION DAY

	DGROUP=	REVDGRP&600%20		/REVISION DATE GROUP (WHICH 8 YEARS)

	MONTH=	REVDATE&7400%400	/REVISION MONTH

	YEAR=	REVDATE&7+DGROUP+106	/REVISION YEAR (SINCE 1900)