PR#3
PREFIX /A2OSX.SRC
NEW
INC 1
AUTO 6
				.LIST OFF
				.OP	65C02
				.OR	$2000
				.TF /A2OSX.BOOT/SBIN/DESKTOP
*--------------------------------------
				.INB INC/IO.I
				.INB INC/MACROS.I
				.INB INC/A2OSX.I
				.INB INC/LIBGFX.I
*--------------------------------------
*			File Header (16 Bytes)
*--------------------------------------
CS.START		cld
				jmp (.1,x)
				.DA #$61				6502,Level 1 (65c02)
				.DA #1					BIN Layout Version 1
				.DA 0
				.DA CS.END-CS.START
				.DA 0
				.DA 0
				.DA 0
*--------------------------------------
* Relocation Table
*--------------------------------------
.1				.DA CS.INIT
				.DA CS.RUN
				.DA CS.DOEVENT
				.DA	CS.QUIT
L.LIBGFX		.DA LIBGFX
L.DEVNAME.GFX	.DA DEVNAME.GFX
L.DEVNAME.MOUSE	.DA DEVNAME.MOUSE
L.MSG.INIT		.DA MSG.INIT
L.SetPixel.X	.DA SetPixel.X
L.DrawLine.X1	.DA DrawLine.X1
				.DA 0
*--------------------------------------
CS.INIT			>LDYA L.MSG.INIT
				>SYSCALL SYS.PrintFYA

				>LDYA L.LIBGFX
				>SYSCALL SYS.LoadLibYA
				sta hLIBGFX

				>LDYA L.DEVNAME.GFX
				>SYSCALL SYS.GetDevByNameYA
				bcc .10
				rts
				
.10				stx hDevGFX

				ldx pDev
				phx
				ldx pDev+1
				phx

				>STYA GoDevGFX+1
				>STYA pDev

				ldx #DEVMGR.OPEN
				jsr GoDevGFX
				
.11				>LDYA L.DEVNAME.MOUSE
				>SYSCALL SYS.GetDevByNameYA
				bcc .20
				
				inc DEVNAME.MOUSE+4
				lda DEVNAME.MOUSE+4
				cmp #'8'
				bne .11
				beq .21					No mouse found, skip mouse init

.20				stx hDevMouse
				>STYA GoDevMouse+1
				>STYA pDev

				ldx #DEVMGR.OPEN
				jsr GoDevMouse
				
				ldx #DEVMGR.SELECT		Mouse driver disturb graphic mode....
				jsr GoDevGFX

				
.21				pla
				sta pDev+1
				pla
				sta pDev
				
				lda hDevGFX
				>LIBCALL hLibGFX,LIBGFX.InitGFXA
				
				lda (pPs)
				ora #S.PS.F.EVENT		Now accept events
				sta (pPs)

				jsr Destop.Paint
				
				clc	
				rts
*--------------------------------------
CS.RUN			clc
				rts
*--------------------------------------
CS.DOEVENT		lda KBD
				bpl .1
				sta KBDSTROBE
				
				jsr Destop.Paint
				
.1				lda hDevMouse			Mouse is active ?
				beq .99					go check KB
				
				ldy #S.EVT.hDEV
				cmp (pEvent),y			Event coming from Mouse ?
				bne .1

				lda A2osX.ASCREEN		GUI screen active ?
				cmp #3
				bne .98					no, discard mouse event & exit
				
				ldy #S.EVT.DATALO
				lda (pEvent),y
				and #4					mouse move
				beq .98
				
				ldy #S.EVT.DATAW2
				lda (pEvent),y
				sta SetPixel.Y
				
				dey
				lda (pEvent),y			X.HI
				sta SetPixel.X+1

				dey
				lda (pEvent),y			X.LO
				sta SetPixel.X

				lda #4
				sta SetPixel.Mode
				
				lda #15
				sta SetPixel.Color
				
				>LDYA L.SetPixel.X
				ldx #DEVMGR.GFX.SETPIXEL
				jsr GoDevGFX
				
.98				clc
				rts
				
.99				sec
				rts	
*--------------------------------------
CS.QUIT			clc
				rts
*--------------------------------------
Destop.Paint	lda #4
				sta SetPixel.Mode
				
				lda #0
				sta SetPixel.Color
				
				lda #0
				sta SetPixel.Y		

.1				lda #0
				sta SetPixel.X
				lda /0
				sta SetPixel.X+1
				
.2				>LDYA L.SetPixel.X
					
				ldx #DEVMGR.GFX.SETPIXEL
				jsr GoDevGFX
				
				lda SetPixel.X
				clc
				adc #4
				sta SetPixel.X
				bcc .3
				inc SetPixel.X+1
				
.3				lda SetPixel.X
				cmp #279
				lda SetPixel.X+1
				sbc /279
				bcc .2
				
				inc SetPixel.Y
				lda SetPixel.Y
				cmp #192
				beq .8
				and #$7
				bne .1
				
				inc SetPixel.Color
				lda SetPixel.Color
				cmp #16
				bne .1
				
.8				rts				
*--------------------------------------
*--------------------------------------
*--------------------------------------
GoDevGFX		jmp $ffff
GoDevMouse		jmp $ffff
*--------------------------------------
CS.END
DEVNAME.GFX		>PSTRING "GFX"
DEVNAME.MOUSE	>PSTRING "MOU1"
LIBGFX			>PSTRING "libgfx.o"
MSG.INIT		>CSTRING "DESKTOP:Init...\n"
hLibGFX			.BS 1
hDevGFX			.BS 1
hDevMouse		.BS 1
SetPixel.X		.BS 2
SetPixel.Y		.BS 2
SetPixel.Mode	.BS 1
SetPixel.Color	.BS 1
DrawLine.X1		.BS 2
DrawLine.Y1		.BS 2
DrawLine.X2		.BS 2
DrawLine.Y2		.BS 2
DrawLine.Mode	.BS 1
DrawLine.Color	.BS 1
MAN
SAVE SBIN/DESKTOP.S
ASM
