NNNNNN1p NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNN;O`  @`! #@%`')+-/1 3@5`79;=?A C@E`GIKMOQ S@U`WY]_a c@e`gikmoq s@u`wy{} @` @ @ @ ` @ ` ǀ ɠ O ` ׀ ٠  @` @O`  @`! #@%`')+-/1 3@5`79;=?A C@E`GIKMOQ S@U`WY]_a c@e`gikmoq s@u`wy{} @` @ @ @ ` @ ` ǀ ɠ O ` ׀ ٠  @` @CODE170 F_INFUS2 AZFORMATII k~MORSE A82 LEES DIT.t H. .. CODE170 PRG!README DOCL7` W` Efv*oM'r m HPHUBg?<JNA(m)m -:gS)@ -OK1PC#HNHx?<HNA@)@l/?<HNA)@h&@)@XЬl)@d)@`ARCpr Ѝ"QHNFALNHz2?< NA\pdAxr0XQ)K\NN2^PhhN~ ,`NuJrBjNuHz?<&NN\NݎCAp$L Qp Nz9lrBlJpNNzpMNz9@pdAr 0Q0tr N9lNbNupealp`NuaNJHz?<&NNBWNANC2A@p222NrҌ0<NB0,rNurA9Ar`v C9Cr`rt9@9A9BNrrҌpsNB0,Nu9@N`rDҌpsNBNuC2 @ e @}bA@p222Nr,Ҍ0<NBNu pa4|a@:>< |a6RGk0Gg`a(0GVfA1G<ap??<?<NM\Nu??< NMXNu&8*:EENuHn 2$4BBNuAd RdQRB BbABJk 0NuJBjBBXNu 0Nu 2$NuE`B<gJEgEjCDEDF Fe( F dF8BCHC` F0bFHC8v` HD8HDkDуdQRBNuDdBDA@kgAр[SBk0NuJlJBk&Nu0g H@rB JkЀ[` BbNuJBj prtNuHPAJgPpr$< _Nup _NtNu&8*JEgJBgJjBEB:HC҅H@:|ۆ҄ۆ<HC>H@ЃdHA@B@H@хk HAҁHAрSB BbNuNpNNuCDEJEgJBgJjBEBQ*HE?<>0rHGGdHGGdSWDуdi\?<>0rHGGdHGGdSWDуdiN?<>0rHGGdHGGdSW2 H@N?<,>CEdGH@0r`?<`JBgVB&8TTDуdQRBNuDAр&AdRAрAрDуNuprt|=|  g +g -f .g20  b 0e 9b da`RF` .f 0e 9b dajSF` Eg efX +g -f 0e 9oSH`00  b&Hz0  b E Do`HJjDDDS4</NJFkSFk&aQN`Ha"FFaQL8N߲6.JgtBnNupr$<NuJBk4<rpAC v JBgJjv-| Bb BkH>aaNRFBdL8?N߲<JBga2SF Be BgQRB`ApdR e <rRF&0xafEv+0JFjDFv-Hƌd0BFHF 0HF0ANuprt|`2:HQ A dNAXJ@jNNuNJ@g,A,BBgHQ?<=NAP FJ@k??<>NAXtNutNuaHQ` @gS@@CNu   aH@@`"aH@@`a0) 4a3B HA2;i`0^ M / hawAnFNuAXr%eee%NuAMNuA.A&HP 0 0 &0&?< NN\Nu &(*NNBNJ@jD@vqapvNۺ)@p `H@)@prtNAHplrtNB 2pN۸pN۬papaprapalpalpalpaTpaTpaTBp'a?<NNT@B){L9|0<rtNpapap9@p`pvNۺv`v`vj`v `v`v`v`?Aa*` Al 2l 4)lVH)lRprtNAl 2l 4HVNuAl 2l 4L VA0000000000prtN9Cp rtNAv` Av `Avl 2l 4)lVHN*aBp0,l 2Nua40,HNua*p0,l 4Nuaprt0,l 22,l 44,NuN9||BlBlrҌpsNBNu?<NNT$g4<rЀ[Nu0<}N& ?<NNC`&?<NNT"@ C <}N`N(* 9AJA)H@@[000][ˈN Evz`* [g" ]g |g QSz` zQSpQ][ɈN Dvx`* [g" ]g |g QSx` xQSpQ]Bp4NzHNur|<N @xepw2A$JBjDFHB t`0QBl9F)lVTAtp 9| N, Nt aoRA6 /fHS@gDtaok:Y6 :fRS@g*t;a(k$AA :fRS@g t;akIA??<-NAXNurxS@k0  bS@jrNu .g( :g"0  b DBb BdeS@jJANuSR@JANu2(g"P@g2RADAH""l`r2oZAe 1@#)I`Nuk1@Nup NN~"l`dpNAtrdJhk\QpaNH ld$l`"Hg0 k&@ S`g k#&@0+S@H3 Q&f)I`LNu?<?<NAXJgJgNAH@B pNA NuApNN:$Nf$BS@kH2QNupC ұd"X0Pg"RA$D#Nu"X0NuNJ@gpNu _0HpN _0HpNp"_0HqNp"_0HqNE ұeHHQ0)N$_$ZR@H`2QNu$Y0gHR@@"D%$X0P2g# R@%NupE $ $X0dP.gRG,D%pr Y2dP.gRG,D!p4Ae4v`VfANuNWHNuNVHNuNSHNu(* 0(iNf$E 4R`Q$D 4R`QˈN DN ENua NuN IHPg"B  g &gNJBjt BNut`Rptr ae OgT Xgj HgSRB ae Fb$0k  c_  c b退`tSJBkNRB0 b b瀀`RB0 fрd`0H 0 0H@Nu?<,NATANpN"H2X@Nl:0H@?Nl:AANj2p <0Nf`QNupC 0(gFd"P$I` *Nf$E$R(S@jv A(Wf( ae zb Q DNuH&NBրNBjNuHpx$ ld$l`"Hg8" &Ak eѐ S`g"" k#&Aeё2+SAI3 Q&f)I`LNuHpx$&ր ld$l`"HgR" k&Ac b S` S`g4" k#&AcbrkX`ޑ2+SAI3 Q&f)I`LNu0Nq Y Qf*d ЀЀ 2$4BBNubHRp` HRpJQfpNrNq Y QfdЀЀ 0NuNbN\Nq Y Qfd ЀЀNuN\Nb$_& Y Qf,d,փփAdRdRBABJk 0NN`NZ$_& Y Qfdփփ!8NN`NZ$_& if"QdփփHRNNZN`~,Nq8DRzXEEg"7PNqR$HBJBgpNJgJigp`eetЂ`"ЀeЁdp`ЀeЀe"Ѕe$W.H@@/ l\N^ NJL"2` NqR YEjrd0` SjN$_N ЀЀ 2$4BBN$_N ЀЀ 0N YQf "_Nq*eN`NZ*< NqbІSGfN$_NrփփHRN$_Nrփփ!8N YQf "_&Nq*eN`NZ*<&NqbֆSGfNp"X4g S`"QNuNuNJPgBP, d eЀЀ``Ѐ"ЀЁE H FNL l ,"X2geb J"F\N,N`"QjNu" KC`e N~`d \N l\Ӭ\ NupNd d3 d# d# # d# # # # d# # # # # # # # dB` # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # QNudd2d"d""d""""d""""""""dB` """"""""""""""""""""""""""""""""QNu?k?<NM"UAf J@fH@NuDW?<NMXNuPj0,lf$J,nk l*fp?N~p N~9|nNA0,l2J,jk 0"fZRAR@ 0"g 0 f` 0 g 0,f9@lTll`BllA"H"g"A4`Q"AA 0! NuS@R@ 0 g 0,f9@lRll`R@ 0 fQj`Bll?<?<?<NM\NHQN&g ! ge l*g l*gpNNu<,*?Hj\F FfN`H FfN`RGFc8>`4A g6 g0 g` gTlfelhgFf2pRGRFa`a,` `?~ap ap a 0NuCpE`bf`FgRGJGgRSGSFFgCpE`Yf`Nua@Jf gH@ fa(@ fza0 b @ Ee0Nu?<?<NMXNur9A(HN~LNu0,^2,`NzEfpaRppaNAEg0PaľEfa4RE`p a2a*Efp a(NldeS@f lbfSl`9Ab9FdNupapqr`p`C l ", Ⲭ dfѬ SA 0! Nup"NNNJfNup#`<(`|HP?N<pg2JFg W"X2@e2<A`QNCpR@ 1 fA 0! "_Np`pNu)H9@Jp4NzP'J&f H LNu P&NuQ'` J,'fJ,&gHA#ȇeC! B,&LNu-W)K20, 8k8@ gJl&f"Nu , 8g"P 8 @/, 8N  8fQ 8J,'gNupB <``L@ H)l26)z @W , Jf`CfSHj-D@Hd0H@H 0H@0`fSC\fS , @a"C\fApNNNdHP?< NA\NuH@aa/a a Nu@0 9c^Nu| PC>$Error # ][Abort]\f.B &lX)K\)ld` lp ,BQjNup(NVtHB9BL@@TAt )l g.A( f hgSASAgRB`9BJNzSAgNu)l g,vARC( g9CJ9|Lp!,Nz FPeNuNA JpBQA/)H )l gBlJpNzB Aprt0 0BBB R@ @efA000 0PB0 *00 000\0X0 *0000 0P0BX0, *@00p1| 1|QBX0 $HTH0P &0 *0,NupNSk [0NupNuHPaH8 _&X Pf/|~ K!zag @ ep 24C"2 S@ػ Td BTA3A0C4$I2a222B"0@2A\xvaRg<2#M 4B3BS@ -f ػ Td>BAAb8RGRC`3RSG5GC5C J1DcaRF F e`RG GcdNuXASF1F41R 1h4 x1EDgVA)H)H 9|J?<NNTU@g,ACg dRhdRh(gpL8Nzp>L8Np*HEAJ0?C bL000H?A/.)HpNzLrHH/>Bl/,ff.f.ffNu l /.g&, ^`D&, N`>&, R`8&, V`2&, Z`,2,/4WAARA0,/6A hfRAS@f9A/,&, Jo ? CN0`@k Ap0(/.NuA Nup)@JphNzLtH &JKBCH .A/~0 1PP1P1PA L? &<@>AFG0000X0000X0000X0000C ~AJ0g0  pi, Nz"F QNu"l`Yd&-KNN~"l`YepN&#k"C-KN"Cփk փk2##`փk"`2`& $Y8gHRDD*D%H8#$c2g# HRDD%H`p"l`Qd&&| NuN~"l`QepZNpr`&AdRd QJBgRBBABJk"l` d&6&|0!NuN~"l` epZN"X0gBPHR@@"D#Nu?<NNT+@ -JgN.$HxNR*Please switch to|MEDIUM or HIGH|ResolutionHPNRSorry!r"_ N +@ -SgN. NdNd -SgN.pN۬pp@pWBg?<NN\pp@pW?<?<NN\pp@pW?<?<NN\+|+|+| B+|Hx]pC\~NDpA\N2+|+RBRNANAN&<x*<NPJBfN/+|N/4/-/-ANC\~Nb - f - 9f+|?BRNANAN&<x*<NPJBfN/+|N//-/-ANC\~Nb - f+|@RBRNANAN&<x*<NPJBfN0+|N0,/-/-ANC\~Nb - f - ]fp CNBBNR Desk CNHxN^ About Program 4CNHxN^-----------------------4CNHxp1NCNHxp2NCNHxp3NCNHxp4NCNHxp5NCNHxp6NCNHx A CNHx NR Selections CNHx N^ Tutor CNHx N^ Letters CNHx N^ Numbers CNHxNR Ltrs,Nmbrs CNHxNR Punct. CNHxN^ ALL CNHxN^ Sending 4CNHxN^ --------- CNHxNR Quit CNHxA CNHxN^ Options 4CNHxN^ Set Speed CNHxNR Set Tone CNHxN^ Display CNHxN^ Print CNHxN^ Spacing CNHxA CNHxNR AccessoryCNHxN^ Use yCNHxNR Return CNHxA CNHx A CNAN)|3 J+|pA텚Np"-NXN`NqNqN`NdpNJ+@N -SgN3AN - gN4A8NAøNA8N - gN40A 0A8N - gN4ZA 0A8N - gN4A @0A8N - gN4A 0A8N - gN4A 0A8N - gN4A>N - gN5VANzNJBfN5:ANHADegin,

