A2osX/SYS/KERNEL.S.D01.txt

349 lines
6.7 KiB
Plaintext
Raw Normal View History

PR#3
PREFIX /A2OSX.BUILD
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.SP.PARAMS+2
lda #3
sta K.SP.PARAMS+4
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.SP.PARAMS
rts
*--------------------------------------
A2osX.PrtDrv.GetParam
>STYA ZPDRV Get Ptr To ParamList
jsr A2osX.Blk.GetCmdAndDev
ldy #7
.1 lda (ZPDRV),y
sta K.SP.PARAMS+2,y
dey
bpl .1
rts
*--------------------------------------
A2osX.PrtDrv.GetDev
txa
lsr
sta A2osX.PrtDrv.Go.Cmd
tax
lda A2osX.PrtDrv.Cnt,x
sta K.SP.PARAMS
ldy #S.DEV.DEVID
lda (pDev),y
sta K.SP.PARAMS+1
rts
A2osX.PrtDrv.Cnt
.HS 03030301030101010404
*--------------------------------------
DevMgr.NUL.Code .DA .1 STATUS
.DA A2osX.BADCALL READBLOCK
.DA A2osX.BADCALL WRITEBLOCK
.DA A2osX.BADCALL FORMAT
.DA A2osX.BADCALL CONTROL
.DA A2osX.BADCALL INIT
.DA A2osX.BADCALL OPEN
.DA A2osX.BADCALL CLOSE
.DA A2osX.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.T.CHAR
.DA #0
.DA $0900
*--------------------------------------
DevMgr.SYS.Code .DA .1 STATUS
.DA A2osX.BADCALL READBLOCK
.DA A2osX.BADCALL WRITEBLOCK
.DA A2osX.BADCALL FORMAT
2017-01-12 17:43:45 +00:00
.DA DevMgr.SYS.Control
.DA A2osX.BADCALL INIT
2017-01-12 17:43:45 +00:00
.DA DevMgr.SYS.Open
.DA A2osX.BADCALL CLOSE
2017-01-12 17:43:45 +00:00
.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.T.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.FreeMem .EQ *
MAN
SAVE /A2OSX.SRC/SYS/KERNEL.S.D01
LOAD /A2OSX.SRC/SYS/KERNEL.S
ASM