Kernel 0.9.2

This commit is contained in:
Rémy GIBERT 2018-06-20 17:02:09 +02:00
parent 0128a9cfd9
commit db742825c8
5 changed files with 154 additions and 148 deletions

View File

@ -90,7 +90,7 @@ STATUS >LDYA L.DEVSTAT
clc clc
rts rts
*-------------------------------------- *--------------------------------------
OPEN sta A2osX.SCRNDEVS+1 DEV.ID in A OPEN sta A2osX.SCRNDEVS DEV.ID in A
lda #S.DSTAT.S.OPENED lda #S.DSTAT.S.OPENED
tsb DEVSTAT tsb DEVSTAT
@ -117,8 +117,8 @@ CONTROL sta SETTEXT
sta SETALTCHAR sta SETALTCHAR
sta SET80DISP sta SET80DISP
sta CLR80STORE sta CLR80STORE
sta SETPAGE2 sta CLRPAGE2
lda #2 lda #1
sta A2osX.ASCREEN sta A2osX.ASCREEN
clc clc
rts rts
@ -131,7 +131,7 @@ READ jsr Char.Out.Get
bcc .8 IF cs,no char in output buffer... bcc .8 IF cs,no char in output buffer...
lda A2osX.ASCREEN lda A2osX.ASCREEN
cmp #2 is CON active? cmp #1 is CON active?
bne .9 no....exit bne .9 no....exit
lda A2osX.TIMER16 lda A2osX.TIMER16
@ -658,7 +658,7 @@ CUROFF lda CURON
beq CUREXIT.RTS beq CUREXIT.RTS
CURBLNK lda A2osX.ASCREEN CURBLNK lda A2osX.ASCREEN
cmp #2 cmp #1
beq CURBLNK1 beq CURBLNK1
lda CURON lda CURON
@ -849,7 +849,7 @@ SB.IS.TTYPE .DA #IAC,#SB,#TELOPT.TTYPE,#SB.IS
.DA #IAC,#SE .DA #IAC,#SE
SB.IS.TTYPE.LEN .EQ *-SB.IS.TTYPE SB.IS.TTYPE.LEN .EQ *-SB.IS.TTYPE
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 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
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 BASEH .HS 04.04.05.05.06.06.07.07.04.04.05.05.06.06.07.07.04.04.05.05.06.06.07.07
*-------------------------------------- *--------------------------------------
CH .BS 1 CH .BS 1
CV .BS 1 CV .BS 1

View File

