home *** CD-ROM | disk | FTP | other *** search
/ Columbia Kermit / kermit.zip / c64forth / c644th.scr < prev    next >
Text File  |  2020-01-01  |  102KB  |  2,822 lines

  1.  
  2.  
  3. ( ---
  4. ( --- SCREEN # 5 ---
  5. ( ---
  6. ( TYPE DEFINITIONS 070984)              
  7.                                         
  8. : VAR VARIABLE ;    ( SHORTHAND)        
  9. : 0VAR 0 VARIABLE ; ( INITS VAR TO 0)   
  10. : CONST CONSTANT ;  ( SHORTHAND)        
  11.                                         
  12. : ASC 32 WORD HERE 1+ C@ ;              
  13.   ( LEAVES ASCII EQUIVALENT OF FOLLOWING
  14.     SINGLE CHARACTER ON STACK. USEAGE:  
  15.     ASC A CONST 'A' , STORES 65 IN 'A') 
  16. -->                                     
  17.                                         
  18.                                         
  19.                                         
  20.                                         
  21.                                         
  22.                                         
  23.                                         
  24.                                         
  25.                                         
  26.                                         
  27.                                         
  28.                                         
  29.                                         
  30.                                         
  31.                        
  32.  
  33. ( ---
  34. ( --- SCREEN # 6 ---
  35. ( ---
  36. ( STRING FUNCTIONS 071784)              
  37.                                         
  38. : ADD$ ( A$ C$ --- ) ( C$=C$+A$ )       
  39.   SWAP COUNT 3 PICK COUNT DUP ROT + SWAP
  40.   3 PICK + 5 PICK C! SWAP CMOVE DROP ;  
  41.                                         
  42. : CONCAT$ ( A$ B$ C$ ---) ( C$=A$+B$ )  
  43.   0 OVER ! ( ZEROES C$ )                
  44.   SWAP ROT 3 PICK ADD$ SWAP ADD$ ;      
  45.                                         
  46. : TYPE$ COUNT TYPE ; ( NAME$ ---)       
  47.                                         
  48. : TO$ ( A$ B$ ---) ( COPIES A$ OVER B$) 
  49.   0 OVER ! ADD$ ; -->                   
  50.                                         
  51.                                         
  52.                                         
  53.                                         
  54.                                         
  55.                                         
  56.                                         
  57.                                         
  58.                                         
  59.                                         
  60.                                         
  61.                        
  62.  
  63. ( ---
  64. ( --- SCREEN # 7 ---
  65. ( ---
  66. ( MORE STRING FUNCTIONS 060584)         
  67.                                         
  68. : WORD$   ( MAKES STRING CALLED 'ABCD') 
  69.   <BUILDS              ( WORD$ 'ABCD' ) 
  70.   2 0 DO         ( BACKUP PTR TO 2D ' ) 
  71.     BEGIN                               
  72.       IN @ 1- DUP                       
  73.       0< IF ." ERROR -- NO '" ENDIF     
  74.       DUP IN !                          
  75.       BLK @ IF                          
  76.         BLK @ BLOCK                     
  77.       ELSE                              
  78.         TIB @                           
  79.       THEN                              
  80.       + C@ 39 =                         
  81.     UNTIL                               
  82.   LOOP                                  
  83.   1 ALLOT 39 WORD HERE C@ HERE 1- C!    
  84.   HERE C@ 1+ ALLOT                      
  85.   DOES> 1+ ;                            
  86.                                         
  87. : STR$ ( N --- ADDR)  ( ADDR OF STRING) 
  88.   0 <# #S 32 HOLD #>  ( FROM N IN PAD.) 
  89.   OVER 1- C! 1- ;     ( ADD COUNT BYTE) 
  90. -->                                     
  91.                        
  92.  
  93. ( ---
  94. ( --- SCREEN # 8 ---
  95. ( ---
  96. ( MORE STRING FUNCTIONS 070484)         
  97.                                         
  98. 3 CONSTANT SWD                          
  99.                                         
  100. : =$ ( ADDR1 ADDR --- FLAG )            
  101.    COUNT ROT COUNT ROT     ( A A1 N1 N) 
  102.    SWD MIN SWAP SWD MIN  ( A A1 N1' N') 
  103.    OVER = NOT IF                        
  104.     2DROP DROP 0 EXIT   ( N'<>N1', F=0) 
  105.    THEN 1 SWAP                ( A A1 N) 
  106.    0 DO                       ( A A1 1) 
  107.     OVER I + C@            ( A A1 1 C1) 
  108.     4 PICK I + C@        ( A A1 1 C1 C) 
  109.     = NOT IF                 ( A1 A2 1) 
  110.       DROP 0 LEAVE           ( A1 A2 0) 
  111.     THEN                                
  112.    LOOP                    ( A1 A2 1/0) 
  113.    ROT ROT 2DROP ;                      
  114.                                         
  115. -->                                     
  116.                                         
  117.                                         
  118.                                         
  119.                                         
  120.                                         
  121.                        
  122.  
  123. ( ---
  124. ( --- SCREEN # 9 ---
  125. ( ---
  126. ( CASE: CHARLES EAKER-> LH-> RD 012284) 
  127. : CASE ?COMP CSP @ SP@ CSP ! 4 ;        
  128.   IMMEDIATE                             
  129.                                         
  130. : OF 4 ?PAIRS COMPILE OVER COMPILE =    
  131.   COMPILE 0BRANCH HERE 0 , COMPILE DROP 
  132.   5 ; IMMEDIATE                         
  133.                                         
  134. : ENDOF 5 ?PAIRS COMPILE BRANCH HERE    
  135.   0 , SWAP 2 [COMPILE] THEN 4 ;         
  136.   IMMEDIATE                             
  137.                                         
  138. : ENDCASE 4 ?PAIRS COMPILE DROP         
  139.   BEGIN                                 
  140.    SP@ CSP @ = NOT WHILE                
  141.     2 [COMPILE] THEN                    
  142.   REPEAT CSP ! ; IMMEDIATE              
  143.                                         
  144. : ANY DUP ; ( USE IN 'ANY OF ... ENDOF')
  145.                                         
  146. ( THIS ONE FOR STRINGS)                 
  147. : OF$ 4 ?PAIRS COMPILE OVER COMPILE =$  
  148.   COMPILE 0BRANCH HERE 0 , COMPILE DROP 
  149.   5 ; IMMEDIATE                         
  150. -->                                     
  151.                        
  152.  
  153. ( ---
  154. ( --- SCREEN # 10 ---
  155. ( ---
  156. ( TABLE-BUILDING WORDS 070984 )         
  157.                                         
  158. ( THESE BUILD TABLES OF N+1 ENTRIES:    
  159.   0,1,...,N FROM LISTS IN THE INPUT     
  160.   STREAM )                              
  161.                                         
  162. : BCONVERT ( N --- ) ( BYTES )          
  163.     1+ 0 DO                             
  164.       BL WORD HERE NUMBER DROP C,       
  165.     LOOP ;                              
  166.                                         
  167. ( USAGE:                                
  168.   N BTABLE NAME B0 B1 B2 ... BN )       
  169.                                         
  170. : BTABLE <BUILDS BCONVERT               
  171.     DOES> + C@ ;                        
  172.                                         
  173.  -->                                    
  174.                                         
  175.                                         
  176.                                         
  177.                                         
  178.                                         
  179.                                         
  180.                                         
  181.                        
  182.  
  183. ( ---
  184. ( --- SCREEN # 11 ---
  185. ( ---
  186. ( COMMAND AND VALUE TABLES 052684 )     
  187. 15 VARIABLE $LEN ( LENGTH OF NAMES IN   
  188.   TABLES) : $LEN@+ $LEN @ 1+ ;          
  189.                                         
  190. : CMDBLD ( N ---) ( BUILD COMMAND TABLE)
  191.   1+ 0 DO ( N+1 EA, WORD$ + CFA )       
  192.    BL WORD $LEN@+ ALLOT ( WORD$ )       
  193.    FIND DUP 0= 0 ?ERROR , ( CFA )       
  194.   LOOP ;                                
  195.                                         
  196. : CMDTBL ( N CMDTBL NAME WORD$ WORD ...)
  197.   <BUILDS DUP C, ( N-> 0TH LOC)         
  198.     CMDBLD ( N+1 ENTRIES: WORD$ + CFA ) 
  199.   DOES> ( --- ADDR OF N ) ;             
  200.                                         
  201. : () ( ADDR I --- ADDR ENTRY )          
  202.     OVER C@ OVER <     ( OVERRANGE? )   
  203.     OVER 0< OR IF      ( NEGATIVE?  )   
  204.      CR ." ? COMMAND RANGE ERROR"       
  205.      ABORT                              
  206.     THEN $LEN@+ 2+ * SWAP DUP ROT + 1+ ;
  207.                                         
  208. ( USAGE: NAME I <> CMDEXE )             
  209. : CMDEXE $LEN@+ + @ EXECUTE DROP ;      
  210. -->                                     
  211.                        
  212.  
  213. ( ---
  214. ( --- SCREEN # 12 ---
  215. ( ---
  216. ( COMMAND AND VALUE TABLES 020184 )     
  217. WORD$ '?'                               
  218.                                         
  219. : LIST? ( CMDTBL --- ) ( PRINT NAMES )  
  220.   HERE '?' =$ HERE C@ 0 = OR IF ( ?/NUL)
  221.    ." SELECT FROM:" CR                  
  222.    DUP C@ 1+ 0 DO                       
  223.      I () SPACE TYPE$ CR                
  224.    LOOP                                 
  225.    ." SELECTION: " QUERY CR BL WORD     
  226.   THEN ;                                
  227. : VALBLD ( N --- ) ( BUILD VALUE TABLE) 
  228.   1+ 0 DO ( N+1 EA, WORD$ + VALUE)      
  229.    BL WORD $LEN@+ ALLOT ( WORD$ )       
  230.    BL WORD HERE NUMBER DROP , ( VALUE ) 
  231.   LOOP ;                                
  232.                                         
  233. : VALTBL ( N VALTBL NAME WORD$ VALUE...)
  234.   <BUILDS DUP C, ( N-> 0TH LOC)         
  235.     VALBLD ( N+1 ENTRIES: WORD$ + VALUE)
  236.   DOES> ( --- ADDR OF N ) ;             
  237.                                         
  238. ( USAGE: NAME I <> VALGET )             
  239. : VALGET $LEN@+ + @ ;                   
  240.  -->                                    
  241.                        
  242.  
  243. ( ---
  244. ( --- SCREEN # 13 ---
  245. ( ---
  246. ( ASCII/BOOLEAN CONSTANTS KERMIT 061884)
  247.                                         
  248. ASC A CONST <A>     ASC B CONST <B>     
  249. ASC C CONST <C>     ASC D CONST <D>     
  250. ASC E CONST <E>     ASC F CONST <F>     
  251. ASC G CONST <G>     ASC H CONST <H>     
  252. ASC I CONST <I>     ASC J CONST <J>     
  253. ASC K CONST <K>     ASC L CONST <L>     
  254. ASC M CONST <M>     ASC N CONST <N>     
  255. ASC O CONST <O>     ASC P CONST <P>     
  256. ASC Q CONST <Q>     ASC R CONST <R>     
  257. ASC S CONST <S>     ASC T CONST <T>     
  258. ASC U CONST <U>     ASC V CONST <V>     
  259. ASC W CONST <W>     ASC X CONST <X>     
  260. ASC Y CONST <Y>     ASC Z CONST <Z>     
  261. ASC ? CONST <?>     ASC # CONST <#>     
  262. ASC " CONST <">                         
  263.                                         
  264. 1 CONST TRUE                            
  265. 0 CONST FALSE                           
  266.                                         
  267. -->                                     
  268.                                         
  269.                                         
  270.                                         
  271.                        
  272.  
  273. ( ---
  274. ( --- SCREEN # 14 ---
  275. ( ---
  276. ( LCIN ASCII-> CBMASCII 071884)         
  277.                                         
  278. ( TO INPUT FROM MODEM TO C64-ASCII FILES
  279.   AND TO TERMINAL SCREEN WHEN BOTH UPPER
  280.   AND LOWER CASE CHARACTERS ARE PRESENT)
  281.                                         
  282. ( INPUT BYTE = 0-127)                   
  283. ( 8=BACKSPACE->157=CRSR LEFT)           
  284. ( 92=BACKSLASH->221=VERT BAR, NOT \)    
  285. ( 9=TAB->220)          ( 12=FF->219)    
  286.                                         
  287. 127 BTABLE LCIN                         
  288. 00 00 00 00 00 00 00 00 157 220         
  289. 00 00 219 13 00 00 00 00 00 00          
  290. 00 00 00 00 00 00 00 00 00 00           
  291. 00 00 32 33 34 35 36 37 38 39           
  292. 40 41 42 43 44 45 46 47 48 49           
  293. 50 51 52 53 54 55 56 57 58 59           
  294. 060 061 062 063 064 193 194 195 196 197 
  295. 198 199 200 201 202 203 204 205 206 207 
  296. 208 209 210 211 212 213 214 215 216 217 
  297. 218 091 221 093 094 095 096 065 066 067 
  298. 68 69 70 71 72 73 74 75 76 77           
  299. 78 79 80 81 82 83 84 85 86 87           
  300. 88 89 90 00 00 00 00 00        -->      
  301.                        
  302.  
  303. ( ---
  304. ( --- SCREEN # 15 ---
  305. ( ---
  306. ( UCIN ASCII-> CBMASCII 071884)         
  307.                                         
  308. ( TO INPUT FROM MODEM TO C64-ASCII FILES
  309.   AND TO TERMINAL SCREEN WHEN ONLY UPPER
  310.   CASE CHARACTERS ARE DESIRED IN C64)   
  311.                                         
  312. ( INPUT BYTE = 0-127)                   
  313. ( 8=BACKSPACE->157=CRSR LEFT)           
  314. ( 92=BACKSLASH->221=VERT BAR, NOT \)    
  315. ( 9=TAB->220)         ( 12=FF->219)     
  316.                                         
  317. 127 BTABLE UCIN                         
  318. 00 00 00 00 00 00 0 0 157 220           
  319. 00 00 219 13 00 00 00 00 00 0           
  320. 00 00 00 00 00 00 00 00 00 00           
  321. 00 00 32 33 34 35 36 37 38 39           
  322. 40 41 42 43 44 45 46 47 48 49           
  323. 50 51 52 53 54 55 56 57 58 59           
  324. 60 61 62 63 64 65 66 67 68 69           
  325. 70 71 72 73 74 75 76 77 78 79           
  326. 80 81 82 83 84 85 86 87 88 89           
  327. 90 91 221 93 94 95 96 65 66 67          
  328. 68 69 70 71 72 73 74 75 76 77           
  329. 78 79 80 81 82 83 84 85 86 87           
  330. 88 89 90 00 00 00 00 00  -->            
  331.                        
  332.  
  333. ( ---
  334. ( --- SCREEN # 16 ---
  335. ( ---
  336. ( LCOUT C64ASCII-> ASCII 111384)        
  337. 255 BTABLE LCOUT                        
  338. 00 00 02 03 04 05 06 07 08 09           
  339. 00 11 12 13 14 15 16 17 18 19           
  340. 127 21 22 23 24 25 26 27 28 29          
  341. 30 31 32 33 34 35 36 37 38 39           
  342. 40 41 42 43 44 45 46 47 48 49           
  343. 50 51 52 53 54 55 56 57 58 59           
  344. 060 061 062 063 064 097 098 099 100 101 
  345. 102 103 104 105 106 107 108 109 110 111 
  346. 112 113 114 115 116 117 118 119 120 121 
  347. 122 091 092 093 094 095 096 065 066 067 
  348. 68 69 70 71 72 73 74 75 76 77           
  349. 78 79 80 81 82 83 84 85 86 87           
  350. 88 89 90 00 00 00 00 00 00 00           
  351. 00 00 00 17 19 08 27 18 20 10           
  352. 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
  353. 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
  354. 00 00 00 00 00 00 00 00 00 00           
  355. 00 00 00 65 66 67 68 69 70 71           
  356. 72 73 74 75 76 77 78 79 80 81           
  357. 82 83 84 85 86 87 88 89 90 12           
  358. 09 92 00 00 00 00 00 00 00 00           
  359. 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
  360. 0 0 0 0 0 0                   -->       
  361.                        
  362.  
  363. ( ---
  364. ( --- SCREEN # 17 ---
  365. ( ---
  366. ( UCOUT C64ASCII-> ASCII 111384)        
  367. 255 BTABLE UCOUT                        
  368. 00 00 02 03 04 05 06 07 08 09           
  369. 00 11 12 13 14 15 16 17 18 19           
  370. 127 21 22 23 24 25 26 27 28 29          
  371. 30 31 32 33 34 35 36 37 38 39           
  372. 40 41 42 43 44 45 46 47 48 49           
  373. 50 51 52 53 54 55 56 57 58 59           
  374. 60 61 62 63 64 65 66 67 68 69           
  375. 70 71 72 73 74 75 76 77 78 79           
  376. 80 81 82 83 84 85 86 87 88 89           
  377. 90 91 92 93 94 95 96 65 66 67           
  378. 68 69 70 71 72 73 74 75 76 77           
  379. 78 79 80 81 82 83 84 88 86 87           
  380. 88 89 90 00 00 00 00 00 00 00           
  381. 000 000 000 017 019 008 027 018 020 010 
  382. 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
  383. 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
  384. 00 00 00 00 00 00 00 00 00 00           
  385. 00 00 00 65 66 67 68 69 70 71           
  386. 72 73 74 75 76 77 78 79 80 81           
  387. 82 83 84 85 86 87 88 89 90 12           
  388. 09 92 00 00 00 00 00 00 00 00           
  389. 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
  390. 0 0 0 0 0 0                  -->        
  391.                        
  392.  
  393. ( ---
  394. ( --- SCREEN # 18 ---
  395. ( ---
  396. ( KERMIT CONSTANTS AND VARIABLES 071684)
  397. ( NOTE: CONSTANTS ARE ->ASCII<- VALUES) 
  398.                                         
  399.  94 CONST MAXPACK  ( MAX PACKET LENGTH) 
  400.   1 CONST <SOH>    ( START OF HEADER)   
  401.  32 CONST <SP>     ( ASCII SPACE)       
  402.  13 CONST <CR>     ( CARRIAGE RETURN)   
  403.  10 CONST <LF>     ( LINE FEED)         
  404. 127 CONST <DEL>    ( DELETE/RUBOUT)     
  405.   5 CONST MAXTRY   ( TIMES TO RETRY)    
  406. 140 CONST MYESC ( CONNECT-ESCAPE CHAR)  
  407.                                         
  408. <#> VAR MYQUOTE ( QUOTE CHAR I'LL USE)  
  409.   0 VAR MYPAD   ( NO. PAD CHARS I NEED) 
  410.   0 VAR MYPCHAR ( PAD CHAR I NEED)      
  411. <CR> VAR MYEOL  ( ENDOLINE CHAR I NEED) 
  412.  10 VAR MYTIME  ( SEC AFTER WHICH I)    
  413.                 ( SHOULD BE TIMED OUT)  
  414.   5 VAR DELAY   ( SEC DELAY BEFORE I    
  415.                 ( SEND INIT PACKET)     
  416. 127 VAR BITS    ( MASK FOR 7-BIT/8-BIT) 
  417.                                         
  418. -->                                     
  419.                                         
  420.                                         
  421.                        
  422.  
  423. ( ---
  424. ( --- SCREEN # 19 ---
  425. ( ---
  426. ( KERMIT CONSTANTS AND VARIABLES 070884)
  427. ( VARIABLES FROM 'C' 8080 VERSION)      
  428.                                         
  429. 0VAR SIZE ( SIZE OF PRESENT DATA)       
  430. 0VAR N ( MESSAGE NUMBER)                
  431.                                         
  432. MAXPACK VAR RPSIZ ( MAX RECEIVE PACKET) 
  433. MAXPACK VAR SPSIZ    ( MAX SEND PACKET) 
  434. 0  VAR SPAD ( HOW MUCH PADDING TO SEND) 
  435. 10 VAR TIMINT ( SEC TIME AFTER WHICH I) 
  436.               ( NUDGE OTHER KERMIT)     
  437. 0VAR NUMTRY ( TIMES THIS PACKET RETRIED)
  438. 0VAR OLDTRY ( TIMES PREVIOUS PACKET     
  439.               RETRIED)                  
  440. 0VAR KSTATE ( PRESENT STATE OF THE      
  441.               KERMIT AUTOMATON)         
  442. 0VAR PADCHAR ( PAD CHARACTER TO SEND)   
  443. <CR> VAR EOL ( END OF LINE TO SEND)     
  444. <#>  VAR QUOTE ( QUOTE CHAR IN INCOMING 
  445.              DATA)                      
  446. 0VAR FLWRN ( FLAG, 1=> FILE-WARNING ON) 
  447. -->                                     
  448.                                         
  449.                                         
  450.                                         
  451.                        
  452.  
  453. ( ---
  454. ( --- SCREEN # 20 ---
  455. ( ---
  456. ( KERMIT TABLES, SETUP/ERROR 071584)    
  457. 0VAR KERR     0VAR KTEMP                
  458.                                         
  459. : PAUSE ."  -ANY KEY CONTINUES-"        
  460.   KEYIN DROP ;                          
  461.                                         
  462. : UNKERR 0 KERR !  ( RESET ERROR FLAG ) 
  463.   LEAVE ;   ( MIGHT AS WELL OMIT LOOPS) 
  464.                                         
  465. : DOKERR 1 KERR ! ; ( SET ERROR FLAG )  
  466.                                         
  467. : TSTKERR ( TEST ERROR FLAG, WARN )     
  468.   KERR @ IF CR IN @ KTEMP !             
  469.   0 IN !                                
  470.   BLK @ IF BLK @ BLOCK ELSE TIB @ THEN  
  471.   KTEMP @ 0 DO DUP I + C@ EMIT LOOP DROP
  472.   ." <--ERROR?" CR ." NO ACTION" CR     
  473.   SP! PAUSE ABORT THEN ;                
  474.                                         
  475. : XSETUP ( ADDR --- ADDR N+1 0 )        
  476.   ( SETUP FOR SEARCH OF VAL/CMDTBL )    
  477.   DOKERR          ( PRESET ERROR FLAG ) 
  478.   BL WORD              ( INPUT STRING ) 
  479.   LIST?               ( IS IT A '?' ? ) 
  480.   DUP C@ 1+ 0 ; -->    ( SETUP DO-LOOP) 
  481.                        
  482.  
  483. ( ---
  484. ( --- SCREEN # 21 ---
  485. ( ---
  486. ( TERMINAL CONSTS/VARS/ROUTINES 120284) 
  487.                                         
  488. 0VAR ITSPEED 0VAR TSPEED ( BAUD RATE)   
  489. 0VAR ITWORD 0VAR TWORD ( WORD LENGTH)   
  490. 0VAR ITSTOP 0VAR TSTOP ( STOP BITS)     
  491. 0VAR ITSHK  0VAR TSHK  ( HANDSHAKE MODE)
  492. 0VAR ITDUP  0VAR TDUP  ( ECHO/DUPLEX)   
  493. 0VAR ITPAR  0VAR TPAR  ( PARITY)        
  494. 0VAR TCTL   0VAR TCOM  ( CTL, CMD WORDS)
  495. 0VAR ICHRSET ( GRAPHICS/TEXT CHAR SET)  
  496. 0VAR IBORDER ( BORDER COLOR, 0-15)      
  497. 0VAR IBKGND ( BACKGROUND COLOR, 0-15)   
  498. 0VAR ICHRCLR ( CHARACTER COLOR, 0-15)   
  499.                                         
  500. : CLR ." " ;          ( CLEARS SCREEN) 
  501.                                         
  502. : DWN ( N ---)  ( STARTS A LINE N DOWN) 
  503.   ." " -DUP IF 0 DO ." " LOOP THEN    
  504.   39 0 DO BL EMIT LOOP                  
  505.   39 0 DO ." " LOOP ; -->              
  506.                                         
  507.                                         
  508.                                         
  509.                                         
  510.                                         
  511.                        
  512.  
  513. ( ---
  514. ( --- SCREEN # 22 ---
  515. ( ---
  516. ( TERMINAL SCREEN PRINT 120284 )        
  517.                                         
  518. ( SPECIAL ROUTINE TO AVOID QUOTE MODE   
  519.   AND TO SHOW CURSOR WHERE PRINT WILL   
  520.   NEXT OCCUR )                          
  521.                                         
  522. : BYTEPRINT ( B ---)  ( SCREEN PRINT)   
  523.   DUP IF             ( ONLY IF NONZERO) 
  524.   0 212 C!       ( TURN OFF QUOTE MODE) 
  525.              ( FIRST REMOVE OLD CURSOR) 
  526.   0 646 C@ 32 59923 CALLR 2DROP DROP    
  527.   EMIT      ( THEN PRINT ONE CHARACTER) 
  528.                   ( AND ADD NEW CURSOR) 
  529.   0 646 C@ 121 59923 CALLR 2DROP DROP   
  530.   ELSE DROP THEN ;                      
  531.                                         
  532.  -->                                    
  533.                                         
  534.                                         
  535.                                         
  536.                                         
  537.                                         
  538.                                         
  539.                                         
  540.                                         
  541.                        
  542.  
  543. ( ---
  544. ( --- SCREEN # 23 ---
  545. ( ---
  546. ( PACKET VARIABLES 063084)              
  547. ( MEMTOP MUST BE < $CB00 )              
  548. HEX                                     
  549. CB80 CONST PACKET ( KERMIT SEND BUFFER) 
  550.  0VAR NN       ( COUNTER FOR BYTES-OUT) 
  551.  0VAR II     ( COUNTER FOR SEND BUFFER) 
  552.  0VAR BUFFADDR   ( SEND BUFFER ADDRESS) 
  553. CB00 CONST RECPKT ( KERMIT RECEIVE BUF) 
  554. DECIMAL                                 
  555.                                         
  556. 0VAR <KEY> ( KEYBOARD CHARACTER)        
  557.                                         
  558. 0VAR MOD$ ( MODEM INPUT STRING, 1 CHAR) 
  559.  MOD$ 1+ CONST MOD$1  ( ACCESS TO BYTE) 
  560.                                         
  561. 0VAR MOU$   ( MODEM OUT STRING. 1 CHAR) 
  562.                                         
  563. 0VAR RTYPE      ( PACKET TYPE, RECEIVE) 
  564. 0VAR RCK           ( CHECKSUM, RECEIVE) 
  565. 0VAR RNUM     ( NUMBER OF PACKET, RECV) 
  566. 0VAR RLEN     ( LENGTH OF PACKET, RECV) 
  567.                                         
  568. 0VAR TNUM     ( NUMBER OF PACKET, SEND) 
  569. 0VAR TLEN     ( LENGTH OF PACKET, SEND) 
  570. -->                                     
  571.                        
  572.  
  573. ( ---
  574. ( --- SCREEN # 24 ---
  575. ( ---
  576. ( FILE CONSTANTS AND VARIABLES 071784)  
  577. ( EXPECTS MEMTOP < $CB00 )              
  578.                                         
  579. HEX                                     
  580. CD00 CONST FBUFF    ( C64-FILES BUFFER) 
  581.   FF CONST FBUFFLEN   ( LENGTH OF IT)   
  582. CC00 CONST RNAME$  ( NAME OF READ-FILE) 
  583. CC40 CONST WNAME$ ( NAME OF WRITE-FILE) 
  584. CC80 CONST FNAME$   ( NAME OF EXT FILE) 
  585. CCC0 CONST BUF1 ( BUFFER FOR FILENAMES) 
  586. DECIMAL                                 
  587.                                         
  588. 0VAR FEOF ( EOF FOUND, END THIS BUFFER) 
  589. 0VAR FEOLB   ( END OF LAST FILE BUFFER) 
  590. 0VAR FBFPTR ( PTR INTO FILE I/O BUFFER) 
  591. 0VAR FILTYP ( TYPE OF FILE, TRANSLATE?) 
  592.                                         
  593. WORD$ 'S0:'                             
  594. WORD$ '0:'                              
  595. WORD$ ',R'                              
  596. WORD$ ',W'                              
  597. WORD$ ',P'                              
  598. WORD$ ',S'                              
  599. -->                                     
  600.                                         
  601.                        
  602.  
  603. ( ---
  604. ( --- SCREEN # 25 ---
  605. ( ---
  606. ( DISK BYTE FETCH DGET# 060884)         
  607. ( XXXX* = C64-BASIC KERNAL ROUTINES )   
  608. ( REPLACE GET# FOR DISK READ, FIX BUGS) 
  609.                                         
  610. : READST ( --- B ) ( RETURN STATUS BYTE)
  611.   0 0 0 65463 CALLR          ( READST*) 
  612.   ROT ROT 2DROP ;                       
  613.                                         
  614. : UNTALK 65451 CALL ;         ( UNTLK*) 
  615.                                         
  616. : DGET# ( FILE# ADDR COUNT --- )        
  617.   3 PICK 0 SWAP 0 65478 CALLR ( CHKIN*) 
  618.   DROP 2DROP 1+ 1 DO                    
  619.    0 0 0 65445 CALLR          ( ACPTR*) 
  620.    4 PICK I + C! 2DROP    ( STORE BYTE) 
  621.    I OVER C!    ( STORE CURRENT LENGTH) 
  622.    READST IF       ( CHECK STATUS BYTE) 
  623.     LEAVE                               
  624.    THEN                                 
  625.   LOOP 2DROP UNTALK                     
  626.   READST ST ! CKST DROP ;   ( RD,CK ST) 
  627.                                         
  628. -->                                     
  629.                                         
  630.                                         
  631.                        
  632.  
  633. ( ---
  634. ( --- SCREEN # 26 ---
  635. ( ---
  636. ( FILE I/O 062984)   ( INPUT UTILITIES) 
  637.                                         
  638. : FILLFBUFF ( ---) ( FILL EMPTY BUFFER) 
  639.   18 FBUFF 1- COUNT DGET#               
  640.   CKRDSTAT ( EOF?  WORSE?)              
  641.   FEOF ! ( SAVE IN EOF-FLAG)            
  642.   1 FBFPTR ! ; ( RESET BUFFER POINTER)  
  643.                                         
  644. : FGET ( --- B )                        
  645.   ( GET ONE BYTE FROM FILE BUFFER AND ) 
  646.   ( SET EOLB FLAG IF LAST BYTE IN FILE) 
  647.   FBFPTR @ FBUFF + C@       ( GET BYTE) 
  648.   FBFPTR @ 1+ DUP FBFPTR !   ( INC PTR) 
  649.   FBUFF C@ > IF         ( NEED REFILL?) 
  650.    FEOF @ IF  ( -YES, END LAST BUFFER?) 
  651.     1 FEOLB !          ( SET EOLB FLAG) 
  652.    ELSE                                 
  653.     FILLFBUFF    ( -NO, REFILL BUFFER)  
  654.    THEN                                 
  655.   THEN ;                                
  656. -->                                     
  657.                                         
  658.                                         
  659.                                         
  660.                                         
  661.                        
  662.  
  663. ( ---
  664. ( --- SCREEN # 27 ---
  665. ( ---
  666. ( FILE I/O 070384)     ( OPEN FOR READ) 
  667.                                         
  668. : FRCLOSE 18 CLOSE      ( CLOSE FILE)   
  669.   CLOSCHN ;                             
  670.                                         
  671. : FROPEN ( --- F)                       
  672.   '0:' RNAME$ BUF1 CONCAT$              
  673.   ',R' BUF1 ADD$         ( "0:NAME,S,R) 
  674.   OPENCHN                               
  675.   18 8 18 BUF1 COUNT OPEN               
  676.   ?FILE DUP    ( F=0=>OK,1=> NOT FOUND) 
  677.   IF                                    
  678.    3 DWN RNAME$ TYPE$ ."  NOT FOUND"    
  679.    FRCLOSE ABORTIO         ( SHUT DOWN) 
  680.    1 FEOLB !        ( AND SET EOF FLAG) 
  681.   ELSE                                  
  682.    FILLFBUFF     ( FOUND: FILL BUFFER,) 
  683.    0 FEOLB !     ( AND RESET EOF FLAG ) 
  684.   THEN ;                                
  685.  -->                                    
  686.                                         
  687.                                         
  688.                                         
  689.                                         
  690.                                         
  691.                        
  692.  
  693. ( ---
  694. ( --- SCREEN # 28 ---
  695. ( ---
  696. ( FILE I/O 072484)  ( OUTPUT UTILITIES) 
  697. : EMPTYFBUFF     ( EMPTIES FILE BUFFER) 
  698.   19 FBUFF COUNT PRINT#                 
  699.   CKWRSTAT 0 FBUFF C! ; ( CHECK, RESET) 
  700.                                         
  701. : FPUT ( B ---)   ( ONE BYTE TO BUFFER) 
  702.   FBUFF COUNT + C!    ( STORE THE BYTE) 
  703.   FBUFF C@ 1+ DUP FBUFF C!     ( COUNT) 
  704.   FBUFFLEN < NOT IF EMPTYFBUFF THEN ;   
  705.                                         
  706. : NAMETEST ( NAME IN WNAME$) ( --- F)   
  707.   WNAME$ C@ IF 0           ( F=0 => OK) 
  708.   WNAME$ C@ 0 DO    ( F>0 => BAD CHARS) 
  709.     WNAME$ 1+ I + C@ 127 AND UCIN       
  710.     DUP 46 < IF SWAP 1+ SWAP THEN       
  711.     DUP 90 > IF SWAP 1+ SWAP THEN       
  712.     DUP 57 > OVER 65 < AND IF           
  713.       SWAP 1+ SWAP THEN                 
  714.     OVER IF DROP BL THEN                
  715.     WNAME$ 1+ I + C!                    
  716.   LOOP FILTYP @ CASE ( APPEND ,P OR ,S) 
  717.    <H> OF ',P' ENDOF                    
  718.    <B> OF ',P' ENDOF                    
  719.    ANY OF ',S' ENDOF                    
  720.   ENDCASE WNAME$ ADD$ ELSE 1 THEN ; --> 
  721.                        
  722.  
  723. ( ---
  724. ( --- SCREEN # 29 ---
  725. ( ---
  726. ( FILE I/O 071384)    ( OPEN FOR WRITE) 
  727. : FWOPEN ( NAME IN NAME$ ) ( --- )      
  728.   '0:' WNAME$ BUF1 CONCAT$              
  729.   ',W' BUF1 ADD$      ( "0:WNAME,X,W" ) 
  730.   OPENCHN                               
  731.   19 8 19 BUF1 COUNT OPEN               
  732.   CKWRSTAT   ( FILE ALREADY EXISTS?...) 
  733.   FBUFF FBUFFLEN 1+ 0 FILL ;  ( 0 BUFF) 
  734.                                         
  735. : WCLOSE 19 CLOSE CLOSCHN ;             
  736.                                         
  737. : FWCLOSE   ( EMPTY BUFFER, CLOSE FILE) 
  738.   FBUFF C@ 0= NOT IF  ( STUFF IN BUFF?) 
  739.    EMPTYFBUFF         ( -YES, EMPTY IT) 
  740.   THEN WCLOSE ;                         
  741.                                         
  742. : FWTEST ( --- F) ( 1=> NO FILE, SAFE)  
  743.   '0:' WNAME$ BUF1 CONCAT$              
  744.   OPENCHN                               
  745.   19 8 19 BUF1 COUNT OPEN               
  746.   ?FILE                                 
  747.   WCLOSE ;                              
  748.  -->                                    
  749.                                         
  750.                                         
  751.                        
  752.  
  753. ( ---
  754. ( --- SCREEN # 30 ---
  755. ( ---
  756. ( SET/SHOW FILE-TRANSLATION 071184)     
  757.                                         
  758. ( FILE TYPES:                           
  759. SEQUENTIAL:                             
  760.   T = TEXT = LC/UC, TRANSLATE DATA      
  761.   UC-ONLY = UC/GRAPHICS, TRANSLATE DATA 
  762.   A = ANSI/ASCII, 7-BIT, NO TRANSLATION 
  763. PROGRAM:                                
  764.   B = BINARY, 8-BIT, NO TRANSLATION     
  765.   H = HEX NIBBLE CODING, 8-BIT BINARY ) 
  766.                                         
  767.  0VAR ITYPE                             
  768.                                         
  769.  4 VALTBL VTYPE TEXT 84     UC-ONLY 85  
  770.              ASCII-7 65    BINARY-8 66  
  771.                  HEX 72                 
  772.                                         
  773. : STYPE ( N ---)                        
  774.   ITYPE ! VTYPE ITYPE @ ()              
  775.   VALGET FILTYP ! DROP                  
  776.   FILTYP @ <B> = IF 255 ELSE 127 THEN   
  777.   BITS ! ;                              
  778.                                         
  779.  0 STYPE              ( DEFAULT = TEXT) 
  780.  -->                                    
  781.                        
  782.  
  783. ( ---
  784. ( --- SCREEN # 31 ---
  785. ( ---
  786. ( SET/SHOW FILE-TRANSLATION 071184)     
  787.                                         
  788. : XTYPE ( SELECT FILE TYPE FROM KBD)    
  789.   VTYPE XSETUP                          
  790.   DO I () HERE =$ IF                    
  791.      I STYPE UNKERR                     
  792.   THEN LOOP DROP TSTKERR ;              
  793.                                         
  794. : SHOWTYPE                              
  795.   VTYPE ITYPE @ ()                      
  796.   ." FILE TYPE = " TYPE$ CR DROP        
  797.   FILTYP @ CASE                         
  798.    <H> OF ."   <PROGRAM>" ENDOF         
  799.    <B> OF ."   <PROGRAM>" ENDOF         
  800.    ANY OF ."   <SEQUENTIAL>" ENDOF      
  801.   ENDCASE CR ;                          
  802.                                         
  803.  -->                                    
  804.                                         
  805.                                         
  806.                                         
  807.                                         
  808.                                         
  809.                                         
  810.                                         
  811.                        
  812.  
  813. ( ---
  814. ( --- SCREEN # 32 ---
  815. ( ---
  816. ( TERMINAL PARAMETER SETUP 020484)      
  817.                                         
  818. ( SET BAUD RATE )                       
  819.                                         
  820. 3 VALTBL VTSPEED                        
  821.   110 3 300 6 1200 8 2400 10            
  822.                                         
  823. : STSPEED ( N --- )                     
  824.     ITSPEED ! VTSPEED ITSPEED @ ()      
  825.     VALGET TSPEED ! DROP ;              
  826. 1 STSPEED                               
  827.                                         
  828. ( SET WORD LENGTH )                     
  829.                                         
  830. 1 VALTBL VTWORD 8-BITS 0 7-BITS 32      
  831.                                         
  832. : STWORD ( N --- )                      
  833.     ITWORD ! VTWORD ITWORD @ ()         
  834.     VALGET TWORD ! DROP ;               
  835. 0 STWORD                                
  836. -->                                     
  837.                                         
  838.                                         
  839.                                         
  840.                                         
  841.                        
  842.  
  843. ( ---
  844. ( --- SCREEN # 33 ---
  845. ( ---
  846. ( TERMINAL PARAMETER SETUP 020484)      
  847.                                         
  848. ( SET STOP BITS, NORMALLY 1 )           
  849.                                         
  850. 1 VALTBL VTSTOP 1 0 2 128               
  851.                                         
  852. : STSTOP ( N --- )                      
  853.     ITSTOP ! VTSTOP ITSTOP @ () VALGET  
  854.     TSTOP ! DROP ;                      
  855. 0 STSTOP                                
  856.                                         
  857. ( SET HANDSHAKE MODE )                  
  858.                                         
  859. 1 VALTBL VTSHK 3-LINE 0 X-LINE 1        
  860.                                         
  861. : STSHK ( N --- )                       
  862.     ITSHK ! VTSHK ITSHK @ () VALGET     
  863.     TSHK ! DROP ;                       
  864. 0 STSHK                                 
  865.                                         
  866. -->                                     
  867.                                         
  868.                                         
  869.                                         
  870.                                         
  871.                        
  872.  
  873. ( ---
  874. ( --- SCREEN # 34 ---
  875. ( ---
  876. ( TERMINAL PARAMETER SETUP 020484 )     
  877.                                         
  878. ( SET ECHO MODE, NORMALLY FULL DUPLEX ) 
  879.                                         
  880. 1 VALTBL VTDUP FULL 0 HALF 16           
  881.                                         
  882. : STDUP ( N --- )                       
  883.     ITDUP ! VTDUP ITDUP @ () VALGET     
  884.     TDUP ! DROP ;                       
  885. 0 STDUP                                 
  886.                                         
  887. ( SET PARITY, NORMALLY NO )             
  888.                                         
  889. 4 VALTBL VTPAR NO 0 ODD 32 EVEN 96      
  890.                MARK 160 SPACE 224       
  891.                                         
  892. : STPAR ( N --- )                       
  893.     ITPAR ! VTPAR ITPAR @ () VALGET     
  894.     TPAR ! DROP ;                       
  895. 0 STPAR                                 
  896. -->                                     
  897.                                         
  898.                                         
  899.                                         
  900.                                         
  901.                        
  902.  
  903. ( ---
  904. ( --- SCREEN # 35 ---
  905. ( ---
  906. ( TERMINAL PARAMETER SETUP 071784 )     
  907.                                         
  908.    ( CONSTRUCT CONTROL, COMMAND WORDS ) 
  909.                                         
  910. : STCTL                                 
  911.    TSPEED @ TWORD @ + TSTOP @ + TCTL ! ;
  912.                                         
  913. : STCOM                                 
  914.    TSHK @ TDUP @ + TPAR @ + TCOM ! ;    
  915.                                         
  916.         ( BUILD RS-232 OPENING STRING ) 
  917.                                         
  918. CREATE TOPN$ 0 , 0 C,        ( 3 BYTES) 
  919.                                         
  920. : BLDTOPN$                              
  921.     STCTL STCOM                         
  922.     TOPN$            ( OPENING STRING ) 
  923.     2 OVER C!          ( NO. OF BYTES ) 
  924.     1+ TCTL C@ OVER C!    ( CTRL BYTE ) 
  925.     1+ TCOM C@ SWAP C! ;   ( CMD BYTE ) 
  926. -->                                     
  927.                                         
  928.                                         
  929.                                         
  930.                                         
  931.                        
  932.  
  933. ( ---
  934. ( --- SCREEN # 36 ---
  935. ( ---
  936. ( TERMINAL PARAMETER SETUP 020484 )     
  937.                                         
  938. : XTSPEED ( SELECT BAUD RATE )          
  939.     VTSPEED XSETUP                      
  940.     DO I () HERE =$ IF                  
  941.        I STSPEED UNKERR                 
  942.     THEN LOOP DROP TSTKERR ;            
  943.                                         
  944. : XTWORD ( SELECT WORD LENGTH )         
  945.     VTWORD XSETUP                       
  946.     DO I () HERE =$ IF                  
  947.        I STWORD UNKERR                  
  948.     THEN LOOP DROP TSTKERR ;            
  949.                                         
  950. : XTSTOP ( SELECT NO. OF STOP BITS )    
  951.     VTSTOP XSETUP                       
  952.     DO I () HERE =$ IF                  
  953.        I STSTOP UNKERR                  
  954.     THEN LOOP DROP TSTKERR ;            
  955.                                         
  956. : XTSHK ( SELECT HANDSHAKE MODE )       
  957.     VTSHK XSETUP                        
  958.     DO I () HERE =$ IF                  
  959.        I STSHK UNKERR                   
  960.     THEN LOOP DROP TSTKERR ;            
  961. -->                    
  962.  
  963. ( ---
  964. ( --- SCREEN # 37 ---
  965. ( ---
  966. ( TERMINAL PARAMETER SETUP 020484)      
  967.                                         
  968. : XTDUP ( SELECT ECHO/DUPLEX MODE )     
  969.   VTDUP XSETUP                          
  970.   DO I () HERE =$ IF                    
  971.      I STDUP UNKERR                     
  972.   THEN LOOP DROP TSTKERR ;              
  973.                                         
  974. : XTPAR ( SELECT PARITY )               
  975.   VTPAR XSETUP                          
  976.   DO I () HERE =$ IF                    
  977.      I STPAR UNKERR                     
  978.   THEN LOOP DROP TSTKERR ;              
  979.                                         
  980. -->                                     
  981.                                         
  982.                                         
  983.                                         
  984.                                         
  985.                                         
  986.                                         
  987.                                         
  988.                                         
  989.                                         
  990.                                         
  991.                        
  992.  
  993. ( ---
  994. ( --- SCREEN # 38 ---
  995. ( ---
  996. ( TERMINAL PARAMETER SETUP 063084)      
  997.                                         
  998. 1 VALTBL VCHRSET UC/GRAPHIC 21 LC/UC 23 
  999.                                         
  1000. : SCHRSET ( N --- )                     
  1001.   ICHRSET ! VCHRSET ICHRSET @ () VALGET 
  1002.   53272 ! DROP ;                        
  1003.                                         
  1004. 0 SCHRSET                               
  1005.                                         
  1006. : XCHRSET ( SELECT CHARACTER SET )      
  1007.     VCHRSET XSETUP                      
  1008.     DO I () HERE =$ IF                  
  1009.        I SCHRSET UNKERR                 
  1010.     THEN LOOP DROP TSTKERR ;            
  1011.                                         
  1012. -->                                     
  1013.                                         
  1014.                                         
  1015.                                         
  1016.                                         
  1017.                                         
  1018.                                         
  1019.                                         
  1020.                                         
  1021.                        
  1022.  
  1023. ( ---
  1024. ( --- SCREEN # 39 ---
  1025. ( ---
  1026. ( TERMINAL PARAMETER SETUP 020484)      
  1027.                                         
  1028. : NUMIN BL WORD HERE NUMBER DROP ;      
  1029.                                         
  1030. : SBORDER ( N ---)                      
  1031.    DUP 53280 C! IBORDER ! ;             
  1032. 14 SBORDER                              
  1033.                                         
  1034. : XBORDER NUMIN 15 AND SBORDER ;        
  1035.                                         
  1036. : SBKGND ( N ---)                       
  1037.    DUP 53281 C! IBKGND ! ;              
  1038. 1 SBKGND                                
  1039.                                         
  1040. : XBKGND NUMIN 15 AND SBKGND ;          
  1041.                                         
  1042. : SCHRCLR ( N ---)                      
  1043.    DUP 646 C! ICHRCLR ! ;               
  1044. 6 SCHRCLR                               
  1045.                                         
  1046. : XCHRCLR NUMIN 15 AND SCHRCLR ;        
  1047.                                         
  1048. -->                                     
  1049.                                         
  1050.                                         
  1051.                        
  1052.  
  1053. ( ---
  1054. ( --- SCREEN # 40 ---
  1055. ( ---
  1056. ( TERMINAL PARAMETER STORAGE 070284)    
  1057. : STOR ( BLKADDR INDEX VALADDR ---)     
  1058.   C@ 0 <# BL HOLD # # #> DROP           
  1059.   SWAP 3 * 3 PICK + 3 CMOVE ;           
  1060.                                         
  1061. : RECL ( --- VALUE) NUMIN ;             
  1062.                                         
  1063. : XTST 95 BLOCK                         
  1064.   0 ITSPEED STOR 1 ITWORD STOR          
  1065.   2 ITSTOP STOR  3 ITSHK STOR           
  1066.   4 ITDUP STOR   5 ITPAR STOR           
  1067.   6 ICHRSET STOR 7 ICHRCLR STOR         
  1068.   8 IBKGND STOR  9 IBORDER STOR         
  1069.   DROP UPDATE ;                         
  1070. : XTSTORE XTST FLUSH ;                  
  1071.                                         
  1072. : XTRECALL BLK @ IN @ 95 BLK ! 0 IN !   
  1073.   RECL  STSPEED  RECL  STWORD           
  1074.   RECL  STSTOP   RECL  STSHK            
  1075.   RECL  STDUP    RECL  STPAR            
  1076.   RECL  SCHRSET  RECL  SCHRCLR          
  1077.   RECL  SBKGND   RECL  SBORDER          
  1078.   IN ! BLK ! ;                          
  1079.  -->                                    
  1080.                                         
  1081.                        
  1082.  
  1083. ( ---
  1084. ( --- SCREEN # 41 ---
  1085. ( ---
  1086. ( TERMINAL-PARAMETER SET 071484)        
  1087.                                         
  1088. ( 'SET TERMINAL' OPTIONS)               
  1089.                                         
  1090. 11 CMDTBL CTERMINAL                     
  1091.   SPEED XTSPEED                         
  1092.   WORD XTWORD                           
  1093.   STOPBITS XTSTOP                       
  1094.   HANDSHAKE XTSHK                       
  1095.   ECHO XTDUP                            
  1096.   PARITY XTPAR                          
  1097.   SAVE XTSTORE                          
  1098.   RESTORE XTRECALL                      
  1099.   CASE XCHRSET                          
  1100.   CHARCOLOR XCHRCLR                     
  1101.   BORDER XBORDER                        
  1102.   BACKGROUND XBKGND                     
  1103.                                         
  1104. : XTERMINAL                             
  1105.   CTERMINAL XSETUP                      
  1106.   DO I () HERE =$ IF                    
  1107.     CTERMINAL I () CMDEXE UNKERR        
  1108.   THEN LOOP DROP TSTKERR ;              
  1109.                                         
  1110. -->                                     
  1111.                        
  1112.  
  1113. ( ---
  1114. ( --- SCREEN # 42 ---
  1115. ( ---
  1116. ( SHOW TERMINAL-PARAMETERS 020484 )     
  1117.                                         
  1118. : SHOWTERM ( --- )                      
  1119.   CR ." TERMINAL PARAMETERS:" CR        
  1120.   VTSPEED ITSPEED @ ()                  
  1121.     ."  SPEED = " TYPE$ CR DROP         
  1122.   VTWORD ITWORD @ ()                    
  1123.     ."  WORD LENGTH = " TYPE$ CR DROP   
  1124.   VTSTOP ITSTOP @ ()                    
  1125.     ."  STOPBITS = " TYPE$ CR DROP      
  1126.   VTSHK ITSHK @ ()                      
  1127.     ."  HANDSHAKE MODE = " TYPE$ CR DROP
  1128.   VTDUP ITDUP @ ()                      
  1129.     ."  ECHO = " TYPE$ ."  DUPLEX" CR   
  1130.         DROP                            
  1131.   VTPAR ITPAR @ ()                      
  1132.     ."  PARITY = " TYPE$ CR DROP        
  1133.   VCHRSET ICHRSET @ ()                  
  1134.     ."  CHARACTER SET = " TYPE$ CR      
  1135.         DROP                            
  1136.   ." CHARACTER COLOR = " ICHRCLR ? CR   
  1137.   ." BORDER COLOR = " IBORDER ? CR      
  1138.   ." BACKGROUND COLOR = " IBKGND ? CR ; 
  1139. -->                                     
  1140.                                         
  1141.                        
  1142.  
  1143. ( ---
  1144. ( --- SCREEN # 43 ---
  1145. ( ---
  1146. ( SET KERMIT OPTIONS 070884)            
  1147.                                         
  1148. : XSPKTLEN NUMIN                        
  1149.   MAXPACK MIN SPSIZ ! ;                 
  1150.                                         
  1151. : XSPADDIN NUMIN SPAD ! ;               
  1152.                                         
  1153. : XSPADCHR NUMIN PADCHAR ! ;            
  1154.                                         
  1155. : XSTIMOUT NUMIN MYTIME ! ;             
  1156.                                         
  1157. : XSENDLIN NUMIN EOL ! ;                
  1158.                                         
  1159. : XSQUOTE BL WORD HERE 1+ C@            
  1160.   LCOUT MYQUOTE ! ;                     
  1161.                                         
  1162. 0VAR IFLWRN                             
  1163. : XFLWRNOFF 0 IFLWRN ! ;                
  1164. : XFLWRNON 1 IFLWRN ! ;                 
  1165. -->                                     
  1166.                                         
  1167.                                         
  1168.                                         
  1169.                                         
  1170.                                         
  1171.                        
  1172.  
  1173. ( ---
  1174. ( --- SCREEN # 44 ---
  1175. ( ---
  1176. ( SET KERMIT OPTIONS 070884)            
  1177.                                         
  1178. : XRPKTLEN NUMIN                        
  1179.   MAXPACK MIN RPSIZ ! ;                 
  1180.                                         
  1181.                                         
  1182. : XRPADDIN NUMIN MYPAD ! ;              
  1183.                                         
  1184. : XRPADCHR NUMIN MYPCHAR ! ;            
  1185.                                         
  1186. : XRTIMOUT NUMIN TIMINT ! ;             
  1187.                                         
  1188. : XRENDLIN NUMIN MYEOL ! ;              
  1189.                                         
  1190. : XRQUOTE BL WORD HERE 1+ C@            
  1191.   LCOUT QUOTE ! ;                       
  1192.                                         
  1193. : XDELAY  NUMIN DELAY ! ;               
  1194.                                         
  1195. -->                                     
  1196.                                         
  1197.                                         
  1198.                                         
  1199.                                         
  1200.                                         
  1201.                        
  1202.  
  1203. ( ---
  1204. ( --- SCREEN # 45 ---
  1205. ( ---
  1206. ( SET KERMIT OPTIONS 070284)            
  1207.                                         
  1208. : XSDST 95 BLOCK 40 +                   
  1209.   0 SPSIZ STOR      1 SPAD STOR         
  1210.   2 PADCHAR STOR    3 MYTIME STOR       
  1211.   4 EOL STOR        5 MYQUOTE STOR      
  1212.   DROP UPDATE ;                         
  1213.                                         
  1214. : XSDSTORE XSDST FLUSH ;                
  1215.                                         
  1216. : XSDRECALL BLK @ IN @ 95 BLK ! 40 IN ! 
  1217.   RECL SPSIZ   !                        
  1218.   RECL SPAD    !                        
  1219.   RECL PADCHAR !                        
  1220.   RECL MYTIME  !                        
  1221.   RECL EOL     !                        
  1222.   RECL MYQUOTE !                        
  1223.   IN ! BLK ! ;                          
  1224.                                         
  1225.  -->                                    
  1226.                                         
  1227.                                         
  1228.                                         
  1229.                                         
  1230.                                         
  1231.                        
  1232.  
  1233. ( ---
  1234. ( --- SCREEN # 46 ---
  1235. ( ---
  1236. ( SET KERMIT OPTIONS, STO/RECALL 070284)
  1237.                                         
  1238. : XRCST 95 BLOCK 80 +                   
  1239.   0 RPSIZ STOR     1 MYPAD STOR         
  1240.   2 MYPCHAR STOR   3 TIMINT STOR        
  1241.   4 MYEOL STOR     5 QUOTE STOR         
  1242.   DROP UPDATE FLUSH ;                   
  1243.                                         
  1244. : XRCSTORE XRCST FLUSH ;                
  1245.                                         
  1246. : XRCRECALL BLK @ IN @ 95 BLK ! 80 IN ! 
  1247.   RECL RPSIZ   !                        
  1248.   RECL MYPAD   !                        
  1249.   RECL MYPCHAR !                        
  1250.   RECL TIMINT  !                        
  1251.   RECL MYEOL   !                        
  1252.   RECL QUOTE   !                        
  1253.   IN ! BLK ! ;                          
  1254.                                         
  1255. : RECALL XRCRECALL XSDRECALL XTRECALL ; 
  1256.                                         
  1257. : STORE XRCST XSDST XTST                
  1258.   FLUSH ;                               
  1259.  -->                                    
  1260.                                         
  1261.                        
  1262.  
  1263. ( ---
  1264. ( --- SCREEN # 47 ---
  1265. ( ---
  1266. ( SET KERMIT OPTIONS 071484)            
  1267. 7 CMDTBL CSEND                          
  1268.     LENGTH-PACKET XSPKTLEN              
  1269.     PADDING       XSPADDIN              
  1270.     CHAR-PAD      XSPADCHR              
  1271.     TIMEOUT       XSTIMOUT              
  1272.     END-OF-LINE   XSENDLIN              
  1273.     QUOTE         XSQUOTE               
  1274.     SAVE          XSDSTORE              
  1275.     RESTORE       XSDRECALL             
  1276. 7 CMDTBL CRECEIVE                       
  1277.     LENGTH-PACKET XRPKTLEN              
  1278.     PADDING       XRPADDIN              
  1279.     CHAR-PAD      XRPADCHR              
  1280.     TIMEOUT       XRTIMOUT              
  1281.     END-OF-LINE   XRENDLIN              
  1282.     QUOTE         XRQUOTE               
  1283.     SAVE          XRCSTORE              
  1284.     RESTORE       XRCRECALL             
  1285.                                         
  1286. 1 CMDTBL CFLWRN                         
  1287.     OFF XFLWRNOFF    ON XFLWRNON        
  1288.                                         
  1289.  -->                                    
  1290.                                         
  1291.                        
  1292.  
  1293. ( ---
  1294. ( --- SCREEN # 48 ---
  1295. ( ---
  1296. ( SET KERMIT OPTIONS 062984)            
  1297.                                         
  1298. : XSEND ( SET SEND PARAMETERS)          
  1299.   CSEND XSETUP                          
  1300.   DO I () HERE =$ IF                    
  1301.     CSEND I () CMDEXE UNKERR            
  1302.   THEN LOOP DROP TSTKERR ;              
  1303.                                         
  1304. : XRECEIVE ( SET RECEIVE PARAMETERS)    
  1305.   CRECEIVE XSETUP                       
  1306.   DO I () HERE =$ IF                    
  1307.     CRECEIVE I () CMDEXE UNKERR         
  1308.   THEN LOOP DROP TSTKERR ;              
  1309.                                         
  1310. : XFLWRN ( SET FILE-WARNING ON/OFF)     
  1311.   CFLWRN XSETUP DO I () HERE =$ IF      
  1312.     CFLWRN I () CMDEXE UNKERR           
  1313.   THEN LOOP DROP TSTKERR ;              
  1314.                                         
  1315. -->                                     
  1316.                                         
  1317.                                         
  1318.                                         
  1319.                                         
  1320.                                         
  1321.                        
  1322.  
  1323. ( ---
  1324. ( --- SCREEN # 49 ---
  1325. ( ---
  1326. ( SHOW KERMIT OPTIONS 062984)           
  1327.                                         
  1328. : SHOWSEND                              
  1329.    CR ." SEND PARAMETERS:"              
  1330.    CR ."  PACKET-LENGTH =    " SPSIZ ?  
  1331.    CR ."  NO. PAD CHARS =    " SPAD ?   
  1332.    CR ."  PAD CHARACTER =    " PADCHAR ?
  1333.    CR ."  TIMEOUT INTERVAL = " MYTIME ? 
  1334.    CR ."  END-OF-LINE CHAR = " EOL ?    
  1335.    CR ."  QUOTE CHARACTER =  " MYQUOTE  
  1336.       @ UCIN EMIT CR ;                  
  1337.                                         
  1338. : SHOWRECEIVE                           
  1339.    CR ." RECEIVE PARAMETERS:"           
  1340.    CR ."  PACKET-LENGTH =    " RPSIZ ?  
  1341.    CR ."  NO. PAD CHARS =    " MYPAD ?  
  1342.    CR ."  PAD CHARACTER =    " MYPCHAR ?
  1343.    CR ."  TIMEOUT INTERVAL = " TIMINT ? 
  1344.    CR ."  END-OF-LINE CHAR = " MYEOL ?  
  1345.    CR ."  QUOTE CHARACTER =  " QUOTE    
  1346.       @ UCIN EMIT CR ;                  
  1347.                                         
  1348. -->                                     
  1349.                                         
  1350.                                         
  1351.                        
  1352.  
  1353. ( ---
  1354. ( --- SCREEN # 50 ---
  1355. ( ---
  1356. ( SHOW KERMIT OPTIONS 062984)           
  1357.                                         
  1358. : SHOWFLWRN CR ." FILE WARNING IS "     
  1359.     CFLWRN IFLWRN @ () TYPE$ CR DROP ;  
  1360.                                         
  1361. : SHOWDELAY CR                          
  1362.   ." INITIAL DELAY INTERVAL = "         
  1363.   DELAY ? ." SEC" CR ;                  
  1364. -->                                     
  1365.                                         
  1366.                                         
  1367.                                         
  1368.                                         
  1369.                                         
  1370.                                         
  1371.                                         
  1372.                                         
  1373.                                         
  1374.                                         
  1375.                                         
  1376.                                         
  1377.                                         
  1378.                                         
  1379.                                         
  1380.                                         
  1381.                        
  1382.  
  1383. ( ---
  1384. ( --- SCREEN # 51 ---
  1385. ( ---
  1386. ( SET/SHOW COMMAND TABLES 071284)       
  1387.                                         
  1388. 5 CMDTBL CSET                           
  1389.   TERMINAL       XTERMINAL              
  1390.   SEND           XSEND                  
  1391.   RECEIVE        XRECEIVE               
  1392.   FILE-TYPE      XTYPE                  
  1393.   WARNING-FILE   XFLWRN                 
  1394.   DELAY          XDELAY                 
  1395.                                         
  1396. 5 CMDTBL CSHOW                          
  1397.   TERMINAL       SHOWTERM               
  1398.   SEND           SHOWSEND               
  1399.   RECEIVE        SHOWRECEIVE            
  1400.   FILE-TYPE      SHOWTYPE               
  1401.   WARNING-FILE   SHOWFLWRN              
  1402.   DELAY          SHOWDELAY              
  1403.                                         
  1404. -->                                     
  1405.                                         
  1406.                                         
  1407.                                         
  1408.                                         
  1409.                                         
  1410.                                         
  1411.                        
  1412.  
  1413. ( ---
  1414. ( --- SCREEN # 52 ---
  1415. ( ---
  1416. ( KERMIT SET/SHOW ROUTINES 063084)      
  1417.                                         
  1418. : SET                                   
  1419.   CSET XSETUP                           
  1420.   DO I () HERE =$ IF                    
  1421.     CSET I () CMDEXE UNKERR             
  1422.   THEN LOOP DROP TSTKERR ;              
  1423.                                         
  1424. : SHOW                                  
  1425.   CSHOW XSETUP                          
  1426.   DO I () HERE =$ IF                    
  1427.     CSHOW I () CMDEXE UNKERR            
  1428.   THEN LOOP DROP TSTKERR ;              
  1429.                                         
  1430. -->                                     
  1431.                                         
  1432.                                         
  1433.                                         
  1434.                                         
  1435.                                         
  1436.                                         
  1437.                                         
  1438.                                         
  1439.                                         
  1440.                                         
  1441.                        
  1442.  
  1443. ( ---
  1444. ( --- SCREEN # 53 ---
  1445. ( ---
  1446. ( 1/60-SEC TIMER WORDS 110384)          
  1447.                                         
  1448. 0 VARIABLE TIVAR                        
  1449.                                         
  1450. : TICSET                  ( TICKS --- ) 
  1451.   ABS MINUS                             
  1452.   DUP )HI TIVAR C! )LO TIVAR 1+ C! ;    
  1453.                                         
  1454. : INTSET                ( SECONDS --- ) 
  1455.   60 * TICSET ;                 ( 60T ) 
  1456.                                         
  1457. : TINTSET TIMINT @ INTSET ;             
  1458.                                         
  1459. : TI0 TIVAR @ 161 ! ;   ( PRESET TIMER) 
  1460.                                         
  1461. : TIGET ( --- F)   ( CHECK FOR TIMEOUT) 
  1462.   161 C@ 128 < ;                        
  1463.                                         
  1464. : WAIT DELAY @ INTSET TI0               
  1465.   BEGIN TIGET UNTIL ;                   
  1466.                                         
  1467.  -->                                    
  1468.                                         
  1469.                                         
  1470.                                         
  1471.                        
  1472.  
  1473. ( ---
  1474. ( --- SCREEN # 54 ---
  1475. ( ---
  1476. ( CONNECT-DEFINITIONS 110384)           
  1477.                                         
  1478. ( MEMTOP SHOULD BE BELOW $CB00 )        
  1479.                                         
  1480. HEX CF00 CONSTANT BF1                   
  1481.     CE00 CONSTANT BF2 DECIMAL           
  1482.                                         
  1483. : CLRIN           ( CLEAR INPUT BUFFER) 
  1484.   BF1 256 0 FILL 0 667 ! ;              
  1485.                                         
  1486. : CLROUT         ( CLEAR OUTPUT BUFFER) 
  1487.   BF2 256 0 FILL 0 669 ! ;              
  1488.                                         
  1489. : MODOPEN         ( OPEN MODEM FOR I/O) 
  1490.    BLDTOPN$   ( SET CURRENT PARAMETERS) 
  1491.    2 2 0 TOPN$ COUNT OPEN               
  1492.    BF1 247 ! BF2 249 ! ( SET BUFF PTRS) 
  1493.    CLRIN CLROUT ;   ( RESET BUFF INDEX) 
  1494.                                         
  1495. : MODCLOSE BEGIN 669 C@ 670 C@ = UNTIL  
  1496.    2 CLOSE ; ( WAIT TILL BUFFER EMPTY!) 
  1497.                                         
  1498.  -->                                    
  1499.                                         
  1500.                                         
  1501.                        
  1502.  
  1503. ( ---
  1504. ( --- SCREEN # 55 ---
  1505. ( ---
  1506. ( TERMINAL BREAK-KEY SIMULATION 111084) 
  1507.                                         
  1508. : TOGGEL  ( REVERSE RS-232 OUTPUT LINE) 
  1509.   56576 DUP C@ 4 XOR SWAP C! ;          
  1510.                                         
  1511. : BREAK  ( 1/4-SEC BREAK ON RS-232 OUT) 
  1512.   ."  [BREAK] "                         
  1513.   30 TICSET                             
  1514.   MODCLOSE                              
  1515.   TOGGEL                                
  1516.   TI0 BEGIN TIGET UNTIL                 
  1517.   TOGGEL                                
  1518.   MODOPEN ;                             
  1519.                                         
  1520.  -->                                    
  1521.                                         
  1522.                                         
  1523.                                         
  1524.                                         
  1525.                                         
  1526.                                         
  1527.                                         
  1528.                                         
  1529.                                         
  1530.                                         
  1531.                        
  1532.  
  1533. ( ---
  1534. ( --- SCREEN # 56 ---
  1535. ( ---
  1536. ( CONNECT-ESCAPE SEQUENCES 110384)      
  1537.                                         
  1538. ( B=KEYBOARD BYTE, B1=OUTPUT,140=>NULL) 
  1539.                                         
  1540. ( FLAG=1 AND B1>0 SENDS B1 TO MODEM)    
  1541. : FL0 0 0 ;   ( EXIT TO RESET CHAR SET) 
  1542. : FL1 -1 0 ;        ( DISCONNECT MODEM) 
  1543. : FL2 140 1 ; ( NULL OUTPUT, NO EFFECT) 
  1544.                                         
  1545. : ?ESC  ( B --- B1 F,  F=1 => TRANSMIT) 
  1546.   1 OVER MYESC = IF 2DROP ." [F8]"      
  1547.   KEYIN DUP EMIT CASE                   
  1548.   <U> OF 0 SCHRSET FL0 ENDOF ( UC-ONLY) 
  1549.   <L> OF 1 SCHRSET FL0 ENDOF    ( TEXT) 
  1550.   <C> OF FL1 ENDOF        ( DISCONNECT) 
  1551.   <B> OF BREAK FL2 ENDOF     ( 'BREAK') 
  1552.   <S> OF SHOWSEND SHOWRECEIVE           
  1553.          SHOWFLWRN SHOWDELAY            
  1554.          FL2 ENDOF   ( SHOW PARAMETERS) 
  1555.   <T> OF SHOWTERM FL2 ENDOF             
  1556.   <X> OF FL1 ENDOF         ( SAME AS C) 
  1557.   <?> OF CR ." OPTIONS: "  ( SHOW THEM) 
  1558.       ." U L B C S T X ?" CR FL2 ENDOF  
  1559.   ENDCASE THEN ; -->                    
  1560.                                         
  1561.                        
  1562.  
  1563. ( ---
  1564. ( --- SCREEN # 57 ---
  1565. ( ---
  1566. ( TERMINAL I/O LOOPS 112584)            
  1567.                                         
  1568. : GETKB                        ( --- B) 
  1569.   GET TDUP @ IF                         
  1570.     DUP BYTEPRINT                       
  1571.   THEN ;                                
  1572.                                         
  1573. : GETMOD                       ( --- B) 
  1574.   2 MOD$ 1 GET#                         
  1575.   MOD$ 1+ C@ 127 AND ;                  
  1576.                                         
  1577. : PUTMOD                       ( B ---) 
  1578.   DUP IF                                
  1579.     <KEY> C!                            
  1580.     2 <KEY> 1 PRINT#                    
  1581.   ELSE                                  
  1582.     DROP                                
  1583.   THEN ;                                
  1584.                                         
  1585.  -->                                    
  1586.                                         
  1587.                                         
  1588.                                         
  1589.                                         
  1590.                                         
  1591.                        
  1592.  
  1593. ( ---
  1594. ( --- SCREEN # 58 ---
  1595. ( ---
  1596. ( TERMINAL I/O LOOPS 111084)            
  1597.                                         
  1598. : UCIO            ( UPPERCASE TERMINAL) 
  1599.   BEGIN                                 
  1600.     GETKB ?ESC                          
  1601.   WHILE                                 
  1602.     UCOUT PUTMOD                        
  1603.     GETMOD                              
  1604.     UCIN BYTEPRINT                      
  1605.   REPEAT ;                              
  1606.                                         
  1607. : LCIO            ( LOWERCASE TERMINAL) 
  1608.   BEGIN                                 
  1609.     GETKB ?ESC                          
  1610.   WHILE                                 
  1611.     LCOUT PUTMOD                        
  1612.     GETMOD                              
  1613.     LCIN BYTEPRINT                      
  1614.   REPEAT ;                              
  1615.                                         
  1616.  -->                                    
  1617.                                         
  1618.                                         
  1619.                                         
  1620.                                         
  1621.                        
  1622.  
  1623. ( ---
  1624. ( --- SCREEN # 59 ---
  1625. ( ---
  1626. ( TERMINAL I/O LOOPS 111084)            
  1627.                                         
  1628. : TERMLOOP                              
  1629.   BEGIN                                 
  1630.   53272 C@ 2 AND IF ( CHAR SET?)        
  1631.     LCIO                                
  1632.   ELSE                                  
  1633.     UCIO                                
  1634.   THEN     ( HERE IF ?ESC GIVES 0 FLAG) 
  1635.   0< UNTIL ;    ( LOOP UNLESS NEGATIVE) 
  1636.                                         
  1637. : CONNECT ( ACT AS TERMINAL, W ESC KEY) 
  1638.   ."  *CONNECT TO REMOTE: F8-C RETURNS" 
  1639.   CR MODOPEN   ( OPEN MODEM CONNECTION) 
  1640.   TERMLOOP                              
  1641.   MODCLOSE CR ( CLOSE MODEM CONNECTION) 
  1642.   ."  *RETURN TO LOCAL KERMIT" CR ;     
  1643.                                         
  1644. -->                                     
  1645.                                         
  1646.                                         
  1647.                                         
  1648.                                         
  1649.                                         
  1650.                                         
  1651.                        
  1652.  
  1653. ( ---
  1654. ( --- SCREEN # 60 ---
  1655. ( ---
  1656. ( PACKET UTILITY ROUTINES 071584)       
  1657.                                         
  1658. ( CONVERTS CTRL TO PRINT CHAR BY +32)   
  1659. : TOCHAR ( N1 --- N2) <SP> + ;          
  1660.                                         
  1661. ( UNDOES TOCHAR)                        
  1662. : UNCHAR ( N2 --- N1) <SP> - ;          
  1663.                                         
  1664. ( CONVERTS CTRL <-> PRINT CHAR BY       
  1665.   TOGGLING CTRL BIT)                    
  1666. : CTL ( N1 --- N2) 64 XOR ;             
  1667.                                         
  1668. : PRNTE         ( PRINTS ERROR PACKETS) 
  1669.   9 DWN ." MSG FROM HOST:" CR           
  1670.   PACKET RLEN @ 0 DO DUP I + C@         
  1671.   UCIN EMIT LOOP DROP ;                 
  1672.                                         
  1673. : DISPL ." PKT # = " N ?               
  1674.         ."  TRIES = " NUMTRY ? ;        
  1675.                                         
  1676.  -->                                    
  1677.                                         
  1678.                                         
  1679.                                         
  1680.                                         
  1681.                        
  1682.  
  1683. ( ---
  1684. ( --- SCREEN # 61 ---
  1685. ( ---
  1686. ( PACKET UTILITY ROUTINES 071384)       
  1687.                                         
  1688. ( FILL EXT DATAARRAY W SENDINIT PARAMS) 
  1689. : SPARA ( ADDATA ---)                   
  1690.    RPSIZ   @ TOCHAR OVER     C!         
  1691.    MYTIME  @ TOCHAR OVER 1 + C!         
  1692.    MYPAD   @ TOCHAR OVER 2 + C!         
  1693.    MYPCHAR @ CTL    OVER 3 + C!         
  1694.    MYEOL   @ TOCHAR OVER 4 + C!         
  1695.    MYQUOTE @        SWAP 5 + C! ;       
  1696.                                         
  1697. ( GET SENDINIT STUFF FROM EXT DATAARRAY)
  1698. : RPARA ( ADDATA ---)                   
  1699.    DUP     C@ UNCHAR SPSIZ !            
  1700.    DUP 1 + C@ UNCHAR TIMINT !           
  1701.    DUP 2 + C@ UNCHAR SPAD !             
  1702.    DUP 3 + C@ CTL    PADCHAR !          
  1703.    DUP 4 + C@ UNCHAR EOL !              
  1704.        5 + C@        QUOTE ! ;          
  1705.                                         
  1706. : MESSG1 5 DWN ." TRANSFER COMPLETE" ;  
  1707. : MESSG2 5 DWN ." ??TRANSFER FAILED" ;  
  1708.  -->                                    
  1709.                                         
  1710.                                         
  1711.                        
  1712.  
  1713. ( ---
  1714. ( --- SCREEN # 62 ---
  1715. ( ---
  1716. ( SEND/RECEIVE PACKET WORDS 071084)     
  1717.                                         
  1718. : NUMTRY+>?                             
  1719.    NUMTRY @ 1 NUMTRY +! MAXTRY > ;      
  1720.                                         
  1721. : OLDTRY+>?                             
  1722.    OLDTRY @ 1 OLDTRY +! MAXTRY > ;      
  1723.                                         
  1724. : KSTATE@ KSTATE @ ;                    
  1725. : KSTATE! KSTATE ! ;                    
  1726.                                         
  1727. : EOLSET                                
  1728.    EOL @ 0= IF <CR> EOL ! THEN ;        
  1729.                                         
  1730. : QUOTSET                               
  1731.    QUOTE @ 0= IF <#> QUOTE ! THEN ;     
  1732.                                         
  1733. : 0NUMTRY                               
  1734.    0 NUMTRY ! ;                         
  1735.                                         
  1736. : N+ N @ 1+ 64 MOD N ! ;                
  1737. : N@ N @ ;                              
  1738.                                         
  1739. : INITIALIZE 0NUMTRY 0 OLDTRY ! 0 N ! ; 
  1740.  -->                                    
  1741.                        
  1742.  
  1743. ( ---
  1744. ( --- SCREEN # 63 ---
  1745. ( ---
  1746. ( RECEIVE-PACKET [PART A] 071184)       
  1747.                                         
  1748. : T7 MOD$1 C@ 127 AND ; ( 7BIT, NO SUM) 
  1749. : T7+ T7 SWAP OVER + SWAP ;  ( W CKSUM) 
  1750. : T8 MOD$1 C@ ;              ( 8BIT TM) 
  1751. : T8+ T8 SWAP OVER + SWAP ; ( LIKE TM+) 
  1752.                                         
  1753. ( MGET WAITS FOR NON-ZERO INPUT BYTE. ) 
  1754. ( MGET NORMALLY RETURNS   F=0, B>32,  ) 
  1755. ( BUT A NEW PACKET CAUSES F=0, B=<SOH>) 
  1756. ( AND A TIMEOUT CAUSES    F=1, B=<SOH>) 
  1757.                                         
  1758. : MGET ( --- F B )                      
  1759.   0               ( RESET TIMEOUT FLAG) 
  1760.   BEGIN                                 
  1761.     2 MOD$ 1 GET# MOD$1 C@  ( F B --- ) 
  1762.     TIGET IF       ( TIMEOUT ON ALARM ) 
  1763.       2DROP 1 <SOH> DUP MOD$1 C!        
  1764.     THEN                                
  1765.   UNTIL              ( LOOP UNTIL B>0 ) 
  1766.   T7 ;              ( RETURN 7BIT BYTE) 
  1767.  -->                                    
  1768.                                         
  1769.                                         
  1770.                                         
  1771.                        
  1772.  
  1773. ( ---
  1774. ( --- SCREEN # 64 ---
  1775. ( ---
  1776. ( RECEIVE-PACKET [PART B] 071184)       
  1777. : WAITHEADER ( --- FLD=1/CKSUM=0 )      
  1778.   TI0            ( RESET TIMEOUT CLOCK) 
  1779.   BEGIN MGET ( F B ---) ( AWAIT PACKET) 
  1780.   <SOH> = NOT WHILE DROP REPEAT         
  1781.   IF 7 255          ( IS IT A TIMEOUT?) 
  1782.   ELSE 1 0 THEN ;   ( OR A NEW PACKET?) 
  1783.                                         
  1784. : GETHEADER  ( FLD/CKSUM --- FLD/CKSUM) 
  1785.   MGET <SOH> = IF ( NORMALLY NOT <SOH>) 
  1786.    IF 2DROP 7 255   ( IS IT A TIMEOUT?) 
  1787.    ELSE 2DROP 0 0 THEN ( A NEW PACKET?) 
  1788.   ELSE DROP THEN ;      ( DISCARD FLAG) 
  1789.                                         
  1790. : FILLPACKET ( FLD/CKSUM --- FLD/CKSUM) 
  1791.   3 PICK @  ( GET # BYTES = PKT LENGTH) 
  1792.   -DUP IF                               
  1793.    6 PICK DUP ROT + SWAP DO             
  1794.     MGET <SOH> = IF  ( TIMEOUT OR NEW?) 
  1795.      IF 2DROP 7 255 ELSE 2DROP 0 0 THEN 
  1796.     ELSE                                
  1797.      DROP T8+ I C! ( STORE 7/8BIT DATA) 
  1798.     THEN                                
  1799.    LOOP                                 
  1800.   THEN ; -->                            
  1801.                        
  1802.  
  1803. ( ---
  1804. ( --- SCREEN # 65 ---
  1805. ( ---
  1806. ( RECEIVE-PACKET [PART C] 071184)       
  1807.                                         
  1808. : RPACK ( ADDATA ADNUM ADLEN --- TYPE)  
  1809.   WAITHEADER ( --- /FLD=1/CHKSUM=0/ )   
  1810.   BEGIN ( LOOP ON FIELD NUMBER, FLD)    
  1811.    OVER CASE                            
  1812.     1 OF GETHEADER        ( GET LENGTH) 
  1813.      T7+ UNCHAR 3 -                     
  1814.      4 PICK ! ENDOF                     
  1815.     2 OF GETHEADER        ( GET NUMBER) 
  1816.      T7+ UNCHAR                         
  1817.      5 PICK ! ENDOF                     
  1818.     3 OF GETHEADER          ( GET TYPE) 
  1819.      T7+ RTYPE ! ENDOF                  
  1820.     4 OF FILLPACKET ENDOF   ( GET DATA) 
  1821.     5 OF GETHEADER      ( GET CHECKSUM) 
  1822.      T7 UNCHAR RCK !                    
  1823.      DUP 192 AND 64 / + 63 AND ENDOF    
  1824.    ENDCASE SWAP 1+ SWAP OVER 5 >        
  1825.   UNTIL DUP RCK @ = IF DROP ELSE        
  1826.     4 DWN 255 =                         
  1827.     IF   ." ? TIMEOUT  "                
  1828.     ELSE ." ? CKSUM ERR"                
  1829.     THEN 0 RTYPE !                      
  1830.   THEN 2DROP 2DROP CLRIN RTYPE @ ; -->  
  1831.                        
  1832.  
  1833. ( ---
  1834. ( --- SCREEN # 66 ---
  1835. ( ---
  1836. ( SEND-PACKET [PART A] 071584)          
  1837.                                         
  1838. : MPUT ( B ---)( OUTPUT 1 CHAR TO MODEM)
  1839.   MOU$ C! 2 MOU$ 1 PRINT# ;             
  1840.  -->                                    
  1841.                                         
  1842.                                         
  1843.                                         
  1844.                                         
  1845.                                         
  1846.                                         
  1847.                                         
  1848.                                         
  1849.                                         
  1850.                                         
  1851.                                         
  1852.                                         
  1853.                                         
  1854.                                         
  1855.                                         
  1856.                                         
  1857.                                         
  1858.                                         
  1859.                                         
  1860.                                         
  1861.                        
  1862.  
  1863. ( ---
  1864. ( --- SCREEN # 67 ---
  1865. ( ---
  1866. ( SEND-PACKET [PART B] 071584)          
  1867.                                         
  1868. : SPACK ( ADDDATA TYPE NUM LEN --- )    
  1869.    SPAD @ -DUP IF                       
  1870.      0 DO PADCHAR @ MPUT LOOP           
  1871.    THEN <SOH>                MPUT       
  1872. ( LENGTH OUTPUT; START CHECKSUM       ) 
  1873.    DUP 3 + TOCHAR DUP        MPUT       
  1874. ( NUM OUTPUT; STACK HAS ON TOP:       ) 
  1875. ( .../TYPE/NUM/LEN/CHECKSUM/ ---      ) 
  1876.    ROT TOCHAR   DUP ROT + SWAP MPUT     
  1877. ( TYPE OUTPUT                         ) 
  1878.    ROT          DUP ROT + SWAP MPUT     
  1879. ( AT DATA OUTPUT STACK HAS ON TOP:    ) 
  1880. ( /ADDDATA/LEN/CHECKSUM/ ---          ) 
  1881.    SWAP DUP IF                          
  1882.      3 PICK + ROT DO                    
  1883.        I C@     DUP ROT + SWAP MPUT     
  1884.      LOOP                               
  1885.    ELSE DROP SWAP DROP                  
  1886.    THEN DUP 192 AND 64 / + 63 AND       
  1887.      TOCHAR ( CHECKSUM OUT ) MPUT       
  1888.    EOL @ MPUT ; -->                     
  1889.                                         
  1890.                                         
  1891.                        
  1892.  
  1893. ( ---
  1894. ( --- SCREEN # 68 ---
  1895. ( ---
  1896. ( BUFFER-FILL [PART A] 072984 )         
  1897. 0VAR BTEMP ( 7/8BIT BYTE STORAGE)       
  1898.                                         
  1899. : BOUT ( B --- BN...B1 N )              
  1900.   DUP  <SP>  < OVER <DEL> = OR          
  1901.   OVER MYQUOTE @ = OR IF ( SPEC'L CHR?) 
  1902.    CASE                                 
  1903.     MYQUOTE @ OF BTEMP @ BITS @ AND     
  1904.       MYQUOTE @ 2 ENDOF ( QUOTE ITSELF) 
  1905.     <CR> OF FILTYP @                    
  1906.       <B> = IF      ( NO CRLF IN 8-BIT) 
  1907.         BTEMP @ CTL MYQUOTE @ 2         
  1908.       ELSE      ( CR/LF IN 7-BIT MODES) 
  1909.         74 MYQUOTE @ 77 MYQUOTE @ 4     
  1910.       THEN ENDOF                        
  1911.     <LF> OF FILTYP @    ( REDUNDANT LF) 
  1912.       <B> = IF BTEMP @ CTL MYQUOTE @ 2  
  1913.       ELSE 0 THEN ENDOF                 
  1914.     ANY OF BTEMP @ BITS @ AND           
  1915.       CTL MYQUOTE @ 2 ENDOF             
  1916.    ENDCASE                              
  1917.   ELSE              ( NORMAL CHARACTER) 
  1918.    DROP                                 
  1919.    BTEMP @ BITS @ AND 1                 
  1920.   THEN ; -->                            
  1921.                        
  1922.  
  1923. ( ---
  1924. ( --- SCREEN # 69 ---
  1925. ( ---
  1926. ( BUFFER-FILL [PART B] 071884)          
  1927.                                         
  1928. : HEXOUT ( B --- B2 B1 2 )              
  1929.   HEX 0 <# # # #> DROP                  
  1930.   DUP 1+ C@ SWAP C@ DECIMAL 2 ;         
  1931.                                         
  1932. : UCOOUT ( B --- BN...B1 N)             
  1933.   UCOUT DUP BTEMP ! BOUT ;              
  1934.                                         
  1935. : TEXTOUT ( B --- BN...B1 N)            
  1936.   LCOUT DUP BTEMP ! BOUT ;              
  1937.                                         
  1938. : ASCOUT ( B --- BN...B1 N)             
  1939.   127 AND DUP BTEMP ! BOUT ;            
  1940.                                         
  1941. : BINOUT DUP BTEMP ! 127 AND BOUT ;     
  1942.                                         
  1943. -->                                     
  1944.                                         
  1945.                                         
  1946.                                         
  1947.                                         
  1948.                                         
  1949.                                         
  1950.                                         
  1951.                        
  1952.  
  1953. ( ---
  1954. ( --- SCREEN # 70 ---
  1955. ( ---
  1956. ( BUFFER-FILL [PART C] 071684)          
  1957.                                         
  1958. : BUFILL ( BUFFADDR --- SIZE )          
  1959.   BUFFADDR ! 0 II !                     
  1960.   BEGIN ( IF NOT EOF AND II < MAXLEN-4 )
  1961.    FEOLB @ 0= II @ SPSIZ @ 9 - < AND    
  1962.   WHILE                                 
  1963.    FGET                                 
  1964.    FILTYP @ CASE   ( 1 OR 2 BYTES OUT)  
  1965.      <T> OF TEXTOUT ENDOF      ( LC/UC) 
  1966.      <U> OF UCOOUT ENDOF     ( UC-ONLY) 
  1967.      <H> OF HEXOUT ENDOF   ( HEX CODED) 
  1968.      <B> OF BINOUT ENDOF ( 8BIT BINARY) 
  1969.      ANY OF ASCOUT ENDOF ( ASCII, ETC.) 
  1970.    ENDCASE ( --- BN...B1 N ---)         
  1971.    -DUP IF 0 DO                         
  1972.      BUFFADDR @ II @ + C! 1 II +!       
  1973.    LOOP THEN                            
  1974.   REPEAT                                
  1975.   II @ ; ( RETURNS SIZE=0 FOR EOF )     
  1976.  -->                                    
  1977.                                         
  1978.                                         
  1979.                                         
  1980.                                         
  1981.                        
  1982.  
  1983. ( ---
  1984. ( --- SCREEN # 71 ---
  1985. ( ---
  1986. ( BUFFER-EMPTY [PART A] 111384)         
  1987.                                         
  1988.  CREATE HBUF 1 , 0 ,  ( CONVERSION BUF) 
  1989.                                         
  1990. : HEXIN ( LEN ADDR PTR CHR1 --- BYTE)   
  1991.   UCIN HBUF DUP C@ + C!   ( STORE BYTE) 
  1992.   HBUF DUP C@ 1 > IF    ( 2 BYTES YET?) 
  1993.     HEX NUMBER DROP DECIMAL FPUT        
  1994.     1 HBUF C!                           
  1995.   ELSE                                  
  1996.     DUP C@ 1+ SWAP C!                   
  1997.   THEN ;                                
  1998.                                         
  1999. : TRPUT ( B ---) ( TRANSLATE, FILE CHR) 
  2000.   BITS @ AND                            
  2001.   FILTYP @ CASE                         
  2002.     <T> OF LCIN ?DUP IF FPUT THEN ENDOF 
  2003.     <U> OF UCIN ?DUP IF FPUT THEN ENDOF 
  2004.     <H> OF HEXIN ENDOF   ( IN 2, OUT 1) 
  2005.     ANY OF FPUT ENDOF   ( ASCII/BINARY) 
  2006.   ENDCASE ;                             
  2007.                                         
  2008. : BUMP ( ADDR/PTR --- ADDR/PTR/B7)      
  2009.   OVER OVER + C@                        
  2010.   DUP BTEMP ! 127 AND ; -->             
  2011.                        
  2012.  
  2013. ( ---
  2014. ( --- SCREEN # 72 ---
  2015. ( ---
  2016. ( BUFFER-EMPTY [PART B] 111384)         
  2017.                                         
  2018. : BUFEMP ( LEN/BUFFADDR ---)            
  2019.   0 ( LEN/BUFFADDR/PTR=0 ---)           
  2020.   BEGIN                                 
  2021.   DUP 4 PICK <         ( PTR < LENGTH?) 
  2022.   WHILE                                 
  2023.    BUMP              ( GET A CHARACTER) 
  2024.    QUOTE @ = IF               ( QUOTE?) 
  2025.      1+ BUMP      ( GET NEXT CHARACTER) 
  2026.      QUOTE @ = IF             ( QUOTE?) 
  2027.        BTEMP @ TRPUT  ( JUST PUT QUOTE) 
  2028.      ELSE                               
  2029.        BTEMP @ CTL TRPUT      ( FIX IT) 
  2030.      THEN                               
  2031.    ELSE                                 
  2032.      BTEMP @ TRPUT                      
  2033.    THEN                                 
  2034.    1+                  ( INCREMENT PTR) 
  2035.   REPEAT DROP 2DROP ; -->               
  2036.                                         
  2037.                                         
  2038.                                         
  2039.                                         
  2040.                                         
  2041.                        
  2042.  
  2043. ( ---
  2044. ( --- SCREEN # 73 ---
  2045. ( ---
  2046. ( GET NAME OF FILE TO SEND 071784)      
  2047.                                         
  2048. : GNAME ( STR$ ---) ( GET STR FROM KBD) 
  2049.   <"> WORD HERE SWAP TO$ ;              
  2050.                                         
  2051. : SNAME ( --- ) ( GET NAME$ FROM KBD)   
  2052.    RNAME$ GNAME                         
  2053.    BEGIN ( DON'T QUIT WITHOUT NAME$)    
  2054.     RNAME$ C@ 0= WHILE                  
  2055.      CR ." FILENAME: "                  
  2056.      QUERY RNAME$ GNAME                 
  2057.    REPEAT ;                             
  2058.                                         
  2059. : OUTNAME  ( TRANSLATE NAME$ TO ASCII ) 
  2060.   RNAME$ C@ FNAME$ C!     ( BYTE COUNT) 
  2061.   RNAME$ C@ 1+ 1 DO   ( TRANSFER BYTES) 
  2062.     RNAME$ I + C@                       
  2063.     UCOUT       ( ALWAYS IN UPPER CASE) 
  2064.     FNAME$ I + C!                       
  2065.   LOOP ;                                
  2066.  -->                                    
  2067.                                         
  2068.                                         
  2069.                                         
  2070.                                         
  2071.                        
  2072.  
  2073. ( ---
  2074. ( --- SCREEN # 74 ---
  2075. ( ---
  2076. ( GET FILE-NAME TO RECEIVE 110384)      
  2077.                                         
  2078. : GETFIL                ( NAMESIZE ---) 
  2079.   WNAME$ C@ 0= IF         ( IF NO NAME) 
  2080.    DUP WNAME$ C! 0 DO ( GET FROM F-PKT) 
  2081.    I PACKET + C@ UCIN I 1+ WNAME$ + C!  
  2082.    LOOP                                 
  2083.   ELSE DROP THEN                        
  2084.   BEGIN BEGIN NAMETEST WHILE            
  2085.       3 DWN ." ILLEGAL FILENAME" CR     
  2086.       ." NEW NAME: " QUERY              
  2087.       WNAME$ GNAME                      
  2088.     REPEAT 1               ( OK SO FAR) 
  2089.     IFLWRN @ IF     ( FILE-WARNING ON?) 
  2090.      BEGIN FWTEST 0= WHILE              
  2091.        3 DWN WNAME$ TYPE$ ."  EXISTS" CR
  2092.        ." NEW NAME: " QUERY WNAME$ GNAME
  2093.        DROP 0            ( MUST RETEST) 
  2094.      REPEAT                             
  2095.     THEN                                
  2096.   UNTIL                                 
  2097.   IFLWRN @ 0= IF                        
  2098.     'S0:' WNAME$ BUF1 CONCAT$ OPENCHN   
  2099.     15 BUF1 COUNT PRINT# CLOSCHN        
  2100.   THEN FWOPEN ;  -->                    
  2101.                        
  2102.  
  2103. ( ---
  2104. ( --- SCREEN # 75 ---
  2105. ( ---
  2106. ( SEND INIT-PACKET 070384)              
  2107.                                         
  2108. : SINIT-ACK RECPKT RPARA EOLSET QUOTSET 
  2109.   0NUMTRY N+ FROPEN 0= IF <F>           
  2110.   ELSE <A> THEN ;                       
  2111.                                         
  2112. : SINIT                                 
  2113.   CLRIN     ( CLEAR OUT OLD NAKS, JUNK) 
  2114.   2 DWN RNAME$ TYPE$                    
  2115.   NUMTRY+>? IF <A> EXIT THEN   ( ABORT) 
  2116.   PACKET SPARA       ( SEND 'S' PACKET) 
  2117.   PACKET <S> N@ 6 SPACK                 
  2118.   RECPKT TNUM TLEN RPACK                
  2119.   CASE                                  
  2120.    <N> OF   ( NAK FOR N+1 => ACK FOR N) 
  2121.      TNUM @ N@ 1+ - IF KSTATE@ ELSE     
  2122.        SINIT-ACK THEN ENDOF             
  2123.    <Y> OF ( ACKNOWLEDGES GOOD PACKET N) 
  2124.      TNUM @ N@ - IF KSTATE@ ELSE        
  2125.        SINIT-ACK THEN ENDOF             
  2126.    <E> OF PRNTE <A> ENDOF ( ERR-PACKET) 
  2127.    FALSE OF KSTATE@ ENDOF ( CKSM ERROR) 
  2128.    ANY OF <A> ENDOF     ( UNRECOGNIZED) 
  2129.   ENDCASE ;                             
  2130.  -->                                    
  2131.                        
  2132.  
  2133. ( ---
  2134. ( --- SCREEN # 76 ---
  2135. ( ---
  2136. ( SEND FILE-PACKET 070384)              
  2137.                                         
  2138. : SFILE-ACK 0NUMTRY N+ PACKET BUFILL    
  2139.   SIZE ! <D> ;    ( READY TO SEND DATA) 
  2140.                                         
  2141. : SFILE                                 
  2142.   NUMTRY+>? IF <A> EXIT THEN   ( ABORT) 
  2143.   FNAME$ COUNT <F> N@ ROT SPACK         
  2144.   RECPKT TNUM TLEN RPACK                
  2145.   CASE          ( BASED ON PACKET TYPE) 
  2146.    <N> OF   ( NAK FOR N+1 => ACK FOR N) 
  2147.     TNUM @ N@ 1+ - IF KSTATE@ ELSE      
  2148.        SFILE-ACK THEN ENDOF             
  2149.    <Y> OF  ( ACKNOWLEDGE GOOD PACKET N) 
  2150.     TNUM @ N@ - IF KSTATE@ ELSE         
  2151.        SFILE-ACK THEN ENDOF             
  2152.    <E> OF PRNTE <A> ENDOF ( ERR-PACKET) 
  2153.    FALSE OF KSTATE@ ENDOF ( CKSM ERROR) 
  2154.    ANY OF <A> ENDOF ( UNRECOGNIZED)     
  2155.    ENDCASE ;                            
  2156.                                         
  2157.  -->                                    
  2158.                                         
  2159.                                         
  2160.                                         
  2161.                        
  2162.  
  2163. ( ---
  2164. ( --- SCREEN # 77 ---
  2165. ( ---
  2166. ( SEND DATA-PACKET 070384)              
  2167.                                         
  2168. : SDATA-ACK 0NUMTRY N+    ( RESET ETC.) 
  2169.   PACKET BUFILL DUP SIZE !   ( REFILL ) 
  2170.   IF <D> ELSE <Z> THEN ;       ( EOF? ) 
  2171.                                         
  2172. : SDATA                                 
  2173.   NUMTRY+>? IF <A> EXIT THEN   ( ABORT) 
  2174.   PACKET <D> N@ SIZE @ SPACK            
  2175.   RECPKT TNUM TLEN RPACK                
  2176.   CASE          ( BASED ON PACKET TYPE) 
  2177.    <N> OF   ( NAK FOR N+1 => ACK FOR N) 
  2178.     TNUM @ N@ 1+ - IF KSTATE@ ELSE      
  2179.        SDATA-ACK THEN ENDOF             
  2180.    <Y> OF  ( ACKNOWLEDGE GOOD PACKET N) 
  2181.     TNUM @ N@ - IF KSTATE@ ELSE         
  2182.        SDATA-ACK THEN ENDOF             
  2183.    <E> OF PRNTE <A> ENDOF ( ERR-PACKET) 
  2184.    FALSE OF KSTATE@ ENDOF ( CKSM ERROR) 
  2185.    ANY OF <A> ENDOF     ( UNRECOGNIZED) 
  2186.    ENDCASE ;                            
  2187.  -->                                    
  2188.                                         
  2189.                                         
  2190.                                         
  2191.                        
  2192.  
  2193. ( ---
  2194. ( --- SCREEN # 78 ---
  2195. ( ---
  2196. ( SEND EOF-PACKET 070384)               
  2197.                                         
  2198. : SEOF-ACK 0NUMTRY N+     ( RESET ETC.) 
  2199.   ( GNXTFL) 0   ( NO GET-NEXT-FILE YET) 
  2200.   IF <F> ELSE <B> THEN ;  ( EOT?      ) 
  2201.                                         
  2202. : SEOF                                  
  2203.   NUMTRY+>? IF <A> EXIT THEN   ( ABORT) 
  2204.   PACKET <Z> N@ 0 SPACK                 
  2205.   RECPKT TNUM TLEN RPACK                
  2206.   CASE          ( BASED ON PACKET TYPE) 
  2207.    <N> OF   ( NAK FOR N+1 => ACK FOR N) 
  2208.     TNUM @ N@ 1+ - IF KSTATE@ ELSE      
  2209.        SEOF-ACK THEN ENDOF              
  2210.    <Y> OF  ( ACKNOWLEDGE GOOD PACKET N) 
  2211.     TNUM @ N@ - IF KSTATE@ ELSE         
  2212.        SEOF-ACK THEN ENDOF              
  2213.    <E> OF PRNTE <A> ENDOF ( ERR-PACKET) 
  2214.    FALSE OF KSTATE@ ENDOF ( CKSM ERROR) 
  2215.    ANY OF <A> ENDOF     ( UNRECOGNIZED) 
  2216.    ENDCASE ;                            
  2217.  -->                                    
  2218.                                         
  2219.                                         
  2220.                                         
  2221.                        
  2222.  
  2223. ( ---
  2224. ( --- SCREEN # 79 ---
  2225. ( ---
  2226. ( SEND BREAK-PACKET <EOT> 070384)       
  2227.                                         
  2228. : SBREAK-ACK 0NUMTRY N+   ( RESET ETC.) 
  2229.   <C> ;         ( SWITCH STATE TO 'C' ) 
  2230.                                         
  2231. : SBREAK                                
  2232.   NUMTRY+>? IF <A> EXIT THEN   ( ABORT) 
  2233.   PACKET <B> N@ 0 SPACK                 
  2234.   RECPKT TNUM TLEN RPACK                
  2235.   CASE          ( BASED ON PACKET TYPE) 
  2236.    <N> OF   ( NAK FOR N+1 => ACK FOR N) 
  2237.     TNUM @ N@ 1+ - IF KSTATE@ ELSE      
  2238.        SBREAK-ACK THEN ENDOF            
  2239.    <Y> OF  ( ACKNOWLEDGE GOOD PACKET N) 
  2240.     TNUM @ N@ - IF KSTATE@ ELSE         
  2241.        SBREAK-ACK THEN ENDOF            
  2242.    <E> OF PRNTE <A> ENDOF ( ERR-PACKET) 
  2243.    FALSE OF KSTATE@ ENDOF ( CKSM ERROR) 
  2244.    ANY OF <A> ENDOF ( UNRECOGNIZED)     
  2245.    ENDCASE ;                            
  2246.  -->                                    
  2247.                                         
  2248.                                         
  2249.                                         
  2250.                                         
  2251.                        
  2252.  
  2253. ( ---
  2254. ( --- SCREEN # 80 ---
  2255. ( ---
  2256. ( SEND: MAJOR ROUTINES 071584)          
  2257. : SENDSW     ( STATE SWITCHER FOR SEND) 
  2258.   CLR 1 DWN ." SENDING " <S> KSTATE !   
  2259.   WAIT                         ( DELAY) 
  2260.   INITIALIZE TINTSET                    
  2261.   BEGIN DISPL            ( SHOW STATUS) 
  2262.    KSTATE@ CASE                         
  2263.      <D> OF SDATA  KSTATE! ENDOF        
  2264.      <F> OF SFILE  KSTATE! ENDOF        
  2265.      <Z> OF SEOF   KSTATE! ENDOF        
  2266.      <S> OF SINIT  KSTATE! ENDOF        
  2267.      <B> OF SBREAK KSTATE! ENDOF        
  2268.      <C> OF TRUE  EXIT     ENDOF        
  2269.      <A> OF FALSE EXIT     ENDOF        
  2270.      ANY OF FALSE EXIT     ENDOF        
  2271.    ENDCASE                              
  2272.   AGAIN ;                               
  2273.                                         
  2274. : SEND                  ( SEND A FILE ) 
  2275.   SNAME OUTNAME        ( GET FILE NAME) 
  2276.   MODOPEN SENDSW           ( SEND FILE) 
  2277.   IF   MESSG1                ( SUCCESS) 
  2278.   ELSE MESSG2                ( FAILURE) 
  2279.   THEN FRCLOSE MODCLOSE ABORTIO         
  2280.   CR PAUSE CLR ; -->                    
  2281.                        
  2282.  
  2283. ( ---
  2284. ( --- SCREEN # 81 ---
  2285. ( ---
  2286. ( RECEIVE INIT-PACKET 070784)           
  2287.                                         
  2288. : RINIT-ACK                             
  2289.  RNUM @ N !             ( SYNC PACKETS) 
  2290.  PACKET RPARA          ( GET INIT DATA) 
  2291.  PACKET SPARA         ( SEND INIT DATA) 
  2292.  PACKET <Y> N@ 6 SPACK                  
  2293.  NUMTRY @ OLDTRY !    ( SAVE TRY COUNT) 
  2294.  0NUMTRY               ( START NEW ONE) 
  2295.  N+             ( INCREMENT PACKET NO.) 
  2296.  <F> ;                    ( RETURN 'F') 
  2297.                                         
  2298. : RINIT                                 
  2299.  NUMTRY+>? IF <A> EXIT THEN    ( ABORT) 
  2300.  PACKET RNUM RLEN RPACK   ( GET PACKET) 
  2301.  CASE                          ( TYPE?) 
  2302.   <S> OF RINIT-ACK ENDOF ( INIT-PACKET) 
  2303.   <E> OF PRNTE <A> ENDOF  ( ERR-PACKET) 
  2304.   FALSE OF KSTATE@ ENDOF  ( CHKSUM ERR) 
  2305.   ANY OF <A> ENDOF      ( UNRECOGNIZED) 
  2306.  ENDCASE ;                              
  2307.                                         
  2308.  -->                                    
  2309.                                         
  2310.                                         
  2311.                        
  2312.  
  2313. ( ---
  2314. ( --- SCREEN # 82 ---
  2315. ( ---
  2316. ( RECEIVE FILE-PACKET [PART A] 063084)  
  2317.                                         
  2318. : RFILE-S ( IT WAS ANOTHER INIT-PACKET) 
  2319.   OLDTRY+>? IF <A> EXIT THEN            
  2320.   RNUM @ N@ 1- = IF     ( PREV PKT # ?) 
  2321.    PACKET SPARA  ( GET INIT PARAMETERS) 
  2322.    PACKET <Y> RNUM @ 6 SPACK     ( ACK) 
  2323.    0NUMTRY           ( RESTART COUNTER) 
  2324.    KSTATE@                ( KEEP STATE) 
  2325.   ELSE <A> THEN ;              ( ABORT) 
  2326.                                         
  2327. : RFILE-Z  ( IT WAS AN END-OF-FILE PKT) 
  2328.   OLDTRY+>? IF <A> EXIT THEN            
  2329.   RNUM @ N@ 1- = IF        ( PREV PKT?) 
  2330.    0 <Y> RNUM @ 0 SPACK          ( ACK) 
  2331.    0NUMTRY                              
  2332.    KSTATE@                              
  2333.   ELSE <A> THEN ;              ( ABORT) 
  2334.                                         
  2335.  -->                                    
  2336.                                         
  2337.                                         
  2338.                                         
  2339.                                         
  2340.                                         
  2341.                        
  2342.  
  2343. ( ---
  2344. ( --- SCREEN # 83 ---
  2345. ( ---
  2346. ( RECEIVE FILE-PACKET [PART B] 071584)  
  2347.                                         
  2348. : RFILE-F  ( IT WAS A FILE-NAME PACKET) 
  2349.   RNUM @ N@ = IF  ( CORRECT PACKET # ?) 
  2350.    RLEN @ GETFIL     ( -YES: OPEN FILE) 
  2351.    2 DWN WNAME$ TYPE$                   
  2352.    0 <Y> N@ 0 SPACK              ( ACK) 
  2353.    NUMTRY @ OLDTRY !  ( SAVE TRY COUNT) 
  2354.    0NUMTRY             ( RESTART COUNT) 
  2355.    N+                ( INCREMENT PKT #) 
  2356.    <D>                ( GET-DATA STATE) 
  2357.   ELSE <A> THEN ;              ( ABORT) 
  2358.                                         
  2359. : RFILE-B      ( IT WAS A BREAK-PACKET) 
  2360.   RNUM @ N@ = IF   ( CORRECT PACKET #?) 
  2361.    0 <Y> N@ 0 SPACK        ( -YES: ACK) 
  2362.    <C>         ( RETURN 'C' = COMPLETE) 
  2363.   ELSE                                  
  2364.    <A>              ( OTHERWISE, ABORT) 
  2365.   THEN ;                                
  2366.                                         
  2367.  -->                                    
  2368.                                         
  2369.                                         
  2370.                                         
  2371.                        
  2372.  
  2373. ( ---
  2374. ( --- SCREEN # 84 ---
  2375. ( ---
  2376. ( RECEIVE FILE-PACKET [PART C] 070384)  
  2377.                                         
  2378. : RFILE                                 
  2379.   NUMTRY+>? IF                          
  2380.    <A> EXIT                 ( ABORT IF) 
  2381.   THEN                                  
  2382.   PACKET RNUM RLEN RPACK  ( GET PACKET) 
  2383.   CASE                  ( PACKET TYPE?) 
  2384.    <S> OF RFILE-S ENDOF  ( INIT-PACKET) 
  2385.    <Z> OF RFILE-Z ENDOF   ( EOF-PACKET) 
  2386.    <F> OF RFILE-F ENDOF  ( FILE-PACKET) 
  2387.    <B> OF RFILE-B ENDOF ( BREAK-PACKET) 
  2388.    <E> OF PRNTE <A> ENDOF ( ERR-PACKET) 
  2389.    FALSE OF KSTATE@ ENDOF ( CHKSUM ERR) 
  2390.    ANY OF <A> ENDOF      ( UNRECOGNIZED)
  2391.   ENDCASE ;                             
  2392.                                         
  2393.  -->                                    
  2394.                                         
  2395.                                         
  2396.                                         
  2397.                                         
  2398.                                         
  2399.                                         
  2400.                                         
  2401.                        
  2402.  
  2403. ( ---
  2404. ( --- SCREEN # 85 ---
  2405. ( ---
  2406. ( RECEIVE DATA-PACKET [PART A] 063084)  
  2407.                                         
  2408. : RDATA-D       ( IT WAS A DATA PACKET) 
  2409.   RNUM @ N@ = IF       ( RIGHT PKT # ?) 
  2410.    RLEN @ PACKET BUFEMP ( BUFFER->FILE) 
  2411.    0 <Y> N@ 0 SPACK              ( ACK) 
  2412.    NUMTRY @ OLDTRY !  ( SAVE TRY COUNT) 
  2413.    0NUMTRY                     ( RESET) 
  2414.    N+                     ( INCR PKT #) 
  2415.    <D>                    ( MORE DATA?) 
  2416.   ELSE                                  
  2417.    OLDTRY+>? IF <A> EXIT THEN           
  2418.    RNUM @ N@ 1- = IF    ( PREV PKT # ?) 
  2419.     PACKET SPARA                        
  2420.     PACKET <Y> RNUM @ 6 SPACK    ( ACK) 
  2421.     0NUMTRY                             
  2422.     KSTATE@                             
  2423.    ELSE <A> THEN ( SORRY, WRONG NUMBER) 
  2424.   THEN ;                                
  2425.                                         
  2426.  -->                                    
  2427.                                         
  2428.                                         
  2429.                                         
  2430.                                         
  2431.                        
  2432.  
  2433. ( ---
  2434. ( --- SCREEN # 86 ---
  2435. ( ---
  2436. ( RECEIVE DATA-PACKET [PART B] 072484)  
  2437.                                         
  2438. : RDATA-F       ( IT WAS A FILE PACKET) 
  2439.   OLDTRY+>? IF <A> EXIT THEN            
  2440.   RNUM @ N@ 1- = IF     ( PREV PKT # ?) 
  2441.    0 <Y> N@ 0 SPACK              ( ACK) 
  2442.    0NUMTRY                     ( RESET) 
  2443.    KSTATE@                ( KEEP STATE) 
  2444.   ELSE <A> THEN ;                       
  2445.                                         
  2446. : RDATA-Z     ( IT WAS AN <EOF> PACKET) 
  2447.   RNUM @ N@ = IF       ( RIGHT PKT # ?) 
  2448.    0 <Y> N@ 0 SPACK              ( ACK) 
  2449.    FWCLOSE           ( CLOSE DISK FILE) 
  2450.    NUMTRY @ OLDTRY !  ( SAVE TRY COUNT) 
  2451.    0NUMTRY                     ( RESET) 
  2452.    N+                     ( INCR PKT #) 
  2453.    0 WNAME$ !   ( FORGET OLD FILE NAME) 
  2454.    <F>                 ( ANOTHER FILE?) 
  2455.   ELSE <A> THEN ;                       
  2456.                                         
  2457.  -->                                    
  2458.                                         
  2459.                                         
  2460.                                         
  2461.                        
  2462.  
  2463. ( ---
  2464. ( --- SCREEN # 87 ---
  2465. ( ---
  2466. ( RECEIVE DATA-PACKET [PART C] 070384)  
  2467.                                         
  2468. : RDATA                                 
  2469.   NUMTRY+>? IF <A> EXIT THEN            
  2470.   PACKET RNUM RLEN RPACK  ( GET PACKET) 
  2471.   CASE                                  
  2472.    <D> OF RDATA-D ENDOF  ( DATA-PACKET) 
  2473.    <F> OF RDATA-F ENDOF  ( FILE-PACKET) 
  2474.    <Z> OF RDATA-Z ENDOF   ( EOF-PACKET) 
  2475.    <E> OF PRNTE <A> ENDOF ( ERR-PACKET) 
  2476.    FALSE OF KSTATE@ ENDOF ( CHKSUM ERR) 
  2477.    ANY OF <A> ENDOF     ( UNRECOGNIZED) 
  2478.   ENDCASE ;                             
  2479.                                         
  2480.  -->                                    
  2481.                                         
  2482.                                         
  2483.                                         
  2484.                                         
  2485.                                         
  2486.                                         
  2487.                                         
  2488.                                         
  2489.                                         
  2490.                                         
  2491.                        
  2492.  
  2493. ( ---
  2494. ( --- SCREEN # 88 ---
  2495. ( ---
  2496. ( RECEIVE: MAJOR ROUTINES 071584)       
  2497.                                         
  2498. : RECSW   ( STATE SWITCHER FOR RECEIVE) 
  2499.   CLR 1 DWN ." RECEIVING " <R> KSTATE!  
  2500.   INITIALIZE TINTSET                    
  2501.   BEGIN DISPL            ( SHOW STATUS) 
  2502.    KSTATE@ CASE                         
  2503.     <D> OF RDATA KSTATE! ENDOF  ( DATA) 
  2504.     <F> OF RFILE KSTATE! ENDOF ( FNAME) 
  2505.     <R> OF RINIT KSTATE! ENDOF  ( INIT) 
  2506.     <C> OF TRUE  EXIT    ENDOF  ( DONE) 
  2507.     <A> OF FALSE EXIT    ENDOF ( ABORT) 
  2508.     ANY OF FALSE EXIT    ENDOF ( ?????) 
  2509.    ENDCASE                              
  2510.   AGAIN ;                               
  2511.                                         
  2512. : RECV                ( RECEIVE A FILE) 
  2513.   WNAME$ GNAME         ( GET FILE NAME) 
  2514.   MODOPEN RECSW          ( ACCEPT FILE) 
  2515.   IF   MESSG1                ( SUCCESS) 
  2516.   ELSE MESSG2                ( FAILURE) 
  2517.   THEN WCLOSE MODCLOSE ABORTIO          
  2518.   CR PAUSE CLR ; -->                    
  2519.                                         
  2520.                                         
  2521.                        
  2522.  
  2523. ( ---
  2524. ( --- SCREEN # 89 ---
  2525. ( ---
  2526. ( SERVER COMMAND: GET 071584)           
  2527. : RSERV                                 
  2528.   FNAME$ COUNT <R> 0 ROT SPACK RINIT ;  
  2529.                                         
  2530. : GETSW                                 
  2531.   CLR 1 DWN ." RECEIVING" <R> KSTATE!   
  2532.   INITIALIZE TINTSET                    
  2533.   BEGIN DISPL            ( SHOW STATUS) 
  2534.    KSTATE@ CASE                         
  2535.     <R> OF RSERV KSTATE! ENDOF          
  2536.     <F> OF RFILE KSTATE! ENDOF          
  2537.     <D> OF RDATA KSTATE! ENDOF          
  2538.     <C> OF TRUE EXIT     ENDOF          
  2539.     <A> OF FALSE EXIT    ENDOF          
  2540.     ANY OF FALSE EXIT    ENDOF          
  2541.    ENDCASE                              
  2542.   AGAIN ;                               
  2543.                                         
  2544. : GETF    ( GET FILENAME FROM KEYBOARD) 
  2545.   SNAME OUTNAME RNAME$ WNAME$ TO$       
  2546.   MODOPEN GETSW ( GET FILE FROM SERVER) 
  2547.   IF   MESSG1                ( SUCCESS) 
  2548.   ELSE MESSG2                ( FAILURE) 
  2549.   THEN WCLOSE MODCLOSE ABORTIO          
  2550.   CR PAUSE CLR ; -->                    
  2551.                        
  2552.  
  2553. ( ---
  2554. ( --- SCREEN # 90 ---
  2555. ( ---
  2556. ( SERVER COMMANDS 071584)               
  2557. <L> VAR L                               
  2558. : LOGOUT                                
  2559.   MODOPEN CLR TINTSET                   
  2560.   L <G> 0 1 SPACK  ( SEND A 'GL' PKT)   
  2561.   RECPKT TNUM TLEN RPACK                
  2562.   CASE                                  
  2563.    <E> OF PRNTE FALSE ENDOF             
  2564.    <Y> OF TRUE ENDOF                    
  2565.    ANY OF FALSE ENDOF                   
  2566.   ENDCASE                               
  2567.   CASE                                  
  2568.    TRUE OF 5 DWN ." LOGGED OUT" ENDOF   
  2569.    FALSE OF MESSG2 ENDOF                
  2570.   ENDCASE                               
  2571.   MODCLOSE CLOSCHN ABORTIO              
  2572.   CR PAUSE CLR ;                        
  2573.  -->                                    
  2574.                                         
  2575.                                         
  2576.                                         
  2577.                                         
  2578.                                         
  2579.                                         
  2580.                                         
  2581.                        
  2582.  
  2583. ( ---
  2584. ( --- SCREEN # 91 ---
  2585. ( ---
  2586. ( KERMIT LOCAL COMMANDS 071584)         
  2587.                                         
  2588. : KQUIT CLOSCHN ABORTIO ABORT ;         
  2589.                                         
  2590. : XDC [COMPILE] DC ;                    
  2591.                                         
  2592. : HELP CLR                              
  2593.   99 96 DO CLR                          
  2594.      24 0 DO I J .LINE CR LOOP          
  2595.      PAUSE CLR                          
  2596.   LOOP ;                                
  2597.                                         
  2598. : NEW ( MOVES KERMIT FILES TO NEW DISK) 
  2599.   ." INSERT, THEN PUSH ANY KEY:"        
  2600.   CR ."  SOURCE DISK"                   
  2601.   KEYIN DROP                            
  2602.   99 95 DO I BLOCK UPDATE LOOP          
  2603.   CR ."  DESTINATION DISK"              
  2604.   KEYIN DROP FLUSH                      
  2605.   [COMPILE] SAVESYSTEM ;                
  2606.                                         
  2607.  -->                                    
  2608.                                         
  2609.                                         
  2610.                                         
  2611.                        
  2612.  
  2613. ( ---
  2614. ( --- SCREEN # 92 ---
  2615. ( ---
  2616. ( KERMIT COMMAND TABLE 071784)          
  2617.                                         
  2618. 14 CMDTBL CKERMIT                       
  2619.    CONNECT   CONNECT    SEND    SEND    
  2620.    RECEIVE   RECV       GET     GETF    
  2621.    BYE       LOGOUT     HELP    HELP    
  2622.    EXIT      BASIC      QUIT    KQUIT   
  2623.    SET       SET        SHOW    SHOW    
  2624.    SAVE      STORE      RESTORE RECALL  
  2625.    DIRECTORY DIR        DISK    XDC     
  2626.    NEW       NEW                        
  2627.  -->                                    
  2628.                                         
  2629.                                         
  2630.                                         
  2631.                                         
  2632.                                         
  2633.                                         
  2634.                                         
  2635.                                         
  2636.                                         
  2637.                                         
  2638.                                         
  2639.                                         
  2640.                                         
  2641.                        
  2642.  
  2643. ( ---
  2644. ( --- SCREEN # 93 ---
  2645. ( ---
  2646. ( KERMIT INTERACTS WITH USER 111384)    
  2647.                                         
  2648. : KERMIT                ( ENDLESS LOOP) 
  2649.   0 BLK ! -1 WARNING !   ( FOR TURNKEY) 
  2650.   CLR 1 DWN                             
  2651.   ." KERMIT-C64/V1.5"                   
  2652.   CR ." R. DETENBECK"                   
  2653.   CR ." DEPT. OF PHYSICS"               
  2654.   CR ." UNIVERSITY OF VERMONT"          
  2655.   10 DWN                                
  2656.   BEGIN                                 
  2657.     CR ." KERMIT-C64> " QUERY CR        
  2658.     CKERMIT XSETUP                      
  2659.     DO                                  
  2660.       I () HERE =$ IF                   
  2661.         CKERMIT I () CMDEXE UNKERR      
  2662.       THEN                              
  2663.     LOOP DROP TSTKERR                   
  2664.   AGAIN ;                               
  2665.                                         
  2666.                                         
  2667.                                         
  2668.                                         
  2669.                                         
  2670.                                         
  2671.                        
  2672.  
  2673. ( ---
  2674. ( --- SCREEN # 94 ---
  2675. ( ---
  2676. ( MOVE SCREENS 21-92 120284)            
  2677.                                         
  2678. EMPTY-BUFFERS                           
  2679. 30 BUFFERS                              
  2680. : MOVEIT ( N1 N2 --- )                  
  2681.   SWAP 1- SWAP                          
  2682.   BEGIN                                 
  2683.   CR ." INSERT SOURCE DISK, TYPE 'A' "  
  2684.   KEYIN DUP EMIT 65 = UNTIL             
  2685.   DO                                    
  2686.     CR ." COPY " I . ."  TO " I 1+ .    
  2687.     I DUP 1+ COPY                       
  2688.   -1 +LOOP                              
  2689.   BEGIN                                 
  2690.   CR ." INSERT DEST DISK, TYPE 'B' "    
  2691.   KEYIN DUP EMIT 66 = UNTIL             
  2692.   FLUSH ;                               
  2693.                                         
  2694. 80 92 MOVEIT                            
  2695. 67 79 MOVEIT                            
  2696. 54 66 MOVEIT                            
  2697. 41 53 MOVEIT                            
  2698. 28 40 MOVEIT                            
  2699. 21 27 MOVEIT                            
  2700.                                         
  2701.                        
  2702.  
  2703. ( ---
  2704. ( --- SCREEN # 95 ---
  2705. ( ---
  2706. 01 00 00 00 00 00 00 06 01 14           
  2707. 96 00 00 10 13 35                       
  2708. 96 00 00 10 13 35                       
  2709.                                         
  2710.                                         
  2711.                                         
  2712.                                         
  2713.                                         
  2714.                                         
  2715.                                         
  2716.                                         
  2717.                                         
  2718.                                         
  2719.                                         
  2720.                                         
  2721.                                         
  2722.                                         
  2723.                                         
  2724.                                         
  2725.                                         
  2726.                                         
  2727.                                         
  2728.                                         
  2729.                                         
  2730.                                         
  2731.                        
  2732.  
  2733. ( ---
  2734. ( --- SCREEN # 96 ---
  2735. ( ---
  2736.            KERMIT-C64, V1.5             
  2737.                                         
  2738. EQUIPMENT: COMMODORE C64, 1541, 1600    
  2739. SOURCE LANGUAGE: FORTH                  
  2740. FILE TYPES HANDLED:                     
  2741.                                         
  2742.  TYPE...INTERNAL FORM..TRANSMITTED FORM 
  2743.                                         
  2744.  TEXT   7-BIT CBMASCII    7-BIT ASCII   
  2745.         (SEQUENTIAL)      TRANSLATION*  
  2746.  UC     [ SAME, BUT UPPERCASE ONLY ]*   
  2747.  ASCII  7-BIT ASCII       7-BIT ASCII   
  2748.         (SEQUENTIAL)     LITERAL COPY** 
  2749.  HEX    8-BIT BINARY   ENCODED AS ASCII 
  2750.         (PROGRAM)         HEX NIBBLES   
  2751.  BINARY 8-BIT BINARY      8-BIT BINARY  
  2752.         (PROGRAM)        LITERAL COPY** 
  2753.                                         
  2754. * CBM <-> ASCII CONVERSIONS:            
  2755.   BKSLSH/TAB/FF -> CHR$(221/220/219)    
  2756.   ON INPUT; REVERSED ON OUTPUT.         
  2757. **KERMIT PROTOCOL: QUOTE CTRL CHAR, BUT 
  2758.   NO 8TH-BIT QUOTE OR REPEAT QUOTE. SEQ 
  2759.   FILES: CR INTERNAL, CRLF TRANSMITTED. 
  2760.                                         
  2761.                        
  2762.  
  2763. ( ---
  2764. ( --- SCREEN # 97 ---
  2765. ( ---
  2766.       PRIMARY KERMIT COMMANDS (V1.5)    
  2767.                                         
  2768. BYE         = LOGOUT FROM A SERVER.     
  2769. CONNECT     = BECOME A DUMB TERMINAL.   
  2770. DIRECTORY   = SHOW 1541 DISK DIRECTORY. 
  2771. DISK "XX"   = SEND COMMAND XX TO 1541   
  2772.               DISK ON CHANNEL 15.       
  2773. EXIT        = RETURN TO BASIC.          
  2774. GET "XX"    = RECEIVE THE FILE XX       
  2775.               FROM A SERVER.            
  2776. HELP        = DISPLAY THESE SCREENS.    
  2777. NEW "XX"    = PREPARE NEW KERMIT DISK.  
  2778.               SAVE KERMIT AS XX.        
  2779. SEND "XX"   = SEND THE FILE NAMED XX.   
  2780. RECEIVE     = RECEIVE THE FILE WITH THE 
  2781.               NAME SPECIFIED BY SENDER. 
  2782. RECEIVE "XX"= RECEIVE FILE AND STORE    
  2783.               WITH NAME XX.             
  2784. RESTORE     = SET KERMIT PARAMETERS     
  2785.               FROM FILE 'SCR95'.        
  2786. SAVE        = SAVE KERMIT PARAMETERS    
  2787.               IN FILE 'SCR95'.          
  2788. SET         = ALTER KERMIT PARAMETERS.  
  2789. SHOW        = SHOW KERMIT PARAMETERS.   
  2790.                                         
  2791.                        
  2792.  
  2793. ( ---
  2794. ( --- SCREEN # 98 ---
  2795. ( ---
  2796. TERMINAL INFORMATION (V1.5):            
  2797.  SETUP HOST COMPUTER FOR DUMB TERMINAL  
  2798.  WHICH ACCEPTS BACKSPACE (E.G., ADM3A). 
  2799.                                         
  2800. SPECIAL FUNCTION KEYS IN TERMINAL MODE: 
  2801. DEL => 127 = RUBOUT/DELETE              
  2802. F1  =>  17 = CTRL-Q = DC1 = XON         
  2803. F3  =>  19 = CTRL-S = DC3 = XOFF        
  2804. F5  =>   8 = CTRL-H = BACKSPACE         
  2805. F7  =>  27 = CTRL-] = ESC               
  2806. F2  =>  18 = CTRL-R = DC2               
  2807. F4  =>  20 = CTRL-T = DC4               
  2808. F6  =>  10 = CTRL-J = LF                
  2809. F8  => KERMIT TERMINAL-ESCAPE CHARACTER 
  2810.                                         
  2811. OPTIONS WITH F8: (STRIKE KEY AFTER F8)  
  2812. F8-U => SET SCREEN TO UPPERCASE MODE    
  2813. F8-L => SET SCREEN TO LC/UC MODE        
  2814. F8-B => SEND 'BREAK' TO HOST            
  2815. F8-C => DISCONNECT, RETURN TO KERMIT    
  2816. F8-X => SAME AS F8-C                    
  2817. F8-T => SHOW TERMINAL PARAMETERS        
  2818. F8-S => SHOW KERMIT PARAMETERS          
  2819. F8-? => SHOW THESE OPTIONS              
  2820.                                         
  2821.                        
  2822.