; "Deflisteur" Sweetel2 opt a+,o+,p+,o1+,o2+ tampon_len equ 512 deflist equr d2 firstl equr d3 char equr d1 nbr equr d0 ; move.w _nbr,nbr ; beq fini ; addq.w #1,nbr ; lea start,a0 ; from ; lea tampon,a1 ; to move.w 12(sp),d0 ; len (ou param) move.l 4(sp),d1 ; adresse d‚part beq null_adr ; adresse nulle!? move.l d1,a0 addq.w #1,d0 ; oui plus un! move.l 8(sp),a1 ; adresse d'arriv‚e move.w _deflist,deflist clr.b firstl ; 1er caractŠre pour majuscule au d‚but cmpi.b #"'",(a0) ; commentaire beq.s halt cmpi.b #"}",(a0) ; idem beq.s halt cmpi.b #"{",(a0) beq.s halt cmpi.b #"\",(a0) beq.s halt do: subq.w #1,nbr beq.s fini move.b (a0)+,char cmpi.b #'"',char ; chaine? beq.s jmp_str ; ya! ; lo ls hi hs : non sign‚es cmpi.b #'A',char blo.s copy ; Z idem cmp.b #2,deflist beq.s minu ; min de tt facons tst.b firstl ; 1Šre lettre? beq.s jmp_let ; oui, sauter alors! minu: addi.b #32,char ; minuscule move.b char,(a1)+ bra.s do copy: clr.b firstl ; 1st flag move.b char,(a1)+ ; copier! bra.s do jmp_let: st.b firstl ; lettre pass‚e move.b char,(a1)+ ; incr‚menter! bra.s do jmp_str: st.b firstl ; lettre pass‚e move.b char,(a1)+ ; incr‚menter! dojmp: subq.w #1,nbr beq.s fini move.b (a0)+,char ; caractŠre cmpi.b #'"',char ; fin! beq.s finjmp cmpi.b #'%',char ; char sp‚cial beq.s jmp_char move.b char,(a1)+ ; incr‚menter! bra.s dojmp finjmp: move.b char,(a1)+ ; incr‚menter! bra.s do jmp_char: move.b char,(a1)+ ; incr‚menter! subq.w #1,nbr beq.s fini move.b (a0)+,(a1)+ ; sauter! bra.s dojmp fini: ;*bra cnt ! TEST ;;lea tampon,a0 ;;move.l a0,d0 ; retour RTS halt: do_cpy: subq.w #1,nbr beq.s fini move.b (a0)+,(a1)+ bra.s do_cpy ; deflist null_adr: cmp.w #2,d0 bhi.s fini lea _deflist,a0 move.w d0,(a0) bra.s fini ; * * * * * * * * * * datas * * * * * * * * * * even _deflist: dc.w 1 ; even ;tampon: ; ds.b 512 ; ca suffit!! ; even ; ;cnt: ; pea tampon ; move.w #9,-(sp) ; trap #1 ; addq.l #6,sp ; move.w #1,-(sp) ; trap #1 ; addq.l #2,sp ; clr.w -(sp) ; trap #1 ;start: dc.b 'ENCRE CYAN MAGENTA "ATARI %"ATARI%" ABC " CYAN' ;end_str: ; dc.b 0,"E" ; ;_nbr: dc.w end_str-start