;    GOtoISO
;	Marcin (Radmar) Wasilewski
;	(c) 1997 ver 2.21

	incdir sources:include/

	include	intuition/intuition.i
	include intuition/iobsolete.i
	include	libraries/dos.i
	include libraries/gadtools.i
	include exec/exec.i
	include	LVO3.0/exec_lib.i
	include	LVO3.0/intuition_lib.i
	include	LVO3.0/dos_lib.i
	include	LVO3.0/gadtools_lib.i
	include	LVO3.0/graphics_lib.i


		section GOtoISO,code_p

	bsr.w	GetCLIArgs
	move.l	#_dosname,a1
	CALLEXEC OldOpenlibrary
	move.l	d0,_dosbase
kontynuacja
	move.l	#filename_prefs,d1
	move.l	#MODE_OLDFILE,d2
	CALLDOS	Open
	tst.l	d0
	beq.w	MakePrefs
	move.l	d0,d7
	move.l	d0,d1	;file header
	move.l	#ced,d2 ;buffer
	move.l	#80,d3	;odczyt 80 bajtów
	CALLDOS	Read
	move.l	d7,d1
	CALLDOS	Close

	move.l	#args,d1 ;otwieram plik zawierajâcy list	
	move.l	#MODE_OLDFILE,d2
	CALLDOS	Open
	tst.l	d0
	beq.w	error		  ;jesli brak to wypad	
	move.l	d0,file_from

	move.l	#filename_to,d1	;otwieram plik ram:radmar.txt
	move.l	#MODE_NEWFILE,d2 ;do zapisu
	CALLDOS	Open
	tst.l	d0
	beq.w	error		  ;jesli brak to wypad	
	move.l	d0,file_to

	move.l	#260,d0		 ;przydzielam 260 bajtow dla fileinfoblock
	move.l	#0,d1		
	CALLEXEC AllocMem
	tst.l	d0
	beq.w	error
	move.l	d0,info_block

	move.l	#256,d0		;przydzielam 256 na tablice konwersji
	move.l	#0,d1
	CALLEXEC AllocMem
	tst.l	d0
	beq.w	error
	move.l	d0,table
			
	move.l	d0,a0	;generuje tablice ISO > AmigaPL
	sub.l	d0,d0
	move.w	#255,d7
loop1	move.b	d0,(a0)+
	addq.b	#1,d0
	dbra	d7,loop1
	move.l	table,a0 	
;
;	     AmigaPL,ISO	;wprowadzam poprawki
	move.b	#194,161(a0)	;Â
	move.b	#202,198(a0)	;Ê
	move.b	#203,202(a0)	;Ë
	move.b	#206,163(a0)	;Î
	move.b	#207,209(a0)	;Ï
;	move.b	#211,211(a0)	;Ó  - takie samo w obu stand. :)
	move.b	#212,166(a0)	;Ô
	move.b	#218,172(a0)	;Ú
	move.b	#219,175(a0)	;Û
	move.b	#226,177(a0)	;â
	move.b	#234,230(a0)	;ê
	move.b	#235,234(a0)	;ë
	move.b	#238,179(a0)	;î
	move.b	#239,241(a0)	;ï
;	move.b	#243,243(a0)	;ó
	move.b	#244,182(a0)	;ô
	move.b	#250,188(a0)	;ú
	move.b	#251,191(a0)	;û
				; i tabela gotowa
				
	move.l	#args,d1
	move.l	#ACCESS_READ,d2
	CALLDOS	Lock
	move.l	d0,_lock	

	move.l 	info_block,d2	;teraz sprawdzam dlugosc pliku do odczytu
	move.l	_lock,d1	;wskaznik do pliku
	CALLDOS	Examine
	move.l	_lock,d1
	CALLDOS	UnLock

	move.l	info_block,a0	;adres struct. fileinfo
	move.l	124(a0),length  ;dlugosc zbioru w bezpieczne miej.

	move.l	info_block,a1	;teraz juz moge zwolnic pamiec przydzielona
	move.l	#260,d0		;na fileinfo
	CALLEXEC FreeMem

	tst.l	length		;testuje czy plik przypadkiem nie
	beq.w	zero		;ma dîugoôci=0


	move.l	length,d0	;przydzielam pamiec na wczytywany plik
	move.l	#0,d1
	CALLEXEC AllocMem
	tst.l	d0
	beq.w	error
	move.l	d0,info_block	;adres przydzielonej pamieci

	move.l	file_from,d1	;wczytujemy plik
	move.l	info_block,d2
	move.l	length,d3
	CALLDOS	Read
				; teraz konwersja ISO>AmigaPL
	move.l	info_block,a0	; adres danych
	move.l	length,d7	; dlugosc danych
	move.l	table,a1	; adres tabeli
	sub.l	d0,d0
