Exec		=4
OldOpenLib	=-408
CloseLibrary	=-414
OpenScreen	=-198
CloseScreen	=-66
OpenWindow	=-204
CloseWindow	=-72
AutoRequest	=-348
WaitPort	=-384
GetMsg		=-372
ReplyMsg	=-378
Text		=-60
Move		=-240
SetAPen		=-342
OpenDiskFont	=-30
OpenFont	=-72
SetFont		=-66
SetSoftStyle	=-90
CloseFont	=-78
PrintIText	=-216

		movem.l	D0-D7/A0-A6,-(sp)	;Store all registers

		lea	IntuiName(pc),a1
		move.l	[Exec].w,a6
		jsr	OldOpenLib(a6)		;Open intuition.library
		lea	IntuiBase(pc),a0
		move.l	d0,(a0)
		beq	End

		lea	DiskFontName(pc),a1
		move.l	[Exec].w,a6
		jsr	OldOpenLib(a6)		;Open diskfont.library
		lea	DiskFontBase(pc),a0
		move.l	d0,(a0)
		beq	CloseIntui

		lea	GraphName(pc),a1
		move.l	[Exec].w,a6
		jsr	OldOpenLib(a6)		;Open graphics.library
		lea	GraphBase(pc),a0
		move.l	d0,(a0)
		beq	CloseDiskFont

		lea	NewScreen(pc),a0
		lea	ScrTitle(pc),a1
		move.l	a1,$14(a0)
		move.l	IntuiBase(pc),a6
		jsr	OpenScreen(a6)		;Open screen
		lea	ScreenHandle(pc),a0
		move.l	d0,(a0)
		beq	CloseGraph

		lea	NewWindow(pc),a0
		lea	WndTitle(pc),a1
		move.l	a1,$1a(a0)
		lea	ScreenHandle(pc),a1
		move.l	(a1),$1e(a0)
		move.l	IntuiBase(pc),a6
		jsr	OpenWindow(a6)		;Open window
		lea	WindowHandle(pc),a0
		move.l	d0,(a0)
		beq	CloseGraph

		lea	DiamondFont(pc),a0	;textAttr
		lea	Diam20(pc),a1
		move.l	a1,(a0)
		move.l	DiskFontBase(pc),a6
		jsr	OpenDiskFont(a6)	;Open font from disk
		lea	DiamBase(pc),a0
		move.l	d0,(a0)
		beq	CloseWnd

		move.l	WindowHandle(pc),a1
		move.l	$32(a1),a1		;RastPort in a1
		move.l	DiamBase(pc),a0
		move.l	GraphBase(pc),a6
		jsr	SetFont(a6)		;Now text in diamond.font

		move.l	WindowHandle(pc),a1
		move.l	$32(a1),a1
		moveq	#5,d0			;Underlined Italic
		move.l	#$ff,d1			;Maska przyzwolenia
		move.l	GraphBase(pc),a6
		jsr	SetSoftStyle(a6)	;Set style (under_italic)

		move.l	WindowHandle(pc),a1
		move.l	$32(a1),a1
		moveq	#$1,d0			;Colour in d0
		move.l	GraphBase(pc),a6
		jsr	SetAPen(a6)		;Set colour of pen

		move.l	WindowHandle(pc),a1
		move.l	$32(a1),a1
		moveq	#35,d0			;Pos_X
		moveq	#45,d1			;Pos_Y
		move.l	GraphBase(pc),a6
		jsr	Move(a6)		;Move cursor

		move.l	WindowHandle(pc),a1
		move.l	$32(a1),a1
		lea	MyText(pc),a0
		moveq	#EndText-MyText,d0	;Length of text
		move.l	GraphBase(pc),a6
		jsr	Text(a6)		;Print text

		move.l	WindowHandle(pc),a1
		move.l	$32(a1),a1
		moveq	#0,d0			;Normal
		move.l	#$ff,d1
		move.l	GraphBase(pc),a6
		jsr	SetSoftStyle(a6)	;Set style (normal)

		move.l	WindowHandle(pc),a1
		move.l	$32(a1),a0
		lea	IntuiText(pc),a1
		lea	IText(pc),a2
		move.l	a2,$c(a1)
		moveq	#0,d0			;Pos_X in IText-Structure
		moveq	#0,d1			;Pos_X in IText-Structure
		move.l	IntuiBase(pc),a6	;Print text
		jsr	PrintIText(a6)

		move.l	DiamBase(pc),a0
		move.l	GraphBase(pc),a6
		jsr	CloseFont(a6)		;Close diamond.font

WaitMessage:	move.l	[Exec].w,a6
		move.l	WindowHandle(pc),a0
		move.l	$56(a0),a0		;UserPort in a0
		jsr	WaitPort(a6)

