ùúùú  ÿôe7ÿôe7ÿôe7ÿôe7ÿôe7ÿôe7  æ  
á;RkÓ;Request for Greg
;Coded by RTheK/RDST/SCT
;Gdynia 94.12.15
;$VER: 1.02

VERSION:	MACRO
		dc.b	'1.02'
		ENDM

NULL		equ	0

CLEARD:	MACRO
	moveq	#0,\1
	ENDM
CLEARA:	MACRO
	sub.l	\1,\1
	ENDM
EXEC:	MACRO
	move.l	4.w,a6
	ENDM
CALL:	MACRO
	jsr	_\1(a6)
	ENDM
CALLEXEC:MACRO
	move.l	4.w,a6
	jsr	_\1(a6)
	ENDM
CALLB:	MACRO
	MOVEL	\2
	CALL	\1
	ENDM
JUMP:	MACRO
	jmp	_\1(a6)
	ENDM
MOVEL:	MACRO
	move.l	\1Base(pc),a6
	ENDM
OPENLIBRARY:	MACRO
	CLEARD	d0
	lea	\1Name,a1
	CALLEXEC OpenLibrary
	move.l	d0,\1Base
	beq	Cant_Find_\1
	ENDM
CLOSELIBRARY:	MACRO
	move.l	\1Base(pc),a1
	CALLEXEC CloseLibrary
	ENDM
REQUEST: MACRO
	lea	\1,a1
	lea	\2,a2
	bsr	DoReq
	ENDM
;0 z prawej
OKREQUEST:	MACRO
	lea	\1,a1
	bsr	DoReqOK
	ENDM
WAITBLITTER:	MACRO
	tst.b	2(a5)
.\@WB
	btst	#14,2(a5)
	bne.s	.\@WB
	ENDM


*******************************************************************************
*				  PROGRAM				      *
*******************************************************************************

			SECTION	"ReqRequest",CODE

;		lea	Test,a0
;		move.l	#Test2-Test,d0
;		bra.s	Test3
;Test:
;	dc.b	'Pattern',$a,0
;Test2:
;		EVEN
;Test3:
		tst.l	d0
		beq.w	Exit


		lea	Buffer(pc),a1	;copy texty
		cmp.l	#300,d0
		bmi.s	.1
		move.w	#300,d0
		subq.w	#1,d0
.1		move.b	(a0)+,(a1)+
		dbf	d0,.1


		OPENLIBRARY	Dos

		MOVEL	Dos
		CALL	OutPut
		move.l	d0,OutputHandle	;handle

		cmp.b	#'?',Buffer
		beq.w	WriteInfo

		OPENLIBRARY	ReqTools


;for ReqToolsLoad
		MOVEL	ReqTools

;		moveq	#RT_REQINFO,d0
;		CLEARA	a0
;		CALL	rtAllocRequestA
;		move.l	d0,reqinfo
;		beq.w	nomem

		bsr	FindDirectory

		moveq	#RT_FILEREQ,d0
		CLEARA	a0
		CALL	rtAllocRequestA
		move.l	d0,filereq
		beq.w	nomem

;CHANGE DIR reqtools
		move.l	d0,a1		;file req
		lea	StartTags(pc),a0
		CALL	rtChangeReqAttrA	;dziaîa

	MOVEL	ReqTools

		lea	LoadTags(pc),a0
		move.l	filereq(pc),a1	;struktóra zaallok prze allocreq.
		lea	Filename,a2	;miejsce na nazwe bloku
		lea	LoadTitle(pc),a3 ;text u góry
		CALL	rtFileRequestA

;		tst.l	d0
;		beq.s	NoFileChosen

;write dos text
		lea	Buffer,a1
		move.l	filereq(pc),a0
		move.l	rtfi_Dir(a0),a0
		tst.b	(a0)		;nodir
		beq.s	.ok
.3		move.b	(a0)+,(a1)+
		bne.s	.3
		subq.l	#1,a1
		cmp.b	#':',-1(a1)
		beq.s	.ok
		cmp.b	#'/',-1(a1)
		beq.s	.ok
		move.b	#'/',(a1)+
.ok
		lea	Filename,a0
		tst.b	(a0)
		beq.s	.nowrite
.2		move.b	(a0)+,(a1)+
		bne.s	.2

		move.b	#$a,(a1)+

		move.l	#Buffer,d2
		move.l	d2,a0
		tst.b	(a0)
		beq.s	.nowrite

		bsr	CountAndWrite


.nowrite
;		bra.s	dd
NoFileChosen:
;		moveq	#55,d0
;.loop		move.w	#$000,$dff180
;.1		cmp.b	#$ff,$dff006
;		bne.s	.1
;.2		cmp.b	#$fe,$dff006
;		bne.s	.2
;		dbf	d0,.loop
;dd
		MOVEL	ReqTools
		move.l	filereq(pc),a1
		jsr	_rtFreeRequest(a6)