tstjmp
	cmp.l		#$fffe,D7
	bmi.b		loop2_opty
loop2
	move.b	(a0),d0		;kopiuje bajt do rejestru
	move.b	(a1,d0.w),(a0)+	;co tu sie dzieje to zbyt duzo pisania
	subq.l	#1,d7
	beq.b	loop2_end	;jesli licznik=0 to exit
	bra.b	loop2					
	; instrukcji dbra nie uzywalem celowo, gdyz jakis maniak moglby
	;napisac list powyzej 64K. i wtedy wszystko by padlo.
	;jeôli dîugoôê pliku jest poniûej 64K uûywana jest zoptymalizowana
	;wersja pëtli zawierajâca dwie instrukcje mniej.
loop2_opty
	subq.w	#1,d7
loop2_opty_loop
	move.b	(a0),d0		;kopiuje bajt do rejestru
	move.b	(a1,d0.w),(a0)+	;co tu sie dzieje to zbyt duzo pisania
	dbra		d7,loop2_opty_loop
loop2_end
	
	move.l	file_to,d1	;teraz zapisujemy plik
	move.l	info_block,d2
	move.l	length,d3
	CALLDOS Write

	;teraz pozostaje po sobie posprzatac
	; jak ja nie cierpie sprzatac !!!

	move.l	info_block,a1	;zwalniam pamiec bufora
	move.l	length,d0
	CALLEXEC FreeMem
zero				
	move.l	table,a1	;zwalniam pamiec tabeli
	move.l	#256,d0
	CALLEXEC FreeMem

	move.l	file_from,d1	;zamykam zbiory
	CALLDOS	Close
	move.l	file_to,d1
	CALLDOS	Close

	move.l	#ced,d1
	moveq.l	#0,d2
	moveq.l	#0,d3
	CALLDOS	execute

;---------
;From CED
;---------	
;
loop_wait
	move.l	#ced_port,a1	;oczekiwanie aû CED rozpocznie pracë.
	CALLEXEC FindPort
	tst.l	d0
	bne.b	dalej		 	
	move.l	#10,d1
	CALLDOS Delay
	bra.b	loop_wait
dalej
	move.l	#ced_port,a1	;oczekiwanie aû CED zakoïczy pracë.
	CALLEXEC FindPort
	tst.l	d0
	beq.b	dalej2
	move.l	#10,d1
	CALLDOS Delay
	bra.b	dalej

dalej2	move.l	#args,d1 ;otwieram plik t:newletter.yam	
	move.l	#MODE_NEWFILE,d2 ;do zapisu
	CALLDOS	Open
	tst.l	d0
	beq.w	error		  ;jesli brak to wypad	
	move.l	d0,file_from

	move.l	#filename_to,d1	;otwieram plik ram:radmar.txt
	move.l	#MODE_oldFILE,d2
	CALLDOS	Open
	tst.l	d0
	beq.w	error		  ;jesli brak to wypad	
	move.l	d0,file_to

	move.l	#260,d0		 ;przydzielam 260 bajtow dla fileinfoblock
	move.l	#0,d1		
	CALLEXEC AllocMem
	tst.l	d0
	beq.w	error
	move.l	d0,info_block

	move.l	#256,d0		;przydzielam 256 na tablice konwersji
	move.l	#0,d1
	CALLEXEC AllocMem
	tst.l	d0
	beq.w	error
	move.l	d0,table
			
	move.l	d0,a0	;generuje tablice AmigaPL > ISO
	sub.l	d0,d0
	move.w	#255,d7