ause, ontinue, uitNxNNxNCPNHmPA "_N@JBgAPNCPNHmPpBN"_N6JBfN>$N>PHmPpQN"_N6JBfN>JNBN>PN=pdNHAN&<x*<NBANBBB <Ѝ/p _ѐ -CbNpAN -SgN>NANNNlBRAN/ -C\~NUgN>+|A 0 -NANN``NqNq?<AN/ -C\~NN&<x*<NBN?p"- _NpNH - fTAN&<x*<NPJBfN?ANR -[gN@ -SgN?Np N~BRHx[ -C\~NUgN@+|N@A 0 -NANN``NqNq?<Hx[ -C\~NN&<x*<NBN?p"- _NpNH - fZRB - gN@Np NNlNxB?<?<NMXA@NA@N&<x*<NPJBfNA~pNAFNAFNNNChNHmhpPN"_N6JBfNA^NCPNAPNCPNHmPpCN"_N6JBgpdNHHmhpQN"_N6JBfNA~NB -NANNPJBg -UgNB|NBBBRN -CbNpNNlR -[gNARBNp N~ - gNBBNp NNlNx -NANNPJBgNNxNNxNNxHit any key to exit4NxNHPA "_N@JBg -UgNBANNzAbNAVNAVNN, AzN AvN ArN AnN AjN AfN AbN A^N -^9@A "-b @0A "-f @0A "-j @0A "-n @0A "-r @0A "-v @0A "-z @0pINN, AjN AfN AbN A^N AzN AvN ArN AnN -n9@A "-r @0A "-v @0A "-z @0A "-^ @0A "-b @0A "-f @0A "-j @0pJNN,LAAlN&<x*<N`ArNNJBfNM>ArN&<x*<N`ArNCrA< 0AQnNpN۸pNpNpNpN <"<NNNRFaster SlowerHPA"_NTNANN&<x*<N`AA H0A$ 0 A* p0A0 0 -UgNcA*N&<x*<N`A*NA0N&<x*<N`A0NANpN۸pNpNpNpNpNpNpNpNpNAN/A*N/Hx Hx AN/A*N/ANA$NN\N/A*NA0NN\N/ABNAN/A*N"NA$N/A0N"NDAN/A*N"NA$N/A0N"NpNpNAN&<x*<N`N/A*N&<x*<N`N"NN^- Select # of groups: 4NpNpNpNAN&<x*<N`N/A*N&<x*<N`N"NAN&<x*<N`N/A*N&<x*<N`N"ND <r$<A$NN\N/A*N&<x*<N`N"N <r$<A$NN\N/A*N&<x*<N`N"NDAN&<x*<N`N/A*N&<x*<N`N"NAN&<x*<N`N/A*N&<x*<N`N"ND <r$<A$NN\N/A*N&<x*<N`N"N <r$<A$NN\N/A*N&<x*<N`N"NDAN&<x*<N`N/ <r$<A0NN\N"NAN&<x*<N`N/ <r$<A0NN\N"ND <r$<A$NN\N/ <r$<A0NN\N"N <r$<A$NN\N/ <r$<A0NN\N"NDAN&<x*<N`N/ <r$<A0NN\N"N <r$<A$NN\N/ <r$<A0NN\N"NDpNpNpNAN&<x*<N`N/A*N&<x*<N`N"NAN&<x*<N`N/A*N&<x*<N`N"ND <r$<A$NN\N/A*N&<x*<N`N"N <r$<A$NN\N/A*N&<x*<N`N"NDAN&<x*<N`N/A*N&<x*<N`N"NAN&<x*<N`N/A*N&<x*<N`N"ND <r$<A$NN\N/A*N&<x*<N`N"N <r$<A$NN\N/A*N&<x*<N`N"NDAN&<x*<N`N/ <r$<A0NN\N"NAN&<x*<N`N/ <r$<A0NN\N"ND <r$<A$NN\N/ <r$<A0NN\N"N <r$<A$NN\N/ <r$<A0NN\N"NDAN&<x*<N`N/ <r$<A0NN\N"N <r$<A$NN\N/ <r$<A0NN\N"NDAN&<x*<N`N/A*N&<x*<N`N"NAN&<x*<N`N/A*N&<x*<N`N"NAN&<x*<N`N/A*N&<x*<N`N"NAN&<x*<N`N/A*N&<x*<N`N"N <r$<A$NN\N/A*N&<x*<N`N"N <r$<A$NN\N/A*N&<x*<N`N"N <r$<A$NN\N/A*N&<x*<N`N"N <r$<A$NN\N/A*N&<x*<N`N"NAN&<x*<N`N/A*N&<x*<N`N"NAN&<x*<N`N/A*N&<x*<N`N"NAN&<x*<N`N/A*N&<x*<N`N"NAN&<x*<N`N/A*N&<x*<N`N"N <r$<A$NN\N/A*N&<x*<N`N"N <r$<A$NN\N/A*N&<x*<N`N"N <r$<A$NN\N/A*N&<x*<N`N"N <r$<A$NN\N/A*N&<x*<N`N"NAN&<x*<N`N/ <r$<A0NN\N"NAN&<x*<N`N/ <r$<A0NN\N"NAN&<x*<N`N/ <r$<A0NN\N"NAN&<x*<N`N/ <r$<A0NN\N"N <r$<A$NN\N/ <r$<A0NN\N"N <r$<A$NN\N/ <r$<A0NN\N"N <r$<A$NN\N/ <r$<A0NN\N"N <r$<A$NN\N/ <r$<A0NN\N"NAN&<x*<N`N/ <r$<A0NN\N"N <r$<A$NN\N/ <r$<A0NN\N"NAN&<x*<N`N/ <r$<A0NN\N"N <r$<A$NN\N/ <r$<A0NN\N"NAN&<x*<N`N/ <r$<A0NN\N"NNROKNAN&<x*<N`N/A*N&<x*<N`N"NNR 10 N <r$<A$NN\N/A*N&<x*<N`N"NNR 20 NAN&<x*<N`N/ <r$<A0NN\N"NNR 40 N <r$<A$NN\N/ <r$<A0NN\N"NNR 60 NAN&<x*<N`N/ <r$<A0NN\N"NNR 80 N <r$<A$NN\N/ <r$<A0NN\N"NN^ 100 4NBm|BmBmBm$Bm*Bm0Bm6pNHN`ArNA>NC>NNNp rNNj You entered A>NlNj, correct? (Y/N)?<?<NNX\r @ NCDNADNCDNHmDpYN"_N6pJBgp/HmDpNN"_N6pJBgp$gHmDpYN"_N6JBfNžNHmDpNN"_N6JBfNNĊNNHm>NR.dat"_NTNLN"ALNALNzNPJBfNƒpONHPHm>NR.dat"_NTr"_NBm <r$<A큆NpNhA큆NCN.N`NxN``NqNqpNpINHPHm>NR.dat"_NTr"_NBm <r$<A큆NpNhNA).NxNNxNNj Hit any key when you're ready...Nx?<?<NNX\r @ NHPA "_N@JBgNpdNHBmBm+|2A큌N&<x*<NPJBfN+|BR -CN.ANA`N?<?<NNX\r @ NCDNADNCDNADNDNANNpJBgp/HmDA "_N@pJBgp/ADNDN&<x*<NpJBgp$fNpNHAڤNADNDNANNPpJBgp/ADNDN&<x*<NPpJBgp$gADND gNhA 0+m҅NpdNH -N&<x*<NpJBgp/A큌N&<x*<NpJBgp$fNAz 0 -N&<x*<NpJBgp/A큌N&<x*<NPpJBgp$fN2Az 0 -ΰfAN&<x*<NPJBfNlBmNNR.dat"_NTr"_NBm <r$<A큆NpNhA큆NCN.N`NxN``NqNqpNNNjExercise Score: AN\NxpdNHNNxA큼NzNpJBgp/A큌N&<x*<NpJBgp$fNՐp)CNBNNx'You did miss the following characters: 4NNxBmA큆 0 <r$<A큆NA큆N/pC~N&<x*<NPJBfNANBAN/A큆N/pC~NCNNA큆N/pC~NNNNlp N~N``lNqNNxNNj0Would you like to review these characters? (Y/N)NCDNADNCDNHmDpYN"_N6pJBgp/HmDpNN"_N6pJBgp$gHmDpYN"_N6JBfNՐAxNNAN&<x*<NJBfNNzNNxCA score of 80 percent or better is required before advancing to the4NxNNj next lesson.NxNNxHxNRPlease Select: HPN^ Repeat|Exitir"_ N ANBHxN^ Standard 4C>NHxN^ Extended C>NANBmN`ANNN`ANNA퀖 @0A퀨N&<x*<N`AHNNpJBgp/A퀨N&<x*<N`AHNNpJBgp$fNpN۸A퀢N/A퀨N&<x*<N`N"NA퀴NNNpN۸A퀢N/A퀨N&<x*<N`N"NpC>NNN`ANNA퀖 0ABN&<x*<NPpJBgp/A퀖NzNpJBgp$gHA퀖N&<x*<NPJBfN>Bm A퀖N&<x*<NPJBfNpA 0A>NANANAN/A*N/HxHxAN/A*N/ANA$NN\N/A*NA0NN\N/ACxNN,AN/A*N/Hx Hx AN/A*N/ANA$NN\N/A*NA0NN\N/ABNAN/A*N"NA$N/A0N"NDAN/A*N"NA$N/A0N"NAN&<x*<N`A퀢N <r$<A$NN\A퀜NA*N&<x*<N`A퀨NA퀨N&<x*<N`A퀮NA퀴 0pNpNpNAN/A*N"NA$N/A*N&<x*<N`N"NDpNpNpNAN/A*N"NAN&<x*<N`N/A*N&<x*<N`N"NDAN/A*N"NAN&<x*<N`N/A*N&<x*<N`N"NAN&<x*<N`N/A*N&<x*<N`N"NpNNAN&<x*<N`N/A*N&<x*<N`N"NA\NBm@ANNA퀐NANxprN <N,A큒NA큒N&<x*<NPJBfN?<?< p"- _NpNHN&?<Bg _NA큒N&<x*<NPgNL`zprNprNANANN, -SgNpNpNpNp Npd"<,NANNNNpNpNpNp N <"<,NANNNN,A H0A$ 0 A* 0A0 =0 -UgNA0N&<x*<N`A0NA*N&<x*<N`A*NA0NNHA*NL8N\A0NANp CPNBp CNBBpCPNHxpCPNHxpCPNHxpCPNHxpCPNHxpCPNHxpCPNHxpCPNHxpCPNHx pCPNHx pCPNHx pCPNHx pCPNHxN^# A complete Morse code Tutorial4CNHxNR and Utility packageCNHxNR CNHxNR$ Copyright 1988 by Steven P. ReedCNHxNR CNHxNR Written in GFA BasicCNHxNR Utilizing GFA CompanionCNHxN^! Compiled with GFA CompilerCNHx A CNHx A CNHx A CNHx A CNpNpNpNpNpNAN/A*N/Hx Hx AN/A*N/ANA$NN\N/A*NA0NN\N/ABNAN/A*N"NA$N/A0N"NDAN/A*N"NA$N/A0N"NpNpNAN&<x*<N`N/A*N&<x*<N`N"N <r$<A$NN\N/ <r$<A0NN\N"N -UgN pNpCPNpNpNp NA6 00N $pNpCPNpNpNpNA6 0 -UgN AN&<x*<N`N/A*N&<x*<N`N"NN^ MORSEMAGIC! V 1.74NN AN&<x*<N`N/A*N&<x*<N`N"NN^ MORSEMAGIC! V 1.74NA< 0 <r$<A.N@P(>$\Ğ&044"f4<$$ $$$$^$x$x$x$x$x$x袴,jV(r^(4rlr^(4rP(p<($V   p    4ZVj* jp`> pjj<,2,(Z~ .^Jegin,

ause, ontinue, uit. To begin the practice session, simply press "B" on the keyboard. "P" will halt the exercise until you press "C" (to continue). "Q" immediately stops the exercise and puts you back at the MAIN MENU. By now, you're probably wondering how to set the speed, tone, and other features that are common (and required!) in a Morse practice utility. Hang on, it's coming in a moment. Back to the SELECTION menu -- you will also see a selection called "Sending". Selecting this will permit you to use your ST as a practice oscillator! Simply use the fire button of your joystick or, most preferably, wire up a Morse hand key to the fire button pins. The last selection, "Quit", will exit you back to the desktop. OPTIONS MENU: Selecting the "Options" drop-down menu will give you the following selections: Set Speed Set Tone Display Print Spacing These options are extremely powerful and give you total control over the practice utility. NOTE: these options DO NOT have any effect on the Tutorial. The Tutorial is an entirely self-contained program. Set Speed: When you call up Set Speed, you are given a dialog box containing two buttons and a slider. Whenever this option is called, it presets to approximately 10 words-per-minute (WPM). To change the speed, point on the slider, hold the LEFT mouse button down and slide it left or right. Sliding it to the left INCREASES the speed, and to the right DECREASES the speed. Once you move it up or down some, you can find out the new speed in WPM by selecting the COMPUTE SPEED box. When selected, you will hear a series of tones that will last for 10 seconds. When this is finished, the program will calculate the speed and display it for you below the slider. You can repeat this action as many times as you like until you obtain the speed you desire. Notice that there is an indicator number just to the right of the slider. As a time-saver, you might want to note the number that correctly corresponds to your favorite speed, then just move the slider until that number is selected. You then will have no need to compute the speed. Once you've settled on a setting, select the ACCEPT box, and your speed will be installed. Set Tone: When called, this option gives you a small dialog box with three "buttons". The first, called "Lower", lowers the tone (which you will hear all the time this option is selected). The second, called "Raise", raises the tone in incremental steps. The third installs the tone value and exits you back to the Main menu. Display: This simple, yet powerful option permits you to either turn off the character display during a practice session entirely, allow character displays during a session (while they're being sent to you), or only afterwards. Print: This option controls the program's actions with your printer, if you have one. Normally, the program will default to the "OFF" selection, which means that none of the practice sessions will be printed out on your printer. Selection "Before" gives you a hard-copy printout of the practice groups before they are actually sent. "After" gives you an option to print after transmission of the characters. You can see that by combining the Display and Print options, you can have wide and powerful control over the action of the practice utility. For example, if you're a code instructor and only want a printout for your reference, you can turn the display "off", and select Print "Before". Other combinations will give you various effects for whatever your circumstance are. Spacing: Selecting this option gives you a small menu with two options: "Normal" and "Extended." Spacing, by the way, is the amount of time allotted between characters. "Normal" is the internationally-accepted standard, which is the program's default. If you select "Extended", the amount of time between characters will be lengthened. The effect of selecting "Extended" is tremendous -- it allows you to copy code at what SEEMS to be an slower speed, while IN EFFECT the characters are being sounded at a much faster speed. This option is particularly useful when you are trying to increase your code speed. By selecting extended and substantially increasing the speed, you'll learn to hear and copy Morse characters at a "faster" rate. Later, you can deselect Extended mode and you should note a dramatic improvement in your copying ability! ACCESSORY MENU: The Accessory menu has two selections: "Use", and "Return". When you select "Use", your accessories (if they were loaded in a boot-up) will now be selectable at the DESK menu. However, the rest of MorseMagic will NOT be selectable. When you are finished using your Accessory, just select "Return" under the Accessory menu and all will be restored. MorseMagic will now be useful, and your Accessories will be deselected. This procedure is necessary due to limitations of the programming language (GFA Basic). It should present no inconvenience. THE TUTORIAL: The Tutorial is the heart of MorseMagic. It is the reason this program was written! Before you enter the Tutorial, make sure you have a blank, formatted diskette in DRIVE A - REPEAT - DRIVE A. When you use the Tutorial in the future, be sure to use this same disk. It CAN be the same disk MorseMagic resides on, but just make sure there's room available. The reason for this is that the Tutorial creates a small data file (in your name) containing your scores and position in the course, and accesses it during program execution. Entering the Tutorial is simple -- just select "Tutor" under the SELECTION menu. MorseMagic' Tutorial teaches Morse code in 21 modules (or lessons, if you prefer). The order in which the characters are taught, the speed at which they are presented, and the unique visual/aural presentation make up the cornerstones of the program. For this reason, you will have virtually NO CONTROL over the characters themselves in the Tutorial. The program literally "takes over" and you only need to relax and learn! Once past the initial continue-or-quit menu (in case you inadvertently selected the Tutorial, you have an easy way out), you will be asked to enter your name. Just your first OR last name, please, and 8 characters is the limit. Your entry will be verified, then the tutorial will create a personal data file for you on the disk in DRIVE A to hold your exercise scores and position in the program. From then on, when you enter your name, the program will automatically locate your file, load your current position, and send you on your way. If you are using the tutorial for the first time, you will, of course, be automatically sent to Lesson 1. Each of the 21 lessons contain 2 new characters (either a letter, number, or punctuation mark). When the lesson starts, you are introduced to these new characters -- PLEASE -- watch and listen CAREFULLY!! It is very important that you use the tutorial when things around you are quiet and you will be undisturbed. You will see (and hear, of course) each character THREE TIMES. After this, you will be asked to wait for a moment while the program initializes a practice session. For lesson one, the practice session is 5 groups long (25 characters). After lesson one, all practice exercises are 10 groups (50 characters) in length. Except for lesson 1, which is entirely new characters, each practice exercise consists of the new characters, plus a random selection of previously-learned characters. The mixture is approximately 60 percent new characters, and 40 percent review characters. The program will tell you when the exercise is ready, and wait for you to "hit any key" to begin. After you hit any key, there will be a moment's delay, then the exercise will begin. You will see a character displayed on the screen AND hear its Morse equivalent. All you have to do is acknowledge this character by typing it in. When the exercise is about halfway finished, however, there will be a slight change. You will note that sometimes (about 50 percent of the time) the characters ARE NOT DISPLAYED, you only hear the sound. You respond in the same way -- just type the character in. If you're not sure what it is, take a guess anyway. If you're wrong, you'll hear a polite buzz (well, as polite as a buzz can be) and then the program will AGAIN give you the character, but this time WITH the display. Respond by typing it in, and continue with the exercise. The object of each exercise is to score 80 percent or better. If you do, your records will be updated and you can proceed to the next lesson (or quit, if you like). If you scored under 80 percent, you will have to take the lesson over again. After lesson 1, the Tutorial automatically keeps track of your errors, and will offer you a special review on just those characters at the end of the exercise. It is highly recommended that you take it! The review exercise is 25 characters (5 groups) long. You can exit the Tutorial exercises AT ANY TIME by just pressing ESC (Escape). However, your efforts on the current exercise will be lost, and you'll have to restart with the same exercise next time. Before concluding, one more thing should be said about the Tutor: You are NOT graded in ANY WAY on HOW FAST you respond in the exercises. Theoretically, you could wait forever before responding to each character. You are encouraged to RELAX, listen, and learn. Morse code is best learned as a "Second language", meaning that you should pay attention to what the character SOUNDS LIKE. Avoid, at almost all costs, using a "dot-dash" reference chart while using this program. It will just slow down your progress. CLOSING COMMENTS: MorseMagic is by no means finished. Future versions will have some nifty features, such as the capability to send and receive Morse code over a modem! Now, this may sound silly to you, but just think of how doing this with another MorseMagic user could help improve your speed and copying ability! Just install your Morse hand key (or use the Fire button of your joystick), and you can send and receive directly with another user, just as if you had your own radio station! Have any ideas, suggestions, or bugs to report? Please write me!! I want to know right away about your suggestions or problems so they can be acted on: Steve Reed American Embassy-THE HAGUE APO New York 09159 or, internationally: Steve Reed Kerkehout #7 2245XM Wassenaar THE NETHERLANDS Good luck! . BZ.. BFNT_USE C B[ FNT_USE PRGD^N$FNT_INFOC Fh4FNT_INFOPRGHp /F_INFUS2TXTJ|/* Demonstratieprogramma om GDOS font te laden en te gebruiken. Werkt alleen als GDOS met booten is geladen. Door: Ernst Blok Schoolstraat 40 3241CT Middelharnis Er zijn nogal wat library functies gebruikt, vooral bij opstarten zal elke C programmeur zijn eigen functie hebben. Bij problemen, stuur een bericht naar mij via STer BBS 01880-40035. */ #include #include main() { static WORD medpal[] = {0x777,0x700,0x234,0x000}; gem_init(); if(!Getrez()) { Kleuren(); Wit_op_zwart(); } if(Getrez()==1) Setpalette(medpal); prog(); Stop(); } /*****************/ prog() /* naam in verschillende functies */ { register WORD but,end=FALSE; if(!test_gdos()) { Show_mouse(); but=form_alert(1, "[2][ Dit prog. werkt alleen | als GDOS bij het booten | geladen is. | Public Domain door E.Blok][SSHIT..&*@<>?!!!]"); Hide_mouse(); return; } do { Show_mouse(); but=form_alert(2, "[2][ Loading FoNTs, | Using them | or dump them | and stop][Load|Use|Dump]"); Hide_mouse();cls; switch(but) { case 1: loadfnt(); break; case 2: usefnt(); break; case 3: vst_unload_fnt(handle,0); end=TRUE; break; } } while(!end); } #define MAXFNT 25 WORD fntID[MAXFNT]; BYTE fnt_name[MAXFNT][32]; loadfnt() { register WORD ii; printf("\n Vrij geheugen: %ldKb.\n\n",Malloc(-1L)/1024); while(vst_load_fnts(handle,0)); vq_extnd(handle,0,work_out); printf(" Aantal beschikbare karaktersets=%d\n\n\n",work_out[10]); for(ii=1;ii<=work_out[10];ii++) { fntID[ii]=vqt_name(handle,ii,fnt_name[ii]); printf(" ID=%2d, fnt_name[%d]=%s\n",fntID[ii],ii,fnt_name[ii]); } printf("\n Vrij geheugen: %ldKb.\n\n",Malloc(-1L)/1024); printf("\n\033p KEY \033q\n"); Cnecin(); } usefnt() { register BYTE inp$[5],promt$[80]; register WORD newfnt,ii,fntno,res; if((res=Getrez())!=2) res=1; cls; sprintf(promt$,"Welk font wil je gebruiken 1 t/m %d : ",work_out[10]); input$(promt$,inp$,2); fntno=atoi(inp$); newfnt=vst_font(handle,fntID[fntno]); NEWLINE; for(ii=4;ii<=32;ii++) { vst_height(handle,ii,&gl_wkar,&gl_hkar,&gl_wbox,&gl_hbox); cls; printf(" Fntno.: %d\tID = %3d\tname: %s\n Character size is %d\n", fntno,newfnt,fnt_name[fntno],ii); Text(6-ii/(8*res),0,"ABCDEFGHIJKLMNOPQRSTUVWXYZ.<>{}[]1234567890"); Text(7-ii/(8*res),0,"abcdefghijklmnopqrstuvwxyz.1234567890"); gotoxy(23,1); printf(" \033p KEY \033q Return = stop.\n"); if((BYTE)Cnecin()==0xD) break; } } `!R\N N ,*O*m - ЭЭм!"ҍ¼.A// Bg?<JNA m"m -So Q m -SBQ(m)M*mN lHhNtX/,?,N\?<N ?<A?<NAXNuNVNT?<NTJ@f N@NX?<NT @fHl?<N\N NN^NuNuNVHBFNJ@fNlHl?<N n\>N8`NPHlv?<N R\>NHl?< Nb\0`|g`NT`B`|g`NR`*`|g`Bg?,NdX<<``0g|LN^NuNV?/<`V0 AA/??,NP2A00 AA/?0A?HlN RG0lo/N^NuNVH?<NT8 @g8<HlP?< N\?,HlTHnN$ ?<HnHnN HnNX:0A??,NX>Hl|NX<<`HlHlHlHl??,NJHl~?< N,\?0 AA/??HlNvHlBg20<H0<A?NPHlBg20<H0<A?NP?<!?<7Hl HnN4 Hn?< N \HlNX?<N TH| f` RF F o"LN^NuNVN^NuNV?,NfTN^NuNV0,f?,NT9|N^NuNV0,g?<?,NXBlN^NuNV9l9l9lN^NuNVH>.<. :. 8.0=@0=@0=@Hn??,NnPLN^NuNVBgBg?<?<NPBg?<?<?<NP?<BgBg?<NzP?<BgBg?<NhPBg?<Bg?<NVPBg?<?<?<NBP?<?<?<?<N,P?<?<?<?< NP?<?<Bg?< NP?<?<Bg?< NP?<Bg?<?< NP?<Bg?<?< NPBg?<?<?<NPBg?<?<?<NPN^NuNVBgBgBgBgNP?<?<?<?<NrPN^NuNV?>.HlHlHlHl??,NL>N^NuNVH. . /. 0,H?0,H??,N LN^NuNVH>.<. :. 8.=G=F0E=@0D=@Hn?<?,N$PLN^NuNV?NHlHlHlHlN9@9lHlHlHlrN BG`&0AA/?<??,N RG GmN$N?,N4T?,?,BgBgN$P?<,N T9@>N^NuNVN?<NT?,NTNN^NuNV?NnBG` 0AA/??,NlPRG GmNBgN T>N^NuNVH&n >.BFBEBDHl?< N r\/.?< N d\?<N ZT<`| g`8<``|g`r0g.SE?<?<N X?< ?<N X?<?<NX`@` F m, F~n$0Gl02RE KH??<NX``0gT KBHl?< N\0`LN^NuNVH 0NX9@g0<`0<N^NuNV?.?<LNXN^NuNV/ AB&H`0+ |g/ N*X AB"Ҽm?.NT&_N^NuNV/ &n/ NDXJ@g0<`00+ |g /+NnXBk ?+ N,TJ@g0<`0<&_N^NuNVH&n0+ |f0<`.0+ |gV0+ |f0<`v0+ |g?<B?+ NP?/+?+ NnP @f0<`@k 0Hѫ`$ k o?<0+D@H/?+ N|P'@&Bk0<LN^NuNV/ &n Bk0+ |fk@ 0+ |@g0<` `R0+ |g ABAA &'@`*0+H/NX&'@ fk `k g0+ |g SR k `<0+ |g2k SR . H| g kl . H|`T/ N\XJ@g k@ 0<`<0+ |gBk. H|`"` 0+S@7@k . SRH|&_N^NuNV n Sh0( @m. n "R AH|`/. . H?N\N^NuNVH$.f BB`J". BnJlVnDJlRnDvd`Bbd nmDdD-@-A LN^NuNV/BnJlRnDJ lRnD 0. -@0.n0. nngD -n N^.JNuN^NuNV nl <`?.?./. ?<BN -@ m .`?<?.B?<BNv -@?<?.B?<BN\ -@ nf .Ю -@ `$ nf .Ю -@ `0.g <`b . oHn . /?.?<@N Bg?./. ?<BN ]|9@g <` `Bl . N^NuNV/.?<HN\N^NuNV/.?<IN\N^NuNVBn`&0.A0nf0.ABPRn nLmN^NuNV?>.=|0A"HPgXHf0(>N^Nu)I)J)_NN"l$l/,Nu)I)J)_NA"l$l/,NuNVH&n Bn0.|dg`>< `.`|ug`>< ``|og`><``|xg`>< l* ndf SR- .D-@`0. f Gf .`& Gf .` ./0H/NX 2.RnA0 Gf .`( Gf .` ./0H/N: X-@ .fp`FSn0.A P m0.A0| |A`0.A0|0 SR0.fLN^NuNVH&n n f=| )n@)nDHlHl@?<N]|@0. R@?HnHnHnN.g SR-.H|0f.f SR`J nff>.n RG0l@o0,@`0> Gl0<`0?HnHnHnNDBF`0RFA SRSGSn0g nl` SR0Sn nl0. g SR.` SR0RnSn 0. g nm`" Go0RFAH`0<0 SRSG0. Sn J@f`` SR0. g SR.><`0RGA SR0. Sn J@f SRE?.Hl/N: /NpXHѓLN^NuNVBn`"0. n PHC|0=@ nR n PH|0m n PH|9o0.N^NuNVH0&n -n @$PX`R` nRg H|%fH|%f,RBn=|Bn| H|-f=|RH|0f|0R-JHnN$X=@$nH|.fR-JHnNX=@$nH|lf=|RgH-n Gdg Gog Gxg GufB0.g @ ` @0H/Hn?.?NV 0.g0<`0<H` Gcf R @ nRT` Gsf4 @-PX<.` nR nRSF0g nf`J Geg Gfg Ggf, @)P@)hD/,D/,@Hn?.?NP` 0 nR .nl0.g$<.".A` nRSF0f`b .2.SAHЁ-@-@,.` .2SAHЁ @ nSSF0f` nR .o .R-@f nB .L N^NuNV/. HnNhP=@/.HnN8P0.N^NuNVHnHlVNPN^NuNVHn /.N&PN^NuNV`/. nRH?Nf\ nfN^NuNVH0&n$K`Rf `L N^NuNV n R @H=@` n R @H=@ n g n g n g0.N^NuNV=| nxg nXf n f0<`f n0m n9n0.|0=@`2 nam0.|a| =@` nAm0.|A| =@0.n o0<``0.N^NuNVBnBHnNX=@ n-f0<=@ nRH=@`0 ./0.H/N 6.HЃ-@ nRH=@?.?.NX=@ @f g n 0.g .D` .N^NuNV?< /</.N@ HN^Nu)I)JHl)_Hl" <sNB"l$lNuNV9n =|` n T 02.A0Rn nm9|Bl9|9nNN^NuNVBl9n 9| 9|Bl9nN^ n 0 n0 n0 n0N^NuNV9n 9|Bl9|9nN0,N^NuNV)n)n .мZ)@9|dBl9| n 9PN n 0A)HA)HA)HA)HN^NuNV9|eBlBl9nNN^NuNV9|BlBl9nNlN^NuNV9|wBlBl9nNL0,N^NuNV9|xBlBl9nN(N^NuNV)n 9n 9|9|9|9nNA)HN^NuNV9n 9|zBl9|9nNN^NuNV9|{BlBl9nNN^NuNVA)HA)H)n . мZ)@9n 9|fBl9|9nN\A)HA)HN^NuNV9n 9n 9|Bl9|9nN n0 n1l n1lN^NuNV9n 9|Bl9|9nNBn`0.A0 n Rn n m0,N^NuNV9n 9n Bn nR2.RnA|0f9|9|Sn0.9@9nNPN^NuNV`4 nH| f?< ?<NX nRH??<NX0. Sn J@fN^NuNV` nRH??<NTX0. Sn J@fN^NuNV` nRH??<N&X0. Sn J@fN^NuNVH0&n $KA-H nf?./ N4\=n`L nf?./ N`\=n`. nf?./ Np\=n`-KBn?.NJTJ@f`H| f |o@ H-@/./.?.?<@NP 9@Hg0<`0,n/./<?.?<@N 9@ @g0<`tRnR -@`R ned` 6.ƼЃ$@ H-@/./.?.?<@N 9@Hg0<`0,nBl0.L N^NuC2w2242Cr22222222222Cr22222222222Cr222222222229|9|CB"2"2 2"2"2"22"2"2"22"2x9|@Nu[2][ Dit prog. werkt alleen | als GDOS bij het booten | geladen is. | Public Domain door E.Blok][SSHIT..&*@<>?!!!][2][ Loading FoNTs, | Using them | or dump them | and stop][Load|Use|Dump]E Vrij geheugen: %ldKb. Aantal beschikbare karaktersets=%d ID=%2d, fnt_name[%d]=%s Vrij geheugen: %ldKb. p KEY q EWelk font wil je gebruiken 1 t/m %d : E Fntno.: %d ID = %3d name: %s Character size is %d ABCDEFGHIJKLMNOPQRSTUVWXYZ.<>{}[]1234567890abcdefghijklmnopqrstuvwxyz.1234567890Y%c%c p KEY q Return = stop. [3][ | Dit programma is | %02d uur, %02d min. en %02d sec.| in actie geweest.| ][STOPPEN|kijken|nog eens]efefCON:AUX:PRT:%d /* Programma om het ID nummer en/of naam van een GDOS font file te veranderen. Door: Ernst Blok Schoolstraat 40 3241Ct Middelharnis Public Domain. Er zijn nogal wat library functies gebruikt, vooral bij opstarten zal elke C programmeur zijn eigen functie hebben. Bij problemen, stuur een bericht naar mij via STer BBS 01880-40035. In deze versie 1.2 is t.o.v. 1.0 bijgekomen de mogelijkheid om een gesorteerde ascii-file met de namen van de fontfiles te maken. Deze is te gebruiken voor het aanmaken van een ASSYGN.SYS. */ #include #include main() { static WORD medpal[] = {0x777,0x700,0x234,0x000}; gem_init(); if(!Getrez()) { Kleuren(); Wit_op_zwart(); } if(Getrez()==1) Setpalette(medpal); prog(); Stop(); } /*****************/ prog() /* naam in verschillende functies */ { WORD end=FALSE,but; cls; do { Show_mouse(); but=form_alert(2, "[2][ Edit programma voor| ID nummers en namen| van GemDOS fonts.| Door Ernst Blok (PD!) V.1.2 ][LIJST|VERANDEREN|STOPPEN]"); Hide_mouse();cls; switch(but) { case 2: fntedit(); break; case 1: fntlist(); break; case 3: end=TRUE; break; } } while(!end); } fntedit() { if(fntinfo()) if(change()) save_change(); } typedef struct fontidname { WORD face_id; /* 0 Font face identifier 1 == system font */ WORD size; /* 2 Font size in points */ char name[32]; /* 4 Face name */ } FNTIDNAME; FNTIDNAME fnt_id; BYTE filename[64]="", path[64]=""; fntinfo() { register BYTE fpath[64],*backslash; register WORD ii=0; WORD button,file_id; if(!path[0]) { strcpy(path,"C:\\*.FNT"); path[0]=Dgetdrv()+'A'; } /*printf("\033Efilename=%s\n",filename);Cnecin();cls;*/ Show_mouse(); fsel_input(path,filename,&button); strcpy(fpath,path); backslash=rindex(fpath,'\\'); *(backslash+1)=0; strcat(fpath,filename); if(button) { if((file_id=Fopen(fpath,0))>=0) { if(Fread(file_id,36L,&fnt_id)<0) form_alert(1,"[3][ | Reading error!! ][Urgh]"); Fclose(file_id); } else { form_alert(1,"[3][ | Cannot open file!! ][Urgh]"); Hide_mouse(); return(FALSE); } } else { cls; return(FALSE); } Hide_mouse(); cls; /*printf("path=%s\n,filename=%s\n\n",path,filename);*/ /* CONTROLE */ if(!(fnt_id.face_id>>8)) { form_alert(1,"[3][ | File is geen GDOS fnt file!!][OK]"); return(FALSE); } do { if(!isprint(fnt_id.name[ii])) { form_alert(1,"[3][ |File is geen GDOS font file!!][OK]"); return(FALSE); } } while(fnt_id.name[++ii]); printf("\n\n"); printf("\t%s:\t ID = %d,\t Naam = %s.\n\n", filename,fnt_id.face_id>>8, fnt_id.name); return(TRUE); } change() { BYTE c,inp$[64]; WORD ander=FALSE; input$("\tNieuwe ID (RETURN = geen verandering) : \033p ",inp$,3); printf(" \033q\n"); if(*inp$) { fnt_id.face_id=atoi(inp$); fnt_id.face_id <<= 8; /*printf("\n\t\tfnt_id.face_id>>8 = %d\n",fnt_id.face_id>>8);*/ ander=TRUE; } input$("\tNieuwe naam ( '' = '' '' ) : \033p ",inp$,32); printf(" \033q\n"); if(*inp$) { strcpy(fnt_id.name,inp$); /*printf("\n\t\t%s\n", fnt_id.name);*/ ander=TRUE; } return(ander); } save_change() { register WORD file_id,button; register BYTE *backslash,fpath[64],c; Show_mouse(); button=form_alert(1,"[3][ | Veranderingen wegschrijven??][JA|NEE]"); Hide_mouse(); if(button==2) return; strcpy(fpath,path); backslash=rindex(fpath,'\\'); *(backslash+1)=0; strcat(fpath,filename); if((file_id=Fopen(fpath,0))>=0) { if(Fwrite(file_id,36L,&fnt_id)<0) form_alert(1,"[3][ | Write error!! ][Urgh]"); Fclose(file_id); } else form_alert(1,"[3][ | Cannot open file!! ][Urgh]"); } #define MAXFNT 100 WORD printer=FALSE; #define NAMELENGHT 13 fntlist() { register BYTE fnames[MAXFNT][NAMELENGHT], prnt$[80], c; register WORD ii,numfnt; WORD button=0; if(!path[0]) { strcpy(path,"C:\\*.FNT"); path[0]=Dgetdrv()+'A'; } Show_mouse(); fsel_input(path,fnames[0],&button); Hide_mouse();cls; if(!button) return; if( !(numfnt=dir(fnames,MAXFNT)) ) return; qsort$(fnames,0,numfnt,8); Show_mouse(); button=form_alert(2, "[2][Namen FNT-files | wegschrijven als| | 'FN_NAMES.ASC' ?][ja?|NEEN]"); Hide_mouse(); if(button==1) saveASCfnt(fnames); Show_mouse(); button=form_alert(1,"[2][ | Uitvoer naar ][ SCHERM | PRINTER ]"); Hide_mouse(); if(button==2) { printer=TRUE; Printertest(); Lprint("** Lijst van GDOS FNT files met ID en naam. **\n\n"); sprintf(prnt$,"Path: %s\n\n",path); Lprint(prnt$); sprintf(prnt$," File, ID, Naam.\n\n"); Lprint(prnt$); } printf("\033E File, ID, Naam.\n\n"); while(*fnames[ii]) { info_out(fnames[ii++]); if(!(ii%21)) { printf("\033p More? \033q Return=stop\n"); if((BYTE)Cnecin()==0xD && !printer) break; printf("\033E File, ID, Naam.\n\n"); } } if(printer) { sprintf(prnt$,"\n\t%d fontfiles.\014",ii); /*+formfeed*/ Lprint(prnt$); } printf(" %d fontfiles\n\033p Nomore! \033q\n",ii); printer=FALSE; Cnecin();cls; } info_out(finames) register BYTE finames[]; { BYTE fpath[64],*backslash,fntinfo$[255]; WORD file_id; strcpy(fpath,path); backslash=rindex(fpath,'\\'); *(backslash+1)=0; strcat(fpath,finames); if((file_id=Fopen(fpath,0))>=0) { if(Fread(file_id,36L,&fnt_id)<0) form_alert(1,"[3][ | Reading error!! ][Urgh]"); Fclose(file_id); } else { form_alert(1,"[3][ | Cannot open file!! ][Urgh]"); Hide_mouse(); return(FALSE); } sprintf(fntinfo$, " %13s, %3d, %s\n", finames,fnt_id.face_id>>8,fnt_id.name); if(printer) Lprint(fntinfo$); printf(" %s",fntinfo$); } typedef struct f_attr { BYTE f_syst[21]; BYTE f_attr; UWORD f_time; UWORD f_date; LONG f_size; BYTE f_name[13]; } DTA; dir(finames,maxnum) register BYTE finames[][NAMELENGHT]; register WORD maxnum; { DTA dtabuf; LONG savedta; register WORD ii=0,button; savedta=Fgetdta(); Fsetdta(&dtabuf); if(Fsfirst(path,0)) { Show_mouse(); form_alert(1,"[3][ |No *.FNT files found!][ Huh? ]"); Hide_mouse(); return(FALSE); } do { strcpy(finames[ii++],dtabuf.f_name); } while(!Fsnext() && ii=maxnum-1) form_alert(1, "[3][ There are more then | | 100 FNT-files.][Tooo much]"); *finames[ii]=0; Fsetdta((BYTE*)savedta); return(ii-1); } saveASCfnt(finames) register BYTE finames[][NAMELENGHT]; { register WORD file_id,ii=0; register BYTE *backslash,fpath[64],Ret[4]; strcpy(fpath,path); backslash=rindex(fpath,'\\'); *(backslash+1)=0; strcat(fpath,"FN_NAMES.ASC"); Ret[0]=0xD, Ret[1]=0xA, /* return + linefeed */ Ret[3]=0x0; if((file_id=Fcreate(fpath,0))>=0) { while(*finames[ii]) { if(Fwrite(file_id,12L,finames[ii++])<=0L) { form_alert(1,"[3][ | Write error!!!| (finames)][Urgh]"); break; } if(Fwrite(file_id,2L,Ret)<=0L) { form_alert(1,"[3][ | Write error!!!| (Ret)][Urgh]"); break; } } Fclose(file_id); } else form_alert(1,"[3][ | Cannot creat file!! ][Urgh]"); } qsort$(fnames,start,end,depth) register BYTE fnames[][NAMELENGHT]; WORD start,end,depth; { register BYTE temp[NAMELENGHT],mid[NAMELENGHT]; register WORD lo=start,hi=end; strcpy(mid,fnames[(lo+hi)/2]); gotoxy(1,1); printf("SORTING\n"); do { while(strncmp(fnames[lo],mid,depth)<0) lo++; while(strncmp(fnames[hi],mid,depth)>0) hi--; /* gotoxy(2,1); printf("lo=%d, hi=%d\n",lo,hi); */ if(lo>hi) break; strcpy(temp,fnames[lo]); strcpy(fnames[lo],fnames[hi]); strcpy(fnames[hi],temp); } while(++lo<=--hi); if(startNX`Hl?<Nb\N 0<``Hl?< N\0<`N lHl?< Nx\0,@fHl?<N\0<`AH| mAH|~n 0<`0<fHl?<N\0<`@RG0AfHl:N^XHl0,@?HlHl>ND0<`>N^NuNVBn?<HnHl\N  HlNXA Hg HnNX9@0,@9@=|?< HnHlN HlNXA HgHnHlNP=|0.`N^NuNVHN*Hl?<N\<N Ff`HlJHnN>P?<\HnNr\&@ R @BHlHnNPBgHn?<=NP> @mBHl/<$??<@N lHl?<N8\??<>NzX`Hl?<N\LN^NuNVHBn,Jf"Hl6HlJNP?<N4T|A@JN.HnHnHlJN NHl@?< N\0.f`?<dHnN\<f`~?<?BgHnNt NHlD?<N j\=@N nf HnNXNHl?<N <\=@Nh nfL9|HNHlNXHlJHlHnN HnNpXHlHnNPHnNXXHlNX`^0RG AA/NX0HH@J@f6HlBNXX?<NTH| f0,Hf`"Hl\N.X0 AA Hf0,Hg?HlHnN HnNX?HlN\BlH?<NpTHl?< Nb\LN^NuNVHlJHnNP?<\HnN\-@ .R @B/.HnNPBgHn?<=NP=@ @mFHl/<$?.?<?N lHl?<N \?.?<>NX`Hl?<N b\N0<`BHl0,@?/.HlHnN0,Hg HnNXHnHlNPN^NuNVH>. BF?</NHT-@Hn?<N6\BgHlJ?<NN&PJg N"Hl?<N \N0<`zHn0RF nA/N.P?<ONTJf 0Gm02SAAmHl>?<N f\0 nA HB ./?<N\0S@`LN^NuNVHBFHlJHnNP?<\HnN\&@ R @BHl~HnNP< @< @<@BgHn?< @m`x0RF nA//< ??<@N nHl?<N \`LHn/<??<@N nHl?<N N\`0 nA Hfv??<>NvX`Hl?<N \LN^NuNVH>. <.0FH nA/HnNrP?<!?<!HlHnN Hn?< N\HlNdX`RG?.Hn0 nA/N @m`SF?.Hn0 nA/N @n0Fo`j0 nA/HnNP0 nA/0 nA/NPHn0 nA/NPRG0SF2Ao20. Fl?.??. /.N 0nl?.?.?/.N LN^NuNVN^NuNVH lFf8/.NXH.BF` nH??<N XRF0HmLN^NuNV??<N zTJf>NvHlL?<N\>NB0`|g`9|F```BlF>N^NuNV?,2NTN^NuNV0,Df?,2NBT9|DN^NuNV0,Dg?<?,2NXBlDN^NuNV9lB9l@9l>N^NuNVH>.<. :. 8.0=@0=@0=@Hn??,2NPLN^NuNVBgBg?<?<NPBg?<?<?<NP?<BgBg?<NzP?<BgBg?<NhPBg?<Bg?<NVPBg?<?<?<NBP?<?<?<?<N,P?<?<?<?< NP?<?<Bg?< NP?<?<Bg?< NP?<Bg?<?< NP?<Bg?<?< NPBg?<?<?<NPBg?<?<?<NPN^NuNVBgBgBgBgNP?<?<?<?<NrPN^NuNV?>.Hl6Hl8HlN^NuNVH>.<. :. 8.=G=F0E=@0D=@Hn?<?,2NPLN^NuNV?NHl6Hl8HlN^NuNVN?<NT?,2NTNN^NuNV?NBG` 0A2A/??,2NNPRG GmNBgN&T>N^NuNVH&n >.BFBEBDHl ?< N x\/.?< N j\?<N `T<`| g`8<``|g`r0g.SE?<?<N X?< ?<N X?<?<N X`@` F m, F~n$0Gl02RE KH??<NX``0gT KBHl?< N\0`LN^Nu)Ij)Jf"/0<NB"lj$lfNu NV9n$0.| A" AA-H=|` nR2.A$H0Rn nm/,N.X0,N^NuNVA$)HA)HA)HA)HA)HA)HA)H?< NXT9l0,N^NuNV?<NNX9@g0<`0<N^NuNV?.?<LNXN^NuNV/ A&H`0+ |g/ N*X A"Ҽm?.NT&_N^NuNV/ &n/ NDXJ@g0<`00+ |g /+NnXBk ?+ N,TJ@g0<`0<&_N^NuNVH&n0+ |f0<`.0+ |gV0+ |f0<`v0+ |g?<B?+ NP?/+?+ NP @f0<`@k 0Hѫ`$ k o?<0+D@H/?+ N|P'@&Bk0<LN^NuNV/ &n Bk0+ |fk@ 0+ |@g0<` `R0+ |g A쐈AA &'@`*0+H/NX&'@ fk `k g0+ |g SR k `<0+ |g2k SR . H| g kl . H|`T/ N\XJ@g k@ 0<`<0+ |gBk. H|`"` 0+S@7@k . SRH|&_N^NuNV n Sh0( @m. n "R AH|`/. . H?N\N^NuNVH$.f BB`J". BnJlVnDJlRnDvd`Bbd nmDdD-@-A LN^NuNV/BnJlRnDJ lRnD 0. -@0.n0. nngD -n N^.JNuN^NuNV nl <`?.?./. ?<BN -@ m .`?<?.B?<BNv -@?<?.B?<BN\ -@ nf .Ю -@ `$ nf .Ю -@ `0.g <`b . oHn . /?.?<@N Bg?./. ?<BN ]|9@g <` `Bl . N^NuNV/.?<HN\N^NuNV/.?<IN\N^NuNVBn`&0.An0nf0.AnBPRn nLmN^NuNV?>.=|0An"HPgXHf0(>N^Nu)Ij)Jf)_bNN"lj$lf/,bNu)Ij)Jf)_bNA"lj$lf/,bNuNVH&n Bn0.|dg`>< `.`|ug`>< ``|og`><``|xg`>< l* ndf SR- .D-@`0. f Gf .`& Gf .` ./0H/NX 2.RnA0 Gf .`( Gf .` ./0H/N: X-@ .fp`FSn0.A P m0.A0| |A`0.A0|0 SR0.fLN^NuNVH&n n f=| )n x)n |Hl,Hl x?<Nj]|@0. R@?HnHnHnNH.g SR-.H|0f.f SR`J nff>.n RG0l xo0, x`0> Gl0<`0?HnHnHnNBF`0RFA SRSGSn0g nl` SR0Sn nl0. g SR.` SR0RnSn 0. g nm`" Go0RFAH`0<0 SRSG0. Sn J@f`` SR0. g SR.><`0RGA SR0. Sn J@f SRE?.Hl4/N: /NXHѓLN^NuNVBn`"0. n PHC|0=@ nR n PH|0m n PH|9o0.N^NuNVH0&n -n @$PX`R` nRg H|%fH|%f,RBn=|Bn| H|-f=|RH|0f|0R-JHnN$X=@$nH|.fR-JHnNX=@$nH|lf=|RgH-n Gdg Gog Gxg GufB0.g @ ` @0H/Hn?.?NV 0.g0<`0<H` Gcf R @ nRT` Gsf4 @-PX<.` nR nRSF0g nf`J Geg Gfg Ggf, @)P x)h |/, |/, xHn?.?NP` 0 nR .nl0.g$<.".A` nRSF0f`b .2.SAHЁ-@-@,.` .2SAHЁ @ nSSF0f` nR .o .R-@f nB .L N^NuNV/. HnNhP=@/.HnN8P0.N^NuNVHnHlNPN^NuNVHn /.N&PN^NuNV`/. nRH?Nf\ nfN^NuNVH0&n$n -K`fS`f .`L N^NuNVH0&n$n >.`RRSG0ggHHAgHHC`L N^NuNV n "n fN^NuNVH0&n$K`Rf `L N^NuNVH0&n>. $|`HGf$KRf `L N^NuNV n R @H=@` n R @H=@ n g n g n g0.N^NuNV=| nxg nXf n f0<`f n0m n9n0.|0=@`2 nam0.|a| =@` nAm0.|A| =@0.n o0<``0.N^NuNVBnBHnNX=@ n-f0<=@ nRH=@`0 ./0.H/N 6.HЃ-@ nRH=@?.?.NX=@ @f g n 0.g .D` .N^NuNV?< /</.N@ HN^Nu)Ij)JfHl)_NHlN" <sNB"lj$lfNuNV9n =|` n T 02.A0Rn nm9|Bl9|9nNN^NuNVBl9n 9| 9|Bl9nN^ n 0 n0 n0 n0N^NuNV)nR)nZ .мZ)@^9|dBl9| n 9PN n 0A)HRA)HZA)H^A)HVN^NuNV9|eBlBl9nNN^NuNV9|BlBl9nNN^NuNV)n V9n 9|9|9|9nNhA)HVN^NuNV9n 9|zBl9|9nN8N^NuNV9|{BlBl9nNN^NuNV9n 9n 9|Bl9|9nN n0 n1l n1lN^NuNV`4 nH| f?< ?<N>> In versie 1.2 controleert het prg zelf of GDOS aanwezig is. (Dank zij GEMPATCH.H van Markus The) Succes. Ernst Blok Schoolstraat 40 3241CT middelharnis Voor op- en/of aan-merkingen; stuur mij een bericht via STer BBS. tel.:01880-40035 . l~.. lF11GEM ACCm-F11GEM PRGo*F11V3 DOCqP FORMAT11RSCsJ`,.#<N N+K mNf]` m"m -So Q m -SBQ(m)MO*mNN?<N%H?<A?<NAX <B@SfLNuNV)J?</<al<><a`.<9gSfa.<Nu<0g<a@a`<DNuQNu9|a$fRBi<BGa<><a<<af.3|9|<>,a,<af 3l<NuAHxM9@9@1>)o9o9o9oC JlgC .<>,OO l)HJij&aBiabg.< aDfaTg 3|LxNu <`B/<>)a<<a< LxrBx>Nu>,9|<a<<`BFaf <fBiNu0)<.<<af.<aSg9faBFNua,<Nu<><a><QaNu1 0,Rl a2<>)aNB,<>,a@   Nu@|9FNua3`a3`a09@?>< Q>FNua>9`"<f"<f"<g2<9ANu N^NuNVNHl?,N\9@ ll0<`HlHlHlHlN@9@HlNXJ@fHl?<N\/<@?<HN#\)@`jHlHlHlHlHlHlBgBgHlBgBgBgBgBgBgBgBgBgBg?<?<?<?<N|<9@0,|g0,ܰ|(g`0,lfHl@HlHlN" ?,N#THlBgBgNPHlHlHlHl/,NBgBgBgBg?,?,?,?,BgN?<N!T9@ lf?<w?<?<N!\9@`?<?<?<N!\9@?,?,?,?,?<Bg/,NLBBgN\Bl`ABRl ln|||!|||||`|| |"|||||Bl`ABABRl ln||4||I|B|M| | |3|.|3|||||p||||| |||||3||||||||||x |6 | |7 ||V||S||+|||| |||&||=|t||& |!|"|#|$|%|&|'|(|)|*|G+|,|-|.|+/||0|1|2|3|r4|g5|6|7||8|9|:|&;|<||=|>|?|@||A|B|C|D||E|F|?G||H|I|7J||K|L| M|O|&P|Q||R|S|T| U||V|W|X|HY|Z|[|\|]|7^||_|`|b|c|?d||e|f|g|i|j|k|l|m|ro|p|q|r|s| t|v|w|}x|y|z|u{| ||}|~| |||}|| |||t|||w|}||j|2||||^|||||D||||||}||||||3|||6| ||||||<||||7||||=||||||7||||I|||||*||;|||@|8||<|||s|||<|||P||N|X|r||(||<|||t| |||7||||&| ||||||||.|||||||}|||=||||p|| ||t|"|||||||||3| | |6 | || |||||;|||3|||6||||||*||||9|| |!|"|#|$|%|9&||'|(|)|*|+| ,|6-|;.||/|0|1|2|3|4|5|6|}7|8|69|*:||;|<|=|>| ?| @|NA|oB|nC|-D|SE|yF|sG|tH|eI|mJ| K|dL|iM|sN|kO| P|oQ|rR| S|dT|iU|sV|kW| X|eY|rZ|r[|o\|r]| ^| _|R`|ea|pb|lc|ad|ce|ef| g|ah|ni|dj| k|sl|tm|rn|io|kp|eq| r|as|nt|yu| v|kw|ex|yy| z|w{|h||e}|n~| |r|e|a|d|y| | | | |D|i|s|k| |B|o|o|t| |f|a|i|l|u|r|e| | |I|B|M|B|I|O| | |C|O|M|I|B|M|D|O|S| | |C|O|M|U||||NBlBl|P l1| l1| l1| l1|b lBhR lBh lBhZ lBhr?<Bg?<?<?, ?,Bg?</,N?<Bg?<?<@?,?,Bg?< /,N?<Bg?<?< ?,?,Bg?< /,N?<Bg?<?< ?,?,Bg?< /,N?<Bg?<?< ?,?,Bg?</,Nr?<Bg?<?< ?,?, Bg?</,NJ?<Bg?<?< ?, ?,"Bg?</,N"?<?< ?,?,?<?< /,N?<?<@?,?,?<?</,Nl?<?<?,?,?<?</,NH?<?<8?,?,?<?<#/,N$?<?< ?,$?,&?<?</,N?<?<@?,?,?<?</,N?,?,?,?,?<?</,N?,?,?,?,?<?</,NBg/,N<\9@N lf?,?,?,?,BB?<N, lf?,?<?<N\`?,?<?<N|\0<fN^NuNuNV ,)@HlHl?</,N4Hl Hl?</,NHl$Hl&?</,NHlHl?</,N HlHl ?</,N Hl Hl"?</,N HlHl?<#/,N HlHl?</,N HlHl?< /,N tHlHl?< /,N \HlHl?< /,N DHlHl?< /,N ,HlHl?</,N HlHl?</,N HlHl?</,N N^NuNV l hf@ lf8Bl ,)@ lBh?<?<?, ?,?<?</,N T l hfB lf:9| ,)@ lBh?<?<?,?,?<?</,N  l hbf lf|P ,)@ lBh lBh lBhJ?<?< ?, ?,"?<?</,N ?<?< ?,?,?<?</,N ?<?< ?,?, ?<?</,N \ l hf lf|Q ,)@ lBhb lBh lBhJ?<?< ?, ?,"?<?</,N ?<?< ?,$?,&?<?</,N ?<?< ?,?, ?<?</,N  l hf lf|R ,)@ lBhb lBh lBhJ?<?< ?, ?,"?<?</,N P?<?< ?,$?,&?<?</,N ,?<?< ?,?,?<?</,N  l hJf lf|S ,)@ lBhb lBh lBh?<?< ?,$?,&?<?</,N ?<?< ?,?,?<?</,N ?<?< ?,?, ?<?</,N ^ l hfL lfDBl|| ,)@ lBh?<?<@?,?,?<?< /,N  l hfN l fF9||| ,)@ lBh?<?<@?,?,?<?</,N l hBf lfb,H|Pf |p|,H|Qf |{|,H|Rf ||,H|Sf ||``,H|Pf ||,H|Qf ||,H|Rf | |,H|Sf |"|9| 9|9|9|9|9|9|| l h*f lfb,H|Pf | |,H|Qf |*|,H|Rf |4|,H|Sf |>|``,H|Pf |@|,H|Qf |T|,H|Rf |h|,H|Sf |||9| 9|9|;9| 9| 9|'9|x| l hf lfb,H|Pf ||,H|Qf ||,H|Rf ||,H|Sf ||``,H|Pf ||,H|Qf ||,H|Rf ||,H|Sf ||9| 9|9|;9| 9| 9|'9|x| l hrfxB?<N$\Hz?<&N \?<BgBg?<?,BHl?< N  l hRflllll?<BgBg?<?,BHl?< N P?<BgBg?<?,BHl?< N .?<BgBg?<?,BHl?< N  l hfN ,)@ lBhr lBh lBhR?,?,?,?,?<?</,Nd?<?<@?,?,?<?</,N@?<?<8?,?,?<?<#/,NB?<N\N^NuNV lf\Bn`D?,Bg?.?<?,B/,?<N *=@ ngHlB?<N\`Rn0.,HAm`Bn`?,Bg?.?<?,B/,?<N=@ ngHld?<Nx\`V?,?<?.?<?,B/,?<N=@ ngHl?<N6\`Rn0.,HAmlN^Nu)I)J"/0<NB"l$lNu NV9n0.| A" AA-H=|` nR2.AH0Rn nm/,N.X0,HN^NuNVA)HAz)H AX)H$AH)H(A<)H,A4)H0A)H?< NXT9lH0,N^NuNV9nX9n Z9n \9n^9n`9nb9nd9nf9nh9nj9nl9nn9n p9n"r)n$<9n(t9n*v?<NT n,0J n00L n40N n80P n<0R n@0T0,HN^NuNV9nX)n N4X9@g0<`0<N^NuNV?.?<LNXN^NuNV/ Ab&H`0+ |g/ N*X Ab"Ҽm?.NT&_N^NuNV/ &n/ NDXJ@g0<`00+ |g /+NXBk ?+ N,TJ@g0<`0<&_N^NuNVH&n0+ |f0<`.0+ |gV0+ |f0<`v0+ |g?<B?+ NhP?/+?+ NzP @f0<`@k 0Hѫ`$ k o?<0+D@H/?+ NP'@&Bk0<LN^NuNV nl <`?.?./. ?<BN -@ m .`?<?.B?<BN` -@?<?.B?<BNF -@ nf .Ю -@ `$ nf .Ю -@ `0.g <`b . oHn . /?.?<@N Bg?./. ?<BN ]|9@g <` `Bl . N^NuNV/.?<IN\N^NuNVBn`&0.A0nf0.ABPRn nLmN^NuNV?>.=|0A"HPgXHf0(>N^Nu)I)J)_NN"l$l/,Nu)I)J)_NA"l$l/,Nu)I)JHl()_Hl" <sNB"l$lNuNV)n)n .мZ)@9|d(Bl*9| . n 9P4N n 04A()HA()HA()HA()HN^NuNV9|e(Bl*Bl.9n4NXN^NuNV`4 nH| f?< ?<NX nRH??<NX0. Sn J@fN^NuNV` nRH??<NX0. Sn J@fN^NuNV` nRH??<NX0. Sn J@fN^NuNVH0&n $KA-H nf?./ N4\=n`L nf?./ N`\=n`. nf?./ Np\=n`-KBn?.NTJ@f`H| f |o@ H-@/./.?.?<@N 9@Hg0<`0,n/./<?.?<@N 9@ @g0<`tRnR -@`R ned` 6.ƼЃ$@ H-@/./.?.?<@N6 9@Hg0<`0,nBl0.L N^NuC22222222222Cb"2"2 2"2"2"22"2"2"22"2x9|`Nu FORMAT11FORMAT11.RSC[3][Cannot find FORMAT11.RSC....][OK][3][Error Verifying Disk....][OK][3][Error Verifying Disk....][OK][3][Error Verifying Disk....][OK]CON:AUX:PRT: `),N N)*O*m - ЭЭм!"ҍ¼.A// Bg?<JNA m"m -So Q m -SBQ(m)M*mN lHhNX/,?,N\?<N"l?<A?<NAXNuNV)J?</<al<><a`.<9gSfa.<Nu<0g<a@a`<DNuQNu9|a$fRBi<BGa<><a<<af.3|9|<>,a,<af 3l<NuAHxM9@9@1>)o9o9o9oC JlgC .<>,OO l)HJij&aBiabg.< aDfaTg 3|LxNu <`B/<>)a<<a< LxrBx>Nu>,9|<a<<`BFaf <fBiNu0)<.<<af.<aSg9faBFNua,<Nu<><a><QaNu1 0,Rl a2<>)aNB,<>,a@   Nu@|9FNua3`a3`a09@?>< Q>FNua>9`"<f"<f"<g2<9ANu N^NuNVNBHlHlHlHlN9@HlN XJ@fHl?<NJ\?<NTHl|+?||@|A|B|C|rD|gE|F|G||H|I|J|&K|L||M|N|O|P||Q|R|S|T||U|V|?W||X|Y|7Z||[|\| ]|_|&`|a||b|c|d| e||f|g|h|Hi|j|k|l|m|7n||o|p|r|s|?t||u|v|w|y|z|{|||}|r||||| |||}|||u| ||| |||}|| |||t|||w|}||j|2||||^|||||D||||||}||||||3|||6| ||||||<||||7||||=||||||7||||I|||||*||;|||@|8||<|||s|||<|||P||N|X|r||(||<|||t| |||7||||&| ||||||||.|||||||}|||=||||p| | | |t |"|||||||||3|||6|||||| |!|;"||#|3$|%|&|6'|(||)|*|+|*,||-|.|9/||0|1|2|3|4|5|96||7|8|9|:|;| <|6=|;>||?|@|A|B|C|D|E|F|}G|H|6I|*J||K|L|M|N| O| P|NQ|oR|nS|-T|SU|yV|sW|tX|eY|mZ| [|d\|i]|s^|k_| `|oa|rb| c|dd|ie|sf|kg| h|ei|rj|rk|ol|rm| n| o|Rp|eq|pr|ls|at|cu|ev| w|ax|ny|dz| {|s||t}|r~|i|k|e| |a|n|y| |k|e|y| |w|h|e|n| |r|e|a|d|y| | | | |D|i|s|k| |B|o|o|t| |f|a|i|l|u|r|e| | |I|B|M|B|I|O| | |C|O|M|I|B|M|D|O|S| | |C|O|M|U||||NBlBl|P l1| l1| l1| l1|b lBhR lBh lBhZ lBhr?<?< ?,?,?<?< /,N?<?<@?, ?,?<?</,N?<?<?,?, ?<?</,N?<?<8?,?,?<?<#/,Nz?<?< ?, ?,"?<?</,NV?<?<@?,?,?<?</,N2?,?,?,?,?<?</,N?,?,?,?,?<?</,N Bg/,NJ\9@N lf?,?,?,?,BB?<N:/,?<IN\ lf?,?<?<N\`?,?<?<N|\N TN^NuNuNV ,)@HlHl ?</,N HlHl?</,N hHl Hl"?</,N PHlHl?</,N 8HlHl?</,N HlHl?</,N HlHl?<#/,N Hl Hl?</,N HlHl?< /,N HlHl?< /,N HlHl?< /,N HlHl?< /,N xHlHl?</,N `HlHl?</,N HHlHl?</,N 0N^NuNV l hf@ lf8Bl ,)@ lBh?<?<?,?,?<?</,N  l hfB lf:9| ,)@ lBh?<?<?,?, ?<?</,N R l hbf lf|P ,)@ lBh lBh lBhJ?<?< ?,?,?<?</,N ?<?< ?,?,?<?</,N ?<?< ?,?,?<?</,N  l hf lf|Q ,)@ lBhb lBh lBhJ?<?< ?,?,?<?</,N F?<?< ?, ?,"?<?</,N "?<?< ?,?,?<?</,N  l hf lf|R ,)@ lBhb lBh lBhJ?<?< ?,?,?<?</,N ?<?< ?, ?,"?<?</,N x?<?< ?,?,?<?</,N T l hJf lf|S ,)@ lBhb lBh lBh?<?< ?, ?,"?<?</,N?<?< ?,?,?<?</,N?<?< ?,?,?<?</,N l hfL lfDBl|| ,)@ lBh?<?<@?,?,?<?< /,NR l hfN l fF9||| ,)@ lBh?<?<@?, ?,?<?</,N l hBf lfb,H|Pf |p|,H|Qf |{|,H|Rf ||,H|Sf ||``,H|Pf ||,H|Qf ||,H|Rf | |,H|Sf |"|9| 9|9|9|9|9|9|| l h*f lfb,H|Pf | |,H|Qf |*|,H|Rf |4|,H|Sf |>|``,H|Pf |@|,H|Qf |T|,H|Rf |h|,H|Sf |||9| 9|9|;9| 9| 9|'9|x| l hf lfb,H|Pf ||,H|Qf ||,H|Rf ||,H|Sf ||``,H|Pf ||,H|Qf ||,H|Rf ||,H|Sf ||9| 9|9|;9| 9| 9|'9|x| l hrfxB?<N(\Hz?<&N \?<BgBg?<?,BHl?< N  l hRflllll?<BgBg?<?,BHl?< N T?<BgBg?<?,BHl?< N 2?<BgBg?<?,BHl?< N  l hfN ,)@ lBhr lBh lBhR?,?,?,?,?<?</,N?<?<@?,?,?<?</,N?<?<8?,?,?<?<#/,NhB?<N\N^NuNV lf\Bn`D?,Bg?.?<?,B/,?<N.=@ ngHl4?<N\`Rn0.,HAm`Bn`?,Bg?.?<?,B/,?<N=@ ngHlV?<N|\`V?,?<?.?<?,B/,?<N=@ ngHlx?<N:\`Rn0.,HAmlN^Nu)I)J"/0<NB"l$lNu NV9n0.| A" AA-H=|` nR2.AH0Rn nm/,(N.X0,XN^NuNVA)H,A)H0Ah)H4AX)H8AL)HN4X9@$g0<`0<N^NuNV?.?<LNXN^NuNV/ Ar&H`0+ |g/ N*X Ar"Ҽm?.NT&_N^NuNV/ &n/ NDXJ@g0<`00+ |g /+NXBk ?+ N,TJ@g0<`0<&_N^NuNVH&n0+ |f0<`.0+ |gV0+ |f0<`v0+ |g?<B?+ NhP?/+?+ NzP @f0<`@k 0Hѫ`$ k o?<0+D@H/?+ NP'@&Bk0<LN^NuNV nl <`?.?./. ?<BN -@ m .`?<?.B?<BN` -@?<?.B?<BNF -@ nf .Ю -@ `$ nf .Ю -@ `0.g <`b . oHn . /?.?<@N Bg?./. ?<BN ]|9@$g <` `Bl$ . N^NuNV/.?<IN\N^NuNVBn`&0.A0nf0.ABPRn nLmN^NuNV?>.=|0A"HPgXHf0(>N^Nu)I)J)_NN"l$l/,Nu)I)J)_NA"l$l/,Nu)I)JHl$)_Hl" <sNB"l$lNuNV)n)n .мZ)@9|d$Bl&9| * n 9P0N n 00A$)HA$)HA$)HA$)HN^NuNV9|e$Bl&Bl*9n0NXN^NuNV`4 nH| f?< ?<NX nRH??<NX0. Sn J@fN^NuNV` nRH??<NX0. Sn J@fN^NuNV` nRH??<NX0. Sn J@fN^NuNVH0&n $KA-H nf?./ N4\=n`L nf?./ N`\=n`. nf?./ Np\=n`-KBn?.NTJ@f`H| f |o@ H-@/./.?.?<@N 9@$Hg0<`0,$n/./<?.?<@N 9@$ @g0<`tRnR -@`R ned` 6.ƼЃ$@ H-@/./.?.?<@N6 9@$Hg0<`0,$nBl$0.L N^NuC22222222222Cr"2"2 2"2"2"22"2"2"22"2x9|pNuFORMAT11.RSC[1][Cannot find FORMAT11.RSC....][OK][3][Error Verifying Disk....][OK][3][Error Verifying Disk....][OK][3][Error Verifying Disk....][OK]CON:AUX:PRT:  FORMAT11.DOC VERSION 3.0 ----------------------------- Format11 Version 3.0 corrects a couple of bugs from Version 2.3 and incorporates a couple new added features: Bugs Corrected -------------- 1. Restores the palette to whatever the colors were when the program was invoked. 2. Corrects problem of multiple selections showing up in each option group (e.g. Drive A & B both selected, Tracks 80 & 83 both selected... etc.). This problem only occurred in the GEM Accessory Version.... F11GEM.ACC. 3. Now allows use of the same resource file for monochrome systems. New Features ------------ 1. Monochrome systems now supported. 2. EXTERNAL Drive "B" now supported. 3. Tracks selection now includes 81 & 82 Tracks/Disk. 4. Verification of formatted disks: This is useful for drives that are marginal when doing an 11 Sector/Track format. An error will be reported upon receipt of any disk error during the format procedure. This includes the most common errors (Drive not ready, CRC errors, Sector not found, Track not found....etc). 5. MSDOS Bootable: This allows the creation of MSDOS Bootable 3 1/2" disks ( 5 1/2" not supported) for portation to IBM or IBM clone systems that have 3 1/2" disk drives. MISC. NOTES ----------- 1. When copying files between different sector layout disks using a single disk drive, make sure to open one disk as drive "A" and the other as Drive "B". This way the OS will read the Bios Parameter Block for each disk correctly and avoid any thrashing of the destination disk. 2. Some floppy drives cannot handle more than 80 Tracks/Disk due to a physical limitation ( plastic crash stops). 3. Also note that the faster your disk turns above the 300rpm standard, the more likely you are to get errors when formatting at 11 Sectors/Track. This is due to the fact that the 11 Sector Layout cannot be successfully written because the disk has made 1 revolution before the last sector is completely written. I would recommend using the VERIFY option on all 11 Sector/Track formats. 4. The disks you format will have anywhere from 357,376 to 923,648 bytes available to the user when using the double sided 11 Sector option. You get ~200k bytes Extra/Disk. 200k x 10 Disks/Box = 2 Mega Bytes Extra/Box. Thats almost 3 extra doubled sided disks!! A lot of time and effort has went into this program to make it reliable and user friendly. I hope you find it useful for some of yours needs. Please send any comments and/or suggestions you might have to: Matt Orsie Compuserve 73737,347 750 Eagles Ct. Apt. 2-D Westminster, Md 21157 $F$#J EXIT FORMAT FORMAT11 DOUBLE SINGLE Drive----- 10 9 11 Sectors/Track-------------Sides-----byMATT ORSIEVersion 3.0 B A Tracks------ 81 82 83 80 VERIFY MSDOS $%&-.7 89:;<=>?@I JS T] ^deklqrwx}~    #1p:(f    * F' A Q~' Qb, Q1. AJ. A' A &Az B Av" A ^ AZ A>  #A! ! "" a . .. MORSE C MORSE DOC^ QUIZ C  QUIZ PRG|SENDER C SENDER DEFSENDER H _SENDER PRGSENDER RSC SENDGEM C /* The guts of a morse code tutorial/training/transmission system. Set length variables to control speed and spacing. Written for Lattice C. Note short is 16 bits, int == long is 32 bits. */ #include /* Constants for Giaccess */ #define TRUE 1 #define FALSE 0 #define NO_ADDR 0x0L #define GI_WRITE 0x80 #define GI_READ 0 #define CHANA_LO 0 #define CHANA_HI 1 #define CHAN_ENABLE 7 #define CHANA_VOLUME 8 #define PORT_MASK 0xC0 /* Don't disturb i/o port bits */ #define GI_STATE 0x3E /* Tone ch A on; others off */ #define OFF 0 /* Event flags, etc */ short ev_mwhich = 0, ev_mflags = MU_KEYBD | MU_BUTTON | MU_TIMER, ev_mbclicks = 2, ev_mbmask = 2, ev_mbstate = 2, ev_mm1flags = 0, ev_mm1x = 0, ev_mm1y = 0, ev_mm1width = 0, ev_mm1height = 0, ev_mm2flags = 0, ev_mm2x = 0, ev_mm2y = 0, ev_mm2width = 0, ev_mm2height = 0, ev_mmox, ev_mmoy, ev_mmobutton, ev_mmokstate, ev_mkreturn, ev_mbreturn; char ev_mmgpbuff[16]; /* Sound parameters */ unsigned char a_volume = 15, a_hi_note = 1, a_lo_note = 0; /* Initial values are for 5 WPM */ short l_dot = 240, /* 1200/WPM */ l_dash = 720, /* 3*l_dot */ l_el = 240, /* Interelement spacing == l_dot */ l_char = 480, /* Char spacing, normally 2*l_el */ l_word = 960; /* Word spacing, 4*l_dot */ /* Note that the routine actually sends l_el after each element, l_char after each character, and l_word for a space, so the character space is l_el+l_char == 3*l_el, and word space is l_el+l_char+l_word == 7*l_el, agreeing with the standards */ /* Coding table: '.' = send dit; '_' = send dah; ' ' = word space; anything else (ie, '\0') terminates sequence. */ #define NO_CODE "\0" char *codes[128] = { NO_CODE, /* 00 */ NO_CODE, /* 01 */ NO_CODE, /* 02 */ NO_CODE, /* 03 */ NO_CODE, /* 04 */ NO_CODE, /* 05 */ NO_CODE, /* 06 */ NO_CODE, /* 07 */ NO_CODE, /* 08 */ " ", /* 09 TAB */ " ", /* 0A \N */ NO_CODE, /* 0B */ NO_CODE, /* 0C */ NO_CODE, /* 0D */ NO_CODE, /* 0E */ NO_CODE, /* 0F */ NO_CODE, /* 10 */ NO_CODE, /* 11 */ NO_CODE, /* 12 */ NO_CODE, /* 13 */ NO_CODE, /* 14 */ NO_CODE, /* 15 */ NO_CODE, /* 16 */ NO_CODE, /* 17 */ NO_CODE, /* 18 */ NO_CODE, /* 19 */ NO_CODE, /* 1A */ NO_CODE, /* 1B */ NO_CODE, /* 1C */ NO_CODE, /* 1D */ NO_CODE, /* 1E */ NO_CODE, /* 1F */ " ", /* 20 SPACE */ "..._.", /* 21 ! Understood */ "._.._.", /* 22 " */ "._._..", /* 23 # Paragraph */ "..._.._", /* 24 $ Dollar sign */ "_._._", /* 25 % Start/Attention */ "._...", /* 26 & Wait */ ".____.", /* 27 ' */ "_.__.", /* 28 ( */ "_.__._", /* 29 ) */ "..._._", /* 2A * End of Work */ "._._.", /* 2B + End of Message */ "__..__", /* 2C , */ "_..._", /* 2D - */ "._._._", /* 2E . */ "_.._.", /* 2F / */ "_____", /* 30 0 */ ".____", /* 31 1 */ "..___", /* 32 2 */ "...__", /* 33 3 */ "...._", /* 34 4 */ ".....", /* 35 5 */ "_....", /* 36 6 */ "__...", /* 37 7 */ "___..", /* 38 8 */ "____.", /* 39 9 */ "___...", /* 3A : */ "_._._.", /* 3B ; */ NO_CODE, /* 3C < */ "_..._", /* 3D = Double dash */ "._._", /* 3E > Newline */ "..__..", /* 3F ? */ NO_CODE, /* 40 @ */ "._", /* 41 A */ "_...", /* 42 B */ "_._.", /* 43 C */ "_..", /* 44 D */ ".", /* 45 E */ ".._.", /* 46 F */ "__.", /* 47 G */ "....", /* 48 H */ "..", /* 49 I */ ".___", /* 4A J */ "_._", /* 4B K */ "._..", /* 4C L */ "__", /* 4D M */ "_.", /* 4E N */ "___", /* 4F O */ ".__.", /* 50 P */ "__._", /* 51 Q */ "._.", /* 52 R */ "...", /* 53 S */ "_", /* 54 T */ ".._", /* 55 U */ "..._", /* 56 V */ ".__", /* 57 W */ "_.._", /* 58 X */ "_.__", /* 59 Y */ "__..", /* 5A Z */ NO_CODE, /* 5B [ (start prosign, see below) */ "........", /* 5C \\ Error */ NO_CODE, /* 5D ] (end prosign, see below) */ NO_CODE, /* 5E ^ */ "..__._", /* 5F _ */ NO_CODE, /* 60 ` */ "._", /* 61 a */ "_...", /* 62 b */ "_._.", /* 63 c */ "_..", /* 64 d */ ".", /* 65 e */ ".._.", /* 66 f */ "__.", /* 67 g */ "....", /* 68 h */ "..", /* 69 i */ ".___", /* 6A j */ "_._", /* 6B k */ "._..", /* 6C l */ "__", /* 6D m */ "_.", /* 6E n */ "___", /* 6F o */ ".__.", /* 70 p */ "__._", /* 71 q */ "._.", /* 72 r */ "...", /* 73 s */ "_", /* 74 t */ ".._", /* 75 u */ "..._", /* 76 v */ ".__", /* 77 w */ "_.._", /* 78 x */ "_.__", /* 79 y */ "__..", /* 7A z */ NO_CODE, /* 7B { */ NO_CODE, /* 7C | */ NO_CODE, /* 7D } */ NO_CODE, /* 7E ~ */ NO_CODE /* 7F */ }; /* send_morse: sends each character in the supplied string subject to the above translation table. Exception: '[' sets l_char :== 0 and ']' returns l_char to its original value. Thus prosigns can be composed (eg, [SK], [KN]) rather than using the equivalent punctuation given above. It is the sender's responsibility to see that the results are meaningful; send_morse will happily cram together anything, including [absolute garbage]. Note that end of string simulates ']' so prosigns cannot be broken into separate calls to send_morse. Also note that for multiple calls, str should start or end with a space character (' ', '\t', '\n') because the first character of a new str will be sent immediately, and only inter-character space is given following the last character of str */ short send_morse( str ) char *str; { short ll_char, i, len, j, els, m_send(), m_pause(); char ch, elem, *seq; unsigned char port_state=GI_STATE, new_state; /* Set sound chip */ port_state = (unsigned char) Giaccess( port_state, CHAN_ENABLE|GI_READ ); new_state = (port_state & PORT_MASK) | GI_STATE; Giaccess( new_state, CHAN_ENABLE|GI_WRITE ); Giaccess( OFF, CHANA_VOLUME|GI_WRITE ); Giaccess( a_hi_note, CHANA_HI|GI_WRITE ); Giaccess( a_lo_note, CHANA_LO|GI_WRITE ); ev_mkreturn = 0; ll_char = l_char; /* Actual inter-character space */ len = strlen( str ); for( i=0; imorse mapping used is similar to that used by the AEA morse senders. QUIZ.PRG + source files This one sends the entire required morse alphabet one character at a time for you to identify. The letters are sent in random order until you have correctly identified all of them. This approach will familiarize you with the sound of the letters at the target speed. SENDER.PRG + source files This program sends any text file in morse code. The character speed and the spacing speed are independent; you should set the character speed to a value slightly higher than your target speed and then find a spacing speed that you are comfortable with. Increase the spacing speed until it matches the character speed, and you are ready for the test. (I don't recommend slowly increasing the character speed, because the characters sound different as the speed changes, and that complicates the learning process.) There is also an option to automatically increase the spacing speed. If the increment value is greater than zero, it will be added to the spacing speed each time a blank line is read in the text file, until the spacing speed equals the character speed. This is useful in helping you to find your `natural' copying speed when you are starting out. Finally, you can choose either filtered or literal text. In filter mode, only characters in the required morse alphabet are sent; blank lines are sent as AR and EOF is signalled as SK. Use this mode to send arbitrary text files (eg, your mail, this documentation). In literal mode, the full ASCII mapping, including the [prosign] notation is accepted. This mode allows you to prepare simulated QSO `scripts' to play for code practice class or whatever. Feel free to distribute this ARC collection to anyone anywhere by any means. PLEASE keep the files together so the recipients can customize the programs as desired. #include #include #include #include short ytext[4], yprompt[4]; main() { short i, done, speed, score; char text[132]; gem_init(); clear_window( ywork ); /* Define box for explanatory text */ i = (wwork - 40*gl_wchar)/2; if( i < 0 ) terminate( "[3][Insufficient screen resolution!][Abort]" ); ytext[0] = xwork+i; ytext[2] = xwork+wwork-i; ytext[1] = ywork+gl_hchar; ytext[3] = ytext[1] + (gl_hchar<<3) + gl_hchar; /* Define box for prompts and messages */ yprompt[0] = ytext[0]; yprompt[2] = ytext[2]; yprompt[1] = ytext[3] + (gl_hchar<<2); yprompt[3] = yprompt[1] + (gl_hchar<<2); i = form_alert( 1, "[1][What level are you practicing for?][Novice|General|Extra]" ); if( i == 1 ) speed = 7; else if( i == 2 ) speed = 15; else if( i == 3 ) speed = 25; done = FALSE; while( !done ) { score = code_quiz( speed ); graf_mouse( M_ON, 0x0L ); graf_mouse( ARROW, 0x0L ); sprintf( text, "[3][Quiz completed!|Your score: %d%%][Repeat|Quit]", score ); if( form_alert( 2, text ) == 2 ) done = TRUE; } terminate( NULL ); } /* main */ code_quiz( speed ) /* Perform code quiz */ short speed; { char qstr[44], codech[2], ans, get_answer(); short lastch, guessflag, nw, nr; long i; clear_window( ywork ); graf_mouse( M_OFF, 0x0L ); /* Set timing values */ l_dot = l_el = 1200/speed; l_dash = l_char = l_dot*3; l_word = l_dot*7; /* Initialize test string */ strcpy( qstr, "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ.,?+*=/" ); lastch = 42; codech[1] = '\0'; /* Write messages */ textbox( ytext ); wputs( "Type the character that you hear." ); wputs( "Special codes:" ); wputs( " + is AR (end of message)" ); wputs( " * is SK (end of work)" ); wputs( " = is BT" ); wputs( "The test covers 0-9, A-Z, AR, SK, BT," ); wputs( "?, /, period, and comma." ); wputs( "Press UNDO to interrupt the quiz." ); m_wait( 2000 ); nw = nr = 0; while( lastch >= 0 ) { guessflag = 0; textbox( yprompt ); wputs( "Identify this one." ); i = Random() % (lastch+1); codech[0] = qstr[i]; while( guessflag >= 0 ) { ev_mkreturn = 0; send_morse( codech ); ans = toupper( get_answer() ); if( ans == 0 ) /* assume UNDO, quit */ return( nr ? (nr*100)/(nr+nw) : 0 ); textbox( yprompt ); if( ans != codech[0] ) { nw++; wputs( "No, that isn't right." ); if( ++guessflag > 2 ) { wputs( "The character was:" ); wputs( codech ); guessflag = -1; m_wait( 1000 ); } else wputs( "Try that one again." ); } else { nr++; wputs( "That is correct." ); if( guessflag == 0 ) qstr[i] = qstr[lastch--]; guessflag = -1; } m_wait( 2000 ); } } return( (nr*100)/(nr+nw) ); } /* code_quiz */ char get_answer() { if( ev_mkreturn == 0 ) ev_mkreturn = evnt_keybd(); return( (char) (ev_mkreturn & 0x0ff) ); } /* get_answer */ `x^&o#cAB(HSB$H  g  g  f RSBj` g =g %gJ`Rpr A9nA0m/ПЁRSBk`Jg n <#n4`zRpr A9nA0m/ПЁRSBkT`JgN n <#m`8Cc`CcrRSBk$  g  g  gQp`JBkQB"+ҫ n4$9mf $`nԀ n$<&ւֹn4// Bg?<JNAJg0<`6 .An4#c#c#cN'$/ K,MNp??<LNA` /`NVp>@r//r/N>.O @>@/</r/N>.O /<Bp/N>.O p9d/</r/N>.O p9d/</r/N>.O Byn@=yd/.N@"XBn=@0.nlN09n@J@g`@0.H n@ [f Byd` .]f0.3dH/aFX`.HH @f""P/ -IN@"XBn=@0.nlH nA  f.O p./</r/N>.O 0.N^NuNV/<Bp/N>.O 0. H/avXN^NuNVp9d/</r/N>.O p9d/</r/N>.O p9d/</r/N>.O 0. H/aXN^NuNVHp=@Jn fLN^NuJnf`09cH29cH49cH69cH89dH:9dH<9dH>9dH/G,>9dH/G0>9d H/G4>9d H/G8>9dH/G<>9dH/G@>9dH/GD>. HHnHnHnHnHnHnB/Hn//h//h//h//h//h//h//h///////NOO\=@g=|0. @ g3cBn0. @lH @nDRn`3n83n:3n<3n>3n@3nB`09cLN^NuNVB/<NWPp/NZnX09s=@=n 29s"A=@09s 29s$A=@09sHr//NLJP09sHr//NLP09sHr//NKP09sHHn/NDP09s@2. @3nV09s29sA3nTBNZnXB/<NWPN^NuNVH09sH/NYX09s"H/@rN>~29sHЁ49s$H/@ /A rN>~29s HЁ69sH89sH///////////,NVfO 09sH/NYLXLN^NuNVH 0. H29sH49s H69s"H89s$Hz/z////////9sBNSO$L0N^NuNL3sHysHysHysHysNWZO3sadap//NWPNuNVx/.N@"XJfRp/N=X=@H/@A n|:T /R//rG/N=O /./.N~29s&HЁ49s,H/@ /A rN>~29s(HЁ69sH89sH///////////,NVO 09sH29s&H49s(H69s*H89s,H/////NXO09sHHys$Hys"Hys Hysr//NYOLN^NuNVH 0. H29sH49s H69s"H89s$Hz//////B//9sBNSO$L0N^NuNVJg/.p/NT PaPp /aX09sH/NBVXNNVBNXN^NuNVB/<NWPp/NZnX09sHB/NLJP09sHr//NKP09sH/./NEP n0(29sA3nV029sA3nT09sHr//NLJP n0=@=@=@0(=@=@=@0(=@=@0(=@=@09sHHnr//NC>O BNZnXB/<NWPN^NuNV09sH29nTH49nVH/.///NCO09nV29sA3nVN^NuNVna09s H/aX09s(29s"H rN>~=@J@j HyhaX09s2.@3tF49s"Bn3tJ49s 69sC3tH?CCC6/C3tL3tN3tRCC3tPC3tTHyhp/NT P=@S@f=|` nf=|` nf=|BnJnff0.H/ahXB/<=@NWPp//NWP0.H/HyiHntN/O Hntp/NT PUf=|`BaXN^NuNV09s H/aZXB/<NWP0<H 3d3dH/@rN>3d3d /rN>3d HyiEHnN?vP=|*B.HytFaXHyiqaXHyiaXHyiaXHyiaXHyiaXHyiavXHyjajXHyj!a^X/<aXp=@=@JnkRBnHytNa XHyjCa$Xp/N>.X2.HRN>~v-AJnkByn@HnaXa"HH/NAX@Jf4Jng(0.H/@rdN>2.H$/ԁ"N>~`pN^NuHytNaX..ѲgTRnHyjVatXRn no*Hyjla\XHnaRX=|/<aX`>Hyja2X`0RnHyja XJnf0.SnH".=|/<aX`0.H/@rdN>2.H$/ԁ"N>~N^Nu09n@J@f NN3n@09n@HNuNVBtZp#tV tVl nHHR"@m(gR` nJgZ 9tVRtV @tZ  nHHJgR"@m(fR` nrR@JfpNqHytHyjHycNdO 9c-@ >g"HytHyjHycNdO -@` HytHyjHycNdO -@Hyu HyjHyjNdO -@Jf p/N&XJf/.HyjNPp/NX/9mNX//.NZP n(@Jf/.HyjNPp/NXHytZ/9tVN vPBNXN^NuNV nHHR-@Jg:"9tS#tJk ytRtHH`Hyt/.NlP` 9tS#tJk ytRtp HH`Hytp /NlPN^NuNVB nHHR-@Jg4 n "(S!AJk "PRHH`/. /.NlP-@` .N^NuNV/.NXJ fpN^Nu n(@@ n "n"#H #ympN^NuNVB . l rN> @t/NpXR`B .n,l/N&4XR`/. /.N&PN^NuNV-|t nvd(Jg ` nvfpN^Nu/./. /.aO N^NuNV nJ(g/aX-yn0-n n(HH bg afB`-|R n( +WDHH n HHA wg rg af ./@J.gr`r //<//.NO -@RfpN^Nup/B/.N%`O J.g <`p-@`J.gp`p".//.NP-@RfpN^NuJ.g <`p-@`^J.gp`p"./<//.NO -@RfpN^NuJ.g <`p-@`pN^Nu .rN> @wJ(g n"n#H ` nB . n@ p!@!@ .@ N^NuNV n(g/p/NlP n( JfJg/(/( NP"n#H #HB))HH/N&4XN^NuNV n(gpN^Nu nJg(f/(/( NP n"n#H )@p#@#@#@N^NuNV n(0JgpN^Nu nJf(f/aNXJgpN^Nu n(gp-@`* n(gpN^Nu n(@-h n(HH/./( /N"nO -@Jj n( @Jf n(@Jo n!n n(0JgpN^Nu n (S!@Jk "PRp` /.aXN^NuNV-n n (0JgpN^Nu n Jfr(fh fpN^Nu/. aXJgpN^Nu n (@ (!@S!@Jk"PR .HH`/. /.alPN^Nu n (gJ fpN^Nu .@ n (HHr/Hn/-AN#O r-A-@` n (gpN^Nu n (@ g8Jo2 (S!@Jk"PR .HH`/. /.aPp-@"n Q gDJj-i` n (-@ n (HH/./( /N#O -@` p-@-@ f n ( @` .g n (@ n (!@"h . g("(S!AJk "PRHH`/. /.aP n (0JgpN^Nu fpN^Nu .N^NuNV nJg(fpN^Nu/9mNX n !@ Jfp #m pN^Nu n!ym(@p!@!@N^Nu#mm 9m#m JmfpNu"ym"#ym  NuBaXNuNVJjpN^Nu#m#m-|/<N&X-@JfpN^Nu#m#m .S-@Jg/<N&XJg .ѹm`a@pN^NuNV 9m N^NuNV ./-@aXN^NuNVJnpN^Nu .^rN>~-|m n-P-@JgV . n"(m6f"n"` n (!@Ѯ .m n N^Nu-n n-P` ./N&X-@JgFJmf#m#m`& 9m ym"n-Hf .ѹm .N^NupN^NuNV . //.-@aPN^NuNVJ npN^Nu n . ^rN>~-@-H .ѹm -|m"n-Q-HJg n (-H nc"n"#n n pN^Nu nf"n" .Ш#@ n pN^Nu nd .䑹m pN^Nu nfP nJg n"nc .䑹m pN^Nu . nѨJg n"nf (ѩ"pN^Nu-n-n n-P` n "n"#n N^NuNVJk$ .n,lrN> @wfp #m pN^Nu .rN> @w N^NuNVB .n,lrN> @wJgR` .n,fp#m pN^Nu .rN> @w 9m$". -@ -Hgp`p n .  g> gJfV n@`\.gp`p nHH`8.gp`p` nHH` nBp#m pN^Nup n@ nJf-|kB . lFr N> @jR//.N?PJf .r N> @j"nPR` n(Jf.g /.N)X.gp` . //.N'fP n!@Jcg@ . JgB/.N) P n!@JcgJp#m nBpN^Nu .  f$ n/(N)Xp#m nBpN^Nu .N^NuNV . ". ///.a|O N^NuNVJjp#m pN^Nu/.aX-@JfpN^Nu n(HH dN``` ``/./. n/(N*&O -@Jcg JfpN^Nu ng .N^Nup-@-@ .lZ n R@HH g f$ .Sr///.aO .N^Nu n R`JfJfB .N^NupN^NuNVJjp#m pN^Nu/.aX-@JfpN^Nu n(HH drN``` ``P ngp/B/.aLO ng0/./. /(N*fO -@JcgpN^Nu .N^NuB.p-@-@-@ .l n R@ f . g | S nv .R.-@A m/Hyv n/(N*fO -@갮gpN^NuJcgpN^NuB`hJg:/.Hyv n/(N*fO -@갮gpN^NuJcgpN^Nu .N^Nu .N^Nup#m pN^NuNV/.a X-@JfpN^Nu n(JgpN^Nu/./. n/(N*O -@Jcgp#m pN^Nu f`JgZ nfN .S-@Jk4B/./.afO Jgp/Hn/.a\O JfS` .RN^Nu .N^NuNV/.aLX-@JfpN^NuB n/(N)XJcgp-@ nB .N^NuNV/.N)XJcgpN^NupN^NuNV/.aXN^NuNV/. /.NPN^NuNV .copN^Nu yc .ѹc⑹c N^NuNV/.aX-@JgN^Nu | N^NuNV 9c␹cѹc#cc#m#m#m #m N^NuNVa-@JfpN^Nu /./9kazP n-@Jfp-@ . dN```4`L`XJ fDA"n"`(  f*A"n"`  fA"n"`A:"n"`  fA"n"`A"n"`  f. .r/@B///r/r/N=JO #c/.aXJcWDHHLN^NuNV .r/@///r/rA/N=JO#cJWDHH N^NuNVJfB/./. /.aON^Nu"n QB/./. / NON^NuNVJfp//./. /.a`ON^Nu"n Qp//./. / NON^NuNVH Jf pLN^NuAJ$n"Rg pLN^Nup". /. n/(/. /p/pB/N=JOLN^NuNVJgp@`p?r$.". v/A////./ n/(v//-@N=JO-@Jj #cpN^Nu .N^NuNVBp/N=JP n pN^NuNVB .l& n HH/r/r/N=JO R` .N^NuNVB .l& n HH/r/r/N=JO R` .N^NuNVv . lS`p}@A r//r/r /N=JOp /p/p/N=JO .HHr-Ax-@| .|T".xl>6@w f| w .wf .xUDN^Nu .xU n wRx` .| }l n  .|RN^NuNVB .lP n @HH fp /p/p/N=JO .HH/r/r/N=JO R` .N^NuNVJg .`pN^NuNVB . l" @w>Jf @w> N^NuR`pN^NuNV nBN^NuNV. am zn aAN^Nu. N^NuNV. HH/aX.HH/@aX/fp`pN^NuNVp-@p-@p-@-@ n JgR`B . nJg n@JgR =g ,f .S".f .N^Nu .R.HH n HH//-@a2PJfB. ,g =f p-@p-@ .,fRR`^Jg .S".f .N^NupN^NuNVA-H-n n JgHHR-@-H %fb %f"nR R`HnHnHn/. N/O-@JgB-@ .lA"nRR` . nR`l nB -@N^NuNVH p-@r-Ar -A n-@-@-@ -f pR-@ nHH/@R @m(gh 0fp0-@ nHHR-@ nHHR"@m(g$ .r N>HHRЁ-@` n .fHRB nHHR"@m(g$ .r N>HHRЁ-@` n lf pR-@B nHHrHkfNf`ne``g`Pc`*s`o`Xx`u`8d`Jg"n QX-P` "n QX-PJj(p-@` Jg"n QX-P` "n QX-Pp -@ .r N>~-AJjDS .0". .r N>~-@Jf fS .-A .r -A-H`vJg"n QX-P` "n QX-Pp-@S . @k . .-@JfA .r-A-H`Jg"n QX-P` "n QX-Pp -@S .0". .-@JfA .r -A-H` f-|"n QX"P-Iгf-|kB .lP nJgDR`Ap-@$n"RX @-H` p-@`B`p-@` pLN^NuJgJg .ܰl-n .BJgH .S-@Jk n R"nR` .S-@Jk\ n R .` .S-@Jk n R .` .S-@Jk n R"nR` n nR LN^Nu fp-@ mp` .-@R WDHHHnHnHn// n/N8JO nPA".-@-A-HJjD fJg mp`p-@JgSp-@JgRJg* .R".Ё-@Jk .ѮJg@R`: .\ѮJj .D` .-@ coR oRJf4 .ܰo* . .S-@Jk . n R R`Jg n -R JgJjp n 0R.R-H .S-@Jk .R-@Jj n 0R ` .S-@Jk n"n RR ` n 0R ` .SJk0 .S-@Jk n"n RR ` n 0R `Jg n .R .S-@Jk: .S-@Jk n"n RR ` n 0R ` .S-@Jk n"n RR ` n 0R n .R .S-@Jk0 .S-@Jk n"n RR ` n 0R ` n ER-H Jj-R D` n +R p -@S .r N>~0 . .r N>~-@ nJf . lR n R ` f4 .ܰo* . .S-@Jk . n R R` n nR LN^NuNPNQH0$h "N;BiBi/f$h&( S`RB3BHB3BBF4)g\jVBk Bia`Ha2Ri`tiaaSiJkSi`BBBF/gaJFf BfSi`0 RB Bkv$( Jg(<iSBk:x Bl281  9o"0 R1 1 SBjRiSCzgR$hG0 gSD6CkxQJCk0Q$hBJigS$hB2)H$L NYNXNuBfNu|H0$&҃тdRL Nu/t?<@ B m RSWfO$NuNPNQH~0pr3@3@3@3@at 0fi ` -f iaV 0m> 9n8i 3F <)i/gRi`a:<) ҆Bц` .f Jif`Ri` eg efNa +g -f ia 0m. 9n(:)iFi im?)_ f $hB`4)?)_gDBi/gT3|?Jk Si`Jig ktia\adSi`aRi`t4)?)_gN<$h$$$h$p0)L~NYNXNu,(g !|NuH$hN<L?3FS fiNu?)_g|Nu$fprt`"HBHBB/t Q$Nu//gdB Jf BB /g$RB/fJjRd R`SBgBo Bl(J?BBHB_HB&Nu/<N1o<"/ !A:!o1o81|.!@21| ,N[A[2CD!ICD!IHNuA[21oD1oH1o D1o81|.1|21|g,N[HNuA[2!o1o81|.Bh21|r,N[A[2CD!IHNuA[2!o1o81|.Bh21|61| ,N[A[2CD!IHNuA[21oF1oD1oP1oF1o D1o81|.1|21|6BhHBhJBhLBhNBhR1| ,N[HNuA[21oF1oD1oP1oF1o D1o81|.1|21|6BhHBhJBhLBhNBhR1| ,N[HNuA[21oL1oF1o D1o81|.Bh21|6BhHBhJBhN1| ,N[HNuA[21oF1oD1oJ1oH1oF1o D1o81|.1|21|61| ,N[HNuA[21oF1oD1oJ1oH1oF1o D1o81|.1|21|61| ,N[HNuA[21oJ1oH1oF1o D1o81|.Bh21|61| ,N[HNuA[2!o1o81|.Bh21|61| ,N[A[2CD!IHNuA[2!o1o81|.Bh21| 61| ,N[A[2CD!IHNuA[21oF1oD1oH1oF1o D1o81|.r"oRJf1A2p"o/ EH4Q$_h21| 61| ,N[HNuA[21o D1o8Bh.1|21| ,N[0(DHNuA[21o D1o82<"o C/ EF4Q$_Bh.1|21|,N[HNuA[21o D1o8Bh.1|21|,N[0(DHNuA[21o D1o8Bh.1|21|q,N[HNuA[21o D1o8BhF1|.Bh21|,N[0(DHNuA[21o D1o8Bh.1|21|,N[0(DHNuA[21oF1o D1o8Bh.1|21|l,N[HNuA[21o D1o8Bh.1|21|,N[0(DHNuA[21o F1o81|.Bh21|,N[0(FHNuA[21o D1o8Bh.1|21|,N[0(DHNuA[21o F1o8BhD1|.Bh21| ,N[A[2"o 2D"o2F"o2H"o2JHNuA[21o D1o8Bh.1|21|k,N[A[2"o 2D"o2F"o2H"o2J0(DHNuA[21o D1o8Bh.1|21| ,N[0(DHNuA[21o D1o8Bh.1|21|,N[0(DHNuA[21o D1o8Bh.1|21|,N[0(DHNuA[21o D1o8Bh.1|21|j,N[0(DHNuA[21oF1o D1o8Bh.1|21|',N[A[2"o2D"o2FHNuA[21o D1o8Bh.1|21|,N[0(DHNuA[21o D1o8Bh.1|21|,N[0(DHNuA[21o D1o8Bh.1|21|,N[0(DHNuA[21o D1o8Bh.1|21|h,N[0(DHNuA[2 /!@2!o1o8Bh.1|p,N[A[2CD!IHNuA[FBh1|Bh1| N[$A[F0(0HNuA[F!o 01o 21o01|1|1|1| N[$A[F0(0HNuA[F!o 01o 21o01|1|1|1| N[$A[F0(0HNuA[F1o0Bh1|Bh1| N[$A[F0(0HNuA[F1o21o 0!o01|1|1|1|N[$A[F0(0HNuA[F1o 0!o01|1|1|1|N[$A[F0(0HNuA[FBh1|Bh1|N[$A[F0(0HNuA[FBh1|Bh1|N[$A[F0(0HNuA[F1o41o 21o01|1|Bh1|N[$A[F"o22"o24"o26"o280(0HNuA[F1o81o61o41o 21o01|1|Bh1|N[$A[F"o22"o24"o 26"o$280(0HNuA[F!o0Bh1|1|1|N[$A[F0(0HNuA[F1o 21o01|1|Bh1|N[$A[F0(0HNuA[F1oFN1oBL!o<01o:J1o6H1o2F1o.D1o*B1o&@1o">1o<1o:1o81o61o41o 21o01|1|1|1|N[$A[F"oH22"oL24"oP26"oT28"oX2:"o\2<0(0HNuA[F1o 21o01|1|Bh1|N[$A[F0(0HNuA[F1o21o 0!o01|1|1|1|(N[$A[F0(0HNuA[F1o 0!o01|1|1|1|)N[$A[F0(0HNuA[F1o:1o81o61o41o21o 0!o01|1|1|1|*N[$A[F0(0HNuA[F1o61o41o21o 0!o01|1|1|1|+N[$A[F0(0HNuA[F1o 0!o01|1|1|1|,N[$A[F"o 22"o240(0HNuA[F1o21o 0!o01|1|1|1|-N[$A[F0(0HNuA[F1o61o41o21o 0!o01|1|1|1|.N[$A[F"o220(0HNuA[F1o&>1o"<1o:1o81o61o41o21o 0!o01|1|1|1|/N[$A[F0(0HNuA[F1o 0!o01|1|1|1|2N[$A[F0(0HNuA[F1o&@1o">1o<1o:1o81o61o41o 21o01| 1|1|1|3N[$A[F0(0HNuA[F!o01o01|1|1|1|4N[$A[F0(0HNuA[F1o01|1|Bh1|5N[$A[F0(0HNuA[F!o0Bh1|1|1|6N[$A[F"o22"o 24"o26"o280(0HNuA[F1o61o41o 21o01|1|Bh1|FN[$A[F"o22"o240(0HNuA[F1o">1o<1o:1o81o61o41o 21o01|1|Bh1|GN[$A[F"o$22"o(240(0HNuA[F1o:1o81o61o41o 21o01|1|Bh1|HN[$A[F0(0HNuA[F1o">1o<1o:1o81o61o41o 21o01|1|Bh1|IN[$A[F0(0HNuA[F1o">1o<1o:1o81o61o41o 21o01|1|Bh1|JN[$A[F0(0HNuA[F1o61o41o 2!o01|1|1|1|KN[$A[F0(0HNuA[F1o41o21o 0!o01|1|1|1|LN[$A[F0(0HNuA[FBh1|Bh1|MN[$A[F"o22"o24"o 26"o280(0HNuA[F!o01o01|1|1|1|NN[$A[F0(0HNuA[FBh1|Bh1|ON[$A[F"o22"o24"o 26"o280(0HNuA[F!o4!o0Bh1|1|1|ZN[$A[F"o 220(0HNuA[F1o81o61o41o 21o01|1|Bh1|dN[$A[F0(0HNuA[F1o81o61o41o 21o01|1|Bh1|eN[$A[F0(0HNuA[F1o01|1|Bh1|fN[$A[F0(0HNuA[F1o01|1|Bh1|gN[$A[F0(0HNuA[F1o 21o01|1|Bh1|hN[$A[F"o 22"o24"o26"o280(0HNuA[F1o:1o81o61o41o 21o01|1|Bh1|iN[$A[F0(0HNuA[F1o 21o01|1|Bh1|jN[$A[F0(0HNuA[F1o01|1|Bh1|kN[$A[F0(0HNuA[F1o:1o81o61o41o 21o01|1|Bh1|lN[$A[F"o22"o 24"o$26"o(280(0HNu"0<sNBNu"0<NBNu1.01[^[v]v_vav[^cv[v_v]vav# ..._.._.._.._._....._..__._._._....____._.__._.__._..._._._._.__..___..._._._.__.._._____.____..___...__...._....._....__...___..____.___..._._._._..._._._..__...__..._._._....._.__........____._._..___.___.__.__._._...._.._..._.___..__.____............__._.__..._._._....._.__........____._._..___.___.__.__._._...._.._..._.___..__.____..d"d$d&d(d*d,d.d0d2d4d6d8d:d<d>d@dBdDdFdHdJdLdNdPdRdTdVdXdZd\d^d`dbdddjdqdxdddddddddddddddddddddee eeeee%e'e*e/e4e8e:e?eCeHeKePeTeYe\e_ecehemeqeuewe{eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeefff ffffff[3][Resource (.RSC) file is missing!][Abort]h"[3][Resource (.RSC) file is defective.][Abort]hT[3][Invalid filespec][Continue][3][Insufficient screen resolution!][Abort][1][What level are you practicing for?][Novice|General|Extra][3][Quiz completed!|Your score: %d%%][Repeat|Quit]0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ.,?+*=/Type the character that you hear.Special codes: + is AR (end of message) * is SK (end of work) = is BTThe test covers 0-9, A-Z, AR, SK, BT,?, /, period, and comma.Press UNDO to interrupt the quiz.Identify this one.No, that isn't right.The character was:Try that one again.That is correct.rwaaCan't open stdin file Can't open stdout file con:CON:prn:PRN:lst:LST:lpt:LPT:lpt1:LPT1:aux:AUX:com:COM:com1:COM1:rdr:RDR:pun:PUN:nul:NUL:null:NULL:CON:AXI:,AXO:,LST:,NIL:,CON:=*k0123456789ABCDEF ((((( H ((((( H B H*"2,    & 4 ""  > \&         4 R$&       $   B       X $   . "*H  .  "  (    P:$  :":V:l&$@j$&:P(J.z    ,$ , Xd`$  J $2 40 & 0  F H 4 T<@HF ڮD@.x":P>@@@|*<  "" *""J "F0 "(V V @ H H : ((h "< "" &"( """&*".""""(""""&00 0*..:."(>(0*H<*0<T*T*"".4L@LL66.*0(::""(.@("@F24Z#include #include #include #include #include #define RSRC_FILENAME "SENDER.RSC" #define MAX_DEPTH 10 #define BLANKLINE -1 #define MORSE_CHARS "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ.,?-/" char buf[132]; short skipblank = TRUE, filter = TRUE, cspeed, sspeed, csspeed, tbox[4]; main() { short done, item; gem_init(); clear_window( ywork ); dirspec[0] = '\0'; item = (wwork - gl_wchar*40)/2; if( item < 0 ) terminate( "[3][Insufficient screen resolution!][Abort]" ); tbox[0] = xwork+item; tbox[2] = xwork+wwork-item; item = (hwork - gl_hchar*7)/2; tbox[1] = ywork+item; tbox[3] = ywork+hwork-item; if( !rsrc_load( RSRC_FILENAME ) ) terminate( no_rsc_file ); if( rsrc_gaddr( 0, 0, &resrcs ) == 0 ) terminate( bad_rsc_file ); rsrc_gaddr( R_TREE, TREE1, &resrcs ); done = FALSE; while( !done ) { form_center( resrcs, &xobj, &yobj, &wobj, &hobj ); form_dial( 0, xobj, yobj, wobj, hobj ); form_dial( 1, 1, 1, 1, 1, xobj, yobj, wobj, hobj ); graf_mouse( ARROW, 0x0L ); objc_draw( resrcs, 0, MAX_DEPTH, 0, 0, wdesk, hdesk ); if( filter ) select( T1FILTER ); item = form_do( resrcs, TREE1 ); if( item == T1EXIT ) done = TRUE; else { form_dial( 2, 1, 1, 1, 1, xobj, yobj, wobj, hobj ); form_dial( 3, xobj, yobj, wobj, hobj ); deselect( T1SEND ); clear_window( ywork ); analyze_form( resrcs ); send_file(); } } rsrc_free(); terminate( NULL ); } /* main */ adjust_speed() { short element; if( csspeed < 1 ) return( FALSE ); sspeed += csspeed; if( sspeed > cspeed ) sspeed = cspeed; element = 1200/sspeed; l_char = element<<1; l_word = element<<2; } /* adjust_speed */ analyze_form( tree ) long tree; { short element; /* Check speed settings */ cspeed = atoi( (char *) (*TE_PTEXT( (*OB_SPEC( T1CSPEED )) )) ); if( cspeed < 5 ) cspeed = 5; l_dot = l_el = 1200/cspeed; l_dash = 3*l_dot; sspeed = atoi( (char *) (*TE_PTEXT( (*OB_SPEC( T1SSPEED )) )) ); if( sspeed < 1 ) sspeed = 1; element = 1200/sspeed; l_char = element<<1; l_word = element<<2; csspeed = atoi( (char *) (*TE_PTEXT( (*OB_SPEC( T1CSSPD )) )) ); /* Check file filter option */ if( (*OB_STATE( T1FILTER )) & SELECTED ) filter = TRUE; else filter = FALSE; } /* analyze_form */ fetch( str, in ) char *str; FILE *in; { short i, j, skipspace; while( fgets( buf, 132, in ) != NULL ) { skipspace = TRUE; for( i=j=0; i= 0 ) if( str[j] == ' ' ) str[j] = '\0'; else break; if( j < 0 ) if( skipblank ) continue; else { skipblank = TRUE; return( BLANKLINE ); } skipblank = FALSE; strcat( str, " " ); /* Treat \n as space */ return( TRUE ); } return( FALSE ); } /* fetch */ print_info() { char text[128]; textbox( tbox ); graf_mouse( M_OFF, 0x0L ); wputs( "Morse Code Sender" ); ypos += gl_hchar; sprintf( text, "Sending: %s", infile ); wputs( text ); sprintf( text, "Speed: %2d WPM", cspeed ); wputs( text ); if( sspeed != cspeed ) { sprintf( text, "Spacing: %2d WPM", sspeed ); wputs( text ); } wputs( "Press any key to interrupt sending." ); graf_mouse( M_ON, 0x0L ); } /* print_info */ send_file() { char text[128]; FILE *in; short ans, stat, i, send_morse(); if( !getfspec( dirspec, infile, "\\*.*" ) ) return( FALSE ); if( (in = fopen( infile, "r" )) == NULL ) { sprintf( text, "[2][Unable to open input file %s][Try again]", infile ); form_alert( 1, text ); return( FALSE ); } graf_mouse( BUSYBEE, 0x0L ); print_info(); stat = TRUE; while( stat != FALSE ) { stat = fetch( text, in ); if( stat == FALSE ) if( filter ) strcpy( text, "[SK]" ); else continue; if( stat == BLANKLINE ) { if( filter ) strcpy( text, "[AR] " ); else strcpy( text, " " ); ans = sspeed; if( sspeed < cspeed ) adjust_speed(); if( ans != sspeed ) print_info(); } i = send_morse( text ); if( ev_mkreturn != 0 ) { graf_mouse( ARROW, 0x0L ); ans = form_alert( 1, "[1][Code practice interrupted!][Continue|Stop]" ); if( ans == 2 ) { fclose( in ); return( FALSE ); } else { graf_mouse( BUSYBEE, 0x0L ); if( i > 5 ) i -= 5; else i = 0; send_morse( &text[i] ); } ev_mkreturn = 0; } } fclose( in ); graf_mouse( ARROW, 0x0L ); return( TRUE ); } /* send_file */ TREE1T1CSPEEDT1SSPEEDT1CSSPD T1FILTER T1LITRAL T1SEND T1EXIT#define TREE1 0 /* TREE */ #define T1CSPEED 5 /* OBJECT in TREE #0 */ #define T1SSPEED 6 /* OBJECT in TREE #0 */ #define T1CSSPD 7 /* OBJECT in TREE #0 */ #define T1FILTER 10 /* OBJECT in TREE #0 */ #define T1LITRAL 9 /* OBJECT in TREE #0 */ #define T1SEND 13 /* OBJECT in TREE #0 */ #define T1EXIT 12 /* OBJECT in TREE #0 */ `&o#kAB(HSB$H  g  g  f RSBj` g =g %gJ`Rpr A9nA0m/ПЁRSBk`Jg n <#u8`zRpr A9nA0m/ПЁRSBkT`JgN n <#t `8Ck`Ck`rRSBk$  g  g  gQp`JBkQB"+ҫ u8$9t f $`nԀ n$<&ւֹu8// Bg?<JNAJg0<`6 .Au8#k#k#kN,/ KX,MNp??<LNA` /`NVp>@r//r/NDO @>@/</r/NDO /<Bp/NDO p9k/</r/NDO p9k/</r/NDO ByuD=yk/.NFXBn=@0.nlN09uDJ@g`@0.H n@ [f Byk` .]f0.3kH/aFX`.HH @m"P/ -INFXBn=@0.nlH nA  f9kH/G,>9kH/G0>9kH/G4>9kH/G8>9kH/G<>9kH/G@>9kH/GD>. HHnHnHnHnHnHnB/Hn//h//h//h//h//h//h//h///////NVO\=@g=|0. @ g3kBn0. @lH @uHRn`3u<3u>3u@3uB3uD3uF`09kLN^NuNVB/<N^6Pp/N`X09z"=@=n 29z&A=@09z$29z(A=@09zHr//NRP09zHr//NRP09zHr//NRxP09zHHn/NKnP09z@2. @3uZ09z"29zA3uXBN`XB/<N^6PN^NuNVH09zH/N_X09z&H/@rNE 29z"HЁ49z(H/@ /A rNE 29z$HЁ69zH89z H///////////,N\O 09zH/N_XLN^NuNVH 0. H29z"H49z$H69z&H89z(Hz/z////////9zFNYO$L0N^NuNSx3zHyz HyzHyzHyzN]O3zadap//N^6PNuNVx/.NFXJfRp/ND X=@H/@A n|:T /R//rG/ND O /./.NCPPp//N^6PHnHn|/.N^O JfHypJp/NZPpN^Nu09z$H/aXBp/N^6PJnfpN^Nu.|HH gJfpN^NuHn|/./. a O pN^NuNV/. /.NFPp\//.NEP-@Jf-n`R/./.NFPN^NuNV=|0. @ lH @y0Rn`3yHyyHyzHyyNHxO N^NuNVHHyz0Hyz.Hyz,Hyz*p/BN`O09z*H29z,H49z.H69z0H////BN_O3z09z.H/@rNE 29z*HЁ49z0H/@ /A rNE 29z,HЁ69zH89z H///////////,N\O 09zH29z*H49z,H69z.H89z0H/////N_VO09zHHyz(Hyz&Hyz$Hyz"r//N`OLN^NuNVH 0. H29z"H49z$H69z&H89z(Hz//////B//9zFNYO$L0N^NuNVJg/.p/NZPaPp /aX09zH/NHXNTBN8XN^NuNVB/<N^6Pp/N`X09zHB/NRP09zHr//NRxP09zH/./NKP n0(29zA3uZ029zA3uX09zHr//NRP n0=@=@=@0(=@=@=@0(=@=@0(=@=@09zHHnr//NIO BN`XB/<N^6PN^NuNV09zH29uXH49uZH/.///NJ@O09uZ29zA3uZN^NuNVHa09z$H/aXB9z09z(29z&H rNE =@J@j Hypna X09z"2.@3{29z&An3{09z29z(H/A rNE 29z$H=@H/@Ё3{ /Ҁ /3{HypNaXJf /9pazXHyzFp//Nb O Jf /9pFaTXHyzFp//Nb O BnJnfHyz@Hyz>HyzH69z@H////BNZFO09z:H29zH69z@H////x/////NZFO$p//N^6P09z.H29z0H//t//t /B/9zFNX OJyplg p /aXB/9zFNZP=@ @ f =|`09z:H29zH69z@H////x////x/NZFO$09z:H29zH69z@H////x/NZFOp /aX09z$H/aX/9zFaXa`HNaBarXLN^NuNV09{ @lpN^Nu09{29{A3{29{ΰAo3{09{2<H=AA3k0.@3kN^NuNV ."@ Q"P/ NB@X3{ @l3{09{2<H3k3k3k ."@ Q"P/ NB@X3{ @l3{09{2<H=AA3k0.@3k ."@ Q"P/ NB@X3{ . @2g 3pl`ByplN^NuNV/. /<Hy{JN|O Jgh=|p=@=@Hy{JNFX2.HlJyplf$0.RnH n0.H"@{J`0.H @{JHH/NGXJg"Jnf0.RnH n =|`V0.H @{JHH/NHX/HypNEPJg$0.RnH n0.H"@{JBnRn`0.H nB0.S@=@J@kH n fB`JnjJypjg`3pjpN^NuBypjHyp/.NCPPpN^NupN^NuNVHy{aXB/<N^6PHypaX09uZ29zA3uZHyzJHypHnN4O Hna~X09{H/HypHnN4O HnaVX09{H29{Hg /HyqHnN4O Hna"XHyqaXB/<N^6PN^NuNVvHyq5HyzJHyza@O JfpN^NuHyq:HyzJNP-@|Jf0HyzJHyqg"Hy|xHyqHykNO -@` Hy|xHyqHykNO -@Hy|HyqHyqNO -@Jf p/N,DXJf/.HyqNPp/N8X/9tN"X//.NP n(@Jf/.HyqNPp/N8XHy{/9{N vPBN8XN^NuNVB 9|dS#|dJkp y|`R|``Hy|`NX-@ g, f nRB` nR .`JfpN^Nu nB .N^NuNVB . S".lL n (S!@Jk "PRp` /.NX-@Rg nR . fNq . nBJfpN^Nu .N^NuNV nHHR-@Jg:"9|S#|Jk y|xR|xHH`Hy|x/.NP` 9|S#|Jk y|xR|xp HH`Hy|xp /NPN^NuNVB nHHR-@Jg4 n "(S!AJk "PRHH`/. /.NP-@` .N^NuNV/.NlXJ fpN^Nu n(@@ n "n"#H #ytpN^NuNVB . l rNEP @|`/NXR`B .u0l/N+XR`/. /.N,DPN^NuNV-||` n~@d(Jg ` n~@fpN^Nu/./. /.aO N^NuNV nJ(g/aX-yu4-n n(HH bg afB`-|R n( +WDHH n HHA wg rg af ./@J.gr`r //<//.N%nO -@RfpN^Nup/B/.N*O J.g <`p-@`J.gp`p".//.N%nP-@RfpN^NuJ.g <`p-@`^J.gp`p"./<//.N%nO -@RfpN^NuJ.g <`p-@`pN^Nu .rNEP @lJ(g n"n#H ` nB . n@ p!@!@ .@ N^NuNV n(g/p/NP n( JfJg/(/( N#P"n#H #HB))HH/N+XN^NuNV n(gpN^Nu nJg(f/(/( N#P n"n#H )@p#@#@#@N^NuNV n(0JgpN^Nu nJf(f/aNXJgpN^Nu n(gp-@`* n(gpN^Nu n(@-h n(HH/./( /N'O -@Jj n( @Jf n(@Jo n!n n(0JgpN^Nu n (S!@Jk "PRp` /.aXN^NuNV-n n (0JgpN^Nu n Jfr(fh fpN^Nu/. aXJgpN^Nu n (@ (!@S!@Jk"PR .HH`/. /.alPN^Nu n (gJ fpN^Nu .@ n (HHr/Hn/-AN)*O r-A-@` n (gpN^Nu n (@ g8Jo2 (S!@Jk"PR .HH`/. /.aPp-@"n Q gDJj-i` n (-@ n (HH/./( /N)*O -@` p-@-@ f n ( @` .g n (@ n (!@"h . g("(S!AJk "PRHH`/. /.aP n (0JgpN^Nu fpN^Nu .N^NuNV nJg(fpN^Nu/9tN"X n !@ Jfp #tpN^Nu n!yt(@p!@!@N^Nu#tt 9t#t$JtfpNu"yt "#yt$ NuBaXNuNVJjpN^Nu#t#t-|/<N,\X-@JfpN^Nu#t#t .S-@Jg/<N,\XJg .ѹt`a@pN^NuNV 9t$N^NuNV ./-@aXN^NuNVJnpN^Nu .^rNE -|t n-P-@JgV . n"(m6f"n"` n (!@Ѯ .t$ n N^Nu-n n-P` ./N,\X-@JgFJtf#t#t`& 9t yt"n-Hf .ѹt .N^NupN^NuNV . //.-@aPN^NuNVJ npN^Nu n . ^rNE -@-H .ѹt$-|t "n-Q-HJg n (-H nc"n"#n n pN^Nu nf"n" .Ш#@ n pN^Nu nd .䑹t$pN^Nu nfP nJg n"nc .䑹t$pN^Nu . nѨJg n"nf (ѩ"pN^Nu-n-n n-P` n "n"#n N^NuNVJk$ .u0lrNEP @lfp #tpN^Nu .rNEP @l N^NuNVB .u0lrNEP @lJgR` .u0fp#tpN^Nu .rNEP @l 9t(". -@ -Hgp`p n .  g> gJfV n@`\.gp`p nHH`8.gp`p` nHH` nBp#tpN^Nup n@ nJf-|rB . lFr NEP @qR//.NFlPJf .r NEP @q"nPR` n(Jf.g /.N/vX.gp` . //.N,P n!@Jkg@ . JgB/.N.P n!@JkgJp#t nBpN^Nu .  f$ n/(N/Xp#t nBpN^Nu .N^NuNV . ". ///.a|O N^NuNVJjp#tpN^Nu/.aX-@JfpN^Nu n(HH dN``` ``/./. n/(N/O -@Jkg JfpN^Nu ng .N^Nup-@-@ .lZ n R@HH g f$ .Sr///.aO .N^Nu n R`JfJfB .N^NupN^NuNVJjp#tpN^Nu/.aX-@JfpN^Nu n(HH drN``` ``P ngp/B/.aLO ng0/./. /(N/O -@JkgpN^Nu .N^NuB.p-@-@-@ .l n R@ f . g | S n~@ .R.-@A m/Hy~@ n/(N/O -@갮gpN^NuJkgpN^NuB`hJg:/.Hy~@ n/(N/O -@갮gpN^NuJkgpN^Nu .N^Nu .N^Nup#tpN^NuNV/.a X-@JfpN^Nu n(JgpN^Nu/./. n/(N08O -@Jkgp#tpN^Nu f`JgZ nfN .S-@Jk4B/./.afO Jgp/Hn/.a\O JfS` .RN^Nu .N^NuNV/.aLX-@JfpN^NuB n/(N/XJkgp-@ nB .N^NuNV/.N/vXJkgpN^NupN^NuNV/.aXN^NuNV/. /.NPN^NuNV .kopN^Nu yk .ѹkk N^NuNV/.aX-@JgN^Nu | N^NuNV 9kkѹk#kk#t #t#t$#t N^NuNVa-@JfpN^Nu /./9razP n-@Jfp-@ . dN```4`L`XJ fDA"n"`(  f*A"n"`  fA"n"`A:"n"`  fA"n"`A"n"`  f. .r/@B///r/r/NCO #k/.aXJkWDHHLN^NuNV .r/@///r/rA/NCO#kJWDHH N^NuNVJfB/./. /.aON^Nu"n QB/./. / NON^NuNVJfp//./. /.a`ON^Nu"n Qp//./. / NON^NuNVH Jf pLN^NuAJ$n"Rg pLN^Nup". /. n/(/. /p/pB/NCOLN^NuNVJgp@`p?r$.". v/A////./ n/(v//-@NCO-@Jj #kpN^Nu .N^NuNVBp/NCP n pN^NuNVB .l& n HH/r/r/NCO R` .N^NuNVB .l& n HH/r/r/NCO R` .N^NuNVv . lS`p}@A r//r/r /NCOp /p/p/NCO .HHr-Ax-@| .|T".xl>6@w f| w .wf .xUDN^Nu .xU n wRx` .| }l n  .|RN^NuNVB .lP n @HH fp /p/p/NCO .HH/r/r/NCO R` .N^NuNVJg .`pN^NuNVB . l" @~Jf @~ N^NuR`pN^NuNV nBN^NuNV. am zn aAN^Nu. N^NuNV. HH/aX.HH/@aX/fp`pN^NuNVp-@p-@p-@-@ n JgR`B . nJg n@JgR =g ,f .S".f .N^Nu .R.HH n HH//-@a2PJfB. ,g =f p-@p-@ .,fRR`^Jg .S".f .N^NupN^NuNVA-H-n n JgHHR-@-H %fb %f"nR R`HnHnHn/. N5LO-@JgB-@ .lA"nRR` . nR`l nB -@N^NuNVH p-@r-Ar -A n-@-@-@ -f pR-@ nHH/@R @t,gh 0fp0-@ nHHR-@ nHHR"@t,g$ .r NEPHHRЁ-@` n .fHRB nHHR"@t,g$ .r NEPHHRЁ-@` n lf pR-@B nHHrHkfNf`ne``g`Pc`*s`o`Xx`u`8d`Jg"n QX-P` "n QX-PJj(p-@` Jg"n QX-P` "n QX-Pp -@ .r NE -AJjDS .0". .r NE -@Jf fS .-A .r -A-H`vJg"n QX-P` "n QX-Pp-@S . @r . .-@JfA .r-A-H`Jg"n QX-P` "n QX-Pp -@S .0". .-@JfA .r -A-H` f-|"n QX"P-Iгf-|rB .lP nJgDR`Ap-@$n"RX @-H` p-@`B`p-@` pLN^NuJgJg .ܰl-n .BJgH .S-@Jk n R"nR` .S-@Jk\ n R .` .S-@Jk n R .` .S-@Jk n R"nR` n nR LN^Nu fp-@ mp` .-@R WDHHHnHnHn// n/N=O nPA".-@-A-HJjD fJg mp`p-@JgSp-@JgRJg* .R".Ё-@Jk .ѮJg@R`: .\ѮJj .D` .-@ coR oRJf4 .ܰo* . .S-@Jk . n R R`Jg n -R JgJjp n 0R.R-H .S-@Jk .R-@Jj n 0R ` .S-@Jk n"n RR ` n 0R ` .SJk0 .S-@Jk n"n RR ` n 0R `Jg n .R .S-@Jk: .S-@Jk n"n RR ` n 0R ` .S-@Jk n"n RR ` n 0R n .R .S-@Jk0 .S-@Jk n"n RR ` n 0R ` n ER-H Jj-R D` n +R p -@S .r NE 0 . .r NE -@ nJf . lR n R ` f4 .ܰo* . .S-@Jk . n R R` n nR LN^NuNPNQH0$h "NAhBiBi/f$h&( S`RB3BHB3BBF4)g\jVBk Bia`Ha2Ri`tiaaSiJkSi`BBBF/gaJFf BfSi`0 RB Bkv$( Jg(<iSBk:x Bl281  9o"0 R1 1 SBjRiSCzgR$hG0 gSD6CkxQJCk0Q$hBJigS$hB2)H$L NYNXNuBfNu|H0$&҃тdRL Nu/t?<@ B m RSWfO$NuNPNQH~0pr3@3@3@3@at 0fi ` -f iaV 0m> 9n8i 3F <)i/gRi`a:<) ҆Bц` .f Jif`Ri` eg efNa +g -f ia 0m. 9n(:)iFi im?)_ f $hB`4)?)_gDBi/gT3|?Jk Si`Jig ktia\adSi`aRi`t4)?)_gNA$h$$$h$p0)L~NYNXNu,(g !|NuH$hN<L?3FS fiNu?)_g|Nu$fprt`"HBHBB/t Q$Nu//gdB Jf BB /g$RB/fJjRd R`SBgBo Bl(J?BBHB_HB&Nu/<NBlp`/<NBl0<HBBH@B@Or`NV/.NC XHn/-@NB|P .N^NuNV#hN^NuNVp n-@-@-@ -f r-A-A` n +fp-@ . nHHR At,g, .r NEP nRHH0Ё-@`JgD n .N^NuNV nHHR"@t,gR` .N^NuNV/.NFX n-H nR"n R Jf .N^NuNV/.NFX n-H .SJo n "nR JgR` nB .N^NuNVH*OBkpn@N?.*?.&?."?.?.?.?.?. NA.ML?N^NuCr#d O0/@11g"HS@4TBB$0 g/`?S@j?(NA.ydNuCs#d O0/@11g"HS@4TBB$0 g/`?S@j?(NM.ydNuCs#d O0/@11g"HS@4TBB$0 g/`?S@j?(NN.ydNuH<*g2jD(g(jDBv㒴eRQ"jDjD`BBL1o<"/ !A:!o1o81|.!@21| ,NbAbCD!ICD!IHNuAb1oD1oH1o D1o81|.1|21|g,NbHNuAb!o1o81|.Bh21|r,NbAbCD!IHNuAb!o1o81|.Bh21|61| ,NbAbCD!IHNuAb1oF1oD1oP1oF1o D1o81|.1|21|6BhHBhJBhLBhNBhR1| ,NbHNuAb1oF1oD1oP1oF1o D1o81|.1|21|6BhHBhJBhLBhNBhR1| ,NbHNuAb1oL1oF1o D1o81|.Bh21|6BhHBhJBhN1| ,NbHNuAb1oF1oD1oJ1oH1oF1o D1o81|.1|21|61| ,NbHNuAb1oF1oD1oJ1oH1oF1o D1o81|.1|21|61| ,NbHNuAb1oJ1oH1oF1o D1o81|.Bh21|61| ,NbHNuAb!o1o81|.Bh21|61| ,NbAbCD!IHNuAb!o1o81|.Bh21| 61| ,NbAbCD!IHNuAb1oF1oD1oH1oF1o D1o81|.r"oRJf1A2p"o/ EH4Q$_h21| 61| ,NbHNuAb1o D1o8Bh.1|21| ,Nb0(DHNuAb1o D1o82<"o C/ EF4Q$_Bh.1|21|,NbHNuAb1o D1o8Bh.1|21|,Nb0(DHNuAb1o D1o8Bh.1|21|q,NbHNuAb1o D1o8BhF1|.Bh21|,Nb0(DHNuAb1o D1o8Bh.1|21|,Nb0(DHNuAb1oF1o D1o8Bh.1|21|l,NbHNuAb1o D1o8Bh.1|21|,Nb0(DHNuAb1o F1o81|.Bh21|,Nb0(FHNuAb1o D1o8Bh.1|21|,Nb0(DHNuAb1o F1o8BhD1|.Bh21| ,NbAb"o 2D"o2F"o2H"o2JHNuAb1o D1o8Bh.1|21|k,NbAb"o 2D"o2F"o2H"o2J0(DHNuAb1o D1o8Bh.1|21| ,Nb0(DHNuAb1o D1o8Bh.1|21|,Nb0(DHNuAb1o D1o8Bh.1|21|,Nb0(DHNuAb1o D1o8Bh.1|21|j,Nb0(DHNuAb1oF1o D1o8Bh.1|21|',NbAb"o2D"o2FHNuAb1o D1o8Bh.1|21|,Nb0(DHNuAb1o D1o8Bh.1|21|,Nb0(DHNuAb1o D1o8Bh.1|21|,Nb0(DHNuAb1o D1o8Bh.1|21|h,Nb0(DHNuAb /!@2!o1o8Bh.1|p,NbAbCD!IHNuAcBh1|Bh1| NbAc0(0HNuAc!o 01o 21o01|1|1|1| NbAc0(0HNuAc!o 01o 21o01|1|1|1| NbAc0(0HNuAc1o0Bh1|Bh1| NbAc0(0HNuAc1o21o 0!o01|1|1|1|NbAc0(0HNuAc1o 0!o01|1|1|1|NbAc0(0HNuAcBh1|Bh1|NbAc0(0HNuAcBh1|Bh1|NbAc0(0HNuAc1o41o 21o01|1|Bh1|NbAc"o22"o24"o26"o280(0HNuAc1o81o61o41o 21o01|1|Bh1|NbAc"o22"o24"o 26"o$280(0HNuAc!o0Bh1|1|1|NbAc0(0HNuAc1o 21o01|1|Bh1|NbAc0(0HNuAc1oFN1oBL!o<01o:J1o6H1o2F1o.D1o*B1o&@1o">1o<1o:1o81o61o41o 21o01|1|1|1|NbAc"oH22"oL24"oP26"oT28"oX2:"o\2<0(0HNuAc1o 21o01|1|Bh1|NbAc0(0HNuAc1o21o 0!o01|1|1|1|(NbAc0(0HNuAc1o 0!o01|1|1|1|)NbAc0(0HNuAc1o:1o81o61o41o21o 0!o01|1|1|1|*NbAc0(0HNuAc1o61o41o21o 0!o01|1|1|1|+NbAc0(0HNuAc1o 0!o01|1|1|1|,NbAc"o 22"o240(0HNuAc1o21o 0!o01|1|1|1|-NbAc0(0HNuAc1o61o41o21o 0!o01|1|1|1|.NbAc"o220(0HNuAc1o&>1o"<1o:1o81o61o41o21o 0!o01|1|1|1|/NbAc0(0HNuAc1o 0!o01|1|1|1|2NbAc0(0HNuAc1o&@1o">1o<1o:1o81o61o41o 21o01| 1|1|1|3NbAc0(0HNuAc!o01o01|1|1|1|4NbAc0(0HNuAc1o01|1|Bh1|5NbAc0(0HNuAc!o0Bh1|1|1|6NbAc"o22"o 24"o26"o280(0HNuAc1o61o41o 21o01|1|Bh1|FNbAc"o22"o240(0HNuAc1o">1o<1o:1o81o61o41o 21o01|1|Bh1|GNbAc"o$22"o(240(0HNuAc1o:1o81o61o41o 21o01|1|Bh1|HNbAc0(0HNuAc1o">1o<1o:1o81o61o41o 21o01|1|Bh1|INbAc0(0HNuAc1o">1o<1o:1o81o61o41o 21o01|1|Bh1|JNbAc0(0HNuAc1o61o41o 2!o01|1|1|1|KNbAc0(0HNuAc1o41o21o 0!o01|1|1|1|LNbAc0(0HNuAcBh1|Bh1|MNbAc"o22"o24"o 26"o280(0HNuAc!o01o01|1|1|1|NNbAc0(0HNuAcBh1|Bh1|ONbAc"o22"o24"o 26"o280(0HNuAc!o4!o0Bh1|1|1|ZNbAc"o 220(0HNuAc1o81o61o41o 21o01|1|Bh1|dNbAc0(0HNuAc1o81o61o41o 21o01|1|Bh1|eNbAc0(0HNuAc1o01|1|Bh1|fNbAc0(0HNuAc1o01|1|Bh1|gNbAc0(0HNuAc1o 21o01|1|Bh1|hNbAc"o 22"o24"o26"o280(0HNuAc1o:1o81o61o41o 21o01|1|Bh1|iNbAc0(0HNuAc1o 21o01|1|Bh1|jNbAc0(0HNuAc1o01|1|Bh1|kNbAc0(0HNuAc1o:1o81o61o41o 21o01|1|Bh1|lNbAc"o22"o 24"o$26"o(280(0HNuAc!o0Bh1|1|1|nNbAc0(0HNuAcBh1|Bh1|oNbAc0(0HNuAc1o 21o01|1|Bh1| 1|pNbAc"o "0Bh 0(0HNuAc!o 01o 21o01|1|1|1|qNbAc0(0HNuAc1o 0!o01|1|1|1|rNbAc0(0HNu"0<sNBNu"0<NBNu1.01c c8e8g8i8c k8c8g8e8i8# ..._.._.._.._._....._..__._._._....____._.__._.__._..._._._._.__..___..._._._.__.._._____.____..___...__...._....._....__...___..____.___..._._._._..._._._..__...__..._._._....._.__........____._._..___.___.__.__._._...._.._..._.___..__.____............__._.__..._._._....._.__........____._._..___.___.__.__._._...._.._..._.___..__.____..kkkkkkkkkkkkkkllllll l llllllllll l"l$l&l,l3l:lBlHlNlUl[lblilolvl|llllllllllllllllllllllllmmm m mmmmm!m%m*m/m3m7m9m=mBmFmKmPmUmWm`mbmdmkmmmpmumzm~mmmmmmmmmmmmmmmmmmmmmmmmmm[3][Resource (.RSC) file is missing!][Abort]o[3][Resource (.RSC) file is defective.][Abort]p[3][Invalid filespec][Continue][3][Insufficient screen resolution!][Abort]SENDER.RSC0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ.,?-/ Morse Code SenderSending: %sSpeed: %2d WPMSpacing: %2d WPMPress any key to interrupt sending.\*.*r[2][Unable to open input file %s][Try again][SK][AR] [1][Code practice interrupted!][Continue|Stop]rwaaCan't open stdin file Can't open stdout file con:CON:prn:PRN:lst:LST:lpt:LPT:lpt1:LPT1:aux:AUX:com:COM:com1:COM1:rdr:RDR:pun:PUN:nul:NUL:null:NULL:CON:AXI:,AXO:,LST:,NIL:,CON:=*r0123456789ABCDEF ((((( H ((((( H B H*"2,    & 4 ""  > \&         4 R$&       $   B                  6 $J       0   6 .  "   d    P:$  :":V:l&$@j$&:P(J.z    ,$ , Xd`$  J $2 40 & 0  F H 4 T<@HF ڮD@.x$ZR&:P>@@@|*<  "" *""J "F0 "(V V @ H H : ((h "< "" &"( """&*".""""(""""&00 0*..:."(>(0*H<*0<T*T*"".4L@LL66.*0(::""(.@("@0".0*$24$ Morse Code SenderBy Don Rice, KL7JIQ20Character sending speed: __ WPM9920Use spacing for: __ WPM99 0Change spacing speed at: __ WPM/section99LITERALFILTERInterpretation of file text:EXITSELECT AND SEND FILE$678LMNQq tw ( 422,22H d ' 2 (  )%/* GEM routines used by SENDER.C */ short xpos, ypos; /* GEM globals */ short contrl[12], intin[128], ptsin[128], intout[128], ptsout[128], pxyarray[12], int_in[11], int_out[57]; /* Working storage */ short handle, wi_handle, ap_id, gl_hchar, gl_wchar, gl_wbox, gl_hbox, xwork, ywork, wwork, hwork, xdesk, ydesk, wdesk, hdesk, xold, yold, hold, wold, xobj, yobj, wobj, hobj, xmouse, ymouse; long resrcs; char *no_rsc_file = "[3][Resource (.RSC) file is missing!][Abort]", *bad_rsc_file = "[3][Resource (.RSC) file is defective.][Abort]", infile[128], dirspec[128]; #define OB_SPEC( x ) (long *) (tree + (x) * sizeof( OBJECT ) + 12) #define OB_STATE( x ) (short *) (tree + (x) * sizeof( OBJECT ) + 10) #define TE_PTEXT( x ) (long *) (x) clear_window( top ) short top; { short wbound[4]; graf_mouse( M_OFF, 0x0L ); wind_update( BEG_UPDATE ); wbound[0] = xwork; wbound[1] = top; wbound[2] = xwork + wwork; wbound[3] = ywork + hwork; vsf_color( handle, BLACK ); vsf_style( handle, 5 ); vsf_interior( handle, 2 ); vr_recfl( handle, wbound ); ypos = top + (gl_hchar<<1); xpos = xwork + gl_wchar; wind_update( END_UPDATE ); graf_mouse( M_ON, 0x0L ); } /* clear_window */ close_window() { wind_close( wi_handle ); graf_shrinkbox( xwork+wwork/2, ywork+hwork/2, gl_wbox, gl_hbox, xwork, ywork, wwork, hwork ); wind_delete( wi_handle ); } /* close_window */ deselect( object ) /* Turn off deselected object in resrcs */ short object; { objc_change( resrcs, object, 0, xwork, ywork, wwork, hwork, NORMAL, 1 ); } /* deselect */ gem_init() { /* Initialize application and open windows */ ap_id = appl_init(); handle = graf_handle( &gl_wchar, &gl_hchar, &gl_wbox, &gl_hbox ); open_vwork(); open_window(); graf_mouse( ARROW, 0x0L ); } /* gem_init */ getfspec( finit, fspec, wcard ) char *finit, *fspec, *wcard; { short drive, okay; char fname[128]; if( strlen( finit ) == 0 ) { drive = Dgetdrv(); /* current drive */ finit[0] = drive + 'A'; finit[1] = ':'; Dgetpath( &finit[2], drive+1 ); /* current directory level */ strcat( finit, wcard ); } graf_mouse( ARROW, 0x0L ); if( !fsel_input( finit, fname, &okay ) ) { form_alert( 1, "[3][Invalid filespec][Continue]" ); return( FALSE ); } /* Redraw main window */ clear_window( ywork ); graf_mouse( BUSYBEE, 0x0L ); if( !okay ) return( FALSE ); /* CANCEL */ if( fname[0] == ' ' || fname[0] == '\0' ) return( FALSE ); merge( fspec, finit, fname ); return( TRUE ); } /* getfspec */ merge( spec, dir, file ) /* combine directory and filenames */ char *spec, *dir, *file; { char *ldir, *strrchr(); strcpy( spec, dir ); ldir = strrchr( spec, '\\' ); if( ldir == NULL ) ldir = spec; else ldir++; strcpy( ldir, file ); } /* merge */ open_vwork() { short i; for( i=1; i<10; i++ ) int_in[i] = 1; int_in[10] = 2; v_opnvwk( int_in, &handle, int_out ); } /* open_vwork */ open_window() { wind_get( 0, WF_WORKXYWH, &xdesk, &ydesk, &wdesk, &hdesk ); wi_handle = wind_create( 0, xdesk, ydesk, wdesk, hdesk ); graf_growbox( xdesk+wdesk/2, ydesk+hdesk/2, gl_wbox, gl_hbox, xdesk, ydesk, wdesk, hdesk ); wind_open( wi_handle, xdesk, ydesk, wdesk, hdesk ); wind_get( wi_handle, WF_WORKXYWH, &xwork, &ywork, &wwork, &hwork ); } /* open_window */ select( object ) /* Highlight selected object in resrcs */ short object; { objc_change( resrcs, object, 0, xwork, ywork, wwork, hwork, SELECTED, 1 ); } /* select */ terminate( dialog ) /* Show final dialog, close everything and quit */ char *dialog; { if( dialog != NULL ) form_alert( 1, dialog ); close_window(); m_wait( 10 ); /* Clear event queue */ v_clsvwk( handle ); appl_exit(); exit(0); } /* terminate */ textbox( box ) short box[4]; { short outline[10]; graf_mouse( M_OFF, 0x0L ); wind_update( BEG_UPDATE ); vsf_color( handle, 0 ); vsf_interior( handle, 1 ); v_bar( handle, box ); ypos = box[1] + gl_hchar; xpos = box[0] + gl_wchar; vsf_color( handle, 1 ); outline[0] = outline[2] = outline[8] = box[0]; outline[1] = outline[7] = outline[9] = box[1]; outline[3] = outline[5] = box[3]; outline[4] = outline[6] = box[2]; v_pline( handle, 5, outline ); wind_update( END_UPDATE ); graf_mouse( M_ON, 0x0L ); } /* textbox */ wputs( str ) char *str; { v_gtext( handle, xpos, ypos, str ); ypos += gl_hchar; } /* wputs */ ******************************************************************** Deze diskette is samengesteld door de Stichting ST, Postbus 11129, 2301 RH Leiden. Onze bibliotheek van public domain programma's omvat op dit moment (zomer 1988) al zo'n drie honderd disks. Daarop vindt u programma's op elk gebied, van tekstverwerker en database tot de leukste spelletjes, de fraaiste tekenprogramma's en de handigste utilities. Ook bevat onze bibliotheek een speciale afdeling voor public domain disks met Macintosh software, die te gebruiken zijn onder de ALADIN emulator. Deze MAC-PD serie bevat tot nu toe ongeveer vijfendertig disks. ******************************************************************** U vindt in het twee maandelijks tijdschrift "ST" (Onafhankelijk tijd- schrift van en voor gebruikers van Atari ST computers) een overzicht en een bespreking van de inhoud van de nieuwe public-domain diskettes. Dit tijdschrift bevat tevens een bestelkaart zodat U vlot over de software kunt beschikken. De Stichting ST geeft ook een speciale PD catalogus disk uit. ************** Deze public domain disk is geproduceerd en gedistribueerd door: Stichting ST afd. Software Bakkersteeg 9A 2311 RH LEIDEN ************** Ondanks onze controle komt het af en toe voor dat een diskje niet goed is gecopieerd.Mocht U dit overkomen, aarzel dan niet en stuur de defecte disk aan ons terug. U krijgt dan direct een vervangende disk toegestuurd. ************************************************************************ Teneinde het voor ons mogelijk te maken om productie fouten op te sporen en vervolgens in de toekomst te vermijden, zijn alle disks, geproduceerd door de Stichting ST, voorzien van een groen productie nummer. ************************************************************************