A2osX/SYS/KERNEL.S.D01.txt

353 lines
6.9 KiB
Plaintext
Raw Normal View History

PR#3
PREFIX /A2OSX.SRC
LOMEM $A00
INC 1
AUTO 6
*--------------------------------------
* Smartport Driver
*--------------------------------------
A2osX.PrtDrv .DA A2osX.PrtDrv.S STATUS
.DA A2osX.PrtDrv.P BR
.DA A2osX.PrtDrv.P BW
.DA A2osX.PrtDrv.NP FORMAT
.DA A2osX.PrtDrv.P CONTROL
.DA A2osX.PrtDrv.NP INIT
.DA A2osX.PrtDrv.NP OPEN
.DA A2osX.PrtDrv.NP CLOSE
.DA A2osX.PrtDrv.P R
.DA A2osX.PrtDrv.P W
*--------------------------------------
A2osX.PrtDrv.S jsr A2osX.PrtDrv.GetDev
>LDYAI K.S.DEVSTAT
>STYA K.S.PORTCALL+2
lda #3
sta K.S.PORTCALL+3
jsr A2osX.PrtDrv.Go
bcs .9
>LDYAI K.S.DEVSTAT
.9 rts
*--------------------------------------
A2osX.PrtDrv.P jsr A2osX.PrtDrv.GetParam
bra A2osX.PrtDrv.Go
A2osX.PrtDrv.NP jsr A2osX.PrtDrv.GetDev
*--------------------------------------
A2osX.PrtDrv.Go ldy #S.DEV.ROM.JMP
lda (pDev),y
sta .8+1
iny
lda (pDev),y
sta .8+2
.8 jsr $ffff
A2osX.PrtDrv.Go.Cmd
.BS 1
.DA K.S.PORTCALL
rts
*--------------------------------------
A2osX.PrtDrv.GetParam
>STYA ZPDRV Get Ptr To ParamList
jsr A2osX.Blk.GetDev
ldy #7
.1 lda (ZPDRV),y
sta K.S.PORTCALL+2,y
dey
bpl .1
rts
*--------------------------------------
A2osX.PrtDrv.GetDev
txa
asl
sta A2osX.PrtDrv.Go.Cmd
tax
lda A2osX.PrtDrv.Cnt,x
sta K.S.PORTCALL
ldy #S.DEV.DEVID
lda (pDev),y
sta K.S.PORTCALL+1
rts
A2osX.PrtDrv.Cnt
.HS 03030301030101010404
*--------------------------------------
DevMgr.NUL.Code .DA .1 STATUS
2017-01-12 17:43:45 +00:00
.DA DevMgr.BADCALL READBLOCK
.DA DevMgr.BADCALL WRITEBLOCK
.DA DevMgr.BADCALL FORMAT
.DA DevMgr.BADCALL CONTROL
.DA DevMgr.BADCALL INIT
.DA DevMgr.BADCALL OPEN
.DA DevMgr.BADCALL CLOSE
.DA DevMgr.BADCALL READ
.DA .8 WRITE
.8 clc
rts
*--------------------------------------
.1 >LDYAI .2
clc
rts
*--------------------------------------
.2 .DA #S.DEV.S.WRITE+S.DEV.S.READ
.DA #0,#0,#0
>PSTR "NULL DEVICE "
.DA #S.DEVSTAT.TYPE.CHAR
.DA #0
.DA $0900
*--------------------------------------
DevMgr.SYS.Code .DA .1 STATUS
2017-01-12 17:43:45 +00:00
.DA DevMgr.BADCALL READBLOCK
.DA DevMgr.BADCALL WRITEBLOCK
.DA DevMgr.BADCALL FORMAT
.DA DevMgr.SYS.Control
.DA DevMgr.BADCALL INIT
.DA DevMgr.SYS.Open
.DA DevMgr.BADCALL CLOSE
.DA DevMgr.SYS.Read
.DA DevMgr.SYS.Write
*--------------------------------------
.1 >LDYAI .2
2017-01-12 17:43:45 +00:00
clc
rts
*--------------------------------------
.2 .DA #S.DEV.S.WRITE+S.DEV.S.READ
2017-01-12 17:43:45 +00:00
.DA #0,#0,#0
>PSTR "A2osX SYS Screen"
.DA #S.DEVSTAT.TYPE.CHAR
2017-01-12 17:43:45 +00:00
.DA #0
.DA $0900
2017-01-12 17:43:45 +00:00
*--------------------------------------
DevMgr.SYS.Open 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
2017-01-12 17:43:45 +00:00
sta A2osX.SCRNDEVS+1 fall in Control
*--------------------------------------
2017-01-12 17:43:45 +00:00
DevMgr.SYS.Control
sta SETTEXT
sta SETALTCHAR
sta SET80DISP
sta CLR80STORE
sta SETPAGE2
lda #2
sta A2osX.ASCREEN
clc
rts
*--------------------------------------
2017-01-12 17:43:45 +00:00
DevMgr.SYS.Read lda A2osX.ASCREEN
cmp #2 is SYS active?
bne .9
lda OPENAPPLE
bmi .9 Open apple key, not for us...
lda KBD
bpl .9
sta KBDSTROBE
and #$7F
clc
rts
.9 lda #0 Error = no event
sec
rts
*--------------------------------------
2017-01-12 17:43:45 +00:00
DevMgr.SYS.Write
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.CR
bra .8
.3 ora #$20
jsr DevMgr.SYS.SetCharAtYX
jsr DevMgr.SYS.FSOut
.8 ply
plx
clc
rts
*--------------------------------------
DevMgr.SYS.FSOut
lda DevMgr.SYS.CH
cmp #79
bne .1
stz DevMgr.SYS.CH
bra DevMgr.SYS.LF
.1 inc DevMgr.SYS.CH
rts
*--------------------------------------
DevMgr.SYS.CR jsr DevMgr.SYS.ClrEOL
stz DevMgr.SYS.CH
rts
*--------------------------------------
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
php
sei
sta SETWRITEAUX
sta SETREADAUX
ldy #39
.2 lda (ZPDRV+2),y
sta (ZPDRV),y
dey
bpl .2
sta CLRWRITEAUX
sta CLRREADAUX
plp
ldy #39
.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
php
sei
lda #$A0
ldy #39
.1 sta SETWRITEAUX
sta (ZPDRV),y
sta CLRWRITEAUX
sta (ZPDRV),y
dey
bpl .1
plp
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 php
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
plp
rts
*--------------------------------------
DevMgr.SYS.CH .BS 1
DevMgr.SYS.CV .BS 1
*--------------------------------------
DevMgr.SYS.TITLE >CSTR "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.BADCALL lda #MLI.ERR.BADCALL
sec
rts
*--------------------------------------
DevMgr.FreeMem .EQ *
MAN
SAVE SYS/KERNEL.S.D01
LOAD SYS/KERNEL.S
ASM