home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Best of Mecomp Multimedia 1
/
Mecomp-CD.iso
/
amiga
/
tools
/
cd
/
indexcd
/
bin
/
sources.lha
/
sources
/
IndexAG.s
< prev
next >
Wrap
Text File
|
1997-02-15
|
18KB
|
914 lines
OPT P=68000,AMIGA,CASE,O+,NOWARN,NODEBUG
bra _main
dc.b "$VER: "
Title: dc.b "IndexAG v1.0 (15-02-1997) © by Claudio Buraglio",10,0
_main: lea IndexName,a1
bsr ReadArg ; Legge il primo argomento
lea GuideName,a1
bsr ReadArg ; Legge il II argomento
lea FindText,a1
bsr ReadArg ; Legge il III argomento
lea Switch,a1
bsr ReadArg ; Legge il IV argomento
lea Short,a1
bsr ReadArg ; Legge il V argomento
lea Switch+1,a1
cmp.b #"D",(a1)
bne .OpenDos
lea FindText,a1 ; Il testo da cercare quanto e' lungo ?
moveq.l #0,d0
.Loop: addq.l #1,d0
tst.b (a1)+
bne .Loop
move.l d0,FindLen
.OpenDos:
move.l #0,d0 ; Version
lea DosName,a1
move.l 4,a6
jsr -552(a6) ; OpenLibrary
tst.l d0
beq rts
move.l d0,DosBase
move.l #Title,d1
move.l DosBase,a6
jsr -$3b4(a6) ; PutStr
lea IndexName,a0 ; se non e' stato specificato un file
tst.b (a0) ; .indice esce
beq NoArgs
lea FindText,a1 ; Testo da cercare
tst.b (a1)
beq .NoFindArg ; se esiste un testo da cercare lo
bsr StrToUpper ; porta in uppercasae
;--------------------------------------------------------
.NoFindArg: lea GuideName,a1 ; se esiste il nome con cui
tst.b (a1) ; salvare il file .guide
bne CercaSuff2 ; salta a CercaSuff2
.CopiaNome: move.b (a0)+,(a1)+ ; copia IndexName(a0) in GuideName(a1)
tst.b (a0)
bne .CopiaNome
CercaSuff: cmp.b #".",(a1) ; se trova il punto di .indice
beq .Punto ; lo riscrive in .guide
cmp.l #GuideName,a1 ; se non e' stato trovato nessun punto
beq NoSuff ; esce segnalando l'errore altrimenti...
subq.l #1,a1 ; decrementa a1
bra CercaSuff ; e luppa.
.Punto: move.b #".",(a1)+ ; scrive .guide
move.b #"g",(a1)+
move.b #"u",(a1)+
move.b #"i",(a1)+
move.b #"d",(a1)+
move.b #"e",(a1)+
move.b #$00,(a1)
;--------------------------------------------------------
CercaSuff2: lea IndexName,a1
.Cerca: cmp.b #".",(a1) ; se trova il punto
beq .LabelCD ; salta..
tst.b (a1)+ ; se trova uno zero
beq NoSuff ; segnala l'errore
bra .Cerca
.LabelCD: lea NrDisco,a2
cmp.b #"T",-2(a1) ; AMINE(T)n.
beq CercaDisco
cmp.b #"T",-3(a1) ; AMINE(T)nn.
beq CercaDisco
bra NoSuff ; segnala l'errore
CercaDisco: cmp.b #"T",-1(a1) ; se siamo alla fine di AMINET
beq CopiaNrDisco ; copia il nr. disco
subq.l #1,a1 ; Decrementa il ptr di 1
bra CercaDisco ; altrimenti continua la ricerca
CopiaNrDisco: move.b (a1)+,(a2)+
cmp.b #".",(a1) ; se arriviamo al punto il nr del CD
bne CopiaNrDisco ; e' finito, quindi...
move.b #" ",(a2)+ ; aggiunge uno spazio e
move.b #$00,(a2) ; un terminatore NULL
FineNrDisco: lea Switch+1,a3 ; se come Switch e' specificato
cmp.b #"A",(a3) ; (A)ppend
beq .CaricaCounter ; carica un possibile index.tmp
bra OpenLoadIndex ; altrimenti salta la routine
.CaricaCounter: move.l #CounterFile,d1
move.l #1005,d2 ; OldFile
move.l DosBase,a6
jsr -30(a6) ; Open
tst.l d0
beq OpenLoadIndex
move.l d0,File
move.l d0,d1 ; File Handle
move.l #FileCounter,d2 ; Buffer
move.l #4,d3
move.l DosBase,a6
jsr -42(a6) ; Read
move.l File,d1
move.l DosBase,a6
jsr -36(a6) ;Close
OpenLoadIndex:
move.l #IndexName,d1 ; Nome
move.l #-2,d2 ; Access_Read
move.l DosBase,a6
jsr -84(a6) ; Lock
move.l d0,d1
beq NoFile
move.l d0,Lock
move.l #FIB,d2
move.l DosBase,a6
jsr -102(a6) ; Examine
tst.l d0 ; zero se directory o empty file
beq UnLock
move.l FIB+$7c,d0
move.l d0,FileLen
add.l #16,d0
move.l #0,d1 ; Request
move.l 4,a6
jsr -198(a6) ; AllocMem
tst.l d0
beq UnLock
add.l #8,d0
move.l d0,a0
add.l FileLen,a0
move.l 0,(a0)
move.l d0,MemBase
move.l #IndexName,d1 ; Name
move.l #1005,d2 ; OldFile
move.l DosBase,a6
jsr -30(a6) ; Open
tst.l d0
beq FreeMem
move.l d0,File
move.l d0,d1
move.l MemBase,d2
move.l FileLen,d3
move.l DosBase,a6
jsr -42(a6) ; Read
move.l File,d1
move.l DosBase,a6
jsr -36(a6) ;Close
; Programma...
move.l MemBase,a0
move.l #0,-4(a0)
move.l a0,d0
add.l FileLen,d0
subq.l #4,d0
move.l d0,EndFile
; Apre il file di destinazione
SkipOpenSource: lea Switch+1,a3
cmp.b #"A",(a3)
beq .Append
bra .NewFile
.Append: move.l #GuideName,d1
move.l #1004,d2 ; ReadWrite
move.l DosBase,a6
jsr -30(a6) ; Open
tst.l d0
beq NoDest
move.l d0,File
move.l d0,d1 ; File Handle
move.l #0,d2 ; Posizion
move.l #1,d3 ; OFFSET_END
move.l DosBase,a6
jsr -66(a6) ; Seek
bra .Guide
.NewFile: move.l #GuideName,d1
move.l #1006,d2 ; NewFile
move.l DosBase,a6
jsr -30(a6) ; Open
tst.l d0
beq NoDest
move.l d0,File
; Tutto Ok. Creo .guide
.Guide: move.l #18,FileWidth
move.l #10,DirWidth
lea Switch+1,a3
cmp.b #"A",(a3)
beq NoHeaderGuide
WriteHeadGuide: move.l File,d1 ; File Handle
move.l #AGHead1,d2 ; Buffer
move.l #AGEndA,d3
move.l DosBase,a6
jsr -48(a6) ; Write
lea IndexName,a0
lea Path,a1
moveq.l #0,d0
.loop1: tst.b (a0)+
bne .loop1
.loop2 cmp.b #"_",-(a0)
bne .loop2
addq.l #1,a0
.loop3: move.b (a0)+,(a1)+
addq.l #1,d0
cmp.b #".",(a0)
bne .loop3
move.b #" ",(a1)+
move.b #" ",(a1)+
move.b #"-",(a1)+
move.b #" ",(a1)+
move.b #" ",(a1)+
addq.l #5,d0
lea FindText,a0
.loop4: move.b (a0)+,(a1)+
addq.l #1,d0
tst.b (a0)
bne .loop4
move.l File,d1 ; File Handle
move.l #Path,d2 ; Buffer
move.l d0,d3
move.l DosBase,a6
jsr -48(a6) ; Write
cmp.b #"S",Short
beq HeaderShort
move.l File,d1 ; File Handle
move.l #AGHead2,d2 ; Buffer
move.l #AGEndB,d3
move.l DosBase,a6
jsr -48(a6) ; Write
bra NoHeaderGuide
HeaderShort: move.l File,d1 ; File Handle
move.l #AGHead3,d2 ; Buffer
move.l #AGEndC,d3
move.l DosBase,a6
jsr -48(a6) ; Write
NoHeaderGuide:
move.l MemBase,a0
move.l a0,PtFile
move.l a0,a5
CicloProgramma:
lea FindText,a1 ; Testo da cercare
tst.b (a1)
beq FillAree
move.l a5,a0 ; Buffer di ricerca
lea Switch+1,a3
cmp.b #"D",(a3)
bne .CercaTesto
bsr CercaDir
bra .Continua
.CercaTesto: bsr CercaTesto
.Continua: tst.b d0 ; -1 = errore, 0 = OK
bne FineProg
move.l a0,a5
FillAree: lea AGLine,a1
move.l #254,d0
.Fill1: move.b #$00,(a1)+
dbra d0,.Fill1
lea AGLine,a1
move.l FileWidth,d0
addq.l #2,d0
.Fill: move.b #" ",(a1)+
dbra d0,.Fill
move.b #$00,(a1)
move.l a5,a0
move.l a0,PtFile
lea AGLine,a1
move.b #"@",(a1)+
move.b #"{",(a1)+
move.b #'"',(a1)+
CopiaFile: move.b (a0)+,(a1)+
tst.b (a1)
beq FineNome
cmp.b #"~",(a0)
beq FindFine
bra CopiaFile
FindFine tst.b (a1)+
bne FindFine
subq.l #1,a1
FineNome: move.b #'"',(a1)+
move.b #' ',(a1)+
move.l a0,PtDir
lea AGCommand,a2
CopiaComm: move.b (a2)+,(a1)+
tst.b (a2)
bne CopiaComm
lea NrDisco,a2
CopiaNumDisk1: move.b (a2)+,(a1)+
tst.b (a2)
bne CopiaNumDisk1
.FindDir: cmp.b #"~",(a0)+
beq CopiaDir1
bra .FindDir
CopiaDir1: move.l a1,PtPath
.CopiaDir: move.b (a0)+,(a1)+
cmp.b #"~",(a0)
bne .CopiaDir
move.b #"/",(a1)+
move.l PtFile,a0
.CopiaFile: move.b (a0)+,(a1)+
cmp.b #"~",(a0)
bne .CopiaFile
move.b #'"',(a1)+
move.b #'}',(a1)+
move.b #' ',(a1)+
move.l a1,a5
move.l DirWidth,d0
subq.l #1,d0
.Fill: move.b #" ",(a1)+
dbra d0,.Fill
move.b #$00,(a1)
move.l a5,a1
.FindDirArea: cmp.b #"~",(a0)+
beq CopiaDir
bra .FindDirArea
CopiaDir: cmp.b #"S",Short
beq FinePathArea
.CopiaDir: move.b (a0)+,(a1)+
tst.b (a1)
beq FinePathArea
cmp.b #"~",(a0)
beq FinePath
bra .CopiaDir
FinePath: tst.b (a1)+
bne FinePath
subq.l #1,a1
FinePathArea: move.b #" ",(a1)+
FindSize: cmp.b #"~",(a0)+
bne FindSize
CopiaSize: cmp.b #"~",2(a0)
beq .CopiaSizeS2
cmp.b #"~",3(a0)
beq .CopiaSizeS1
bra .CopiaSize
.CopiaSizeS2: move.b #" ",(a1)+
.CopiaSizeS1: move.b #" ",(a1)+
.CopiaSize: move.b (a0)+,(a1)+
cmp.b #"~",(a0)
bne .CopiaSize
move.b (a0)+,(a1)
move.b #" ",(a1)+ ; spazio dopo size
; Numero Disco
cmp.b #"S",Short
beq .finedisco
lea NrDisco,a2
tst.b 2(a2)
beq .uno
move.b (a2)+,(a1)+
move.b (a2)+,(a1)+
bra .finedisco
.uno: move.b #" ",(a1)+
move.b (a2)+,(a1)+
.finedisco: move.b #" ",(a1)+
move.b #'@',(a1)+
move.b #'{',(a1)+
move.b #'"',(a1)+
CopiaCommento: move.b (a0)+,(a1)+
cmp.b #10,(a0)
bne CopiaCommento
move.b #'"',(a1)+
move.b #" ",(a1)+
cmp.b #"~",-3(a0)
bne .go
cmp.b #"N",-2(a0)
bne .go
cmp.b #"C",-1(a0)
bne .go
cmp.b #$0a,-0(a0)
bne .go
lea AGNoComment,a2
.CopyNoComment: move.b (a2)+,(a1)+
tst.b (a2)
bne .CopyNoComment
bra FineCommento
.go: lea AGCommand,a2
.CopiaComm: move.b (a2)+,(a1)+
tst.b (a2)
bne .CopiaComm
lea NrDisco,a2
CopiaNumDisk2: move.b (a2)+,(a1)+
tst.b (a2)
bne CopiaNumDisk2
move.l PtPath,a2
.CopiaPath: move.b (a2)+,(a1)+
cmp.b #" ",(a2)
bne .CopiaPath
.FindEnd: cmp.b #'"',-(a1)
bne .FindEnd
move.b #" ",(a1)+
move.b #"C",(a1)+ ; Identifica il commento
move.b #'"',(a1)+
move.b #"}",(a1)+
FineCommento: move.b (a0)+,(a1)+ ; LF
move.b #$00,(a1)+ ; Fine riga
move.l a0,a5
; move.l #AGLine,d1
; move.l DosBase,a6
; jsr -$3b4(a6) ; PutStr
lea AGLine,a1
moveq.l #0,d3
conta: addq.l #1,d3
tst.b (a1)+
bne conta
subq.l #1,d3
move.l File,d1 ; File Handle
move.l #AGLine,d2 ; Buffer header IFF
move.l DosBase,a6
jsr -48(a6) ; Write
addq.l #1,FileCounter
move.l EndFile,d0
cmp.l d0,a5
bge FineProg
bra CicloProgramma
;--------------------------------------------------------------
FineProg: lea Switch+1,a3
cmp.b #"A",(a3)
beq CloseDestFile
Footer: lea NrEntry,a1
move.b #$0a,(a1)+
move.l FileCounter,d2
tst.b d2
beq AddStringa0
cmp.b #1,d2
beq AddStringa1
move.l A1,-(SP)
bsr Decl
move.l (SP)+,A1
lea ConBinDec+2,a0
Uguale: cmp.b #"0",(a0)+
beq Uguale
subq.l #1,a0
CopiaLenght: move.b (a0)+,(a1)+
cmp.b #"0",(a0)
blt AddStringa
cmp.b #"9",(a0)
bhi AddStringa
bra CopiaLenght
AddStringa0: lea TxNote0,a0
bra CopiaNota
AddStringa1: lea TxNote1,a0
bra CopiaNota
AddStringa: lea TxNote2,a0
CopiaNota: move.b (a0)+,(a1)+
tst.b (a0)
bne CopiaNota
lea AGEnd,a0
CopiaEnd: move.b (a0)+,(a1)+
tst.b (a0)
bne CopiaEnd
lea NrEntry,a1
moveq.l #0,d3
ContaLenght: addq.l #1,d3
tst.b (a1)+
bne ContaLenght
subq.l #1,d3
move.l File,d1 ; File Handle
move.l #NrEntry,d2 ; Buffer
move.l DosBase,a6
jsr -48(a6) ; Write
move.l File,d1 ; File Handle
move.l #AGEnd,d2 ; Buffer
move.l #10,d3
move.l DosBase,a6
jsr -48(a6) ; Write
CloseDestFile: move.l File,d1
move.l DosBase,a6
jsr -36(a6) ;Close
lea Switch+1,a3
cmp.b #"A",(a3)
beq .SalvaCounter
bra Print
.DeleteCounter: move.l #CounterFile,d1
move.l DosBase,a6
jsr -72(a6) ; DeleteFile
bra CloseDosBase
.SalvaCounter: move.l #CounterFile,d1
move.l #1006,d2 ; NewFile
move.l DosBase,a6
jsr -30(a6) ; Open
tst.l d0
beq Print
move.l d0,File
move.l d0,d1 ; File Handle
move.l #FileCounter,d2 ; Buffer
move.l #4,d3
move.l DosBase,a6
jsr -48(a6) ; Write
move.l File,d1
move.l DosBase,a6
jsr -36(a6) ;Close
;=================================================================
Print: move.l #GuideName,d1
move.l DosBase,a6
jsr -$3b4(a6) ; PutStr
move.l #TxtSuccess,d1
move.l DosBase,a6
jsr -$3b4(a6) ; PutStr
FreeMem:
move.l FileLen,d0
add.l #16,d0
move.l MemBase,a1
sub.l #8,a1
move.l 4,a6
jsr -210(a6) ; FreeMem
UnLock: move.l Lock,d1
move.l DosBase,a6
jsr -90(a6) ; UnLOck
CloseDosBase:
move.l DosBase,a1
move.l 4,a6
jsr -414(a6) ; CloseLibrary
clr.l d0
rts: rts
;------------------------------------------------------------
MakeUpperCase:
cmp.b #"a",d0
blt .rts
cmp.b #"z",d0
bhi .rts
bclr #5,d0
.rts: rts
;------------------------------------------------------------
; Gestione Errori
NoFile: move.l #TxtSourceErr,d1
move.l DosBase,a6
jsr -$3b4(a6) ; PutStr
bra CloseDosBase
NoSuff: move.l #TxtSuffErr,d1
move.l DosBase,a6
jsr -$3b4(a6) ; PutStr
bra CloseDosBase
NoDest: move.l #TxtDestErr,d1
move.l DosBase,a6
jsr -$3b4(a6) ; PutStr
bra FreeMem
NoArgs: move.l #TxtUsage,d1
move.l DosBase,a6
jsr -$3b4(a6) ; PutStr
bra CloseDosBase
;-------------------------------------------------------------
CercaTesto: movem.l A1-A2,-(SP) ; a0 = buffer, a1 = testo
move.l a1,a2
.Loop: tst.b (a1)
beq .Trovato
move.b (a0),d0
tst.b d0
beq .NoMatch
cmp.b #"a",d0
blt .Upper ; e' inferiore
cmp.b #"z",d0
bhi .Upper ; e' superiore
bclr #5,d0 ; Force Uppercase
.Upper: cmp.b (a1),d0
beq .Next
move.l a2,a1 ; Ripristina il ptr del testo
addq.l #1,a0
bra .Loop
.Next: addq.l #1,a1
addq.l #1,a0
bra .Loop
.NoMatch: move.l #-1,d0
movem.l (SP)+,A1-A2
rts
.Trovato: tst.b -1(a0)
beq .Inizio
cmp.b #$0a,-1(a0)
beq .Inizio
subq.l #1,a0
bra .Trovato
.Inizio: moveq.l #0,d0
movem.l (SP)+,A1-A2
rts
;-------------------------------------------------------------
CercaDir: movem.l A1-A2,-(SP) ; a0 = buffer, a1 = testo
move.l a1,a2
.CercaDir: cmp.b #"~",(a0)+
bne .CercaDir
.Loop: tst.b (a1)
beq .Trovato
move.b (a0),d0
tst.b d0
beq .NoMatch
cmp.b #"~",d0
beq .FineDirArea
cmp.b #"a",d0
blt .Upper ; e' inferiore
cmp.b #"z",d0
bhi .Upper ; e' superiore
bclr #5,d0 ; Force Uppercase
.Upper: cmp.b (a1),d0
beq .Next
.NextR: move.l a2,a1 ; Ripristina il ptr del testo
addq.l #1,a0
bra .Loop
.Next: addq.l #1,a1
addq.l #1,a0
bra .Loop
.NoMatch: move.l #-1,d0
movem.l (SP)+,A1-A2
rts
.FineDirArea: cmp.b (a1),d0
beq .Trovato
cmp.b #$0a,(a0)+
bne .FineDirArea
move.l a2,a1 ; Ripristina il ptr del testo
bra .CercaDir
.Trovato: cmp.b #"~",(a0)
bne .NextR
move.l FindLen,d1
sub.l d1,a0
cmp.b #"~",(a0)
bne .FalsoAllarme
.Trovato2: tst.b -1(a0)
beq .Inizio
cmp.b #$0a,-1(a0)
beq .Inizio
subq.l #1,a0
bra .Trovato2
.Inizio: moveq.l #0,d0
movem.l (SP)+,A1-A2
rts
.FalsoAllarme: add.l d1,a0
bra .FineDirArea
StrToUpper: movem.l a1,-(SP)
.NextChar: cmp.b #"a",(a1)
blt .TestFine ; e' inferiore
cmp.b #"z",(a1)
bhi .TestFine ; e' superiore
bclr #5,(a1) ; Force Uppercase
.TestFine: tst.b (a1)+
bne .NextChar
movem.l (SP)+,a1
rts
;-------------------------------------------------------------
ReadArg:cmp.b #$0a,(a0) ; se Line Feed...
beq .Exit ; esce.
cmp.b #$00,(a0) ; se Nullo...
beq .Exit ; esce.
cmp.b #'"',(a0) ; Se incontra le virgolette "
beq .Virg ; usa l'apposita routine
cmp.b #"'",(a0) ; Se incontra le virgolette '
beq .Virg ; usa l'apposita routine
cmp.b #" ",(a0) ; Cerca inizio testo
bne .loop ; se si loop
addq #1,a0
bra ReadArg ; se no, cicla.
.loop: cmp.b #$0a,(a0) ; se Line Feed
beq .Exit
cmp.b #$20,(a0) ; o un'altro spazio
beq .Exit ; esce
move.b (a0)+,(a1)+ ; copia lettera
bra .loop ; e cicla
.Virg: addq.l #1,a0
.V: cmp.b #$0a,(a0) ; se Line Feed
beq .Exit
cmp.b #'"',(a0) ; o un'altra virgoletta
beq .ExV ; esce
cmp.b #"'",(a0)
beq .ExV
move.b (a0)+,(a1)+ ; copia lettera
bra .V ; e cicla
.ExV: addq #1,a0
.Exit: rts
NL: move.l #NewLineChar,d1
move.l DosBase,a6
jsr -$3b4(a6) ; PutStr
rts
*----------------------------------------------------------
* -- Conversione di d2.l -> Dec-String a partire da (a4) - (d0,d1,d2-a4,a5)
Decl: moveq #7,d0 Conversione di 8 Cifre
lea ConBinDec+1,a4 +1 per spazio per segno
lea .Table,a5 Tabella
.Next: moveq #'0',d1 Inizio con cifra '0'
.Dec: addq #1,d1 Cifra + 1
sub.l (a5),d2 c'e' ancora qualcosa?
bcc.s .Dec se si
subq #1,d1 correggi cifra
add.l (a5),d2 quindi anche
move.b d1,(a4)+ Cifra -> Buffer
lea 4(a5),a5 next power_10
dbra d0,.Next for 8 Digits
rts
cnop 0,4
.Table: dc.l 10000000
dc.l 1000000
dc.l 100000
dc.l 10000
dc.l 1000
dc.l 100
dc.l 10
dc.l 1
AGCommand: dc.b 'system "ICD:Bin/E ',0
AGNoComment: dc.b "LINK ICD:Bin/Help.guide/NOCOM}",0
AGEnd: dc.b "@ENDNODE",10,10,0
TxNote0: dc.b "There is no archive to list.",10,10,0
TxNote1: dc.b "One file listed.",10,10,0
TxNote2: dc.b " files listed",10,10,0
AGHead1: dc.b '@database Archive',10
AGHa: dc.b '@node main "'
AGEndA: EQU *-AGHead1
AGHead2: dc.b '"',10,10,'@{"Filename " LINK ICD:Bin/Help.guide/FILENAME} Directory Size CD @{"Description" LINK ICD:Bin/Help.guide/DESCRIPTION }',10
AGb: dc.b '-----------------------------------------------------------',10
AGEndB: EQU *-AGHead2
AGHead3: dc.b '"',10,10,'@{"Filename " LINK ICD:Bin/Help.guide/FILENAME} Size @{"Description" LINK ICD:Bin/Help.guide/DESCRIPTION }',10
AGc: dc.b '-----------------------------------------------',10
AGEndC: EQU *-AGHead3
* * * Campo dati
cnop 0,8
DosName: dc.b "dos.library",0
NewLineChar: dc.b 10,0
TxtUsage: dc.b 10,"Uso: IndiceAG <File.indice> [file.guide] [cercare] [-D,-A,]",10,10
dc.b "Questo comando crea un indice in formato AmigaGuide, se come parametro",10
dc.b "gli viene passato un file EARSANCDx.indice creato con CreaIndice.",10,10,0
TxtSourceErr: dc.b 10,"ERROR! Can't find Source File!",10,10,0
TxtSuffErr: dc.b 10,"ERROR! The Source file Must be have the suffix .index .",10,10,0
TxtDestErr: dc.b 10,10,"ERROR! Can't open destination file!",10,10,0
TxtSuccess: dc.b " maked!",10,10,0
CounterFile: dc.b "T:Counter.temp",0
section AreaDati,BSS
FIB: ds.b $104
DosBase: ds.l 1
Lock: ds.l 1
FileLen: ds.l 1
MemBase: ds.l 1
File: ds.l 1
EndFile: ds.l 1
PtFile: ds.l 1
PtDir: ds.l 1
PtPath: ds.l 1
FileWidth: ds.l 1
DirWidth: ds.l 1
FileCounter: ds.l 1
FindLen: ds.l 1
NrDisco ds.b 8
ConBinDec: ds.b 12
NrEntry: ds.b 80
Switch: ds.b 80
Path: ds.b 80
Short: ds.b 4
IndexName: ds.b 256
GuideName: ds.b 256
FindText: ds.b 256
AGLine: ds.b 512