/ KERMIT FOR DEC 12-BIT MACHINES / LAST EDIT: 06-SEP-1990 11:00:00 CJL XLIST OFF IFNDEF OFF /TURN LISTING OFF IFNDEF ON /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 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 WHEN THE BUFFER / IS 3/4 FULL. WHEN THE BUFFER REACHES 1/4 FULL, THE REMOTE WILL BE SENT / 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 , THE BUFFER WILL FILL WITH OUTPUT / CHARACTERS. WHEN THE USER RELEASES THE CONSOLE WITH , 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 / 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 / , , AND (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 CHARACTER IS REQUIRED FOR / VISUAL RUBOUT ( ) 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 / 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 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 , . / 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 /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 /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 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 OF ASCII / FILES. / SETTING OCLOSE= 1 CAUSES <^Z> TO BE SENT AT 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 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 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 /USE DEVICE 30/31 VALUES IFNDEF DEV40 /USE DEVICE 40/41 VALUES IFNDEF LEDERLE /USE LEDERLE LABS VALUES IFNDEF ORIGNAL /USE ORIGINAL VALUES IFNDEF SPRINT /USE DEVICE 32/33 VALUES IFNDEF USER /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 /DEFAULT TO DEVICE 40/41 VERSION / DEV30 PARAMETERS. IFNZRO DEV30 < IFNDEF REC /DEVICE 30 INPUT IFNDEF SEN /DEVICE 31 OUTPUT > / DEV40 PARAMETERS (DEFAULT). IFNZRO DEV40 < IFNDEF REC /DEVICE 40 INPUT IFNDEF SEN /DEVICE 41 OUTPUT > / LEDERLE PARAMETERS. /038 CJL IFNZRO LEDERLE < IFNDEF REC /DEVICE 43 INPUT IFNDEF SEN /DEVICE 44 OUTPUT IFNDEF GENMSG /GENERATE LOCAL HEADER MESSAGE IFNDEF UMSG /DON'T GENERATE USER MESSAGE > / ORIGNAL PARAMETERS. IFNZRO ORIGNAL < IFNDEF REC /DEVICE 33 INPUT IFNDEF SEN /DEVICE 34 OUTPUT > / SPRINT PARAMETERS. /046 CJL IFNZRO SPRINT < IFNDEF REC /DEVICE 32 INPUT IFNDEF SEN /DEVICE 33 OUTPUT > / USER PARAMETERS. IFNZRO USER < IFNDEF XX /DEFAULT TO DEVICE 40 IFNDEF XY /DEFAULT TO DEVICE 41 IFNDEF REC /DEVICE XX INPUT IFNDEF SEN /DEVICE XY OUTPUT IFNDEF GENMSG /GENERATE LOCAL HEADER MESSAGE IFNDEF UMSG /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 /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 /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 /DEFAULT IS CONTROL-] / DEFAULT LOWER-CASE ENABLE DEFINITION. /030 CJL IFNDEF LOWER /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 /DEFAULT IS FIVE RETRIES / DEFAULT FILE MODE DEFINITION. /031 CJL IFNDEF FMODE /DEFAULT IS ASCII FILE MODE /4377 IS BINARY FILE MODE / DEFAULT FLOW-CONTROL MODE DEFINITION. /031 CJL IFNDEF FLOW /DEFAULT IS FLOW-CONTROL ENABLED / DEFAULT ASCII INPUT FILE <^Z> DISPOSITION. /031 CJL IFNDEF ICLOSE /ENSURE <^Z> AT ASCII / DEFAULT ASCII OUTPUT FILE <^Z> DISPOSITION. /031 CJL IFNDEF OCLOSE /<^Z> NOT SENT AT ASCII / DEFAULT LOCAL MESSAGE GENERATION DEFINITIONS. /038 CJL IFNDEF GENMSG /DEFAULT IS TO GENERATE A MESSAGE IFNDEF UMSG /DEFAULT IS NO DUMMY USER MESSAGE IFNDEF LEDERLE /DEFAULT IS NO LEDERLE MESSAGE / THE NULL MESSAGE WILL BE GENERATED BY DEFAULT. / ECHO DEFINITION. /039 CJL IFNDEF INIECHO /DEFAULT IS NO LOCAL ECHO / DEFAULT DECMATE I PORT DEFINITION. /050 CJL IFNDEF PORT /DEFAULT IS PORT ZERO / DEFAULT BAUD RATE DEFINITION. /050 CJL IFNDEF BRATE /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 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 CHARACTER /044 CJL DELETE= 177 / DELETE OR 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 /REVISION DATE (LOCATION 17666) IFNDEF REVDGRP /REVISION 8 YEAR DATE GROUP (LOCATION 07777) IFNDEF REVISIO /REVISION OF KERMIT-12 IFNDEF VERSION /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)