8L2C)pJJJJ IH(ȱH:=IH[H`@HcH  $ +   I/H`JLNGȄBȄF aK  haaFF  mJm# KKJ UJ )J ۈ) ;J3ȱJFȱJGJKaȄM  aaNNJFLGJL L ::(21)! 33,39:32,1(1Q"D{laiss{e par ses concepteurs, la"z"petite famille Apple-II se r{duit" "lentement...":!"Malgr{ leur enthousiasme, les fans des"""Apple-II, IIe, IIc et GS ne sont plus" #"assez nombreux p? TEXT.TOOLSFINDER.DATAggT222' 'STARTUP!c#(START.UP !dPRO.FP!SON SDUMP.GS6 SDUMPU? &PRODOS `DaElH$?EGvѶK+`L HHLy XP LM ŠϠĠӠS)*+,+`F)) (*=GJFjJJA QE'+ '== `@ STSP8QSS8 m P o R(8Rour permettre @ un"; $"magazine de vivre normalement."k %:"Malgr{ nos esp{rances, ce num{ro 22 de" &"TREMPLIN-MICRO sera donc le dernier" '"de la s{rie.": ("Guy Hachette et les auteurs avec les-") )"quels vous aviez rendez-vous ici," hgʎX?kύX! "&#Í' / XI `x A`NJOUR$ FREEZER,FREEZER/BONJOUR= FLOAD,FLOAD/BONJOURX DASH16,DASH16/BONJOURy FORMATEUR,FORMATEUR/BONJOUR KEY.FR,KEY.FR/BONJOUR L"MENU DE DISQUETTE",STARTUP *,* (P$,P1):(4)"PREFIX"PF$0 (4);"RUN";P$: ::W "DEMO SON",SON/BONJOUR1y FILTRINPUT.DEMO,SON/BONJOUR2 "SDUMP //e //c",SDUMP/BONJOUR SDUMP.CDA,SDUMP.GS/BONJOUR "C.TEXT.TOOLS (LIT.C)",TEXT.TOOLS/LIT.C ACCENT2,ACCENT2/BOI1(R$)64:P$,P$:G II1:"NEXT a incr{ment{ une fois de tropc I1I2ĺ(4)"-PRO.FP" I5I12ė:10:(7)(7)(7);:"Veuillez retourner la disquette SVP ";X$ P0:I1(P$) (P$,I,1)"/"PI:I(P$) I PPF$(P$,P1):P$ 10 d50A n23:"----------------------------------------";r x"LETTRE=RUN ESC=QUITTER OU FLECHES ";:R$ 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 :T22/START.UP# :(21)::9(4)"PREFIX/T22"m:" * DISQUETTE TREMPLIN MICRO NUMERO 22 * ":w34,2(N0:V2::2NN1<P$,R$:P$"*"Į:NLN1:N0:110FVV1::V:1:(64N);:P3);P$;:41(R$):R$; ZV22NLN:1 @":, i" TREMPLIN-MICRO n[ 23"5 500; b (4)"PREFIX/T22":(4)"-START.UP" 24:11::" PRESSEZ RETURN ";: 49168,0:49152,128:(49152)141510:49168,0: :/"micro-informatique personnelle...0 P5007 Z5c d" En guise de cadeau d'au-revoir,": e" vous trouverez sur cette disquette": f" quelques programmes suppl{mentaires": g" (en face 2)": h" qu'Yvan Koenig destinait:"depuis pr}s de trois ans d{j@, vous"S *"remercient pour votre confiance.": +"Ils esp}rent vous retrouver un jour @" ,"l'occasion d'un num{ro sp{cial ou," -"qui sait, d'une nouvelle formule," ."ouverte aux nouveaux standards de la"' SONuHUSTON!' 'BONJOUR1Gc5 %HELLOc BONJOUR2Qc5 /FILTRINPUT.DEMO c SONO O!L&SONO.S" SOUS-PROGRAMMES _____________________ p -------------------- saisie filtree -------------------- ZK1:ZV(FMT$):16:ZH((FMT$,ZK)):16:ZC((FMT$,ZK)) Z1$(0):Z2$(255):ZI0:16:Z1$(FMT$,ZK,1):ZKZK1:Z2$(FMT$,ZK,1)" 17: 08.04.88 / 08h25 _____________________ FILTRINPUT.DEMO _____________________  37: (pour laisser les sous-programmmes en tete afin d'accelerer l'execution.) , _____________________ continuer "; n49168,0:X$F xX$(13)ĺ(4)"-FILTRINPUT.DEMO"O 110  :(21):/"HELLO et FILTINPUT.DEMO"R"ont {t{ {crits sous DOS 3.3"X(u2"L'adaptation @ ProDOS"<"a {t{ faite un peu vite"FP"YK propose une version moins anormale"Z"avec HELLO2 et FILTINP.DEMO2" d20:"RETURN pour:49337,47::I1120:" ";::2:8:"C A T A L O G U E"::7Z (4);"CAT" 22:"PRESSEZ UNE TOUCHE ";:R$::(4)"RUN /T22/STARTUP" : 23:ATIFS SONORES :":11:"--------------------":I05:BIP$:11I2:20:BIP$:U :t (4);"BLOAD SONO,A";DEBUTz : :I05:BIP$:11I2::14:" CALL ";BIP$;" "::J1700::DEBUTI8:J12000::11I2:14:" ";BIP$;" ": : :J RREURDEBUT32% TERMINEDEBUT40+ :g HIMEMDEBUT: "plus correct avec HIMEM=DEBUT-(4*256) m :s : d:49337,47:::I1120:" ";::2:13:"S O N O": n: xPRET,CLAVIER,COUIC,ALARME,ERREUR,TERMINE :O 7:11:"INDIC 16.04.88 / 08h00 _____________________ H E L L O _____________________ DEBUT(115)(116)256256 : PRETDEBUT:(21): CLAVIERDEBUT8COUICDEBUT16ALARMEDEBUT24 E continuer "; n49168,0:X$< xX$(13)ĺ(4)"-HELLO"E 110  :(21):/"HELLO et FILTINPUT.DEMO"R"ont {t{ {crits sous DOS 3.3"X(u2"L'adaptation @ ProDOS"<"a {t{ faite un peu vite"FP"YK propose une version moins anormale"Z"avec HELLO2 et FILTINP.DEMO2" d20:"RETURN pour !L&HELLO2'c .FILTRINP.DEMO2* qc &HELLO34ec ZIZI1:ZI$(ZI)(FMT$,ZK,1):15W ZKZK1:ZK(FMT$)18:(FMT$,ZK1,1)","16:r ZKZK1:ZK(FMT$)ıx ~ : 33:ZK0:ZS0:ZX0:PRET:ZV ZH:ZA$;:ZHZK Z$:ASKI(Z$):ASKI27İ33:ZH:ZA$:COUIC: ASKI10ASKI11SA$ZSASKI10ASKI13LIGNEECRAN%(LIGNE,0):310: touche FLECHE BAS ou touche RETURNrASKI11LIGNEECRAN%(LIGNE,1):310: touche FLECHE HAUT|::(4)"RUN/T22/STARTUP"$FMT$(LIGNE):13:SA$(LIGNE)SA$: SA$ = chaine de saisie FMT$ = format de saisie et filtre (caracteres autorises). @18:20:868:Q$;SA$;Q$J20:37:868:ASKIT:^ASKI27Ģ23:958:TERMINE:400:touche ESCThI15:4I2:2:ECRAN$(I);" :":A16:I140:"_";::18:"Chaine retournee :":20:"Code ASCII caract.commande retour :"21:I140:"_";::35: (bandeau instructions)::"ALARME:LIGNE1,:6SA$SA$(LIGNE):FMTA$(I),FMT$(I),ECRAN$(I):J01:ECRAN%(I,J):::SA$(5)(SA$(5),5)Q$Q$Q$(SA$(5),6): La 5eme option autorise la saisie de n'importe quoi (y compris """).:(21)::TITRE$" E C R A N D E S A I S I E "::ZB$;TITRE$;ZB$:' "pom pom","8,25,15,az ","MINUSCULES et ESPACE",3,1~ "(7.8+9)*3/4-5","10,26,14,09+-*/.=()","ARITHMETIQUE DECIMALE",4,2 "$FADA","12,23,5,09ABCDEF$","NOMBRE HEXADECIMAL",5,3 "(I,;.:I)","14,21,19, ~","TOUS CARACTERES",1,4:I15:S,1): SA$() = chaines de saisies successives FMT$() = formats successifs ECRAN$() = libelles ECRAN%() = ordonnees suivante,precedente. x "PIPE A PAPA","6,25,15,AZ ","MAJUSCULES et ESPACE",2,56 136,208,236,198, 8,208,230, 96(A:KBIDEBUT46DEBUT78:J:I,J:QC:WD:EZP$"":ZB$"":Z140:ZP$ZP$".":ZB$ZB$" "::Q$(34)d ____________________ PROGRAMME-TEST ____________________ nSA$(5),FMT$(5),ECRAN$(5),ECRAN%(5I05:JDEBUTI8:J1,J2,J327J,162:J1,J1G8J2,160:J3,J2\9J4,169:J5,J3z:I5ĹJ6,208:J7,38I8;<:= 134, 6,132, 7,133, 8,164, 7,152> 170,202,208,253, 44, 48,192, 69, 6? 170,202,208,253, 44, 48,192"@0: parametres pour PRETH0 10, 40, 1: parametres pour CLAVIERs1 0,120, 1: parametres pour COUIC2 10, 40, 30: parametres pour ALARME3 190, 0, 1: parametres pour ERREUR4 31, 0, 1: parametres pour TERMINE5:6T'CLAVIERDEBUT8*(COUICDEBUT16>)ALARMEDEBUT24R*ERREURDEBUT32g+TERMINEDEBUT40m,:x-DEBUT. Les lignes 47-66 ci-dessous pourraient etre remplacees par : 47 PRINT CHR$ (4);"BLOAD SONO,A";DEBUT / 5, 5, 2;:JJZ::2039,238:21::g$ _____________________ INITIALISATIONS _____________________ %DEBUT(115)(116)256256: La routine SONO s'installera d'elle-meme sous l'ancien HIMEM, celui-ci se reajustant en consequence. &PRETDEBU,ZN):ZKZK1:CLAVIER:21! :A !ZA$(SA$ZP$,ZC):ZS$SA$: " -------------------------- bandeau instructions -------------------------- #24:J1:I15::("FLV->IDELRETESC",I32,3);::ZI(I5)3(I3):("=ok =ins =sup =tronc =fi",J,Z)(ZC1)(ZA1)2):ERREURZL(102214ZA)ZL:ZKZKZAZL:CLAVIER:21_ ZKZCČERREUR:21 ZR1:ZIāI1ZI:ZRZR(Z$ZI$(I)): ZRZR(Z$Z1$Z$Z2$):ZRČERREUR:22 ZNZK2ZS:ZA$((ZA$,1,ZK)Z$(ZA$,ZN)ZP$,ZC):ZS$(ZS$,1,ZK)Z$(ZS$$:ZH:ZA$:CLAVIER:L ASKI13SA$(ZS$,1,ZK):33:ZH:ZA$:CLAVIER: ASKI127ASKI4ZS0:ZA$(ZA$,1,ZK)(ZA$,ZK2)".":ZS$(ZS$,1,ZK)(ZS$,ZK2):COUIC:21 ASKI9ZS1:CLAVIER:22H ASKI8ASKI21ZS0:ZA(ASKI21)(ASKI8):ZL(ZK& (x (,0E,0`&(BUT24 ERREURDEBUT321 TERMINEDEBUT407 := :C :I : d:49337,47:::I1120:" ";::2:13:"S O N O": n: xPRET,CLAVIER,COUIC,ALARME,ERREUR,TERMINE :% 7:11:"INDICATIFS SONORES :":11:"------------------- HELLO2t _____________________ H E L L O _____________________ DEBUT(115)(116)256256:DEBUT:DEBUTDEBUT(4256) : PRETDEBUT:(21): CLAVIERDEBUT8COUICDEBUT16 ALARMEDE LST OFF EQU * ; LDX #31 LDY #0 LDA #1 ; ; ; SONO EQU * ; STX FREQ STY CYCLE STA REPET ; S0 LDY CYCLE ; S1 TYA TAX ; S2 DEX BNE S2 BIT SPKR ; EOR FREQ TAX ; S3 DEX BNE S3 BIT SPKR ; DEY BNE S1 ; DEC REPET BNE S0 ; RTS ; ; ; LONGUEUR EQU *-PRET#5 LDA #20 BNE SONO ; ; CLAVIER EQU * ; LDX #10 LDY #40 LDA #1 BNE SONO ; ; COUIC EQU * ; LDX #0 LDY #120 LDA #1 BNE SONO ; ; ALARME EQU * ; LDX #10 LDY #40 LDA #30 BNE SONO ; ; ERREUR EQU * ; LDX #190 LDY #0 LDA #1 BNE SONO ; ; TERMINE Pour utiliser, ecrire par exemple : ; ; ; 90 CALL CLAVIER ; ; ORG $95B1 pour un HIMEM a 38400 ($9600 : c'est la valeur normale par defaut) ; ; FREQ EQU $06 CYCLE EQU $07 REPET EQU $08 ; SPKR EQU $C030 ; ; ; PRET EQU * ; LDX #5 LDY 14 ALARME = DEBUT + 24 ; 15 ERREUR = DEBUT + 32 ; 16 TERMINE = DEBUT + 40 ; ; 17 HIMEM: DEBUT ; 18 PRINT CHR$ (4);"BLOAD SONO,A";DEBUT ; ; 19 ...suite de votre programme... ; ; ; ; !#$%------- ; ; ; ; Ecrivez en tete de votre programme : ; ; ; 10 DEBUT = PEEK(115) + PEEK(116) * 256 - 79 ; ; 11 PRET = DEBUT ; 12 CLAVIER = DEBUT + 8 ; 13 COUIC = DEBUT + 16 ; ; 08.04.88 / 08h00 ; ____________________ ; ; S O N O ; ____________________ ; ; ; GENERATEUR D'INDICATIFS SONORES ; -------------------------":I05:BIP$:11I2:20:BIP$:+ :J (4);"BLOAD SONO,A";DEBUTP : :I05:BIP$:11I2::14:" CALL ";BIP$;" "::J1700::DEBUTI8:J12000::11I2:14:" ";BIP$;" ": : : :49337,47::I1120:" ";::2:8:"CEZP$"":ZB$"":Z140:ZP$ZP$".":ZB$ZB$" "::Q$(34)d ____________________ PROGRAMME-TEST ____________________ inSA$(5),FMT$(5),ECRAN$(5),ECRAN%(5,1): SA$() = chaines de saisies successives FMT$() = for,J3#:I5ĹJ6,208:J7,38I8);/<:Y= 134, 6,132, 7,133, 8,164, 7,152> 170,202,208,253, 44, 48,192, 69, 6? 170,202,208,253, 44, 48,192@ 136,208,236,198, 8,208,230, 96A:BIDEBUT46DEBUT78:J:I,J:C:D:=1: parametres pour COUICH2 10, 40, 30: parametres pour ALARMEt3 190, 0, 1: parametres pour ERREUR4 31, 0, 1: parametres pour TERMINE5:6I05:JDEBUTI8:J1,J2,J37J,162:J1,J18J2,160:J3,J29J4,169:J5+TERMINEDEBUT40,:!-:. Les lignes 47-66 ci-dessous pourraient etre remplacees par : 47 PRINT CHR$ (4);"BLOAD SONO,A";DEBUT / 5, 5, 20: parametres pour PRET0 10, 40, 1: parametres pour CLAVIER1 0,120, ;:JJZ::2039,238:21::g$ _____________________ INITIALISATIONS _____________________ %DEBUT(115)(116)256256:DEBUT:DEBUTDEBUT(4256)&PRETDEBUT'CLAVIERDEBUT8(COUICDEBUT16)ALARMEDEBUT24*ERREURDEBUT32,ZN):ZKZK1:CLAVIER:21! :A !ZA$(SA$ZP$,ZC):ZS$SA$: " -------------------------- bandeau instructions -------------------------- #24:J1:I15::("FLV->IDELRETESC",I32,3);::ZI(I5)3(I3):("=ok =ins =sup =tronc =fi",J,Z)(ZC1)(ZA1)2):ERREURZL(102214ZA)ZL:ZKZKZAZL:CLAVIER:21_ ZKZCČERREUR:21 ZR1:ZIāI1ZI:ZRZR(Z$ZI$(I)): ZRZR(Z$Z1$Z$Z2$):ZRČERREUR:22 ZNZK2ZS:ZA$((ZA$,1,ZK)Z$(ZA$,ZN)ZP$,ZC):ZS$(ZS$,1,ZK)Z$(ZS$$:ZH:ZA$:CLAVIER:L ASKI13SA$(ZS$,1,ZK):33:ZH:ZA$:CLAVIER: ASKI127ASKI4ZS0:ZA$(ZA$,1,ZK)(ZA$,ZK2)".":ZS$(ZS$,1,ZK)(ZS$,ZK2):COUIC:21 ASKI9ZS1:CLAVIER:22H ASKI8ASKI21ZS0:ZA(ASKI21)(ASKI8):ZL(ZKZIZI1:ZI$(ZI)(FMT$,ZK,1):15W ZKZK1:ZK(FMT$)18:(FMT$,ZK1,1)","16:r ZKZK1:ZK(FMT$)ıx ~ : 33:ZK0:ZS0:ZX0:PRET:ZV ZH:ZA$;:ZHZK Z$:ASKI(Z$):ASKI27İ33:ZH:ZA$:COUIC: ASKI10ASKI11SA$ZS)+,-./012 SOUS-PROGRAMMES _____________________ p -------------------- saisie filtree -------------------- ZK1:ZV(FMT$):16:ZH((FMT$,ZK)):16:ZC((FMT$,ZK)) Z1$(0):Z2$(255):ZI0:16:Z1$(FMT$,ZK,1):ZKZK1:Z2$(FMT$,ZK,1)" 17: 08.04.88 / 08h25 _____________________ FILTRINPUT.DEMO _____________________  37: (pour laisser les sous-programmmes en tete afin d'accelerer l'execution.) , _____________________ A T A L O G U E"::70 (4);"CAT"n 22:"PRESSEZ UNE TOUCHE ";:R$::(4)"RUN /T22/STARTUP"t :~ 23:mats successifs ECRAN$() = libelles ECRAN%() = ordonnees suivante,precedente. x "PIPE A PAPA","6,25,15,AZ ","MAJUSCULES et ESPACE",2,5 "pom pom","8,25,15,az ","MINUSCULES et ESPACE",3,1' "(7.8+9)*3/4-5","10,26,14,09+-*/.=()","ARITHMETIQUE DECIMALE",4,2b "$FADA","12,23,5,09ABCDEF$","NOMBRE HEXADECIMAL",5,3 "(I,;.:I)","14,21,19, ~","TOUS CARACTERES",1,4:JI15:SA$(I),FMT$(I),ECRAN$(I):J01:ECRAN%(I,J):::SA$(5)(SA$(5),5)Q$Q$Q$(SA$(5),6) :(21)::"Accessoire de bureau (CDA) SDUMP"@e("N{cessite {videmment un //GS."m2:<"Installer le fichier SDUMP"F"dans le SousCat */SYSTEM/DESK.ACCS"P"de votre disque de d{marrage." Z"et rebooter pour pouvoir utilYd)6SDUMP.GSuHUSTON!' ''BONJOUR8bc 6ESSAI:!6MAKE;J" 6)SDUMP.SRC= ^6SDUMPF^ 6)MON.TEXTEH:7 (4);"CAT"T 22:"PRESSEZ UNE TOUCHE ";:R$::(4)"RUN /T22/STARTUP"Z :d 23:0:BIP$: :0 (4);"BLOAD SONO,A";DEBUT6 : :I05:BIP$:11I2::14:" CALL ";BIP$;" "::J1700::DEBUTI8:J12000::11I2:14:" ";BIP$;" ": : : :49337,47::I1120:" ";::2:8:"C A T A L O G U E":35 TERMINEDEBUT40 :# :) :/ :q d:49337,47:::I1120:" ";::2:13:"S O N O":w n: xPRET,CLAVIER,COUIC,ALARME,ERREUR,TERMINE : 7:11:"INDICATIFS SONORES :":11:"--------------------":I05:BIP$:11I2:2 HELLO3 avec SONO en page3 _____________________ H E L L O _____________________ DEBUT768 : PRETDEBUT:(21): CLAVIERDEBUT8COUICDEBUT16ALARMEDEBUT24 ERREURDEBUT32ASKI11LIGNEECRAN%(LIGNE,1):310: touche FLECHE HAUTO|:U:p(4)"RUN/T22/STARTUP"$ = format de saisie et filtre (caracteres autorises). W@18:20:868:Q$;SA$;Q$oJ20:37:868:ASKIuT:^ASKI27Ģ23:958:TERMINE:400:touche ESChASKI10ASKI13LIGNEECRAN%(LIGNE,0):310: touche FLECHE BAS ou touche RETURNIrnee :":20:"Code ASCII caract.commande retour :"M21:I140:"_";::n35: (bandeau instructions)t:z:"ALARME:LIGNE1,::6SA$SA$(LIGNE):FMT$FMT$(LIGNE):13:SA$(LIGNE)SA$: SA$ = chaine de saisie FMT: La 5eme option autorise la saisie de n'importe quoi (y compris """).P:[(21)::TITRE$" E C R A N D E S A I S I E "::ZB$;TITRE$;ZB$:I15:4I2:2:ECRAN$(I);" :":16:I140:"_";::318:"Chaine retouriser." d9 n"La version disquette est diff{rente"` x"de la version papier pour tenir" "compte d'une fac{tie de GS.OS" "qui d{pose sur l'{cran" "les Majuscules Normales" " en octets $80 @ $9F" "au lieu de $C0 @ $DF"# 2079 ; BASIC device PEA 1|-16 ; port 1 (ou 2) PEA 1 ; ...... LDX #$100C ; _SetOutputDevice JSL $E10000 PEA $FF ; AND mask PEA $80 ; ORA mask LDHA PHA PHA LDX #$130C ; _GetOutputDevice JSL $E10000 ; empile {tat initial PHA PHA LDX #$0D0C ; _GetOutGlobals JSL $E10000 ; empile {tat initial PEA 0'TextScreendump' Tend anop dc i4'StartDA' dc i4'ShutDA' StartDA anop ; ici Natif Vrai PHB ; sauve banc donn{es PHK PLB ; banc donn{es = banc programme P<>?@ABCDE------------ Case ON absaddr off keep SDUMP DAStart START KIND $1E ; interdit 'Special Memory' Bmain gequ 0 B_aux gequ 4 Flags gequ 8 dc i1'Tend-Tbeg' Tbeg dc c *------------------------------- * TextScreenDump * * quand un CDA est actif, * l'{cran Texte est sauv{ * en E0/1400... et E0/1800... * assembleur APW * * Y. KOENIG 01 Septembre 1988 *-------------------ASSEMBLE SDUMP.SRC LINK SDUMP KEEP=SDUMP COMPACT SDUMP FILETYPE SDUMP CDA  ::D$(4):D$"PR#3":II6495::(27)(I)(24);::" ";::Q:hI18:I5:II:p:I18:I5:II::"RETURN pour retour au MENU ";4 49168,0:X$W X$(13)ĺ(4)"-/T22/STARTUP"` 190 X #$0A0C ; _SetOutGlobals JSL $E10000 PEA 1 ; output LDX #$150C ; _InitTextDevice JSL $E10000 BCS exit ; P.....C..M.... PEI Bmain ; Sauve 8 octets PEI Bmain+2 ; de page 0 PEI B_aux PEI B_aux+2 PEI Flags LDA >$E01D1E ; valeurs initiales de STA Flags ; C01E et C01F LDA #$E01400|-16 STA Bmain+2 STA J'ai tenu @ mettre sur la disquette le fichier texte de l'article pour permettre aux lecteurs de mettre en place les patches variantes sur la version modifi{e. En effet, lorsque j'ai remarqu{ que GS.OS affiche sur {cran sans respecter les r}gles officielle "k)ɠ\ɀi?R` $0@@$ 0 i@H %X (h ( %YH %& (h ( %$H "`((((PPPPra ,@ aTextScreendumpKHHH "HH " " " "^ڽ1iZ$ zZ z(詍 (0hhhhh "1480,$1500,$1580' dc i2'$1600,$1680,$1700,$1780' dc i2'$1428,$14A8,$1528,$15A8' dc i2'$1628,$16A8,$1728,$17A8' dc i2'$1450,$14D0,$1550,$15D0' dc i2'$1650,$16D0,$1750,$17D0' END ; r{cup JSR Write JSR ESC_out LDA #'$' BRA Write ESC_out LDA #$1B ; ESCape Write PHA LDX #$180C ; _WriteChar JSL $E10000 RTS bases dc i2'$1400,$ite PLA ; r{cup JSR Write JSR ESC_out LDA #'Y' BRA Write Icone PHA ; sauve JSR ESC_out ; mode icone IMW2 LDA #'&' JSR Write PLA erse ; ; Majuscules Inverse MajInv ADC #$40 MinInv anop ChifInv dc i1'$EA,$EA' ; BRA Write si pas IMW PHA ; sauve JSR ESC_out ; Inverse -> soulign{ LDA #'X' JSR Wr #$40 BCC NoIcone BIT Flags-1 BPL MinInv ; MajFlash -> MajInv BMI Icone ; Icone (BMI Write ; ; si pas IMW2) NoIcone CMP #$20 BCS ChifInv ; Chiffre... invadc #$3f ; $40 puisque C=1 bra Write NoBiz CMP #$60 BCC NoMinInv BIT Flags-1 BMI MinInv ; AltCharset actif SBC #$40 ; ChifFlash -> ChifInverse BRA ChifInv NoMinInv CMP0000 ; restaure {tat initial PLB ; ........ banc donn{es ShutDA RTL ; au revoir CharOut AND #$00FF CMP #$A0 BCS Write ; Carac 'Normal' cmp #$80 bcc NoBiz PLA ; page z{ro STA B_aux PLA STA Bmain+2 PLA STA Bmain exit LDX #$0A0C ; _SetOutGlobals JSL $E10000 LDX #$100C ; _SetOutputDevice JSL $E1 LDA #$8D JSR Write PLX INX INX CPX #24*2 ; derni}re ligne ? BCC Vlup ; non PLA STA Flags PLA STA B_aux+2 ; restaure 10 octets main ; mode 40 cols LDA [B_aux],Y JSR CharOut PLY PHY main LDA [Bmain],Y JSR CharOut PLY INY CPY #40 ; derni}re colonne ? BCC Hlup ; non B_aux+2 LDX #0 Vlup PHX LDA bases,X STA Bmain ; base sur {cran Main CLC ADC #$400 STA B_aux ; base sur {cran Aux LDY #0 Hlup PHY BIT Flags BPLs Tremplin 22 {tait imprim{. Je pensais pouvoir rattraper cel@ dans TM23 mais le sort mettant G. Hachette dans l'impossibilit{ de continuer @ publier Tremplin, j'essaie de limiter les d{gats. La diffusion de ce texte et de la version disquette sont autorisGIJKLMNOPQRST'annexe H au 'Firmware Reference Manual'. Pour afficher des informations sans avoir @ reconstruire l'{cran en service on propose en effet: travailler normalement en mode 'shadowing on' supprimer provisoirement le shadowing {crireermet de traiter correctement les {crans 40/80 cols et les {ventuels chiffres en FLASH. Pourquoi reproduire ce qui figurait dans les bancs E0/E1 plut^ot que ce qui figurait dans les bancs 00/01. La r{ponse est li{e @ une suggestion faite par APPLE dans lun tampon de 80x5 caract}res ce qui ne me plaisait gu}re. On r{cup}re en e01d1e-1f la configuration initiale sauvegard{e lors de l'entr{e dans le tableau de bord: e01d1e contient l'ancienne valeur de ALTCHARSET, e01d1f l'ancienne valeur de RD80VID. Cel@ pppels outils effectu{s ont d{j@ {t{ utilis{s dans FREEZER. Il {tait tentant d'utiliser _WriteLn au lieu de _WriteChar mais je ne l'ai pas fait @ cause du traitement des icones et INVERSEs. Leur nombre {tant par d{finition inconnu, il aurait fallu pr{voir gne. Si vous employez un autre mod}le d'imprimante remplacez {galement les deux NOPs de ChifInv par BRA Write et les INVERSEs seront remplac{s par leur {quivalent 'normal'. En ce qui concerne la structure du programme, peu de choses @ signaler. Tous les asoulign{s et les ic^ones grace aux ic^ones internes de l'imprimante. Si vous disposez d'une IMW1 ou d'une DMP, il vous suffira de changer un octet (BMI Icone devient BMI Write). Les ic^ones seront alors remplac{es par le caract}re majuscule qui les d{sionner TextScreenDump. Avec une EPSON sur carte parall}le, SDUMP attend patiemment que vous allumiez la b^ete et effectue alors la recopie demand{e. Dans sa version actuelle, le programme fonctionne sur IMW2. Il reproduit alors les INVERSEs en caract}res s de d{terminer si l'imprimante appel{e est effectivement en ligne. Veuillez vous assurer que votre imprimante est connect{e, allum{e et aliment{e en papier. Avec une IMW2 {teinte on ressort de l'accessoire. Il suffit d'allumer l'imprimante et de res{lectileau de bord, s{lectionner 'TextScreenDump' ex{cute la recopie. Il s'agit d'un outil tout @ fait simple, qui suppose que le port imprimante est le port 1. Afin de permettre l'utilisation d'imprimantes anciennes, on emploie le mode 'BASIC' qui ne permet paette manipulation pour doter le GS d'une recopie d'{cran texte accessible @ tout moment pour tous les programmes travaillant bien {videmment en mode texte. C'est ce que fait l'accessoire de bureau 'TextScreenDump'. Ctrl-pomme-ESC vous am}ne au menu du tab en E0/1800... la pile 00/0100... en E0/0300... la page 00/0000... en E0/1C00... On sauve aussi les trous d'{cran utilis{s par les routines 'control panel'. Il semblait donc parfaitement possible de tirer parti cuve consciencieusement diverses choses importantes, @ savoir: l'{cran 00/0400... en E0/0C00... l'{cran 01/0400... en E0/1000... l'{cran E0/0400... en E0/1400... l'{cran E1/0400... {es. ------------------------------------------------------------------------ Vous avez dit IMPOSSIBLE bizarre bizarre Lorsque l'on appelle le tableau de bord par Ctrl-pomme-ESC le GS sa directement dans l'{cran E0-E1 r{tablir le shadowing pour revenir @ l'{cran initial. C'est donc bien l'{cran E0-E1 qu'il faut reproduire si l'on cherche @ garder une trace de ce qui figure sur l'{cran du moniteur. A signaler que tant que l'on n'a pas quitt{ le tableau de bord, le contenu des zones de stockage reste inchang{, il est donc parfaitement possible d'effectuer plusieurs recopies papier du m^eme {cran. Si vous n'avez pas APW (MERLIN.816 est utilisable avec quelques modifs du source et VXYZ[\]^_`abcdefghijklmnopq Р 卪ŠՠӠΠԠİ ӍàŠҠ΍Ҡҍ U*DEMO.INSTHEUSDUMPuHUSTON!' ''INSTH.SW 4E U)RELOPRO.Ss U%INSTHX`EUBONJOUR:c: USTART.UPDE;UPRO.FPante un programme. On a ainsi une trace des infos envoy{es par le moniteur lors du break.bre 88 vous avez dit bizarre..... PS. j'aurai fort bien pu tester le mode affichage en service mais, ne le faisant pas je vous offre la possibilit{ de faire une recopie de l'{cran texte lorsque l'on est en mode SHGR. C'est utile lorsque l'on plu tableau de bord. c018 -> e01d04 c01a -> e01d1a c01b -> e01d1b c01c -> e01d1c c01d -> e01d1d c01e -> e01d1e c01f -> e01d1f c029 -> e01d18 c068 -> e01d03 Yvan KOENIG 01 Septemandes n{cessaires @ l'assemblage complet de SDUMP. Note @ l'intention des audacieux. Si vous souhaitez aller plus loin (recopie d'{cran GR, HGR, DHGR ou SHGR), je vous signale que l'{tat de certains commutateurs logiques est sauvegard{ lors de l'entr{e az, en mode EXEC, le fichier MAKE contenant les 4 lignes suivantes: ASSEMBLE SDUMP.SRC LINK SDUMP KEEP=SDUMP COMPACT SDUMP FILETYPE SDUMP CDA taper MAKE lancera l'ex{cution des comm $213C: 80 30 create SDUMP,t$b9 bsave SDUMP,t$b9,a$2000,l$1C9 n'oubliez pas de transf{rer ensuite SDUMP dans le sous-catalogue /*/system/desk.accs. Si vous avez APW, cr{earavant pensons aux variantes: bload SDUMP.06,a$2000 vous imprimez depuis le port 2, $2079: 02 vous utilisez IMW1 ou DMP $2133: 3a vous utilisez une autre imprimante $2133: 3a d'ailleurs, SDUMP a {t{ {crit sous MERLIN puis transf{r{ sous APW), faites: saisir en $2000... bsave SDUMP.06,a$2000,l$1C9 v{rifications (avec SIGNATURE si possible) si tout est OK on peut sauver d{finitivement mais aup ҠŵΠŵ͠ŵӠŵΠŹōĠðŠðĸĠðƍԠĠ 卪 ōȠ̠֠נԠ·ҠðōDZðDzð֠µ  ֬ Π³àñ ԠĸŠ ҍԠŹӠ٠ 占؍ɠ 򮮮ɠ 􍪍Ԡōč̠ԠōӍàҠ ЍԠð ð 占̠΍ҠРȢ ŠҠЍ 婍Рčɠ 󍪍 占٠ՠ ҠčԠﰍ̠ﰰ̠ﰰ̠ﰰΰ󰍠ŠԍԠ٠ǭǍǭٍҠԍٍŠРԍ ħ΍ øЍøЫàЫ؍ɠԠ ٠ÍЩٍР Š٠ЩٍРĶ ŠЫŠ̠ԠӍ 󍪭 ԠحҠϺį 占ҠЭ ōčؠôٍŠ占ؠī 占٠ ΰ占ؠŠ ؠīĠӠ Ҡč Ҡ堻 ɠ ÍӠ ㍪ ̭č 鍠㠻 Ϻ΍ѫŠÍؠëэؠѫР ؠԠ à ؠë⍪٠ɭϺ΍ϺƠѫѠ㠻 占ؠŠƸðؠ Ġ 讍Ҡ占ѫëэÍѫ ĠƍҠŭؠ ÍŠč؍Šؠ͠ؽؠӍؠӫϺčҍԠ ϺčҫÍӍϺč鍠ԍᠣ Ƞ 卪 Šؠĭōؠ΍ΫĭōĠƠʍҠ΢ ѠРƢ΢ ÍŠĠ΍Ƞά ƍέؽ٠РōčԠР΍ԠӍ٠ԍŬٍԍĭū㠺ԍԍŠ 卍 浸 Ѝ 􍪭 ōð 豫 貫̠ ̠ ̠ ̠ ýĭ ìا Ӡ  ì٧ ōؠ ɍà΢ Ӎ ōǠ ì ҠӠ  ìč ٠ ֠ 占Рà ͠Ҡԍ֍Рà֍Ӡý ǍҠԍ؍Š썠Ӎà ؠؠ Ҡԍ؍ŠӍРԍ ɠ̍Р àɍР àά 占Р Ӡά 占ҍؠǭčĭؠ ̩٠ ɠ̍ĠƍР ȍӠ䱠 䱠Šנ̩٠ DZ占Ӡ鍍ĴҠ ٽҠčٍ٠ŠҠ͍àĴ 占Ӡ鍍Ġ ̠Ĵ 􍍻 ״Ҡ ٽҠנ 占ٍ٠ Šά Ҡ͍à״ àи 卍׫׍Ҡ֠ ֬ ̬ ̫ 占ȍӍŴԠҠ 㬯 иҠ ٽDz 岍Ҡנ 岍Ҡנ 屍ٍ٠ Šά Ҡ͠ Р Š ΍ ɬ ٠ð ō٠֠ٽԠ΍ɠĴ ɫԠĸč̠Ŵ ٠ҩٍҠԍҍРҫà򫱍àҍŠàҫà ٽҫҍ ō負ð Р Š堻 ΍٠ ɍƸ٠ 堻 ōҍҫҍ򫱍ҫà ōȍ֍׍׫ҠԍҠԍ ō豠ð ō ì Ӡ  ڧ ¬  ¬ɧ Ӡ ԠƠ                           ܧ        ı        ڧ         ۧ        ا         ٧        ֧         ק        ԧ         է        ҧ         Ӭ        Ч         ѧ        Χ         ϧ        ̧         ͧ        ʧ         ˧        ȧ         ɧ        Ƨ         ǧ        ħ         ŧ        §         ç       ݧ         ާ         ߧ        ԍ   ǠԭͯҠҠ ㍻ŰĠ٫ҠƵɠưРƵ ҍ´ ԠĠ ŠŲà ̯ȭ ̯ȩ ̯ȍԠǠĠà Š ō ōҠĠō Ӎ٠ 㰲 rtuvwxyz{|}~ ̩ Ԡƍ ҍǠà ǠŠàϢ ƍč㠢 ƢĠčѠؠԠ̠ àč٠ĭϭϬٍҠԍٍ̠РٍϠؠĬ֠ Χ Ţ芠    Կؠ 占Ҡōà㲠 卍ϠӍà ōӠ ΍ϠӍà ōӠ ΍ӭ ӭ㲠 ٽҠؠà ٠ ٽҠԿ٠ ٽ ؽ ҠŠ à㱠 Ҡ Ҡ Š 卻 Ġ ؠ ؽ ٠  ɠ٠٠占Ġ ٠ 占Ҡ ïҠ ï؍Ŭؠ ٍɠ堻 ٍٍРɍŠɍ٠ؠ ҠŠ ɍ Š堻 卍 ɍ 򺍻 Ԡ ፠ àǫ 󧍠ԫ㱠٠٠占Р Šɍٍ٠占Šɠ ɍ 占ϠōīōӠ΍ÍàǠ ͠ Ǎ͍ǫǭ 占ǭ̭č̭īĠ Ϯ ۹ōҫ 占 占Ҡ Ӡ 卍΍ ī 占ؠī 占ؠī 썪 卪 對Ġ 卍Ϡōؠī ؠī就           Ġ īҠōҠԍϠԍЍōӍ΍Рҩ ç ԿčРٍٍī :(21):6"Commande Externe ProDOS SDUMP"<a("La version publi{e n{cessite:"g-2" unit{ centrale //e ou //c"<" imprimante IMW 1 ou 2"F15:"Configuration valable (O/N) ? ";P49168,0:X$ ZX$"O"X$"o"ĺ(4)"-STA>>\H]H$$$$^H_HӠŠŠӠΠƍHBHx0`@CHå٥ÁDH EH FH p >GHHH*IIHJH @@ KHLHMH p ?NHOHPHQH8~8RH~SHTHUHI*VHUUUUWHUUUUXHYHZH[HNdhhɅ%,0@,$ :dU d d( Adh7h6h [h$`, :d d( Ad :d c( Adɱ(0?)?  @ $(T0, @`SdXc `i@[d_c `L%L %%`_de'$XY! Z-I@H8zHAH8ĄBe&e eec b bX`Ďb@bb `ȅ0  b bҠd LxHHH b,b c )chhhX@,,`Lc Ucc ic$H%H6H7H ɅLc HHKdLd Mda a >? , a`l<ȥ<<ȥ<d?ׅeةB8C< ȱ<ȱ<ɿ  ad? ҍٍĠ؍Í̠ҍ؍̠̍ЬٍЬٍ؍؍ؠàӍҠӠ卍͠ ōР ፠ōӠ ΍ǫÍàԫؠ 占Íàԭͯ 卺ҍҍٍٍ̬ӍŠ٠ ث ٠ Ҡ؍̠ōӍԠϠàٍà䠻 􍍠ٍǍРٍٍǫàٍӠ䠻 ýٍٍàԠ占٠ 占ٍٍàԫRT.UP"0 dX$"N"X$"n"ĺ(4)"-/T22/STARTUP"8 n80  D$(4)D$"-PRO.FP".D$"-INSTH"C(D$"-DEMO.INSTH",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 %a$8-TEXT.DEMO3.CCa $;*TEXT.DEMO4a%-TEXT.DEMO4.CCa %:TEXT.TOOLSuHUSTON!' '%LIT.Cc+ *TEXT.DEMO1 a$7-TEXT.DEMO1.CCXa $*TEXT.DEMO2 fa$7-TEXT.DEMO2.CC a $*TEXT.DEMO3:  :j 18:"Pomme Ferm{e- H = Recopie {cran":24:"---------- Ligne basse ----------";:20} KY11500:KY  N'oubliez pas de d{connecter la commande":12:9:"par INSTOF ou Ctrl-Reset":14:6:"si vous n'en avez plus besoin."}  "Routines "@ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _"  b: l500 v: :500:  D$(4):D$"INSTON"&YK120:::D$"PR#3":C620o<I6495::(27)(I)(24);::" ";::xF670n(17)x620I6495::(27)(I)(24);::" ";::670(21)620:500::670YKw |:10:" hgʎX?kύX! "&#Í' / XI `x A`: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)H",h)/8 pIť8  RH",hHH",h8Hhh 8pI0HSQhHhSQH" zz+k ;8[iA)Hh ٦H"Th8 {i+kcck ;[ȗȗ+k8k ;8[i Ha_hHh%R{iHh'"  "iʆ & &H" zz 몧H hHh몧Q)DiHihHʆ & &H ",hhHh8pIʆ & &H ",hHh{i" ziHH몧",hh ^8iH"" ziH몧",h ) ) 䂕H"HH몧",hh zu8iH"" ziHH몧",hh ) )) x8iH"}"t zzzzz% % H H "h" z)^)"'))")"w8iH"" ziH ""h $ $)8/pI($)8~pI0$)H ""H" ""H""{i+k ;8[id %$iHih } "7zz HH"TzzzH" z H"8H"zzH*h(, H((" zzz{i+k ;8[i"H"h" "H " H " | ,@ main | H H h ;8[iH"hHH "h " "H"kzz"_z 222):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/T22":D$"RUN STARTUP" R$"F"ė: 180W ER(SQ  "O HShQ{i+k ;8[ia_$e9H"f " z88_aapI0 a_" {i+kh h h h h " H k:Hk ;8[i)H" z{i+k ;8[iH H "h {i+k ;8[i)H)|)8apI)8z caract}re. */ DisposeAll (MonID); /* Lib}re la m{moire r{serv{e */ TextShutDown (); /* Clos le Text Tool */ MMShutDown (MonID); /* Clos le Memory Manager * Lit un caract}re au clavier sans {cho */ /* Teste la valeur du caract}re: si + grand que 31 et inf{rieur @ 127: */ if ( Touche > 0x1F && Touche < 0x7E) /* on affiche. Dans les autres cas, on */ { WriteChar ( Touche); } /* n'affiche pas le (); /* et enfin le Text Tool */ WriteLine (Salut); /* Affiche le message de salutation */ WriteString (Attends); /* Affiche un message de sollicitation */ Touche = ReadChar ( (word) 0); /in() /* Main program */ { TLStartUp (); /* Initialise le Tool Locator */ MonID = MMStartUp (); /* puis le Memory Manager */ TextStartUp ramme */ char *Salut = { "\pSalut!" }; /* Message */ char *Attends = { "\pPressez une touche SVP " }; /* Invite */ char Touche; /* On stockera le caract}re ici */ ma */ #include /* les outils. */ #include /* Constantes utilis{es par ce programme */ int MonID; /* Identificateur de ce prog/* TEXT.DEMO1.CC ** ** Utilisation de l'outil Text Tool ** ** (c) Juillet/Septembre 1988 ** ** par Emile SCHWARZ & Tremplin Micro */ #include /* Fichiers n{cessaires pour utiliser BYTEWRKSQ_F ,@ DIRECT ,@ ~globals '.5.5 @,@ ~arrays Can't allocate SANE direct pageSalut!Pressez une touche SVP HSJ AYC,Rv*/6l},Gz}' @ ")k;[[HH Z;[ȷȷ hhhz+k ;8[iQ)&Hh ө {i+kn k5D"&YCeX,pI) )iA8aH)8apI)8zpI) )iA8a5)3)){i+kH  8zzzz(k ;8[i " zzz{i+k */ TLShutDown (); /* " " Tool Locator */ } . ,@ main H H h ;8[iH"hHH "h " "H"zz" z z{i+k ;8[iH H "h {i+k ;8[i)H)|)8apI)8zpI) )iA8aH)8apI)8zpI) )iA8a$e9H" " z88pI0 " {i+kh돞 h h h h " H k:Hk ;8[i)H" RHCA"hHH22"h8Hhh 8pI011HhHhH"zz  " Hh{i+k ;8[ih-h-h---k ;[ȗȗ+k8k ;8[i HhHh5R{iHChA'AA"c CA)HCA"h)/8 pIť8 1ʆ & &H "hhHh8pIʆ & &H "hHh{i+k ;8[iA)Hh ٦H"h8 {i+kcckHHH "" ziH몧"h ) ) 䂕H" "iʆ & &H" zz 몧H hHh몧Q)DiHihHHH몧"hh ) )) x8iH"" ziHH몧"hh ^8iH""'))")"w8iH"" ziHH몧"hh zu8iH"" zi+kHH "h-h---k ;8[id 5$iHih " zzzzz5 5 H H "h" z)^);8ZH"; zzzzz " " H "H ""h , ,)8/pI(,)8pI0,)H "*H" "*H""{i"; hhhhHh;8ZH"; zzzzz " ""H"; hhhh;8ZH"; zzzzz "$"H ";8ZH"; zzzzz " "zz HH"TzzzH" z H"8H";zzH*h(, H((" zzz{i+k ;8[i"H"h* "H ""H5)3)){i+kH  8zzzz(k ;8[i$"iiե {i+k ;8[i " zzz{i+k  ")k;[[HH Z;[ȷȷ hhhz+k ;8[iQ)&Hh ө {i+k ?D!0^ց?%XFDev.deviceType = OldErrDev.deviceType; NewErrDev.ptrOrSlot = (long) 1; /* Slot 1 pour imprimante */ SetErrorDevice ( NewErrDev ); /* Fixe le nouveau 'error device' */ InitTextDev ( errorOutput ); /* Valide les nouveaux */ TextStartUp (); /* suivit du Text Tool */ WriteLine ( Salut ); /* C'est le `gros` du programme */ OldErrDev = GetErrorDevice (); /* Sauvegarde l'ancien port */ NewErres nouvelles valeurs */ main() /* Programme principal */ { TLStartUp (); /* Initialise le Tool Locator */ MonID = MMStartUp (); /* puis le Memory Manager /* Sauvegarde de l'environnement */ TxtMaskRec NewMask; /* Mise en place de mes masques */ DeviceRec OldErrDev; /* Sauvegarde de l'environnement */ DeviceRec NewErrDev; /* Mise en place dtxt = { "\pCe texte est affich{ sur le p{riph{rique d'erreur" }; char *Printer = { "\pVeuillez brancher votre imprimante en slot 1 SVP" }; char Touche; /* On stockera le caract}re ici */ TxtMaskRec OldMask; ool.h> int MonID; /* Identificateur de ce programme */ char *Salut = { "\pSalut!" }; /* Message */ char *Attends = { "\pPressez une touche SVP " }; /* Invite */ char *Err/* TEXT.DEMO2.CC ** ** Utilisation de l'outil Text Tool ** ** (c) Juillet/Septembre 1988 ** ** par Emile SCHWARZ & Tremplin Micro */ #include #include #include 'J5T$7 @,@ ~globals 7.5M.5"M&U @,@ y_Z] Xglqv{X,Rv */6l} Eehux6fru8gA*G8W!param}tres */ OldMask = GetErrGlobals (); /* R{cup}re les anciennes valeurs */ NewMask.andMask = 0xFF; /* Fixe la valeur du masque AND */ NewMask.orMask = 0x80; /* Fixe la valeur du masque OR */ SetErrGlobals ( NewMask ); /* Valide les masques du p{riph. d'erreur*/ WriteLine ( Printer ); /* Affiche une invite */ WriteLine ( Attends ); /* Message de sollicitation */ Touche = ReadChar " ziH몧"h ) ) 䂕H" "iʆ & &H" zz 몧H hHh몧Q)DiHihHH몧"hh ) )) x8iH"" ziHH몧"hh ^8iH")"'))")"w8iH"" ziHH몧"hh zu8iH"" zi"H""{i+k ;8[id %$iHih " zzzzz% % H H "h" z)^ H "H ""h $ $)8pI0$)8pIp$)H "$)HNN &"$)HSS ""MM ""H" " " "zz HH"TzzzH" z H"8H"BzzH*h(, H(("6 zzz{i+k ;8[i"H"h" " "H "z ,@ main H H h ;8[iH"hHH "h " "H"zz"z ( MonID ); /* Clos le Memory Manager */ TLShutDown (); /* Clos le Tool Locator */ } */ /* On ferme les outils que l'on a ouvert */ DisposeAll ( MonID ); /* Lib}re la m{moire r{serv{e */ TextShutDown (); /* Clos le Text Tool */ MMShutDown au clavier sans {cho */ if(Touche > 0x1F && Touche < 0x7F) /* Teste la valeur du caract}re: */ { WriteChar ( Touche ); } /* Si > 31 et < 127 : on affiche */ /* Autrement, on ne fait rien " " */ InitTextDev ( errorOutput ); /* Valide les nouveaux param}tres */ WriteString ( Attends ); /* Affiche un message de sollicitation */ Touche = ReadChar ( (word) 0); /* Lit un caract}re ( (word) 0); /* Lit un caract}re au clavier sans {cho */ ErrWriteLine ( Errtxt ); /*Affiche texte sur p{riph{rique d'erreur*/ SetErrGlobals ( OldMask ); /* Restaure les anciennes valeurs */ SetErrorDevice ( OldErrDev ); /*Hʆ & &H "hhHh8pIʆ & &H "hHh{i+k ;8[iA)Hh ٦H"h8 {i+kcck ;[ȗȗ+k8k ;8[i HkihHh%R{iHh'"; )H"h)/8 pIť8  RH"hH */ char Touche; /* On stockera le caract}re ici */ char Valeur[] = { 0x20, 0, 0, 0, 0x20, 0x24, 0, 0, 0, 0 }; /* Valeur d{cimale et hexad{cimale */ main() ool.h> #include int MonID; /* Identificateur de ce programme */ char *Salut = { "\pSalut!" }; /* Message */ char *Attends = { "\pPressez une touche SVP " }; /* Invite /* TEXT.DEMO3.CC ** ** Utilisation de l'outil Text Tool ** ** (c) Juillet/Septembre 1988 ** ** par Emile SCHWARZ & Tremplin Micro */ #include #include #include JMhorgA?b{?/%d><_x<,"}' @,@ ~globals '.5.5Hh ө {i+k 6DF,_Mf2`50?DINSjp(9?H,Rv */6l}1Tt A4H %6;W\#AFbkw|fO 9X[} "%)3)){i+kH  8zzzz(k ;8[i "O zzz{i+kJ L ")k;[[HH Z;[ȷȷ hhhz+k ;8[iQ)& "h {i+k ;8[i)H)|)8apI)8zpI) )iA8aH)8apI)8zpI) )iA8a5" "y z88ikkpI0 ki"y {i+khv hw h\ h^ hZ "w Hv k:Hk ;8[i)H" z{i+k ;8[iH HH"h8Hhh 8pI0H][hHh][H" zz][  "Y H]h[{i+k ;8[iki$e9H /* Main program */ { TLStartUp (); /* Initialise le Tool Locator */ MonID = MMStartUp (); /* puis le Memory Manager */ TextStartUp (); /* suivit du Text Tool */ IMStartUp (); /* et enfin l'Integer Math */ WriteLine (Salut); /* C'est le `gros` du programme */ WriteString (Attends); /* Affiche un messahH #"@>H " "" HJJ"hhhh"H::"hhhh,*H "<H0.iHihH "":H42iHihH ""0.H "42H42H "HHDBH "FDH@>iHihH ""HHHFH "FDH@>iHihH ""HILJH "FDH@>iHi>iHihH #"@>H " ""~HDD"hhhh"H66"hhhh(&H "8)H0.iHihH ""6)H42iHihH ""0.H "0.H "42H "BHDBH "@>H@>iHihH ""BHHFH "@>H@>iHihH ""BILJH "@>H@H "86H "<:H " "" H>>"hhhh"H22"hhhh$"H "4)H0.iHihH ""2)H42iHihH "" "#zz HH"TzzzH"z H"8H"N zzH*h(, H((" zzz{i+k ;8[i"H"hS " " H "U ,@ main H H h ;8[iH"hHH "h " "H"zz"Kz /* Clos le Text Tool */ MMShutDown (MonID); /* Clos le Memory Manager */ TLShutDown (); /* Clos le Tool Locator */ } ing (Valeur); } /* On affiche le tout */ DisposeAll (MonID); /* Lib}re la m{moire r{serv{e */ IMShutDown (); /* Clos l'Integer Math */ TextShutDown (); */ /* Autrement, on ne fait rien */ Int2Dec (Touche, Valeur+1, 3, 0); /* Conversion Entier->D{cimal */ Int2Hex (Touche, Valeur+6, 2); /* Conversion Entier->Hexad{cimal */ WriteCStrge de sollicitation */ Touche = ReadChar ( (word) 0); /* Lit un caract}re au clavier sans {cho */ if(Touche > 0x1F && Touche < 0x7F) /* Teste la valeur du caract}re: */ { WriteChar (Touche); /* Si > 31 et < 127 : on affiche "NHDBH "LJH@>iHihH ""NHHFH "LJH@>iHihH ""NILJH "LJH@>iHihH #"@>H " "PNH "H ""h R "SH" "SH""{i+kHHH "hUhUhUUUkHH "K0c d>6)H3f _ @,@ ~globals _.GXiz.,M@T  _d kp %*] 9X[} "%3: HKhk FIhk ;>[^ 9<[^ .1KNvy &)HKwz/Sao0QXx{%(xAgA!9,h ө {i+kZWHD'0? #2 %R8kYr+6Sk##),Rv */6l} \` 9=Z^c OS},0MQV} BFmq :>Cjn+?Ocs$"iiե {i+k ;8[i "9zzz{i+k46")k;[[HH Z;[ȷȷ hhhz+k ;8[iQ)&HapI)8zpI) )iA8aH)8apI)8zpI) )iA8a5)3)){i+kH  8zzzz(k ;8[i" {i+khhhhh"Hk:Hk ;8[i)H"z{i+k ;8[iH H "h {i+k ;8[i)H)|)8 "R HVhT{i+kHH "hUhUUUk ;8[idb$e9H"x" z88bddpI0 dbH" h)/8 pIť8  RH" hHH" h8Hhh 8pI0HVThHhVTH"lzzVT cckHHH "hUhUhUUUkHHH "hUhUhUUUk ;[ȗȗ+k8k ;8[iHdbhHh]R{iHh'")iHihHʆ & &H " hhHh8pIʆ & &H " hHh{i+k ;8[iA)Hh ٦H"@h8 {i+k""ziH몧" h ) ) 䂕H" "iʆ & &H"/zz 몧H hHh몧Q)DiHH몧" hh ) )) x8iH""ziHH몧" hh ^8iH)^)"'))")"w8iH""ziHH몧" hh zu8iH""zhUhUUUkHH "hUhUUUk ;8[id ]$iHih "zzzzz] ] H H "h"zG"X&i*z.26:>BFJN @,@ ~arrays Can't allocate SANE direct pageValeurs des masques Device Entr{e Sortie Erreur AND $ OR $ Type de 'driver' Num{ro de slot $ Basic Type Pascal Type Ram based driver Veuillez presser une touche SVPH /* @ l'input device */ Int2Hex ( (byte) InputMask.andMask, And+6, 2); Int2Hex ( (byte) InputMask.orMask, Or+6, 2); WriteString ( And ); /* Ecrit la valeur des masques */ WriteStrev = GetInputDevice (); /* R{cup}re le type de 'device' */ InputMask = GetInGlobals (); /* R{cup}re les masques de ce 'device' */ WriteString ( Entree ); /* Affiche les param}tres correspondant */ che la ligne de pr{sentation */ WriteString ( Valeur ); WriteString ( DevType ); WriteLine ( Slot ); WriteChar ( 0x0A ); /* 1 - R{cup{ration et affichage des param}tres d'entr{e */ InputD /* puis le Memory Manager */ TextStartUp (); /* suivit du Text Tool */ IMStartUp (); /* et enfin l'Integer Math */ WriteString ( Device ); /* Affi ErrDev; /* Structure de r{ception des param}tres */ main() /* Programme principal */ { TLStartUp (); /* Initialise le Tool Locator */ MonID = MMStartUp (); ues */ TxtMaskRec ErrMask; /* Structure de r{ception des masques */ DeviceRec InputDev; /* Structure de r{ception des param}tres */ DeviceRec OutputDev; /* Structure de r{ception des param}tres */ DeviceRece caract}re ici */ int MonID; /* Identificateur de ce programme */ TxtMaskRec InputMask; /* Structure de r{ception des masques */ TxtMaskRec OutputMask; /* Structure de r{ception des masq *Basic = { "\pBasic Type " }; char *Pascal = { "\pPascal Type " }; char *Ram = { "\pRam based driver " }; char *Attends = { "\pVeuillez presser une touche SVP" }; char Touche; /* On stockera l " }; char *And = { "\pAND $ " }; char *Or = { "\pOR $ " }; char *DevType = { "\pType de 'driver' " }; char *Slot = { "\pNum{ro de slot" }; char *SlotNum = { "\p$ " }; charool.h> #include char *Valeur = { "\pValeurs des masques " }; char *Device = { "\pDevice " }; char *Entree = { "\pEntr{e " }; char *Sortie = { "\pSortie " }; char *Erreur = { "\pErreur/* TEXT.DEMO2.CC ** ** Utilisation de l'outil Text Tool ** ** (c) Juillet/Septembre 1988 ** ** par Emile SCHWARZ & Tremplin Micro */ #include #include #include