_loop1	move.b	d0,(a0)+
	addq.b	#1,d0
	dbra	d7,_loop1
	move.l	table,a0 	
;
;	         ISO,AmigaPL	;wprowadzam poprawki
	move.b	#161,194(a0)	;Â
	move.b	#198,202(a0)	;Ê
	move.b	#202,203(a0)	;Ë
	move.b	#163,206(a0)	;Î
	move.b	#209,207(a0)	;Ï
;	move.b	#211,211(a0)	;Ó  - takie samo w obu stand. :)
	move.b	#166,212(a0)	;Ô
	move.b	#172,218(a0)	;Ú
	move.b	#175,219(a0)	;Û
	move.b	#177,226(a0)	;â
	move.b	#230,234(a0)	;ê
	move.b	#234,235(a0)	;ë
	move.b	#179,238(a0)	;î
	move.b	#241,239(a0)	;ï
;	move.b	#243,243(a0)	;ó
	move.b	#182,244(a0)	;ô
	move.b	#188,250(a0)	;ú
	move.b	#191,251(a0)	;û
				; i tabela gotowa
				
	move.l	#filename_to,d1
	move.l	#ACCESS_READ,d2
	CALLDOS	Lock
	move.l	d0,_lock	

	move.l 	info_block,d2	;teraz sprawdzam dlugosc pliku do odczytu
	move.l	_lock,d1	;wskaznik do pliku
	CALLDOS	Examine

	move.l	_lock,d1
	CALLDOS	UnLock

	move.l	info_block,a0	;adres struct. fileinfo
	move.l	124(a0),length  ;dlugosc zbioru w bezpieczne miej.
		
	move.l	info_block,a1	;teraz juz moge zwolnic pamiec przydzielona
	move.l	#260,d0		;na fileinfo
	CALLEXEC FreeMem

	tst.l	length		;testuje czy plik przypadkiem nie
	beq.w	zero_2		;ma dîugoôci=0

	
	move.l	length,d0	;przydzielam pamiec na wczytywany plik
	move.l	#0,d1
	CALLEXEC AllocMem
	tst.l	d0
	beq.w	error
	move.l	d0,info_block	;adres przydzielonej pamieci

	move.l	file_to,d1	;wczytujemy plik
	move.l	info_block,d2
	move.l	length,d3
	CALLDOS	Read
				; teraz konwersja ISO>AmigaPL
	move.l	info_block,a0	; adres danych
	move.l	length,d7	; dlugosc danych
	move.l	table,a1	; adres tabeli
	sub.l	d0,d0
	cmp.l		#$fffe,D7
	bmi.b		_loop2_opty

_loop2
	move.b	(a0),d0		;kopiuje bajt do rejestru
	move.b	(a1,d0.w),(a0)+	;co tu sie dzieje to zbyt duzo pisania
	subq.l	#1,d7
	beq.b	_loop2_end	;jesli licznik=0 to exit
	bra.b	_loop2					

_loop2_opty
	subq.w	#1,d7
_loop2_opty_loop
	move.b	(a0),d0		;kopiuje bajt do rejestru
	move.b	(a1,d0.w),(a0)+	;co tu sie dzieje to zbyt duzo pisania
	dbra		d7,_loop2_opty_loop
_loop2_end
	; instrukcji dbra nie uzywalem celowo, gdyz jakis maniak moglby
	;napisac list powyzej 64K. i wtedy wszystko by padlo.
	
	move.l	file_from,d1	;teraz zapisujemy plik
	move.l	info_block,d2
	move.l	length,d3
	CALLDOS Write

	;teraz pozostaje po sobie posprzatac
	; jak ja nie cierpie sprzatac !!!

	move.l	info_block,a1	;zwalniam pamiec bufora
	move.l	length,d0
	CALLEXEC FreeMem
				
	move.l	table,a1	;zwalniam pamiec tabeli
	move.l	#256,d0
	CALLEXEC FreeMem
