; ; Lilan 1.0.1 ; ; 1.0 - Initial release ; 1.0.1 - move from 5 entries -> 10 ; 1.0.2 - changed prefs filetype -> $5a ; ; ; ; ; ; case off copy 13:Ainclude:e16.gsos copy 13:Ainclude:e16.locator copy 13:ainclude:e16.finder mcopy lilan.mac MaxCount gequ 10 ;5 FolderFType gequ $f PrefFType gequ $5a S16FType gequ $bc P8FType gequ $ff Init START using Global phb phk plb sta MyID ora #$0100 sta AuxID pha _QDVersion pla and #$0fff cmp #$0307 ; system 6.0? bcc BAD ~AcceptRequests #LilanName,MyID,#ReqProc bcs BAD ~ShowBootInfo #BootStr,#BootIcon stz Active stz Finder stz NumEntries plb rtl BAD lda #1 ora 5,s sta 5,s plb rtl END Global DATA MyID ds 2 AuxID ds 2 LilanName pstr "Kelvin~lilan~" ; my name FinderName pstr "Apple~Finder~" ; Finder's Name LilanHeader dc c'Lilan ' ; Header for saved file pref_fold gstr "*:System:Preferences" pref_file gstr "*:System:Preferences:Lilan" ; ; For opening my file ; OpenDCB anop OpenDCB_pcount dc i2'15' OpenDCB_refNum ds 2 OpenDCB_pathName dc i4'pref_file' OpenDCB_requestAccess ds 2 OpenDCB_resourceNumber dc i2'0' OpenDCB_access ds 2 OpenDCB_fileType ds 2 OpenDCB_auxtype ds 4 OpenDCB_storageType ds 2 OpenDCB_createDateTime ds 8 OpenDCB_modDateTime ds 8 OpenDCB_optionList ds 4 OpenDCB_dataEOF ds 4 OpenDCB_blocksUsed ds 4 OpenDCB_resourceEOF ds 4 OpenDCB_resourceBlocks ds 4 ; ; for reading/writing data ; IODCB anop IODCB_pcount dc i2'5' IODCB_refNum ds 2 IODCB_dataBuffer ds 4 IODCB_requestCount ds 4 IODCB_transferCount ds 4 IODCB_cachePriority dc i4'0' CloseDCB dc i2'1' CloseDCB_refnum ds 2 DestroyDCB anop DestroyDCB_pcount dc i2'1' DestroyDCB_pathName dc i4'pref_file' CreateDCB dc i2'4' CreateDCB_name ds 4 dc i2'$e3' ; access CreateDCB_ftype ds 2 CreateDCB_atype dc i4'0' ; ; info returned from TellFinderAddToExtras ; MenuOut ds 2 ds 2 MenuOut_ID ds 2 ds 2 MenuTemp dc i2'$0000' dc i2'0' dc i2'0' ;menu key dc i2'0' dc i2'0' Menu_Ref dc i4'space' ;Ignore ds 2 ; for when *I* request the file launched Active ds 2 ; boolean - Am I active? NumEntries ds 2 ; Number of menus to take care of Finder ds 2 ; private Finder status flag MenuList ds 2*MaxCount ; menu numbers of the 5 entries HandleList ds 4*MaxCount ; handles to the 5 GS/OS strings PointerList ds 4*MaxCount ; pointers to the 5 GS/OS strings space ds 256*MaxCount space for menu names ; ; this is to tell Finder to launch a program ; LaunchDCB dc i2'0' ; launch/print flag LaunchDCB_name ds 4 LaunchOut ds 4 BootStr pstr "Lilan v1.02" BootIcon anop DC I'$0000' DC I'$00A0' DC I'$0010' DC I'$0014' dc h'00000000000000000000' dc h'00000000000000000000' DC H'444444FF444444444444' DC H'444444FF444444444444' DC H'444444FF444444444444' DC H'444444FF444444444444' DC H'444444FF444444444444' DC H'444444FF444444444444' DC H'FFFFFFFFFFFFFFFFFFFF' DC H'FFFFFFFFFFFFFFFFFFFF' DC H'444444FF444444444444' DC H'444444FF444444444444' DC H'444444FF444444444444' DC H'444444FF444444444444' DC H'444444FF444444444444' DC H'444444FF444444444444' dc h'00000000000000000000' dc h'00000000000000000000' DC H'FFFFFFffFFFFFFFFFFFF' DC H'FFFFFFffFFFFFFFFFFFF' DC H'FFFFFFffFFFFFFFFFFFF' DC H'FFFFFFffFFFFFFFFFFFF' DC H'FFFFFFffFFFFFFFFFFFF' DC H'FFFFFFffFFFFFFFFFFFF' DC H'ffffffffffffffffffff' DC H'ffffffffffffffffffff' DC H'FFFFFFffFFFFFFFFFFFF' DC H'FFFFFFffFFFFFFFFFFFF' DC H'FFFFFFffFFFFFFFFFFFF' DC H'FFFFFFffFFFFFFFFFFFF' DC H'FFFFFFffFFFFFFFFFFFF' DC H'FFFFFFffFFFFFFFFFFFF' END ReqProc START using Global srqGoAway equ 3 phb phk plb lda $0d,s ; request code cmp #FinderSaysHello lbeq HandleHello cmp #FinderSaysGoodbye lbeq HandleGoodbye cmp #FinderSaysExtrasChosen lbeq HandleExtras cmp #FinderSaysBeforeOpen lbeq HandleOpen cmp #srqGoAway lbeq HandleGoAway ignore nop plx ply pla pla pla pla pla phy phx plb rtl HandleGoAway anop jsr DieDieDie bra ignore HandleOpen anop jsr DoOpen bra ignore HandleHello anop jsr DoHello bra ignore HandleGoodbye anop jsr DoGoodbye bra ignore HandleExtras anop jsr DoExtras brl ignore END ; ; FinderSaysbeforeOpenHandler ; ; DoOpen START using Global ; Note: ; We never actually accept the request - we just record the info... ; ;typedef struct finderSaysBeforeOpenIn { ; word pCount; ; pointer pathname; 2<- What we care about ; RectPtr zoomRect; ; word filetype; 10<- What we care about ; long auxtype; ; word modifiers; ; iconObjHandle theIconObj; ; word printFlag Handle equ 1 len equ 5 _d equ 7 _rts equ 9 _rtlb equ 11 dataOut equ 15 dataIn equ 19 offset_fileType equ 10 offset_pathname equ 2 phd pha ;tmps pha pha tsc tcd ; lda Ignore ; Is it because I requested the launching? ; lbne exit ldy #offset_fileType lda [ 64k.... pha pha ~NewHandle OpenDCB_dataEOF,AuxID,#$c018,#0 plax stax +} ; lda OpenDCB_dataEOF sec sbc #6 ; move past header sta