PR#3 PREFIX /A2OSX.BUILD 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