@ -277,33 +277,14 @@ S.MSTAT.DCount .EQ 22
* *
S.MSTAT .EQ 24 S.MSTAT .EQ 24
*-------------------------------------- *--------------------------------------
* DEVMGR (new API) = Smartport * IOCTL device API
*-------------------------------------- *--------------------------------------
* JMP : (A=Device) * JMP : (A=Device)
* DRV : AUXLC entry point * DRV : AUXLC entry point
* BLK : ROM Entry point Cn($Cnff) * BLK : ROM Entry point Cn($Cnff)
* PRT : ROM Entry point Cn($Cnff)+3 * PRT : ROM Entry point Cn($Cnff)+3
*-------------------------------------- *--------------------------------------
S.DEV.DRV.JMP .EQ 2 IOCTL.STATUS .EQ 0 X,Y = byte count returned
S.DEV.S .EQ 4
S.DEV.S.BLOCK .EQ %10000000
S.DEV.S.WRITE .EQ %01000000
S.DEV.S.READ .EQ %00100000
S.DEV.S.ONLINE .EQ %00010000
S.DEV.S.NOFMT .EQ %00001000
S.DEV.S.WENABL .EQ %00000100
S.DEV.S.IRQ .EQ %00000010
S.DEV.S.OPENED .EQ %00000001
S.DEV.F .EQ 5
S.DEV.BUSID .EQ 6
S.DEV.DEVID .EQ 7
S.DEV.ROM.JMP .EQ 8 word
*
S.DEV.NAME .EQ 11 4+\0 MAX
*
S.DEV .EQ 16
*--------------------------------------
IOCTL.STATUS .EQ 0
IOCTL.READBLOCK .EQ 2 IOCTL.READBLOCK .EQ 2
IOCTL.WRITEBLOCK .EQ 4 IOCTL.WRITEBLOCK .EQ 4
IOCTL.FORMAT .EQ 6 IOCTL.FORMAT .EQ 6
@ -319,7 +300,16 @@ S.IOCTL.CNT .EQ 0
S.IOCTL.UNITNUM .EQ 1 S.IOCTL.UNITNUM .EQ 1
S.IOCTL.BUFPTR .EQ 2 S.IOCTL.BUFPTR .EQ 2
S.IOCTL.STATCODE .EQ 4 1 BYTE S.IOCTL.STATCODE .EQ 4 1 BYTE
S.IOCTL.STATCODE.STATUS .EQ 0
S.IOCTL.STATCODE.GETDCB .EQ 1
S.IOCTL.STATCODE.GETNL .EQ 2
S.IOCTL.STATCODE.GETDIB .EQ 3
S.IOCTL.CTRLCODE .EQ 4 1 BYTE S.IOCTL.CTRLCODE .EQ 4 1 BYTE
S.IOCTL.CTRLCODE.RESET .EQ 0
S.IOCTL.CTRLCODE.SETDCB .EQ 1
S.IOCTL.CTRLCODE.SETNL .EQ 2
S.IOCTL.CTRLCODE.IRQ .EQ 3
S.IOCTL.CTRLCODE.EJECT .EQ 4
S.IOCTL.BLKNUM .EQ 4 3 BYTES S.IOCTL.BLKNUM .EQ 4 3 BYTES
S.IOCTL.BYTECNT .EQ 4 2 BYTES S.IOCTL.BYTECNT .EQ 4 2 BYTES
S.IOCTL.ADDRPTR .EQ 6 3 BYTES S.IOCTL.ADDRPTR .EQ 6 3 BYTES
@ -360,6 +350,7 @@ S.DSTAT.T.NET .EQ $12 Network board
S.DSTAT.T.XY .EQ $13 X,Y Pointing Device S.DSTAT.T.XY .EQ $13 X,Y Pointing Device
S.DSTAT.T.CHAR .EQ $14 S.DSTAT.T.CHAR .EQ $14
S.DSTAT.T.GFX .EQ $15 S.DSTAT.T.GFX .EQ $15
S.DSTAT.T.SND .EQ $16
S.DSTAT.ST .EQ 22 S.DSTAT.ST .EQ 22
S.DSTAT.ST.EXT .EQ $80 S.DSTAT.ST.EXT .EQ $80
S.DSTAT.ST.DSKSW .EQ $40 S.DSTAT.ST.DSKSW .EQ $40
@ -394,10 +385,13 @@ S.NODE.DIR.FC .EQ 6 word
* *
S.NODE.DIR .EQ 8 S.NODE.DIR .EQ 8
*-------------------------------------- *--------------------------------------
S.NODE.DEV.ID .EQ 2 S.NODE.DEV.BUSID .EQ 2
S.NODE.DEV.JMP .EQ 3 word S.NODE.DEV.DEVID .EQ 3
S.NODE.DEV.DRVPTR .EQ 4 word
S.NODE.DEV.ROMPTR .EQ 6 word
S.NODE.DEV.NAME .EQ 8 C-String
* *
S.NODE.DEV .EQ 5 S.NODE.DEV .EQ 16
*-------------------------------------- *--------------------------------------
* S.NODE.LNK * S.NODE.LNK
*-------------------------------------- *--------------------------------------

View File

@ -99,7 +99,6 @@ A2osX.SaveSX .EQ $101 Aux
K.S.STAT .EQ $0300 S.STAT for internal kernel operations K.S.STAT .EQ $0300 S.STAT for internal kernel operations
K.S.DSTAT .EQ $0340 S.DSTAT=25 or higher depends on dev type K.S.DSTAT .EQ $0340 S.DSTAT=25 or higher depends on dev type
K.S.IOCTL .EQ $0360 9 bytes K.S.IOCTL .EQ $0360 9 bytes
K.SP.PARAMS .EQ $0360 9 bytes
K.MLI.PATH .EQ $0369 64+1 K.MLI.PATH .EQ $0369 64+1
K.MLI.PARAMS .EQ $03AA Main, 18 bytes min for GetFileInfo (ATLK needs MORE!!!...32 max for now) K.MLI.PARAMS .EQ $03AA Main, 18 bytes min for GetFileInfo (ATLK needs MORE!!!...32 max for now)
*-------------------------------------- *--------------------------------------

View File

