PR#3 PREFIX /A2OSX.SRC LOMEM $A00 INC 1 AUTO 6 .LIST OFF *-------------------------------------- DevMgr.SYS.BASL0 .EQ $800 *-------------------------------------- DevMgr.LoMem .EQ * *-------------------------------------- DevMgr.NUL.Code cld jmp (.1,x) .1 .DA DevMgr.NUL.Status .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 *-------------------------------------- DevMgr.NUL.Status >LDYAI DevMgr.NUL.Stat clc rts *-------------------------------------- DevMgr.NUL.Stat .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 cld jmp (.1,x) .1 .DA DevMgr.SYS.Status .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 *-------------------------------------- DevMgr.BADCALL lda #MLI.ERR.BADCALL sec rts *-------------------------------------- DevMgr.SYS.Status >LDYAI DevMgr.SYS.Stat clc rts *-------------------------------------- DevMgr.SYS.Stat .DA #S.DEV.S.WRITE+S.DEV.S.READ .DA #0,#0,#0 >PSTR "A2osX SYS Screen" .DA #S.DEVSTAT.TYPE.CHAR .DA #0 .DA $0900 *-------------------------------------- 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 fall in Control *-------------------------------------- DevMgr.SYS.Control sta SETTEXT sta SETALTCHAR sta SET80DISP sta CLR80STORE sta SETPAGE2 lda #2 sta A2osX.ASCREEN clc rts *-------------------------------------- DevMgr.SYS.Read 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.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.CROut 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 beq DevMgr.SYS.LF1 inc DevMgr.SYS.CH rts *-------------------------------------- DevMgr.SYS.CROut jsr DevMgr.SYS.ClrEOL *-------------------------------------- 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 >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 SYS/KERNEL.S.D01 LOAD SYS/KERNEL.S ASM