;		move.l	reqinfo(pc),a1
;		CALL	rtFreeRequest

nomem
		CLOSELIBRARY	ReqTools

Cant_Find_ReqTools:
Cant_Find_Dos:
Exit:		moveq	#0,d0
		rts

CountAndWrite:	moveq	#0,d3
.count		addq.w	#1,d3	;d£ugosc tekstu
		tst.b	(a0)+
		bne.s	.count
		addq.w	#1,d3
		move.b	#$a,(a0)+
		moveq	#0,d0
		move.b	d0,(a0)+
		move.l	OutputHandle,d1
		move.l	DosBase(pc),a5
		jmp	-48(a5)		;write

FindDirectory:		;search for text
		lea	Buffer,a0
		lea	Directory,a1
		lea	DRAWERTXT,a3
		bsr	first
		lea	Buffer,a0
		lea	Pattern,a1
		lea	PATTERNTXT,a3
		bsr	first
		lea	Buffer,a0
		lea	Filename,a1
		lea	FILETXT,a3
		bsr	first
		rts

compare:	move.b	(a0)+,d0
		beq.s	NoMore
		cmp.b	#' ',d0
		beq.s	compare

		cmp.b	(a2),d0
		bne.s	SkipNext
		addq.l	#1,a2
		tst.b	(a2)
		beq.s	Find
		bra.s	compare
first:
		move.l	a3,a2
		bra.s	compare

SkipNext:
		addq.l	#1,a0
		tst.b	(a0)
		beq.s	NoMore
		cmp.b	#$a,(a0)
		beq.s	NoMore
		cmp.b	#' ',(a0)
		beq.s	first
		bra.s	SkipNext
NoMore:
		rts
Find:		;znalazlem text kopniecie go..
		addq.l	#1,a0
.loop		move.b	(a0)+,d0
		cmp.b	#$a,d0
		beq.s	.end
		tst.b	d0
		beq.s	.end
		cmp.b	#' ',d0
		beq.s	.end
		move.b	d0,(a1)+
		bra.s	.loop
.end
		move.b	#0,(a1)+
		rts

WriteInfo:
		move.l	#InfoTXT,d2
		move.l	d2,a0
		bsr	CountAndWrite
		moveq	#0,d0
		rts

StartTags:	dc.l	RTFI_DIR,Directory
		dc.l	RTFI_MatchPat,Pattern

		dc.l	TAG_END

LoadTags:
		dc.l	RTFI_Flags,FREQF_PATGAD
		dc.l	TAG_END
ReqToolsBase:	dc.l	0
DosBase:	dc.l	0
reqinfo:	dc.l	0
filereq:	dc.l	0
OutputHandle:	dc.l	0
ReqToolsName:	dc.b	'reqtools.library',0
DosName:	dc.b	'dos.library',0
LoadTitle:	dc.b	'Wybierz plik',0
		dc.b	'$VER: '
InfoTXT: dc.b	$a,'ReqTools Requst '
	VERSION
	dc.b	$a,'Written by RTheK/RDST/SCT specialy for Greg',$a
	dc.b	'Its FREEWARE so you can do with it what ever'
	dc.b	' you want.',$a
	dc.b	'Avariable opctions:',$a
	dc.b	' DRAWER=<drawer you want to see>',$a
	dc.b	' PATTERN=<the same>',$a
	dc.b	' FILE=<the same>',$a
	dc.b	'For example:',$a
 dc.b 'ReqToolsRequest DRAWER=dh1:sources PATTERN=(#?) FILE=ReqRequest6.s',$a
	dc.b	'IMPORTANT !!! Change stack size to at least 4096!!!!',$a
	dc.b	'other way its can crash.',$a
	dc.b	'if you want to contact me, try this',$a
	dc.b	'e-mail: rkon1ar9@sunrise.pg.gda.pl',$a
	dc.b	'Gdynia 1994.12.16',0

DRAWERTXT:	dc.b	'DRAWER',0
PATTERNTXT:	dc.b	'PATTERN',0
FILETXT:	dc.b	'FILE',0
Directory:	blk.b	150,0
Pattern:	blk.b	50,0
Filename:	blk.b	60,0

Buffer:		blk.b	300,0

			;DOS INCLUDE
_OutPut:	equ	-60

_CurrentDir:	equ	-126
_Open:	equ	-30
_Close:	equ	-36
_Read:	equ	-42
_Write:	equ	-48
_Lock:	equ	-84
_UnLock:	equ	-90
_Examine:	equ	-102
OFFSET_END	equ	1
OFFSET_BEGINNING	equ	-1
_Seek	EQU	-66
_Delay	EQU	-198

