8L2C)pJJJJ IH(ȱH:=IH[H`@HcH  $ +   I/H`JLNGȄBȄF aK  haaFF  mJm# KKJ UJ )J ۈ) ;J3ȱJFȱJGJKaȄM  aaNNJFLGJL L X, { !!!  { 0F! $ޛ!ٽ!!!!L(@(ތ!л^!ߑ(0ȩA(!&У~!0 Xl!! ;!V! !q!  ! !厧!!!!`堠T21IESȰ' &PRODOSȰ ;'STARTUPȰ FACTUR Ȱ PRONDAEް ްMSDOS) >dLԡm#i㰼m#iЕOLԡȱfg hi !dLԡ憦  Ljmkm l y`2 Lԡ8(Je稽)ʈ@LLnSOS BOOT 1.1 SOS.KERNEL SOS KRNLI/O ERRORFILE 'SOS.KERNEL' NOT FOUND%INVALID KERNEL FILE: xةw,@  ȱlmi8#)!)? &PRODOS `DaElH$?EGvѶK+`L HHLy XP LM ŠϠĠӠS)*+,+`F)) (*=GJFjJJA QE'+ '== `@ STSP8QSS8 m P o R(8RӮîͮЮЮ̮Ů젱堽@0X(0`P@p  (N),T0,P(N,1),T(N,0),T(N,1):P(N,0)T0CE::D$:T00:CL$"CLIENTS":D$"OPEN"CL$:D$"READ"CL$:CN:D$ JJ%CN10:R%(CN),AD$(CN,3):D$"READ"CL$:I1CN:AD$(I,0),AD$(I,1),AD$(I,2),AD$(I,3),R%(I)::D$"CLOSE" 5:958:770:S1ė: S11İ130:DF$R E SLOT1:"Port Imprimante D$"OPEN"FI$:D$"READ"FI$:Z1,AA,N$,DV$:ABCEAA(AACE):D$:Z2Z1:Z5Z5:"TARIF en vigueur au "DV$::7:Z" articles r{pertori{s":P(Z5,1),NO$(Z5),T(Z5,1),Q%(Z5)e NO$(0)(N$,6)","(N$,8):D$"READ"FI$:N1Z:NO$**************)* FACTARIF *>************** n:(21):D$(4):G$(7):R$(13):K%16368(175)256(176)416 :AZ%48:CE100:ZE.01:SE$"--------":E%27:E$(E%):W0$(E%)"O":FI$"TARIF":A9%57:AP%46:AV%44:A(R)(R.5)C5"P <D$"BLOAD CARAC.DOUBLE,A$4000":D$"BSAVE /RAM/CARAC.DOUBLE,A$4000,L919"c FD$"-FACTARIF"*********************7* Installe FACTARIF *S********************* _ D$(4)pD$"-PRO.FP"D$"-FLOAD"(D$"BLOAD COUNT,A$4000":D$"BSAVE /RAM/COUNT,A$4000,L955" 2D$"BLOAD CARAC.INC,A$4000":D$"BSAVE /RAM/CARAC.INC,A$4000,L95GȰ`D %COUNT2Ȱ@t )CARAC.INC5Ȱ@0 ,CARAC.DOUBLE8Ȱ@0 %TARIF; Ȱ5 'CLIENTSBȰ5 FACTURuHUSTON!Ȱ' 'STARTUP eȰ (FACTARIF\"Ȱ* PRO.FP Ȱi 'CONT2.S" Ȱ CONT2-Ȱ %FLOAD/---------------------";J x"LETTRE=RUN ESC=QUITTER OU FLECHES ";:R$b 22::R$(27)500 R$(10)R$(21)ė:V2:50 R$(8)R$(11)40 R$"Z"R$((R$)32) R$(NL64)R$"A"110 :I1(R$)64:P$,P$::II12 I6I :(21)::E:" * DISQUETTE TREMPLIN MICRO NUMERO 21 * ":O34,2_(N0:V2::i2NN1<P$,R$:P$"*"Į:NLN1:N0:110FVV1::V:1:(64N);:P3);P$;:41(R$):R$;ZV22NLN:110d50 n23:"-------------------E$:MF%M%:440 (:830:PR$"N"20:1200:3000:S1350,700:3230::22::"ENCORE UNE ":830::PR$"O"40:900:I1Z5:Q%(I)0::20 ; FORMATTAGES <(" "(W),3);: F(W)ZEW0:W$" 000":80 HW$(" "((.1CEW)),7)$ PS2(W$,2)"00"W$(W$,5)" ":A ZW$(W$,5)","(W$,2):U dWW$".. ":y nW(W)W$(" "(W),2)" ": xW$(" "(W10),3):W$(W$,2)","(W$,3): " MASQUE DE SAISIE H%7:V%4:T%2:L%8:V%:"Date :JJ MM AN" P%0 "3 : @ r{ception":"4 : r}glement fin de mois":"5 : 30 jours fin de mois":::"VOTRE CHOIX";::" < >";:15&K%,0:PR$:CR(PR$):CR1CR5550:CR:CR620,630,640,650,650:16:958:(41(DW$))2:DW$/" SELECTION CLIENT k0V%21:V%:10:"8:V%:22:"Date :.. .. ..":135:X%E%520:DA$RE$T%1:V%9:H%16:L%7:V%:6)"Acompte :.......":135:X%E%ĴAV520:525EĢ11:5:"Assurance";:840:ASPR$"O" CONDITIONS qAK(RE$):16:"1 : sans condition":"2 : r{gl{ ce jour":2:958PT%1:V%3:H%16:L%6:V%:"Exp{dition "AV$" :......":135:E(RE$)V%5:H%16:L%2:V%:" Remise en % :..":135:X%E%500:R(RE$)T%1:V%7:L%7:H%11:V%:"Avoir "AV$" :.......":135:X%E%510:AV(RE$):AV5306 T%2:H%27:L%...":140:X%E%450:Q%(RE$):Q%(N)Q%(N)Q%5:868:"ajout ";::"ARTICLE "N" ";::KQQ%P(N,S2):" "Q%" x "P(N,S2)" = "KQ:T0T0KQ:7:868:"cumul:"Q%(N)" "NO$(N)9:868:15:"total partiel = "T0:958:450" EXPEDITION Etc.. :i termin{ tapez ";::"RETURN"::35,20V%14:H%14:L%2:T%5:V%:"Code article :.. ( ? pour consulter)":135:N(RE$):RE$"?"RE$","İ2000N490:NZ5450:NZQ%(N)660/P%1:V%18:H%10:L%4:T%3:V%2:868:NO$(N):V%:"Quantit{ :.:ASĺMG)"T{l{phoner en cas d'avarie pour communication du num{ro de la police d'assurance.":MG)"Adh{rent d'un C.G.A. nous acceptons les r}glements par ch}que. ";:S12ĺDW$" SAISIE FACTURE ):14:"FACTURE"B$" du "DF$:23:"sSE$:WT0:70:43MG)"Net TTC"38)W$YS2WA(ABT0):70:48MG)"dont "NO$(0)3)W$AK434:17MG)"Acompte de";:WAK:W(W)İ70:428W$" "((W))W$" frs. Reste @ payer";:WT0AK:W(W)İ70:432W$" "((W))W$" frs."cWT0:70:43MG)"Marchandises "AV$29)W$:EWE:70:43MG)"Port "AV$37)W$:T0T0EAVWAV:72:43MG)"Avoir "AV$" du "DA$24)W$:T0T0AV&88MG)SE$:WT0:70:43MG)"Total "AV$36)W$:S2WA(AAT0):T0T0W:70:48MG)NO$(0)30)W$:88MG)3):365jWN:60ym6):WQ%(N):60:6)NO$(N)48(NO$(N))):WP(N,S2):70:W$14):WQ%(N)P(N,S2):70:W$:T0T0Wr:Rĺ88MG)SE$:WT0:70:43MG)AV$42)W$:WA(T0R):70:48MG)"Remise "R" %"31((R)))W$:T0T0WW|EAV410:88MG)SE$:LTQ%(N)::LTLT3R2(EAV)EAV2S2AK2ASH_MG11rb91)"VALLAURIS le "DF$;:LT40ĺW0$;d:::MG)CL$:I15:::T00:MG)"Code Quantit{ D{signation"36)"Prix"B$13)"Prix Total":eN1Z5:Q%(N)370 hMG):NZĺ0:#?" DERNIER JOUR DU MOIS E@M%MF%(CR5)(1(MF%12)12)JF%31(M%4M%6M%9M%11):M%2F%28:T1A%4:T1T1(T1):T2A%CE:T2T2(T2):T3A%400:T3T3(T3):T1T2T30T10T2F%29T]" IMPRESSION FACTURE >^LT5:N1Z5:LT Q%0: DATE 4Q%1:X%AZ%X%A9%ıb(CH$)2J%((CH$X$,2)):J%1J%31ı(CH$)5M%((CH$X$,5)):M%1M%12ı"(CH$)8A%((CH$X$,8)):A%1900A%CE(A%50):330:J%F%ġ:140,(CH$)5(CH$)2X$X$" "6Q%150:CH$CH$X$:X$;:(CH$)L%1150:R$;RE$(CH$,2)AV" NB ARTICLES vQ%X%45(X%AZ%X%A9%):} Q%X%63X%44(X%AZ%X%A9%): SOMME Q%1:PQ%X%AP%X%AV%:(P%PQ%)X%A9%PQ%1X%AZ%ıPQ%X$".":P%1CH$":":RE$"":V%:H%:":";Y K%,0:X$:X%(X$):X%13Č868:X$:CH$":"210:200p X%E%CH$":"ĺ: X%8180:CH$":"170:T%6150::570 (CH$,1)"."P%0 CH$(CH$,(CH$)1):X$"."X$;:150*T%230,260,220,1000,225,220:Q%nouveau client";:835:PR$"O"C%0:T%4:H%15:L%80:V%:958:"Nom & adresse :...";:140:CL$RE$:615::P%1:T%6:V%23:H%33:L%2:J0JJ%::I110:IJ10CNI10:JJJ%:590D("0"(IJ10)" ",4)AD$(IJ10,0):NOXV%:G$"num{ro client ou RETURN ou <= :..":140:C%(RE$):C%CN600:C%J10C%11J10JJJ%Y:CL$AD$(C%,0)". "AD$(C%,1)".":AD$(C%,2)""CL$CL$AD$(C%,2)ZR%(C%)RKR%(C%)cRKRRKdCL$CL$"."AD$(C%,3):f" D{composition adresse [gLA(CL$) ,H hɈɋЕ<К) <Ћ>? LcLȄ>?Ѩ9A\c`{}e|u8  g RPQ  L*Y ߅ jݠ<@LAȱ<^ȱ<_@A^\c`{}e|u8 =A'(>?P>Q?% 3230[% FO$"CARAC.DOUBLE":3240s% E$">"E$"T16"E$"M";}% MG15% E$"!"E$"n"E$"'";MG)"tremplin micro";E$"$";5)E$"N";"La Petite Motte"& E$"!"E$"n"E$"'";MG)"TREMPLIN MICRO";E$"$";5)E$"N";ticle $34,V%1:35,21,$V%2:958k$V%2:"Cl{ article :";AR$:958:N(AR$):(N)N102020$NO$(0),AR$,Z5,N:NZ52020$V%2:958::V%:H%1:N:$ " Impression en-t}te $ 3250:3230$ FO$"CARAC.INC":32404% E$"M"20)(C%,I)""ĺ70)AD$(C%,I)*#:3230::E#" ENTREE DES TEXTES `#Q%X%32:Q%X$(X%)f##" Imprimante pr}te? #22:958::"RETURN";::" si l'imprimante est pr}te ";#G$;:K%,0:PR$:PR$R$1210::$" Recherche par nom arT00:22:12::" IMPRESSION ";*"CG$;L"H:" "(8)(8)(8)(8);v"MK%,0:PR$:PR$"N"PR$"O"ĺG$;:845"RPR$"> ":"" IMPRESSION ENVELOPPE "22:12::G$"ENVELOPPE";:835:PR$"N"ı#1200:3250:3220:I18:W0$::I03:AD$PR$"0"PR$"2"780:PR$:S1(PR$):S1ıi!:"1 : H.T."::"2 : T.T.C."::"votre choix < >";:15! K%,0:PR$:S2(PR$)1:S20S21800:PR$:B$" H.T.":AV$"HT ":S2B$" TTC ":AV$"TTC"!*TA$"Tarif"" "AV$" au "::!4 IMPRESSION? !">):70:W$7) W%NZ1:WW%:60:2):W%83S2ĺNO$(W%)24(NO$(W%))):WT(W%,0):100:W$2):WT(W%,1):100:W$;:WP(W%,S2):70:W$; ::  MENUS 6:"0 : Termin{"::"1 : Facture"::"2 : Tarif"::"votre choix < >";:15,! K%,0:PR$:SION TARIF MG7:435:TA$DV$::S42S2:MG)"Code D{signation"13)"haut diam"3S4)"Tarif"7S4)"Code D{signation"12)"haut diam"3S4)"Tarif":W0$ N1Z1:MG):WN:60:2)NO$(N)25(NO$(N))):WT(N,0):100:W$2):WT(N,1):100:W$;:WP(N,S2vant le "(F%)" "("0"(M%)" ",3)(((M%1)A%),2):\" ARTICLE NON REPERTORIE T%4:V%16:H%13:L%24:V%:"D{signation :........":140:NO$(N)RE$:T%1:V%18:H%6:L%7:V%:"Prix :.......":140:X%E%660P(N,S2)(RE$): " IMPRES:PT0:I03:AD$(0,I)""::I1LA:X$(CL$,I,1):X$"."PTPT(PT3):LALA1(PT1):617vhAD$(0,PT)AD$(0,PT)X$~i:k" CONDITIONS DE REGLEMENT lDW$"":vDW$"R{gl{ ce jour":DW$"R}glement @ r{ception":<320:DW$"R}glement a hgʎX?kύX! "&#Í' / XI0    `x A`ŠԱ٠Ҡԍؠijij ij ǧij؍ҠԠǍ؍Š獠РĴ堧 챠Š철󍪭Íàʍꍠ٠ бҠ͍Ҡ͠占ҠҠͯͫ͠à͍ŠԱàͫ卺±ٍ詬ٍРܧ à꠻ Š꿠 㧠 卺꿠Рৠ àꍺРѠ占РŠ姍РŠꍠҠ͍ҠԠ獠Ҡҍ ٠àԩٍٍٍ̠Í٠ٽ٠占٠٠ 퍠٠ 占Ѡ٠⠽̠蠽̫̫ŠƍİˠϢ򠽠ȍҠԠ報٠Ҡҍ 󮍪 ʍ 󧍪̠̠ ؤ ͍ 卪 ؤ 卪 卪 󍪍 ή 썪 ֍ӍàҠԍҠԍРŠ챍 ٮ ִζб ؤ ùÍԠĸōԠč֠Ÿ͠ŸΠƵ ǠҠ΍؍ҭ؍Íàíǭ֫Ҭ؍àíǭ֫àЧ!#$%&'()*+,Ԡ±Ԡ·  ԍҠ֠ƵĠð ðԲ͠Ķ͠ĶҠĶÍ͠ōҠùԠųƠŲƲҠŷ̠Ҡҍ Ԯ ōР̠àč̠Šƍ̠͠ԠԠԱҠ͍ҠԠ ԍԍ٠ԫҠ͠ б٠ٍР⍠àԠٍٍٍٍвؠ⍠٠гٍٍРܧàꍠŠ꿍㧍꿠Р্àꍺРѠ占РŠ.0a a >? , a`l<ȥ<<ȥ<c?ƅcةB8C< ȱ<ȱ<ɿ  ac? ?P>Q?? LcL XiiL` H hɻs ߅<= l lݠ@Ȅ>?Ѩ9A\c`{}e|u8  g RPQ  L*Y ߅ jݠ<@LAȱ<^ȱ<_@A^\c`{}e|u8 =A'(>ҠƠ ÍЫ ԍРԲ 卍ԠРҍǠԠƍб󍍪Ġ ʍРˍѠ􍍠ؠ؍؍؍̠占ŠԠ󍍪٠占؍Š덠Ҡ̍Ҡԍ 占Р ѠčР  ŠĠѠԠ 퍠ؠ؍؍؍̠ŠŠō ҠԍҠ֍ˍҠԍҠԍ΢ҠԍҠ͍Ԡč̠  占ؠ卺ҠԠ孭ԠŠԠ쳠ŠԠԠѠ󍪭Š٠٠ ؍ŠٍҠԍٍ؍α͍РŠԲͫРѠԠԲÍààб占àбŠб󍍪철Š쳠 󍪭؍ѠŠ占 ŠгԠàŠԱà姍РŠꍠÍàʍꍠР򭱬ؠ Ѡ荠򭱬؍Р Ѡ荠à퍠ŠвѠԠ􍍪ctϾ p&о־޾Ǿ pʾ Ⱦƭɾ H gch8`ȾپɾھnmȌؾ׾ p gcc cccVc ci^c6H7HɅ c ~c깣b oc oc Ⱦ ɾb ocɅh7h6`޾LpxH ~ch(`+IbP~H}9?HYI@HUSAHBH))CH99DH99EH)))9FHGH9) HHIH9999JH??KHǃ9LH????MHNHOH99PHQHyYCRHɉ-I H!H!!!"H#H$H))%Hc&HUm[_'H(Hǃ9})H}9*Hǫ+H灁,H??-H.H???/H?0H}}1H2H3 !#3H)))4H5H!)) 6Him 7H 8H))9HmHx| x xnHx||xoH8||DD8ph""qh""rHx||sH(LTTd(tH?D$uH<||@@<vH <|@0 wH<`<`|<xHl||lyh~zHdt|\LD{H8|~UTH|H<|yB@<}H8|}VTH~HSH&O]]y2THUH?@@?VH?x8WH?`?`?XHwwYHxxZHaqyOGC[H\h""]HJUUU(^H_h`HaH8DD<|xbH?DD8cH8||DD(dH8DD?eH8||TTHfH~ gh|hHpiH}}}jH@}kHvlH13&II>:H;hvwc=Hlllll>H~<?HQ__@H8|E>|xAH~~BHII6CH>AA"DHAA>EH>IIAFH~ GH>AQ2HHIHJH @?KHwLH@@@MH~~~NH~~OH>AA>PH QH>AARH v-I H!Hoo"H#H$H&o{2%HF&db&H0~IV PH'H(H>wc)Hcw>*H**+H|,hp-H.H``/H@ 0H~AA?1H2Hbq_F@3H"AI64H5H/K{{{36H>II27Hay8H6II69HccL 232NZ Z ZD Ġ謠uPUP??vPVP8p`0sP<~Ç SP0p?tPTPrP>RP9pxP<XPiGIGpP>PP79 cigarettes D{c,14334,170,11,8 Potiche 1[,31197,370,27,16 Potiche 1[ D{c,38786,460,27,16 Potiche 2[,18550,220,21,12 Urne 1[,48061,570,28,20 Urne 1[ D{c,62395,740,28,20 Urne 2[,31197,370,23,17 Urne 2[ D{c,38786,460,23,17 Urne 3[,18550,220,19,13 Vase 3 anses2 Jarre 4[,8094,96,13,9 Supprim{,0,0,0,0 Lacrymatoire,27825,330,32,9 Ligne droite,31197,370,21,19 Ligne droite D{c,38786,460,21,19 Pichet carr{,20658,245,19,12 Pot @ tabac,12648,150,11,10 Pot @ tabac D{c,16442,195,11,10 Pot @ cigarettes,9612,114,11,8 Pot @uner d{cor{,18550,220,8,17 Egyptien GM.S,70826,840,42,20 Egyptien GM.D,92749,1100,42,20 Egyptien PM.S,40472,480,32,15 Egyptien PM.D,53963,640,32,15 Jardini}re grecque,24874,295,15,21 Jarre 1[,27825,330,22,16 Jarre 2[,18550,220,19,14 Jarre 3[,10961,130,15,150,5,17 Coupe de Paris PM.D.,15599,185,5,17 Coupe 75 1[,24874,295,12,23 Coupe 75 2[,14755,175,10,16 Coupe 75 4[,12648,150,8,14 Coupe @ glace GM,21922,260,8,22 Coupe @ glace PM,15599,185,6,17 Cruche ronde,21922,260,23,14 D{jeuner carrel{,12648,150,8,17 D{je Cloche @ pied GM 1/2 D{c,74199,880,34,20 Cloche @ pied GM D{cor{e,92749,1100,34,20 Cloche @ pied PM.S.,24874,295,24,16 Coupe de Paris GM.S.,24874,295,6,26 Coupe de Paris MM.S.,18550,220,6,22 Coupe de Paris MM.D.,23609,280,6,22 Coupe de Paris PM.S.,12648,1ne PM.D.,54806,650,8,31 Vide poches GM,7083,84,4,14 Vide poches PM,5649,67,3.5,12.5 Coupelle GM,4132,49,3,11 Coupelle PM,3288,39,2.5,9.5 Cendrier creux MM,8094,96,5,12 Cendrier creux PM,7083,84,5,10 Cloche,18550,220,21,15 Cloche @ pied GM.S,56492,670,34,20pot GM D GO,62395,740,20,27 Cachepot PM S PO,28246,335,17,21 Cachepot PM S GO,28246,335,15,21 Cachepot PM D PO,35413,420,17,21 Cachepot PM D GO,35413,420,15,21 Capeline GM.S.,54806,650,8,36 Capeline GM.D.,70826,840,8,36 Capeline PM.S.,38786,460,8,31 Capeli:<=>?@114,11,11 Pique fleurs PM,6408,76,8,8 Bol @ riz GM,9612,114,7.5,11 Bol @ riz PM,6408,76,6,9 Boule @ col GM,15599,185,15,11 Boule @ col PM,9612,114,12,8 Cachepot GM S PO,54806,650,23,27 Cachepot GM S GO,54806,650,20,27 Cachepot GM D PO,62395,740,23,27 Cache45,18.6,TVA 18.60%,01/01/87 Assiette plate,18971,225,2,23 Assiette creuse (indisp.),20658,245,3,23 Bonbonni}re 1[,13491,160,8.5,14 Bonbonni}re 2[,11804,140,7,12 Bonbonni}re 3[,9612,114,5,10 Boule GM,9612,114,13,11 Boule PM,6408,76,9,8 Pique fleurs GM,9612,~?kPx<KP,51433,610,26,21 Vase 3 anses D{c,62395,740,26,21 Corps de 3 anses,47218,560,26,21 Coupe de Paris GM.D,31197,370,6,26 Coupe @ glace PM.S,12648,150,6,17 Pique fleurs 84 GM,10624,126,11,11 *,0,0,0,0 Cachepot GM TREMPLIN,50590,600,23,27 Cachepot PM TREMPLIN,25717,305,17,21 Galet PM TREMPLIN,8685,103,0,0 Galet GM TREMPLIN,9781,116,0,0 Pot bas TREMPLIN,11804,140,0,0 Massue TREMPLIN,19393,230,0,0 Vapo bas d{cor{ TREMPLIN,8094,96,0,0 Poudrier d{cor{ TREMPLIN,8094,96,0,0 *,0,0,0,0 *,0,0,0,0 Structure 1}re ligne: NFHI'DAOpen' dc i4'DAClose' dc i4'DAAction2' dc i4'DAInit2' dc i2'$FFFF' ; pas de rafraichissement dc i2'$0143' ; Activate, Update & MouseDown events dc c' P* * "PRODA.SRC" faire 'ASSEMBLE PRODA.SRC' * * ProDOS utilitaires en NDA * (c) 1987 S. Hadinger & Tremplin Micro * absaddr on 65816 on keep PRODA case on IDSection START dc i4PRONDAuHUSTON!ް' ')PRODA.SRCGް( E(PRODC.CCK!i>ް t EPROD.MAKEkް E9E*PRODOS.NDAm<ްt E%LIT.C}EAdr2,Code Ville,Taux remise HAMONARD,30 PLATON,Premiers Dialogues,Eutyphron,70707 REPUBLIQUE,0 QUENEAU,209 Rue du M{tro, ,80808 ZAZIE,10 RABELAIS,35 rue Pantagruel, ,90909 GARGANTUA,20 SEGALEN,12 rue des Marmottes,Le Fils du Ciel,22000 SAINT BRIEUC,30 structure: NB clients NOM,Adr1,101 FRANCIS,20 KAFKA,Le Chateau,24 Place du Proc}s,20202 FRANZ,30 LUCRECE,24 Place de la Nature, ,30303 BORGIA,0 MARGUERITE ,55 rue de Navarre,,40404 HEPTAMERON,10 NIETZSCHE,14 rue des Idoles, ,50505 ZARATHOUSTRA,20 OVIDE,32 av. des M{tamorphoses, ,60606 CACDT,5 rue de la Tentation, ,99008 Saint ANTOINE,20 GOBINEAU,15 place de la Renaissance, ,77777 ADELAIDE,30 HACHETTE,9 bd. des Bugs,La Petite Faute-Corrig{e,86100 CHATELLERAULT,0 IONESCO,212 rue des Chaises, ,99999 EUGENE,10 JAMES,49 av. des Deux Visages, ,1019 AUDIBERTI S.A.,16 rue Nougaro, ,11111 ANTIBES,0 BAUDELAIRE,23 rue des Fleurs, ,12345 DU MAL,10 CALVINO,Place voir Arioste, ,33333 ITALO,20 DIOGENE,'LAERCE',Vie Doctrines et Sentences,44444 TONNEAU,0 ESCHYLE,8 rue des Eum{nides, ,55555 THEBES,10 FLAUBERb articles/2,Taux TVA format APPLE, 'TVA XX,XX%', date du tarif JJ/MM/AA Structure fiche article: D{signation,HT en centimes,TTC en francs, hauteur,diam}treroDOS utilitaires\H**' ; Titre de l'accessoire dc i1'13' END ;Sauve le registre a dans Code ; et passe le controle a DAInit DAInit2 START phb phk plb sta Code jsl DAInit plb */ Rect rDlog2 = {80,10,142,310}; Rect rLine1 = {4,90,19,290}; /* Ligne editable 1 */ Rect rLine2 = {20,90,35,290}; /* Ligne editable 2 */ Rect rAlert = {50,35,97,285}; /* Fenetre d'alerte */ Rect rbOK = {28,85,42,165};ton central */ Rect rLeft = {27,30,41,110}; /* Bouton gauche */ Rect rLeft2 = {41,30,55,110}; Rect rRight = {27,170,41,250}; /* Bouton droit */ Rect rRight2 = {41,170,55,250}; Rect rDlog = {80,10,128,310}; /* Dialog standard,0xC3,0,0L,1,0,0,0,0,0L}; PathNameRec Pren; char Error[] = "$0000"; /* Numero de l'erreur */ char BlockNum[] = " Ko."; /* Taille du fichier */ /* Rectangles d'affichage */ Rect rCentr = {27,110,41,190}; /* Boundl RenCtrl, DelCtrl, CopCtrl, PlaCtrl, LocCtrl, UnlCtrl; /* les 6 Boutons */ /* Parametres pour ProDOS et Standard File */ SFReply myReply; FileIORec Pread; FileRec Pinfo, Pcreate = {0LS16 utilitaires v1.1", 0L,{0,0,0,0},0L,0,0,0,0,0,0,0,0,0,0,0L,0,0L,0L,0L, {27,30,74,310},(GrafPortPtr) -1L,0L}; /* Fenetre du NDA */ GrafPortPtr WindPtr, NdaDlog; CtlRecH du dernier appel d'outil */ int WindOpen, Code, itemHit; /* WindOpen: fenetre ouverte ? */ EventRecordPtr Param; /* Evenement a traiter */ ParamList ProdWind={sizeof(ParamList),0xC0A0, "\33ProDO utilisee par Standard File */ int good; int type; int auxtype; char filename[16]; /* Nom du fichier */ char fullname[129];} SFReply; /* Nom avec prefixe */ int _toolErr; /* ErreurJLMNOPQRSTUVWXYZ[\]^_`abcdefghijs */ #include #include #include #include #include #include #include #include #include #include typedef struct SFReply { /* Structure/* * "PRODC.CC" faire 'COMPILE PRODC.CC KEEP=PRODC' * avec le compilateur C 1.0 * * ProDOS 16 utilitaires en NDA * (c) 1987 S. Hadinger & Tremplin Micro */ #include /* Interfaces pour les outiltl END rtl END ;Sauve les registres a, x & y ; et passe le controle a DAAction DAAction2 START phb phk plb sta Code stx Param sty Param+2 jsl DAAction plb r /* Bouton OK (alerte) */ static char *ErrMsg[] = { /* Messages d'erreurs */ "ProDOS occup\216", "Unit\216 introuvable", "Erreur d'E/S", "Protection d'\216criture", "Unit\216 non en ligne", "Syntaxe incorrecte", "Table FCB pleine", "Nom introuvable", "Volume introuvable", "Fichier introuvable", "Nom en double", "Volume plein", "Directory plein", "Erreur de version", "Type non MoveTo(30,10); if (ToolErr < 0x100) DrawCString("Erreur ProDOS :"); else DrawCString("Erreur :"); MoveTo(30,20); DrawCString(msg); /* Affiche l'erreur */ ModalDialog(0L); /* Attend le Clil existe */ if (ToolErr == ErrCode[index]) msg = ErrMsg[index]; ErrDlog = NewModalDialog(&rAlert, true, 0L); SetPort(ErrDlog); /* Ouvre le Dialog et le bouton */ NewDItem(ErrDlog,1,&rbOK,10,"\2OK",0,0,0L); u prochain appel d'outil */ SysBeep(); Int2Hex(ToolErr, &Error[1], 4); /* Convertit l'erreur en hexa */ msg = Error; for (index = 0; ErrCode[index] != 0; ++index) /* Recupere le message d'erreur s'Traitement des erreurs */ { GrafPortPtr ErrDlog; /* Dialog d'alerte */ int ToolErr, index; char *msg; ToolErr = _toolErr; /* Copie le code d'erreur qui ne reste */ if (ToolErr) { /* que jusqu'aonnees */ phk plb} if (WindOpen) CloseWindow(WindPtr); /* Ferme la fenetre */ WindOpen = false; asm{plb} /* Retablit le banc de donnees */ } /* DAClose */ void ErreurTool() /* e la valeur par une variable LOCALE et non globale puisque le banc de donnees n'est plus valable */ } /* DAOpen */ pascal void DAClose() /* Ferme la fenetre */ { asm{phb /* fixe le banc de dlCtrl = NewControl(WindPtr,&r,"\7Effacer" ,0,0,0,0,0L,6L,0L); } WindOpen = true; wind = WindPtr;/* Copie le pointeur dans une variable LOCALE (sur la pile)*/ asm{ plb } /* Retablit le banc de donnees */ return wind; /* On renvoi,0L,3L,0L); r.v1 = 30; r.v2 = 45; UnlCtrl = NewControl(WindPtr,&r,"\6Unlock" ,0,0,0,0,0L,4L,0L); r.h1 = 100; r.h2 = 180; PlaCtrl = NewControl(WindPtr,&r,"\6Taille" ,0,0,0,0,0L,5L,0L); r.h1 = 10; r.h2 = 90; DeCtrl = NewControl(WindPtr,&r,"\10Renommer",0,0,0,0,0L,1L,0L); r.h1 = 100; r.h2 = 180; CopCtrl = NewControl(WindPtr,&r,"\6Copier" ,0,0,0,0,0L,2L,0L); r.h1 = 190; r.h2 = 270; LocCtrl = NewControl(WindPtr,&r,"\4Lock" ,0,0,0,0etSysWindow(WindPtr); /* Declare la fenetre comme appartenant au systeme */ /* Ouvre les 6 boutons*/ r.v1 = 13; r.v2 = 28; r.h1 = 10; r.h2 = 90; Ren fixe correctement le banc de donnees */ phk plb} if (WindOpen) SelectWindow(WindPtr); /* Amene la fenetre au premier plan */ else { WindPtr = NewWindow(&ProdWind); /* Ouvre la nouvelle fenetre */ S0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4E, 0x50, 0x52, 0x54, 0x57, 0x58, 0x5A, 0x5B, 0x0201, 0x030B, 0x0000 }; pascal GrafPortPtr DAOpen() /* Ouvre la fenetre */ { GrafPortPtr wind; Rect r; asm{phb /*op grand", "Changement de nom ill\216gal", "M\216moire insuffisante !","ID non disponible !" }; static int ErrCode[] = { /* Liste des codes d'erreurs */ 0x07, 0x10, 0x27, 0x2B, 0x2F, 0x40, 0x42, 0x44, 0x45, 0x46, 0x47, support\216", "Fin-de-fichier rencontr\216e", "Fichier verrouill\216", "Fichier d\216j\210 ouvert", "Type non support\216", "Plus de m\216moire", "Fichier en double", "Ce n'est pas un disque", "N\241 de bloc trick dans le bouton */ CloseDialog(ErrDlog); /* Ferme le Dialog */ } } /* ErreurTool */ void FileModif(k) /* Delete, Lock, Unlock fichier */ int k; { char *chaine; /* Choisit le message */ if (k==3) chaine = "\25Verrouiller fichier :"; else if (k==4) chaine = "\27D\216verrouiller fichier :"; else chaine = "\21Effacer fichier :"; SFGetFile(20,80,chaine,0L,0L,&myReply); /* Affiche le selecteur */ pere le nouveau nom */ CloseDialog(NdaDlog); /* Ferme le Dialog */ if (itemHit == 1) { /* Si OK */ Pren.pathname = changeName; Pren.newPathname = newName; CHANGE_PATH(&Pren); /* Change le nom m(NdaDlog,4,&rLine1,17,origname,24,0,0L); do itemHit = ModalDialog(0L); while (itemHit > 2); /* Attend un Click dans un bouton */ GetIText(NdaDlog, 4, changeName);/* Recupere le nom a changer */ GetIText(NdaDlog, 3, newName); /* Recunnuler",0,0,0L); MoveTo(9,15); DrawCString("Renommer :"); MoveTo(9,30); DrawCString("en :"); /* ligne editable */ NewDItem(NdaDlog,3,&rLine2,17,origname,24,0,0L); NewDIte""; if (myReply.good) origname = myReply.filename; NdaDlog = NewModalDialog(&rDlog2,true,0L); /* Ouvre le Dialog */ SetPort(NdaDlog); NewDItem(NdaDlog,1,&rLeft2 ,10,"\2OK",0,0,0L); /* et les boutons */ NewDItem(NdaDlog,2,&rRight2,10,"\7A/ void Rename() /* Renommer un fichier */ { char newName[25]; /* Nouveau nom */ char changeName[25]; char *origname; SFGetFile(20,80,"\22Renommer fichier :",0L,0L,&myReply); /* Selecteur */ origname = Long2Dec((Pinfo.blocksUsed + 1) >> 1, BlockNum, 5, 0); DrawCString(BlockNum); itemHit = ModalDialog(0L); /* Attend le Click dans OK */ CloseDialog(NdaDlog); /* Ferme le Dialog */ fin: ; } } /* Taille *log,1,&rCentr,10,"\2OK",0,0,0L); MoveTo(10,10); DrawCString("Taille de : "); DrawString(myReply.filename); /* Affiche les messages */ MoveTo(10,20); /* Convertit en decimal */ Reply.fullname; GET_FILE_INFO(&Pinfo); /* Lit la taille */ if (_toolErr) {ErreurTool(); goto fin;} NdaDlog = NewModalDialog(&rDlog,true,0L); /* Ouvre le Dialog */ SetPort(NdaDlog); NewDItem(NdaD; fin: ErreurTool(); } } } } /* FileModif */ void Taille() /* Taille d'un fichier */ { SFGetFile(20,80,"\23Taille du fichier :",0L,0L,&myReply); /* Selecteur */ if (myReply.good) { Pinfo.pathname = myfo); if (_toolErr) goto fin; if (k==3) Pinfo.fAccess = 1; /* Change le champ */ else Pinfo.fAccess = 0xC3; /* access du fichier */ SET_FILE_INFO(&Pinfo) /* Ferme le Dialog */ if (itemHit==1) { /* si bouton = "OK" */ Pinfo.pathname = myReply.fullname; if (k==6) {DESTROY(&Pinfo); ErreurTool();} /* Efface le fichier */ else {GET_FILE_INFO(&PinCString("Voulez-vous vraiment "); DrawCString(chaine); MoveTo(10,20); DrawString(myReply.filename); DrawCString(" ?"); itemHit = ModalDialog(0L); /* Attend un Click dans un bouton */ CloseDialog(NdaDlog); ,"\7Annuler",0,0,0L); if (k==3) chaine = "verrouiller :"; else if (k==4) chaine = "d\216verrouiller :"; else chaine = "effacer :"; MoveTo(10,10); /* Affiche les messages */ Draw if (myReply.good) { NdaDlog = NewModalDialog(&rDlog,true,0L); /* Ouvre le Dialog */ SetPort(NdaDlog); /* et les boutons */ NewDItem(NdaDlog,1,&rLeft ,10,"\2OK",0,0,0L); NewDItem(NdaDlog,2,&rRight,10*/ ErreurTool(); } } /* Rename */ void Copier() /* Copier un fichier */ { Ptr MemAdr; /* Adresse du buffer */ long MemSize; /* Taille du buffer */ int MemoryID; /* ID de l'accessoire */ Handle MemHndl; /* Handle du buffer */ SFGetFile(20,80,"\20Copier fichier :",0L,0L,&myReply); /* Selecteur */ if (myReply.good) { Pread.dataBuffer = myReply.fullname; /* open fnts */ j = GetCtlRefCon(myControl); /* Recupere le numero du bouton */ switch(j) { /* Aiguille suivant le numero du bouton */ case 1: Rename(); break; case 2: Copier(); break; c /* Si Click dans un bouton alors..*/ j = TrackControl(h,v,0L,myControl); /* Gere le Click */ if (i==j) { /* Si Click confirme alors..*/ FlushEvents(-1,0); /* Vide la chaine des evenemetlRecHndl myControl; /* Bouton du Click souris */ h = Param->where.h; /* Coordonnees du Click */ v = Param->where.v; i = FindControl(&myControl,h,v,WindPtr); /* Recupere le bouton du Click */ if (i==2) { goto fin; finID : ErreurTool(); DeleteID(MemoryID); finClose: ErreurTool(); CLOSE(&Pread); fin : ;} } /* Copier */ void Bouton() /* Traitement du bouton de la souris */ { int v,h,i,j; C /* Traitement des erreurs */ finClMem: ErreurTool(); CLOSE(&Pread); finMem : ErreurTool(); DisposeHandle(MemHndl); /* Libere le buffer */ DeleteID(MemoryID); /* Libere l'ID */ if (_toolErr) goto finClMem; CLOSE(&Pread); if (_toolErr) goto finMem; Pinfo.pathname = myReply.fullname; SET_FILE_INFO(&Pinfo); /* Ecrit les attributs de l'original */ goto finMem; OPEN(&Pread); /* Ouvre le nouveau fichier */ if (_toolErr) goto finMem; Pread.dataBuffer = MemAdr; Pread.requestCount = MemSize; WRITE(&Pread); /* Ecrit le contenu du buffer */ reateTime; CREATE(&Pcreate); /* Cree le nouveau fichier */ if (_toolErr) goto finMem; Pread.dataBuffer = myReply.fullname; /* open filename */ Pread.requestCount = 0L; /* i/o buffer */ STROY(&Pren); /* Efface le fichier s'il existe deja */ if ((_toolErr) && (_toolErr != 0x46)) goto finMem; Pcreate.pathname = myReply.fullname; Pcreate.createDate = Pinfo.createDate; Pcreate.createTime = Pinfo.c /* Selecteur de destination */ SFPutFile(20,60,"\15Destination :",myReply.filename,15,&myReply); if (~myReply.good) goto finMem; /* Si 'Cancel' alors on sort */ Pren.pathname = myReply.fullname; DEit le fichier dans le buffer */ if (_toolErr) goto finClMem; CLOSE(&Pread); Pinfo.pathname = myReply.fullname; GET_FILE_INFO(&Pinfo); /* Lit les attributs du fichier */ if (_toolErr) goto finMem; Ouvre le buffer */ MemHndl = NewHandle(MemSize, MemoryID, 0xC000, 0L); if (_toolErr) goto finID; Pread.requestCount = MemSize; MemAdr = *MemHndl; Pread.dataBuffer = MemAdr; READ(&Pread); /* L if (_toolErr) goto finClose; MemoryID = GetNewID(0x5000); /* Demande un nouvel ID */ if (_toolErr) goto finClose; MemSize = (long) Pread.dataBuffer; /* Copie la taille dans MemSize */ /*ilename */ Pread.requestCount = 0L; /* i/o buffer */ OPEN(&Pread); /* Ouvre le fichier */ if (_toolErr) {ErreurTool(); goto fin;} GET_EOF(&Pread); /* Lit sa taille */ ase 3: case 4: case 6: FileModif(j); break; case 5: Taille(); break; } } } } /* Bouton */ pascal void DAAction() /* Traitement des evenements */ { GrafPortPtr currPort; int what, modifiers; if (Code == 1) /* Si Action = Event */ { currPort = GetPort(); /* Sauve le port courant */ SetPort(WindPtr); /* Fixe celui de la fenetre */ what = Param->what; H"4hМHU "Lh"L]  "L :"L8pI0"L/"L:"L "LhfdNZX{i+k ;8[iKNZXH "LN{i+k ;8[iL,"L ""LdE H"4h% HL"4hLhrp-HZXH{iH "Lhvtd쩴HZXH{iH  "Lhnl ZHZXH{iHlnopqrstuvwxyz{ ZHZXH{iH "Lhb`d쩴HZXH{iH "LhjhHZXH{iH "< ,@ lK9-C ProDOS utilitaires\H** KP"%kKPTV"k ;8[iKNZXH"LXH "LhZXZXHK"L * "PROD.MAKE" * faire ALINK PROD.MAKE * * Prodos utilitaires en NDA * (c) 1987 S. Hadinger & Tremplin Micro KEEP PRODOS.NDA LINK/ALL PRODA LINK/ALL PRODC LIBRARY * 'accessoire */ { if ((Code == 0) && (WindOpen)) DAClose(); /* Si ShutDown */ WindOpen = false; } else if (what == mouseDownEvt) /* Si Click souris dans la fenetre */ Bouton(); /* Gere le Click */ SetPort(currPort); } /* Retablit le port original */ } pascal void DAInit() /* Initialisation de lr & Tremplin Micro."); DrawControls(WindPtr); /* Redessine les boutons */ EndUpdate(WindPtr); } else if (what == activateEvt) /* Si evenement d'activation */ DrawControls(WindPtr); /* Redessine les boutons */ if (what == updateEvt) { /* Si evenement de mise a jour */ BeginUpdate(WindPtr); SetForeColor(0); SetBackColor(15); MoveTo(5,9); /* Affiche l'en-tete */ DrawString("\50(c) 1987 S. Hadinge"LH"Lh "L{i+k ;8[i 8 O hPm "LmH5 "Lh^\^\H"L^\H { "L^\H%  "L    :"L"L"L :"Ls"Ls de mmoireFichier en doubleCe n'est pas un disqueN de bloc trop grandChangement de nom illgalMmoire insuffisante !ID non disponible !es$1ASe!8'+Syntaxe incorrecteTable FCB pleineNom introuvableVolume introuvableFichier introuvableNom en doubleVolume pleinDirectory pleinErreur de versionType non supportFin-de-fichier rencontreFichier verrouillFichier dj ouvertType non supportPluJ6$0000 Ko.n))n)7n))7P 6P 6Z"Z#"2#aU*ProDOS occupUnit introuvableErreur d'E/SProtection d'critureUnit non en ligneLZXH"L,ZXH"L ""L{i+k ;8[iP N"N{i+kProDOS16 utilitaires v1.1Nx: |{i+k ;8[iP$H"LhZXH"LVTZXH"L"L"L :"LC"LZXH"ᰩL"-"{i+k ;8[iVT VT H{iHZXH"LhH"LhuH"LhH#"Lh0"C 7" 0"z&"z"LHhH h "LyHhH h "L5"L1Hh""-""-"L!"L'"-!"LH h 誧Hh"Ln"Hh"LL<4sm "LmIH.h,,"L LFHh ",""-{i+k ;8[iP#m "LmHhH h "L"-"L[HP "LhL<H "Lh "L^\HE "LH"LhRR8pI0ծ^\H{iH"L^\H{iH"L^\H "LR7{iH.h,{iH2h0\^\H"L^\H  "L^\H-  "L :"L"L :"L"L^\HMH*(iHih8"? '"L"LH"LhR^\H "L{i+k ;8[iPm "L…m s…H= "Lh^Hh"L"-UH5 "Lh^\^\H"L^\H   "L :"L"Ls"L :"L"LH"LhR^\H "LRhHh""-<"L$ ""-{i+k ;8[iPm "Lm/@BDEFGHIJKLNPRTWXZ[ RenommerCopierLockUnlockTailleEffacerOKErreur ProDOS :Erreur :Verrouiller fichier :Dverrouiller fichier :Effacer fichier :OKAnnulerverrouiller :dverrouiller :effacer :Voulez-vous vraiment ?Taille du fichier :OKTaille de : Renommer fichier :OKAnnulerRenommer :en :Copier fichier : Destination :((c) 1987 S. Hadinger & Tremplin Micro.cck H;[ !*8jf H;[ ! Jf222):ER8ė:22::" GLISSEZ UNE DISQUETTE PRODOS DANS LE SLOT ";S$;" DRIVE ";DR$;: " ERREUR ";ER;" - TOUCHE SVP ";:R$::216,0:125$;",T$B0,A$1000" 768u 22:"":958:24:"(R)ELECTURE (A)UTRE FICHIER (M)ENU DE DISQUETTE (F)IN ";:R$:"" (R$)82R$((R$)32) R$"R"175 R$"A"125 R$"M"ĺD$"PREFIX/T21":D$"RUN STARTUP" R$"F"ė: 180W ER(:D$"CATALOG,S"S$",D"DR$::R$:D D$;"PREFIX,S";S$;",D";DR$X D$"PREFIX":P$ ::24:"PREFIX (d{faut: "P$"): ";:"";PR$:PR$""PR$P$ D$"PREFIX";PR$ :D$"CATALOG,T$B0" :23:"FICHIER A LIRE: ";F$:F$""180 D$"BLOAD ";F|~,162,4,142,123,5,104,32,237,253,201,141,240,6,200,192,80,144,212,136,152,101,6,133,6,144,2,230,7,44,0,192,16,251,44,16,192,173,0,192,201,27,208,185,96 }::22:"SLOT (d{faut 6): ";S$:S$""S$"6" :22:"DRIVE (d{faut 1): ";DR$:DR$""DR$"1"% d::D$(4):D$"PR#3":'i215@nI768868:R:I,R:s32,88,252,169,16,133,7,24,109,201,190,133,9,173,200,190,133,8,169,0,133,6,168,145,8,133,8,133,9,160,0,177,6,240,65,9,128,192,0,208,22,230,8,208,2,230,9,166,8,72,165 x9,90,32,36,237,122"/DX]jp}+Wz &Vi|>'Xj} %] /2SVwz@GY`&->DMm ,3AHPgz  *-BE19B4Fs bmQlKaae]s,0@U^ko $Zp8y @Vl Os  %16CL\x )\`uzlptx$|1ASe!81=@CZ_b!$5hkz},/@sv  "9Zp'0u#/Rs"5Ad )=Dh (+6?w!$ M E , # m = V    # ; 4A sJ mp  ,    )>SdwCxLePsTX\`dh5{%%8Das&:em53 <tsU g m  s =   -" Z    zz+khhhhh"LHkK9 -|2= WsLU$]-r/8&O2hOmp MENU ";:R$' Z:(4)"RUN STARTUP"  (21)@12:"Ces programmes tournent sur PC IBM"h("ou compatibles, ainsi que sur un"2"APPLE IIGS {quip{ du PC-TRANSPORTER"<:"Ils figurent sur une disquette sp{ciale"F"au format MS-DOS." P22:"PRESSER UNE TOUCHE POUR LEASIC),MSDOS8 LISTAGES ENCADRES (TURBO.BASIC),MSDOSW MENU DE DISQUETTE,STARTUPw L NOMBRES PREMIERS,PREMIERS *,* ( GET SPECIAL (Plus),GETS/GETS.BAS1Q GET SPECIAL (Txt/Gr),GETS/GETS.BAS2u LANGAGE C (LIT.C),IOFUNC/LIT.C FACTURE (YVAN KOENIG),FACTUR/STARTUP  PRODOS.NDA (LIT.C),PRONDA/LIT.C CADRE (TURBO.BASIC),MSDOS ECRAN CHANGEANT (TURBO.B7Ģ17:"RETOURNEZ VOTRE DISQUETTE ";:RR$:c P0:LL(P$):I1LL:(P$,I,1)"/"PI:ILL :PPF$(P$,P1):P$(P$,P1):(4)"PREFIX"PF$ (4)"-"P$ :: DISTANCES (Perrot),DISTANCES/START GET SPECIAL (Nestor),GETS/GETS.BAS