@L}5 _$% l0$)$$Hȱ$ UhL" `e$$%`$%`  R@W!( L(1   Y I`  d  Ld M * @  $ % CC$$)%1 Udߥ$9%: !0 S$% DD˙`  }J)Lr 78 8 8P?@     YLM8  Y0 L8Lj8K65: 850 not responding} BPD8EHI V` 8 8C8 De i L8` L7DD -.E:R:  ~} ~A-A-LK-ȱ`A-`a{8 `:.*?0 : A[8``b- d- p-b-`}-eiVͮ-PɛM d- p-D*? H --ha-HѶHihih- --L.ha-L-`-}: -0- -LI.-. -- --`c-a-a-c-` i.`Ȫ`a- . x.: i. . x.. i }. . x. i.` 豲` . . .`L2L=L=L=L>L4>LV> ///Alj;k+*o }pu i-=vcbxz436521, .nm/rey twq9078<>fhdgsaLJ:K\^OPUI_|VCBXZ$#&%"![ ]NM?REY TWQ()'~@{}FHDGSA ; } 436521,. / 90``8>lj;kopuibnm/y thg }89/H)hL{0 --I--Lu0CLu0C 8 0C d-`[A[B[D[COPOQOROSOpOqO }rOsOtOuOvOwOxOyOnOmOlOM)  l lL0`JK`DE`HI`B 1 1 V`H B} 1 1h V` 1BHILVHJKhLA1HJKhLA1H JKhLA1HJKhLA1 BLV - c10*1+`}L-1HHH1ɛ)  1L1hhh`H1ɛ 1h`h"/h#/H"/Hi"/#/i#/ /}$/'/+/ . .` /+/l"/)/*/'/(/%/ /$/'/+/ . .l"/,/-/./L2 )};L2L3L\7La8L[7Ld8L9L9 L~:@ .`HH )=w) =j$/8ƅ'/L2}?6 j@ . . .8 .$/LJ2 Vhh%/L.h*/h)/'/(/%/`HH&/i}i2/ )=08L4)L4,./$/ =j8ƅL3$/L?2/h*/h)/'}/(/%/`4/4/4/L6 )=0L5)?R j$/,/ALz4!A . . 6 .,./ > .8}ƅ .LJ2L5$/4/H2/HHH &6L 5,./&/L? =j8ƅ'/hhh2/h4/4/LC48ƅ}hhHH i揊i'/L)5'/i懥// .hhh2/h4/L5HH4/H &6L5}+@ .L^2h4/hh4/4/m4/揠ȱhh%/L.A0[ 7/&/8/i揭7/8/LC44/4/4/m4/}2/L42/`4/4/7/i4/m4/揠8/i揱87/0/8/0`0/L.7/a0{)_)7/`}1/7/5/8名0/i5/5/0>//i捭0/ ѐ 0/0 "7//////m//捠L67/,/Q@L7q}@ . .1/ .`7/,// j .1/ 8 i iLR7 .1/I1/`-/HH. -/Lq7 )=0L+8)?A }j$/2A . .,./ > .8ƅ'/ .L}7.$/,./.L? =j8'/LJ2.LI8-}/0LI8.hh%/.L. 0a0{)_..L}7h*/h)/'/(/%/`L\7HH0L9L9/////}//// )=0LC9)1,./ / /L? =j$/8ƅ'/L8?Y jUA ./ 0i0 j/8 i0 j .,.}/ > .8ƅ .$/LJ2//hh%/L.`08'800/0h)/h)/'/(/%/`H/H/HH/H .h}/h/hm///i/ L8@ .L^2Ҡ@ .L^2`HH. )= >LP:y)?A j$/nA . .,./ > .8ƅ }'/ .L9.$/,./.L? =j8'/LJ2..L9.hh%/.L.h*/h)/'/(/%/!}`HH )=y) =j$/8ƅ'/L:?_ jA ." j-/ j" j .,./ > .8 ."}$/LJ2-/ hh%/L.h*/h)/'/(/%/`HHH$/L='/ =j'/L^2 j( $    ɀ#}('/!%/)/*/(/'/6/L<i慊' 8 i i . '/LJ2' / '$}/'/'/ =jL;8ƅLJ2L<6/8ƅ6/'/0L; L<0% L<#0'L<00:Lh>h >h >h>h > > >n >n >n >n >>m >(} > >m > >ܭ >H >H>H>H` ///hhiȅ ///l)08L8>JLF>..` J08LZ>)}8jLh>9..`.0` /)08L>JL>9. /L. /`,/H3/3/,/3/L? 0L?HA .hR*}HHHHHHAL ?!A .3/ȱȌ3/ 6hhhhhhL>L>2AL?CAL?@L?+}nAL?0UA .3/3/ 01 j3/8 i0 j . iL>A . .L>h,/`8ƅ'/'/ =j'/L^2 '/L?,} ȩee$/8 .LJ2 ?program error: invalid comnd call ?ambiguous ?illegal input file spec ?no key-}words match this prefix ?no switches match this prefix ?bad character in integer number ?base of integer out of range ?ov.}erflow while reading integer number confirm with RETURN keyword, one of: switch, one of: input file spec output file spe/}c integer number in base unquoted text string single character token or [CC0} && ^^##CCCD1FOO DAT*.*1} Kermit-65>hChCC 1 gR 1X iX Xm . . sDLJC8D . nr .LDhCiClh2}CmhChCiClhCnxLDxLDxLDxLDxLDyLD'yLD*y .CLwD cLD h IBCD CC PC' .3}C iB . .L5E F jW vkRC G*-)*-eCC uEiEoE HGLE GLEC 8- B-*-  L8E "FL8E &j,4}*- 0 0LE͖CCLpF*- lC C ЭI)LpFC)L8E)44( mL8E'4L8E40 mL85}E4L8E =j`  `  J`eCOP`  ` /`B`B`F Y j*-pC)_CCD CL6}DS u\LFB lLFpC)? w .LpF͖C lLF =j FLEK65: Option,Sel,StaOption (C,S,B,?)ӠF YCߠF Y 7}`*-JJJJ i8 ȭ*-) i8 ȩ`eC*-)A0z0LGA `B `C :`D /`H V`I 8}`J N`K `Y G`o@`n@`H iheC` i` vk*-)8 H vk*-)8 h V 6`O)Ja):%0!0H9}Px H xhyxxhyxx`)JLG+J*JeCl*JO)J PPx`eC`ys Nfyc 􍤁:} I I I V 6` I I#Ȣ I IĦ98 V` Cj` I8IeT88U V` ;}IeT99U V` IeU IT V` I8IeUT V` I  9 iIP`:>=@` IƮ0<} LI` IƮ0 LI``COP`'(`Py``C`C`D`D`U(` IU(`O(` =}I(iP`UP(OT V`[MED784HI(m)wJfHKvHAHBICID3ImJIMxILI;MfHHHrH?`gIHHf>}HrHmJI;Mh l ;`BI0IAIBI0IAI JCCHCH` ` .LDLDLD h JLD` jyCCCAyC{C0 U?}y . .`yC]C[CLAG\C l T] R^ɭ\CYL.Eл qg` h jyCCCAyC{C0 |y . .LDyC]C[CF@}AG\C l T] R^ǭ\CYLDEй qgLD jCjC߅C i . . . . . .LDͲC0CjC[CAA}HH hhh߅C h h hR\C]C T] qL cLD jCq .LeLjC߅C h hC h qL kLDB}R|CxCyCzCCCCCCCCCCCCC|CD NLLF MLLR LLLC`C ]`AyCyC{CLLC}A|CC` R^`C\CSL.M`CC qgA|C`xC]C m`]CxC Cm lY\CxC]CC!0 ?0`00 CLiMC[CD} T]yCzCyC RgF|C`yCyC{CLMA|C` R^`C\CSLMZL(NFLhNBLN`CC qgA|C`xC]C m`zCE}zC{CLNA|CC`]CixCLM lY\C[C T]yC`zCzC{CLENA|CC`]CixCL8NY\C[C T]yCF}`]CxCLNA|CC` LfW a aY\C[C T]yCzCyC RgD|C`]CxCLNA|CC`Y\C[C T]C|C`yCyC{G}CLNA|CC` R^`C\CDL9OFLOZLP`CC qgA|C`xC]C m`]CxCLOzCzC{CLaOA|CCH}`]CixCLTO lY\C[C T]yC` k ve)Y\CxC]C[C T]yCzCyC RgD|C`A\C[C T]A|C c`zCzC{CI}LOA|CC`]Ci)?xCLOY\C[C T]yC`]CxCL.PA|CC` cY\CxC]C[C T] RgF|C` J} P DSP .SPP 1 QPRP`QP 1`QP P 1QP`QPL=QP 11D *e 1#D 1 #D$K}DȌ#DƤ-D 1 -D.DȌ-DƤ 1 12D 13D 14Dɛ 1LQD`C 1CȄɛ P8` c h b k b dPL}lQ mQ j Q k cLD klQH vP PhLQlQhlQ P P8`DߠC . PlQ`S|CCxCyCzCCCCCCCM}CCCCCCAZ0|CD ;RLQF RLQZ SLQS TLQB TLQC`C ]`yCyC{CLSRAN}|C`D\CxC]C~C[C T] R^`C\CNLRYLR`C qgA|C`]CxC]CLR`xC]CyC Rg k d~CCLRCO} cZ|C`D|C`yCyC{CLRA|C`C ɛALR[CF\CxC]C T] R^`C\CNLESYLVS`C` qgA|C`]CP}]CxCL^S`xC]CyC RgR a a d~C jD|C`yCyC{CLSA|CC`Z\CxC]C[C T] R^`C\CNLSYLQ}S`C qgA|C`]CxC]CLS`xC]CyC Rg AfL TB|C`F|C`A lyC{CL8TA|CC`yCS\CR}[CxC]C l T] R^`C\CYL{TNLzT`CLzT qgA|C`xC]C` CmCNCF|CyC Rg`yCyC{CLTA|CS}C`B\CxC]C[C T] R^`C\CNLUYLU`C qgA|C`]CxC]CLU`xC]CyC RgC|C`n .LDT}hCiClhC .LDnCoC .LDoCLDnC0LDCLD hLDCC CCC .LD 1X XLD hLDC U}.LDLDCpp .LD hCViCLDCpp .LD hCViCLDLWLVLVLVLEWLmWLW䅊q .LDCV} .LDLD hLDC .LDLD hLDC .LDLDkq .LDC .LDLD .LDLD0LD!0?0`0CW}C .LDLDx . hLD .LDLD0LDCC hLD  .LDLD0LDCC hLD .LDLX}D0LDCC hLD  .LDLD^0LDCC hLD .LDLD0LDCC hLD  .LDLD0Y}LDCC hLDمpۅp .LDC .LDLD .LDnCoC .LDnCCoCCLDp .LDC .LZ}D 1XLDC)CC{ CC`!q .LDC .LD iXLDC)CCM{ CC`q .LDC .LD XLDC)[}CC CC` hLDC .LDLDq .LDjC .LDjCCLD .LDnCoC .LDnC0 i0CLDLD\}oo .LDhCiC IYLDlhC h Y Y Y Y [ [ &\ K\ Y Z Z [ [\ )Z w[ R[` h | .C0WqC{rC H]}H 8i . .` h٠| .rqC{rCHCH 8i . .` h| .CLh h} .CLh h} .CLh h5} .CLh hL} .^}C i .` hw~ .C iC i .`Cpp .LDjC hhCZiCjC LDCpp .LDjC hhCZiCjC L_}D ZLD ZLD ZLD [LD [LD *[LD >[LDŠ} .CC i .`} .CC j`h} .CC i .`} .CC i .``}} .CC j`~ .CC i .`"~ .CC j`Cc} . . Z Z Z [ [ *[ >[`CA~ . . Z Z Z [ [a} *[ >[` hI~ .C0qCzrCHH 8i . .` h~ .C0qCzrCHH 8i . .` h~ .C 0qC{b}rCHH 8i . .` h~ .C  . .` . .` hԠ~ .CLh h~ .C j .` h u\LD2 .CC jU .Cc}C jx .CC j .CC j . .8CCCC j .8CCCC j . . .@,Cp C ] .`A d}. .`H) zzh`H ] .h`ؠz .hH ih`HJJJJ iyh) iy` j8 i i| . `CC i_CCC he}L] h[CiHi C hhmCCCiC]Ci HmCCh h\C)HmCCh hcCcC[C0L]mCC hcCL]C)JJJJJJmf}C)?i hC h_C^C_CC _`_C_C^C [B l_CL1^C _`` gL_C hLl^*-8 i i| . `g}CC iC _`CcCpC gL_pC)uCuC0L_ cCL^ gL_pC)uCuC pCmCCuCCLh}_pC8 8[CL_ pC8 ]CL_ pC\CL_CcCcC[C0L_ gL_pC)uCL_pCmCCpCcCcCL;_i}L`C)JJJJJJmC)?CuCL^pC8 CFC3z .pC i jC i_CC _`[CmCCCiC\C`_CC j}_`[CmCCCiC`Mz .CL_CCCjnCjnCCmCCCeC`ͷC0͸C0`L.H .htCCLAa|Ck}fCCcCL{e` mQ``Cw} hC[C0`fC fC LfCLf@ 1HC ?] C ]LD chL.h c`@ -1 ?] C`L. k x}hGg c bC@ c1LaC@ -1 cLD h gLD kGg c bC@ T1/@ 1/C C@ 1`KERMITy}.INIHxCi)?xCCiCCiCh`\CE`AA[CjC hC @C .A . .` j^C hLg*-Lg hLgz}*- ^CLgͯC ^C[B^CLg`^C[B_CL._C^C0`[B_CL._C`ʝ[B_C` &jLh*-)SC cyCCC{}AyC{C0 Uy . .LhyC]C[CDAZ\C l T]LhLD` M`Lh vkLh*-L.q .`L. .LD .`|}  . .`LhC`jC0Lh`H CCh`jC0kCLi`H)  ^ jhi@Li jhLjhaChbCh}}hHHHH .hmqChmrCbCHaCH`8 iJJJ PC( i` ` TUPO`LVHJJJJ ih) iH jhLjiii:`~}CCCjC j0CjC jCjCC jC݊H jh` d' iL.L &j Lj` 90*-`}8`H:LFjH,-h`RS error -> C HBHPj .h i[j .h i .0`&-` k0#D-E JKHIB V"B}JDE V&BCJ V$BCM{J V(BHDKEI J V `j&- +k`&-&-(-)-0L1`0 B V} `j'-(-)-'-Cmk .'- i .(-)-`Com err Zl--J(-)- +k(- )-`(-(-)-0 }1C)*-+- l`FramingOverrunParity Buf OflBad OptDev NR 850 errCmd errRS ok '--*LDl iHki}h Y Cji l`l l l Y`C.-- +k.-)- (-02 l`)- (- l`HH vkhh`ll0 -1}ll` k0J"B#D-EK V jLV.-.- l `cCCi ȭCi ȭCi ȭCI@ȭCi }ȭCȭCC`Y`8 Cȱ8 Cȱ8 CȱI@CȱLym CLm8 CȱLm#Cȭ[C 0 `ɛ }C* `H {h'COU A H h ހ`C ŠT V`T9LсȦU V`T8U V` `TU V`TȦU V}`UʤT V`U(CPT V`TH TT LThT`THThHT TLmhT `C}L1THT TThT` {C }ƊiA {C ۊ {C 񊓈 {C ό {C ڈ8HT8 сh8`8HT8 h8`UITJ:K=L}>M@N`IJ VK:L=M>N@`0)CQ HH {hUhT`F GF Ƃ`F ƂF8,-}78E`E ƂC GIGC  C` 01 C!ȹ!ȹ!ȹ!ȹ!ȘH h!۩`} wxσP(X`hp∢⠢ ⨢Ⱒ⸢߃أ33330@@<@@@~}$$>>HhXH@DD(>xpPp;nLsHUT \h`C}BD8 @ UL>C`U840U8L^%0U8%Ld(0(4 m`DDDDDDf}D"D"UDDU"D"DDDD"D""""DffDD""DD""DDDDDDDDD"D"D""}""""D̪D""DDDDDfDDDDDD"DD"D"DD"DDDfD̪̪f}f̪̈̈DDDDDDf"""D̪̪DD̪̈DD"̪̪}fD""DDDDDDDDDD"DDD""""""DD""f̪}ff"ffDff̈Df"̪DDDDD""""D̪DDDD̪DD̪̈Df"3}fD"DDDDfDDf""DfDDDDfDDDDDDDf""3""fUDDDDUUUU}w""̈wfD̈UfUwfDDDDDDwDw""DDDDDDDwDDDDDDDwDDDDDDD}DDDwDDDDDDDDDDDDDDDDDDDDDDDDDD"DD"D"D"D̈̈ffTU \P8U} `T \U `UHU ihU`8Ȣ \ \P 樥9ܢ9 \P `9 \ \P }ƨ8ܢ8 \P ``8 i \I`&&e&&&&POe` $ee`THUH}TUUT \TeTeTȥm4iȑTThUhT`]8C.-  -- TC@`pȑȩ ȩ}`BȩȩȩAȩȩ` ډBȥiPi ` ډOȩȩ gOȩȩ g `_}``*+ ,-./TAC`0*1+,-.T/` 1`UH'U 1LɊhU`UHUhU H }1L`UHU ƊhU```` 1 1` <23 567C`LsPQJH`H  4e&}&&&&eih ii`ii`)`CBD8 H&&&iqiTU G}Q-HA= H@MHi(iLhU``8 i GMHi(`UT G(H0 1ȩ'8} i(iƨ`U5T GU 4H1 덥i(iƨ`T G@ ƍ`8 +k Zl }G G@ 樥9ϥTH9T hT`9 +k Zl G G@ ƨ8ϥTH8T hT`}ɛ`8 L_H(h` ƭ ```&&&L ̍` ƭ} ```hh8*ȱl`B/ԍ01B` wDD -.E:R:  ~ ~A-A-LK-ȱ`A-`a{8 `:.*?0 : A[}8``b- d- p-b-`-eiVͮ-PɛM d- p-D*? H --ha-HѶHihih- -}-L.ha-L-`-: -0- -LI.-. -- --`c-a-a-c-` i.`Ȫ`}a- . x.: i. . x.. i. . x. i.` 豲` . . .`L2L=L=L=L>L4>LV> ///}Alj;k+*opu i-=vcbxz436521, .nm/rey twq9078<>fhdgsaLJ:K\^OPUI_|VCBXZ$#&%"![ }]NM?REY TWQ()'~@{}FHDGSA ;  436521,. / 90``8>lj;kopuib}nm/y thg89/H)hL{0 --I--Lu0CLu0C 8 0C d-`[A[}B[D[COPOQOROSOpOqOrOsOtOuOvOwOxOyOnOmOlOM)  l lL0`JK`DE}`HI`B 1 1 V`H B 1 1h V` 1BHILVHJKhLA1HJKhLA1H JKhLA1HJKhLA}1 BLV - c10*1+`L-1HHH1ɛ)  1L1hhh`H1ɛ 1h`h"/h#}/H"/Hi"/#/i#/ /$/'/+/ . .` /+/l"/)/*/'/(/%/ /$/}'/+/ . .l"/,/-/./L2 );L2L3L\7La8L[7Ld8L9L9 L~:@ .`HH )=w)} =j$/8ƅ'/L2?6 j@ . . .8 .$/LJ2 Vhh%/L.h*/h})/'/(/%/`HH&/ii2/ )=08L4)L4,./$/ =j8ƅ}L3$/L?2/h*/h)/'/(/%/`4/4/4/L6 )=0L5)?R j$/,/ALz4!A .} . 6 .,./ > .8ƅ .LJ2L5$/4/H2/HHH &6L 5,./&/L? =j8ƅ'/h}hh2/h4/4/LC48ƅhhHH i揊i'/L)5'/i懥//} .hhh2/h4/L5HH4/H &6L5+@ .L^2h4/hh4/4/m4/揠ȱhh%/L.A0[ 7/&/8/i}揭7/8/LC44/4/4/m4/2/L42/`4/4/7/i4/m4/揠8/i揱87/0/8/0`0/}L.7/a0{)_)7/`1/7/5/8名0/i5/5/0>//i捭0/ ѐ 0/0 "7//////}m//捠L67/,/Q@L7q@ . .1/ .`7/,// j .1/ 8 i iLR7 .1/I1/`-/HH.} -/Lq7 )=0L+8)?A j$/2A . .,./ > .8ƅ'/ .L}7.$/,./.L? =}j8'/LJ2.LI8-/0LI8.hh%/.L. 0a0{)_..L}7h*/h)/'/(/%/`L\7}HH0L9L9///////// )=0LC9)1,./ / /L? =j$/8ƅ'/L8?Y jUA }./ 0i0 j/8 i0 j .,./ > .8ƅ .$/LJ2//hh%/L.`08'800/0h)/h})/'/(/%/`H/H/HH/H .h/h/hm///i/ L8@ .L^2Ҡ@ .L^2`HH. )= >LP:y)?A j$/n}A . .,./ > .8ƅ'/ .L9.$/,./.L? =j8'/LJ2..L9.hh}%/.L.h*/h)/'/(/%/`HH )=y) =j$/8ƅ'/L:?_ jA ." j-/ j" j .,./} > .8 .$/LJ2-/ hh%/L.h*/h)/'/(/%/`HHH$/L='/ =j'/L^2 j( }$    ɀ('/!%/)/*/(/'/6/L<i慊' 8 i i }. '/LJ2' / '/'/'/ =jL;8ƅLJ2L<6/8ƅ6/'/0L; L<0% L<#}0'L<00:Lh>h >h >h>}h > > >n >n >n >n >>m > > >m > >ܭ >H >H>H>H` ///hhiȅ ///l)08L}8>JLF>..` J08LZ>8jLh>9..`.0` /)08L>JL>9. /L. /`,/H3/3}/,/3/L? 0L?HA .hRHHHHHHAL ?!A .3/ȱȌ3/ 6hhhhhhL>L>}2AL?CAL?@L?nAL?0UA .3/3/ 01 j3/8 i0 j . iL>A . .L>h,/`8ƅ}'/'/ =j'/L^2 '/L? ȩee$/8 .LJ2 ?program error: invalid comnd call ?ambiguou}s ?illegal input file spec ?no keywords match this prefix ?no switches match this prefix ?bad character in integer number} ?base of integer out of range ?overflow while reading integer number confirm with RETURN keyword, one of: switch, one o}f: input file spec output file spec integer number in base unquoted text string single character token or [CC} && ^^##CCCD1FOO }DAT*.* Kermit-65>hChCC 1 gR 1X iX Xm . . sDLJC8D }. nr .LDhCiClhCmhChCiClhCnxLDxLDxLDxLDxLDyLD'yLD*y .CLwD cLD h }IBCD CC PC' .C iB . .L5E F jW vkRC G*-)*-eCC uEiEoE HGLE GLEC} 8- B-*-  L8E "FL8E &j,*- 0 0LE͖CCLpF*- lC C ЭI)LpFC)L8E)}44( mL8E'4L8E40 mL8E4L8E =j`  `  J`eCOP`  ` /`B`B`}F Y j*-pC)_CCD CLDS u\LFB lLFpC)? w .LpF͖C lLF =j FLEK65: Option,Sel,StaOption }(C,S,B,?)ӠF YCߠF Y `*-JJJJ i8 ȭ*-) i8 ȩ`eC*-)A0z0LGA `B }`C :`D /`H V`I `J N`K `Y G`o@`n@`H iheC` i` vk*-)8 H vk*-)}8 h V 6`O)Ja):%0!0HPx H xhyxxhyxx`)JLG+J*JeCl*JO)J PPx`eC`}ys Nfyc 􍤁 I I I V 6` I I#Ȣ I IĦ98 V` Cj}` I8IeT88U V` IeT99U V` IeU IT V` I8IeUT V` I  9 }iIP`:>=@` IƮ0 LI` IƮ0 LI``COP`'(`Py``C`C`D`D`U}(` IU(`O(` I(iP`UP(OT V`[MED784HI(m)wJfHKvHAHBICID3I}mJIMxILI;MfHHHrH?`gIHHfHrHmJI;Mh l ;`BI0IAIBI0IAI JCCHCH` ` .LDLDLD h J}LD` jyCCCAyC{C0 Uy . .`yC]C[CLAG\C l T] R^ɭ\CYL.Eл qg` h jyCCCA}yC{C0 |y . .LDyC]C[CFAG\C l T] R^ǭ\CYLDEй qgLD jCjC߅C i . . . . .} .LDͲC0CjC[CAHH hhh߅C h h hR\C]C T] qL cLD jCq .LeLjC}߅C h hC h qL kLDR|CxCyCzCCCCCCCCCCCCC|CD NLLF MLLR LLLC}`C ]`AyCyC{CLLA|CC` R^`C\CSL.M`CC qgA|C`xC]C m`]CxC Cm lY\CxC]CC}!0 ?0`00 CLiMC[C T]yCzCyC RgF|C`yCyC{CLMA|C` R^`C\CSLMZL(NFLhNBLN`C}C qgA|C`xC]C m`zCzC{CLNA|CC`]CixCLM lY\C[C T]yC`zCzC{CLENA|CC }`]CixCL8NY\C[C T]yC`]CxCLNA|CC` LfW a aY\C[C T]yCzCyC RgD|C`]CxCLNA|C }C`Y\C[C T]C|C`yCyC{CLNA|CC` R^`C\CDL9OFLOZLP`CC qgA|C`xC]C m`]C }xCLOzCzC{CLaOA|CC`]CixCLTO lY\C[C T]yC` k ve)Y\CxC]C[C T]yCzCyC RgD|C }`A\C[C T]A|C c`zCzC{CLOA|CC`]Ci)?xCLOY\C[C T]yC`]CxCL.PA|CC` cY }\CxC]C[C T] RgF|C` P DSP .SPP 1 QPRP`QP 1`QP P 1QP`QPL=QP }11D *e 1#D 1 #D$DȌ#DƤ-D 1 -D.DȌ-DƤ 1 12D 13D 14Dɛ 1LQD`C 1}CȄɛ P8` c h b k b dPlQ mQ j Q k cLD klQH vP PhLQlQhlQ P P8`DߠC . PlQ`}S|CCxCyCzCCCCCCCCCCCCCAZ0|CD ;RLQF RLQZ SLQS TLQB TL}QC`C ]`yCyC{CLSRA|C`D\CxC]C~C[C T] R^`C\CNLRYLR`C qgA|C`]CxC]CLR`xC]C}yC Rg k d~CCLRC cZ|C`D|C`yCyC{CLRA|C`C ɛALR[CF\CxC]C T] R^`C\C}NLESYLVS`C` qgA|C`]C]CxCL^S`xC]CyC RgR a a d~C jD|C`yCyC{CLSA|CC`Z\C}xC]C[C T] R^`C\CNLSYLS`C qgA|C`]CxC]CLS`xC]CyC Rg AfL TB|C`F|C`A l}yC{CL8TA|CC`yCS\C[CxC]C l T] R^`C\CYL{TNLzT`CLzT qgA|C`xC]C` CmCNCF|}CyC Rg`yCyC{CLTA|CC`B\CxC]C[C T] R^`C\CNLUYLU`C qgA|C`]CxC]CLU`xC]C}yC RgC|C`n .LDhCiClhC .LDnCoC .LDoCLDnC0LDCLD hLDCC C}CC .LD 1X XLD hLDC .LDLDCpp .LD hCViCLDCpp .LD hCViCLDLWLVL}VLVLEWLmWLW䅊q .LDC .LDLD hLDC .LDLD hLDC .LDLDkq .LDC .LDLD }.LDLD0LD!0?0`0CC .LDLDx . hLD .LDLD0LDCC hLD  .LDLD}0LDCC hLD .LDLD0LDCC hLD  .LDLD^0LDCC hLD .LDLD0LD}CC hLD  .LDLD0LDCC hLDمpۅp .LDC .LDLD .LDnCoC .LDnCC}oCCLDp .LDC .LD 1XLDC)CC{ CC`!q .LDC .LD iXLDC)CCM{ CC`}q .LDC .LD XLDC)CC CC` hLDC .LDLDq .LDjC .LDjCCLD .LD}nCoC .LDnC0 i0CLDLDoo .LDhCiC IYLDlhC h Y Y Y Y [ [ &\ K\ Y Z Z [ [\ )Z w[  }R[` h | .C0WqC{rC HH 8i . .` h٠| .rqC{rCHCH 8i . .` h| .CLh h} .CLh h} !}.CLh h5} .CLh hL} .C i .` hw~ .C iC i .`Cpp .LDjC hhCZiCjC LDCp"}p .LDjC hhCZiCjC LD ZLD ZLD ZLD [LD [LD *[LD >[LDŠ} .CC i .`} .CC j`h} #}.CC i .`} .CC i .`} .CC j`~ .CC i .`"~ .CC j`Cc} . . Z Z Z [ [ $}*[ >[`CA~ . . Z Z Z [ [ *[ >[` hI~ .C0qCzrCHH 8i . .` h~ .C0qCzrCHH 8%}i . .` h~ .C 0qC{rCHH 8i . .` h~ .C  . .` . .` hԠ~ .CLh h~ .C j .&}` h u\LD2 .CC jU .CC jx .CC j .CC j . .8CCCC j .8CCCC j'} . . .@,Cp C ] .`A . .`H) zzh`H ] .h`ؠz .hH ih`HJJJJ iyh) iy` j8 i i|(} . `CC i_CCC hL] h[CiHi C hhmCCCiC]Ci HmCCh h\C)HmCCh hcCcC[C0L)}]mCC hcCL]C)JJJJJJmC)?i hC h_C^C_CC _`_C_C^C [B l_CL1^C _`` gL_C *} hLl^*-8 i i| . `CC iC _`CcCpC gL_pC)uCuC0L_ cCL^ gL_pC)+}uCuC pCmCCuCCL_pC8 8[CL_ pC8 ]CL_ pC\CL_CcCcC[C0L_ gL_pC),}uCL_pCmCCpCcCcCL;_L`C)JJJJJJmC)?CuCL^pC8 CFC3z .pC i jC i_CC _`[C-}mCCCiC\C`_CC _`[CmCCCiC`Mz .CL_CCCjnCjnCCmCCCeC`ͷC0.}͸C0`L.H .htCCLAa|C:}fCCcCL{e` mQ``C hC[C0`fC fC LfCLf@ 1HC ?] C ]LD chL.;}h c`@ -1 ?] C`L. k hGg c bC@ c1LaC@ -1 cLD h gLD kGg c bC@ T1<}/@ 1/C C@ 1`KERMIT.INIHxCi)?xCCiCCiCh`\CE`AA[CjC hC @C .A =}. .` j^C hLg*-Lg hLg*- ^CLgͯC ^C[B^CLg`^C[B_CL._C^C0`[B_CL._C`ʝ[B_C` &jL>}h*-)SC cyCCCAyC{C0 Uy . .LhyC]C[CDAZ\C l T]LhLD` M`Lh vkLh*-L.?}q .`L. .LD .`  . .`LhC`jC0Lh`H CCh`jC0kCLi`H@})  ^ jhi@Li jhLjhaChbChhHHHH .hmqChmrCbCHaCH`8 iJJJ PC( i` ` TUPO`LVA}HJJJJ ih) iH jhLjiii:`CCCjC j0CjC jCjCC jC݊H jh` d' iL.B}L &j Lj` 90*-`8`H:LFjH,-h`RS error -> C HBHPj .h i[j .h i .0`&-` k0#C}D-E JKHIB V"BJDE V&BCJ V$BCM{J V(BHDKEI J V `j&-D} +k`&-&-(-)-0L1`0 B V `j'-(-)-'-Cmk .'- i .(-)-`Com err Zl--J(-)- +E}k(- )-`(-(-)-0 1C)*-+- l`FramingOverrunParity Buf OflBad OptDev NR 850 errCmd errRSF} ok '--*LDl iHkih Y Cji l`l l l Y`C.-- +k.-)- (-02 l`)- (-G} l`HH vkhh`ll0 -1ll` k0J"B#D-EK V jLV.-.- l `cCCi H}ȭCi ȭCi ȭCI@ȭCi ȭCȭCC`Y`8 Cȱ8 Cȱ8 CȱI@CȱLym CLm8 CȱI}Lm#Cȭ[C 0 `ɛ C* `H {h'COU A H h ހ`C ŠT V`T9LсȦU V`T8z}U V` `TU V`TȦU V`UʤT V`U(CPT V`TH TT LThT`THThHT TLmhT `C{}}L1THT TThT` {C ƊiA {C ۊ {C 񊓈 {C ό {C ڈ8HT8 сh8`8H|}T8 h8`UITJ:K=L>M@N`IJ VK:L=M>N@`0)CQ HH {hUhT`F }}GF Ƃ`F ƂF8,-78E`E ƂC GIGC  C` 01 C!ȹ!ȹ~}!ȹ!ȹ!ȘH h!۩` wxσP(X`hp∢⠢ ⨢Ⱒ⸢߃أ33}330@@<@@@~$$>>HhXH@DD(>xpP}p;nLsHUT \h`CBD8 @ UL>C`U840U8L^%0U8%Ld(0(4 m}`DDDDDDfD"D"UDDU"D"DDDD"D""""DffDD""DD""}DDDDDDDDD"D"D""""""D̪D""DDDDDfDDDDDD"DD"D"D}D"DDDfD̪̪ff̪̈̈DDDDDDf"""D̪̪}DD̪̈DD"̪̪fD""DDDDDDDDDD"DDD""""""D}D""f̪ff"ffDff̈Df"̪DDDDD""""D̪DDDD}̪DD̪̈Df"3̪fD"DDDDfDDf""DfDDDDfDDDDDDDf""3}""fUDDDDUUUUw""̈wfD̈UfUwfDDDDDDwDw""DDDDDDDwDDDDD}DDwDDDDDDDDDDwDDDDDDDDDDDDDDDDDDDDDDDDDD"DD"D"D"D}̈̈ffTU \P8U `T \U `UHU ihU`8Ȣ \ \P 樥9ܢ9 \P} `9 \ \P ƨ8ܢ8 \P ``8 i \I`&&e&&&&PO}e` $ee`THUHTUUT \TeTeTȥm4iȑTThUhT`]8C.-  -- T}C@`pȑȩ ȩ`BȩȩȩAȩȩ` ډBȥiPi ` ډOȩȩ} gOȩȩ g `_``*+ ,-./TAC`0*1+,-.T/` 1`U}H'U 1LɊhU`UHUhU H 1L`UHU ƊhU```` 1 1` <23 567C`LsPQJH}`H  4e&&&&&eih ii`ii`)`CBD8 H}&&&iqiTU GQ-HA= H@MHi(iLhU``8 i GMHi(}`UT G(H0 1ȩ'8 i(iƨ`U5T GU 4H1 덥i(iƨ`}T G@ ƍ`8 +k Zl G G@ 樥9ϥTH9T hT`9 +k Zl G G@} ƨ8ϥTH8T hT`ɛ`8 L_H(h` ƭ ```}&&&L ̍` ƭ ```hh8*ȱl`B/ԍ01B`} Kermit-65 Manual and bug list Page 1 Kermit-65 for Atari 800s By John D }unning. Bug reports to me (JRD@Symbolics.COM) via Arpanet. Other net users will have to find some way of getting mail to } Ar- panet, then use the above address. Kermit-65 is a port of the kermit-65 available for Commodore frobs. It run }s on 48K Atari 800 family machines. Current version (second release) is 3.3. Capabilities: File transfer, text } and binary: Without going into excruciating detail here, Kermit-65 is a fairly complete implementation of a user }side, using the KERMIT protocol. It's been tested against Kermit-11 under RSX, and C-Kermit under VMS and Un*x, and } seems to work fine. For a description of what the KERMIT file protocol is all about, and something about how the }it works, see the 'Kermit protocol' section at the end of this do- cument. Terminal emulation: Glass tty, }Vt52, or Vt100. Supports 3 flavors of screen configuration; Atari standard screen, 80-column pannable } (40-column visible) like VTERM, and 80-column graphics, like V10SQR. Terminal emulation modes may be used in a }ny combination with screen configurations, though some combinations won't work real well; for instance trying to } do full-screen Vt100-style ed- itting when using the Atari screen is a good way to lose. Local file management: } Kermit-65 includes Directory, Erase, and Rename commands, allowing the user to do most kinds of maintainance operati }ons without leav- ing the program. It also allows you set set the default drive to any value 1 thru 8, so you're no }t stuck using a single drive for everything. Typing at Kermit-65: The command processor accepts command li }nes, consisting of a key- word, optionally some more keywords, and optional values. Things in command lines are de }limited by spaces, and terminated by . At any time, you may type '?' to get a list of valid completions for t }he word you're typing. You need not type keywords completely; however much uniquely identifies the word you wa }nt is enough. At any time, will attempt to complete what you've Kermit-65 Manual and bug list } Page 2 typed so far. Note that if you've typed a word, but haven't hit a or yet, so that th }e cursor's at the end of the word, '?' will tell you that there's only the one possibility. Hit a space, then ' }?', for a list of possibilities for the next word. Some commands are 'defaults' in the sense that if you type some- } thing non-unique, and hit escape, and one of the possibilities is a 'default', it will win over the other possibilitie }s. One exam- ple of this is 'Send'. Example: The following illustrates a typical interaction between you, t }he user, and Kermit-65. The stuff that Kermit types (prompts, echos of partial commands, and help) is on the } left, stuff typed by the user is in the middle, and commentary is on the right. Kermit types: You t }ype: Comments: "Kermit-65>" Kermit prompts. "s?" } User starts typing a command starting with } "s", then hits "?" for help. "Keyword, one of the follo }wing: Kermit prints possible set show for "s"... send Kermit-65>s" } and reprompts, with the partial command. } "et?" User finishes the "set" command, and asks for } help again. "Keyword, one of the following: Kermit prints the (one) } set possible completion. Kermit-65>set" " ?" } User hits a space, then asks for help again. "Keyword, one of t }he following:" Kermit prints possible (various subcommands of 'set' here) completions for words } that can follow "set" Kermit-65 Manual and bug list Page 3 Kerm }it-65 commands: Bye Tells the kermit on the other side to log out, and ex- its Kermit }-65. Finish Tells the kermit on the other side to exit server mode, but stay lo }gged in. Connect Puts Kermit-65 in terminal mode, using whatever param- eters are cur }rently set for Terminal and Screen confi- guration. See 'Set Terminal' and 'Set screen' for } more details. Quit Exit from Kermit-65 back to Atari DOS. Exit Same as Qu }it. Get Ask the kermit on the other side to send the named } file, using whatever file and protocol parameters are currently in effect. See 'Set' for more detai }ls. Note that may be wildcarded; assuming the serving kermit allows that. In t }hat case the serving kermit may send several files; Kermit-65 will try to receive all of th }em. Send Send the named file to the kermit on the other side. } If the file spec is wildcarded (using DOS FMS wildcard rules) all matching files are sent. In the la }tter case, the Kermit on the other side should be in Server mode, so that it can deal with a }whole sequence of in- coming files. Receive Attempt to rec }eive into the named file. Assumes the other kermit is already trying to send it. If no file } name is given, Kermit-65 will attempt to get the name from the file-header information coming from the othe }r side. This is the command to use after telling the other kermit "Send ". }Kermit-65 Manual and bug list Page 4 Set Baud (50..9600) } Sets baud rate on the comm port to the supplied value. Parity Even, Odd, Mark, Space, None } Sets specified parity for the comm port. See the Atari 850 man for more details on the behavio }ur of the various parity options. Word-size Seven, Eight Set frame } size used for comm port. The default is eight-bit. The preferred value for this depends on } what the parameters of the serial line are set to on the other side. In my experience, older systems } will tend to use seven-bit configurations, more modern ones will tend to use eight-bits. I }f you're not sure, it usually works to use eight-bit. Default-disk <1..8> } Sets the default disk for all file operations. Legal values are 1 to 8, inclusive. Rs232 }-registers <16-bit hex number> Directly sets some of the the values used when confi- } guring the serial port. Specifically, the high byte is used as the AUX1 parameter for the XIO 38(c }onfig- ure translation and parity) and the low byte is used as the AUX1 parameter for the } XIO 36 (configure baud rate and word size). This allows settings to be used that aren't c }overed by the supplied keywords in Baud, Parity, and Word-size. Debugging Off, Terse, } Verbose Turns on/off various debug msgs strewn around in the code. Eight-bit-q }uoting On, Off Turns on/off eight-bit mode quoting in the kermit pro- tocol. T }he default is off. Kermit-65 Manual and bug list Page 5 File-warning On, } Off When this mode is on, Kermit-65 will refuse to overwrite files when receiving. } When it attempts to receive a file that's already present, it will alter the filename o }f the incoming file so as not to overwrite the old version. The algorithm for altering } the filename is to replace the extension field of the name with a 2 digit hex number, and retry. If t }he file still exists, the number is incremented. This repeats until a free name is foun }d, or the extension reaches "FF", at which time the receive is aborted. (I think it's ne }ver possible to get that far anyway, as you can't put 256 files on one of these disks) File-type } Atascii This is a standard atari text file, and is the default mode. End of line } is signalled by the ATEOL character ($9B). When sending, other ATASCII characters are t }ranslated to their ASCII equivalents, ie ATTAB ($7F) -> Tab ($09), ATRUB ($7E) -> Rubout ($7F). The file } header info generated indicates that a text file is being sent. Receiving one does the op }posite transfor- mation. Ascii Files are sent/received as ordinary ascii-tex }t. Line terminators are assumed to be CR ($0D) followed by LF ($0A), and are handled in }the usual kermit fashion. No translation of data happens. This mode isn't the right thing } for regular old text files, but is useful for sending around files that are output in plain as- } cii from various utilities. For example, I have a word processor program which produces formatted o }utput files in ascii, intended to be dumped directly to a printer. This mode gets them }over to my pdp-11's print spooler. Binary Data is sent in kermit binary }form, no line termina- tors etc. Flow-control On, Off Turns ^S^Q fl }ow control on/off for the incoming line. See 'Com port handling', below, for more details. Kermit-65 Man }ual and bug list Page 6 Ibm-mode On, Off Turns on/off 'IBM } mode'. This is apparently a stan- dard thing in kermit implementations, made necessary by } the wierditudes designed into the blue equipment. This code has been left as is, so it's got some chance } of working, but has not been tested. Local-echo On, Off Controls ech }o mode in terminal emulator. Default is off. Send End-of-line, Padding, Timeout }, Pad-char, Quote-char, Eight-bit-quote, Packet-length Sets one of the listed parameters fo th }e transmitting side of the kermit protocol. Padding, timeout (seconds), and packet- }length are in decimal, the oth- ers (character codes) are in hex. This command is primar }ily used when talking to a kermit that can't or won't use the standard set of protocol characters for } beginning-of-frame, end-of-frame, etc. As such, it's not generally useful, at least I've never s }een a ker- mit that required it. There are things that might come in handy, though. Fo }r instance, if you've got an exceptionally dirty phone connection, you might want to set th }e frame size down from the default of 94. In that case, you might say "Set Send Frame-size 30". } Note that Send parameters can be reset by the other Kermit sending one of the kinds of packets }that re- quest certain values, so you may have to tell him di- rectly, to get the effect you } want. Receive All parameters settable same as 'Send' Screen-driver Atari } The standard 24x40 Atari screen driver. This mode does its output to the internal E: d }evice. This isn't very useful for complicated things, but is sup- plied in case kermit's r }unning someplace where there's not enough memory to do anything better. (Besides, I had to }have all the code for it lying aound for other reasons, so why not?) Kermit-65 Manual and bug list } Page 7 40-column A 24x80 screen, using the character CTIA mode. Since } that mode only allows 40 visible columns, the screen is pannable left to right, allowing } any 40-column chunk to be displayed. The terminal code will attempt to keep the cursor }visible by panning around while output is happening. You can also pan manually using the St }art and Select keys. In this mode, reverse- vi- deo output works, but none of the other highlighting } types. 80-column A 24x80 screen, using the hi-res (320 bits/raster) } graphics CTIA mode. In this mode, both reverse video and underlining are supported. This is the d }efault setting for screen mode. Terminal-emulation Vt100, Vt52, None } Sets the terminal emulation mode to the specified va- lue. The default is Vt100. Show any }of the same keywords as 'Set', or 'All' Display the value(s) of the specified thing(s). 'All' d }isplays the values of everything in sight. Status Dump various goodies about the last file transfer; charact }ers in, out, naks, timeouts etc. Directory [] Display a directory list from the default d }rive. is optional, if omitted, it defaults to "*.*". Rename } Does a rename operation on files on the default drive. Either filespec may be wildcarded, in which case the rename }operation happens according to the rules described in the ATARI OS FMS documentation. Erase Erases files on the default drive. Filespec may be wild- carded, in which case the erase operation }happens according to the rules described in the ATARI OS FMS documentation. Kermit-65 Manual and bug list } Page 8 Save Dump Kermit-65 parameters such as screen settings, send/re- ceiv par }ameters, etc to an init file "KERMIT.INI" on the default disk. Restore Read parameters from " }KERMIT.INI" back into the running Kermit-65. Help Gives a summary of the above command list. } Other interesting things about terminal modes: Depending on what terminal you're using, there are several things } which may be of interest. In 40 or 80 column modes, there's a status line under the 24 data lines. It displays } what special keys are active, and the status of the comm port. In 40 column mode, Start pans the screen right, }and Select pans left. In both 40 and 80 col modes, Option is used to get the kermit's attention. In Atari mode, c-Y }is used instead. Once you have kermit's attention, it wants a character; one of: C Break the conn }ection B Send a break (approx 1/4 sec) S Display status Function keys: Kerm }it-65 can generate function key sequences ala VT100. The cur- rent function key bindings are as follows: (c-sh }- means control-shift...) c-sh-0..c-sh-9 keypad 0 thru 9 c-sh-. keypad dot } c-sh-backspace keypad minus c-sh-, keypad comma c-sh-return Enter c- !}sh-q..c-sh-r PF1..PF4 c-sh-- Up arrow c-sh-= Down arrow c-sh-< "} Left arrow c-sh-> Right arrow Other key bindings for things not on the Atari keyboard: #} sh-< { (left brace) sh-> } (right brace) sh-backspace ~ (tilde) $} c-sh-backspace, or c-7 ` (backquote) Kermit-65 Manual and bug list Page 9 Thes %}e key bindings aren't quite what I had in mind, but the OS rom won't let me get at all the control-shift keypresses, so &} they'll have to do for now. I encourage any feedback about how these feel. I've been using them for a while n '}ow, and they don't seem as bad as I expected. In particular, they work passably well when using EDT (I'm typing th (}is document with it), which I think is an indication that they're useable, as it's a real keypad hog. Other special )} keys: The Atari key (/|\ on 800 vintage dinosaurs like mine, |/| on newer 800XL vintage equipment) behaves i *}n a special fashion when using Kermit-65. It toggles a flag that causes input from the comm port to be held up +}, rather than processed as soon as possi- ble. This is useful for causing the screen to hold up temporarily when i ,}n terminal mode. If flow control is enabled, it behaves in the expected fashion; it'll tell the other side to shut up -} until you press the Atari key again, to let pending input be processed again. The status line: When in .} 40-column or 80-column terminal modes, there's a 25th line below the usual 24 lines of terminal screen. This is the s /}tatus line. It will look something like this: K65: Option + o v Rs ok There are several 0}interesting things displayed here: At the left side, after "K65", is a list of which special keys (option, se 1}lect, start) are active at the moment. If you press Option, this will change to a prompt for the special characters 2} that can follow Option. In column 22 ('+', above) will appear '+' or '-', or space. This indicator shows you the 3} state of the flow-control logic; + means incoming traffic is enabled, - means it's disabled. Note that i 4}t when flow-control is turned on (see com- mands, above) this flag will toggle back and forth between + and - as th 5}e flow-control logic does its thing. If flow-control is turned off, it will just sit on + all the time. Coumn 2 6}4 ('o' above) will contain a blot if comm-port reading is suspended, space otherwise. In column 26, ('v') abov 7}e, is the caps lock in- dicator. It will display an up-arrow if caps are locked, or a down-arrow if not. In co 8}lumn 32 is a message describing the last known state of the comm port. Kermit-65 Manual and bug list 9} Page 10 Com port handling: In its current configuration, Kermit-65 expects to talk thru an Atari 8 :}50. In principal, that ought not to be a restriction, but I (JRD) only have an 850 to test with, and don't know wha ;}t re- quirements there are for other devices. I've tried to be scrupu- lous about sticking to the documented <}interfaces to things, however, so I'd expect any driver that adheres to the spec to work. The port's op =}ened and closed a lot; you'll hear it, as I've left the 'noisy bus' option turned on. It uses page 6 ($600) as an IO >} buffer. Since that's only 256 bytes, there's the possibility of overruns at high baud rates. When flow-control's o ?}n, Kermit will attempt to shut off the other side when it sees more than 50 bytes pending; it will turn it back on @}when there's less than 10. As of this writing, Kermit-65 has been out in the field for a while, and seems to A}work ok with things other than 850s. One word of caution; I've gotten some feedback to the effect that the de- fau B}lt timeout values I chose are too short for reliable operation at low baud rates. I've decided not to change the def C}aults, as you can easily change them in your KERMIT.INI file, and because most folks seem to have access to 1200 b D}ps modems and things these days. However, if you're running at 300 bps and seeing reliabil- ity problems, try pushi E}ng the timeouts up to say 15 sec or so. Other ramblings: Version 3.3 loads at $2D20, and uses up thru about $ F}B000. That means it'll only run on 48K machines. It appears to run fine on XL and XE equipment, but most of my te G}sting has been on an 800, so there may be some problems. BTW, that load address was chosen be- cause the latest v H}ersion of DOS XL for Indus GT's uses up thru $2D14 when it's configured for two drives, and the 850 driver is load I}ed. Older versions of DOS XL take up less memory, as does DOS. I don't know what the requirements are for things li J}ke Spar- tados. If anyone comes up with a conflict, let me know, and I'll assemble you a version that's org'ed some K}where else. On XLs and XEs, kermit-65 will require that the machine be booted with BASIC disabled, as it's not ye L}t bright enough to detect that that's where it is and map out the cart. (if anyone knows how to do that, and feels M} like saving me some work...) Kermit-65 is available in 'bare' form, or with an autoloader for the 850 driver p N}repended to it. The bare version requires that you load whatever rs232 driver you're going to use first, then run kermi O}t. The au- toloader equipped version does that for you. Kermit-65 Manual and bug list Page 11 P} For those of you who have YAU (posted separately) the byte count and checksum values for KERMIT.COM and KERMIT Q}NR.COM respectively are 24622, #x5F17; and 24408, #x1560. Kermit-65 Manual and bug list Pag R}e 12 Credits I blew it when distributing the first version of this document, and fo S}rgot to include this section. Mea culpa. Many thanks to my beta testers, in particular Marshall Abrams, for his pat T}ience in dealing with initial versions of this thing, and for aid in making this document clearer. Thanks also to John S U}angster for helping nail down my obscure terminal emulator bugs, and miscel- laneous kibutzing. (Sorry John, I sill ha V}ven't gotten in the key defining util. Maybe next version). Kermit-65 Manual and bug list Page W} 13 Bugs and misfeatures: There's no way to set the comm port to other than R1:. Does any X}- one care? The help processor doesn't deal properly with upper-case, and thinks there are no completions Y}. Vt100 mode is missing still missing insert/delete character. Blinking fields, bright fields, double-high, Z} double-wide, and 132-col mode are not supported. (Reverse vid and underline are) There's currently no way to set [} the screen colors. It's possible to confuse yourself by hitting c-1 in terminal mode, as my screen drivers ignore \} it, but Atari's doesn't. You're fine until you break the connection, then everything appears to wedge up. ]} Flow control for the incoming side of the connection isn't imple- mented. This can cause problems when trying to send ^}at high baud rates to a host that's got a stupid serial driver, or a small ty- peahead buffer. The part of _} the command parser that deals with pathnames is com- pletely bankrupt (that's what I get for using old code), and `} doesn't work properly unless it's told that a null pathname is le- gal. The result of all this is that when entering a} pathnames and asking for help before entering any data, it will tell you "input file spec or confirm with ". b} Pay no attention to the man be- hind the curtain; you really do have to put a pathname in there for anything to c}happen. Kermit-65 Manual and bug list Page 14 Bugs fixed for v 3.1 d} Save and Restore now actually do something, instead of being ef- fectively no-ops. Rename and Erase com e}mands are now implemented. This means that virtually all file operations one cares about (while up/download- ing) c f}an be done without leaving Kermit. File-warning mode has been fixed so that it really does something useful, inst g}ead of just bitching about the file conflict. The pathname parsing substrate has been installed, so that de- f h}aulting and merging can be done in a reasonable fashion, instead of by ad hoc kludgery. The screen hacking code i}has been cleaned up a good bit, so as not to be continually clearing the screen when doing transfers. Logging cod j}e has been added to tell the user what files are being sent and received. Status and help commands in terminal mod k}e are now working. The directory command now takes an optional filespec parameter. Bugs l} fixed for v 3.2 Binary mode now works again. (Sheesh!) Rename and Erase routines now make sure the comm port's m} closed be- fore attempting to hack the disk. The user interface has been cleaned up some; all numeric values n} other than character codes and some debugging info is now dis- played and entered in decimal, rather than hex. o} Bugs fixed for v 3.3 Fixed a dumb bug in terminal code that caused graphics mode to be p} entered at unexpected times. Kermit-65 Manual and bug list Page 15 Fixed file reading co q}de so as not to get confused and generate an extra byte when running under non-standard things like SpartaDos. Clea r}ned up Directory code; using new pathname-mapping substrate. Added support for wildcarded pathnames in Send code. s} Fixed packet-dumping debug code to not mask off top bit of char, and quote everything to keep from interpreting t}screen hacking chars. Fixed init code to look for an init file on D1, and read it if found. Fixed u}flow control code so as not to wedge up unexpectedly. Re-enabled the suspend-input capability, using the Atri (/|\ v}) key. Break (Option-B) in terminal mode has been fixed. Cleaned up the font used in 80-col mode. Re w}moved Speedscript file type, as Speedscript apparently just uses plain vanilla text files. Changed default file type to x}Atascii. Added caps lock functionality, similar to standard Atari kbd driver. Fixed a bug in terminal y} mode that was trashing the stack. Kermit-65 Manual and bug list Page 16 z} The Kermit Protocol The following a brief description of the Kermit file protocol, ex- cerpted from one of the {} many documents kicking around. If you al- ready know what it is, or don't care, skip this section. The Kermit |} protocol allows many (if not most) types of computer systems to effect, at minimum, error free file transfer with othe }}r systems and microcomputers over asynchronous lines. Introduction With the widespread use of personal co ~}mputers the need for file exchange between systems has become of foremost concern among users and managers al }ike. There are many commercial products available which meet this need, some of which may offer more ad- vanced } functions such as transparent record oriented file access. Networks that do this, such as DECnet, can be expensive, an }d if your computer or microcomputer is not on the network your needs won't be met. Transfer of files with remova }ble disks can work, but generally only when the computers are of the same type, it's not very useful when the sy }stems are removed in location. Rarely will a larger mini or supermini be able to read a microcomputer's disk. } A more realistic approach, from both cost and convenience, is to find a way to use ordinary telecommunications and/o }r in-house PBX systems to connect computers and microcomputers together. If a local connection using a PBX or fr }ont end switch is not available, there is always dialup access with standard 103/212 modems. Data can be transferre }d with very simple methods, such as TYPING a file on one system and capturing it on the other system, but this gives }no protection from noise and overrun of data. It is not very user friendly either. What is really needed is a protoc }ol to accom- plish file transfer reliably and efficiently. The first obvious use of any program or protocol desi }gned to ac- complish file transfer is to be able to provide the ability to support file uploads and downloads fr }om minis and superminis such as the VAX and PDP-11 to remote personal computers, such as the Atari 800. It shoul }d also be widely available for many different micros and mainframes. File transfer from micro to micro, as well as }from a larger central host, should be possible. The command interface should be easy to learn, and require no inte }rvention from a central site operator or other user. The many implementa- tions of Kermit follow these lines, and a }ll versions allow some form of transfer in either direction. More advanced versions, Kermit-65 Manual and bug l }ist Page 17 such as those found on the PDP-11, DEC10/20 and VAX, offer what is known as ser }ver operation, which allow the remote (connected) Ker- mit system to completely control the file exchanges from their } system. Since as of this writing (October 9, 1985) there are available over 160 versions of Kermit available f }or numerous mi- cro, mini and mainframe configurations, Kermit addresses this need quite well. While the p }rimary use of Kermit will likely be to support file transfer from microcomputer to mini/supermini and mainframe con- } nections, there are many uses for Kermit for connections from mini to mini and so on. The Kermit protool } The Kermit protocol is designed to operate over normal asynchro- nous terminal lines. All data and commands are trans }ferred with a packet oriented protocol, basically consisting of a start of packet character (normally SOH), fol }lowed by length, control, data and checksum fields. Communication is half duplex, in that for every packet sent, }the sender must wait for either an acknowledge- ment packet (ACK) or a negative acknowledgement packet (NAK). Tr }ansmission is in ascii, with no requirements for the transmis- sion of eight bit characters or control characters }other than control-A for marking the start of a packet. All 'control' char- acters imbedded in the data are prefixe }d to convert them to print- able characters, the same applying to eight bit characters if required by the charac }teristics of the line. Since there are many different implementations of Kermit, the protocol provides a me- chani }sm by which the capabilities of two connected Kermits can be negotiated to allow for differences in the level of protoco }l sup- port. Examples of protocol features that not all Kermits under- stand include data compression and transfe }r of file attributes. The packet format is +------+-----+-----+------+---------------+-------+ }| MARK | LEN | SEQ | TYPE | DATA... | CHECK | +------+-----+-----+------+---------------+-------+ wher }e all fields consist of ASCII characters, and the char func- tion converts a number in the range 0-94 (10) to a printab }le ASCII character by adding 32 (10). The MARK, LEN, SEQ and TYPE fields are one byte, the DATA field is variable }in size, and the CHECK field is one to three bytes in size. The MARK (normally control A) signifies the star }t of a packet. The length field tells how long the rest of the packet is. The SEQ field is used to insure synchro }nization used to detect lost or Kermit-65 Manual and bug list Page 18 duplicate packets. The } SEQ number wraps around every 64 packets due to the need to encode it as a printable ascii character in the range }32 (10) to 126 (10). The TYPE field specifies whether the packet is a DATA or CONTROL packet. The DATA section is us }ed for the actual transfer of data or informative messages from a Kermit server, this field can be up to 90 cha }racters in length. Any character whose low seven bits fall in the range of 0 to 37 (8), ie, char and 177 (8) is l }ess than 40 (8), will have the value 100 (8) exclusive or'ed (xor'ed) with itself and be prefixed by a shift cha }racter, '#'. Other shift characters may be use for eight bit characters if the line characteristics require such. D }ata compression may also occur in the data field, this is done with yet another shift code and byte count sequence }. The CHECK field is a checksum, either a one character, two character or three character CRC check; the sen }der computes it and the receiver must compute it and compare. A checksum mismatch will result in the receiver sen }ding a NAK packet (negative acknowledgment) which di- rects the sender to resend the NAK'ed packet. The packet may be } following by a terminator (likely an ascii 13). This terminator is NOT part of the protocol and is sent only to }tell the receiver that a 'line' is present. Not all Kermit implementations require this; all Kermits will disca }rd data outside of a packet in any event. Error detection and recovery is by checksum, as noted, and by p }acket read timeouts. If the packet should be corrupted the checksum will be incorrect, the receiver will NAK the }packet. If an expected packet never arrives within the timeout period, or if the received packet is not te expecte }d one (as determined by the SEQ field) the packet will also be NAK'ed. There are limits as to how many times an exp }ected packet will be NAK'ed without aborting the current operation. Packet types D Data Y Ac }knowledgement (ACK), test may be in DATA field N Negative Acknowledgement (NAK) S Send initiate (Send-Ini }t) R Receive Initiate B Break (EOT, end of transmission) F File name header Z End of }file (EOF, end of current file) E Error packet, text may be present in DATA field G Generic SERVER comman }d. The first character in the data field will be a command to a server, arguments may follow that ch }aracter. I Login, user and password follow in data field C CWD, change working or default directory. } Kermit-65 Manual and bug list Page 19 L Bye, Logout server F Finish, Exit } server, but do not log out E Erase, delete files on server system D Directory query U Di }sk space usage query T Type a file onto local kermit R Rename file(s) on server system K }Copy file(s) on server system W Who's logged in, as in sho sys, sy/s, dev tt M Send a terminal messag }e to a user H Help, the server responds with commands it can do Q Server status query P P }rogram, run a program J Journal V Variable, alter a Kermit setting C Execute host comm }and. The host command follows in the data field. Note that some of the generic server commands, as we }ll as the C packet, may not be feasible for a given environment. For in- stance, the REMOTE LOGIN command, wh }ich sends the generic I com- mand to the server, can only be done under systems that allow you to dial up and star }t a Kermit without logging in; the generic U command (disk space) is meaningless under some systems (like RSX) unle }ss one wants the free space on the entire volume. No Kermit server will abort on receiving a packet it can't execute, }it will simply send an error packet with an informative message saying it can't process the requested function. } An example of a Kermit-65 kermit telling a PRO Kermit-11 server to expect a file follows. The Kermit-65 command wa }s "Send foo.txt" (0)Atari sends: * S~# @-#Y( (0)Pro sends: 0 Y~* @-#Y1~* ~T (1)Atari } sends: *!FFOO.TXTE (1)Pro sends: #!Y? (2)Atari sends: S"DThis is a test file#M#J } containing two lines.#M#JU (2)Pro sends: #"Y@ (3)Atari sends: ##ZB (3)Pro }sends: ##YA (4)Atari sends: #$B+ (4)Pro sends: #$YB In packet zero, the Kermits exchanged } information regarding their capabilities. The Atari sent an 'S' packet with the data for its Kermit-65 Manual and bu }g list Page 20 maximum packet length, default time out, number of pad characters to follow}