PR#3
PREFIX /A2OSX.SRC
NEW
INC 1
AUTO 6
				.LIST OFF
*--------------------------------------
DevMgr.Count		.EQ 2
DevMgr.SYS.BASL0	.EQ $800
*--------------------------------------
DevMgr.NUL.Code	.DA DevMgr.Unsup	OPEN
				.DA DevMgr.Unsup	GETEVENT
				.DA .8				COUT
				.DA DevMgr.Unsup	CLOSE
				.DA DevMgr.Unsup	GETINFO
				.DA DevMgr.Unsup	IRQ
				.DA DevMgr.Unsup	SELECT
.8				clc
				rts
*--------------------------------------
DevMgr.SYS.Code	.DA DevMgr.SYS.Open
				.DA DevMgr.SYS.GetEvent
				.DA DevMgr.SYS.COut
				.DA DevMgr.Unsup	CLOSE
				.DA DevMgr.Unsup	GETINFO
				.DA DevMgr.Unsup	IRQ
				.DA DevMgr.SYS.Select
*--------------------------------------
DevMgr.Unsup	lda #DEVMGR.ERRUNSUP
				sec
				rts
*--------------------------------------
DevMgr.SYS.Open stz DevMgr.SYS.CPULOADI
				stz DevMgr.SYS.CH
				stz DevMgr.SYS.CV
				
				ldx #0
				
				ldy #0
.1				lda DevMgr.SYS.TITLE,y
				beq .2
				
				jsr DevMgr.SYS.SetCharAtYX
				iny
				bne .1
				
.2				lda #$20
				jsr DevMgr.SYS.SetCharAtYX
				iny
				cpy #80
				bne .2
				
				jsr DevMgr.SYS.Home
				
				lda #1
				sta A2osX.SCRNDEVS+1
				
				jsr DevMgr.SYS.Select
				clc
				rts
*--------------------------------------
DevMgr.SYS.GetEvent
				lda A2osX.ASCREEN
				cmp #2					is SYS active?
				bne .9
				
				ldx DevMgr.SYS.CPULOADI
				lda DevMgr.SYS.CPULOADC,x
				sta DevMgr.SYS.BASL0+38
				dex
				bpl .1
				ldx #3
.1				stx DevMgr.SYS.CPULOADI
				
				lda	OPENAPPLE
				bmi .9					Open apple key, not for us...
				lda KBD
				bpl .9
				sta KBDSTROBE
				
				and #$7F
				
				ldy #S.EVT.DATALO
				sta (pEvent),y
				iny					S.EVT.DATAHI
				lda #0
				sta (pEvent),y
				lda #S.EVT.F.KEY
				sta (pEvent)
				
				clc
				rts
				
.9				lda	#0					Error = no event
				sec
				rts
*--------------------------------------
DevMgr.SYS.COut	phx
				phy
				cmp #' '
				bcc .1
				ldy DevMgr.SYS.CH
				ldx DevMgr.SYS.CV
				ora #$80
				jsr DevMgr.SYS.SetCharAtYX
				jsr DevMgr.SYS.FSOut
				bra .8
				
.1				cmp #10
				bne .2
				jsr DevMgr.SYS.LF
				bra .8
				
.2				cmp #13
				bne .3
				jsr DevMgr.SYS.CROut
				bra .8
				
.3				ora #$20
				jsr DevMgr.SYS.SetCharAtYX
				jsr DevMgr.SYS.FSOut
				
.8				ply
				plx
				clc
				rts
*--------------------------------------
DevMgr.SYS.Select
				sta SETTEXT
				sta SETALTCHAR
				sta SET80DISP
				sta CLR80STORE
				sta SETPAGE2
				clc
				rts
*--------------------------------------
DevMgr.SYS.FSOut
				lda DevMgr.SYS.CH
				cmp #79
				beq DevMgr.SYS.LF1
				inc DevMgr.SYS.CH
				rts
*--------------------------------------
DevMgr.SYS.CROut
				jsr DevMgr.SYS.ClrEOL
				stz DevMgr.SYS.CH
				rts
*--------------------------------------
DevMgr.SYS.LF1	stz DevMgr.SYS.CH
DevMgr.SYS.LF	ldx DevMgr.SYS.CV
				cpx #23
				beq DevMgr.SYS.Scroll
				inc DevMgr.SYS.CV				
				rts
*--------------------------------------
DevMgr.SYS.ClrEOL
				ldx	DevMgr.SYS.CV
				lda #$A0
				ldy DevMgr.SYS.CH
.1				cpy #79
				beq .2
				jsr DevMgr.SYS.SetCharAtYX
				iny
				bne .1
.2				rts
*--------------------------------------
DevMgr.SYS.Scroll
				ldx #1
.1				lda DevMgr.SYS.BASEL,x
				sta ZPDRV
				lda DevMgr.SYS.BASEH,x
				sta ZPDRV+1
				inx
				lda DevMgr.SYS.BASEL,x
				sta ZPDRV+2
				lda DevMgr.SYS.BASEH,x
				sta ZPDRV+3

				ldy #39
				sta SETWRITEAUX
				sta SETREADAUX
.2				lda (ZPDRV+2),y
				sta (ZPDRV),y
				dey
				bpl .2

				ldy #39
				sta CLRWRITEAUX
				sta CLRREADAUX
.3				lda (ZPDRV+2),y
				sta (ZPDRV),y
				dey
				bpl .3

				cpx #23
				bne .1					Fall in ClrLineAtX for last line
*--------------------------------------
DevMgr.SYS.ClrLineAtX
				lda DevMgr.SYS.BASEL,x
				sta ZPDRV
				lda DevMgr.SYS.BASEH,x
				sta ZPDRV+1
				
				lda #$A0

				ldy #39
				
.1				sta SETWRITEAUX
				sta (ZPDRV),y
				sta CLRWRITEAUX
				sta (ZPDRV),y
				dey
				bpl .1

				rts
*--------------------------------------
DevMgr.SYS.Home	ldx #23
				
.1				jsr DevMgr.SYS.ClrLineAtX
				dex
				bne .1
				
				stz DevMgr.SYS.CH
				lda #1
				sta DevMgr.SYS.CV
								
				rts
*--------------------------------------
DevMgr.SYS.SetCharAtYX
				cmp #$40
				bcc .1
				cmp #$5F
				bcs .1
				and #$3F
				
.1				phy
				pha
				lda DevMgr.SYS.BASEL,x
				sta ZPDRV
				lda DevMgr.SYS.BASEH,x
				sta ZPDRV+1
				tya
				lsr
				tay
				bcs .2
				sta SETWRITEAUX
				
.2				pla
				sta (ZPDRV),y
				sta CLRWRITEAUX
				ply
				rts
*--------------------------------------
DevMgr.SYS.CH		.BS 1
DevMgr.SYS.CV		.BS 1
DevMgr.SYS.CPULOADI .BS 1
DevMgr.SYS.CPULOADC	.AS -"|/-\"
*--------------------------------------
DevMgr.SYS.TITLE	>CSTRING "A2osX System Screen"
DevMgr.SYS.BASEL	.HS	00.80.00.80.00.80.00.80.28.A8.28.A8.28.A8.28.A8.50.D0.50.D0.50.D0.50.D0
DevMgr.SYS.BASEH	.HS	08.08.09.09.0A.0A.0B.0B.08.08.09.09.0A.0A.0B.0B.08.08.09.09.0A.0A.0B.0B
*--------------------------------------
DevMgr.LoMem		.EQ *
MAN
SAVE SYS/KERNEL.S.D01
LOAD SYS/KERNEL.S
ASM
