1 / KERMIT FOR DEC 12-BIT MACHINES 2 3 / LAST EDIT: 10-NOV-1997 21:43:00 DJG 4 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 / 053 10-NOV-1997 ALLOW CONSOLE TO BE USED FOR TRANSFER 61 / DAVID GESSWEIN (DJG) 62 / IF IOCON IS DEFINED THEN ABORT CHAR TEST (CTLCTST) AND PRINTING 63 / OF MESSAGES DURING FILE TRANSFER WILL BE SUPPRESSED SO THAT 64 / THE CONSOLE CAN BE USED FOR THE DATA TRANSFER ALSO. 65 / USER=1, XX=03, XY=04 MUST ALSO BE SET 66 67 / 052 06-SEP-1990 BUG FIX. CHARLES LASNER (CJL) 68 69 / SENDING A FILE WHICH EXACTLY FILLS THE LAST DATA PACKET AT THE 70 / END OF THE FILE WILL CAUSE THE PACKET TO BE SENT TWICE. THE 71 / ROUTINE DIDN'T CHECK FOR AN EMPTY OUTPUT BUFFER AT EOF. 72 73 / 051 29-AUG-1990 BUG FIX. CJL 74 75 / PDP-8/A NOT IDENTIFIED CORRECTLY IN CPUID ROUTINE. THE UPDATED 76 / PC IS WHAT IS LOADED INTO THE AC WHEN 7016 IS EXECUTED ON THE 77 / KK-8/A CPU. THE ROUTINE WAS CHECKING FOR THE NON-UPDATED VALUE. 78 / ALSO NEW DOCUMENTATION FOR PRE-CLEARING MEMORY FOR BENEFIT OF 79 / ENCODED BINARY FILES. 80 / 050 06-SEP-1989 DECMATE I SUPPORT, ETC. CJL 81 82 / THIS EDIT IMPLEMENTS DECMATE I SUPPORT USING THE DP278-A OR -B. 83 / A NEW CONDITIONAL 'PORT' SELECTS WHICH PORT IS TO BE USED. IF 84 / KERMIT-12 IS RUN ON DECMATE I (WHILE NOT CONFIGURED FOR SERIAL 85 / PRINTER PORT COMMUNICATIONS; SEE EDIT 048.) THEN REMOTE 86 / COMMUNICATIONS TAKES PLACE ON THE PORT SELECTED AT ASSEMBLY TIME 87 / ('PORT=0' OR 'PORT=1'). ADDED BAUD RATE PARAMETER 'BRATE' TO 88 / SELECT REMOTE COMMUNICATIONS BAUD RATE FROM THE STANDARD TABLE; 89 / DEFAULTS TO 1200 BAUD ('BRATE=7'). 90 91 / 049 30-AUG-1989 REMOTE FLOW CONTROL, ETC. CJL 92 93 / THIS EDIT IMPLEMENTS FLOW CONTROL SUPPORT (IF FLOW CONTROL IS 94 / ENABLED) FOR THE REMOTE LINE WHILE SENDING PACKETS TO THE REMOTE 95 / KERMIT REGARDLESS OF STATE. PREVIOUSLY, FLOW CONTROL ONLY 96 / APPLIED TO CONNECT MODE. LOCAL FLOW CONTROL (TOWARDS THE REMOTE 97 / KERMIT) IS UNNECESSARY AS LOCAL BUFFERS FOR REMOTE INPUT ARE 98 / ALWAYS AVAILABLE. CERTAIN ROUTINE CHANGES MADE FOR BENEFIT OF 99 / DECMATE I SUPPORT IN A SUBSEQUENT EDIT. 100 101 / 048 24-AUG-1989 DECMATE II, ETC. SUPPORT. CJL 102 103 / ONCE-ONLY CODE ADDED TO IMPLEMENT DECMATE II, ETC. REMOTE LINE 104 / SUPPORT ON SERIAL COMMUNICATIONS PORT. SELECTED PORT IS 105 / INDICATED ON OPENING BANNER IF OPERATING ON DECMATE. 106 107 / THIS EDIT PROVIDES BASIC SUPPORT OF THE DECMATE II COMMUNICATIONS PORT AS AN 108 / AUTOMATIC FEATURE OF THE STANDARD RELEASE OF K12MIT. AUTOMATIC DETECTION OF 109 / DECMATE II, ETC. HARDWARE IS PERFORMED UNLESS THE PDP-8-TYPE REMOTE LINE 110 / SUPPORT IS ASSEMBLED FOR THE SERIAL PRINTER AS THE REMOTE LINE ('SPRINT' IS 111 / SET OR EQUIVALENT). 112 113 / THIS EDIT INCORPORATES ALL OF THE INFORMATION TAKEN FROM VARIOUS SOURCES 114 / REGARDING DECMATE PORT INITIALIZATION, ETC. EVERY ATTEMPT HAS BEEN MADE TO 115 / COMPLETELY SET ALL APPROPRIATE REGISTERS, ETC. FOR DECMATE II, III, III+ 116 / OPERATION. NO SUPPORT EXISTS FOR THE DECMATE III BUILT-IN MODEM OPTION, AS 117 / EXPLICIT DOCUMENTATION IS NOT AVAILABLE (SOME OF THE INITIALIZATION CODE IS 118 / APPARENTLY USED TO DISABLE THE MODEM). THESE ROUTINES ARE ONLY KNOWN TO WORK 119 / ON THE DECMATE II, AS THE III (ESPECIALLY WITH OPTIONAL MODEM) AND THE III+ 120 / HAVEN'T BEEN AVAILABLE TO THE AUTHOR FOR TESTING. THE INITIALIZATION CODE 121 / WILL BE UPDATED LATER TO INCLUDE PANEL REQUESTS, ETC. TO CORRECT ANY 122 / PROBLEMS, ETC. DECMATE-SPECIFIC FEATURES (SUCH AS SETUP COMMANDS) WILL BE 123 / ADDED LATER AND ENABLED FROM THESE ROUTINES. 124 125 / THIS EDIT INCORPORATES NON-INTERRUPT ROUTINES WHICH HAVE BEEN TESTED AT THE 126 / MAXIMUM COMMUNICATIONS SPEED OF THE DECMATE II (19200 BAUD). THEY WILL 127 / SUFFICE FOR ALL KERMIT IMPROVEMENTS SHORT OF SLIDING WINDOWS AT WHICH TIME 128 / INTERRUPT-DRIVEN I/O WILL BE REQUIRED. (INTERRUPT-DRIVEN I/O IS ILLEGAL ON 129 / CERTAIN OS/8 SYSTEMS WHERE INTERRUPTS ARE HARMFUL TO THE SYSTEM OR NON-SYSTEM 130 / HANDLERS.) 131 / 047 21-AUG-1989 CODE CLEANUP. CJL 132 133 / STREAM-LINED CONNECT MODE ROUTINES FOR MINIMUM USE OF IOTS. THIS 134 / IS IN PREPARATION FOR EVENTUAL DECMATE II OPERATION, AND TO 135 / MINIMIZE K12PCH PATCH FILE SIZE. CERTAIN NON-CONNECT ROUTINES 136 / MOVED TO FACILIATE CONNECT ROUTINE REORGANIZATION. 137 138 / 046 15-AUG-1989 CODE CLEANUP. CJL 139 140 / ADDED NEW (NON-CONNECT) MODE COMMUNICATIONS ROUTINES FOR EVENTUAL 141 / DECMATE USE. ELIMINATION OF 'IREM' AND 'IREMW' ROUTINES IN FAVOR 142 / OF 'COMIN'. ELIMINATION OF 'OREM' IN FAVOR OF 'COMOUT'. ADDED 143 / STATUS UPDATE ROUTINE ('UPSTATUS') FOR EVENTUAL DECMATE II, ETC. 144 / USAGE. ELIMINATED PDP-8, DECMATE I, DECMATE II CONDITIONALS. 145 / REORGANIZED SERIAL LINE CONDITIONALS AND ADDED NEW 'SPRINT' 146 / PARAMETER FOR SERIAL PRINTER PORT USAGE AS COMMUNICATIONS PORT. 147 / ADDED ONCE-ONLY CODE ADDED TO AUTOMATICALLY RECOGNIZE DECMATE I 148 / AND II OPERATION UNLESS ASSEMBLED FOR REMOTE COMMUNICATIONS ON 149 / SERIAL PRINTER PORT ('SPRINT' SET). UPDATED K12PCH.PAL TO 150 / CORRESPOND TO NEW DEFINITIONS. DEFINED EVENTUALLY NEEDED 151 / COMMUNICATIONS PORT INSTRUCTIONS FOR DECMATE II; ACTUAL DECMATE 152 / II OPERATION WILL BE DEFINED IN A SUBSEQUENT EDIT. DOCUMENTED 153 / NEW LOADING AND SAVING INSTRUCTIONS FOR K12MIT TO ALLOW FOR 154 / ONCE-ONLY CODE IN 10000-11777 WITHOUT SWAPPING THE CODE OUT FOR 155 / THE USR. THIS ELIMINATES OVERHEAD WHEN LOADING K12MIT, BUT IS 156 / DIFFERENT FROM THE FORMER INSTRUCTIONS WHICH ASSUMED NO OTHER 157 / USAGE OF 10000-11777 OTHER THAN THE (LOCKED-IN) USR. 158 159 / THIS EDIT PROVIDES THE FRAMEWORK FOR AUTOMATIC DETECTION OF PROGRAM EXECUTION 160 / OF K12MIT ON ANY MEMBER OF THE DECMATE FAMILY (I, II, III, III+). WHEN 161 / 6120-TYPE CPU DETECTION OCCURS, THE DECMATE I OR II-TYPE COMMUNICATIONS PORT 162 / INITIALIZE CODE IS AUTOMATICALLY SELECTED AS NECESSARY UNLESS THE PDP-8-TYPE 163 / ROUTINES ARE ASSEMBLED (WITH 'SPRINT' SET OR EQUIVALENT USER SETTINGS, ETC.) 164 / FOR THE VT-78-TYPE PRINTER PORT (32/33), IN WHICH CASE THE COMMUNICATIONS IS 165 / DONE VIA THE PRINTER PORT ON THE DECMATE (WHICH IS ALMOST PDP-8 COMPATIBLE AND 166 / IS ACCOMODATED AS SUCH). 167 168 / SUBSEQUENT EDITS SHOULD PROVIDE FOR A DECMATE I PARAMETER TO CONTROL THE PORT 169 / SELECTION, AS THERE ARE AT LEAST TWO VARIANT OPTIONS BOARDS (DP-278A AND 170 / DP-278B) EACH CONSISTING OF TWO PORTS. 171 / 045 12-AUG-1989 BUG FIX. CJL 172 173 / FINISH, GET, AND RECEIVE COMMANDS FAIL TO ABORT PROPERLY 174 / (ESPECIALLY AFTER THE SEND COMMAND HAS BEEN USED), AS THE CURRENT 175 / OPERATING MODE ('KMODE') IS NEVER PROPERLY SET, OR IS SET AFTER 176 / SEVERAL PACKETS HAVE BEEN SENT. EACH COMMAND NOW SETS ITS OWN 177 / OPERATING MODE BEFORE INITIATING ANY PACKETS. 178 179 / 044 11-AUG-1989 CODE CLEANUP. CJL 180 181 / CHANGED 'CCMSG' TO 'ABMSG' WITH CLEARER MESSAGE. CHANGED 182 / 'CCFLAG' TO 'ABFLAG' FOR CONSISTENCY. CHANGED ABORT CHARACTER 183 / FROM <^C> TO CHOICE OF <^X> OR <^Z> FOR CONSISTENCY. ELIMINATED 184 / 'ITTY' AND 'ITTYW' ROUTINES BY USING 'CTLCTST' AND 'INPUT' 185 / ROUTINES ALREADY AVAILABLE A/O EDIT 043. ELIMINATED 'TCHAR' IN 186 / FAVOR OF 'INCHAR' AVAILABLE A/O EDIT 043. 187 188 / 043 07-AUG-1989 CODE CLEANUP, ETC. CJL 189 190 / REWRITE OF CONSOLE SUPPORT ROUTINES INCLUDING FORCED-ECHO OUTPUT 191 / AND COLUMN COUNT FOR SIMULATION IN PREPARATION FOR IMPENDING 192 / USER-INTERFACE REWRITE. 'SCRIBE', 'LININP', AND 'ESCPRNT' 193 / ROUTINES NOW CALL "P7ECHO" ROUTINE TO ENSURE PRINTING OF CRUCIAL 194 / MESSAGES. 195 196 / 042 13-JUN-1989 CODE CLEANUP. CJL 197 198 / FIXED VARIOUS NAK-RELATED BUGS AND SEND-INIT PROBLEMS AS IN K278 199 / (SOME OF THE K278 STUFF IS DEFICIENT!). CALCULATION OF PROPER 200 / SEQUENCE NUMBER FOR NAK CORRECTED OVER FORMER (K08MIT AND K278) 201 / VERSIONS. ADDED ERROR MESSAGE FOR FULL-DISK PROBLEM. 202 203 / 041 12-MAY-1989 BUG FIX. CJL 204 205 / VARIOUS VERSIONS (DECMATE) WON'T FUNCTION REMOTELY WHILE KL-8 206 / VERSIONS WORK FINE. ADDED REMOTE LINE READ IOT TO INITIALIZE 207 / REMOTE LINE AT STARTUP TIME FOR VERSIONS REQUIRING THIS. 208 / CORRESPONDING CHANGES IN PATCH FILE MADE FOR REMOTE LINE READ IOT 209 / IN TWO PLACES. 210 / 040 07-MAR-1989 COSMETIC CLEANUP. CJL 211 212 / CLEANUP OF EDIT HISTORY AND OTHER COMMENTS. 213 214 / 039 21-MAY-1988 CODE CLEANUP. CJL 215 216 / ADDED VARIABLE 'INIECHO' TO ALLOW DEFAULT CONNECT-MODE STATE TO 217 / BE HALF-DUPLEX ("SET LOCAL-ECHO ON"). MODIFIED INPUT SERVICE 218 / ERROR ADDRESSES TO SIMPLIFY ERROR TABLES. 219 220 / 038 19-MAY-1988 CODE CLEANUP. CJL 221 222 / ELIMINATED TRAILER FILES DURING ASSEMBLY BY CREATING VARIABLES 223 / 'GENMSG' AND 'UMSG.' THIS ALLOWS THE HEADER FILE (PARAM.PA) TO 224 / CONTAIN THE LOCAL MESSAGE TEXT WITHOUT SUBSEQUENT OVERLAY (WHICH 225 / WAS WHY THERE FORMERLY WAS A TRAILER FILE CAPABILITY). OVERLAY 226 / BY K12PCH.BN WILL DEFAULT TO CREATION OF A DUMMY USER MESSAGE 227 / (WITHIN K12PCH) ENCOURAGING LOCAL CUSTOMIZATION. K12MIT.BN WILL 228 / CONTAIN A NULL MESSAGE BY DEFAULT UNLESS CUSTOMIZED IN PARAM.PA. 229 230 / 037 21-JAN-1988 BUG FIX. CJL 231 232 / RESET OS/8 DEVICE CONTROL WORD TABLE TO DELETE TENTATIVE FILE IN 233 / CASE OF PRIOR INPUT SERVICE ERROR. 234 235 / 036 20-JAN-1988 BUG FIX. CJL 236 237 / RESET 'OFFLG' WHEN DOING INPUT SERVICE IN CASE PRIOR ERRORS LEAVE 238 / THE FLAG SET. 239 240 / 035 14-JAN-1988 USR RESIDENT CODING. CJL 241 242 / CALLS TO USR NOW USE 10200 INSTEAD OF 17700. NO SWAP OVERHEAD 243 / WHEN OPENING OR CLOSING FILES. 244 245 / 034 13-JAN-1988 CODE CLEANUP. CJL 246 247 / ALL EIGHT-BIT ORIENTED CONSOLE CODE ELIMINATED; NOW IGNORES 248 / PARITY (JUST SEVEN BITS). 249 250 / 033 12-JAN-1988 CODE CLEANUP. CJL 251 252 / 'TTYOUT' AND 'OTTY' ROUTINES ELIMINATED; NOW USES 'P7CH' FOR ALL 253 / CONSOLE OUTPUT (EXCEPT FOR CONNECT MODE). 254 255 / 032 12-JAN-1988 CODE CLEANUP. CJL 256 257 / VARIOUS ROUTINES REWRITTEN TO ELIMINATE DEPENDENCIES ON CPU TYPE 258 / BEYOND THE CLASSIC PDP-8. 259 / 031 11-JAN-1988 CODE CLEANUP. CJL 260 261 / ELIMINATED 'RTDISP' AND CHANGED CALLING CONVENTION FOR DISPATCH 262 / ROUTINE. ALL CALLERS NOW LOCAL OR VIA LOCAL POINTERS. ADDED 263 / SEVERAL CONDITIONAL PARAMETERS AND LABELS FOR BENEFIT OF 264 / K12PCH.PAL. 265 266 / 030 05-JAN-1988 CODE CLEANUP. CJL 267 268 / CHANGED LOWER/UPPER CASE CONDITIONAL ASSEMBLY PARAMETERS AND MORE 269 / EFFICIENT CODE. 270 271 / 029 21-DEC-1987 CODE CLEANUP. CJL 272 273 / CHANGED CALLING CONVENTIONS FOR 'SCRIBE' AND SIMILAR ROUTINES AND 274 / REWROTE 'COMMAND' ROUTINE. 275 276 / 028 15-DEC-1987 CODE CLEANUP. CJL 277 278 / COMPLETE REWRITE OF FILE LOOKUP ROUTINE. 'LUKUP' NOW USES FIELD 279 / ONE BUFFER AND ITS OWN AUTO-INDEX REGISTER CONSERVING PROGRAM 280 / SPACE. 281 282 / 027 05-DEC-1987 CODE CLEANUP. CJL 283 284 / CHANGED DISPATCH ('DISPA0') ROUTINE TO USE 'SRCHTABLE' ROUTINE. 285 / ALL CALLS MADE COMPATIBLE. ELIMINATED 'SCANC' CODE. ELIMINATED 286 / CODE WITHIN 'DPARS' ROUTINE. 'LUKUP' ROUTINE NOW DOES ITS OWN 287 / DISK I/O. ELIMINATED 'BLKIN' ROUTINE. 288 289 / 026 27-NOV-1987 NEW CONNECT MODE CODE. CJL 290 291 / TOTAL REWRITE OF ALL CONNECT MODE CONSOLE AND REMOTE INPUT AND 292 / OUTPUT TERMINAL ROUTINES. CONNECT IS NOW FULLY BUFFERED IN ALL 293 / DIRECTIONS. IF FLOW CONTROL IS OBEYED, ANY BAUD RATE CAN BE 294 / ACCOMODATED BOTH LOCALLY AND REMOTE (UP TO 9600 BAUD TESTED, 295 / SHOULD WORK TO AT LEAST 19200 BAUD BY INSPECTION). TESTED WITH 296 / FAST VT-100 EMULATOR CONSOLE TO PROVE ESCAPE SEQUENCES ARE NOT 297 / DROPPED WHEN LOCAL TERMINAL IS FASTER THAN REMOTE LINE. LIMITED 298 / USE OF SUBROUTINES TO IMPROVE HIGH BAUD RATE OPERATION. ADDED 299 / TABLE-DRIVEN ERROR EXIT ROUTINE FOR SEND ROUTINES. 300 301 / THIS EDIT PROVIDES FULLY BUFFERED INPUT/OUTPUT ROUTINES FOR BOTH LOCAL AND 302 / REMOTE PORTS. NO INTERRUPTS ARE USED FOR MAXIMUM COMPATIBILITY WITH OS/8 303 / DEVICES (SOME OF WHICH ARE INTOLERANT OF INTERRUPTS, SUCH AS TD-8/E). REMOTE 304 / FLOW CONTROL (IF ENABLED) WILL SIGNAL BUFFER FILLING VIA WHEN THE BUFFER 305 / IS 3/4 FULL. WHEN THE BUFFER REACHES 1/4 FULL, THE REMOTE WILL BE SENT 306 / TO ALLOW FURTHER OUTPUT. REMOTE FLOW CONTROL IS SUPPORTED IN BOTH DIRECTIONS; 307 / LOCAL FLOW CONTROL IS FROM THE KEYBOARD ONLY. 308 309 / WHILE THE CONSOLE OUTPUT IS PAUSED BY , THE BUFFER WILL FILL WITH OUTPUT 310 / CHARACTERS. WHEN THE USER RELEASES THE CONSOLE WITH , THE BUFFER WILL 311 / RAPIDLY EMPTY (ASSUMING THE CONSOLE IS FASTER THAN THE REMOTE LINE). THIS 312 / ALLOWS THE USER TO PAUSE THE CONSOLE WITHOUT BACKING UP THE REMOTE LINE UP TO 313 / THE LIMITS OF BOTH LOCAL OUTPUT AND REMOTE INPUT BUFFERS. 314 / 025 24-NOV-1987 NEW FEATURES AND CODE CLEANUP. CJL 315 316 / PROPER INTERRUPT SETUP FOR <^C> AND <^P>, ECHO STATE. ALL 317 / MESSAGES IN NEW FORMAT, (SOME NEW ONES HAVE BETTER CONTENT). 318 / ELIMINATED 'PRI6B' AND 'REM6B' ROUTINES. NEW AND IMPROVED INPUT 319 / SERVICE ERROR CODE MOVED TO PROPER PAGE. REWROTE CONNECT 320 / ROUTINES TO ALLOW NON-INTERRUPT BUFFERED I/O LATER. CREATED NEW 321 / VARIABLE 'ESCHAR' AND PARAMETER 'ESCAPE' TO SET DEFAULT ESCAPE 322 / CHARACTER. ESCAPE CHARACTER CAN BE CHANGED IN MEMORY AND WILL BE 323 / USED CORRECTLY BY ALL ROUTINES. ADDED 'ESCPRNT' ROUTINE TO 324 / HANDLE ALL CASES (INCLUDING NON-CONTROL CHARACTERS). DEFAULT 325 / ESCAPE PARAMETER VALUE COMPATIBLE WITH K08V2, BUT IS A USER 326 / PARAMETER, CONFIGURED AS OTHER PARAMETERS DEFINED IN EDIT 017. 327 / CREATED ESCAPE FUNCTION TABLE FOR EXPANSION LATER. NOW SUPPORTS 328 / ESCAPE C(LOSE) IN UPPER OR LOWER CASE, ESCAPE ESCAPE (SEND ONE 329 / ESCAPE CHARACTER). ALL BAD ESCAPE COMMANDS WILL ISSUE 330 / CHARACTER TO WARN USER THAT COMMAND IS ILLEGAL AND OTHERWISE WAS 331 / IGNORED. CREATED NEW VARIABLE 'ECHOFLAG' TO ALLOW LOCAL ECHO IN 332 / CONNECT MODE. 333 334 / 024 19-NOV-1987 NEW FEATURES. CJL 335 336 / NEW STARTUP MESSAGES AND HELP METHOD VIA COMMAND. CPU TYPE 337 / IDENTIFICATION TO ALLOW FUTURE VERSIONS TO CHECK FOR QUIRKS AND 338 / MODEL DEPENDENCIES. THE DEFAULT PROMPT REFLECTS THE ACTUAL CPU 339 / TYPE (THUS "KERMIT-12>" ON PDP-12). VERSION, REVISION, AND DATE 340 / NOW EQUATED SYMBOLS. 341 342 / 023 18-NOV-1987 NEW CONSOLE I/O PACKAGE. CJL 343 344 / NEW CONSOLE I/O ROUTINES WITH DC1/DC3 SUPPORT FOR CONSOLE 345 / TERMINAL MESSAGES NOT ASSOCIATED WITH ANY REMOTE ACTIVITY (NOT TO 346 / BE USED DURING CONNECT MODE). USES FIELD ONE FOR MESSAGE TEXT TO 347 / ALLOW FOR MORE PROGRAM SPACE. THE MESSAGES ARE NOW GIVEN IN 348 / UPPER/LOWER SIXBIT FORMAT. SUPPORT FOR <^P> RESTART AND <^O> TO 349 / FLIP ECHO. UPPER-CASE CAN BE FORCED BY CHANGING A VARIABLE 350 / ('UPONLY'). 351 352 / 022 17-NOV-1987 BUG FIX. CJL 353 354 / EXTRA-LONG INIT PACKETS CORRUPTING PROGRAM; NOW CHECKS FOR AND 355 / IGNORES EXTRA CAPABILITIES BEYOND 'CAPAS' BYTE. 356 / 021 17-NOV-1987 CODE CLEANUP. CJL 357 358 / REWROTE TENTATIVE OUTPUT FILE LENGTH CODE FOR MORE CONSISTENCY. 359 / RENAMED "FINISH" COMMAND CORRECTLY (FORMERLY "BYE"). 360 361 / FORMER CODE REGARDING THE TENTATIVE FILE MAXIMUM LENGTH WAS ACCEPTABLY 362 / ORGANIZED FOR ORIGINAL PS/8, OS/8 CONVENTIONS. WITH THE EVOLUTION OF THE 363 / OPERATING SYSTEM INTO OS/78 (VERSIONS 1-4) AND OS/278 (VERSIONS 1-2), THE 364 / ENTER OPERATION HAS BEEN CHANGED WITH DANGEROUS CONSEQUENCES. 365 366 / THE ORIGINAL DEFINITION OF THE LENGTH RETURNED BY ENTER IS THE ACTUAL LENGTH 367 / OF THE LARGEST EMPTY (IN TWO'S COMPLEMENT FORM). IF RECORD 7777 IS PART OF 368 / THE ACTUAL LARGEST EMPTY (FULL SIZE DEVICE AND THE LARGEST EMPTY IS LAST ON 369 / THE DEVICE), THEN THE LENGTH RETURNED IS ONE LESS (THIS IS A LONG STANDING 370 / BUG). SINCE THERE IS NO STRAIGHT-FORWARD WAY TO DETERMINE THIS, THE LENGTH IS 371 / ASSUMED TO BE CORRECT. 372 373 / TESTS WITH THE DECUS VERSION OF OS/278 (DM-101) REVEAL A DANGEROUS CHANGE: 374 / THE LENGTH RETURNED IS TWO LARGER THAN ACTUALLY EXISTS! 375 376 / TO COUNTERACT THIS, EDIT 010 INSERTED A DECREMENT OF TWO INTO THE LENGTH 377 / BEFORE PASSING IT BACK TO THE KERMIT FILE WRITING ROUTINE. THE FILE WRITING 378 / ROUTINE THEN ADDS ONE TO THE LENGTH TO CREATE A "DANGER COUNT", I.E., IN TWO'S 379 / COMPLEMENT NOTATION, THIS IS THE AMOUNT THAT WILL INDICATE FILE OVERFLOW 380 / SHOULD IT REACH ZERO. 381 382 / THIS HAS NOW BEEN REORGANIZED TO ALLOW THE ENTER ROUTINE TO SET THE DANGER 383 / COUNT DIRECTLY. OS/8 USERS MUST ALLOW FOR THE EXTRA ROOM (WHICH MUST BE 384 / PRESENT BUT WILL NOT BE USED), SINCE NO CHECK FOR SYSTEM VERSION WILL BE 385 / PERFORMED. 386 387 / 020 16-NOV-1987 NEW ROUTINES AND CODE CLEANUP. CJL 388 389 / REWROTE ENTIRE OUTPUT FILE PACK ROUTINE. NOW SUPPORTS 390 / ASCII/BINARY INTERNAL FILE MODE FOR LATER USE. USES OUTPUT 391 / BUFFER IN FIELD ONE (SAME DEFINITIONS AS INPUT BUFFER) TO ALLOW 392 / MORE PROGRAM SPACE. END OF FILE CONVENTION IN ASCII MODE NOW 393 / INCLUDES ENSURING <^Z> CHARACTER PACKED INTO FILE (OR NOT). 394 / REWROTE ENTIRE OUTPUT FILE CLOSE ROUTINE TO IMPLEMENT <^Z> 395 / SCHEME. ELIMINATED SEPARATE OUTPUT FILE INITIALIZE ROUTINE; USE 396 / SPECIAL ROUTINE CALL INSTEAD. FIXED PACKET WRITE BUG. 397 398 / 019 15-NOV-1987 NEW ROUTINES AND CODE CLEANUP. CJL 399 400 / FIXED UNPACK <^Z> BUG. REWROTE ENTIRE INPUT FILE UNPACK ROUTINE. 401 / NOW SUPPORTS ASCII/BINARY INTERNAL FILE MODE FOR LATER USE. USES 402 / INPUT BUFFER IN FIELD ONE TO ALLOW MORE PROGRAM SPACE. BUFFER 403 / FIELD DEFINED VIA SYMBOLS TO ALLOW CHANGES IN THE FUTURE. END OF 404 / FILE CONVENTION IN ASCII MODE NOW INCLUDES SENDING <^Z> CHARACTER 405 / OR NOT. ELIMINATED SEPARATE INPUT FILE INITIALIZE ROUTINE; USE 406 / SPECIAL ROUTINE CALL INSTEAD. 407 408 / 018 09-NOV-1987 BUG FIX AND CODE CLEANUP. CJL 409 410 / FIXED RECEIVE BUG; NOW ALLOW DEV: ON RECEIVE. 411 / 017 05-NOV-1987 NEW FEATURES. CJL 412 413 / CONDITIONAL ASSEMBLY PARAMETERS ADDED FOR MACHINE TYPE (PDP-8, 414 / DECMATE I, DECMATE II/III/III+), REMOTE LINE AND LOCAL TERMINAL 415 / INTERFACE DEFINITIONS. 416 417 / 016 05-NOV-1987 CODE CLEANUP. CJL 418 419 / OPTIMIZATION OF CODE, LITERALS, CONSTANTS. 420 421 / 015 04-NOV-1987 BUG FIX. CJL 422 423 / INPUT SERVICE ROUTINE ERROR DOES JMP INSTEAD OF JMS WHEN CALLING 424 / COMMON ERROR HANDLER. 425 426 / 014 02-NOV-1987 SOURCE FILE CLEANUP. CJL 427 428 / SOURCE FILE COSMETICALLY CLEANED UP AND RENAMED TO K12MIT.PAL 429 / WHICH CONFORMS WITH CUCCA NAMING CONVENTION. NO ACTUAL BINARY 430 / CODE CHANGES BEYOND K08V2. THIS EDIT HISTORY ADDED. ENTRIES 431 / PRIOR TO 014 TRANSCRIBED BY CJL. 432 433 / SINCE THE PDP-12 (AND OTHER 12-BIT DEC MACHINES) IS THE INTENDED ENVIRONMENT 434 / FOR THIS PROGRAM, IT IS NOW KNOWN AS KERMIT-12. 435 436 / ASSEMBLING THE SOURCE FILE PRODUCES BINARY IDENTICAL TO K08V2.PA CONFIRMING 437 / THAT SOURCE CLEANUP DOESN'T DAMAGE THE CODING (K08V2 IS NOW OBSOLETE). 438 439 / 013 01-OCT-1987 CHANGE TO VERSION 2.0. R. SCHLERF (RICH) 440 441 / CHANGED 'RKIOT'/'RTIOT' TO 43/44 REMOTE LINE IOT (LOCAL 442 / PREFERENCE). CHANGED 'ESCAPE' CHARACTER TO ^] ('CONX1') FOR 443 / GENERIC CONFORMITY. ADDED VERSION/COMMAND BANNER AT STARTUP FOR 444 / MINI-HELP. INCORPORATED K278 CHANGES 003-006, 009-010 (NO 445 / INTERRUPTS). DELETED 'ERRMSG.' NOW USES 'STXERR' AT 'CLOOP9'+2 446 / FOR PROGRAM SPACE. TO CONFORM TO GENERIC KERMIT, "BACK ON PDP8" 447 / MESSAGE DELETED AND REPLACED WITH BEEP <^G>. MESSAGE "SENDING 448 / FILE XXXXXX.XX CREATED ON DD-MM-YY" REDUCED TO "SENDING FILE 449 / XXXXXX.XX" TO CONFORM TO GENERIC KERMIT. PARITY BIT IS IGNORED 450 / ON BOTH REMOTE AND TTY LINES. OUTPUT PARITY IS SET TO SPACE. 451 452 / PROGRAM RENAMED TO K08V2.PA AND MADE AVAILABLE TO CUCCA BY: 453 454 / RICHARD SCHLERF (RICH) 455 / AMERICAN CYANAMID COMPANY 456 / MEDICAL RESEARCH DIVISION 457 / LEDERLE LABORATORIES 458 / BUILDING 190 ROOM 115H 459 / PEARL RIVER, NEW YORK 10965 460 / (914) 732-2186 (09:00 TO 16:00) 461 462 / SINCE PRIMARY APPLICATION OF K08V2 IS FOR PDP-8 USAGE, THE MODIFICATIONS NOT 463 / SPECIFIC TO DECMATE II/III FROM K278 WERE MOVED TO THE K08MIT VERSION. FUTURE 464 / VERSIONS WILL INCORPORATE THE DECMATE FEATURES AND THUS OBSOLETE ALL OTHER 465 / VERSIONS AT THAT TIME. 466 / 012 04-JUN-1986 PROGRAM FIX. SEPP STADELMANN (SSTA) 467 468 / RE-INITIALIZE VIA 'V30ST' AS ROM SETUP CLEARS COMPOSETABLE, ETC. 469 470 / 04-JUN-1986 VERSION RELEASED TO CUCCA BY MARTYN HEMMINGS (DEC GERMANY) AND 471 / SEPP STADELMANN (DEC SWITZERLAND) OF: 472 473 / DIGITAL EQUIPMENT CORPORATION (DEC) 474 / 146 MAIN STREET 475 / MAYNARD, MASS 01754 476 / (617) 897-5111 477 478 / CUCCA RENAMED FILES (KERMIT.PA AND KERCOM.PA) TO K278.PA AND K278COM.PA (WHICH 479 / DOESN'T REALLY CONFORM TO THE NAMING CONVENTION). 480 481 / CUCCA VERSION OF K278.PA FOUND TO BE DEFECTIVE. FILE REPAIRED BY: 482 483 / CHARLES LASNER (CJL) 484 / CLA SYSTEMS 485 / 72-55 METROPOLITAN AVENUE 486 / MIDDLE VILLAGE, NEW YORK 11379-2107 487 / (718) 894-6499 488 489 / REPAIRED FILE (K278.PA) NOW AVAILABLE AT CUCCA. 490 491 / PROGRAM IS NOW THE DECMATE II/III (III-PLUS) KERMIT ONLY. HOOKS WERE LEFT IN 492 / FOR PDP-8 VERSION, BUT NOT IMPLEMENTED. K278 DOES WORK WITH ADDITIONAL 493 / IMPLEMENTATIONS OF KERMIT, BUT RECEIVE COMMAND DOES NOT WORK. PROGRAM YIELDS 494 / RECOVERABLE SYSTEM ERROR/HALT WHEN EXITING TO FLOPPY-BASED DECMATE II SYSTEM. 495 / CONNECT MODE IS VT200 8-BIT WHICH CONFUSES EVEN/ODD PARITY SYSTEMS. K278 DOES 496 / NOT SUPPORT SETUP KEY OF DECMATE, BUT IMPLEMENTS SETUP COMMAND. 497 498 / 011 04-JUN-1986 NEW FEATURES. SSTA 499 500 / 'PRQ3' CODE CONDITIONALS. ROM SETUP COMMAND IMPLEMENTED FOR DMII/III. 501 / AUTOMATIC UPPERCASE SELECT ON RETURN FROM CONNECT. 502 503 / 010 13-MAR-1986 BUG FIX. MARTYN HEMMINGS (MART) 504 505 / FULL DISK HANDLED WELL. 506 507 / 009 13-MAR-1986 BUG FIX. MART 508 509 / CLEAN UP BREAK AND GET. 510 / 008 12-MAR-1986 BUG FIX. MART 511 512 / CLEAR INPUT CHARACTERS FROM COMMUNICATIONS PORT WHEN IN IDLE 513 / LOOP. 514 515 / 007 11-MAR-1986 NEW FEATURES AND BUG FIX. MARTYN HEMMINGS AND 516 / SSEP STADELMANN 517 / (MART+SSTA) 518 519 / INTERRUPT DRIVEN AND BUG FIX. 520 521 / 006 10-MAR-1986 NEW FEATURE. MART+SSTA 522 523 / DEVICE PARSE ON GET. 524 525 / 005 10-MAR-1986 BUG FIX. MART+SSTA 526 527 / NO DATE IN FILE WITH <^Z> INTACT. 528 529 / 004 10-MAR-1986 NEW FEATURES AND BUG FIX. MART+SSTA 530 531 / MAXIMUM RECEIVE BUFFER FIXUP ('RTERMI'), 15 SECOND TIME-OUT 532 / DURING CONNECT. 533 534 / 003 10-MAR-1986 BUG FIX. SSTA 535 536 / TWO PAGE HANDLER FIX. 537 538 / K08MIT.PAL COPIED TO DEC ENGINEERING NETWORK (NODE LSMVAX::) ULTIMATELY TO 539 / EUROPE (NODE VIRGIN::) WHERE PROGRAM BECAME KERMIT.PAL AND KERCOM.PAL. 540 541 / KERMIT.PAL AND KERCOM.PAL ARE TWO SOURCE FILES ASSEMBLED TOGETHER TO PRODUCE 542 / THE RUNNING KERMIT-8. *THEY ARE FOR THE DECMATE II/III/III-PLUS ONLY.* 543 544 / 002 18-JUL-1985 ORIGINAL RELEASE. RANDY HIPPE 545 546 / 18-JUL-1985 VERSION RELEASED TO CUCCA BY JERRY SANDS AND RANDY HIPPE OF: 547 548 / BUREAU OF ENGRAVING, INC. 549 / 3311 BROADWAY N.E. 550 / MINNEAPOLIS, MN 55413 551 / (612) 623-0900 X218 552 553 / CUCCA RENAMED FILE (KER8.PAL) TO K08MIT.PAL WHICH CONFORMS TO NAMING 554 / CONVENTION OF KERMIT FILES. 555 556 / K08MIT SUPPORTS CONNECT, BYE (REALLY FIN), EXIT, SEND, GET, RECEIVE ONLY. 557 558 / PROGRAM PRONE TO GETTING "CONFUSED" AND OUTPUTS FILE DATE ATTRIBUTE BOTH AS 559 / 'CAPAS' BYTE FEATURE AND ASCII TEXT INSERTED INTO CONTENTS OF FILE AHEAD OF 560 / FILE DATA. COMMAND PROCESSOR ACCEPTS UPPER-CASE COMPLETE COMMANDS ONLY. <^C> 561 / ABORT FEATURE TAKES VERY LONG TIME TO ACT (IF AT ALL!). MANY KERMITS WILL NOT 562 / WORK WITH K08MIT; HOWEVER, K08MIT WAS TESTED SUCCESSFULLY WITH KERMIT-20. 563 564 / 001 30-JUL-1984 FIRST VERSION (KER8.PAL). JERRY SANDS 565 / HARDWARE HINTS AND KINKS. 566 567 568 / KERMIT-12 REQUIRES THE FOLLOWING STANDARD OS/8 FAMILY CONFIGURATION: 569 570 / PDP-8 FAMILY MEMBER WITH AT LEAST 8K MEMORY. 571 572 / OS/8 SYSTEM DEVICE (WITH OS/8 FAMILY OPERATING SYSTEM RESIDENT). 573 574 / KL8-COMPATIBLE CONSOLE INTERFACE. 575 576 / 7/8-BIT ASCII EXTERNAL CONSOLE TERMINAL DEVICE (TTY:). 577 578 / KL8-COMPATIBLE REMOTE INTERFACE TO OTHER KERMIT. 579 580 / NOTE: ASSEMBLY PARAMETERS OF KERMIT-12 ALLOW FOR LOCAL KERMIT CONTROLLING 581 / TERMINALS TO BE OTHER THAN THE PRIMARY OS/8 CONSOLE DEVICE. THE ACTUAL 582 / HARDWARE MUST STILL CONFORM TO THE SAME REQUIREMENTS (THE DEVICE CODES WOULD 583 / THEN BE USER-SPECIFIED AND DIFFER FROM THE STANDARD 03/04) AS THE STANDARD 584 / CONSOLE INTERFACE AND TERMINAL. 585 586 / SPECIAL DECMATE CONSIDERATIONS: 587 588 / DECMATE USAGE IS USUALLY OBTAINED BY ASSEMBLING FOR THE STANDARD CONSOLE 589 / DEVICE (03/04), AS THE BUILT-IN FIRMWARE/SLUSHWARE OF THE DECMATES IS 590 / SUFFICIENTLY COMPATIBLE WITH THE PDP-8 HARDWARE FOR KERMIT-12'S REQUIREMENTS. 591 / (THE ONLY OTHER ACCEPTABLE CONSOLE DEVICE ON THE DECMATE IS THE PRINTER PORT.) 592 593 / DECMATE REMOTE COMMUNICATIONS PORTS ARE *RADICALLY* DIFFERENT FROM 594 / KL8-COMPATIBLE PORTS. THESE ARE HANDLED AUTOMATICALLY BY ONCE-ONLY CODE WHICH 595 / DETECTS THE USAGE OF KERMIT-12 ON THE SPECIFIC DECMATE SYSTEM, AND 596 / SELF-CONFIGURATION AS APPROPRIATE. THERE IS ONE EXCEPTION TO THIS, NAMELY IF 597 / THE COMMUNICATIONS PORT CODE IS ASSEMBLED FOR THE PRINTER PORT (32/33), THEN 598 / THE PRINTER PORT, *NOT* THE COMMUNICATIONS PORT WILL BE USED. THE STANDARD 599 / ASSEMBLY OF KERMIT-12 IS FOR A PDP-8 WITH DEVICE 40/41 COMMUNICATIONS PORT. 600 / THIS DESIGNATED VERSION WILL SELF-CONFIGURE WHEN EXECUTED ON A DECMATE. 601 / CONFIGURATION RESTRICTIONS: 602 603 / WHEN INTERRUPTS ARE SUPPORTED AGAIN, DEVICES SUCH AS THE TD-8/E WON'T WORK. 604 / THE NON-INTERRUPT VERSION SHOULD WORK TO 19200 BAUD ON THE PDP-8/E CPU, SO 605 / THIS SHOULD NOT BE A PROBLEM. INTERRUPT-DRIVEN VERSIONS OF KERMIT-12 MUST BE 606 / RUN ONLY ON SYSTEMS WHERE *ALL* INTENDED DEVICES CAN HAVE THEIR HANDLERS 607 / INTERRUPTED BY THE CONSOLE AND REMOTE LINE INTERRUPT HANDLERS. WHEN IN DOUBT, 608 / THE NON-INTERRUPT VERSION MUST BE USED (CURRENTLY THE ONLY VERSION). 609 610 / IF FLOW CONTROL IS DISABLED (DUE TO XON/XOFF BEING UNAVAILABLE) THEN THE 611 / CONSOLE BAUD RATE MUST MEET OR EXCEED THE REMOTE LINE RATE. THE USER MUST 612 / TAKE MINIMAL CARE NOT TO OVERLOAD THE INTERNAL BUFFERS OF KERMIT-12, AS THIS 613 / WILL YIELD THE ERROR MESSAGE: KEYBOARD INPUT ERROR! 614 615 / THIS IS NOT LIKELY TO OCCUR UNLESS ONE "PLAYS" WITH A KEYBOARD WHICH CAN 616 / GENERATE NUMEROUS ESCAPE SEQUENCES AS THE BUFFERS ARE QUITE ADEQUATE FOR ALL 617 / REASONABLE TERMINAL APPLICATIONS. SIMILARLY, IF THE REMOTE LINE DOES NOT OBEY 618 / XON/XOFF PROTOCOL (WHILE KERMIT-12 HAS IT ENABLED), THEN INTERNAL BUFFER 619 / OVERFLOW WILL YIELD THE ERROR MESSAGE: REMOTE LINE INPUT ERROR! 620 621 / THESE ERRORS ARE EXTREMELY UNLIKELY AND CAN ONLY BE CREATED BY MISUSE OF FLOW 622 / CONTROL (THE ONLY EXCEPTION TO THIS IS THE ATTEMPT TO USE KERMIT-12 WITH THE 623 / CONSOLE BAUD RATE SLOWER THAN THE REMOTE LINE BAUD RATE WITH FLOW CONTROL 624 / DISABLED). IF FLOW CONTROL IS ENABLED AND OBEYED THEN THE BUFFERING OF REMOTE 625 / LINE INPUT WILL OCCUR WHILE SHORT PAUSES OCCUR ON THE CONSOLE (ASSUMING THE 626 / USER FREEZES/UNFREEZES THE DISPLAY OFTEN AND THE CONSOLE DISPLAY BAUD RATE IS 627 / FASTER THAN THE REMOTE LINE BAUD RATE) WITH PRACTICALLY NO REMOTE LINE DELAY. 628 629 / FLOW CONTROL IS NOT YET SUPPORTED DURING KERMIT TRANSFERS. SINCE KERMIT-12 630 / DOES NOT SUPPORT SLIDING WINDOWS, KERMIT-12 WILL NEVER GENERATE OUTGOING 631 / XON/XOFF SEQUENCES. FUTURE REVISIONS WILL SUPPORT INCOMING XON/XOFF FROM THE 632 / REMOTE KERMIT. XON/XOFF PROTOCOL DURING CONNECT MODE IS COMPLETELY AVAILABLE 633 / AT THE USER'S OPTION. 634 635 / CONSOLE TERMINALS ARE REQUIRED TO SUPPORT "GLASS TTY:" FEATURES, I.E. THE 636 / PRINTING ASCII CHARACTER SET (LOWER-CASE DESIRABLE) AND THE CONTROL CHARACTERS 637 / , , AND (THE LAST FOR VARIOUS AUDIBLE REPORTS ONLY). TERMINALS 638 / LACKING LOWER-CASE SUPPORT SHOULD "FOLD" LOWER-CASE CHARACTERS TO UPPER-CASE 639 / AUTOMATICALLY. TERMINALS SUCH AS THE VT05 CAN HAVE THE KEYBOARD LOWER-CASE 640 / ENABLED, AS KERMIT-12 SUPPORTS OPTIONAL OUTPUT FOLDING. THE UPPER-CASE ONLY 641 / OPTION SHOULD BE ENABLED FOR TERMINALS WHICH IGNORE LOWER-CASE INPUT FROM THE 642 / HOST, AS KERMIT-12 GENERATES NUMEROUS LOWER-CASE MESSAGE CHARACTERS (WHICH 643 / BECOME UPPER-CASE IF THIS OPTION IS SET). THE CHARACTER IS REQUIRED FOR 644 / VISUAL RUBOUT ( ) ONLY. FUTURE VERSIONS WILL SUPPORT 645 / HARD-COPY BACKSPACE TO REMOVE THIS REQUIREMENT. ALL TERMINAL FEATURES (SUCH 646 / AS ACTUAL VT-100 FUNCTIONALITY) ARE FREELY PASSED TO THE HOST DURING CONNECT 647 / MODE; THE ONLY CHARACTER ACTUALLY RESERVED IS THE ESCAPE CHARACTER WHICH WILL 648 / BE TREATED AS A SEVEN-BIT CHARACTER ONLY. IF THE USER PRESSES THE ESCAPE 649 / CHARACTER TWICE, THEN THE SEVEN-BIT REPRESENTATION OF THE CHARACTER IS SENT 650 / ONCE; THERE IS NO WAY TO SEND THE ESCAPE CHARACTER WITH THE HIGH-BIT SET. 651 / SINCE THE ESCAPE CHARACTER ITSELF CAN BE SET TO ALMOST ANY SEVEN-BIT VALUE, 652 / THIS SHOULD NOT BE A SERIOUS LIMITATION. TERMINALS THAT DON'T "BEEP" WHEN THE 653 / CHARACTER IS SENT SHOULD NOT OUTPUT A PRINTABLE RENDITION OF THE <^G> 654 / CHARACTER, AS THIS WOULD DISRUPT THE TERMINAL OUTPUT AND INTERNAL COLUMN COUNT 655 / DURING VARIOUS MESSAGE SEQUENCES, ETC. 656 / KL-8/E INTERFACES SHOULD BE SETUP WITH THE FOLLOWING STANDARD SETTINGS: 657 658 / 1 STOP BIT ABOVE 110 BAUD WITH 8 BITS DATA. 659 660 / FUNCTIONAL BAUD RATES INCLUDE 110, 150, 300, 600, 1200, 2400, 4800, 9600, 661 / 19200, 38400 AND 76800. 2400 BAUD REQUIRES A REVISION "B" OR BETTER M8650 662 / MODULE (IF ONE USES DEC'S DOCUMENTATION OF AVAILABLE SPLIT-LUG OPTIONS). 663 / ACTUAL BAUD RATES UP TO APPROXIMATELY 100 KBAUD SHOULD WORK WHEN KERMIT-12 664 / BECOMES INTERRUPT-DRIVEN. RATES OTHER THAN 110 BAUD REQUIRE A 19.6608 MHZ 665 / BAUD-RATE OSCILLATOR. 666 667 / THE BAUD RATES STATED ABOVE ARE ACTUALLY AVAILABLE ON THE KL-8/E, BUT REQUIRE 668 / A SINGLE SOLDER JUMPER TO IMPLEMENT THE PROPER BAUD RATE ABOVE 2400 BAUD. 669 / CHANGING BAUD-RATE GENERATOR CRYSTALS WILL PRODUCE OTHER RATES AS NECESSARY. 670 / (SEND INQUIRIES TO CLA SYSTEMS FOR INFORMATION REGARDING KL-8/E MODIFICATIONS 671 / INCLUDING UPGRADED BAUD-RATE OSCILLATORS, ETC.) KERMIT-12 HAS BEEN TESTED TO 672 / 9600 BAUD AND SHOULD WORK TO 19200 BAUD (AS OF THE CURRENT VERSION). 673 674 675 / KL8-J/A INTERFACES SHOULD BE SETUP WITH THE FOLLOWING STANDARD SETTINGS: 676 677 / 1 STOP BIT ABOVE 110 BAUD WITH 8 BITS DATA NO PARITY. 678 679 / FUTURE VERSIONS OF KERMIT-12 WILL SUPPORT VARIOUS SOFTWARE-GENERATED PARITY 680 / OPTIONS. THE FRAMING AND OVERRUN ERRORS CAN BE ENABLED AND WILL EVENTUALLY BE 681 / SUPPORTED (BUT THE PARITY GENERATOR SHOULD BE DISABLED TO PREVENT INTERACTION 682 / WITH THE SOFTWARE USE OF PARITY GENERATION/DETECTION). 683 684 / ALL BAUD RATES ARE SUPPORTABLE: 685 686 / 110, 150, 300, 600, 1200, 2400, 4800, 9600, 19200. 687 688 / 19200 BAUD IS ACHIEVED BY CUTTING JUMPER "W2" AND ADDING JUMPER "W5" AND THEN 689 / SETTING THE BOARD FOR WHAT IS NORMALLY 9600 BAUD. A WESTERN DIGITAL TR-1602-B 690 / OR EQUIVALENT UART IS REQUIRED TO SUPPORT 19200 BAUD; MOST OF THE RECENT 691 / PRODUCTION DEC M8655 BOARDS USE THE SMC COMM 2017 UART WHICH MEETS OR EXCEEDS 692 / THIS REQUIREMENT. EARLY M8655 BOARDS USE GI UARTS IN CERAMIC PACKAGES WHICH 693 / *CANNOT* BE USED AT 19200 BAUD (MANY ARE FLAKY AT 9600 BAUD!). 694 695 / RECEIVE BAUD RATE SHOULD BE IDENTICAL TO TRANSMIT BAUD RATE. (DO NOT SET THE 696 / RECEIVE=150 BAUD SWITCH!) 697 / OTHER INTERFACES: 698 699 / DKC-8/A (8/A OPTION BOARD #1) INTERFACES SHOULD BE SETUP AS PER THE KL8-J/A 700 / SPECIFICATIONS INCLUDING THE REQUIREMENTS OF THE UART. SOME DEC DOCUMENTATION 701 / INDICATED A PROHIBITION ON THE USE OF 19200 BAUD, BUT THIS IS OBVIATED BY THE 702 / USE OF THE SAME UARTS AS IN THE KL8-J/A. 703 704 / EARLIER DEVICES SUCH AS PT08, DP-12, KL-8/F OR DC02 (CHANNEL ZERO ONLY) SHOULD 705 / WORK CORRECTLY AS FACTORY WIRED (MOST OF THESE DEVICES DO NOT SUPPORT OPTIONS 706 / KERMIT-12 WOULD REQUIRE TO BE DISABLED ANYWAY. THESE INCLUDE PARITY 707 / GENERATION, FRAMING ERROR DETECTION, ETC.). TO UTILIZE THESE DEVICES, THE 708 / ASSEMBLY PARAMETERS FOR USER DEVICES AND THEIR RESPECTIVE DEVICE CODE VALUES 709 / SHOULD BE GIVEN DURING ASSEMBLY (SEE ASSEMBLY INSTRUCTIONS). PROPER DEVICE 710 / CODE VALUES MUST BE OBTAINED FOR THE SELECTED INTERFACE, AS THERE ARE MANY 711 / ACTUAL POSSIBILITIES. (DP-12 DEVICES ARE GENERALLY DEVICE 40/41; PT08/DC02 712 / INTERFACES ARE GENERALLY DEVICE 11/12, ETC.) 713 / ASSEMBLY INSTRUCTIONS. 714 715 / KERMIT-12 CAN BE ASSEMBLED BY EITHER OF TWO METHODS: 716 717 718 / P?S/8 METHOD: 719 720 / ASSUMING THE EXTENDED-LENGTH FILE KERM12 IS THE SOURCE FILE, THE FOLLOWING 721 / COMMAND WILL PRODUCE A FULLY ORNAMENTED LISTING: 722 723 / .PAL KB1,KB2,KB3,KB4 DURING PASS 1. SUBSEQUENT PASSES REQUIRE THE 830 / ENDING <^Z> ONLY. IF THIS METHOD IS USED, A LISTING WITHOUT THE USER INPUT 831 / WHICH DID THE CUSTOMIZING OF KERMIT-12 CAN BE CREATED. NOTE: IF BINARY IS 832 / GENERATED BY THE CONTENTS OF THE PARAMETER FILE (SUCH AS USE OF THE LOCAL TEXT 833 / MESSAGE, ETC.), THE INFORMATION MUST BE TYPED IN DURING PASS 2. THE PASS 3 834 / LISTING MAY CONTAIN THE INFORMATION IF SO DESIRED, REQUIRING A REPETITION OF 835 / THE INPUT. PASS 1 INPUT OF THE INFORMATION IS EFFECTIVELY IGNORED, AS NO 836 / DEFINITIONS ARE CREATED ('LCLMSG' IS DEFINED ELSEWHERE, ETC.). 837 838 / EXPERIENCED PDP-8 USERS NEW TO PAL8 VERSION B0 TAKE SPECIAL NOTICE: 839 840 / DUE TO HARDWARE LIMITATIONS OF THE DECMATES, THE KEYBOARD FLAG WILL BE CLEARED 841 / DURING PDP-8 PAL8 B0 OPERATION. THE KL8E TTY: HANDLER WILL NO LONGER BE ABLE 842 / TO BUFFER <^Z> DURING THE ASSEMBLY; YOU MUST WAIT UNTIL THE HANDLER ACCESSES 843 / THE KEYBOARD ON EACH PASS *THEN* PRESS <^Z> TO CONTINUE THE ASSEMBLY. 844 845 846 / CREATING A CUSTOM MESSAGE FROM THE PARAMETER FILE. 847 848 / IF SO DESIRED, A CUSTOM LOCAL HEADER MESSAGE MAY BE ADDED BY INSERTING THE 849 / FOLLOWING INTO THE PARAMETER FILE: 850 851 / BUFFLD= 10 /THESE PROBABLY 852 / FILBUFF=2000 /WON'T CHANGE! 853 854 / GENMSG= 0 /DON'T GENERATE STANDARD (NULL) MESSAGE 855 / UMSG= 0 /DON'T GENERATE STANDARD (DUMMY) USER MESSAGE 856 857 / FIELD BUFFLD%10 /FIELD FOR TEXT MESSAGE 858 859 / *FILBUFFER /LOCAL MESSAGE LOADS THERE 860 861 /LCLMSG,TEXT "%^I^NSERT ^L^OCAL ^M^ESSAGE ^H^ERE!%" 862 863 / ZBLOCK LCLMSG+40-. /ZERO REST OF MESSAGE AREA 864 865 / TEXT IS IN UPPER/LOWER-CASE SIXBIT WITH '^' MEANING SHIFT CASE (INITIALLY 866 / LOWER-CASE) AND '%' MEANING , . 867 / OTHER METHODS: 868 869 / KERMIT-12 *CANNOT* BE ASSEMBLED BY PAL10 (LAST KNOWN VERSION OF PDP-8 870 / CROSS-ASSEMBLER FOR TOPS10 (142)) BECAUSE IT LACKS CERTAIN FEATURES: 871 872 / DOES NOT SUPPORT 'RELOC' PSEUDO-OP. 873 874 / DOES NOT SUPPORT PAGE ZERO REDEFINE (CAUSES "Z" ERROR ON SOURCE FILES WHICH 875 / DON'T HAVE ERRORS WHEN ASSEMBLED BY EITHER P?S/8 PAL OR OS/8 PAL8). 876 877 / INCORRECTLY HANDLES 'ZBLOCK' PSEUDO-OP (LEADS TO "Q" ERROR ON SOURCE FILES 878 / WHICH DON'T HAVE ERRORS WHEN ASSEMBLED BY EITHER P?S/8 PAL OR OS/8 PAL8). 879 880 / DOES NOT SUPPORT LITERAL "FORGETTING" (P?S/8 PAL OPTION /E OR OS/8 PAL8 OPTION 881 / /W) WHICH IS REQUIRED FOR DEFINING OVERLAY AREAS, ETC. 882 883 / DOES NOT SUPPORT TEXT WITHOUT ZERO WORD FILL (P?S/8 PAL OPTION /J OR OS/8 PAL8 884 / OPTION /F FULFILLS THIS REQUIREMENT) WHICH IS REQUIRED FOR TEXT MESSAGES. 885 886 887 / P?S/8 PAL IS AN IMPROPER SUPERSET OF PAL10. PAL10 SUPPORTS MACRO-8 MODE AS AN 888 / OPTION AND AUTOMATIC FIELD DUMP BITMAPS; ALL OTHER KNOWN PAL10 FEATURES EXIST 889 / IN P?S/8 PAL INCLUDING THE SUPPORT OF THE AUTOMATIC FIELD DUMP BITMAP 890 / PSEUDO-OPS ('ENBITS' AND 'NOBITS'). 891 892 / OS/8 PAL8 (VERSION B0) IS A SUBSET OF P?S/8 PAL WHICH HAS SEVERAL SYNTACTIC 893 / QUIRKS (WHICH ARE AVOIDABLE, BUT NONETHELESS ARE INCOMPATIBLE WITH BOTH P?S/8 894 / PAL AND PAL10 IN CERTAIN MINOR WAYS); REGARDLESS, PAL8 LACKS THE 895 / COMPATIBILITY PROBLEMS OF PAL10. 896 897 / MAINTAINING SOURCE COMPATIBILITY. 898 899 / KERMIT-12 SOURCE FILE CONVENTIONS DEMAND THE USE OF THE COMMON SUBSET OF P?S/8 900 / PAL AND OS/8 PAL8 (VERSION B0). CERTAIN FORMS OF STATEMENTS SHOULD BE 901 / AVOIDED: 902 903 / TAD /NOT LEGAL IN PAL8 904 / 0+TAD /NOT LEGAL IN PAL10, AND POSSIBLY WRONG IN PAL8 905 / TAD (3)+1 /GENERATES SAME AS "TAD (3+1)" IN PAL8 906 / -A!-B /UNARY OPERATOR HANDLED WRONG IN PAL8 907 / I+N /NOT LEGAL IN PAL8 908 / N+I /NOT LEGAL IN PAL8 909 / I I /NOT LEGAL IN PAL8 910 911 / THIS REQUIREMENT IS EASILY MET BY KERMIT-12 AS MOST OF THESE CASES ARE 912 / ESOTERIC QUIRKS AND NOT NEEDED FOR THIS ASSEMBLY. 913 914 / THE RESTRICTIONS OF PAL10 (EVEN THOUGH IT HAS OTHER DESIRABLE FEATURES, MOST 915 / OF WHICH IT SHARES WITH P?S/8 PAL) ARE TOO SEVERE TO ALLOW USABLE ASSEMBLY OF 916 / THIS PROGRAM. BETTER CROSS-ASSEMBLERS MAY EXIST ELSEWHERE WHICH ARE 917 / SOURCE-COMPATIBLE WITH KERMIT-12. 918 / USE OF P?S/8 LANGUAGE EXTENSIONS. 919 920 / P?S/8 OFFERS SEVERAL USEFUL FEATURES OVER PAL8 (AND PAL10) WHICH MAY BE USEFUL 921 / FOR ASSEMBLY DEVELOPMENT OF KERMIT-12. THESE INCLUDE LANGUAGE ELEMENTS SUCH 922 / AS "TAD (3)+1" HANDLED CORRECTLY, OR PSEUDO-OPS SUCH AS "PAUSE EXPR" WHERE THE 923 / VALUE OF 'EXPR' WILL BE DISPLAYED ON THE SYSTEM CONSOLE DURING THE ASSEMBLY 924 / WHEN THAT POINT IN THE ASSEMBLY IS REACHED. TO ACCESS THESE FEATURES AND 925 / STILL PROVIDE COMPATIBILITY WITH PAL8 (VERSION B0), THE FOLLOWING CODING 926 / TECHNIQUE IS SUGGESTED: 927 928 929 / IFNDEF PQS /WILL BE 0 ON PAL8, PAL10 930 931 932 / IFZERO PQS < /DO PAL8, ETC. STUFF HERE 933 934 / FOO= (TABLE) /DEFINE POINTER TO ADDRESS OF TABLE 935 936 / TAD FOO-1 /GET (POINTER TO ADDRESS OF TABLE)-1 937 / DCA XR1 /SETUP AUTO-INDEX REGISTER 938 939 / WISH WE HAD PAUSE AND ERROR PSEUDO-OPS IN PAL8. 940 941 / > /END OF PAL8, ETC. VARIANT 942 943 944 / IFNZRO PQS < /DO P?S/8 PAL STUFF HERE 945 946 / TAD (TABLE)-1 /GET (POINTER TO ADDRESS OF TABLE)-1 947 / DCA XR1 /SETUP AUTO-INDEX REGISTER 948 949 / IFNDEF PASS /DEFINE PASS VARIABLE 950 951 / PASS= PASS+1 /BUMP EVERY ASSEMBLER PASS 952 953 / PAUSE PASS /DISPLAY PASS NUMBER 954 955 / IFNZRO .&4000 < 956 957 / ERROR 1234 /DISPLAY ERROR MESSAGE IF THERE ARE PROBLEMS 958 959 / > 960 961 / > /END OF P?S/8 PAL VARIANT 962 963 964 / THIS ALLOWS TEMPORARY DEVELOPMENT FEATURES OR PERMANENT ELEMENTS WHICH MAY BE 965 / MORE ELEGANTLY EXPRESSED IN P?S/8 PAL VARIANT CODING, WHILE THE PAL8 (VERSION 966 / B0) VERSION CAN STILL BE USED (VIA DIRECT OCTAL, MULTIPLE EQUATE STATEMENTS, 967 / CONDITIONAL FLUSH AS IN THE ABOVE EXAMPLE, ETC. AS NECESSARY) FOR STANDARD 968 / ASSEMBLY OF KERMIT-12. 969 / ASSEMBLY PARAMETERS. 970 971 / SEVERAL PARAMETERS MUST BE CHANGED WITHIN K12MIT.PA (OR PASSED TO THE 972 / ASSEMBLER VIA A SHORT FILE INSERTED INTO THE ASSEMBLY STREAM BEFORE THE MAIN 973 / FILE): 974 975 / SETTING KEY= [RECEIVE IOT CODE FOR CONSOLE KEYBOARD] DEFINES THE CONSOLE 976 / KEYBOARD IOT CODE (DEFAULT IS 03). 977 978 / SETTING TTY= [TRANSMIT IOT CODE FOR CONSOLE OUTPUT] CHANGES THE CONSOLE 979 / PRINTER IOT CODE (DEFAULT IS 04). 980 981 / THE FOLLOWING DEFINITIONS ARE ESSENTIALLY FOR KL8-TYPE DEVICES ONLY, AS THE 982 / CODE DEMANDS KL8 HARDWARE COMPATIBILITY. MODELS OTHER THAN PDP-8 (SUCH AS 983 / DECMATE) GENERALLY EITHER PLACE RESTRICTIONS ON AVAILABLE INTERFACES (OTHER 984 / SOFTWARE DESIGNATES A SERIAL INTERFACE AS A LOGICAL PRINTER PORT; DECMATES 985 / SUPPORT A FIRMWARE "PRINT SCREEN" KEY WHICH ENFORCES THIS.), OR DON'T ALLOW 986 / USABLE PLUG-IN OPTIONS. 987 988 / IGNORING BUILT-IN DECMATE SUPPORT, THE FOLLOWING PARAMETERS ARE ACTIVE: 989 990 / SETTING DEV30= 1 CREATES DEVICE 30/31 REMOTE LINE IOTS. 991 992 / SETTING DEV40= 1 CREATES DEVICE 40/41 REMOTE LINE IOTS. 993 994 / SETTING LEDERLE=1 CREATES DEVICE 43/44 REMOTE LINE IOTS (AND A CUSTOM 995 / HEADER). 996 997 / SETTING ORIGNAL=1 CREATES DEVICE 33/34 REMOTE LINE IOTS (ORIGINAL 998 / SETTINGS). 999 1000 / SETTING SPRINT= 1 CREATES DEVICE 32/33 REMOTE LINE IOTS (SERIAL PRINTER 1001 / PORT). 1002 1003 / SETTING USER= 1 CREATES DEVICE XX/XY REMOTE LINE IOTS. 1004 1005 / IF NONE OF THESE ARE SET, THEN DEV40=1 APPLIES BY DEFAULT. 1006 1007 1008 1009 / SETTING USER= 1 REQUIRES THE USER TO DEFINE TWO ADDITIONAL VALUES: 1010 1011 / XX= [RECEIVE IOT DEVICE CODE] (DEFAULT IS 40). 1012 1013 / XY= [TRANSMIT IOT DEVICE CODE] (DEFAULT IS 41). 1014 / SETTING SPRINT= 1 INHIBITS THE BUILT-IN CHECK FOR DECMATE OPERATION AND 1015 / USES THE SERIAL PRINTER PORT FOUND ON ALL 1016 / WPS-8-CONFIGURED PDP-8/E, PDP-8/A CONFIGURATIONS, 1017 / VT-78, AND ALL DECMATES (VT-278, DECMATE II, III, 1018 / III+) FOR REMOTE COMMUNICATIONS. 1019 1020 / THE USE OF THE SERIAL PRINTER PORT FOR REMOTE COMMUNICATIONS PURPOSES MAY BE 1021 / PROBLEMATIC DUE TO CONSIDERATIONS SUCH AS THE RS-232 CONNECTION TO THE PRINTER 1022 / IS A MODEM (DCE), RATHER THAN A TERMINAL (DTE) (DECMATE II, ETC. REQUIRES A 1023 / GENDER CHANGER.), OR THE SOFTWARE DESIGNATION OF THE PORT AS BEING ALLEDGEDLY 1024 / *ONLY* FOR A PRINTER, SUCH AS WHEN CERTAIN SYSTEMS SUPPORT THE "PRINT SCREEN" 1025 / KEY AS A SCREEN DUMP TO THE SERIAL PRINTER PORT, ETC. THESE ISSUES ARE NOT 1026 / RELEVANT TO KERMIT-12 OPERATION, AS THE "PRINT SCREEN" KEY IS NOT SUPPORTED BY 1027 / KERMIT-12 IN THIS CONFIGURATION AS SUCH (FUTURE VERSIONS COULD REDEFINE THE 1028 / "PRINT SCREEN" KEY TO SUCH FUNCTIONS AS DUMP SCREEN TO A FILE, ETC.). 1029 1030 / SETTING BRATE= NN SETS THE DEFAULT BAUD RATE (FOR SYSTEMS THAT SUPPORT 1031 / THIS FEATURE) FROM A TABLE OF VALUES (0-15) AS 1032 / FOLLOWS: 1033 1034 / NN BAUD RATE 1035 1036 / 00 50 1037 / 01 75 1038 / 02 110 1039 / 03 134.5 1040 / 04 150 1041 / 05 300 1042 / 06 600 1043 / 07 1200 1044 / 08 1800 1045 / 09 2000 1046 / 10 2400 1047 / 11 3600 1048 / 12 4800 1049 / 13 7200 1050 / 14 9600 1051 / 15 19200 1052 1053 / SETTING ESCAPE= NNNN SETS THE DEFAULT ESCAPE CHARACTER TO NNNN. 1054 1055 / SETTING FLOW= 1 ENABLES FLOW-CONTROL BY DEFAULT. 1056 / SETTING FLOW= 0 DISABLES FLOW-CONTROL BY DEFAULT. 1057 1058 / SETTING FMODE= 0177 SETS THE DEFAULT FILE MODE TO ASCII. 1059 / SETTING FMODE= 4377 SETS THE DEFAULT FILE MODE TO BINARY. 1060 / SETTING GENMSG= 0 CAUSES NO BINARY TO BE GENERATED WHERE 'LCLMSG' IS 1061 / DEFINED. THIS ALLOWS THE PARAMETER FILE (PARAM.PA) OR 1062 / SUBSEQUENT OVERLAY BY K12PCH.BN TO DEFINE THE LOCAL 1063 / HEADER MESSAGE. THIS PARAMETER SHOULD NOT BE SET 1064 / UNLESS ONE OF THESE METHODS IS USED, ELSE THE HEADER 1065 / MESSAGE WILL BE UNDEFINED. (NOTE: IF K12PCH.BN 1066 / GENERATES A HEADER MESSAGE, THEN THIS PARAMETER IS 1067 / UNIMPORTANT, AS K12PCH.BN OVERLAYS THE BINARY OF 1068 / K12MIT.) 1069 / SETTING GENMSG= 1 CAUSES A HEADER MESSAGE TO BE GENERATED. THE CONTENTS 1070 / OF THE MESSAGE ARE CREATED BY SETTING LEDERLE=1 OR 1071 / UMSG=1. IF EITHER IS ZERO, A DEFAULT (NULL) MESSAGE 1072 / WILL BE GENERATED. 1073 1074 / SETTING ICLOSE= 1 ENSURES A <^Z> AT OF ASCII INPUT FILES BY 1075 / DEFAULT. 1076 / SETTING ICLOSE= 0 CLOSES ASCII INPUT FILES AS RECEIVED BY DEFAULT. 1077 1078 / SETTING INIECHO=0 CAUSES A FULL-DUPLEX CONNECT MODE STATE WITH NO LOCAL 1079 / CHARACTER ECHOING BY DEFAULT. 1080 / SETTING INIECHO=1 CAUSES A HALF-DUPLEX CONNECT MODE STATE WITH LOCAL 1081 / ECHO OF ALL CONSOLE CHARACTERS BY DEFAULT. 1082 1083 / SETTING LOWER= 0 ALLOWS LOWER-CASE CONSOLE OUTPUT BY DEFAULT. 1084 / SETTING LOWER= -40 FOLDS LOWER-CASE CONSOLE OUTPUT TO UPPER-CASE BY 1085 / DEFAULT. 1086 1087 / SETTING OCLOSE= 0 PREVENTS DEFAULT SENDING OF <^Z> AT OF ASCII 1088 / FILES. 1089 / SETTING OCLOSE= 1 CAUSES <^Z> TO BE SENT AT OF ASCII FILES BY 1090 / DEFAULT. 1091 1092 / SETTING PORT= 0 CAUSES THE DP-278 PORT 0 TO BE USED IF KERMIT-12 IS 1093 / RUN ON A DECMATE 1 (ASSUMING SPRINT=0). 1094 / SETTING PORT= 1 CAUSES THE DP-278 PORT 1 TO BE USED IF KERMIT-12 IS 1095 / RUN ON A DECMATE 1 (ASSUMING SPRINT=0). 1096 1097 / SETTING RETCNT= NNNN SETS THE PACKET RETRY COUNT TO NNNN BY DEFAULT. 1098 / SETTING UMSG= 0 PREVENTS THE LOCAL USER HEADER MESSAGE FROM BEING 1099 / GENERATED. 1100 / SETTING UMSG= 1 CAUSES THE LOCAL USER HEADER MESSAGE TO BE GENERATED. 1101 / THE PARAMETER GENMSG=1 IS REQUIRED TO BE SET. THE 1102 / SOURCE MUST BE MODIFIED LOCALLY TO CHANGE THE MESSAGE 1103 / TEXT FROM "INSERT LOCAL USER MESSAGE HERE!," AS THIS 1104 / IS THE DEFAULT CONTENTS. 1105 / KERMIT-12 FOR THE FAMILY OF 12-BIT DEC MACHINES. 1106 1107 / BRIEF USAGE DESCRIPTION. 1108 1109 / KERMIT-12 IS AN IMPLEMENTATION OF THE KERMIT PROTOCOL FOR THE FAMILY OF 12-BIT 1110 / DEC (AND COMPATIBLE) MACHINES GENERALLY KNOWN AS PDP-8 OR DECMATE. 1111 1112 / AS OF THE CURRENT IMPLEMENTATION, THE FOLLOWING COMMANDS ARE EFFECTIVE: 1113 1114 / 1. CONNECT (TO REMOTE SYSTEM AS TERMINAL). 1115 1116 / 2. SEND FILESPEC (TO REMOTE RECEIVER OR SERVER). 1117 1118 / 3. RECEIVE FILESPEC (FROM REMOTE SENDER). 1119 1120 / 4. GET FILESPEC (FROM REMOTE SERVER). 1121 1122 / 5. FINISH (SERVING). 1123 1124 / 6. SETUP (ON DECMATE II/III/III-PLUS ONLY). **** NOT IMPLEMENTED **** 1125 1126 / 7. EXIT (TO OPERATING SYSTEM). 1127 1128 / 8. HELP (DISPLAYS HELP MESSAGE). 1129 1130 / FILESPEC MAY BE ANY LOCAL (OS/8) FILE-STRUCTURED DEVICE:FILENAME.EXTENSION, 1131 / WHERE THE FILENAME AND EXTENSION WILL BE TRUNCATED TO 6 ALPHANUMERICS AND 2 1132 / ALPHANUMERICS RESPECTIVELY, AS NECESSARY (THIS IS REFERRED TO AS 6.2 FILENAME 1133 / FORMAT). THE DEVICE: FIELD IS OPTIONAL; ALL COMMANDS USING THE DEVICE: 1134 / FIELD FOR LOCAL DEVICE SPECIFICATION WILL USE THIS DEVICE AS THE SOURCE OR 1135 / DESTINATION AS NECESSARY FOR THE LOCAL FILES. IF THE DEVICE: FIELD IS 1136 / OMITTED, THE DEFAULT DEVICE DSK: WILL BE USED. THE ACTUAL DEVICE USED MAY BE 1137 / SELECTED BEFORE INVOKING KERMIT-12 BY USING THE OS/8 ASSIGN COMMAND: 1138 1139 / .ASSIGN DEV DSK 1140 1141 / WHERE DEV IS ANY AVAILABLE FILE-STRUCTURED DEVICE. 1142 1143 / KERMIT-12 USES AN UNUSUAL SCHEME FOR ITS PROMPT: THE ACTUAL DEFAULT PROMPT 1144 / TEXT IS PARTIALLY TAKEN FROM THE ACTUAL MACHINE KERMIT-12 IS CURRENTLY 1145 / EXECUTING ON. FOR EXAMPLE, IF KERMIT-12 HAS DETERMINED THE CPU TYPE AS 1146 / PDP-8/E, THE PROMPT WILL BE: 1147 1148 / KERMIT-8/E> 1149 1150 / THIS ALLOWS KERMIT-12 USERS (WITH DIFFERENT CPU-TYPE MACHINES) TO DISTINGUISH 1151 / MESSAGES ORIGINATING FROM THE RESPECTIVE SYSTEMS. FUTURE VERSIONS WILL 1152 / SUPPORT USER PROMPT STRINGS TO ALLOW MORE DISTINCTIVE SYSTEM MESSAGES. 1153 1154 / THE HELP OR CONNECT COMMANDS MAY BE USED TO DETERMINE THE CURRENT CONNECT MODE 1155 / ESCAPE CHARACTER. 1156 / COMMAND RESTRICTIONS. 1157 1158 / THE SEND COMMAND ALLOWS DEVICE:FILENAME.EXTENSION (6.2) WITH WILD-CARD 1159 / SUBSTITUTION. A * MAY BE GIVEN FOR AN ENTIRE FIELD (EITHER FILENAME OR 1160 / EXTENSION OR BOTH) ONLY. A ? WILL MATCH ANY SINGLE CHARACTER WHICH MUST 1161 / EXIST IN THE ACTUAL FILENAME OR EXTENSION, UNLESS RIGHT-MOST IN THE FIELD. 1162 / ALL MATCHING FILES WILL BE SENT. NO OUTBOUND FILENAME (AS-NAME) FACILITY 1163 / EXISTS AT THIS TIME. 1164 1165 / THE RECEIVE COMMAND ALLOWS OPTIONAL DEVICE: ONLY. *THE FILENAME AND 1166 / EXTENSION ARE NOT ALLOWED*. NAMES OF RECEIVED FILES WILL BE MODIFIED IF 1167 / NECESSARY TO CONFORM TO THE 6.2 FORMAT. *IMPLEMENTATION RESTRICTION* : 1168 / CERTAIN REMOTE FILENAMES CONTAINING NON-ALPHANUMERIC CHARACTERS MAY CAUSE 1169 / KERMIT-12 TO HASTILY ABORT THE TRANSMISSION AND RETURN TO COMMAND LEVEL. 1170 1171 / THE GET COMMAND ALLOWS OPTIONAL DEVICE: TO DETERMINE DESTINATION OF THE 1172 / INCOMING FILES. THE OUTBOUND FILESPEC MUST CONFORM TO LOCAL CONVENTIONS 1173 / (FILENAME AND EXTENSION ARE NOT LIMITED TO 6.2 FORMAT; THE DEVICE: FIELD 1174 / WILL NOT BE SENT TO THE REMOTE KERMIT UNLESS IT IS ILLEGAL WITHIN OS/8 1175 / SPECIFICATIONS, SUCH AS TOO MANY DEVICE LETTERS. IN THIS CASE, THE DEFAULT 1176 / DEVICE DSK: APPLIES, AND THE ENTIRE "DEVICE" FIELD IS SENT ALONG WITH ANY 1177 / FILENAME AND EXTENSION). CERTAIN REMOTE SYSTEMS ARE INCOMPATIBLE WITH THIS 1178 / IMPLEMENTATION, AS IMBEDDED SPACES OR NON-ALPHANUMERIC CHARACTERS ARE NOT 1179 / ALLOWED, EVEN THOUGH THEY MAY BE REQUIRED ON THE REMOTE SYSTEM. WILD-CARD 1180 / CHARACTERS ARE ALLOWED, BUT ONLY AS SPECIFIED IN THE SEND COMMAND ABOVE. 1181 1182 / <^X> OR <^Z> CAN BE USED TO ABORT KERMIT TRANSMISSIONS (EVENTUALLY) BUT IS 1183 / NORMALLY A SLOW PROCESS, SINCE THE CHECKING IS DONE BY A SOFTWARE TIMEOUT 1184 / SCHEME. AT THE PRESENT TIME, THERE IS NO DISTINCTION BETWEEN THESE THO 1185 / CHARACTERS, SO IT IS NOT POSSIBLE TO ABORT A SINGLE FILE; THE ENTIRE BATCH OF 1186 / FILES INVOLVED IN THE TRANSFER IS ABORTED. 1187 1188 / DECMATE II/III/III-PLUS CONSIDERATIONS: 1189 1190 / FUNCTION KEYS SEND SEQUENCES SPECIFIED BY SLUSHWARE/FIRMWARE. ALL SOFT 1191 / FUNCTION KEYS ARE THEREFORE INEFFECTIVE (EXCEPT FOR HOLD SCREEN WHICH ALWAYS 1192 / WORKS). 1193 1194 / CONNECT MODE RUNS IN 8-BIT MODE. 1195 1196 / THE COMPOSE KEY IS ENABLED FOR USE WITH A LOADED COMPOSE TABLE. 1197 1198 / ANY VALID DECMATE II/III/III-PLUS CHARACTER SET IS ALLOWED WHILE IN CONNECT 1199 / MODE (MCS TCS LINE, ETC.). ALL SEQUENCES ARE PASSED TO THE 1200 / SLUSHWARE/FIRMWARE UNMODIFIED. 1201 1202 / KEYBOARD UPPER-CASE LOCK WILL ALWAYS BE AUTOMATICALLY APPLIED UPON RETURN FROM 1203 / CONNECT MODE. 1204 / DEFINITIONS. /017 CJL 1205 1206 *200 /FOR DEFINITIONS /047 CJL 1207 1208 / REMOTE LINE PARAMETERS; SET ONLY ONE AS NECESSARY. /046 CJL 1209 1210 IFNDEF DEV30 /USE DEVICE 30/31 VALUES 1211 IFNDEF DEV40 /USE DEVICE 40/41 VALUES 1212 IFNDEF LEDERLE /USE LEDERLE LABS VALUES 1213 IFNDEF ORIGNAL /USE ORIGINAL VALUES 1214 IFNDEF SPRINT /USE DEVICE 32/33 VALUES 1215 IFNDEF USER /USE USER-DEFINED VALUES 1216 1217 REMOTE= DEV30+DEV40+LEDERLE+ORIGNAL /SET REMOTE LINE IOT CODE 1218 REMOTE= REMOTE+SPRINT+USER /SET REMOTE LINE IOT CODE 1219 1220 IFZERO REMOTE /DEFAULT TO DEVICE 40/41 VERSION 1221 1222 / DEV30 PARAMETERS. 1223 1224 IFNZRO DEV30 < 1225 1226 IFNDEF REC /DEVICE 30 INPUT 1227 IFNDEF SEN /DEVICE 31 OUTPUT 1228 1229 > 1230 1231 / DEV40 PARAMETERS (DEFAULT). 1232 1233 IFNZRO DEV40 < 1234 1235 IFNDEF REC /DEVICE 40 INPUT 1236 IFNDEF SEN /DEVICE 41 OUTPUT 1237 1238 > 1239 1240 / LEDERLE PARAMETERS. /038 CJL 1241 1242 IFNZRO LEDERLE < 1243 1244 IFNDEF REC /DEVICE 43 INPUT 1245 IFNDEF SEN /DEVICE 44 OUTPUT 1246 IFNDEF GENMSG /GENERATE LOCAL HEADER MESSAGE 1247 IFNDEF UMSG /DON'T GENERATE USER MESSAGE 1248 1249 > 1250 1251 / ORIGNAL PARAMETERS. 1252 1253 IFNZRO ORIGNAL < 1254 1255 IFNDEF REC /DEVICE 33 INPUT 1256 IFNDEF SEN /DEVICE 34 OUTPUT 1257 1258 > 1259 / SPRINT PARAMETERS. /046 CJL 1260 1261 IFNZRO SPRINT < 1262 1263 IFNDEF REC /DEVICE 32 INPUT 1264 IFNDEF SEN /DEVICE 33 OUTPUT 1265 1266 > 1267 1268 / USER PARAMETERS. 1269 1270 IFNZRO USER < 1271 1272 IFNDEF XX /DEFAULT TO DEVICE 40 1273 IFNDEF XY /DEFAULT TO DEVICE 41 1274 IFNDEF REC /DEVICE XX INPUT 1275 IFNDEF SEN /DEVICE XY OUTPUT 1276 IFNDEF GENMSG /GENERATE LOCAL HEADER MESSAGE 1277 IFNDEF UMSG /GENERATE USER MESSAGE 1278 1279 > 1280 1281 / REMOTE LINE IOT DEFINITIONS. 1282 1283 / RECEIVE DEFINITIONS. 1284 1285 RKRBIOT=REC^10+6006 /READ REMOTE, CLEAR FLAG 1286 RKSFIOT=REC^10+6001 /SKIP ON REMOTE INPUT FLAG 1287 1288 / TRANSMIT DEFINITIONS. 1289 1290 RSBIOT= SEN^10+6003 /SET BAUD RATE FROM AC[8-11] 1291 RTLSIOT=SEN^10+6006 /TRANSMIT CHARACTER, CLEAR FLAG 1292 RTSFIOT=SEN^10+6001 /SKIP ON TRANSMIT FLAG 1293 1294 / CONSOLE TTY: DEFINITIONS. /017 CJL 1295 1296 / KEYBOARD DEFINITIONS. /017 CJL 1297 1298 IFNDEF KEY /KEYBOARD DEVICE CODE 1299 1300 KCCIOT= KEY^10+6002 /CLEAR CONSOLE KEYBOARD FLAG, AC 1301 KRBIOT= KEY^10+6006 /READ CONSOLE KEYBOARD BUFFER, CLEAR FLAG 1302 KRSIOT= KEY^10+6004 /READ CONSOLE KEYBOARD BUFFER STATIC 1303 KSFIOT= KEY^10+6001 /SKIP ON CONSOLE KEYBOARD FLAG 1304 1305 / TELEPRINTER DEFINITIONS. /017 CJL 1306 1307 IFNDEF TTY /TELEPRINTER DEVICE CODE 1308 1309 TLSIOT= TTY^10+6006 /PRINT CHARACTER, CLEAR FLAG 1310 TSFIOT= TTY^10+6001 /SKIP ON TELEPRINTER FLAG 1311 / DEFAULT ESCAPE CHARACTER DEFINITION. /025 CJL 1312 1313 IFNDEF ESCAPE /DEFAULT IS CONTROL-] 1314 1315 / DEFAULT LOWER-CASE ENABLE DEFINITION. /030 CJL 1316 1317 IFNDEF LOWER /LOWER-CASE IS ALLOWED AS IS 1318 /CHANGE TO -40 IF LOWER-CASE 1319 /SHOULD BE FOLDED TO UPPER-CASE 1320 1321 / DEFAULT RETRY COUNT DEFINITION. /031 CJL 1322 1323 IFNDEF RETCNT /DEFAULT IS FIVE RETRIES 1324 1325 / DEFAULT FILE MODE DEFINITION. /031 CJL 1326 1327 IFNDEF FMODE /DEFAULT IS ASCII FILE MODE 1328 /4377 IS BINARY FILE MODE 1329 1330 / DEFAULT FLOW-CONTROL MODE DEFINITION. /031 CJL 1331 1332 IFNDEF FLOW /DEFAULT IS FLOW-CONTROL ENABLED 1333 1334 / DEFAULT ASCII INPUT FILE <^Z> DISPOSITION. /031 CJL 1335 1336 IFNDEF ICLOSE /ENSURE <^Z> AT ASCII 1337 1338 / DEFAULT ASCII OUTPUT FILE <^Z> DISPOSITION. /031 CJL 1339 1340 IFNDEF OCLOSE /<^Z> NOT SENT AT ASCII 1341 1342 / DEFAULT LOCAL MESSAGE GENERATION DEFINITIONS. /038 CJL 1343 1344 IFNDEF GENMSG /DEFAULT IS TO GENERATE A MESSAGE 1345 IFNDEF UMSG /DEFAULT IS NO DUMMY USER MESSAGE 1346 IFNDEF LEDERLE /DEFAULT IS NO LEDERLE MESSAGE 1347 1348 / THE NULL MESSAGE WILL BE GENERATED BY DEFAULT. 1349 1350 / ECHO DEFINITION. /039 CJL 1351 1352 IFNDEF INIECHO /DEFAULT IS NO LOCAL ECHO 1353 1354 / DEFAULT DECMATE I PORT DEFINITION. /050 CJL 1355 1356 IFNDEF PORT /DEFAULT IS PORT ZERO 1357 1358 / DEFAULT BAUD RATE DEFINITION. /050 CJL 1359 1360 IFNDEF BRATE /DEFAULT IS 1200 BAUD 1361 / STATE DEFINITIONS. 1362 1363 STDAT= "D&137 /DATA 1364 STACK= "Y&137 /ACK 1365 STNAK= "N&137 /NAK 1366 STSIN= "S&137 /SEND-INIT 1367 STBRK= "B&137 /BREAK LINK 1368 STFIL= "F&137 /FILENAME HEADER 1369 STEOF= "Z&137 /END OF FILE OR REPLY 1370 STERR= "E&137 /ERROR PACKET 1371 STATT= "A&137 /FILE ATTRIBUTES 1372 STRIN= "R&137 /RECEIVE-INIT 1373 STEOT= "B&137 /BREAK TRANSMISSION 1374 STGEN= "G&137 /KERMIT GENERIC COMMAND 1375 1376 / DEFAULT INIT PARAMETERS. 1377 1378 DEFCK= "1&177 /DEFAULT 1 CHARACTER CHECKSUM /014 CJL 1379 DEFEOL= 15+40 /CR IS DEFAULT 1380 DEFQCTL= "#&177 /"#" IS DEFAULT QCTL 1381 1382 / BUFFER DEFINITIONS. /014 CJL 1383 1384 DECIMAL /MAKE IT EASIER /014 CJL 1385 1386 DEFMAXL=94 /DEFAULT MAXIMUM PACKET SIZE 1387 1388 LINSIZ= 32 /KEYBOARD LINE BUFFER SIZE 1389 1390 OCTAL /BACK TO NORMAL /014 CJL 1391 1392 BUFSIZE=200 /128 CHARACTER RING BUFFERS /026 CJL 1393 /FOR NO-INTERRUPT CONNECT MODE 1394 / CONTROL CHARACTER DEFINITIONS. /023 CJL 1395 1396 CNTRLA= "A&37 /<^A> DEFAULT MARK CHARACTER /023 CJL 1397 CNTRLB= "B&37 /<^B> /046 CJL 1398 CNTRLC= "C&37 /<^C> PROGRAM EXIT CHARACTER /023 CJL 1399 CNTRLD= "D&37 /<^D> /046 CJL 1400 CNTRLE= "E&37 /<^E> /046 CJL 1401 CNTRLF= "F&37 /<^F> /046 CJL 1402 CNTRLG= "G&37 /<^G> BELL CHARACTER /023 CJL 1403 CNTRLH= "H&37 /<^H> BACKSPACE CHARACTER /023 CJL 1404 CNTRLI= "I&37 /<^I> HORIZONTAL TAB CHARACTER /043 CJL 1405 CNTRLJ= "J&37 /<^J> LINEFEED CHARACTER /023 CJL 1406 CNTRLK= "K&37 /<^K> VERTICAL TAB CHARACTER /046 CJL 1407 CNTRLL= "L&37 /<^L> FORM FEED CHARACTER /046 CJL 1408 CNTRLM= "M&37 /<^M> CARRIAGE RETURN CHARACTER /023 CJL 1409 CNTRLN= "N&37 /<^N> /046 CJL 1410 CNTRLO= "O&37 /<^O> ECHO FLIP CHARACTER /023 CJL 1411 CNTRLP= "P&37 /<^P> PROGRAM RESTART CHARACTER /023 CJL 1412 CNTRLQ= "Q&37 /<^Q> OUTPUT RESUME CHARACTER /023 CJL 1413 CNTRLR= "R&37 /<^R> /046 CJL 1414 CNTRLS= "S&37 /<^S> OUTPUT WAIT CHARACTER /023 CJL 1415 CNTRLT= "T&37 /<^T> /046 CJL 1416 CNTRLU= "U&37 /<^U> /046 CJL 1417 CNTRLV= "V&37 /<^V> /046 CJL 1418 CNTRLW= "W&37 /<^W> /046 CJL 1419 CNTRLX= "X&37 /<^X> FILE ABORT CHARACTER /044 CJL 1420 CNTRLY= "Y&37 /<^Y> /046 CJL 1421 CNTRLZ= "Z&37 /<^Z> ABORT AND CHARACTER /044 CJL 1422 DELETE= 177 / DELETE OR CHARACTER /034 CJL 1423 LOWERC= "C&177+40 /LOWER-CASE C (CLOSE CHARACTER) /025 CJL 1424 UPPERC= "C&177 /UPPER-CASE C (CLOSE CHARACTER) /025 CJL 1425 1426 / I/O AND FIELD DEFINITIONS. /019 CJL 1427 1428 BUFFLD= 10 /I/O BUFFER FIELD /019 CJL 1429 DIRFLD= 10 /DIRECTORY LOOKUP BUFFER FIELD /028 CJL 1430 DMIFLD= 10 /DECMATE ONCE-ONLY CODE FIELD /046 CJL 1431 MSGFLD= 10 /TEXT MESSAGE FIELD /023 CJL 1432 PAGCNT= 2 /I/O BUFFER SIZE IN PAGES /019 CJL 1433 PRGFLD= 00 /PROGRAM FIELD /019 CJL 1434 USRFLD= 10 /USR FIELD /020 CJL 1435 1436 / OS/8 MONITOR DEFINITIONS. /014 CJL 1437 1438 SBOOT= 7600 /MONITOR EXIT LOCATION IS 07600 /014 CJL 1439 USR= 7700 /NON-LOCKED USR ENTRY POINT /035 CJL 1440 / USER SERVICE ROUTINE AND HANDLER DEFINITIONS. /020 CJL 1441 1442 CLOSE= 4 /CLOSE TENTATIVE OUTPUT FILE /020 CJL 1443 ENTER= 3 /ENTER TENTATIVE OUTPUT FILE /020 CJL 1444 FETCH= 1 /FETCH HANDLER /020 CJL 1445 INQUIRE=12 /INQUIRE ABOUT HANDLER /020 CJL 1446 LOOKUP= 2 /LOOKUP FILE /020 CJL 1447 RESET= 13 /RESET DEVICE CONTROL WORD TABLE/037 CJL 1448 USRIN= 10 /LOCK USR IN CORE /020 CJL 1449 WRITE= 4000 /I/O CALL WRITE BIT /020 CJL 1450 1451 / INSTRUCTION DEFINITIONS. 1452 1453 CLCL= 6136 /CLEAR CLOCK FLAG (8/A, ETC.) /046 CJL 1454 CLSK= 6131 /SKIP ON, CLEAR CLOCK FLAG /046 CJL 1455 CLSK8A= 6137 /SKIP ON CLOCK FLAG (8/A, ETC.) /046 CJL 1456 COM= 0017 /COMPLEMENT AC 1457 DCAC= DCA . /CURRENT PAGE DCA INSTRUCTION /047 CJL 1458 IAAC= 6171 /"A" REGISTER TO AC 1459 IACA= 6167 /AC TO "A" REGISTER 1460 ISZC= ISZ . /CURRENT PAGE ISZ INSTRUCTION /050 CJL 1461 JMPC= JMP . /CURRENT PAGE JMP INSTRUCTION /047 CJL 1462 JMPIC= JMP I . /CURRENT PAGE JMP I INSTRUCTION /047 CJL 1463 JMSC= JMS . /CURRENT PAGE JMS INSTRUCTION /047 CJL 1464 JMSIC= JMS I . /CURRENT PAGE JMS I INSTRUCTION /047 CJL 1465 LINC= 6141 /GOTO LINC MODE 1466 PDP= 0002 /GOTO PDP-8 MODE 1467 PRQ3= 6236 /TYPE THREE PANEL REQUEST /046 CJL 1468 TADC= TAD . /CURRENT PAGE TAD INSTRUCTION /047 CJL 1469 R3L= 7014 /ROTATE AC (NOT LINK) LEFT 3 /046 CJL 1470 1471 / NUMERIC LOAD DEFINITIONS. /014 CJL 1472 1473 NL0000= CLA /LOAD AC WITH 0000 /046 CJL 1474 NL0001= CLA IAC /LOAD AC WITH 0001 /014 CJL 1475 NL0002= CLA CLL CML RTL /LOAD AC WITH 0002 /014 CJL 1476 NL0003= CLA STL IAC RAL /LOAD AC WITH 0003 (8/I ON UP) /046 CJL 1477 NL0004= CLA CLL IAC RTL /LOAD AC WITH 0004 (8/I ON UP) /046 CJL 1478 NL0006= CLA STL IAC RTL /LOAD AC WITH 0006 (8/I ON UP) /046 CJL 1479 NL0010= CLA IAC RAL RAR /LOAD AC WITH 0010 (6120) /024 CJL 1480 NL0100= CLA IAC BSW /LOAD AC WITH 0100 (8/E ON UP) /024 CJL 1481 NL3776= CLA CLL CMA RAR RAL /LOAD AC WITH 3776 (8/I OR 8/L) /024 CJL 1482 NL3777= CLA CLL CMA RAR /LOAD AC WITH 3777 /046 CJL 1483 NL4000= CLA CLL CML RAR /LOAD AC WITH 4000 /014 CJL 1484 NL5777= CLA CLL CMA RTR /LOAD AC WITH 5777 /046 CJL 1485 NL6000= CLA STL IAC RTR /LOAD AC WITH 6000 (8/I ON UP) /046 CJL 1486 NL7775= CLA CLL CMA RTL /LOAD AC WITH 7775 /014 CJL 1487 NL7776= CLA CLL CMA RAL /LOAD AC WITH 7776 /014 CJL 1488 NL7777= CLA CMA /LOAD AC WITH 7777 /014 CJL 1489 / DECMATE I COMMUNICATIONS PORT DEFINITIONS. /050 CJL 1490 1491 IPORT0= 30 /COMMUNICATIONS PORT 0 INPUT DEVICE CODE 1492 1493 RKFL0= IPORT0^10+6000 /SET COMMUNICATIONS PORT 0 INPUT FLAG 1494 RKSF0= IPORT0^10+6001 /SKIP ON, CLEAR COMMUNICATIONS PORT 0 INPUT FLAG 1495 RKCC0= IPORT0^10+6002 /CLEAR AC 1496 RKIE0= IPORT0^10+6005 /PORT 0 INPUT INTERRUPT ENABLE PER AC[11] 1497 RKRB0= IPORT0^10+6006 /READ COMMUNICATIONS PORT 0 INTO AC 1498 1499 OPORT0= 31 /COMMUNICATIONS PORT 0 OUTPUT DEVICE CODE 1500 1501 RTFL0= OPORT0^10+6000 /SET COMMUNICATIONS PORT 0 OUTPUT FLAG 1502 RTSF0= OPORT0^10+6001 /SKIP ON, CLEAR COMMUNICATIONS PORT 0 OUTPUT FLAG 1503 RTCF0= OPORT0^10+6002 /NOP 1504 RTIE0= OPORT0^10+6005 /PORT 0 OUTPUT INTERRUPT ENABLE PER AC[11] 1505 RTLS0= OPORT0^10+6006 /WRITE COMMUNICATIONS PORT 0 FROM AC 1506 1507 IPORT1= 34 /COMMUNICATIONS PORT 1 INPUT DEVICE CODE 1508 1509 RKFL1= IPORT1^10+6000 /SET COMMUNICATIONS PORT 1 INPUT FLAG 1510 RKSF1= IPORT1^10+6001 /SKIP ON, CLEAR COMMUNICATIONS PORT 1 INPUT FLAG 1511 RKCC1= IPORT1^10+6002 /CLEAR AC 1512 RKIE1= IPORT1^10+6005 /PORT 1 INPUT INTERRUPT ENABLE PER AC[11] 1513 RKRB1= IPORT1^10+6006 /READ COMMUNICATIONS PORT 1 INTO AC 1514 1515 OPORT1= 35 /COMMUNICATIONS PORT 1 OUTPUT DEVICE CODE 1516 1517 RTFL1= OPORT1^10+6000 /SET COMMUNICATIONS PORT 1 OUTPUT FLAG 1518 RTSF1= OPORT1^10+6001 /SKIP ON, CLEAR COMMUNICATIONS PORT 1 OUTPUT FLAG 1519 RTCF1= OPORT1^10+6002 /NOP 1520 RTIE1= OPORT1^10+6005 /PORT 1 OUTPUT INTERRUPT ENABLE PER AC[11] 1521 RTLS1= OPORT1^10+6006 /WRITE COMMUNICATIONS PORT 1 FROM AC 1522 1523 PCON= 36 /PORT STATUS AND CONTROL DEVICE CODE 1524 1525 SMFL= PCON^10+6000 /SET MODEM CHANGE FLAG 1526 MFSK= PCON^10+6001 /SKIP ON, CLEAR MODEM CHANGE FLAG 1527 WCON0= PCON^10+6002 /WRITE COMMUNICATIONS PORT 0 CONTROL REGISTER 1528 PSR= PCON^10+6003 /READ PORT STATUS REGISTER 1529 PMR= PCON^10+6004 /READ PORT MODEM REGISTER 1530 MFIE= PCON^10+6005 /LOAD MODEM CHANGE INTERRUPT ENABLE PER AC[11] 1531 WCON1= PCON^10+6006 /WRITE COMMUNICATIONS PORT 1 CONTROL REGISTER 1532 RACD= PCON^10+6007 /RESET ACTIVE COMMUNICATIONS PORT PER AC[0] 1533 / DECMATE II, ETC. COMMUNICATIONS PORT DEFINITIONS. /046 CJL 1534 1535 PORTIN= 30 /COMMUNICATIONS PORT INPUT DEVICE CODE 1536 1537 IFL= PORTIN^10+6000 /SET COMMUNICATIONS PORT INPUT/OUTPUT FLAG 1538 ISF= PORTIN^10+6001 /SKIP ON, CLEAR COMMUNICATIONS PORT INPUT/OUTPUT FLAG 1539 ICF= PORTIN^10+6002 /NOP (CLEAR THE AC?) 1540 INOP1= PORTIN^10+6003 /(NOP?) 1541 IRS= PORTIN^10+6004 /READ COMMUNICATIONS PORT RECEIVE BUFFER 1542 IIE= PORTIN^10+6005 /COMMUNICATIONS PORT I/O INTERRUPT ENABLE PER AC[11] 1543 IRB= PORTIN^10+6006 /READ COMMUNICATIONS PORT RECEIVE BUFFER 1544 INOP2= PORTIN^10+6007 /(NOP?) 1545 1546 PORTOUT=31 /COMMUNICATIONS PORT OUTPUT DEVICE CODE 1547 1548 DUMBFL= PORTOUT^10+6000 /SET COMMUNICATIONS PORT DUMMY FLAG 1549 DUMBSF= PORTOUT^10+6001 /SKIP ON, CLEAR COMMUNICATIONS PORT DUMMY FLAG 1550 DUMBCF= PORTOUT^10+6002 /NOP (CLEAR THE AC?) 1551 ONOP1= PORTOUT^10+6003 /(NOP?) 1552 OPC= PORTOUT^10+6004 /LOAD COMMUNICATIONS PORT TRANSMIT BUFFER 1553 DUMBIE= PORTOUT^10+6005 /COMMUNICATIONS PORT DUMMY INTERRUPT ENABLE PER AC[11] 1554 OLS= PORTOUT^10+6006 /LOAD COMMUNICATIONS PORT TRANSMIT BUFFER 1555 ONOP2= PORTOUT^10+6007 /(NOP?) 1556 1557 PORTCON=36 /COMMUNICATIONS PORT CONTROL DEVICE CODE 1558 1559 MFL= PORTCON^10+6000 /SET MODEM CHANGE FLAG 1560 MSF= PORTCON^10+6001 /SKIP ON, CLEAR MODEM CHANGE FLAG 1561 MLC= PORTCON^10+6002 /LOAD MODEM CONTROL REGISTER 1562 MSB= PORTCON^10+6003 /LOAD BAUD RATE REGISTER 1563 MRS= PORTCON^10+6004 /READ MODEM STATUS REGISTER 1564 MIE= PORTCON^10+6005 /MODEM CHANGE INTERRUPT ENABLE PER AC[11] 1565 MPSCC= PORTCON^10+6006 /ACCESS MULTIPROTOCOL SERIAL COMMUNICATIONS CONTROLLER 1566 MPRESET=PORTCON^10+6007 /RESET MULTIPROTOCOL SERIAL COMMUNICATIONS CONTROLLER 1567 / MISCELLANEOUS DEFINITIONS. /014 CJL 1568 1569 / STATIC DATE CALCULATIONS. /024 CJL 1570 1571 / THESE EQUATIONS CAUSE PRINTABLE TEXT OF THE DATE PARTICULARS, WHICH ARE GIVEN 1572 / IN OS/8 INTERNAL FORMAT. PROGRAM MAINTAINENCE REQUIRES THE UPDATE OF VERSION, 1573 / REVISION, REVDATE, AND REVDGRP. REVDATE AND REVDGRP SHOULD BE OBTAINED FROM 1574 / THE SYSTEM WHEN RELEASING A NEW VERSION AFTER FIRST CORRECTLY INVOKING THE 1575 / SYSTEM DATE COMMAND. 1576 1577 / VERSION=[ANY NUMBER IN THE RANGE 00-143 (DECIMAL 00-99)] 1578 1579 / REVISIO=[ANY SIX-BIT ALPHA (A-Z); DO NOT FORGET &77] 1580 1581 / REVDATE=[THE CONTENTS OF 17666 (DATE WORD)] 1582 1583 / REVDGRP=[THE CONTENTS OF 07777 (ONLY BITS[3-4] ARE USED)] 1584 1585 1586 1587 IFNDEF REVDATE /REVISION DATE (LOCATION 17666) 1588 1589 IFNDEF REVDGRP /REVISION 8 YEAR DATE GROUP (LOCATION 07777) 1590 1591 IFNDEF REVISIO /REVISION OF KERMIT-12 1592 1593 IFNDEF VERSION /VERSION OF KERMIT-12 1594 1595 1596 DAY= REVDATE&370%10 /REVISION DAY 1597 1598 DGROUP= REVDGRP&600%20 /REVISION DATE GROUP (WHICH 8 YEARS) 1599 1600 MONTH= REVDATE&7400%400 /REVISION MONTH 1601 1602 YEAR= REVDATE&7+DGROUP+106 /REVISION YEAR (SINCE 1900) 1603 FIELD PRGFLD%10 /STARTING FIELD /038 CJL 1604 1605 *0 /START AT THE BEGINNING /014 CJL 1606 1607 000000 0000 INTPC, .-. /PC FROM INTERRUPT (IF ANY) /014 CJL 1608 000001 5400 JMP I INTPC /RETURN WITH INTERRUPTS OFF /014 CJL 1609 1610 000002 0000 ABFLAG, .-. /FILE ABORT FLAG /044 CJL 1611 000003 0000 TABLEJU,.-. /MATCHING VALUE FOR SRCHTABLE ROUTINE /025 CJL 1612 1613 IFNZRO .-4 /014 CJL 1614 000004 0000 ODT, ZBLOCK 7-. /RESERVED FOR OS/8 ODT /014 CJL 000005 0000 000006 0000 1615 000007 0007 RATE, BRATE /BAUD RATE /050 CJL 1616 1617 *10 /GET TO AUTO-INDEX AREA /014 CJL 1618 1619 000010 0000 XR0, .-. /AUTO-INDEX ZERO /014 CJL 1620 000011 0000 XR1, .-. /AUTO-INDEX ONE /014 CJL 1621 000012 0000 DIRXR, PORT /DIRECTORY LOOKUP DEDICATED AUTO-INDEX /028 CJL 1622 /INITIALIZED FOR DECMATE I ONCE-ONLY /050 CJL 1623 1624 / THE REMAINING LOCATIONS THROUGH 000017 MUST BE USED DIRECTLY ONLY, SO AS TO 1625 / NOT CAUSE INADVERTANT AUTO-INDEXING. 1626 1627 / COLUMN COUNTER FOR CONSOLE ROUTINES (NEVER USED INDIRECTLY). /043 CJL 1628 1629 000013 0000 COLUMN, .-. /CONSOLE OUTPUT COLUMN COUNTER /043 CJL 1630 1631 / CONSOLE TERMINAL ECHO SWITCH (NEVER USED INDIRECTLY). /020 CJL 1632 1633 000014 0000 ECHOSW, 0 /0=ECHO, 4000=DON'T ECHO /020 CJL 1634 1635 / LATEST (NON-CONNECT MODE) CHARACTER (NEVER USED INDIRECTLY). /043 CJL 1636 1637 000015 0000 INCHAR, .-. /LATEST INPUT CHARACTER FROM CONSOLE /043 CJL 1638 1639 / CURRENT KERMIT MODE (NEVER USED INDIRECTLY). /025 CJL 1640 1641 000016 0000 KMODE, .-. /CURRENT MODE OF KERMIT /025 CJL 1642 1643 / KERMIT MODE FLAG VALUES. /014 CJL 1644 1645 / MLINE= 1 /KERMIT IS ON-LINE 1646 MSEND= 2 /KERMIT IS IN SEND MODE 1647 MREC= 3 /KERMIT IS IN RECEIVE MODE 1648 1649 / LATEST CHARACTER SENT TO OUTPUT FILE (NEVER USED INDIRECTLY). /020 CJL 1650 1651 000017 0000 LATEST, .-. /LATEST CHARACTER SENT TO OUTPUT FILE /020 CJL 1652 *20 /GET PAST AUTO-INDEX AREA 1653 1654 000020 0000 INFLAG, .-. /DECMATE INPUT AVAILABLE FLAG /046 CJL 1655 000021 0000 OUTFLAG,.-. /DECMATE OUTPUT AVAILABLE FLAG /046 CJL 1656 000022 0000 TEMP, 0 1657 000023 0000 RCHAR, 0 /REMOTE LINE CURRENT INPUT CHAR 1658 000024 0000 SCAN1, 0 / 1659 000025 0000 SCAN2, 0 / 1660 000026 0000 KEYDSP, 0 /DISPATCH ADDRESS FOR KEYWORD MATCH 1661 000027 0000 BININP, 0 /BINARY REGISTER FOR DECIMAL INPUT 1662 000030 0000 PTABLE, 0 / 1663 000031 0000 LPTR, 0 /HOLDS LINE POINTER 1664 000032 0000 STATE, 0 /CURRENT STATE 1665 000033 7773 RETRY, -RETCNT /PACKET ERROR RETRY COUNTER /031 CJL 1666 000034 0000 RTRYC, 0 /USE THIS FOR ACTUAL COUNTER 1667 1668 / CURRENT PACKET I/O DATA. /014 CJL 1669 1670 000035 0000 PAKPTR, 0 /POINTER TO OUTPUT PACKET POINTER 1671 000036 0000 PAKCKS, 0 /HOLDS CURRENT OUTPUT PACKET CHECKSUM TOTAL 1672 000037 0000 CURSEQ, 0 /CURRENT SEQ NUMBER 1673 000040 0000 QFLAG, 0 /NON-ZERO WHEN NO CONTROL QUOTING 1674 1675 / RECEIVE "INIT" REGISTERS. /014 CJL 1676 1677 000041 0176 RMAXL, DEFMAXL+40 /MAX LENGTH FOR DATA PACKET (DEFAULT) 1678 000042 0000 RTIME, 0 /TIME-OUT VALUE 1679 000043 0000 RNPAD, 0 /NUMBER OF PADDING CHARS 1680 000044 0000 RPADC, 0 /CHAR USED FOR PADDING 1681 000045 0055 REOL, DEFEOL /TERMINATOR CHAR USED FOR END OF PACKET 1682 000046 0043 RQCTL, DEFQCTL /CONTROL CHAR PREFIX CHAR 1683 000047 0000 RQBIN, 0 /PARITY CHAR PREFIX CHAR (CHARS GT 177) 1684 000050 0061 RCHKT, DEFCK /CHECKSUM TYPE (DEFAULT TYPE 1) 1685 000051 0000 RREPT, 0 /PREFIX CHAR FOR REPEATED CHARS 1686 000052 0000 RCAPAS, 0 /EXTRA CAPABILITY BIT MASK 1687 1688 / ZBLOCK 4 /RESERVED FOR EXTRA CAPABILITIES /022 CJL 1689 1690 INITEND=. /END OF INIT REGISTERS /022 CJL 1691 1692 000053 0000 HNDADR, 0 /FILE DEVICE HANDLER ADDRESS 1693 000054 0000 FORCEP, 0 /FLAG FOR FORCED OUTPUT OF PACKET WHEN THERE IS 1694 / NO DATA (JUST SOH, LEN, SEQ, AND CHECKSUM) 1695 000055 0000 PRSERR, 0 /HOLDS PARSE POSITION FOR REPORTING ERRORS 1696 000056 0000 PACK6P, 0 /POINTER TO STORAGE OF 6 BIT CHARS 1697 000057 0000 PACK6F, 0 /FLAG FOR WHICH BYTE TO STORE 1698 000060 0000 GET6P, 0 /POINTER USED IN THE GET6 ROUTINE 1699 000061 0000 GET6F, 0 /FLAG USED IN THE GET6 ROUTINE 1700 000062 0000 MOVE4, 0 /COUNTER FOR "MOVE" 1701 000063 0000 INIFLG, 0 /INIT DONE FLAG 1702 000064 0000 MQ, .-. /"MQ" TEMPORARY REGISTER /032 CJL 1703 / FILE NAME PARSE REGISTERS. /014 CJL 1704 1705 000065 0000 FNPTR, 0 /POINTER TO WHERE TO PUT A PARSED FILE NAME 1706 000066 0000 WILDF, 0 /WILD CARD IN FILE NAME FLAG 1707 1708 / FILE INFORMATION. /014 CJL 1709 1710 000067 0000 FSBLK, 0 /FILE START BLOCK 1711 000070 0000 FLEN, 0 /FILE LENGTH 1712 000071 0000 DEVNUM, 0 /PARSED DEVICE NUMBER HERE 1713 000072 0000 OFFLG, 0 /OUTPUT FILE OPEN FLAG 1714 000073 0000 ODNAME, 0 /POINTER TO USER SPECIFIED DEVICE FOR OUTPUT 1715 000074 0000 ODNUMB, 0 /OUTPUT DEVICE NUMBER 1716 1717 / PARITY VARIABLES. /014 CJL 1718 1719 /MARK, 0200 /SET BIT [8] FOR COMMAND INPUTS /A013 1720 /PARITY,0 /PARITY MASK (0=SPACE, 200=MARK) /AM013 1721 1722 / INTERNAL FILE MODE FLAG. /019 CJL 1723 1724 000075 0177 FILMODE,FMODE /ASCII=0177, BINARY=4377 /019 CJL 1725 1726 / UPPER-CASE ONLY FLAG. /023 CJL 1727 1728 000076 0000 UPONLY, LOWER /0=UPPER/LOWER CASE, -40=UPPER-CASE ONLY/030 CJL 1729 1730 / <^C> DISPATCH ADDRESS. /023 CJL 1731 1732 000077 7600 UCADDRE,SBOOT /<^C> ADDRESS SHOULD BE SET AS NECESSARY/023 CJL 1733 1734 / <^P> DISPATCH ADDRESS. /023 CJL 1735 1736 000100 6453 UPADDRE,CHKCLR /<^P> ADDRESS SHOULD BE SET AS NECESSARY/023 CJL 1737 1738 / ESCAPE CHARACTER FOR CONNECT MODE. /025 CJL 1739 1740 000101 0035 ESCHAR, ESCAPE /ESCAPE CHARACTER FOR CONNECT MODE /025 CJL 1741 1742 / FLOW CONTROL FLAG. /026 CJL 1743 1744 000102 7777 FLOWFLA,-FLOW /0=NO FLOW CONTROL, 7777=FLOW CONTROL /049 CJL 1745 /VIA <^S>/<^Q> 1746 1747 / KEYBOARD INPUT ERROR FLAG. /026 CJL 1748 1749 000103 0000 KEYERRO,.-. /0=NO ERROR, NON-ZERO=BAD CHARACTER /026 CJL 1750 /OR BUFFER OVERRUN 1751 / REMOTE LINE INPUT ERROR FLAG. /026 CJL 1752 1753 000104 0000 RINERRO,.-. /0=NO ERROR, NON-ZERO=BAD CHARACTER /026 CJL 1754 /OR BUFFER OVERRUN 1755 1756 / REMOTE LINE OUTPUT FLOW CONTROL WAIT FLAG. /026 CJL 1757 1758 000105 0000 REMWAIT,.-. /0=DON'T WAIT, 4000=WAIT FOR <^Q> /026 CJL 1759 1760 / REMOTE INPUT WAIT FLAG. /026 CJL 1761 1762 / FLAG STATES: 1763 1764 / VALUE ACTION 1765 1766 / 0000 BUFFER IS LESS THAN 3/4 FULL. INPUT FREELY ALLOWED 1767 / WITHOUT FLOW CONTROL RESTRICTIONS. IF BUFFER BECOMES 1768 / 3/4 FULL AND FLOW CONTROL IS IN EFFECT THEN CHANGE 1769 / STATE TO 0001. 1770 1771 / 0001 BUFFER IS NOW 3/4 FULL. OUTPUT <^S> TO REMOTE AND 1772 / THEN CHANGE STATE TO 4000. 1773 1774 / 4000 WAITING FOR BUFFER TO EMPTY TO LESS THAN 1/4 FULL. IF 1775 / FLOW CONTROL IS BEING OBEYED, THEN BUFFER SHOULD NOW 1776 / BE EMPTYING. 1777 1778 / 7777 BUFFER IS NOW LESS THAN 1/4 FULL. OUTPUT <^Q> TO 1779 / REMOTE AND THEN CHANGE STATE TO 0000. 1780 1781 000106 0000 RINWAIT,.-. /REMOTE INPUT WAIT FLAG /026 CJL 1782 1783 / REMOTE LINE OUTPUT BUFFER POINTERS. /026 CJL 1784 1785 000107 0000 REMINSE,.-. /REMOTE OUTPUT INSERTION POINTER /026 CJL 1786 000110 0000 REMREMO,.-. /REMOTE OUTPUT REMOVAL POINTER /026 CJL 1787 / POINTER FOR THE PACKET INPUT AND OUTPUT ROUTINES 1788 1789 SPACK= JMS I . /SEND A PACKET TO REMOTE 1790 000111 0400 SPACK0 /PUT IN A POINTER 1791 1792 FPACK= JMS I . /FORMAT PACKET 1793 000112 0240 FPACK0 /PUT IN THE POINTER 1794 1795 RPACK= JMS I . /RECEIVE A PACKET FROM REMOTE 1796 000113 2200 ILINK /PUT IN A POINTER 1797 1798 / POINTERS FOR OUTPUT ROUTINES 1799 1800 PRI8B= JMS I . /PRINT 8 BIT STRING ON TTY 1801 000114 4400 PRI8B0 /PUT IN THE POINTER 1802 1803 REM8B= JMS I . /SEND 8 BIT STRING DOWN REMOTE LINE 1804 000115 4411 REM8B0 /PUT IN THE POINTER 1805 1806 / MISC. 1807 1808 PACK6= JMS I . /DEFINE CALL TO ROUTINE 1809 000116 2063 PACK60 /POINTER TO ROUTINE 1810 1811 GET6= JMS I . /DEFINE THE INSTRUCTION 1812 000117 4441 GET60 /PUT IN THE POINTER 1813 1814 MOVE= JMS I . /DEFINE CALL TO MOVE ROUTINE 1815 000120 1341 MOVE0 /POINTER 1816 1817 CLEAR= JMS I . /DEFINE CALL FOR "CLEAR" ROUTINE 1818 000121 0437 CLEAR0 /POINTER 1819 PAGE /START ON NEW PAGE /A014 CJL 1820 1821 / KERMIT-12 PROGRAM STARTS HERE. /A014 CJL 1822 1823 000200 5777 CLOOP, JMP I (INITIALIZE) /**** INITIALIZED **** CLA CLL /024 CJL 1824 000201 4577 JMS I [CRESET] /RESET CONSOLE ROUTINE STUFF 1825 000202 3002 DCA ABFLAG /CLEAR ABORT FLAG /044 CJL 1826 000203 3105 DCA REMWAIT /CLEAR REMOTE FLOW CONTROL WAIT /049 CJL 1827 000204 4324 CLDMZAP,JMS DMINIT /INITIALIZE DECMATE PORT /048 CJL 1828 1829 / THE PREVIOUS INSTRUCTION IS FOR DECMATE OPERATION ONLY. THE DEFAULT 1830 / INSTRUCTION IS FOR KL8 INTERFACES ONLY. 1831 1832 *CLDMZAP /OVERLAY DECMATE CODE /048 CJL 1833 1834 000204 7000 CLDMZAP,NOP /DON'T INITIALIZE DECMATE PORT /048 CJL 1835 000205 1007 TAD RATE /GET BAUD RATE 1836 000206 6363 SETBAUD,MSB /SET REMOTE BAUD RATE /050 CJL 1837 1838 / THE PREVIOUS INSTRUCTION IS FOR DECMATE II OPERATION ONLY. /050 CJL 1839 1840 *SETBAUD /OVERLAY DECMATE II CODE /050 CJL 1841 1842 000206 7000 SETBAUD,NOP /NOT APPLICABLE ON DECMATE I /050 CJL 1843 1844 / THE PREVIOUS INSTRUCTION IS FOR DECMATE I OPERATION ONLY. THE DEFAULT 1845 / INSTRUCTION IS FOR KL8 INTERFACES ONLY. 1846 1847 *SETBAUD /OVERLAY DECMATE I CODE /050 CJL 1848 1849 000206 6413 SETBAUD,RSBIOT /SET REMOTE BAUD RATE /050 CJL 1850 000207 4576 JMS I [SCRIBE] /DO A /025 CJL 1851 000210 4411 CRLF /, /025 CJL 1852 000211 4576 JMS I [SCRIBE] /GIVE THEM THE /025 CJL 1853 000212 4457 PRMTMSG /PROMPT MESSAGE /025 CJL 1854 000213 4776 JMS I (LININP) /GET INPUT LINE FROM USER 1855 000214 1375 TAD (CMDTBL) /GET ADDRESS OF PARSE TABLE /M014 CJL 1856 000215 3030 DCA PTABLE /STORE FOR PARSER 1857 000216 1374 TAD (LINBUF) /GET INPUT LINE BUFFER ADDRESS /M014 CJL 1858 1859 000217 4773 CLOOP1, JMS I (KEYPRS) /PARSE OFF A KEYWORD 1860 000220 5235 JMP CLOOP9 /NO MATCH ON KEYWORD 1861 000221 5200 JMP CLOOP /END OF LINE DETECTED 1862 000222 3031 DCA LPTR /STORE POINTER TO NEXT POS ON LINE 1863 000223 4426 JMS I KEYDSP /DISPATCH TO SERVICE 1864 000224 5227 JMP CLOOP7 /ERROR RETURN FROM SERVICE DISPATCH 1865 000225 1031 TAD LPTR /RE-GET COMMAND LINE POINTER 1866 000226 5217 JMP CLOOP1 /CONTINUE LINE PARSE 1867 1868 000227 7450 CLOOP7, SNA /SKIP IF A RETURNING MESSAGE PASSED /029 CJL 1869 000230 5200 JMP CLOOP /JUST GO BACK TO COMMAND LOOP /029 CJL 1870 000231 3233 DCA RETARG /STORE IN-LINE /029 CJL 1871 000232 4576 JMS I [SCRIBE] /CALL MESSAGE PRINT ROUTINE 1872 000233 0000 RETARG, .-. /WILL BE PASSED MESSAGE ADDRESS 1873 000234 5200 JMP CLOOP /KEEP GOING 1874 000235 4576 CLOOP9, JMS I [SCRIBE] /COMPLAIN OF /025 CJL 1875 000236 4011 CMERMSG /BAD COMMAND /025 CJL 1876 000237 5200 JMP CLOOP /GO AGAIN 1877 1878 / ROUTINE TO FORMAT A PACKET OF DATA 1879 / CALL: FPACK 1880 / DATA ADDRESS (DATA MUST ALREADY BE CONTROL/QUOTED AND MUST 1881 / NOT BE LONGER THAN THE LARGEST PACKET) 1882 / PACKET TYPE 1883 1884 000240 0000 FPACK0, 0 1885 000241 7300 CLA CLL /INSURE CLEAR AC 1886 000242 1640 TAD I FPACK0 /GET THE DATA ADDRESS 1887 000243 3321 DCA FP1 /STORE IN SOURCE POINTER 1888 000244 2240 ISZ FPACK0 /BUMP ARGUMENT POINTER 1889 000245 1640 TAD I FPACK0 /NOW GET TYPE 1890 000246 3772 DCA I (RSTYP) /STORE 1891 000247 2240 ISZ FPACK0 /BUMP ARGUMENT POINTER 1892 000250 1371 TAD (RSDTA /GET ADDRESS OF DATA BUFFER 1893 000251 3322 DCA FP2 /STORE IN DESTINATION POINTER 1894 1895 000252 1370 TAD (40+3 /SET FOR LENGTH COUNTER 1896 000253 3767 DCA I (RSLEN) /STORE IN PACKET 1897 000254 3323 DCA FP3 /INIT CHECKSUM 1898 000255 1037 TAD CURSEQ /GET CURRENT SEQ NUMBER 1899 000256 0175 AND [77] /MODULO 64 /014/016 CJL 1900 000257 1174 TAD [40] /TAKE CHAR(SEQUENCE NUMBER) /014/016 CJL 1901 000260 3766 DCA I (RSSEQ) /PUT INTO PACKET 1902 000261 1721 FPACK2, TAD I FP1 /GET A CHAR FROM SOURCE 1903 000262 7510 SPA /SKIP IF NOT END 1904 000263 5274 JMP FPACK3 /END 1905 000264 1323 TAD FP3 /COMBINE WITH CHECKSUM 1906 000265 3323 DCA FP3 /AND RETURN 1907 000266 1721 TAD I FP1 /GET CHAR BACK AGAIN 1908 000267 3722 DCA I FP2 /NOW PUT INTO DESTINATION 1909 000270 2767 ISZ I (RSLEN) /BUMP THE LENGTH 1910 000271 2321 ISZ FP1 /BUMP THE SOURCE POINTER 1911 000272 2322 ISZ FP2 /BUMP THE DESTINATION POINTER 1912 000273 5261 JMP FPACK2 /LOOP 1913 000274 7300 FPACK3, CLA CLL /CLEAR THE AC 1914 000275 1323 TAD FP3 /GET CALCULATED CHECKSUM 1915 000276 1767 TAD I (RSLEN) /INCLUDE THE LENGTH 1916 000277 1766 TAD I (RSSEQ) /AND THE SEQUENCE 1917 000300 1772 TAD I (RSTYP) /AND THE TYPE 1918 000301 4573 JMS I [CKSUM] /GET IT CORRECT 1919 000302 3722 DCA I FP2 /STORE WITH PACKET 1920 000303 2322 ISZ FP2 /BUMP PACKET POINTER 1921 000304 1045 TAD REOL /GET ANY END OF LINE TO INCLUDE 1922 000305 1172 TAD [-40] /MAKE IT A REAL CHARACTER /014/016 CJL 1923 000306 7450 SNA /SKIP IF EOL CHAR REQUIRED 1924 000307 5312 JMP FPACK4 /NO EOL CHAR 1925 000310 3722 DCA I FP2 /STORE EOL CHAR WITH PACKET 1926 000311 2322 ISZ FP2 /BUMP POINTER 1927 000312 7240 FPACK4, NL7777 /SET -1 /032 CJL 1928 000313 3722 DCA I FP2 /PACKET NOW COMPLETE 1929 000314 1033 TAD RETRY /SET UP RE-TRY COUNTER 1930 000315 3034 DCA RTRYC 1931 000316 2037 ISZ CURSEQ /BUMP SEQUENCE NUMBER FOR NEXT TIME 1932 000317 7000 NOP /PROTECT ISZ 1933 000320 5640 JMP I FPACK0 /RETURN 1934 1935 000321 0000 FP1, 0 /POINTER TO SOURCE DATA 1936 000322 0000 FP2, 0 /POINTER TO PACKET BUFFER 1937 000323 0000 FP3, 0 /RUNNING CHECKSUM 1938 1939 / DECMATE INITIALIZE ROUTINE. /048 CJL 1940 1941 000324 0000 DMINIT, .-. /DECMATE PORT INITIALIZE ROUTINE/048 CJL 1942 000325 1360 DMI01, TAD DM234/(234) /GET SCD ENABLE VALUE /050 CJL 1943 000326 6362 DMI02, WCON0 /WRITE CONTROL REGISTER 0 (1) /050 CJL 1944 000327 7200 DMI03, NL0000 /INDICATE PORT 0 (1) /050 CJL 1945 000330 6367 DMI04, RACD /RESET THE ACTIVE PORT /050 CJL 1946 000331 2357 DMI05, ISZ DMWASTE /WASTE /050 CJL 1947 000332 5331 DMI06, JMP DMI05 /SOME TIME /050 CJL 1948 000333 2357 DMI07, ISZ DMWASTE /WASTE /050 CJL 1949 000334 5333 DMI08, JMP DMI07 /SOME TIME /050 CJL 1950 000335 6310 DMI09, RTFL0 /SET PORT 0 (1) OUTPUT FLAG /050 CJL 1951 000336 1362 DMI10, TAD DM2516/(2516) /SETUP FOR 8 BITS, NO PARITY /050 CJL 1952 000337 4351 DMI11, JMS DMSEND /SEND TO MODE REGISTER 1 /050 CJL 1953 000340 1007 DMI12, TAD RATE /GET BAUD RATE /050 CJL 1954 000341 1361 DMI13, TAD DM2460/(2460) /ADD ON CLOCK ENABLE VALUES /050 CJL 1955 000342 4351 DMI14, JMS DMSEND /SEND TO MODE REGISTER 2 /050 CJL 1956 000343 1363 DMI15, TAD DM3425/(3425) /GET ENABLE AND RESET VALUE /050 CJL 1957 000344 4351 DMI16, JMS DMSEND /SEND TO COMMAND REGISTER /050 CJL 1958 000345 6306 DMI17, RKRB0 /DO A DUMMY READ ON PORT 0 (1) /050 CJL 1959 / THE PREVIOUS INSTRUCTIONS ARE FOR DECMATE I OPERATION ONLY. THE DEFAULT 1960 / INSTRUCTIONS ARE FOR DECMATE II, ETC. INTERFACES ONLY. 1961 1962 *DMI01 /OVERLAY DECMATE I CODE /050 CJL 1963 1964 000325 2357 DMI01, ISZ DMWASTE /WASTE /048 CJL 1965 000326 5325 DMI02, JMP DMI01 /SOME TIME /048 CJL 1966 000327 2357 DMI03, ISZ DMWASTE /WASTE /048 CJL 1967 000330 5327 DMI04, JMP DMI03 /SOME TIME /048 CJL 1968 000331 6301 DMI05, ISF /SKIP ON AND CLEAR PORT FLAG /048 CJL 1969 000332 0050 DM50, 50/NOP /JUST IN CASE /048 CJL 1970 000333 6306 DMI07, IRB /READ THE PORT BUFFER /048 CJL 1971 000334 7200 DMI08, CLA /CLEAN UP /048 CJL 1972 000335 1332 DMI09, TAD DM50/(50) /GET OUTPUT INTERRUPT VALUE /048 CJL 1973 000336 6366 DMI10, MPSCC /CLEAR OUTPUT INTERRUPT /048 CJL 1974 000337 1365 DMI11, TAD (60-50) /GET ERROR RESET VALUE /048 CJL 1975 000340 6366 DMI12, MPSCC /CLEAR OVERRUN ERRORS /048 CJL 1976 000341 1365 DMI13, TAD (70-60) /SET END OF INTERRUPT VALUE /048 CJL 1977 000342 6366 DMI14, MPSCC /CLEAR THE INTERRUPT /048 CJL 1978 000343 3021 DMI15, DCA OUTFLAG /INDICATE OUTPUT IS AVAILABLE /048 CJL 1979 000344 3020 DMI16, DCA INFLAG /CLEAR INPUT AVAILABLE FLAG /048 CJL 1980 000345 5724 DMI17, JMP I DMINIT /RETURN /048 CJL 1981 1982 / DECMATE I INITIALIZE CODE CONTINUES HERE. /050 CJL 1983 1984 000346 6310 DMISET, RTFL0 /SET PORT 0 (1) OUTPUT FLAG /050 CJL 1985 000347 7200 CLA /CLEAN UP /050 CJL 1986 000350 5724 JMP I DMINIT /RETURN /050 CJL 1987 1988 000351 0000 DMSEND, .-. /DECMATE I SEND ROUTINE /050 CJL 1989 000352 6311 DMISKP, RTSF0 /SKIP ON PORT 0 (1) OUTPUT FLAG /050 CJL 1990 000353 5352 JMP DMISKP /WAIT FOR IT /050 CJL 1991 000354 6316 DMIOUT, RTLS0 /SEND TO PORT 0 (1) REGISTER /050 CJL 1992 000355 7200 CLA /CLEAN UP /050 CJL 1993 000356 5751 JMP I DMSEND /RETURN /050 CJL 1994 1995 000357 0000 DMWASTE,.-. /TIMER TEMPORARY /050 CJL 1996 000360 0234 DM234, 234 /CONSTANT 0234 /050 CJL 1997 000361 2460 DM2460, 2460 /CONSTANT 2460 /050 CJL 1998 000362 2516 DM2516, 2516 /CONSTANT 2516 /050 CJL 1999 000363 3425 DM3425, 3425 /CONSTANT 3425 /050 CJL 2000 2001 000365 0010 PAGE 000366 6224 000367 6223 000370 0043 000371 6226 000372 6225 000373 1261 000374 2727 000375 6000 000376 2000 000377 6600 2002 / ROUTINE TO SEND THE FORMATTED PACKET /027 CJL 2003 / ARGUMENTS: CALL+1 NON-ZERO = AWAIT RESPONSE 2004 / ZERO = DO NOT AWAIT RESPONSE 2005 / CALL + 2 DISPATCH TABLE-2 /027 CJL 2006 2007 000400 0000 SPACK0, 0 2008 000401 4515 REM8B; RSBUF /SEND PACKET JUST COMPLETED 000402 6222 2009 000403 1600 TAD I SPACK0 /DO WE GET A RESPONSE? 2010 000404 2200 ISZ SPACK0 /BUMP POINTER PAST ARGUMENT 2011 000405 7650 SNA CLA /SKIP IF YES 2012 000406 5600 JMP I SPACK0 /ALL DONE HERE 2013 000407 4513 RPACK /GET PACKET BACK FROM REMOTE 2014 000410 1600 TAD I SPACK0 /DID WE WANT A DISPATCH? 2015 000411 2200 ISZ SPACK0 /BUMP PAST ARGUMENT 2016 000412 7450 SNA /SKIP IF YES 2017 000413 5600 JMP I SPACK0 /EXIT IF NO 2018 000414 3216 DCA SPACARG /STORE IN-LINE /031 CJL 2019 000415 4252 JMS DISPATCH /CALL DISPATCH ROUTINE /031 CJL 2020 000416 0000 SPACARG,.-. /WILL BE DISPATCH TABLE-2 /031 CJL 2021 000417 5600 JMP I SPACK0 /NOT FOUND, GOTTA RETURN 2022 2023 / CONSOLE RESET ROUTINE. /024 CJL 2024 2025 000420 0000 CRESET, .-. /CONSOLE RESET ROUTINE 2026 000421 7300 CLA CLL /CLEAN UP 2027 000422 3014 DCA ECHOSW /ENABLE OUTPUT ECHO 2028 000423 1377 TAD (UPCPRT) /ALLOW THEM TO 2029 000424 3077 DCA UCADDRESS /RESTART VIA <^C> 2030 000425 1171 TAD [CLOOP] /ALLOW THEM TO 2031 000426 3100 DCA UPADDRESS /RESTART VIA <^P> 2032 000427 5620 JMP I CRESET /RETURN 2033 2034 / ALTERNATE CONSOLE RESET ROUTINE. /025 CJL 2035 2036 000430 0000 CREST2, .-. /ALTERNATE CONSOLE RESET ROUTINE 2037 000431 4220 JMS CRESET /CLEAR AC AND ENABLE OUTPUT ECHO 2038 000432 1376 TAD (KCCZAP) /RENDER <^C> 2039 000433 3077 DCA UCADDRESS /TOTALLY HARMLESS 2040 000434 1375 TAD (CHKCLR) /MAKE <^P> PRINT "^P" 2041 000435 3100 DCA UPADDRESS /AND THEN GO AWAY 2042 000436 5630 JMP I CREST2 /RETURN 2043 / ROUTINE TO CLEAR WORDS OF MEMORY 2044 / ENTER WITH: AC = MINUS NUMBER OF WORDS TO CLEAR 2045 / MQ = ADDRESS OF WHERE TO START THE CLEAR 2046 2047 000437 0000 CLEAR0, 0 2048 000440 3250 DCA CLEAR5 /STORE COUNT OF WORDS 2049 000441 1064 TAD MQ /GET ADDRESS TO CLEAR /032 CJL 2050 000442 3251 DCA CLEAR6 /STORE IN POINTER 2051 000443 3651 DCA I CLEAR6 /ZERO A WORD 2052 000444 2251 ISZ CLEAR6 /BUMP POINTER 2053 000445 2250 ISZ CLEAR5 /BUMP COUNTER 2054 000446 5243 JMP .-3 /LOOP 2055 000447 5637 JMP I CLEAR0 /DONE 2056 2057 000450 0000 CLEAR5, 0 /TEMP FOR "CLEAR" ROUTINE 2058 000451 0000 CLEAR6, 0 /TEMP FOR "CLEAR" ROUTINE 2059 2060 / ROUTINE TO DISPATCH TO ROUTINE BASED ON VALUE OF "RRTYP". /027 CJL 2061 2062 / CALLING SEQUENCE: 2063 2064 / CLA /AC MUST BE CLEAR 2065 / JMS DISPATCH /CALL ROUTINE 2066 / ADDRESS-2 /DISPATCH TABLE ADDRESS-2 2067 / NO MATCH RETURN /RETURNS HERE WITH CLEAR AC IF NO MATCH 2068 2069 / CALL WILL DISPATCH TO THE CORRESPONDING ROUTINE ON A MATCH IN THE SPECIFIED 2070 / TABLE (WHICH ENDS WITH ZERO) WITH A CLEAR AC. 2071 2072 000452 0000 DISPATC,.-. /MATCH "RRTYP" AND DISPATCH ROUTINE 2073 000453 7200 CLA /JUST IN CASE /031 CJL 2074 000454 1652 TAD I DISPATCH /GET PASSED ARGUMENT 2075 000455 2252 ISZ DISPATCH /BUMP PAST THE ARGUMENT 2076 000456 3262 DCA DISPA2 /SAVE PASSED ARGUMENT IN-LINE 2077 000457 1774 TAD I (RRTYP) /GET VALUE OF "RRTYP" 2078 000460 7041 CIA /INVERT FOR TESTING 2079 000461 4570 JMS I [SRCHTABLE] /CALL TABLE SEARCH ROUTINE 2080 000462 0000 DISPA2, .-. /WILL BE TABLE ADDRESS-2 2081 000463 7650 SNA CLA /SKIP IF MATCH FOUND 2082 000464 5652 JMP I DISPATCH /RETURN ON NO MATCH 2083 000465 5403 JMP I TABLEJUMP /DISPATCH TO MATCHING ADDRESS 2084 / ROUTINE TO PUT CHARS INTO A BUFFER TO GET READY TO FORMAT A PACKET. 2085 / ENTER WITH CHAR IN THE AC; IF THE CHAR NEEDS CONTROL QUOTING, IT WILL BE ADDED 2086 / EXIT + 2 IF EVERYTHING IS OK 2087 / EXIT + 1 IF BUFFER IS FULL 2088 2089 000466 0000 OPBUF, 0 /PUT CHARACTERS INTO BUFFER FOR PACKET ROUTINE 2090 000467 4773 JMS I (OPRE) /CHECK FOR PREFIX 2091 000470 5276 JMP OPBUF1 /NO PREFIX 2092 000471 3314 DCA OP1 /SAVE CONVERTED CHAR 2093 000472 1046 TAD RQCTL /GET QUOTE CHAR TO USE 2094 000473 3715 DCA I OP2 /PUT RETURNED PREFIX INTO BUFFER 2095 000474 2315 ISZ OP2 /BUMP POINTER 2096 000475 1314 TAD OP1 /GET BACK CONVERTED CHAR 2097 000476 3715 OPBUF1, DCA I OP2 /PUT INTO BUFFER 2098 000477 2315 ISZ OP2 /BUMP POINTER 2099 000500 7240 NL7777 /SET -1 /032 CJL 2100 000501 3715 DCA I OP2 /ALWAYS TERMINATE BUFFER 2101 000502 1041 TAD RMAXL /GET MAX BUFFER LENGTH 2102 000503 1372 TAD (-40+HOLDBF-4 / 2103 000504 7041 CIA 2104 000505 1315 TAD OP2 /COMPARE WITH WHAT WE HAVE 2105 000506 7710 SPA CLA /SKIP IF NO ROOM 2106 000507 5312 JMP OPBUF2 /HAVE ROOM 2107 000510 4316 JMS INIOPB /RESET BUFFER 2108 000511 5666 JMP I OPBUF /TAKE RETURN + 1 2109 2110 000512 2266 OPBUF2, ISZ OPBUF /BUMP RETURN FOR BUFFER NOT FULL 2111 000513 5666 JMP I OPBUF /DONE 2112 2113 000514 0000 OP1, 0 /TEMP LOCATION 2114 000515 1000 OP2, HOLDBF /POINTER FOR HOLD BUFFER 2115 2116 / ROUTINE TO RE-SET THE HOLD BUFFER. 2117 2118 000516 0000 INIOPB, 0 2119 000517 1371 TAD (HOLDBF /RE-SET BUFFER POINTER 2120 000520 3315 DCA OP2 2121 000521 5716 JMP I INIOPB 2122 2123 / ROUTINE TO CALCULATE A 1 BYTE CHECKSUM. 2124 2125 000522 0000 CKSUM, 0 2126 000523 3335 DCA CKSUM1 /STORE TEMP 2127 000524 1335 TAD CKSUM1 /GET BACK 2128 000525 7012 RTR;RTR;RTR /GET TWO HIGHEST INTO TWO LOWEST /032 CJL 000526 7012 000527 7012 2129 000530 0370 AND (3 /KEEP ONLY BITS 0-1 2130 000531 1335 TAD CKSUM1 /GET ORIGINAL 2131 000532 0175 AND [77] /KEEP ONLY BITS 0-5 /016 CJL 2132 000533 1174 TAD [40] /MAKE A CHAR(CHECKSUM) 2133 000534 5722 JMP I CKSUM /DONE, RETURN IN AC 2134 2135 000535 0000 CKSUM1, 0 /TEMP FOR "CKSUM" 2136 000570 0003 PAGE 000571 1000 000572 0734 000573 1134 000574 6065 000575 6453 000576 6501 000577 6544 2137 / ROUTINE TO INPUT CHARS FROM REMOTE UNTIL A "SOH" CHAR IS FOUND. 2138 2139 000600 0000 GETSOH, 0 2140 000601 4230 JMS COMIN /GET A CHARACTER FROM THE REMOTE LINE /046 CJL 2141 000602 5600 JMP I GETSOH /TIME-OUT 2142 000603 0167 AND [177] /IGNORE PARITY BIT /034 CJL 2143 000604 1377 TAD (-CNTRLA) /COMPARE WITH "SOH" /034 CJL 2144 000605 7640 SZA CLA /SKIP IF SAME 2145 000606 5201 JMP GETSOH+1 /LOOP TILL WE GET ONE 2146 000607 2200 ISZ GETSOH /BUMP FOR GOOD RETURN 2147 000610 5600 JMP I GETSOH /GOT ONE, DONE 2148 2149 2150 / ROUTINE TO GET A CHAR FROM THE REMOTE LINE AND UPDATE CHECKSUM. 2151 2152 000611 0000 GETIR, 0 2153 000612 4230 JMS COMIN /GET A CHARACTER FROM THE REMOTE LINE /046 CJL 2154 000613 5611 JMP I GETIR /TIME-OUT RETURN 2155 000614 3227 DCA GETIR1 /STORE TEMP 2156 000615 1227 TAD GETIR1 /GET CHAR BACK 2157 000616 1776 TAD I (ILINK9) /ADD CHECKSUM 2158 000617 3776 DCA I (ILINK9) /RETURN UPDATED CHECKSUM 2159 000620 1227 TAD GETIR1 /RE-GET CURRENT INPUT CHAR 2160 000621 1166 TAD [-15] /CHECK FOR A RETURN 2161 000622 7650 SNA CLA /SKIP IF NOT A RETURN 2162 000623 5611 JMP I GETIR /WAS A RETURN, TAKE EXIT + 1 2163 000624 1227 TAD GETIR1 /RE-GET CHAR FOR RETURN 2164 000625 2211 ISZ GETIR /BUMP FOR GOOD RETURN 2165 000626 5611 JMP I GETIR /AND RETURN IN THE AC 2166 2167 000627 0000 GETIR1, 0 /TEMP LOCAL TO "GETIR" 2168 / REMOTE COMMUNICATIONS ROUTINES FOR NON-CONNECT USAGE. /046 CJL 2169 2170 / REMOTE INPUT ROUTINE. /046 CJL 2171 2172 000630 0000 COMIN, .-. /REMOTE INPUT ROUTINE /046 CJL 2173 000631 7200 CLA /CLEAN UP /046 CJL 2174 IFNDEF IOCON < /NORMAL TIMEOUT /053 DJG 2175 000632 1166 TAD [-15] /SETUP THE /049 CJL 2176 > /053 DJG 2177 IFDEF IOCON < /NEED LONGER TIMEOUT WITHOUT CTRL-C /053 DJG 2178 TAD [-50] /CHECK /053 DJG 2179 > /053 DJG 2180 000633 3264 DCA TIMEOUT /TIME-OUT FACTOR /046 CJL 2181 000634 1020 INLUP, TAD INFLAG /IS INPUT AVAILABLE? /046 CJL 2182 2183 / THE ABOVE INSTRUCTION IS FOR DECMATE II USE ONLY. THE DEFAULT INSTRUCTION IS 2184 / FOR KL8 INTERFACES. 2185 2186 *INLUP /OVERLAY DECMATE II CODE /049 CJL 2187 2188 000634 7410 INLUP, SKP /WE'RE NOT A DECMATE II /049 CJL 2189 000635 7650 SNA CLA /SKIP IF INPUT AVAILABLE (ON DECMATE II)/049 CJL 2190 000636 5246 INSKIP, JMP NOTYET /JUMP IF NOT /049 CJL 2191 000637 3020 INLUP1, DCA INFLAG /CLEAR INPUT AVAILABILITY FLAG /049 CJL 2192 000640 6306 INREAD, IRB /GET THE CHARACTER /049 CJL 2193 2194 / THE ABOVE INSTRUCTIONS ARE FOR DECMATE II USE ONLY. THE DEFAULT INSTRUCTIONS 2195 / ARE FOR KL8 INTERFACES. 2196 2197 *INSKIP /OVERLAY DECMATE II CODE /049 CJL 2198 2199 000636 6401 INSKIP, RKSFIOT /INPUT FLAG UP? /049 CJL 2200 000637 5246 INLUP1, JMP NOTYET /NO, CHECK FOR ABORT, ETC. /049 CJL 2201 000640 6406 INREAD, RKRBIOT /YES, READ IN THE CHARACTER /049 CJL 2202 000641 0167 AND [177] /JUST SEVEN-BIT /046 CJL 2203 000642 3023 DCA RCHAR /SAVE THE CHARACTER /046 CJL 2204 000643 1023 TAD RCHAR /GET IT BACK /046 CJL 2205 000644 2230 ISZ COMIN /BUMP TO GOOD RETURN /046 CJL 2206 000645 5630 JMP I COMIN /RETURN /046 CJL 2207 2208 / COMES HERE IF INPUT NOT AVAILABLE. 2209 2210 NOTYET, IFNDEF IOCON < /CANT CHECK FOR ABORT IF IO ON CONSOLE /053 DJG 2211 000646 4775 JMS I (CTLCTST) /CHECK FOR <^C>, ETC. /044 CJL 2212 000647 1165 TAD [-CNTRLZ] /COMPARE POSSIBLE CHARACTER TO <^Z> /044 CJL 2213 000650 7440 SZA /SKIP IF IT ALREADY MATCHES /044 CJL 2214 000651 1164 TAD [-CNTRLX+CNTRLZ]/ELSE COMPARE TO <^X> /044 CJL 2215 000652 7650 SNA CLA /SKIP IF NEITHER ABORT CHARACTER /049 CJL 2216 000653 2002 ISZ ABFLAG /SET ABORT FLAG /049 CJL 2217 000654 7410 SKP /SKIP IF NOT TOO MANY TIMES /049 CJL 2218 000655 5253 JMP .-2 /ENSURE FLAG SETTING /049 CJL 2219 > /END CANT CHECK FOR ABORT /053 DJG 2220 000656 4323 INSTATU,JMS UPSTATUS /UPDATE THE PORT STATUS /049 CJL 2221 2222 / THE ABOVE INSTRUCTION IS FOR DECMATE II USE ONLY. THE DEFAULT INSTRUCTION IS 2223 / FOR KL8 INTERFACES. 2224 2225 *INSTATUS /OVERLAY DECMATE II CODE /049 CJL 2226 2227 000656 7000 INSTATU,NOP /WE'RE NOT A DECMATE II /049 CJL 2228 000657 2272 ISZ WASTIME /WASTE SOME TIME /046 CJL 2229 000660 5234 JMP INLUP /KEEP TRYING /046 CJL 2230 000661 2264 ISZ TIMEOUT /WAITING TOO LONG? /046 CJL 2231 000662 5234 JMP INLUP /NO, KEEP TRYING /046 CJL 2232 000663 5630 JMP I COMIN /YES, TAKE ERROR RETURN /046 CJL 2233 2234 / FLOW-CONTROL STATUS ROUTINE. /049 CJL 2235 2236 000664 0000 GETFLOW,.-. /GET FLOW-CONTROL STATUS 2237 000665 4323 GETFL1, JMS UPSTATUS /UPDATE THE CURRENT STATUS 2238 2239 / THE ABOVE INSTRUCTION IS FOR DECMATE II USE ONLY. THE DEFAULT INSTRUCTION IS 2240 / FOR KL8 INTERFACES. 2241 2242 *GETFL1 /OVERLAY DECMATE II CODE 2243 2244 000665 7000 GETFL1, NOP /WE'RE NOT A DECMATE II 2245 000666 4774 JMS I (RINGET) /GET REMOTE CHARACTER (IF ANY) 2246 000667 7200 CLA /THROW IT AWAY 2247 000670 1105 TAD REMWAIT /GET REMOTE FLOW STATUS 2248 000671 5664 JMP I GETFLOW /RETURN 2249 2250 / REMOTE OUTPUT ROUTINE. /046 CJL 2251 2252 000672 0000 COMOUT, .-. /REMOTE OUTPUT ROUTINE /046 CJL 2253 000673 3230 DCA OUTEMP /SAVE PASSED VALUE /046 CJL 2254 000674 1166 CMRESET,TAD [-15] /SETUP THE /049 CJL 2255 000675 3351 DCA OTIME /TIME-OUT COUNTER /049 CJL 2256 000676 4264 COMWAIT,JMS GETFLOW /GET REMOTE WAIT STATUS /049 CJL 2257 2258 / THE ABOVE INSTRUCTION IS FOR DECMATE USE ONLY. THE DEFAULT INSTRUCTION IS FOR 2259 / KL8 INTERFACES. 2260 2261 *COMWAIT /OVERLAY DECMATE CODE /049 CJL 2262 2263 000676 7240 COMWAIT,NL7777 /SETUP FOR FLOW CONTROL FLAG LOAD /049 CJL 2264 000677 0102 AND FLOWFLAG /SHOULD WE WAIT FOR REMOTE FLOW CONTROL?/049 CJL 2265 000700 7650 SNA CLA /SKIP IF SO /049 CJL 2266 000701 5305 JMP NOWAIT /JUMP IF NOT /049 CJL 2267 000702 4264 FLOWAIT,JMS GETFLOW /GET REMOTE WAIT STATUS /049 CJL 2268 000703 7640 SZA CLA /SKIP IF NOT WAITING /049 CJL 2269 000704 5302 JMP FLOWAIT /JUMP IF STILL WAITING /049 CJL 2270 000705 1021 NOWAIT, TAD OUTFLAG /CHECK IF OUTPUT IS AVAILABLE /049 CJL 2271 000706 7650 CMOUT1, SNA CLA /SKIP IF SO /049 CJL 2272 000707 5315 CMOUT2, JMP OWAIT /JUMP IF NOT /049 CJL 2273 000710 3021 DM1AND, DCA OUTFLAG /CLEAR OUTPUT AVAILABILITY FLAG /049 CJL 2274 000711 1230 CMOUT3, TAD OUTEMP /GET THE PASSED VALUE /049 CJL 2275 000712 6316 CMOUT4, OLS /OUTPUT IT /049 CJL 2276 2277 / THE ABOVE INSTRUCTIONS ARE FOR DECMATE II USE ONLY. THE DEFAULT INSTRUCTIONS 2278 / ARE FOR KL8 INTERFACES. 2279 2280 *NOWAIT /OVERLAY DECMATE II CODE /049 CJL 2281 2282 000705 6411 NOWAIT, RTSFIOT /OUTPUT FLAG UP? /049 CJL 2283 000706 5315 CMOUT1, JMP OWAIT /NO, WAIT FOR IT THERE /049 CJL 2284 2285 / THE ABOVE INSTRUCTION IS FOR DECMATE I USE ONLY. THE DEFAULT INSTRUCTION IS 2286 / FOR KL8 INTERFACES. 2287 2288 *CMOUT1 /OVERLAY DECMATE I CODE /049 CJL 2289 2290 000706 5276 CMOUT1, JMP COMWAIT /NO, WAIT FOR IT /049 CJL 2291 000707 1230 CMOUT2, TAD OUTEMP /YES, GET PASSED VALUE /049 CJL 2292 000710 0163 DM1AND, AND [377] /ENSURE EIGHT BITS (FOR DECMATE I) /049 CJL 2293 2294 / THE ABOVE INSTRUCTION IS FOR DECMATE I USE ONLY. THE DEFAULT INSTRUCTION IS 2295 / FOR KL8 INTERFACES. 2296 2297 *DM1AND /OVERLAY DECMATE I CODE /049 CJL 2298 2299 000710 7410 DM1AND, SKP /WE'RE NOT A DECMATE I /049 CJL 2300 000711 1162 CMOUT3, TAD [400] /FORCE OUTPUT WRITE FOR DECMATE I /049 CJL 2301 000712 6416 CMOUT4, RTLSIOT /OUTPUT THE CHARACTER /049 CJL 2302 000713 7200 CLA /CLEAN UP /049 CJL 2303 000714 5672 JMP I COMOUT /RETURN /049 CJL 2304 2305 / COMES HERE IF OUTPUT NOT READY. /049 CJL 2306 2307 000715 2352 OWAIT, ISZ OWASTE /WASTE SOME TIME /049 CJL 2308 000716 5276 JMP COMWAIT /KEEP TRYING /049 CJL 2309 000717 2351 ISZ OTIME /WAITING TOO LONG? /049 CJL 2310 000720 5276 JMP COMWAIT /NO, KEEP TRYING /049 CJL 2311 000721 4773 JMS I (DMINIT) /YES, RESET EVERYTHING /049 CJL 2312 000722 5274 JMP CMRESET /TRY, TRY AGAIN /049 CJL 2313 / DECMATE II, ETC. STATUS UPDATE ROUTINE. /046 CJL 2314 2315 000723 0000 UPSTATU,.-. /UPDATE THE STATUS ROUTINE /046 CJL 2316 000724 6301 ISF /COMMUNICATIONS PORT FLAG UP? /046 CJL 2317 000725 5723 JMP I UPSTATUS /NO, RETURN /046 CJL 2318 000726 7330 NL4000 /SETUP READ OF REGISTER ZERO /046 CJL 2319 000727 6366 MPSCC /TELL THE MPSCC CHIP /046 CJL 2320 000730 7200 CLA /CLEAN UP /046 CJL 2321 000731 6366 MPSCC /READ REGISTER ZERO NOW /046 CJL 2322 000732 0372 AND (5) /JUST INPUT AND OUTPUT BITS /046 CJL 2323 000733 7110 CLL RAR /MOVE INPUT TO LINK /046 CJL 2324 000734 7650 SNA CLA /SKIP IF OUTPUT INTERRUPT /046 CJL 2325 000735 5341 JMP INCHK /JUMP IF NOT /046 CJL 2326 000736 1371 TAD (050) /GET OUTPUT CLEAR VALUE /046 CJL 2327 000737 6366 MPSCC /CLEAR THE OUTPUT INTERRUPT /046 CJL 2328 000740 3021 DCA OUTFLAG /INDICATE OUTPUT AVAILABLE NOW /046 CJL 2329 000741 7204 INCHK, CLA RAL /GET RECEIVE STATUS /046 CJL 2330 000742 7440 SZA /SKIP IF INPUT NOT AVAILABLE RIGHT NOW /046 CJL 2331 000743 3020 DCA INFLAG /INDICATE NEW INPUT STATUS /046 CJL 2332 000744 7200 CLA /CLEAN UP EITHER WAY /046 CJL 2333 000745 1370 TAD (070) /GET END OF INTERRUPT VALUE /046 CJL 2334 000746 6366 MPSCC /CLEAR THE INTERRUPT /046 CJL 2335 000747 7200 CLA /CLEAN UP /046 CJL 2336 000750 5723 JMP I UPSTATUS /RETURN /046 CJL 2337 2338 AND377= AND [377] /INSTRUCTION CONSTANT /049 CJL 2339 OUTEMP= COMIN /OUTPUT ROUTINE TEMPORARY /049 CJL 2340 TIMEOUT=GETFLOW /TIME-OUT TEMPORARY /049 CJL 2341 WASTIME=COMOUT /TIME-OUT TEMPORARY /049 CJL 2342 2343 000751 0000 OTIME, .-. /TIME-OUT TEMPORARY /049 CJL 2344 000752 0000 OWASTE, .-. /TIME-OUT TEMPORARY /049 CJL 2345 2346 000770 0070 PAGE 000771 0050 000772 0005 000773 0324 000774 5502 000775 6466 000776 2262 000777 7777 2347 2348 / HOLD BUFFER FOR CHAR OUTPUT 2349 2350 DECIMAL 2351 2352 001000 0000 HOLDBF, ZBLOCK 92 001001 0000 001002 0000 001003 0000 001004 0000 001005 0000 001006 0000 001007 0000 001010 0000 001011 0000 001012 0000 001013 0000 001014 0000 001015 0000 001016 0000 001017 0000 001020 0000 001021 0000 001022 0000 001023 0000 001024 0000 001025 0000 001026 0000 001027 0000 001030 0000 001031 0000 001032 0000 001033 0000 001034 0000 001035 0000 001036 0000 001037 0000 001040 0000 001041 0000 001042 0000 001043 0000 001044 0000 001045 0000 001046 0000 001047 0000 001050 0000 001051 0000 001052 0000 001053 0000 001054 0000 001055 0000 001056 0000 001057 0000 001060 0000 001061 0000 001062 0000 001063 0000 001064 0000 001065 0000 001066 0000 001067 0000 001070 0000 001071 0000 001072 0000 001073 0000 001074 0000 001075 0000 001076 0000 001077 0000 001100 0000 001101 0000 001102 0000 001103 0000 001104 0000 001105 0000 001106 0000 001107 0000 001110 0000 001111 0000 001112 0000 001113 0000 001114 0000 001115 0000 001116 0000 001117 0000 001120 0000 001121 0000 001122 0000 001123 0000 001124 0000 001125 0000 001126 0000 001127 0000 001130 0000 001131 0000 001132 0000 001133 0000 2353 2354 OCTAL 2355 / ROUTINE TO CHECK FOR CONTROL PREFIX. 2356 / ENTER WITH CHAR TO CHECK IN THE AC. 2357 / EXIT + 1 WITH CHAR IN THE AC IF NO PREFIX QUOTING. 2358 / EXIT + 2 WITH PROPER CHAR IN THE AC AND QUOTING IS REQUIRED. 2359 2360 001134 0000 OPRE, 0 /CHECK FOR CONTROL PREFIX ROUTINE 2361 001135 3367 DCA PRETEMP /SAVE THE CHARACTER /032 CJL 2362 001136 1040 TAD QFLAG /CHECK FOR IN CTRL QUOTE MODE 2363 001137 7640 SZA CLA /SKIP IF YES 2364 001140 5360 JMP OPRE1 /NO QUOTE PREFIX 2365 001141 1367 TAD PRETEMP /GET THE CHARACTER /032 CJL 2366 001142 0172 AND [7740] /QUICK CHECK FOR <40 /014/016 CJL 2367 001143 7650 SNA CLA /SKIP IF NOT CONTROL 2368 001144 5362 JMP OPRE2 /PREFIX QUOTE 2369 001145 1367 TAD PRETEMP /GET THE CHARACTER /032 CJL 2370 001146 1377 TAD (-177 /CHECK FOR "DELETE" 2371 001147 7650 SNA CLA /SKIP IF NOT 2372 001150 5362 JMP OPRE2 /PREFIX QUOTE 2373 001151 1367 TAD PRETEMP /GET THE CHARACTER /032 CJL 2374 001152 7041 CIA /NEGATE FOR COMPARE 2375 001153 1046 TAD RQCTL /SEE IF SAME AS QUOTE CHAR 2376 001154 7640 SZA CLA /SKIP IF PREFIX QUOTE 2377 001155 5360 JMP OPRE1 /NO PREFIX QUOTE 2378 001156 1046 TAD RQCTL /PREFIX WITH PREFIX 2379 001157 5365 JMP OPRE3 /PREFIX WITH THE PREFIX 2380 2381 001160 1367 OPRE1, TAD PRETEMP /GET THE CHARACTER /032 CJL 2382 001161 5734 JMP I OPRE /DONE 2383 2384 001162 1367 OPRE2, TAD PRETEMP /GET THE CHARACTER /032 CJL 2385 001163 1161 TAD [100] /MAKE IT PRINTABLE /016 CJL 2386 001164 0167 AND [177] /IN CASE IT WAS 177 /014/016 CJL 2387 2388 001165 2334 OPRE3, ISZ OPRE /BUMP FOR PREFIX RETURN 2389 001166 5734 JMP I OPRE /DONE 2390 2391 001167 0000 PRETEMP,.-. /PREFIX TEMPORARY /032 CJL 2392 2393 001177 7601 PAGE /014 CJL 2394 / ROUTINE TO SCAN A TEXT LINE FOR KEYWORD DELIMITERS. 2395 2396 / THIS ROUTINE EXPECTS THE AC TO POINT TO A TEXT LINE TO SCAN AND FINDS THE 2397 / FIRST NON-SPACE, NON-END OF LINE CHAR IN THE LINE AND SETS "SCAN1" TO POINT TO 2398 / IT. NEXT WE FIND THE LAST CHAR IN THE LINE THAT IS A NON-SPACE, NON-END OF 2399 / LINE AND STORE A POINTER TO IT IN "SCAN2". KEYWORDS ARE DELIMITED BY A 2400 / BEGINNING OF LINE OR SPACE AT THE BEGINNING AND AN END OF LINE OR A SPACE AT 2401 / THE END. 2402 2403 / ENTER: AC = POINTER TO COMMAND LINE 2404 2405 / EXIT: (SUCCESS) SCAN1 = POINTER TO FIRST CHAR OF KEYWORD. 2406 / SCAN2 = POINTER TO LAST CHAR OF KEYWORD. 2407 / RETURN = RETURN + 2 (NO WORDS LEFT IN LINE). 2408 2409 / EXIT: (FAIL) RETURN = RETURN + 1. 2410 2411 001200 0000 SCNEL, 0 /SCAN ROUTINE 2412 001201 4560 JMS I [NOSP] /FIND FIRST NON-SPACE 2413 001202 5600 JMP I SCNEL /END OF LINE RETURN 2414 001203 3024 DCA SCAN1 /RETURN SCAN LINE POINTER 2415 001204 1024 TAD SCAN1 /RE-GET SCAN LINE POINTER 2416 001205 4557 JMS I [SP] /FIND FIRST SPACE OR EOL 2417 001206 7000 NOP /RETURN HERE ON EOL 2418 001207 1377 TAD (-1 /BACK UP TO PREVIOUS CHAR 2419 001210 3025 DCA SCAN2 /SET END ELEMENT POINTER 2420 001211 2200 ISZ SCNEL /TAKE SUCCESS RETURN 2421 001212 5600 JMP I SCNEL /DONE 2422 2423 2424 / ROUTINE TO SCAN THRU A TEXT LINE LOOKING FOR THE NEXT SPACE. 2425 / ENTER ROUTINE WITH THE LINE POINTER IN THE AC. 2426 2427 / EXIT: RETURN + 2 WITH AC = POINTER TO SPACE. 2428 / RETURN + 1 WITH AC = POINTER TO END OF LINE. 2429 2430 001213 0000 SP, 0 /CHECK FOR A ROUTINE 2431 001214 3260 DCA SCANTP /USE A TEMP POINTER 2432 001215 7410 SKP /SKIP INTO LOOP BELOW 2433 001216 2260 SP1, ISZ SCANTP /BUMP LINE POINTER 2434 001217 1660 TAD I SCANTP /GET A CHAR 2435 001220 7510 SPA /SKIP IF NOT END OF LINE 2436 001221 5226 JMP SP3 /GOT AN END OF LINE 2437 001222 1172 TAD [-" !200] /COMPARE WITH /034 CJL 2438 001223 7640 SZA CLA /SKIP IF IS A SPACE 2439 001224 5216 JMP SP1 /LOOP TILL SPACE OR EOL 2440 001225 2213 ISZ SP /BUMP RETURN FOR SPACE FOUND 2441 2442 001226 7300 SP3, CLA CLL /INSURE A CLEAR AC 2443 001227 1260 TAD SCANTP /GET POINTER VALUE 2444 001230 5613 JMP I SP /RETURN IN AC 2445 / ROUTINE TO SCAN THRU A TEXT LINE FOR THE FIRST NON-SPACE. 2446 / ENTER ROUTINE WITH POINTER TO THE LINE IN THE AC. 2447 2448 / EXIT: RETURN + 2 WITH AC = POINTER TO NON-SPACE. 2449 / RETURN + 1 WITH AC = POINTER TO END OF LINE. 2450 2451 001231 0000 NOSP, 0 /FIND A NON- ROUTINE 2452 001232 3260 DCA SCANTP /USE A TEMP POINTER 2453 001233 7410 SKP /SKIP INTO LOOP BELOW 2454 001234 2260 NOSP1, ISZ SCANTP /BUMP THE LINE POINTER 2455 001235 1660 TAD I SCANTP /GET A CHAR FROM THE LINE 2456 001236 7510 SPA /SKIP IF NOT EOL 2457 001237 5244 JMP NOSP3 /EXIT IF EOL 2458 001240 1172 TAD [-" !200] /COMPARE WITH /034 CJL 2459 001241 7650 SNA CLA /SKIP IF NOT SPACE 2460 001242 5234 JMP NOSP1 /LOOP TILL SPACE OR EOL 2461 001243 2231 ISZ NOSP /BUMP RETURN FOR SPACE FOUND 2462 001244 7300 NOSP3, CLA CLL /INSURE CLEAR AC 2463 001245 1260 TAD SCANTP /GET POINTER 2464 001246 5631 JMP I NOSP /RETURN IN AC 2465 2466 2467 2468 / ROUTINE TO FIND AN END CHAR IN A STRING. 2469 / ENTER ROUTINE WITH POINTER TO THE STRING IN THE AC. 2470 / EXIT WITH THE POINTER TO THE FIRST MINUS CHAR IN THE AC. 2471 2472 001247 0000 FNDEND, 0 /FIND END CHAR ROUTINE 2473 001250 3260 DCA SCANTP /PUT POINTER IN SCANTP 2474 001251 1660 FEND1, TAD I SCANTP /GET A CHAR FROM THE STRING 2475 001252 7710 SPA CLA /SKIP IF NOT END 2476 001253 5256 JMP FEND2 /EXIT IF END OF STRING 2477 001254 2260 ISZ SCANTP /BUMP THE POINTER 2478 001255 5251 JMP FEND1 /LOOP TILL NON-END OF STRING 2479 2480 001256 1260 FEND2, TAD SCANTP /GET POINTER TO NON-END OF STRING 2481 001257 5647 JMP I FNDEND /EXIT WITH POINTER IN AC 2482 2483 001260 0000 SCANTP, 0 /USED IN THE SCAN ROUTINES "SP", "NOSP", "FNDNUL" 2484 / ROUTINE TO LOOKUP THE KEY WORD POINTED TO BY THE AC IN THE /014 CJL 2485 / TABLE POINTED TO BY PTABLE. 2486 2487 / RETURN + 1 IF NO MATCH IS FOUND WITH AC = ENTRY VALUE. 2488 / RETURN + 2 IF NO KEYWORD IS FOUND (EOL DETECTED). 2489 / RETURN + 3 IF MATCH IS FOUND WITH THE NEXT PARSE POSITION IN THE LINE IN 2490 / THE AC AND THE DISPATCH ADDRESS FROM THE TABLE IN "KEYDSP". 2491 2492 001261 0000 KEYPRS, .-. /KEYWORD PARSE ROUTINE 2493 001262 3340 DCA LOOK3 /SAVE IN CASE OF FAIL 2494 001263 1340 TAD LOOK3 /RE-GET 2495 / AND (137) /MAKE CHARACTER UPPER-CASE, NO PARITY /MD013 2496 001264 4200 JMS SCNEL /TRY TO SCAN OFF A KEYWORD 2497 001265 5322 JMP KP45 /END OF LINE ENCOUNTERED 2498 001266 1030 TAD PTABLE /GET ADDRESS OF TABLE 2499 001267 3337 DCA LOOK2 /STORE IN LOCAL POINTER 2500 2501 001270 1024 KP10, TAD SCAN1 /GET ADDRESS OF SCAN ELEMENT 2502 001271 3336 DCA LOOK1 /INTO LOCAL POINTER 2503 2504 001272 1736 KP20, TAD I LOOK1 /GET A CHARACTER FROM THE SCAN ELEMENT 2505 001273 7041 CIA /NEGATE FOR COMPARE 2506 001274 1737 TAD I LOOK2 /GET A CHAR FROM THE TABLE ELEMENT 2507 001275 7640 SZA CLA /SKIP IF MATCH 2508 001276 5325 JMP KP90 /NO MATCH, SET TO LOOK AT NEXT TABLE ENTRY 2509 001277 1336 TAD LOOK1 /CHECK IF ALL ENTERED CHARS MATCH 2510 001300 7041 CIA /NEGATE TO COMPARE 2511 001301 1025 TAD SCAN2 /HAVE WE MATCHED TO THE TERMINATOR? 2512 001302 7650 SNA CLA /SKIP IF NO 2513 001303 5307 JMP KP40 /YES, GOT ENOUGH TO MATCH 2514 001304 2336 ISZ LOOK1 /MORE TO MATCH, BUMP SCAN ELEMENT POINTER 2515 001305 2337 ISZ LOOK2 /BUMP TABLE ELEMENT POINTER 2516 001306 5272 JMP KP20 /CONTINUE MATCH LOOP 2517 2518 001307 1337 KP40, TAD LOOK2 /GET CURRENT TABLE POINTER 2519 001310 4247 JMS FNDEND /FIND A NULL MARK 2520 001311 7001 IAC /BUMP BY 1 2521 001312 3336 DCA LOOK1 /STORE IN A POINTER 2522 001313 1736 TAD I LOOK1 /GET DISPATCH ADDRESS 2523 001314 3026 DCA KEYDSP /PUT INTO DISPATCH ADDRESS 2524 001315 2261 ISZ KEYPRS /BUMP RETURN 2525 001316 2261 ISZ KEYPRS /BUMP AGAIN 2526 001317 7301 CLA CLL IAC /AC = 1 2527 001320 1025 TAD SCAN2 /GET POINTER TO END OF CURRENT KEY 2528 001321 5661 JMP I KEYPRS /RETURN 2529 2530 / END OF LINE ENCOUNTERED ON PARSE. 2531 2532 001322 2261 KP45, ISZ KEYPRS /BUMP RETURN ONCE FOR EOL 2533 2534 / NO MATCHES IN THE TABLE HERE. 2535 2536 001323 1340 KP50, TAD LOOK3 /GET ORIGINAL AC 2537 001324 5661 JMP I KEYPRS /RETURN 2538 / FAILURE ON CURRENT TABLE ENTRY, SET FOR NEXT ENTRY (IF THERE IS ONE) AND TRY 2539 / AGAIN. 2540 2541 001325 1337 KP90, TAD LOOK2 /GET TABLE POINTER 2542 001326 4247 JMS FNDEND /FIND NEXT TABLE ENTRY 2543 001327 7001 IAC;IAC /NEXT ENTRY IS 2 PAST THE NULL 001330 7001 2544 001331 3337 DCA LOOK2 /RE-SET LOCAL TABLE POINTER 2545 001332 1737 TAD I LOOK2 /CHECK END OF TABLE 2546 001333 7650 SNA CLA /SKIP IF NOT END OF THE TABLE 2547 001334 5323 JMP KP50 /TAKE NOT FOUND EXIT 2548 001335 5270 JMP KP10 /TRY MATCH ON THIS ENTRY 2549 2550 001336 0000 LOOK1, .-. /TEMPORARY FOR KEYPRS /014 CJL 2551 001337 0000 LOOK2, .-. /TEMPORARY FOR KEYPRS /014 CJL 2552 001340 0000 LOOK3, .-. /TEMPORARY FOR KEYPRS /014 CJL 2553 2554 / ROUTINE TO MOVE WORDS OF MEMORY. /014 CJL 2555 2556 / CALLING SEQUENCE: 2557 2558 / TAD (DESTINATION) /GET DESTINATION ADDRESS 2559 / DCA MQ /INTO MQ /032 CJL 2560 / TAD (-COUNT) /GET -NUMBER OF WORDS TO MOVE 2561 / DCA MOVE4 /SETUP MOVE COUNTER 2562 / TAD (SOURCE) /GET SOURCE ADDRESS 2563 / JMS I (MOVE0) /CALL MOVE ROUTINE 2564 / RETURN /RETURNS HERE 2565 2566 001341 0000 MOVE0, .-. /MOVE ROUTINE /014 CJL 2567 001342 3354 DCA MOVE5 /STORE SOURCE ADDRESS IN LOCAL POINTER 2568 001343 1064 TAD MQ /GET DESTINATION ADDRESS /032 CJL 2569 001344 3355 DCA MOVE6 /STORE IN LOCAL POINTER 2570 001345 1754 MOVE1, TAD I MOVE5 /GET A WORD FROM THE SOURCE 2571 001346 3755 DCA I MOVE6 /MOVE TO DESTINATION 2572 001347 2354 ISZ MOVE5 /BUMP SOURCE POINTER 2573 001350 2355 ISZ MOVE6 /BUMP DESTINATION COUNTER 2574 001351 2062 ISZ MOVE4 /BUMP COUNTER 2575 001352 5345 JMP MOVE1 /LOOP 2576 001353 5741 JMP I MOVE0 /DONE 2577 2578 001354 0000 MOVE5, .-. /SOURCE POINTER FOR "MOVE" 2579 001355 0000 MOVE6, .-. /DESTINATION POINTER FOR "MOVE" 2580 2581 001377 7777 PAGE /014 CJL 2582 / ROUTINE TO PARSE OFF A DEVICE NAME FROM THE COMMAND LINE. /O14 CJL 2583 2584 / CALLING SEQUENCE: 2585 2586 / TAD (POINTER) /AC CONTAINS POINTER TO COMMAND LINE 2587 / JMS I [DPARS] /CALL ROUTINE 2588 / ERROR RETURN /AC UNCHANGED 2589 / GOOD RETURN /AC NOW POINTS TO REST OF LINE 2590 2591 / DEVNUM= DEVICE NUMBER TO USE. 2592 / ":" IS THE FIFTH CHARACTER IF NOT USING DEFAULT DEVICE. 2593 2594 001400 0000 DPARS, .-. /DEVICE PARSE ROUTINE /014 CJL 2595 001401 3253 DCA DPAR10 /SAVE INITIAL POINTER TO LINE 2596 001402 1253 TAD DPAR10 /GET POINTER 2597 001403 4560 JMS I [NOSP] /GET PAST ANY LEADING SPACES 2598 001404 5237 JMP DFDEV /GOT END OF LINE, USE DEFAULT DEVICE 2599 001405 3254 DCA DPAR11 /SAVE POINTER TO LINE 2600 001406 3260 DCA DEVNAME /INITIALIZE THE DEVICE NAME /014 CJL 2601 001407 3261 DCA DEVNAME+1 /FOR "INQUIRE" FUNCTION /014 CJL 2602 001410 1377 TAD (DEVNAM) /GET ADDRESS OF WHERE TO PUT DEVICE NAME/014 CJL 2603 001411 3056 DCA PACK6P /STORE IN PACK6 POINTER 2604 001412 3057 DCA PACK6F /INITIALIZE PACK6 FLAG FOR LOW BYTE /014 CJL 2605 001413 1376 TAD (-4) /SET UP A COUNTER /014 CJL 2606 001414 3255 DCA DPAR13 /FOR NO MORE THAN 4 CHARS 2607 001415 1654 DPAR1, TAD I DPAR11 /GET A CHAR FROM THE LINE 2608 001416 7450 SNA /SKIP IF NOT /014 CJL 2609 001417 5237 JMP DFDEV /GOT AN , USE DEFAULT DEVICE /014 CJL 2610 001420 1375 TAD (-":!200) /CHECK FOR ":" /034 CJL 2611 001421 7650 SNA CLA /SKIP IF NOT END OF DEVICE NAME 2612 001422 5234 JMP DPAR2 /DEVICE NAME SET UP 2613 001423 1654 TAD I DPAR11 /RE-GET CHAR 2614 001424 2254 ISZ DPAR11 /BUMP LINE POINTER 2615 001425 4516 PACK6 /PACK SIX-BIT /014 CJL 2616 001426 2255 ISZ DPAR13 /BUMP CHARACTER COUNTER /014 CJL 2617 001427 5215 JMP DPAR1 /CAN CONTINUE 2618 001430 1654 TAD I DPAR11 /GET CHARACTER AFTER THE FOURTH /014 CJL 2619 001431 1375 TAD (-":!200) /CHECK FOR ":" /034 CJL 2620 001432 7640 SZA CLA /SKIP IF YES, ALL IS OK 2621 001433 5237 JMP DFDEV /USE THE DEFAULT DEVICE 2622 001434 2254 DPAR2, ISZ DPAR11 /BUMP POINTER PAST ":" 2623 001435 1377 TAD (DEVNAM) /GET PARSED DEVICE NAME ADDRESS /014 CJL 2624 001436 5242 JMP DPAR4 /DO AN OS/8 "INQUIRE" 2625 2626 001437 7300 DFDEV, CLA CLL /CLEAN UP /019 CJL 2627 001440 1253 TAD DPAR10 /GET ORIGINAL AC FOR 2628 001441 3254 DCA DPAR11 /RETURN POINTER 2629 001442 4264 DPAR4, JMS DVNUM /GET DEVICE NUMBER 2630 001443 5250 JMP DPAR8 /DEVICE NAME ERROR 2631 001444 3071 DCA DEVNUM /RETURN FOR CALLING PROGRAM 2632 001445 1254 TAD DPAR11 /GET CURRENT POINTER 2633 001446 2200 ISZ DPARS /BUMP RETURN 2634 001447 5600 JMP I DPARS /RETURN /014 CJL 2635 001450 7300 DPAR8, CLA CLL /INSURE CLEAR AC 2636 001451 1253 TAD DPAR10 /GET ORIGINAL AC 2637 001452 5600 JMP I DPARS /TAKE ERROR EXIT 2638 2639 001453 0000 DPAR10, .-. /TEMPORARY FOR DPARS /014 CJL 2640 001454 0000 DPAR11, .-. /TEMPORARY FOR DPARS /014 CJL 2641 001455 0000 DPAR13, .-. /TEMPORARY FOR DPARS /014 CJL 2642 001456 0423 DEFDEV, DEVICE DSK /DEFAULT DEVICE 001457 1300 2643 001460 3232 DEVNAM, FILENAM ZZZZZZ.ZZ /DEFAULT FILENAME /014 CJL 001461 3232 001462 3232 001463 3232 2644 2645 / ROUTINE TO RETURN A DEVICE NUMBER FOR A DEVICE NAME. /014 CJL 2646 2647 / CALLING SEQUENCE: 2648 2649 / TAD (ADDRESS) /AC=ADDRESS OF DEVICE NAME 2650 / /*OR* 0000 IF "DSK:" IS TO BE USED 2651 / ERROR RETURN /INVALID DEVICE 2652 / GOOD RETURN /AC=DEVICE NUMBER 2653 2654 001464 0000 DVNUM, .-. /DEVICE NUMBER ROUTINE /014 CJL 2655 001465 7450 SNA /SKIP IF DEVICE NAME SPECIFIED 2656 001466 1374 TAD (DEFDEV) /ELSE USE DEFAULT /014 CJL 2657 001467 3307 DCA DVNUM9 /SAVE IN LOCAL POINTER 2658 001470 1707 TAD I DVNUM9 /GET FIRST TWO CHARACTERS OF NAME /014 CJL 2659 001471 3300 DCA DVNUM5 /PUT INTO CALL 2660 001472 2307 ISZ DVNUM9 /BUMP POINTER 2661 001473 1707 TAD I DVNUM9 /GET LAST TWO CHARACTERS OF NAME /014 CJL 2662 001474 3301 DCA DVNUM5+1 /PUT INTO CALL 2663 001475 6212 CIF USRFLD /GOTO USR FIELD /020 CJL 2664 001476 4571 JMS I [USRENTRY] /CALL USER SERVICE ROUTINE /035 CJL 2665 001477 0012 INQUIRE /INQUIRE ABOUT HANDLER /020 CJL 2666 001500 0000 DVNUM5, .-. /FIRST TWO BYTES OF DEVICE NAME /014 CJL 2667 001501 0000 .-. /LAST TWO BYTES OF DEVICE NAME /014 CJL 2668 001502 0000 0 /ENTRY POINT OF HANDLER RETURNED HERE 2669 001503 5664 JMP I DVNUM /ERROR, TAKE ERROR EXIT 2670 001504 1301 TAD DVNUM5+1 /DEVICE NUMBER 2671 001505 2264 ISZ DVNUM /BUMP RETURN FOR NO ERROR 2672 001506 5664 JMP I DVNUM /RETURN 2673 2674 001507 0000 DVNUM9, .-. /LOCAL FOR "DVNUM" /014 CJL 2675 / DEVICE HANDLER FETCH ROUTINE. /020 CJL 2676 2677 / CALLING SEQUENCE: 2678 2679 / TAD (HANDLERNUMBER) /AC CONTAINS DEVICE HANDLER NUMBER 2680 / JMS I [HFETCH] /CALL ROUTINE 2681 / ERROR RETURN /COULDN'T LOAD HANDLER 2682 / GOOD RETURN /HANDLER LOADED 2683 2684 / IF THE HANDLER WAS LOADED, THEN HNDADR CONTAINS THE HANDLER ENTRY POINT. 2685 2686 001510 0000 HFETCH, .-. /HANDLER FETCH ROUTINE 2687 001511 3327 DCA HANDNUMBER /STORE HANDLER NUMBER 2688 001512 1373 TAD (HNDLR+1) /GET OUR BUFFER+(TWO PAGE ALLOWED) 2689 001513 3320 DCA HADR /STORE IN-LINE 2690 001514 1327 TAD HANDNUMBER /GET HANDLER NUMBER AGAIN 2691 001515 6212 CIF USRFLD /GOTO USR FIELD 2692 001516 4571 JMS I [USRENTRY] /CALL USER SERVICE ROUTINE /035 CJL 2693 001517 0001 FETCH /FETCH HANDLER 2694 001520 0000 HADR, .-. /WILL BE OUR SUGGESTED ADDRESS+TWO PAGES ALLOWED 2695 001521 7410 SKP /COULDN'T DO IT 2696 001522 2310 ISZ HFETCH /BUMP TO GOOD RETURN 2697 001523 7300 CLA CLL /CLEAN UP 2698 001524 1320 TAD HADR /GET ACTUAL HANDLER ADDRESS 2699 001525 3053 DCA HNDADR /STASH THE POINTER 2700 001526 5710 JMP I HFETCH /RETURN EITHER WAY 2701 2702 001527 0000 HANDNUM,.-. /HANDLER NUMBER TEMPORARY 2703 2704 / ROUTINE TO HANDLE THE "FINISH" COMMAND. /021 CJL 2705 2706 001530 0000 FINSRV, 0 2707 001531 4556 JMS I [CREST2] /SETUP CONSOLE OUTPUT ROUTINES /025 CJL 2708 001532 1372 TAD (MSEND) /GET SEND MODE VALUE /045 CJL 2709 001533 3016 DCA KMODE /SETUP PROPER MODE /045 CJL 2710 001534 4512 FPACK /FORMAT A PACKET 2711 001535 1555 SRVFIN /PACKET DATA ADDRESS 2712 001536 0107 STGEN /PACKET TYPE 2713 2714 001537 4511 FIN2, SPACK /SEND PACKET 2715 001540 0001 1 /AWAIT RESPONSE 2716 001541 1546 FIN20-2 /DISPATCH LIST FOR RESPONSE /027 CJL 2717 2718 / NAK OR UNDEFINED RESPONSE HERE 2719 2720 001542 2034 FIN5, ISZ RTRYC /BUMP RE-TRY COUNTER 2721 001543 5337 JMP FIN2 /GET RESPONSE AND TRY AGAIN 2722 001544 1371 TAD (NOFINISH) /FAILED, RETURN MESSAGE /025 CJL 2723 001545 5730 JMP I FINSRV 2724 2725 / ACK HERE 2726 2727 001546 2330 FIN10, ISZ FINSRV /BUMP FOR NON-ERROR EXIT 2728 001547 5730 JMP I FINSRV /DONE 2729 2730 001550 0131 FIN20, STACK; FIN10 /ACK 001551 1546 2731 001552 0116 STNAK; FIN5 /NAK 001553 1542 2732 001554 0000 0 2733 2734 001555 0106 SRVFIN, "F&137 /SERVER KERMIT COMMAND TO SHUT DOWN 2735 001556 7777 -1 /END OF DATA 2736 2737 001571 4412 PAGE 001572 0002 001573 6601 001574 1456 001575 7706 001576 7774 001577 1460 2738 / ROUTINE TO PARSE OFF A FILE NAME. 2739 / FILE NAME TO BE PARSED MUST BE LETTERS OR DIGITS AND BE NO MORE THAN 2740 / SIX CHARS FOR THE NAME AND TWO CHARS FOR THE EXTENSION. 2741 2742 / ENTER WITH: AC = POINTER TO FILE NAME TO PARSE. 2743 / FNPTR = POINTER TO WHERE TO PUT THE PARSED FILE NAME. 2744 2745 / NON-ERROR EXIT: AC = POINTER TO REMAINDER OF COMMAND LINE. 2746 / RETURN THE CALL + 2. 2747 2748 / ERROR EXIT: AC = ORIGINAL POINTER. 2749 / RETURN THE CALL + 1. 2750 2751 001600 0000 PFNAM, 0 2752 001601 3260 DCA PFN10 /SAVE POINTER TO FILE NAME STRING 2753 001602 1065 TAD FNPTR /GET POINTER TO FILE NAME BLOCK 2754 001603 3064 DCA MQ /SET FOR "CLEAR" ROUTINE /032 CJL 2755 001604 1377 TAD (-4 /FOUR WORDS TO CLEAR OUT 2756 001605 4521 CLEAR /INIT THE FILE NAME BLOCK 2757 001606 1260 TAD PFN10 /GET THE STRING POINTER 2758 001607 4560 JMS I [NOSP] /GET PAST ANY LEADING SPACES 2759 001610 5255 JMP PFNAM9 /GOT EOL, NO FILE NAME 2760 001611 3261 DCA PFN11 /SAVE POINTER 2761 001612 1065 TAD FNPTR /GET FILE NAME BLOCK POINTER 2762 001613 3056 DCA PACK6P /SET UP THE "PACK6" POINTER 2763 001614 3057 DCA PACK6F /INIT THE "PACK6" FLAG 2764 001615 1376 TAD (-6 /MAX OF 6 CHARS FOR FILE NAME 2765 001616 3262 DCA PFN15 /PUT INTO COUNTER 2766 001617 3066 DCA WILDF /INIT THE WILD CARD FLAG 2767 001620 4263 JMS NAM /MOVE AND PACK FILE NAME 2768 001621 1661 TAD I PFN11 /GET THE TERM CHAR 2769 001622 7510 SPA /SKIP IF NOT EOL 2770 001623 5251 JMP PFNAM7 /EOL MEANS END OF FILE NAME 2771 001624 1375 TAD (-".!200) /COMPARE TO "." /034 CJL 2772 001625 7450 SNA /SKIP IF NO 2773 001626 5233 JMP PFNAM3 /GO HANDLE EXTENSION 2774 001627 1374 TAD (-" +".) /COMPARE TO /034 CJL 2775 001630 7640 SZA CLA /SKIP IF WAS A SPACE 2776 001631 5255 JMP PFNAM9 /NOT A SPACE, GOT AN ERROR 2777 001632 5251 JMP PFNAM7 /IS A SPACE, END OF FILE NAME 2778 001633 2261 PFNAM3, ISZ PFN11 /BUMP PAST THE "." 2779 001634 1065 TAD FNPTR /GET FILE NAME BLOCK POINTER 2780 001635 1373 TAD (3) /POINT TO EXTENSION /032 CJL 2781 001636 3056 DCA PACK6P /SET "PACK6" POINTER 2782 001637 3057 DCA PACK6F /INIT "PACK6" FLAG 2783 001640 7344 NL7776 /SET -2 /032 CJL 2784 001641 3262 DCA PFN15 /COUNTER FOR 2 EXT CHARS 2785 001642 4263 JMS NAM /NOW DO THE EXTENSION 2786 001643 1661 TAD I PFN11 /GET THE TERM CHAR 2787 001644 7510 SPA /SKIP IF NOT EOL 2788 001645 5251 JMP PFNAM7 /GOT COMPLETE FILE NAME HERE 2789 001646 1172 TAD [-" !200] /COMPARE TO /034 CJL 2790 001647 7640 SZA CLA /SKIP IF IT WAS 2791 001650 5255 JMP PFNAM9 /GOT A FILE NAME ERROR 2792 001651 2200 PFNAM7, ISZ PFNAM /BUMP RETURN FOR GOOD FILE NAME 2793 001652 7300 CLA CLL /INSURE CLEAR AC 2794 001653 1261 TAD PFN11 /GET CURRENT STRING POINTER 2795 001654 5600 JMP I PFNAM /AND RETURN 2796 2797 001655 7300 PFNAM9, CLA CLL /INSURE CLEAR AC 2798 001656 1260 TAD PFN10 /GET ORIGINAL STRING POINTER 2799 001657 5600 JMP I PFNAM /TAKE ERROR RETURN 2800 2801 001660 0000 PFN10, 0 /TEMP FOR PFNAM ROUTINE 2802 001661 0000 PFN11, 0 /TEMP FOR PFNAM ROUTINE 2803 001662 0000 PFN15, 0 /TEMP FOR PFNAM ROUTINE 2804 / LOCAL ROUTINE TO "PFNAM" TO MOVE IN THE FILE NAME OR FILE EXTENSION. 2805 / ENTER WITH "PFN11" POINTING TO WHERE TO GET THE NAME OR EXTENSION. 2806 / AND "PFN15" EQUAL TO THE MAX NUMBER OF CHARS (6 FOR NAME, 2 FOR EXT). 2807 / THIS ROUTINE CHECKS FOR WILD CARD CHARS "*" AND "?" AND PUTS THE 2808 / "?" CHAR IN FOR ANY CHARS IN THE NAME THAT ARE WILD. ALSO IF ANY 2809 / WILD CARD CHARS ARE FOUND THE FLAG "WILDC" IS SET SO BEFORE PARSING 2810 / ANY FILE NAME THE "WILDC" FLAG SHOULD BE INITIALIZED. 2811 2812 001663 0000 NAM, 0 2813 001664 1661 NAM0, TAD I PFN11 /GET A CHAR FROM THE STRING 2814 001665 4772 JMS I (ALPNUM) /MUST BE ALPHA OR NUMBER 2815 001666 7410 SKP /NOT A ALPHA NUMERIC 2816 001667 5307 JMP NAM3 /IS ALPHA NUMERIC 2817 001670 1371 TAD (-"?!200) /COMPARE TO "?" /034 CJL 2818 001671 7450 SNA /SKIP IF NO 2819 001672 5305 JMP NAM2 /YES, JUST PUT IT IN 2820 001673 1370 TAD (-"*+"?) /COMPARE TO "*" /034 CJL 2821 001674 7640 SZA CLA /SKIP IF YES 2822 001675 5663 JMP I NAM /TAKE THE FILE NAME ERROR EXIT 2823 001676 2066 ISZ WILDF /SET FLAG FOR WILD CARD FOUND 2824 001677 1175 NAM1, TAD ["?&77] /GET WILD CARD CHARACTER /034 CJL 2825 001700 4516 PACK6 /PUT IN NAME BLOCK 2826 001701 2262 ISZ PFN15 /BUMP CHAR COUNTER 2827 001702 5277 JMP NAM1 /LOOP TILL ALL FILLED 2828 001703 2261 ISZ PFN11 /BUMP THE STRING POINTER 2829 001704 5321 JMP NAM9 /EXIT WITH "PFN11" POINTING TO NEXT CHAR 2830 001705 2066 NAM2, ISZ WILDF /SET FLAG FOR WILD CARD FOUND 2831 001706 1175 TAD ["?&77] /GET WILD CARD CHARACTER /034 CJL 2832 001707 4516 NAM3, PACK6 /PUT THE CHAR INTO THE FILE NAME BLOCK 2833 001710 2261 ISZ PFN11 /BUMP THE STRING POINTER 2834 001711 2262 ISZ PFN15 /BUMP THE CHAR COUNTER 2835 001712 5264 JMP NAM0 /LOOP 2836 2837 001713 1661 NAM4, TAD I PFN11 /NOW GET TO A TERMINATOR CHAR 2838 001714 4772 JMS I (ALPNUM) /BY FINDING FIRST NON-ALPHNUMERIC 2839 001715 5321 JMP NAM9 /NOW WE CAN QUIT 2840 001716 7300 CLA CLL /IGNORE EXCESS CHARS 2841 001717 2261 ISZ PFN11 /BUMP THE STRING POINTER 2842 001720 5313 JMP NAM4 /LOOP 2843 2844 001721 7300 NAM9, CLA CLL /LEAVE WITH A CLEAR AC 2845 001722 5663 JMP I NAM /RETURN 2846 / ROUTINE TO SEND A PACKET. 2847 / ENTER WITH ADDRESS OF PACKET DATA IN CALL + 1. 2848 / AND TYPE OF PACKET IN CALL + 2. 2849 / EXIT CALL + 4 IF ACK RETURNED. 2850 / EXIT CALL + 3 IF NAK OR OTHER PACKET TYPE RETURNED. 2851 2852 001723 0000 SNDP, 0 2853 001724 1723 TAD I SNDP /GET DATA ADDRESS 2854 001725 3333 DCA SNDP1 /STORE IN CALL 2855 001726 2323 ISZ SNDP /BUMP POINTER 2856 001727 1723 TAD I SNDP /GET PACKET TYPE 2857 001730 3334 DCA SNDP2 /STORE IN CALL 2858 001731 2323 ISZ SNDP /BUMP 2859 2860 001732 4512 FPACK /FORMAT A PACKET 2861 001733 0000 SNDP1, 0 /DATA ADDRESS GOES HERE 2862 001734 0000 SNDP2, 0 /PACKET TYPE GOES HERE 2863 2864 001735 4511 SNDP3, SPACK /SEND A DATA PACKET 2865 001736 0001 1 /GET RESPONSE 2866 001737 1745 SNDP9-2 /RESPONSE DISPATCH TABLE ADDRESS /027 CJL 2867 2868 / HERE ON NOT "NAK" OR "ACK" RESPONSE. 2869 2870 001740 7410 SKP 2871 2872 / HERE ON "ACK". 2873 2874 001741 2323 SNDP5, ISZ SNDP /BUMP RETURN 2875 2876 001742 2323 ISZ SNDP /BUMP RETURN 2877 001743 5723 JMP I SNDP /EXIT 2878 2879 / HERE ON NAK. 2880 2881 001744 2034 SNDP4, ISZ RTRYC /BUMP THE RE-TRY COUNTER 2882 001745 5335 JMP SNDP3 /RE-TRY 2883 001746 5723 JMP I SNDP /TAKE RETURN + 3 2884 2885 001747 0131 SNDP9, STACK; SNDP5 /ACK 001750 1741 2886 001751 0131 STACK; SNDP4 /NAK 001752 1744 2887 001753 0000 0 2888 2889 001770 0025 PAGE /014 CJL 001771 7701 001772 3237 001773 0003 001774 0016 001775 7722 001776 7772 001777 7774 2890 IFZERO 1 < 2891 2892 / ROUTINE TO PARSE OFF A DECIMAL NUMBER. 2893 / ENTER ROUTINE WITH A POINTER TO THE PARSE LINE IN THE AC. 2894 / EXIT: RETURN + 1 FOR NO NUMBER. 2895 / RETURN + 2 FOR INVALID NUMBER. 2896 / RETURN + 3 FOR VALID NUMBER. 2897 2898 / IN ALL CASES ON RETURN THE AC WILL CONTAIN A POINTER TO THE NEXT CHAR TO PARSE 2899 / IN THE LINE. ANY NUMBER PARSED WILL BE CONVERTED TO BINARY AND PUT INTO THE 2900 / REGISTER "BININP". 2901 2902 DECPRS, 0 2903 JMS I [NOSP] /GET PAST ANY LEADING SPACES 2904 JMP I DECPRS /GOT AN END OF LINE, AC POINTS TO IT 2905 DCA DP10 /SAVE POINTER TO LINE 2906 TAD DP10 /RE-GET POINTER TO LINE 2907 DCA DP11 /STORE IN OUR LINE POINTER 2908 DCA BININP /INIT BINARY REGISTER 2909 DCA DP13 /INIT PARSED NUMBER FLAG 2910 SKP /SKIP INTO LOOP BELOW 2911 DP1, ISZ DP11 /BUMP THE LINE POINTER 2912 TAD I DP11 /GET A CHAR FROM THE LINE 2913 JMS DECCK /CHECK FOR PROPER ASCII DECIMAL 2914 JMP DP5 /NOT PROPER ASCII DECIMAL 2915 ISZ DP13 /FLAG NUMBER INPUT 2916 TAD (-"0 /MAKE BINARY 2917 DCA DP12 /AND STORE 2918 TAD BININP /GET PREVIOUS INPUT 2919 JMS MUL10 /AND MULTIPLY TIMES 10 2920 SZL /SKIP IF NO OVERFLOW ENCOUNTERED 2921 JMP DP6 /GOT AN OVERFLOW ERROR 2922 TAD DP12 /COMBINE WITH CURRENT INPUT 2923 SZL /SKIP IF NO OVERFLOW ERROR 2924 JMP DP6 /GOT AN OVERFLOW ERROR 2925 DCA BININP /RETURN ACCUMULATED SUM 2926 JMP DP1 /LOOP 2927 2928 DP5, CLA CLL /AC MAY NOT BE CLEAR 2929 TAD DP13 /ANY NUMBERS INPUT YET? 2930 SNA CLA /SKIP IF YES 2931 JMP DP6 /TAKE THE NO NUMBER INPUT RETURN 2932 ISZ DECPRS /BUMP THE RETURN 2933 ISZ DECPRS /TWICE FOR GOOD NUMBER INPUT RETURN 2934 TAD DP11 /GET POINTER TO LINE 2935 JMP I DECPRS /AND RETURN 2936 2937 DP6, CLA CLL /AC MAY NOT BE CLEAR 2938 TAD DP10 /GET ORIGINAL LINE POINTER 2939 ISZ DECPRS /BUMP THE RETURN 2940 JMP I DECPRS /TAKE THE INVALID NUMBER RETURN 2941 2942 > 2943 IFZERO 1 < 2944 2945 DP10, 0 /TEMP FOR DECPRS 2946 DP11, 0 /TEMP FOR DECPRS 2947 DP12, 0 /TEMP FOR DECPRS 2948 DP13, 0 /TEMP FOR DECPRS 2949 2950 / ROUTINE TO MULTIPLY THE VALUE OF THE AC TIMES 10. 2951 / VALUE IN THE AC IS ASSUMED BINARY. 2952 2953 / THE NUMBER IS RETURNED IN THE AC. IF THE LINK IS SET THE MULTIPLY 2954 / OVERFLOWED 12 BITS. 2955 2956 MUL10, 0 2957 DCA MULTMP /SAVE THE NUMBER 2958 TAD MULTMP /GET THE NUMBER BACK 2959 CLL RTL /MULTIPLY TIMES 4 2960 TAD MULTMP /TIMES 5 2961 SNL /SKIP IF ALREADY OVERFLOWED /025 CJL 2962 RAL /TIMES 10 2963 JMP I MUL10 /RETURN NUMBER IN AC 2964 /THE LINK HAS ANY OVERFLOW 2965 2966 MULTMP, 0 /TEMP STORAGE FOR MUL10 ROUTINE 2967 2968 2969 2970 / ROUTINE TO CHECK FOR A VALID ASCII DECIMAL VALUE. 2971 2972 / ENTER WITH ASCII CHAR IN THE AC. 2973 / EXIT RETURN + 1 IF NON-VALID ASCII DECIMAL WITH CHAR IN AC. 2974 / EXIT RETURN + 2 IF VALID ASCII DECIMAL WITH CHAR IN AC. 2975 2976 DECCK, 0 2977 DCA DECCK5 /STORE THE CHAR TO CHECK 2978 TAD DECCK5 /GET THE CHAR 2979 TAD (-"0 /CHECK FOR LESS THAN 0 2980 SPA /SKIP IF NOT LESS THAN 0 2981 JMP DECCK1 /NON-ASCII DECIMAL 2982 TAD ("0-"9-1 /CHECK GREATER THAN 9 2983 SMA CLA /SKIP IF LE 9 2984 JMP DECCK1 /INVALID ASCII DECIMAL 2985 ISZ DECCK /BUMP RETURN FOR VALID ASCII DECIMAL 2986 DECCK1, TAD DECCK5 /RE-GET ORIGINAL CHAR IN AC 2987 JMP I DECCK /RETURN 2988 2989 2990 DECCK5, 0 /TEMP FOR "DECCK" ROUTINE 2991 2992 > 2993 / ROUTINE TO INPUT A COMMAND LINE FROM THE KEYBOARD. /013/014 CJL 2994 2995 002000 0000 LININP, 0 2996 002001 1377 TAD (LINBUF /GET ADDRESS OF LINE BUFFER 2997 002002 3262 DCA LIN50 /STORE IN A POINTER 2998 002003 4776 LIN1, JMS I (INPUT) /GET A CHARACTER FROM THE KEYBOARD /044 CJL 2999 002004 1375 TAD (-CNTRLM) /COMPARE TO /034 CJL 3000 002005 7450 SNA /SKIP IF NOT A RETURN 3001 002006 5232 JMP LIN2 /LINE IS INPUT 3002 002007 1374 TAD (-DELETE+CNTRLM)/COMPARE TO /034 CJL 3003 002010 7650 SNA CLA /SKIP IF NOT A DELETE 3004 002011 5237 JMP LIN5 /OFF TO HANDLE A DELETE 3005 002012 1262 TAD LIN50 /GET VALUE OF LINE POINTER 3006 002013 1373 TAD (-LINBUF-LINSIZ /COMPARE WITH END OF LINE BUFFER 3007 002014 7700 SMA CLA /SKIP IF ROOM IN LINE BUFFER 3008 002015 5256 JMP LIN10 /BEEP FOR FULL BUFFER 3009 002016 1015 TAD INCHAR /GET THE KEYBOARD CHARACTER AGAIN /044 CJL 3010 002017 1372 TAD (-140) /COMPARE TO LOWER-CASE LIMIT /034 CJL 3011 002020 7500 SMA /SKIP IF BELOW LIMIT /034 CJL 3012 002021 1172 TAD [-40] /ELSE MAKE IT UPPER-CASE /034 CJL 3013 002022 1371 TAD (140) /RESTORE THE CHARACTER /034 CJL 3014 002023 3662 DCA I LIN50 /STORE IN THE LINE BUFFER 3015 002024 2262 ISZ LIN50 /BUMP THE LINE BUFFER POINTER 3016 002025 7240 NL7777 /SET -1 /032 CJL 3017 002026 3662 DCA I LIN50 /TERMINATE THE LINE 3018 002027 1015 TAD INCHAR /GET THE LATEST KEYBOARD CHARACTER BACK /044 CJL 3019 002030 4555 JMS I [P7ECHO] /PRINT IT /043 CJL 3020 002031 5203 JMP LIN1 /LOOP TILL A RETURN TYPED 3021 3022 002032 7240 LIN2, NL7777 /SET -1 /032 CJL 3023 002033 3662 DCA I LIN50 /INSURE STRING TERMINATED 3024 002034 4576 JMS I [SCRIBE] /DO A /025 CJL 3025 002035 4411 CRLF /, /025 CJL 3026 002036 5600 JMP I LININP /DONE 3027 3028 / HANDLE A DELETE TYPED IN 3029 3030 002037 1262 LIN5, TAD LIN50 /FIND OUT FIRST IF... 3031 002040 1370 TAD (-LINBUF /WE ARE AT THE BEGINNING OF THE LINE 3032 002041 7650 SNA CLA /SKIP IF NO 3033 002042 5203 JMP LIN1 /JUST IGNORE THE DELETE 3034 002043 7240 NL7777 /SET -1 /032 CJL 3035 002044 1262 TAD LIN50 /GET THE LINE POINTER 3036 002045 3262 DCA LIN50 /RETURN BACKED UP 3037 002046 3662 DCA I LIN50 /ZERO THE CHAR 3038 002047 1367 TAD (CNTRLH) /GET A /025 CJL 3039 002050 4555 JMS I [P7ECHO] /PRINT IT /043 CJL 3040 002051 1174 TAD [" &177] /GET A /025 CJL 3041 002052 4555 JMS I [P7ECHO] /PRINT IT /043 CJL 3042 002053 1367 TAD (CNTRLH) /GET A /025 CJL 3043 002054 4555 JMS I [P7ECHO] /PRINT IT /043 CJL 3044 002055 5203 JMP LIN1 /BACK TO INPUT 3045 / HANDLE FULL LINE BUFFER HERE 3046 3047 002056 7300 LIN10, CLA CLL /ENSURE CLEAR AC 3048 002057 1154 TAD [CNTRLG] /GET A CHARACTER /025 CJL 3049 002060 4555 JMS I [P7ECHO] /PRINT IT /043 CJL 3050 002061 5203 JMP LIN1 /WAIT FOR EITHER RETURN OF DELETE KEY 3051 3052 002062 0000 LIN50, 0 /TEMP POINTER FOR "LININP" ROUTINE 3053 / ROUTINE TO PACK TWO SIX-BIT CHARACTERS INTO A WORD. /032 CJL 3054 3055 / CALLING SEQUENCE: 3056 3057 / [PACK6PTR => CHARACTER PACKING AREA]. 3058 / [PACK6FLAG=0 IF PACKING INTO HIGH-ORDER BYTE. 3059 / PACK6FLAG=4000 IF PACKING INTO LOW-ORDER BYTE]. 3060 3061 / TAD CHAR /AC CONTAINS CHARACTER TO BE PACKED 3062 / PACK6 /CALL VIA PAGE ZERO POINTER 3063 3064 / RETURNS WITH AC CLEAR AND PACK6PTR AND PACK6FLAG UPDATED FOR NEXT PACKING. 3065 3066 002063 0000 PACK60, .-. /PACK SIX-BIT ROUTINE 3067 002064 0175 AND [77] /JUST SIX-BIT 3068 002065 3306 DCA PACK6TEMP /SAVE FOR NOW 3069 002066 7330 NL4000 /SET INVERSION BIT 3070 002067 1057 TAD PACK6FLAG /REVERSE THE FLAG 3071 002070 3057 DCA PACK6FLAG /STORE BACK 3072 002071 7430 SZL /WAS IT CLEAR? 3073 002072 5301 JMP PACKIT /NO, GO DO LOW-ORDER 3074 002073 1306 TAD PACK6TEMP /GET THE CHARACTER 3075 002074 7006 RTL;RTL;RTL /MOVE UP 002075 7006 002076 7006 3076 002077 3456 DCA I PACK6PTR /STORE IT 3077 002100 5663 JMP I PACK60 /RETURN 3078 3079 002101 1456 PACKIT, TAD I PACK6PTR /GET PREVIOUS HIGH-ORDER HALFWORD 3080 002102 1306 TAD PACK6TEMP /ADD ON LATEST 3081 002103 3456 DCA I PACK6PTR /STORE BOTH 3082 002104 2056 ISZ PACK6PTR /BUMP FOR NEXT TIME 3083 002105 5663 JMP I PACK60 /RETURN 3084 3085 002106 0000 PACK6TE,.-. /PACK6 TEMPORARY 3086 / ROUTINE TO COMPARE TWO FILE NAMES FOR EQUALITY. 3087 / THE ROUTINE WILL CHECK EACH OF THE 8 FILE NAME CHARS AND IF A 3088 / CHAR IN THE FIRST FILE NAME (THE ONE WE ARE LOOKING FOR) CONTAINS 3089 / A "?" IT WILL MATCH ON THE SECOND FILE NAME CHAR. 3090 / ENTER WITH "FCMP1" POINTING TO THE FILE NAME TO FIND, AND "FCMP2" 3091 / POINTING TO THE FILE NAME TO TRY AND MATCH. EXIT + 1 IF NO MATCH 3092 / AND EXIT + 2 IF MATCH. (IF NON-ZERO AC ON ENTRY, THE AC IS ASSUMED 3093 / TO HAVE THE VALUE FOR "FCMP2".) 3094 3095 002107 0000 FMATCH, 0 3096 002110 7440 SZA /SKIP IF NO ARGUMENT IN AC 3097 002111 3361 DCA FCMP2 /THIS ARGUMENT CAME IN THE AC 3098 002112 1360 TAD FCMP1 /GET ADDRESS OF FIRST FILE NAME BLOCK 3099 002113 3060 DCA GET6P /STORE IN A POINTER 3100 002114 3061 DCA GET6F /INIT FLAG FOR "GET6" ROUTINE 3101 002115 1361 TAD FCMP2 /GET ADDRESS OF SECOND FILE NAME BLOCK 3102 002116 3354 DCA FMATP /STORE IN A LOCAL POINTER 3103 002117 3356 DCA FMATF /INIT LOCAL FLAG 3104 002120 1366 TAD (-10 /8 CHARS TO DO 3105 002121 3355 DCA FMATC /STORE IN LOCAL COUNTER 3106 3107 002122 7330 FMAT1, NL4000 /SET 4000 /032 CJL 3108 002123 1356 TAD FMATF /GET FLAG 3109 002124 3356 DCA FMATF /RETURN FLAG, LINK CONTAINS STATUS 3110 002125 1754 TAD I FMATP /GET A WORD FROM THE SECOND NAME 3111 002126 7430 SZL /SKIP IF HIGH-ORDER WANTED NOW /032 CJL 3112 002127 5334 JMP FSWIT /JUMP IF LOW-ORDER WANTED NOW /032 CJL 3113 002130 7012 RTR;RTR;RTR /MOVE DOWN HIGH-ORDER /032 CJL 002131 7012 002132 7012 3114 002133 7410 SKP /DON'T BUMP YET /032 CJL 3115 002134 2354 FSWIT, ISZ FMATP /BUMP THE POINTER /032 CJL 3116 002135 0175 AND [77] /KEEP ONLY BOTTOM 6 BITS /016 CJL 3117 002136 3357 DCA FMATT /STORE IN A TEMP 3118 002137 4517 GET6 /NOW GET A CHAR FROM FIRST NAME 3119 002140 1365 TAD (-77 /CHECK IF WILD 3120 002141 7450 SNA /SKIP IF NO 3121 002142 5350 JMP FMAT2 /NO MATCH CHECK ON A WILD CARD 3122 002143 1175 TAD [77] /RESTORE THE CHARACTER /014/016 CJL 3123 002144 7041 CIA /NEGATE FOR COMPARE 3124 002145 1357 TAD FMATT /COMPARE WITH SECOND FILE NAME 3125 002146 7640 SZA CLA /SKIP IF IS A MATCH 3126 002147 5707 JMP I FMATCH /THIS IS NOT A MATCH 3127 3128 002150 2355 FMAT2, ISZ FMATC /BUMP COUNTER 3129 002151 5322 JMP FMAT1 /LOOP, MORE TO CHECK 3130 002152 2307 ISZ FMATCH /BUMP RETURN FOR MATCH 3131 002153 5707 JMP I FMATCH /GOT A MATCH 3132 3133 002154 0000 FMATP, 0 /POINTER FOR "FMATCH" 3134 002155 0000 FMATC, 0 /COUNTER FOR "FMATCH" 3135 002156 0000 FMATF, 0 /FLAG FOR "FMATCH" 3136 002157 0000 FMATT, 0 /TEMP FOR "FMATCH" 3137 002160 0000 FCMP1, 0 /POINTER FOR FIRST FILE NAME BLOCK 3138 002161 0000 FCMP2, 0 /POINTER FOR SECOND FILE NAME BLOCK 3139 002165 7701 PAGE /014 CJL 002166 7770 002167 0010 002170 5051 002171 0140 002172 7640 002173 5011 002174 7616 002175 7763 002176 6400 002177 2727 3140 / REMOTE LINK INPUT ROUTINE. 3141 / CALL = RPACK. 3142 3143 002200 0000 ILINK, 0 3144 002201 1033 TAD RETRY /SET UP A RE-TRY COUNT 3145 002202 3257 DCA ILINK6 /RE-TRY COUNT FOR INPUT ERRORS 3146 3147 002203 4777 ILINK0, JMS I (GETSOH) /FIRST GET THE "SOH" BYTE 3148 002204 5241 JMP ILINK2 /RETURN HERE ON TIME-OUT 3149 002205 3262 DCA ILINK9 /INIT CHECKSUM REGISTER 3150 002206 1153 TAD [RRLEN] /GET REMOTE RECEIVE BUFFER ADDRESS 3151 002207 3261 DCA ILINK8 /STORE IN LOCAL POINTER 3152 002210 4776 JMS I (GETIR) /GET A CHAR 3153 002211 5241 JMP ILINK2 /GOT A RETURN OR TIME-OUT 3154 002212 3661 DCA I ILINK8 /STORE LENGTH IN BUFFER 3155 002213 1661 TAD I ILINK8 /GET LENGTH CHAR BACK 3156 002214 1375 TAD (-40-1 /CHAR FUNCTION - LENGTH BYTE 3157 002215 7041 CIA /NEGATE FOR COUNTER 3158 002216 3260 DCA ILINK7 /STORE IN LOCAL COUNTER 3159 3160 002217 2261 ILINK1, ISZ ILINK8 /BUMP POINTER 3161 002220 4776 JMS I (GETIR) /GET NEXT CHAR 3162 002221 5241 JMP ILINK2 /GOT A RETURN 3163 002222 3661 DCA I ILINK8 /STORE IN BUFFER 3164 002223 2260 ISZ ILINK7 /BUMP COUNTER 3165 002224 5217 JMP ILINK1 /LOOP 3166 3167 002225 2261 ISZ ILINK8 3168 002226 7240 NL7777 /SET -1 /032 CJL 3169 002227 3661 DCA I ILINK8 3170 002230 1262 TAD ILINK9 /GET CALCULATED CHECKSUM 3171 002231 4573 JMS I [CKSUM] /CALCULATE 1 BYTE CHECKSUM 3172 002232 7041 CIA /NEGATE FOR COMPARE 3173 002233 3260 DCA ILINK7 /STORE TEMP 3174 002234 4776 JMS I (GETIR) /NOW GET CHECKSUM 3175 002235 5241 JMP ILINK2 /GOT A RETURN 3176 002236 1260 TAD ILINK7 /COMPARE WITH CALCULATED CHECKSUM 3177 002237 7650 SNA CLA /SKIP IF NOT SAME 3178 002240 5253 JMP ILINK4 /ARE SAME 3179 3180 002241 7300 ILINK2, CLA CLL /INSURE CLEAR AC 3181 002242 2257 ISZ ILINK6 /BUMP RE-TRY COUNTER 3182 002243 5246 JMP ILINK3 /CAN RE-TRY 3183 002244 1374 TAD (RPERMSG) /GET MESSAGE FOR FATAL PACKET ERROR /025 CJL 3184 002245 5552 JMP I [CLOOP7] /AND ABORT THE MESS 3185 3186 002246 1002 ILINK3, TAD ABFLAG /GET ABORT FLAG /044 CJL 3187 002247 7640 SZA CLA /SKIP IF NO 3188 002250 5773 JMP I (ABORT) /ABORT THIS 3189 002251 4772 JMS I (SNDNAK) /SEND BACK A "NAK" 3190 002252 5203 JMP ILINK0 /AND TRY AGAIN 3191 002253 1002 ILINK4, TAD ABFLAG /GET ABORT FLAG /044 CJL 3192 002254 7650 SNA CLA /SKIP IF YES 3193 002255 5600 JMP I ILINK /NOPE, RETURN 3194 002256 5773 JMP I (ABORT) 3195 3196 002257 0000 ILINK6, 0 /LOCAL TO "ILINK" 3197 002260 0000 ILINK7, 0 /LOCAL TO "ILINK" 3198 002261 0000 ILINK8, 0 /LOCAL TO "ILINK" 3199 002262 0000 ILINK9, 0 /LOCAL TO "ILINK" 3200 3201 / HELP COMMAND ROUTINE. /024 CJL 3202 3203 002263 0000 HELPSRV,.-. /HELP ROUTINE 3204 002264 4577 JMS I [CRESET] /RESET CONSOLE ROUTINE STUFF 3205 002265 4576 JMS I [SCRIBE] /GIVE THEM THE 3206 002266 4202 HELPMSG /HELP MESSAGE 3207 002267 1101 TAD ESCHAR /GET THE ESCAPE CHARACTER 3208 002270 4551 JMS I [ESCPRNT] /PRINT IT 3209 002271 4576 JMS I [SCRIBE] /DO A 3210 002272 4411 CRLF /, 3211 002273 2263 ISZ HELPSRV /BUMP PAST ERROR RETURN 3212 002274 5663 JMP I HELPSRV /RETURN 3213 3214 / ROUTINE TO PRINT THE DATA IN THE RECEIVED PACKET. 3215 3216 002275 0000 PRIPAK, 0 3217 002276 4514 PRI8B; RRDTA /PRINT THE DATA 002277 6066 3218 002300 4576 JMS I [SCRIBE] /DO A /025 CJL 3219 002301 4411 CRLF /, /025 CJL 3220 002302 5675 JMP I PRIPAK /DONE 3221 3222 002372 2526 PAGE /014 CJL 002373 4266 002374 4635 002375 7737 002376 0611 002377 0600 3223 / ROUTINE TO SERVICE A SEND REQUEST. 3224 3225 002400 0000 SNDSRV, 0 3226 002401 4556 JMS I [CREST2] /SETUP CONSOLE OUTPUT ROUTINES /025 CJL 3227 002402 1377 TAD (MSEND) /FIRST SET MODE TO SEND 3228 002403 3016 DCA KMODE /PUT INTO MODE FLAG 3229 002404 1031 TAD LPTR /GET CURRENT LINE POINTER 3230 002405 3055 DCA PRSERR /SAVE LINE POSITION 3231 002406 1055 TAD PRSERR /GET LINE POSITION 3232 002407 4550 JMS I [DPARS] /TRY TO PARSE OFF A DEVICE NAME 3233 002410 4261 JMS SNDERROR /RETURN A DEVICE NAME ERROR /026 CJL 3234 002411 3055 SER1, DCA PRSERR /SAVE LINE POINTER /026 CJL 3235 002412 1376 TAD (FNBLK /GET FILE NAME BLOCK ADDRESS 3236 002413 3065 DCA FNPTR /STORE IN POINTER 3237 002414 1055 TAD PRSERR /GET STRING POINTER 3238 002415 4547 JMS I [PFNAM] /PARSE OFF THE FILE NAME 3239 002416 4261 JMS SNDERROR /FILE NAME PARSE ERROR /026 CJL 3240 002417 3055 SER2, DCA PRSERR /SAVE THE STRING POINTER /026 CJL 3241 002420 1055 TAD PRSERR /GET THE STRING POINTER 3242 002421 4560 JMS I [NOSP] /FIND THE END OF STRING 3243 002422 7410 SKP /GOT END OF STRING HERE 3244 002423 4261 JMS SNDERROR /SYNTAX ERROR /026 CJL 3245 002424 3055 SER3, DCA PRSERR /RETURN POINTER /026 CJL 3246 002425 1071 TAD DEVNUM /GET THE DEVICE NUMBER PARSED 3247 002426 4546 JMS I [HFETCH] /FETCH A HANDLER FOR THIS 3248 002427 4261 JMS SNDERROR /HANDLER FETCH ERROR /026 CJL 3249 002430 3306 SER4, DCA FILFND /INIT FILE FOUND FLAG 3250 002431 3063 DCA INIFLG /CLEAR THE INIT DONE FLAG 3251 002432 7201 NL0001 /INITIALIZE DIRECTORY /028 CJL 3252 002433 3307 DCA SLFLAG /LOOKUP FLAG /028 CJL 3253 002434 1376 SNDSV1, TAD (FNBLK /GET FILE NAME BLOCK ADDRESS 3254 002435 3775 DCA I (FCMP1) /SET FOR FILE TO FINE 3255 002436 1307 TAD SLFLAG /GET DIRECTORY FLAG /028 CJL 3256 002437 4774 JMS I (LUKUP) /FIND A MATCH FOR THIS FILE 3257 002440 4261 JMS SNDERROR /DIRECTORY I/O ERROR /026 CJL 3258 002441 5251 SER5, JMP S00 /FILE NOT FOUND /026 CJL 3259 002442 2306 ISZ FILFND /BUMP FILE FOUND COUNT 3260 002443 3307 DCA SLFLAG /DON'T INITIALIZE LOOKUP AGAIN 3261 002444 4773 JMS I (SNDPRO) /PROCESS THIS FILE FOR SEND 3262 002445 4261 JMS SNDERROR /ERROR IN FILE SEND PROCESS /026 CJL 3263 002446 1066 SER6, TAD WILDF /WAS WILD CARD FILE SPEC? /026 CJL 3264 002447 7640 SZA CLA /SKIP IF NO 3265 002450 5234 JMP SNDSV1 /GOT WILD CARD, TRY FOR NEXT 3266 002451 1306 S00, TAD FILFND /CHECK FOR ANY FILES FOUND 3267 002452 7650 SNA CLA /SKIP IF YES 3268 002453 4261 JMS SNDERROR /RETURN FILE NOT FOUND ERROR /026 CJL 3269 002454 4314 SER7, JMS BRKXMT /BREAK THE SEND /026 CJL 3270 002455 1055 TAD PRSERR /GET CURRENT CURSOR POSITION 3271 002456 3031 DCA LPTR /UPDATE 3272 002457 2200 ISZ SNDSRV /BUMP RETURN 3273 002460 5600 JMP I SNDSRV /AND DONE 3274 / SEND ERRORS COME HERE. /026 CJL 3275 3276 002461 0000 SNDERRO,.-. /SEND ERROR ROUTINE 3277 002462 7200 CLA /CLEAN UP 3278 002463 1261 TAD SNDERROR /GET CALLER 3279 002464 4570 JMS I [SRCHTABLE] /GO MATCH IT 3280 002465 2465 SNERTABLE-1-1 /IN ERROR TABLE 3281 002466 5600 JMP I SNDSRV /TAKE ERROR EXIT WITH MESSAGE ADDRESS IN AC 3282 3283 / SEND ERROR MESSAGE DISPATCH TABLE. /026 CJL 3284 3285 002467 5367 SNERTAB,-SER1; DNERMSG /DEVICE NAME ERROR 002470 4071 3286 002471 5361 -SER2; FNERMSG /FILE NAME ERROR 002472 4127 3287 002473 5354 -SER3; FSERMSG /FILE NAME SYNTAX ERROR 002474 4165 3288 002475 5350 -SER4; SHFEMSG /HANDLER FETCH ERROR 002476 4701 3289 002477 5337 -SER5; SDERMSG /DIRECTORY I/O ERROR 002500 4657 3290 002501 5332 -SER6; SNDEMSG /SEND ERROR 002502 4722 3291 002503 5324 -SER7; NOTFND /LOOKUP 002504 4442 3292 002505 0000 0 /THIS ENDS THE LIST 3293 3294 002506 0000 FILFND, 0 /HOLDS COUNT OF # OF FILES FOUND 3295 002507 0000 SLFLAG, .-. /LOOKUP INITIALIZE FLAG /028 CJL 3296 002510 0000 FNBLK, 0 3297 002511 0000 0 3298 002512 0000 0 3299 002513 0000 0 3300 / ROUTINE TO RE-SET THE SEND. 3301 3302 002514 0000 BRKXMT, .-. 3303 002515 7300 CLA CLL /INSURE CLEAR AC 3304 002516 3063 DCA INIFLG /CLEAR THE INIT SEND FLAG 3305 002517 4512 FPACK /FORMAT A PACKET 3306 002520 6376 NODATA /NO DATA FOR THIS PACKET 3307 002521 0102 STEOT /"EOT" PACKET TYPE 3308 002522 4511 SPACK /SEND THE PACKET 3309 002523 0001 1 /READ RESPONSE /042 CJL 3310 002524 0000 0 /DO NOT DISPATCH /042 CJL 3311 002525 5714 JMP I BRKXMT /DONE 3312 3313 / ROUTINE TO SEND OUT A NAK WITHOUT DISTURBING THE NORMAL PACKET BUFFER. 3314 3315 002526 0000 SNDNAK, 0 3316 002527 7240 NL7777 /-1 /042 CJL 3317 002530 1037 TAD CURSEQ /ADD ON CURRENT SEQUENCE NUMBER /042 CJL 3318 002531 0175 AND [77] /MODULO 64 /042 CJL 3319 002532 1174 TAD [40] /TAKE CHAR(SEQUENCE NUMBER) /042 CJL 3320 002533 3353 DCA NAKPAK+2 /PUT IN NAK PACKET BUFFER 3321 002534 1352 TAD NAKPAK+1 /GET LENGTH 3322 002535 1353 TAD NAKPAK+2 /GET SEQ 3323 002536 1354 TAD NAKPAK+3 /GET TYPE 3324 002537 4573 JMS I [CKSUM] /CALCULATE CHECKSUM 3325 002540 3355 DCA NAKPAK+4 /PUT IN CHECKSUM 3326 002541 1045 TAD REOL /GET ANY EOL REQUIRED 3327 002542 1172 TAD [-40] /UN-CHAR IT /014/016 CJL 3328 002543 7450 SNA /SKIP IF USING 3329 002544 7240 NL7777 /NO EOL, PUT IN -1 INSTEAD /032 CJL 3330 002545 3356 DCA NAKPAK+5 /PUT EOL IN 3331 002546 4515 REM8B; NAKPAK /SEND NAK TO REMOTE 002547 2551 3332 002550 5726 JMP I SNDNAK /DONE 3333 3334 3335 002551 0001 NAKPAK, CNTRLA /MARK /042 CJL 3336 002552 0043 " &77+3 /LENGTH OF NAK PACKET /042 CJL 3337 002553 0000 .-. /SEQUENCE NUMBER GOES HERE /042 CJL 3338 002554 0116 STNAK /DATA TYPE 3339 002555 0000 .-. /CHECKSUM /042 CJL 3340 002556 0000 .-. / IF USED /042 CJL 3341 002557 7777 -1 /TERMINATE 3342 3343 / FILENAME BUFFER. /014 CJL 3344 3345 002560 0000 NAMBUFF,ZBLOCK 12 /FILENAME.EXTENSION (WITH TERMINATOR) GOES HERE 002561 0000 002562 0000 002563 0000 002564 0000 002565 0000 002566 0000 002567 0000 002570 0000 002571 0000 3346 002573 4034 PAGE /014 CJL 002574 3400 002575 2160 002576 2510 002577 0002 3347 / ROUTINE TO SERVICE A "GET" COMMAND. 3348 3349 002600 0000 GETSRV, 0 3350 002601 4556 JMS I [CREST2] /SETUP CONSOLE OUTPUT ROUTINES /025 CJL 3351 002602 1377 TAD (MREC) /GET OUR MODE VALUE /045 CJL 3352 002603 3016 DCA KMODE /SETUP NOW /045 CJL 3353 002604 1031 TAD LPTR /GET CURRENT LINE POINTER 3354 002605 3055 DCA PRSERR /SAVE 3355 002606 1055 TAD PRSERR /RE-GET IT 3356 002607 4550 JMS I [DPARS] /PARSE OFF THE DEVICE NAME /006/014 CJL 3357 002610 5251 JMP GSRV50 /ERROR IN DEVICE NAME /006 3358 002611 4560 JMS I [NOSP] /FIND BEGINNING OF A FILE NAME 3359 002612 5244 JMP GSRV22 /GOT , NO FILE NAME /006/014 CJL 3360 002613 3226 DCA GSRV90 /STORE BEGINNING ADDRESS 3361 002614 1226 TAD GSRV90 /NOW WE LOOK FOR 3362 002615 4557 JMS I [SP] /THE END OF THE LINE 3363 002616 7410 SKP /GOT THE END OF THE LINE HERE 3364 002617 5215 JMP .-2 /NOT END YET, CONTINUE 3365 002620 3055 DCA PRSERR /STORE POINTER TO EOL 3366 002621 7240 NL7777 /SET -1 /032 CJL 3367 002622 3455 DCA I PRSERR /TERMINATE FILE NAME WITH -1 3368 002623 3037 DCA CURSEQ /RE-SET THE SEQUENCE 3369 002624 1226 TAD GSRV90 /GET ADDRESS OF FILE NAME 3370 3371 002625 4512 GSRV10, FPACK /FORMAT THE PACKET 3372 002626 0000 GSRV90, 0 /DATA ADDRESS HERE 3373 002627 0122 STRIN /RECIEVE INIT PACKET 3374 3375 002630 4511 GSRV12, SPACK /SEND THE PACKET 3376 002631 0001 1 /GET RESPONSE 3377 002632 2652 GSRV80-2 /DISPATCH TABLE /027 CJL 3378 3379 / SERVICE A NAK OR UNDEFINED. 3380 3381 002633 2034 GSRV15, ISZ RTRYC /BUMP THE RE-TRY COUNTER 3382 002634 5230 JMP GSRV12 /TRY AGAIN 3383 002635 5600 JMP I GETSRV /GIVE UP 3384 3385 / SERVICE A SEND/INIT FROM THE REMOTE. 3386 3387 002636 4776 GSRV20, JMS I (INPSRV) /HANDLE JUST LIKE A RECEIVE 3388 002637 5243 JMP GSRV21 /ERROR RETURN FROM "INPSRV" 3389 002640 2200 ISZ GETSRV /BUMP RETURN FOR NO ERROR 3390 002641 1055 TAD PRSERR /UPDATE THE CURRENT LINE POINTER 3391 002642 3031 DCA LPTR 3392 002643 5600 GSRV21, JMP I GETSRV 3393 3394 002644 7300 GSRV22, CLA CLL /MAKE SURE WE ARE CLEAR /009/014 CJL 3395 002645 1145 TAD [NOTFND] /GET ERROR MESSAGE ADDRESS /025 CJL 3396 002646 5600 JMP I GETSRV /TAKE ERROR RETURN /009/014 CJL 3397 3398 / GOT AN ERROR PACKET, DISPLAY ERROR AND ABORT. 3399 3400 002647 4544 GSRV40, JMS I [PRIPAK] /PRINT OUT THE ERROR PACKET 3401 002650 5600 JMP I GETSRV /TAKE THE ERROR EXIT 3402 / GOT DEVICE ERROR. /006/014 CJL 3403 3404 002651 7300 GSRV50, CLA CLL /ENSURE CLEAR AC /006/014 CJL 3405 002652 1375 TAD (DNERMSG) /GET ERROR MESSAGE ADDRESS /025 CJL 3406 002653 5600 JMP I GETSRV /TAKE ERROR RETURN /006/014 CJL 3407 3408 / DISPATCH TABLE. 3409 3410 002654 0105 GSRV80, STERR; GSRV40 /ERROR PACKET RETURNED 002655 2647 3411 002656 0123 STSIN; GSRV20 /SEND INIT PACKET RETURNED 002657 2636 3412 002660 0116 STNAK; GSRV15 /NAK PACKET RETURNED 002661 2633 3413 002662 0000 0 /TERMINATE TABLE 3414 / ROUTINE TO SERVICE A "RECEIVE" COMMAND. 3415 3416 002663 0000 RECSRV, 0 3417 002664 4556 JMS I [CREST2] /SETUP CONSOLE OUTPUT ROUTINES /025 CJL 3418 002665 1377 TAD (MREC) /GET OUR MODE VALUE /045 CJL 3419 002666 3016 DCA KMODE /SETUP NOW /045 CJL 3420 002667 1031 TAD LPTR /GET CURRENT LINE POINTER 3421 002670 3055 DCA PRSERR /SAVE IT 3422 002671 1055 TAD PRSERR /GET IT BACK 3423 002672 4550 JMS I [DPARS] /PARSE OFF DEVICE NAME /018 CJL 3424 002673 5312 JMP RECS30 /ERROR IN DEVICE NAME /018 CJL 3425 002674 4560 JMS I [NOSP] /CHECK IF BEGINNING OF FILE NAME /014 CJL 3426 002675 7410 SKP /GOT HERE /018 CJL 3427 002676 5315 JMP RECS60 /SOMETHING ELSE ON LINE, ERROR /014 CJL 3428 002677 3055 DCA PRSERR /SAVE CURRENT LINE POINTER /018 CJL 3429 002700 4513 RPACK /GET SEND/INIT PACKET FROM REMOTE 3430 002701 4774 JMS I (DISPATCH) /DISPATCH BASED ON RRTYP /031 CJL 3431 002702 2715 RECS80-2 /TABLE ADDRESS /027/031 CJL 3432 002703 5315 JMP RECS60 /DON'T KNOW WHAT IT IS 3433 3434 / GOT A SEND INIT PACKET. 3435 3436 002704 4776 RECS10, JMS I (INPSRV) /OFF TO HANDLE INPUT 3437 002705 5315 JMP RECS60 /ERROR RETURN 3438 3439 / TAKE THE NON-ERROR RETURN. 3440 3441 002706 2263 RECS20, ISZ RECSRV /BUMP FOR NON-ERROR RETURN 3442 002707 1055 TAD PRSERR /GET CURRENT CURSOR POSITION /018 CJL 3443 002710 3031 DCA LPTR /UPDATE IT /018 CJL 3444 002711 5663 JMP I RECSRV 3445 3446 / GOT ERROR IN DEVICE NAME. /018 CJL 3447 3448 002712 7300 RECS30, CLA CLL /CLEAN UP /018 CJL 3449 002713 1375 TAD (DNERMSG) /GET ERROR MESSAGE ADDRESS /025 CJL 3450 002714 5663 JMP I RECSRV /TAKE ERROR RETURN /018 CJL 3451 3452 / TAKE THE ERROR RETURN. 3453 3454 002715 7200 RECS60, CLA 3455 002716 5663 JMP I RECSRV /TAKE ERROR EXIT 3456 3457 / DISPATCH TABLE. 3458 3459 002717 0123 RECS80, STSIN; RECS10 /SEND INIT PACKET DISPATCH 002720 2704 3460 002721 0102 STEOT; RECS60 /END OF CONNECTION 002722 2715 3461 002723 0102 STBRK; RECS20 /BREAK TRANSMISSION 002724 2706 3462 002725 0000 0 3463 3464 002726 0000 RECS90, 0 /TEMP FOR "RECSRV" 3465 / KEYBOARD LINE BUFFER. /014 CJL 3466 3467 002727 0000 LINBUF, ZBLOCK LINSIZE /LINE BUFFER 002730 0000 002731 0000 002732 0000 002733 0000 002734 0000 002735 0000 002736 0000 002737 0000 002740 0000 002741 0000 002742 0000 002743 0000 002744 0000 002745 0000 002746 0000 002747 0000 002750 0000 002751 0000 002752 0000 002753 0000 002754 0000 002755 0000 002756 0000 002757 0000 002760 0000 002761 0000 002762 0000 002763 0000 002764 0000 002765 0000 002766 0000 3468 3469 002774 0452 PAGE /014 CJL 002775 4071 002776 3000 002777 0003 3470 / ROUTINE TO SERVICE INPUT OF A FILE. 3471 3472 003000 0000 INPSRV, 0 3473 003001 4777 JMS I (SETINI) /SET UP INIT REGISTERS 3474 003002 3072 DCA OFFLG /INITIALIZE OUTPUT FILE FLAG /036 CJL 3475 003003 6212 CIF USRFLD /GOTO USR FIELD /037 CJL 3476 003004 4571 JMS I [USRENTRY] /CALL USER SERVICE ROUTINE /037 CJL 3477 003005 0013 RESET /RESET TABLES /037 CJL 3478 003006 3037 DCA CURSEQ /RE-SET THE SEQUENCE NUMBER 3479 3480 003007 4512 FPACK /FORMAT A PACKET 3481 003010 6364 INIDAT /PACKET DATA ADDRESS 3482 003011 0131 STACK /"ACK" PACKET TYPE 3483 3484 3485 003012 4511 INPS01, SPACK /SEND A PACKET 3486 003013 0001 1 /AWAIT RESPONSE 3487 003014 3211 INPS91-2 /DISPATCH TABLE ADDRESS /027 CJL 3488 3489 / NAK OR UNDEFINED RESPONSE HERE. 3490 3491 003015 2034 INPS02, ISZ RTRYC /GOT A NAK, CHECK RE-TRY COUNT 3492 003016 5212 JMP INPS01 /RE-TRY THE INIT 3493 003017 4341 JMS INPERROR /GIVE UP /025 CJL 3494 3495 IER02= . /ERROR TABLE ADDRESS /039 CJL 3496 3497 003020 4512 INPS03, FPACK /FORMAT A PACKET 3498 003021 6376 NODATA /NO DATA 3499 003022 0131 STACK /"ACK" PACKET TYPE 3500 3501 003023 4511 INPS05, SPACK /SEND A PACKET 3502 003024 0001 1 /AWAIT RESPONSE 3503 003025 3176 INPS90-2 /DISPATCH TABLE ADDRESS /027 CJL 3504 003026 4341 JMS INPERROR /UNDEFINED RESPONSE /025 CJL 3505 3506 IER05= . /ERROR TABLE ADDRESS /039 CJL 3507 3508 / GOT A DATA PACKET, WRITE TO OUTPUT FILE. 3509 3510 003027 1072 INPS10, TAD OFFLG /CHECK THE OUTPUT FILE FLAG 3511 003030 7650 SNA CLA /SKIP IF OUTPUT FILE OPEN 3512 003031 4341 JMS INPERROR /ABORT AND EXIT /025 CJL 3513 003032 4776 IER10, JMS I (WRIPAK) /WRITE THE PACKET TO THE FILE /039 CJL 3514 003033 4341 JMS INPERROR /ERROR WRITING PACKET /025 CJL 3515 003034 5220 IER11, JMP INPS03 /LOOP /039 CJL 3516 / GOT A FILE HEADER PACKET, OPEN FILE. 3517 3518 003035 1072 INPS20, TAD OFFLG /CHECK IF OUTPUT FILE OPEN 3519 003036 7640 SZA CLA /SKIP IF NO 3520 003037 4341 JMS INPERROR /ABORT IF FILE ALREADY OPEN /025 CJL 3521 003040 1553 IER20, TAD I [RRLEN] /GET CURRENT PACKET LENGTH /039 CJL 3522 003041 1375 TAD (-40-3 /CALCULATE LENGTH OF DATA 3523 003042 7510 SPA /SKIP IF DATA IN THE PACKET 3524 003043 4341 JMS INPERROR /ELSE AN ERROR /025 CJL 3525 003044 1374 IER21, TAD (RRDTA) /CALCULATE LAST BYTE IN DATA /039 CJL 3526 003045 3356 DCA INPS81 /STORE IN POINTER 3527 003046 7240 NL7777 /SET -1 /032 CJL 3528 003047 3756 DCA I INPS81 /TERMINATE NAME WITH A MINUS WORD 3529 003050 1373 TAD (FNBLK /GET ADDRESS OF FILE NAME BLOCK 3530 003051 3065 DCA FNPTR /SAVE FOR NAME PARSE 3531 003052 1374 TAD (RRDTA /GET ADDRESS OF DATA IN PACKET 3532 003053 4547 JMS I [PFNAM] /PARSE OFF THE FILE NAME 3533 003054 4341 JMS INPERROR /ERROR IN FILE NAME /025 CJL 3534 3535 / GET TARGET DEVICE. 3536 3537 003055 7300 IER23, CLA CLL /CLEAR AC FROM FILE NAME PARSE /039 CJL 3538 003056 1071 TAD DEVNUM /GET DEVICE NUMBER PARSED /006 3539 003057 3074 DCA ODNUMB /SAVE OUTPUT DEVICE NUMBER 3540 003060 1074 TAD ODNUMB /GET NUMBER BACK 3541 003061 4546 JMS I [HFETCH] /FETCH HANDLER FOR THIS DEVICE 3542 003062 4341 JMS INPERROR /HANDLER FETCH ERROR /025 CJL 3543 003063 1373 IER24, TAD (FNBLK) /GET ADDRESS OF FILE NAME BLOCK /039 CJL 3544 003064 3271 DCA INPS22 /PUT IN CALL 3545 003065 1074 TAD ODNUMB /GET DEVICE NUMBER 3546 003066 6212 CIF USRFLD /GOTO USR FIELD /020 CJL 3547 003067 4571 JMS I [USRENTRY] /CALL USER SERVICE ROUTINE /035 CJL 3548 003070 0003 ENTER /ENTER TENTATIVE FILE /020 CJL 3549 003071 0000 INPS22, 0 / 3550 003072 0000 0 / 3551 003073 4341 JMS INPERROR /NO DIRECTORY ROOM /025 CJL 3552 003074 1271 IER22, TAD INPS22 /GET NEW FILE START BLOCK /039 CJL 3553 003075 3067 DCA FSBLK /SAVE 3554 003076 1272 TAD INPS22+1 /GET INDICATED MAXIMUM FILE SIZE /021 CJL 3555 003077 7001 IAC /GIVE ONE MORE THAN 2 LESS /021 CJL 3556 003100 3070 DCA FLEN /SAVE AS DANGER COUNT /021 CJL 3557 003101 2072 ISZ OFFLG /SET FLAG FOR OUTPUT FILE OPEN 3558 003102 7240 NL7777 /INDICATE INITIALIZATION /020 CJL 3559 003103 4543 JMS I [PUTBYTE] /INITIALIZE OUTPUT FILE ROUTINE /020 CJL 3560 003104 7402 HLT /THIS CAN'T HAPPEN! /020 CJL 3561 003105 1065 TAD FNPTR /GET POINTER TO 6 BIT FILE NAME 3562 003106 4542 JMS I [FILN8] /MAKE 8 BIT FORMATTED STRING 3563 IFNDEF IOCON < /SUPRESS PRINTING MESSAGES /053 DJG 3564 003107 4576 JMS I [SCRIBE] /TELL THEM 3565 003110 4142 FRECMSG /WE ARE RECEIVING 3566 003111 4514 PRI8B; NAMBUF /WHICH FILE WE ARE RECEIVING 003112 2560 3567 003113 4576 JMS I [SCRIBE] /DO A 3568 003114 4411 CRLF /, 3569 > /END SUPRESS PRINTING MESSAGES /053 DJG 3570 003115 5220 JMP INPS03 /LOOP 3571 / GOT AN END OF FILE PACKET. 3572 3573 003116 1072 INPS30, TAD OFFLG /ANY OUTPUT FILE OPEN? 3574 003117 7650 SNA CLA /SKIP IF YES 3575 003120 4341 JMS INPERROR /ERROR /025 CJL 3576 003121 4541 IER30, JMS I [FILCLOSE] /CLOSE THE FILE /020/039 CJL 3577 003122 4341 JMS INPERROR /ERROR CLOSING THE FILE /025 CJL 3578 IER31,/ DCA OFFLG /RE-SET FILE OPEN FLAG /D009/039 CJL 3579 003123 5220 JMP INPS03 /CONTINUE 3580 3581 / GOT AN END OF TRANSMISSION PACKET. 3582 3583 003124 1072 INPS40, TAD OFFLG /WAS A FILE OPEN? 3584 003125 7640 SZA CLA /SKIP IF NO 3585 003126 4541 JMS I [FILCLOSE] /CLOSE ANY OPEN FILE /020 CJL 3586 003127 7000 NOP /ERROR CLOSING THE FILE **** FIX THIS **** 3587 003130 4512 FPACK /FORMAT A PACKET 3588 003131 6376 NODATA /NO DATA IN PACKET 3589 003132 0131 STACK /"ACK" PACKET TYPE 3590 3591 003133 4511 SPACK /SEND THE PACKET 3592 003134 0000 0 /NO RESPONSE 3593 003135 2200 ISZ INPSRV /BUMP RETURN FOR NO ERROR 3594 003136 5600 JMP I INPSRV /TAKE NON-ERROR EXIT 3595 3596 / GOT AN ERROR PACKET. 3597 3598 003137 4544 INPS50, JMS I [PRIPAK] /PRINT THE PACKET DATA 3599 003140 5600 JMP I INPSRV /AND TAKE THE ERROR EXIT /009/014 CJL 3600 3601 / INPUT ERRORS COME HERE. /025 CJL 3602 3603 003141 0000 INPERRO,.-. /INPUT ERROR ROUTINE /025 CJL 3604 003142 4512 FPACK /FORMAT A PACKET /025 CJL 3605 003143 6376 NODATA /NO DATA /025 CJL 3606 003144 0102 STBRK /"BREAK LINK" PACKET TYPE /025 CJL 3607 003145 4511 SPACK /SEND THE PACKET /025 CJL 3608 003146 0000 0 /NO RESPONSE /025 CJL 3609 003147 1341 TAD INPERROR /GET CALLER /025 CJL 3610 003150 4570 JMS I [SRCHTABLE] /TRY TO FIND A MATCH /025 CJL 3611 003151 3220 INERTABLE-1-1 /IN ERROR TABLE /025 CJL 3612 003152 7450 SNA /SKIP IF FOUND PARTICULAR MESSAGE /025 CJL 3613 003153 1372 TAD (RERRMSG) /ELSE USE GENERAL MESSAGE /025 CJL 3614 003154 5600 JMP I INPSRV /TAKE ERROR RETURN /025 CJL 3615 3616 / TEMPS FOR "INPSRV". 3617 3618 003155 0000 INPS80, 0 3619 003156 0000 INPS81, 0 3620 003172 4507 PAGE /014 CJL 003173 2510 003174 6066 003175 7735 003176 3277 003177 4246 3621 / DISPATCH TABLES FOR "INPSRV". 3622 3623 003200 0104 INPS90, STDAT; INPS10 /HANDLE DATA PACKETS 003201 3027 3624 003202 0132 STEOF; INPS30 /HANDLE EOF PACKET 003203 3116 3625 003204 0102 STEOT; INPS40 /HANDLE END OF TRANSMISSION PACKET 003205 3124 3626 003206 0106 STFIL; INPS20 /HANDLE FILE NAME PACKET 003207 3035 3627 003210 0105 STERR; INPS50 /HANDLE ERROR PACKET 003211 3137 3628 003212 0000 0 /TERMINATE TABLE 3629 3630 003213 0116 INPS91, STNAK; INPS02 /HANDLE A NAK PACKET 003214 3015 3631 003215 0106 STFIL; INPS20 /HANDLE FILE NAME PACKET 003216 3035 3632 003217 0105 STERR; INPS50 /HANDLE ERROR PACKET 003220 3137 3633 003221 0000 0 /TERMINATE TABLE 3634 3635 / INPUT ERROR MESSAGE DISPATCH TABLE. /025/039 CJL 3636 3637 003222 4751 INERTAB,-IER05; UPERMSG /UNDEFINED PACKET ERROR /025 CJL 003223 4733 3638 003224 4744 -IER11; DSFLMSG /DISK OVERFLOW ERROR /042 CJL 003225 4105 3639 003226 4704 -IER22; RIDEMSG /DIRECTORY FULL ERROR /025 CJL 003227 4564 3640 003230 4723 -IER23; RFLNMSG /RECEIVED FILE NAME ERROR /025 CJL 003231 4521 3641 003232 4715 -IER24; RHFEMSG /HANDLER FETCH ERROR /025 CJL 003233 4541 3642 003234 4655 -IER31; FCLEMSG /FILE CLOSE ERROR /025 CJL 003235 4114 3643 003236 0000 0 /THIS ENDS THE LIST /025 CJL 3644 / ROUTINE TO CHECK FOR AN ALPHABETIC OR NUMERIC CHAR. 3645 / ENTER WITH THE CHAR IN THE AC. 3646 / EXIT + 2 IF ALPHABETIC OR NUMERIC WITH CHAR IN THE AC. 3647 / EXIT + 1 IF NON-ALPHABETIC OR NUMERIC WITH CHAR IN THE AC. 3648 3649 003237 0000 ALPNUM, 0 3650 003240 4247 JMS ALPHA /CHECK FOR ALPHA FIRST 3651 003241 7410 SKP /NON-ALPHA RETURN, MUST CHECK NUMERIC 3652 003242 5245 JMP ALPNM1 /IS ALPHA, TAKE RETURN + 2 3653 003243 4263 JMS NUMRC /CHECK IF NUMERIC 3654 003244 7410 SKP /NOT NUMERIC 3655 003245 2237 ALPNM1, ISZ ALPNUM /BUMP RETURN FOR ALPHA-NUMERIC 3656 003246 5637 JMP I ALPNUM /DONE 3657 3658 3659 / ROUTINE TO CHECK FOR AN ALPHABETIC CHARACTER. 3660 / ROUTINE ASSUMES UPPER CASE. 3661 / ENTER ROUTINE WITH CHAR IN THE AC. 3662 / EXIT + 2 IF THE CHAR IS ALPHABETIC WITH THE CHAR IN THE AC. 3663 / EXIT + 1 IF THE CHAR IS NOT ALPHABETIC WITH THE CHAR IN THE AC. 3664 3665 003247 0000 ALPHA, 0 3666 003250 3262 DCA ALPHA1 /STORE THE CHAR FOR RETURN 3667 003251 1262 TAD ALPHA1 /GET THE CHAR 3668 003252 1377 TAD (-"Z!200-1) /ADD ON UPPER LIMIT /034 CJL 3669 003253 7100 CLL /INIT LINK FOR A FLAG 3670 003254 1376 TAD ("Z-"A+1 3671 003255 7430 SZL /SKIP IF NOT A LETTER 3672 003256 2247 ISZ ALPHA /IS A LETTER, BUMP RETURN 3673 003257 7300 CLA CLL /CLEAR AC 3674 003260 1262 TAD ALPHA1 /RESTORE CHAR IN THE AC 3675 003261 5647 JMP I ALPHA /TAKE PROPER RETURN 3676 3677 003262 0000 ALPHA1, 0 /TEMP FOR ALPHA ROUTINE 3678 3679 / ROUTINE TO CHECK FOR A NUMERIC CHARACTER. 3680 / ENTER WITH THE CHAR TO CHECK IN THE AC. 3681 / EXIT + 2 IF NUMERIC WITH THE CHAR IN THE AC. 3682 / EXIT + 1 IF NON-NUMERIC WITH THE CHAR IN THE AC. 3683 3684 003263 0000 NUMRC, 0 3685 003264 3276 DCA NUMRC1 /SAVE THE CHAR FOR RETURN 3686 003265 1276 TAD NUMRC1 /GET THE CHAR BACK 3687 003266 1375 TAD (-"9!200-1) /ADD ON UPPER LIMIT /034 CJL 3688 003267 7100 CLL /INIT LINK FOR A FLAG 3689 003270 1140 TAD ["9-"0+1] /016 CJL 3690 003271 7430 SZL /SKIP IF NOT A DIGIT 3691 003272 2263 ISZ NUMRC /BUMP RETURN FOR NUMERIC 3692 003273 7300 CLA CLL /CLEAR AC 3693 003274 1276 TAD NUMRC1 /RESTORE CHAR IN THE AC 3694 003275 5663 JMP I NUMRC /DONE 3695 3696 003276 0000 NUMRC1, 0 /TEMP FOR NUMRC CHECK ROUTINE 3697 / ROUTINE TO WRITE THE CURRENT INPUT PACKET TO THE OUTPUT FILE. 3698 / ENTER: NOTHING. 3699 / EXIT: + 2 = WRITE SUCCESSFUL. 3700 / + 1 = WRITE NOT SUCCESSFUL. 3701 3702 003277 0000 WRIPAK, 0 3703 003300 1553 TAD I [RRLEN] /GET LENGTH OF PACKET 3704 003301 1374 TAD (RRDTA-40-3 /CALCULATE END OF BUFFER 3705 003302 3336 DCA W90 /PUT INTO POINTER 3706 003303 3736 DCA I W90 /ZERO AFTER END OF BUFFER 3707 003304 1373 TAD (RRDTA /GET ADDRESS OF DATA 3708 003305 3336 DCA W90 /PUT INTO POINTER 3709 3710 003306 1736 W10, TAD I W90 /GET A CHAR FROM PACKET 3711 003307 7450 SNA /SKIP IF NOT END 3712 003310 5334 JMP W60 /END, EXIT 3713 003311 7041 CIA /NEGATE FOR COMPARE 3714 003312 1046 TAD RQCTL /COMPARE WITH CURRENT QUOTE CHAR 3715 003313 7650 SNA CLA /SKIP IF NOT QUOTE CHAR 3716 003314 5321 JMP W20 /IS QUOTE, HANDLE SPECIAL 3717 003315 1337 TAD W92 /WAS LAST CHAR A QUOTE? 3718 003316 7640 SZA CLA /SKIP IF NO 3719 003317 1372 TAD (-100 /IT WAS, FIX UP THIS CHAR 3720 003320 5324 JMP W25 /HANDLE REST BELOW 3721 3722 003321 1337 W20, TAD W92 /CURRENT CHAR A QUOTE, CHECK PREVIOUS 3723 003322 7650 SNA CLA /SKIP IF YES 3724 003323 5330 JMP W30 /JUST THIS CHAR IS QUOTE, SET FLAG 3725 3726 003324 1736 W25, TAD I W90 /GET CHAR FROM BUFFER 3727 003325 4543 JMS I [PUTBYTE] /OUTPUT TO FILE /020 CJL 3728 003326 5677 JMP I WRIPAK /ERROR IN OUTPUT /M020 CJL 3729 003327 5331 JMP W35 /FINISH BELOW 3730 3731 003330 7301 W30, NL0001 CLL /GOTA SET FLAG FOR QUOTE CHARACTER /032 CJL 3732 3733 003331 3337 W35, DCA W92 /SET UP QUOTE FLAG 3734 003332 2336 ISZ W90 /BUMP POINTER 3735 003333 5306 JMP W10 /LOOP 3736 3737 003334 2277 W60, ISZ WRIPAK /BUMP RETURN FOR OK 3738 003335 5677 JMP I WRIPAK /DONE 3739 3740 003336 0000 W90, 0 /POINTER FOR "WRIPAK" 3741 003337 0000 W92, 0 /TEMP FOR "WRIPAK" 3742 / TABLE SEARCH ROUTINE. /025 CJL 3743 3744 / CALLING SEQUENCE: 3745 3746 / TAD VALUE /AC CONTAINS VALUE TO MATCH 3747 / JMS I [SRCHTABLE] /CALL ROUTINE 3748 / TABLE-2 /ADDRESS(TABLE)-2 3749 / RETURN /ALWAYS RETURNS HERE 3750 3751 / IF AC=0 THEN NO MATCH OCCURRED. 3752 3753 / IF AC IS NON-ZERO, THEN AC CONTAINS CORRESPONDING VALUE TO MATCH WHICH IS ALSO 3754 / STORED IN TABLEJUMP. 3755 3756 / TABLE FORMAT. 3757 3758 / -VALUE; CORRESPONDING VALUE /TABLE PAIR 3759 / ""; "" /ADDITIONAL PAIRS AS NECESSARY 3760 / 0 /ZERO TERMINATES THE TABLE 3761 3762 003340 0000 SRCHTAB,.-. /TABLE SEARCH ROUTINE 3763 003341 3003 DCA TABLEJUMP /SAVE PASSED VALUE TO MATCH 3764 003342 1740 TAD I SRCHTABLE /GET PASSED POINTER ARGUMENT 3765 003343 3010 DCA XR0 /STASH THE POINTER 3766 003344 2340 ISZ SRCHTABLE /BUMP PAST ARGUMENT 3767 003345 2010 SRCHLUP,ISZ XR0 /BUMP TO NEXT PAIR 3768 003346 1410 TAD I XR0 /GET A TABLE VALUE 3769 003347 7450 SNA /END OF TABLE? 3770 003350 5740 JMP I SRCHTABLE /YES, RETURN WITH CLEAR AC 3771 003351 1003 TAD TABLEJUMP /COMPARE TO DESIRED 3772 003352 7640 SZA CLA /SKIP IF IT MATCHES 3773 003353 5345 JMP SRCHLUP /JUMP IF NOT 3774 003354 1410 TAD I XR0 /GET CORRESPONDING VALUE 3775 003355 3003 DCA TABLEJUMP /STASH IT 3776 003356 1003 TAD TABLEJUMP /GET IT BACK 3777 003357 5740 JMP I SRCHTABLE /RETURN WITH CORRESPONDING VAUE IN AC 3778 3779 003372 7700 PAGE /014 CJL 003373 6066 003374 6023 003375 7706 003376 0032 003377 7645 3780 IFZERO 1 < 3781 3782 / OS8 DIRECTORY FILE DATA SETUP. 3783 / ENTER WITH THE DIRECTORY DATE WORD IN THE AC. 3784 / EXIT WITH THE DATE IN THE BUFFER "DATBUF". 3785 3786 FILD8, 0 3787 DCA FILD89 /SAVE THE DATE WORD 3788 TAD FILD89 /GET DATA WORD 3789 AND (7 /KEEP ONLY YEAR BITS 3790 TAD (116 /ADD 78 YEARS 3791 MQL /PUT INTO MQ REGISTER 3792 TAD (DATEYR /GET POINTER TO YEAR 3793 JMS DECCON /CONVERT TO ASCII DATE 3794 TAD FILD89 /GET DATE WORD BACK 3795 CLL RTR /SHIFT DAY DOWN 3796 RAR 3797 AND (37 /KEEP ONLY DAY BITS 3798 MQL /PUT IN MQ REGISTER 3799 TAD (DATEDA /GET POINTER TO DAY 3800 JMS DECCON /CONVERT TO ASCII DAY 3801 TAD FILD89 /GET DATE WORD BACK 3802 BSW /GET MONTH 3803 CLL RTR /DOWN 3804 AND (17 /KEEP ONLY MONTH BITS 3805 MQL /INTO MQ REGISTER 3806 TAD (DATEMO /GET ADDRESS OF WHERE TO PUT MONTH 3807 JMS DECCON /CONVERT 3808 JMP I FILD8 /ALL DONE 3809 3810 FILD89, 0 /TEMP FOR "FILD8" 3811 3812 3813 / ROUTINE TO CONVERT A BINARY VALUE INTO A TWO DIGIT ASCII DECIMAL NUMBER. 3814 / ENTER WITH WHERE TO STORE THE CONVERTED NUMBER IN THE AC AND THE NUMBER IN THE 3815 / MQ REGISTER. 3816 3817 DECCON, 0 3818 DCA DECC20 /STORE THE POINTER 3819 TAD ("0&177-1 /GET AN ASCII ZERO 3820 DCA I DECC20 /START OUT WITH A ZERO 3821 MQA /GET THE BINARY VALUE 3822 DECC01, ISZ I DECC20 /BUMP 3823 TAD (-12 /SUB 10 3824 SMA /SKIP IF NO MORE DIVISION 3825 JMP DECC01 /ELSE KEEP GOING 3826 TAD (12+"0&177 /CONVERT REMAINDER TO ASCII 3827 ISZ DECC20 /BUMP POINTER 3828 DCA I DECC20 /STORE 3829 / JMS FMTDAT /FORMAT FOR PRINTING /D013 3830 JMP I DECCON /DONE 3831 3832 > 3833 IFZERO 1 < 3834 3835 DECC20, 0 /LOCAL POINTER TO DECCON 3836 3837 / ROUTINE TO SET UP THE DATE IN A MM-DD-YY FORMAT TO PUT IN FRONT OF A FILE TO 3838 / PASS THE FILES DATE (TEMPORY AND NOT PART OF THE KERMIT PROTOCOL). 3839 3840 FMTDAT, 0 3841 TAD DATEMO /GET FIRST CHAR OF DATE 3842 DCA FDATE /MOVE IT 3843 TAD DATEMO+1 3844 DCA FDATE+1 3845 TAD DATEDA 3846 DCA FDATE+3 3847 TAD DATEDA+1 3848 DCA FDATE+4 3849 TAD DATEYR 3850 DCA FDATE+6 3851 TAD DATEYR+1 3852 DCA FDATE+7 3853 JMP I FMTDAT /QUICK AND DIRTY 3854 3855 DATBUF, "#&177 /FILE CREATION DATE ATTRIBUTE 3856 6+40 /LENGTH OF DATE (CHAR(X)) 3857 DATEYR, 0 /ASCII YEAR GOES HERE 3858 0 3859 DATEMO, 0 /ASCII MONTH GOES HERE 3860 0 3861 DATEDA, 0 /ASCII DAY GOES HERE 3862 0 3863 -1 /TERMINATE 3864 3865 / FORMATTED DATE GOES HERE. 3866 3867 SETDAT,"ANGLEBRACKET&177 /COMMENT SIGN 3868 3869 FDATE, 0 3870 0 3871 "-&177 3872 0 3873 0 3874 "-&177 3875 0 3876 0 3877 12 3878 15 3879 -1 3880 3881 > 3882 / DIRECTORY LOOKUP ROUTINE. /028 CJL 3883 3884 / CALLING SEQUENCE: 3885 3886 / NL0001 /IF INITIALIZING THE DIRECTORY 3887 3888 / OR 3889 3890 / CLA /CLEAR AC IF SUBSEQUENT CALL 3891 3892 / JMS I (LUKUP) /CALL ROUTINE 3893 / I/O ERROR /DIRECTORY I/O ERROR RETURN WITH AC DIRTY 3894 / NOT FOUND /FILE NOT FOUND RETURN 3895 / FOUND /LATEST FILE MATCHES REQUEST 3896 3897 / SETS FLEN TO -(FILE LENGTH) IN RECORDS. 3898 3899 / SETS FSBLK TO STARTING RECORD OF FILE. 3900 3901 / MODIFIES DIRECTORY SEGMENT SLIGHTLY (NOT TO BE WRITTEN BACK). 3902 3903 / DEPENDS ON DIRXR BEING UNTOUCHED BY OTHER ROUTINES. 3904 3905 003400 0000 LUKUP, .-. /DIRECTORY LOOKUP ROUTINE 3906 003401 7450 SNA /INITIALIZING DIRECTORY? 3907 003402 5262 JMP NXTFILE /NO, JUST GET ANOTHER FILE IF POSSIBLE 3908 003403 3207 NEXTSEG,DCA DIRRECORD /STORE LATEST DIRECTORY SEGMENT RECORD 3909 003404 4453 JMS I HNDADR /CALL I/O HANDLER 3910 003405 0210 PAGCNT^100+DIRFLD /READ IN A DIRECTORY SEGMENT 3911 003406 2400 DIRBUFFER /DIRECTORY I/O BUFFER 3912 003407 0000 DIRRECO,.-. /WILL BE LATEST SEGMENT NUMBER 3913 003410 5600 JMP I LUKUP /I/O ERROR, TAKE DIRTY IMMEDIATE RETURN 3914 003411 6211 CDF DIRFLD /GOTO DIRECTORY FIELD 3915 003412 1777 TAD I (FRSTRECORD) /GET FIRST RECORD OF FIRST ENTRY 3916 003413 3067 DCA FSBLK /STASH IT 3917 003414 1376 TAD (ENTSTRT-1) /POINT TO 3918 003415 3012 DCA DIRXR /ENTRIES 3919 003416 1412 LOOKLUP,TAD I DIRXR /GET FIRST WORD OF ENTRY 3920 003417 7450 SNA /SKIP IF NOT EMPTY 3921 003420 5265 JMP EMPENTRY /JUMP IF EMPTY ENTRY 3922 003421 3313 DCA FNAME /STORE FIRST FILENAME WORD 3923 003422 1412 TAD I DIRXR /GET NEXT 3924 003423 3314 DCA FNAME+1 /STORE SECOND FILENAME WORD 3925 003424 1412 TAD I DIRXR /GET NEXT 3926 003425 3315 DCA FNAME+2 /STORE THIRD FILENAME WORD 3927 003426 1412 TAD I DIRXR /GET NEXT 3928 003427 3316 DCA FNAME+3 /STORE EXTENSION WORD 3929 003430 7240 NL7777 /BACKUP 3930 003431 1776 TAD I (AIWNUMBER) /GET ADDITIONAL INFORMATION WORD COUNT 3931 003432 3301 DCA AIWCNT /STASH THE COUNTER 3932 003433 3302 DCADATW,DCA DATWORD /CLEAR THE DATE WORD 3933 003434 1233 TAD DCADATW/(DCA DATWORD)/GET STORING INSTRUCTION 3934 003435 3240 DCA AIWSTORE /STORE IN-LINE 3935 003436 5242 JMP AIWTEST /START LOOP THERE 3936 003437 1412 AIWLUP, TAD I DIRXR /GET A WORD FROM ENTRY 3937 003440 3302 AIWSTOR,DCA DATWORD+.-. /STORE IN PROPER WORD 3938 003441 2240 ISZ AIWSTORE /BUMP TO NEXT INSTRUCTION 3939 003442 2301 AIWTEST,ISZ AIWCNT /DONE ALL ADDITIONAL INFORMATION WORDS? 3940 003443 5237 JMP AIWLUP /NO, KEEP GOING 3941 003444 1412 TAD I DIRXR /GET THE FILE LENGTH 3942 003445 7450 SNA /SKIP IF VALID 3943 003446 5271 JMP TENTRY /JUMP IF ONLY TENTATIVE FILE (NO LENGTH) 3944 003447 3312 DCA FILENGTH /STORE FILE LENGTH 3945 003450 6201 CDF PRGFLD /BACK TO OUR FIELD 3946 / JMS I (FILTER) /CHECK IF WE LIKE THIS ONE 3947 003451 1375 TAD (FNAME) /POINT TO LATEST FILENAME 3948 003452 4774 JMS I (FMATCH) /CHECK FOR A MATCH 3949 003453 5262 JMP NXTFILE /FORGET THIS ONE, IT DIDN'T MATCH 3950 003454 1312 TAD FILENGTH /GET FILE LENGTH 3951 003455 3070 DCA FLEN /GIVE TO CALLER TO DESTROY 3952 003456 1375 TAD (FNAME) /POINT TO FILENAME 3953 003457 4542 JMS I [FILN8] /PUT IN CHARACTER FORM IN BUFFER 3954 003460 2200 ISZ LUKUP /BUMP TO FILE MATCH RETURN 3955 003461 5277 JMP FLEXIT /EXIT THERE 3956 3957 / COMES HERE FROM SUBSEQUENT CALL OR MATCH FAILURE. 3958 3959 003462 6211 NXTFILE,CDF DIRFLD /GOTO BUFFER FIELD 3960 003463 1312 TAD FILENGTH /GET LATEST FILE LENGTH 3961 003464 7410 SKP /DON'T DO EMPTY LENGTH 3962 3963 / COMES HERE TO BYPASS AN EMPTY ENTRY. 3964 3965 003465 1412 EMPENTR,TAD I DIRXR /GET LENGTH OF EMPTY 3966 003466 7041 CIA /WANT POSITIVE FORM 3967 003467 1067 TAD FSBLK /UPDATE TO NEXT FILE RECORD 3968 003470 3067 DCA FSBLK /STORE UPDATED VALUE 3969 003471 2773 TENTRY, ISZ I (FILECNT) /DONE WITH THIS SEGMENT? 3970 003472 5216 JMP LOOKLUP /NO, KEEP GOING 3971 003473 1772 TAD I (DIRLINK) /GET LINK TO NEXT SEGMENT 3972 003474 6201 CDF PRGFLD /BACK TO OUR FIELD 3973 003475 7440 SZA /END OF DIRECTORY? 3974 003476 5203 JMP NEXTSEGMENT /NO, GO DO NEXT SEGMENT 3975 003477 2200 FLEXIT, ISZ LUKUP /BUMP PAST I/O ERROR EXIT 3976 003500 5600 JMP I LUKUP /RETURN FOR FILE NOT FOUND 3977 3978 003501 0000 AIWCNT, .-. /ADDITIONAL INFORMATION WORD COUNTER 3979 003502 0000 DATWORD,.-. /DATE WORD STORED HERE (0000 IF NONE) 3980 003503 0000 ZBLOCK 7 /ROOM FOR MORE ADDITIONAL INFORMATION WORDS 003504 0000 003505 0000 003506 0000 003507 0000 003510 0000 003511 0000 3981 003512 0000 FILENGT,.-. /LATEST FILE LENGTH 3982 003513 0000 FNAME, ZBLOCK 4 /FILENAME AND EXTENSION STORED HERE 003514 0000 003515 0000 003516 0000 3983 3984 003572 2402 PAGE 003573 2400 003574 2107 003575 3513 003576 2404 003577 2401 3985 / OS/8 FILE UNPACK ROUTINE. /019 CJL 3986 3987 / THIS ROUTINE UNPACKS BYTES FROM THE INPUT FILE ACCORDING TO THE CURRENT VALUE 3988 / OF FILMODE: 3989 3990 / FILMODE CONTAINS 0177 (ASCII MODE). ALL BYTES ARE TREATED AS SEVEN-BIT ASCII 3991 / CHARACTERS BY STRIPPING THE HIGH-ORDER BIT. END OF FILE IS THE <^Z> CHARACTER 3992 / WHICH WILL BE SENT OR NOT ACCORDING TO THE CONTENTS OF OCTLZFLAG. IF 3993 / OCTLZFLAG CONTAINS NON-ZERO, THEN <^Z> WILL BE SENT AT ; THE NEXT CALL 3994 / WILL YIELD THE RETURN. IF OCTLZFLAG CONTAINS ZERO, THEN DETECTION OF 3995 / <^Z> YIELDS THE RETURN IMMEDIATELY. 3996 3997 / FILMODE CONTAINS 4377 (BINARY MODE). ALL BYTES ARE TREATED AS EIGHT-BIT 3998 / CHARACTERS AND WILL BE SENT WITHOUT <^Z> CHECK. THE NEXT CALL AFTER THE LAST 3999 / BYTE OF THE LAST RECORD HAS BEEN SENT YIELDS THE RETURN. 4000 4001 / CALLING CONSIDERATIONS: 4002 4003 / OCTLZFLAG MUST BE SETUP ACCORDINGLY IF IN ASCII MODE. 4004 4005 / FILMODE MUST BE SETUP ACCORDINGLY. 4006 4007 / FLEN MUST CONTAIN -(FILE LENGTH IN RECORDS) WHEN INITIALIZING THE INPUT FILE. 4008 / IT WILL BE MODIFIED BY CALLING THIS ROUTINE. 4009 4010 / FSBLK MUST CONTAIN THE THE STARTING RECORD WHEN INITIALIZING THE INPUT FILE. 4011 4012 / HNDADR MUST ALREADY BE SETUP TO CALL THE INPUT HANDLER. 4013 4014 / CALLING SEQUENCE: 4015 4016 / CLA /OR NL7777 IF INITIALIZING THE INPUT FILE 4017 / JMS I (GETBYTE) /CALL ROUTINE 4018 / I/O ERROR RETURN /FATAL INPUT ERROR OCCURRED; AC CONTAINS JUNK 4019 / END OF FILE / OCCURRED 4020 / GOOD RETURN /AC CONTAINS LATEST SEVEN/EIGHT-BIT CHARACTER 4021 4022 003600 0000 GETBYTE,.-. /GET A BYTE ROUTINE 4023 003601 7650 SNA CLA /INITIALIZING? 4024 003602 5646 JMP I PUTC /NO, GO GET NEXT BYTE 4025 003603 1067 TAD FSBLK /GET STARTING RECORD OF INPUT FILE 4026 003604 3210 DCA GETRECORD /STORE IN-LINE 4027 003605 4453 GETNEWR,JMS I HNDADR /CALL I/O HANDLER 4028 003606 0210 PAGCNT^100+BUFFLD /READ SOME PAGES INTO BUFFER FIELD 4029 003607 2000 GETCORE,FILBUFFER /BUFFER ADDRESS 4030 003610 0000 GETRECO,.-. /WILL BE LATEST RECORD NUMBER 4031 003611 5600 JMP I GETBYTE /INPUT ERROR! 4032 003612 1207 TAD GETCORE/(FILBUFFER) /SETUP THE 4033 003613 3361 DCA BUFPTR /BUFFER POINTER 4034 003614 3301 GETLOOP,DCA THIRD /CLEAR THIRD BYTE NOW 4035 003615 4231 JMS PUTONE /OBTAIN AND SEND BACK FIRST BYTE 4036 003616 4231 JMS PUTONE /OBTAIN AND SEND BACK SECOND BYTE 4037 003617 1301 TAD THIRD /GET THIRD BYTE 4038 003620 4246 JMS PUTC /SEND IT BACK 4039 003621 1361 TAD BUFPTR /GET THE POINTER 4040 003622 1377 TAD (-PAGCNT^200-FILBUFFER) /COMPARE TO LIMIT 4041 003623 7640 SZA CLA /SKIP IF AT END 4042 003624 5214 JMP GETLOOP /KEEP GOING 4043 003625 2210 ISZ GETRECORD /BUMP TO NEXT RECORD 4044 003626 2070 ISZ FLEN /DONE ALL RECORDS? (BINARY MODE ONLY) 4045 003627 5205 JMP GETNEWRECORD /NO, GO DO ANOTHER ONE 4046 4047 / BINARY REACHED HERE. 4048 4049 003630 5261 JMP GETEOF /TAKE SKIP RETURN TO MAIN CALLER 4050 4051 003631 0000 PUTONE, .-. /SEND BACK A BYTE ROUTINE 4052 003632 6211 CDF BUFFLD /GOTO BUFFER FIELD 4053 003633 1761 TAD I BUFPTR /GET LATEST WORD 4054 003634 0137 AND [7400] /JUST THIRD-BYTE NYBBLE 4055 003635 7104 CLL RAL /MOVE UP 4056 003636 1301 TAD THIRD /GET OLD NYBBLE (IF ANY) 4057 003637 7006 RTL;RTL /MOVE UP NYBBLE BITS 003640 7006 4058 003641 3301 DCA THIRD /SAVE FOR NEXT TIME 4059 003642 1761 TAD I BUFPTR /GET LATEST WORD AGAIN 4060 003643 4246 JMS PUTC /SEND BACK CURRENT BYTE 4061 003644 2361 ISZ BUFPTR /BUMP TO NEXT WORD 4062 003645 5631 JMP I PUTONE /RETURN 4063 4064 003646 0000 PUTC, .-. /SEND BACK LATEST BYTE ROUTINE 4065 003647 6201 CDF PRGFLD /BACK TO OUR FIELD 4066 003650 7004 RAL /MOVE UP 4067 003651 7130 STL RAR /MOVE DOWN WITH BIT[0] SET 4068 003652 0075 AND FILMODE /KEEP ONLY GOOD BITS 4069 003653 1165 TAD [-CNTRLZ] /COMPARE TO <^Z> 4070 003654 7450 SNA /SKIP IF NOT ASCII MODE 4071 003655 5263 JMP GETEND /JUMP IF ASCII MODE 4072 003656 1136 GETUPZ, TAD [CNTRLZ] /RESTORE THE CHARACTER 4073 003657 0163 AND [377] /ENSURE EIGHT-BIT (MIGHT ALREADY BE SEVEN-BIT) 4074 003660 2200 ISZ GETBYTE /BUMP PAST RETURN 4075 003661 2200 GETEOF, ISZ GETBYTE /BUMP PAST I/O ERROR RETURN 4076 003662 5600 JMP I GETBYTE /RETURN TO MAIN CALLER 4077 4078 / GOT IN ASCII MODE. 4079 4080 003663 1362 GETEND, TAD OCTLZFLAG /GET <^Z> DISPOSITION FLAG 4081 003664 7650 SNA CLA /SKIP IF SET 4082 003665 5261 JMP GETEOF /JUST RETURN CONDITION 4083 003666 1376 TAD (GETEOF) /POINT TO 4084 003667 3246 DCA PUTC /FOR NEXT TIME 4085 003670 5256 JMP GETUPZ /GIVE THEM BACK <^Z> THIS TIME 4086 / OS/8 FILE PACK ROUTINE. /020 CJL 4087 4088 / THIS ROUTINE PACKS BYTES INTO THE OUTPUT FILE ACCORDING TO THE CURRENT VALUE 4089 / OF FILMODE: 4090 4091 / FILMODE CONTAINS 0177 (ASCII MODE). ALL BYTES ARE TREATED AS SEVEN-BIT ASCII 4092 / CHARACTERS BY STRIPPING THE HIGH-ORDER BIT. 4093 4094 / FILMODE CONTAINS 4377 (BINARY MODE). ALL BYTES ARE TREATED AS EIGHT-BIT 4095 / CHARACTERS AND WILL BE WRITTEN AS IS. 4096 4097 / CALLING CONSIDERATIONS: 4098 4099 / FILMODE MUST BE SETUP ACCORDINGLY. 4100 4101 / FLEN MUST CONTAIN -(MAXIMUM FILE LENGTH IN RECORDS) WHEN INITIALIZING THE 4102 / TENTATIVE OUTPUT FILE. IT WILL BE MODIFIED BY CALLING THIS ROUTINE. 4103 4104 / FSBLK MUST CONTAIN THE STARTING RECORD WHEN INITIALIZING THE TENTATIVE OUTPUT 4105 / FILE. 4106 4107 / HNDADR MUST ALREADY BE SETUP TO CALL THE OUTPUT HANDLER. 4108 4109 / CALLING SEQUENCE: 4110 4111 / NL7777 /ANY NEGATIVE VALUE 4112 / JMS I [PUTBYTE] /CALL ROUTINE TO INITIALIZE 4113 / IMPOSSIBLE /CAN'T RETURN HERE 4114 / GOOD RETURN /ALWAYS RETURNS HERE 4115 4116 / OR 4117 4118 / TAD (CHAR&377) /ANY EIGHT-BIT (OR LESS) VALUE 4119 / JMS I [PUTBYTE] /CALL ROUTINE TO PACK A CHARACTER 4120 / ERROR RETURN /I/O ERROR WHILE WRITING A BUFFER 4121 / GOOD RETURN /CHARACTER PACKED WITH NO ERRORS 4122 4123 / ALL RETURNS CLEAR THE AC. 4124 4125 003671 0000 PUTBYTE,.-. /OUTPUT A BYTE ROUTINE 4126 003672 7510 SPA /ARE WE INITIALIZING? 4127 003673 5306 JMP PUTINITIALIZE /YES 4128 003674 0075 AND FILMODE /REDUCE TO SEVEN-BIT/EIGHT-BIT 4129 003675 3017 DCA LATEST /SAVE LATEST CHARACTER 4130 003676 6211 CDF BUFFLD /GOTO BUFFER FIELD 4131 003677 1017 TAD LATEST /GET LATEST CHARACTER 4132 003700 5701 JMP I PUTNEXT /GO WHERE YOU SHOULD GO 4133 4134 003701 0000 PUTNEXT,.-. /EXIT ROUTINE 4135 003702 2271 ISZ PUTBYTE /BUMP TO GOOD RETURN 4136 003703 7300 PUTERRO,CLA CLL /CLEAN UP 4137 003704 6201 CDF PRGFLD /BACK TO OUR FIELD 4138 003705 5671 JMP I PUTBYTE /RETURN TO MAIN CALLER 4139 003706 7200 PUTINIT,CLA /CLEAN UP 4140 003707 1067 TAD FSBLK /GET STARTING RECORD OF TENTATIVE FILE 4141 003710 3354 DCA PUTRECORD /STORE IN-LINE 4142 003711 3775 DCA I (FLENGTH) /CLEAR ACTUAL FILE LENGTH 4143 003712 1353 PUTNEWR,TAD PUTCORE/(FILEBUFFER) /SETUP THE 4144 003713 3361 DCA BUFPTR /BUFFER POINTER 4145 003714 4301 PUTLOOP,JMS PUTNEXT /GET A CHARACTER 4146 003715 3761 DCA I BUFPTR /STORE IT 4147 003716 1361 TAD BUFPTR /GET POINTER VALUE 4148 003717 3231 DCA TEMPTR /SAVE FOR LATER 4149 003720 2361 ISZ BUFPTR /BUMP TO NEXT 4150 003721 4301 JMS PUTNEXT /GET A CHARACTER 4151 003722 3761 DCA I BUFPTR /STORE IT 4152 003723 4301 JMS PUTNEXT /GET A CHARACTER 4153 003724 7006 RTL;RTL /MOVE UP 003725 7006 4154 003726 0137 AND [7400] /ISOLATE HIGH NYBBLE 4155 003727 1631 TAD I TEMPTR /ADD ON FIRST BYTE 4156 003730 3631 DCA I TEMPTR /STORE COMPOSITE 4157 003731 1017 TAD LATEST /GET LATEST CHARACTER 4158 003732 7012 RTR;RTR;RAR /MOVE UP AND 003733 7012 003734 7010 4159 003735 0137 AND [7400] /ISOLATE LOW NYBBLE 4160 003736 1761 TAD I BUFPTR /ADD ON SECOND BYTE 4161 003737 3761 DCA I BUFPTR /STORE COMPOSITE 4162 003740 2361 ISZ BUFPTR /BUMP TO NEXT 4163 003741 1361 TAD BUFPTR /GET LATEST POINTER VALUE 4164 003742 1377 TAD (-PAGCNT^200-FILBUFFER) /COMPARE TO LIMIT 4165 003743 7640 SZA CLA /SKIP IF AT END 4166 003744 5314 JMP PUTLOOP /KEEP GOING 4167 003745 6201 CDF PRGFLD /BACK TO OUR FIELD 4168 003746 2070 ISZ FLEN /TOO MANY RECORDS? 4169 003747 7410 SKP /SKIP IF NOT 4170 003750 5671 JMP I PUTBYTE /TAKE ERROR RETURN 4171 003751 4453 JMS I HNDADR /CALL I/O HANDLER 4172 003752 4210 PAGCNT^100+BUFFLD+WRITE /WRITE SOME PAGES FROM BUFFER FIELD 4173 003753 2000 PUTCORE,FILBUFFER /BUFFER ADDRESS 4174 003754 0000 PUTRECO,.-. /WILL BE LATEST RECORD NUMBER 4175 003755 5303 JMP PUTERROR /OUTPUT ERROR! 4176 003756 2775 ISZ I (FLENGTH) /BUMP ACTUAL LENGTH 4177 003757 2354 ISZ PUTRECORD /BUMP TO NEXT RECORD 4178 003760 5312 JMP PUTNEWRECORD /KEEP GOING 4179 4180 003761 0000 BUFPTR, .-. /INPUT/OUTPUT BUFFER POINTER 4181 4182 / ASCII FILE MODE <^Z> OUTPUT DISPOSITION FLAG. 4183 4184 003762 0000 OCTLZFL,OCLOSE /ZERO=DON'T SEND <^Z> AT , 4185 /NON-ZERO=SEND <^Z> AT 4186 4187 THIRD= PUTNEXT /THIRD BYTE TEMPORARY 4188 4189 TEMPTR= PUTONE /TEMPORARY BUFFER POINTER 4190 003775 4026 PAGE 003776 3661 003777 5400 4191 / OUTPUT FILE CLOSE ROUTINE /020 CJL 4192 4193 / THIS ROUTINE CLOSES THE OPEN OUTPUT FILE ACCORDING TO THE CURRENT VALUE OF 4194 / FILMODE: 4195 4196 / FILMODE CONTAINS 0177 (ASCII MODE). ALL BYTES PRIOR TO CLOSE ARE STRIPPED 4197 / SEVEN-BIT CHARACTERS. IF THE LAST CHARACTER SENT TO PUTBYTE (CONTENTS OF 4198 / LATEST) IS A <^Z>, THEN JUST CLOSE THE FILE. IF NOT, THEN IF ICTLZFLAG IS 4199 / NON-ZERO, INSERT A <^Z> CHARACTER INTO THE FILE AS INDICATOR, ELSE JUST 4200 / CLOSE THE FILE. 4201 4202 / FILMODE CONTAINS 4377 (BINARY MODE). ALL BYTES PRIOR TO CLOSE ARE EIGHT-BIT 4203 / CHARACTERS. IF NECESSARY, CHARACTERS WILL BE APPENDED TO THE END OF THE 4204 / LAST BLOCK OF THE FILE TO FILL IT. THE FILE IS CLOSED OTHERWISE UNMODIFIED. 4205 4206 / CALLING CONSIDERATIONS. 4207 4208 / OFFLG MUST BE SET (OUTPUT FILE IS OPEN). 4209 4210 / FLENGTH MUST CONTAIN THE ACTUAL FILE LENGTH. 4211 4212 / LATEST MUST CONTAIN THE LAST BYTE SENT TO THE OUTPUT FILE VIA PUTBYTE (ASCII 4213 / MODE ONLY). 4214 4215 / ICTLZFLAG MUST BE SETUP ACCORDINGLY. 4216 4217 / FILMODE MUST BE SETUP ACCORDINGLY. 4218 4219 / CALLING SEQUENCE: 4220 4221 / CLA CLL /CLEAR AC 4222 / JMS I (FILCLOSE) /CALL ROUTINE 4223 / ERROR RETURN /ERROR WHILE CLOSING FILE 4224 / GOOD RETURN /FILE CLOSED PROPERLY 4225 4226 / ON RETURN, OFFLG WILL BE CLEAR; THE AC WILL BE CLEAR ALSO. 4227 4228 004000 0000 FILCLOS,.-. /OUTPUT FILE CLOSE ROUTINE 4229 004001 1075 TAD FILMODE /GET CURRENT FILE MODE 4230 004002 7710 SPA CLA /SKIP IF ASCII 4231 004003 5215 JMP CLOSIT /JUMP IF BINARY 4232 004004 1017 TAD LATEST /GET LATEST CHARACTER 4233 004005 1165 TAD [-CNTRLZ] /COMPARE TO <^Z> 4234 004006 7640 SZA CLA /SKIP IF <^Z> ALREADY IN FILE 4235 004007 1233 TAD ICTLZFLAG /GET <^Z> DISPOSITION FLAG 4236 004010 7650 SNA CLA /SKIP IF SET 4237 004011 5215 JMP CLOSIT /JUMP IF NOT 4238 004012 1136 TAD [CNTRLZ] /GET A <^Z> 4239 004013 4543 CLOSLUP,JMS I [PUTBYTE] /OUTPUT A BYTE 4240 004014 5227 JMP CLOSERROR /ERROR WHILE WRITING 4241 004015 1777 CLOSIT, TAD I (BUFPTR) /GET THE BUFFER POINTER 4242 004016 1376 TAD (-FILBUFFER) /COMPARE TO RESET VALUE 4243 004017 7640 SZA CLA /SKIP IF IT MATCHES 4244 004020 5213 JMP CLOSLUP /ELSE KEEP GOING 4245 004021 1074 TAD ODNUMBER /GET OUTPUT DEVICE NUMBER 4246 004022 6212 CIF USRFLD /GOTO USR FIELD 4247 004023 4571 JMS I [USRENTRY] /CALL USER SERVICE ROUTINE /035 CJL 4248 004024 0004 CLOSE /CLOSE FILE 4249 004025 2510 FNBLK /=> FILENAME 4250 004026 0000 FLENGTH,.-. /ACTUAL FILE LENGTH 4251 004027 7610 CLOSERR,SKP CLA /ERROR WHILE CLOSING THE FILE 4252 004030 2200 ISZ FILCLOSE /BUMP RETURN IF NO ERRORS 4253 004031 3072 DCA OFFLG /CLEAR OUTPUT FILE OPEN FLAG 4254 004032 5600 JMP I FILCLOSE /RETURN TO CALLER 4255 4256 / ASCII FILE MODE <^Z> INPUT DISPOSITION FLAG. 4257 4258 004033 0001 ICTLZFL,ICLOSE /ZERO=DON'T ENSURE <^Z> IN FILE, NON-ZERO=PACK <^Z> 4259 /IF LAST CHARACTER WASN'T <^Z> 4260 / SEND PROCESSING 4261 4262 004034 0000 SNDPRO, 0 4263 004035 1063 TAD INIFLG /CHECK IF SEND/INIT HAS BEEN DONE 4264 004036 7640 SZA CLA /SKIP IF NO 4265 004037 5253 JMP SNDP10 /RIGHT INTO FILE TRANSFER 4266 004040 1375 TAD (DEFCK /SET UP DEFAULT CHECKSUM 4267 004041 3050 DCA RCHKT 4268 004042 1374 TAD (DEFEOL /GET DEFAULT EOL 4269 004043 3045 DCA REOL /AND SET IT 4270 004044 1373 TAD (DEFQCTL /GET DEFAULT QUOTE CONTROL CHAR 4271 004045 3046 DCA RQCTL /AND SET IT UP 4272 004046 1372 TAD (DEFMAXL+40 /GET DEFAULT MAX BUFFER SIZE 4273 004047 3041 DCA RMAXL /SET IT UP 4274 004050 3037 DCA CURSEQ /RE-SET SEQUENCE NUMBER 4275 004051 4771 JMS I (SNDI00) /HANDLE "SEND-INIT" 4276 004052 5634 JMP I SNDPRO /TAKE ERROR RETURN /014 CJL 4277 4278 / SEND FILE HEADER DISPATCH ROUTINE 4279 4280 004053 4512 SNDP10, FPACK /FORMAT A PACKET 4281 004054 2560 NAMBUF /ADDRESS OF FILE HEADER FOR DATA 4282 004055 0106 STFIL /"FIL" PACKET TYPE 4283 4284 004056 4511 SNDP11, SPACK /SEND A PACKET 4285 004057 0001 1 /AWAIT RESPONSE 4286 004060 4210 SNDP96-2 /DISPATCH TABLE ADDRESS /026 CJL 4287 4288 / GOT A NAK OR UNDEFINED HERE 4289 4290 004061 2034 SNDP12, ISZ RTRYC /BUMP THE COUNTER 4291 004062 5256 JMP SNDP11 /TRY AGAIN 4292 004063 5634 JMP I SNDPRO /TAKE ERROR RETURN /014 CJL 4293 4294 / FILE CREATION DATE HANDLING 4295 4296 SNDP15, IFZERO 1 < 4297 4298 TAD RCAPAS /CHECK IF REMOTE SUPPORTS FILE 4299 AND (10 / ATTRIBUTES 4300 SNA CLA /SKIP IF YES 4301 JMP SNDP20 /SKIP IF NO 4302 FPACK /FORMAT PACKET 4303 DATBUF /DATE DATA 4304 STATT /"ATT" PACKET TYPE 4305 4306 SNDP16, SPACK /SEND THE PACKET 4307 1 /AWAIT RESPONSE 4308 SNDP98-2 /DISPATCH TABLE ADDRESS /027 CJL 4309 JMP I SNDPRO /TAKE ERROR RETURN /014 CJL 4310 4311 > 4312 / GOT ACK HERE 4313 4314 SNDP20, IFNDEF IOCON < /SUPRESS PRINTING MESSAGES /053 DJG 4315 004064 4576 JMS I [SCRIBE] /TELL THEM /025 CJL 4316 004065 4154 FSENMSG /WE ARE SENDING /025 CJL 4317 004066 4514 PRI8B; NAMBUF /TELL THEM THE NAME OF THE FILE 004067 2560 4318 004070 4576 JMS I [SCRIBE] /DO A /025 CJL 4319 004071 4411 CRLF /, /025 CJL 4320 > /END SUPRESS PRINTING MESSAGES /053 DJG 4321 004072 4276 JMS SLOOP 4322 004073 7410 SKP /ERROR RETURN 4323 004074 2234 ISZ SNDPRO /BUMP FOR NON-ERROR EXIT 4324 004075 5634 JMP I SNDPRO 4325 / DATA SEND LOOP. 4326 / ROUTINE TO GET CHARS FROM THE INPUT BUFFER AND SEND THEM TO REMOTE 4327 / VIA PACKET TRANSFERS. RETURN + 1 IF ERROR, + 2 IF DONE. 4328 4329 004076 0000 SLOOP, 0 4330 004077 4770 JMS I (INIOPB) /INIT OUTPUT PACKET HOLD BUFFER 4331 004100 7240 NL7777 /INITIALIZE INPUT FILE ROUTINE /019 CJL 4332 004101 4767 SLOP01, JMS I (GETBYTE) /GET A FILE CHARACTER /019 CJL 4333 004102 5676 JMP I SLOOP /FATAL I/O ERROR /026 CJL 4334 004103 5320 JMP SLOP15 /HERE ON EOF 4335 004104 4766 JMS I (OPBUF) /PUT INTO PACKET BUFFER 4336 004105 7410 SKP /RETURN HERE ON BUFFER FULL 4337 004106 5301 JMP SLOP01 /RETURN HERE IF STILL ROOM 4338 4339 / PACKET IS FULL HERE, WE MUST SEND IT. 4340 4341 004107 4512 FPACK /FORMAT A PACKET 4342 004110 1000 HOLDBF /DATA ADDRESS 4343 004111 0104 STDAT /"DAT" PACKET TYPE 4344 4345 004112 4511 SLOP05, SPACK /SEND PACKET 4346 004113 0001 1 /AWAIT RESPONSE 4347 004114 4176 SLOP90-2 /RESPONSE TABLE ADDRESS /027 CJL 4348 4349 / HERE ON NAK OR FALL THRU ON UNDEFINED RESPONSE ABOVE. 4350 4351 004115 2034 SLOP10, ISZ RTRYC /BUMP THE RE-TRY COUNTER 4352 004116 5312 JMP SLOP05 /TRY AGAIN 4353 004117 5676 JMP I SLOOP /TAKE ERROR RETURN /026 CJL 4354 4355 / HERE ON END OF FILE -- SEND THEM WHAT WE HAVE. 4356 4357 004120 1765 SLOP15, TAD I (OP2) /GET THE POINTER /052 CJL 4358 004121 1364 TAD (-HOLDBF) /COMPARE TO EMPTY VALUE /052 CJL 4359 004122 7650 SNA CLA /SKIP IF NOT EMPTY /052 CJL 4360 004123 5335 JMP SLOP35 /JUMP IF EMPTY /052 CJL 4361 004124 4512 FPACK /FORMAT A PACKET 4362 004125 1000 HOLDBF /ADDRESS OF DATA 4363 004126 0104 STDAT /"DAT" PACKET TYPE 4364 4365 004127 4511 SLOP20, SPACK /SEND A PACKET 4366 004130 0001 1 /AWAIT RESPONSE 4367 004131 4203 SLOP92-2 /DISPATCH TABLE ADDRESS /027 CJL 4368 4369 / NAK FOR LAST PACKET. 4370 4371 004132 2034 SLOP25, ISZ RTRYC /BUMP RE-TRY COUNTER 4372 004133 5327 JMP SLOP20 /TRY AGAIN 4373 004134 5676 JMP I SLOOP /TAKE ERROR RETURN /026 CJL 4374 / ACK FOR FINAL PACKET, SEND AN EOF PACKET. 4375 4376 004135 4535 SLOP35, JMS I [SNDP] /SEND A PACKET 4377 004136 6376 NODATA /NO DATA 4378 004137 0132 STEOF /MAKE IT AN EOF PACKET 4379 004140 5676 JMP I SLOOP /NAK, TAKE ERROR RETURN 4380 004141 5676 JMP I SLOOP /OTHER THAN ACK, NAK; TAKE ERROR RETURN /026 CJL 4381 004142 2276 ISZ SLOOP /EOF ACCEPTED, BUMP FOR GOOD RETURN 4382 004143 5676 JMP I SLOOP /TAKE GOOD RETURN 4383 4384 004164 7000 PAGE 004165 0515 004166 0466 004167 3600 004170 0516 004171 4222 004172 0176 004173 0043 004174 0055 004175 0061 004176 6000 004177 3761 4385 004200 0131 SLOP90, STACK; SLOP01 /ACK, CONTINUE 004201 4101 4386 004202 0116 STNAK; SLOP10 /NAK, HANDLE 004203 4115 4387 004204 0000 0 4388 4389 004205 0131 SLOP92, STACK; SLOP35 /ACK, CONTINUE 004206 4135 4390 004207 0116 STNAK; SLOP25 /NAK, HANDLE 004210 4132 4391 004211 0000 0 4392 4393 / COMMAND DISPATCH TABLE FOR SEND SERVICE. 4394 4395 004212 0131 SNDP96, STACK; SNDP15 /FILE HEADER ACKNOWLEDGED 004213 4064 4396 004214 0116 STNAK; SNDP12 /NAK RETURNED, RE-TRY 004215 4061 4397 004216 0000 0 /END OF TABLE 4398 4399 004217 0131 SNDP98, STACK; SNDP20 /DATE ATTRIBUTE ACKNOWLEDGED 004220 4064 4400 004221 0000 0 /END OF TABLE 4401 / ROUTINE TO HANDLE A "SEND-INIT" COMMAND. 4402 / RETURN + 1 IF ERROR. 4403 / RETURN + 2 IF SUCCESSFUL. 4404 4405 004222 0000 SNDI00, 0 4406 004223 4512 FPACK /FORMAT A PACKET 4407 004224 6364 INIDAT /ADDRESS OF DATA FOR PACKET 4408 004225 0123 STSIN /"SIN" PACKET TYPE 4409 4410 004226 4511 SNDI02, SPACK /SEND A PACKET 4411 004227 0001 1 /AWAIT RESPONSE 4412 004230 4237 SNDI80-2 /RESPONSE TABLE TYPE /027 CJL 4413 4414 / HERE ON NAK OR UNDEFINED. 4415 4416 004231 2034 SNDI05, ISZ RTRYC /BUMP RE-TRY COUNTER 4417 004232 5226 JMP SNDI02 /TRY AGAIN 4418 004233 5622 JMP I SNDI00 /TAKE ERROR EXIT 4419 4420 / HERE ON ACK. 4421 4422 004234 4246 SNDI10, JMS SETINI /SET UP THE INIT REGISTERS 4423 004235 7301 NL0001 CLL /NOW FLAG THE SEND/INIT DONE /032 CJL 4424 004236 3063 DCA INIFLG /BY MAKING THIS NON-ZERO 4425 004237 2222 ISZ SNDI00 /BUMP FOR NON-ERROR RETURN 4426 004240 5622 JMP I SNDI00 /BACK TO MAIN SEND PROCESSING 4427 4428 004241 0131 SNDI80, STACK; SNDI10 /GOT AN ACK 004242 4234 4429 004243 0116 STNAK; SNDI05 /NAK 004244 4231 4430 004245 0000 0 /END OF TABLE 4431 4432 4433 / ROUTINE TO MOVE THE SEND/INIT OR RECEIVE/INIT PACKET INTO THE INIT REGISTERS. 4434 4435 004246 0000 SETINI, 0 4436 004247 1377 TAD (RMAXL /GET ADDRESS OF RECEIVE INIT REGISTERS 4437 004250 3064 DCA MQ /SETUP FOR CLEAR ROUTINE /032 CJL 4438 004251 1376 TAD (RMAXL-INITEND) /GET -(NUMBER OF REGISTERS) /022 CJL 4439 004252 4521 CLEAR /CLEAR OUT A CHUNK OF MEMORY /M013 4440 / TAD (RMAXL /GET ADDRESS OF RECEIVE INIT REGISTERS 4441 / DCA MQ /SETUP FOR MOVE ROUTINE /032 CJL 4442 004253 1553 TAD I [RRLEN] /GET LENGTH OF PACKET JUST INPUT 4443 004254 1375 TAD (-40-4 /COUNT OF DATA RECEIVED 4444 004255 1376 TAD (RMAXL-INITEND) /COMPARE TO MAXIMUM ALLOWED /022 CJL 4445 004256 7540 SMA SZA /SKIP IF NOT TOO MANY /022 CJL 4446 004257 7200 CLA /ELSE USE ALLOWED MAXIMUM /022 CJL 4447 004260 1374 TAD (INITEND-RMAXL) /RESTORE VALUE /022 CJL 4448 004261 7041 CIA /MAKE IT NEGATIVE 4449 004262 3062 DCA MOVE4 /SAVE FOR "MOVE" ROUTINE 4450 004263 1373 TAD (RRDTA /ADDRESS OF DATA IN PACKET 4451 004264 4520 MOVE /MOVE THE INIT REGISTERS 4452 004265 5646 JMP I SETINI /DONE 4453 IFZERO 1 < /D013 4454 4455 / ROUTINE TO SEND THE DATE IN A DATA PACKET. 4456 / RETURN + 1 IF ERROR, + 2 IF SUCCESSFUL. 4457 4458 DATOUT, 0 4459 JMS INIOPB /INSURE PACKET HOLD BUFFER INITIALIZED 4460 TAD (SETDAT /GET ADDRESS OF DATE 4461 DCA DATOU9 /PUT INTO POINTER 4462 4463 DATOU1, TAD I DATOU9 /GET A CHAR 4464 ISZ DATOU9 /BUMP POINTER 4465 SPA /SKIP IF NOT ENT 4466 JMP DATOU2 /DONE 4467 JMS OPBUF /PUT INTO HOLD BUFFER 4468 SKP /HOLD FULL, SEND IT 4469 JMP DATOU1 /LOOP 4470 4471 DATOU2, CLA CLL /INSURE CLEAR AC 4472 FPACK /FORMAT A PACKET 4473 HOLDBF /DATA ADDRESS 4474 STDAT /DATA PACKET 4475 4476 DATOU3, SPACK /SEND THE PACKET 4477 1 /GET RESPONSE 4478 DATOU7-2 /DISPATCH TABLE ADDRESS /027 CJL 4479 4480 / HERE ON NAK OR UNDEFINED RESPONSE. 4481 4482 DATOU4, ISZ RTRYC /BUMP RE-TRY COUNTER 4483 JMP DATOU3 /TRY AGAIN 4484 JMP I DATOUT /ABORT 4485 4486 / HERE ON ACK. 4487 4488 DATOU5, ISZ DATOUT /BUMP FOR GOOD RETURN 4489 JMP I DATOUT /EXIT 4490 4491 DATOU7, STACK; DATOU5 /ACK 4492 STNAK; DATOU4 /NAK 4493 0 4494 4495 DATOU9, 0 /TEMP POINTER FOR DATOUT 4496 4497 > /D013 4498 / HANDLE AN ABORT REQUEST. 4499 4500 004266 7300 ABORT, CLA CLL /INSURE CLEAR AC 4501 004267 3002 DCA ABFLAG /CLEAR ABORT FLAG NOW /044 CJL 4502 004270 1016 TAD KMODE /GET CURRENT MODE 4503 004271 1372 TAD (-MSEND /IS IT A SEND? 4504 004272 7440 SZA /SKIP IF YES 4505 004273 5303 JMP ABORT2 /NOT SEND 4506 4507 004274 4535 JMS I [SNDP] /SEND OUT A PACKET 4508 004275 4321 ABORT9 /WHICH HAS A "D" IN THE DATA 4509 004276 0132 STEOF /AND IS AN EOF PACKET 4510 004277 7000 NOP /WE GOT NAK BACK HERE 4511 004300 7000 NOP /WE GOT NEITHER NAK OR ACK HERE 4512 004301 4771 JMS I (BRKXMT) /BREAK THE SEND 4513 004302 5317 JMP ABORT3 /FINISH THE ABORT 4514 4515 004303 1370 ABORT2, TAD (MSEND-MREC /CHECK IF IN RECEIVE MODE 4516 004304 7640 SZA CLA /SKIP IF YES 4517 004305 5317 JMP ABORT3 /JUST BACK TO COMMAND LOOP 4518 004306 4535 JMS I [SNDP] /SEND A PACKET BACK FOR AN ABORT 4519 4520 IFZERO 1 < /D009 4521 4522 ABORT8 /WHICH HAS AN "X" IN THE DATA 4523 STACK /MAKE IT AN ACK PACKET 4524 NOP /NAK HERE 4525 NOP /NOT NAK OR ACK HERE 4526 4527 > /D009 4528 4529 004307 6376 NODATA /NO DATA /A009 4530 004310 0102 STBRK /BREAK TRANSMISSION /A009 4531 004311 7000 NOP /NAK HERE /A009 4532 004312 7200 CLA /NOT ACK OR NAK HERE /A009 4533 004313 1072 TAD OFFLG /GET FILE OPEN FLAG /A009 4534 004314 7640 SZA CLA /IS IT OPEN YET? /A009 4535 004315 4541 JMS I [FILCLOSE] /CLOSE THE OUTPUT FILE /020 CJL 4536 004316 7200 CLA /ERROR DURING CLOSE **** FIX THIS **** 4537 004317 1367 ABORT3, TAD (ABMSG) /GET MESSAGE ADDRESS /044 CJL 4538 004320 5552 JMP I [CLOOP7] /DISPLAY THE ABORT 4539 4540 004321 0104 ABORT9, "D&137 /DATA PACKET FOR SEND ABORT 4541 004322 7777 -1 4542 4543 004367 4000 PAGE /014 CJL 004370 7777 004371 2514 004372 7776 004373 6066 004374 0012 004375 7734 004376 7766 004377 0041 4544 / ROUTINE TO PRINT 8 BIT CHARS ON THE TTY. ENTER ROUTINE WITH THE ADDRESS OF 4545 / THE TEXT IN THE AC OR IF AC IS ZERO THE ADDRESS IS IN THE CALL + 1. TEXT 4546 / TERMINATES ON A MINUS WORD. 4547 4548 004400 0000 PRI8B0, 0 4549 004401 7440 SZA /SKIP IF ADDRESS NOT IN AC 4550 004402 5205 JMP PRI8B1 /ADDRESS IS IN THE AC 4551 004403 1600 TAD I PRI8B0 /GET ADDRESS FROM CALL + 1 4552 004404 2200 ISZ PRI8B0 /BUMP RETURN POINTER 4553 004405 3064 PRI8B1, DCA MQ /SAVE ADDRESS OF STRING /032 CJL 4554 004406 1155 TAD [P7ECHO] /GET CONSOLE OUTPUT ROUTINE ADDRESS /043 CJL 4555 004407 4222 JMS EIGHTB /AND SEND IT 4556 004410 5600 JMP I PRI8B0 /ALL DONE 4557 4558 / ROUTINE TO SEND 8 BIT CHARS DOWN THE REMOTE LINE. ENTER ROUTINE WITH THE 4559 / ADDRESS OF THE TEXT IN THE AC OR IF AC IS ZERO THE ADDRESS IS IN THE CALL + 1. 4560 / TEXT TERMINATES ON A MINUS WORD. 4561 4562 004411 0000 REM8B0, 0 4563 004412 7440 SZA /SKIP IF ADDRESS NOT IN AC 4564 004413 5216 JMP REM8B1 /ADDRESS IN AC 4565 004414 1611 TAD I REM8B0 /GET ADDRESS FROM CALL + 1 4566 004415 2211 ISZ REM8B0 /BUMP RETURN 4567 4568 004416 3064 REM8B1, DCA MQ /SAVE ADDRESS OF STRING /032 CJL 4569 004417 1377 TAD (COMOUT) /GET ADDRESS OF REMOTE OUTPUT ROUTINE /046 CJL 4570 004420 4222 JMS EIGHTB /AND SEND THE STRING 4571 004421 5611 JMP I REM8B0 /DONE 4572 4573 4574 / ROUTINE TO SEND 8 BIT DATA. ENTER WITH ADDRESS OF DATA IN THE MQ AND THE 4575 / ADDRESS OF THE ROUTINE TO TAKE EACH BYTE IN THE AC. TEXT TERMINATES ON A 4576 / MINUS WORD. 4577 4578 004422 0000 EIGHTB, 0 4579 004423 3237 DCA EIGHT5 /STORE POINTER TO ROUTINE 4580 004424 1064 TAD MQ /GET STRING POINTER /032 CJL 4581 004425 3240 DCA EIGHT6 /STORE IN LOCAL POINTER 4582 4583 004426 1640 EIGHT1, TAD I EIGHT6 /GET A CHAR 4584 004427 2240 ISZ EIGHT6 /BUMP THE POINTER 4585 004430 7510 SPA /SKIP IF NOT EOL 4586 004431 5235 JMP EIGHT2 /GOT EOL 4587 004432 4637 JMS I EIGHT5 /CALL OUTPUT ROUTINE 4588 004433 7300 CLA CLL /INSURE CLEAR AC 4589 004434 5226 JMP EIGHT1 /LOOP 4590 4591 004435 7300 EIGHT2, CLA CLL /CLEAR THE AC 4592 004436 5622 JMP I EIGHTB /DONE 4593 4594 004437 0000 EIGHT5, 0 /POINTER TO ROUTINE TO DO OUTPUT 4595 004440 0000 EIGHT6, 0 /POINTER TO TEXT TO OUTPUT 4596 / ROUTINE TO UNPACK 6-BT CHARS FROM MEMORY. BEFORE CALLING INIT "GET6P" AS A 4597 / POINTER TO THE STRING LOCATION AND "GET6F" SHOULD BE ZEROED TO START WITH THE 4598 / TOP BYTE OF THE FIRST MEMORY LOCATION. 4599 4600 004441 0000 GET60, 0 4601 004442 7330 NL4000 /SET 4000 /032 CJL 4602 004443 1061 TAD GET6F /GET THE FLAG 4603 004444 3061 DCA GET6F /RETURN THE FLAG 4604 004445 1460 TAD I GET6P /GET TWO BYTES 4605 004446 7430 SZL /HIGH-ORDER WANTED? /032 CJL 4606 004447 5254 JMP GETSWT /JUMP IF NOT /032 CJL 4607 004450 7012 RTR;RTR;RTR /MOVE DOWN HIGH-ORDER HALF /032 CJL 004451 7012 004452 7012 4608 004453 7410 SKP /DON'T BUMP POINTER YET /032 CJL 4609 004454 2060 GETSWT, ISZ GET6P /BUMP TO NEXT WORD /032 CJL 4610 004455 0175 AND [77] /STRIP UNUSED BITS /016 CJL 4611 004456 5641 JMP I GET60 /DONE 4612 4613 4614 / LOCAL ROUTINE TO "FILN8" TO MAKE THE 6 BIT CHAR IN THE AC INTO 8 BITS AND 4615 / STORE IN A STRING. 4616 4617 004457 0000 MOV8, .-. /6-BIT CHARACTER => 7-BIT CHARACTER /028 CJL 4618 004460 7450 SNA /SKIP IF SOMETHING PASSED /028 CJL 4619 004461 1174 TAD [" &77] /ELSE SUPPLY A /025 CJL 4620 004462 1174 TAD [" &77] /INVERT THE CHARACTER /028 CJL 4621 004463 0175 AND [77] /JUST SIX-BITS /014/016 CJL 4622 004464 1174 TAD [" &77] /MAKE IT SEVEN-BIT ASCII /028 CJL 4623 004465 3670 DCA I MOV8P /STORE IN THE STRING /028 CJL 4624 004466 2270 ISZ MOV8P /BUMP POINTER FOR NEXT TIME /028 CJL 4625 004467 5657 JMP I MOV8 /RETURN /028 CJL 4626 4627 004470 0000 MOV8P, 0 /POINTER FOR "MOV8" ROUTINE 4628 / ROUTINE TO PULL A FILE NAME IN 6 BIT POINTED TO BY THE AC AND PLACE IN THE 4629 / FILE NAME BUFFER IN 8 BIT ADDING IN THE "." TO SEPARATE FILE NAME AND 4630 / EXTENSION. A MINUS WORD WILL FOLLOW THE NAME. 4631 4632 004471 0000 FILN8, 0 4633 004472 3060 DCA GET6P /SET POINTER FOR "GET6" 4634 004473 3061 DCA GET6F /SET FLAG FOR "GET6" 4635 004474 1376 TAD (NAMBUF /GET ADDRESS OF THE NAME BUFFER 4636 004475 3270 DCA MOV8P /SET IN A POINTER 4637 004476 1375 TAD (-6 /6 NAME CHARS TO DO 4638 004477 3321 DCA FILN8C /SAVE IN COUNTER 4639 004500 4517 GET6 /PULL A CHAR 4640 004501 7440 SZA /SKIP IF A SPACE 4641 004502 4257 JMS MOV8 /PUT INTO THE BUFFER 4642 004503 2321 ISZ FILN8C /BUMP COUNTER 4643 004504 5300 JMP .-4 /LOOP TILL ALL 6 DONE 4644 004505 1374 TAD (".&177) /GET A "." /034 CJL 4645 004506 4257 JMS MOV8 /PUT WITH FILE NAME 4646 004507 7344 NL7776 /SET -2 /032 CJL 4647 004510 3321 DCA FILN8C /2 EXTENSION CHARS 4648 004511 4517 GET6 /GET NEXT CHAR 4649 004512 7440 SZA /SKIP IF A SPACE 4650 004513 4257 JMS MOV8 /PUT WITH NAME 4651 004514 2321 ISZ FILN8C /BUMP COUNTER 4652 004515 5311 JMP .-4 /LOOP 4653 004516 7240 NL7777 /SET -1 /032 CJL 4654 004517 3670 DCA I MOV8P /TERMINATE THE STRING 4655 004520 5671 JMP I FILN8 /AND RETURN 4656 4657 004521 0000 FILN8C, 0 /COUNTER FOR "FILN8" 4658 4659 004574 0056 PAGE 004575 7772 004576 2560 004577 0672 4660 / CONSOLE I/O ROUTINES, ETC. /023 CJL 4661 4662 / CONSOLE MESSAGE PRINT ROUTINE. 4663 4664 / CALLING SEQUENCE: 4665 4666 / JMS I [SCRIBE] /CALL MESSAGE PRINT ROUTINE 4667 / MESSAGEADDRESS /MESSAGE ADDRESS PASSED IN-LINE 4668 4669 / AC CAN BE DIRTY ON CALL. 4670 4671 / RETURNS WITH CLEAR AC. 4672 4673 / MESSAGE FORMAT: 4674 4675 / ALL UPPER-CASE CHARACTERS ARE ALLOWED TO EXIST IN THE MESSAGE EXCEPT '%' AND 4676 / '^' WHICH ARE RESERVED. A ZERO HALF-WORD TERMINATES THE MESSAGE STRING. IF 4677 / '%' IS DETECTED, A AND WILL BE OUTPUT. IF '^' IS DETECTED, THE 4678 / PREVAILING CASE WILL BE REVERSED. INITIAL CASE IS LOWER-CASE. IF 'UPONLY' IS 4679 / SET TO 7740, ALL CASE CHANGES ARE IGNORED AND THE OUTPUT IS FORCED TO 4680 / UPPER-CASE ONLY. THE MESSAGE ADDRESS MUST BE IN FIELD ONE AND MUST NOT 4681 / OVERLAP AREAS RESERVED FOR OTHER PURPOSES (OS/8 RESIDENT AT 17600-17777, USR 4682 / LOCATIONS 10000-11777, ETC.). 4683 4684 4685 004600 0000 SCRIBE, .-. /CONSOLE MESSAGE PRINT ROUTINE 4686 004601 7200 CLA /CLEAN UP /029 CJL 4687 004602 1155 TAD [P7ECHO] /POINT TO /043 CJL 4688 004603 3265 RSCRENT,DCA MSGOUT /CONSOLE PRINT ROUTINE 4689 004604 1600 TAD I SCRIBE /GET IN-LINE POINTER ARGUMENT 4690 004605 3312 DCA SCRPTR /STASH THE POINTER 4691 004606 2200 ISZ SCRIBE /BUMP PAST ARGUMENT 4692 004607 1076 TAD UPONLY /GET UPPER-ONLY VALUE /030 CJL 4693 004610 1134 TAD [140] /ADD ON LOWER-CASE VALUE /030 CJL 4694 004611 3310 DCA SCRCASE /STORE INITIAL CASE VALUE 4695 004612 6211 SCRLUP, CDF MSGFLD /GOTO MESSAGE FIELD 4696 004613 1712 TAD I SCRPTR /GET LEFT HALF-WORD 4697 004614 7012 RTR;RTR;RTR /MOVE OVER 004615 7012 004616 7012 4698 004617 4225 JMS SCRPRNT /PRINT IT 4699 004620 6211 CDF MSGFLD /GOTO MESSAGE FIELD 4700 004621 1712 TAD I SCRPTR /GET RIGHT HALF-WORD 4701 004622 4225 JMS SCRPRNT /PRINT IT 4702 004623 2312 ISZ SCRPTR /BUMP TO NEXT PAIR 4703 004624 5212 JMP SCRLUP /KEEP GOING 4704 004625 0000 SCRPRNT,.-. /CHARACTER PRINT ROUTINE 4705 004626 6201 CDF PRGFLD /BACK TO OUR FIELD 4706 004627 0175 AND [77] /JUST SIX BITS 4707 004630 7450 SNA /END OF MESSAGE? 4708 004631 5600 JMP I SCRIBE /YES, RETURN TO ORIGINAL CALLER 4709 004632 3311 DCA SCRCHAR /NO, SAVE FOR NOW 4710 004633 1311 TAD SCRCHAR /GET IT BACK 4711 004634 1377 TAD (-"%!200) /IS IT "%"? 4712 004635 7450 SNA /SKIP IF NOT 4713 004636 5251 JMP SCRCRLF /JUMP IF IT MATCHES 4714 004637 1154 TAD [-"^+100+"%] /IS IT "^" 4715 004640 7650 SNA CLA /SKIP IF NOT 4716 004641 5255 JMP SCRFLIP /JUMP IF IT MATCHES 4717 004642 1311 TAD SCRCHAR /GET THE CHARACTER 4718 004643 0174 AND [40] /DOES CASE MATTER? 4719 004644 7650 SNA CLA /SKIP IF NOT 4720 004645 1310 TAD SCRCASE /ELSE GET PREVAILING CASE 4721 004646 1311 TAD SCRCHAR /GET THE CHARACTER 4722 004647 4665 SCRPRLF,JMS I MSGOUT /PRINT THE CHARACTER 4723 004650 5625 JMP I SCRPRNT /RETURN 4724 4725 004651 1133 SCRCRLF,TAD [CNTRLM] /GET A 4726 004652 4665 JMS I MSGOUT /PRINT IT 4727 004653 1140 TAD [CNTRLJ] /GET A 4728 004654 5247 JMP SCRPRLF /CONTINUE THERE 4729 4730 004655 1076 SCRFLIP,TAD UPONLY /GET UPPER-ONLY FLAG 4731 004656 7640 SZA CLA /SKIP IF OFF 4732 004657 5625 JMP I SCRPRNT /RETURN IF ON 4733 004660 1310 TAD SCRCASE /GET CURRENT CASE 4734 004661 7041 CIA /INVERT IT 4735 004662 1376 TAD (140+100) /ADD SUM OF POSSIBLE VALUES 4736 004663 3310 DCA SCRCASE /STORE NEW INVERTED CASE 4737 004664 5625 JMP I SCRPRNT /RETURN 4738 4739 / REMOTE LINE MESSAGE PRINT ROUTINE. 4740 4741 / CALLING SEQUENCE: 4742 4743 / JMS I [RSCRIBE] /CALL MESSAGE PRINT ROUTINE 4744 / MESSAGEADDRESS /MESSAGE ADDRESS PASSED IN-LINE 4745 4746 / AC CAN BE DIRTY ON CALL. 4747 4748 / RETURNS WITH CLEAR AC. 4749 4750 / MESSAGE FORMAT AND RESTRICTIONS ARE IDENTICAL TO SCRIBE ROUTINE. 4751 4752 004665 0000 RSCRIBE,.-. /REMOTE LINE MESSAGE PRINT ROUTINE 4753 004666 7200 CLA /CLEAN UP /029 CJL 4754 004667 1265 TAD RSCRIBE /GET OUR CALLER 4755 004670 3200 DCA SCRIBE /MAKE IT THEIRS 4756 004671 1375 TAD (COMOUT) /POINT TO REMOTE OUTPUT ROUTINE 4757 004672 5203 JMP RSCRENTRY /CONTINUE THERE 4758 / ESCAPE CHARACTER PRINT ROUTINE. 4759 4760 / CALLING SEQUENCE: 4761 4762 / TAD ESCHAR /OR OTHER CHARACTER TO PRINT 4763 / JMS I [ESCPRNT] /CALL ROUTINE 4764 / RETURNS WITH CLEAR AC HERE 4765 4766 / CAUSES CHARACTER TO PRINT LITERALLY IF CHARACTER>37. 4767 / CAUSES MESSAGE "CONTROL-" FOLLOWED BY CHARACTER+100 IF CHARACTER<40. 4768 4769 004673 0000 ESCPRNT,.-. /ESCAPE CHARACTER PRINT ROUTINE 4770 004674 3307 DCA ESCTEMP /SAVE PASSED VALUE 4771 004675 1307 TAD ESCTEMP /GET IT BACK 4772 004676 1172 TAD [-40] /COMPARE TO CONTROL LIMIT 4773 004677 7700 SMA CLA /SKIP IF LESS THAN LIMIT 4774 004700 5304 JMP ESPRINT /JUMP IF NOT 4775 004701 4576 JMS I [SCRIBE] /GIVE THEM THE 4776 004702 4042 CONTMSG /CONTROL MESSAGE 4777 004703 1161 TAD [100] /MAKE IT UPPER-CASE, NOT CONTROL 4778 004704 1307 ESPRINT,TAD ESCTEMP /GET ORIGINAL VALUE 4779 004705 4555 JMS I [P7ECHO] /PRINT IT /043 CJL 4780 004706 5673 JMP I ESCPRNT /RETURN 4781 4782 MSGOUT= RSCRIBE /OUTPUT ROUTINE POINTER 4783 4784 004707 0000 ESCTEMP,.-. /TEMPORARY FOR ESCPRNT ROUTINE 4785 004710 0000 SCRCASE,.-. /CURRENT MESSAGE CASE 4786 004711 0000 SCRCHAR,.-. /LATEST MESSAGE CHARACTER 4787 004712 0000 SCRPTR, .-. /MESSAGE POINTER 4788 4789 004775 0672 PAGE 004776 0240 004777 7733 4790 / ROUTINE TO HANDLE THE "CONNECT" COMMAND. /025 CJL 4791 4792 005000 0000 CONSRV, .-. /CONNECT SERVICE ROUTINE 4793 005001 4556 JMS I [CREST2] /SETUP CONSOLE OUTPUT ROUTINES /025 CJL 4794 005002 4576 JMS I [SCRIBE] /GIVE THE 4795 005003 4023 CONNMSG /OPENING MESSAGE 4796 005004 1101 TAD ESCHAR /GET THE CURRENT CHARACTER 4797 005005 4551 JMS I [ESCPRNT] /PRINT IT 4798 005006 4576 JMS I [SCRIBE] /GIVE THEM THE 4799 005007 4050 CON2MSG /BRIDGING MESSAGE 4800 005010 4576 JMS I [SCRIBE] /PRINT OUT THE 4801 005011 4064 CPUMSG /ACTUAL CPU TYPE 4802 005012 4576 JMS I [SCRIBE] /GIVE THEM THE 4803 005013 4062 CON3MSG /CLOSING MESSAGE 4804 005014 3354 CORESET,DCA ESCFLAG /CLEAR SEEN FLAG 4805 005015 1101 TAD ESCHAR /GET THE CHARACTER 4806 005016 3350 DCA ESCH /STORE IN SEARCH LIST 4807 005017 4777 JMS I (CONRESET) /RESET CONSOLE ROUTINES 4808 005020 4776 JMS I (REMRESET) /RESET REMOTE LINE ROUTINES 4809 005021 1103 CONNLUP,TAD KEYERROR /GET KEYBOARD ERROR FLAG 4810 005022 7450 SNA /SKIP IF KEYBOARD ERROR 4811 005023 1104 TAD RINERROR /ELSE GET REMOTE ERROR FLAG 4812 005024 7640 SZA CLA /SKIP IF NEITHER KEYBOARD NOR REMOTE LINE ERRORS 4813 005025 5322 JMP KERROR /JUMP IF KEYBOARD ERROR 4814 005026 4775 JMS I (CONTEST) /TEST IF CONSOLE CAN TAKE OUTPUT 4815 005027 5233 JMP TESTKEYBOARD /JUMP IF NOT 4816 005030 4774 JMS I (REMINPUT) /TEST IF ANY REMOTE INPUT 4817 005031 7410 SKP /SKIP IF NONE 4818 005032 4773 JMS I (CONOUT) /OUTPUT TO CONSOLE 4819 005033 1353 TESTKEY,TAD ECHOFLAG /GET LOCAL ECHO FLAG 4820 005034 1354 TAD ESCFLAG /ADD ON SEEN FLAG 4821 005035 7650 SNA CLA /SKIP IF LOCAL ECHO POSSIBLY NEEDED 4822 005036 5241 JMP NOLOCALECHO /JUMP IF NOT 4823 005037 4775 JMS I (CONTEST) /TEST IF CONSOLE CAN TAKE OUTPUT 4824 005040 5305 JMP BUFCHECK /JUMP IF NOT 4825 005041 4772 NOLOCAL,JMS I (REMTEST) /TEST IF REMOTE CAN TAKE OUTPUT 4826 005042 5305 JMP BUFCHECK /JUMP IF NOT 4827 005043 4771 JMS I (KEYINPUT) /TEST IF ANY KEYBOARD INPUT 4828 005044 5305 JMP BUFCHECK /JUMP IF NOT 4829 005045 3355 DCA KEYLATEST /SAVE FOR LATER 4830 005046 1355 TAD KEYLATEST /GET IT BACK 4831 005047 0167 AND [177] /WANT SEVEN-BIT VERSION FOR TESTS 4832 005050 7041 CIA /INVERT IT 4833 005051 3357 DCA TESTCHAR /SAVE FOR LATER 4834 005052 1354 TAD ESCFLAG / SEEN LAST TIME? 4835 005053 7650 SNA CLA /SKIP IF SO 4836 005054 5263 JMP NOESCAPE /JUMP IF NOT 4837 005055 1357 TAD TESTCHAR /GET TEST VAUE 4838 005056 4570 JMS I [SRCHTABLE] /SEARCH FOR IT 4839 005057 5142 ESCLIST-1-1 /SEARCH TABLE POINTER 4840 005060 7650 SNA CLA /SKIP IF FOUND 4841 005061 5302 JMP ESCOMPLAIN /JUMP IF NOT 4842 005062 5403 JMP I TABLEJUMP /GO WHERE YOU'RE SUPPOSED TO 4843 / COMES HERE IF PREVIOUS WAS NOT THE CHARACTER. 4844 4845 005063 1357 NOESCAP,TAD TESTCHAR /GET THE LATEST CHARACTER 4846 005064 1101 TAD ESCHAR /COMPARE TO CHARACTER 4847 005065 7640 SZA CLA /SKIP IF IT MATCHES 4848 005066 5272 JMP OUTCHAR /JUMP IF NOT 4849 005067 7240 NL7777 /SET THE 4850 / DCA ESCFLAG / SEEN FLAG 4851 / JMP BUFCHECK /CONTINUE THERE 4852 005070 5304 JMP NOESENTRY /CONTINUE THERE 4853 4854 / COMES HERE IF BOTH PREVIOUS AND LATEST ARE THE CHARACTER. 4855 4856 005071 3354 ESCTYPE,DCA ESCFLAG /CLEAR THE SEEN FLAG AND OUTPUT 4857 4858 / COMES HERE IF PREVIOUS AND LATEST CHARACTER ARE NOT THE CHARACTER. 4859 4860 005072 1353 OUTCHAR,TAD ECHOFLAG /GET LOCAL ECHO FLAG 4861 005073 7650 SNA CLA /SKIP IF SET 4862 005074 5277 JMP NOECHO /JUMP IF NOT 4863 005075 1355 TAD KEYLATEST /GET LATEST CHARACTER 4864 005076 4773 JMS I (CONOUT) /OUTPUT TO CONSOLE 4865 005077 1355 NOECHO, TAD KEYLATEST /GET LATEST CHARACTER 4866 005100 4770 JMS I (REMOUT) /OUTPUT TO REMOTE 4867 005101 5305 JMP BUFCHECK /CONTINUE THERE 4868 4869 / COMES HERE IF PREVIOUS WAS THE CHARACTER AND THE LATEST IS NOT 4870 / A VALID COMMAND CHARACTER. 4871 4872 005102 1154 ESCOMPL,TAD [CNTRLG] /GET A 4873 005103 4773 JMS I (CONOUT) /OUTPUT TO CONSOLE 4874 005104 3354 NOESENT,DCA ESCFLAG /CLEAR SEEN FLAG 4875 005105 4756 BUFCHEC,JMS I PUPSTATUS /UPDATE THE PORT STATUS /047 CJL 4876 4877 / THE ABOVE INSTRUCTION IS FOR DECMATE USE ONLY. THE DEFAULT INSTRUCTION IS FOR 4878 / KL8 INTERFACES. 4879 4880 *BUFCHECK /OVERLAY DECMATE CODE /047 CJL 4881 4882 005105 7000 BUFCHEC,NOP /DON'T CHECK PORT STATUS /047 CJL 4883 4884 005106 4767 JMS I (RINUPDATE) /CHECK FOR MORE REMOTE INPUT 4885 005107 4766 JMS I (KEYUPDATE) /CHECK FOR MORE KEYBOARD INPUT 4886 005110 4765 JMS I (REMUPDATE) /CHECK FOR MORE REMOTE OUTPUT 4887 005111 4764 JMS I (CONUPDATE) /CHECK FOR MORE CONSOLE OUTPUT 4888 005112 5221 JMP CONNLUP /GO BACK FOR MORE 4889 4890 / COMES HERE ON C(LOSE). 4891 4892 005113 2200 ESCLOSE,ISZ CONSRV /BUMP TO GOOD RETURN 4893 005114 5600 JMP I CONSRV /RETURN 4894 005115 4756 KERRLUP,JMS I PUPSTATUS /UPDATE THE PORT STATUS /047 CJL 4895 4896 / THE ABOVE INSTRUCTION IS FOR DECMATE USE ONLY. THE DEFAULT INSTRUCTION IS FOR 4897 / KL8 INTERFACES. 4898 4899 *KERRLUP /OVERLAY DECMATE CODE /047 CJL 4900 4901 005115 7000 KERRLUP,NOP /DON'T CHECK PORT STATUS /047 CJL 4902 4903 005116 4767 JMS I (RINUPDATE) /CHECK FOR MORE REMOTE INPUT 4904 005117 4766 JMS I (KEYUPDATE) /CHECK FOR MORE KEYBOARD INPUT 4905 005120 4765 JMS I (REMUPDATE) /CHECK FOR MORE REMOTE OUTPUT 4906 005121 4764 JMS I (CONUPDATE) /CHECK FOR MORE CONSOLE OUTPUT 4907 4908 / COMES HERE ON KEYBOARD INPUT ERROR. 4909 4910 005122 4775 KERROR, JMS I (CONTEST) /CONSOLE READY FOR OUTPUT? 4911 005123 5315 JMP KERRLUP /NO, GO WAIT AWHILE 4912 005124 1763 TAD I (CONINSERT) /GET CONSOLE INSERTION POINTER 4913 005125 7041 CIA /INVERT FOR TEST 4914 005126 1762 TAD I (CONREMOVE) /COMPARE TO CONSOLE REMOVAL POINTER 4915 005127 7640 SZA CLA /SKIP IF CONSOLE OUTPUT BUFFER EMPTY 4916 005130 5315 JMP KERRLUP /GO WAIT FOR AWHILE 4917 005131 1103 TAD KEYERROR /KEYBOARD INPUT ERROR? 4918 005132 7650 SNA CLA /SKIP IF SO 4919 005133 5336 JMP RIERTST /JUMP IF NOT 4920 005134 4576 JMS I [SCRIBE] /TELL THEM 4921 005135 4375 KERRMSG /WE HAD A KEYBOARD ERROR 4922 005136 1104 RIERTST,TAD RINERROR /REMOTE INPUT ERROR? 4923 005137 7650 SNA CLA /SKIP IF SO 4924 005140 5214 JMP CORESET /JUMP IF NOT 4925 005141 4576 JMS I [SCRIBE] /TELL THEM 4926 005142 4616 RIERMSG /WE HAD A REMOTE LINE ERROR 4927 005143 5214 JMP CORESET /RESTART 4928 4929 / CHARACTER SEARCH LIST. 4930 4931 005144 0103 ESCLIST,UPPERC; ESCLOSE / C(LOSE) 005145 5113 4932 005146 0143 LOWERC; ESCLOSE / C(LOSE) (LOWER-CASE) 005147 5113 4933 005150 0000 ESCH, .-.; ESCTYPE / 005151 5071 4934 005152 0000 0 /THIS ENDS THE LIST 4935 4936 / LOCAL ECHO FLAG FOR CONNECT MODE. 4937 4938 005153 0000 ECHOFLA,INIECHO /0=DON'T ECHO, NON-ZERO=ECHO /039 CJL 4939 005154 0000 ESCFLAG,.-. / CHARACTER SEEN FLAG 4940 005155 0000 KEYLATE,.-. /LATEST KEYBOARD CHARACTER 4941 005156 0723 PUPSTAT,UPSTATUS /POINTER TO DECMATE STATUS UPDATE /047 CJL 4942 005157 0000 TESTCHA,.-. /LATEST KEYBOARD TEST CHARACTER 4943 005162 5366 PAGE 005163 5365 005164 5341 005165 5637 005166 5224 005167 5445 005170 5600 005171 5200 005172 5626 005173 5302 005174 5400 005175 5330 005176 5535 005177 5705 4944 / CONNECT-MODE SUPPORT ROUTINES. /047 CJL 4945 4946 / CONSOLE KEYBOARD ROUTINES. /047 CJL 4947 4948 / KEYBOARD INPUT ROUTINE. /026 CJL 4949 4950 / CALLING SEQUENCE: 4951 4952 / JMS I (KEYINPUT) /CALL ROUTINE 4953 / NO INPUT /RETURN IF NO INPUT 4954 / INPUT /RETURN IF INPUT AVAILABLE 4955 4956 / THE AC WILL BE CLEAR IF THE IMMEDIATE RETURN IS TAKEN FOR NO INPUT. 4957 4958 / THE AC WILL CONTAIN THE LATEST CHARACTER IF THE SKIP RETURN IS TAKEN. 4959 4960 005200 0000 KEYINPU,.-. /KEYBOARD INPUT ROUTINE 4961 005201 1370 TAD KEYINSERT /GET INSERTION POINTER 4962 005202 7041 CIA /INVERT FOR TEST 4963 005203 1371 TAD KEYREMOVE /COMPARE TO REMOVAL POINTER 4964 005204 7650 SNA CLA /SKIP IF BUFFER NOT EMPTY 4965 005205 5221 JMP KEYCHECK /JUMP IF BUFFER EMPTY 4966 005206 1371 TAD KEYREMOVE /GET REMOVAL POINTER 4967 005207 3341 DCA KEYTEMP /SAVE FOR LATER 4968 005210 7201 NL0001 /SET INCREMENT 4969 005211 1371 TAD KEYREMOVE /UPDATE REMOVAL POINTER 4970 005212 0167 AND [BUFSIZE-1] /JUST BUFFER BITS 4971 005213 1132 TAD [KEYBUFFER] /MAKE IT ABSOLUTE 4972 005214 3371 DCA KEYREMOVE /STORE UPDATED POINTER 4973 005215 6211 CDF BUFFLD /GOTO BUFFER FIELD 4974 005216 1741 TAD I KEYTEMP /GET THE LATEST CHARACTER 4975 005217 6201 CDF PRGFLD /BACK TO OUR FIELD 4976 005220 7410 SKP /DON'T GET ANOTHER CHARACTER /047 CJL 4977 4978 / COMES HERE IF BUFFER IS EMPTY. 4979 4980 005221 4247 KEYCHEC,JMS KEYGET /TRY TO GET A CHARACTER NOW /047 CJL 4981 005222 2200 ISZ KEYINPUT /GOT ONE, SO TAKE SKIP RETURN /047 CJL 4982 005223 5600 JMP I KEYINPUT /RETURN EITHER WAY 4983 / KEYBOARD BUFFER UPDATE ROUTINE. /026 CJL 4984 4985 / CALLING SEQUENCE: 4986 4987 / JMS I (KEYUPDATE) /CALL ROUTINE 4988 4989 / RETURNS WITH CLEAR AC. ANY KEYBOARD INPUT WHICH JUST OCCURRED WILL BE 4990 / BUFFERED; CALLS TO KEYINPUT WILL RETRIEVE THE CHARACTERS. 4991 4992 005224 0000 KEYUPDA,.-. /KEYBOARD BUFFER UPDATE ROUTINE 4993 005225 4247 JMS KEYGET /TRY TO GET A CHARACTER NOW /047 CJL 4994 005226 7410 SKP /GOT ONE, DON'T LEAVE YET /047 CJL 4995 005227 5624 JMP I KEYUPDATE /CHARACTER NOT AVAILABLE NOW, RETURN /047 CJL 4996 005230 6211 CDF BUFFLD /GOTO BUFFER FIELD 4997 005231 3770 DCA I KEYINSERT /STORE IN THE BUFFER 4998 005232 6201 CDF PRGFLD /BACK TO OUR FIELD 4999 005233 7201 NL0001 /SET INCREMENT 5000 005234 1370 TAD KEYINSERT /UPDATE POINTER 5001 005235 0167 AND [BUFSIZE-1] /JUST BUFFER BITS 5002 005236 1132 TAD [KEYBUFFER] /MAKE IT ABSOLUTE 5003 005237 3370 DCA KEYINSERT /STORE BACK UPDATED POINTER 5004 005240 1370 TAD KEYINSERT /GET INSERTION POINTER 5005 005241 7041 CIA /INVERT FOR TEST 5006 005242 1371 TAD KEYREMOVE /COMPARE TO REMOVAL POINTER 5007 005243 7650 SNA CLA /SKIP IF NOT EQUAL 5008 005244 2103 KSERROR,ISZ KEYERROR /INDICATE KEYBOARD ERROR 5009 005245 5624 JMP I KEYUPDATE /RETURN 5010 005246 5244 JMP KSERROR /MAKE SURE ERROR IS INDICATED 5011 / KEYBOARD GET A CHARACTER ROUTINE. /047 CJL 5012 5013 / CALLING SEQUENCE: 5014 5015 / JMS KEYGET /CALL ROUTINE 5016 / CHARACTER AVAILABLE /RETURNS HERE WITH LATEST CHARACTER 5017 / NO CHARACTER AVAILABLE /RETURNS HERE IF NO CHARACTER OR HANDLED FLOW-CONTROL 5018 5019 / NORMAL RETURN HAS LATEST CHARACTER IN AC. 5020 5021 / SKIP RETURN HAS CLEAR AC. 5022 5023 / IF FLOWFLAG=0, FLOW CHARACTERS ARE UNPROCESSED AND CAUSE NORMAL RETURN. 5024 5025 005247 0000 KEYGET, .-. /KEYBOARD GET A CHARACTER ROUTINE 5026 005250 6031 KGTEST, KSFIOT /FLAG UP? 5027 005251 5300 JMP KEYGNONE /NO, TAKE SKIP RETURN 5028 005252 6036 KGREAD, KRBIOT /YES, READ THE CHARACTER 5029 005253 7510 SPA /SKIP IF NO UART ERRORS 5030 005254 2103 ISZ KEYERROR /INDICATE KEYBOARD ERROR 5031 005255 7410 SKP /SKIP IF NOT TOO MANY ERRORS 5032 005256 5254 JMP .-2 /ENSURE KEYBOARD ERROR IS INDICATED 5033 005257 0163 AND [377] /JUST EIGHT-BIT 5034 005260 3341 DCA KEYTEMP /SAVE FOR NOW 5035 005261 1102 TAD FLOWFLAG /GET FLOW CONTROL FLAG 5036 005262 7650 SNA CLA /SKIP IF SET 5037 005263 5274 JMP KEYGEXIT /JUMP IF NOT 5038 005264 1341 TAD KEYTEMP /GET THE CHARACTER 5039 005265 0167 AND [177] /JUST SEVEN-BIT 5040 005266 1131 TAD [-CNTRLS] /COMPARE TO <^S> 5041 005267 7450 SNA /SKIP IF OTHER 5042 005270 5276 JMP KWATSET /JUMP IF IT MATCHES 5043 005271 1164 TAD [-CNTRLQ+CNTRLS]/COMPARE TO <^S> 5044 005272 7650 SNA CLA /SKIP IF OTHER 5045 005273 5277 JMP KWATCLEAR /JUMP IF IT MATCHES 5046 005274 1341 KEYGEXI,TAD KEYTEMP /GET THE CHARACTER 5047 005275 5647 JMP I KEYGET /TAKE IMMEDIATE RETURN 5048 5049 / COMES HERE ON <^S> TO SET OUTPUT WAIT. 5050 5051 005276 7330 KWATSET,NL4000 /SET WAIT VALUE 5052 5053 / COMES HERE ON <^Q> TO CLEAR OUTPUT WAIT. 5054 5055 005277 3367 KWATCLE,DCA CONWAIT /STORE NEW STATE 5056 005300 2247 KEYGNON,ISZ KEYGET /BUMP RETURN ADDRESS 5057 005301 5647 JMP I KEYGET /TAKE SKIP RETURN 5058 / CONSOLE TERMINAL ROUTINES. 5059 5060 / CONSOLE OUTPUT ROUTINE. 5061 5062 / CALLING SEQUENCE: 5063 5064 / TAD CHAR /CHARACTER TO OUTPUT IN AC 5065 / JMS I (CONOUT) /CALL ROUTINE 5066 / RETURN /RETURNS HERE WITH CLEAR AC 5067 5068 005302 0000 CONOUT, .-. /CONSOLE OUTPUT ROUTINE 5069 005303 3341 DCA CONTEMP /SAVE PASSED VALUE 5070 005304 1365 TAD CONINSERT /GET INSERTION POINTER 5071 005305 7041 CIA /INVERT FOR TEST 5072 005306 1366 TAD CONREMOVE /COMPARE TO REMOVAL POINTER 5073 005307 1367 TAD CONWAIT /ADD ON WAIT STATUS 5074 005310 7640 SZA CLA /SKIP IF BUFFER EMPTY AND NOT WAITING /047 CJL 5075 005311 5316 JMP CSTUFF /JUMP IF CHARACTER MUST BE BUFFERED 5076 005312 1341 TAD CONTEMP /GET PASSED VALUE /047 CJL 5077 005313 4777 JMS I (CONPUT) /TRY TO OUTPUT THE CHARACTER NOW /047 CJL 5078 005314 5316 JMP CSTUFF /COULDN'T OUTPUT IT, SO BUFFER IT /047 CJL 5079 005315 5702 JMP I CONOUT /RETURN 5080 5081 005316 1341 CSTUFF, TAD CONTEMP /GET THE CHARACTER 5082 005317 6211 CDF BUFFLD /GOTO BUFFER FIELD 5083 005320 3765 DCA I CONINSERT /STORE THE CHARACTER 5084 005321 6201 CDF PRGFLD /BACK TO OUR FIELD 5085 005322 7201 NL0001 /SET INCREMENT 5086 005323 1365 TAD CONINSERT /UPDATE POINTER 5087 005324 0167 AND [BUFSIZE-1] /JUST BUFFER BITS 5088 005325 1130 TAD [CONBUFFER] /MAKE IT ABSOLUTE 5089 005326 3365 DCA CONINSERT /STORE BACK UPDATED POINTER 5090 005327 5702 JMP I CONOUT /RETURN 5091 5092 / CONSOLE OUTPUT TEST ROUTINE. 5093 5094 / CALLING SEQUENCE: 5095 5096 / JMS I (CONTEST) /CALL ROUTINE 5097 / NOT READY /RETURN IF OUTPUT NOT READY FOR NEXT CHARACTER 5098 / READY /OUTPUT CAN ACCEPT ANOTHER CHARACTER NOW 5099 5100 005330 0000 CONTEST,.-. /CONSOLE OUTPUT TEST ROUTINE 5101 005331 7201 NL0001 /SET BUFFER INCREMENT 5102 005332 1365 TAD CONINSERT /GET UPDATED INSERTION POINTER 5103 005333 7041 CIA /INVERT FOR TEST 5104 005334 1366 TAD CONREMOVE /COMPARE TO REMOVAL POINTER 5105 005335 0167 AND [BUFSIZE-1] /JUST BUFFER BITS 5106 005336 7640 SZA CLA /SKIP IF BUFFER IS FULL 5107 005337 2330 ISZ CONTEST /BUMP RETURN IF NOT 5108 005340 5730 JMP I CONTEST /RETURN EITHER WAY 5109 / CONSOLE OUTPUT BUFFER UPDATE ROUTINE. 5110 5111 / CALLING SEQUENCE: 5112 5113 / JMS I (CONUPDATE) /CALL ROUTINE 5114 / RETURN /RETURN WITH CLEAR AC 5115 5116 / THE CONSOLE OUTPUT BUFFERING ROUTINES WILL UPDATE POINTERS, ETC. IF ANY 5117 / STATUS HAS CHANGED SINCE THE LAST CALL. 5118 5119 005341 0000 CONUPDA,.-. /CONSOLE OUTPUT UPDATE ROUTINE 5120 005342 1367 TAD CONWAIT /FLOW CONTROL WAIT SET? 5121 005343 7640 SZA CLA /SKIP IF NOT 5122 005344 5741 JMP I CONUPDATE /JUST RETURN IF SO 5123 005345 1365 TAD CONINSERT /GET INSERTION POINTER 5124 005346 7041 CIA /INVERT FOR TEST 5125 005347 1366 TAD CONREMOVE /COMPARE TO REMOVAL POINTER 5126 005350 7650 SNA CLA /SKIP IF BUFFER CONTAINS SOMETHING /047 CJL 5127 005351 5741 JMP I CONUPDATE /RETURN IF BUFFER EMPTY /047 CJL 5128 005352 6211 CDF BUFFLD /GOTO BUFFER FIELD 5129 005353 1766 TAD I CONREMOVE /GET A CHARACTER FROM THE BUFFER 5130 005354 6201 CDF PRGFLD /BACK TO OUR FIELD 5131 005355 4777 JMS I (CONPUT) /TRY TO OUTPUT THE CHARACTER NOW /047 CJL 5132 005356 5741 JMP I CONUPDATE /COULDN'T DO IT, SO JUST RETURN /047 CJL 5133 005357 7201 NL0001 /SET BUFFER INCREMENT 5134 005360 1366 TAD CONREMOVE /UPDATE REMOVAL POINTER 5135 005361 0167 AND [BUFSIZE-1] /JUST BUFFER BITS 5136 005362 1130 TAD [CONBUFFER] /MAKE IT ABSOLUTE 5137 005363 3366 DCA CONREMOVE /STORE UPDATED POINTER 5138 005364 5741 JMP I CONUPDATE /RETURN 5139 5140 005365 0000 CONINSE,.-. /CONSOLE OUTPUT INSERTION POINTER 5141 005366 0000 CONREMO,.-. /CONSOLE OUTPUT REMOVAL POINTER 5142 5143 / CONSOLE FLOW CONTROL WAIT FLAG. 5144 5145 005367 0000 CONWAIT,.-. /0=DON'T WAIT, 4000=WAIT FOR <^Q> 5146 005370 0000 KEYINSE,.-. /KEYBOARD BUFFER INSERTION POINTER 5147 005371 0000 KEYREMO,.-. /KEYBOARD BUFFER REMOVAL POINTER 5148 5149 CONTEMP=CONUPDATE /CONSOLE OUTPUT TEMPORARY 5150 5151 KEYTEMP=CONUPDATE /KEYBOARD INPUT TEMPORARY 5152 5153 005377 5676 PAGE 5154 / REMOTE LINE ROUTINES. 5155 5156 / REMOTE LINE INPUT ROUTINE. /026 CJL 5157 5158 / CALLING SEQUENCE: 5159 5160 / JMS I (REMINPUT) /CALL ROUTINE 5161 / NO INPUT /RETURN IF NO INPUT 5162 / INPUT /RETURN IF INPUT AVAILABLE 5163 5164 / THE AC WILL BE CLEAR IF THE IMMEDIATE RETURN IS TAKEN FOR NO INPUT. 5165 5166 / THE AC WILL CONTAIN THE LATEST CHARACTER IF THE SKIP RETURN IS TAKEN. 5167 5168 005400 0000 REMINPU,.-. /REMOTE LINE INPUT ROUTINE 5169 005401 1352 TAD RININSERT /GET INSERTION POINTER 5170 005402 7041 CIA /INVERT FOR TEST 5171 005403 1353 TAD RINREMOVE /COMPARE TO REMOVAL POINTER 5172 005404 7650 SNA CLA /SKIP IF BUFFER NOT EMPTY 5173 005405 5242 JMP RINCHECK /JUMP IF BUFFER EMPTY 5174 005406 1353 TAD RINREMOVE /GET REMOVAL POINTER 5175 005407 3354 DCA RINTEMP /SAVE FOR LATER 5176 005410 7201 NL0001 /SET INCREMENT 5177 005411 1353 TAD RINREMOVE /UPDATE REMOVAL POINTER 5178 005412 0167 AND [BUFSIZE-1] /JUST BUFFER BITS 5179 005413 1377 TAD (RINBUFFER) /MAKE IT ABSOLUTE 5180 005414 3353 DCA RINREMOVE /STORE UPDATED POINTER 5181 005415 6211 CDF BUFFLD /GOTO BUFFER FIELD 5182 005416 1754 TAD I RINTEMP /GET THE LATEST CHARACTER 5183 005417 6201 CDF PRGFLD /BACK TO OUR FIELD 5184 005420 3354 DCA RINTEMP /SAVE FOR LATER 5185 005421 1102 TAD FLOWFLAG /GET FLOW CONTROL FLAG 5186 005422 7650 SNA CLA /SKIP IF SET 5187 005423 5240 JMP REMINEXIT /JUMP IF NOT 5188 005424 7330 NL4000 /SET WAITING VALUE 5189 005425 1106 TAD RINWAIT /ARE WE WAITING TO EMPTY? 5190 005426 7640 SZA CLA /SKIP IF SO 5191 005427 5240 JMP REMINEXIT /JUMP IF NOT 5192 005430 1352 TAD RININSERT /GET INSERTION POINTER 5193 005431 7041 CIA /INVERT FOR TEST 5194 005432 1353 TAD RINREMOVE /COMPARE TO REMOVAL POINTER 5195 005433 0134 AND [BUFSIZE^3%4] /JUST 3/4 BITS 5196 005434 7640 SZA CLA /SKIP IF BUFFER NOW 1/4 FULL (OR LESS) 5197 005435 5240 JMP REMINEXIT /JUMP IF NOT 5198 005436 7240 NL7777 /SET BUFFER EMPTYING VALUE 5199 005437 3106 DCA RINWAIT /STORE FOR OUTPUT ROUTINE 5200 005440 1354 REMINEX,TAD RINTEMP /GET THE CHARACTER 5201 005441 7410 SKP /DON'T GET ANOTHER ONE /047 CJL 5202 5203 / COMES HERE IF REMOTE LINE INPUT BUFFER IS EMPTY. 5204 5205 005442 4302 RINCHEC,JMS RINGET /TRY TO GET A CHARACTER NOW /047 CJL 5206 005443 2200 ISZ REMINPUT /GOT ONE, SO TAKE SKIP RETURN /047 CJL 5207 005444 5600 JMP I REMINPUT /RETURN EITHER WAY 5208 / REMOTE LINE INPUT BUFFER UPDATE ROUTINE. /026 CJL 5209 5210 / CALLING SEQUENCE: 5211 5212 / JMS I (RINUPDATE) /CALL ROUTINE 5213 5214 / RETURNS WITH CLEAR AC. ANY REMOTE LINE INPUT WHICH JUST OCCURRED WILL BE 5215 / BUFFERED; CALLS TO REMINPUT WILL RETRIEVE THE CHARACTERS. 5216 5217 005445 0000 RINUPDA,.-. /REMOTE LINE INPUT BUFFER UPDATE ROUTINE 5218 005446 4302 JMS RINGET /TRY TO GET A CHARACTER NOW /047 CJL 5219 005447 7410 SKP /GOT ONE, DON'T LEAVE YET /047 CJL 5220 005450 5645 JMP I RINUPDATE /CHARACTER NOT AVAILABLE NOW, RETURN /047 CJL 5221 005451 6211 CDF BUFFLD /GOTO BUFFER FIELD 5222 005452 3752 DCA I RININSERT /STORE IN THE BUFFER 5223 005453 6201 CDF PRGFLD /BACK TO OUR FIELD 5224 005454 7201 NL0001 /SET INCREMENT 5225 005455 1352 TAD RININSERT /UPDATE POINTER 5226 005456 0167 AND [BUFSIZE-1] /JUST BUFFER BITS 5227 005457 1377 TAD (RINBUFFER) /MAKE IT ABSOLUTE 5228 005460 3352 DCA RININSERT /STORE BACK UPDATED POINTER 5229 005461 1352 TAD RININSERT /GET INSERTION POINTER 5230 005462 7041 CIA /INVERT FOR TEST 5231 005463 1353 TAD RINREMOVE /COMPARE TO REMOVAL POINTER 5232 005464 7450 SNA /SKIP IF BUFFER NOT FULL 5233 005465 2104 ISZ RINERROR /INDICATE REMOTE LINE INPUT ERROR 5234 005466 7410 SKP /SKIP IF NO OVERFLOW 5235 005467 5265 JMP .-2 /ENSURE ERROR IS SET 5236 005470 1134 TAD [BUFSIZE^3%4] /SUBTRACT 1/4 BUFFER'S WORTH 5237 005471 0134 AND [BUFSIZE^3%4] /JUST 3/4 BUFFER BITS 5238 005472 7650 SNA CLA /SKIP IF NOT 3/4 FULL 5239 005473 1102 TAD FLOWFLAG /ELSE CHECK IF FLOW CONTROL IS ENABLED 5240 005474 7650 SNA CLA /SKIP IF 3/4 FULL AND FLOW CONTROL IS ENABLED 5241 005475 5645 JMP I RINUPDATE /JUST RETURN 5242 005476 1106 TAD RINWAIT /GET INPUT WAIT FLAG 5243 005477 7650 SNA CLA /SKIP IF ALREADY SET 5244 005500 2106 ISZ RINWAIT /SET TO <^S> STATE 5245 005501 5645 JMP I RINUPDATE /RETURN 5246 / REMOTE LINE GET A CHARACTER ROUTINE. /047 CJL 5247 5248 / CALLING SEQUENCE: 5249 5250 / JMS I (RINGET) /CALL ROUTINE 5251 / CHARACTER AVAILABLE /RETURNS HERE WITH LATEST CHARACTER 5252 / NO CHARACTER AVAILABLE /RETURNS HERE IF NO CHARACTER OR HANDLED FLOW-CONTROL 5253 5254 / NORMAL RETURN HAS LATEST CHARACTER IN AC. 5255 5256 / SKIP RETURN HAS CLEAR AC. 5257 5258 / IF FLOWFLAG=0, FLOW CHARACTERS ARE UNPROCESSED AND CAUSE NORMAL RETURN. 5259 5260 005502 0000 RINGET, .-. /REMOTE LINE GET A CHARACTER ROUTINE 5261 005503 1020 RINTEST,TAD INFLAG /IS INPUT AVAILABLE? 5262 005504 7650 RINGT0, SNA CLA /SKIP IF SO 5263 005505 5333 RINREAD,JMP RINGNONE /JUMP IF NOT 5264 005506 3020 RINGT1, DCA INFLAG /CLEAR AVAILABILITY FLAG 5265 005507 6306 RINGT2, IRB /READ IN THE CHARACTER 5266 5267 / THE ABOVE INSTRUCTIONS ARE FOR DECMATE II USE ONLY. THE DEFAULT INSTRUCTIONS 5268 / ARE FOR KL8 INTERFACES. 5269 5270 *RINTEST /OVERLAY DECMATE II CODE 5271 5272 005503 6401 RINTEST,RKSFIOT /FLAG UP? 5273 005504 5333 RINGT0, JMP RINGNONE /NO, TAKE SKIP RETURN 5274 005505 6406 RINREAD,RKRBIOT /YES, READ THE CHARACTER 5275 005506 7410 RINGT1, SKP /NO ERRORS ON DECMATE I 5276 5277 / THE ABOVE INSTRUCTION IS FOR DECMATE I USE ONLY. THE DEFAULT INSTRUCTION IS 5278 / FOR KL8 INTERFACES. 5279 5280 *RINGT1 /OVERLAY DECMATE I CODE 5281 5282 005506 7510 RINGT1, SPA /SKIP IF NO UART ERRORS 5283 005507 2104 RING2, ISZ RINERROR /INDICATE REMOTE LINE INPUT ERROR 5284 005510 7410 SKP /SKIP IF NOT TOO MANY ERRORS 5285 005511 5307 JMP .-2 /ENSURE REMOTE LINE INPUT ERROR IS INDICATED 5286 005512 0163 AND [377] /JUST EIGHT-BIT 5287 005513 3354 DCA RINTEMP /SAVE FOR NOW 5288 005514 1102 TAD FLOWFLAG /GET FLOW CONTROL FLAG 5289 005515 7650 SNA CLA /SKIP IF SET 5290 005516 5327 JMP RINGEXIT /JUMP IF NOT 5291 005517 1354 TAD RINTEMP /GET THE CHARACTER 5292 005520 0167 AND [177] /JUST SEVEN-BIT 5293 005521 1131 TAD [-CNTRLS] /COMPARE TO <^S> 5294 005522 7450 SNA /SKIP IF OTHER 5295 005523 5331 JMP RWATSET /JUMP IF IT MATCHES 5296 005524 1164 TAD [-CNTRLQ+CNTRLS]/COMPARE TO <^S> 5297 005525 7650 SNA CLA /SKIP IF OTHER 5298 005526 5332 JMP RWATCLEAR /JUMP IF IT MATCHES 5299 005527 1354 RINGEXI,TAD RINTEMP /GET THE CHARACTER 5300 005530 5702 JMP I RINGET /TAKE IMMEDIATE RETURN 5301 / COMES HERE ON <^S> TO SET OUTPUT WAIT. 5302 5303 005531 7330 RWATSET,NL4000 /SET WAIT VALUE 5304 5305 / COMES HERE ON <^Q> TO CLEAR OUTPUT WAIT. 5306 5307 005532 3105 RWATCLE,DCA REMWAIT /STORE NEW STATE 5308 005533 2302 RINGNON,ISZ RINGET /BUMP RETURN ADDRESS 5309 005534 5702 JMP I RINGET /TAKE SKIP RETURN 5310 5311 / REMOTE LINE RESET ROUTINE. /026 CJL 5312 5313 / CALLING SEQUENCE: 5314 5315 / JMS I (REMRESET) /CALL ROUTINE 5316 / RETURN /RETURN WITH CLEAR AC 5317 5318 / RETURNS WITH CLEAR AC AND ALL REMOTE LINE VARIABLES RESET. 5319 5320 005535 0000 REMRESE,.-. /REMOTE LINE RESET ROUTINE 5321 005536 1127 TAD [REMBUFFER] /SETUP THE REMOTE LINE 5322 005537 3107 DCA REMINSERT /OUTPUT INSERTION POINTER 5323 005540 1127 TAD [REMBUFFER] /SETUP THE REMOTE LINE 5324 005541 3110 DCA REMREMOVE /OUTPUT REMOVAL POINTER 5325 005542 1377 TAD (RINBUFFER) /SETUP THE REMOTE LINE 5326 005543 3352 DCA RININSERT /INPUT INSERTION POINTER 5327 005544 1377 TAD (RINBUFFER) /SETUP THE REMOTE LINE 5328 005545 3353 DCA RINREMOVE /INPUT REMOVAL POINTER 5329 005546 3105 DCA REMWAIT /CLEAR REMOTE OUTPUT WAIT 5330 005547 3106 DCA RINWAIT /CLEAR REMOTE INPUT WAIT 5331 005550 3104 DCA RINERROR /CLEAR REMOTE INPUT ERROR 5332 005551 5735 JMP I REMRESET /RETURN 5333 5334 005552 0000 RININSE,.-. /REMOTE INPUT INSERTION POINTER 5335 005553 0000 RINREMO,.-. /REMOTE INPUT REMOVAL POINTER 5336 005554 0000 RINTEMP,.-. /REMOTE INPUT TEMPORARY /047 CJL 5337 5338 005577 3400 PAGE 5339 / REMOTE LINE OUTPUT ROUTINE. 5340 5341 / CALLING SEQUENCE: 5342 5343 / TAD CHAR /CHARACTER TO OUTPUT IN AC 5344 / JMS I (REMOUT) /CALL ROUTINE 5345 / RETURN /RETURNS HERE WITH CLEAR AC 5346 5347 005600 0000 REMOUT, .-. /REMOTE LINE OUTPUT ROUTINE 5348 005601 3237 DCA REMTEMP /SAVE PASSED VALUE 5349 005602 1107 TAD REMINSERT /GET INSERTION POINTER 5350 005603 7041 CIA /INVERT FOR TEST 5351 005604 1110 TAD REMREMOVE /COMPARE TO REMOVAL POINTER 5352 005605 1105 TAD REMWAIT /ADD ON WAIT STATUS 5353 005606 7640 SZA CLA /SKIP IF BUFFER EMPTY AND NOT WAITING /047 CJL 5354 005607 5214 JMP RSTUFF /JUMP IF CHARACTER MUST BE BUFFERED 5355 005610 1237 TAD REMTEMP /GET PASSED VALUE /047 CJL 5356 005611 4777 JMS I (REMPUT) /TRY TO OUTPUT THE CHARACTER NOW /047 CJL 5357 005612 5214 JMP RSTUFF /COULDN'T OUTPUT IT, SO BUFFER IT /047 CJL 5358 005613 5600 JMP I REMOUT /RETURN 5359 5360 005614 1237 RSTUFF, TAD REMTEMP /GET THE CHARACTER 5361 005615 6211 CDF BUFFLD /GOTO BUFFER FIELD 5362 005616 3507 DCA I REMINSERT /STORE IN BUFFER 5363 005617 6201 CDF PRGFLD /BACK TO OUR FIELD 5364 005620 7201 NL0001 /SET BUFFER INCREMENT 5365 005621 1107 TAD REMINSERT /BUMP INSERTION POINTER 5366 005622 0167 AND [BUFSIZE-1] /JUST BUFFER BITS 5367 005623 1127 TAD [REMBUFFER] /MAKE IT ABSOLUTE 5368 005624 3107 DCA REMINSERT /STORE UPDATED POINTER 5369 005625 5600 JMP I REMOUT /RETURN 5370 5371 / REMOTE LINE OUTPUT TEST ROUTINE. 5372 5373 / CALLING SEQUENCE: 5374 5375 / JMS I (REMTEST) /CALL ROUTINE 5376 / NOT READY /RETURN IF OUTPUT NOT READY FOR NEXT CHARACTER 5377 / READY /OUTPUT CAN ACCEPT ANOTHER CHARACTER NOW 5378 5379 / AC WILL BE CLEARED AFTER THE CALL. 5380 5381 005626 0000 REMTEST,.-. /REMOTE LINE OUTPUT TEST ROUTINE 5382 005627 7201 NL0001 /SET BUFFER INCREMENT 5383 005630 1107 TAD REMINSERT /GET INSERTION POINTER 5384 005631 7041 CIA /INVERT FOR TEST 5385 005632 1110 TAD REMREMOVE /COMPARE TO REMOVAL POINTER 5386 005633 0167 AND [BUFSIZE-1] /JUST BUFFER BITS 5387 005634 7640 SZA CLA /SKIP IF BUFFER IS FULL 5388 005635 2226 ISZ REMTEST /BUMP RETURN IF BUFFER IS NOT FULL 5389 005636 5626 JMP I REMTEST /RETURN EITHER WAY 5390 / REMOTE LINE OUTPUT BUFFER UPDATE ROUTINE. 5391 5392 / CALLING SEQUENCE: 5393 5394 / JMS I (REMUPDATE) /CALL ROUTINE 5395 / RETURN /RETURN WITH CLEAR AC 5396 5397 / THE REMOTE LINE OUTPUT BUFFERING ROUTINES WILL UPDATE POINTERS, ETC. IF ANY 5398 / STATUS HAS CHANGED SINCE THE LAST CALL. 5399 5400 005637 0000 REMUPDA,.-. /REMOTE LINE OUTPUT UPDATE ROUTINE 5401 005640 1106 TAD RINWAIT /GET INPUT WAIT FLAG 5402 005641 7104 CLL RAL /MAIN STATE BIT TO LINK 5403 005642 7650 SNA CLA /SKIP IF OUTPUT FLOW CHARACTER NEEDED /047 CJL 5404 005643 5253 JMP REMCHECK /JUMP IF CHARACTER NOT NEEDED NOW /047 CJL 5405 005644 1376 TAD (CNTRLQ) /ASSUME RELEASE CHARACTER NEEDED /047 CJL 5406 005645 7420 SNL /SKIP IF SO /047 CJL 5407 005646 1164 TAD [CNTRLS-CNTRLQ] /ELSE CHANGE IT TO HOLD CHARACTER /047 CJL 5408 005647 4777 JMS I (REMPUT) /TRY TO OUTPUT IT NOW /047 CJL 5409 005650 5253 JMP REMCHECK /COULDN'T DO IT, FORGET IT FOR NOW /047 CJL 5410 005651 7030 CML RAR /SET NEW STATE VALUE /047 CJL 5411 005652 3106 DCA RINWAIT /STORE IT 5412 005653 1105 REMCHEC,TAD REMWAIT /GET OUTPUT WAIT FLAG 5413 005654 7640 SZA CLA /SKIP IF NOT WAITING 5414 005655 5637 JMP I REMUPDATE /JUST RETURN IF WAITING 5415 005656 1107 TAD REMINSERT /GET OUTPUT INSERTION POINTER 5416 005657 7041 CIA /INVERT FOR TEST 5417 005660 1110 TAD REMREMOVE /COMPARE TO OUTPUT REMOVAL POINTER 5418 005661 7650 SNA CLA /SKIP IF BUFFER CONTAINS SOMETHING /047 CJL 5419 005662 5637 JMP I REMUPDATE /RETURN IF BUFFER EMPTY /047 CJL 5420 005663 6211 CDF BUFFLD /GOTO BUFFER FIELD 5421 005664 1510 TAD I REMREMOVE /GET A CHARACTER FROM THE BUFFER 5422 005665 6201 CDF PRGFLD /BACK TO OUR FIELD 5423 005666 4777 JMS I (REMPUT) /TRY TO OUTPUT THE CHARACTER NOW /047 CJL 5424 005667 5637 JMP I REMUPDATE /COULDN'T DO IT, SO JUST RETURN /047 CJL 5425 005670 7201 NL0001 /SET BUFFER INCREMENT 5426 005671 1110 TAD REMREMOVE /BUMP REMOVAL POINTER 5427 005672 0167 AND [BUFSIZE-1] /JUST BUFFER BITS 5428 005673 1127 TAD [REMBUFFER] /MAKE IT ABSOLUTE 5429 005674 3110 DCA REMREMOVE /STORE UPDATED POINTER 5430 005675 5637 JMP I REMUPDATE /RETURN 5431 5432 REMTEMP=REMUPDATE /REMOTE OUTPUT TEMPORARY 5433 / LOW-LEVEL CONSOLE OUTPUT ROUTINE. /047 CJL 5434 5435 / CALLING SEQUENCE: 5436 5437 / [CHARACTER TO OUTPUT IN THE AC] 5438 5439 / JMS I (CONPUT) /CALL ROUTINE 5440 / NO OUTPUT /RETURNS HERE IF OUTPUT UNAVAILABLE 5441 / OUTPUT /RETURNS HERE IF CHARACTER WAS OUTPUT 5442 5443 005676 0000 CONPUT, .-. /CONSOLE OUTPUT ROUTINE 5444 005677 6041 CONTSF, TSFIOT /FLAG UP? 5445 005700 5303 JMP CONCLEAR /NO, FORGET IT 5446 005701 6046 CONTLS, TLSIOT /YES, OUTPUT THE CHARACTER NOW 5447 005702 2276 ISZ CONPUT /TAKE SKIP RETURN 5448 005703 7200 CONCLEA,CLA /CLEAN UP 5449 005704 5676 JMP I CONPUT /RETURN EITHER WAY 5450 5451 / CONSOLE RESET ROUTINE. /026 CJL 5452 5453 / CALLING SEQUENCE: 5454 5455 / JMS I (CONRESET) /CALL ROUTINE 5456 / RETURN /RETURN WITH CLEAR AC 5457 5458 / RETURNS WITH CLEAR AC AND ALL CONSOLE VARIABLES RESET. 5459 5460 005705 0000 CONRESE,.-. /CONSOLE RESET ROUTINE 5461 005706 1130 TAD [CONBUFFER] /SETUP THE 5462 005707 3775 DCA I (CONINSERT) /CONSOLE OUTPUT INSERTION POINTER 5463 005710 1130 TAD [CONBUFFER] /SETUP THE 5464 005711 3774 DCA I (CONREMOVE) /CONSOLE OUTPUT REMOVAL POINTER 5465 005712 1132 TAD [KEYBUFFER] /SETUP THE 5466 005713 3773 DCA I (KEYINSERT) /KEYBOARD INSERTION POINTER 5467 005714 1132 TAD [KEYBUFFER] /SETUP THE 5468 005715 3772 DCA I (KEYREMOVE) /KEYBOARD REMOVAL POINTER 5469 005716 3771 DCA I (CONWAIT) /CLEAR OUTPUT WAIT 5470 005717 3103 DCA KEYERROR /CLEAR KEYBOARD ERROR 5471 005720 5705 JMP I CONRESET /RETURN 5472 / LOW-LEVEL REMOTE LINE OUTPUT ROUTINE. /047 CJL 5473 5474 / CALLING SEQUENCE: 5475 5476 / [CHARACTER TO OUTPUT IN THE AC] 5477 5478 / JMS I (REMPUT) /CALL ROUTINE 5479 / NO OUTPUT /RETURNS HERE IF OUTPUT UNAVAILABLE 5480 / OUTPUT /RETURNS HERE IF CHARACTER WAS OUTPUT 5481 5482 005721 0000 REMPUT, .-. /REMOTE LINE OUTPUT ROUTINE 5483 005722 0163 DM1AN2, AND [377] /ENSURE EIGHT BIT /049 CJL 5484 5485 / THE ABOVE INSTRUCTION IS FOR DECMATE I USE ONLY. THE DEFAULT INSTRUCTION IS 5486 / FOR KL8 INTERFACES. 5487 5488 *DM1AN2 /OVERLAY DECMATE II CODE /049 CJL 5489 5490 005722 7410 DM1AN2, SKP /WE'RE NOT A DECMATE I /049 CJL 5491 005723 1162 TAD [400] /SET WRITE BIT /049 CJL 5492 005724 3305 REMTSF, DCA RMPTEMP /SAVE PASSED VALUE 5493 005725 1021 RMPUT0, TAD OUTFLAG /CHECK IF OUTPUT IS AVAILABLE 5494 005726 7650 REMTLS, SNA CLA /SKIP IF SO 5495 005727 5721 RMPUT1, JMP I REMPUT /RETURN IF NOT 5496 005730 1305 REMCLEA,TAD RMPTEMP /GET THE PASSED VALUE 5497 005731 6316 RMPUT2, OLS /OUTPUT THE CHARACTER NOW 5498 5499 / THE ABOVE INSTRUCTIONS ARE FOR DECMATE II USE ONLY. THE DEFAULT INSTRUCTIONS 5500 / ARE FOR KL8 INTERFACES. 5501 5502 *REMTSF /OVERLAY DECMATE II CODE 5503 5504 005724 6411 REMTSF, RTSFIOT /FLAG UP? 5505 005725 5330 RMPUT0, JMP REMCLEAR /NO, FORGET IT 5506 005726 6416 REMTLS, RTLSIOT /YES, OUTPUT THE CHARACTER NOW 5507 005727 2321 RMPUT1, ISZ REMPUT /TAKE SKIP RETURN 5508 005730 7200 REMCLEA,CLA /CLEAN UP 5509 005731 5721 RMPUT2, JMP I REMPUT /RETURN EITHER WAY 5510 5511 005732 7200 CLA /CLEAN UP 5512 005733 3021 DCA OUTFLAG /INDICATE OUTPUT IS UNAVAILABLE 5513 005734 2321 ISZ REMPUT /TAKE SKIP RETURN 5514 005735 5721 JMP I REMPUT /RETURN TO CALLER 5515 5516 RMPTEMP=CONRESET /REMOTE OUTPUT TEMPORARY 5517 5518 005771 5367 PAGE 005772 5371 005773 5370 005774 5366 005775 5365 005776 0021 005777 5721 5519 / SEVEN-BIT COMMAND TABLES. /034 CJL 5520 5521 CMDTBL= . /COMMAND TABLE HERE 5522 5523 006000 0103 "C&177; "O&177; "N&177 /\ 006001 0117 006002 0116 5524 006003 0116 "N&177; "E&177; "C&177 / >CONNECT COMMAND 006004 0105 006005 0103 5525 006006 0124 "T&177; -1 // 006007 7777 5526 006010 5000 CONSRV /CONNECT ROUTINE ADDRESS 5527 5528 006011 0106 "F&177; "I&177; "N&177 /\ 006012 0111 006013 0116 5529 006014 0111 "I&177; "S&177; "H&177 / >FINISH COMMAND 006015 0123 006016 0110 5530 006017 7777 -1 // 5531 006020 1530 FINSRV /FINISH ROUTINE ADDRESS 5532 5533 006021 0105 "E&177; "X&177; "I&177 /EXIT 006022 0130 006023 0111 5534 006024 0124 "T&177; -1 /COMMAND 006025 7777 5535 006026 7577 EXITKERMIT /EXIT ROUTINE ADDRESS 5536 5537 006027 0123 "S&177; "E&177; "N&177 /SEND 006030 0105 006031 0116 5538 006032 0104 "D&177; -1 /COMMAND 006033 7777 5539 006034 2400 SNDSRV /SEND ROUTINE ADDRESS 5540 5541 006035 0107 "G&177; "E&177; "T&177 /GET 006036 0105 006037 0124 5542 006040 7777 -1 /COMMAND 5543 006041 2600 GETSRV /GET ROUTINE ADDRESS 5544 5545 006042 0122 "R&177; "E&177; "C&177 /\ 006043 0105 006044 0103 5546 006045 0105 "E&177; "I&177; "V&177 / >RECEIVE COMMAND 006046 0111 006047 0126 5547 006050 0105 "E&177; -1 // 006051 7777 5548 006052 2663 RECSRV /RECEIVE ROUTINE ADDRESS 5549 006053 0110 "H&177; "E&177; "L&177 /HELP 006054 0105 006055 0114 5550 006056 0120 "P&177; -1 /COMMAND 006057 7777 5551 006060 2263 HELPSRV /HELP ROUTINE ADDRESS 5552 5553 006061 7777 -1 /THIS ENDS THE TABLE /034 CJL 5554 5555 / REMOTE PACKET INPUT BUFFER. /014 CJL 5556 5557 006062 0000 RRBUF, 0 /MARK 5558 006063 0000 RRLEN, 0 /PACKET LENGTH 5559 006064 0000 RRSEQ, 0 /PACKET SEQ 5560 006065 0000 RRTYP, 0 /PACKET TYPE 5561 5562 DECIMAL 5563 5564 006066 0000 RRDTA, ZBLOCK 91 /DATA GOES HERE 006067 0000 006070 0000 006071 0000 006072 0000 006073 0000 006074 0000 006075 0000 006076 0000 006077 0000 006100 0000 006101 0000 006102 0000 006103 0000 006104 0000 006105 0000 006106 0000 006107 0000 006110 0000 006111 0000 006112 0000 006113 0000 006114 0000 006115 0000 006116 0000 006117 0000 006120 0000 006121 0000 006122 0000 006123 0000 006124 0000 006125 0000 006126 0000 006127 0000 006130 0000 006131 0000 006132 0000 006133 0000 006134 0000 006135 0000 006136 0000 006137 0000 006140 0000 006141 0000 006142 0000 006143 0000 006144 0000 006145 0000 006146 0000 006147 0000 006150 0000 006151 0000 006152 0000 006153 0000 006154 0000 006155 0000 006156 0000 006157 0000 006160 0000 006161 0000 006162 0000 006163 0000 006164 0000 006165 0000 006166 0000 006167 0000 006170 0000 006171 0000 006172 0000 006173 0000 006174 0000 006175 0000 006176 0000 006177 0000 006200 0000 006201 0000 006202 0000 006203 0000 006204 0000 006205 0000 006206 0000 006207 0000 006210 0000 006211 0000 006212 0000 006213 0000 006214 0000 006215 0000 006216 0000 006217 0000 006220 0000 5565 5566 OCTAL 5567 5568 006221 0000 RTERMI, 0 /ADD LOCATION WHERE TERMINATOR IS STORED/A004 5569 /ON RECEIVE IF BUFFER IS MAXIMUM LENGTH /A004 5570 5571 / REMOTE PACKET OUTPUT BUFFER 5572 5573 006222 0001 RSBUF, CNTRLA /PACKET BUFFER (BEGINS WITH "SOH") /034 CJL 5574 006223 0000 RSLEN, 0 /PACKET LENGTH GOES HERE 5575 006224 0000 RSSEQ, 0 /PACKET SEQUENCE GOES HERE 5576 006225 0000 RSTYP, 0 /PACKET TYPE GOES HERE 5577 5578 DECIMAL 5579 5580 006226 0000 RSDTA, ZBLOCK 91 /DATA GOES HERE 006227 0000 006230 0000 006231 0000 006232 0000 006233 0000 006234 0000 006235 0000 006236 0000 006237 0000 006240 0000 006241 0000 006242 0000 006243 0000 006244 0000 006245 0000 006246 0000 006247 0000 006250 0000 006251 0000 006252 0000 006253 0000 006254 0000 006255 0000 006256 0000 006257 0000 006260 0000 006261 0000 006262 0000 006263 0000 006264 0000 006265 0000 006266 0000 006267 0000 006270 0000 006271 0000 006272 0000 006273 0000 006274 0000 006275 0000 006276 0000 006277 0000 006300 0000 006301 0000 006302 0000 006303 0000 006304 0000 006305 0000 006306 0000 006307 0000 006310 0000 006311 0000 006312 0000 006313 0000 006314 0000 006315 0000 006316 0000 006317 0000 006320 0000 006321 0000 006322 0000 006323 0000 006324 0000 006325 0000 006326 0000 006327 0000 006330 0000 006331 0000 006332 0000 006333 0000 006334 0000 006335 0000 006336 0000 006337 0000 006340 0000 006341 0000 006342 0000 006343 0000 006344 0000 006345 0000 006346 0000 006347 0000 006350 0000 006351 0000 006352 0000 006353 0000 006354 0000 006355 0000 006356 0000 006357 0000 006360 0000 5581 5582 006361 0000 0 /CHECKSUM HERE ON MAX PACKET 5583 006362 0000 0 /EOL (IF USED HERE ON MAX PACKET) 5584 006363 0000 0 /INTERNAL TERMINATOR HERE ON MAX PACKET 5585 5586 OCTAL 5587 / SEND-INIT PACKET DEFINITION 5588 5589 INIDAT, DECIMAL 5590 5591 006364 0176 94+32 /94 CHARS MAX 5592 5593 OCTAL 5594 5595 006365 0057 "/&177 /15 SECOND TIME-OUT /M013/014 CJL 5596 006366 0040 " &177 /NO PADDING 5597 006367 0100 0+100&177 /NO PADDING CHAR 5598 006370 0055 " &177+15 /CR FOR EOL 5599 006371 0043 "#&177 /QUOTE CHAR 5600 006372 0116 "N&137 /NO 8TH BIT QUOTING 5601 006373 0061 "1&177 /CHECK TYPE 1 5602 006374 0040 " &177 /NO REPEAT CHAR 5603 006375 0040 " &177+0 /NO EXTRA CAPABILITY 5604 006376 7777 NODATA, -1 /END OF DATA (USE THIS FOR SENDING NO-DATA) 5605 PAGE /GET TO NEXT PAGE /028 CJL 5606 5607 / NO-INTERRUPT CONSOLE INPUT/OUTPUT SUPPORT ROUTINES. /023 CJL 5608 5609 / MODIFIED FOR FORCED-ECHO AND COLUMN-COUNTING. /043 CJL 5610 5611 / CONSOLE INPUT ROUTINE. RETURNS LATEST CHARACTER WITHOUT ECHOING. MAY BE 5612 / CALLED WITH DIRTY AC. RETURNS LATEST SEVEN-BIT CHARACTER TYPED WHILE FIELDING 5613 / POTENTIAL <^S>/<^Q> PROTOCOL. 5614 5615 006400 0000 INPUT, .-. /CONSOLE INPUT ROUTINE 5616 006401 4232 INPWAIT,JMS CHKUP /TRY TO GET A CHARACTER 5617 006402 1015 TAD INCHAR /GET THE CHARACTER 5618 006403 7450 SNA /SKIP IF ANYTHING CAME IN 5619 006404 5201 JMP INPWAIT /WAIT FOR ANYTHING 5620 006405 5600 JMP I INPUT /RETURN WITH LATEST CHARACTER 5621 5622 / CONSOLE OUTPUT ROUTINE. OUTPUTS CHARACTER IN AC (INCLUDING VIA 5623 / SIMULATION). RETURNS WITH CLEAR AC. SUBJECT TO CONSOLE ECHO STATUS (ECHOSW). 5624 5625 006406 0000 P7CH, .-. /CONSOLE OUTPUT ROUTINE 5626 006407 1377 TAD (-CNTRLI) /COMPARE TO 5627 006410 7450 SNA /SKIP IF OTHER 5628 006411 5215 JMP DOTAB /JUMP IF 5629 006412 1322 TAD L11/(CNTRLI) /RESTORE THE CHARACTER 5630 006413 4304 JMS P7CHAR /PRINT IT (UPDATING COLUMN COUNT) 5631 006414 5606 JMP I P7CH /RETURN 5632 5633 006415 1174 DOTAB, TAD [" &177] /GET A 5634 006416 4304 JMS P7CHAR /OUTPUT IT 5635 006417 1013 TAD COLUMN /GET CURRENT COLUMN COUNT 5636 006420 0154 AND [7] /JUST TAB BITS 5637 006421 7640 SZA CLA /SKIP IF NOW AT NEW TAB STOP 5638 006422 5215 JMP DOTAB /ELSE KEEP GOING 5639 006423 5606 JMP I P7CH /RETURN 5640 5641 / FORCED-ECHO CONSOLE OUTPUT ROUTINE. SAME AS P7CH BUT CLEARS ECHOSW BEFORE 5642 / OUTPUT OF THE CHARACTER. 5643 5644 006424 0000 P7ECHO, .-. /CONSOLE OUTPUT WITH FORCED-ECHO ROUTINE 5645 006425 3361 DCA P7TEMP /SAVE PASSED VALUE 5646 006426 3014 DCA ECHOSW /CLEAR ECHO STATUS 5647 006427 1361 TAD P7TEMP /RESTORE THE CHARACTER 5648 006430 4206 JMS P7CH /CALL MAIN ROUTINE 5649 006431 5624 JMP I P7ECHO /RETURN 5650 006432 0000 CHKUP, .-. /CHECK FOR <^C>, ETC. ROUTINE 5651 006433 4266 JMS CTLCTST /CALL LOW-LEVEL INPUT CHECK ROUTINE 5652 006434 7450 SNA /SKIP IF ANYTHING CAME BACK 5653 006435 5253 JMP CHKCLR /ELSE FORGET IT 5654 006436 1376 TAD (-CNTRLP) /COMPARE TO <^P> 5655 006437 7450 SNA /SKIP IF OTHER 5656 006440 5255 JMP DOUP /GO HANDLE <^P> THERE 5657 006441 7001 IAC /TAD (-CNTRLO+CNTRLP)/COMPARE TO <^O> 5658 006442 7450 SNA /SKIP IF OTHER 5659 006443 5260 JMP DOUO /GO HANDLER <^O> THERE 5660 006444 1375 TAD (-CNTRLS+CNTRLO) /COMPARE TO <^S> 5661 006445 7640 SZA CLA /SKIP IF IT MATCHES 5662 006446 5632 JMP I CHKUP /RETURN ON UNIMPORTANT CHARACTERS 5663 006447 4266 UQWAIT, JMS CTLCTST /CALL LOW-LEVEL INPUT CHECK ROUTINE 5664 006450 1374 TAD (-CNTRLQ) /COMPARE TO <^Q> 5665 006451 7640 SZA CLA /SKIP IF IT MATCHES 5666 006452 5247 JMP UQWAIT /ELSE WAIT FOR <^Q> FOREVER 5667 006453 3015 CHKCLR, DCA INCHAR /OBLITERATE INPUT CHARACTER 5668 006454 5632 JMP I CHKUP /RETURN 5669 5670 / COMES HERE TO HANDLE <^P>. 5671 5672 006455 1373 DOUP, TAD ("P&177) /GET A "P" 5673 006456 4350 JMS UPRINT /PRINT "^P" 5674 006457 5500 JMP I UPADDRESS /GO WHERE YOU SHOULD 5675 5676 / COMES HERE TO HANDLE <^O>. 5677 5678 006460 1372 DOUO, TAD ("O&177) /GET AN "O" 5679 006461 4350 JMS UPRINT /PRINT "^O" 5680 006462 7330 NL4000 /SET REVERSING BIT 5681 006463 1014 TAD ECHOSW /REVERSE THE ECHO STATE 5682 006464 3014 DCA ECHOSW /STORE BACK 5683 006465 5253 JMP CHKCLR /OBLITERATE <^O> AND RETURN 5684 5685 006466 0000 CTLCTST,.-. /LOW-LEVEL <^C> TEST ROUTINE 5686 006467 7200 CLA /CLEAN UP 5687 006470 6031 KSFLOC, KSFIOT /FLAG UP? 5688 006471 5666 JMP I CTLCTST /NO, JUST RETURN 5689 006472 6034 KRSZAP, KRSIOT /**** 6120 **** KRBIOT 5690 006473 0167 AND [177] /JUST SEVEN-BIT 5691 006474 3015 DCA INCHAR /SAVE THE CHARACTER 5692 006475 7346 NL7775 /SET -<^C> VALUE 5693 006476 1015 TAD INCHAR /COMPARE TO CHARACTER 5694 006477 7650 SNA CLA /SKIP IF OTHER THAN <^C> 5695 006500 5477 JMP I UCADDRESS /JUMP IF <^C> 5696 006501 6032 KCCZAP, KCCIOT /**** 6120 **** 0000 5697 006502 1015 TAD INCHAR /GET THE CHARACTER 5698 006503 5666 JMP I CTLCTST /RETURN 5699 006504 0000 P7CHAR, .-. /LOWER-LEVEL CONSOLE PRINT ROUTINE 5700 006505 3361 DCA P7TEMP /SAVE PASSED VALUE 5701 006506 4232 P7AGN, JMS CHKUP /CHECK FOR <^C>, ETC. 5702 006507 1014 TAD ECHOSW /GET CURRENT ECHO STATUS 5703 006510 7710 SPA CLA /SKIP IF ECHO ON 5704 006511 5315 JMP P7OFF /JUMP IF ECHO OFF 5705 006512 1361 TAD P7TEMP /GET THE PASSED VALUE BACK 5706 006513 4335 JMS P7OUT /TRY TO OUTPUT IT 5707 006514 5306 JMP P7AGN /COULDN'T OUTPUT, GO WAIT THERE 5708 006515 4232 P7OFF, JMS CHKUP /CHECK FOR <^C>, ETC. 5709 006516 1361 TAD P7TEMP /GET THE CHARACTER BACK 5710 006517 0134 AND [140] /JUST QUADRANT BITS 5711 006520 7640 SZA CLA /SKIP IF CONTROL CHARACTER 5712 006521 2013 ISZ COLUMN /BUMP COLUMN IF PRINTING CHARACTER 5713 006522 0011 L11, CNTRLI/NOP /JUST IN CASE 5714 006523 1361 TAD P7TEMP /GET THE CHARACTER AGAIN 5715 006524 1371 TAD (-CNTRLM) /COMPARE TO 5716 006525 7450 SNA /SKIP IF NOT 5717 006526 3013 DCA COLUMN /CLEAR COLUMN COUNT ON 5718 006527 1370 TAD (-CNTRLH+CNTRLM)/COMPARE TO 5719 006530 7650 SNA CLA /SKIP IF OTHER 5720 006531 7240 NL7777 /SET BACKUP VALUE 5721 006532 1013 TAD COLUMN /UPDATE COLUMN COUNT 5722 006533 3013 DCA COLUMN /STORE BACK 5723 006534 5704 JMP I P7CHAR /RETURN 5724 5725 006535 0000 P7OUT, .-. /LOW-LEVEL CONSOLE OUTPUT ROUTINE 5726 006536 6041 P7TSF, TSFIOT /FLAG UP? 5727 006537 5735 JMP I P7OUT /NO, TAKE IMMEDIATE RETURN WITH AC INTACT 5728 006540 6046 P7TLS, TLSIOT /YES, OUTPUT IT 5729 006541 7200 CLA /CLEAN UP 5730 006542 2335 ISZ P7OUT /BUMP RETURN ADDRESS 5731 006543 5735 JMP I P7OUT /TAKE SKIP RETURN TO CALLER 5732 5733 / COMES HERE TO HANDLE <^C> IF SO ENABLED. 5734 5735 006544 1367 UPCPRT, TAD ("C&177) /GET A "C" 5736 006545 4350 JMS UPRINT /PRINT "^C" 5737 006546 6032 KCCZP2, KCCIOT /**** 6120 **** 0000 5738 006547 5571 JMP I [CLOOP] /RESTART 5739 5740 006550 0000 UPRINT, .-. /"^" PRINTING ROUTINE 5741 006551 3361 DCA P7TEMP /SAVE PASSED VALUE 5742 006552 1366 TAD ("^&177) /GET AN "^" 5743 006553 4335 JMS P7OUT /OUTPUT IT 5744 006554 5353 JMP .-1 /WAIT FOR IT 5745 006555 1361 TAD P7TEMP /GET PASSED VALUE 5746 006556 4335 JMS P7OUT /OUTPUT IT 5747 006557 5356 JMP .-1 /WAIT FOR IT 5748 006560 5750 JMP I UPRINT /RETURN 5749 5750 006561 0000 P7TEMP, .-. /OUTPUT ROUTINE TEMPORARY 5751 006566 0136 PAGE 006567 0103 006570 0005 006571 7763 006572 0117 006573 0120 006574 7757 006575 7774 006576 7760 006577 7767 5752 5753 / HANDLER I/O BUFFER DEFINITIONS. /014 CJL 5754 5755 HNDLR= . /BUFFER FOR DISK I/O HANDLER /014 CJL 5756 5757 *PAGCNT^200+HNDLR /RESET ORIGIN PAST HANDLER BUFFER /014 CJL 5758 5759 IFNZRO SBOOT-.&4000 /028 CJL 5760 5761 *SBOOT-1 /JUST BEFORE EXIT ADDRESS /025 CJL 5762 5763 EXITKER=. /WHERE TO EXIT TO /025 CJL 5764 / ONCE-ONLY INITIALIZATION CODE. /024 CJL 5765 5766 *HNDLR /OVER AVAILABLE SPACE 5767 5768 006600 7300 INITIAL,CLA CLL /CLEAN UP 5769 006601 6046 COUTINI,TLSIOT /RAISE CONSOLE OUTPUT FLAG /046 CJL 5770 006602 1200 TAD INITIA/(CLA CLL)/GET REPLACEMENT INSTRUCTION 5771 006603 3571 DCA I [CLOOP] /DON'T COME BACK TO US 5772 006604 4777 JMS I (MACHINE) /IDENTIFY CPU TYPE 5773 006605 3350 DCA CPUTEMP /SAVE IT 5774 006606 1350 TAD CPUTEMP /GET CPU TYPE 5775 006607 1376 TAD (-13) /COMPARE TO DEADLY 6120 VALUE 5776 006610 7650 SNA CLA /SKIP IF OTHER 5777 006611 5274 JMP INI6120 /JUMP IF IT MATCHES 5778 006612 6416 ROUTINI,RTLSIOT /INITIALIZE REMOTE OUTPUT /046 CJL 5779 006613 6406 RININIT,RKRBIOT /INITIALIZE REMOTE INPUT /046 CJL 5780 006614 7200 CLA /CLEAN UP 5781 006615 4576 INITPRT,JMS I [SCRIBE] /GIVE THEM THE 5782 006616 2210 INITMSG /OPENING MESSAGE 5783 006617 4576 JMS I [SCRIBE] /GIVE THEM THE 5784 006620 2145 DAYMSG /DAY MESSAGE 5785 006621 4576 JMS I [SCRIBE] /GIVE THEM THE 5786 006622 2246 MONMSG /MONTH MESSAGE 5787 006623 4576 JMS I [SCRIBE] /GIVE THEM THE 5788 006624 2274 YEARMSG /YEAR MESSAGE 5789 006625 4576 JMS I [SCRIBE] /GIVE THEM THE 5790 006626 2134 CPUTMSG /CPU ID MESSAGE 5791 006627 1350 TAD CPUTEMP /*1 5792 006630 7106 CLL RTL /*4 5793 006631 1350 TAD CPUTEMP /*5 5794 006632 1375 TAD (CPULIST) /POINT TO PROPER MESSAGE 5795 006633 3235 DCA TST6120 /STORE IN-LINE 5796 006634 4576 JMS I [SCRIBE] /TELL THEM THEIR 5797 006635 0000 TST6120,0 /ACTUAL CPU ID 5798 006636 4576 JMS I [SCRIBE] /GIVE THEM THE 5799 006637 2040 CLOSMSG /CLOSING MESSAGE 5800 006640 5243 DMPRZAP,JMP .+3 /**** DECMATE USAGE DETECTED **** 0000 5801 006641 4576 JMS I [SCRIBE] /GIVE THEM THE 5802 006642 2147 SPZAP, DMPOMSG /DECMATE PORT MESSAGE 5803 006643 4576 JMS I [SCRIBE] /GIVE THEM THE 5804 006644 4411 CRLF /END OF LINE 5805 006645 4576 JMS I [SCRIBE] /GIVE THEM THE 5806 006646 2000 LCLMSG /LOCAL PREFERENCE MESSAGE 5807 006647 4576 JMS I [SCRIBE] /TELL THEM THEY CAN 5808 006650 2255 THLPMSG /ASK FOR HELP 5809 006651 1350 TAD CPUTEMP /GET CPU TYPE 5810 006652 7106 CLL RTL /*4 5811 006653 1374 TAD (CPUPRMPT-1) /POINT TO PROPER ENTRY 5812 006654 3010 DCA XR0 /STASH THE POINTER 5813 006655 1373 TAD (-4) /GET MOVE COUNT 5814 006656 4334 JMS MESMOVE /MOVE THE PROPER PROMPT TEXT 5815 006657 4463 PROMID-1 /TO THERE 5816 006660 1350 TAD CPUTEMP /*1 5817 006661 7106 CLL RTL /*4 5818 006662 1350 TAD CPUTEMP /*5 5819 006663 1372 TAD (CPUIDLST-1) /POINT TO PROPER ENTRY 5820 006664 3010 DCA XR0 /STASH THE POINTER 5821 006665 1371 TAD (-5) /GET MOVE COUNT 5822 006666 4334 JMS MESMOVE /MOVE THE PROPER CPU ID TEXT 5823 006667 4063 CPUMSG-1 /TO THERE 5824 006670 6212 CIF USRFLD /GOTO USR FIELD /035 CJL 5825 006671 4770 JMS I (USR) /CALL USER SERVICE ROUTINE /035 CJL 5826 006672 0010 USRIN /LOCK USR IN /035 CJL 5827 5828 / DO FURTHER INITIALIZATION HERE. 5829 5830 006673 5571 JMP I [CLOOP] /GO BACK TO KERMIT PROPER 5831 5832 / COMES HERE TO INITIALIZE 6120-BASED MACHINES. /046 CJL 5833 5834 006674 3767 INI6120,DCA I (KCCZAP) /ELIMINATE KCCIOT 5835 006675 3766 DCA I (KCCZP2) /ELIMINATE KCCIOT 5836 006676 2765 ISZ I (KRSZAP) /TURN KRSIOT 5837 006677 2765 ISZ I (KRSZAP) /INTO KRBIOT 5838 006700 1212 TAD ROUTINITIALIZE /GET OUTPUT INITIALIZE INSTRUCTION /046 CJL 5839 006701 1364 TAD (-6336) /COMPARE TO POSSIBLE VALUE /046 CJL 5840 006702 7640 SZA CLA /SKIP IF IT MATCHES SERIAL PRINTER VALUE/046 CJL 5841 006703 5310 JMP TRYDM1 /JUMP IF NOT CONFIGURED FOR SERIAL PORT /046 CJL 5842 006704 1213 TAD RININITIALIZE /GET INPUT INITIALIZE INSTRUCTION /046 CJL 5843 006705 1363 TAD (-6326) /COMPARE TO POSSIBLE VALUE /046 CJL 5844 006706 7650 SNA CLA /SKIP IF NOT CONFIGURED FOR SERIAL PORT /046 CJL 5845 006707 5330 JMP DMSER /JUMP IF SERIAL PORT CONFIGURATION /046 CJL 5846 006710 6131 TRYDM1, CLSK /SKIP ON, CLEAR CLOCK FLAG IF DECMATE II/046 CJL 5847 006711 7000 NOP /JUST IN CASE /046 CJL 5848 006712 6136 CLCL /CLEAR VT278 CLOCK FLAG /046 CJL 5849 006713 7000 NOP /JUST IN CASE /046 CJL 5850 006714 2235 ISZ TST6120 /WASTE /046 CJL 5851 006715 5314 JMP .-1 /SOME TIME /046 CJL 5852 006716 6137 CLSK8A /VT278 CLOCK FLAG UP? /046 CJL 5853 006717 5323 JMP TRYDM2 /NO, TRY DECMATE II, ETC. /046 CJL 5854 006720 3240 DCA DMPRZAP /MAKE IT PRINT OUR MESSAGE /050 CJL 5855 006721 6213 CIF CDF DMIFLD /GOTO DECMATE ONCE-ONLY CODE FIELD /046 CJL 5856 006722 5762 JMP I (DM1INIT) /CONTINUE THERE /046 CJL 5857 5858 006723 6131 TRYDM2, CLSK /CLOCK FLAG UP? /046 CJL 5859 006724 5212 JMP ROUTINITIALIZE /NO, MUST BE SOMEBODY ELSE! /046 CJL 5860 006725 3240 DCA DMPRZAP /MAKE IT PRINT OUR MESSAGE /048 CJL 5861 006726 6213 CIF CDF DMIFLD /GOTO DECMATE ONCE-ONLY FIELD /046 CJL 5862 006727 5761 JMP I (DM2INIT) /CONTINUE THERE /046 CJL 5863 5864 / COMES HERE IF SERIAL PORT CONFIGURATION ON DECMATE. 5865 5866 006730 3240 DMSER, DCA DMPRZAP /MAKE IT PRINT OUR MESSAGE /048 CJL 5867 006731 1360 TAD (DMPPMSG) /GET OUR MESSAGE ADDRESS /048 CJL 5868 006732 3242 DCA SPZAP /STORE IN-LINE /048 CJL 5869 006733 5212 JMP ROUTINITIALIZE /CONTINUE THERE 5870 006734 0000 MESMOVE,.-. /MESSAGE MOVE ROUTINE 5871 006735 3351 DCA MMOVCNT /SAVE PASSED COUNT 5872 006736 1734 TAD I MESMOVE /GET THE PASSED ARGUMENT 5873 006737 3011 DCA XR1 /SET IT UP 5874 006740 2334 ISZ MESMOVE /BUMP PAST ARGUMENT 5875 006741 6211 CDF MSGFLD /GOTO BUFFER FIELD 5876 006742 1410 MESMVLP,TAD I XR0 /GET A WORD 5877 006743 3411 DCA I XR1 /PUT A WORD 5878 006744 2351 ISZ MMOVCNT /DONE YET? 5879 006745 5342 JMP MESMVLP /NO, GO BACK 5880 006746 6201 CDF PRGFLD /BACK TO OUR FIELD 5881 006747 5734 JMP I MESMOVE /YES, RETURN 5882 5883 006750 0000 CPUTEMP,.-. /TEMPORARY FOR MACHINE TYPE 5884 006751 0000 MMOVCNT,.-. /TEMPORARY FOR MOVE COUNT 5885 5886 006760 2171 PAGE 006761 0213 006762 0200 006763 1452 006764 1442 006765 6472 006766 6546 006767 6501 006770 7700 006771 7773 006772 2356 006773 7774 006774 2276 006775 2042 006776 7765 006777 7000 5887 / CPU IDENTIFYING ROUTINE. /024 CJL 5888 5889 / RETURNS VALUE IN AC ACCORDING TO THE FOLLOWING RULE: 5890 5891 / AC CPU TYPE 5892 5893 / 0 UNKNOWN (DCC112, MP-12?) 5894 / 1 PDP-5 (THE INCOMPATIBLE ONE!) 5895 / 2 PDP-8 (THE REAL ONE!) 5896 / 3 PDP-8/S (THE SLOW ONE!) 5897 / 4 LINC-8 (THE STRANGE ONE!) 5898 / 5 PDP-8/I (THE ORANGE ONE!) 5899 / 6 PDP-8/L (THE STRIPPED-DOWN ONE!) 5900 / 7 PDP-12 (THE GREEN ONE! (BLUE?)) 5901 / 10 PDP-8/E (THE FAST ONE!) 5902 / 11 PDP-8/A (THE WIDE ONE!) 5903 / 12 6100 (THE MICRO ONE!) 5904 / 13 6120 (THE HARRIS ONE!) 5905 5906 007000 0000 MACHINE,.-. /MACHINE IDENTIFYING ROUTINE 5907 007001 7300 CLA CLL /THIS WORKS ON EVERYBODY! 5908 007002 1000 TAD 0 /GET PDP-5 PC 5909 007003 3302 DCA MACHTEMP /SAVE IT 5910 007004 1377 TAD (IMA5-1) /GET PDP-5 NEW PC 5911 007005 3000 DCA 0 /STORE IT 5912 5913 / IF WE GET HERE, WE'RE NOT A PDP-5. 5914 5915 007006 1302 TAD MACHTEMP /GET OLD LOCATION ZERO 5916 007007 3000 DCA 0 /RESTORE IT 5917 007010 7354 NL3776 /PDP-8/I, L WEIRDNESS 5918 007011 1376 TAD (-3776) /COMPARE TO POSSIBLE VALUE 5919 007012 7650 SNA CLA /SKIP IF NOT THOSE TWO 5920 007013 5234 JMP IMA8IL /JUMP IF ONE OF THEM 5921 5922 / IF WE GET HERE, WE'RE NOT A PDP-8/I OR PDP-8/L. 5923 5924 007014 7344 NL7776 /SETUP -2 5925 007015 1375 TAD (-7776) /COMPARE TO EXPECTED VALUE 5926 007016 7640 SZA CLA /SKIP IF OK 5927 007017 5276 JMP IMA8S /JUMP IF RETARDED BROTHER 5928 5929 / IF WE GET HERE, WE'RE NOT A PDP-8/S. 5930 5931 007020 7203 NL0100 /SETUP 0100 5932 007021 1374 TAD (-100) /COMPARE TO EXPECTED VALUE 5933 007022 7650 SNA CLA /SKIP IF STRAIGHT PDP-8 5934 007023 5247 JMP IMAOMNIBUS /JUMP IF NEWER CPU 5935 / IF WE GET HERE, WE ARE A PDP-8, BUT ARE WE A LINC-8? 5936 5937 007024 7240 NL7777 /SETUP LINC TEST VALUE 5938 007025 6167 IACA /LOAD LINC "A" REGISTER 5939 007026 7200 CLA /CLEAN UP 5940 007027 6171 IAAC /GET IT BACK 5941 007030 7001 IAC /ADD ONE 5942 007031 7650 SNA CLA /SKIP IF NO LINC HARDWARE 5943 007032 5275 JMP IMAL8 /JUMP IF LINC-8 5944 5945 / SINCE WE DON'T CARE ABOUT PERIPHERALS, WE ARE A PDP-8. 5946 5947 007033 5277 JMP IMA8 /GO TELL THEM WE ARE A PDP-8 5948 5949 / COMES HERE IF PDP-8/I OR PDP-8/L. 5950 5951 007034 7240 IMA8IL, NL7777 /SETUP TEST VALUE 5952 007035 7601 CLA!401 /DO PDP-8/I GROUP THREE EAE CLA 5953 007036 7640 SZA CLA /SKIP IF PDP-8/I 5954 007037 5273 JMP IMA8L /JUMP IF NOT 5955 5956 / IF WE GET HERE, WE ARE A PDP-8/I, BUT ARE WE A PDP-12? 5957 5958 007040 6141 LINC /GOTO LINC MODE 5959 007041 0017 COM /COMPLEMENT AC IF PDP-12, ELSE A HARMLESS AND 5960 007042 0002 PDP /GOTO PDP8 MODE IF PDP-12, ELSE HARMLESS AND 5961 007043 7001 IAC /ADD ONE FOR TEST 5962 007044 7650 SNA CLA /SKIP IF JUST PDP-8/I 5963 007045 5272 JMP IMA12 /JUMP IF ACTUALLY A LINC-8/I 5964 5965 / SINCE WE DON'T CARE ABOUT PERIPHERALS, WE ARE JUST A PDP-8/I. 5966 5967 007046 5274 JMP IMA8I /TELL THEM WE ARE A PDP-8/I 5968 5969 007047 7016 IMAOMNI,RTL RTR /DO STRANGE OMNIBUS INSTRUCTION 5970 007050 7450 PC8A, SNA /SKIP IF NOT A MICRO CHIP 5971 007051 5261 JMP IMA61 /JUMP IF ONE OF THOSE THINGS 5972 007052 1373 TAD (.&7600+16^7777) /CHECK FOR PDP-8/E VALUE 5973 007053 7450 SNA /SKIP IF NOT HIM 5974 007054 5271 JMP IMA8E /JUMP IF IT IS A PDP-8/E (/F OR /M OR 8A-6XX) 5975 007055 1372 TAD (.&7600+16-PC8A) /COMPARE TO PDP-8/A VALUE /051 CJL 5976 007056 7650 SNA CLA /SKIP IF SOMEBODY ELSE 5977 007057 5270 JMP IMA8A /JUMP IF IT MATCHES 5978 5979 / IF WE GET HERE, SOME STRANGE PROCESSOR IS RUNNING US. 5980 5981 007060 5301 JMP IMAUNKNOWN /YOU FIGURE IT OUT! 5982 / IF WE GET HERE, WE ARE A 6100 OR 6120. 5983 5984 007061 7215 IMA61, NL0010 /DO 6120 SPECIAL INSTRUCTION 5985 007062 1371 TAD (-10) /COMPARE TO EXPECTED VALUE 5986 007063 7650 SNA CLA /SKIP IF OTHER 5987 007064 5266 JMP IMA6120 /JUMP IF IT MATCHES 5988 5989 / WE APPARENTLY ARE ON A 6100, SO TELL THEM SO. 5990 5991 007065 5267 JMP IMA6100 /TELL THEM WE ARE A 6100 MACHINE (VT-78, ETC.) 5992 5993 / RETURN GAUNTLET. 5994 5995 007066 7001 IMA6120,IAC /SET 6120 VALUE 5996 007067 7001 IMA6100,IAC /SET 6100 VALUE 5997 007070 7001 IMA8A, IAC /SET PDP-8/A VALUE 5998 007071 7001 IMA8E, IAC /SET PDP-8/E VALUE 5999 007072 7001 IMA12, IAC /SET PDP-12 VALUE 6000 007073 7001 IMA8L, IAC /SET PDP-8/L VALUE 6001 007074 7001 IMA8I, IAC /SET PDP-8/I VALUE 6002 007075 7001 IMAL8, IAC /SET LINC-8 VALUE 6003 007076 7001 IMA8S, IAC /SET PDP-8/S VALUE 6004 007077 7001 IMA8, IAC /SET PDP-8 VALUE 6005 007100 7001 IMA5, IAC /SET PDP-5 VALUE 6006 007101 5600 IMAUNKN,JMP I MACHINE /RETURN 6007 6008 007102 0000 MACHTEM,.-. /TEMPORARY FOR LOCATION ZERO 6009 6010 007171 7770 PAGE 007172 7746 007173 0762 007174 7700 007175 0002 007176 4002 007177 7077 6011 000127 3600 FIELD PRGFLD%10 /DUMP THE LITERALS NOW 000130 3200 000131 7755 000132 3000 000133 0015 000134 0140 000135 1723 000136 0032 000137 7400 000140 0012 000141 4000 000142 4471 000143 3671 000144 2275 000145 4442 000146 1510 000147 1600 000150 1400 000151 4673 000152 0227 000153 6063 000154 0007 000155 6424 000156 0430 000157 1213 000160 1231 000161 0100 000162 0400 000163 0377 000164 0002 000165 7746 000166 7763 000167 0177 000170 3340 000171 0200 000172 7740 000173 0522 000174 0040 000175 0077 000176 4600 000177 0420 6012 / LAYOUT OF FIELD ONE (PERMANENT CONTENTS). /046 CJL 6013 6014 NOPUNCH /FOOL THE ASSEMBLER /046 CJL 6015 6016 FIELD USRFLD%10 /USR FIELD /046 CJL 6017 6018 *0 /WHERE IT LOADS /046 CJL 6019 6020 010000 0000 USRLOAD,ZBLOCK 200-. /GET TO ENTRY POINT /046 CJL 010001 0000 010002 0000 010003 0000 010004 0000 010005 0000 010006 0000 010007 0000 010010 0000 010011 0000 010012 0000 010013 0000 010014 0000 010015 0000 010016 0000 010017 0000 010020 0000 010021 0000 010022 0000 010023 0000 010024 0000 010025 0000 010026 0000 010027 0000 010030 0000 010031 0000 010032 0000 010033 0000 010034 0000 010035 0000 010036 0000 010037 0000 010040 0000 010041 0000 010042 0000 010043 0000 010044 0000 010045 0000 010046 0000 010047 0000 010050 0000 010051 0000 010052 0000 010053 0000 010054 0000 010055 0000 010056 0000 010057 0000 010060 0000 010061 0000 010062 0000 010063 0000 010064 0000 010065 0000 010066 0000 010067 0000 010070 0000 010071 0000 010072 0000 010073 0000 010074 0000 010075 0000 010076 0000 010077 0000 010100 0000 010101 0000 010102 0000 010103 0000 010104 0000 010105 0000 010106 0000 010107 0000 010110 0000 010111 0000 010112 0000 010113 0000 010114 0000 010115 0000 010116 0000 010117 0000 010120 0000 010121 0000 010122 0000 010123 0000 010124 0000 010125 0000 010126 0000 010127 0000 010130 0000 010131 0000 010132 0000 010133 0000 010134 0000 010135 0000 010136 0000 010137 0000 010140 0000 010141 0000 010142 0000 010143 0000 010144 0000 010145 0000 010146 0000 010147 0000 010150 0000 010151 0000 010152 0000 010153 0000 010154 0000 010155 0000 010156 0000 010157 0000 010160 0000 010161 0000 010162 0000 010163 0000 010164 0000 010165 0000 010166 0000 010167 0000 010170 0000 010171 0000 010172 0000 010173 0000 010174 0000 010175 0000 010176 0000 010177 0000 6021 6022 USRENTR=. /LOCKED-IN USR ENTRY POINT /046 CJL 6023 6024 010200 0000 USRENTR,ZBLOCK 2000-. /USR OWNS REST OF THIS AREA /046 CJL 010201 0000 010202 0000 010203 0000 010204 0000 010205 0000 010206 0000 010207 0000 010210 0000 010211 0000 010212 0000 010213 0000 010214 0000 010215 0000 010216 0000 010217 0000 010220 0000 010221 0000 010222 0000 010223 0000 010224 0000 010225 0000 010226 0000 010227 0000 010230 0000 010231 0000 010232 0000 010233 0000 010234 0000 010235 0000 010236 0000 010237 0000 010240 0000 010241 0000 010242 0000 010243 0000 010244 0000 010245 0000 010246 0000 010247 0000 010250 0000 010251 0000 010252 0000 010253 0000 010254 0000 010255 0000 010256 0000 010257 0000 010260 0000 010261 0000 010262 0000 010263 0000 010264 0000 010265 0000 010266 0000 010267 0000 010270 0000 010271 0000 010272 0000 010273 0000 010274 0000 010275 0000 010276 0000 010277 0000 010300 0000 010301 0000 010302 0000 010303 0000 010304 0000 010305 0000 010306 0000 010307 0000 010310 0000 010311 0000 010312 0000 010313 0000 010314 0000 010315 0000 010316 0000 010317 0000 010320 0000 010321 0000 010322 0000 010323 0000 010324 0000 010325 0000 010326 0000 010327 0000 010330 0000 010331 0000 010332 0000 010333 0000 010334 0000 010335 0000 010336 0000 010337 0000 010340 0000 010341 0000 010342 0000 010343 0000 010344 0000 010345 0000 010346 0000 010347 0000 010350 0000 010351 0000 010352 0000 010353 0000 010354 0000 010355 0000 010356 0000 010357 0000 010360 0000 010361 0000 010362 0000 010363 0000 010364 0000 010365 0000 010366 0000 010367 0000 010370 0000 010371 0000 010372 0000 010373 0000 010374 0000 010375 0000 010376 0000 010377 0000 010400 0000 010401 0000 010402 0000 010403 0000 010404 0000 010405 0000 010406 0000 010407 0000 010410 0000 010411 0000 010412 0000 010413 0000 010414 0000 010415 0000 010416 0000 010417 0000 010420 0000 010421 0000 010422 0000 010423 0000 010424 0000 010425 0000 010426 0000 010427 0000 010430 0000 010431 0000 010432 0000 010433 0000 010434 0000 010435 0000 010436 0000 010437 0000 010440 0000 010441 0000 010442 0000 010443 0000 010444 0000 010445 0000 010446 0000 010447 0000 010450 0000 010451 0000 010452 0000 010453 0000 010454 0000 010455 0000 010456 0000 010457 0000 010460 0000 010461 0000 010462 0000 010463 0000 010464 0000 010465 0000 010466 0000 010467 0000 010470 0000 010471 0000 010472 0000 010473 0000 010474 0000 010475 0000 010476 0000 010477 0000 010500 0000 010501 0000 010502 0000 010503 0000 010504 0000 010505 0000 010506 0000 010507 0000 010510 0000 010511 0000 010512 0000 010513 0000 010514 0000 010515 0000 010516 0000 010517 0000 010520 0000 010521 0000 010522 0000 010523 0000 010524 0000 010525 0000 010526 0000 010527 0000 010530 0000 010531 0000 010532 0000 010533 0000 010534 0000 010535 0000 010536 0000 010537 0000 010540 0000 010541 0000 010542 0000 010543 0000 010544 0000 010545 0000 010546 0000 010547 0000 010550 0000 010551 0000 010552 0000 010553 0000 010554 0000 010555 0000 010556 0000 010557 0000 010560 0000 010561 0000 010562 0000 010563 0000 010564 0000 010565 0000 010566 0000 010567 0000 010570 0000 010571 0000 010572 0000 010573 0000 010574 0000 010575 0000 010576 0000 010577 0000 010600 0000 010601 0000 010602 0000 010603 0000 010604 0000 010605 0000 010606 0000 010607 0000 010610 0000 010611 0000 010612 0000 010613 0000 010614 0000 010615 0000 010616 0000 010617 0000 010620 0000 010621 0000 010622 0000 010623 0000 010624 0000 010625 0000 010626 0000 010627 0000 010630 0000 010631 0000 010632 0000 010633 0000 010634 0000 010635 0000 010636 0000 010637 0000 010640 0000 010641 0000 010642 0000 010643 0000 010644 0000 010645 0000 010646 0000 010647 0000 010650 0000 010651 0000 010652 0000 010653 0000 010654 0000 010655 0000 010656 0000 010657 0000 010660 0000 010661 0000 010662 0000 010663 0000 010664 0000 010665 0000 010666 0000 010667 0000 010670 0000 010671 0000 010672 0000 010673 0000 010674 0000 010675 0000 010676 0000 010677 0000 010700 0000 010701 0000 010702 0000 010703 0000 010704 0000 010705 0000 010706 0000 010707 0000 010710 0000 010711 0000 010712 0000 010713 0000 010714 0000 010715 0000 010716 0000 010717 0000 010720 0000 010721 0000 010722 0000 010723 0000 010724 0000 010725 0000 010726 0000 010727 0000 010730 0000 010731 0000 010732 0000 010733 0000 010734 0000 010735 0000 010736 0000 010737 0000 010740 0000 010741 0000 010742 0000 010743 0000 010744 0000 010745 0000 010746 0000 010747 0000 010750 0000 010751 0000 010752 0000 010753 0000 010754 0000 010755 0000 010756 0000 010757 0000 010760 0000 010761 0000 010762 0000 010763 0000 010764 0000 010765 0000 010766 0000 010767 0000 010770 0000 010771 0000 010772 0000 010773 0000 010774 0000 010775 0000 010776 0000 010777 0000 011000 0000 011001 0000 011002 0000 011003 0000 011004 0000 011005 0000 011006 0000 011007 0000 011010 0000 011011 0000 011012 0000 011013 0000 011014 0000 011015 0000 011016 0000 011017 0000 011020 0000 011021 0000 011022 0000 011023 0000 011024 0000 011025 0000 011026 0000 011027 0000 011030 0000 011031 0000 011032 0000 011033 0000 011034 0000 011035 0000 011036 0000 011037 0000 011040 0000 011041 0000 011042 0000 011043 0000 011044 0000 011045 0000 011046 0000 011047 0000 011050 0000 011051 0000 011052 0000 011053 0000 011054 0000 011055 0000 011056 0000 011057 0000 011060 0000 011061 0000 011062 0000 011063 0000 011064 0000 011065 0000 011066 0000 011067 0000 011070 0000 011071 0000 011072 0000 011073 0000 011074 0000 011075 0000 011076 0000 011077 0000 011100 0000 011101 0000 011102 0000 011103 0000 011104 0000 011105 0000 011106 0000 011107 0000 011110 0000 011111 0000 011112 0000 011113 0000 011114 0000 011115 0000 011116 0000 011117 0000 011120 0000 011121 0000 011122 0000 011123 0000 011124 0000 011125 0000 011126 0000 011127 0000 011130 0000 011131 0000 011132 0000 011133 0000 011134 0000 011135 0000 011136 0000 011137 0000 011140 0000 011141 0000 011142 0000 011143 0000 011144 0000 011145 0000 011146 0000 011147 0000 011150 0000 011151 0000 011152 0000 011153 0000 011154 0000 011155 0000 011156 0000 011157 0000 011160 0000 011161 0000 011162 0000 011163 0000 011164 0000 011165 0000 011166 0000 011167 0000 011170 0000 011171 0000 011172 0000 011173 0000 011174 0000 011175 0000 011176 0000 011177 0000 011200 0000 011201 0000 011202 0000 011203 0000 011204 0000 011205 0000 011206 0000 011207 0000 011210 0000 011211 0000 011212 0000 011213 0000 011214 0000 011215 0000 011216 0000 011217 0000 011220 0000 011221 0000 011222 0000 011223 0000 011224 0000 011225 0000 011226 0000 011227 0000 011230 0000 011231 0000 011232 0000 011233 0000 011234 0000 011235 0000 011236 0000 011237 0000 011240 0000 011241 0000 011242 0000 011243 0000 011244 0000 011245 0000 011246 0000 011247 0000 011250 0000 011251 0000 011252 0000 011253 0000 011254 0000 011255 0000 011256 0000 011257 0000 011260 0000 011261 0000 011262 0000 011263 0000 011264 0000 011265 0000 011266 0000 011267 0000 011270 0000 011271 0000 011272 0000 011273 0000 011274 0000 011275 0000 011276 0000 011277 0000 011300 0000 011301 0000 011302 0000 011303 0000 011304 0000 011305 0000 011306 0000 011307 0000 011310 0000 011311 0000 011312 0000 011313 0000 011314 0000 011315 0000 011316 0000 011317 0000 011320 0000 011321 0000 011322 0000 011323 0000 011324 0000 011325 0000 011326 0000 011327 0000 011330 0000 011331 0000 011332 0000 011333 0000 011334 0000 011335 0000 011336 0000 011337 0000 011340 0000 011341 0000 011342 0000 011343 0000 011344 0000 011345 0000 011346 0000 011347 0000 011350 0000 011351 0000 011352 0000 011353 0000 011354 0000 011355 0000 011356 0000 011357 0000 011360 0000 011361 0000 011362 0000 011363 0000 011364 0000 011365 0000 011366 0000 011367 0000 011370 0000 011371 0000 011372 0000 011373 0000 011374 0000 011375 0000 011376 0000 011377 0000 011400 0000 011401 0000 011402 0000 011403 0000 011404 0000 011405 0000 011406 0000 011407 0000 011410 0000 011411 0000 011412 0000 011413 0000 011414 0000 011415 0000 011416 0000 011417 0000 011420 0000 011421 0000 011422 0000 011423 0000 011424 0000 011425 0000 011426 0000 011427 0000 011430 0000 011431 0000 011432 0000 011433 0000 011434 0000 011435 0000 011436 0000 011437 0000 011440 0000 011441 0000 011442 0000 011443 0000 011444 0000 011445 0000 011446 0000 011447 0000 011450 0000 011451 0000 011452 0000 011453 0000 011454 0000 011455 0000 011456 0000 011457 0000 011460 0000 011461 0000 011462 0000 011463 0000 011464 0000 011465 0000 011466 0000 011467 0000 011470 0000 011471 0000 011472 0000 011473 0000 011474 0000 011475 0000 011476 0000 011477 0000 011500 0000 011501 0000 011502 0000 011503 0000 011504 0000 011505 0000 011506 0000 011507 0000 011510 0000 011511 0000 011512 0000 011513 0000 011514 0000 011515 0000 011516 0000 011517 0000 011520 0000 011521 0000 011522 0000 011523 0000 011524 0000 011525 0000 011526 0000 011527 0000 011530 0000 011531 0000 011532 0000 011533 0000 011534 0000 011535 0000 011536 0000 011537 0000 011540 0000 011541 0000 011542 0000 011543 0000 011544 0000 011545 0000 011546 0000 011547 0000 011550 0000 011551 0000 011552 0000 011553 0000 011554 0000 011555 0000 011556 0000 011557 0000 011560 0000 011561 0000 011562 0000 011563 0000 011564 0000 011565 0000 011566 0000 011567 0000 011570 0000 011571 0000 011572 0000 011573 0000 011574 0000 011575 0000 011576 0000 011577 0000 011600 0000 011601 0000 011602 0000 011603 0000 011604 0000 011605 0000 011606 0000 011607 0000 011610 0000 011611 0000 011612 0000 011613 0000 011614 0000 011615 0000 011616 0000 011617 0000 011620 0000 011621 0000 011622 0000 011623 0000 011624 0000 011625 0000 011626 0000 011627 0000 011630 0000 011631 0000 011632 0000 011633 0000 011634 0000 011635 0000 011636 0000 011637 0000 011640 0000 011641 0000 011642 0000 011643 0000 011644 0000 011645 0000 011646 0000 011647 0000 011650 0000 011651 0000 011652 0000 011653 0000 011654 0000 011655 0000 011656 0000 011657 0000 011660 0000 011661 0000 011662 0000 011663 0000 011664 0000 011665 0000 011666 0000 011667 0000 011670 0000 011671 0000 011672 0000 011673 0000 011674 0000 011675 0000 011676 0000 011677 0000 011700 0000 011701 0000 011702 0000 011703 0000 011704 0000 011705 0000 011706 0000 011707 0000 011710 0000 011711 0000 011712 0000 011713 0000 011714 0000 011715 0000 011716 0000 011717 0000 011720 0000 011721 0000 011722 0000 011723 0000 011724 0000 011725 0000 011726 0000 011727 0000 011730 0000 011731 0000 011732 0000 011733 0000 011734 0000 011735 0000 011736 0000 011737 0000 011740 0000 011741 0000 011742 0000 011743 0000 011744 0000 011745 0000 011746 0000 011747 0000 011750 0000 011751 0000 011752 0000 011753 0000 011754 0000 011755 0000 011756 0000 011757 0000 011760 0000 011761 0000 011762 0000 011763 0000 011764 0000 011765 0000 011766 0000 011767 0000 011770 0000 011771 0000 011772 0000 011773 0000 011774 0000 011775 0000 011776 0000 011777 0000 6025 6026 FILBUFF=. /FILE I/O DONE HERE /046 CJL 6027 6028 FIELD BUFFLD%10 /FILE I/O BUFFER FIELD /046 CJL 6029 6030 *FILBUFFER /RESET ORIGIN /046 CJL 6031 6032 012000 0000 FILBUFF,ZBLOCK PAGCNT^200 /THIS IS THE FILE I/O BUFFER /046 CJL 012001 0000 012002 0000 012003 0000 012004 0000 012005 0000 012006 0000 012007 0000 012010 0000 012011 0000 012012 0000 012013 0000 012014 0000 012015 0000 012016 0000 012017 0000 012020 0000 012021 0000 012022 0000 012023 0000 012024 0000 012025 0000 012026 0000 012027 0000 012030 0000 012031 0000 012032 0000 012033 0000 012034 0000 012035 0000 012036 0000 012037 0000 012040 0000 012041 0000 012042 0000 012043 0000 012044 0000 012045 0000 012046 0000 012047 0000 012050 0000 012051 0000 012052 0000 012053 0000 012054 0000 012055 0000 012056 0000 012057 0000 012060 0000 012061 0000 012062 0000 012063 0000 012064 0000 012065 0000 012066 0000 012067 0000 012070 0000 012071 0000 012072 0000 012073 0000 012074 0000 012075 0000 012076 0000 012077 0000 012100 0000 012101 0000 012102 0000 012103 0000 012104 0000 012105 0000 012106 0000 012107 0000 012110 0000 012111 0000 012112 0000 012113 0000 012114 0000 012115 0000 012116 0000 012117 0000 012120 0000 012121 0000 012122 0000 012123 0000 012124 0000 012125 0000 012126 0000 012127 0000 012130 0000 012131 0000 012132 0000 012133 0000 012134 0000 012135 0000 012136 0000 012137 0000 012140 0000 012141 0000 012142 0000 012143 0000 012144 0000 012145 0000 012146 0000 012147 0000 012150 0000 012151 0000 012152 0000 012153 0000 012154 0000 012155 0000 012156 0000 012157 0000 012160 0000 012161 0000 012162 0000 012163 0000 012164 0000 012165 0000 012166 0000 012167 0000 012170 0000 012171 0000 012172 0000 012173 0000 012174 0000 012175 0000 012176 0000 012177 0000 012200 0000 012201 0000 012202 0000 012203 0000 012204 0000 012205 0000 012206 0000 012207 0000 012210 0000 012211 0000 012212 0000 012213 0000 012214 0000 012215 0000 012216 0000 012217 0000 012220 0000 012221 0000 012222 0000 012223 0000 012224 0000 012225 0000 012226 0000 012227 0000 012230 0000 012231 0000 012232 0000 012233 0000 012234 0000 012235 0000 012236 0000 012237 0000 012240 0000 012241 0000 012242 0000 012243 0000 012244 0000 012245 0000 012246 0000 012247 0000 012250 0000 012251 0000 012252 0000 012253 0000 012254 0000 012255 0000 012256 0000 012257 0000 012260 0000 012261 0000 012262 0000 012263 0000 012264 0000 012265 0000 012266 0000 012267 0000 012270 0000 012271 0000 012272 0000 012273 0000 012274 0000 012275 0000 012276 0000 012277 0000 012300 0000 012301 0000 012302 0000 012303 0000 012304 0000 012305 0000 012306 0000 012307 0000 012310 0000 012311 0000 012312 0000 012313 0000 012314 0000 012315 0000 012316 0000 012317 0000 012320 0000 012321 0000 012322 0000 012323 0000 012324 0000 012325 0000 012326 0000 012327 0000 012330 0000 012331 0000 012332 0000 012333 0000 012334 0000 012335 0000 012336 0000 012337 0000 012340 0000 012341 0000 012342 0000 012343 0000 012344 0000 012345 0000 012346 0000 012347 0000 012350 0000 012351 0000 012352 0000 012353 0000 012354 0000 012355 0000 012356 0000 012357 0000 012360 0000 012361 0000 012362 0000 012363 0000 012364 0000 012365 0000 012366 0000 012367 0000 012370 0000 012371 0000 012372 0000 012373 0000 012374 0000 012375 0000 012376 0000 012377 0000 6033 6034 DIRBUFF=. /DIRECTORY LOOKUP I/O DONE HERE /028 CJL 6035 6036 FIELD DIRFLD%10 /DIRECTORY LOOKUP BUFFER FIELD /028 CJL 6037 6038 *DIRBUFFER /RESET ORIGIN /028 CJL 6039 6040 012400 0000 FILECNT,.-. /-(NUMBER OF ENTRIES IN THIS SEGMENT) 6041 012401 0000 FRSTREC,.-. /FIRST RECORD OF FIRST ENTRY IN THIS SEGMENT 6042 012402 0000 DIRLINK,.-. /LINK TO NEXT SEGMENT; 0 IF LAST ACTIVE ONE 6043 012403 0000 .-. /TENTATIVE ENTRY POINTER STORED HERE 6044 012404 0000 AIWNUMB,.-. /-(NUMBER OF ADDITIONAL INFORMATION WORDS) 6045 6046 ENTSTRT=. /FILE ENTRIES START HERE /046 CJL 6047 6048 012405 0000 ZBLOCK PAGCNT^200+DIRBUFFER-. /DIRECTORY ENTRIES HERE /046 CJL 012406 0000 012407 0000 012410 0000 012411 0000 012412 0000 012413 0000 012414 0000 012415 0000 012416 0000 012417 0000 012420 0000 012421 0000 012422 0000 012423 0000 012424 0000 012425 0000 012426 0000 012427 0000 012430 0000 012431 0000 012432 0000 012433 0000 012434 0000 012435 0000 012436 0000 012437 0000 012440 0000 012441 0000 012442 0000 012443 0000 012444 0000 012445 0000 012446 0000 012447 0000 012450 0000 012451 0000 012452 0000 012453 0000 012454 0000 012455 0000 012456 0000 012457 0000 012460 0000 012461 0000 012462 0000 012463 0000 012464 0000 012465 0000 012466 0000 012467 0000 012470 0000 012471 0000 012472 0000 012473 0000 012474 0000 012475 0000 012476 0000 012477 0000 012500 0000 012501 0000 012502 0000 012503 0000 012504 0000 012505 0000 012506 0000 012507 0000 012510 0000 012511 0000 012512 0000 012513 0000 012514 0000 012515 0000 012516 0000 012517 0000 012520 0000 012521 0000 012522 0000 012523 0000 012524 0000 012525 0000 012526 0000 012527 0000 012530 0000 012531 0000 012532 0000 012533 0000 012534 0000 012535 0000 012536 0000 012537 0000 012540 0000 012541 0000 012542 0000 012543 0000 012544 0000 012545 0000 012546 0000 012547 0000 012550 0000 012551 0000 012552 0000 012553 0000 012554 0000 012555 0000 012556 0000 012557 0000 012560 0000 012561 0000 012562 0000 012563 0000 012564 0000 012565 0000 012566 0000 012567 0000 012570 0000 012571 0000 012572 0000 012573 0000 012574 0000 012575 0000 012576 0000 012577 0000 012600 0000 012601 0000 012602 0000 012603 0000 012604 0000 012605 0000 012606 0000 012607 0000 012610 0000 012611 0000 012612 0000 012613 0000 012614 0000 012615 0000 012616 0000 012617 0000 012620 0000 012621 0000 012622 0000 012623 0000 012624 0000 012625 0000 012626 0000 012627 0000 012630 0000 012631 0000 012632 0000 012633 0000 012634 0000 012635 0000 012636 0000 012637 0000 012640 0000 012641 0000 012642 0000 012643 0000 012644 0000 012645 0000 012646 0000 012647 0000 012650 0000 012651 0000 012652 0000 012653 0000 012654 0000 012655 0000 012656 0000 012657 0000 012660 0000 012661 0000 012662 0000 012663 0000 012664 0000 012665 0000 012666 0000 012667 0000 012670 0000 012671 0000 012672 0000 012673 0000 012674 0000 012675 0000 012676 0000 012677 0000 012700 0000 012701 0000 012702 0000 012703 0000 012704 0000 012705 0000 012706 0000 012707 0000 012710 0000 012711 0000 012712 0000 012713 0000 012714 0000 012715 0000 012716 0000 012717 0000 012720 0000 012721 0000 012722 0000 012723 0000 012724 0000 012725 0000 012726 0000 012727 0000 012730 0000 012731 0000 012732 0000 012733 0000 012734 0000 012735 0000 012736 0000 012737 0000 012740 0000 012741 0000 012742 0000 012743 0000 012744 0000 012745 0000 012746 0000 012747 0000 012750 0000 012751 0000 012752 0000 012753 0000 012754 0000 012755 0000 012756 0000 012757 0000 012760 0000 012761 0000 012762 0000 012763 0000 012764 0000 012765 0000 012766 0000 012767 0000 012770 0000 012771 0000 012772 0000 012773 0000 012774 0000 012775 0000 012776 0000 012777 0000 6049 6050 / CONNECT MODE I/O BUFFERS. /026 CJL 6051 6052 013000 0000 KEYBUFF,ZBLOCK BUFSIZE /KEYBOARD BUFFER /026 CJL 013001 0000 013002 0000 013003 0000 013004 0000 013005 0000 013006 0000 013007 0000 013010 0000 013011 0000 013012 0000 013013 0000 013014 0000 013015 0000 013016 0000 013017 0000 013020 0000 013021 0000 013022 0000 013023 0000 013024 0000 013025 0000 013026 0000 013027 0000 013030 0000 013031 0000 013032 0000 013033 0000 013034 0000 013035 0000 013036 0000 013037 0000 013040 0000 013041 0000 013042 0000 013043 0000 013044 0000 013045 0000 013046 0000 013047 0000 013050 0000 013051 0000 013052 0000 013053 0000 013054 0000 013055 0000 013056 0000 013057 0000 013060 0000 013061 0000 013062 0000 013063 0000 013064 0000 013065 0000 013066 0000 013067 0000 013070 0000 013071 0000 013072 0000 013073 0000 013074 0000 013075 0000 013076 0000 013077 0000 013100 0000 013101 0000 013102 0000 013103 0000 013104 0000 013105 0000 013106 0000 013107 0000 013110 0000 013111 0000 013112 0000 013113 0000 013114 0000 013115 0000 013116 0000 013117 0000 013120 0000 013121 0000 013122 0000 013123 0000 013124 0000 013125 0000 013126 0000 013127 0000 013130 0000 013131 0000 013132 0000 013133 0000 013134 0000 013135 0000 013136 0000 013137 0000 013140 0000 013141 0000 013142 0000 013143 0000 013144 0000 013145 0000 013146 0000 013147 0000 013150 0000 013151 0000 013152 0000 013153 0000 013154 0000 013155 0000 013156 0000 013157 0000 013160 0000 013161 0000 013162 0000 013163 0000 013164 0000 013165 0000 013166 0000 013167 0000 013170 0000 013171 0000 013172 0000 013173 0000 013174 0000 013175 0000 013176 0000 013177 0000 6053 013200 0000 CONBUFF,ZBLOCK BUFSIZE /CONSOLE OUTPUT BUFFER /026 CJL 013201 0000 013202 0000 013203 0000 013204 0000 013205 0000 013206 0000 013207 0000 013210 0000 013211 0000 013212 0000 013213 0000 013214 0000 013215 0000 013216 0000 013217 0000 013220 0000 013221 0000 013222 0000 013223 0000 013224 0000 013225 0000 013226 0000 013227 0000 013230 0000 013231 0000 013232 0000 013233 0000 013234 0000 013235 0000 013236 0000 013237 0000 013240 0000 013241 0000 013242 0000 013243 0000 013244 0000 013245 0000 013246 0000 013247 0000 013250 0000 013251 0000 013252 0000 013253 0000 013254 0000 013255 0000 013256 0000 013257 0000 013260 0000 013261 0000 013262 0000 013263 0000 013264 0000 013265 0000 013266 0000 013267 0000 013270 0000 013271 0000 013272 0000 013273 0000 013274 0000 013275 0000 013276 0000 013277 0000 013300 0000 013301 0000 013302 0000 013303 0000 013304 0000 013305 0000 013306 0000 013307 0000 013310 0000 013311 0000 013312 0000 013313 0000 013314 0000 013315 0000 013316 0000 013317 0000 013320 0000 013321 0000 013322 0000 013323 0000 013324 0000 013325 0000 013326 0000 013327 0000 013330 0000 013331 0000 013332 0000 013333 0000 013334 0000 013335 0000 013336 0000 013337 0000 013340 0000 013341 0000 013342 0000 013343 0000 013344 0000 013345 0000 013346 0000 013347 0000 013350 0000 013351 0000 013352 0000 013353 0000 013354 0000 013355 0000 013356 0000 013357 0000 013360 0000 013361 0000 013362 0000 013363 0000 013364 0000 013365 0000 013366 0000 013367 0000 013370 0000 013371 0000 013372 0000 013373 0000 013374 0000 013375 0000 013376 0000 013377 0000 6054 013400 0000 RINBUFF,ZBLOCK BUFSIZE /REMOTE INPUT BUFFER /026 CJL 013401 0000 013402 0000 013403 0000 013404 0000 013405 0000 013406 0000 013407 0000 013410 0000 013411 0000 013412 0000 013413 0000 013414 0000 013415 0000 013416 0000 013417 0000 013420 0000 013421 0000 013422 0000 013423 0000 013424 0000 013425 0000 013426 0000 013427 0000 013430 0000 013431 0000 013432 0000 013433 0000 013434 0000 013435 0000 013436 0000 013437 0000 013440 0000 013441 0000 013442 0000 013443 0000 013444 0000 013445 0000 013446 0000 013447 0000 013450 0000 013451 0000 013452 0000 013453 0000 013454 0000 013455 0000 013456 0000 013457 0000 013460 0000 013461 0000 013462 0000 013463 0000 013464 0000 013465 0000 013466 0000 013467 0000 013470 0000 013471 0000 013472 0000 013473 0000 013474 0000 013475 0000 013476 0000 013477 0000 013500 0000 013501 0000 013502 0000 013503 0000 013504 0000 013505 0000 013506 0000 013507 0000 013510 0000 013511 0000 013512 0000 013513 0000 013514 0000 013515 0000 013516 0000 013517 0000 013520 0000 013521 0000 013522 0000 013523 0000 013524 0000 013525 0000 013526 0000 013527 0000 013530 0000 013531 0000 013532 0000 013533 0000 013534 0000 013535 0000 013536 0000 013537 0000 013540 0000 013541 0000 013542 0000 013543 0000 013544 0000 013545 0000 013546 0000 013547 0000 013550 0000 013551 0000 013552 0000 013553 0000 013554 0000 013555 0000 013556 0000 013557 0000 013560 0000 013561 0000 013562 0000 013563 0000 013564 0000 013565 0000 013566 0000 013567 0000 013570 0000 013571 0000 013572 0000 013573 0000 013574 0000 013575 0000 013576 0000 013577 0000 6055 013600 0000 REMBUFF,ZBLOCK BUFSIZE /REMOTE OUTPUT BUFFER /026 CJL 013601 0000 013602 0000 013603 0000 013604 0000 013605 0000 013606 0000 013607 0000 013610 0000 013611 0000 013612 0000 013613 0000 013614 0000 013615 0000 013616 0000 013617 0000 013620 0000 013621 0000 013622 0000 013623 0000 013624 0000 013625 0000 013626 0000 013627 0000 013630 0000 013631 0000 013632 0000 013633 0000 013634 0000 013635 0000 013636 0000 013637 0000 013640 0000 013641 0000 013642 0000 013643 0000 013644 0000 013645 0000 013646 0000 013647 0000 013650 0000 013651 0000 013652 0000 013653 0000 013654 0000 013655 0000 013656 0000 013657 0000 013660 0000 013661 0000 013662 0000 013663 0000 013664 0000 013665 0000 013666 0000 013667 0000 013670 0000 013671 0000 013672 0000 013673 0000 013674 0000 013675 0000 013676 0000 013677 0000 013700 0000 013701 0000 013702 0000 013703 0000 013704 0000 013705 0000 013706 0000 013707 0000 013710 0000 013711 0000 013712 0000 013713 0000 013714 0000 013715 0000 013716 0000 013717 0000 013720 0000 013721 0000 013722 0000 013723 0000 013724 0000 013725 0000 013726 0000 013727 0000 013730 0000 013731 0000 013732 0000 013733 0000 013734 0000 013735 0000 013736 0000 013737 0000 013740 0000 013741 0000 013742 0000 013743 0000 013744 0000 013745 0000 013746 0000 013747 0000 013750 0000 013751 0000 013752 0000 013753 0000 013754 0000 013755 0000 013756 0000 013757 0000 013760 0000 013761 0000 013762 0000 013763 0000 013764 0000 013765 0000 013766 0000 013767 0000 013770 0000 013771 0000 013772 0000 013773 0000 013774 0000 013775 0000 013776 0000 013777 0000 6056 6057 FLD1ADR=. /SPACE AVAILABLE FOR TEXT, ETC. /046 CJL 6058 6059 ENPUNCH /UN-FOOL THE ASSEMBLER /046 CJL 6060 / DECMATE ONCE-ONLY CODE. /046 CJL 6061 6062 FIELD DMIFLD%10 /DECMATE ONCE-ONLY CODE FIELD /046 CJL 6063 6064 *USRLOAD /OVER USR ROUTINE /046 CJL 6065 6066 / PAGE ZERO FOR ONCE-ONLY CODE. /046 CJL 6067 6068 *10 /GET TO AUTO-INDEX AREA /048 CJL 6069 6070 010010 0000 XR0, .-. /AUTO-INDEX ZERO /048 CJL 6071 6072 *USRENTRY /OVER USR ENTRY POINT /046 CJL 6073 6074 / DECMATE I ONCE-ONLY CODE. /046 CJL 6075 6076 010200 4777 DM1INIT,JMS I (DM1PORT) /INITIALIZE THE REMOTE PORTS /050 CJL 6077 010201 1376 TAD (DM1LIST-1) /POINT TO REPLACEMENT LIST /050 CJL 6078 010202 4220 JMS REPLACE /ZAP IN ALL OF OUR PATCHES /050 CJL 6079 010203 6201 CDF PRGFLD /GOTO MAIN FIELD /050 CJL 6080 010204 1775 TAD I (DIRXR) /GET PORT SELECTION /050 CJL 6081 010205 7650 SNA CLA /SKIP IF PORT 1 REQUIRED /050 CJL 6082 010206 5211 JMP USEP0 /JUMP IF PORT 0 REQUIRED /050 CJL 6083 010207 1374 TAD (DM1SEC-1) /POINT TO REPLACEMENT LIST /050 CJL 6084 010210 4220 JMS REPLACE /ZAP IN SECONDARY PATCHES /050 CJL 6085 010211 6203 USEP0, CIF CDF PRGFLD /BACK TO REST OF INITIALIZATION /046 CJL 6086 010212 5773 JMP I (INITPRT) /CONTINUE THERE /046 CJL 6087 6088 / DECMATE II, ETC. ONCE-ONLY CODE. /046 CJL 6089 6090 010213 4772 DM2INIT,JMS I (DMIPORT) /INITIALIZE THE REMOTE PORT /048 CJL 6091 010214 1371 TAD (DM2LIST-1) /POINT TO REPLACEMENT LIST /048 CJL 6092 010215 4220 JMS REPLACE /ZAP IN ALL OF OUR PATCHES /048 CJL 6093 010216 6203 CIF CDF PRGFLD /BACK TO REST OF INITIALIZATION /046 CJL 6094 010217 5773 JMP I (INITPRT) /CONTINUE THERE /046 CJL 6095 6096 010220 0000 REPLACE,.-. /REPLACEMENT ROUTINE /048 CJL 6097 010221 3010 DCA XR0 /SAVE PASSED LIST POINTER /048 CJL 6098 010222 6211 REPLUP, CDF DMIFLD /BACK TO OUR FIELD /048 CJL 6099 010223 1410 TAD I XR0 /GET AN ADDRESS /048 CJL 6100 010224 7450 SNA /SKIP IF NOT AT END OF LIST /048 CJL 6101 010225 5620 JMP I REPLACE /RETURN IF END OF LIST /048 CJL 6102 010226 3233 DCA REPADR /STASH THE ADDRESS /048 CJL 6103 010227 1410 TAD I XR0 /GET THE REPLACEMENT VALUE /048 CJL 6104 010230 6201 CDF PRGFLD /GOTO ZAPPING FIELD /048 CJL 6105 010231 3633 DCA I REPADR /ZAP IT IN /048 CJL 6106 010232 5222 JMP REPLUP /KEEP GOING /048 CJL 6107 6108 010233 0000 REPADR, .-. /REPLACEMENT ADDRESS TEMPORARY /048 CJL 6109 / DECMATE I PORT INITIALIZE ROUTINE /050 CJL 6110 6111 010234 0000 DM1PORT,.-. /DECMATE I PORT INITIALIZE ROUTINE 6112 010235 1377 TAD (234) /GET PORT 0 SCD ENABLE VALUE 6113 010236 6362 WCON0 /WRITE PORT 0 CONTROL REGISTER 6114 010237 7200 NL0000 /INDICATE PORT 0 6115 010240 4255 JMS PRTINIT /INITIALIZE PORT 0 6116 6117 / CHANGE ALL IOTS TO PORT 1 VALUES. 6118 6119 010241 2262 IOCLUP, ISZ PSETF1 /BUMP SET FLAG INSTRUCTION 6120 010242 2274 ISZ PDUMRD /BUMP DUMMY READ INSTRUCTION 6121 010243 2275 ISZ PSETF2 /BUMP SET FLAG INSTRUCTION 6122 010244 2301 ISZ PSKIP /BUMP SKIP ON FLAG INSTRUCTION 6123 010245 2303 ISZ PLOAD /BUMP LOAD INSTRUCTION 6124 010246 2306 ISZ IOTCNT /DONE YET? 6125 010247 5241 JMP IOCLUP /NO, KEEP GOING 6126 6127 010250 1377 TAD (234) /GET PORT 1 SCD ENABLE VALUE 6128 010251 6366 WCON1 /WRITE PORT 1 CONTROL REGISTER 6129 010252 7330 NL4000 /INDICATE PORT 1 6130 010253 4255 JMS PRTINIT /INITIALIZE PORT 1 6131 010254 5634 JMP I DM1PORT /RETURN 6132 6133 010255 0000 PRTINIT,.-. /LOW-LEVEL PORT INTIALIZE ROUTINE 6134 010256 6367 RACD /RESET DESIRED PORT 6135 010257 2307 ISZ PWASTE /WASTE 6136 010260 5257 JMP .-1 /SOME TIME 6137 010261 7200 CLA /CLEAN UP 6138 010262 6310 PSETF1, RTFL0 /SET THE FLAG NOW 6139 010263 1370 TAD (2516) /SETUP FOR 8 BITS, NO PARITY, ETC. 6140 010264 4300 JMS PSEND /SEND TO MODE REGISTER 1 6141 010265 6201 CDF PRGFLD /GOTO MAIN FIELD 6142 010266 1767 TAD I (RATE) /GET BAUD RATE NOW 6143 010267 6211 CDF DMIFLD /BACK TO OUR FIELD 6144 010270 1366 TAD (2460) /ADD ON CLOCK ENABLES, ETC. 6145 010271 4300 JMS PSEND /SEND TO MODE REGISTER 2 6146 010272 1365 TAD (3425) /GET ENABLE AND RESET VALUE 6147 010273 4300 JMS PSEND /SEND TO COMMAND REGISTER 6148 010274 6306 PDUMRD, RKRB0 /DO A DUMMY READ NOW 6149 010275 6310 PSETF2, RTFL0 /SET THE FLAG NOW 6150 010276 7200 CLA /CLEAN UP 6151 010277 5655 JMP I PRTINIT /RETURN 6152 6153 010300 0000 PSEND, .-. /PORT WRITE ROUTINE 6154 010301 6311 PSKIP, RTSF0 /FLAG UP? 6155 010302 5301 JMP PSKIP /NO, WAIT FOR IT 6156 010303 6316 PLOAD, RTLS0 /YES, LOAD THE VALUE 6157 010304 7200 CLA /CLEAN UP 6158 010305 5700 JMP I PSEND /RETURN 6159 6160 010306 7740 IOTCNT, RKFL0-RKFL1 /INTER-DEVICE IOT COUNT 6161 010307 0000 PWASTE, 0 /TIMER TEMPORARY 6162 010365 3425 PAGE 010366 2460 010367 0007 010370 2516 010371 0466 010372 0400 010373 6615 010374 0706 010375 0012 010376 0577 010377 0234 6163 / DECMATE II, ETC. PORT INITIALIZE ROUTINE. /048 CJL 6164 6165 / THIS ROUTINE IS MOSTLY "DARK GREY MAGIC" WHICH IS PRIMARILY DERIVED FROM THE 6166 / "OFFICIAL" INFORMATION TAKEN FROM THE ONLY KNOWN DOCUMENTATION, THE DECMATE II 6167 / PROGRAMMER'S REFERENCE MANUAL: EK-DECM2-RM-001. VARIOUS EMPLOYEES OF DIGITAL 6168 / EQUIPMENT CORPORATION (A MULTI-NATIONAL COMPANY) HAVE ADDITIONALLY CONTRIBUTED 6169 / TO THIS EFFORT BY PROVIDING PORTIONS OF THE "SACRED SLUSHWARE NOTES" ON A NOT 6170 / NECESSARILY WILLING BASIS THROUGH THEIR RELEASED WORKS, SUCH AS, BUT NOT 6171 / LIMITED TO, THE SOURCES OF THE PARTICULAR VERSION OF KERMIT-8 KNOWN AS K278. 6172 / IT IS ASSUMED THAT THESE PEOPLE HAVE ACCESS TO BETTER DOCUMENTATION OF THE 6173 / HARDWARE, AND ESPECIALLY DOCUMENTATION OF THE THREE DIFFERENT MODELS OF 6174 / DECMATE (II, III, III+) THAT THESE ISSUES APPLY TO. 6175 6176 / SINCE IT IS NOT KNOWN WHETHER THE K278, ETC. CODE IS SPECIFIC AND PRECISE, OR 6177 / MERELY SLOPPY, VARIOUS "QUIRKY" CODING TECHNIQUES HAVE BEEN LEFT "AS IS", WITH 6178 / COMMENTS REGARDING POTENTIAL VARIANCE WITH DOCUMENTATION NOTED WHERE 6179 / NECESSARY. THE ORDER OF ACCESS TO THE REGISTERS HAS BEEN LEFT INTACT IN CASE 6180 / OF POTENTIAL INTERACTION. SEVERAL CHANGES HAVE BEEN MADE BEYOND THIS WORK AS 6181 / A RESULT OF TRIAL-AND-ERROR, AND ALSO HAND DIS-ASSEMBLY OF SEVERAL DECMATE 6182 / DISKETTES' CONTENTS. 6183 6184 / IT IS HOPED THAT FUTURE "NEGOTIATIONS" WITH DEC ALLOW FOR PROPER DISCLOSURE OF 6185 / THESE ISSUES TO AVOID POTENTIAL SOFTWARE FAILURES EVIDENT IN THESE ROUTINES 6186 / DUE TO LACK OF PROPER DOCUMENTATION. 6187 6188 010400 0000 DMIPORT,.-. /COMMUNICATIONS PORT INITIALIZE ROUTINE 6189 6190 / ACCORDING TO THE DECMATE II MANUAL, THE FOLLOWING INSTRUCTION IS UNDEFINED. 6191 6192 010401 6367 MPRESET /RESET MULTIPROTOCOL COMMUNICATIONS CONTROLLER CHIP 6193 6194 / THE DECMATE III HAS AN INTERNAL MODEM OPTION WHICH IS NOT AVAILABLE IN THE 6195 / DECMATE II. THE INTERFACE TO THIS DEVICE IS APPARENTLY SHARED WITH THE MPSCC 6196 / MODEM INTERFACE WE NORMALLY USE, SO THE REGISTER ACCESS MUST BE MORE CAREFULLY 6197 / DEFINED. THE APPARENT DIFFERENTIATION IS THE CURRENT VALUE OF THE DATA FIELD, 6198 / NAMELY EITHER FIELD 0 OR 1. IT IS NOT KNOWN WHETHER THE THREE-BIT VALUE OF 6199 / THE DATA FIELD IS SIGNIFICENT (PRESUMABLY FOR FUTURE EXPANSION), OR MERELY THE 6200 / DATA FIELD'S LOW-ORDER BIT IS USED, AS ALL KNOWN EXAMPLES OF ALLEDGEDLY 6201 / FUNCTIONAL CODE USE APPROPRIATE CDF 00 AND CDF 10 ONLY. APPARENTLY THE MODEM 6202 / INTERFACE IS REFERRED TO AS "A" AND THE MPSCC INTERFACE IS REFERRED TO AS "B". 6203 6204 010402 1377 TAD (030) /GET RESET VALUE 6205 010403 6201 CDF 00 /TALKING TO REGISTER 0A 6206 010404 6366 MPSCC /RESET COMMUNICATIONS CHIP 6207 010405 6211 CDF 10 /TALKING TO REGISTER 0B 6208 010406 6366 MPSCC /RESET COMMUNICATIONS CHIP 6209 / ACCORDING TO THE DECMATE II MANUAL, CONTROL REGISTER 2 "HAS NO RELEVANT 6210 / BITS... IF IT IS EVER WRITTEN, IT MUST BE WRITTEN WITH ALL ZEROS." APPARENTLY 6211 / THE MODEM INTERFACE DEMANDS A NON-ZERO VALUE BE WRITTEN TO REGISTER 2 6212 / (PRESUMABLY TO DISABLE IT). TO SATISFY THE ABOVE REQUIREMENT (WHATEVER THIS 6213 / IMPLIES!), REGISTER 2(B) IS WRITTEN WITH ALL ZEROS *LAST* IN CASE THIS IS A 6214 / DECMATE II WHERE THE DATA FIELD CONSIDERATIONS ARE MEANINGLESS. 6215 6216 010407 6201 CDF 00 /TALKING TO REGISTER 0A 6217 010410 7326 NL0002 /WANT REGISTER 2A 6218 010411 6366 MPSCC /SELECT IT 6219 010412 1376 TAD (020-2) /GET RESET VALUE 6220 010413 6366 MPSCC /LOAD IT 6221 010414 6211 CDF 10 /TALKING TO REGISTER 0B 6222 010415 7326 NL0002 /WANT REGISTER 2B 6223 010416 6366 MPSCC /SELECT IT 6224 010417 7200 NL0000 /GET RESET VALUE (000) 6225 010420 6366 MPSCC /LOAD IT 6226 6227 / THE K278 CODE DOES NOT HAVE SETUP CODE FOR REGISTER 4B, PRESUMABLY BECAUSE THE 6228 / CODE PERFORMS A PANEL REQUEST (PRQ3) WHICH SETS UP THE EQUIVALENT VALUES FOR 6229 / ASYNCHRONOUS OPERATION WITH ONE STOP BIT AND NO PARITY. IT IS NOT KNOWN IF 6230 / THE DECMATE III EVEN *HAS* A REGISTER 4B, BUT PRESUMABLY IT IS AVAILABLE FOR 6231 / LOADING THE RIGHT VALUES COMPATIBLE WITH THE DECMATE II, OR ATTEMPTING TO LOAD 6232 / IT IS INNOCUOUS. 6233 6234 010421 6201 CDF 00 /TALKING TO REGISTER 0A 6235 010422 7307 NL0004 /WANT REGISTER 4A 6236 010423 6366 MPSCC /SELECT IT 6237 010424 1375 TAD (104-4) /SETUP FOR ASYNCHRONOUS, ONE STOP BIT, NO PARITY 6238 010425 6366 MPSCC /LOAD IT 6239 010426 6211 CDF 10 /TALKING TO REGISTER 0B 6240 010427 7307 NL0004 /WANT REGISTER 4B 6241 010430 6366 MPSCC /SELECT IT 6242 010431 1375 TAD (104-4) /SETUP FOR ASYNCHRONOUS, ONE STOP BIT, NO PARITY 6243 010432 6366 MPSCC /LOAD IT 6244 / THE DOCUMENTED VALUES (FOR DECMATE II) REGARDING CONTROL REGISTER 1 INDICATE 6245 / THE PROPER VALUE OF 022, WHERE BIT[9] IS DEFINED AS A ZERO. THE VALUE OF 026 6246 / IS TAKEN FROM K278 WHERE PRESUMABLY THE EXTRA BIT IS NECESSARY FOR SOME 6247 / DECMATE III OBSCURITY. 6248 6249 / THE FOLLOWING CODE IS REDUNDANT FOR LOADING REGISTER 0A BEFORE AND AFTER 6250 / LOADING REGISTER 0B. THIS IS EITHER A MISTAKE OR OBSCURELY NECESSARY (TAKEN 6251 / FROM K278). 6252 6253 010433 6201 CDF 00 /TALKING TO REGISTER 0A 6254 010434 7201 NL0001 /WANT REGISTER 1A 6255 010435 6366 MPSCC /SELECT IT 6256 010436 1374 TAD (026-1) /GET SETUP VALUE 6257 010437 6366 MPSCC /LOAD IT 6258 010440 6211 CDF 10 /TALKING TO REGISTER 0B 6259 010441 7201 NL0001 /WANT REGISTER 1B 6260 010442 6366 MPSCC /SELECT IT 6261 010443 1374 TAD (026-1) /GET SETUP VALUE 6262 010444 6366 MPSCC /LOAD IT 6263 010445 6201 CDF 00 /TALKING TO REGISTER 0A 6264 010446 7201 NL0001 /WANT REGISTER 1A 6265 010447 6366 MPSCC /SELECT IT 6266 010450 1374 TAD (026-1) /GET SETUP VALUE 6267 010451 6366 MPSCC /LOAD IT 6268 6269 / THE DECMATE III INTERNAL MODEM IS PROBABLY ASYNCHRONOUS 8 BIT ONLY. ASSUMING 6270 / THE RECEIVE SIDE OF THE INTERNAL MODEM IS ALWAYS "ENABLED", REGISTER 3A WOULD 6271 / BE UNNECESSARY. THE K278 CODE DOES NOT ADDRESS REGISTER 3 AS AN A/B PAIR, 6272 / PRESUMABLY BECAUSE REGISTER 3 IS NOT DECODED AND IS EFFECTIVELY REGISTER 3B 6273 / REGARDLESS OF THE DATA FIELD. THIS IS EITHER TRUE, OR THE K278 CODING FAILS 6274 / TO PROPERLY INITIALIZE THE DECMATE III MPSCC PORT. 6275 6276 010452 7325 NL0003 /WANT REGISTER 3 6277 010453 6366 MPSCC /SELECT IT 6278 010454 1373 TAD (301-3) /SETUP FOR 8 BITS AND ENABLE RECIVER 6279 010455 6366 MPSCC /LOAD IT 6280 6281 / A SIMILAR SITUATION EXISTS FOR THE TRANSMITTER SIDE OF THE DECMATE III 6282 / INTERNAL MODEM. REGISTER 5 IS UTILIZED ACCORDINGLY. 6283 6284 010456 1372 TAD (5-301) /WANT REGISTER 5 6285 010457 6366 MPSCC /SELECT IT 6286 010460 1371 TAD (150-5) /GET TRANSMITTER ENABLE, 8 BITS VALUE 6287 010461 6366 MPSCC /LOAD IT 6288 6289 / THE DECMATE II REFERENCE MANUAL INDICATES THE PROPER SETTING FOR THE MODEM 6290 / CONTROL REGISTER AS EITHER 030 OR 130 DEPENDING ON WHETHER BIT[5] INDICATES 6291 / INTERNAL OR EXTERNAL TIMING (WHERE ONE OF THESE IS ILLEGAL FOR ASYNCHRONOUS 6292 / OPERATION!). THE SETTING OF BITS [10] AND [11] WOULD INDICATE ENABLING OF 6293 / BOTH LOCAL AND REMOTE LOOPBACKS, YET WE SET ONLY THESE BITS (ALA K278) 6294 / ALLEDGEDLY FOR THE PURPOSE OF SETTING RTS AND DTR (WHICH ARE DOCUMENTED AS 6295 / BEING BITS[7] AND [8] RESPECTIVELY). 6296 6297 010462 7325 NL0003 /SET VALUE 6298 010463 6362 MLC /LOAD IT 6299 010464 7200 CLA /CLEAN UP 6300 6301 / THE BAUD RATE SHOULD BE SET HERE IF DESIRED. 6302 6303 / TAD BAUD /GET BAUD RATE 6304 / MSB /LOAD IT 6305 010465 7200 CLA /CLEAN UP 6306 010466 5600 JMP I DMIPORT /RETURN 6307 / DECMATE II, ETC. REPLACEMENT LIST. /048 CJL 6308 6309 010467 0204 DM2LIST,CLDMZAP / *CLDMZAP 6310 6311 010470 4324 DMINIT&177+JMSC /CLDMZAP,JMS DMINIT 6312 6313 010471 0206 SETBAUD / *SETBAUD /050 CJL 6314 6315 010472 6363 MSB /SETBAUD,MSB /050 CJL 6316 6317 010473 0634 INLUP / *INLUP 6318 6319 010474 1020 TAD INFLAG /INLUP, TAD INFLAG 6320 6321 010475 0636 INSKIP / *INSKIP 6322 6323 010476 5246 NOTYET&177+JMPC /INSKIP, JMP NOTYET 6324 010477 0637 INLUP1; DCA INFLAG /INLUP1, DCA INFLAG 010500 3020 6325 010501 0640 INREAD; IRB /INREAD, IRB 010502 6306 6326 6327 010503 0656 INSTATUS / *INSTATUS 6328 6329 010504 4323 UPSTATUS&177+JMSC /INSTATU,JMS UPSTATUS 6330 6331 010505 0665 GETFL1 / *GETFL1 6332 6333 010506 4323 UPSTATUS&177+JMSC /GETFL1, JMS UPSTATUS 6334 6335 010507 0676 COMWAIT / *COMWAIT 6336 6337 010510 4264 GETFLOW&177+JMSC /COMWAIT,JMS GETFLOW 6338 6339 010511 0705 NOWAIT / *NOWAIT 6340 6341 010512 1021 TAD OUTFLAG /NOWAIT, TAD OUTFLAG 6342 010513 0706 CMOUT1; SNA CLA /CMOUT1, SNA CLA 010514 7650 6343 010515 0707 CMOUT2; OWAIT&177+JMPC /CMOUT2, JMP OWAIT 010516 5315 6344 010517 0710 DM1AND; DCA OUTFLAG /DM1AND, DCA OUTFLAG 010520 3021 6345 010521 0711 CMOUT3; OUTEMP&177+TADC /CMOUT3, TAD OUTEMP 010522 1230 6346 010523 0712 CMOUT4; OLS /CMOUT4, OLS 010524 6316 6347 6348 010525 5105 BUFCHECK / *BUFCHECK 6349 6350 010526 4756 PUPSTATUS&177+JMSIC /BUFCHEC,JMS I PUPSTATUS 6351 6352 010527 5115 KERRLUP / *KERRLUP 6353 6354 010530 4756 PUPSTATUS&177+JMSIC /KERRLUP,JMS I PUPSTATUS 6355 010531 5503 RINTEST / *RINTEST 6356 6357 010532 1020 TAD INFLAG /RINTEST,TAD INFLAG 6358 010533 5504 RINGT0; SNA CLA /RINGT0, SNA CLA 010534 7650 6359 010535 5505 RINREAD;RINGNONE&177+JMPC /RINREAD,JMP RINGNONE 010536 5333 6360 010537 5506 RINGT1; DCA INFLAG /RINGT1, DCA INFLAG 010540 3020 6361 010541 5507 RINGT2; IRB /RINGT2, IRB 010542 6306 6362 6363 010543 5724 REMTSF / *REMTSF 6364 6365 010544 3305 RMPTEMP&177+DCAC /REMTSF, DCA RMPTEMP 6366 010545 5725 RMPUT0; TAD OUTFLAG /RMPUT0, TAD OUTFLAG 010546 1021 6367 010547 5726 REMTLS; SNA CLA /REMTLS, SNA CLA 010550 7650 6368 010551 5727 RMPUT1; REMPUT&177+JMPIC /RMPUT1, JMP I REMPUT 010552 5721 6369 010553 5730 REMCLEA;RMPTEMP&177+TADC /REMCLEA,TAD RMPTEMP 010554 1305 6370 010555 5731 RMPUT2; OLS /RMPUT2, OLS 010556 6316 6371 6372 010557 0000 0 /THIS ENDS THE LIST 6373 6374 010571 0143 PAGE 010572 7504 010573 0276 010574 0025 010575 0100 010576 0016 010577 0030 6375 / DECMATE I REPLACEMENT LIST. /050 CJL 6376 6377 010600 0204 DM1LIST,CLDMZAP / *CLDMZAP 6378 6379 010601 4324 DMINIT&177+JMSC /CLDMZAP,JMS DMINIT 6380 6381 010602 0206 SETBAUD / *SETBAUD 6382 6383 010603 7000 NOP /SETBAUD,NOP 6384 6385 010604 0325 DMI01 / *DMI01 6386 6387 010605 1360 DM234&177+TADC /DMI01, TAD DM234/(234) 6388 010606 0326 DMI02; WCON0 /DMI02, WCON0 010607 6362 6389 010610 0327 DMI03; NL0000 /DMI03, NL0000 010611 7200 6390 010612 0330 DMI04; RACD /DMI04, RACD 010613 6367 6391 010614 0331 DMI05; DMWASTE&177+ISZC /DMI05, ISZ DMWASTE 010615 2357 6392 010616 0332 DMI06; DMI05&177+JMPC /DMI06, JMP DMI05 010617 5331 6393 010620 0333 DMI07; DMWASTE&177+ISZC /DMI07, ISZ DMWASTE 010621 2357 6394 010622 0334 DMI08; DMI07&177+JMPC /DMI08, JMP DMI07 010623 5333 6395 010624 0335 DMI09; RTFL0 /DMI09, RTFL0 010625 6310 6396 010626 0336 DMI10; DM2516&177+TADC /DMI10, TAD DM2516/(2516) 010627 1362 6397 010630 0337 DMI11; DMSEND&177+JMSC /DMI11, JMS DMSEND 010631 4351 6398 010632 0340 DMI12; TAD RATE /DMI12, TAD RATE 010633 1007 6399 010634 0341 DMI13; DM2460&177+TADC /DMI13, TAD DM2460/(2460) 010635 1361 6400 010636 0342 DMI14; DMSEND&177+JMSC /DMI14, JMS DMSEND 010637 4351 6401 010640 0343 DMI15; DM3425&177+TADC /DMI15, TAD DM3425/(3425) 010641 1363 6402 010642 0344 DMI16; DMSEND&177+JMSC /DMI16, JMS DMSEND 010643 4351 6403 010644 0345 DMI17; RKRB0 /DMI17, RKRB0 010645 6306 6404 6405 010646 0346 DMISET / *DMISET 6406 6407 010647 6310 RTFL0 /DMISET, RTFL0 6408 6409 010650 0352 DMISKP / *DMISKP 6410 6411 010651 6311 RTSF0 /DMISKP, RTSF0 6412 010652 0354 DMIOUT / *DMIOUT 6413 6414 010653 6316 RTLS0 /DMIOUT, RTLS0 6415 6416 010654 0636 INSKIP / *INSKIP 6417 6418 010655 6301 RKSF0 /INSKIP, RKSF0 6419 6420 010656 0640 INREAD / *INREAD 6421 6422 010657 6306 RKRB0 /INREAD, RKRB0 6423 6424 010660 0676 COMWAIT / *COMWAIT 6425 6426 010661 4264 GETFLOW&177+JMSC /COMWAIT,JMS GETFLOW 6427 6428 010662 0705 NOWAIT / *NOWAIT 6429 6430 010663 6311 RTSF0 /NOWAIT, RTSF0 6431 010664 0706 CMOUT1; OWAIT&177+JMPC /CMOUT1, JMP OWAIT 010665 5315 6432 6433 010666 0710 DM1AND / *DM1AND 6434 6435 010667 0163 AND377 /DM1AND, AND [377] 6436 6437 010670 0712 CMOUT4 / *CMOUT4 6438 6439 010671 6316 RTLS0 /CMOUT4, RTLS0 6440 6441 010672 5503 RINTEST / *RINTEST 6442 6443 010673 6301 RKSF0 /RINTEST,RKSF0 6444 6445 010674 5505 RINREAD / *RINREAD 6446 6447 010675 6306 RKRB0 /RINREAD,RKRB0 6448 010676 5506 RINGT1; SKP /RINGT1, SKP 010677 7410 6449 6450 010700 5722 DM1AN2 / *DM1AN2 6451 6452 010701 0163 AND377 /DM1AN2, AND [377] 6453 6454 010702 5724 REMTSF / *REMTSF 6455 6456 010703 6311 RTSF0 /REMTSF, RTSF0 6457 6458 010704 5726 REMTLS / *REMTLS 6459 6460 010705 6316 RTLS0 /REMTLS, RTLS0 6461 6462 010706 0000 0 /THIS ENDS THE LIST 6463 / DECMATE I SECONDARY REPLACEMENT LIST /050 CJL 6464 6465 010707 0326 DM1SEC, DMI02 / *DMI02 6466 6467 010710 6366 WCON1 /DMI02, WCON1 6468 010711 0327 DMI03; NL4000 /DMI03, NL4000 010712 7330 6469 6470 010713 0335 DMI09 / *DMI09 6471 6472 010714 6350 RTFL1 /DMI09, RTFL1 6473 6474 010715 0345 DMI17 / *DMI17 6475 6476 010716 6346 RKRB1 /DMI17, RKRB1 6477 6478 010717 0346 DMISET / *DMISET 6479 6480 010720 6350 RTFL1 /DMISET, RTFL1 6481 6482 010721 0352 DMISKP / *DMISKP 6483 6484 010722 6351 RTSF1 /DMISKP, RTSF1 6485 6486 010723 0354 DMIOUT / *DMIOUT 6487 6488 010724 6356 RTLS1 /DMIOUT, RTLS1 6489 6490 010725 0636 INSKIP / *INSKIP 6491 6492 010726 6341 RKSF1 /INSKIP, RKSF1 6493 6494 010727 0640 INREAD / *INREAD 6495 6496 010730 6346 RKRB1 /INREAD, RKRB1 6497 6498 010731 0705 NOWAIT / *NOWAIT 6499 6500 010732 6351 RTSF1 /NOWAIT, RTSF1 6501 6502 010733 0712 CMOUT4 / *CMOUT4 6503 6504 010734 6356 RTLS1 /CMOUT4, RTLS1 6505 6506 010735 5503 RINTEST / *RINTEST 6507 6508 010736 6341 RKSF1 /RINTEST,RKSF1 6509 6510 010737 5505 RINREAD / *RINREAD 6511 6512 010740 6346 RKRB1 /RINREAD,RKRB1 6513 6514 010741 5724 REMTSF / *REMTSF 6515 6516 010742 6351 RTSF1 /REMTSF, RTSF1 6517 010743 5726 REMTLS / *REMTLS 6518 6519 010744 6356 RTLS1 /REMTLS, RTLS1 6520 6521 010745 0000 0 /THIS ENDS THE LIST 6522 / ONCE-ONLY TEXT MESSAGES. /024 CJL 6523 6524 FIELD BUFFLD%10 /FILE I/O BUFFER FIELD 6525 6526 *FILBUFFER /OVER FILE I/O BUFFER 6527 6528 / LOCAL PREFERENCE MESSAGE. /024 CJL 6529 6530 / USE SOMETHING APPROPRIATE HERE TO CUSTOMIZE KERMIT-12 TO YOUR MACHINE. 6531 6532 / THIS LOCATION SHOULD BE MAINTAINED SINCE IT IS DOCUMENTED TO BE HERE. 6533 6552 XLIST ON 6553 012000 3636 LCLMSG, TEXT "^^^^^^^^^^^^^^^^^^^^^^"/DEFAULT IS NO MESSAGE 012001 3636 012002 3636 012003 3636 012004 3636 012005 3636 012006 3636 012007 3636 012010 3636 012011 3636 012012 3636 6554 6557 XLIST ON 6558 012013 0000 ZBLOCK LCLMSG+40-. /LEAVE PATCHING SPACE 012014 0000 012015 0000 012016 0000 012017 0000 012020 0000 012021 0000 012022 0000 012023 0000 012024 0000 012025 0000 012026 0000 012027 0000 012030 0000 012031 0000 012032 0000 012033 0000 012034 0000 012035 0000 012036 0000 012037 0000 6559 6562 XLIST ON 6563 012040 3635 CLOSMSG,TEXT "^]^" /CPU TYPE CLOSING MESSAGE 012041 3600 6564 / CPU IDENTIFICATION LIST; ALL MUST BE 5 WORDS LONG (EXCEPT LAST)./024 CJL 6565 6566 012042 3625 CPULIST,TEXT "^U^NKNOWN" /00=UNKNOWN 012043 3616 012044 1316 012045 1727 012046 1600 6567 012047 3620 TEXT "^PDP^-5^^" /01=PDP-5 012050 0420 012051 3655 012052 6536 012053 3600 6568 012054 3620 TEXT "^PDP^-8^^" /02=PDP-8 012055 0420 012056 3655 012057 7036 012060 3600 6569 012061 3620 TEXT "^PDP^-8/S" /03=PDP-8/S 012062 0420 012063 3655 012064 7057 012065 2300 6570 012066 3614 TEXT "^LINC^-8^" /04=LINC-8 012067 1116 012070 0336 012071 5570 012072 3600 6571 012073 3620 TEXT "^PDP^-8/I" /05=PDP-8/I 012074 0420 012075 3655 012076 7057 012077 1100 6572 012100 3620 TEXT "^PDP^-8/L" /06=PDP-8/L 012101 0420 012102 3655 012103 7057 012104 1400 6573 012105 3620 TEXT "^PDP^-12^" /07=PDP-12 012106 0420 012107 3655 012110 6162 012111 3600 6574 012112 3620 TEXT "^PDP^-8/E" /10=PDP-8/E 012113 0420 012114 3655 012115 7057 012116 0500 6575 012117 3620 TEXT "^PDP^-8/A" /11=PDP-8/A 012120 0420 012121 3655 012122 7057 012123 0100 6576 012124 6661 TEXT "6100^^^^^" /12=6100 012125 6060 012126 3636 012127 3636 012130 3600 6577 012131 6661 TEXT "6120^" /13=6120; LAST CAN BE SHORT! 012132 6260 012133 3600 6578 012134 4536 CPUTMSG,TEXT "%^[C^PU TYPE IS: " /CPU TYPE MESSAGE 012135 3303 012136 3620 012137 2540 012140 2431 012141 2005 012142 4011 012143 2372 012144 4000 6579 012145 6066 DAYMSG, DAY%12^66+DAY+6060 /DAY MESSAGE 6580 012146 4000 TEXT " " 6581 012147 4036 DMPOMSG,TEXT " ^[U^SING ^C^OMMUNICATIONS" /DECMATE PORT MESSAGE 012150 3325 012151 3623 012152 1116 012153 0740 012154 3603 012155 3617 012156 1515 012157 2516 012160 1103 012161 0124 012162 1117 012163 1623 6582 012164 4036 TEXT " ^P^ORT^]" 012165 2036 012166 1722 012167 2436 012170 3500 6583 012171 4036 DMPPMSG,TEXT " ^[U^SING ^P^RINTER ^P^ORT^]^" /DECMATE SERIAL PORT MESSAGE 012172 3325 012173 3623 012174 1116 012175 0740 012176 3620 012177 3622 012200 1116 012201 2405 012202 2240 012203 3620 012204 3617 012205 2224 012206 3635 012207 3600 6584 012210 4536 INITMSG,TEXT "%^PS/8 PS/12 OS/8 OS/12 " /INITIAL MESSAGE 012211 2023 012212 5770 012213 4020 012214 2357 012215 6162 012216 4017 012217 2357 012220 7040 012221 1723 012222 5761 012223 6240 6585 012224 1723 TEXT "OS/78 OS/278 K^ERMIT-12 ^V" 012225 5767 012226 7040 012227 1723 012230 5762 012231 6770 012232 4040 012233 1336 012234 0522 012235 1511 012236 2455 012237 6162 012240 4040 012241 3626 6586 012242 6160 INMSG2, VERSION%12^66+VERSION+6060 /VERSION DIGITS 6587 012243 3607 INMSG3, "^^100+REVISION /REVISION 6588 012244 4040 TEXT " " /END OF MESSAGE 012245 4000 6623 XLIST ON 6624 012246 3623 MONMSG, TEXT "^S^EPTEMBER ^" /MONTH MESSAGE 012247 3605 012250 2024 012251 0515 012252 0205 012253 2240 012254 3600 6644 XLIST ON 6645 012255 4536 THLPMSG,TEXT "%^T^YPE ^HELP^ FOR HELP%^" /TYPE HELP MESSAGE 012256 2436 012257 3120 012260 0540 012261 3610 012262 0514 012263 2074 012264 0322 012265 7636 012266 4006 012267 1722 012270 4010 012271 0514 012272 2045 012273 3600 6646 012274 6171 YEARMSG,TEXT "19" /YEAR MESSAGE 6647 012275 7160 YEAR%12^66+YEAR+6060 /YEAR DIGITS 6648 012276 3600 TEXT "^" /END OF MESSAGE 6649 / CPU-SPECIFIC PROMPT LIST. /024 CJL 6650 6651 012277 7777 CPUPRMP,TEXT "??^>^^^" /UNKNOWN 012300 3676 012301 3636 012302 3600 6652 012303 6536 TEXT "5^>^^^^" /PDP-5 012304 7636 012305 3636 012306 3600 6653 012307 7036 TEXT "8^>^^^^" /PDP-8 012310 7636 012311 3636 012312 3600 6654 012313 7036 TEXT "8^/S>^^" /PDP-8/S 012314 5723 012315 7636 012316 3600 6655 012317 1411 TEXT "LINC-8>" /LINC-8 012320 1603 012321 5570 012322 7600 6656 012323 7036 TEXT "8^/I>^^" /PDP-8/I 012324 5711 012325 7636 012326 3600 6657 012327 7036 TEXT "8^/L>^^" /PDP-8/L 012330 5714 012331 7636 012332 3600 6658 012333 6162 TEXT "12^>^^^" /PDP-12 012334 3676 012335 3636 012336 3600 6659 012337 7036 TEXT "8^/E>^^" /PDP-8/E 012340 5705 012341 7636 012342 3600 6660 012343 7036 TEXT "8^/A>^^" /PDP-8/A 012344 5701 012345 7636 012346 3600 6661 012347 6770 TEXT "78^>^^^" /6100 012350 3676 012351 3636 012352 3600 6662 012353 6267 TEXT "278^>^^" /6120 012354 7036 012355 7636 012356 3600 6663 / CPU-SPECIFIC IDENTIFICATION LIST. /025 CJL 6664 6665 012357 3625 CPUIDLS,TEXT "^U^NKNOWN" /UNKNOWN 012360 3616 012361 1316 012362 1727 012363 1600 6666 012364 3620 TEXT "^PDP^-5^^" /PDP-5 012365 0420 012366 3655 012367 6536 012370 3600 6667 012371 3620 TEXT "^PDP^-8^^" /PDP-8 012372 0420 012373 3655 012374 7036 012375 3600 6668 012376 3620 TEXT "^PDP^-8/S" /PDP-8/S 012377 0420 012400 3655 012401 7057 012402 2300 6669 012403 3614 TEXT "^LINC^-8^" /LINC-8 012404 1116 012405 0336 012406 5570 012407 3600 6670 012410 3620 TEXT "^PDP^-8/I" /PDP-8/I 012411 0420 012412 3655 012413 7057 012414 1100 6671 012415 3620 TEXT "^PDP^-8/L" /PDP-8/L 012416 0420 012417 3655 012420 7057 012421 1400 6672 012422 3620 TEXT "^PDP^-12^" /PDP-12 012423 0420 012424 3655 012425 6162 012426 3600 6673 012427 3620 TEXT "^PDP^-8/E" /PDP-8/E 012430 0420 012431 3655 012432 7057 012433 0500 6674 012434 3620 TEXT "^PDP^-8/A" /PDP-8/A 012435 0420 012436 3655 012437 7057 012440 0100 6675 012441 3626 TEXT "^VT^-78^^" /VT-78 012442 2436 012443 5567 012444 7036 012445 3600 6676 012446 3604 TEXT "^DEC^MATE" /6120 012447 0503 012450 3615 012451 0124 012452 0500 6677 FIELD MSGFLD%10 /MESSAGE FIELD 6678 6679 *FLD1ADR /PERMANENT LOAD ADDRESS /046 CJL 6680 /TEXT MESSAGES LOAD HERE/046 CJL 6681 6682 014000 4536 ABMSG, TEXT "%^F^ILE ^A^BORT%^" /FILE ABORT MESSAGE 014001 0636 014002 1114 014003 0540 014004 3601 014005 3602 014006 1722 014007 2445 014010 3600 6683 014011 7736 CMERMSG,TEXT "?^I^NVALID COMMAND^" /COMMAND ERROR MESSAGE 014012 1136 014013 1626 014014 0114 014015 1104 014016 4003 014017 1715 014020 1501 014021 1604 014022 3600 6684 014023 4550 CONNMSG,TEXT "%(^C^ONNECTING TO HOST, TYPE " /FIRST CONNECT MESSAGE 014024 3603 014025 3617 014026 1616 014027 0503 014030 2411 014031 1607 014032 4024 014033 1740 014034 1017 014035 2324 014036 5440 014037 2431 014040 2005 014041 4000 6685 014042 3603 CONTMSG,TEXT "^C^ONTROL-^" /CONTROL CHARACTER MESSAGE 014043 3617 014044 1624 014045 2217 014046 1455 014047 3600 6686 014050 4036 CON2MSG,TEXT " ^C^ TO RETURN TO ^" /BRIDGING CONNECT MESSAGE 014051 0336 014052 4024 014053 1740 014054 2205 014055 2425 014056 2216 014057 4024 014060 1740 014061 3600 6687 014062 5145 CON3MSG,TEXT ")%^" /FINAL CONNECT MESSAGE 014063 3600 6688 014064 0000 CPUMSG, ZBLOCK 5 /CPU ID MESSAGE GOES HERE 014065 0000 014066 0000 014067 0000 014070 0000 6689 /CRLF, TEXT "%" /, MESSAGE 6690 014071 7736 DNERMSG,TEXT "?^E^RROR IN DEVICE NAME" /DEVICE NAME ERROR MESSAGE 014072 0536 014073 2222 014074 1722 014075 4011 014076 1640 014077 0405 014100 2611 014101 0305 014102 4016 014103 0115 014104 0500 6691 014105 7736 DSFLMSG,TEXT "?^D^ISK FULL!" /DISK OUT OF ROOM ERROR MESSAGE 014106 0436 014107 1123 014110 1340 014111 0625 014112 1414 014113 4100 6692 014114 7736 FCLEMSG,TEXT "?^E^RROR CLOSING FILE" /FILE CLOSE ERROR MESSAGE 014115 0536 014116 2222 014117 1722 014120 4003 014121 1417 014122 2311 014123 1607 014124 4006 014125 1114 014126 0500 6693 014127 7736 FNERMSG, TEXT "?^E^RROR IN FILE NAME" /FILE NAME ERROR MESSAGE 014130 0536 014131 2222 014132 1722 014133 4011 014134 1640 014135 0611 014136 1405 014137 4016 014140 0115 014141 0500 6694 014142 3622 FRECMSG,TEXT "^R^ECEIVING FILE: ^" /RECEIVING FILE MESSAGE 014143 3605 014144 0305 014145 1126 014146 1116 014147 0740 014150 0611 014151 1405 014152 7240 014153 3600 6695 014154 3623 FSENMSG,TEXT "^S^ENDING FILE: ^" /SENDING FILE MESSAGE 014155 3605 014156 1604 014157 1116 014160 0740 014161 0611 014162 1405 014163 7240 014164 3600 6696 014165 7736 FSERMSG,TEXT "?^F^ILE NAME SYNTAX ERROR" /FILE NAME ERROR MESSAGE 014166 0636 014167 1114 014170 0540 014171 1601 014172 1505 014173 4023 014174 3116 014175 2401 014176 3040 014177 0522 014200 2217 014201 2200 6697 014202 4536 HELPMSG,TEXT "%^S^UPPORTED COMMANDS ARE:%%" /HELP MESSAGE 014203 2336 014204 2520 014205 2017 014206 2224 014207 0504 014210 4003 014211 1715 014212 1501 014213 1604 014214 2340 014215 0122 014216 0572 014217 4545 6698 014220 3603 TEXT "^CONNECT^ (TO REMOTE SYSTEM) %" 014221 1716 014222 1605 014223 0324 014224 3640 014225 5024 014226 1740 014227 2205 014230 1517 014231 2405 014232 4023 014233 3123 014234 2405 014235 1551 014236 4045 6699 014237 3623 TEXT "^SEND DEV:FILNAM.EX^ %" 014240 0516 014241 0440 014242 0405 014243 2672 014244 0611 014245 1416 014246 0115 014247 5605 014250 3036 014251 4045 6700 014252 3622 TEXT "^RECEIVE DEV:^ (FILENAME AND EXTENSION ^NOT^ ALLOWED)%" 014253 0503 014254 0511 014255 2605 014256 4004 014257 0526 014260 7236 014261 4050 014262 0611 014263 1405 014264 1601 014265 1505 014266 4001 014267 1604 014270 4005 014271 3024 014272 0516 014273 2311 014274 1716 014275 4036 014276 1617 014277 2436 014300 4001 014301 1414 014302 1727 014303 0504 014304 5145 6701 014305 3607 TEXT "^GET DEV:FILNAM.EX^%" 014306 0524 014307 4004 014310 0526 014311 7206 014312 1114 014313 1601 014314 1556 014315 0530 014316 3645 6702 014317 3606 TEXT "^FINISH^ (SERVER)%" 014320 1116 014321 1123 014322 1036 014323 4050 014324 2305 014325 2226 014326 0522 014327 5145 6703 014330 3605 TEXT "^EXIT^ (TO OPERATING SYSTEM) %" 014331 3011 014332 2436 014333 4050 014334 2417 014335 4017 014336 2005 014337 2201 014340 2411 014341 1607 014342 4023 014343 3123 014344 2405 014345 1551 014346 4045 6704 014347 3610 TEXT "^HELP^ (THIS MESSAGE)%" 014350 0514 014351 2036 014352 4050 014353 2410 014354 1123 014355 4015 014356 0523 014357 2301 014360 0705 014361 5145 6705 014362 4536 TEXT "%^E^SCAPE CHARACTER: " 014363 0536 014364 2303 014365 0120 014366 0540 014367 0310 014370 0122 014371 0103 014372 2405 014373 2272 014374 4000 6706 014375 4536 KERRMSG,TEXT "%^K^EYBOARD INPUT ERROR!%" /KEYBOARD ERROR MESSAGE 014376 1336 014377 0531 014400 0217 014401 0122 014402 0440 014403 1116 014404 2025 014405 2440 014406 0522 014407 2217 014410 2241 014411 4500 6707 6708 CRLF= .-1 /, MESSAGE 6709 014412 7736 NOFINIS,TEXT "?^U^NABLE TO TELL HOST THAT " /FINISH ERROR MESSAGE 014413 2536 014414 1601 014415 0214 014416 0540 014417 2417 014420 4024 014421 0514 014422 1440 014423 1017 014424 2324 014425 4024 014426 1001 014427 2440 6710 014430 2305 TEXT "SESSION IS FINISHED" 014431 2323 014432 1117 014433 1640 014434 1123 014435 4006 014436 1116 014437 1123 014440 1005 014441 0400 6711 014442 7736 NOTFND, TEXT "?^U^NABLE TO LOCATE FILE^" /FILE NOT FOUND MESSAGE 014443 2536 014444 1601 014445 0214 014446 0540 014447 2417 014450 4014 014451 1703 014452 0124 014453 0540 014454 0611 014455 1405 014456 3600 6712 014457 3613 PRMTMSG,TEXT "^K^ERMIT-^" /STATIC PORTION OF PROMPT MESSAGE 014460 3605 014461 2215 014462 1124 014463 5536 6713 014464 0000 PROMID, ZBLOCK 23 /MODIFIED PORTION OF PROMPT MESSAGE 014465 0000 014466 0000 014467 0000 014470 0000 014471 0000 014472 0000 014473 0000 014474 0000 014475 0000 014476 0000 014477 0000 014500 0000 014501 0000 014502 0000 014503 0000 014504 0000 014505 0000 014506 0000 6714 014507 7736 RERRMSG,TEXT "?^R^ECEIVE FAILURE^" /GENERAL RECEIVE FAILURE MESSAGE 014510 2236 014511 0503 014512 0511 014513 2605 014514 4006 014515 0111 014516 1425 014517 2205 014520 3600 6715 014521 7736 RFLNMSG,TEXT "?^E^RROR IN RECEIVED FILE NAME"/RECEIVED NAME ERROR MESSAGE 014522 0536 014523 2222 014524 1722 014525 4011 014526 1640 014527 2205 014530 0305 014531 1126 014532 0504 014533 4006 014534 1114 014535 0540 014536 1601 014537 1505 6716 014540 3600 TEXT "^" 6717 014541 3625 RHFEMSG,TEXT "^U^NABLE TO RECEIVE - HANDLER" /HANDLER FETCH ERROR MESSAGE 014542 3616 014543 0102 014544 1405 014545 4024 014546 1740 014547 2205 014550 0305 014551 1126 014552 0540 014553 5540 014554 1001 014555 1604 014556 1405 014557 2200 6718 014560 4005 TEXT " ERROR^" 014561 2222 014562 1722 014563 3600 6719 014564 7736 RIDEMSG,TEXT "?^U^NABLE TO RECEIVE -" /DIRECTORY FULL ERROR MESSAGE 014565 2536 014566 1601 014567 0214 014570 0540 014571 2417 014572 4022 014573 0503 014574 0511 014575 2605 014576 4055 6720 014577 4011 TEXT " INSUFFICIENT DIRECTORY SPACE" 014600 1623 014601 2506 014602 0611 014603 0311 014604 0516 014605 2440 014606 0411 014607 2205 014610 0324 014611 1722 014612 3140 014613 2320 014614 0103 014615 0500 6721 014616 4536 RIERMSG,TEXT "%^R^EMOTE LINE INPUT ERROR!%^" /REMOTE LINE ERROR MESSAGE 014617 2236 014620 0515 014621 1724 014622 0540 014623 1411 014624 1605 014625 4011 014626 1620 014627 2524 014630 4005 014631 2222 014632 1722 014633 4145 014634 3600 6722 014635 7736 RPERMSG,TEXT "?^U^NABLE TO RECEIVE LATEST " /LATEST PACKET ERROR MESSAGE 014636 2536 014637 1601 014640 0214 014641 0540 014642 2417 014643 4022 014644 0503 014645 0511 014646 2605 014647 4014 014650 0124 014651 0523 014652 2440 6723 014653 2001 TEXT "PACKET^" 014654 0313 014655 0524 014656 3600 6724 014657 7736 SDERMSG,TEXT "?^U^NABLE TO SEND - DIRECTORY "/DIRECTORY INPUT ERROR MESSAGE 014660 2536 014661 1601 014662 0214 014663 0540 014664 2417 014665 4023 014666 0516 014667 0440 014670 5540 014671 0411 014672 2205 014673 0324 014674 1722 014675 3140 6725 014676 0522 TEXT "ERROR" 014677 2217 014700 2200 6726 014701 7736 SHFEMSG,TEXT "?^U^NABLE TO SEND - HANDLER " /HANDLER FETCH ERROR MESSAGE 014702 2536 014703 1601 014704 0214 014705 0540 014706 2417 014707 4023 014710 0516 014711 0440 014712 5540 014713 1001 014714 1604 014715 1405 014716 2240 6727 014717 0522 TEXT "ERROR" 014720 2217 014721 2200 6728 014722 7736 SNDEMSG,TEXT "?^U^NABLE TO SEND" /GENERAL SEND ERROR MESSAGE 014723 2536 014724 1601 014725 0214 014726 0540 014727 2417 014730 4023 014731 0516 014732 0400 6729 014733 7736 UPERMSG,TEXT "?^U^NABLE TO RECEIVE - DATA " /RECEIVED DATA ERROR MESSAGE 014734 2536 014735 1601 014736 0214 014737 0540 014740 2417 014741 4022 014742 0503 014743 0511 014744 2605 014745 4055 014746 4004 014747 0124 014750 0140 6730 014751 0522 TEXT "ERROR" 014752 2217 014753 2200 6731 6732 $ /THAT'S ALL FOLK! ABFLAG 0002 ABMSG 4000 ABORT 4266 ABORT2 4303 ABORT3 4317 ABORT9 4321 AIWCNT 3501 AIWLUP 3437 AIWNUM 2404 AIWSTO 3440 AIWTES 3442 ALPHA 3247 ALPHA1 3262 ALPNM1 3245 ALPNUM 3237 AND377 0163 BININP 0027 unreferenced BRATE 0007 BRKXMT 2514 BUFCHE 5105 BUFFLD 0010 BUFPTR 3761 BUFSIZ 0200 CHKCLR 6453 CHKUP 6432 CKSUM 0522 CKSUM1 0535 CLCL 6136 CLDMZA 0204 CLEAR 4521 CLEAR0 0437 CLEAR5 0450 CLEAR6 0451 CLOOP 0200 CLOOP1 0217 CLOOP7 0227 CLOOP9 0235 CLOSE 0004 CLOSER 4027 CLOSIT 4015 CLOSLU 4013 CLOSMS 2040 CLSK 6131 CLSK8A 6137 CMDTBL 6000 CMERMS 4011 CMOUT1 0706 CMOUT2 0707 CMOUT3 0711 CMOUT4 0712 CMRESE 0674 CNTRLA 0001 CNTRLB 0002 unreferenced CNTRLC 0003 unreferenced CNTRLD 0004 unreferenced CNTRLE 0005 unreferenced CNTRLF 0006 unreferenced CNTRLG 0007 CNTRLH 0010 CNTRLI 0011 CNTRLJ 0012 CNTRLK 0013 unreferenced CNTRLL 0014 unreferenced CNTRLM 0015 CNTRLN 0016 unreferenced CNTRLO 0017 CNTRLP 0020 CNTRLQ 0021 CNTRLR 0022 unreferenced CNTRLS 0023 CNTRLT 0024 unreferenced CNTRLU 0025 unreferenced CNTRLV 0026 unreferenced CNTRLW 0027 unreferenced CNTRLX 0030 CNTRLY 0031 unreferenced CNTRLZ 0032 COLUMN 0013 COM 0017 COMIN 0630 COMOUT 0672 COMWAI 0676 CON2MS 4050 CON3MS 4062 CONBUF 3200 CONCLE 5703 CONINS 5365 CONNLU 5021 CONNMS 4023 CONOUT 5302 CONPUT 5676 CONREM 5366 CONRES 5705 CONSRV 5000 CONTEM 5341 CONTES 5330 CONTLS 5701 unreferenced CONTMS 4042 CONTSF 5677 unreferenced CONUPD 5341 CONWAI 5367 CORESE 5014 COUTIN 6601 unreferenced CPUIDL 2357 CPULIS 2042 CPUMSG 4064 CPUPRM 2277 CPUTEM 6750 CPUTMS 2134 CRESET 0420 CREST2 0430 CRLF 4411 CSTUFF 5316 CTLCTS 6466 CURSEQ 0037 DATWOR 3502 DAY 0006 DAYMSG 2145 DCAC 3200 DCADAT 3433 DEFCK 0061 DEFDEV 1456 DEFEOL 0055 DEFMAX 0136 DEFQCT 0043 DELETE 0177 DEV30 0000 DEV40 0001 DEVNAM 1460 DEVNUM 0071 DFDEV 1437 DGROUP 0020 DIRBUF 2400 DIRFLD 0010 DIRLIN 2402 DIRREC 3407 DIRXR 0012 DISPA2 0462 DISPAT 0452 DM1AN2 5722 DM1AND 0710 DM1INI 0200 DM1LIS 0600 DM1POR 0234 DM1SEC 0707 DM234 0360 DM2460 0361 DM2516 0362 DM2INI 0213 DM2LIS 0467 DM3425 0363 DM50 0332 DMI01 0325 DMI02 0326 DMI03 0327 DMI04 0330 DMI05 0331 DMI06 0332 DMI07 0333 DMI08 0334 DMI09 0335 DMI10 0336 DMI11 0337 DMI12 0340 DMI13 0341 DMI14 0342 DMI15 0343 DMI16 0344 DMI17 0345 DMIFLD 0010 DMINIT 0324 DMIOUT 0354 DMIPOR 0400 DMISET 0346 DMISKP 0352 DMPOMS 2147 DMPPMS 2171 DMPRZA 6640 DMSEND 0351 DMSER 6730 DMWAST 0357 DNERMS 4071 DOTAB 6415 DOUO 6460 DOUP 6455 DPAR1 1415 DPAR10 1453 DPAR11 1454 DPAR13 1455 DPAR2 1434 DPAR4 1442 DPAR8 1450 DPARS 1400 DSFLMS 4105 DUMBCF 6312 unreferenced DUMBFL 6310 unreferenced DUMBIE 6315 unreferenced DUMBSF 6311 unreferenced DVNUM 1464 DVNUM5 1500 DVNUM9 1507 ECHOFL 5153 ECHOSW 0014 EIGHT1 4426 EIGHT2 4435 EIGHT5 4437 EIGHT6 4440 EIGHTB 4422 EMPENT 3465 ENTER 0003 ENTSTR 2405 ESCAPE 0035 ESCFLA 5154 ESCH 5150 ESCHAR 0101 ESCLIS 5144 ESCLOS 5113 ESCOMP 5102 ESCPRN 4673 ESCTEM 4707 ESCTYP 5071 ESPRIN 4704 EXITKE 7577 FCLEMS 4114 FCMP1 2160 FCMP2 2161 FEND1 1251 FEND2 1256 FETCH 0001 FILBUF 2000 FILCLO 4000 FILECN 2400 FILENG 3512 FILFND 2506 FILMOD 0075 FILN8 4471 FILN8C 4521 FIN10 1546 FIN2 1537 FIN20 1550 FIN5 1542 FINSRV 1530 FLD1AD 4000 FLEN 0070 FLENGT 4026 FLEXIT 3477 FLOW 0001 FLOWAI 0702 FLOWFL 0102 FMAT1 2122 FMAT2 2150 FMATC 2155 FMATCH 2107 FMATF 2156 FMATP 2154 FMATT 2157 FMODE 0177 FNAME 3513 FNBLK 2510 FNDEND 1247 FNERMS 4127 FNPTR 0065 FORCEP 0054 unreferenced FP1 0321 FP2 0322 FP3 0323 FPACK 4512 FPACK0 0240 FPACK2 0261 FPACK3 0274 FPACK4 0312 FRECMS 4142 FRSTRE 2401 FSBLK 0067 FSENMS 4154 FSERMS 4165 FSWIT 2134 GENMSG 0001 GET6 4517 GET60 4441 GET6F 0061 GET6P 0060 GETBYT 3600 GETCOR 3607 GETEND 3663 GETEOF 3661 GETFL1 0665 GETFLO 0664 GETIR 0611 GETIR1 0627 GETLOO 3614 GETNEW 3605 GETREC 3610 GETSOH 0600 GETSRV 2600 GETSWT 4454 GETUPZ 3656 GSRV10 2625 unreferenced GSRV12 2630 GSRV15 2633 GSRV20 2636 GSRV21 2643 GSRV22 2644 GSRV40 2647 GSRV50 2651 GSRV80 2654 GSRV90 2626 HADR 1520 HANDNU 1527 HELPMS 4202 HELPSR 2263 HFETCH 1510 HNDADR 0053 HNDLR 6600 HOLDBF 1000 IAAC 6171 IACA 6167 ICF 6302 unreferenced ICLOSE 0001 ICTLZF 4033 IER02 3020 unreferenced IER05 3027 IER10 3032 unreferenced IER11 3034 IER20 3040 unreferenced IER21 3044 unreferenced IER22 3074 IER23 3055 IER24 3063 IER30 3121 unreferenced IER31 3123 IFL 6300 unreferenced IIE 6305 unreferenced ILINK 2200 ILINK0 2203 ILINK1 2217 ILINK2 2241 ILINK3 2246 ILINK4 2253 ILINK6 2257 ILINK7 2260 ILINK8 2261 ILINK9 2262 IMA12 7072 IMA5 7100 IMA61 7061 IMA610 7067 IMA612 7066 IMA8 7077 IMA8A 7070 IMA8E 7071 IMA8I 7074 IMA8IL 7034 IMA8L 7073 IMA8S 7076 IMAL8 7075 IMAOMN 7047 IMAUNK 7101 INCHAR 0015 INCHK 0741 INERTA 3222 INFLAG 0020 INI612 6674 INIDAT 6364 INIECH 0000 INIFLG 0063 INIOPB 0516 INITEN 0053 INITIA 6600 INITMS 2210 INITPR 6615 INLUP 0634 INLUP1 0637 INMSG2 2242 unreferenced INMSG3 2243 unreferenced INOP1 6303 unreferenced INOP2 6307 unreferenced INPERR 3141 INPS01 3012 INPS02 3015 INPS03 3020 INPS05 3023 unreferenced INPS10 3027 INPS20 3035 INPS22 3071 INPS30 3116 INPS40 3124 INPS50 3137 INPS80 3155 unreferenced INPS81 3156 INPS90 3200 INPS91 3213 INPSRV 3000 INPUT 6400 INPWAI 6401 INQUIR 0012 INREAD 0640 INSKIP 0636 INSTAT 0656 INTPC 0000 IOCLUP 0241 IOTCNT 0306 IPORT0 0030 IPORT1 0034 IRB 6306 IRS 6304 unreferenced ISF 6301 ISZC 2200 JMPC 5200 JMPIC 5600 JMSC 4200 JMSIC 4600 KCCIOT 6032 KCCZAP 6501 KCCZP2 6546 KERRLU 5115 KERRMS 4375 KERROR 5122 KEY 0003 KEYBUF 3000 KEYCHE 5221 KEYDSP 0026 KEYERR 0103 KEYGET 5247 KEYGEX 5274 KEYGNO 5300 KEYINP 5200 KEYINS 5370 KEYLAT 5155 KEYPRS 1261 KEYREM 5371 KEYTEM 5341 KEYUPD 5224 KGREAD 5252 unreferenced KGTEST 5250 unreferenced KMODE 0016 KP10 1270 KP20 1272 KP40 1307 KP45 1322 KP50 1323 KP90 1325 KRBIOT 6036 KRSIOT 6034 KRSZAP 6472 KSERRO 5244 KSFIOT 6031 KSFLOC 6470 unreferenced KWATCL 5277 KWATSE 5276 L11 6522 LATEST 0017 LCLMSG 2000 LEDERL 0000 LIN1 2003 LIN10 2056 LIN2 2032 LIN5 2037 LIN50 2062 LINBUF 2727 LINC 6141 LININP 2000 LINSIZ 0040 LOOK1 1336 LOOK2 1337 LOOK3 1340 LOOKLU 3416 LOOKUP 0002 unreferenced LOWER 0000 LOWERC 0143 LPTR 0031 LUKUP 3400 MACHIN 7000 MACHTE 7102 MESMOV 6734 MESMVL 6742 MFIE 6365 unreferenced MFL 6360 unreferenced MFSK 6361 unreferenced MIE 6365 unreferenced MLC 6362 MMOVCN 6751 MONMSG 2246 MONTH 0011 MOV8 4457 MOV8P 4470 MOVE 4520 MOVE0 1341 MOVE1 1345 MOVE4 0062 MOVE5 1354 MOVE6 1355 MPRESE 6367 MPSCC 6366 MQ 0064 MREC 0003 MRS 6364 unreferenced MSB 6363 MSEND 0002 MSF 6361 unreferenced MSGFLD 0010 MSGOUT 4665 NAKPAK 2551 NAM 1663 NAM0 1664 NAM1 1677 NAM2 1705 NAM3 1707 NAM4 1713 NAM9 1721 NAMBUF 2560 NEXTSE 3403 NL0000 7200 NL0001 7201 NL0002 7326 NL0003 7325 NL0004 7307 NL0006 7327 unreferenced NL0010 7215 NL0100 7203 NL3776 7354 NL3777 7350 unreferenced NL4000 7330 NL5777 7352 unreferenced NL6000 7333 unreferenced NL7775 7346 NL7776 7344 NL7777 7240 NODATA 6376 NOECHO 5077 NOESCA 5063 NOESEN 5104 NOFINI 4412 NOLOCA 5041 NOSP 1231 NOSP1 1234 NOSP3 1244 NOTFND 4442 NOTYET 0646 NOWAIT 0705 NUMRC 3263 NUMRC1 3276 NXTFIL 3462 OCLOSE 0000 OCTLZF 3762 ODNAME 0073 unreferenced ODNUMB 0074 ODT 0004 unreferenced OFF 0001 OFFLG 0072 OLS 6316 ON 0000 ONOP1 6313 unreferenced ONOP2 6317 unreferenced OP1 0514 OP2 0515 OPBUF 0466 OPBUF1 0476 OPBUF2 0512 OPC 6314 unreferenced OPORT0 0031 OPORT1 0035 OPRE 1134 OPRE1 1160 OPRE2 1162 OPRE3 1165 ORIGNA 0000 OTIME 0751 OUTCHA 5072 OUTEMP 0630 OUTFLA 0021 OWAIT 0715 OWASTE 0752 P7AGN 6506 P7CH 6406 P7CHAR 6504 P7ECHO 6424 P7OFF 6515 P7OUT 6535 P7TEMP 6561 P7TLS 6540 unreferenced P7TSF 6536 unreferenced PACK6 4516 PACK60 2063 PACK6F 0057 PACK6P 0056 PACK6T 2106 PACKIT 2101 PAGCNT 0002 PAKCKS 0036 unreferenced PAKPTR 0035 unreferenced PC8A 7050 PCON 0036 PDP 0002 PDUMRD 0274 PFN10 1660 PFN11 1661 PFN15 1662 PFNAM 1600 PFNAM3 1633 PFNAM7 1651 PFNAM9 1655 PLOAD 0303 PMR 6364 unreferenced PORT 0000 PORTCO 0036 PORTIN 0030 PORTOU 0031 PRETEM 1167 PRGFLD 0000 PRI8B 4514 PRI8B0 4400 PRI8B1 4405 PRIPAK 2275 PRMTMS 4457 PROMID 4464 PRQ3 6236 unreferenced PRSERR 0055 PRTINI 0255 PSEND 0300 PSETF1 0262 PSETF2 0275 PSKIP 0301 PSR 6363 unreferenced PTABLE 0030 PUPSTA 5156 PUTBYT 3671 PUTC 3646 PUTCOR 3753 PUTERR 3703 PUTINI 3706 PUTLOO 3714 PUTNEW 3712 PUTNEX 3701 PUTONE 3631 PUTREC 3754 PWASTE 0307 QFLAG 0040 R3L 7014 unreferenced RACD 6367 RATE 0007 RCAPAS 0052 unreferenced RCHAR 0023 RCHKT 0050 REC 0040 RECS10 2704 RECS20 2706 RECS30 2712 RECS60 2715 RECS80 2717 RECS90 2726 unreferenced RECSRV 2663 REM8B 4515 REM8B0 4411 REM8B1 4416 REMBUF 3600 REMCHE 5653 REMCLE 5730 REMINE 5440 REMINP 5400 REMINS 0107 REMOTE 0001 REMOUT 5600 REMPUT 5721 REMREM 0110 REMRES 5535 REMTEM 5637 REMTES 5626 REMTLS 5726 REMTSF 5724 REMUPD 5637 REMWAI 0105 REOL 0045 REPADR 0233 REPLAC 0220 REPLUP 0222 RERRMS 4507 RESET 0013 RETARG 0233 RETCNT 0005 RETRY 0033 REVDAT 4464 REVDGR 0400 REVISI 0007 RFLNMS 4521 RHFEMS 4541 RIDEMS 4564 RIERMS 4616 RIERTS 5136 RINBUF 3400 RINCHE 5442 RINERR 0104 RING2 5507 unreferenced RINGET 5502 RINGEX 5527 RINGNO 5533 RINGT0 5504 RINGT1 5506 RINGT2 5507 RININI 6613 RININS 5552 RINREA 5505 RINREM 5553 RINTEM 5554 RINTES 5503 RINUPD 5445 RINWAI 0106 RKCC0 6302 unreferenced RKCC1 6342 unreferenced RKFL0 6300 RKFL1 6340 RKIE0 6305 unreferenced RKIE1 6345 unreferenced RKRB0 6306 RKRB1 6346 RKRBIO 6406 RKSF0 6301 RKSF1 6341 RKSFIO 6401 RMAXL 0041 RMPTEM 5705 RMPUT0 5725 RMPUT1 5727 RMPUT2 5731 RNPAD 0043 unreferenced ROUTIN 6612 RPACK 4513 RPADC 0044 unreferenced RPERMS 4635 RQBIN 0047 unreferenced RQCTL 0046 RRBUF 6062 unreferenced RRDTA 6066 RREPT 0051 unreferenced RRLEN 6063 RRSEQ 6064 unreferenced RRTYP 6065 RSBIOT 6413 RSBUF 6222 RSCREN 4603 RSCRIB 4665 RSDTA 6226 RSLEN 6223 RSSEQ 6224 RSTUFF 5614 RSTYP 6225 RTCF0 6312 unreferenced RTCF1 6352 unreferenced RTERMI 6221 unreferenced RTFL0 6310 RTFL1 6350 RTIE0 6315 unreferenced RTIE1 6355 unreferenced RTIME 0042 unreferenced RTLS0 6316 RTLS1 6356 RTLSIO 6416 RTRYC 0034 RTSF0 6311 RTSF1 6351 RTSFIO 6411 RWATCL 5532 RWATSE 5531 S00 2451 SBOOT 7600 SCAN1 0024 SCAN2 0025 SCANTP 1260 SCNEL 1200 SCRCAS 4710 SCRCHA 4711 SCRCRL 4651 SCRFLI 4655 SCRIBE 4600 SCRLUP 4612 SCRPRL 4647 SCRPRN 4625 SCRPTR 4712 SDERMS 4657 SEN 0041 SER1 2411 SER2 2417 SER3 2424 SER4 2430 SER5 2441 SER6 2446 SER7 2454 SETBAU 0206 SETINI 4246 SHFEMS 4701 SLFLAG 2507 SLOOP 4076 SLOP01 4101 SLOP05 4112 SLOP10 4115 SLOP15 4120 SLOP20 4127 SLOP25 4132 SLOP35 4135 SLOP90 4200 SLOP92 4205 SMFL 6360 unreferenced SNDEMS 4722 SNDERR 2461 SNDI00 4222 SNDI02 4226 SNDI05 4231 SNDI10 4234 SNDI80 4241 SNDNAK 2526 SNDP 1723 SNDP1 1733 SNDP10 4053 SNDP11 4056 SNDP12 4061 SNDP15 4064 SNDP2 1734 SNDP20 4064 SNDP3 1735 SNDP4 1744 SNDP5 1741 SNDP9 1747 SNDP96 4212 SNDP98 4217 unreferenced SNDPRO 4034 SNDSRV 2400 SNDSV1 2434 SNERTA 2467 SP 1213 SP1 1216 SP3 1226 SPACAR 0416 SPACK 4511 SPACK0 0400 SPRINT 0000 SPZAP 6642 SRCHLU 3345 SRCHTA 3340 SRVFIN 1555 STACK 0131 STATE 0032 unreferenced STATT 0101 unreferenced STBRK 0102 STDAT 0104 STEOF 0132 STEOT 0102 STERR 0105 STFIL 0106 STGEN 0107 STNAK 0116 STRIN 0122 STSIN 0123 TABLEJ 0003 TADC 1200 TEMP 0022 unreferenced TEMPTR 3631 TENTRY 3471 TESTCH 5157 TESTKE 5033 THIRD 3701 THLPMS 2255 TIMEOU 0664 TLSIOT 6046 TRYDM1 6710 TRYDM2 6723 TSFIOT 6041 TST612 6635 TTY 0004 UCADDR 0077 UMSG 0000 UPADDR 0100 UPCPRT 6544 UPERMS 4733 UPONLY 0076 UPPERC 0103 UPRINT 6550 UPSTAT 0723 UQWAIT 6447 USEP0 0211 USER 0000 USR 7700 USRENT 0200 USRFLD 0010 USRIN 0010 USRLOA 0000 VERSIO 0012 W10 3306 W20 3321 W25 3324 W30 3330 W35 3331 W60 3334 W90 3336 W92 3337 WASTIM 0672 WCON0 6362 WCON1 6366 WILDF 0066 WRIPAK 3277 WRITE 4000 XR0 0010 XR1 0011 YEAR 0132 YEARMS 2274