include "doorsos.h" include "graphlib.h" include "userlib.h" include "ziplib.h" xdef _ti92plus ; xdef _ti89 xdef _main ;--------------------------------------------------------------------- _main: bra.s go text_h dc.w 0 go: move.w text_h,d1 tst.w d1 bne Doors move.w #7,d0 lea textname(PC),a1 lea folder(PC),a2 \Clr_name: clr.b (a2)+ clr.b (a1)+ dbra d0,\Clr_name move.l #$78F8,a0 tst.w (a0) beq No_Arg pea param_name(pc) move.w (a0),-(a7) jsr userlib::FindSymEntry add.l #6,a7 move.l a0,d0 tst.l d0 bne no_error move.w #1020,-(a7) jsr doorsos::ERD_dialog lea 2(a7),a7 rts no_error: move.w 12(a0),d0 doorsos::DEREF d0,a0 move.w (a0),d0 lea 1(a0,d0.w),a0 cmp.b #$2D,(a0) bne Invalid_pathname subq.l #1,a0 Find_Beg_Argument: tst.b -(a0) bne Find_Beg_Argument lea folder(PC),a1 move.w #7,d0 addq.l #1,a0 Fold_Loop: move.b (a0)+,(a1)+ cmp.b #$5C,(a0) beq got_fold dbra d0,Fold_Loop bra Invalid_pathname got_fold: add.l #1,a0 lea textname(PC),a1 move.w #7,d0 Name_Loop: move.b (a0)+,(a1)+ cmp.b #$00,(a0) beq got_name dbra d0,Name_Loop bra Invalid_pathname got_name: pea folder(PC) move.w #$8,-(a7) jsr userlib::FindSymEntry ;search for folder entry lea 6(a7),a7 move.l a0,d0 tst.l d0 ;if d0=0000 no var found beq Invalid_pathname move.w 12(a0),d0 pea textname(PC) move.w d0,-(a7) ;d0:folder handle jsr userlib::FindSymEntry ;search for textname entry lea 6(a7),a7 move.l a0,d0 tst.l d0 ;if d0=0000 no var found beq Invalid_pathname move.w 12(a0),d1 move.l a0,a6 move.w d1,text_h Doors: doorsos::DEREF d1,a0 clr.l d0 move.w (a0),d0 cmp.b #$E0,1(a0,d0.l) beq Text_File cmp.b #$DD,1(a0,d0.l) bne wrong_type cmp.b #$FF,3(a0) bne wrong_type cmp.b #7,2(a0) bne wrong_type move.l a6,a0 move.b #1,d0 jsr ziplib::tempfile move.w d1,text_h move.b #1,arch tst.b d0 beq Text_File move.b #0,arch move.w #0,text_h rts wrong_type: move.w #210,-(a7) jsr doorsos::ERD_dialog lea 2(a7),a7 move.w #0,text_h rts Text_File: move.w text_h,d0 bsr View_Text cmp.b #0,arch beq Not_Archived move.b #0,arch move.w text_h,-(a7) jsr doorsos::HeapFree lea 2(a7),a7 Not_Archived: move.w #0,text_h rts No_Arg: lea title(PC),a0 jsr graphlib::smallbox ;draws the small box SetFont #1 WriteStr #75,#61,#4,name WriteStr #75,#51,#0,fold ; WriteStr #32,#51,#4,name ; WriteStr #32,#41,#0,fold move.w #51,d2 move.w #129,d1 move.w #8,d3 ; move.w #41,d2 ; move.w #73,d1 ; move.w #8,d3 jsr userlib::InputStr tst.w d0 bne gotf1 move.w #0,text_h rts gotf1: lea folder(PC),a1 moveq.w #7,d0 Fold_Loop2: move.b (a0)+,(a1)+ dbra d0,Fold_Loop2 WriteStr #75,#61,#0,name WriteStr #75,#51,#4,fold ; WriteStr #32,#51,#0,name ; WriteStr #32,#41,#4,fold move.w #61,d2 move.w #112,d1 move.w #8,d3 ; move.w #51,d2 ; move.w #63,d1 ; move.w #8,d3 jsr userlib::InputStr tst.w d0 bne gotf2 move.w #0,text_h rts gotf2: lea textname(PC),a1 moveq.w #7,d0 Name_Loop2: move.b (a0)+,(a1)+ dbra d0,Name_Loop2 bra got_name Invalid_pathname: move.w #570,-(a7) jsr doorsos::ERD_dialog lea 2(a7),a7 move.w #0,text_h rts ;a4=points to the current first line points to $0D ;a5=points to current last line ;d5=first line address ;d6=last text line address ;pic1=add.l,line.b,maxline.b,reste de ligne.b,nb col.b of pic in the first line,hdl to temp file.w,archive.b ;pic2= of pic in the last line address ;? newton erreur ;améliorez les codes View_Text: doorsos::DEREF d0,a4 clr.l d1 move.w (a4),d1 adda.l #3,a4 move.l a4,d5 move.l a4,d6 move.b (a4),temp move.b #$0D,(a4) add.l d1,d6 sub.l #4,d6 movea.l a4,a6 jsr graphlib::clr_scr SetFont #1 Display: moveq.w #-6,d7 cmp.b #$43,1(a6) bne \Display lea pic1(PC),a1 move.l a1,picadd move.l a6,a3 bsr New_Pic move.w #0,(a2) lea pic2(PC),a1 move.l a1,picadd move.l a6,a3 bsr New_Pic move.w #0,(a2) \Display: move.l a6,a3 movea.l a3,a5 add.w #9,d7 lea pic2(PC),a1 move.l a1,picadd bsr Disp_Line cmpi.w #111,d7 ; cmpi.w #84,d7 beq Wait lea pic2(PC),a1 move.l a1,picadd bsr Line_down cmp.l d6,a6 bgt Wait bra \Display Wait: ; jsr userlib::idle_loop move.w #$2FFF,d0 \Wait: dbra d0,\Wait tst.w doorsos::MaxHandles+$1E beq.s Wait move.w doorsos::MaxHandles+$1E,d0 cmpi.w #KEY_DOWN,d0 beq Down cmpi.w #KEY_UP,d0 beq Up cmpi.w #$1000+KEY_UP,d0 beq Page_up cmpi.w #$1000+KEY_DOWN,d0 beq Page_down cmpi.w #348,d0 beq Down cmpi.w #KEY_UPRIGHT,d0 beq Up cmpi.w #KEY_DOWNLEFT,d0 beq Down cmpi.w #339,d0 beq Up cmpi.w #274,d0 ; cmpi.w #277,d0 beq pass cmpi.w #275,d0 ; cmpi.w #266,d0 beq eteint cmpi.w #264,d0 bne Wait move.l #0,pic1 move.l #0,pic2 move.l d5,a0 move.b temp,(a0) clr.b d0 ; lea pic1(PC),a1 ; bsr Kill_pic ; lea pic2(PC),a1 ; bsr Kill_pic clr.w doorsos::kb_globals+$1c rts pass: jsr userlib::lockcalc bra Wait eteint: trap #4 bra Wait mem: move.w #670,-(a7) jsr doorsos::ERD_dialog lea 2(a7),a7 move.b #2,d0 rts Page_up: move.b #13,count ; move.b #10,count Page_up_loop: bsr Scroll_up sub.b #1,count cmp.b #0,count bne Page_up_loop bra Wait Page_down: move.b #13,count ; move.b #10,count Page_down_loop: bsr Scroll_down sub.b #1,count cmp.b #0,count bne Page_down_loop bra Wait Up: bsr Scroll_up bra Wait Down: bsr Scroll_down bra Wait Quit: rts ;***********************SUBROUTINES *********************** Scroll_up: movea.l a4,a6 cmp.l d5,a6 ble Beg_up Not_Beg_up: lea pic1(PC),a1 move.l a1,picadd bsr Line_up movea.l a6,a4 movea.l a5,a6 lea pic2(PC),a1 move.l a1,picadd bsr Line_up movea.l a6,a5 move.l #LCD_MEM,a0 move.l a0,a2 adda.l #$D02,a0 ; adda.l #$9D8,a0 adda.l #$E10,a2 ; adda.l #$AE6,a2 move.l #809,d0 ; move.l #607,d0 Scrolling_up: move.l -(a0),-(a2) dbra d0,Scrolling_up move.l #LCD_MEM,a0 adda.l #$3C,a0 moveq.l #74,d0 Clear_up: clr.l (a0)+ dbra d0,Clear_up movea.l a4,a3 moveq.w #3,d7 lea pic1(PC),a0 move.l a0,picadd bsr Disp_Line rts Beg_up: cmp.b #$43,1(a6) bne Quit lea pic1(PC),a0 cmp.l #0,(a0) beq Not_Beg_up cmp.w #0,8(a0) bne Not_Beg_up rts Scroll_down: movea.l a5,a6 lea pic2(PC),a1 move.l a1,picadd bsr Line_down cmp.l d6,a6 bgt Quit movea.l a6,a5 movea.l a4,a6 lea pic1(PC),a1 move.l a1,picadd bsr Line_down movea.l a6,a4 move.l #LCD_MEM,a0 move.l a0,a2 adda.l #$5A,a0 adda.l #$168,a2 move.l #809,d0 ; move.l #607,d0 Scrolling_down: move.l (a2)+,(a0)+ dbra d0,Scrolling_down move.l #LCD_MEM,a0 adda.l #$D02,a0 ; adda.l #$9D8,a0 moveq.l #68,d0 ; moveq.l #66,d0 Clear_down: clr.l (a0)+ dbra d0,Clear_down movea.l a5,a3 moveq #39,d4 ; moveq #25,d4 moveq.w #111,d7 ; moveq.w #84,d7 lea pic2(PC),a1 move.l a1,picadd bsr Disp_Line rts ;a1=picadd a3 d7 Line_up: cmp.b #$0D,(a6) bne Seek_Up cmp.b #$43,1(a6) bne Seek_Up cmp.l #$FFFFFFFF,(a1) beq Seek_Up move.b 4(a1),d4 subq.b #1,d4 cmp.b #0,d4 blt Close_Up move.b d4,4(a1) rts Close_Up: ; bsr Kill_pic Seek_Up: clr.w d4 Find_up: addq.w #1,d4 cmp.l d5,a6 beq Loop_up cmp.b #$0D,-(a6) bne Find_up Loop_up: cmp.w #39,d4 ; cmp.w #25,d4 ble Loop_up_end adda.l #38,a6 ; adda.l #24,a6 sub.w #38,d4 ; sub.w #24,d4 bra Loop_up Loop_up_end: move.l #0,(a1) cmp.b #$0D,(a6) bne Quit cmp.b #$43,1(a6) bne Quit move.l a6,a3 move.l a1,picadd bsr New_Pic move.b 1(a2),d0 move.b d0,(a2) rts ;a3 a6 d7 a1 Line_down: cmp.b #$0D,(a6) bne Seek_Down cmp.b #$43,1(a6) bne Seek_Down cmp.l #$FFFFFFFF,(a1) beq Seek_Down move.b 4(a1),d4 addq.w #1,d4 cmp.b 5(a1),d4 bgt Close_Down move.b d4,4(a1) rts Close_Down: ; bsr Kill_pic Seek_Down: move.w #38,d4 ; move.w #24,d4 addq #1,a6 \Seek_Down: cmpi.b #$0D,(a6)+ beq Seeked_Down cmp.b #$00,(a6) beq Quit dbra d4,\Seek_Down subq.l #2,a6 rts Seeked_Down: move.l #0,(a1) subq.l #1,a6 cmp.b #$0D,(a6) bne Quit cmp.b #$43,1(a6) bne Quit move.l a6,a3 move.l a1,picadd bsr New_Pic move.b #0,(a2) rts ;a3 picadd Disp_Line: cmp.b #$0D,(a3) bne Disp_Text cmp.b #$43,1(a3) bne Disp_Text move.l picadd,a1 ;115fa cmp.l #$FFFFFFFF,(a1) beq Disp_Pic_Error bra Display_Picture Disp_Pic_Error: lea picerr(PC),a0 move.w #4,-(a7) move.l a0,-(a7) move.w d7,-(a7) move.w #0,-(a7) jsr doorsos::DrawStrXY lea 10(a7),a7 bra Disp_Text ;a3 Disp_Text: lea Line(PC),a1 move.l a1,a0 move.w #37,d4 ; move.w #23,d4 addq #2,a3 Copy_Line: cmpi.b #$0D,(a3) beq Enter move.b (a3)+,(a1)+ dbra d4,Copy_Line subq #2,a3 Enter: move.b #$00,(a1) move.w #4,-(a7) move.l a0,-(a7) move.w d7,-(a7) move.w #5,-(a7) jsr doorsos::DrawStrXY lea 10(a7),a7 rts ;a3 endroit du texte picadd=a1 New_Pic: move.l a3,a2 addq.l #2,a2 lea picfold(PC),a0 move.w #8,d0 Copy_pic_fold: move.b (a2)+,(a0)+ cmp.b #$5C,(a2) beq Get_pic_fold dbra d0,Copy_pic_fold bra Pic_err Get_pic_fold: move.b #0,(a0) pea picfold(PC) move.w #$8,-(a7) jsr userlib::FindSymEntry ;search for folder entry lea 6(a7),a7 cmp.l #0,a0 ;if d0=0000 no var found bne Got_pic_fold bra Pic_err Got_pic_fold: move.w 12(a0),d0 lea picname(PC),a0 move.w #8,d1 addq.l #1,a2 Copy_pic_name: move.b (a2)+,(a0)+ cmp.b #$0D,(a2) beq Get_pic_name cmp.b #$00,(a2) beq Get_pic_name dbra d1,Copy_pic_name bra Pic_err Get_pic_name: move.b #0,(a0) pea picname(PC) move.w d0,-(a7) ;d0:folder handle jsr userlib::FindSymEntry ;search for textname entry lea 6(a7),a7 cmp.l #0,a0 ;if d0=0000 no var found bne Got_pic_name bra Pic_err Got_pic_name: move.l a0,a1 move.w 12(a0),d0 move.l a1,-(a7) doorsos::DEREF d0,a0 move.l a1,(a7)+ move.l picadd,a2 move.b #0,10(a2) clr.l d0 move.w (a0),d0 cmp.b #$DF,1(a0,d0.l) bne Pic_err ; beq Good_pic_file ; cmp.b #$DD,1(a0,d0.l) ; bne Pic_err ; tst.b 3(a0) ; bne Pic_err ; cmp.b #11,2(a0) ; bne Pic_err ; move.l a1,a0 ; move.b #0,d0 ; jsr ziplib::tempfile ; tst.b d0 ; bne Pic_err ; move.l picadd,a2 ; move.w d1,8(a2) ; move.b #1,10(a2) ; doorsos::DEREF d1,a0 Good_pic_file: move.l picadd,a2 move.l a2,a1 move.l a0,d0 add.l #6,d0 move.l d0,(a2)+ clr.l d0 move.w 2(a0),d0 divu #9,d0 swap d0 tst.b d0 bne got_Line move.b #9,d0 swap d0 subq.b #1,d0 swap d0 got_Line: move.b d0,2(a2) swap d0 move.b d0,1(a2) clr.l d0 move.w 4(a0),d0 divu #8,d0 swap d0 tst.w d0 beq got_Col swap d0 addq.w #1,d0 swap d0 got_Col: swap d0 move.b d0,3(a2) rts Pic_err: move.l picadd,a1 move.l #$FFFFFFFF,(a1)+ move.l a1,a2 rts ;a1:add of the pic description d7: Display_Picture: ;d4:line d3:col nb d2:free height a1:points move.l a1,a2 ;to address clr.l d4 clr.l d0 clr.l d3 clr.l d2 move.b 4(a1),d4 move.b 5(a1),d0 move.b 7(a1),d3 move.l #9,d2 cmp.w d0,d4 bne Got_free_height clr.l d2 move.b 6(a1),d2 Got_free_height: subq.b #1,d2 move.w d7,d0 mulu #30,d0 move.l #LCD_MEM,a0 adda.l d0,a0 move.l (a2),a1 clr.l d0 move.w d4,d0 mulu d3,d0 sub.w #1,d3 mulu #9,d0 add.w d0,a1 move.l a0,d1 Display_row: move.w d3,d0 Display_Col: move.b (a1)+,(a0)+ dbra d0,Display_Col add.l #30,d1 move.l d1,a0 dbra d2,Display_row rts ;Kill_pic: ; tst.b 10(a1) ; beq pic_not_comp ; clr.b 10(a1) ; move.w 8(a1),-(a7) ; jsr doorsos::HeapFree ; lea 2(a7),a7 ;pic_not_comp: ; rts ; ------------------------------------------------------------------------------------------------- title dc.b "*TEXTVIEW* by Marc TEYSSIER v1.1+",0 ;title dc.b "TEXTVIEW by Marc TEYSSIER",0 arch dc.b 0 fold dc.b "Folder : " ;fold dc.b "Folder:" folder ds.b 9 name dc.b "Name:" ;name dc.b "Name:" textname ds.b 9 Line ds.b 39 count dc.b 0 lenght dc.w 0 pic1 dc.l 0,0,0 pic2 dc.l 0,0,0 picfold ds.b 10 picname ds.b 10 picadd dc.l 0 picerr dc.b "!",0 temp dc.b 0 param_name dc.b "x",0 ;***************************************************** rts end