PR#3 PREFIX /A2OSX.SRC LOMEM $900 INC 1 AUTO 6 .LIST OFF *-------------------------------------- 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.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 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 *-------------------------------------- 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 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 SYS/KERNEL.S.D01 LOAD SYS/KERNEL.S ASM