@ -2,18 +2,20 @@ NEW
PREFIX /A2OSX.BUILD PREFIX /A2OSX.BUILD
AUTO 4,1 AUTO 4,1
*-------------------------------------- *--------------------------------------
* A2osX.DIIDrv * DRV.DiskII
* X = IOCTL * X = IOCTL
* Y,A = PTR to Params * Y,A = PTR to S.IOCTL
* pDev -> Dev Header AUX!!! * pDev -> Dev Header AUX!!!
* $42 Command Number * $42 Command Number
* $43 Unit Number * $43 Unit Number
* $44-$45 Buffer Pointer * $44-$45 Buffer Pointer
* $46-$47 Block Number * $46-$47 Block Number
*-------------------------------------- *--------------------------------------
A2osX.DIIDrv .DA A2osX.DIIDrv.S status DRV.DiskII cld
.DA A2osX.DIIDrv.RW Read jmp (.1,x)
.DA A2osX.DIIDrv.RW Write .1 .DA DRV.DiskII.S status
.DA DRV.DiskII.RW Read
.DA DRV.DiskII.RW Write
.DA A2osX.BadCall Format .DA A2osX.BadCall Format
.DA A2osX.BadCall .DA A2osX.BadCall
.DA A2osX.BadCall .DA A2osX.BadCall
@ -23,11 +25,11 @@ A2osX.DIIDrv .DA A2osX.DIIDrv.S status
.DA A2osX.BadCall .DA A2osX.BadCall
.DA A2osX.BadCall .DA A2osX.BadCall
*-------------------------------------- *--------------------------------------
A2osX.DIIDrv.S >LDYAI A2osx.DII.Stat DRV.DiskII.S >LDYAI A2osx.DII.Stat
clc clc
rts rts
*-------------------------------------- *--------------------------------------
A2osX.DIIDrv.RW >STYA A2osX.RW.SrcDst+1 DRV.DiskII.RW >STYA A2osX.RW.SrcDst+1
jsr A2osX.Blk.GetCmdAndDevAX jsr A2osX.Blk.GetCmdAndDevAX
*-------------------------------------- *--------------------------------------
ldy #$D0 ldy #$D0
@ -53,27 +55,29 @@ A2osX.RW.Drv jsr $0000
jsr GO.A2osX jsr GO.A2osX
rts rts
*-------------------------------------- *--------------------------------------
A2osx.DII.Stat .DA #S.DSTAT.S.BLOCK+S.DSTAT.S.WRITE+S.DSTAT.S.READ DRV.DiskII.Stat .DA #S.DSTAT.S.BLOCK+S.DSTAT.S.WRITE+S.DSTAT.S.READ
.DA 280 .DA 280
.DA #0 .DA #0
>PSTR "Disk II 5.25" >PSTR "Disk II 5.25"
.BS 4 .BS 4
.DA #S.DSTAT.T.DISKII .DA #S.DSTAT.T.DISKII
.DA #0 .DA #0
.DA #0,#91 .DA KVER
*-------------------------------------- *--------------------------------------
* A2osX.RamDrv * DRV.RamDrive
* X = IOCTL * X = IOCTL
* Y,A = PTR to Params * Y,A = PTR to S.IOCTL
* pDev -> Dev Header AUX!!! * pDev -> Dev Header AUX!!!
* $42 Command Number * $42 Command Number
* $43 Unit Number * $43 Unit Number
* $44-$45 Buffer Pointer * $44-$45 Buffer Pointer
* $46-$47 Block Number * $46-$47 Block Number
*-------------------------------------- *--------------------------------------
A2osX.RamDrv .DA A2osX.RamDrv.S status DRV.RamDrive cld
.DA A2osX.RamDrv.RW Read jmp (.1,x)
.DA A2osX.RamDrv.RW Write .1 .DA DRV.RamDrive.S status
.DA DRV.RamDrive.RW Read
.DA DRV.RamDrive.RW Write
.DA A2osX.BadCall Format .DA A2osX.BadCall Format
.DA A2osX.BadCall .DA A2osX.BadCall
.DA A2osX.BadCall .DA A2osX.BadCall
@ -83,25 +87,25 @@ A2osX.RamDrv .DA A2osX.RamDrv.S status
.DA A2osX.BadCall .DA A2osX.BadCall
.DA A2osX.BadCall .DA A2osX.BadCall
*-------------------------------------- *--------------------------------------
A2osX.RamDrv.S jsr A2osX.Blk.GetCmdAndDevAX DRV.RamDrive.S jsr A2osX.Blk.GetCmdAndDevAX
jsr GO.ProDOS jsr GO.ProDOS
stx $42 stx $42
sta $43 sta $43
jsr $FF00 jsr $FF00
jsr GO.A2osX jsr GO.A2osX
bcs .9 bcs .9
stx A2osx.RamDrv.Stat+S.DSTAT.SIZE stx DRV.RamDrive.Stat+S.DSTAT.SIZE
sty A2osx.RamDrv.Stat+S.DSTAT.SIZE+1 sty DRV.RamDrive.Stat+S.DSTAT.SIZE+1
>LDYAI A2osX.RamDrv.Stat >LDYAI A2osX.RamDrv.Stat
clc clc
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
A2osX.RamDrv.RW >STYA A2osX.RW.SrcDst+1 DRV.RamDrive.RW >STYA A2osX.RW.SrcDst+1
jsr A2osX.Blk.GetCmdAndDevAX jsr A2osX.Blk.GetCmdAndDevAX
bra A2osX.RamDrv.RW1 bra A2osX.RamDrv.RW1
*-------------------------------------- *--------------------------------------
A2osx.RamDrv.Stat DRV.RamDrive.Stat
.DA #S.DSTAT.S.BLOCK+S.DSTAT.S.WRITE+S.DSTAT.S.READ .DA #S.DSTAT.S.BLOCK+S.DSTAT.S.WRITE+S.DSTAT.S.READ
.BS 3 .BS 3
>PSTR "ProDOS /RAM Disk" >PSTR "ProDOS /RAM Disk"
@ -109,19 +113,21 @@ A2osx.RamDrv.Stat
.DA #0 .DA #0
.DA #0,#91 .DA #0,#91
*-------------------------------------- *--------------------------------------
* A2osX.BlkDrv * DRV.BlkDevice
* X = IOCTL * X = IOCTL
* Y,A = PTR to Params * Y,A = PTR to S.IOCTL
* pDev -> Dev Header * pDev -> Dev Header
* $42 Command Number * $42 Command Number
* $43 Unit Number * $43 Unit Number
* $44-$45 Buffer Pointer * $44-$45 Buffer Pointer
* $46-$47 Block Number * $46-$47 Block Number
*-------------------------------------- *--------------------------------------
A2osX.BlkDrv .DA A2osX.BlkDrv.S status DRV.BlkDevice cld
.DA A2osX.BlkDrv.RW jmp (.1,x)
.DA A2osX.BlkDrv.RW .1 .DA DRV.BlkDevice.S status
.DA A2osX.BlkDrv.F .DA DRV.BlkDevice.RW
.DA DRV.BlkDevice.RW
.DA DRV.BlkDevice.F
.DA A2osX.BadCall .DA A2osX.BadCall
.DA A2osX.BadCall .DA A2osX.BadCall
.DA A2osX.BadCall .DA A2osX.BadCall
@ -130,7 +136,7 @@ A2osX.BlkDrv .DA A2osX.BlkDrv.S status
.DA A2osX.BadCall .DA A2osX.BadCall
.DA A2osX.BadCall .DA A2osX.BadCall
*-------------------------------------- *--------------------------------------
A2osX.BlkDrv.S jsr A2osX.Blk.GetCmdAndDev DRV.BlkDevice.S jsr A2osX.Blk.GetCmdAndDev
jsr A2osX.BlkDrv.Go jsr A2osX.BlkDrv.Go
bcs .9 bcs .9
@ -141,16 +147,18 @@ A2osX.BlkDrv.S jsr A2osX.Blk.GetCmdAndDev
clc clc
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
A2osX.BlkDrv.RW >STYA A2osX.Blk.GetParam.1+1 DRV.BlkDevice.RW
>STYA A2osX.Blk.GetParam.1+1
jsr A2osX.Blk.GetCmdAndDev jsr A2osX.Blk.GetCmdAndDev
jsr A2osX.Blk.GetParam jsr A2osX.Blk.GetParam
bra A2osX.BlkDrv.Go bra A2osX.BlkDrv.Go
*-------------------------------------- *--------------------------------------
A2osX.BlkDrv.F jsr A2osX.Blk.GetCmdAndDev DRV.BlkDevice.F jsr A2osX.Blk.GetCmdAndDev
A2osX.BlkDrv.Go ldy #S.DEV.ROM.JMP DRV.BlkDevice.Go
ldy #S.DEV.ROM.JMP
lda (pDev),y lda (pDev),y
sta .8+1 sta .8+1
iny iny
@ -158,21 +166,21 @@ A2osX.BlkDrv.Go ldy #S.DEV.ROM.JMP
sta .8+2 sta .8+2
.8 jmp $ffff .8 jmp $ffff
*-------------------------------------- *--------------------------------------
A2osX.Blk.GetParam DRV.BlkDevice.GetParam
ldy #3 ldy #3
A2osX.Blk.GetParam.1 DRV.BlkDevice.GetParam.1
lda $ffff,y Self Modified lda $ffff,y Self Modified
sta $44,y sta $44,y
dey dey
bpl A2osX.Blk.GetParam.1 bpl A2osX.Blk.GetParam.1
rts rts
*-------------------------------------- *--------------------------------------
A2osX.Blk.GetCmdAndDev DRV.BlkDevice.GetCmdAndDev
jsr A2osX.Blk.GetCmdAndDevAX jsr A2osX.Blk.GetCmdAndDevAX
stx $42 stx $42
sta $43 sta $43
rts rts
A2osX.Blk.GetCmdAndDevAX DRV.BlkDevice.GetCmdAndDevAX
txa txa
lsr lsr
tax CMD tax CMD
@ -195,7 +203,8 @@ A2osX.Blk.GetCmdAndDevAX
rts rts
*-------------------------------------- *--------------------------------------
A2osX.Blk.Stat .DA #S.DSTAT.S.BLOCK+S.DSTAT.S.WRITE+S.DSTAT.S.READ DRV.BlkDevice.Stat
.DA #S.DSTAT.S.BLOCK+S.DSTAT.S.WRITE+S.DSTAT.S.READ
.BS 3 .BS 3
>PSTR "ProDOS Block Dev" >PSTR "ProDOS Block Dev"
.DA #S.DSTAT.T.PRODOS .DA #S.DSTAT.T.PRODOS
@ -204,18 +213,20 @@ A2osX.Blk.Stat .DA #S.DSTAT.S.BLOCK+S.DSTAT.S.WRITE+S.DSTAT.S.READ
*-------------------------------------- *--------------------------------------
* Smartport Driver * Smartport Driver
*-------------------------------------- *--------------------------------------
A2osX.PrtDrv .DA A2osX.PrtDrv.S STATUS DRV.SmartPort cld
.DA A2osX.PrtDrv.P BR jmp (.1,x)
.DA A2osX.PrtDrv.P BW .1 .DA DRV.SmartPort.S STATUS
.DA A2osX.PrtDrv.NP FORMAT .DA DRV.SmartPort.P BR
.DA A2osX.PrtDrv.P CONTROL .DA DRV.SmartPort.P BW
.DA A2osX.PrtDrv.NP INIT .DA DRV.SmartPort.NP FORMAT
.DA A2osX.PrtDrv.NP OPEN .DA DRV.SmartPort.P CONTROL
.DA A2osX.PrtDrv.NP CLOSE .DA DRV.SmartPort.NP INIT
.DA A2osX.PrtDrv.P R .DA DRV.SmartPort.NP OPEN
.DA A2osX.PrtDrv.P W .DA DRV.SmartPort.NP CLOSE
.DA DRV.SmartPort.P R
.DA DRV.SmartPort.P W
*-------------------------------------- *--------------------------------------
A2osX.PrtDrv.S jsr A2osX.PrtDrv.GetDev DRV.SmartPort.S jsr A2osX.PrtDrv.GetDev
>LDYAI K.S.DSTAT >LDYAI K.S.DSTAT
>STYA K.SP.PARAMS+2 >STYA K.SP.PARAMS+2
lda #3 lda #3
@ -225,11 +236,13 @@ A2osX.PrtDrv.S jsr A2osX.PrtDrv.GetDev
>LDYAI K.S.DSTAT >LDYAI K.S.DSTAT
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
A2osX.PrtDrv.P jsr A2osX.PrtDrv.GetParam DRV.SmartPort.P jsr A2osX.PrtDrv.GetParam
bra A2osX.PrtDrv.Go bra A2osX.PrtDrv.Go
A2osX.PrtDrv.NP jsr A2osX.PrtDrv.GetDev DRV.SmartPort.NP
jsr A2osX.PrtDrv.GetDev
*-------------------------------------- *--------------------------------------
A2osX.PrtDrv.Go ldy #S.DEV.ROM.JMP DRV.SmartPort.Go
ldy #S.DEV.ROM.JMP
lda (pDev),y lda (pDev),y
sta .8+1 sta .8+1
iny iny
@ -237,12 +250,12 @@ A2osX.PrtDrv.Go ldy #S.DEV.ROM.JMP
sta .8+2 sta .8+2
.8 jsr $ffff .8 jsr $ffff
A2osX.PrtDrv.Go.Cmd DRV.SmartPort.Go.Cmd
.BS 1 .BS 1
.DA K.SP.PARAMS .DA K.SP.PARAMS
rts rts
*-------------------------------------- *--------------------------------------
A2osX.PrtDrv.GetParam DRV.SmartPort.GetParam
>STYA ZPDRV Get Ptr To ParamList >STYA ZPDRV Get Ptr To ParamList
jsr A2osX.Blk.GetCmdAndDev jsr A2osX.Blk.GetCmdAndDev
@ -254,7 +267,7 @@ A2osX.PrtDrv.GetParam
bpl .1 bpl .1
rts rts
*-------------------------------------- *--------------------------------------
A2osX.PrtDrv.GetDev DRV.SmartPort.GetDev
txa txa
lsr lsr
sta A2osX.PrtDrv.Go.Cmd sta A2osX.PrtDrv.Go.Cmd
@ -265,12 +278,15 @@ A2osX.PrtDrv.GetDev
lda (pDev),y lda (pDev),y
sta K.SP.PARAMS+1 sta K.SP.PARAMS+1
rts rts
A2osX.PrtDrv.Cnt DRV.SmartPort.Cnt
.HS 03030301030101010404 .HS 03030301030101010404
*-------------------------------------- *--------------------------------------
* NULL DEVICE * NULL DEVICE
*-------------------------------------- *--------------------------------------
DevMgr.NUL.Code .DA .1 STATUS DRV.NULL.Code cld
jmp (.1,x)
*--------------------------------------
.1 .DA .2 STATUS
.DA A2osX.BADCALL READBLOCK .DA A2osX.BADCALL READBLOCK
.DA A2osX.BADCALL WRITEBLOCK .DA A2osX.BADCALL WRITEBLOCK
.DA A2osX.BADCALL FORMAT .DA A2osX.BADCALL FORMAT
@ -281,11 +297,11 @@ DevMgr.NUL.Code .DA .1 STATUS
.DA A2osX.BADCALL READ .DA A2osX.BADCALL READ
.DA .8 WRITE .DA .8 WRITE
*-------------------------------------- *--------------------------------------
.1 >LDYAI .2 .2 >LDYAI .3
.8 clc .8 clc
rts rts
*-------------------------------------- *--------------------------------------
.2 .DA #S.DEV.S.WRITE+S.DEV.S.READ .3 .DA #S.DEV.S.WRITE+S.DEV.S.READ
.DA #0,#0,#0 .DA #0,#0,#0
>PSTR "NULL DEVICE" >PSTR "NULL DEVICE"
.BS 5 .BS 5
@ -295,45 +311,46 @@ DevMgr.NUL.Code .DA .1 STATUS
*-------------------------------------- *--------------------------------------
* SYS DEVICE * SYS DEVICE
*-------------------------------------- *--------------------------------------
DevMgr.SYS.Code .DA .1 STATUS DRV.SYS.Code cld
jmp (.1,x)
.1 .DA .2 STATUS
.DA A2osX.BADCALL READBLOCK .DA A2osX.BADCALL READBLOCK
.DA A2osX.BADCALL WRITEBLOCK .DA A2osX.BADCALL WRITEBLOCK
.DA A2osX.BADCALL FORMAT .DA A2osX.BADCALL FORMAT
.DA DevMgr.SYS.Control .DA DRV.SYS.Control
.DA A2osX.BADCALL INIT .DA A2osX.BADCALL INIT
.DA DevMgr.SYS.Open .DA DRV.SYS.Open
.DA A2osX.BADCALL CLOSE .DA A2osX.BADCALL CLOSE
.DA DevMgr.SYS.Read .DA DRV.SYS.Read
.DA DevMgr.SYS.Write .DA DRV.SYS.Write
*-------------------------------------- *--------------------------------------
.1 >LDYAI .2 .2 >LDYAI .3
clc clc
rts rts
*-------------------------------------- *--------------------------------------
.2 .DA #S.DEV.S.WRITE+S.DEV.S.READ .3 .DA #S.DEV.S.WRITE+S.DEV.S.READ
.DA #0,#0,#0 .DA #0,#0,#0
>PSTR "A2osX SYS Screen" >PSTR "A2osX SYS Screen"
.DA #S.DSTAT.T.CHAR .DA #S.DSTAT.T.CHAR
.DA #0 .DA #0
.DA KVER .DA KVER
*-------------------------------------- *--------------------------------------
DevMgr.SYS.Open lda #1 DRV.SYS.Open lda #1
sta A2osX.SCRNDEVS sta A2osX.SCRNDEVS+1
jsr DevMgr.SYS.Home jsr DRV.SYS.Home
*-------------------------------------- *--------------------------------------
DevMgr.SYS.Control DRV.SYS.Control sta SETTEXT
sta SETTEXT
sta SETALTCHAR sta SETALTCHAR
sta SET80DISP sta SET80DISP
sta CLR80STORE sta CLR80STORE
sta CLRPAGE2 sta SETPAGE2
lda #1 lda #2
sta A2osX.ASCREEN sta A2osX.ASCREEN
clc clc
rts rts
*-------------------------------------- *--------------------------------------
DevMgr.SYS.Read lda A2osX.ASCREEN DRV.SYS.Read lda A2osX.ASCREEN
cmp #1 is SYS active? cmp #2 is SYS active?
bne .9 bne .9
lda OPENAPPLE lda OPENAPPLE
@ -351,20 +368,19 @@ DevMgr.SYS.Read lda A2osX.ASCREEN
sec sec
rts rts
*-------------------------------------- *--------------------------------------
DevMgr.SYS.Write DRV.SYS.Write phx
phx
phy phy
cmp #' ' cmp #' '
bcs .7 bcs .7
cmp #10 cmp #10
bne .1 bne .1
jsr DevMgr.SYS.LF jsr DRV.SYS.LF
bra .8 bra .8
.1 cmp #13 .1 cmp #13
bne .2 bne .2
jsr DevMgr.SYS.CR jsr DRV.SYS.CR
bra .8 bra .8
.2 ora #$20 .2 ora #$20
@ -372,49 +388,47 @@ DevMgr.SYS.Write
.HS 2C BIT ABS .HS 2C BIT ABS
.7 ora #$80 .7 ora #$80
ldy DevMgr.SYS.CH ldy DRV.SYS.CH
ldx DevMgr.SYS.CV ldx DRV.SYS.CV
jsr DevMgr.SYS.SetCharAtYX jsr DRV.SYS.SetCharAtYX
jsr DevMgr.SYS.FSOut jsr DRV.SYS.FSOut
.8 ply .8 ply
plx plx
clc clc
rts rts
*-------------------------------------- *--------------------------------------
DevMgr.SYS.FSOut DRV.SYS.FSOut lda DRV.SYS.CH
lda DevMgr.SYS.CH
cmp #79 cmp #79
bne .1 bne .1
stz DevMgr.SYS.CH stz DRV.SYS.CH
bra DevMgr.SYS.LF bra DRV.SYS.LF
.1 inc DevMgr.SYS.CH .1 inc DRV.SYS.CH
rts rts
*-------------------------------------- *--------------------------------------
DevMgr.SYS.CR jsr DevMgr.SYS.ClrEOL DRV.SYS.CR jsr DRV.SYS.ClrEOL
stz DevMgr.SYS.CH stz DRV.SYS.CH
rts rts
*-------------------------------------- *--------------------------------------
DevMgr.SYS.LF ldx DevMgr.SYS.CV DRV.SYS.LF ldx DRV.SYS.CV
cpx #23 cpx #23
beq DevMgr.SYS.Scroll beq DRV.SYS.Scroll
inc DevMgr.SYS.CV inc DRV.SYS.CV
rts rts
*-------------------------------------- *--------------------------------------
DevMgr.SYS.ClrEOL DRV.SYS.ClrEOL ldx DRV.SYS.CV
ldx DevMgr.SYS.CV
lda #$A0 lda #$A0
ldy DevMgr.SYS.CH ldy DRV.SYS.CH
.1 cpy #79 .1 cpy #79
beq .2 beq .2
jsr DevMgr.SYS.SetCharAtYX jsr DRV.SYS.SetCharAtYX
iny iny
bne .1 bne .1
.2 rts .2 rts
*-------------------------------------- *--------------------------------------
DevMgr.SYS.ScrollAux DRV.SYS.ScrollAux
sta SETREADAUX sta SETREADAUX
.1 lda (ZPDRV+2),y .1 lda (ZPDRV+2),y
@ -425,22 +439,21 @@ DevMgr.SYS.ScrollAux
sta CLRREADAUX sta CLRREADAUX
rts rts
*-------------------------------------- *--------------------------------------
DevMgr.SYS.Scroll DRV.SYS.Scroll ldx #1
ldx #1 .1 jsr DRV.SYS.SetBaseX
.1 jsr DevMgr.SYS.SetBaseX
inx inx
lda DevMgr.SYS.BASEL,x lda DRV.SYS.BASEL,x
sta ZPDRV+2 sta ZPDRV+2
lda DevMgr.SYS.BASEH,x lda DRV.SYS.BASEH,x
sta ZPDRV+3 sta ZPDRV+3
php php
sei sei
ldx #DevMgr.SYS.Scroll-DevMgr.SYS.ScrollAux-1 ldx #DRV.SYS.Scroll-DRV.SYS.ScrollAux-1
.2 lda DevMgr.SYS.ScrollAux,x .2 lda DRV.SYS.ScrollAux,x
sta $102,x sta $102,x
dex dex
bpl .2 bpl .2
@ -463,8 +476,8 @@ DevMgr.SYS.Scroll
cpx #23 cpx #23
bne .1 Fall in ClrLineAtX for last line bne .1 Fall in ClrLineAtX for last line
*-------------------------------------- *--------------------------------------
DevMgr.SYS.ClrLineAtX DRV.SYS.ClrLineAtX
jsr DevMgr.SYS.SetBaseX jsr DRV.SYS.SetBaseX
lda #$A0 lda #$A0
ldy #39 ldy #39
@ -483,19 +496,19 @@ DevMgr.SYS.ClrLineAtX
rts rts
*-------------------------------------- *--------------------------------------
DevMgr.SYS.Home ldx #23 DRV.SYS.Home ldx #23
.1 jsr DevMgr.SYS.ClrLineAtX .1 jsr DRV.SYS.ClrLineAtX
dex dex
bne .1 bne .1
stz DevMgr.SYS.CH stz DRV.SYS.CH
lda #1 lda #1
sta DevMgr.SYS.CV sta DRV.SYS.CV
rts rts
*-------------------------------------- *--------------------------------------
DevMgr.SYS.SetCharAtYX DRV.SYS.SetCharAtYX
cmp #$40 cmp #$40
bcc .1 bcc .1
cmp #$5F cmp #$5F
@ -504,7 +517,7 @@ DevMgr.SYS.SetCharAtYX
.1 phy .1 phy
pha pha
jsr DevMgr.SYS.SetBaseX jsr DRV.SYS.SetBaseX
tya tya
lsr lsr
tay tay
@ -526,18 +539,18 @@ DevMgr.SYS.SetCharAtYX
ply ply
rts rts
*-------------------------------------- *--------------------------------------
DevMgr.SYS.SetBaseX DRV.SYS.SetBaseX
lda DevMgr.SYS.BASEL,x lda DRV.SYS.BASEL,x
sta ZPDRV sta ZPDRV
lda DevMgr.SYS.BASEH,x lda DRV.SYS.BASEH,x
sta ZPDRV+1 sta ZPDRV+1
rts rts
*-------------------------------------- *--------------------------------------
DevMgr.SYS.CH .BS 1 DRV.SYS.CH .BS 1
DevMgr.SYS.CV .BS 1 DRV.SYS.CV .BS 1
*-------------------------------------- *--------------------------------------
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 DRV.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 04.04.05.05.06.06.07.07.04.04.05.05.06.06.07.07.04.04.05.05.06.06.07.07 DRV.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
*-------------------------------------- *--------------------------------------
MAN MAN
SAVE /A2OSX.SRC/SYS/KERNEL.S.DRV SAVE /A2OSX.SRC/SYS/KERNEL.S.DRV

View File

@ -11,7 +11,7 @@ pDev .EQ ZPKERNEL+10
pNode .EQ ZPKERNEL+12 pNode .EQ ZPKERNEL+12
pIOBuf .EQ ZPKERNEL+14 pIOBuf .EQ ZPKERNEL+14
*-------------------------------------- *--------------------------------------
SYS.BASL0 .EQ $400 SYS.BASL0 .EQ $800
*-------------------------------------- *--------------------------------------
Kernel.Init sei Kernel.Init sei
ldx #$FF ldx #$FF