; Assembly Source File ; Created 14/10/2004, 15:50:12 PURE_LIB equ 0 include "tios.h" xdef _v200 xdef _ti92plus xdef _ti89 xdef _ti89ti DEFINE _version01 ifne PURE_LIB xdef _main endc ifeq PURE_LIB xdef _library endc xdef conflib@0000 xdef conflib@0001 xdef conflib@0002 xdef conflib@0003 xdef conflib@0004 include "conflib0000.h" include "conflib0001.h" include "conflib0002.h" include "conflib0003.h" include "conflib0004.h" include "common.h" include "standard.h" include "copy_file.h" include "variables.h" ifne PURE_LIB _main: movem.l a0-a6/d0-d7,-(a7) moveq #0,d3 moveq #0,d4 moveq #0,d5 move.l 200,a5 moveq #0,d7 \loop: ;************************************************************************* ; DIALOG NEW ;************************************************************************* pea NoCallBack(pc) move.w #80,-(a7) move.w #140,-(a7) move.l 208(a5),a0;DialogNew jsr (a0) addq.l #8,a7 move.w d0,d4 beq \exit ;************************************************************************* ; POPUP ACTION ;************************************************************************* clr.w -(a7);height clr.l -(a7);title move.l 276(a5),a0;PopupNew jsr (a0) add.l #6,a7 move.w d0,d3;handle popup beq \exit move.w #1,-(a7) ;ret_val pea get_str(pc) move.w #-1,-(a7);link move.w d3,-(a7);handle move.l 272(a5),a0;PopupAddText jsr (a0) move.w #2,-(a7) ;ret_val pea add_str(pc) move.w #-1,-(a7);link move.w d3,-(a7);handle move.l 272(a5),a0;PopupAddText jsr (a0) move.w #3,-(a7) ;ret_val pea remove_str(pc) move.w #-1,-(a7);link move.w d3,-(a7);handle move.l 272(a5),a0;PopupAddText jsr (a0) move.w #0,-(a7);index move.w d3,-(a7);menu handle pea action_str(pc);prompt move.w #14,-(a7);dropdown move.w #17,-(a7);y move.w #5,-(a7);x clr.w -(a7) move.w d4,-(a7);handle de la boîte de dialogue move.l 204(a5),a0;DialogAdd jsr (a0) lea 48(a7),a7;restaure la pile ;************************************************************************* ; POPUP TYPE DE CLEF ;************************************************************************* clr.w -(a7);height clr.l -(a7);title move.l 276(a5),a0;PopupNew jsr (a0) add.l #6,a7 move.w d0,d5;handle popup beq \exit move.w #1,-(a7) ;ret_val pea num_str(pc) move.w #-1,-(a7);link move.w d5,-(a7);handle move.l 272(a5),a0;PopupAddText jsr (a0) move.w #2,-(a7) ;ret_val pea string_str(pc) move.w #-1,-(a7);link move.w d5,-(a7);handle move.l 272(a5),a0;PopupAddText jsr (a0) move.w #1,-(a7);index move.w d5,-(a7);menu handle pea type_str(pc);prompt move.w #14,-(a7);dropdown move.w #25,-(a7);y move.w #5,-(a7);x clr.w -(a7) move.w d4,-(a7);handle de la boîte de dialogue move.l 204(a5),a0;DialogAdd jsr (a0) lea 38(a7),a7;restaure la pile ;************************************************************************* ; TITRE / BOUTONS ;************************************************************************* clr.l -(a7) pea conflib_str(pc) move.w #8,-(a7) clr.l -(a7) clr.w -(a7) move.w d4,-(a7) move.l 204(a5),a0;DialogAdd jsr (a0) lea 18(a7),a7 ;************************************************************************* ; REQUEST ;************************************************************************* lea file_str(pc),a0 moveq #35,d1 moveq #8,d2 moveq #4,d0 bsr add_request lea section_str(pc),a0 moveq #45,d1 moveq #18,d2 moveq #14,d0 bsr add_request lea key_str(pc),a0 moveq #55,d1 moveq #40,d2 moveq #32,d0 bsr add_request lea value_str(pc),a0 moveq #65,d1 moveq #40,d2 moveq #74,d0 bsr add_request ;************************************************************************* ; DIALOG DO ;************************************************************************* pea data(pc) pea data(pc) moveq #-1,d0 move.l d0,-(a7) move.w d4,-(a7) move.l 200(a5),a0;DialogDo jsr (a0) lea 14(a7),a7 move.w d0,d7 cmp.w #13,d0 bne \exit move.w data(pc),d0 ;************************************************************************* ; MAINTENANT ON VA FAIRE LES ACTIONS ;************************************************************************* \get: ;************************************************************************* ; GET KEY ;************************************************************************* cmp.w #1,d0 bne \skip_get \get_num_key: move.w data+2(pc),d1 cmp.w #1,d1 bne \skip_get_num_key clr.l -(a7);error pointer clr.l -(a7);default value pea buf_key(pc) pea buf_section(pc) pea buf_file(pc) jsr conflib@0000 lea 20(a7),a7 bsr hex_to_dec clr.l -(a7) pea _buffer(pc) pea conflib_str(pc) move.l $1B4*4(a5),a0 jsr (a0) lea 12(a7),a7 move.w error(pc),d0 bsr disp_error bra \exit \skip_get_num_key: \get_string_key: cmp.w #2,d1 bne \skip_get_string_key pea buf_value(pc) moveq #40,d0 move.l d0,-(a7) pea result_value(pc) pea buf_key(pc) pea buf_section(pc) pea buf_file(pc) jsr conflib@0003 lea 24(a7),a7 bsr disp_error clr.l -(a7) pea result_value(pc) pea conflib_str(pc) move.l $1B4*4(a5),a0 jsr (a0) lea 12(a7),a7 bra \exit \skip_get_string_key: bra \exit \skip_get: \add: ;************************************************************************* ; ADD KEY ;************************************************************************* cmp.w #2,d0 bne \skip_add \add_num_key: move.w data+2(pc),d1 cmp.w #1,d1 bne \skip_add_num_key bsr get_num move.l d0,-(a7) pea buf_key(pc) pea buf_section(pc) pea buf_file(pc) jsr conflib@0001 lea 16(a7),a7 bsr disp_error bra \exit \skip_add_num_key: cmp.w #2,d1 bne \skip_add_string_key pea buf_value(pc) pea buf_key(pc) pea buf_section(pc) pea buf_file(pc) jsr conflib@0004 lea 16(a7),a7 bsr disp_error bra \exit \skip_add_string_key: \skip_add: \remove: ;************************************************************************* ; REMOVE KEY ;************************************************************************* cmp.w #3,d0 bne \skip_remove pea buf_key(pc) pea buf_section(pc) pea buf_file(pc) jsr conflib@0002 lea 12(a7),a7 bsr disp_error \skip_remove: \exit: move.w d5,d0 bsr free move.w d4,d0 bsr free move.w d3,d0 bsr free cmp.w #13,d7 beq \loop movem.l (a7)+,a0-a6/d0-d7 rts remove_str: dc.b 'remove',0 add_str: dc.b 'add',0 get_str: dc.b 'get',0 action_str: dc.b 'action',0 value_str: dc.b 'value',0 file_str: dc.b 'file',0 key_str: dc.b 'key',0 section_str: dc.b 'section',0 type_str: dc.b 'type',0 num_str: dc.b 'numeric',0 string_str: dc.b 'string',0 conflib_str: dc.b 'conflib 1.00',0 even data: buf_action: dc.w 2 buf_type: dc.w 1 buf_file: dc.b 'essai' ds.b 5 buf_section: dc.b 'section3' ds.b 10 buf_key: dc.b 'clef_3' ds.b 36 buf_value: dc.b '12345' ds.b 36 result_value: ds.b 40 even add_request: move.w #12,-(a7);width move.w d2,-(a7);maxlen move.w d0,-(a7);offset move.l a0,-(a7) move.w #2,-(a7);item type : request move.w d1,-(a7);y move.w #3,-(a7);x clr.w -(a7) move.w d4,-(a7) move.l 204(a5),a0;DialogAdd jsr (a0) lea 20(a7),a7 rts NoCallBack: moveq #1,d0 rts disp_error: ;<- d0.w erreur movem.l a0-a4/d0-d5,-(a7) tst.w d0 beq \exit bsr hex_to_dec clr.l -(a7) pea _buffer(pc) pea erreur_str(pc) move.l $1B4*4(a5),a0 jsr (a0) lea 12(a7),a7 \exit: movem.l (a7)+,a0-a4/d0-d5 rts get_num: lea buf_value(pc),a0 move.l a0,a1 moveq #0,d0 cmp.b #'-',(a0) beq \ok \loop: cmp.b #'0',(a0) blt \exit cmp.b #'9',(a0) bgt \exit ;on va faire 10*d0 -> d0 move.l d0,d2 lsl.l #2,d2 add.l d2,d0 add.l d0,d0 moveq #0,d2 move.b (a0),d2 sub.b #'0',d2 ;et maintenant on a 10*d0 + d2 -> d0 add.l d2,d0 addq.l #1,d1 \ok: addq.l #1,a0 bra \loop \exit: cmp.b #'-',(a1) bne \skip_minus moveq #0,d2 sub.l d0,d2 exg.l d0,d2 \skip_minus: rts even erreur_str: dc.b 'WARNING ! ERROR',0 even error: dc.w 0 endc