8L2C)pJJJJ IH(ȱH:=IH[H`@HcH  $ +   I/H`JLNGȄBȄF aK  haaFF  mJm# KKJ UJ )J ۈ) ;J3ȱJFȱJGJKaȄM  aaNNJFLGJL LFREEZERuHUSTON!' '+FREEZER.SRC -7+FREEZER.TXT! `'FREEZER.8.FREEZER.MACROS2BONJOUR6d T22.BIS' FREEZERFLOAD7DASH16bFORMATEURtKEY.FRACCENT2? &PRODOS `DaElH$?EGvѶK+`L HHLy XP LM ŠϠĠӠS)*+,+`F)) (*=GJFjJJA QE'+ '== `@ STSP8QSS8 m P o R(8R;............................................................... ; ; FREEZER.CDA par Y. KOENIG le 16/11/87 ; ;............................................................... case on objcase on list on absad bne Get_Key Ajuste txa ; plus court que cpx #0 beq DecrX ldx #0+1 ; anticipe le DEX DecrX dex ; 0 -> $FF, 1 -> 00 stx State bra ; Escape ? beq exit cmp #$0D+$80 ; CR ? beq setmode ldx State cmp #$15+$80 ; -> ? beq Ajuste cmp #$8+$80 ; <- ? hort Choose anop ; ici mode 8bits jsr ShowStat * Get_Key anop ; ici mode 8bits jsr GETKEY * ; toujours mode 8bits cmp #$1B+$80 teCString jsr HTAB_2 PushLong #Line7 _WriteCString jsr HTAB_2 PushLong #Line8 _WriteCString jsr HTAB_2 PushLong #Line9 _WriteCString jsr GetStat s ; A,X,Y longs lda #5 ;on est en mode texte jsr VTAB jsr HTAB_2 PushLong #Line5 _WriteCString jsr HTAB_2 PushLong #Line6 _Wri bmi enbas phx lda #39 jsr HTAB PushLong #Verti _WriteCString bra VertiLup enbas anop PushLong #Line22 _WriteCString ;Line22 et Line23 * PushLong #Line0 _WriteCString ; Line0 et Line1 PushLong #Line2 _WriteCString PushLong #Line3 ; Line3 et Line4 _WriteCString pea 18 VertiLup plx dex $E1C01F-1 ; >$7FFF si 80 cols actif bpl fixit ; mode 40 cols ldx #40*$100+20 ; WndWidth = 40 , WndLft = 20 fixit txa sta >WndLft ; fixe WndLft et WndWidth plb ;Banc donn{es = banc prog pei $0 ;Sauve 4 octets pei $2 ;de page z{ro ldx #40*$100+0 ; WndWidth = 40 , WndLft = 0 lda >art' dc i4'AnRTL' END **************************************************************** RealStart START phb ;sauve banc donn{es phk ;Sauve banc programme Ptr gequ $0 State gequ $3 WndLft gequ $000020 ; &21 CH gequ $000024 CV gequ $000025 *************************************************************** str 'Birth of the Cool' dc i4'RealSt dr off instime off expand off gen off mcopy FREEZER.MACROS keep FREEZER **************************************************************** longa on longi on DAStart START Top gequ 13 Choose setmode anop lda State sta [Ptr] exit anop long pla ; r{tablit sta $2 ; la page z{ro pla sta $0 plb ;r{cup}re le registre Banc AnRTL ENTRY rtl ;retour @ l'envoyeur **************************************************************** longa off longi off ShowStat anop pla ;config plp plp plp ;r{cup Status d'entr{e rts longa on longi on **************************************************************** * Ro pha pha pha phx phy PushWord #$FE1F _FWentry ;Ex{cute IdGS du Moniteur ply ;ROM num plx ;r{serv{ ply plx pla plp plp plp ;r{cup status d'entr{e rts *--------------------------------------- MachId anop php long pha pha ;sauve status short sta >CV long pha pha pha pha pha phx phy PushWord #$FC22 _FWentry ;Ex{cute le VTAB Moniteur anop php ;sauve status short sta >CH plp ;r{cup status d'entr{e rts *--------------------------------------- VTAB anop php e long rts **************************************************************** * * On peut appeler HTAB, HTAB_2, VTAB * quelle que soit la taille de A.X.Y * HTAB_2 anop php short lda #2 plp HTAB ;long ldx #$E115FF/$100 ; E115(ff) lda #$E115FF ; 15FF commun stx Ptr+1 sta Ptr short ; A,X,Y sur 8 bits lda [Ptr] sta Stat ;long ldx #$E115FF/$100 ;mot haut de 00E115FF lda #$E115FF ;mot bas de 00E115FF bra commun actuel anop ; ROM 0 ou 1 * ;long ldx #$E115FF/$100 ;mot haut de 00E115FF lda #$E115FF ;mot bas de 00E115FF bra commun future anop ; valeurs provisoires (pour ROM2) * ;R{cup identificateurs cpy #1+1 ;NumRom dans Y bcc actuel ; ROM 0 ou 1 cpy #2+1 bcc future longfuture anop ;pour ROM3 * **************** longa on longi on GetStat anop * En cas de nouveaux changements * il pourra }tre n{cessaire de modifier * les tests et (ou) les valeurs attribu{es @ X,A jsr MachId ich AffiCold PushLong #Cold Affich _WriteCString short lda #3 Locate jsr HTAB lda #Top jsr VTAB rts ;retour mode 8bits *************************************************ctive bra Affi_ Cfroid PushLong #Inactive Affi_ _WriteCString PushLong #Demarrage _WriteCString plp ;R{cup}re le mode beq AffiCold PushLong #Hot bra Aff ; entr{e mode 8bits lda #2 jsr Locate long lda State and #$00FF ;Strip Octet Haut php ;Sauve le mode beq Cfroid PushLong #Autine emprunt{e au RAT.CALC.CDA de Glen BREDON **************************************************************** GETKEY anop phx phy php long PushWord #0 ;Place pour r{sultat _EMStatus ;Lis {tat de EVENTmanager pla beq EIGHT ;EventMngr Inactif AGAIN PushWord #0 ;Place pour r{sultat PushWord #%0000000000101000 ;Mode EVENT d{sir{ Push ; Normal dc c' ' dc H'00' Hot dc c'chaud' dc H'0D 00' Active dc H'0F 1B' dc c'D' dc H'18 0E 00' **************************************************************** EVENTBUF a dc H'0F' ; Inverse dc c'Red{marrage:' dc H'0E' ; Normal dc c' @ ' dc H'00' Cold dc c'froid' dc H'0D 00' Inactive dc H'0E' ; sort en mode texte Line23 anop ; entr{e en mode texte dc c' ' dc H'0F 1B' dc c'LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL' dc H'18 0E 00' Demarrage anop dc c' ' OK: ' dc H'0F 1B' dc c'M' ; CR dc H'18 0E' ; mode texte dc c' ' dc H'0F 1B' ; mode icone dc c'_' dc H'18 0E' c' Choix: ' dc H'0F 1B' dc c'H' ; <- dc H'18 0E' dc c' ' dc H'0F 1B' dc c'U' ; -> dc H'18 0E' dc c' Annuler: EscD 00' Line7 dc c'Un red{marrage @ froid',H'0D 00' Line8 dc c'validera la configuration',H'0D 00' Line9 dc c'fix{e au tableau de bord.',H'0D 00' Verti dc c'_Z',H'00' Line22 dc H'18 0E' ; mode texte dc one dc c'_' Line4 dc c'Z' dc c'LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL' dc H'00' ; Pas de CR !!! Line5 dc c'Cet accessoire permet',H'0D 00' Line6 dc c'la destruction du RAMdisk.',H'0 dc c'_' dc H'00' Line3 dc c'Z' dc H'18 0E' dc c' Yvan KOENIG ' dc H'0F' ; INVERSE dc c' ' dc H'1B' ; Ic ' dc H'0E' ; Normal dc c' v 1.1 ' dc H'0F 1B' ; Mode Icone dc c'_' dc H'00' Line2 dc c'Z' dc c'\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' dc H'0D' Line1 dc H'0F 1B' ; Mode Icone dc c'Z' dc H'18 0E' ; Mode Texte dc c' Birth of the Cool ' dc H'0F' ; Inverse dc c' plp ply plx rts longa on longi on **************************************************************** Line0 dc H'0C' ; Home dc c' ______________________________________' GHT short KEY lda >$E0C000 ;Lecture clavier bpl KEY * ;PHA cmp >$E0C010 ;Strobe Clavier * ;PLA TESTKEY anop epeat ? beq KEYD cmp #3 ;Touche Frapp{e ? bne AGAIN KEYD short lda EVMSG ;Lis Touche ora #%10000000 ;Force ASCII neg bra TESTKEY EILong #EVENTBUF _GetNextEvent ;Lecture dernier Ev}nement pla beq AGAIN ;Pas d'{v}nement lda EVCODE ;Type d'{v}nement cmp #5 ;AutoRnop EVCODE DS 2 EVMSG DS 4 EVWHEN DS 4 EVWHERE DS 4 EVMODIF DS 2 **************************************************************** END Une exclusivit{ Tremplin MICRO: FREEZER Vous poss{dez un GS tout frais (c'est donc que vous ne l'utilisez gu}re) et vous vous inqui{tez, @ juste titre du devenir de la carte m}re @ la suite des op{rations 'extinction'allumage' que vous devez lui fLUDE/M16= afin de faire g{n{rer le fichier Macros par APW soi-m^eme. Faites ensuite ASML +E +T FREEZER.SRC pour effectuer l'assemblage et le 'linkage'. Les param}tres employ{s sont bien agr{ables. +T provoquera un arr}t de l'assemblagilles, contiennent entre autres une pr{sentation d' APW et de l'assembleur associ{. Il faut effectuer la saisie du source imprim{ \i-apr}s, sauver sous le titre FREEZER.SRC. Ensuite, depuis le SHELL tapez: MACGEN FREEZER.SRC FREEZER.MACROS 2/AINCis pas s'il sera possible de les mettre sur la disquette. Pour ceux qui ne maitrisent pas APW (ou qui ont acquis pour environ 150 francs chez DDA les seules disquettes APW, APW.U et DEBUGGER) je rappelle que les Clefs pour APPLE //GS, malgr{ quelques coquail au fichier Source mais ATTENTION, MERLIN816 respecte les contraintes du LOADER P16 mais ne le fait pas exactement comme APW. De ce fait les fichiers g{n{r{s par ces assembleurs ne sont pas identiques. J'envoie les deux versions @ Tremplin mais je ne saSIGNATURE pour contr^oler votre saisie. Lorsque tout sera d'aplomb, faites: BLOAD FRIZ CREATE FREEZER.CDA,T$B9 BSAVE FREEZER.CDA,A$2000,E$27FF,T$B9 Ceux qui ont fait l'acquisition de MERLIN 816 devront pratiquer quelques modifications de d{teffectuer une saisie directe du code HEXA mais les caract{ristiques du syst}me P16 compliquent les choses. Je conseille d'effectuer la saisie en commen\ant en $2000, de sauver en mode BIN par BSAVE FRIZ,A$2000,E$27FF Il vous sera alors possible d'utiliser ROM.00. J'esp}re que les commentaires du source vous permettront de comprendre le fonctionnement de FREEZER.CDA. Si vous avez la disquette TM19, vous pouvez sauter directement @ la rubrique UTILISATION. Pour les autres, il est bien entendu possible d'ous pour la remplacer par la nouvelle) les outils en ROM sont largement patch{s et le code MMBootinit est remplac{ par un simple RTL. C'est pourquoi j'ai {t{ amen{ @ introduire une identification de ROM provoquant un traitement 'en force' dans le cas de lapourtant vieux de pr}s de trois mois je ne suis pas en mesure de garantir que le MMBootinit commencera toujours de la m^eme fa\on. Il y a d'ailleurs d{j@ un cas d{viant. (voir note en annexe) Lorsque l'on d{marre sous P16 avec la vieille ROM (pr{c{pitez vn du changement de ROM mais \a nous pend au nez. J'ai donc choisi de r{cup{rer son adresse dans le code m^eme de l'outil en question, en respectant scrupuleusement les proc{dures d'approche r{glementaires. Rich WILLIAMS n'ayant pas r{pondu @ mon courrier EEZER.CDA. Lors du d{marrage, la fonction MMBootInit du Memory Manager s'oriente vers un d{marrage @ froid ou @ chaud en fonction du contenu d'un octet. Comme @ peu pr}s tout ce qui est dans le GS cet octet peut se promener. Il ne l'a pas fait @ l'occasio "#$%&'()*+,aire subir pour cause de configuration inad{quate du RAMdisk. Vous avez en effet remarqu{ que la s{lection effectu{e au tableau de bord ne prend effet qu'apr}s la s{quence susdite. Apr}s FREEZER qui venait @ votre secours sous ProDOS8 voil@ comme promis FRe en cas d'erreur (quelle qu'en soit la nature) +E vous renverra alors directement en mode {diteur @ l'emplacement de l'erreur. Inutile de r{p{ter ces param}tres @ chaque tentative, elles sont m{moris{es (jusqu'@ ce que vous quittiez APW). Il est cependant possible de les d{sactiver par -E ou -T. Il existe d'autres param}tres mais \a suffira pour aujourd'hui. Il reste encore @ taper, depuis le SHELL: FILETYPE FREEZER CDA puis RENAME FREEZER FREEZER.CDA Il ne m'a pas {t{ possible de crzh(((`0HHHHHZ$"zh(((`Z0"h,( "h0 0(z` ______________________________________ Z Birth of the Cool   v 1.1 _Z\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\_Z Yvan KO-/0O " j " d0  ɛɍɕɈʆޥ0hhk [0) " "(  "0  ` 00`0(0$(`0%0HHHHHZ"$"' ,@ 'Birth of the Cool K(( - " " "0ک'  " "   "  " 7 " difier au maximum 3 octets du code. Avec toutes mes excuses. Yvan KOENIG 10 Juillet 88 difier FREEZER en cons{quence. D{sormais, on manipule l'octet directement par son adresse: E115FF. Cette adresse est commune aux Roms 0 et 1. J'ai d'ores et d{j@ anticip{ en pr{voyant une future Rom 2. Si l'adresse de l'octet changeait, il suffirait de movisageais ci-dessus, Rich Williams n'a pas tenu compte de mon courrier lorsqu'il a modifi{ le Memory Manager pour le Syst}me 3.2. De ce fait il n'est plus possible de r{cup{rer l'adresse de l'octet drapeau dans le code MMBootInit. J'ai donc {t{ amen{ @ mole titre 'Birth of the Cool' est un clin d'oeil en hommage au nouveau docteur honoris causa de PARIS 10, @ savoir: MILES DAVIS. ****************************************************************************** Note importante du 10 Juillet 88 Comme je l'en'est fait d{lib{r{ment afin de permettre {ventuellement de changer d'avis et de r{tablir le mode '@ chaud' si vous aviez un remords de derni}re minute. Seule la commande Pomme-Ctrl-Reset est irr{versible. A l'intention de ceux qui n'auraient pas compris, s{lectionnez le mode 'd{marrage @ froid' et quittez le tableau de bord. Taper Pomme-Ctrl-Reset provoquera un red{marrage @ froid qui bien entendu d{truira le contenu {ventuel du RAMdisk et validera vos s{lections. Le processus peu sembler 'longuet' mais c de votre (vos) disquette de d{marrage. En cas de besoin, pour reconfigurer le disque virtuel ou pour changer de p{riph{rique, passez par le tableau de bord. Effectuez les s{lections d{sir{es (taille RAMdisk par exemple) puis appelez 'Birth of the Cool' et{er directement le fichier sous le nom d{finitif car APW cr{e un fichier de travail xxx.ROOT ce qui limite la longueur du titre de cr{ation @ 10 caract}res. ----------- UTILISATION ----------- Implantez FREEZER.CDA dans le directory /xxx/SYSTEM/DESK.ACCSENIG  _ZLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLCet accessoire permet la destruction du RAMdisk. Un red{marrage @ froid validera la configuration fix{e au tableau de bord. _Z Choix: H U Annuler: Esc OK: M _ LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL Red{marrage: @ froid  chaud D 3-6-@CMPehkwzFLOADuHUSTON!' ''FLOAD.S97%FLOADHG`7)RELOPRO.SK 7)K.FLOAD.S\J \$ 7BONJOURawd7er." d8 n"Cette version est indispensable avec"N x"le syst}me 3.2"w 20:"RETURN pour retour au MENU "; 49168,0:X$ X$(13)ė:12:(7)(7)(7);:"Veuillez retourner le disque SVP ";X$:(4)"-/T22/STARTUP" 140  :(21):<"Accessoire de bureau (NDA) FREEZER"Bg("N{cessite {videmment un //GS."o2:<"Installer le fichier FREEZER"F"dans le SousCat */SYSTEM/DESK.ACCS"P"du disque de d{marrage." Z"et rebooter pour pouvoir utilis off MEND MACRO &lab shortm &lab ANOP sep #%00100000 longa off MEND MACRO &lab _GetNextEvent &lab ldx #$0A06 jsl $E10000 MEND MACRO &lab _EMStatus &lab ldx #$0606 jsl $E10000 MEND ND MACRO &lab str &string &lab dc i1'L:&string',C'&string' MEND MACRO &lab long &lab ANOP rep #%00110000 longa on longi on MEND MACRO &lab longm &lab ANOP rep #%00100000 longa on MEND MACRO &lab short &lab ANOP sep #%00110000 longa off longi&C AMID "&SYSOPR",1,1 AIF ("&C"="#").AND.(S:LONGA),.immediate lda &SYSOPR pha MEXIT .b pha MEXIT .immediate LCLC &REST LCLA &BL &BL ASEARCH "&SYSOPR"," ",1 AIF &BL>0,.a &BL SETA L:&SYSOPR+1 .a &REST AMID "&SYSOPR",2,&BL-2 dc I1'$F4',I2'&REST' ME1'$F4',I2'(&REST)|-16' dc I1'$F4',I2'&REST' MEXIT .stack pushword &addr+2,s pushword &addr+2,s MEXIT .zeropage ldy #&offset+2 pushword &addr,y ldy #&offset pushword &addr,y MEND MACRO &lab pushword &SYSOPR &lab ANOP AIF C:&SYSOPR=0,.b LCLC &C AIF "&C"="#",.immediate AIF "&C"="[",.zeropage AIF C:&offset=0,.nooffset AIF "&offset"="s",.stack pushword &addr+2,&offset pushword &addr,&offset MEXIT .nooffset pushword &addr+2 pushword &addr MEXIT .immediate &REST AMID &addr,2,L:&addr-1 dc I .zeropage ldy #&addr2 pullword &addr1,y ldy #&addr2+2 pullword &addr1,y MEND MACRO &lab pullword &SYSOPR &lab ANOP pla AIF C:&SYSOPR=0,.end sta &SYSOPR .end MEND MACRO &lab pushlong &addr,&offset &lab ANOP LCLC &C LCLC &REST &C AMID &addr,1,11345ddr1,&addr2 &lab ANOP AIF C:&addr1=0,.a AIF C:&addr2=0,.b LCLC &C &C AMID &addr1,1,1 AIF "&C"="[",.zeropage pullword &addr1 sta &addr2 pullword &addr1+2 sta &addr2+2 MEXIT .a pullword pullword MEXIT .b pullword &addr1 pullword &addr1+2 MEXIT MACRO &lab _GetFuncPtr &lab ldx #$0B01 jsl $E10000 MEND MACRO &lab _FWEntry &lab ldx #$2403 jsl $E10000 MEND MACRO &lab _WriteChar &lab ldx #$180C jsl $E10000 MEND MACRO &lab _WriteCString &lab ldx #$200C jsl $E10000 MEND MACRO &lab pulllong &a77OOjjd[!&)36C F KN\ae Į Ҡҍà򠽠 Íàō̍̍̍̍ÍàР占Ӡ 卺卪΍Ҡō 􍍠ð 󍍪Ϡ̍ī򫲍豫貫̍̍̍̍ ԍƫԫ٠īčѠ㍠٠ 卺٠ ٠򫱍ȍ 占Ҡ͍Ӡҽ 占ӠҠ 򍍠ƫŠӠ ƍРƫàà덍ӠĠ ȍҠҠōÍӍƍͫ٠ƫ ø ΍Ҡ͠ 占ӠҠ ͠ 屍͍͍͠ 捠ı ƍҠ͠ ӍčР ŠӍؠ ӫ̠堻 𩍍Ҡ 占ĠѠ堻 ؍ؠ􍍺٠ 卍Š ōؠà   ҍҠÍӍԠύô ύҠ͠ ӠҠ ĪčӠ Ҡ à堻 ΍Ыàī ˬ ýР ذ ӠԠ 奱Ӡ 占ӫ Ӭ ččҍԍԠ ç čҫÍӍԍѠԍŠؠ 卍Šؠĭōέ؍ĠƍҠŭ؍ÍŠԍ؍Šؠ͠ ؽĭŭ 姍΍Ġ ٠РōčԠР΍ԠРӍ٠Šԍ٠ŬٍҠԍٍ٠ĭūàҠ8:;<=>?@ABCDEF ٠ȠנĠĠ РƠ ͠Ԡ·̠Ġ н׍׫Ϡ̍豠ñ 占Р Š ٠Ƹٍ٠čҠĠ 卪ōРӠ΍ ϩ e` LРĠР٧Π*****(*******(*(Cbb<b=>c?ƅcةB8C< ȱ<ȱ<ɿ  ac? ͠İ͠ĶķĸԠĹ͠ōԠčӠƵ ōԠƍΠҠŵŵΠŵ͠ŵӠŵŵӠŵŵҠŵŵ͠ŷΠŹōϠ´Ġ¸͠÷ƠøùƠŠƍϭ΍Ӡ 䠻ŠàĢĠà 𾢍ĠؠčԠ̠ɪӠ 䠻Ϡō ìħ ؠčōӠҍ ڧ 䍪ō ì  ì ͍ ì 􍪭΍ӍӠؠč àΧ Ϡō ìڧ  ìڧ ЍӍĠؠñ٠ 占ؠ򫱍ؠī ٠ Рñ 卍ǍҠč٠ٍōԠññ ɠð Ӡ΍׍ӍŠӠà ōР͍ԠЍɍϠ̍٠ٍ٠Ơ ōð 占ЍōРӠ΍Í׫٠䍺䭤ٍҠԍٍŠ썍Ϡ̍負ñ 占Ҡ Š ΍ ō٠䍺䭤ٍҠԍٍŠ썍 ō٠ٍҠԍàŠ沍à򫱍àȍ沠Рƍȍàƫà썍 ōa a >? , a`l<ȥ<<ȥ< 92,0"8l廭m e` 8`,L ,PNL'LSi;LYZ[PQqr<`ɳ> 92,0"8l廭m e` 8`,L ,PNL'LSis ProDos16, la commande DASH (-) permet de lancer une application. Par exemple, -/HD/MULTISCRIBE/MULTISCRIBE.GS (ou encore: PREFIX /HD/MULTISCRIBE puis -MULTISCRIBE.GS) permet de lancer ce remarquable traitement de textes sans passer par le FINDER ce qui fait gagner quelques secondes (\a ne nous emp}chera pas de vieillir !!!). Quelques commentaires sur la routine proprement dite: On utilise la routine officielle IDROUTINE pour s'assurer que l'on est bien sur un GS. On controle que l'on est en pr{sence d'vxyz{|}~ Yvan KOENIG (c) 1988 v1.0 * * * ***************************************** EXPAND OFF SYMBOL OFF ; INSTIME ON ; GEN ON KEEP FORMATEUR MCOPY FORMAT.MA ***************************************** * * * CDA formateur tous supports * * * * n{cessite P16 actif * * * * ASML FORMATEUR.ASM COMPACT FORMATEUR FILETYPE FORMATEUR CDA COPY FORMATEUR */SYSTEM/DESK.ACCS/FORMATEUR %"tFORMATEURuHUSTON!' 'MAKEui:9t-FORMATEUR.ASMw-V:8t,FORMAT.MACRO .1t)FORMATEUR ::t'BONJOURdtFAKE.S16U "; 49168,0:X$w X$(13)ė:12:(7)(7)(7);:"Veuillez retourner le disque SVP ";X$:(4)"-/T22/STARTUP" 140  :(21):9"Patches permettant @ BASIC.SYSTEM"?g("la reconnaissance et l'ex{cution"2"de la commande -ApplicationP16"<"Il faut bien entendu etre sur GS"F"et avoir boot{ sous P16."d 20:"RETURN pour retour au MEN A2 2C 1E2E B9 43 1E33 A4 2E 1E36 A4 2E 1E39 A4 2E Yvan KOENIG 07 Ao^ut 88{cute. .ff comparaison DASH16 DASH16.LO 1E07 BB 45 1E0F AB 35 1E14 AB 35 1E19 AB 35 1E1E A4 2E 1E21 A4 2E 1E26 A2 2C 1E29 el{e le titre stock{ (STARTUP en g{n{ral) et celle-ci nous annoncerait piteusement qu'elle ne sait pas ouvrir STARTUP. Enfin, on initialise la table de param}tres du QUIT {tendu en installant un pointeur sur le chemin d'acc}s pass{ par la commande et on exun P8 1.2 ou plus. Un sondage en OS_BOOT permet de s'assurer que le boot a bien {t{ effectu{ sous P16. On utilise enfin l'outil _MessageCenter pour le purger du titre de fichier qu'il pourrait stocker. Sans cette pr{caution on passerait @ l'application appCRO WNDLFT gequ $000020 WNDWDTH gequ $000021 CH gequ $000024 ;position horizontale du curseur OURCH gequ $00057B ;idem en 80-colonnes OS_Kind gequ $E100BC ;00=P8 actif, 01=P16 actif ;.. lda #$0F ; pour passer en INVERSE jsr Write_Char jsr VShowInfo ask3 anop jsr Get_Key cmp #$1B ; ESCape ? beq goExit cmp #$0D sec ;remet le registre 'erreur' go_store jsr store jsr VShowInfo inc DevCnt bra Do_Volume lastunit anop dec DevCnt ask anop lda #1 ask2 sta KelDev Maximum 14 unit{s bcs lastunit sta KelDev jsr BuildDev jsr GetVolume bcc go_store cmp #$11 ;Invalid device ? beq lastunit ;Oui, c'est fini ;ligne 0 d'un {cran vide lda #1 jsr VTAB WRITELN D_H2 WRITELN D_H1 WRITELN D_H2 lda #1 sta DevCnt Do_Volume anop lda DevCnt cmp #14+1 ;oDOS 16? beq DoHeader ;Yes, so branch lda #11 jsr VTAB lda Err_P8 jsr Centre WRITESTR Err_P8 jsr Get_Key brl True_Exit DoHeader anop tWriteBlock lda #54*$100+25 ;marge gauche 25 sta >WNDLFT ;largeur fen}tre 54 lda >OS_Kind ;Quel syst}me actif and #$00FF cmp #1 ;Pr _InitTextDev ;initialize video (clears screen) PUSHLONG #TitleBlk ;adresse texte PUSHWORD #0 ;afficher depuis d{but PUSHWORD #TBEnd-TitleBlk ;longueur texte _Tex ;OR mask (force bit8) _SetOutGlobals PUSHWORD #0 ;0 = input device _InitTextDev ;initialize keyboard input PUSHWORD #1 ;1 = output device output _SetOutputDevice PUSHWORD #$FF ;AND mask (rien) PUSHWORD #$80 ;OR mask (force Bit8) _SetInGlobals PUSHWORD #$FF ;AND mask (rien) PUSHWORD #$80s PUSHWORD #0 ;BASIC input type PUSHLONG #3 ;Slot 3 for input _SetInputDevice PUSHWORD #0 ;BASIC output type PUSHLONG #3 ;Slot 3 for ;place pour parms pha pha _GetOutputDevice ;Get output device info pha ;place pour parms pha _GetOutGlobals ;Get output global maskms pha pha _GetInputDevice ;Get input device info pha ;place pour parms pha _GetInGlobals ;Get input global masks pha ;Entr{e principale DC I4'CDA_Exit' ;Routine de Cloture CDA_Start anop phb phk plb ;Data bank = program bank pha ;place pour stockage par...................................... DefOld gequ 0 ; 1-> Default OLD VolName ;........................................ ; Formateur START STR 'Formateur' ;Nom du CDA DC I4'CDA_Start' ; CR ? beq AreYouSure cmp #$0A ; Down ? beq DownArrow cmp #$0B ; UP ? beq UpArrow lda #$7 ; Ring them Bell jsr Write_Char bra ask3 DownArrow anop jsr VShowInfo lda KelDev cmp DevCnt beq ask inc A bra ask2 UpArrow anop jsr VShowInfo lda KelDev cmp #1 tTextDev ;Re-initialize PUSHWORD #1 ;1 = output device _InitTextDev ;Re-initialize plb CDA_Exit anop rtl ;...................................... ; store anop _SetOutputDevice ;Restore output device _SetInGlobals ;Restore global masks _SetInputDevice ;Restore input device PUSHWORD #0 ;0 = input device _IniTrue_Exit anop lda #80*$100+0 ; Marge gauche 0 sta >WNDLFT ; largeur fen}tre 80 ! R{initialise Entr{es Sorties selon param}tres initiaux _SetOutGlobals ;Restore global masks ;RETURN ? beq Encore lda #7 ;Ring a DingDong jsr Write_Char bra get_O_N Encore lda #12 ; Clear Screen jsr Write_Char brl DoHeader jsr Write_Char lda #12 jsr VTAB lda OneMore jsr Centre WRITESTR OneMore get_O_N jsr Get_Key cmp #$1B ;ESCape ? beq True_Exit cmp #$0D key PCM pha ; ErrNum jsr DoCR WRITESTR Alarme pla jsr KelERR2 jsr Normal A_key jsr Get_Key Exit anop lda #12 ; ClearScreen adc #6 jsr TAB WRITESTR ZePath jsr Normal jsr DoCR _FORMAT Fmt_Parms bcs PCM jsr DoCR lda AllRight jsr Centre WRITESTR AllRight bra A_ ; On a tap{ ESCape Go_Gt lda #19 jsr VTAB WRITESTR Formating lda Formating clc adc #1 pha jsr TAB WRITESTR TheDevice pla clc creen jsr Write_Char jsr Do_Vtab lda #$1A ; Clear Line jsr Write_char lda KelDev brl ask2 Go_Get anop jsr KelPath bcc Go_Gt brl Exit 'O' beq Go_Get cmp #'Y' ; Piti{ pour les AngloManiaques beq Go_Get cmp #'N' bne quoi lda #19 jsr VTAB lda #$0B ; Clear End Of S PuisJe clc adc #2 ; Attention au '?' jsr Centre WRITESTR PuisJe jsr Normal lda #'?' jsr Write_Char quoi jsr Get_Key and #$DF cmp # cmp #1600+1 bcc show_it alerte anop WRITESTR alarme show_it jsr Show_Info lda #21 jsr VTAB lda Total_Blks+2 ora Total_Blks bne Puis_je WRITESTR alarme Puis_je LDA jsr Write_Char lda #$0F ; pour passer en INVERSE jsr Write_Char jsr Show_info lda #19 jsr VTAB lda Total_Blks+2 bne alerte lda Total_Blks bne up lda DevCnt bra ask2 up dec A bra ask2 goExit brl Exit AreYouSure anop jsr GetVolume jsr store jsr Do_Vtab lda #$1A ;Clear Line bcc good ;pas d'erreur ora #$FF00 ;flag (un code erreur) pha lda KelDev asl A tax lda tabloff,X tax pla ;r{cup code erreur $FFer sta VolNames,X ;range code erreur rts good lda KelDev asl A asl A tax lda Total_Blks sta Tblks,X lda Total_Blks+2 st ;sans signe lda Tblks+2,X pha lda Tblks,X pha PUSHLONG #Conversion PUSHWORD #5 ;5 caract}res PUSHWORD #0 ;sans signe _Long2Dec asl A tax lda Fblks+2,X ;pr{pare conversion FreeBlocs pha lda Fblks,X pha PUSHLONG #Conversion PUSHWORD #5 ;5 caract}res PUSHWORD #0 sta ZePath,Y cpy #16 bcc Clup2 rekup lda #16 sta ZePath LONG pla pla WRITESTR ZePath lda #27 jsr TAB lda KelDev asl A Y SHORT and #$1F tay beq blankIt tax Clup1 lda (1,S),Y sta ZePath,Y dey bne Clup1 txy cpy #16 bcs rekup blankIt lda #' ' Clup2 iny cit{' et 'Place Libre' ShowSize anop pea VolNames|-16 ;HiWord lda KelDev asl A tax lda tabloff,x clc adc #VolNames pha ldy #0 lda (1,S), ;4 caract}res _Int2Hex PUSHLONG #Err_ProDOS affichERR _WriteString AIF DefOld=0,.rtn STZ ZePath ; Pour la suite .rtn rts ;...................................... ; ; Affiche 'CapahERR ForeignMsg PUSHLONG #F_Msg bra affichERR DiskLocked PUSHLONG #Verrouille bra affichERR SeriousMsg pha ;empile code erreur PUSHLONG #HexConvert PUSHWORD #4 ;Pas format ProDOS? beq ForeignMsg ; OUI bra SeriousMsg ;Erreur 'inconnue' MissingMsg PUSHLONG #Missing5 bra affichERR NoDiskMsg PUSHLONG #N_Disk bra afficisque absent) cmp #$2B ;Protection en {criture? beq DiskLocked ; OUI cmp #$2F ;Volume introuvable? beq NoDiskMsg ; OUI cmp #$52 ;supprime HiWord KelERR2 anop cmp #$28 ;Lecteur 5" 1/4 absent? beq MissingMsg ; OUI cmp #$27 ;I/O error? beq NoDiskMsg ; OUI (sans doute D ShowSize ;Affiche Capacit{, Place Libre Vol_Next anop Normal lda #$0E ;Mode Normal Write_Char WRITECH rts ;...................................... ; KelERR anop and #$00FF ;index sur table lda tabloff,X ;mot bas offset Vol_Name tax lda VolNames,X bpl trueDev ;Pas un code erreur jsr KelERR bra Vol_Next trueDev jsr lda #1 jsr TAB jsr BuildDev ;il faut reconstruire WRITESTR TheDevice ;le descripteur lda #8 jsr TAB lda KelDev asl A tax a Tblks+2,X lda Free_Blks sta Fblks,X lda Free_Blks+2 sta Fblks+2,X rts ;...................................... ; ; Affiche Informations/volume VShowInfo anop jsr Do_Vtab Show_Info anop WRITESTR Nb_Blocs lda #41 jsr TAB _Long2Dec WRITESTR Nb_Blocs rts DoCr WRITELN rts ;...................................... ; BuildDev anop lda KelDev pha asl A tax lda tabloff,X clc adc #VolNames sta Vol_Ptr lda #1 ; 1 chiffre par d{faut SHORTX ldy #3 cpx #10*2 bcc storY imp #$1B beq ESCAPE cmp #$0D beq RETURN cmp #$60 bcc UpCase and #$DF UpCase cmp #'.' bcc BadChar cmp #'9'+1 bcs suite cpx #0 beq BadChar phx lda #7 jsr Write_Char plx GetChar phx jsr Get_Key plx cmp #$15 beq Advance cmp #$8 beq Backspc cmp #$7F beq Backspc ca #29 ; Clear End Of Line jsr Write_Char PathInput stz MaxCnt PathInput1 stz BufCnt lda EnterPath and #$FF inc A jsr TAB ldx #0 bra GetChar XtraChar dex B cmp #$1B bne chkmore rts ; C=1 -> 'Abort' chkmore cmp #$0D bne OldLen brl PathOK OldLen lda EnterPath and #$FF inc A jsr TAB ldPath BRA DoLong .usevide useVide anop ldy #16 Plup lda V_vide,Y sta ZePath,Y dey bpl Plup DoLong anop LONG WRITESTR EnterPath WRITESTR ZePath jsr Get_Key lda #11 jsr Write_Char SHORT AIF DefOld=0,.usevide LDY ZePath BEQ useVide Olup LDA ZePath,Y CMP #' ' BNE StorLen DEY BRA Olup StorLen STY ZedChar pla and #$007F rts ;...................................... ; ; Entr{e VolName ; routine de saisie emprunt{e @ Sandy MOSSBERG ; cf NIBBLE Septembre 1988 pages 92 @ 106. KelPath anop lda #21 jsr VTABave new horizontal position sta >OURCH LONGM rts ;...................................... ; Get_Key anop ; Entr{e 'LONG' pha PUSHWORD #0 ; Pas d'{cho _Rea................................. ; ; TAB place le curseur @ la position ; horizontale sp{cifi{e par A. ; ; Entr{e: A court ou long ; Sortie: A long, X,Y inchang{s ; TAB anop SHORTM sta >CH ;Spr{pare affichage centr{ ; dans la fen}tre texte active. ; ; Entr{e: A = longueur message ; Sortie: A long, X,Y inchang{s ; Centre SHORTM sta length lda >WNDWDTH sec sbc length lsr A ;.....x phy lda #0 jsr TAB PUSHWORD #$FB5B ; TABV _FWentry ply plx pla plp plp rts ;...................................... ; ; Centre: information rts ;...................................... ; ; VTAB * A= NumLine entr{e en Natif Do_Vtab lda KelDev clc adc #3 VTAB anop pha pha pha pha pha phffres PUSHWORD #0 ; pas de signe _Int2Dec rts ;...................................... ; GetVolume anop stz Total_Blks stz Total_Blks+2 _VOLUME Vol_Parms ;Get volumenc A ; 2 chiffres ici iny ; 4 caract}res (.D1x) storY sty TheDevice LONGX PUSHLONG #AsciiNum ; adresse chaine pha ; nb chiadChar bra CharOK suite cmp #'A' bcc BadChar cmp #'Z'+1 bcs BadChar CharOK inx cpx #15+1 bcs XtraChar SHORTM sta ZePath+1,X LONGM BumpCnt ldy BufCnt cpy MaxCnt bcc BumpCnt1 inc MaxCnt BumpCnt1 inc BufCnt PrtChar phx jsr Write_Char plx NextChar bra GetChar ESCAPE cpx #0 beq abortPth brl PathInput1 abortPth rts ,c'ZVWV_',H'0D' T4 dc c'ZVWV_',H'988E',c'v1.0 (c) 1988',H'8F9B',c'ZVWV_',H'0D' T5 dc c'Z',21c'L',c'_',H'0D' T6 dc c'Z',H'8E98',c' ATTENTION ',H'9B8F',c'_',H'0D' T7 dc c'Z',H'8E98',21c' ',H'9B8F',c'_',H'0D' T8 ......................... ; TitleBlk dc c' ',21c'_',c' ',H'0D' T1 dc H'9B8F',c'Z',H'8E98' dc c' Formateur ',H'8F',10c' ',H'9B',c'_',H'0D' T2 dc c'Z',21c'\',c'_',H'0D' T3 dc c'ZVWV_',H'988E',c' Yvan KOENIG ',H'8F9B'Je formate le volume' dc i1'15' ; Mode Inverse F_end anop AllRight str 'Formatage r{ussi !' OneMore str 'Un autre formatage ?' ZePath str '/123456789ABCDEF' length ds 1 V_vide str '/VIDE' ;.............i1'15' ; ctrl-O (mode Inverse) dc i1'7' ; Bell A_end anop EnterPath str 'Nom du volume ? ' Formating dc i1'F_end-F_beg' F_beg dc i1'11' ; Clear End of Screen dc c'_end-Conversion' Conversion dc c'00000 blocs' ;For long-->dec conversion Bloc_end anop PuisJe str 'Puis-je vraiment formater ce support (O/N)' Alarme dc i1'A_end-A_beg' A_beg dc i1'7' ; Bell dc prot{g{ contre l''{criture>' V_end anop F_Msg str '' Err_ProDOS dc i1'ErrEnd-ErrBeg' ErrBeg dc c'' ;Word to hex conversion ErrEnd anop Nb_Blocs dc i1'BlocCapacit{ Place libre' D_H2 dc i1'H2_end-H2_beg' H2_beg dc H'9B 8F',52c'S',H'8E 98' H2_end anop Missing5 str '' N_Disk str '' Verrouille dc i1'V_end-V_beg' V_beg dc c' 'Abort' Advance ldy BufCnt cpy MaxCnt bcs NextChar inx lda #$1C ; MoveRight bra BumpCnt Backspc cpx #0 beq NextChar dex d dc c'Z',H'8E98',c' Ne valider l''ordre ',H'9B8F',c'_',H'0D' T9 dc c'Z',H'8E98',c' de formatage, ',H'9B8F',c'_',H'0D' T10 dc c'Z',H'8E98',c' surtout si la ',H'9B8F',c'_',H'0D' T11 dc c'Z',H'8E98',c' capacit{ du support ',H'9B8F',c'_',H'0D' T12 dc c'Z',H'8E98',c' d{passe 1600 blocs, ',H'9B8F',c'_',H'0D' T13 dc c'Z',H'8E98',c' qu''apr}s avoir tr}s ',H'9B8F',c'_',H'0D' T14 dc c'Z',H'8E98',c' murement r{fl{chi. ',H'9B8F',c'_',H'0D' T15 d,s pushword &addr+2,s MEXIT .zeropage ldy #&offset+2 pushword &addr,y ldy #&offset pushword &addr,y MEND MACRO &lab pushword &SYSOPR &lab ANOP AIF C:&SYSOPR=0,.b LCLC &C &C AMID "&SYSOPR",1,1 AIF ("&C"="#").AND.(S:LONGA),.immediate lda &SYSOPR AIF "&offset"="s",.stack pushword &addr+2,&offset pushword &addr,&offset MEXIT .nooffset pushword &addr+2 pushword &addr MEXIT .immediate &REST AMID &addr,2,L:&addr-1 dc I1'$F4',I2'(&REST)|-16' dc I1'$F4',I2'&REST' MEXIT .stack pushword &addr+2k &lab ldx #$1E0C jsl $E10000 MEND MACRO &lab _WriteString &lab ldx #$1C0C jsl $E10000 MEND MACRO &lab pushlong &addr,&offset &lab ANOP LCLC &C LCLC &REST &C AMID &addr,1,1 AIF "&C"="#",.immediate AIF "&C"="[",.zeropage AIF C:&offset=0,.nooffsetobals &lab ldx #$090C jsl $E10000 MEND MACRO &lab _SetInputDevice &lab ldx #$0F0C jsl $E10000 MEND MACRO &lab _SetOutGlobals &lab ldx #$0A0C jsl $E10000 MEND MACRO &lab _SetOutputDevice &lab ldx #$100C jsl $E10000 MEND MACRO &lab _TextWriteBloc&lab _GetOutGlobals &lab ldx #$0D0C jsl $E10000 MEND MACRO &lab _GetOutputDevice &lab ldx #$130C jsl $E10000 MEND MACRO &lab _InitTextDev &lab ldx #$150C jsl $E10000 MEND MACRO &lab _ReadChar &lab ldx #$220C jsl $E10000 MEND MACRO &lab _SetInGlb jsl $E100A8 dc i2"8" dc i4"¶ms" MEND MACRO &lab _FORMAT ¶ms &lab jsl $E100A8 dc i2"$24" dc i4"¶ms" MEND MACRO &lab _GetInGlobals &lab ldx #$0C0C jsl $E10000 MEND MACRO &lab _GetInputDevice &lab ldx #$120C jsl $E10000 MEND MACRO MACRO &lab _Int2Dec &lab ldx #$260B jsl $E10000 MEND MACRO &lab _Int2Hex &lab ldx #$220B jsl $E10000 MEND MACRO &lab _Long2Dec &lab ldx #$270B jsl $E10000 MEND MACRO &lab _FWEntry &lab ldx #$2403 jsl $E10000 MEND MACRO &lab _VOLUME ¶ms &la ds 2 MaxCnt ds 2 DevCnt ds 2 KelDev ds 2 VolNames DS 14*17 Tblks DS 14*4 Fblks DS 14*4 END 'J',H'8E98',c' ' dc H'9B8F',c'K',H'8E98',8c' ',H'9B 8F',c'_',H'0D' T22 dc c'Z',H'8E98',c' OK: ',H'9B8F',c'M',H'8E98' dc 9c' ',H'9B8F',c'_',H'0D' T23 dc H'8E98',c' ',H'9B8F',21c'L',H'8E98' TBEnd anop BufCnt 0D' T19 dc c'Z',H'8E98',c' Editer: ',H'9B8F',c'U',H'8E98' dc c' ',H'9B8F',c'H',H'8E98',8c' ',H'9B8F',c'_',H'0D' T20 dc c'Z',H'8E98',c' Annuler: ESC ',H'9B8F',c'_',H'0D' T21 dc c'Z',H'8E98',c' Choix: ',H'9B8F',cc c'Z',H'8E98',c' Un formatage est ',H'9B8F',c'_',H'0D' T16 dc c'Z',H'8E98',c' une op{ration ',H'9B8F',c'_',H'0D' T17 dc c'Z',H'8E98',c' irr{versible. ',H'9B8F',c'_',H'0D' T18 dc c'Z',H'8E98',21c' ',H'9B8F',c'_',H' pha MEXIT .b pha MEXIT .immediate LCLC &REST LCLA &BL &BL ASEARCH "&SYSOPR"," ",1 AIF &BL>0,.a &BL SETA L:&SYSOPR+1 .a &REST AMID "&SYSOPR",2,&BL-2 dc I1'$F4',I2'&REST' MEND MACRO &lab str &string &lab dc i1'L:&string',C'&string' MEND MACRO &lab long &lab ANOP rep #%00110000 longa on longi on MEND MACRO &lab longm &lab ANOP rep #%00100000 longa on MEND MACRO &lab longx &lab ANOP rep #%00010000 longi on MEND MACRO &lab short &lab ANOP sep #%00110000 longa off longi off MEND MACRbkfJ j`).:À A[ G    z`  R ک   F ` F.D1 "3DUfw$D{sol{, ProDOS 16 doit } hȌH &"`ln"d` iHHHHHZ &[$"zh((` W!8WJ ${ `H ""h)`  0XF0 "F " 3` ) &   ) & ک  3/K'jH "" "` i H0)F șFF0hhF " & 8 H6 H H H '" ") & '" "` "` H i 1 " 3   P " " " " " "k H h ` l n p6 r8 `  &  " &    H "`)('+$/R 4n l  "i  " ?  3)O%Y N     C  "iH & "hi &F "  "$v   "H  "h   3  1 " 3  " " "    8 # V    V 38 6   V  V  :3  #    Y nlA  " Y  n ,@  Formateur"KHHH "HH "HHH "HH " " " " " " "^ "6 )  XIT .c pea +(~c&SYSCNT+1)|-16 pea ~c&SYSCNT+1 AGO .b MEND MACRO &lab writech &SYSOPR &lab ANOP AIF C:&SYSOPR=0,.a lda &SYSOPR .a pha ldx #$180C jsl $E10000 MEND lc &char &char amid &addr,1,1 AIF "&char"="#",.a pea &addr|-16 pea &addr ago .b .a lclc &str &str amid &addr,3,L:&addr-3 bra ~b&SYSCNT ~a&SYSCNT dc I1'L:&str',C'&str' ~b&SYSCNT pea ~a&SYSCNT|-16 pea ~a&SYSCNT .b ldx #$1A0C ~c&SYSCNT jsl $E10000 MEo .b .a lclc &str &str amid &addr,3,L:&addr-3 bra ~b&SYSCNT ~a&SYSCNT dc i1'L:&str',C'&str' ~b&SYSCNT pea ~a&SYSCNT|-16 pea ~a&SYSCNT .b ldx #$1C0C jsl $E10000 MEXIT .c phy pha AGO .b MEND MACRO &lab writeln &addr &lab ANOP AIF C:&addr=0,.c lcO &lab shortm &lab ANOP sep #%00100000 longa off MEND MACRO &lab shortx &lab ANOP sep #%00010000 longi off MEND MACRO &lab writestr &addr &lab ANOP AIF C:&addr=0,.c lclc &char &char amid &addr,1,1 AIF "&char"="#",.a pea &addr|-16 pea &addr agtre actif.4Unit{ Nom du Volume Capacit{ Place libre8SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS" 00000 blocs+Puis-je vraiment formater ce support (O/N)Nom du volume ?  Je formate le volumeFormatage r{ussi !Un autre formatage ?/123456789ABCDEF/VIDE _____________________ Z Formateur _ Z\\\\\\\\\\\\\\\\\\\\\_ ZVWV_ Yvan KOKEY.FRuHUSTON!' '+KEY.FR2.NDAOKEYUTIL.DATA N 'BONJOURd:NAR$D ,@ T " @f " @ " """)NR "`Application Bidon#Ctrl-Pomme-ESC --> Tableau de bordUne touche pour quitter >Tf!i donnera un acc}s rapide au CDA."M 20:"RETURN pour retour au MENU ";^ 49168,0:X$ X$(13)ė:12:(7)(7)(7);:"Veuillez retourner le disque SVP ";X$:(4)"-/T22/STARTUP" 190 liser." d8 n"FORMATEUR vous permet de formater"g x"tout support sans quitter l'application"y "en service" "Si vous etes sous P8 \a ne marche pas." "Cependant, ceux qui utilisent PROSEL" "peuvent transiter par FAKE.S16"$ "qu :(21):>"Accessoire de bureau (CDA) FORMATEUR"Di("N{cessite {videmment un //GS."q2:<"Installer le fichier FORMATEUR"F"dans le SousCat */SYSTEM/DESK.ACCS"P"du disque de d{marrage" Z"et rebooter pour pouvoir utiWboy  $'8QZ^ 2FSgzd_lFdh vzF ' !&,258RWZ]ehp{~ !,2ADGJMPSW]`fsv{"+5BEKOV_cj}#GMTK _ Z OK: M _ LLLLLLLLLLLLLLLLLLLLLf "^/G\Ftv1c4Kj _ Z qu'apr}s avoir tr}s _ Z murement r{fl{chi. _ Z Un formatage est _ Z une op{ration _ Z irr{versible. _ Z _ Z Editer: U H _ Z Annuler: ESC _ Z Choix: J ENIG ZVWV_ ZVWV_v1.0 (c) 1988ZVWV_ ZLLLLLLLLLLLLLLLLLLLLL_ Z ATTENTION _ Z _ Z Ne valider l'ordre _ Z de formatage, _ Z surtout si la _ Z capacit{ du support _ Z d{passe 1600 blocs,G ,@ G& I q==Clavier Bien Tempr\H**NP;/  wH"" "kHH"yHwH"yHwH"" yHwH""k"yHwH"eS"mS" :"":""<:""᭼ ) 2" U"6"]Q "hyHwH"yHwH""wy+kuyHwH "u"okk ;8  v u " ;i+k k HH"yHH "hHHyHwHE1 H "hHHyHwHM8 H "hHHyHwHU@ "hHHyHwH4uH"h);osHH/ "hwyyHwHK"yHwH"HHyHwH- H "hHHyHwH5! H "hHHyHwH=) lectionn au tableau de bord. Option-touche => caractre U.S. Avec 'Sonores' actif, le clavier est sonoris. Avec 'Etendus' actif, presser Option--touche => ASCII tendu. 셆AEIOUaeiou󉐔AOao@\{ */=ξ˂ ;[KHH"uter Inc. 1988 Ver F-1b3  shift 1 num : Ejecte du lecteur 1  shift 2 num : Ejecte du lecteur 2  shift 3 num : Sauve l'cran sur disque  shift 4 num : Copie l'cran sur papier Avec 'Localiss' actif, le clavier gnre les caractres du langage cran ss entrelacs Gauche: Retour au mode standard Taper Option-touche donne alors accs aux caractres complmentaires. Commandes additionnelles: Y. Knig Version Franaise: E. Schwarz 17 Septembre 1988 Le Clavier Bien Tempr par W. Ricken (c) Apple Compuur outil ou ProDOS.Numro d'erreur: $0000.OkAnnuler RecommencerSuiteLe Clavier Bien Tempr par W. Ricken (c) Apple Computer Inc. 1988 Ver F-1b3  - flche... Haut: Caractres avec circonflexe Bas: Caractres avec trma Droite: CaractreGVpNe peut sauver l'image.Disque protg en criture.Volume pas trouv. Disque pleinCatalogue principal pleinNom de fichier en double.Enregistrer quand mme ?Insrer la disquette SVP.01234567890ABCDEF0ErreKEYUTIL.DATALe Clavier Bien TemprRecopie d'cran Caractres(c) Apple Computer Inc. 1988 LocalissSonoresEtendusActiveCouleurChoix ImprimanteAide+DEFH/I<#@[\]`{|}~@[\]`{|}~`#@`~`~#`#@`~   SCREEN.00*/SYSTEM/DESK.ACCS/ /   # #03>1222\kUUUUH H H"hwykH H HyHwH"hkH H HHH"hk͓͕"""""͗f͙^HH"HH""H}"h"H"h""kHHH"hIHHH"HHH"hHHH"hHHH"hHHH"hHHH"h   H"kK)QNu}"   H""HH"hB "W      l R 8 m+ e             u E oA u2 w- y' u Q ] @y U; 85 M 1 E )xxxoE=5iIiuciG<'u& m  }c _ [ s (,048<@DMSY_jt twz}__]OmEa3DG;7G0} YaPa# \VPJxieH_<["A1= !#%')+-/1 !(.4Y\aelrx%(-18>Dilqu|ilor .;Uo48GJORjmru! !%)59=IMQ]`cfi .14RW_behk {i+k%)ɀd)K  s=511%)ɑ,0"/0 "Z"0k\# #&/]psh&+50/R(s~r d) W)K0s  u ݓ 00))$) )) rl)K  N )  )3K)    ) "ޭ""k {;8[:ڥ 0 {i+kmc I"""<"HH"ᯯH!"" 0s ]hKG""_"q"k""_J :0:0 "kkK"H"h)ɀ@H#"$"h" H " μ  ͺ  (0+k   H"hk}Z"G" "GkKHH" ""3_"ESEO]" QS"OH""H "H!"i= ;[+hh HH ;[+hhhhH"{i+k Ha hak K 4 N ; :8+H M H   3 KHH""HJJJJ"x"x JJJJ"x"x V/iZHXH^H\HbH`HfHdH"h"k)i0:ik{;8[:HP " hiwhHHH " ;[+(hhHH"H"h"k{;8[:HH "h ȗȗ{i+k"k"("کk */SYSTEM/""kkkK  .( i }k }kKHH" "H"h-"i""H"hn"ie"SHP "hEHHhD"kDHBH"""᭭H"᭭H!"᭧""& kK"u)u""({k{ߋKHH" """i3"c"uu"" =o !i 5+ % -/pV</|vrnjd`\Xwc_G3! 3 qI & * * minuscules accentuees en accessoire de bureau (NDA) * {tendu par Y. Koenig absaddr on 65816 on keep ACCENT2 mcopy ACCENT.MACROS case off IDSection START dc i4'OpenACC' ASSEMBLE ACCENT2.SRC LINK ACCENT2 KEEP=ACCENT2 COMPACT ACCENT2 FILETYPE ACCENT2 NDA COPY ACCENT2 /HD/SYSTEM/DESK.ACCS/ACCENT2 +0 'BONJOURdACCENT2uHUSTON!' 'MAKE2~&+ACCENT2.SRC5-ACCENT.MACROS / 'ACCENT2(SPECIAUX'+MORE.ACCENT mais je n'ai pas le temps";N "de d{tailler. Il y a 2 {crans d'aide."w 23:"RETURN pour retour au MENU "; 49168,0:X$ X$(13)ė:12:(7)(7)(7);:"Veuillez retourner le disque SVP ";X$:(4)"-/T22/STARTUP" 210 oter pour pouvoir utiliser."$ nN x"KEY.FR2 permet l'acc}s ais{ @ tous"o "les caract}res 'sp{ciaux'" "Il est {galement possible de sonoriser" "le clavier et d'effectuer une copie" "papier de l'{cran SHGR."  "Je suis d{sol{ :(21):<"Accessoire de bureau (NDA) KEY.FR2"Bg("N{cessite {videmment un //GS."o2:<"Installer les fichiers KEY.FR2"F"et KEYUTIL.DATA"P"dans le SousCat */SYSTEM/DESK.ACCS"Z"du disque de d{marrage" d"et rebo ; prologue de l'accessoire dc i4'CloseACC' dc i4'ActionACC' dc i4'InitACC' dc i2'0' ; rafraichissement maximal dc i2'$0143' ; Activate, Update & MouseDown ev------------------------- Defaults dc i1'10*(2-1)' ; Fran\ais = 2 -> 10 dc i1'$95' ; Mode OldAccent *-------------------------- BegParms anop ZeLang dc i1'10*(2-1)' ZeMode dc i1'$95' ;hez, et tapez une lettre.' dc i1'0' ligne5 dc i1'$11' dc c'-Option-Esc fait r' dc i1'$8E' dc c'appara' dc i1'$94' dc c'tre.' dc i1'0' *-------------------------------987' dc i1'0' ligne2 dc c'S. HADINGER & TREMPLIN MICRO' dc i1'0' ligne3 dc c'appuyez sur ' dc i1'$11' ; caract}re Pomme dc c' et Option,' dc i1'0' ligne4 dc c'relacent CtrlHndl ds 4 Rectangle dc i'0,0,72,235' ; rectangle de la fenetre ; (coordonn{es locales) ligne1 dc c'Minuscules Accentu' ; texte affich{ dc i1'$8E' dc c'es,(c) 1; variables diverses runstate dc i'0' ACCActive dc i'0' ; accessoire actif ? ACCTitle str 'Accents' ; titre de la fenetre ACCWinPtr ds 4 CtrlPtr ds 4 where ds 4 ; lieu de l'{v{neme du bouton de controle dc c'Cacher fen' dc i1'$90' ; e accent circonflexe dc c'tre' BRect dc i2'48,47,61,188' ; rectangle d'affichage END ACCData DATA dc i4'0' dc i2'0' dc i4'0,0,0' dc i'50,70,122,305' ; rectangle d'affichage dc i4'$FFFFFFFF' ; fenetre au premier plan dc i4'0' CtrlTitle dc i1'14' ; text ; Param}tres de la fenetre dc i2'78' dc i2'%1100000010100000' dc i4'ACCTitle' dc i4'0' dc i2'0,0,0,0' dc i4'0' dc i2'0,0,0,0,0,0,0,0,0,0' WinPtr _SetSysWindow ; d{clare la fenetre comme une ; fenetre syst}me lda #$8000 sta >ACCActive lda #0 sta >runstate rtl ACCParams anop #CtrlTitle PushWord #0 PushWord #0 PushLong #0 PushLong #0 PushLong #0 PushLong #0 _NewControl ; cr{e le bouton de controle PullLong >CtrlPtr PushLong >ACC ; ouvre la nouvelle fen}tre plx pla sta 6,s sta >ACCWinPtr+2 txa sta 4,s sta >ACCWinPtr PushLong #0 PushLong >ACCWinPtr PushLong #BRect PushLong using ACCData lda >Defaults sta >BegParms lda >ACCActive ; teste si deja ouvert beq Cont rtl Cont PushLong #0 PushLong #ACCParams _NewWindow ents dc c' Minuscules Accentu' ; titre de l'accessoire dc i1'$8E' ; e accent aigu dc c'es\H**' dc i1'13' END OpenACC START ; ouverture de l'accessoire $88, $8A, $8B, $95 *-------------------------- index dc i1'(standEnd-standards)*(1-1)' ;Anglais dc i1'(standEnd-standards)*(2-1)' ;Fran\ais dc i1'(standEnd-standards)*(3-1)' ;Danois dc i1'(standEnd-standards)*(4-1)' ;Espagnol dc i1'(standEnd-standards)*(5-1)' ;Italien dc i1'(standEnd-standards)*(6-1)' ;Allemand dc i1'(standEnd-standards)*(7-1)' ;Su{dois standards dc i1'$A3,$C0,$DB,$DC,$DD,$E0,$FB,$FC,$FD,$FE' ;#@[\]`{|}~ stande la fenetre ; mais l'accessoire reste actif mousefin pla rts Update pushlong ACCWinPtr _BeginUpdate PushLong #Rectangle _EraseRect ; efface la fenetre PushLong where PushLong #0 PushLong CtrlHndl _TrackControl ; gestion du bouton pla cmp 1,s bne mousefin PushLong ACCWinPtr _HideWindow ; cach rts MouseDown PushWord #0 PushLong #CtrlHndl PushLong where PushLong ACCWinPtr _FindControl ; a-t-on cliqu{ sur le bouton lda 1,s beq mousefin PushWord #0 sauve le port PushLong ACCWinPtr _SetPort ; utilise le port de la fenetre PushLong ACCWinPtr _DrawControls ; dessine le bouton _SetPort Ignore2 rts Ignore20 LDA #$FFFF lda [evtptr] pld cmp #6 bne Cont brl Update Cont cmp #1 beq MouseDown cmp #8 bne Ignore20 Activate anop PushLong #0 _GetPort ; END ActionEvent START using ACCData evtptr equ 5 phd tsc tcd ldy #$0A lda [evtptr],y sta where iny iny lda [evtptr],y sta where+2 dc i'ActionCLear' ActionCursor anop ; ignore tous les autres {v{nements ActionMenu anop ActionUndo anop ActionCut anop ActionCopy anop ActionPaste anop ActionClear anop Ignore anop rts ard dc i'ActionRun' ; rafraichissement de l'accessoire dc i'ActionCursor' dc i'ActionMenu' dc i'ActionUndo' dc i'ActionCut' dc i'ActionCopy' dc i'ActionPaste' phk plb phy phx asl a tax jsr (ActionTable,x) pla pla plb rtl ActionTable anop dc i'Ignore' dc i'ActionEvent' ; {v{nement standnPtr _CloseWindow ; fermeture de la fenetre lda #0000 sta >ACCActive Ignore rtl END ActionACC START ; gestion des {v{nements using ACCData phb 0,$DC,$FB' ; AOao@\{ apres dc i1'$AE,$CE,$BE,$CF,$CB,$82,$83' *--------------------------------------------------------- END CloseACC START using ACCData lda >ACCActive beq Ignore PushLong >ACCWi i1'$80,$E8,$EC,$85,$86,$8A,$91,$95,$9A,$9F' table dc i1'$C1,$C5,$C9,$CF,$D5,$E1,$E5,$E9,$EF,$F5' ;AEIOUaeiou tablend anop circochar dc i1'$E5,$E6,$EB,$EF,$F3,$89,$90,$94,$99,$9E' *-------------------------- avant dc i1'$C1,$CF,$E1,$EF,$C6,$8D,$7E' ;4 italien dc i1'$A3,$A4,$A1,$8D,$8E,$9D,$88,$98,$8F,$93' ;5 allemand dc i1'$23,$A4,$80,$85,$86,$60,$8A,$9A,$9F,$A7' ;6 suedois dc i1'$23,$40,$80,$85,$81,$60,$8A,$9A,$89,$7E' ;7 *-------------------------- tremachar dcEnd anop anglais dc i1'$A3,$40,$5B,$5C,$5D,$60,$7B,$7C,$7D,$7E' ;1 francais dc i1'$A3,$88,$A1,$8D,$A4,$60,$8E,$9D,$8F,$AC' ;2 danois dc i1'$23,$40,$AE,$AF,$81,$60,$BE,$BF,$8C,$7E' ;3 espagnol dc i1'$A3,$A4,$C1,$84,$C0,$60,$A1,$9 PushWord #7 PushWord #10 _MoveTo PushLong #ligne1 _DrawCString ; affiche le texte PushWord #7+8 PushWord #20 _MoveTo PushLong #ligne2 _DrawCString PushWord #7 PushWord #33 _MoveTo PushLong #ligne3 _DrawCString PushWord #7 PushWord #43 _MoveTo PushLong #ligne4 _DrawCString PushWord #7 PushWord #70r _SelectWindow ; ...et la place au premier plan Cont2 long ; pour }tre 'homog}ne' inc runstate ; annulation demand{e nogood short lda >$E0C010 ; le bon langage lda anglais,X GoPostit inc runstate bra postit Reaffiche long PushLong ACCWinPtr _ShowWindow ; ...r{affiche la fenetre... PushLong ACCWinPtt2 PasPavNum pla parse2 ldx #standEnd-standards-1 plup cmp standards,X beq match dex bpl plup bra Cont2 match clc txa adc ZeLang ; pour indexer sur tax beq PasPavNum pla cmp #$B1 bcc parse2 cmp #$B7+1 bcs parse2 sbc #$B0 ; en fait $B1 car C=0 tax lda index,x sta ZeLang bra Cona end ; Relais doDur lda #$CA ; Espace Dur bra GoPostit ; Non breaking space parse pha lda >$E0C025 and #$10 ; Pav{ num{rique ? cmp #$8A ; down ->tr{ma ? beq storMode cmp #$95 ; -> ? (OldAccent) bne parse storMode sta ZeMode bra Cont2 goOK bra ok ; Relais goEnd br si ESC tap{... beq Reaffiche cmp #$A0 beq doDur cmp #$88 ; <- ? (R{unir) beq storMode cmp #$8B ; up ->circonflexe ? beq storMode bpl goEnd php sei loop1 lda >$E0C061 ; attente d'une touche bpl goOK lda >$E0C062 bpl goOK lda >$E0C000 bpl loop1 cmp #$9B ; ; car runstate est un 'Word' libend long plb rts forUs short lda >$E0C061 ; est-ce que Pomme ET Option bpl goEnd ; sont appuy{es lda >$E0C062 ; attend que Pomme ET Option lda >$E0C061 ; soient relach{es bmi libend lda >$E0C062 bmi libend long ; pour }tre 'homog}ne' stz runstate ; rafraichissement using ACCData phb phk plb lda runstate ; pr{c{dente demande annul{e ? beq forUs anop ; brl libre libre shortm rts END InitACC START ; initialisation de l'accessoire using ACCData lda #0 sta >ACCActive sta >runstate rtl END ActionRun START PushWord #0 PushWord #45 _MoveTo PushWord #235 PushWord #45 _LineTo PushLong ACCWinPtr _DrawControls ; dessine le bouton pushlong ACCWinPtr _EndUpdate _MoveTo PushLong #ligne5 _DrawCString PushWord #0 PushWord #22 _MoveTo PushWord #235 PushWord #22 _LineTo ; dessine les lignes de s{paration ; remise @ z{ro du clavier plp ; restaure {tat interruptions end long plb ; restaure banc donn{es rts ok anop longa off longi off loop2 lda >$E0C000 bpl loop2 ldy ZeMode ; quel mode cpy #$95 beq OldAccent ; -> version originale cpy #$88 beq Reunir ; -> mode 'r{union' a.zeropage ldy #&offset+2 pushword &addr,y ldy #&offset pushword &addr,y MEND MACRO &lab pushword &SYSOPR &lab ANOP AIF C:&SYSOPR=0,.b LCLC &C &C AMID "&SYSOPR",1,1 AIF ("&C"="#").AND.(S:LONGA),.immediate lda &SYSOPR pha MEXIT .b pha MEXIT .imshword &addr+2,&offset pushword &addr,&offset MEXIT .nooffset pushword &addr+2 pushword &addr MEXIT .immediate &REST AMID &addr,2,L:&addr-1 dc I1'$F4',I2'(&REST)|-16' dc I1'$F4',I2'&REST' MEXIT .stack pushword &addr+2,s pushword &addr+2,s MEXIT YSOPR &lab ANOP pla AIF C:&SYSOPR=0,.end sta &SYSOPR .end MEND MACRO &lab pushlong &addr,&offset &lab ANOP LCLC &C LCLC &REST &C AMID &addr,1,1 AIF "&C"="#",.immediate AIF "&C"="[",.zeropage AIF C:&offset=0,.nooffset AIF "&offset"="s",.stack puopage pullword &addr1 sta &addr2 pullword &addr1+2 sta &addr2+2 MEXIT .a pullword pullword MEXIT .b pullword &addr1 pullword &addr1+2 MEXIT .zeropage ldy #&addr2 pullword &addr1,y ldy #&addr2+2 pullword &addr1,y MEND MACRO &lab pullword &Sl $E10000 MEND MACRO &lab _MoveTo &lab ldx #$3A04 jsl $E10000 MEND MACRO &lab _SetPort &lab ldx #$1B04 jsl $E10000 MEND MACRO &lab pulllong &addr1,&addr2 &lab ANOP AIF C:&addr1=0,.a AIF C:&addr2=0,.b LCLC &C &C AMID &addr1,1,1 AIF "&C"="[",.zerstEvent &lab ldx #$1406 jsl $E10000 MEND MACRO &lab _DrawCString &lab ldx #$A604 jsl $E10000 MEND MACRO &lab _EraseRect &lab ldx #$5504 jsl $E10000 MEND MACRO &lab _GetPort &lab ldx #$1C04 jsl $E10000 MEND MACRO &lab _LineTo &lab ldx #$3C04 js MACRO &lab _DrawControls &lab ldx #$1010 jsl $E10000 MEND MACRO &lab _FindControl &lab ldx #$1310 jsl $E10000 MEND MACRO &lab _NewControl &lab ldx #$0910 jsl $E10000 MEND MACRO &lab _TrackControl &lab ldx #$1510 jsl $E10000 MEND MACRO &lab _Po PushWord #3 ; Key-down event PushWord #0 pha _PostEvent ; envoie l'{v{nement clavier pla ; @ l'application bra nogood END ; $80-$BF $C0-$FF sbc #$40 ; $40-$7F $80-$BF ora #$80 ; $C0-$FF $80-$BF postit long and #$00FF pha ; place pour r{sultat vant,X beq match3 dex bpl rlup bra nogood match3 lda apres,X ; charge caract}re (A) coll{ @ E bra postit OldAccent anop ; ici C=1 anop beq trema lda circochar,X ; charge caract}re AVEC circonflexe bra postit trema lda tremachar,X ; charge caract}re AVEC tr{ma bra postit Reunir ldx #apres-avant-1 rlup cmp anop ; mode 'tr{ma' ou 'circonflexe' ldx #tablEnd-table-1 slup cmp table,X beq match2 dex bpl slup bra nogood match2 cpy #$8A ; Down ->Tr{ma mediate LCLC &REST LCLA &BL &BL ASEARCH "&SYSOPR"," ",1 AIF &BL>0,.a &BL SETA L:&SYSOPR+1 .a &REST AMID "&SYSOPR",2,&BL-2 dc I1'$F4',I2'&REST' MEND MACRO &lab str &string &lab dc i1'L:&string',C'&string' MEND MACRO &lab long &lab ANOP rep #%00110000 longa on longi on MEND MACRO &lab short &lab ANOP sep #%00110000 longa off longi off MEND MACRO &lab shortm &lab ANOP sep #%00100000 longa off MEND MACRO &lab _BeginUpdate &lab ldx #$1E0E jsl $E10000 MEND MACRO &lab _CloseWindow &lab ldx5H###|R2 M3 (Pr3 TkXlmiC m.N$nP2 2  6O2 c/ Q"ra  5IzMUtFIu{"&8  En mode Circonflexe (up):  A E I O U a e i o u   >  En mode trma (down):  A E I Oudois  # @ ` ~   -------------------------------------------------  SR=4  Pomme + Option + (x) Pomme + Option  relache  puis (touche)    SR=. 0 -  Amricain # @ [ \ ] ` { | } ~ 1 - Anglais @ [ \ ] ` { | } ~ 2 - Franais ` 3 - Danois # @ ` ~ 4 - Espagnol ` ~ 5 - Italien 6 - Allemand # ` 7 - S ` ~   7 - Sudois # @ ` ~  %F  -------------------------------------------------   Police  BOSTON II 12  %F 0CXl4 - Espagnol ` ~  5 - Italien  5 - Italien   6 - Allemand # `  6 - Allemand # `   7 - Sudois # @ \ ] ` { | } ~  2 - Franais `  2 - Franais `   3 - Danois # @ ` ~  3 - Danois # @ ` ~  4 - Espagnol ` ~  touche seule  -  Amricain # @ [ \ ] ` { | } ~   -  Amricain # @ [ \ ] ` { | } ~   Pomme + Option + touche  1 - Anglais @ [ \ ] ` { | } ~  1 - Anglais @ [fonctions pour ACCENT ajoutes par Yvan KNIG  F@Slection langage par Pomme + Option + (1 7 pav numrique)  Police MONACO 12  Police COURIER 12   5H |RQ* 0{hzzKz$,zxyz 7e 9.F"  Nouvelles    $PNWK$PN@ ( |~ U a e i o u