zero_2
	move.l	file_from,d1	;zamykam zbiory
	CALLDOS	Close
	move.l	file_to,d1
	CALLDOS	Close

	move.l	#filename_to,d1
	CALLDOS DeleteFile

	move.l	_dosbase,a1	;zamykam biblioteke dos.costam :)
	CALLEXEC CloseLibrary

	moveq	#0,d0	;i na konic spadam, chyba wszystko pozamykalem
	rts		; jesli nie to sorry.

error	moveq.l	#1,d0
	rts
MakePrefs
	move.l	#_intuitionname,a1
	CALLEXEC OldOpenLibrary
	move.l	d0,_intuitionbase

	move.l	#_graphicsname,a1
	CALLEXEC OldOpenLibrary
	move.l	d0,_graphicsbase

	move.l	#_gadtoolsname,a1
	CALLEXEC OldOpenLibrary
	tst.l	d0
	beq.b	error
	move.l	d0,_gadtoolsbase
;
	CALLINT WBenchToFront

	sub.l	d0,d0
	move.l	d0,a0
	move.l	#Okno_prefs_taglist,a1
	CALLINT	OpenWindowTagList
	tst.l	d0
	beq.b	error
	move.l	d0,win
	move.l	d0,a0
	move.l	50(a0),win_rp 	;adres struct. RastPort
	move.l	86(a0),win_userport	;adres struct. UserPort
	move.l	46(a0),a0		;adres struct. screen
;--------
	CALLGT GetVisualInfoA
	move.l	d0,win_vi
	move.l	d0,box_vi_ICONDROP+4
	move.l	d0,box_vi_BUTTON+4
	move.l	d0,box_vi_RIDGE+4
;--------
	move.l	#gt1,a0
	move.l	win_vi,a1
	bsr.w	InitGadgets_GT
	move.l	d0,win_gadget

	move.l	win,a0
	move.l	win_gadget,a1
	moveq.l	#0,d0
	moveq.l	#2,d1	;iloôê gadgetów do dodania
	move.l	d0,a2
	CALLINT AddGList

	move.l	win_gadget,a0	;gadget
	move.l	win,a1	;window
	move.l	#0,a2	;requester
	CALLINT RefreshGadgets

	move.l	win_rp,a0
	move.l	#ramka,a1
	bsr.w	DrawBox_GT

	move.l	#teksty,a5
	bsr.w	WriteTexts

win_idcmp
	move.l	win_userport,d6
	move.l	d6,a0
	CALLEXEC WaitPort
	move.l	d6,a0
	CALLEXEC GetMsg
	move.l	d0,d5	;wskaúnik na komunikat do D5

	move.l	d0,a0
	cmp.l	#IDCMP_GADGETUP,20(A0)
	beq.b	strikeGadget
win_idcmp_replay
	move.l	d5,a1
	CALLEXEC ReplyMsg
win_idcmp2
	move.l	d6,a0
	CALLEXEC GetMsg
	tst.l	d0
	beq.b	win_idcmp
	move.l	d0,a1
	CALLEXEC ReplyMsg
	bra.b	win_idcmp2
StrikeGadget
	move.l	28(a0),a0	;adres struct. gadget
	move.w	38(a0),d0	;kop. pole GadgetID do D0
	cmp.w	#1,d0
	beq.b	koniec
	bra.b	win_idcmp_replay
Koniec
	move.l	d5,a1
	CALLEXEC ReplyMsg
Koniec2
	move.l	d6,a0
	CALLEXEC GetMsg
	tst.l	d0
	beq.b	Koniec3
	move.l	d0,a1
	CALLEXEC ReplyMsg
	bra.b	Koniec2
