home *** CD-ROM | disk | FTP | other *** search
/ Columbia Kermit / kermit.zip / burroughs / b68ker.ndl < prev    next >
Text File  |  2020-01-01  |  90KB  |  1,117 lines

  1. %                                                                      %18000000
  2. %     DEFINITIONS FOR APPLE PROTOCOL (WITHIN TTY REQUESTS)             %18000100
  3. %                                                                      %18000200
  4.   DEFINE                                                                18000300
  5.        UPLOADBLOCKING=     14      # % NUMBER OF RECORDS PER BLOCK      18000400
  6.                                      % FOR UPLOADING, MINUS 1           18000500
  7.      , APPLETRANSNO =      TALLY[0]#                                    18000700
  8.      , APPLECODE    =      TALLY[2]#                                    18000900
  9.      , DEQUEUE      =      APPLETRANSNO [5] #                           18001000
  10.      , BREAKNOTICE  =      APPLETRANSNO [6] #                           18001100
  11.      , WAIT4QUEUED  =      APPLETRANSNO [7] #                           18001200
  12.      , STOPONBRK    = BREAK:STOPPED #                                   18001300
  13.      , APPLESWITCHBASE (X, Y)                                           18001400
  14.                     =   BREAK           : STOPPED                       18001500
  15.                       , LOSSOFCARRIER   : STOPPED                       18001600
  16.                       , BUFOVFL         : X                             18001700
  17.                        , STOPBIT         : X                            18001800
  18.                       , Y                                               18001900
  19.                     #                                                   18002000
  20.      , APPLESW97    = APPLESWITCHBASE ( NULL                            18002100
  21.                                       , TIMEOUT : STOPPED               18002200
  22.                                       )                                 18002300
  23.                     #                                                   18002400
  24.      , APPLEERRSW(X,Y)= APPLESWITCHBASE (X,Y) #                         18002500
  25.      , XMIT(X)      = BEGIN                                             18002600
  26.                         CRC[0] = CRC[0] + X.                            18002700
  27.                         CHAR= X OR 4"80". % SET PARITY BIT              18002800
  28.                         TRANSMIT [STOPONBRK].                           18002900
  29.                       END                                               18003000
  30.                      #                                                  18003100
  31.      , XMITONE      = XMIT(CHAR) #                                      18003200
  32.      , SENDTRANSNO  = BEGIN                                             18003300
  33.                       CHAR = APPLETRANSNO AND 4"0F". % STRIP OFF [7:4]  18003400
  34.                       CHAR = CHAR + 4"41". % THIS MAKES ASCII A-P FROM 018003500
  35.                       XMITONE.                                          18003600
  36.                       END                                               18003700
  37.                      #                                                  18003800
  38.      , SENDHEXCHAR(X)=BEGIN                                             18003900
  39.                         IF X >9 THEN CHAR = X +  4"37"   %ASCII A-F     18004000
  40.                         ELSE         CHAR = X OR 4"30".  %ASCII 0-9     18004100
  41.                         XMITONE.                                        18004200
  42.                       END                                               18004300
  43.                      #                                                  18004400
  44.      , SENDCRC      = BEGIN                                             18004500
  45.                         CRC[1] = CRC[0] AND 4"0F".                      18004600
  46.                         CRC[0] = CRC[0] ASR 4.                          18004700
  47.                         SENDHEXCHAR (CRC[0]).                           18004800
  48.                         SENDHEXCHAR (CRC[1]).                           18004900
  49.                       END.                                              18005000
  50.                     #                                                   18005100
  51.      , SENDPADDING         = TRANSMIT "BB" [STOPONBRK] #                18005200
  52.      , REPLY (TYPE, FATAL) =    % SEND ACKNOWLEDGEMENT OR               18005300
  53.           BEGIN                 % CONTROL MSG TO APPLE                  18005400
  54.              CODE = ASCII.                                              18005500
  55.              INITIATE TRANSMIT.                                         18005600
  56.              CRC[0] = 0.                                                18005700
  57.              SENDPADDING.                                               18005800
  58.              CODE = BINARY.                                             18005900
  59.              XMIT (ASCIISTX).                                           18006000
  60.              SENDTRANSNO.                                               18006100
  61.              XMIT (TYPE).                                               18006200
  62.              IF FATAL THEN XMIT(ASCIIA) ELSE XMIT(ASCIIB).              18006300
  63.              XMIT (ASCIIETX).                                           18006400
  64.              SENDCRC.                                                   18006500
  65.              XMIT (ASCIICR).                                            18006600
  66.              FINISH TRANSMIT.                                           18006700
  67.            END                                                          18006800
  68.      #                                                                  18006900
  69.      , STOPTHEAPPLE =                                                   18007000
  70.          BEGIN                                                          18007100
  71.            REPLY (ASCIICAN, TRUE).                                      18007200
  72.            CODE=ASCII.                                                  18007300
  73.            INITIATE RECEIVE.                                            18007400
  74.            RECEIVE (5 SEC) CHAR [97,END:STOPPED].                       18007500
  75.            IF CHAR = "S" THEN                                           18007600
  76.              BEGIN                                                      18007700
  77.                RECEIVE (150 MILLI) "TOP" [97, FORMATERR:RETRYSTOP].     18007800
  78.                RECEIVE (150 MILLI) CHAR  [97, END: STOPPED].            18007900
  79.              END.                                                       18008000
  80.        RETRYSTOP:       % TRY TO STOP THE APPLE AGAIN                   18008100
  81.            DISCARDTHEREST (RETRYSTOP,RETRYSTOP1).                       18008200
  82.        RETRYSTOP1:                                                      18008220
  83.            %    TOGGLE LAST BIT OF TRANS NBR:  ALTERNATE GOOD AND BAD   18008240
  84.            %    TRANSMISSION NUMBERS TO SHAKE APPLE LOOSE               18008250
  85.            APPLETRANSNO=APPLETRANSNO XOR 1.                             18008260
  86.            GO STOPAPPLE. % TO TRY AGAIN                                 18008280
  87.          END.                                                           18008300
  88.      #                                                                  18008400
  89.      , IFWRONGTRANSNO=                                                  18008500
  90.                       CHAR = CHAR - 4"41". %CONVERT FROM 7"A->P" TO 0-F 18008600
  91.                       IF CHAR < 4"10" THEN                              18008700
  92.                         BEGIN                                           18008800
  93.                           CHAR = CHAR XOR APPLETRANSNO. %EXPOSE         18008900
  94.                           CHAR = CHAR AND 4"0F".        %DIFFERENCE     18009000
  95.                         END.                                            18009100
  96.                       IF CHAR NEQ 0 % THEN WE RECEIVED WRONG TRANS #    18009200
  97.                     #                                                   18009300
  98.      , INCREMENTTRANS =                                                 18009400
  99.                       BEGIN                                             18009500
  100.                         APPLETRANSNO    = APPLETRANSNO + 1.             18009600
  101.                         APPLETRANSNO[4] = FALSE.                        18009700
  102.                       END                                               18009800
  103.                       #                                                 18009900
  104.      , MASKOFFPARITY= CHAR[7] = FALSE #                                 18010000
  105.      , RECEIVEONE(X)= RECEIVE (150 MILLI) CHAR [99,END:X] #             18010100
  106.      , IFRECEIVE    = RECEIVEONE (NAKEND).                              18010200
  107.                       IF CHAR =                                         18010300
  108.                     #                                                   18010400
  109.      , DISCARDTHEREST (LOOP, EXIT) =                                    18010500
  110.                       BEGIN                                             18010600
  111.                         RECEIVEONE (EXIT).                              18010700
  112.                         GO LOOP.                                        18010800
  113.                       END                                               18010900
  114.                     #                                                   18011000
  115.      , STOPORSKIPPADDING (WHENSTOP) =                                   18011100
  116.                       IF CHAR = "A" THEN % SKIP INITIAL "A"S WHICH ARE  18011200
  117.                         BEGIN            % PADDING INSERTED BY APPLE    18011300
  118.                    SKIPFIRSTAS:                                         18011400
  119.                           IFRECEIVE "A" THEN GO SKIPFIRSTAS.            18011500
  120.                         END                                             18011600
  121.                       ELSE                                              18011700
  122.                       IF CHAR =                 "S" THEN                18011800
  123.                         BEGIN                                           18011900
  124.                           IFRECEIVE             "T" THEN                18012000
  125.                             BEGIN                                       18012100
  126.                               IFRECEIVE         "O" THEN                18012200
  127.                                 BEGIN                                   18012300
  128.                                   IFRECEIVE     "P" THEN                18012400
  129.                                     BEGIN                               18012500
  130.                                       RECEIVEONE (STOPRECEIVED).        18012600
  131.                                       IF FALSE THEN                     18012700
  132.                                         BEGIN                           18012800
  133.                    STOPRECEIVED:          WHENSTOP.                     18012900
  134.                         END.END.END.END.END                             18013000
  135.      #                                                                  18013100
  136.      .                                                                  18013200
  137. %                                                                       18020000
  138. %       DEFINES FOR KERMIT REQUESTS (WITHIN TTY REQUESTS)               18020100
  139. %                                                                       18020200
  140. DEFINE                                                                  18020300
  141.         KERCNT = TALLY [0] #                                            18020400
  142.     ,   KERSEQ = TALLY [3] #                                            18020500
  143.     ,   KERCHAR(X)   = X + 32 #                                         18020600
  144.     ,   KERUNCHAR(X) = X - 32 #                                         18020700
  145.     ,   KERCTL(X)    = X XOR 64 #                                       18020800
  146.     ,   KERRCV      = RECEIVE (50 MILLI) #                              18020900
  147.     ,   KERRCVCHAR  = KERRCV CHAR #                                     18021000
  148.     ,   KERCALCBCC =                                                    18021100
  149.               BEGIN                                                     18021200
  150.                 KERCNT = CRC[0] AND 4"C0".                              18021300
  151.                 KERCNT = KERCNT ASR 6.                                  18021400
  152.                 CRC[0] = CRC[0] + KERCNT.                               18021500
  153.                 CRC[0] = CRC[0] AND 4"3F".                              18021600
  154.                 CRC[0] = KERCHAR (CRC[0]).                              18021700
  155.               END  #                                                    18021800
  156.     ,   KERPKTHEAD (CNT,TYPE) =                                         18021900
  157.               BEGIN                                                     18022000
  158.                 INITIATE TRANSMIT.                                      18022100
  159.                 KERTRANSMIT(SOH).  % SEND MARK                          18022200
  160.                 KERTRANSMIT(CNT).  % SEND COUNT                         18022300
  161.                 CHAR = KERSEQ.                                          18022400
  162.                 KERTRANSMIT(CHAR). % SEND SEQ                           18022500
  163.                 CRC[0] = CNT + CHAR.                                    18022600
  164.                 KERTRANSMIT(TYPE).                                      18022700
  165.                 CRC[0] = CRC[0] + CHAR.                                 18022800
  166.               END #                                                     18022900
  167.     ,   KERPKTTAIL =                                                    18023000
  168.               BEGIN                                                     18023100
  169.                 KERCALCBCC.                                             18023200
  170.                 CHAR = CRC[0].                                          18023250
  171.                 KERTRANSMIT(CHAR).                                      18023300
  172.                  IF CHAR = 4"20" THEN KERTRANSMIT(4"58"). % BUG IN ALTOS18023400
  173.                 KERTRANSMIT(CR).                                        18023500
  174.                  FINISH TRANSMIT.                                       18023600
  175.               END   #                                                   18023700
  176.     ,   KERREPLY (TYPE) =   % SEND AN EMPTY PACKET (E.G. ACK, NAK, BRK) 18023800
  177.               BEGIN                                                     18023900
  178.                 KERPKTHEAD (4"23",TYPE).                                18024000
  179.                 KERPKTTAIL.                                             18024100
  180.                 CODE=ASCII                                              18024200
  181.               END   #                                                   18024300
  182.     .                                                                   18024400
  183.                                                                         22000000
  184. REQUEST READTELETYPE:  %************************************************22000200
  185. %        TOG       0         NEW LINE                                   22000400
  186. %        TOG       1         CR REQUIRED FOR NEW LINE                   22000600
  187. %        TOG       2         READ PAPER TAPE                            22000800
  188. %        TOG       3         ERROR TERMINATION READING PAPER TAPE       22001000
  189. %        TOG       4         TURN OFF SEQUENCE MODE                     22001200
  190. %        TOG       5         PAPERMOTION=TRUE ON LAST OUTPUT            22001400
  191. %        TOG       6         END OF PAPER TAPE PUNCH                    22001600
  192. %        TOG       7         PUNCH PAPER TAPE HEADER                    22001800
  193. %        CRC       0         TEMPORARY COUNTER                          22002000
  194. %        CRC       1         TEMPORARY CHARACTER STORAGE                22002200
  195. %        TALLY     0         APPLE FILE XFER PROTOTOL XMISSION #        22002400
  196. %        TALLY     1         *****  AVAILABLE  *****                    22002600
  197. %        TALLY     2         APPLE/KERMIT PROTOCOL CONTROL INFO         22002800
  198. %***********************************************************************22003000
  199.          DEFINE                                                         22003200
  200.               TURNOFFSEQUENCE     = TOG[4]#.                            22003400
  201.          ERROR[0] =                                                     22003600
  202.               STOPBIT:STOPBITERR,                                       22003800
  203.               BUFOVFL:BUFOVFLERR,                                       22004000
  204.               BREAK:BROKEN.                                             22004200
  205.                                                                         22004400
  206. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%22004600
  207. %                          APPLE PROTOCOL                               22004800
  208. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%22005000
  209.                                                                         22005200
  210. DEFINE BEIMPATIENT      = APPLECODE [3] #  %%%%%%%%%%                   22005400
  211.      , EOTFOUND         = APPLECODE [3] #  % DEFINE                     22005600
  212.      , REPORTDOWNRESULT = APPLECODE [2] #  % BITS                       22005800
  213.      , GETFILENAME      = APPLECODE [1] #  % IN                         22006000
  214.      , UPLOADING        = APPLECODE [0] #  % APPLECODE                  22006200
  215.                                                                         22006400
  216.      , FIRSTRECEIVE (TIME,ONEND)=                                       22006600
  217.                             RECEIVE (TIME) CHAR [98, END:ONEND          22006800
  218.                                                 ,CONTROL:CONTROLMSGRECD 22007000
  219.                                                 ,WRU    :CONTROLMSGRECD 22007200
  220.                                                 ]                       22007400
  221.                         #                                               22007600
  222.      , RECEIVEFIRSTCHAR (TIMELIMIT) =                                   22007800
  223.                             FIRSTRECEIVE (TIMELIMIT,STOPPED) #          22007900
  224.      , RECEIVECHAR(X)   =                                               22008000
  225.                           BEGIN                                         22008200
  226.                             RECEIVEONE (X).                             22008400
  227.                             MASKOFFPARITY.                              22008600
  228.                             CRC[0] = CRC[0] + CHAR                      22008800
  229.                           END                                           22009000
  230.                         #                                               22009200
  231.      , GETHEXCHAR       =                                               22009400
  232.                           BEGIN                                         22009600
  233.                             RECEIVEONE (NAKIT).                         22009800
  234.                             MASKOFFPARITY.                              22010000
  235.                             CHAR = CHAR - 4"30".                        22010200
  236.                             IF CHAR > 9 THEN CHAR = CHAR - 7. % FOR A-F 22010400
  237.                             IF CHAR > 4"0F" THEN GO BADTEXT.            22010600
  238.                           END                                           22010800
  239.                         #                                               22011000
  240.      , STOREX(X)        = STORE X [ENDOFBUFFER : NAKIT] #               22011200
  241.      , REPEATTILFULL    =                                               22011400
  242.                           IF LINECOUNT = UPLOADBLOCKING THEN            22011600
  243.                               GO RETURNMSG                              22011800
  244.                           ELSE                                          22012000
  245.                             BEGIN                                       22012200
  246.                               LINECOUNT = LINECOUNT +1.                 22012400
  247.                               GO NEXTDATABLOCK                          22012600
  248.                             END                                         22012800
  249.                         #                                               22013000
  250.      .                                                                  22013200
  251. %       KERMIT DEFINES:                                                 22013210
  252. DEFINE KPKTRCV =                                                        22013215
  253.               BEGIN                                                     22013220
  254.                 KERRCVCHAR [150].                                       22013225
  255.                 CRC[0] = CRC[0] + CHAR.                                 22013230
  256.               END  #                                                    22013235
  257.     ,  KERTRANSMIT(WHAT)  = TRANSMIT WHAT [BREAK: KBROKEN]  #           22013240
  258.     ,  ENFORCEHALFDUP (AGAIN,NEXT) =                                    22013245
  259.               BEGIN                                                     22013250
  260.                 KERRCVCHAR [BREAK:  KBROKEN, BUFOVFL: NULL              22013252
  261.                            ,STOPBIT:NULL,    TIMEOUT:NEXT].             22013255
  262.                 GO AGAIN                                                22013260
  263.               END       #                                               22013265
  264.     .                                                                   22013270
  265.           ERROR[97] = APPLESW97.                                        22013400
  266.           ERROR[98] = APPLEERRSW (SKIPFIRSTAS,TIMEOUT:NAKIT  ).         22013600
  267.           ERROR[99] = APPLEERRSW (BADTEXT,TIMEOUT:STOPPED).             22013800
  268. ERROR [150] =  BREAK:  KBROKEN ,BUFOVFL: KNAK                           22013810
  269.               ,STOPBIT:KNAK    ,TIMEOUT: KNAK    .                      22013820
  270.                                                                         22014000
  271. CODE=ASCII.                                                             22014005
  272. IF DEQUEUE THEN                                                         22014010
  273.   BEGIN                                                                 22014015
  274.     DEQUEUE=FALSE.                                                      22014020
  275.     BREAK[TRANSMIT]=TRUE.                                               22014025
  276.     TERMINATE ERROR.                                                    22014030
  277.   END.                                                                  22014035
  278. IF APPLECODE = 4"FF" THEN  % KERMIT AUTO RCV DATA MODE                  22014045
  279. %%%%%%%%%%%%%%%%%%%                                                     22014050
  280. %       KERMIT AUTO RECEIVE --  FOR RECEIVING AND ACKING KERMIT         22014055
  281. %                               "D" PACKETS, UNTIL SOME OTHER PACKET    22014060
  282. %                               COMES ALONG                             22014065
  283. %%%%%%%%%%%%%%%%%%                                                      22014070
  284.   BEGIN                                                                 22014075
  285.     APPLECODE = 0.   % ONLY STAY IN RCV MODE IF SPECIFICALLY OK TO DO SO22014080
  286.     INITIATE RECEIVE (NULL).                                            22014085
  287.     KERCNT = 2.      % ALLOW 1 RETRY LOOKING FOR SOH                    22014090
  288. KWAIT1:                                                                 22014095
  289.     IF KERCNT=0 THEN GO RECVCHAR        % DROP OUT OF AUTO RCV          22014100
  290.     ELSE                                                                22014105
  291.       BEGIN                                                             22014110
  292.         RECEIVE (5 SEC) CHAR [BREAK:RECVCHAR  % DROP OUT OF AUTO RCV    22014115
  293.                              ,BUFOVFL:KWAIT1, STOPBIT:KWAIT1            22014120
  294.                              ,TIMEOUT:KSENDNAK                          22014125
  295.                              ,SOH: KSTARTPKT                            22014130
  296.                              ,CONTROL: CONTROLMSGRECD].                 22014132
  297. KWAIT2: KERRCVCHAR [BREAK:BROKEN   % DROP OUT OF AUTO RECV              22014135
  298.                    ,BUFOVFL: KWAIT1, STOPBIT:KWAIT2, TIMEOUT: KWAIT3    22014140
  299.                    ,SOH: KSTARTPKT].                                    22014145
  300.         GO KWAIT2.  % KEEP LOOKING FOR SOH                              22014150
  301. KWAIT3: KERCNT= KERCNT-1.  % DECREMENT SOH WAIT RETRY COUNT             22014155
  302.         GO KWAIT1.                                                      22014160
  303. KSTARTPKT:      % SOH HAS BEEN RECEIVED: RECEIVE PACKET                 22014165
  304.         CODE=BINARY.    % PREVENT TRANSLATION TO EBCDIC                 22014170
  305.             CRC[0]=0.                                                   22014175
  306.             KPKTRCV.    % GET COUNT                                     22014180
  307.             KERCNT= KERUNCHAR (CHAR).                                   22014185
  308.             KERCNT= KERCNT -3.  % NUMBER CHARACTERS OF DATA             22014190
  309.             KPKTRCV.    % GET SEQ                                       22014195
  310.             GETSPACE [KNAK].                                            22014200
  311.             IF CHAR = KERSEQ THEN                                       22014205
  312.               BEGIN                                                     22014210
  313.                 KPKTRCV.        % GET TYPE                              22014215
  314.                 IF CHAR = 4"44" THEN  % "D" PACKET                      22014220
  315.                   BEGIN                                                 22014225
  316.                     STORE 4"BF".  % MARK AS NDL PROCESSED "D" PKT       22014230
  317. KGETDATA:           IF KERCNT NEQ 0 THEN  % PACKET DATA LOOP            22014235
  318.                       BEGIN                                             22014240
  319.                         KPKTRCV.                                        22014245
  320.                         KERCNT= KERCNT - 1.                             22014250
  321.                         IF CHAR = 4"23" THEN  % # = QUOTE FOR CNTL CHAR 22014255
  322.                             IF KERCNT > 0 THEN   % WHICH IT SHOULD BE   22014260
  323.                               BEGIN                                     22014265
  324.                                 KPKTRCV.     % GET QUOTED CHAR          22014270
  325.                                 KERCNT= KERCNT -1.                      22014275
  326.                                 IF CHAR NEQ 4"23" THEN  % NOTE: "##"="#"22014280
  327.                                     CHAR= KERCTL(CHAR).                 22014285
  328.                               END.                                      22014290
  329.                         STORE.                                          22014295
  330.                         GO KGETDATA.  % LOOP FOR MORE                   22014300
  331.                       END.                                              22014305
  332.                     KERRCVCHAR [150].  % GET CRC[0]                     22014310
  333.                     KERCALCBCC.  % COMPARE OUR BCC WITH REMOTE'S        22014315
  334.                      IF CRC[0]=CHAR THEN  % BCC OK                      22014320
  335.                       BEGIN                                             22014325
  336. KACK:                   ENFORCEHALFDUP (KACK,KSENDACK).                 22014330
  337. KSENDACK:               KERREPLY (4"59").  % SEND "Y" PKT               22014335
  338.                         IF KERSEQ = 4"5F" THEN KERSEQ= 4"20"  % FOLD SEQ22014340
  339.                         ELSE KERSEQ= KERSEQ+1.  % INCREMENT SEQ         22014345
  340.                         APPLECODE=4"FF".        % STAY IN AUTO RCV MODE 22014350
  341.                       END                                               22014355
  342.                      ELSE  % BAD BCC                                    22014360
  343.                         IF RETRY = 0 THEN  % TOO MANY NAKS              22014365
  344.                           BEGIN                                         22014370
  345. KBRK:                       ENFORCEHALFDUP(KBRK,KSENDBRK).              22014375
  346. KSENDBRK:                   KERREPLY (4"42").  % SEND "B" PKT           22014380
  347.                             INITIALIZE TEXT. % SEND FAKE "B" PKT TO PGM 22014385
  348.                             STORE SOH.                                  22014390
  349.                             STORE 4"23".  % PKT LENGTH                  22014395
  350.                             CHAR= KERSEQ.                               22014396
  351.                             STORE.        % SEQ #                       22014400
  352.                             STORE 4"42".  % "B"                         22014405
  353.                             CHAR = CRC[0].      % BCC IS:               22014406
  354.                             STORE.        % SAME AS IN PKT SENT TO RMT  22014410
  355.                           END                                           22014415
  356.                         ELSE    % RETRY NOT EXHAUSTED-- SEND NAK PKT    22014420
  357.                           BEGIN                                         22014425
  358. KNAK:                       ENFORCEHALFDUP(KNAK,KSENDNAK).              22014430
  359. KSENDNAK:                   KERREPLY(4"4E").  % SEND "N" PKT            22014435
  360.                             RETRY= RETRY - 1.                           22014440
  361.                             APPLECODE=4"FF".  % STAY IN AUTO RCV        22014445
  362.                             KERCNT=0.                                   22014446
  363.                             TERMINATE NOINPUT.                          22014450
  364.                   END.    END                                           22014455
  365.                 ELSE   % NOT "D" PKT                                    22014460
  366.                   BEGIN                                                 22014465
  367.                     CRC[0]= CHAR.  % SAVE PACKET TYPE                   22014470
  368.                     STORE SOH.                                          22014475
  369.                     KERCNT= KERCNT + 3.  % RESTORE COUNT                22014480
  370.                     CHAR= KERCHAR(KERCNT).                              22014485
  371.                     STORE.                                              22014490
  372.                     CHAR= KERSEQ.                                       22014492
  373.                     STORE.         % SEQ #                              22014495
  374.                     CHAR= CRC[0].  % HOLDS PACKET TYPE                  22014500
  375.                     STORE.                                              22014502
  376. KRCVTEXT:           CODE=ASCII.                                         22014505
  377.                     KERCNT=0.                                           22014506
  378.                     GO RECVTEXT. % GET REST OF PACKET                   22014510
  379.               END.END                                                   22014515
  380.             ELSE  % MIS-MATCHED SEQ                                     22014520
  381.               BEGIN                                                     22014525
  382.                 IF CHAR = 4"5F" AND KERSEQ = 4"20" THEN  % WAS REXMITTED22014530
  383.                   BEGIN                                                 22014535
  384.                     KERSEQ= 4"5F".                                      22014540
  385.                     GO KRTXACK.                                         22014545
  386.                   END                                                   22014550
  387.                 ELSE  % NOT RETRANSMIT OF FOLLOWED BY SEQ FOLD AROUND   22014555
  388.                   BEGIN                                                 22014560
  389.                     CHAR = CHAR + 1.  % BUMP UP RECEIVED PACKET #       22014565
  390.                     IF CHAR = KERSEQ THEN  % PACKET WAS RETRANSMITTED   22014570
  391.                       BEGIN                                             22014575
  392.                         KERSEQ= KERSEQ - 1.  % BACK UP OUR PACKET COUNT 22014580
  393. KRTXACK:                STORE 4"BF".  % RETURN EMPTY PACKET TO PGM      22014585
  394.                         GO KACK.      % RE-ACK THE PACKET               22014590
  395.                       END                                               22014595
  396.                     ELSE  % NOT A RETRANSMITTED PACKET                  22014600
  397.                       BEGIN                                             22014605
  398.                         KPKTRCV.  % GET TYPE                            22014610
  399.                         IF CHAR = 4"53" THEN   % "S" PKT                22014615
  400.                                 % SEND GARBAGE TO PGM - THEN WAIT FOR   22014620
  401.                                 % RETRANSMIT OF "S" PACKET              22014625
  402.                             GO KRCVTEXT                                 22014630
  403.                         ELSE    % STRAY PACKET -- NAK IT                22014635
  404.                             GO KNAK.                                    22014640
  405.               END.END.END.                                              22014645
  406.         CODE = ASCII.   % NORMAL EXIT                                   22014650
  407.     INITIALIZE RETRY.                                                   22014655
  408.     KERCNT= 0.                                                          22014656
  409.     GO RETURNMSG.                                                       22014660
  410. KBROKEN:                                                                22014665
  411.     CODE=ASCII.                                                         22014670
  412.     GO BROKEN.                                                          22014675
  413. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%                                 22014680
  414.   END.END  % OF KERMIT AUTO RECIEVE                                     22014685
  415. %                                                                       22014690
  416. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%                                 22014695
  417. ELSE    % NORMAL APPLE CODE HERE                                        22014700
  418. IF APPLECODE NEQ 0 THEN                                                 22014710
  419.   BEGIN                                                                 22014720
  420.     IF BREAKNOTICE AND NOT WAIT4QUEUED THEN                             22014800
  421.                % WE HAVE TO NOTIFY PROGRAM OF BREAK                     22015000
  422.         BREAKNOTICE = FALSE     % AND THEN GO STOPPED                   22015200
  423.     ELSE                                                                22015400
  424.     IF REPORTDOWNRESULT THEN                                            22015600
  425.          IF APPLECODE = 4"04" THEN  % NO OTHER BITS SET (NO ERRS)       22015800
  426.            BEGIN                                                        22016000
  427.              GETSPACE [TRYAGAIN].                                       22016200
  428.              STORE DOWNLOADEDOK [ENDOFBUFFER:TRYAGAIN].                 22016400
  429.              GO FINISHEDREQUEST.                                        22016600
  430.            END                                                          22016800
  431.          ELSE  % GO STOPPED                                             22017000
  432.     ELSE                                                                22017200
  433.       BEGIN                                                             22017400
  434.         LINECOUNT = 0.                                                  22017600
  435.         IF GETFILENAME AND BEIMPATIENT THEN RETRY=100.                  22017800
  436. NEXTDATABLOCK:                                                          22018000
  437.         CODE = ASCII.                                                   22018200
  438.         IF GETFILENAME THEN                                             22018400
  439.           BEGIN                                                         22018600
  440.             IF WAIT4QUEUED THEN  % GO TO XMIT REQUEST ONCE              22018800
  441.               BEGIN              % SOMETHING IS QUEUED                  22019000
  442.                 LINE(BUSY) = FALSE.                                     22019200
  443.                 IF STATION(QUEUED) THEN                                 22019400
  444.                     TERMINATE NOINPUT.                                  22019600
  445.               END.                                                      22019800
  446.             INITIATE RECEIVE (NULL).                                    22020000
  447.             IF BEIMPATIENT THEN   % WE MAY HAVE MISSED THE              22020200
  448.               BEGIN               % TRANSMISSION, IN WHICH CASE         22020400
  449.                 APPLETRANSNO = 0. % WE CAN PROD THE APPLE TO            22020600
  450.                 FIRSTRECEIVE (10 SEC, SKIPFIRSTSTOP). % SEND ANOTHER    22020800
  451.                 IF FALSE THEN  %ONLY IF WE GOT A CR ABOVE               22020840
  452.                   BEGIN                                                 22020860
  453. SKIPFIRSTSTOP:      RECEIVE (150 MILLI) "STOP" [99,FORMATERR:STOPPED].  22020880
  454.                     RECEIVE (150 MILLI) CHAR [97,END:STOPSKIPPED].      22020900
  455.                     GO STOPPED.   % WASN'T A CR                         22020920
  456. STOPSKIPPED:        RECEIVEFIRSTCHAR(NULL).                             22020940
  457.                   END.                                                  22020960
  458.                 BEIMPATIENT = FALSE.                                    22021000
  459.               END                                                       22021200
  460.             ELSE RECEIVEFIRSTCHAR (NULL).                               22021400
  461.             INITIALIZE RETRY.                                           22023400
  462.             LINE(BUSY) = TRUE.                                          22023600
  463.           END                                                           22023800
  464.         ELSE                                                            22024000
  465.           BEGIN                                                         22024200
  466.             INITIATE RECEIVE (NULL).                                    22024400
  467.             RECEIVEFIRSTCHAR (5 SEC).                                   22024600
  468.           END.                                                          22024800
  469.         STOPORSKIPPADDING (GO STOPPED).                                 22025000
  470.         IF WAIT4QUEUED THEN  % WE WANT TO DETECT A "STOP" OR MANUAL     22025200
  471. IGNORETHEREST:               % KEYIN, BUT IGNORE ANYTHING ELSE          22025400
  472.             DISCARDTHEREST(IGNORETHEREST,TRYAGAIN)                      22025600
  473.         ELSE GETSPACE [TRYAGAIN].                                       22025800
  474. ISTHISSTX:                                                              22026000
  475.         IF CHAR=STX THEN                                                22026200
  476.           BEGIN                                                         22026400
  477. STXFOUND:   CODE=BINARY.                                                22026600
  478.                 CRC[0] = CHAR.                                          22026800
  479.                 RECEIVECHAR (NAKIT).                                    22027000
  480.                 IF GETFILENAME THEN                                     22027200
  481.                   BEGIN                                                 22027400
  482.                     APPLETRANSNO= CHAR-4"41".                           22027600
  483.                     APPLETRANSNO= APPLETRANSNO AND 4"0F".               22027800
  484.                         % NOTE THAT BITS 4-7 ARE ZEROED --              22028000
  485.                         % BEWARE OF BOOLEANS USING THESE BITS.          22028200
  486.                   END                                                   22028400
  487.                 ELSE                                                    22028600
  488.                   BEGIN                                                 22028800
  489.                     IFWRONGTRANSNO THEN GO BADTEXT.                     22029000
  490.                   END.                                                  22029200
  491.                 RECEIVECHAR (NAKIT).                                    22029400
  492.                 IF CHAR = ASCIICAN OR CHAR = ASCIISI THEN               22029600
  493. CANNED:             DISCARDTHEREST (CANNED,STOPAPPLE)                   22029800
  494.                 ELSE                                                    22030000
  495.                 IF CHAR = ASCIIACK OR CHAR = ASCIINAK THEN              22030200
  496.                     GO BADTEXT                                          22030400
  497.                 ELSE                                                    22030600
  498.                 IF CHAR = ASCIISOH THEN % FILE NAME FOLLOWS             22030800
  499.                     IF GETFILENAME THEN % THIS IS WHAT WE WANT          22031000
  500.                       BEGIN                                             22031200
  501.                         STOREX (FILEFOLLOWS).                           22031400
  502.                         RECEIVECHAR(NAKIT). % PREPARE TO TRANS-         22031600
  503.                       END                   % FER TEXT                  22031800
  504.                     ELSE GO NAKIT                 % UNEXPECTED          22032000
  505.                 ELSE  % THIS IS A BLOCK OF DATA                         22032200
  506.                     IF GETFILENAME THEN GO NAKIT % UNEXPECTED           22032400
  507.                     ELSE EOTFOUND=FALSE.                                22032600
  508. STORETEXT:      IF CHAR  =  ASCIIEOT THEN EOTFOUND=TRUE.                22032800
  509.                 STOREX (CHAR).                                          22033000
  510.                 RECEIVECHAR (NAKIT).                                    22033200
  511.                 IF CHAR NEQ ASCIIETX THEN GO STORETEXT.                 22033400
  512.                                                                         22033600
  513.                 % CHECK CRC:                                            22033800
  514.                 GETHEXCHAR.                                             22034000
  515.                 CHAR   = CHAR   ASL 4.                                  22034200
  516.                 CRC[0] = CRC[0] XOR CHAR. %CHECK LEFT 4 BITS            22034400
  517.                 GETHEXCHAR.                                             22034600
  518.                 CRC[0] = CRC[0] XOR CHAR.                               22034800
  519.             CODE=ASCII.                                                 22035000
  520.             IF CRC[0] NEQ 0 THEN                                        22035200
  521.               BEGIN                                                     22035400
  522.                 EOTFOUND=FALSE.                                         22035600
  523. BADTEXT:        DISCARDTHEREST (BADTEXT, NAKIT)                         22035800
  524.               END                                                       22036000
  525.             ELSE    % EVERYTHING REC'D OK                               22036200
  526.               BEGIN                                                     22036400
  527.                 RECEIVEONE(GOTIT).                                      22036600
  528.                 GO NAKIT.     % NOT A CR AT END                         22036800
  529. GOTIT:          INITIALIZE RETRY.                                       22037000
  530.                 IF UPLOADING THEN                                       22037200
  531.                     IF EOTFOUND THEN                                    22037400
  532.                       BEGIN                                             22037600
  533. FINISHEDREQUEST:        APPLECODE=0.                                    22037800
  534.                         GO RETURNMSG                                    22038000
  535.                       END                                               22038200
  536.                     ELSE                                                22038400
  537.                       BEGIN                                             22038600
  538.                         STOREX(ASCIICR).  % MARK RECORD AS GOOD         22038800
  539.                         REPLY (ASCIIACK, FALSE).                        22039000
  540.                         INCREMENTTRANS.                                 22039200
  541.                         REPEATTILFULL.                                  22039400
  542.                       END                                               22039600
  543.                 ELSE % GETFILENAME                                      22039800
  544.                   BEGIN                                                 22040000
  545.                     WAIT4QUEUED=TRUE.                                   22040200
  546.                     GO RETURNMSG.                                       22040400
  547.           END.END.END                                                   22040600
  548.         ELSE IF CHAR=NAK THEN GO BADTEXT                                22040800
  549.         ELSE    % KEEP LOOKING FOR STX                                  22041000
  550.           BEGIN                                                         22041200
  551.             RECEIVEONE (NAKEND).                                        22041400
  552.             GO ISTHISSTX.                                               22041600
  553.           END.                                                          22041800
  554.                                                                         22042000
  555. NAKIT:  REPLY (ASCIINAK,FALSE).                                         22042200
  556. NAKEND: IF RETRY > 0 THEN                                               22042400
  557.           BEGIN                                                         22042600
  558.             RETRY=RETRY-1.                                              22042800
  559.             IF UPLOADING THEN                                           22043000
  560.                 IF LINECOUNT=0 THEN % NO PRIOR RECORDS TO LOOSE         22043200
  561.                     GO TRYAGAIN     % IN THIS BLOCK                     22043400
  562.                 ELSE                                                    22043600
  563.                   BEGIN                                                 22043800
  564.                     STOREX(ASCIIETX). % MARK RECORD AS BAD              22044000
  565.                     REPEATTILFULL.                                      22044200
  566.                   END                                                   22044400
  567.             ELSE                                                        22044600
  568.               BEGIN                                                     22044800
  569. TRYAGAIN:       INITIALIZE TEXT.                                        22045000
  570.                 PAUSE.                                                  22045200
  571.                 GO NEXTDATABLOCK.                                       22045400
  572.           END.END.                                                      22045600
  573.                                                                         22045800
  574. STOPAPPLE:                                                              22046000
  575.         STOPTHEAPPLE                                                    22046200
  576.       END.                                                              22046400
  577. STOPPED:                                                                22046600
  578.     INITIALIZE TEXT.                                                    22046800
  579.     INITIALIZE RETRY.                                                   22047000
  580.     PAUSE.                                                              22047200
  581.     GETSPACE [STOPPED].                   % SIGNAL A BREAK              22047400
  582.     STORE ASCIICAN [ENDOFBUFFER:STOPPED]. % CONDITION TO PROGRAM        22047600
  583.     CODE=ASCII.                                                         22047800
  584.                                                                         22048000
  585. GETOUT:                                                                 22048200
  586.     APPLECODE = 0.                                                      22048400
  587.     GO ENDOFINPUT.                                                      22048600
  588.                                                                         22048800
  589. CONTROLMSGRECD:      % SOMEONE KEYED IN A CONTROL MESSAGE -- PASS IT    22049000
  590.     LINE(BUSY)=TRUE. % ON TO THE MCS                                    22049200
  591.     APPLECODE = 0.                                                      22049400
  592.     GETSPACE [CANTGETSPACE].                                            22049600
  593.     STORE [ENDOFBUFFER:TOOLONG].                                        22049800
  594.     BREAKNOTICE=TRUE.                                                   22050000
  595.     GO RECVTEXT.                                                        22050200
  596.   END.                                                                  22050400
  597.                                                                         22050600
  598. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%22050800
  599. %                       END OF APPLE PROTOCOL                           22051000
  600. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%22051200
  601.                                                                         22051400
  602.                                                                         22051600
  603.          IF NEWLINE THEN                                                22051800
  604.          BEGIN                                                          22052000
  605.               NEWLINE=FALSE.                                            22052200
  606.     SENDCR:                                                             22052400
  607.               INITIATE TRANSMIT.                                        22052600
  608.               IF CRREQUIRED THEN                                        22052800
  609.                    TRANSMIT CR [BREAK:SENDCR].                          22053000
  610.               CRREQUIRED = TRUE.                                        22053200
  611.               WAITFORCR.                                                22053400
  612.               TRANSMIT LF [BREAK:SENDCR].                               22053600
  613.               FINISH TRANSMIT.                                          22053800
  614.          END.                                                           22054000
  615.          IF SEQUENCE THEN                                               22054200
  616.          BEGIN                                                          22054400
  617.               INITIATE TRANSMIT.                                        22054600
  618.               TRANSMIT SEQUENCE [BREAK:TERMSEQMODE].                    22054800
  619.               TRANSMIT " " [BREAK:TERMSEQMODE].                         22055000
  620.               FINISH TRANSMIT.                                          22055200
  621.               NEWLINE = TRUE.                                           22055400
  622.               TURNOFFSEQUENCE = FALSE.                                  22055600
  623.               CONTROLFLAG = FALSE.                                      22055800
  624.               LINE(BUSY) = FALSE.                                       22056000
  625.               IF STATION(QUEUED) THEN                                   22056200
  626.                    TERMINATE NOINPUT.                                   22056400
  627.               INITIATE RECEIVE.                                         22056600
  628.     RECVCHARSEQ:                                                        22056800
  629.               RECEIVE(NULL) CHAR [0,                                    22057000
  630.                    END:TERMSEQMODE,                                     22057200
  631.                    "@":TERMSEQMODE,                                     22057400
  632.                    "*":TERMSEQMODE,                                     22057600
  633.                    WRU:TERMSEQMODE,                                     22057800
  634.                    LINEDELETE:DELETELINE,                               22058000
  635.                    BACKSPACE:RECVCHARSEQ,                               22058200
  636.                    CONTROL:NULL].                                       22058400
  637.               NEWLINE = FALSE.                                          22058600
  638.          END                                                            22058800
  639.          ELSE                                                           22059000
  640.          BEGIN                                                          22059200
  641.               LINE(BUSY)=FALSE.                                         22059400
  642.               IF STATION(QUEUED) THEN                                   22059600
  643.                    TERMINATE NOINPUT.                                   22059800
  644.               INITIATE RECEIVE.                                         22060000
  645.     RECVCHAR:                                                           22060200
  646.               RECEIVE (NULL) CHAR [0,                                   22060400
  647.                    END:ENDOFINPUT,                                      22060600
  648.                    BACKSPACE:RECVCHAR,                                  22060800
  649.                    LINEDELETE:RECVCHAR,                                 22061000
  650.                    CONTROL:NULL,                                        22061200
  651.                    WRU:ENDOFINPUT].                                     22061400
  652.          END.                                                           22061600
  653.          LINE(BUSY) = TRUE.                                             22061800
  654.          GETSPACE[CANTGETSPACE].                                        22062000
  655.          STORE [ENDOFBUFFER:TOOLONG].                                   22062200
  656.     RECVTEXT:                                                           22062400
  657.          RECEIVE (NULL) TEXT[0                                          22062600
  658.               ,ENDOFBUFFER:TOOLONG                                      22062800
  659.               ,END                                                      22063000
  660.       % , WRU               THIS LINE REMOVED                           22063200
  661.               ,BACKSPACE:NULL                                           22063400
  662.               ,LINEDELETE:DELETELINE                                    22063600
  663.               ].                                                        22063800
  664.     ENDOFTEXT:                                                          22064000
  665.          IF CHAR = CR THEN                       % CR IS END CHAR       22064200
  666.               CRREQUIRED = FALSE.                                       22064400
  667.          IF SEQUENCE THEN                                               22064600
  668.          BEGIN                                                          22064800
  669.               STORE SEQUENCE.                                           22065000
  670.               IF CONTROLFLAG THEN                                       22065200
  671.                    TURNOFFSEQUENCE = TRUE.                              22065400
  672.               IF TURNOFFSEQUENCE THEN                                   22065600
  673.                    SEQUENCE = FALSE                                     22065800
  674.               ELSE                                                      22066000
  675.                    INCREMENT SEQUENCE[SEQOFLOW].                        22066200
  676.          END.                                                           22066400
  677.     ENDOFINPUT:                                                         22066600
  678.          GETSPACE[CANTGETSPACE].                                        22066800
  679.          TERMINATE LOGICALACK.                                          22067000
  680.          IF CONTROLFLAG THEN  % GOT CONTROL MSG-- WAS IT "?BRK"?        22067010
  681.            BEGIN                                                        22067020
  682.              FETCH.        % IGNORE CONTROL CHAR                        22067030
  683.              FETCH [ENDOFBUFFER:NOTBRK].                                22067040
  684.              PAUSE.                                                     22067050
  685.              IF CHAR="B" OR CHAR=4"82" THEN                             22067060
  686.                BEGIN                                                    22067070
  687.                  FETCH [ENDOFBUFFER:NOTBRK].                            22067080
  688.                  IF CHAR="R" OR CHAR=4"99" THEN                         22067090
  689.                    BEGIN                                                22067100
  690.                      FETCH [ENDOFBUFFER:NOTBRK].                        22067110
  691.                      IF CHAR="K" OR CHAR=4"92" THEN                     22067120
  692.                          FETCH [ENDOFBUFFER:FAKEBREAK].                 22067130
  693.            END.END.END.                                                 22067140
  694.     NOTBRK:                                                             22067150
  695.          NEWLINE=TRUE.                                                  22067200
  696.     RETURNMSG:                                                          22067400
  697.  $ SET OMIT = ENHANCED                                                  22067600
  698.          TERMINATE NORMAL.                                              22067800
  699.  $ SET OMIT = NOT ENHANCED                                              22068000
  700.          TERMINATE NORMAL [SYSTEMDOWN:NULL].                            22068200
  701.          DELAY (10 MILLI).                                              22068400
  702.          GO RETURNMSG.                                                  22068600
  703.  $ POP OMIT OMIT                                                        22068800
  704.  $ SET AUXLOGIC=AUXCODE                                                 22069000
  705.     SEQOFLOW:                                                           22069200
  706.          INITIATE TRANSMIT.                                             22069400
  707.          TRANSMIT SEQOVFLMSG [BREAK:TERMSEQMODE].                       22069600
  708.          FINISH TRANSMIT.                                               22069800
  709.          SEQERR = TRUE.                                                 22070000
  710.  $ POP AUXLOGIC                                                         22070200
  711.     TERMSEQMODE:                                                        22070400
  712.          LINE(BUSY) = TRUE.                                             22070600
  713.          GETSPACE[CANTGETSPACE].                                        22070800
  714.          TURNOFFSEQUENCE = TRUE.                                        22071000
  715.          IF CHAR = "@" THEN                                             22071200
  716.          BEGIN                                                          22071400
  717.     STORESPEC:                                                          22071600
  718.               STORE [ENDOFBUFFER:TOOLONG].                              22071800
  719.               GO TO RECVTEXT.                                           22072000
  720.          END.                                                           22072200
  721.          IF CHAR = "*" THEN                                             22072400
  722.               GO TO STORESPEC.                                          22072600
  723.          GO TO ENDOFTEXT.                                               22072800
  724.  $ SET AUXLOGIC=AUXCODE                 % READTELETYPE STOPBITERR       22073000
  725.     STOPBITERR:                                                         22073200
  726.          LINE(BUSY) = TRUE.                                             22073400
  727.          INITIATE TRANSMIT.                                             22073600
  728.          TRANSMIT ERRMSG [BREAK:NULL].                                  22073800
  729.          FINISH TRANSMIT.                                               22074000
  730.          IF RETRY > 0 THEN                                              22074200
  731.          BEGIN                                                          22074400
  732.               RETRY = RETRY - 1.                                        22074600
  733.               TERMINATE NOINPUT.                                        22074800
  734.          END.                                                           22075000
  735.          TERMINATE ERROR.                                               22075200
  736.     BUFOVFLERR:                                                         22075400
  737.          LINE(BUSY) = TRUE.                                             22075600
  738.          DELAY(200 MILLI).                                              22075800
  739.          INITIATE TRANSMIT.                                             22076000
  740.          TRANSMIT BUFOVFLMSG [BREAK:NULL].                              22076200
  741.          FINISH TRANSMIT.                                               22076400
  742.          TERMINATE ERROR.                                               22076600
  743.     FAKEBREAK:                                                          22076620
  744.          DEQUEUE = TRUE.                                                22076640
  745.          LINE(BUSY) = FALSE.                                            22076660
  746.          TERMINATE NOINPUT.                                             22076680
  747.  $ POP AUXLOGIC                                                         22076800
  748.     BROKEN:                                                             22077000
  749.          LINE(BUSY) = TRUE.                                             22077200
  750.          BREAK[RECEIVE] = FALSE.                                        22077400
  751.          DELAY(200 MILLI).                                              22077600
  752.     DELETELINE:                                                         22077800
  753.          INITIATE TRANSMIT.                                             22078000
  754.          TRANSMIT "DEL" [BREAK:NULL].                                   22078200
  755.          FINISH TRANSMIT.                                               22078400
  756.          NEWLINE=TRUE.                                                  22078600
  757.          TERMINATE NOINPUT.                                             22078800
  758.  $ SET AUXLOGIC=AUXCODE             % READTELETYPE TOOLONG              22079000
  759.     TOOLONG:                                                            22079200
  760.          INITIATE TRANSMIT.                                             22079400
  761.          TRANSMIT OVERFLOWMSG [BREAK:NULL].                             22079600
  762.          FINISH TRANSMIT.                                               22079800
  763.          INITIATE RECEIVE.                                              22080000
  764.          RECEIVE (NULL) CHAR [0                                         22080200
  765.               ,END:ENDOFINPUT                                           22080400
  766.               ,WRU:ENDOFINPUT                                           22080600
  767.               ,BACKSPACE:NULL                                           22080800
  768.               ,LINEDELETE:DELETELINE                                    22081000
  769.               ].                                                        22081200
  770.          GO TO TOOLONG.                                                 22081400
  771.  $ POP AUXLOGIC                                                         22081600
  772.     CANTGETSPACE:                                                       22081800
  773.          INITIATE TRANSMIT.                                             22082000
  774.          IF SYSTEMDUMPING THEN                                          22082200
  775.               TRANSMIT DUMPMSG [BREAK:NULL]                             22082400
  776.          ELSE                                                           22082600
  777.               TRANSMIT WAITMSG [BREAK:NULL].                            22082800
  778.          FINISH TRANSMIT.                                               22083000
  779.          NEWLINE=TRUE.                                                  22083200
  780.          IF NOT STATION(QUEUED) THEN                                    22083400
  781.          BEGIN                                                          22083600
  782.               LINE(BUSY)=FALSE.                                         22083800
  783.     TRYFORSPACE:                                                        22084000
  784.               IF NOSPACE THEN                                           22084200
  785.               BEGIN                                                     22084400
  786.                    RECEIVE (5 SEC) CHAR                                 22084600
  787.                         [STOPBIT:NULL                                   22084800
  788.                         ,BUFOVFL:NULL                                   22085000
  789.                         ,BREAK:NULL                                     22085200
  790.                         ,TIMEOUT:TRYFORSPACE                            22085400
  791.                         ].                                              22085600
  792.                    GO TO CANTGETSPACE.                                  22085800
  793.               END.                                                      22086000
  794.               INITIATE TRANSMIT.                                        22086200
  795.               TRANSMIT OKMSG [BREAK:NULL].                              22086400
  796.               FINISH TRANSMIT.                                          22086600
  797.          END.                                                           22086800
  798.          TERMINATE NOINPUT.                                             22087000
  799. %***********************************************************************22087200
  800.                                                                         22087400
  801. REQUEST WRITETELETYPE:  %***********************************************22100000
  802. DEFINE FETCHANOTHER = FETCH [ENDOFBUFFER:NOTAPPLEBLOCK] #               22100200
  803.      , IFSENDING    = FETCHANOTHER.                                     22100400
  804.                       IF CHAR =                                         22100600
  805.                     #                                                   22100800
  806.      , READYTODOWNLOAD = APPLECODE=READYTODOWNLOADOP #                  22101000
  807.      , KERTRANSMIT(WHAT) = TRANSMIT WHAT [BREAK:KBROKEN] #              22101010
  808.      .                                                                  22101200
  809. ERROR[97] = APPLESW97.                                                  22101400
  810. ERROR[98] = APPLEERRSW(SKIPFIRSTAS, TIMEOUT:NAKEND ).                   22101600
  811. ERROR[99] = APPLEERRSW(NAKED,TIMEOUT:STOPPED).                          22101800
  812.                                                                         22102000
  813.          CODE = ASCII.                                                  22102100
  814.          IF DEQUEUE THEN                                                22102150
  815.            BEGIN                                                        22102160
  816.              BREAK[TRANSMIT]=TRUE.                                      22102170
  817.              GO BROKEN                                                  22102180
  818.            END.                                                         22102190
  819.          INITIATE TRANSMIT.                                             22102200
  820.          IF NEWLINE THEN                                                22102400
  821.          BEGIN                                                          22102600
  822.               NEWLINE=FALSE.                                            22102800
  823.               IF CRREQUIRED THEN                                        22103000
  824.                    TRANSMIT CR [BREAK:BROKEN].                          22103200
  825.               CRREQUIRED = TRUE.                                        22103400
  826.               WAITFORCR.                                                22103600
  827.               TRANSMIT LF [BREAK:BROKEN].                               22103800
  828.          END.                                                           22104000
  829.          IF PAGE THEN                                                   22104200
  830.               TRANSMIT FF [BREAK:BROKEN].                               22104400
  831.          IF PAPERMOTION THEN                                            22104600
  832.          BEGIN                                                          22104800
  833.               PRINTEDAFTER = TRUE.                                      22105000
  834.     MOVEPAPER:                                                          22105200
  835.               IF CARRIAGE THEN                                          22105400
  836.               BEGIN                                                     22105600
  837.                    TRANSMIT CR [BREAK:BROKEN].                          22105800
  838.                    WAITFORCR.                                           22106000
  839.               END.                                                      22106200
  840.               IF LINEFEED THEN                                          22106400
  841.                    TRANSMIT LF [BREAK:BROKEN].                          22106600
  842.               TEMPCOUNTER = SKIPCONTROL.                                22106800
  843.               IF TEMPCOUNTER = 0 THEN                                   22107000
  844.                    IF PAPERMOTION THEN                                  22107200
  845.                         GO TO XMITMSG                                   22107400
  846.                    ELSE                                                 22107600
  847.                         GO TO ENDXMIT.                                  22107800
  848.               IF SKIP THEN                                              22108000
  849.               BEGIN                                                     22108200
  850.     SKIPLINES:                                                          22108400
  851.                    IF TEMPCOUNTER NEQ 0 THEN                            22108600
  852.                    BEGIN                                                22108800
  853.                         TRANSMIT VT [BREAK:BROKEN].                     22109000
  854.                         IF ADAPTER LEQ 6 THEN                           22109200
  855.                              DELAY(100 MILLI).                          22109400
  856.                    END.                                                 22109600
  857.               END                                                       22109800
  858.               ELSE                                                      22110000
  859.               IF SPACE THEN                                             22110200
  860.               BEGIN                                                     22110400
  861.                    TEMPCOUNTER = TEMPCOUNTER - 1. % 1 LF ALREADY DONE   22110600
  862.     SPACELINES:                                                         22110800
  863.                    IF TEMPCOUNTER NEQ 0 THEN                            22111000
  864.                    BEGIN                                                22111200
  865.                         TRANSMIT LF [BREAK:BROKEN].                     22111400
  866.                         TEMPCOUNTER = TEMPCOUNTER - 1.                  22111600
  867.                         GO TO SPACELINES.                               22111800
  868.                    END.                                                 22112000
  869.               END.                                                      22112200
  870.               IF NOT PAPERMOTION THEN                                   22112400
  871.                    GO TO ENDXMIT.                                       22112600
  872.          END                                                            22112800
  873.          ELSE                                                           22113000
  874.          IF PRINTEDAFTER THEN                                           22113200
  875.          BEGIN                                                          22113400
  876.               TRANSMIT CRNULLF [BREAK:BROKEN].                          22113600
  877.               WAITFORCR.                                                22113800
  878.               PRINTEDAFTER = FALSE.                                     22114000
  879.          END.                                                           22114200
  880.          TEMPCOUNTER = 0.                                               22114400
  881.          IF NOT CARRIAGE THEN                                           22114600
  882.          BEGIN                                                          22114800
  883.                                                                         22115000
  884. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%22115200
  885. %                          APPLE PROTOCOL                               22115400
  886. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%22115600
  887.                                                                         22115800
  888. IF DEQUEUE THEN GO STOPPED. % CLEAR OUT ANY QUEUED MESSAGES             22116000
  889.                                                                         22116200
  890. STARTAPPLE:                                                             22116400
  891.                                                                         22116600
  892. APPLECODE=0.                                                            22116800
  893. FETCHANOTHER.                                                           22117000
  894.    % KERMIT CODE:                                                       22117005
  895. IF CHAR = 4"BF" THEN                                                    22117010
  896.   BEGIN                                                                 22117015
  897.     FETCHANOTHER.       % PAD COUNT                                     22117020
  898.     FETCHANOTHER.       % PAD CHAR                                      22117025
  899.     FETCHANOTHER.       % COUNT                                         22117030
  900.     FETCHANOTHER.       % SEQ                                           22117035
  901.     KERSEQ= CHAR.                                                       22117040
  902.     FETCHANOTHER.       % TYPE                                          22117045
  903.     FETCH [ENDOFBUFFER: KERISOK].  % SHOULD HAVE END OF BUFFER          22117050
  904.     IF FALSE THEN       % NORMAL PATH--ENTERED IF JUST ENUF CHARS       22117055
  905.       BEGIN                                                             22117060
  906. KERISOK:                                                                22117065
  907.         CODE=BINARY.                                                    22117066
  908.         KERREPLY (4"59").  % SEND "Y" (ACK) PKT                         22117070
  909.         IF KERSEQ = 4"5F" THEN KERSEQ= 4"20"  % FOLD SEQ                22117075
  910.         ELSE KERSEQ= KERSEQ + 1.  % INCREMENT SEQ                       22117080
  911.         APPLECODE= 4"FF".       % GO INTO AUTO RCV MODE                 22117085
  912. KBROKEN:                                                                22117086
  913.         CODE=ASCII.                                                     22117088
  914.         GO CHECK4RECV.                                                  22117090
  915.       END                                                               22117095
  916.     ELSE GO NOTAPPLEBLOCK.   % NOT A KERMIT AUTO RECV REQUEST AFTER ALL 22117100
  917.   END.                                                                  22117105
  918. CHAR = CHAR - 4"B0".                                                    22117200
  919. GO TO CHAR ( B0, B1, B2, B3, B4, B5, B6, B7                             22117400
  920.            , B8, B9, BA, BB, BC                                         22117600
  921.            ).                                                           22117800
  922. IF FALSE THEN                                                           22118000
  923.     IF FALSE THEN                                                       22118200
  924. B0:     APPLECODE=READYTOUPLOADOP                                       22118400
  925.     ELSE IF FALSE THEN                                                  22118600
  926. B1:                                                                     22118800
  927.     ELSE IF FALSE THEN                                                  22119000
  928. B2:     APPLECODE=READYTODOWNLOADOP                                     22119200
  929.     ELSE IF FALSE THEN                                                  22119400
  930. B3:                                                                     22119600
  931.     ELSE IF FALSE THEN                                                  22119800
  932. B4:     APPLECODE=ABORTOP                                               22120000
  933.     ELSE IF FALSE THEN                                                  22120200
  934. B5:     APPLECODE=FINISHUPLOADOP                                        22120400
  935.     ELSE IF FALSE THEN                                                  22120600
  936. B6:     APPLECODE=DOWNLOADOP                                            22120800
  937.     ELSE IF FALSE THEN                                                  22121000
  938. B7:     APPLECODE=FINISHDOWNLOADOP                                      22121200
  939.     ELSE IF FALSE THEN                                                  22121400
  940. B8:     APPLECODE=GETFILEOP                                             22121600
  941.     ELSE IF FALSE THEN                                                  22121800
  942. B9:                                                                     22122000
  943.     ELSE IF FALSE THEN                                                  22122200
  944. BA: %   APPLECODE=UPLOADOP      % THIS IS NO LONGER SENT TO NDL         22122400
  945.     ELSE IF FALSE THEN                                                  22122600
  946. BB:                                                                     22122800
  947.     ELSE IF FALSE THEN                                                  22123000
  948. BC:     APPLECODE=PROMPTOP                                              22123200
  949.     .                                                                   22123400
  950. IF APPLECODE NEQ 0 THEN                                                 22123600
  951.   BEGIN       % AN APPLE REQUEST HAS BEEN MADE:                         22123800
  952.     WAIT4QUEUED=FALSE. % WE'VE BEEN WAITING TO GET HERE!!!              22124000
  953.     IF BREAKNOTICE THEN  % NOTIFY PGM THAT A BRK HAS OCCURED            22124200
  954.       BEGIN                                                             22124400
  955.         BREAKNOTICE=FALSE.                                              22124600
  956.         GO STOPPED                                                      22124800
  957.       END                                                               22125000
  958.     ELSE                                                                22125200
  959.     IF APPLECODE GEQ 4"10" THEN                                         22125400
  960.       BEGIN                                                             22125600
  961.         IF APPLECODE GEQ 4"40" THEN                                     22125800
  962.           BEGIN                                                         22126000
  963.             CRC[0] = 0.                                                 22126200
  964.             SENDPADDING.                                                22126400
  965.             CODE=BINARY.                                                22126600
  966.                 XMIT(ASCIISTX).                                         22126800
  967.                 IF READYTODOWNLOAD THEN INCREMENTTRANS.                 22127000
  968.                 SENDTRANSNO.                                            22127200
  969.                 IF APPLECODE[7] THEN %XMIT CAN OR ACK                   22127400
  970.                   BEGIN                                                 22127600
  971.                     IF APPLECODE[6] THEN  % CAN                         22127800
  972.                       BEGIN                                             22128000
  973.                         XMIT(ASCIICAN).                                 22128200
  974.                         IF APPLECODE[5] THEN XMIT(ASCIIB)  %PROMPT MSG  22128400
  975.                         ELSE                 XMIT(ASCIIA). %FATAL MESSAG22128600
  976.                         APPLECODE = APPLECODE AND 4"1F"                 22128800
  977.                       END                                               22129000
  978.                     ELSE % ACK                                          22129200
  979.                       BEGIN                                             22129400
  980.                         XMIT(ASCIIACK).                                 22129600
  981.                         IF APPLECODE[4] THEN                            22129800
  982.                             IF APPLECODE[5] THEN  % READYTODOWNLOAD     22130000
  983.                             ELSE XMIT(ASCIIB)     % FINISHUPLOAD        22130200
  984.                         ELSE XMIT(ASCIIB  ).      % READYTOUPLOAD       22130400
  985.                         APPLECODE[7]=APPLECODE[5].  %SET PATIENCE BIT   22130600
  986.                         APPLECODE   =APPLECODE AND 4"9F"                22130800
  987.                   END.END.                                              22131000
  988. XMITTEXT:       FETCH [ENDOFBUFFER:ENDOFTEXT].                          22131200
  989.                 XMIT(CHAR).                                             22131400
  990.                 GO XMITTEXT.                                            22131600
  991. ENDOFTEXT:      IF APPLECODE[5] THEN XMIT(ASCIIEOT).                    22131800
  992.                 XMIT(ASCIIETX).                                         22132000
  993.                 SENDCRC.                                                22132200
  994.                 XMIT(ASCIICR).                                          22132400
  995.             CODE=ASCII.                                                 22132600
  996.             FINISH TRANSMIT.                                            22132800
  997.             IF NOT APPLECODE[4] THEN GO ENDACK.                         22133000
  998.           END.                                                          22133200
  999.         IF APPLECODE[4] THEN % NEED SOME ACKNOWLEDGEMENT                22133400
  1000.           BEGIN                                                         22133600
  1001.             IF TRUE THEN                                                22133700
  1002.               BEGIN                                                     22133750
  1003.                 INITIATE RECEIVE.                                       22133800
  1004.                 RECEIVE (NULL ) CHAR [98,END:STOPPED].                  22134200
  1005.                 APPLECODE=APPLECODE AND 4"1F"  %STRIP OFF XMIT CODE     22134600
  1006.               END                                                       22134610
  1007.             ELSE                                                        22134620
  1008. WAITFORNEXTREPLY:                                                       22134640
  1009.                 RECEIVE (20 SEC) CHAR [98,END:STOPPED].                 22134660
  1010.             STOPORSKIPPADDING (IF APPLECODE[3] THEN                     22134800
  1011.                                     GO ENDACK                           22135000
  1012.                                ELSE GO STOPPED                          22135200
  1013.                               ).                                        22135400
  1014.       ISTHISSTX:                                                        22135600
  1015.             IF CHAR = STX THEN                                          22135800
  1016.               BEGIN                                                     22136000
  1017.       STXFOUND: CODE=BINARY.                                            22136200
  1018.                 RECEIVEONE(NAKEND).                                     22136400
  1019.                 MASKOFFPARITY.                                          22136600
  1020.                 CODE=ASCII.                                             22136800
  1021.                 IFWRONGTRANSNO THEN % WRONG TRANS #                     22137000
  1022.                     GO NAKED                                            22137200
  1023.                 ELSE                                                    22137400
  1024.                   BEGIN                                                 22137600
  1025.                     RECEIVEONE(NAKEND).                                 22137800
  1026.                     IF CHAR = ACK THEN                                  22138000
  1027.                       BEGIN                                             22138200
  1028.       ACKED:            DISCARDTHEREST(ACKED,ACKEND).                   22138400
  1029.       ACKEND:           IF APPLECODE[3] THEN GO NAKEND.                 22138600
  1030.       ENDACK:           INITIALIZE RETRY.                               22138800
  1031.                         INCREMENTTRANS.                                 22139000
  1032.                         IF APPLECODE[4] AND NOT APPLECODE[3] THEN       22139200
  1033.                           BEGIN                 % (DOWNLOADING)         22139400
  1034.                             APPLECODE=0.                                22139600
  1035.                             GO RETURNMSG                                22139800
  1036.                           END.                                          22140000
  1037.                         APPLECODE=APPLECODE AND 4"07".  %STRIP OFF      22140200
  1038.                                 % XMIT CODES AND ERR INDICATOR (BIT #3) 22140400
  1039.                         GO CHECK4RECV                                   22140600
  1040.                       END                                               22140800
  1041.                     ELSE                                                22141000
  1042.                       BEGIN                                             22141200
  1043.                         IF CHAR = CAN THEN                              22141400
  1044.       CANNED:               DISCARDTHEREST(CANNED,STOPAPPLE)            22141600
  1045.                         ELSE % EITHER A NAK OR                          22141800
  1046.                              % SOMETHING UNEXPECTED                     22142000
  1047.                           BEGIN                                         22142200
  1048.       NAKED:                DISCARDTHEREST(NAKED,NAKEND).               22142400
  1049.       NAKEND:               IF RETRY > 0 THEN                           22142600
  1050.                               BEGIN                                     22142800
  1051.                                 RETRY = RETRY - 1.                      22143000
  1052.                                 CODE=ASCII.                             22143200
  1053.                                 TERMINATE NOINPUT                       22143400
  1054.                           END.END.                                      22143600
  1055.       STOPAPPLE:      % TELL APPLE TO GO AWAY:                          22143800
  1056.                          STOPTHEAPPLE.                                  22144000
  1057.               END.END.END                                               22144200
  1058.             ELSE IF CHAR = NAK THEN GO NAKED                            22144400
  1059.             ELSE                                                        22144600
  1060.               BEGIN                                                     22144800
  1061.                 RECEIVEONE (WAITFORNEXTREPLY).                          22145000
  1062.                 GO ISTHISSTX                                            22145200
  1063.               END.                                                      22145400
  1064.       STOPPED:                                                          22145600
  1065.             BREAK[TRANSMIT] = TRUE.                                     22145800
  1066.             CODE = ASCII.                                               22146000
  1067.             DEQUEUE=TRUE.                                               22146200
  1068.             IF APPLECODE=DOWNLOADOP OR APPLECODE=FINISHDOWNLOADOP THEN  22146400
  1069.                 BREAKNOTICE=TRUE                                        22146600
  1070.             ELSE APPLECODE=APPLECODE AND 4"0F".  % MASK OFF XMIT CODES  22146800
  1071.             GO BROKEN.                                                  22147000
  1072.       END.END.                                                          22147200
  1073. CHECK4RECV:                                                             22147400
  1074.     IF APPLECODE NEQ 0 THEN                                             22147600
  1075.       BEGIN                                                             22147800
  1076.         DEQUEUE=TRUE.      % ACCEPT NO MORE TRANSMISSIONS UNTIL         22148000
  1077.         INITIALIZE RETRY   % THIS REQUEST HAS BEEN SERVICED             22148200
  1078.       END.                                                              22148400
  1079.     GO ENDXMIT                                                          22148600
  1080.   END.                                                                  22148800
  1081.                                                                         22149000
  1082. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%22149200
  1083. %                       END OF APPLE PROTOCOL                           22149400
  1084. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%22149600
  1085.                                                                         22149800
  1086.  NOTAPPLEBLOCK:                                                         22150000
  1087.               INITIALIZE TEXT.                                          22150200
  1088.               TRANSMIT TEXT[BREAK:BROKEN].                              22150400
  1089.               GO TO ENDOFMSG.                                           22150600
  1090.          END.                                                           22150800
  1091.     XMITMSG:                                                            22151000
  1092.          FETCH[ENDOFBUFFER:ENDOFMSG].                                   22151200
  1093.          DELETEBLANKS(TEMPCOUNTER,TEMPSTORAGE,BROKEN).                  22151400
  1094.          IF CHAR = CR THEN                                              22151600
  1095.               WAITFORCR.                                                22151800
  1096.          GO XMITMSG.                                                    22152000
  1097.     ENDOFMSG:                                                           22152200
  1098.          IF NOT PAPERMOTION THEN                                        22152400
  1099.               GO TO MOVEPAPER.                                          22152600
  1100.     ENDXMIT:                                                            22152800
  1101.          FINISH TRANSMIT.                                               22153000
  1102.     RETURNMSG:                                                          22153200
  1103.  $ SET OMIT = ENHANCED                                                  22153400
  1104.          TERMINATE NORMAL.                                              22153600
  1105.  $ SET OMIT = NOT ENHANCED                                              22153800
  1106.          TERMINATE NORMAL [SYSTEMDOWN:NULL].                            22154000
  1107.          DELAY (10 MILLI).                                              22154200
  1108.          GO RETURNMSG.                                                  22154400
  1109.  $ POP OMIT OMIT                                                        22154600
  1110.     BROKEN:                                                             22154800
  1111.          NEWLINE=TRUE.                                                  22155000
  1112.          DEQUEUE=TRUE.                                                  22155100
  1113.          BREAK[TRANSMIT]=TRUE.                                          22155150
  1114.          TERMINATE ERROR.                                               22155200
  1115. %***********************************************************************22155400
  1116.                                                                         22155600
  1117.