;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; FlashShell v2.10 for TI-89/TI-92+ By Flavien Racine ; ; http://www.multimania.com/flashz ; ; (C):1999-2000 Last Update:05/16/2001 ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; Note: there are a lot of routines of PlusShell in this source code ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; include "doorsos.h" include "userlib.h" include "graphlib.h" xdef _main xdef _comment xdef _ti89 xdef _ti92plus ; ail ail ail !! qd je relis ce code, mon cerveau ayant un peu progresse, j'ai peur ! ;Si vous parlez francais, ;desole pour certains noms de labels ;qui peuvent paraître un peu ;'primates', mais quand j'ai ;pas d'idées je ne me pose pas ;de questions :) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; Here are the FlashShell's MACRO ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; WriteStrCenter MACRO ; A macro I made! Wow!!! ; move.w \3,-(a7) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; pea \4 ; ; move.w \2,-(a7) ; WriteStrCenter(x,y,color,string) ; move.w \1,-(a7) ; Give the TI-89's coordinates ; bsr CalcTest ; If it's a TI-89: ; add.w d0,2(a7) ; -> Writes at these coordinates ; add.w d1,0(a7) ; If it's a TI-92+: ; jsr doorsos::DrawStrXY ; -> Writes at x+40,y+14 ; lea 10(a7),a7 ; ; ENDM ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;; ; The Program starts! ; ;;;;;;;;;;;;;;;;;;;;;;; ; _main: ; ; ;;;;;;;;;;;;;;;;;;;;;;; jsr graphlib::clr_scr ;Clears screen ;;;;;;;;;;;;;;;;;;;; ; Detects the calc ; ;;;;;;;;;;;;;;;;;;;; cmp.b #CALC_TI89,CALCULATOR bne NotTI89 YesTI89: move.w #0,XAddition move.w #0,YAddition move.w #159,XMax move.w #99,YMax move.w #7,last move.w #7,last2 move.w #7*8,LinesToScroll bra StartShell NotTI89: move.w #40,XAddition move.w #14,YAddition move.w #239,XMax move.w #127,YMax move.w #10,last move.w #10,last2 move.w #10*8,LinesToScroll StartShell: move.w #doorsos::FolderListHandle,currentfolder ; ROMs v2.0x support ! move.w #0,infolder move.w #0,first bsr DrawFolder bra Select DrawFolder: jsr graphlib::clr_scr bsr View_Mem DrawAfterScroll: bsr DrawTable move.w #1,-(a7) jsr doorsos::FontSetSys add.l #2,a7 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; PlusShell Routines a litle changed ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; move.w currentfolder(pc),d0 ; DEREF d0,a0 ; move.w 2(a0),d7 ; add.l #4,a0 ; move.l #name,a1 ; move.w #16,d0 ; add.w #1,d0 ; move.w d0,y ; clr.w count ; move.l #handlelist,a3 ; ; dfLoop: ; tst.w d7 ; beq dfEnd ; clr.w flags ; move.l (a0),(a1) ; move.l 4(a0),4(a1) ; tst.w infolder ; beq dfDrawName ; move.w SYM_ENTRY.hVal(a0),d0 ; DEREF d0,a2 ; clr.l d0 ; move.w (a2),d0 ; move.l a2,a4 ; add.l d0,a4 ; add.l #1,a4 ; move.b (a4),d0 ; add.l #2,a2 ; cmp.b #$f3,d0 ; beq ContiTInue ; ; move.w count,d0 ; move.w first,d1 ; add.w #1,count ; cmp.w d1,d0 ; blt dfNext ; move.w last,d1 ; cmp.w d1,d0 ; bgt dfNext ; sub.w #1,count ; ; movem.l d7/a0-a3,-(a7) ; move.w #1,-(a7) ; move.l #typeUSERstr,-(a7) ; move.w y,d0 ; add.w #2,d0 ; move.w d0,-(a7) ; move.w #54,-(a7) ; add.w #2,(a7) ; ; move.w #0,-(a7) ; jsr doorsos::FontSetSys ; lea 2(a7),a7 ; ; jsr doorsos::DrawStrXY ; add.l #10,a7 ; movem.l (a7)+,d7/a0-a3 ; ; move.w #1,-(a7) ; jsr doorsos::FontSetSys ; lea 2(a7),a7 ; ; bra dfDrawName ; ContiTInue: ; move.l 4(a2),d0 ; and.l #$ffffff00,d0 ; ; cmp.b #'P',7(a2) ; beq dfSkipLibCheck ; cmp.b #'L',7(a2) ; bne dfDrawName ; ; move.w count,d0 ; move.w first,d1 ; add.w #1,count ; cmp.w d1,d0 ; blt dfNext ; move.w last,d1 ; cmp.w d1,d0 ; bgt dfNext ; sub.w #1,count ; ; movem.l d7/a0-a3,-(a7) ; move.w #1,-(a7) ; move.l #typeLIBstr,-(a7) ; move.w y,d0 ; add.w #2,d0 ; move.w d0,-(a7) ; move.w #54,-(a7) ; add.w #2,(a7) ; ; move.w #0,-(a7) ; jsr doorsos::FontSetSys ; lea 2(a7),a7 ; ; jsr doorsos::DrawStrXY ; add.l #10,a7 ; movem.l (a7)+,d7/a0-a3 ; ; move.w #1,-(a7) ; jsr doorsos::FontSetSys ; lea 2(a7),a7 ; ; bra dfDrawName ; ; dfSkipLibCheck: ; clr.l d0 ; move.w 10(a2),d0 ; ; doCommentCheck: ; tst.w d0 ; bne doCommentYES ; ; move.w count,d0 ; move.w first,d1 ; add.w #1,count ; cmp.w d1,d0 ; blt dfNext ; move.w last,d1 ; cmp.w d1,d0 ; bgt dfNext ; sub.w #1,count ; ; movem.l d7/a0-a3,-(a7) ; move.w #1,-(a7) ; move.l #ASMnocomment,-(a7) ; move.w y,d0 ; add.w #2,d0 ; move.w d0,-(a7) ; move.w #54,-(a7) ; add.w #2,(a7) ; ; move.w #0,-(a7) ; jsr doorsos::FontSetSys ; lea 2(a7),a7 ; ; jsr doorsos::DrawStrXY ; add.l #10,a7 ; movem.l (a7)+,d7/a0-a3 ; ; move.w #1,-(a7) ; jsr doorsos::FontSetSys ; lea 2(a7),a7 ; ; bra dfDrawName ; ; doCommentYES: ; add.l d0,a2 ; ; doComment: ; move.w count,d0 ; move.w first,d1 ; add.w #1,count ; cmp.w d1,d0 ; blt dfNext ; move.w last,d1 ; cmp.w d1,d0 ; bgt dfNext ; ; sub.w #1,count ; movem.l d7/a0-a3,-(a7) ; move.w #1,-(a7) ; move.l a2,-(a7) ; move.w y,d0 ; add.w #2,d0 ; move.w d0,-(a7) ; move.w #54,-(a7) ; add.w #2,(a7) ; ; move.w #0,-(a7) ; jsr doorsos::FontSetSys ; lea 2(a7),a7 ; ; jsr doorsos::DrawStrXY ; add.l #10,a7 ; movem.l (a7)+,d7/a0-a3 ; ; move.w #1,-(a7) ; jsr doorsos::FontSetSys ; lea 2(a7),a7 ; ; dfDrawName: ; move.w count,d0 ; move.w first,d1 ; add.w #1,count ; cmp.w d1,d0 ; blt dfNext ; move.w last,d1 ; cmp.w d1,d0 ; bgt dfNext ; ; movem.l d7/a0-a3,-(a7) ; move.w #1,-(a7) ; move.l a1,-(a7) ; move.w y,d0 ; move.w d0,-(a7) ; move.w #3,-(a7) ; jsr doorsos::DrawStrXY ; add.l #10,a7 ; ; movem.l (a7)+,d7/a0-a3 ; move.w SYM_ENTRY.hVal(a0),d0 ; or.w flags,d0 ; move.w d0,(a3)+ ; add.w #8,y ; ; dfNext: ; move.l #handlelist,a3 ; clr.l d0 ; move.w count,d0 ; lsl.l #1,d0 ; add.l d0,a3 ; add.l #SYM_ENTRY_LENGTH,a0 ; dbra d7,dfLoop ; ; dfEnd: ; rts ; ; Select: ; move.w #0,sel ; move.w #0,insel ; SelLoop: ; bsr InvertSel ; jsr passlib::idle_hot ; bsr InvertSel ; cmp.w #277,d0 beq Exit cmp.w #KEY_UP,d0 ; beq slUp ; cmp.w #KEY_DOWN,d0 ; beq slDown ; cmp.w #13,d0 ; beq slEnter ; tst.w infolder bne PasDroite1 cmp.w #KEY_RIGHT,d0 ; beq slEnter ; PasDroite1: cmp.w #264,d0 ; beq slEsc ; tst.w infolder beq PasGauche1 cmp.w #KEY_LEFT,d0 ; beq slEsc ; PasGauche1: cmp.w #265,d0 ; bne nnon1 ; bsr Change_Mem ; nnon1: ; cmp.w #268,d0 ; bne cpass1 ; bsr About ; cpass1: ; bra SelLoop ; slUp: ; cmp.w #0,sel ; beq SelLoop ; sub.w #1,sel ; move.w sel,d0 ; move.w first,d1 ; cmp.w d1,d0 ; bge SelLoop ; sub.w #1,first ; sub.w #1,last ; bsr ScrollDown move.w oldfirst2,first move.w oldlast2,last move.w oldsel2,sel bsr DrawTable bra SelLoop ; slDown: ; tst.w count ; beq SelLoop ; add.w #1,sel ; move.w count,d0 ; move.w sel,d1 ; cmp.w d0,d1 ; blt slCheckLast ; sub.w #1,sel ; ; slCheckLast: ; move.w sel,d0 ; move.w last,d1 ; cmp.w d1,d0 ; ble SelLoop ; add.w #1,first ; add.w #1,last ; bsr ScrollUp move.w oldfirst2,first move.w oldlast2,last move.w oldsel2,sel bsr DrawTable bra SelLoop ; slEnter: ; tst.w count ; beq SelLoop ; move.l #handlelist,a0 ; clr.l d0 ; move.w sel,d0 ; lsl.w #1,d0 ; add.l d0,a0 ; move.w (a0),d0 ; move.w d0,-(a7) ; cmp.w #$ffff,d0 ; bne slNotIncompat ; bsr DrawFolder ; move.w (a7)+,d0 ; bra SelLoop ; slNotIncompat: ; move.w d0,d1 ; and.w #$8000,d1 ; beq slNot89Warn ; slOverrideLoop: ; jsr passlib::idle_hot ; cmp.w #13,d0 ; beq overrideContinue ; tst.w infolder bne PasDroite2 cmp.w #KEY_RIGHT,d0 ; beq overrideContinue ; PasDroite2: cmp.w #264,d0 ; bne slOverrideLoop ; cmp.w #277,d0 beq Exit cmp.w #265,d0 ; bne nnon2 ; bsr Change_Mem ; nnon2: ; cmp.w #268,d0 ; bne cpass2 bsr About ; cpass2: ; cmp.w #KEY_LEFT,d0 ; bne slOverrideLoop ; bsr DrawFolder ; move.w (a7)+,d0 ; bra SelLoop ; overrideContinue: ; bra slNot92Warn ; slNot89Warn: ; move.w d0,d1 ; and.w #$4000,d1 ; beq slNot92Warn ; sl89emuLoop: ; jsr passlib::idle_hot ; cmp.w #277,d0 beq Exit cmp.w #13,d0 ; beq emu89Continue ; cmp.w #KEY_RIGHT,d0 ; beq emu89Continue ; cmp.w #264,d0 ; bne sl89emuLoop ; cmp.w #265,d0 ; bne nnon3 ; bsr Change_Mem ; nnon3: ; cmp.w #268,d0 ; bne cpass3 ; bsr About ; cpass3: ; cmp.w #KEY_LEFT,d0 ; bne sl89emuLoop ; bsr DrawFolder ; move.w (a7)+,d0 ; bra SelLoop ; emu89Continue: ; slNot92Warn: ; move.w (a7)+,d0 ; tst.w infolder ; beq slEnterFolder ; move.w d0,-(a7) ; bsr WaitDepress jsr userlib::exec ; bsr WaitDepress add.l #2,a7 ; continueAfterError: ; tst.l d0 ; bne slExecError ; move.l #null,-(a7) ; jsr doorsos::ST_showHelp ; add.l #4,a7 ; jsr doorsos::ST_eraseHelp ; slExecError: ; bsr DrawFolder ; bra SelLoop ; slEnterFolder: ; move.w d0,currentfolder ; move.w #1,infolder ; move.w first,oldfirst move.w last,oldlast move.w sel,oldsel move.w #0,first ; cmp.b #CALC_TI89,CALCULATOR ; beq noi89 ; move.w #10,last ; bra hfddghg ; noi89: ; move.w #7,last ; hfddghg: ; bsr DrawFolder ; bra Select ; RetourRep move.w #doorsos::FolderListHandle,currentfolder ; ROMs v2.0x support ! move.w #0,infolder ; move.w oldfirst,first move.w oldlast,last move.w oldsel,sel bsr DrawFolder ; bra SelLoop ; slEsc: ; tst.w infolder bne RetourRep rts ; ; errorInExec: ; move.l handlecount,d1 ; move.l #handlelist,a0 ; eieDelLoop: ; tst.l d1 ; beq eieDispErr ; move.w (a0)+,d2 ; tst.w d2 ; beq eieNext ; movem.l d0-d1/a0,-(a7) ; move.w d2,-(a7) ; jsr doorsos::HeapFree ; add.l #2,a7 ; movem.l (a7)+,d0-d1/a0 ; eieNext: ; dbra d1,eieDelLoop ; eieDispErr: ; bra continueAfterError ; ; InvertSel: ; move.l d0,-(a7) ; move.l #LCD_MEM,a0 ; move.w sel(pc),d0 ; sub.w first(pc),d0 ; mulu.w #8,d0 ; add.w #16,d0 ; add.w #1,d0 ; mulu.w #30,d0 ; add.l d0,a0 ; clr.l d0 ; move.w #8,d0 ; sub.l #1,d0 ; cmp.b #CALC_TI89,CALCULATOR ; beq eorloop89 ; eorloop: ; eor.b #$3f,(a0) ; eor.b #$ff,1(a0) ; eor.b #$ff,2(a0) ; eor.b #$ff,3(a0) ; eor.b #$ff,4(a0) ; eor.b #$ff,5(a0) ; eor.b #$ff,6(a0) ; eor.b #$ff,7(a0) ; eor.b #$ff,8(a0) ; eor.b #$ff,9(a0) ; eor.b #$ff,10(a0) ; eor.b #$ff,11(a0) ; eor.b #$ff,12(a0) ; eor.b #$ff,13(a0) ; eor.b #$ff,14(a0) ; eor.b #$ff,15(a0) ; eor.b #$ff,16(a0) ; eor.b #$ff,17(a0) ; eor.b #$ff,18(a0) ; eor.b #$ff,19(a0) ; eor.b #$ff,20(a0) ; eor.b #$ff,21(a0) ; eor.b #$ff,22(a0) ; eor.b #$ff,23(a0) ; eor.b #$ff,24(a0) ; eor.b #$ff,25(a0) ; eor.b #$ff,26(a0) ; eor.b #$ff,27(a0) ; eor.b #$ff,28(a0) ; eor.b #$fc,29(a0) ; add.l #30,a0 ; dbra d0,eorloop ; move.l (a7)+,d0 ; rts ; ; eorloop89: ; eor.b #$3f,(a0) ; eor.b #$ff,1(a0) ; eor.b #$ff,2(a0) ; eor.b #$ff,3(a0) ; eor.b #$ff,4(a0) ; eor.b #$ff,5(a0) ; eor.b #$ff,6(a0) ; eor.b #$ff,7(a0) ; eor.b #$ff,8(a0) ; eor.b #$ff,9(a0) ; eor.b #$ff,10(a0) ; eor.b #$ff,11(a0) ; eor.b #$ff,12(a0) ; eor.b #$ff,13(a0) ; eor.b #$ff,14(a0) ; eor.b #$ff,15(a0) ; eor.b #$ff,16(a0) ; eor.b #$ff,17(a0) ; eor.b #$ff,18(a0) ; eor.b #$fc,19(a0) ; add.l #30,a0 ; dbra d0,eorloop89 ; move.l (a7)+,d0 ; rts ; ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; WaitDepress: movem.l d0-d1/a0,-(a7) DetourneInterruptions: move.w #$700,d0 trap #1 bclr.b #2,$600001 move.w d0,-(a7) move.l $64,old_int1 move.l #new_int1,$64 bset.b #2,$600001 move.w (a7),d0 lea 2(a7),a7 trap #1 KeyPressed: move.w #$FFFE,d0 moveq #9,d1 ReadKeyBoard: move.w d0,$600018 moveq #20,d2 nop_loop2 dbf d2,nop_loop2 cmp.b #$FF,$60001B bne KeyPressed rol.w #1,d0 dbra d1,ReadKeyBoard RetablitInterruptions: move.w #$700,d0 trap #1 bclr.b #2,$600001 move.l old_int1,$64 bset.b #2,$600001 trap #1 movem.l (a7)+,d0-d1/a0 rts old_int1 dc.l 0 old_int5 dc.l 0 old_int6 dc.l 0 new_int1: rte ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; Here is the draw of all the table ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; DrawTable: cmp.b #CALC_TI89,CALCULATOR beq DrawFor89 SetFont #2 WriteStr #4,#2,#4,shellname WriteStr #196,#2,#4,version move.w XMax,d2 move.w YMax,d1 sub.w #19,d1 move.w #0,d0 move.w #2,d3 jsr graphlib::horiz move.w XMax,d2 move.w YMax,d1 sub.w #21,d1 move.w #0,d0 move.w #2,d3 jsr graphlib::horiz bra DrawTableContinue DrawFor89: SetFont #2 WriteStrCenter #4,#2,#4,shellname move.w XMax,d2 move.w YMax,d1 sub.w #17,d1 move.w #0,d0 move.w #2,d3 jsr graphlib::horiz DrawTableContinue: move.w YMax,d5 sub.w #6,d5 move.w XMax,d4 move.w #0,d1 move.w #0,d0 jsr graphlib::frame move.w #2,d5 move.w XMax,d4 move.w #13,d1 move.w #0,d0 jsr graphlib::frame move.w XMax,d2 ;x2 move.w YMax,d1 ;y sub.w #7,d1 move.w #0,d0 ;x1 move.w #2,d3 jsr graphlib::horiz move.w XMax,d2 move.w YMax,d1 sub.w #9,d1 move.w #0,d0 move.w #2,d3 jsr graphlib::horiz bsr View_Mem move.w #0,-(a7) jsr doorsos::FontSetSys add.l #2,a7 bsr Bobol move.w #1,-(a7) jsr doorsos::FontSetSys add.l #2,a7 rts ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; Here is the shell's securuty ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; BShell: Bobol: rts ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; Here it changes the memory printing ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Change_Mem: cmp.w #0,passlib::memo bne NotRAM move.w #1,passlib::memo bsr View_Mem rts NotRAM: move.w #0,passlib::memo bsr View_Mem rts ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; It prints the free memory (Ram or Archive) ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; View_Mem: move.w #0,-(a7) jsr doorsos::FontSetSys add.l #2,a7 cmp.b #CALC_TI89,CALCULATOR beq TI8989 move.w #1,-(a7) jsr doorsos::FontSetSys add.l #2,a7 WriteStr #1,#110,#4,gogol92 move.w #0,-(a7) jsr doorsos::FontSetSys add.l #2,a7 bra F_Chier2 TI8989: WriteStr #1,#84,#4,gogol F_Chier2: cmp.w #0,passlib::memo bne Put_Archive cmp.b #CALC_TI89,CALCULATOR beq TI89899 move.w #1,-(a7) jsr doorsos::FontSetSys add.l #2,a7 move.w #4,-(a7) move.l #instruc,-(a7) move.w #110,-(a7) move.w #1,-(a7) jsr doorsos::DrawStrXY add.l #10,a7 move.w #0,-(a7) jsr doorsos::FontSetSys add.l #2,a7 bra Get_Ram TI89899: move.w #4,-(a7) move.l #instruc,-(a7) move.w #84,-(a7) move.w #1,-(a7) jsr doorsos::DrawStrXY add.l #10,a7 Get_Ram: jsr userlib::getfreeRAM moveq #6,d1 lea strbuf(PC),a0 bsr ConvStr cmp.b #CALC_TI89,CALCULATOR beq TI989899 move.w #1,-(a7) jsr doorsos::FontSetSys add.l #2,a7 WriteStr #55,#110,#4,strbuf rts TI989899: WriteStr #36,#84,#4,strbuf move.w #1,-(a7) jsr doorsos::FontSetSys add.l #2,a7 rts Put_Archive: cmp.b #CALC_TI89,CALCULATOR beq TI7989899 move.w #1,-(a7) jsr doorsos::FontSetSys add.l #2,a7 move.w #4,-(a7) move.l #instru,-(a7) move.w #110,-(a7) move.w #1,-(a7) jsr doorsos::DrawStrXY add.l #10,a7 jsr userlib::getfreearchive moveq #6,d1 lea strbuf(PC),a0 bsr ConvStr WriteStr #79,#110,#4,strbuf move.w #1,-(a7) jsr doorsos::FontSetSys add.l #2,a7 rts TI7989899: move.w #4,-(a7) move.l #instru,-(a7) move.w #84,-(a7) move.w #1,-(a7) jsr doorsos::DrawStrXY add.l #10,a7 jsr userlib::getfreearchive moveq #6,d1 lea strbuf(PC),a0 bsr ConvStr WriteStr #48,#84,#4,strbuf move.w #1,-(a7) jsr doorsos::FontSetSys add.l #2,a7 rts About: ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; Prints the starting screen ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; PrintStartingScreen: jsr graphlib::clr_scr SetFont #2 WriteStrCenter #4,#2,#4,shellname SetFont #0 WriteStrCenter #138,#13,#4,version move.w #2,-(a7) jsr doorsos::FontSetSys lea 2(a7),a7 WriteStrCenter #51,#34,#4,auu move.w #1,-(a7) jsr doorsos::FontSetSys lea 2(a7),a7 WriteStrCenter #28,#20,#4,au WriteStrCenter #49,#73,#4,date WriteStrCenter #1,#89,#4,kkk move.w #0,-(a7) jsr doorsos::FontSetSys lea 2(a7),a7 WriteStrCenter #32,#51,#4,mail WriteStrCenter #18,#59,#4,FWSurl Pause: jsr userlib::idle_loop jsr graphlib::clr_scr bsr DrawFolder rts ScrollUp: movem.l d0/a0,-(a7) lea LCD_MEM,a0 lea 17*30(a0),a0 move.w LinesToScroll,d0 mulu.w #30,d0 sub.w #1,d0 ScrollUpLoop: move.b 8*30(a0),(a0)+ dbra d0,ScrollUpLoop move.w #8*30-1,d0 ScrollUpLoop2: clr.b (a0)+ dbra d0,ScrollUpLoop2 movem.l (a7)+,d0/a0 move.w currentfolder(pc),d0 ; DEREF d0,a0 ; move.w 2(a0),d7 ; add.l #4,a0 ; move.l #name,a1 ; move.w #16,d0 ; add.w #1,d0 ; move.w d0,y ; clr.w count ; move.l #handlelist,a3 ; move.w first,oldfirst2 move.w last,oldlast2 move.w sel,oldsel2 move.w last,first move.w last2,d0 lsl.w #3,d0 add.w d0,y bra dfLoop rts ScrollDown: movem.l d0/a0,-(a7) lea LCD_MEM,a0 lea 17*30(a0),a0 move.w LinesToScroll,d0 mulu.w #30,d0 adda d0,a0 sub.w #1,d0 ScrollDownLoop: move.b -(a0),8*30(a0) dbra d0,ScrollDownLoop lea LCD_MEM,a0 lea 17*30(a0),a0 move.w #8*30-1,d0 ScrollDownLoop2: clr.b (a0)+ dbra d0,ScrollDownLoop2 movem.l (a7)+,d0/a0 move.w currentfolder(pc),d0 ; DEREF d0,a0 ; move.w 2(a0),d7 ; add.l #4,a0 ; move.l #name,a1 ; move.w #16,d0 ; add.w #1,d0 ; move.w d0,y ; clr.w count ; move.l #handlelist,a3 ; move.w first,oldfirst2 move.w last,oldlast2 move.w sel,oldsel2 move.w first,last bra dfLoop rts Exit: rts ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; ; ; Thanks to Jimmy Mardell for this routine :) ; ; ; ; ; ; Converts a number to a string ; ; ; ; IN: d0 - The number ; ; d1 - Number of digits ; ; a0 - Pointer to string ; ; OUT: *a0 - The string (null-terminated) ; ; ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ConvStr: adda.l d1,a0 clr.b (a0) subq.b #1,d1 RepConv: divu #10,d0 move.l d0,d2 lsr.l #8,d2 lsr.l #8,d2 add.b #48,d2 move.b d2,-(a0) and.l #$FFFF,d0 dbra d1,RepConv rts ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; Use this with WriteStrCenter MACRO ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; CalcTest: ; cmp.b #CALC_TI89,CALCULATOR ; bne NotTI89ForMacro ; move.w #0,d0 ;y ; move.w #0,d1 ;x ; rts ; NotTI89ForMacro: ; move.w #14,d0 ;y ; move.w #40,d1 ;x ; rts ; ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; XAddition dc.w 0 YAddition dc.w 0 XMax dc.w 0 YMax dc.w 0 aaa dc.w 0 strbuf dc.l 0,0 y dc.w 0 infolder dc.w 0 currentfolder dc.w 8 count dc.w 0 name dc.l 0,0,0 sel dc.w 0 insel dc.w 0 null dc.l 0 first dc.w 0 last dc.w 7 last2 dc.w 7 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; Char Nø 12345678901234567890123456 ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ASMnocomment dc.b "No Comment",0 typeLIBstr dc.b "ASM Library",0 typeUSERstr dc.b "USER Variable",0 gogol92 dc.b " ",0 gogol dc.b " ",0 ame dc.b " ",0 au dc.b "By Flavien Racine",0 auu dc.b "-FLASH-",0 FWSurl dc.b "http://www.multimania.com/flashz",0 mail dc.b "",0 kkk dc.b "Press any key to continue",160,0 instruc dc.b "RAM free:",0 instru dc.b "Archive free:",0 shellname dc.b "FlashShell Explorer",0 version dc.b "v2.10",0 date dc.b "05/16/2001",0 _comment dc.b "FlashShell Explorer v2.10 by FlashZ",0 passlib::lockcalc: trap #4 rts passlib::idle_hot: jmp userlib::idle_loop passlib::memo dc.w 0 LinesToScroll dc.w 0 oldfirst dc.w 0 oldlast dc.w 0 oldsel dc.w 0 oldfirst2 dc.w 0 oldlast2 dc.w 0 oldsel2 dc.w 0 BSS handlelist ds.w 128 handlecount ds.l 1 oldVect ds.b $4c errorStack ds.l 1 newROMTable ds.l 684 oldROMTable ds.l 1 OldHandleB ds.l 1 OldHandleC ds.l 1 flags ds.w 1 end