Koniec3
	bsr.b	TestString
	cmp.b	#1,d0
	beq.w	win_idcmp
	move.b	d0,d7
	move.l	win,a0
	CALLINT CloseWindow
	move.l	win_gadget,a0
	CALLGT	FreeGadgets
	move.l	win_vi,a0
	CALLGT	FreeVisualInfo
	cmp.b	#2,d7
	beq.w	TotalEnd
	CALLINT WBenchTOBack

	move.l	_intuitionbase,a1
	CALLEXEC CloseLibrary
	move.l	_graphicsbase,a1
	CALLEXEC CloseLibrary
	move.l	_gadtoolsbase,a1
	CALLEXEC CloseLibrary

	bra.w	Kontynuacja

;-----------
TestString
;-----------
	move.l	Win_gadget,a0	;adres pierwszego gadgetu
	move.l	(a0),a0		;adres drugiego gadgetu
	move.l	a0,win_gadget2
	move.l	34(a0),a1	;adres strukt. SpecialInfo
	move.l	(a1),name_string;poczâtek ciagu zaw. sciezke

	move.l	win_gadget2,a0	;blokada string gadgetu
	move.l	win,a1
	movea.l	#0,a2
	CALLINT OffGadget

	move.l	name_string,d1	;test czy podana sciezka jest poprawna
	move.l	#MODE_OLDFILE,d2
	CALLDOS Open
	tst.l	d0
	beq.b	TestString_Error ;jesli zla sciezka dostepu to skocz
	move.l	d0,d1
	CALLDOS	Close

	move.l	#filename_prefs,d1
	move.l	#MODE_NEWFILE,d2
	CALLDOS Open
	tst.l	d0
	beq.b	TestString_error
	move.l	d0,d7	;wskaúnik BCPL do D7
	bsr.b	GetLenght		
	subq.l	#1,d0
	move.l	d7,d1		;wskaúnik BCPL
	move.l	name_string,d2	;wskaúnik na bufor
	move.l	d0,d3		;dîugoôê danych do zapisu
	CALLDOS Write
	move.l	d7,d1
	CALLDOS Close
	sub.l	d0,d0
	rts
TestString_error	
	move.l	win,a0
	move.l	#req_body,a1
	move.l	#req_yes,a2
	move.l	#req_no,a3
	moveq.l	#0,d0
	moveq.l	#0,d1
	move.w	#400,d3	
	move.w	#50,d4
	CALLINT AutoRequest
	cmp.b	#1,d0
	beq.b	TestString_again
	moveq.l	#2,d0
	rts
TestString_again
	move.l	win_gadget2,a0	;blokada string gadgetu
	move.l	win,a1		
	movea.l	#0,a2
	CALLINT OnGadget
	moveq.l	#1,d0	
	rts

GetLenght
	sub.l	d0,d0
	move.l	name_string,a0
GetLenght_loop
	addq.w	#1,d0
	move.b	(a0)+,d1
	tst.b	d1
	beq.b	GetLenght_end
	bra.b	GetLenght_loop
GetLenght_end
	rts		

;---------
TotalEnd
;---------	
	rts
	

	
;-----------
Print
;-----------
	movem.l	d2/a0,-(sp)
	move.l	Win_RP,a4
	move.l	a4,a1
	CALLGFX Move
	movem.l	(sp)+,d0/a0
	move.l	a4,a1
	CALLGFX Text
	rts
;-----------
WriteTexts
;-----------
	movem.l	d0-a4,-(sp)
init_text_loop
	move.w	(a5)+,d0
	tst.w	d0
	bmi.b	init_text_end
	cmp.w	#$7fff,d0
	beq.b	WriteTexts_pen
	cmp.w	#$7ffe,d0
	beq.b	WriteTexts_tryb
	move.w	(a5)+,d1
	move.w	(a5)+,d2
	move.l	(a5)+,a0
	bsr.w	print
	bra.b	init_text_loop
init_text_end
	movem.l	(sp)+,d0-a4
	rts
