A2osX/SYS/KERNEL.S.SCR.txt

336 lines
6.2 KiB
Plaintext
Raw Normal View History

2015-03-14 21:48:35 +00:00
PR#3
2015-03-15 22:00:40 +00:00
PREFIX /A2OSX.BUILD
2015-03-14 21:48:35 +00:00
NEW
INC 1
AUTO 6
.LIST OFF
.OP 65C02
*--------------------------------------
* !!!!!!!! DO NOT USE VCPU16 !!!!!!!!
* !!!!!! DO NOT USE ZPQuickPTRs !!!!!
*--------------------------------------
SYSSCR.BASL .EQ ZPSysScr COUT
SYSSCR.BASLTMP .EQ ZPSysScr+2 Scrolling
SYSSCR.STRPTR .EQ ZPSysScr+4 PPSTR
*--------------------------------------
SYSSCR.BASL0 .EQ $800
*--------------------------------------
* S.SysScrInit
*--------------------------------------
S.SysScrInit stz SYSSCR.CPULOADI
stz SYSSCR.CH
stz SYSSCR.CV
ldx #0
ldy #0
.1 lda SYSSCR.TITLE,y
beq .2
jsr S.SysScrSetCharAtYX
iny
bne .1
.2 lda #$20
jsr S.SysScrSetCharAtYX
iny
cpy #80
bne .2
jsr S.SysScrHOME
lda A2osX.SCREENS
ora #A2osX.SCREENS.S
sta A2osX.SCREENS
lda #A2osX.SCREENS.S
jsr S.ScreenSelectA
clc
rts
*--------------------------------------
S.SysScrCPULoad ldx SYSSCR.CPULOADI
lda SYSSCR.CPULOADC,x
sta SYSSCR.BASL0+38
dec SYSSCR.CPULOADI
bpl .1
lda #3
sta SYSSCR.CPULOADI
.1 rts
*--------------------------------------
* S.SysScrPRCode
* In:
* CC : Prints [OK]
* CS : [$$] at column 36-39
*--------------------------------------
S.SysScrPRCode php save P to keep carry
bcs .1
lda #0 ensure we have ERR=0 if cc
.1 pha
ldy #76 HTAB to 76
sty SYSSCR.CH
lda #"["
jsr S.SysScrCOUTA
pla
pha
bne .2
lda #"O"
jsr S.SysScrCOUTA
lda #"K"
jsr S.SysScrCOUTA
bra .3
.2 jsr S.SysScrPRBYTEA
.3 lda #"]"
jsr S.SysScrCOUTA
pla
plp
rts
*--------------------------------------
S.SysScrPPSTRA jsr S.GetMemPtrA
S.SysScrPPSTR >STYA SYSSCR.STRPTR
lda (SYSSCR.STRPTR)
beq .9
ldy #0
.1 iny
lda (SYSSCR.STRPTR),y
cmp #'\'
bne .7
tya
cmp (SYSSCR.STRPTR)
beq .9
iny
lda (SYSSCR.STRPTR),y
cmp #'n'
bne .7
lda #13
.7 jsr S.SysScrCOUTA
.8 tya
cmp (SYSSCR.STRPTR)
bne .1
.9 >LDYA SYSSCR.STRPTR
rts
*--------------------------------------
S.SysScrPRBYTEA pha
lsr
lsr
lsr
lsr
ora #$B0
cmp #$BA
bcc .1
adc #6
.1 jsr S.SysScrCOUTA
pla
and #$0F
ora #$B0
cmp #$BA
bcc S.SysScrCOUTA
adc #6
*--------------------------------------
S.SysScrCOUTA phx
phy
cmp #13
bne .1
jsr S.SysScrCROUT
ply
plx
rts
.1 ldy SYSSCR.CH
ldx SYSSCR.CV
ora #$80
jsr S.SysScrSetCharAtYX
jsr S.SysScrFSOUT
ply
plx
rts
*--------------------------------------
S.SysScrFSOUT lda SYSSCR.CH
cmp #79
beq S.SysScrCROUT1
inc SYSSCR.CH
rts
*--------------------------------------
S.SysScrCROUT jsr S.SysScrCLREOL
S.SysScrCROUT1 stz SYSSCR.CH
ldx SYSSCR.CV
cpx #23
beq S.SysScrScroll
inc SYSSCR.CV
rts
*--------------------------------------
S.SysScrCLREOL ldx SYSSCR.CV
lda #$A0
ldy SYSSCR.CH
.1 cpy #79
beq .2
jsr S.SysScrSetCharAtYX
iny
bne .1
.2 rts
*--------------------------------------
S.SysScrScroll ldx #1
.1 lda SYSSCR.BASEL,x
sta SYSSCR.BASL
lda SYSSCR.BASEH,x
sta SYSSCR.BASL+1
inx
lda SYSSCR.BASEL,x
sta SYSSCR.BASLTMP
lda SYSSCR.BASEH,x
sta SYSSCR.BASLTMP+1
ldy #39
sta SETWRITEAUX
sta SETREADAUX
.2 lda (SYSSCR.BASLTMP),y
sta (SYSSCR.BASL),y
dey
bpl .2
ldy #39
sta CLRWRITEAUX
sta CLRREADAUX
.3 lda (SYSSCR.BASLTMP),y
sta (SYSSCR.BASL),y
dey
bpl .3
cpx #23
bne .1
ldy #39
lda #$A0
.4 sta SETWRITEAUX
sta (SYSSCR.BASLTMP),y
sta CLRWRITEAUX
sta (SYSSCR.BASLTMP),y
dey
bpl .4
rts
*--------------------------------------
S.SysScrClrLineAtX
lda SYSSCR.BASEL,x
sta SYSSCR.BASL
lda SYSSCR.BASEH,x
sta SYSSCR.BASL+1
lda #$A0
ldy #39
sta SETWRITEAUX
.1 sta (SYSSCR.BASL),y
dey
bpl .1
ldy #39
sta CLRWRITEAUX
.2 sta (SYSSCR.BASL),y
dey
bpl .2
rts
*--------------------------------------
S.SysScrHOME ldx #23
.1 jsr S.SysScrClrLineAtX
dex
bne .1
stz SYSSCR.CH
lda #1
sta SYSSCR.CV
rts
*--------------------------------------
S.SysScrSetCharAtYX
cmp #$40
bcc .1
cmp #$5F
bcs .1
and #$3F
.1 phy
pha
lda SYSSCR.BASEL,x
sta SYSSCR.BASL
lda SYSSCR.BASEH,x
sta SYSSCR.BASL+1
tya
lsr
tay
bcs .2
sta SETWRITEAUX
.2 pla
sta (SYSSCR.BASL),y
sta CLRWRITEAUX
ply
rts
*--------------------------------------
* S.ScreenSelectA
* IN :
* A = Screen to display
*--------------------------------------
S.ScreenSelectA and A2osX.SCREENS Screen is available ?
beq .9 ...not setup up
cmp #A2osX.SCREENS.S
bne .1
sta SETTEXT
sta SET80DISP
sta CLR80STORE
sta SETPAGE2
sta SETALTCHAR
lda #A2osX.SCREENS.S
bra .8
.1 cmp #A2osX.SCREENS.C
bne .2
sta SETTEXT
sta SET80DISP
sta SET80STORE
sta CLRPAGE2
sta SETALTCHAR
lda #A2osX.SCREENS.C
bra .8
.2 cmp #A2osX.SCREENS.G
bne .9
sta CLRTEXT
sta CLRMIXED
sta SETHIRES
sta CLRPAGE2
sta SETIOUDIS
sta CLR80DISP
sta SETDHIRES
sta CLRDHIRES
sta SETDHIRES
sta CLRDHIRES
sta SET80DISP
sta SETDHIRES
sta CLRDHIRES
sta SETDHIRES
lda #A2osX.SCREENS.G
.8 sta A2osX.ACTIVESCRN
.9 rts
*--------------------------------------
SYSSCR.CH .BS 1
SYSSCR.CV .BS 1
SYSSCR.CPULOADI .BS 1
SYSSCR.CPULOADC .AS -"|\-/"
*--------------------------------------
SYSSCR.TITLE >CSTRING "A2osX System Screen"
SYSSCR.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
SYSSCR.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
*--------------------------------------
MAN
SAVE SYS/KERNEL.S.SCR
LOAD SYS/KERNEL.S
ASM