ůúůú                                        ;Request for Greg
;Coded by RTheK/RDST/SCT
;Gdynia 94.12.15
;$VER: 1.02

VERSION:	MACRO
		dc.b	'1.07'
		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
;>---- change title...
changetitle
		lea	LoadTags(pc),a0
		move.l	filereq(pc),a1	;struktóra zaallok prze allocreq.
		lea	Filename,a2	;miejsce na nazwe bloku

		lea	title(pc),a0
		move.l	a0,a3
		tst.b	(a0)
		beq.s	oldtitle
.2		tst.b	(a0)
		beq.s	DoRequest
		cmp.b	#'_',(a0)
		bne.s	.1
		move.b	#' ',(a0)
.1		addq.l	#1,a0
		bra.s	.2
;>---- change title
oldtitle:	lea	LoadTitle(pc),a3 ;text u góry
DoRequest:
		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
		lea	Buffer,a0
		lea	title,a1
		lea	TITLETXT,a3
		bsr	first
		lea	Buffer,a0
		lea	save,a1
		lea	SAVETXT,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	' TITLE=<"_"works as space..>',$a
	dc.b	' SAVE=YES/NO',$a
;	dc.b	' 
	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
TITLETXT:	dc.b	'TITLE',0
SAVETXT:	dc.b	'SAVE',0
Directory:	blk.b	150,0
Pattern:	blk.b	50,0
Filename:	blk.b	60,0
title:		blk.b	20,0
save:		blk.b	5,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