WriteTexts_pen
	move.l	Win_RP,a1
	sub.l	d0,d0
	move.w	(a5)+,d0
	move.l	a5,-(sp)
	CALLGFX SetAPen
	move.l	(sp)+,a5
	bra.b	init_text_loop
WriteTexts_tryb
	move.l	Win_RP,a1
	sub.l	d0,d0
	move.w	(a5)+,d0	
	move.l	a5,-(sp)
	CALLGFX SetDrMd
	move.l	(sp)+,a5
	bra.b	init_text_loop

		
;-----------
DrawBox_GT
;-----------
;		a0.l - RPort
;		a1.l - struct. Boxes
;
;	struktura Boxes:
;
;	0.w	left	-+
;	2.w	top	 |	wystëpuje X razy
;	4.w	width	 |
;	6.w	height  -+
;
;	dc.w	$ffff	- na koncu struktury
;---------------------------------------------------
;	dc.w	$fffe
;	dc.l	PointerNaTagList
;	- wskaznik na liste tagow ta sama lista tagow jest uzywana do
;	rysowania nastepnych ramek, az do czasu powtorzenia tego parametru
;	ze wskazaniem na innâ taglist-ë

	move.l	a0,d7	;RP kopiuje w bezpieczne miejsce
	move.l	a1,a5	;wskaznik na strukturë
	clr.l	d6	;tu bëdzie wskaznik na tag-listë
	move.l	_GadToolsBase,a6
DrawBOX_GT_loop
	move.w	(a5)+,d0
	cmp.w	#$ffff,d0
	beq.b	DrawBox_gt_end
	cmp.w	#$fffe,d0
	beq.b	DrawBox_gt_tags
	move.w	(a5)+,d1
	move.w	(a5)+,d2
	move.w	(a5)+,d3
	move.l	d6,a1		;wsk. na tagi
	move.l	d7,a0		;wsk. na RP
	jsr	_LVODrawBevelBoxA(a6)
	bra.b	DrawBox_GT_loop
DrawBox_GT_end
	rts
DrawBox_GT_tags
	move.l	(a5)+,d6
	bra.b	DrawBox_GT_loop

box_vi_ICONDROP
	dc.l	GT_VisualInfo,0
	dc.l	GTBB_FrameType,BBFT_ICONDROPBOX
	dc.l	-1,-1
box_vi_BUTTON
	dc.l	GT_VisualInfo,0
	dc.l	GTBB_FrameType,BBFT_BUTTON
	dc.l	-1,-1
box_vi_RIDGE
	dc.l	GT_VisualInfo,0
	dc.l	GTBB_FrameType,BBFT_RIDGE
	dc.l	-1,-1