_OpenLibrary	EQU	-552
_CloseLibrary	EQU	-414

			;REQTOOLS

_rtAllocRequestA		EQU	-30
_rtFreeRequest		EQU	-36
_rtFreeReqBuffer		EQU	-42
_rtFileRequestA		EQU	-54
_rtEZRequestA		EQU	-66
_rtGetStringA		EQU	-72
_rtGetLongA		EQU	-78
_rtFontRequestA		EQU	-96
_rtPaletteRequestA	EQU	-102
_rtScreenToFrontSafely	EQU	-138
_rtSetReqPosition	EQU	-126
_rtLockWindow	equ	-156
_rtUnlockWindow	equ	-162
_rtChangeReqAttrA	EQU	-48
rtfi_Dir	equ	16

RT_FILEREQ		EQU	0
RT_REQINFO		EQU	1
RT_FONTREQ		EQU	2
CALL_HANDLER		EQU	$80000000
RT_TagBase		equ	$80000000
RT_Window		equ	(RT_TagBase+1)
RT_ReqPos		equ	(RT_TagBase+3)
RT_WaitPointer		equ	(RT_TagBase+10)
RT_Underscore		equ	(RT_TagBase+11)
RT_LockWindow		equ	(RT_TagBase+13)
RT_TextAttr		equ	(RT_TagBase+15)
RTEZ_ReqTitle		equ	(RT_TagBase+20)
RTEZ_Flags		equ	(RT_TagBase+22)
RTEZ_DefaultResponse	equ	(RT_TagBase+23)
RTGL_Min		equ	(RT_TagBase+30)
RTGL_Max		equ	(RT_TagBase+31)
RTGL_Width		equ	(RT_TagBase+32)
RTGL_ShowDefault	equ	(RT_TagBase+33)
RTGL_GadFmt 		equ	(RT_TagBase+34)
RTGL_GadFmtArgs		equ	(RT_TagBase+35)
RTGL_Invisible		equ	(RT_TagBase+36)
RTGL_BackFill		equ	(RT_TagBase+37)
RTGL_TextFmt		equ	(RT_TagBase+38)
RTGL_TextFmtArgs	equ	(RT_TagBase+39)
RTFI_DIR		equ	(RT_TagBase+50)
RTFI_MatchPat		equ	(RT_TagBase+51)

RTGL_CenterText		equ	(RT_TagBase+100)
RTGL_Flags		equ	RTEZ_Flags
RTGS_Width		equ	RTGL_Width
RTGS_AllowEmpty		equ	(RT_TagBase+80)
RTGS_GadFmt 		equ	RTGL_GadFmt
RTGS_GadFmtArgs		equ	RTGL_GadFmtArgs
RTGS_Invisible		equ	RTGL_Invisible
RTGS_BackFill		equ	RTGL_BackFill
RTGS_TextFmt		equ	RTGL_TextFmt
RTGS_TextFmtArgs	equ	RTGL_TextFmtArgs
RTGS_CenterText		equ	RTGL_CenterText
RTGS_Flags		equ	RTEZ_Flags
RTFI_Flags		equ	(RT_TagBase+40)
RTFI_Height		equ	(RT_TagBase+41)
RTFI_OkText		equ	(RT_TagBase+42)
RTPA_Color		equ	(RT_TagBase+70)
REQPOS_POINTER		EQU	0
REQPOS_CENTERWIN	EQU	1
REQPOS_CENTERSCR	EQU	2
REQPOS_TOPLEFTWIN	EQU	3
REQPOS_TOPLEFTSCR	EQU	4
REQ_CANCEL		EQU	0
REQ_OK			EQU	1
FREQF_MULTISELECT	EQU	$1
FREQF_SAVE		EQU	$2
FREQF_NOBUFFER		EQU	$4
FREQF_NOFILES		EQU	$8
FREQF_PATGAD		EQU	$10
FREQF_FIXEDWIDTH	EQU	$20
FREQF_COLORFONTS	EQU	$40
FREQF_CHANGEPALETTE	EQU	$80
FREQF_LEAVEPALETTE	EQU	$100
FREQF_SCALE		EQU	$200
FREQF_STYLE		EQU	$400
FREQF_DOWILDFUNC	EQU	$800
FREQF_SELECTDIRS	EQU	$1000
EZREQF_NORETURNKEY	EQU	$1
EZREQF_LAMIGAQUAL	EQU	$2
EZREQF_CENTERTEXT	EQU	$4
REQHOOK_WILDFILE	EQU	0
REQHOOK_WILDFONT	EQU	1
TAG_END			equ	0
