home *** CD-ROM | disk | FTP | other *** search
/ Columbia Kermit / kermit.zip / d / k12mit.doc < prev    next >
Text File  |  2020-01-01  |  67KB  |  1,596 lines

  1. /    KERMIT FOR DEC 12-BIT MACHINES
  2.  
  3. /    LAST EDIT:    06-SEP-1990    11:00:00    CJL
  4.  
  5.     XLIST    OFF
  6.     IFNDEF    OFF    <OFF=    1>    /TURN LISTING OFF
  7.     IFNDEF    ON    <ON=    0>    /TURN LISTING ON
  8.     XLIST    ON;    IFZERO    1    <
  9.  
  10.  
  11.  
  12.  
  13.  
  14.  
  15.  
  16.  
  17. ***     **** *********** *********    ***      *** *** *********** *****   ****
  18. ***    ****  *********** **********   ****    **** *** *********** *****  ******
  19. ***   ****    ***      ***     ****  ****    **** ***        ***          *** ***  ***
  20. ***  ****     ***      ***     ***  *****  ***** ***     ***       *** **   ****
  21. *** ****      ***      ***     ***  *****  ***** ***     ***       *** **    ***
  22. *******       ***      ***    ****  ************ ***     ***       ***       **
  23. ******          **********  **********   *** **** *** ***        *** ***** ***      **
  24. *******          **********  *********    *** **** *** ***        *** ***** ***     **
  25. *** ****      ***      *** ****     ***  **  *** ***     ***       ***    **
  26. ***  ****     ***      ***  ****    ***  **  *** ***     ***       ***   **
  27. ***   ****    ***      ***   ****   ***      *** ***     ***       ***  **
  28. ***    ****   *********** ***     ****  ***    *** ***        ***       *** *********
  29. ***     **** *********** ***      **** ***    *** ***        ***          *** *********
  30.                     >    XLIST    ON
  31.  
  32.  
  33.  
  34.  
  35.  
  36.  
  37.  
  38.  
  39.  
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50. /    COPYRIGHT (C) 1989, 1990 BY THE TRUSTEES OF COLUMBIA UNIVERSITY IN THE CITY OF
  51. /    NEW YORK.
  52.  
  53.  
  54.  
  55. /    PERMISSION IS  GRANTED  TO  ANY  INDIVIDUAL OR INSTITUTION TO COPY OR USE THIS
  56. /    DOCUMENT AND THE  PROGRAM(S) DESCRIBED IN IT, EXCEPT FOR EXPLICITLY COMMERCIAL
  57. /    PURPOSES.
  58. /    EDIT HISTORY.                            /014 CJL
  59.  
  60. /    052    06-SEP-1990    BUG FIX.            CHARLES LASNER (CJL)
  61.  
  62. /        SENDING A FILE WHICH  EXACTLY  FILLS  THE LAST DATA PACKET AT THE
  63. /        END OF THE FILE WILL  CAUSE  THE  PACKET  TO  BE SENT TWICE.  THE
  64. /        ROUTINE DIDN'T CHECK FOR AN EMPTY OUTPUT BUFFER AT EOF.
  65.  
  66. /    051    29-AUG-1990    BUG FIX.            CJL
  67.  
  68. /        PDP-8/A NOT IDENTIFIED CORRECTLY  IN  CPUID ROUTINE.  THE UPDATED
  69. /        PC IS WHAT IS LOADED  INTO  THE  AC  WHEN 7016 IS EXECUTED ON THE
  70. /        KK-8/A CPU.  THE ROUTINE WAS  CHECKING FOR THE NON-UPDATED VALUE.
  71. /        ALSO  NEW  DOCUMENTATION FOR PRE-CLEARING MEMORY FOR  BENEFIT  OF
  72. /        ENCODED BINARY FILES.
  73. /    050    06-SEP-1989    DECMATE I SUPPORT, ETC.        CJL
  74.  
  75. /        THIS EDIT IMPLEMENTS DECMATE  I  SUPPORT USING THE DP278-A OR -B.
  76. /        A NEW CONDITIONAL 'PORT' SELECTS  WHICH  PORT  IS TO BE USED.  IF
  77. /        KERMIT-12 IS RUN ON DECMATE I  (WHILE  NOT  CONFIGURED FOR SERIAL
  78. /        PRINTER  PORT  COMMUNICATIONS;    SEE  EDIT  048.)   THEN  REMOTE
  79. /        COMMUNICATIONS TAKES PLACE ON THE PORT SELECTED AT  ASSEMBLY TIME
  80. /        ('PORT=0' OR 'PORT=1').    ADDED  BAUD  RATE PARAMETER 'BRATE' TO
  81. /        SELECT REMOTE COMMUNICATIONS BAUD  RATE  FROM THE STANDARD TABLE;
  82. /        DEFAULTS TO 1200 BAUD ('BRATE=7').
  83.  
  84. /    049    30-AUG-1989    REMOTE FLOW CONTROL, ETC.    CJL
  85.  
  86. /        THIS  EDIT  IMPLEMENTS FLOW CONTROL SUPPORT (IF FLOW  CONTROL  IS
  87. /        ENABLED) FOR THE REMOTE LINE WHILE SENDING PACKETS TO  THE REMOTE
  88. /        KERMIT REGARDLESS  OF  STATE.    PREVIOUSLY,  FLOW  CONTROL  ONLY
  89. /        APPLIED TO CONNECT  MODE.  LOCAL FLOW CONTROL (TOWARDS THE REMOTE
  90. /        KERMIT) IS UNNECESSARY AS  LOCAL  BUFFERS  FOR  REMOTE  INPUT ARE
  91. /        ALWAYS AVAILABLE.  CERTAIN ROUTINE  CHANGES  MADE  FOR BENEFIT OF
  92. /        DECMATE I SUPPORT IN A SUBSEQUENT EDIT.
  93.  
  94. /    048    24-AUG-1989    DECMATE II, ETC. SUPPORT.    CJL
  95.  
  96. /        ONCE-ONLY CODE ADDED  TO  IMPLEMENT DECMATE II, ETC.  REMOTE LINE
  97. /        SUPPORT  ON  SERIAL  COMMUNICATIONS   PORT.    SELECTED  PORT  IS
  98. /        INDICATED ON OPENING BANNER IF OPERATING ON DECMATE.
  99.  
  100. /    THIS EDIT PROVIDES BASIC SUPPORT  OF  THE DECMATE II COMMUNICATIONS PORT AS AN
  101. /    AUTOMATIC FEATURE OF THE STANDARD RELEASE  OF  K12MIT.  AUTOMATIC DETECTION OF
  102. /    DECMATE II, ETC.  HARDWARE IS PERFORMED  UNLESS  THE  PDP-8-TYPE  REMOTE  LINE
  103. /    SUPPORT IS ASSEMBLED FOR THE SERIAL PRINTER AS  THE  REMOTE  LINE ('SPRINT' IS
  104. /    SET OR EQUIVALENT).
  105.  
  106. /    THIS  EDIT INCORPORATES ALL OF THE  INFORMATION  TAKEN  FROM  VARIOUS  SOURCES
  107. /    REGARDING DECMATE PORT INITIALIZATION, ETC.  EVERY  ATTEMPT  HAS  BEEN MADE TO
  108. /    COMPLETELY  SET ALL APPROPRIATE REGISTERS, ETC.  FOR  DECMATE  II,  III,  III+
  109. /    OPERATION.  NO SUPPORT EXISTS FOR THE DECMATE III  BUILT-IN  MODEM  OPTION, AS
  110. /    EXPLICIT  DOCUMENTATION  IS NOT AVAILABLE (SOME OF THE INITIALIZATION CODE  IS
  111. /    APPARENTLY USED TO DISABLE THE MODEM).  THESE ROUTINES ARE ONLY  KNOWN TO WORK
  112. /    ON  THE DECMATE II, AS THE III (ESPECIALLY WITH OPTIONAL MODEM) AND  THE  III+
  113. /    HAVEN'T BEEN  AVAILABLE  TO  THE  AUTHOR FOR TESTING.  THE INITIALIZATION CODE
  114. /    WILL BE UPDATED  LATER  TO  INCLUDE  PANEL  REQUESTS,  ETC.    TO  CORRECT ANY
  115. /    PROBLEMS, ETC.  DECMATE-SPECIFIC  FEATURES  (SUCH  AS  SETUP COMMANDS) WILL BE
  116. /    ADDED LATER AND ENABLED FROM THESE ROUTINES.
  117.  
  118. /    THIS EDIT INCORPORATES  NON-INTERRUPT  ROUTINES  WHICH HAVE BEEN TESTED AT THE
  119. /    MAXIMUM COMMUNICATIONS SPEED OF  THE  DECMATE  II  (19200  BAUD).    THEY WILL
  120. /    SUFFICE FOR ALL KERMIT IMPROVEMENTS  SHORT  OF  SLIDING  WINDOWS AT WHICH TIME
  121. /    INTERRUPT-DRIVEN I/O WILL BE REQUIRED.   (INTERRUPT-DRIVEN  I/O  IS ILLEGAL ON
  122. /    CERTAIN OS/8 SYSTEMS WHERE INTERRUPTS ARE HARMFUL  TO THE SYSTEM OR NON-SYSTEM
  123. /    HANDLERS.) 
  124. /    047    21-AUG-1989    CODE CLEANUP.            CJL
  125.  
  126. /        STREAM-LINED CONNECT MODE ROUTINES FOR MINIMUM USE OF IOTS.  THIS
  127. /        IS  IN  PREPARATION  FOR  EVENTUAL DECMATE II OPERATION,  AND  TO
  128. /        MINIMIZE  K12PCH  PATCH  FILE SIZE.  CERTAIN NON-CONNECT ROUTINES
  129. /        MOVED TO FACILIATE CONNECT ROUTINE REORGANIZATION. 
  130.  
  131. /    046    15-AUG-1989    CODE CLEANUP.            CJL
  132.  
  133. /        ADDED NEW (NON-CONNECT) MODE COMMUNICATIONS ROUTINES FOR EVENTUAL
  134. /        DECMATE USE.  ELIMINATION OF 'IREM' AND 'IREMW' ROUTINES IN FAVOR
  135. /        OF 'COMIN'.   ELIMINATION  OF 'OREM' IN FAVOR OF 'COMOUT'.  ADDED
  136. /        STATUS UPDATE ROUTINE ('UPSTATUS')  FOR EVENTUAL DECMATE II, ETC.
  137. /        USAGE.  ELIMINATED PDP-8, DECMATE  I,  DECMATE  II  CONDITIONALS.
  138. /        REORGANIZED  SERIAL  LINE  CONDITIONALS  AND ADDED  NEW  'SPRINT'
  139. /        PARAMETER FOR SERIAL PRINTER  PORT  USAGE AS COMMUNICATIONS PORT.
  140. /        ADDED ONCE-ONLY CODE ADDED TO  AUTOMATICALLY  RECOGNIZE DECMATE I
  141. /        AND II OPERATION UNLESS ASSEMBLED FOR  REMOTE  COMMUNICATIONS  ON
  142. /        SERIAL  PRINTER  PORT  ('SPRINT'  SET).   UPDATED  K12PCH.PAL  TO
  143. /        CORRESPOND   TO  NEW  DEFINITIONS.    DEFINED  EVENTUALLY  NEEDED
  144. /        COMMUNICATIONS PORT  INSTRUCTIONS FOR DECMATE II;  ACTUAL DECMATE
  145. /        II OPERATION WILL  BE  DEFINED  IN A SUBSEQUENT EDIT.  DOCUMENTED
  146. /        NEW LOADING AND SAVING  INSTRUCTIONS  FOR  K12MIT  TO  ALLOW  FOR
  147. /        ONCE-ONLY CODE IN 10000-11777 WITHOUT  SWAPPING  THE CODE OUT FOR
  148. /        THE USR.  THIS ELIMINATES OVERHEAD  WHEN  LOADING  K12MIT, BUT IS
  149. /        DIFFERENT  FROM  THE FORMER INSTRUCTIONS WHICH ASSUMED  NO  OTHER
  150. /        USAGE OF 10000-11777 OTHER THAN THE (LOCKED-IN) USR.
  151.  
  152. /    THIS EDIT  PROVIDES THE FRAMEWORK FOR AUTOMATIC DETECTION OF PROGRAM EXECUTION
  153. /    OF K12MIT ON  ANY  MEMBER  OF  THE  DECMATE  FAMILY  (I, II, III, III+).  WHEN
  154. /    6120-TYPE CPU DETECTION OCCURS,  THE  DECMATE I OR II-TYPE COMMUNICATIONS PORT
  155. /    INITIALIZE CODE IS AUTOMATICALLY SELECTED  AS  NECESSARY UNLESS THE PDP-8-TYPE
  156. /    ROUTINES ARE ASSEMBLED (WITH 'SPRINT' SET  OR  EQUIVALENT USER SETTINGS, ETC.)
  157. /    FOR THE VT-78-TYPE PRINTER PORT (32/33), IN  WHICH  CASE THE COMMUNICATIONS IS
  158. /    DONE VIA THE PRINTER PORT ON THE DECMATE (WHICH IS ALMOST PDP-8 COMPATIBLE AND
  159. /    IS ACCOMODATED AS SUCH).
  160.  
  161. /    SUBSEQUENT EDITS SHOULD PROVIDE FOR A DECMATE I PARAMETER TO CONTROL  THE PORT
  162. /    SELECTION,  AS  THERE  ARE  AT  LEAST  TWO VARIANT OPTIONS BOARDS (DP-278A AND
  163. /    DP-278B) EACH CONSISTING OF TWO PORTS.
  164. /    045    12-AUG-1989    BUG FIX.              CJL
  165.  
  166. /        FINISH,  GET,  AND  RECEIVE  COMMANDS   FAIL  TO  ABORT  PROPERLY
  167. /        (ESPECIALLY AFTER THE SEND COMMAND HAS BEEN USED), AS THE CURRENT
  168. /        OPERATING MODE ('KMODE') IS NEVER PROPERLY SET,  OR  IS SET AFTER
  169. /        SEVERAL PACKETS HAVE BEEN SENT.  EACH COMMAND  NOW  SETS  ITS OWN
  170. /        OPERATING MODE BEFORE INITIATING ANY PACKETS.
  171.  
  172. /    044    11-AUG-1989    CODE CLEANUP.            CJL
  173.  
  174. /        CHANGED  'CCMSG'  TO  'ABMSG'  WITH  CLEARER  MESSAGE.    CHANGED
  175. /        'CCFLAG'  TO  'ABFLAG' FOR CONSISTENCY.  CHANGED ABORT  CHARACTER
  176. /        FROM <^C> TO CHOICE OF <^X> OR <^Z> FOR  CONSISTENCY.  ELIMINATED
  177. /        'ITTY'  AND  'ITTYW'  ROUTINES  BY  USING  'CTLCTST'  AND 'INPUT'
  178. /        ROUTINES ALREADY  AVAILABLE  A/O EDIT 043.  ELIMINATED 'TCHAR' IN
  179. /        FAVOR OF 'INCHAR' AVAILABLE A/O EDIT 043.
  180.  
  181. /    043    07-AUG-1989    CODE CLEANUP, ETC.        CJL
  182.  
  183. /        REWRITE OF  CONSOLE SUPPORT ROUTINES INCLUDING FORCED-ECHO OUTPUT
  184. /        AND COLUMN COUNT FOR <HT> SIMULATION IN PREPARATION FOR IMPENDING
  185. /        USER-INTERFACE  REWRITE.     'SCRIBE',  'LININP',  AND  'ESCPRNT'
  186. /        ROUTINES NOW CALL  "P7ECHO" ROUTINE TO ENSURE PRINTING OF CRUCIAL
  187. /        MESSAGES.
  188.  
  189. /    042    13-JUN-1989    CODE CLEANUP.            CJL
  190.  
  191. /        FIXED VARIOUS NAK-RELATED BUGS AND SEND-INIT PROBLEMS AS IN  K278
  192. /        (SOME  OF  THE K278 STUFF IS DEFICIENT!).  CALCULATION OF  PROPER
  193. /        SEQUENCE  NUMBER  FOR NAK CORRECTED OVER FORMER (K08MIT AND K278)
  194. /        VERSIONS.  ADDED ERROR MESSAGE FOR FULL-DISK PROBLEM.
  195.  
  196. /    041    12-MAY-1989    BUG FIX.            CJL
  197.  
  198. /        VARIOUS  VERSIONS  (DECMATE)  WON'T  FUNCTION REMOTELY WHILE KL-8
  199. /        VERSIONS WORK  FINE.    ADDED  REMOTE LINE READ IOT TO INITIALIZE
  200. /        REMOTE  LINE  AT   STARTUP  TIME  FOR  VERSIONS  REQUIRING  THIS.
  201. /        CORRESPONDING CHANGES IN PATCH FILE MADE FOR REMOTE LINE READ IOT
  202. /        IN TWO PLACES.
  203. /    040    07-MAR-1989    COSMETIC CLEANUP.        CJL
  204.  
  205. /        CLEANUP OF EDIT HISTORY AND OTHER COMMENTS.
  206.  
  207. /    039    21-MAY-1988    CODE CLEANUP.            CJL
  208.  
  209. /        ADDED VARIABLE 'INIECHO' TO  ALLOW  DEFAULT CONNECT-MODE STATE TO
  210. /        BE HALF-DUPLEX ("SET LOCAL-ECHO ON").    MODIFIED  INPUT  SERVICE
  211. /        ERROR ADDRESSES TO SIMPLIFY ERROR TABLES.
  212.  
  213. /    038    19-MAY-1988    CODE CLEANUP.            CJL
  214.  
  215. /        ELIMINATED  TRAILER FILES DURING ASSEMBLY BY  CREATING  VARIABLES
  216. /        'GENMSG' AND 'UMSG.' THIS ALLOWS THE HEADER  FILE  (PARAM.PA)  TO
  217. /        CONTAIN THE LOCAL MESSAGE TEXT WITHOUT SUBSEQUENT OVERLAY  (WHICH
  218. /        WAS WHY THERE FORMERLY WAS A TRAILER FILE CAPABILITY).    OVERLAY
  219. /        BY  K12PCH.BN  WILL  DEFAULT TO CREATION OF A DUMMY USER  MESSAGE
  220. /        (WITHIN K12PCH) ENCOURAGING LOCAL  CUSTOMIZATION.  K12MIT.BN WILL
  221. /        CONTAIN A NULL MESSAGE BY DEFAULT UNLESS CUSTOMIZED IN PARAM.PA.
  222.  
  223. /    037    21-JAN-1988    BUG FIX.            CJL
  224.  
  225. /        RESET OS/8 DEVICE CONTROL WORD  TABLE TO DELETE TENTATIVE FILE IN
  226. /        CASE OF PRIOR INPUT SERVICE ERROR.
  227.  
  228. /    036    20-JAN-1988    BUG FIX.            CJL
  229.  
  230. /        RESET 'OFFLG' WHEN DOING INPUT SERVICE IN CASE PRIOR ERRORS LEAVE
  231. /        THE FLAG SET.
  232.  
  233. /    035    14-JAN-1988    USR RESIDENT CODING.        CJL
  234.  
  235. /        CALLS TO USR NOW USE 10200 INSTEAD  OF  17700.   NO SWAP OVERHEAD
  236. /        WHEN OPENING OR CLOSING FILES.
  237.  
  238. /    034    13-JAN-1988    CODE CLEANUP.            CJL
  239.  
  240. /        ALL  EIGHT-BIT  ORIENTED  CONSOLE  CODE ELIMINATED;  NOW  IGNORES
  241. /        PARITY (JUST SEVEN BITS).
  242.  
  243. /    033    12-JAN-1988    CODE CLEANUP.            CJL
  244.  
  245. /        'TTYOUT' AND 'OTTY' ROUTINES ELIMINATED;  NOW USES 'P7CH' FOR ALL
  246. /        CONSOLE OUTPUT (EXCEPT FOR CONNECT MODE).
  247.  
  248. /    032    12-JAN-1988    CODE CLEANUP.            CJL
  249.  
  250. /        VARIOUS  ROUTINES REWRITTEN TO ELIMINATE DEPENDENCIES ON CPU TYPE
  251. /        BEYOND THE CLASSIC PDP-8.
  252. /    031    11-JAN-1988    CODE CLEANUP.            CJL
  253.  
  254. /        ELIMINATED 'RTDISP'  AND  CHANGED CALLING CONVENTION FOR DISPATCH
  255. /        ROUTINE.  ALL  CALLERS  NOW  LOCAL  OR VIA LOCAL POINTERS.  ADDED
  256. /        SEVERAL  CONDITIONAL  PARAMETERS  AND    LABELS  FOR  BENEFIT  OF
  257. /        K12PCH.PAL.
  258.  
  259. /    030    05-JAN-1988    CODE CLEANUP.            CJL
  260.  
  261. /        CHANGED LOWER/UPPER CASE CONDITIONAL ASSEMBLY PARAMETERS AND MORE
  262. /        EFFICIENT CODE.
  263.  
  264. /    029    21-DEC-1987    CODE CLEANUP.            CJL
  265.  
  266. /        CHANGED CALLING CONVENTIONS FOR 'SCRIBE' AND SIMILAR ROUTINES AND
  267. /        REWROTE 'COMMAND' ROUTINE.
  268.  
  269. /    028    15-DEC-1987    CODE CLEANUP.            CJL
  270.  
  271. /        COMPLETE REWRITE OF FILE LOOKUP ROUTINE.   'LUKUP' NOW USES FIELD
  272. /        ONE  BUFFER  AND  ITS OWN AUTO-INDEX REGISTER CONSERVING  PROGRAM
  273. /        SPACE.
  274.  
  275. /    027    05-DEC-1987    CODE CLEANUP.            CJL
  276.  
  277. /        CHANGED  DISPATCH  ('DISPA0') ROUTINE TO USE 'SRCHTABLE' ROUTINE.
  278. /        ALL CALLS  MADE COMPATIBLE.  ELIMINATED 'SCANC' CODE.  ELIMINATED
  279. /        CODE WITHIN 'DPARS'  ROUTINE.    'LUKUP' ROUTINE NOW DOES ITS OWN
  280. /        DISK I/O.  ELIMINATED 'BLKIN' ROUTINE.
  281.  
  282. /    026    27-NOV-1987    NEW CONNECT MODE CODE.        CJL
  283.  
  284. /        TOTAL  REWRITE  OF ALL CONNECT MODE CONSOLE AND REMOTE INPUT  AND
  285. /        OUTPUT  TERMINAL  ROUTINES.  CONNECT IS NOW FULLY BUFFERED IN ALL
  286. /        DIRECTIONS.   IF  FLOW  CONTROL  IS  OBEYED, ANY BAUD RATE CAN BE
  287. /        ACCOMODATED BOTH LOCALLY  AND  REMOTE  (UP  TO  9600 BAUD TESTED,
  288. /        SHOULD WORK TO AT  LEAST  19200 BAUD BY INSPECTION).  TESTED WITH
  289. /        FAST VT-100 EMULATOR CONSOLE TO  PROVE  ESCAPE  SEQUENCES ARE NOT
  290. /        DROPPED WHEN LOCAL TERMINAL IS FASTER  THAN REMOTE LINE.  LIMITED
  291. /        USE OF SUBROUTINES TO IMPROVE HIGH BAUD  RATE  OPERATION.   ADDED
  292. /        TABLE-DRIVEN ERROR EXIT ROUTINE FOR SEND ROUTINES.
  293.  
  294. /    THIS EDIT PROVIDES  FULLY  BUFFERED  INPUT/OUTPUT  ROUTINES FOR BOTH LOCAL AND
  295. /    REMOTE PORTS.  NO  INTERRUPTS  ARE  USED  FOR  MAXIMUM COMPATIBILITY WITH OS/8
  296. /    DEVICES (SOME OF WHICH ARE  INTOLERANT OF INTERRUPTS, SUCH AS TD-8/E).  REMOTE
  297. /    FLOW CONTROL (IF ENABLED) WILL SIGNAL BUFFER FILLING VIA <DC3> WHEN THE BUFFER
  298. /    IS 3/4 FULL.  WHEN THE BUFFER  REACHES 1/4 FULL, THE REMOTE WILL BE SENT <DC1>
  299. /    TO ALLOW FURTHER OUTPUT.  REMOTE FLOW CONTROL IS SUPPORTED IN BOTH DIRECTIONS;
  300. /    LOCAL FLOW CONTROL IS FROM THE KEYBOARD ONLY.
  301.  
  302. /    WHILE THE CONSOLE OUTPUT IS PAUSED BY <DC3>, THE  BUFFER WILL FILL WITH OUTPUT
  303. /    CHARACTERS.  WHEN THE USER RELEASES THE CONSOLE WITH <DC1>,  THE  BUFFER  WILL
  304. /    RAPIDLY  EMPTY  (ASSUMING THE CONSOLE IS FASTER THAN THE REMOTE LINE).    THIS
  305. /    ALLOWS THE USER TO PAUSE THE CONSOLE WITHOUT BACKING UP THE REMOTE  LINE UP TO
  306. /    THE LIMITS OF BOTH LOCAL OUTPUT AND REMOTE INPUT BUFFERS.
  307. /    025    24-NOV-1987    NEW FEATURES AND CODE CLEANUP.    CJL
  308.  
  309. /        PROPER  INTERRUPT  SETUP  FOR  <^C> AND <^P>, ECHO  STATE.    ALL
  310. /        MESSAGES  IN  NEW  FORMAT,  (SOME NEW ONES HAVE BETTER  CONTENT).
  311. /        ELIMINATED  'PRI6B' AND 'REM6B' ROUTINES.  NEW AND IMPROVED INPUT
  312. /        SERVICE ERROR  CODE  MOVED  TO  PROPER  PAGE.    REWROTE  CONNECT
  313. /        ROUTINES TO ALLOW  NON-INTERRUPT BUFFERED I/O LATER.  CREATED NEW
  314. /        VARIABLE 'ESCHAR' AND PARAMETER  'ESCAPE'  TO  SET DEFAULT ESCAPE
  315. /        CHARACTER.  ESCAPE CHARACTER CAN BE CHANGED IN MEMORY AND WILL BE
  316. /        USED  CORRECTLY  BY ALL ROUTINES.   ADDED  'ESCPRNT'  ROUTINE  TO
  317. /        HANDLE  ALL  CASES  (INCLUDING NON-CONTROL CHARACTERS).   DEFAULT
  318. /        ESCAPE  PARAMETER  VALUE  COMPATIBLE  WITH K08V2, BUT IS  A  USER
  319. /        PARAMETER,  CONFIGURED  AS  OTHER PARAMETERS DEFINED IN EDIT 017.
  320. /        CREATED  ESCAPE FUNCTION TABLE FOR EXPANSION LATER.  NOW SUPPORTS
  321. /        ESCAPE C(LOSE)  IN  UPPER  OR LOWER CASE, ESCAPE ESCAPE (SEND ONE
  322. /        ESCAPE CHARACTER).   ALL  BAD  ESCAPE  COMMANDS  WILL ISSUE <BEL>
  323. /        CHARACTER TO WARN USER  THAT COMMAND IS ILLEGAL AND OTHERWISE WAS
  324. /        IGNORED.  CREATED NEW VARIABLE  'ECHOFLAG' TO ALLOW LOCAL ECHO IN
  325. /        CONNECT MODE.
  326.  
  327. /    024    19-NOV-1987    NEW FEATURES.            CJL
  328.  
  329. /        NEW  STARTUP MESSAGES AND HELP METHOD  VIA  COMMAND.    CPU  TYPE
  330. /        IDENTIFICATION TO ALLOW FUTURE VERSIONS TO CHECK  FOR  QUIRKS AND
  331. /        MODEL DEPENDENCIES.  THE DEFAULT PROMPT REFLECTS THE  ACTUAL  CPU
  332. /        TYPE (THUS "KERMIT-12>" ON PDP-12).  VERSION, REVISION, AND  DATE
  333. /        NOW EQUATED SYMBOLS.
  334.  
  335. /    023    18-NOV-1987    NEW CONSOLE I/O PACKAGE.    CJL
  336.  
  337. /        NEW  CONSOLE  I/O  ROUTINES  WITH  DC1/DC3  SUPPORT  FOR  CONSOLE
  338. /        TERMINAL MESSAGES NOT ASSOCIATED WITH ANY REMOTE ACTIVITY (NOT TO
  339. /        BE USED DURING CONNECT MODE).  USES FIELD ONE FOR MESSAGE TEXT TO
  340. /        ALLOW FOR MORE PROGRAM  SPACE.    THE  MESSAGES  ARE NOW GIVEN IN
  341. /        UPPER/LOWER SIXBIT FORMAT.  SUPPORT  FOR <^P> RESTART AND <^O> TO
  342. /        FLIP  ECHO.  UPPER-CASE CAN BE  FORCED  BY  CHANGING  A  VARIABLE
  343. /        ('UPONLY').
  344.  
  345. /    022    17-NOV-1987    BUG FIX.            CJL
  346.  
  347. /        EXTRA-LONG INIT PACKETS CORRUPTING PROGRAM;  NOW  CHECKS  FOR AND
  348. /        IGNORES EXTRA CAPABILITIES BEYOND 'CAPAS' BYTE.
  349. /    021    17-NOV-1987    CODE CLEANUP.            CJL
  350.  
  351. /        REWROTE  TENTATIVE OUTPUT FILE LENGTH CODE FOR MORE  CONSISTENCY.
  352. /        RENAMED "FINISH" COMMAND CORRECTLY (FORMERLY "BYE").
  353.  
  354. /    FORMER  CODE  REGARDING  THE  TENTATIVE  FILE  MAXIMUM  LENGTH WAS  ACCEPTABLY
  355. /    ORGANIZED  FOR  ORIGINAL  PS/8, OS/8 CONVENTIONS.  WITH THE EVOLUTION  OF  THE
  356. /    OPERATING  SYSTEM  INTO  OS/78  (VERSIONS  1-4) AND OS/278 (VERSIONS 1-2), THE
  357. /    ENTER OPERATION HAS BEEN CHANGED WITH DANGEROUS CONSEQUENCES.
  358.  
  359. /    THE  ORIGINAL DEFINITION OF THE LENGTH RETURNED BY ENTER IS THE ACTUAL  LENGTH
  360. /    OF  THE LARGEST EMPTY (IN TWO'S COMPLEMENT FORM).  IF RECORD 7777 IS  PART  OF
  361. /    THE  ACTUAL  LARGEST  EMPTY (FULL SIZE DEVICE AND THE LARGEST EMPTY IS LAST ON
  362. /    THE  DEVICE),  THEN  THE  LENGTH RETURNED IS ONE LESS (THIS IS A LONG STANDING
  363. /    BUG).  SINCE THERE IS NO STRAIGHT-FORWARD WAY TO DETERMINE THIS, THE LENGTH IS
  364. /    ASSUMED TO BE CORRECT.
  365.  
  366. /    TESTS WITH THE  DECUS  VERSION  OF  OS/278 (DM-101) REVEAL A DANGEROUS CHANGE:
  367. /    THE LENGTH RETURNED IS TWO LARGER THAN ACTUALLY EXISTS!
  368.  
  369. /    TO COUNTERACT THIS, EDIT  010  INSERTED  A  DECREMENT  OF  TWO INTO THE LENGTH
  370. /    BEFORE PASSING IT BACK TO  THE  KERMIT FILE WRITING ROUTINE.  THE FILE WRITING
  371. /    ROUTINE THEN ADDS ONE TO THE LENGTH TO CREATE A "DANGER COUNT", I.E., IN TWO'S
  372. /    COMPLEMENT  NOTATION,  THIS IS THE AMOUNT THAT  WILL  INDICATE  FILE  OVERFLOW
  373. /    SHOULD IT REACH ZERO.
  374.  
  375. /    THIS HAS NOW BEEN REORGANIZED TO ALLOW THE  ENTER  ROUTINE  TO  SET THE DANGER
  376. /    COUNT  DIRECTLY.  OS/8 USERS MUST ALLOW FOR THE  EXTRA  ROOM  (WHICH  MUST  BE
  377. /    PRESENT  BUT  WILL NOT BE USED), SINCE NO CHECK FOR  SYSTEM  VERSION  WILL  BE
  378. /    PERFORMED.
  379.  
  380. /    020    16-NOV-1987    NEW ROUTINES AND CODE CLEANUP.    CJL
  381.  
  382. /        REWROTE  ENTIRE  OUTPUT  FILE    PACK   ROUTINE.    NOW  SUPPORTS
  383. /        ASCII/BINARY  INTERNAL FILE MODE FOR  LATER  USE.    USES  OUTPUT
  384. /        BUFFER IN FIELD ONE (SAME DEFINITIONS  AS  INPUT BUFFER) TO ALLOW
  385. /        MORE PROGRAM SPACE.  END OF FILE  CONVENTION  IN  ASCII  MODE NOW
  386. /        INCLUDES  ENSURING  <^Z>  CHARACTER  PACKED  INTO FILE (OR  NOT).
  387. /        REWROTE  ENTIRE  OUTPUT  FILE  CLOSE  ROUTINE  TO  IMPLEMENT <^Z>
  388. /        SCHEME.  ELIMINATED SEPARATE OUTPUT FILE INITIALIZE ROUTINE;  USE
  389. /        SPECIAL ROUTINE CALL INSTEAD.  FIXED PACKET WRITE BUG.
  390.  
  391. /    019    15-NOV-1987    NEW ROUTINES AND CODE CLEANUP.    CJL
  392.  
  393. /        FIXED UNPACK <^Z> BUG.  REWROTE ENTIRE INPUT FILE UNPACK ROUTINE.
  394. /        NOW SUPPORTS ASCII/BINARY INTERNAL FILE MODE FOR LATER USE.  USES
  395. /        INPUT BUFFER IN FIELD ONE TO ALLOW  MORE  PROGRAM  SPACE.  BUFFER
  396. /        FIELD DEFINED VIA SYMBOLS TO ALLOW CHANGES IN THE FUTURE.  END OF
  397. /        FILE CONVENTION IN ASCII MODE NOW INCLUDES SENDING <^Z> CHARACTER
  398. /        OR  NOT.  ELIMINATED SEPARATE INPUT FILE INITIALIZE ROUTINE;  USE
  399. /        SPECIAL ROUTINE CALL INSTEAD.
  400.  
  401. /    018    09-NOV-1987    BUG FIX AND CODE CLEANUP.    CJL
  402.  
  403. /        FIXED RECEIVE BUG; NOW ALLOW DEV: ON RECEIVE.
  404. /    017    05-NOV-1987    NEW FEATURES.            CJL
  405.  
  406. /        CONDITIONAL ASSEMBLY  PARAMETERS  ADDED  FOR MACHINE TYPE (PDP-8,
  407. /        DECMATE I, DECMATE  II/III/III+),  REMOTE LINE AND LOCAL TERMINAL
  408. /        INTERFACE DEFINITIONS.
  409.  
  410. /    016    05-NOV-1987    CODE CLEANUP.            CJL
  411.  
  412. /        OPTIMIZATION OF CODE, LITERALS, CONSTANTS.
  413.  
  414. /    015    04-NOV-1987    BUG FIX.            CJL
  415.  
  416. /        INPUT SERVICE ROUTINE ERROR  DOES JMP INSTEAD OF JMS WHEN CALLING
  417. /        COMMON ERROR HANDLER.
  418.  
  419. /    014    02-NOV-1987    SOURCE FILE CLEANUP.        CJL
  420.  
  421. /        SOURCE FILE COSMETICALLY CLEANED UP  AND  RENAMED  TO  K12MIT.PAL
  422. /        WHICH CONFORMS WITH CUCCA NAMING CONVENTION.    NO  ACTUAL BINARY
  423. /        CODE CHANGES BEYOND K08V2.  THIS EDIT  HISTORY  ADDED.    ENTRIES
  424. /        PRIOR TO 014 TRANSCRIBED BY CJL.
  425.  
  426. /    SINCE THE PDP-12 (AND OTHER 12-BIT DEC MACHINES)  IS  THE INTENDED ENVIRONMENT
  427. /    FOR THIS PROGRAM, IT IS NOW KNOWN AS KERMIT-12.
  428.  
  429. /    ASSEMBLING  THE  SOURCE FILE PRODUCES BINARY IDENTICAL TO K08V2.PA  CONFIRMING
  430. /    THAT SOURCE CLEANUP DOESN'T DAMAGE THE CODING (K08V2 IS NOW OBSOLETE).
  431.  
  432. /    013    01-OCT-1987    CHANGE TO VERSION 2.0.        R. SCHLERF (RICH)
  433.  
  434. /        CHANGED  'RKIOT'/'RTIOT'    TO   43/44  REMOTE  LINE  IOT  (LOCAL
  435. /        PREFERENCE).  CHANGED  'ESCAPE'  CHARACTER  TO  ^]  ('CONX1') FOR
  436. /        GENERIC CONFORMITY.  ADDED  VERSION/COMMAND BANNER AT STARTUP FOR
  437. /        MINI-HELP.    INCORPORATED  K278  CHANGES  003-006,  009-010  (NO
  438. /        INTERRUPTS).  DELETED 'ERRMSG.' NOW USES  'STXERR'  AT 'CLOOP9'+2
  439. /        FOR PROGRAM SPACE.  TO CONFORM TO  GENERIC KERMIT, "BACK ON PDP8"
  440. /        MESSAGE  DELETED AND REPLACED WITH BEEP <^G>.   MESSAGE  "SENDING
  441. /        FILE  XXXXXX.XX  CREATED  ON  DD-MM-YY"  REDUCED TO "SENDING FILE
  442. /        XXXXXX.XX"  TO CONFORM TO GENERIC KERMIT.  PARITY BIT IS  IGNORED
  443. /        ON BOTH REMOTE AND TTY LINES.  OUTPUT PARITY IS SET TO SPACE.
  444.  
  445. /    PROGRAM RENAMED TO K08V2.PA AND MADE AVAILABLE TO CUCCA BY:
  446.  
  447. /    RICHARD SCHLERF (RICH)
  448. /    AMERICAN CYANAMID COMPANY
  449. /    MEDICAL RESEARCH DIVISION
  450. /    LEDERLE LABORATORIES
  451. /    BUILDING 190 ROOM 115H
  452. /    PEARL RIVER, NEW YORK  10965
  453. /    (914) 732-2186 (09:00 TO 16:00)
  454.  
  455. /    SINCE  PRIMARY APPLICATION OF K08V2 IS FOR PDP-8 USAGE, THE MODIFICATIONS  NOT
  456. /    SPECIFIC TO DECMATE II/III FROM K278 WERE MOVED TO THE K08MIT VERSION.  FUTURE
  457. /    VERSIONS WILL  INCORPORATE  THE  DECMATE  FEATURES AND THUS OBSOLETE ALL OTHER
  458. /    VERSIONS AT THAT TIME.
  459. /    012    04-JUN-1986    PROGRAM FIX.            SEPP STADELMANN (SSTA)
  460.  
  461. /        RE-INITIALIZE VIA 'V30ST' AS ROM SETUP CLEARS COMPOSETABLE, ETC.
  462.  
  463. /    04-JUN-1986 VERSION RELEASED  TO  CUCCA  BY  MARTYN HEMMINGS (DEC GERMANY) AND
  464. /    SEPP STADELMANN (DEC SWITZERLAND) OF:
  465.  
  466. /    DIGITAL EQUIPMENT CORPORATION (DEC)
  467. /    146 MAIN STREET
  468. /    MAYNARD, MASS  01754
  469. /    (617) 897-5111
  470.  
  471. /    CUCCA RENAMED FILES (KERMIT.PA AND KERCOM.PA) TO K278.PA AND K278COM.PA (WHICH
  472. /    DOESN'T REALLY CONFORM TO THE NAMING CONVENTION).
  473.  
  474. /    CUCCA VERSION OF K278.PA FOUND TO BE DEFECTIVE.  FILE REPAIRED BY:
  475.  
  476. /    CHARLES LASNER (CJL)
  477. /    CLA SYSTEMS
  478. /    72-55 METROPOLITAN AVENUE
  479. /    MIDDLE VILLAGE, NEW YORK  11379-2107
  480. /    (718) 894-6499
  481.  
  482. /    REPAIRED FILE (K278.PA) NOW AVAILABLE AT CUCCA.
  483.  
  484. /    PROGRAM IS NOW  THE DECMATE II/III (III-PLUS) KERMIT ONLY.  HOOKS WERE LEFT IN
  485. /    FOR PDP-8 VERSION, BUT  NOT  IMPLEMENTED.    K278  DOES  WORK  WITH ADDITIONAL
  486. /    IMPLEMENTATIONS OF KERMIT, BUT RECEIVE  COMMAND DOES NOT WORK.  PROGRAM YIELDS
  487. /    RECOVERABLE SYSTEM ERROR/HALT WHEN EXITING TO  FLOPPY-BASED DECMATE II SYSTEM.
  488. /    CONNECT MODE IS VT200 8-BIT WHICH CONFUSES EVEN/ODD PARITY SYSTEMS.  K278 DOES
  489. /    NOT SUPPORT SETUP KEY OF DECMATE, BUT IMPLEMENTS SETUP COMMAND.
  490.  
  491. /    011    04-JUN-1986    NEW FEATURES.            SSTA
  492.  
  493. /        'PRQ3' CODE CONDITIONALS.  ROM SETUP COMMAND IMPLEMENTED FOR DMII/III.
  494. /        AUTOMATIC UPPERCASE SELECT ON RETURN FROM CONNECT.
  495.  
  496. /    010    13-MAR-1986    BUG FIX.            MARTYN HEMMINGS (MART)
  497.  
  498. /        FULL DISK HANDLED WELL.
  499.  
  500. /    009    13-MAR-1986    BUG FIX.            MART
  501.  
  502. /        CLEAN UP BREAK AND GET.
  503. /    008    12-MAR-1986    BUG FIX.            MART
  504.  
  505. /        CLEAR  INPUT  CHARACTERS  FROM  COMMUNICATIONS PORT WHEN IN  IDLE
  506. /        LOOP.
  507.  
  508. /    007    11-MAR-1986    NEW FEATURES AND BUG FIX.    MARTYN HEMMINGS AND
  509. /                                SSEP STADELMANN
  510. /                                (MART+SSTA)
  511.  
  512. /        INTERRUPT DRIVEN AND BUG FIX.
  513.  
  514. /    006    10-MAR-1986    NEW FEATURE.            MART+SSTA
  515.  
  516. /        DEVICE PARSE ON GET.
  517.  
  518. /    005    10-MAR-1986    BUG FIX.            MART+SSTA
  519.  
  520. /        NO DATE IN FILE WITH <^Z> INTACT.
  521.  
  522. /    004    10-MAR-1986    NEW FEATURES AND BUG FIX.    MART+SSTA
  523.  
  524. /        MAXIMUM  RECEIVE  BUFFER  FIXUP  ('RTERMI'),  15  SECOND TIME-OUT
  525. /        DURING CONNECT.
  526.  
  527. /    003    10-MAR-1986    BUG FIX.            SSTA
  528.  
  529. /        TWO PAGE HANDLER FIX.
  530.  
  531. /    K08MIT.PAL  COPIED  TO  DEC  ENGINEERING NETWORK (NODE LSMVAX::) ULTIMATELY TO
  532. /    EUROPE (NODE VIRGIN::) WHERE PROGRAM BECAME KERMIT.PAL AND KERCOM.PAL.
  533.  
  534. /    KERMIT.PAL  AND KERCOM.PAL ARE TWO SOURCE FILES ASSEMBLED TOGETHER TO  PRODUCE
  535. /    THE RUNNING KERMIT-8.  *THEY ARE FOR THE DECMATE II/III/III-PLUS ONLY.*
  536.  
  537. /    002    18-JUL-1985    ORIGINAL RELEASE.        RANDY HIPPE
  538.  
  539. /    18-JUL-1985 VERSION RELEASED TO CUCCA BY JERRY SANDS AND RANDY HIPPE OF:
  540.  
  541. /    BUREAU OF ENGRAVING, INC.
  542. /    3311 BROADWAY N.E.
  543. /    MINNEAPOLIS, MN  55413
  544. /    (612) 623-0900 X218
  545.  
  546. /    CUCCA  RENAMED  FILE  (KER8.PAL)  TO  K08MIT.PAL  WHICH  CONFORMS  TO   NAMING
  547. /    CONVENTION OF KERMIT FILES.
  548.  
  549. /    K08MIT SUPPORTS CONNECT, BYE (REALLY FIN), EXIT, SEND, GET, RECEIVE ONLY.
  550.  
  551. /    PROGRAM PRONE  TO  GETTING  "CONFUSED" AND OUTPUTS FILE DATE ATTRIBUTE BOTH AS
  552. /    'CAPAS' BYTE FEATURE  AND  ASCII  TEXT INSERTED INTO CONTENTS OF FILE AHEAD OF
  553. /    FILE DATA.  COMMAND PROCESSOR ACCEPTS UPPER-CASE COMPLETE COMMANDS ONLY.  <^C>
  554. /    ABORT FEATURE TAKES VERY LONG TIME TO ACT (IF AT ALL!).  MANY KERMITS WILL NOT
  555. /    WORK WITH K08MIT;  HOWEVER, K08MIT WAS TESTED SUCCESSFULLY WITH KERMIT-20.
  556.  
  557. /    001    30-JUL-1984    FIRST VERSION (KER8.PAL).    JERRY SANDS
  558. /    HARDWARE HINTS AND KINKS.
  559.  
  560.  
  561. /    KERMIT-12 REQUIRES THE FOLLOWING STANDARD OS/8 FAMILY CONFIGURATION:
  562.  
  563. /    PDP-8 FAMILY MEMBER WITH AT LEAST 8K MEMORY.
  564.  
  565. /    OS/8 SYSTEM DEVICE (WITH OS/8 FAMILY OPERATING SYSTEM RESIDENT).
  566.  
  567. /    KL8-COMPATIBLE CONSOLE INTERFACE.
  568.  
  569. /    7/8-BIT ASCII EXTERNAL CONSOLE TERMINAL DEVICE (TTY:).
  570.  
  571. /    KL8-COMPATIBLE REMOTE INTERFACE TO OTHER KERMIT.
  572.  
  573. /    NOTE:  ASSEMBLY  PARAMETERS  OF  KERMIT-12  ALLOW FOR LOCAL KERMIT CONTROLLING
  574. /    TERMINALS TO BE OTHER  THAN  THE  PRIMARY  OS/8  CONSOLE  DEVICE.   THE ACTUAL
  575. /    HARDWARE MUST STILL CONFORM TO  THE  SAME REQUIREMENTS (THE DEVICE CODES WOULD
  576. /    THEN BE USER-SPECIFIED AND DIFFER FROM  THE  STANDARD  03/04)  AS THE STANDARD
  577. /    CONSOLE INTERFACE AND TERMINAL.
  578.  
  579. /    SPECIAL DECMATE CONSIDERATIONS:
  580.  
  581. /    DECMATE  USAGE IS USUALLY OBTAINED BY  ASSEMBLING  FOR  THE  STANDARD  CONSOLE
  582. /    DEVICE  (03/04),  AS  THE  BUILT-IN  FIRMWARE/SLUSHWARE  OF  THE  DECMATES  IS
  583. /    SUFFICIENTLY COMPATIBLE WITH THE PDP-8 HARDWARE FOR KERMIT-12'S  REQUIREMENTS.
  584. /    (THE ONLY OTHER ACCEPTABLE CONSOLE DEVICE ON THE DECMATE IS THE PRINTER PORT.)
  585.  
  586. /    DECMATE  REMOTE  COMMUNICATIONS  PORTS  ARE    *RADICALLY*    DIFFERENT   FROM
  587. /    KL8-COMPATIBLE PORTS.  THESE ARE HANDLED AUTOMATICALLY BY ONCE-ONLY CODE WHICH
  588. /    DETECTS  THE  USAGE  OF  KERMIT-12  ON  THE    SPECIFIC  DECMATE  SYSTEM,  AND
  589. /    SELF-CONFIGURATION AS APPROPRIATE.  THERE IS ONE EXCEPTION  TO THIS, NAMELY IF
  590. /    THE COMMUNICATIONS PORT CODE IS ASSEMBLED FOR THE PRINTER  PORT  (32/33), THEN
  591. /    THE PRINTER PORT, *NOT* THE COMMUNICATIONS PORT WILL BE USED.    THE  STANDARD
  592. /    ASSEMBLY  OF  KERMIT-12 IS FOR A PDP-8 WITH DEVICE 40/41 COMMUNICATIONS  PORT.
  593. /    THIS DESIGNATED VERSION WILL SELF-CONFIGURE WHEN EXECUTED ON A DECMATE.
  594. /    CONFIGURATION RESTRICTIONS:
  595.  
  596. /    WHEN  INTERRUPTS  ARE SUPPORTED AGAIN, DEVICES SUCH AS THE TD-8/E WON'T  WORK.
  597. /    THE  NON-INTERRUPT  VERSION  SHOULD WORK TO 19200 BAUD ON THE PDP-8/E CPU,  SO
  598. /    THIS  SHOULD NOT BE A PROBLEM.  INTERRUPT-DRIVEN VERSIONS OF KERMIT-12 MUST BE
  599. /    RUN ONLY  ON  SYSTEMS  WHERE  *ALL*  INTENDED  DEVICES CAN HAVE THEIR HANDLERS
  600. /    INTERRUPTED BY THE CONSOLE AND REMOTE LINE INTERRUPT HANDLERS.  WHEN IN DOUBT,
  601. /    THE NON-INTERRUPT VERSION MUST BE USED (CURRENTLY THE ONLY VERSION).
  602.  
  603. /    IF FLOW CONTROL IS  DISABLED  (DUE  TO  XON/XOFF  BEING  UNAVAILABLE) THEN THE
  604. /    CONSOLE BAUD RATE MUST MEET  OR  EXCEED  THE  REMOTE LINE RATE.  THE USER MUST
  605. /    TAKE MINIMAL CARE NOT TO OVERLOAD  THE  INTERNAL BUFFERS OF KERMIT-12, AS THIS
  606. /    WILL YIELD THE ERROR MESSAGE:  KEYBOARD INPUT ERROR!
  607.  
  608. /    THIS IS NOT LIKELY TO OCCUR UNLESS  ONE  "PLAYS"  WITH  A  KEYBOARD  WHICH CAN
  609. /    GENERATE NUMEROUS ESCAPE SEQUENCES AS THE BUFFERS ARE  QUITE  ADEQUATE FOR ALL
  610. /    REASONABLE TERMINAL APPLICATIONS.  SIMILARLY, IF THE REMOTE LINE DOES NOT OBEY
  611. /    XON/XOFF  PROTOCOL  (WHILE  KERMIT-12  HAS  IT  ENABLED), THEN INTERNAL BUFFER
  612. /    OVERFLOW WILL YIELD THE ERROR MESSAGE:  REMOTE LINE INPUT ERROR!
  613.  
  614. /    THESE ERRORS ARE EXTREMELY UNLIKELY AND CAN ONLY BE CREATED BY  MISUSE OF FLOW
  615. /    CONTROL (THE ONLY EXCEPTION TO THIS IS THE ATTEMPT TO USE KERMIT-12  WITH  THE
  616. /    CONSOLE  BAUD  RATE  SLOWER  THAN  THE REMOTE LINE BAUD RATE WITH FLOW CONTROL
  617. /    DISABLED).  IF FLOW CONTROL IS ENABLED AND OBEYED THEN THE BUFFERING OF REMOTE
  618. /    LINE INPUT  WILL  OCCUR  WHILE SHORT PAUSES OCCUR ON THE CONSOLE (ASSUMING THE
  619. /    USER FREEZES/UNFREEZES THE  DISPLAY OFTEN AND THE CONSOLE DISPLAY BAUD RATE IS
  620. /    FASTER THAN THE REMOTE LINE BAUD RATE) WITH PRACTICALLY NO REMOTE LINE DELAY.
  621.  
  622. /    FLOW CONTROL IS NOT  YET  SUPPORTED  DURING KERMIT TRANSFERS.  SINCE KERMIT-12
  623. /    DOES  NOT SUPPORT SLIDING WINDOWS,  KERMIT-12  WILL  NEVER  GENERATE  OUTGOING
  624. /    XON/XOFF SEQUENCES.  FUTURE REVISIONS WILL  SUPPORT INCOMING XON/XOFF FROM THE
  625. /    REMOTE KERMIT.  XON/XOFF PROTOCOL DURING CONNECT  MODE IS COMPLETELY AVAILABLE
  626. /    AT THE USER'S OPTION.
  627.  
  628. /    CONSOLE TERMINALS ARE REQUIRED TO SUPPORT "GLASS TTY:"  FEATURES,  I.E.    THE
  629. /    PRINTING ASCII CHARACTER SET (LOWER-CASE DESIRABLE) AND THE CONTROL CHARACTERS
  630. /    <CR>, <LF>, AND <BEL> (THE LAST FOR VARIOUS AUDIBLE REPORTS  ONLY).  TERMINALS
  631. /    LACKING LOWER-CASE  SUPPORT  SHOULD "FOLD" LOWER-CASE CHARACTERS TO UPPER-CASE
  632. /    AUTOMATICALLY.  TERMINALS  SUCH  AS  THE VT05 CAN HAVE THE KEYBOARD LOWER-CASE
  633. /    ENABLED, AS KERMIT-12 SUPPORTS  OPTIONAL  OUTPUT FOLDING.  THE UPPER-CASE ONLY
  634. /    OPTION SHOULD BE ENABLED FOR  TERMINALS WHICH IGNORE LOWER-CASE INPUT FROM THE
  635. /    HOST,  AS KERMIT-12 GENERATES NUMEROUS LOWER-CASE  MESSAGE  CHARACTERS  (WHICH
  636. /    BECOME UPPER-CASE IF THIS OPTION IS SET).   THE <BS> CHARACTER IS REQUIRED FOR
  637. /    VISUAL  RUBOUT  (<BS>  <SPACE>  <BS>)  ONLY.   FUTURE  VERSIONS  WILL  SUPPORT
  638. /    HARD-COPY BACKSPACE TO REMOVE THIS REQUIREMENT.  ALL TERMINAL  FEATURES  (SUCH
  639. /    AS ACTUAL VT-100 FUNCTIONALITY) ARE FREELY PASSED TO THE HOST  DURING  CONNECT
  640. /    MODE;  THE ONLY CHARACTER ACTUALLY RESERVED IS THE ESCAPE CHARACTER WHICH WILL
  641. /    BE  TREATED  AS  A SEVEN-BIT CHARACTER ONLY.  IF THE USER PRESSES  THE  ESCAPE
  642. /    CHARACTER TWICE,  THEN  THE  SEVEN-BIT REPRESENTATION OF THE CHARACTER IS SENT
  643. /    ONCE;  THERE  IS  NO  WAY  TO SEND THE ESCAPE CHARACTER WITH THE HIGH-BIT SET.
  644. /    SINCE THE ESCAPE CHARACTER  ITSELF  CAN  BE SET TO ALMOST ANY SEVEN-BIT VALUE,
  645. /    THIS SHOULD NOT BE A SERIOUS LIMITATION.  TERMINALS THAT DON'T "BEEP" WHEN THE
  646. /    <BEL> CHARACTER IS SENT SHOULD NOT  OUTPUT  A  PRINTABLE RENDITION OF THE <^G>
  647. /    CHARACTER, AS THIS WOULD DISRUPT THE TERMINAL OUTPUT AND INTERNAL COLUMN COUNT
  648. /    DURING VARIOUS MESSAGE SEQUENCES, ETC.
  649. /    KL-8/E INTERFACES SHOULD BE SETUP WITH THE FOLLOWING STANDARD SETTINGS:
  650.  
  651. /    1 STOP BIT ABOVE 110 BAUD WITH 8 BITS DATA.
  652.  
  653. /    FUNCTIONAL  BAUD RATES INCLUDE 110, 150, 300, 600,  1200,  2400,  4800,  9600,
  654. /    19200, 38400 AND 76800.  2400 BAUD REQUIRES A  REVISION  "B"  OR  BETTER M8650
  655. /    MODULE  (IF  ONE  USES  DEC'S  DOCUMENTATION  OF AVAILABLE SPLIT-LUG OPTIONS).
  656. /    ACTUAL  BAUD  RATES  UP TO APPROXIMATELY 100 KBAUD SHOULD WORK WHEN  KERMIT-12
  657. /    BECOMES  INTERRUPT-DRIVEN.    RATES  OTHER THAN 110 BAUD REQUIRE A 19.6608 MHZ
  658. /    BAUD-RATE OSCILLATOR.
  659.  
  660. /    THE BAUD  RATES STATED ABOVE ARE ACTUALLY AVAILABLE ON THE KL-8/E, BUT REQUIRE
  661. /    A SINGLE SOLDER  JUMPER  TO  IMPLEMENT  THE  PROPER BAUD RATE ABOVE 2400 BAUD.
  662. /    CHANGING BAUD-RATE GENERATOR CRYSTALS  WILL  PRODUCE OTHER RATES AS NECESSARY.
  663. /    (SEND INQUIRIES  TO CLA SYSTEMS FOR INFORMATION REGARDING KL-8/E MODIFICATIONS
  664. /    INCLUDING UPGRADED BAUD-RATE  OSCILLATORS,  ETC.) KERMIT-12 HAS BEEN TESTED TO
  665. /    9600 BAUD AND SHOULD WORK TO 19200 BAUD (AS OF THE CURRENT VERSION).
  666.  
  667.  
  668. /    KL8-J/A INTERFACES SHOULD BE SETUP WITH THE FOLLOWING STANDARD SETTINGS:
  669.  
  670. /    1 STOP BIT ABOVE 110 BAUD WITH 8 BITS DATA NO PARITY.
  671.  
  672. /    FUTURE  VERSIONS  OF KERMIT-12 WILL SUPPORT VARIOUS SOFTWARE-GENERATED  PARITY
  673. /    OPTIONS.  THE FRAMING AND OVERRUN ERRORS CAN BE ENABLED AND WILL EVENTUALLY BE
  674. /    SUPPORTED (BUT THE PARITY GENERATOR SHOULD BE DISABLED TO PREVENT  INTERACTION
  675. /    WITH THE SOFTWARE USE OF PARITY GENERATION/DETECTION).
  676.  
  677. /    ALL BAUD RATES ARE SUPPORTABLE:
  678.  
  679. /    110, 150, 300, 600, 1200, 2400, 4800, 9600, 19200.
  680.  
  681. /    19200 BAUD IS ACHIEVED BY CUTTING JUMPER "W2" AND ADDING JUMPER  "W5" AND THEN
  682. /    SETTING THE BOARD FOR WHAT IS NORMALLY 9600 BAUD.  A WESTERN DIGITAL TR-1602-B
  683. /    OR  EQUIVALENT  UART  IS  REQUIRED TO SUPPORT 19200 BAUD;  MOST OF THE  RECENT
  684. /    PRODUCTION  DEC M8655 BOARDS USE THE SMC COMM 2017 UART WHICH MEETS OR EXCEEDS
  685. /    THIS REQUIREMENT.   EARLY  M8655 BOARDS USE GI UARTS IN CERAMIC PACKAGES WHICH
  686. /    *CANNOT* BE USED AT 19200 BAUD (MANY ARE FLAKY AT 9600 BAUD!).
  687.  
  688. /    RECEIVE BAUD RATE SHOULD  BE IDENTICAL TO TRANSMIT BAUD RATE.  (DO NOT SET THE
  689. /    RECEIVE=150 BAUD SWITCH!)
  690. /    OTHER INTERFACES:
  691.  
  692. /    DKC-8/A (8/A OPTION BOARD #1)  INTERFACES  SHOULD  BE SETUP AS PER THE KL8-J/A
  693. /    SPECIFICATIONS INCLUDING THE REQUIREMENTS OF THE UART.  SOME DEC DOCUMENTATION
  694. /    INDICATED A PROHIBITION ON THE USE OF  19200 BAUD, BUT THIS IS OBVIATED BY THE
  695. /    USE OF THE SAME UARTS AS IN THE KL8-J/A.
  696.  
  697. /    EARLIER DEVICES SUCH AS PT08, DP-12, KL-8/F OR DC02 (CHANNEL ZERO ONLY) SHOULD
  698. /    WORK CORRECTLY AS FACTORY WIRED (MOST OF THESE DEVICES  DO NOT SUPPORT OPTIONS
  699. /    KERMIT-12  WOULD  REQUIRE  TO  BE  DISABLED  ANYWAY.    THESE  INCLUDE  PARITY
  700. /    GENERATION,  FRAMING  ERROR  DETECTION,  ETC.).  TO UTILIZE THESE DEVICES, THE
  701. /    ASSEMBLY PARAMETERS  FOR  USER DEVICES AND THEIR RESPECTIVE DEVICE CODE VALUES
  702. /    SHOULD BE GIVEN  DURING  ASSEMBLY  (SEE ASSEMBLY INSTRUCTIONS).  PROPER DEVICE
  703. /    CODE VALUES MUST BE  OBTAINED  FOR  THE  SELECTED INTERFACE, AS THERE ARE MANY
  704. /    ACTUAL POSSIBILITIES.  (DP-12 DEVICES  ARE  GENERALLY DEVICE 40/41;  PT08/DC02
  705. /    INTERFACES ARE GENERALLY DEVICE 11/12, ETC.)
  706. /    ASSEMBLY INSTRUCTIONS.
  707.  
  708. /    KERMIT-12 CAN BE ASSEMBLED BY EITHER OF TWO METHODS:
  709.  
  710.  
  711. /    P?S/8 METHOD:
  712.  
  713. /    ASSUMING THE EXTENDED-LENGTH FILE KERM12 IS  THE  SOURCE  FILE,  THE FOLLOWING
  714. /    COMMAND WILL PRODUCE A FULLY ORNAMENTED LISTING:
  715.  
  716. /    .PAL KB1,KB2,KB3,KB4<KERM12(ACEJLMNPQSX8)
  717.  
  718. /    OPTION SWITCH BREAKDOWN:
  719.  
  720. /    /A    ALL SYMBOLS IN SYMBOL PRINTOUT.
  721.  
  722. /    /C    OPTIMIZE  CORE  DURING ASSEMBLY FOR MORE SYMBOLS,  LESS  BUFFERS.
  723. /        THIS OPTION SHOULD BE DELETED IF MORE THAN  8K  IS  AVAILABLE FOR
  724. /        ASSEMBLY.
  725.  
  726. /    /E    FORGET LITERAL BOUNDARIES WHEN LEAVING THE CURRENT PAGE.
  727.  
  728. /    /J    *DO NOT* TERMINATE TEXT STRINGS WITH EXTRA ZERO WORD.
  729.  
  730. /    /L    PERFORM SECOND-PASS LISTING.
  731.  
  732. /    /M    CHAIN TO MAP FOR BITMAP OUTPUT AT END OF ASSEMBLY.
  733.  
  734. /    /N    ENABLE NEATNESS ADORNMENTS TO LISTING OUTPUT.
  735.  
  736. /    /P    ENABLE PRINTER-ORIENTED (WIDE MODE) LISTING OUTPUT.
  737.  
  738. /    /Q    ENABLE LITERALS ONLY, GENERATED LINKS ARE ERRORS.
  739.  
  740. /    /S    ENABLE SYMBOL TABLE PRINTOUT.
  741.  
  742. /    /X    ENABLE CROSS-REFERENCE OUTPUT AT END OF ASSEMBLY.
  743.  
  744. /    /8    ENABLE FULL SYMBOL TABLE INCLUDING LINC MODE CROSS ASSEMBLY.
  745.  
  746. /    THE NUMBER OF BINARY FILES REQUIRED (KB1, KB2, KB3, ETC.) IS  TO BE DETERMINED
  747. /    AT ASSEMBLY TIME, AS KERMIT-12 WILL TEND TO GROW LARGER AS FEATURES ARE ADDED.
  748.  
  749. /    P?S/8 PAL IS THE PREFERRED METHOD  OF ASSEMBLING K12MIT DURING DEVELOPMENT DUE
  750. /    TO SUPERIOR ERROR DIAGNOSTICS AND OVERALL SPEED.   K12MIT COULD GROW TO A SIZE
  751. /    BEYOND THE CAPABILITIES OF OS/8 CREF.  THIS  LIMITATION  CANNOT  APPLY  TO THE
  752. /    P?S/8 DEVELOPMENT ENVIRONMENT.
  753.  
  754. /    P?S/8 PAL CAN PRODUCE A LISTING OF K12MIT, BUT THE BINARY FILES CREATED BY THE
  755. /    ASSEMBLY  MUST BE TRANSFERRED TO AN OS/8 ENVIRONMENT FOR USE, SINCE K12MIT (AS
  756. /    SPECIFICALLY WRITTEN) IS FOR THE OS/8 FAMILY OF SYSTEMS ONLY.
  757.  
  758. /    NOTE:  P?S/8 IS *NOT* A DEC PRODUCT;  IT IS SOLD COMMERCIALLY AND IS AVAILABLE
  759. /    FREE  OF  CHARGE (EXCEPT FOR MEDIA HANDLING CHARGES, ETC.) *ONLY* TO QUALIFIED
  760. /    INSTITUTIONS.  CONTACT CJL FOR ADDITIONAL INFORMATION ON ACQUIRING P?S/8.
  761. /    OS/8 FAMILY OF SYSTEMS METHOD:
  762.  
  763. /    K12MIT.PA CAN BE ASSEMBLED WITH PAL8 VERSION B0 WHICH IS AVAILABLE FROM  DECUS
  764. /    AS PART OF THE OS/278 RELEASE.  PAL8 VERSION B0 WILL RUN ON  ANY  OS/8  FAMILY
  765. /    SYSTEM,  AS  IT  HAS  NO  HARDWARE  DEPENDENCIES  BEYOND  THE  ORIGINAL  PDP-8
  766. /    REQUIREMENT (NO BSW OR IAC ROTATE OR CAF OR R3L INSTRUCTIONS AS WAS INTENDED).
  767. /    THIS ALSO APPLIES TO CREF  VERSION B0 WHICH IS REQUIRED WHEN A CROSS-REFERENCE
  768. /    IS REQUESTED.  PAL8 VERSION B0  AND  CREF  VERSION B0 ARE AVAILABLE AS PART OF
  769. /    THE KERMIT-12 DISTRIBUTION AS K12PL8.ENC AND K12CRF.ENC RESPECTIVELY.  SEE THE
  770. /    DOCUMENTATION OF K12DEC FOR INFORMATION ON PRODUCING PAL8.SV  AND CREF.SV FROM
  771. /    THESE ENCODED FILES.
  772.  
  773. /    ASSUMING CCL IS ENABLED, THE FOLLOWING COMMAND WILL PRODUCE A BINARY AND FULLY
  774. /    ORNAMENTED LISTING:
  775.  
  776. /    .PAL DEV:K12MIT.BN,DEV:K12MIT.LS,DEV:KSCR.TM<DEV:PARAM.PA,DEV:K12MIT.PA(CEFMW)
  777.  
  778. /    DEV:  IS THE APPLICABLE DEVICE WHERE THE FILES RESIDE.    STANDARD  EXTENSIONS
  779. /    ARE  ASSUMED  (.BN  FOR  BINARY, .LS FOR LISTING, .PA FOR PAL  SOURCE).    THE
  780. /    KSCR.TM  TEMPORARY  OUTPUT FILE SPECIFICATION IS OPTIONAL, BUT IS DEFAULTED TO
  781. /    SYS:CREFLS.TM IF  NOT  EXPLICITLY GIVEN.  MANY SYSTEM DEVICES ARE TOO SMALL TO
  782. /    SUPPORT THIS TEMPORARY  FILE,  THUS  THE  FILE  MAY  BE  DIRECTED  TO  ANOTHER
  783. /    AVAILABLE DEVICE WITH SUFFICIENT SPACE.
  784.  
  785. /    THE PARAM.PA FILE IS OPTIONAL AND USED TO PASS SHORT USER PARAMETERS, ETC.  TO
  786. /    THE ASSEMBLY.
  787.  
  788. /    OPTION SWITCH BREAKDOWN:
  789.  
  790. /    /C    CHAIN TO CREF.SV TO PRODUCE A CROSS-REFERENCED LISTING FILE.
  791.  
  792. /    /E    GENERATED LINKS ARE ERRORS.
  793.  
  794. /    /F    *DO NOT* TERMINATE TEXT STRINGS WITH EXTRA ZERO WORD.
  795.  
  796. /    /M    USE MAMMOTH SYMBOL TABLE OPTION FOR CREF.
  797.  
  798. /    /W    FORGET LITERAL BOUNDARIES WHEN LEAVING THE CURRENT PAGE.
  799.  
  800. /    LOADING INSTRUCTIONS:
  801.  
  802. /    .LOAD DEV:K12CLR,K12MIT.BN    THIS LOADS THE BINARY CLEAR AND KERMIT
  803. /    .SAVE DEV K12MIT.SV=1        THIS SAVES THE CORE IMAGE
  804.  
  805. /    THE  JOB STATUS WORD (=1) INDICATED THAT K12MIT.SV LOADS INTO 10000-11777, BUT
  806. /    SHOULD NOT BE SAVED/RESTORED  WHEN  THE  USR  IS  LOADED  OVER  THIS  AREA  OR
  807. /    DISMISSED (THE USR IS ACTUALLY  NEVER  DISMISSED  IN NORMAL K12MIT OPERATION).
  808. /    OTHER BITS MAY BE SET AT  THE  USER'S  OPTION,  BUT  ARE UNNECESSARY;  THE BIT
  809. /    INDICATED SERVES ONLY TO REDUCE SYSTEM OVERHEAD  REGARDING  THE DISPOSITION OF
  810. /    10000-11777.  THE  BINARY  FILE  K12CLR.BN  (CREATED  BY ASSEMBLING K12CLR.PA)
  811. /    LOADS ZEROES INTO ALL  OF  MEMORY  TO  CREATE A "CLEAN" CORE IMAGE FILE, WHICH
  812. /    MAKES THE ENCODED BINARY FILE SMALLER DUE TO REPEAT COMPRESSION.
  813. /    PASSING SHORT PARAMETER FILES.
  814.  
  815. /    WHEN INSERTING A SHORT USER MODIFICATION FILE IN THE INPUT STREAM  (PARAM.PAL)
  816. /    THE FOLLOWING SHOULD BE NOTED:
  817.  
  818. /    ALWAYS  PUT  THE  SHORT  PARAMETER  FILE  (CONTAINING EQUATED SYMBOLS SUCH  AS
  819. /    USER=1, ETC.) IN FRONT OF K12MIT.PAL.
  820.  
  821. /    IF TTY:  IS USED FOR DIRECT TYPE-IN OF THESE  PARAMETERS, THE INFORMATION NEED
  822. /    ONLY BE TYPED ENDING WITH <^Z> DURING PASS 1.  SUBSEQUENT  PASSES  REQUIRE THE
  823. /    ENDING <^Z> ONLY.  IF THIS METHOD IS USED, A LISTING WITHOUT  THE  USER  INPUT
  824. /    WHICH  DID THE CUSTOMIZING OF KERMIT-12 CAN BE CREATED.  NOTE:  IF  BINARY  IS
  825. /    GENERATED BY THE CONTENTS OF THE PARAMETER FILE (SUCH AS USE OF THE LOCAL TEXT
  826. /    MESSAGE,  ETC.),  THE  INFORMATION MUST BE TYPED IN DURING PASS 2.  THE PASS 3
  827. /    LISTING MAY  CONTAIN  THE INFORMATION IF SO DESIRED, REQUIRING A REPETITION OF
  828. /    THE INPUT.   PASS  1  INPUT  OF  THE INFORMATION IS EFFECTIVELY IGNORED, AS NO
  829. /    DEFINITIONS ARE CREATED ('LCLMSG' IS DEFINED ELSEWHERE, ETC.).
  830.  
  831. /    EXPERIENCED PDP-8 USERS NEW TO PAL8 VERSION B0 TAKE SPECIAL NOTICE:
  832.  
  833. /    DUE TO HARDWARE LIMITATIONS OF THE DECMATES, THE KEYBOARD FLAG WILL BE CLEARED
  834. /    DURING PDP-8 PAL8 B0 OPERATION.  THE KL8E TTY:  HANDLER WILL NO LONGER BE ABLE
  835. /    TO BUFFER <^Z> DURING THE ASSEMBLY;  YOU MUST  WAIT UNTIL THE HANDLER ACCESSES
  836. /    THE KEYBOARD ON EACH PASS *THEN* PRESS <^Z> TO CONTINUE THE ASSEMBLY.
  837.  
  838.  
  839. /    CREATING A CUSTOM MESSAGE FROM THE PARAMETER FILE.
  840.  
  841. /    IF  SO  DESIRED,  A CUSTOM LOCAL HEADER MESSAGE MAY BE ADDED BY INSERTING  THE
  842. /    FOLLOWING INTO THE PARAMETER FILE:
  843.  
  844. /    BUFFLD=    10        /THESE PROBABLY
  845. /    FILBUFF=2000        /WON'T CHANGE!
  846.  
  847. /    GENMSG=    0        /DON'T GENERATE STANDARD (NULL) MESSAGE
  848. /    UMSG=    0        /DON'T GENERATE STANDARD (DUMMY) USER MESSAGE
  849.  
  850. /    FIELD    BUFFLD%10    /FIELD FOR TEXT MESSAGE
  851.  
  852. /    *FILBUFFER        /LOCAL MESSAGE LOADS THERE
  853.  
  854. /LCLMSG,TEXT    "%^I^NSERT ^L^OCAL ^M^ESSAGE ^H^ERE!%"
  855.  
  856. /    ZBLOCK    LCLMSG+40-.    /ZERO REST OF MESSAGE AREA
  857.  
  858. /    TEXT IS IN  UPPER/LOWER-CASE  SIXBIT  WITH  '^'  MEANING SHIFT CASE (INITIALLY
  859. /    LOWER-CASE) AND '%' MEANING <CR>, <LF>.
  860. /    OTHER METHODS:
  861.  
  862. /    KERMIT-12  *CANNOT*  BE ASSEMBLED  BY  PAL10  (LAST  KNOWN  VERSION  OF  PDP-8
  863. /    CROSS-ASSEMBLER FOR TOPS10 (142)) BECAUSE IT LACKS CERTAIN FEATURES:
  864.  
  865. /    DOES NOT SUPPORT 'RELOC' PSEUDO-OP.
  866.  
  867. /    DOES NOT SUPPORT PAGE ZERO  REDEFINE  (CAUSES  "Z" ERROR ON SOURCE FILES WHICH
  868. /    DON'T HAVE ERRORS WHEN ASSEMBLED BY EITHER P?S/8 PAL OR OS/8 PAL8).
  869.  
  870. /    INCORRECTLY HANDLES 'ZBLOCK' PSEUDO-OP (LEADS TO  "Q"  ERROR  ON  SOURCE FILES
  871. /    WHICH DON'T HAVE ERRORS WHEN ASSEMBLED BY EITHER P?S/8 PAL OR OS/8 PAL8).
  872.  
  873. /    DOES NOT SUPPORT LITERAL "FORGETTING" (P?S/8 PAL OPTION /E OR OS/8 PAL8 OPTION
  874. /    /W) WHICH IS REQUIRED FOR DEFINING OVERLAY AREAS, ETC.
  875.  
  876. /    DOES NOT SUPPORT TEXT WITHOUT ZERO WORD FILL (P?S/8 PAL OPTION /J OR OS/8 PAL8
  877. /    OPTION /F FULFILLS THIS REQUIREMENT) WHICH IS REQUIRED FOR TEXT MESSAGES.
  878.  
  879.  
  880. /    P?S/8 PAL IS AN IMPROPER SUPERSET OF PAL10.  PAL10 SUPPORTS MACRO-8 MODE AS AN
  881. /    OPTION AND AUTOMATIC FIELD DUMP BITMAPS;  ALL OTHER KNOWN PAL10 FEATURES EXIST
  882. /    IN  P?S/8  PAL  INCLUDING  THE  SUPPORT  OF  THE  AUTOMATIC FIELD DUMP  BITMAP
  883. /    PSEUDO-OPS ('ENBITS' AND 'NOBITS').
  884.  
  885. /    OS/8  PAL8 (VERSION B0) IS A SUBSET OF P?S/8 PAL WHICH HAS  SEVERAL  SYNTACTIC
  886. /    QUIRKS (WHICH  ARE AVOIDABLE, BUT NONETHELESS ARE INCOMPATIBLE WITH BOTH P?S/8
  887. /    PAL  AND  PAL10    IN  CERTAIN  MINOR  WAYS);    REGARDLESS,  PAL8  LACKS  THE
  888. /    COMPATIBILITY PROBLEMS OF PAL10.
  889.  
  890. /    MAINTAINING SOURCE COMPATIBILITY.
  891.  
  892. /    KERMIT-12 SOURCE FILE CONVENTIONS DEMAND THE USE OF THE COMMON SUBSET OF P?S/8
  893. /    PAL AND OS/8 PAL8 (VERSION  B0).    CERTAIN  FORMS  OF  STATEMENTS  SHOULD  BE
  894. /    AVOIDED:
  895.  
  896. /    TAD            /NOT LEGAL IN PAL8
  897. /    0+TAD            /NOT LEGAL IN PAL10, AND POSSIBLY WRONG IN PAL8
  898. /    TAD    (3)+1        /GENERATES SAME AS "TAD (3+1)" IN PAL8
  899. /    -A!-B            /UNARY OPERATOR HANDLED WRONG IN PAL8
  900. /    I+N            /NOT LEGAL IN PAL8
  901. /    N+I            /NOT LEGAL IN PAL8
  902. /    I I            /NOT LEGAL IN PAL8
  903.  
  904. /    THIS  REQUIREMENT IS EASILY MET BY  KERMIT-12  AS  MOST  OF  THESE  CASES  ARE
  905. /    ESOTERIC QUIRKS AND NOT NEEDED FOR THIS ASSEMBLY.
  906.  
  907. /    THE RESTRICTIONS OF PAL10 (EVEN THOUGH IT  HAS  OTHER DESIRABLE FEATURES, MOST
  908. /    OF WHICH IT SHARES WITH P?S/8 PAL) ARE  TOO SEVERE TO ALLOW USABLE ASSEMBLY OF
  909. /    THIS  PROGRAM.    BETTER  CROSS-ASSEMBLERS  MAY  EXIST  ELSEWHERE  WHICH   ARE
  910. /    SOURCE-COMPATIBLE WITH KERMIT-12.
  911. /    USE OF P?S/8 LANGUAGE EXTENSIONS.
  912.  
  913. /    P?S/8 OFFERS SEVERAL USEFUL FEATURES OVER PAL8 (AND PAL10) WHICH MAY BE USEFUL
  914. /    FOR  ASSEMBLY  DEVELOPMENT OF KERMIT-12.  THESE INCLUDE LANGUAGE ELEMENTS SUCH
  915. /    AS "TAD (3)+1" HANDLED CORRECTLY, OR PSEUDO-OPS SUCH AS "PAUSE EXPR" WHERE THE
  916. /    VALUE OF 'EXPR'  WILL  BE  DISPLAYED ON THE SYSTEM CONSOLE DURING THE ASSEMBLY
  917. /    WHEN THAT POINT IN  THE  ASSEMBLY  IS  REACHED.   TO ACCESS THESE FEATURES AND
  918. /    STILL  PROVIDE COMPATIBILITY WITH PAL8  (VERSION  B0),  THE  FOLLOWING  CODING
  919. /    TECHNIQUE IS SUGGESTED:
  920.  
  921.  
  922. /    IFNDEF    PQS    <PQS=0>    /WILL BE 0 ON PAL8, PAL10
  923.  
  924.  
  925. /    IFZERO    PQS    <    /DO PAL8, ETC. STUFF HERE
  926.  
  927. /    FOO=    (TABLE)        /DEFINE POINTER TO ADDRESS OF TABLE
  928.  
  929. /    TAD    FOO-1        /GET (POINTER TO ADDRESS OF TABLE)-1
  930. /    DCA    XR1        /SETUP AUTO-INDEX REGISTER
  931.  
  932. /    WISH WE HAD PAUSE AND ERROR PSEUDO-OPS IN PAL8.
  933.  
  934. /            >    /END OF PAL8, ETC. VARIANT
  935.  
  936.  
  937. /    IFNZRO    PQS    <    /DO P?S/8 PAL STUFF HERE
  938.  
  939. /    TAD    (TABLE)-1    /GET (POINTER TO ADDRESS OF TABLE)-1
  940. /    DCA    XR1        /SETUP AUTO-INDEX REGISTER
  941.  
  942. /    IFNDEF    PASS    <PASS=0>/DEFINE PASS VARIABLE
  943.  
  944. /    PASS=    PASS+1        /BUMP EVERY ASSEMBLER PASS
  945.  
  946. /    PAUSE    PASS        /DISPLAY PASS NUMBER
  947.  
  948. /    IFNZRO    .&4000    <
  949.  
  950. /    ERROR    1234        /DISPLAY ERROR MESSAGE IF THERE ARE PROBLEMS
  951.  
  952. /            >
  953.  
  954. /            >    /END OF P?S/8 PAL VARIANT
  955.  
  956.  
  957. /    THIS ALLOWS TEMPORARY DEVELOPMENT FEATURES OR  PERMANENT ELEMENTS WHICH MAY BE
  958. /    MORE ELEGANTLY EXPRESSED IN P?S/8 PAL VARIANT  CODING, WHILE THE PAL8 (VERSION
  959. /    B0) VERSION CAN STILL BE USED (VIA DIRECT  OCTAL,  MULTIPLE EQUATE STATEMENTS,
  960. /    CONDITIONAL FLUSH AS IN THE ABOVE EXAMPLE, ETC.   AS  NECESSARY)  FOR STANDARD
  961. /    ASSEMBLY OF KERMIT-12.
  962. /    ASSEMBLY PARAMETERS.
  963.  
  964. /    SEVERAL  PARAMETERS  MUST  BE  CHANGED  WITHIN  K12MIT.PA  (OR  PASSED TO  THE
  965. /    ASSEMBLER VIA A SHORT FILE INSERTED INTO THE ASSEMBLY STREAM BEFORE  THE  MAIN
  966. /    FILE):
  967.  
  968. /    SETTING  KEY= [RECEIVE IOT CODE FOR  CONSOLE  KEYBOARD]  DEFINES  THE  CONSOLE
  969. /    KEYBOARD IOT CODE (DEFAULT IS 03).
  970.  
  971. /    SETTING  TTY=  [TRANSMIT  IOT CODE FOR CONSOLE  OUTPUT]  CHANGES  THE  CONSOLE
  972. /    PRINTER IOT CODE (DEFAULT IS 04).
  973.  
  974. /    THE FOLLOWING DEFINITIONS ARE  ESSENTIALLY  FOR  KL8-TYPE DEVICES ONLY, AS THE
  975. /    CODE DEMANDS KL8 HARDWARE COMPATIBILITY.    MODELS  OTHER  THAN PDP-8 (SUCH AS
  976. /    DECMATE) GENERALLY EITHER PLACE RESTRICTIONS ON  AVAILABLE  INTERFACES  (OTHER
  977. /    SOFTWARE DESIGNATES A SERIAL INTERFACE AS A  LOGICAL  PRINTER  PORT;  DECMATES
  978. /    SUPPORT A FIRMWARE "PRINT SCREEN" KEY WHICH ENFORCES  THIS.),  OR  DON'T ALLOW
  979. /    USABLE PLUG-IN OPTIONS.
  980.  
  981. /    IGNORING BUILT-IN DECMATE SUPPORT, THE FOLLOWING PARAMETERS ARE ACTIVE:
  982.  
  983. /    SETTING DEV30=    1     CREATES DEVICE 30/31 REMOTE LINE IOTS.
  984.  
  985. /    SETTING DEV40=    1     CREATES DEVICE 40/41 REMOTE LINE IOTS.
  986.  
  987. /    SETTING LEDERLE=1     CREATES DEVICE 43/44  REMOTE  LINE  IOTS (AND A CUSTOM
  988. /                HEADER).
  989.  
  990. /    SETTING ORIGNAL=1    CREATES  DEVICE  33/34  REMOTE   LINE  IOTS  (ORIGINAL
  991. /                SETTINGS).
  992.  
  993. /    SETTING SPRINT= 1    CREATES DEVICE 32/33 REMOTE LINE  IOTS (SERIAL PRINTER
  994. /                PORT).
  995.  
  996. /    SETTING USER=    1    CREATES DEVICE XX/XY REMOTE LINE IOTS.
  997.  
  998. /    IF NONE OF THESE ARE SET, THEN DEV40=1 APPLIES BY DEFAULT.
  999.  
  1000.  
  1001.  
  1002. /    SETTING USER=    1    REQUIRES THE USER TO DEFINE TWO ADDITIONAL VALUES:
  1003.  
  1004. /        XX=    [RECEIVE IOT DEVICE CODE] (DEFAULT IS 40).
  1005.  
  1006. /        XY=    [TRANSMIT IOT DEVICE CODE] (DEFAULT IS 41).
  1007. /    SETTING SPRINT= 1    INHIBITS THE BUILT-IN CHECK FOR DECMATE  OPERATION AND
  1008. /                USES    THE    SERIAL  PRINTER  PORT  FOUND  ON    ALL
  1009. /                WPS-8-CONFIGURED    PDP-8/E,  PDP-8/A  CONFIGURATIONS,
  1010. /                VT-78,  AND  ALL DECMATES (VT-278,  DECMATE  II,  III,
  1011. /                III+) FOR REMOTE COMMUNICATIONS.
  1012.  
  1013. /    THE  USE OF THE SERIAL PRINTER PORT FOR REMOTE COMMUNICATIONS PURPOSES MAY  BE
  1014. /    PROBLEMATIC DUE TO CONSIDERATIONS SUCH AS THE RS-232 CONNECTION TO THE PRINTER
  1015. /    IS A  MODEM  (DCE), RATHER THAN A TERMINAL (DTE) (DECMATE II, ETC.  REQUIRES A
  1016. /    GENDER CHANGER.), OR  THE SOFTWARE DESIGNATION OF THE PORT AS BEING ALLEDGEDLY
  1017. /    *ONLY* FOR A PRINTER,  SUCH AS WHEN CERTAIN SYSTEMS SUPPORT THE "PRINT SCREEN"
  1018. /    KEY AS A SCREEN DUMP  TO  THE  SERIAL PRINTER PORT, ETC.  THESE ISSUES ARE NOT
  1019. /    RELEVANT TO KERMIT-12 OPERATION, AS THE "PRINT SCREEN" KEY IS NOT SUPPORTED BY
  1020. /    KERMIT-12 IN THIS CONFIGURATION AS SUCH (FUTURE  VERSIONS  COULD  REDEFINE THE
  1021. /    "PRINT SCREEN" KEY TO SUCH FUNCTIONS AS DUMP SCREEN TO A FILE, ETC.).
  1022.  
  1023. /    SETTING BRATE= NN    SETS THE DEFAULT BAUD RATE (FOR  SYSTEMS  THAT SUPPORT
  1024. /                THIS  FEATURE)  FROM  A  TABLE  OF  VALUES  (0-15)  AS
  1025. /                FOLLOWS:
  1026.  
  1027. /                NN        BAUD RATE
  1028.  
  1029. /                00        50
  1030. /                01        75
  1031. /                02        110
  1032. /                03        134.5
  1033. /                04        150
  1034. /                05        300
  1035. /                06        600
  1036. /                07        1200
  1037. /                08        1800
  1038. /                09        2000
  1039. /                10        2400
  1040. /                11        3600
  1041. /                12        4800
  1042. /                13        7200
  1043. /                14        9600
  1044. /                15        19200
  1045.  
  1046. /    SETTING ESCAPE=    NNNN    SETS THE DEFAULT ESCAPE CHARACTER TO NNNN.
  1047.  
  1048. /    SETTING FLOW=    1    ENABLES FLOW-CONTROL BY DEFAULT.
  1049. /    SETTING FLOW=    0    DISABLES FLOW-CONTROL BY DEFAULT.
  1050.  
  1051. /    SETTING FMODE=    0177    SETS THE DEFAULT FILE MODE TO ASCII.
  1052. /    SETTING FMODE=    4377    SETS THE DEFAULT FILE MODE TO BINARY.
  1053. /    SETTING GENMSG=    0    CAUSES  NO  BINARY TO BE GENERATED WHERE  'LCLMSG'  IS
  1054. /                DEFINED.  THIS ALLOWS THE PARAMETER FILE (PARAM.PA) OR
  1055. /                SUBSEQUENT  OVERLAY  BY  K12PCH.BN TO DEFINE THE LOCAL
  1056. /                HEADER MESSAGE.    THIS  PARAMETER  SHOULD  NOT BE SET
  1057. /                UNLESS ONE OF  THESE  METHODS IS USED, ELSE THE HEADER
  1058. /                MESSAGE  WILL BE UNDEFINED.    (NOTE:    IF  K12PCH.BN
  1059. /                GENERATES  A HEADER MESSAGE, THEN  THIS  PARAMETER  IS
  1060. /                UNIMPORTANT,  AS  K12PCH.BN  OVERLAYS  THE  BINARY  OF
  1061. /                K12MIT.)
  1062. /    SETTING GENMSG=    1    CAUSES A HEADER MESSAGE TO BE GENERATED.  THE CONTENTS
  1063. /                OF  THE  MESSAGE  ARE CREATED BY SETTING LEDERLE=1  OR
  1064. /                UMSG=1.   IF EITHER IS ZERO, A DEFAULT (NULL)  MESSAGE
  1065. /                WILL BE GENERATED.
  1066.  
  1067. /    SETTING ICLOSE=    1    ENSURES  A  <^Z>  AT  <EOF>  OF  ASCII  INPUT FILES BY
  1068. /                DEFAULT.
  1069. /    SETTING ICLOSE=    0    CLOSES ASCII INPUT FILES AS RECEIVED BY DEFAULT.
  1070.  
  1071. /    SETTING INIECHO=0    CAUSES A  FULL-DUPLEX CONNECT MODE STATE WITH NO LOCAL
  1072. /                CHARACTER ECHOING BY DEFAULT.
  1073. /    SETTING INIECHO=1    CAUSES A HALF-DUPLEX  CONNECT  MODE  STATE  WITH LOCAL
  1074. /                ECHO OF ALL CONSOLE CHARACTERS BY DEFAULT.
  1075.  
  1076. /    SETTING LOWER=    0    ALLOWS LOWER-CASE CONSOLE OUTPUT BY DEFAULT.
  1077. /    SETTING LOWER=    -40    FOLDS  LOWER-CASE  CONSOLE  OUTPUT  TO  UPPER-CASE  BY
  1078. /                DEFAULT.
  1079.  
  1080. /    SETTING OCLOSE=    0    PREVENTS DEFAULT SENDING OF <^Z>  AT  <EOF>  OF  ASCII
  1081. /                FILES.
  1082. /    SETTING OCLOSE= 1    CAUSES  <^Z> TO BE SENT AT <EOF>  OF  ASCII  FILES  BY
  1083. /                DEFAULT.
  1084.  
  1085. /    SETTING PORT=    0    CAUSES THE DP-278 PORT 0 TO BE USED  IF  KERMIT-12  IS
  1086. /                RUN ON A DECMATE 1 (ASSUMING SPRINT=0).
  1087. /    SETTING PORT=    1    CAUSES  THE DP-278 PORT 1 TO BE USED IF  KERMIT-12  IS
  1088. /                RUN ON A DECMATE 1 (ASSUMING SPRINT=0).
  1089.  
  1090. /    SETTING RETCNT=    NNNN    SETS THE PACKET RETRY COUNT TO NNNN BY DEFAULT.
  1091. /    SETTING UMSG=    0    PREVENTS THE  LOCAL  USER  HEADER  MESSAGE  FROM BEING
  1092. /                GENERATED.
  1093. /    SETTING UMSG=    1    CAUSES THE LOCAL  USER HEADER MESSAGE TO BE GENERATED.
  1094. /                THE PARAMETER GENMSG=1 IS  REQUIRED  TO  BE  SET.  THE
  1095. /                SOURCE MUST BE MODIFIED LOCALLY  TO CHANGE THE MESSAGE
  1096. /                TEXT FROM "INSERT LOCAL USER MESSAGE  HERE!,"  AS THIS
  1097. /                IS THE DEFAULT CONTENTS.
  1098. /    KERMIT-12 FOR THE FAMILY OF 12-BIT DEC MACHINES.
  1099.  
  1100. /    BRIEF USAGE DESCRIPTION.
  1101.  
  1102. /    KERMIT-12 IS AN IMPLEMENTATION OF THE KERMIT PROTOCOL FOR THE FAMILY OF 12-BIT
  1103. /    DEC (AND COMPATIBLE) MACHINES GENERALLY KNOWN AS PDP-8 OR DECMATE.
  1104.  
  1105. /    AS OF THE CURRENT IMPLEMENTATION, THE FOLLOWING COMMANDS ARE EFFECTIVE:
  1106.  
  1107. /    1.    CONNECT (TO REMOTE SYSTEM AS TERMINAL).
  1108.  
  1109. /    2.    SEND FILESPEC (TO REMOTE RECEIVER OR SERVER).
  1110.  
  1111. /    3.    RECEIVE FILESPEC (FROM REMOTE SENDER).
  1112.  
  1113. /    4.    GET FILESPEC (FROM REMOTE SERVER).
  1114.  
  1115. /    5.    FINISH (SERVING).
  1116.  
  1117. /    6.    SETUP (ON DECMATE II/III/III-PLUS ONLY). **** NOT IMPLEMENTED ****
  1118.  
  1119. /    7.    EXIT (TO OPERATING SYSTEM).
  1120.  
  1121. /    8.    HELP (DISPLAYS HELP MESSAGE).
  1122.  
  1123. /    FILESPEC  MAY  BE  ANY LOCAL (OS/8) FILE-STRUCTURED DEVICE:FILENAME.EXTENSION,
  1124. /    WHERE THE  FILENAME  AND  EXTENSION WILL BE TRUNCATED TO 6 ALPHANUMERICS AND 2
  1125. /    ALPHANUMERICS RESPECTIVELY, AS  NECESSARY (THIS IS REFERRED TO AS 6.2 FILENAME
  1126. /    FORMAT).  THE DEVICE:    FIELD  IS  OPTIONAL;   ALL COMMANDS USING THE DEVICE:
  1127. /    FIELD FOR LOCAL DEVICE SPECIFICATION  WILL  USE  THIS  DEVICE AS THE SOURCE OR
  1128. /    DESTINATION AS NECESSARY FOR THE LOCAL  FILES.    IF  THE  DEVICE:    FIELD IS
  1129. /    OMITTED, THE DEFAULT DEVICE DSK:  WILL BE USED.  THE ACTUAL DEVICE USED MAY BE
  1130. /    SELECTED BEFORE INVOKING KERMIT-12 BY USING THE OS/8 ASSIGN COMMAND:
  1131.  
  1132. /    .ASSIGN DEV DSK
  1133.  
  1134. /    WHERE DEV IS ANY AVAILABLE FILE-STRUCTURED DEVICE.
  1135.  
  1136. /    KERMIT-12 USES AN UNUSUAL SCHEME FOR ITS PROMPT:    THE  ACTUAL DEFAULT PROMPT
  1137. /    TEXT  IS  PARTIALLY  TAKEN  FROM  THE  ACTUAL MACHINE KERMIT-12  IS  CURRENTLY
  1138. /    EXECUTING  ON.    FOR  EXAMPLE, IF KERMIT-12 HAS DETERMINED THE  CPU  TYPE  AS
  1139. /    PDP-8/E, THE PROMPT WILL BE:
  1140.  
  1141. /    KERMIT-8/E>
  1142.  
  1143. /    THIS  ALLOWS KERMIT-12 USERS (WITH DIFFERENT CPU-TYPE MACHINES) TO DISTINGUISH
  1144. /    MESSAGES ORIGINATING  FROM  THE  RESPECTIVE  SYSTEMS.    FUTURE  VERSIONS WILL
  1145. /    SUPPORT USER PROMPT STRINGS TO ALLOW MORE DISTINCTIVE SYSTEM MESSAGES.
  1146.  
  1147. /    THE HELP OR CONNECT COMMANDS MAY BE USED TO DETERMINE THE CURRENT CONNECT MODE
  1148. /    ESCAPE CHARACTER.
  1149. /    COMMAND RESTRICTIONS.
  1150.  
  1151. /    THE  SEND  COMMAND  ALLOWS   DEVICE:FILENAME.EXTENSION  (6.2)  WITH  WILD-CARD
  1152. /    SUBSTITUTION.  A * MAY  BE  GIVEN  FOR  AN  ENTIRE  FIELD  (EITHER FILENAME OR
  1153. /    EXTENSION OR BOTH) ONLY.  A  ?    WILL  MATCH  ANY SINGLE CHARACTER WHICH MUST
  1154. /    EXIST IN THE ACTUAL FILENAME OR EXTENSION,  UNLESS  RIGHT-MOST  IN  THE FIELD.
  1155. /    ALL  MATCHING FILES WILL BE SENT.  NO  OUTBOUND  FILENAME  (AS-NAME)  FACILITY
  1156. /    EXISTS AT THIS TIME.
  1157.  
  1158. /    THE  RECEIVE  COMMAND  ALLOWS  OPTIONAL  DEVICE:   ONLY.   *THE  FILENAME  AND
  1159. /    EXTENSION  ARE  NOT  ALLOWED*.  NAMES OF RECEIVED FILES WILL  BE  MODIFIED  IF
  1160. /    NECESSARY  TO  CONFORM  TO  THE  6.2  FORMAT.   *IMPLEMENTATION RESTRICTION* :
  1161. /    CERTAIN REMOTE  FILENAMES  CONTAINING  NON-ALPHANUMERIC  CHARACTERS  MAY CAUSE
  1162. /    KERMIT-12 TO HASTILY ABORT THE TRANSMISSION AND RETURN TO COMMAND LEVEL.
  1163.  
  1164. /    THE GET COMMAND  ALLOWS  OPTIONAL  DEVICE:    TO  DETERMINE DESTINATION OF THE
  1165. /    INCOMING FILES.  THE  OUTBOUND  FILESPEC  MUST  CONFORM  TO  LOCAL CONVENTIONS
  1166. /    (FILENAME AND EXTENSION ARE NOT  LIMITED  TO  6.2  FORMAT;  THE DEVICE:  FIELD
  1167. /    WILL NOT BE SENT TO THE  REMOTE  KERMIT  UNLESS  IT  IS  ILLEGAL  WITHIN  OS/8
  1168. /    SPECIFICATIONS, SUCH AS TOO MANY DEVICE LETTERS.    IN  THIS CASE, THE DEFAULT
  1169. /    DEVICE DSK:  APPLIES, AND THE ENTIRE "DEVICE"  FIELD  IS  SENT  ALONG WITH ANY
  1170. /    FILENAME  AND EXTENSION).  CERTAIN REMOTE SYSTEMS ARE INCOMPATIBLE  WITH  THIS
  1171. /    IMPLEMENTATION,  AS  IMBEDDED  SPACES  OR  NON-ALPHANUMERIC CHARACTERS ARE NOT
  1172. /    ALLOWED, EVEN  THOUGH  THEY  MAY  BE REQUIRED ON THE REMOTE SYSTEM.  WILD-CARD
  1173. /    CHARACTERS ARE ALLOWED, BUT ONLY AS SPECIFIED IN THE SEND COMMAND ABOVE.
  1174.  
  1175. /    <^X>  OR  <^Z>  CAN BE USED TO ABORT KERMIT TRANSMISSIONS (EVENTUALLY) BUT  IS
  1176. /    NORMALLY  A  SLOW  PROCESS,  SINCE  THE CHECKING IS DONE BY A SOFTWARE TIMEOUT
  1177. /    SCHEME.   AT  THE  PRESENT  TIME,  THERE  IS  NO DISTINCTION BETWEEN THESE THO
  1178. /    CHARACTERS, SO IT  IS NOT POSSIBLE TO ABORT A SINGLE FILE; THE ENTIRE BATCH OF
  1179. /    FILES INVOLVED IN THE TRANSFER IS ABORTED.
  1180.  
  1181. /    DECMATE II/III/III-PLUS CONSIDERATIONS:
  1182.  
  1183. /    FUNCTION KEYS SEND <ESC>  SEQUENCES SPECIFIED BY SLUSHWARE/FIRMWARE.  ALL SOFT
  1184. /    FUNCTION KEYS ARE THEREFORE INEFFECTIVE  (EXCEPT  FOR HOLD SCREEN WHICH ALWAYS
  1185. /    WORKS).
  1186.  
  1187. /    CONNECT MODE RUNS IN 8-BIT MODE.
  1188.  
  1189. /    THE COMPOSE KEY IS ENABLED FOR USE WITH A LOADED COMPOSE TABLE.
  1190.  
  1191. /    ANY VALID DECMATE II/III/III-PLUS CHARACTER SET  IS  ALLOWED  WHILE IN CONNECT
  1192. /    MODE  (MCS  TCS  LINE,  ETC.).    ALL   <ESC>  SEQUENCES  ARE  PASSED  TO  THE
  1193. /    SLUSHWARE/FIRMWARE UNMODIFIED.
  1194.  
  1195. /    KEYBOARD UPPER-CASE LOCK WILL ALWAYS BE AUTOMATICALLY APPLIED UPON RETURN FROM
  1196. /    CONNECT MODE.
  1197. /    DEFINITIONS.                            /017 CJL
  1198.  
  1199.     *200                    /FOR DEFINITIONS    /047 CJL
  1200.  
  1201. /    REMOTE LINE PARAMETERS; SET ONLY ONE AS NECESSARY.        /046 CJL
  1202.  
  1203.     IFNDEF    DEV30    <DEV30=    0>        /USE DEVICE 30/31 VALUES
  1204.     IFNDEF    DEV40    <DEV40=    0>        /USE DEVICE 40/41 VALUES
  1205.     IFNDEF    LEDERLE    <LEDERLE=0>        /USE LEDERLE LABS VALUES
  1206.     IFNDEF    ORIGNAL    <ORIGNAL=0>        /USE ORIGINAL VALUES
  1207.     IFNDEF    SPRINT    <SPRINT=0>        /USE DEVICE 32/33 VALUES
  1208.     IFNDEF    USER    <USER=    0>        /USE USER-DEFINED VALUES
  1209.  
  1210.     REMOTE=    DEV30+DEV40+LEDERLE+ORIGNAL    /SET REMOTE LINE IOT CODE
  1211.     REMOTE=    REMOTE+SPRINT+USER        /SET REMOTE LINE IOT CODE
  1212.  
  1213.     IFZERO    REMOTE    <DEV40=    1>        /DEFAULT TO DEVICE 40/41 VERSION
  1214.  
  1215. /    DEV30 PARAMETERS.
  1216.  
  1217.     IFNZRO    DEV30            <
  1218.  
  1219.     IFNDEF    REC    <REC=    30>        /DEVICE 30 INPUT
  1220.     IFNDEF    SEN    <SEN=    31>        /DEVICE 31 OUTPUT
  1221.  
  1222.                     >
  1223.  
  1224. /    DEV40 PARAMETERS (DEFAULT).
  1225.  
  1226.     IFNZRO    DEV40            <
  1227.  
  1228.     IFNDEF    REC    <REC=    40>        /DEVICE 40 INPUT
  1229.     IFNDEF    SEN    <SEN=    41>        /DEVICE 41 OUTPUT
  1230.  
  1231.                     >
  1232.  
  1233. /    LEDERLE PARAMETERS.                        /038 CJL
  1234.  
  1235.     IFNZRO    LEDERLE            <
  1236.  
  1237.     IFNDEF    REC    <REC=    43>        /DEVICE 43 INPUT
  1238.     IFNDEF    SEN    <SEN=    44>        /DEVICE 44 OUTPUT
  1239.     IFNDEF    GENMSG    <GENMSG=1>        /GENERATE LOCAL HEADER MESSAGE
  1240.     IFNDEF    UMSG    <UMSG=    0>        /DON'T GENERATE USER MESSAGE
  1241.  
  1242.                     >
  1243.  
  1244. /    ORIGNAL PARAMETERS.
  1245.  
  1246.     IFNZRO    ORIGNAL            <
  1247.  
  1248.     IFNDEF    REC    <REC=    33>        /DEVICE 33 INPUT
  1249.     IFNDEF    SEN    <SEN=    34>        /DEVICE 34 OUTPUT
  1250.  
  1251.                     >
  1252. /    SPRINT PARAMETERS.                        /046 CJL
  1253.  
  1254.     IFNZRO    SPRINT            <
  1255.  
  1256.     IFNDEF    REC    <REC=    32>        /DEVICE 32 INPUT
  1257.     IFNDEF    SEN    <SEN=    33>        /DEVICE 33 OUTPUT
  1258.  
  1259.                     >
  1260.  
  1261. /    USER PARAMETERS.
  1262.  
  1263.     IFNZRO    USER            <
  1264.  
  1265.     IFNDEF    XX    <XX=    40>        /DEFAULT TO DEVICE 40
  1266.     IFNDEF    XY    <XY=    41>        /DEFAULT TO DEVICE 41
  1267.     IFNDEF    REC    <REC=    XX>        /DEVICE XX INPUT
  1268.     IFNDEF    SEN    <SEN=    XY>        /DEVICE XY OUTPUT
  1269.     IFNDEF    GENMSG    <GENMSG=1>        /GENERATE LOCAL HEADER MESSAGE
  1270.     IFNDEF    UMSG    <UMSG=    1>        /GENERATE USER MESSAGE
  1271.  
  1272.                     >
  1273.  
  1274. /    REMOTE LINE IOT DEFINITIONS.
  1275.  
  1276. /    RECEIVE DEFINITIONS.
  1277.  
  1278.     RKRBIOT=REC^10+6006            /READ REMOTE, CLEAR FLAG
  1279.     RKSFIOT=REC^10+6001            /SKIP ON REMOTE INPUT FLAG
  1280.  
  1281. /    TRANSMIT DEFINITIONS.
  1282.  
  1283.     RSBIOT=    SEN^10+6003            /SET BAUD RATE FROM AC[8-11]
  1284.     RTLSIOT=SEN^10+6006            /TRANSMIT CHARACTER, CLEAR FLAG
  1285.     RTSFIOT=SEN^10+6001            /SKIP ON TRANSMIT FLAG
  1286.  
  1287. /    CONSOLE TTY: DEFINITIONS.                    /017 CJL
  1288.  
  1289. /    KEYBOARD DEFINITIONS.                        /017 CJL
  1290.  
  1291.     IFNDEF    KEY    <KEY=    03>    /KEYBOARD DEVICE CODE
  1292.  
  1293.     KCCIOT=    KEY^10+6002        /CLEAR CONSOLE KEYBOARD FLAG, AC
  1294.     KRBIOT=    KEY^10+6006        /READ CONSOLE KEYBOARD BUFFER, CLEAR FLAG
  1295.     KRSIOT=    KEY^10+6004        /READ CONSOLE KEYBOARD BUFFER STATIC
  1296.     KSFIOT=    KEY^10+6001        /SKIP ON CONSOLE KEYBOARD FLAG
  1297.  
  1298. /    TELEPRINTER DEFINITIONS.                    /017 CJL
  1299.  
  1300.     IFNDEF    TTY    <TTY=    04>    /TELEPRINTER DEVICE CODE
  1301.  
  1302.     TLSIOT=    TTY^10+6006        /PRINT CHARACTER, CLEAR FLAG
  1303.     TSFIOT=    TTY^10+6001        /SKIP ON TELEPRINTER FLAG
  1304. /    DEFAULT ESCAPE CHARACTER DEFINITION.                /025 CJL
  1305.  
  1306.     IFNDEF    ESCAPE    <ESCAPE="]&37>    /DEFAULT IS CONTROL-]
  1307.  
  1308. /    DEFAULT LOWER-CASE ENABLE DEFINITION.                /030 CJL
  1309.  
  1310.     IFNDEF    LOWER    <LOWER=    0/-40>    /LOWER-CASE IS ALLOWED AS IS
  1311.                     /CHANGE TO -40 IF LOWER-CASE
  1312.                     /SHOULD BE FOLDED TO UPPER-CASE
  1313.  
  1314. /    DEFAULT RETRY COUNT DEFINITION.                    /031 CJL
  1315.  
  1316.     IFNDEF    RETCNT    <RETCNT=5>    /DEFAULT IS FIVE RETRIES
  1317.  
  1318. /    DEFAULT FILE MODE DEFINITION.                    /031 CJL
  1319.  
  1320.     IFNDEF    FMODE    <FMODE=    0177>    /DEFAULT IS ASCII FILE MODE
  1321.                     /4377 IS BINARY FILE MODE
  1322.  
  1323. /    DEFAULT FLOW-CONTROL MODE DEFINITION.                /031 CJL
  1324.  
  1325.     IFNDEF    FLOW    <FLOW=    1>    /DEFAULT IS FLOW-CONTROL ENABLED
  1326.  
  1327. /    DEFAULT ASCII INPUT FILE <^Z> DISPOSITION.            /031 CJL
  1328.  
  1329.     IFNDEF    ICLOSE    <ICLOSE=1>    /ENSURE <^Z> AT ASCII <EOF>
  1330.  
  1331. /    DEFAULT ASCII OUTPUT FILE <^Z> DISPOSITION.            /031 CJL
  1332.  
  1333.     IFNDEF    OCLOSE    <OCLOSE=0>    /<^Z> NOT SENT AT ASCII <EOF>
  1334.  
  1335. /    DEFAULT LOCAL MESSAGE GENERATION DEFINITIONS.            /038 CJL
  1336.  
  1337.     IFNDEF    GENMSG    <GENMSG=1>    /DEFAULT IS TO GENERATE A MESSAGE
  1338.     IFNDEF    UMSG    <UMSG=    0>    /DEFAULT IS NO DUMMY USER MESSAGE
  1339.     IFNDEF    LEDERLE    <LEDERLE=0>    /DEFAULT IS NO LEDERLE MESSAGE
  1340.  
  1341. /    THE NULL MESSAGE WILL BE GENERATED BY DEFAULT.
  1342.  
  1343. /    ECHO DEFINITION.                        /039 CJL
  1344.  
  1345.     IFNDEF    INIECHO    <INIECHO=0>    /DEFAULT IS NO LOCAL ECHO
  1346.  
  1347. /    DEFAULT DECMATE I PORT DEFINITION.                /050 CJL
  1348.  
  1349.     IFNDEF    PORT    <PORT=    0>    /DEFAULT IS PORT ZERO 
  1350.  
  1351. /    DEFAULT BAUD RATE DEFINITION.                    /050 CJL
  1352.  
  1353.     IFNDEF    BRATE    <BRATE=    7>    /DEFAULT IS 1200 BAUD
  1354. /    STATE DEFINITIONS.
  1355.  
  1356.     STDAT=    "D&137            /DATA
  1357.     STACK=    "Y&137            /ACK
  1358.     STNAK=    "N&137            /NAK
  1359.     STSIN=    "S&137            /SEND-INIT
  1360.     STBRK=    "B&137            /BREAK LINK
  1361.     STFIL=    "F&137            /FILENAME HEADER
  1362.     STEOF=    "Z&137            /END OF FILE OR REPLY
  1363.     STERR=    "E&137            /ERROR PACKET
  1364.     STATT=    "A&137            /FILE ATTRIBUTES
  1365.     STRIN=    "R&137            /RECEIVE-INIT
  1366.     STEOT=    "B&137            /BREAK TRANSMISSION
  1367.     STGEN=    "G&137            /KERMIT GENERIC COMMAND
  1368.  
  1369. /    DEFAULT INIT PARAMETERS.
  1370.  
  1371.     DEFCK=    "1&177            /DEFAULT 1 CHARACTER CHECKSUM    /014 CJL
  1372.     DEFEOL=    15+40            /CR IS DEFAULT <EOL>
  1373.     DEFQCTL= "#&177            /"#" IS DEFAULT QCTL
  1374.  
  1375. /    BUFFER DEFINITIONS.                        /014 CJL
  1376.  
  1377.     DECIMAL                /MAKE IT EASIER            /014 CJL
  1378.  
  1379.     DEFMAXL=94            /DEFAULT MAXIMUM PACKET SIZE
  1380.  
  1381.     LINSIZ=    32            /KEYBOARD LINE BUFFER SIZE
  1382.  
  1383.     OCTAL                /BACK TO NORMAL            /014 CJL
  1384.  
  1385.     BUFSIZE=200            /128 CHARACTER RING BUFFERS    /026 CJL
  1386.                     /FOR NO-INTERRUPT CONNECT MODE
  1387. /    CONTROL CHARACTER DEFINITIONS.                    /023 CJL
  1388.  
  1389.     CNTRLA=    "A&37            /<^A> DEFAULT MARK CHARACTER    /023 CJL
  1390.     CNTRLB=    "B&37            /<^B>                /046 CJL
  1391.     CNTRLC=    "C&37            /<^C> PROGRAM EXIT CHARACTER    /023 CJL
  1392.     CNTRLD=    "D&37            /<^D>                /046 CJL
  1393.     CNTRLE=    "E&37            /<^E>                /046 CJL
  1394.     CNTRLF=    "F&37            /<^F>                /046 CJL
  1395.     CNTRLG=    "G&37            /<^G> BELL CHARACTER        /023 CJL
  1396.     CNTRLH=    "H&37            /<^H> BACKSPACE CHARACTER    /023 CJL
  1397.     CNTRLI=    "I&37            /<^I> HORIZONTAL TAB CHARACTER    /043 CJL
  1398.     CNTRLJ=    "J&37            /<^J> LINEFEED CHARACTER    /023 CJL
  1399.     CNTRLK=    "K&37            /<^K> VERTICAL TAB CHARACTER    /046 CJL
  1400.     CNTRLL=    "L&37            /<^L> FORM FEED CHARACTER    /046 CJL
  1401.     CNTRLM=    "M&37            /<^M> CARRIAGE RETURN CHARACTER    /023 CJL
  1402.     CNTRLN=    "N&37            /<^N>                /046 CJL
  1403.     CNTRLO=    "O&37            /<^O> ECHO FLIP CHARACTER    /023 CJL
  1404.     CNTRLP=    "P&37            /<^P> PROGRAM RESTART CHARACTER    /023 CJL
  1405.     CNTRLQ=    "Q&37            /<^Q> OUTPUT RESUME CHARACTER    /023 CJL
  1406.     CNTRLR=    "R&37            /<^R>                /046 CJL
  1407.     CNTRLS=    "S&37            /<^S> OUTPUT WAIT CHARACTER    /023 CJL
  1408.     CNTRLT=    "T&37            /<^T>                /046 CJL
  1409.     CNTRLU=    "U&37            /<^U>                /046 CJL
  1410.     CNTRLV=    "V&37            /<^V>                /046 CJL
  1411.     CNTRLW=    "W&37            /<^W>                /046 CJL
  1412.     CNTRLX=    "X&37            /<^X> FILE ABORT CHARACTER    /044 CJL
  1413.     CNTRLY=    "Y&37            /<^Y>                /046 CJL
  1414.     CNTRLZ= "Z&37            /<^Z> ABORT AND <EOF> CHARACTER /044 CJL
  1415.     DELETE=    177            /<DEL> DELETE OR <RO> CHARACTER    /034 CJL
  1416.     LOWERC=    "C&177+40        /LOWER-CASE C (CLOSE CHARACTER)    /025 CJL
  1417.     UPPERC=    "C&177            /UPPER-CASE C (CLOSE CHARACTER)    /025 CJL
  1418.  
  1419. /    I/O AND FIELD DEFINITIONS.                    /019 CJL
  1420.  
  1421.     BUFFLD=    10            /I/O BUFFER FIELD        /019 CJL
  1422.     DIRFLD=    10            /DIRECTORY LOOKUP BUFFER FIELD    /028 CJL
  1423.     DMIFLD=    10            /DECMATE ONCE-ONLY CODE FIELD    /046 CJL
  1424.     MSGFLD=    10            /TEXT MESSAGE FIELD        /023 CJL
  1425.     PAGCNT=    2            /I/O BUFFER SIZE IN PAGES    /019 CJL
  1426.     PRGFLD=    00            /PROGRAM FIELD            /019 CJL
  1427.     USRFLD=    10            /USR FIELD            /020 CJL
  1428.  
  1429. /    OS/8 MONITOR DEFINITIONS.                    /014 CJL
  1430.  
  1431.     SBOOT=    7600            /MONITOR EXIT LOCATION IS 07600    /014 CJL
  1432.     USR=    7700            /NON-LOCKED USR ENTRY POINT    /035 CJL
  1433. /    USER SERVICE ROUTINE AND HANDLER DEFINITIONS.            /020 CJL
  1434.  
  1435.     CLOSE=    4            /CLOSE TENTATIVE OUTPUT FILE    /020 CJL
  1436.     ENTER=    3            /ENTER TENTATIVE OUTPUT FILE    /020 CJL
  1437.     FETCH=    1            /FETCH HANDLER            /020 CJL
  1438.     INQUIRE=12            /INQUIRE ABOUT HANDLER        /020 CJL
  1439.     LOOKUP=    2            /LOOKUP FILE            /020 CJL
  1440.     RESET=    13            /RESET DEVICE CONTROL WORD TABLE/037 CJL
  1441.     USRIN=    10            /LOCK USR IN CORE        /020 CJL
  1442.     WRITE=    4000            /I/O CALL WRITE BIT        /020 CJL
  1443.  
  1444. /    INSTRUCTION DEFINITIONS.
  1445.  
  1446.     CLCL=    6136            /CLEAR CLOCK FLAG (8/A, ETC.)    /046 CJL
  1447.     CLSK=    6131            /SKIP ON, CLEAR CLOCK FLAG    /046 CJL
  1448.     CLSK8A=    6137            /SKIP ON CLOCK FLAG (8/A, ETC.)    /046 CJL
  1449.     COM=    0017            /COMPLEMENT AC
  1450.     DCAC=    DCA    .        /CURRENT PAGE DCA INSTRUCTION    /047 CJL
  1451.     IAAC=    6171            /"A" REGISTER TO AC
  1452.     IACA=    6167            /AC TO "A" REGISTER
  1453.     ISZC=    ISZ    .        /CURRENT PAGE ISZ INSTRUCTION    /050 CJL
  1454.     JMPC=    JMP    .        /CURRENT PAGE JMP INSTRUCTION    /047 CJL
  1455.     JMPIC=    JMP I    .        /CURRENT PAGE JMP I INSTRUCTION    /047 CJL
  1456.     JMSC=    JMS    .        /CURRENT PAGE JMS INSTRUCTION    /047 CJL
  1457.     JMSIC=    JMS I    .        /CURRENT PAGE JMS I INSTRUCTION    /047 CJL
  1458.     LINC=    6141            /GOTO LINC MODE
  1459.     PDP=    0002            /GOTO PDP-8 MODE
  1460.     PRQ3=    6236            /TYPE THREE PANEL REQUEST    /046 CJL
  1461.     TADC=    TAD    .        /CURRENT PAGE TAD INSTRUCTION    /047 CJL
  1462.     R3L=    7014            /ROTATE AC (NOT LINK) LEFT 3    /046 CJL
  1463.  
  1464. /    NUMERIC LOAD DEFINITIONS.                    /014 CJL
  1465.  
  1466.     NL0000=    CLA            /LOAD AC WITH 0000        /046 CJL
  1467.     NL0001=    CLA IAC            /LOAD AC WITH 0001        /014 CJL
  1468.     NL0002=    CLA CLL CML RTL        /LOAD AC WITH 0002        /014 CJL
  1469.     NL0003=    CLA STL IAC RAL        /LOAD AC WITH 0003 (8/I ON UP)    /046 CJL
  1470.     NL0004=    CLA CLL IAC RTL        /LOAD AC WITH 0004 (8/I ON UP)    /046 CJL
  1471.     NL0006=    CLA STL IAC RTL        /LOAD AC WITH 0006 (8/I ON UP)    /046 CJL
  1472.     NL0010=    CLA IAC RAL RAR        /LOAD AC WITH 0010 (6120)    /024 CJL
  1473.     NL0100=    CLA IAC BSW        /LOAD AC WITH 0100 (8/E ON UP)    /024 CJL
  1474.     NL3776=    CLA CLL CMA RAR RAL    /LOAD AC WITH 3776 (8/I OR 8/L)    /024 CJL
  1475.     NL3777=    CLA CLL CMA RAR        /LOAD AC WITH 3777        /046 CJL
  1476.     NL4000=    CLA CLL CML RAR        /LOAD AC WITH 4000        /014 CJL
  1477.     NL5777=    CLA CLL CMA RTR        /LOAD AC WITH 5777        /046 CJL
  1478.     NL6000=    CLA STL IAC RTR        /LOAD AC WITH 6000 (8/I ON UP)    /046 CJL
  1479.     NL7775=    CLA CLL CMA RTL        /LOAD AC WITH 7775        /014 CJL
  1480.     NL7776=    CLA CLL CMA RAL        /LOAD AC WITH 7776        /014 CJL
  1481.     NL7777=    CLA CMA            /LOAD AC WITH 7777        /014 CJL
  1482. /    DECMATE I COMMUNICATIONS PORT DEFINITIONS.            /050 CJL
  1483.  
  1484.     IPORT0=    30        /COMMUNICATIONS PORT 0 INPUT DEVICE CODE
  1485.  
  1486.     RKFL0=    IPORT0^10+6000    /SET COMMUNICATIONS PORT 0 INPUT FLAG
  1487.     RKSF0=    IPORT0^10+6001    /SKIP ON, CLEAR COMMUNICATIONS PORT 0 INPUT FLAG
  1488.     RKCC0=    IPORT0^10+6002    /CLEAR AC
  1489.     RKIE0=    IPORT0^10+6005    /PORT 0 INPUT INTERRUPT ENABLE PER AC[11]
  1490.     RKRB0=    IPORT0^10+6006    /READ COMMUNICATIONS PORT 0 INTO AC
  1491.  
  1492.     OPORT0=    31        /COMMUNICATIONS PORT 0 OUTPUT DEVICE CODE
  1493.  
  1494.     RTFL0=    OPORT0^10+6000    /SET COMMUNICATIONS PORT 0 OUTPUT FLAG
  1495.     RTSF0=    OPORT0^10+6001    /SKIP ON, CLEAR COMMUNICATIONS PORT 0 OUTPUT FLAG
  1496.     RTCF0=    OPORT0^10+6002    /NOP
  1497.     RTIE0=    OPORT0^10+6005    /PORT 0 OUTPUT INTERRUPT ENABLE PER AC[11]
  1498.     RTLS0=    OPORT0^10+6006    /WRITE COMMUNICATIONS PORT 0 FROM AC
  1499.  
  1500.     IPORT1=    34        /COMMUNICATIONS PORT 1 INPUT DEVICE CODE
  1501.  
  1502.     RKFL1=    IPORT1^10+6000    /SET COMMUNICATIONS PORT 1 INPUT FLAG
  1503.     RKSF1=    IPORT1^10+6001    /SKIP ON, CLEAR COMMUNICATIONS PORT 1 INPUT FLAG
  1504.     RKCC1=    IPORT1^10+6002    /CLEAR AC
  1505.     RKIE1=    IPORT1^10+6005    /PORT 1 INPUT INTERRUPT ENABLE PER AC[11]
  1506.     RKRB1=    IPORT1^10+6006    /READ COMMUNICATIONS PORT 1 INTO AC
  1507.  
  1508.     OPORT1=    35        /COMMUNICATIONS PORT 1 OUTPUT DEVICE CODE
  1509.  
  1510.     RTFL1=    OPORT1^10+6000    /SET COMMUNICATIONS PORT 1 OUTPUT FLAG
  1511.     RTSF1=    OPORT1^10+6001    /SKIP ON, CLEAR COMMUNICATIONS PORT 1 OUTPUT FLAG
  1512.     RTCF1=    OPORT1^10+6002    /NOP
  1513.     RTIE1=    OPORT1^10+6005    /PORT 1 OUTPUT INTERRUPT ENABLE PER AC[11]
  1514.     RTLS1=    OPORT1^10+6006    /WRITE COMMUNICATIONS PORT 1 FROM AC
  1515.  
  1516.     PCON=    36        /PORT STATUS AND CONTROL DEVICE CODE
  1517.  
  1518.     SMFL=    PCON^10+6000    /SET MODEM CHANGE FLAG
  1519.     MFSK=    PCON^10+6001    /SKIP ON, CLEAR MODEM CHANGE FLAG
  1520.     WCON0=    PCON^10+6002    /WRITE COMMUNICATIONS PORT 0 CONTROL REGISTER
  1521.     PSR=    PCON^10+6003    /READ PORT STATUS REGISTER
  1522.     PMR=    PCON^10+6004    /READ PORT MODEM REGISTER
  1523.     MFIE=    PCON^10+6005    /LOAD MODEM CHANGE INTERRUPT ENABLE PER AC[11]
  1524.     WCON1=    PCON^10+6006    /WRITE COMMUNICATIONS PORT 1 CONTROL REGISTER
  1525.     RACD=    PCON^10+6007    /RESET ACTIVE COMMUNICATIONS PORT PER AC[0]
  1526. /    DECMATE II, ETC. COMMUNICATIONS PORT DEFINITIONS.        /046 CJL
  1527.  
  1528.     PORTIN=    30        /COMMUNICATIONS PORT INPUT DEVICE CODE
  1529.  
  1530.     IFL=    PORTIN^10+6000    /SET COMMUNICATIONS PORT INPUT/OUTPUT FLAG
  1531.     ISF=    PORTIN^10+6001    /SKIP ON, CLEAR COMMUNICATIONS PORT INPUT/OUTPUT FLAG
  1532.     ICF=    PORTIN^10+6002    /NOP (CLEAR THE AC?)
  1533.     INOP1=    PORTIN^10+6003    /(NOP?)
  1534.     IRS=    PORTIN^10+6004    /READ COMMUNICATIONS PORT RECEIVE BUFFER
  1535.     IIE=    PORTIN^10+6005    /COMMUNICATIONS PORT I/O INTERRUPT ENABLE PER AC[11]
  1536.     IRB=    PORTIN^10+6006    /READ COMMUNICATIONS PORT RECEIVE BUFFER
  1537.     INOP2=    PORTIN^10+6007    /(NOP?)
  1538.  
  1539.     PORTOUT=31        /COMMUNICATIONS PORT OUTPUT DEVICE CODE
  1540.  
  1541.     DUMBFL=    PORTOUT^10+6000    /SET COMMUNICATIONS PORT DUMMY FLAG
  1542.     DUMBSF=    PORTOUT^10+6001    /SKIP ON, CLEAR COMMUNICATIONS PORT DUMMY FLAG
  1543.     DUMBCF=    PORTOUT^10+6002    /NOP (CLEAR THE AC?)
  1544.      ONOP1=    PORTOUT^10+6003    /(NOP?)
  1545.     OPC=    PORTOUT^10+6004    /LOAD COMMUNICATIONS PORT TRANSMIT BUFFER
  1546.     DUMBIE=    PORTOUT^10+6005    /COMMUNICATIONS PORT DUMMY INTERRUPT ENABLE PER AC[11]
  1547.     OLS=    PORTOUT^10+6006    /LOAD COMMUNICATIONS PORT TRANSMIT BUFFER
  1548.     ONOP2=    PORTOUT^10+6007    /(NOP?)
  1549.  
  1550.     PORTCON=36        /COMMUNICATIONS PORT CONTROL DEVICE CODE
  1551.  
  1552.     MFL=    PORTCON^10+6000    /SET MODEM CHANGE FLAG
  1553.     MSF=    PORTCON^10+6001    /SKIP ON, CLEAR MODEM CHANGE FLAG
  1554.     MLC=    PORTCON^10+6002    /LOAD MODEM CONTROL REGISTER
  1555.     MSB=    PORTCON^10+6003    /LOAD BAUD RATE REGISTER
  1556.     MRS=    PORTCON^10+6004    /READ MODEM STATUS REGISTER
  1557.     MIE=    PORTCON^10+6005    /MODEM CHANGE INTERRUPT ENABLE PER AC[11]
  1558.     MPSCC=    PORTCON^10+6006    /ACCESS MULTIPROTOCOL SERIAL COMMUNICATIONS CONTROLLER
  1559.     MPRESET=PORTCON^10+6007 /RESET MULTIPROTOCOL SERIAL COMMUNICATIONS CONTROLLER
  1560. /    MISCELLANEOUS DEFINITIONS.                    /014 CJL
  1561.  
  1562. /    STATIC DATE CALCULATIONS.                    /024 CJL
  1563.  
  1564. /    THESE EQUATIONS CAUSE PRINTABLE  TEXT OF THE DATE PARTICULARS, WHICH ARE GIVEN
  1565. /    IN OS/8 INTERNAL FORMAT.  PROGRAM MAINTAINENCE REQUIRES THE UPDATE OF VERSION,
  1566. /    REVISION, REVDATE, AND REVDGRP.  REVDATE  AND  REVDGRP SHOULD BE OBTAINED FROM
  1567. /    THE SYSTEM WHEN RELEASING A NEW VERSION  AFTER  FIRST  CORRECTLY  INVOKING THE
  1568. /    SYSTEM DATE COMMAND.
  1569.  
  1570. /    VERSION=[ANY NUMBER IN THE RANGE 00-143 (DECIMAL 00-99)]
  1571.  
  1572. /    REVISIO=[ANY SIX-BIT ALPHA (A-Z); DO NOT FORGET &77]
  1573.  
  1574. /    REVDATE=[THE CONTENTS OF 17666 (DATE WORD)]
  1575.  
  1576. /    REVDGRP=[THE CONTENTS OF 07777 (ONLY BITS[3-4] ARE USED)]
  1577.  
  1578.  
  1579.  
  1580.     IFNDEF    REVDATE    <REVDATE=4464>    /REVISION DATE (LOCATION 17666)
  1581.  
  1582.     IFNDEF    REVDGRP    <REVDGRP=0400>    /REVISION 8 YEAR DATE GROUP (LOCATION 07777)
  1583.  
  1584.     IFNDEF    REVISIO    <REVISIO="G&77>    /REVISION OF KERMIT-12
  1585.  
  1586.     IFNDEF    VERSION    <VERSION=12>    /VERSION OF KERMIT-12
  1587.  
  1588.  
  1589.     DAY=    REVDATE&370%10        /REVISION DAY
  1590.  
  1591.     DGROUP=    REVDGRP&600%20        /REVISION DATE GROUP (WHICH 8 YEARS)
  1592.  
  1593.     MONTH=    REVDATE&7400%400    /REVISION MONTH
  1594.  
  1595.     YEAR=    REVDATE&7+DGROUP+106    /REVISION YEAR (SINCE 1900)
  1596.