;-------------
InitGadgets_GT
;-------------
;	Aby koûystaê z tej procedury wystarczy dodaê 3 pola (przed strukturâ)
;	1-wsze. - zawierajace wskaznik na nastepna strukture NewGadget
;	, ktora musi takze zawierac dodatkowe 3 pola na poczâtku struktury
;	wskazujâce na nastëpne pole. W ostatniej strukturze NewGadget to
;	dodatkowe pole wypelniamy wartosciâ =0.
;	2-gie. - o dlugoôci longword zawierajace wartosc KIND (rodzaj gadgetu).
;	3-cie. - wskaznik na tag-list (jesli kilka gadgetow posiada taki sam
;	taglist - to wystarczy stworzyê jeden i ustawiê w kilku strukt.
;	NewGadget podajâc w nich wskaúnik na ten wspólny taglist.
;	A0.l	wskaúnik na pierwszâ strukturë NewGadget (poszerzonâ o 3 pola
;		ze wskaúnikiem na nast. strukturë).
;	A1.l	wskaúnik na strukture VisualInfo.
;
;	uwaga: nie potrzeba wypeîniaê pola gng_VisualInfo w strukturze
;		NewGadget. Pola te zainicjuje ta procedura. Wystarczy podaê
;		wskaúnik na tâ strukt. w rej. A1 przy wejôciu do tej procedury.
;
;	wyjôcie: D0.l	- wskaúnik na pierwszy gadget

	move.l	a1,d7	;kopiuje adres VisualInfo w bezpieczne miejsce.
	move.l	a0,a5	;kopiuje adres struktury NewGadget w bezpieczne miejsce
	move.l	#InitGadgets_GT_previous,d6 ;tu bëdzie przech. pole
					    ;ost. struktury gadget

InitGadgets_GT_loop
	move.l	4(a5),d0 ;kopiuje pole KIND
	move.l	d6,a0	 ;kopiuje adres ostatniej strukt. gadget
	move.l	a5,a1	 ;adres strukt. NewGadget
	adda.l	#12,a1	 ;pomijam dodatkowe pola
	move.l	8(a5),a2 ;wskaúnik na TAG-listë
	move.l	d7,34(a5);kopiuje VisualInfo do struktury
	CALLGT	CreateGadgetA
	tst.l	d0	 ;testuje wynik dziaîania
	beq.b	InitGadgets_GT_error ;jeôli =0 to bîâd
	move.l	d0,d6	;adres ostatnij zainicjowanej strukt. gadget
	move.l	(a5),d0	;adres nastëpnej struktury NewGadget
	beq.b	InitGadgets_GT_end ;jeôli =0 to wyjdú
	move.l	(a5),a5	;wpisujemy adres nast. struktury NewGadget
	bra.b	InitGadgets_GT_loop

InitGadgets_GT_end
	move.l	InitGadgets_GT_previous,d0
		;pole pierwszej zainicjowanej struktury gadget
	rts
InitGadgets_GT_error
	move.l	a5,a0	;adres struktury NewGadget
	rts
InitGadgets_GT_previous
	dc.l	0

;--------------
GetCLIArgs
;--------------
	cmp.b #34,(a0)
	beq.b	GetCLIArgs_conv
GetCLIArgs_cd
	move.l	d0,d1
	subq.l	#1,d1
	move.b	(a0,d1.w),d2
	cmp.b	#10,d2
	beq.b	GetCLIArgs_conv2
	cmp.b	#34,d2
	beq.b	GetCLIArgs_conv2
GetCLIArgs_cd2
	move.b	-1(a0,d1.w),d2
	cmp.b	#34,d2
	beq.b	GetCLIArgs_conv3
GetCLIArgs_cd3
	move.w	d0,CLI_lenght
	move.l	a0,CLI_args

	move.l	#args,a1	;bufor na dane
	CALLEXEC CopyMem
	rts
GetCLIArgs_conv
	adda.l	#1,a0
	subq.l	#1,d0
	bra.b	GetCLIArgs_cd	
GetCLIArgs_conv2
	move.b	#0,(a0,d1.w)
	bra.b	GetCLIArgs_cd2
GetCLIArgs_conv3
	move.b	#0,-1(a0,d1.w)
	bra.b	GetCLIArgs_cd3



	section dane,data_p

_dosbase	dc.l	0
_intuitionbase	dc.l	0	
_gadtoolsbase	dc.l	0
_gfxbase
_graphicsbase	dc.l	0

file_from	dc.l	0
file_to		dc.l	0
file_prefs	dc.l	0
info_block	dc.l	0
table		dc.l	0
length		dc.l	0
_lock		dc.l	0

win		dc.l	0
win_vi		dc.l	0
win_rp		dc.l	0
win_userport	dc.l	0
win_gadget	dc.l	0
win_gadget2	dc.l	0
name_string	dc.l	0

CLI_args	dc.l	0
CLI_lenght	dc.w	0

Okno_prefs_taglist
	dc.l	WA_left,130
	dc.l	WA_Top,100
	dc.l	WA_Width,300
	dc.l	WA_Height,130
	dc.l	WA_Title,GOtoISO_txt
	dc.l	WA_IDCMP,IDCMP_GADGETUP
	dc.l	WA_DragBar,1
	dc.l	WA_CloseGadget,1
	dc.l	WA_DepthGadget,1
	dc.l	-1,-1

ramka
	dc.w	$fffe
	dc.l	box_vi_icondrop
	dc.w	8,14,284,64
	dc.w	$ffff

gt1	dc.l	gt2		;next NewGadget -+
	dc.l	BUTTON_KIND	;rodzaj (KIND)   +- dodatkowe pola
	dc.l	0;gt1_tags	;tag-list       -+
	dc.w	130,80+30		;posycja
	dc.w	40,15			;dî./wys.
	dc.l	OK_txt			;nazwa gadgetu
	dc.l	TopazTextAttr		;TextAttr
	dc.w	$1			;gadget ID
	dc.l	PLACETEXT_IN		;flags
	dc.l	0			;VisualInfo
	dc.l	0			;UserData
gt2	dc.l	0		;next NewGadget -+
	dc.l	STRING_KIND	;rodzaj (KIND)   +- dodatkowe pola
	dc.l	0;gt1_tags	;tag-list       -+
	dc.w	10,63+30		;posycja
	dc.w	280,15			;dî./wys.
	dc.l	podaj_txt			;nazwa gadgetu
	dc.l	TopazTextAttr		;TextAttr
	dc.w	$2			;gadget ID
	dc.l	PLACETEXT_ABOVE		;flags
	dc.l	0			;VisualInfo
	dc.l	0			;UserData
;gt1_tags
;	dc.l	GTCB_Checked,1
;	dc.l	-1,-1	

TopazTextAttr
	dc.l	topaz_txt
	dc.w	8
	dc.b	0,FPF_ROMFONT
teksty
	dc.w	55,27,24
	dc.l	line1
	dc.w	55,37,24
	dc.l	line2
	dc.w	55,47,24
	dc.l	line3
	dc.w	55,57,24
	dc.l	line4
	dc.w	55,67,11
	dc.l	line5
	dc.w	-1
req_body
	dc.b	1,0,0,0
	dc.w	12,12	;left,top
	dc.l	TopazTextAttr
	dc.l	requester_BodyText
	dc.l	r_it2
r_it2	dc.b	1,0,0,0
	dc.w	50,28
	dc.l	TopazTextAttr
	dc.l	requester_bodytext2
	dc.l	0
req_yes
	dc.b	1,0,0,0
	dc.w	2,0
	dc.l	topaztextattr
	dc.l	requester_yestext
	dc.l	0
req_no
	dc.b	1,0,0,0
	dc.w	2,0
	dc.l	topaztextattr
	dc.l	requester_notext
	dc.l	0
_dosname	dc.b	"dos.library",0
_intuitionname	dc.b	"intuition.library",0
_gadtoolsname	dc.b	"gadtools.library",0
_graphicsname	dc.b	"graphics.library",0
			dc.b	"$VER: "
GOtoISO_txt	dc.b	"GOtoISO v2.21, RADMAR (c) '97",0
topaz_txt	dc.b	"topaz.font",0
OK_txt		dc.b	"OK.",0
podaj_txt	dc.b	"Podaj ôciûkë dostëpu do CED-a",0
line1		dc.b	"Nie mogë otworzyê pliku:"
line2		dc.b	"    S:GOtoISO.prefs     "
line3		dc.b	"Podaj ôcieûkë dostëpu do"
line4		dc.b	"CED-a, w celu utworzenia"
line5		dc.b	"tego pliku." 
requester_bodytext
		dc.b	"Ôcieûka dostepu do CED-a jest nieprawidîowa.",0
requester_bodytext2
		dc.b	"Czy Chcesz spróbowaê jeszcze raz?",0
requester_yestext
		dc.b	"Tak  :-)",0
requester_notext
		dc.b	"Nie  8^(",0
filename_prefs	dc.b	"s:GOtoISO.prefs",0


	section	2,data_p
	
ced		blk.b	80," "
filename_to	dc.b	"ram:radmar.convert",0
ced_port	dc.b	"ced_port",0
		blk.b	20,0


	section	3,bss_p	

args		ds.b	256				