GetMessage:	move.l	WindowHandle(pc),a0
		move.l	$56(a0),a0		;UserPort in a0
		move.l	[Exec].w,a6
		jsr	GetMsg(a6)
		move.l	d0,a1			;To use for ReplyMsg
		beq.b	WaitMessage
		move.l	20(a1),-(sp)

		move.l	[Exec].w,a6
		jsr	ReplyMsg(a6)
		move.l	(sp)+,d6		;Restore Class

		cmp.l	#$200,d6		;Close window?
		beq.b	CloseWnd
		cmp.l	#$10000,d6		;Disk removed?
		beq.b	PlsInsertReq

		bra.b	WaitMessage

PlsInsertReq:	lea	MainText(pc),a1
		lea	MText(pc),a0
		move.l	a0,$c(a1)
		lea	MainText2(pc),a0
		lea	MText2(pc),a2
		move.l	a2,$c(a0)
		move.l	a0,$10(a1)
		lea	LeftText(pc),a2
		lea	LText(pc),a0
		move.l	a0,$c(a2)
		lea	RightText(pc),a3
		lea	RText(pc),a0
		move.l	a0,$c(a3)
		moveq	#$0,d0			;IDCMP for left
		move.l	#$8000,d1		;IDCMP for right
		move.w	#300,d2			;Width
		moveq	#70,d3			;Hight
		move.l	WindowHandle(pc),a0
		move.l	IntuiBase(pc),a6
		jsr	AutoRequest(a6)
		beq	WaitMessage		;d0=0 -> RightGadget
		bra.b	PlsInsertReq


CloseWnd:	move.l	WindowHandle(pc),a0
		move.l	IntuiBase(pc),a6
		jsr	CloseWindow(a6)

ScrClose:	move.l	ScreenHandle(pc),a0
		move.l	IntuiBase(pc),a6
		jsr	CloseScreen(a6)

CloseGraph:	move.l	GraphBase(pc),a1
		move.l	[Exec].w,a6
		jsr	CloseLibrary(a6)

CloseDiskFont:	move.l	DiskFontBase(pc),a1
		move.l	[Exec].w,a6
		jsr	CloseLibrary(a6)

CloseIntui:	move.l	IntuiBase(pc),a1
		move.l	[Exec].w,a6
		jsr	CloseLibrary(a6)

End:		movem.l	(sp)+,D0-D7/A0-A6	;Restore all registers
		rts

IntuiName:	dc.b	"intuition.library",0
GraphName:	dc.b	"graphics.library",0
DiskFontName:	dc.b	"diskfont.library",0
		even

IntuiBase:	dc.l	0
GraphBase:	dc.l	0
DiskFontBase:	dc.l	0
DiamBase:	dc.l	0
ScreenHandle:	dc.l	0
WindowHandle:	dc.l	0

NewScreen:	dc.w	0,0,640,256,2
		dc.b	0,1
		dc.w	$8000,15
		dc.l	0,0,0,0

ScrTitle:	dc.b	"Nasz Ekranik",0
		even

NewWindow:	dc.w	50	;LeftEdge
		dc.w	25	;TopEdge
		dc.w	540	;Width
		dc.w	100	;Height
		dc.b	0	;DetailPen
		dc.b	1	;BlockPen
		dc.l	$10200	;IDCMPFlags
		dc.l	$100e	;Flags
		dc.l	0	;FirstGadget
		dc.l	0	;CheckMark
		dc.l	0	;Title
		dc.l	0	;Screen
		dc.l	0	;BitMap
		dc.w	200	;MinWidth
		dc.w	35	;MinHeight
		dc.w	640	;MaxWidth
		dc.w	200	;MaxHeight
		dc.w	15	;Type

WndTitle:	dc.b	"Nasze Okienko (istne cudo)!",0
		even

MainText:	dc.b	0	;DetailPen
		dc.b	1	;BlockPen
		dc.b	0	;TextStyle
		even
		dc.w	45	;PosX
		dc.w	14	;PosY
		dc.l	0	;Fonts
		dc.l	0	;Text
		dc.l	0	;NextText

MText:		dc.b	"Nie wyciagaj DYSKIETKI",0
		even

MainText2:	dc.b	0,1,0
		even
		dc.w	84,24
		dc.l	0,0,0

MText2:		dc.b	"ze stacji DF0:",0
		even

LeftText:	dc.b	0,1,0
		even
		dc.w	5,3
		dc.l	0,0,0

LText:		dc.b	"No masz",0
		even

RightText:	dc.b	0,1,0
		even
		dc.w	5,3
		dc.l	0,0,0

RText:		dc.b	"Cicho!",0
		even

IntuiText:	dc.b	2,0,0
		even
		dc.w	70,60
		dc.l	0,0,0

IText:		dc.b	"Napisane za pomoca funkcji PrintIText...",0
		even

MyText:		dc.b	"Teraz piszemy diamond'ami/20.    He,he,he..."
EndText:
		even

DiamondFont:	dc.l	0
		dc.w	20
		dc.b	0
		dc.b	2

Diam20:		dc.b	"diamond.font",0
		even
