mirror of
https://github.com/A2osX/A2osX.git
synced 2025-08-15 01:27:49 +00:00
Kernel 0.9.2
This commit is contained in:
Binary file not shown.
Binary file not shown.
@@ -81,6 +81,7 @@ DRV.CS.START cld
|
|||||||
.DA CLOSE
|
.DA CLOSE
|
||||||
.DA READ
|
.DA READ
|
||||||
.DA WRITE
|
.DA WRITE
|
||||||
|
.DA A2osX.BADCALL IRQ
|
||||||
L.DEVSTAT .DA DEVSTAT
|
L.DEVSTAT .DA DEVSTAT
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
J.CtrlChars .DA ENQ 5
|
J.CtrlChars .DA ENQ 5
|
||||||
|
@@ -279,10 +279,7 @@ S.MSTAT .EQ 24
|
|||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* IOCTL device API
|
* IOCTL device API
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* JMP : (A=Device)
|
C.EOF .EQ 4
|
||||||
* DRV : AUXLC entry point
|
|
||||||
* BLK : ROM Entry point Cn($Cnff)
|
|
||||||
* PRT : ROM Entry point Cn($Cnff)+3
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
DEVID.NULL .EQ 0
|
DEVID.NULL .EQ 0
|
||||||
DEVID.SYS .EQ 2
|
DEVID.SYS .EQ 2
|
||||||
@@ -390,8 +387,8 @@ S.NODE.DIR .EQ 8
|
|||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
S.NODE.DEV.BUSID .EQ 2
|
S.NODE.DEV.BUSID .EQ 2
|
||||||
S.NODE.DEV.DEVID .EQ 3
|
S.NODE.DEV.DEVID .EQ 3
|
||||||
S.NODE.DEV.DRVPTR .EQ 4 word
|
S.NODE.DEV.BUSPTR .EQ 4 word
|
||||||
S.NODE.DEV.ROMPTR .EQ 6 word
|
S.NODE.DEV.DRVPTR .EQ 6 word
|
||||||
S.NODE.DEV.NAME .EQ 8 C-String
|
S.NODE.DEV.NAME .EQ 8 C-String
|
||||||
*
|
*
|
||||||
S.NODE.DEV .EQ 16
|
S.NODE.DEV .EQ 16
|
||||||
|
@@ -8,35 +8,24 @@ AUTO 4,1
|
|||||||
K.ENV.SIZE .EQ 256
|
K.ENV.SIZE .EQ 256
|
||||||
K.FLT.MAX .EQ 4
|
K.FLT.MAX .EQ 4
|
||||||
K.EVT.MAX .EQ 4
|
K.EVT.MAX .EQ 4
|
||||||
K.DEV.MAX .EQ 32
|
K.NODE.MAX .EQ 128
|
||||||
K.PS.MAX .EQ 32
|
K.PS.MAX .EQ 32
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
H.BIN.T .EQ 0
|
|
||||||
H.BIN.T.DRV65 .EQ $4CD8 6502:cld,jmp abs
|
|
||||||
H.BIN.T.LIB65 .EQ $7CD8 6502:cld,jmp (abs,x)
|
|
||||||
H.BIN.T.BIN65 .EQ $7CD8 6502:cld,jmp (abs,x)
|
|
||||||
*H.BIN.T.LIB80 .EQ $A28D Z80:
|
|
||||||
*H.BIN.T.BIN80 .EQ $A28D Z80:
|
|
||||||
H.BIN.JMP .EQ 2
|
|
||||||
H.BIN.CPU .EQ 4
|
|
||||||
H.BIN.CPU.6502 .EQ $60
|
|
||||||
H.BIN.CPU.65C02 .EQ $61
|
|
||||||
H.BIN.CPU.65R02 .EQ $62
|
|
||||||
H.BIN.CPU.65816 .EQ $63
|
|
||||||
*H.BIN.VERSION .EQ 5
|
|
||||||
H.BIN.CODE.LEN .EQ 8
|
|
||||||
*
|
|
||||||
H.BIN.DS.SIZE .EQ 10
|
|
||||||
H.BIN.SS.SIZE .EQ 12
|
|
||||||
H.BIN.ZP.SIZE .EQ 13
|
|
||||||
*
|
|
||||||
H.BIN.EXE.REL.TABLE .EQ 16
|
|
||||||
*
|
|
||||||
H.BIN.DRV.REL.TABLE .EQ 4
|
|
||||||
*--------------------------------------
|
|
||||||
ZPKERNEL .EQ $0
|
ZPKERNEL .EQ $0
|
||||||
ZPMEMMGR .EQ $10
|
ZPMEMMGR .EQ $10
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
ZPPtr1 .EQ ZPKERNEL
|
||||||
|
ZPPtr2 .EQ ZPKERNEL+2
|
||||||
|
ZPPtr3 .EQ ZPKERNEL+4
|
||||||
|
ZPPtr4 .EQ ZPKERNEL+6
|
||||||
|
|
||||||
|
pIOCTL .EQ ZPKERNEL+8
|
||||||
|
pDev .EQ ZPKERNEL+10
|
||||||
|
pNode .EQ ZPKERNEL+12
|
||||||
|
pIOBuf .EQ ZPKERNEL+14
|
||||||
|
*--------------------------------------
|
||||||
|
SYS.BASL0 .EQ $800
|
||||||
|
*--------------------------------------
|
||||||
* AuxMove / XFer
|
* AuxMove / XFer
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
A1L .EQ $3C
|
A1L .EQ $3C
|
||||||
@@ -123,7 +112,7 @@ Evt.Table .EQ $0D60 K.EVT.MAX*S.EVT.SIZE=4*8=32b
|
|||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
Flt.Table .EQ $0D80 K.FLT.MAX*S.FLT.SIZE=4*32=128b
|
Flt.Table .EQ $0D80 K.FLT.MAX*S.FLT.SIZE=4*32=128b
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
Dev.Table .EQ $0E00 K.DEV.MAX*2=32*2=64b
|
Node.Table .EQ $0E00 K.NODE.MAX*2=128*2=256b
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
K.IOBuf .EQ $0F00
|
K.IOBuf .EQ $0F00
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
@@ -149,6 +138,29 @@ Mem.XHiMem .EQ $C000
|
|||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
DevMgr.HiMem .EQ $FFFA Protect IRQ vectors in Aux LC
|
DevMgr.HiMem .EQ $FFFA Protect IRQ vectors in Aux LC
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
H.BIN.T .EQ 0
|
||||||
|
H.BIN.T.DRV65 .EQ $4CD8 6502:cld,jmp abs
|
||||||
|
H.BIN.T.LIB65 .EQ $7CD8 6502:cld,jmp (abs,x)
|
||||||
|
H.BIN.T.BIN65 .EQ $7CD8 6502:cld,jmp (abs,x)
|
||||||
|
*H.BIN.T.LIB80 .EQ $A28D Z80:
|
||||||
|
*H.BIN.T.BIN80 .EQ $A28D Z80:
|
||||||
|
H.BIN.JMP .EQ 2
|
||||||
|
H.BIN.CPU .EQ 4
|
||||||
|
H.BIN.CPU.6502 .EQ $60
|
||||||
|
H.BIN.CPU.65C02 .EQ $61
|
||||||
|
H.BIN.CPU.65R02 .EQ $62
|
||||||
|
H.BIN.CPU.65816 .EQ $63
|
||||||
|
*H.BIN.VERSION .EQ 5
|
||||||
|
H.BIN.CODE.LEN .EQ 8
|
||||||
|
*
|
||||||
|
H.BIN.DS.SIZE .EQ 10
|
||||||
|
H.BIN.SS.SIZE .EQ 12
|
||||||
|
H.BIN.ZP.SIZE .EQ 13
|
||||||
|
*
|
||||||
|
H.BIN.EXE.REL.TABLE .EQ 16
|
||||||
|
*
|
||||||
|
H.BIN.DRV.REL.TABLE .EQ 4
|
||||||
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE /A2OSX.BUILD/INC/KERNEL.I
|
SAVE /A2OSX.BUILD/INC/KERNEL.I
|
||||||
LOAD /A2OSX.SRC/SYS/KERNEL.S
|
LOAD /A2OSX.SRC/SYS/KERNEL.S
|
||||||
|
@@ -8,6 +8,7 @@ AUTO 6
|
|||||||
*$00 - No Error
|
*$00 - No Error
|
||||||
MLI.E.BADCALL .EQ $01 Bad Call Number
|
MLI.E.BADCALL .EQ $01 Bad Call Number
|
||||||
*MLI.E.BADCNT .EQ $04 Bad Parameter Count
|
*MLI.E.BADCNT .EQ $04 Bad Parameter Count
|
||||||
|
MLI.E.BADCTL .EQ $21 Invalid Status Code
|
||||||
*MLI.E.IRQFULL .EQ $25 Interrupt Table Full
|
*MLI.E.IRQFULL .EQ $25 Interrupt Table Full
|
||||||
MLI.E.IO .EQ $27 I/O Error
|
MLI.E.IO .EQ $27 I/O Error
|
||||||
MLI.E.NODEV .EQ $28 No Device Connected
|
MLI.E.NODEV .EQ $28 No Device Connected
|
||||||
|
@@ -80,7 +80,7 @@ K.LoadDrv >STYA .2+1 Save "BIN\0ARGS\0\0"
|
|||||||
jsr BIN.Load Y,A = "/PATH/BIN"
|
jsr BIN.Load Y,A = "/PATH/BIN"
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
>STYA pDrv
|
>STYA .3+1
|
||||||
stx .97+1
|
stx .97+1
|
||||||
|
|
||||||
ldx #$ff
|
ldx #$ff
|
||||||
@@ -96,7 +96,7 @@ K.LoadDrv >STYA .2+1 Save "BIN\0ARGS\0\0"
|
|||||||
lda #0
|
lda #0
|
||||||
adc .2+2 Y,A = ARGS
|
adc .2+2 Y,A = ARGS
|
||||||
|
|
||||||
jsr .88 call Dev.Detect
|
.3 jsr $ffff SELF MODIFIED, call Dev.Detect
|
||||||
bcs .96
|
bcs .96
|
||||||
|
|
||||||
jsr .96 Cleanup...
|
jsr .96 Cleanup...
|
||||||
@@ -111,9 +111,7 @@ K.LoadDrv >STYA .2+1 Save "BIN\0ARGS\0\0"
|
|||||||
jsr K.FreeMem
|
jsr K.FreeMem
|
||||||
pla
|
pla
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.88 jmp (pDrv)
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
BIN.FindLIB clc
|
BIN.FindLIB clc
|
||||||
.HS B0 bcs
|
.HS B0 bcs
|
||||||
@@ -317,8 +315,8 @@ K.InsDrv >STYA BIN.R.CS.Start
|
|||||||
sbc /DevMgr.HiMem
|
sbc /DevMgr.HiMem
|
||||||
bcs .9 No More Room to load Driver....
|
bcs .9 No More Room to load Driver....
|
||||||
|
|
||||||
lda DevMgr.Count
|
lda DevMgr.NodeCount
|
||||||
cmp #K.DEV.MAX
|
cmp #K.NODE.MAX
|
||||||
bne .10 No Device Handle Left
|
bne .10 No Device Handle Left
|
||||||
|
|
||||||
lda #K.E.OOH
|
lda #K.E.OOH
|
||||||
@@ -345,15 +343,15 @@ K.InsDrv >STYA BIN.R.CS.Start
|
|||||||
>LDYA BIN.R.End
|
>LDYA BIN.R.End
|
||||||
>STYA DevMgr.Free
|
>STYA DevMgr.Free
|
||||||
|
|
||||||
ldx DevMgr.Count
|
ldx DevMgr.NodeCount
|
||||||
lda DevMgr.Free
|
lda DevMgr.Free
|
||||||
sta Dev.Table
|
sta Node.Table,x
|
||||||
inx
|
inx
|
||||||
lda DevMgr.Free+1
|
lda DevMgr.Free+1
|
||||||
sta Dev.Table
|
sta Node.Table,x
|
||||||
|
|
||||||
inx
|
inx
|
||||||
stx DevMgr.Count
|
stx DevMgr.NodeCount
|
||||||
|
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
@@ -547,22 +545,9 @@ BIN.RelDrv ldy #H.BIN.DRV.REL.TABLE
|
|||||||
* Bit 2-1-0 : opcode + @ length
|
* Bit 2-1-0 : opcode + @ length
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* 0.1.2.3.4.5.6.7.8.9.A.B.C.D.E.F
|
* 0.1.2.3.4.5.6.7.8.9.A.B.C.D.E.F
|
||||||
BIN.65816 .HS 1.2.2.1.2.2.2.2.1.2.1.1.B.B.B.3
|
BIN.65816
|
||||||
.HS 2.2.2.1.2.2.2.2.1.B.1.1.B.B.B.3
|
* TO DO : Make 2 different tables
|
||||||
.HS B.2.2.1.2.2.2.2.1.2.1.1.B.B.B.3
|
* http://axis.llx.com/~nparker/a2/opcodes.html
|
||||||
.HS 2.2.2.1.2.2.2.2.1.B.1.1.B.B.B.3
|
|
||||||
.HS 1.2.2.1.2.2.2.2.1.2.1.1.B.B.B.3
|
|
||||||
.HS 2.2.2.1.2.2.2.2.1.B.1.1.1.B.B.3
|
|
||||||
.HS 1.2.2.1.2.2.2.2.1.2.1.1.B.B.B.3
|
|
||||||
.HS 2.2.2.1.2.2.2.2.1.B.1.1.B.B.B.3
|
|
||||||
.HS 2.2.2.1.2.2.2.2.1.2.1.1.B.B.B.3
|
|
||||||
.HS 2.2.2.1.2.2.2.2.1.B.1.1.B.B.B.3
|
|
||||||
.HS 2.2.2.1.2.2.2.2.1.2.1.1.B.B.B.3
|
|
||||||
.HS 2.2.2.1.2.2.2.2.1.B.1.1.B.B.B.3
|
|
||||||
.HS 2.2.2.1.2.2.2.2.1.2.1.1.B.B.B.3
|
|
||||||
.HS 2.2.2.1.2.2.2.2.1.B.1.1.1.B.B.3
|
|
||||||
.HS 2.2.2.1.2.2.2.2.1.2.1.1.B.B.B.3
|
|
||||||
.HS 2.2.2.1.2.2.2.2.1.B.1.1.1.B.B.3
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* 65R02 OPCODES
|
* 65R02 OPCODES
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@@ -525,7 +525,7 @@ CORE.PSResume sei
|
|||||||
DevMgr.Stat .DA DevMgr.FreeMem
|
DevMgr.Stat .DA DevMgr.FreeMem
|
||||||
DevMgr.Free .DA DevMgr.FreeMem
|
DevMgr.Free .DA DevMgr.FreeMem
|
||||||
.DA DevMgr.HiMem
|
.DA DevMgr.HiMem
|
||||||
DevMgr.Count .DA #0
|
DevMgr.NodeCount .DA #0
|
||||||
.BS 1
|
.BS 1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CORE.VBLState .BS 1
|
CORE.VBLState .BS 1
|
||||||
|
@@ -9,14 +9,14 @@ AUTO 4,1
|
|||||||
* CC = OK, CS = ERROR
|
* CC = OK, CS = ERROR
|
||||||
* Y,A = DEVSLOT
|
* Y,A = DEVSLOT
|
||||||
*\--------------------------------------
|
*\--------------------------------------
|
||||||
K.GetDevByID cmp DevMgr.Count
|
K.GetDevByID cmp DevMgr.NodeCount
|
||||||
bcs K.GetDev.NODEV
|
bcs K.GetDev.NODEV
|
||||||
|
|
||||||
tax
|
tax
|
||||||
|
|
||||||
lda Dev.Table+1,x
|
lda Node.Table+1,x
|
||||||
beq K.GetDev.NODEV
|
beq K.GetDev.NODEV
|
||||||
ldy Dev.Table,x
|
ldy Node.Table,x
|
||||||
|
|
||||||
* clc
|
* clc
|
||||||
|
|
||||||
@@ -34,9 +34,9 @@ K.GetDevByName >STYA ZPPtr1
|
|||||||
|
|
||||||
ldx #0
|
ldx #0
|
||||||
|
|
||||||
lda Dev.Table+1,x
|
lda Node.Table+1,x
|
||||||
beq .4
|
beq .4
|
||||||
ldy Dev.Table,x
|
ldy Node.Table,x
|
||||||
|
|
||||||
>STYA ZPPtr2
|
>STYA ZPPtr2
|
||||||
|
|
||||||
@@ -68,7 +68,7 @@ K.GetDevByName >STYA ZPPtr1
|
|||||||
|
|
||||||
.4 inx
|
.4 inx
|
||||||
inx
|
inx
|
||||||
cpx DevMgr.Count
|
cpx DevMgr.NodeCount
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
K.GetDev.NODEV lda #MLI.E.NODEV
|
K.GetDev.NODEV lda #MLI.E.NODEV
|
||||||
|
@@ -23,7 +23,7 @@ DRV.DiskII cld
|
|||||||
.DA A2osX.BadCall
|
.DA A2osX.BadCall
|
||||||
.DA A2osX.BadCall
|
.DA A2osX.BadCall
|
||||||
.DA A2osX.BadCall
|
.DA A2osX.BadCall
|
||||||
.DA A2osX.BadCall
|
.DA A2osX.BadCall IRQ
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
DRV.DiskII.S >LDYAI DRV.DiskII.Stat
|
DRV.DiskII.S >LDYAI DRV.DiskII.Stat
|
||||||
clc
|
clc
|
||||||
@@ -85,7 +85,7 @@ DRV.RamDrive cld
|
|||||||
.DA A2osX.BadCall
|
.DA A2osX.BadCall
|
||||||
.DA A2osX.BadCall
|
.DA A2osX.BadCall
|
||||||
.DA A2osX.BadCall
|
.DA A2osX.BadCall
|
||||||
.DA A2osX.BadCall
|
.DA A2osX.BadCall IRQ
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
DRV.RamDrive.S jsr DRV.BlkDevice.GetCmdAndDevAX
|
DRV.RamDrive.S jsr DRV.BlkDevice.GetCmdAndDevAX
|
||||||
jsr GO.ProDOS
|
jsr GO.ProDOS
|
||||||
@@ -134,7 +134,7 @@ DRV.BlkDevice cld
|
|||||||
.DA A2osX.BadCall
|
.DA A2osX.BadCall
|
||||||
.DA A2osX.BadCall
|
.DA A2osX.BadCall
|
||||||
.DA A2osX.BadCall
|
.DA A2osX.BadCall
|
||||||
.DA A2osX.BadCall
|
.DA A2osX.BadCall IRQ
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
DRV.BlkDevice.S jsr DRV.BlkDevice.GetCmdAndDev
|
DRV.BlkDevice.S jsr DRV.BlkDevice.GetCmdAndDev
|
||||||
|
|
||||||
@@ -158,7 +158,7 @@ DRV.BlkDevice.RW
|
|||||||
DRV.BlkDevice.F jsr DRV.BlkDevice.GetCmdAndDev
|
DRV.BlkDevice.F jsr DRV.BlkDevice.GetCmdAndDev
|
||||||
|
|
||||||
DRV.BlkDevice.Go
|
DRV.BlkDevice.Go
|
||||||
ldy #S.NODE.DEV.ROMPTR
|
ldy #S.NODE.DEV.BUSPTR
|
||||||
lda (pDev),y
|
lda (pDev),y
|
||||||
sta .8+1
|
sta .8+1
|
||||||
iny
|
iny
|
||||||
@@ -225,6 +225,7 @@ DRV.SmartPort cld
|
|||||||
.DA DRV.SmartPort.NP CLOSE
|
.DA DRV.SmartPort.NP CLOSE
|
||||||
.DA DRV.SmartPort.P R
|
.DA DRV.SmartPort.P R
|
||||||
.DA DRV.SmartPort.P W
|
.DA DRV.SmartPort.P W
|
||||||
|
.DA A2osX.BADCALL IRQ
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
DRV.SmartPort.S jsr DRV.SmartPort.GetDev
|
DRV.SmartPort.S jsr DRV.SmartPort.GetDev
|
||||||
>LDYAI K.S.DSTAT
|
>LDYAI K.S.DSTAT
|
||||||
@@ -242,7 +243,7 @@ DRV.SmartPort.NP
|
|||||||
jsr DRV.SmartPort.GetDev
|
jsr DRV.SmartPort.GetDev
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
DRV.SmartPort.Go
|
DRV.SmartPort.Go
|
||||||
ldy #S.NODE.DEV.ROMPTR
|
ldy #S.NODE.DEV.BUSPTR
|
||||||
lda (pDev),y
|
lda (pDev),y
|
||||||
sta .8+1
|
sta .8+1
|
||||||
iny
|
iny
|
||||||
@@ -278,27 +279,68 @@ DRV.SmartPort.GetDev
|
|||||||
DRV.SmartPort.Cnt
|
DRV.SmartPort.Cnt
|
||||||
.HS 03030301030101010404
|
.HS 03030301030101010404
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* NULL DEVICE
|
* NULL DEVICE
|
||||||
|
* - OPEN,WRITE,CLOSE always succeed.
|
||||||
|
* - READ returns EOF.
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
DRV.NULL cld
|
DRV.NULL cld
|
||||||
jmp (.1,x)
|
jmp (.1,x)
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.1 .DA .2 STATUS
|
.1 .DA DRV.NULL.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 A2osX.BADCALL CONTROL
|
.DA A2osX.BADCALL CONTROL
|
||||||
.DA A2osX.BADCALL INIT
|
.DA A2osX.BADCALL INIT
|
||||||
.DA A2osX.BADCALL OPEN
|
.DA DRV.NULL.OPEN
|
||||||
.DA A2osX.BADCALL CLOSE
|
.DA DRV.NULL.CLOSE
|
||||||
.DA A2osX.BADCALL READ
|
.DA DRV.NULL.READ
|
||||||
.DA .8 WRITE
|
.DA DRV.NULL.WRITE
|
||||||
|
.DA A2osX.BADCALL IRQ
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.2 >LDYAI .3
|
DRV.NULL.STATUS >STYA pIOCTL
|
||||||
.8 clc
|
|
||||||
|
ldy #S.IOCTL.STATCODE
|
||||||
|
lda (pIOCTL),y
|
||||||
|
beq .1
|
||||||
|
|
||||||
|
cmp #S.IOCTL.STATCODE.GETDIB
|
||||||
|
bne .9
|
||||||
|
|
||||||
|
ldx #15
|
||||||
|
.HS 2C bit abs
|
||||||
|
.1 ldx #3
|
||||||
|
|
||||||
|
ldy #S.IOCTL.BUFPTR
|
||||||
|
lda (pIOCTL),y
|
||||||
|
sta .3+1
|
||||||
|
iny
|
||||||
|
lda (pIOCTL),y
|
||||||
|
sta .3+2
|
||||||
|
|
||||||
|
.2 lda DRV.NULL.DSTAT,x
|
||||||
|
.3 sta $ffff,x SELF MODIFIED
|
||||||
|
dex
|
||||||
|
bpl .2
|
||||||
|
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
|
||||||
|
.9 lda #MLI.E.BADCTL
|
||||||
|
sec
|
||||||
|
rts
|
||||||
|
|
||||||
|
DRV.NULL.READ >STYA pIOCTL
|
||||||
|
|
||||||
|
ldx #C.EOF
|
||||||
|
jmp DRV.READ.X
|
||||||
|
|
||||||
|
DRV.NULL.OPEN
|
||||||
|
DRV.NULL.WRITE
|
||||||
|
DRV.NULL.CLOSE clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.3 .DA #S.DSTAT.S.WRITE+S.DSTAT.S.READ
|
DRV.NULL.DSTAT .DA #S.DSTAT.S.WRITE+S.DSTAT.S.READ+S.DSTAT.S.OPENED
|
||||||
.DA #0,#0,#0
|
.DA #0,#0,#0
|
||||||
>PSTR "NULL DEVICE"
|
>PSTR "NULL DEVICE"
|
||||||
.BS 5
|
.BS 5
|
||||||
@@ -316,23 +358,24 @@ DRV.SYS cld
|
|||||||
.DA A2osX.BADCALL FORMAT
|
.DA A2osX.BADCALL FORMAT
|
||||||
.DA DRV.SYS.Control
|
.DA DRV.SYS.Control
|
||||||
.DA A2osX.BADCALL INIT
|
.DA A2osX.BADCALL INIT
|
||||||
.DA DRV.SYS.Open
|
.DA DRV.SYS.OPEN
|
||||||
.DA A2osX.BADCALL CLOSE
|
.DA DRV.SYS.CLOSE
|
||||||
.DA DRV.SYS.Read
|
.DA DRV.SYS.Read
|
||||||
.DA DRV.SYS.Write
|
.DA DRV.SYS.Write
|
||||||
|
.DA A2osX.BADCALL IRQ
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.2 >LDYAI .3
|
.2 >LDYAI .3
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.3 .DA #S.DSTAT.S.WRITE+S.DSTAT.S.READ
|
.3 .DA #S.DSTAT.S.WRITE+S.DSTAT.S.READ+S.DSTAT.S.OPENED
|
||||||
.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
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
DRV.SYS.Open lda #1
|
DRV.SYS.Open lda #DEVID.SYS
|
||||||
sta A2osX.SCRNDEVS+1
|
sta A2osX.SCRNDEVS+1
|
||||||
jsr DRV.SYS.Home
|
jsr DRV.SYS.Home
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
@@ -343,10 +386,13 @@ DRV.SYS.Control sta SETTEXT
|
|||||||
sta SETPAGE2
|
sta SETPAGE2
|
||||||
lda #2
|
lda #2
|
||||||
sta A2osX.ASCREEN
|
sta A2osX.ASCREEN
|
||||||
|
DRV.SYS.CLOSE
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
DRV.SYS.Read lda A2osX.ASCREEN
|
DRV.SYS.Read >STYA pIOCTL
|
||||||
|
|
||||||
|
lda A2osX.ASCREEN
|
||||||
cmp #2 is SYS active?
|
cmp #2 is SYS active?
|
||||||
bne .9
|
bne .9
|
||||||
|
|
||||||
@@ -358,14 +404,49 @@ DRV.SYS.Read lda A2osX.ASCREEN
|
|||||||
|
|
||||||
and #$7F
|
and #$7F
|
||||||
|
|
||||||
clc
|
tax
|
||||||
rts
|
jmp DRV.READ.X
|
||||||
|
|
||||||
.9 lda #0 Error = no event
|
.9 lda #0 Error = no event
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
DRV.SYS.Write phx
|
DRV.SYS.WRITE >STYA pIOCTL
|
||||||
|
|
||||||
|
ldy #S.IOCTL.BUFPTR
|
||||||
|
lda (pIOCTL),y
|
||||||
|
|
||||||
|
sta ZPDRV+4
|
||||||
|
iny
|
||||||
|
lda (pIOCTL),y
|
||||||
|
sta ZPDRV+5
|
||||||
|
|
||||||
|
ldy #S.IOCTL.BYTECNT
|
||||||
|
lda (pIOCTL),y
|
||||||
|
eor #$ff
|
||||||
|
tax
|
||||||
|
iny
|
||||||
|
lda (pIOCTL),y
|
||||||
|
eor #$ff
|
||||||
|
tay
|
||||||
|
|
||||||
|
.2 inx
|
||||||
|
bne .3
|
||||||
|
iny
|
||||||
|
bne .3
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
|
||||||
|
.3 lda (ZPDRV)
|
||||||
|
inc ZPDRV+4
|
||||||
|
bne .4
|
||||||
|
inc ZPDRV+5
|
||||||
|
|
||||||
|
.4 jsr DRV.SYS.COUT
|
||||||
|
|
||||||
|
.5 bra .2
|
||||||
|
*--------------------------------------
|
||||||
|
DRV.SYS.COUT phx
|
||||||
phy
|
phy
|
||||||
cmp #' '
|
cmp #' '
|
||||||
bcs .7
|
bcs .7
|
||||||
@@ -537,6 +618,24 @@ DRV.SYS.CV .BS 1
|
|||||||
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
|
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
|
||||||
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
|
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
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
DRV.READ.X ldy #S.IOCTL.BYTECNT
|
||||||
|
lda #1
|
||||||
|
sta (pIOCTL),y
|
||||||
|
iny
|
||||||
|
dec
|
||||||
|
sta (pIOCTL),y
|
||||||
|
|
||||||
|
ldy #S.IOCTL.BUFPTR
|
||||||
|
lda (pIOCTL),y
|
||||||
|
sta .1+1
|
||||||
|
iny
|
||||||
|
lda (pIOCTL),y
|
||||||
|
sta .1+2
|
||||||
|
|
||||||
|
.1 stx $ffff SELF MODIFIED
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE /A2OSX.SRC/SYS/KERNEL.S.DRV
|
SAVE /A2OSX.SRC/SYS/KERNEL.S.DRV
|
||||||
LOAD /A2OSX.SRC/SYS/KERNEL.S
|
LOAD /A2OSX.SRC/SYS/KERNEL.S
|
||||||
|
@@ -2,17 +2,6 @@ NEW
|
|||||||
PREFIX /A2OSX.BUILD
|
PREFIX /A2OSX.BUILD
|
||||||
AUTO 4,1
|
AUTO 4,1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
ZPPtr1 .EQ ZPKERNEL
|
|
||||||
ZPPtr2 .EQ ZPKERNEL+2
|
|
||||||
ZPPtr3 .EQ ZPKERNEL+4
|
|
||||||
ZPPtr4 .EQ ZPKERNEL+6
|
|
||||||
pDrv .EQ ZPKERNEL+8
|
|
||||||
pDev .EQ ZPKERNEL+10
|
|
||||||
pNode .EQ ZPKERNEL+12
|
|
||||||
pIOBuf .EQ ZPKERNEL+14
|
|
||||||
*--------------------------------------
|
|
||||||
SYS.BASL0 .EQ $800
|
|
||||||
*--------------------------------------
|
|
||||||
Kernel.Init sei
|
Kernel.Init sei
|
||||||
ldx #$FF
|
ldx #$FF
|
||||||
txs
|
txs
|
||||||
@@ -809,10 +798,10 @@ DevMgrInit >LDYAI MSG.DEV
|
|||||||
sta NODE.BDEV+S.NODE.DEV.BUSID
|
sta NODE.BDEV+S.NODE.DEV.BUSID
|
||||||
|
|
||||||
lda DEVPTRS,x
|
lda DEVPTRS,x
|
||||||
sta NODE.BDEV+S.NODE.DEV.ROMPTR
|
sta NODE.BDEV+S.NODE.DEV.BUSPTR
|
||||||
|
|
||||||
lda DEVPTRS+1,x
|
lda DEVPTRS+1,x
|
||||||
sta NODE.BDEV+S.NODE.DEV.ROMPTR+1
|
sta NODE.BDEV+S.NODE.DEV.BUSPTR+1
|
||||||
|
|
||||||
sta ZPPtr1+1
|
sta ZPPtr1+1
|
||||||
stz ZPPtr1
|
stz ZPPtr1
|
||||||
@@ -894,7 +883,7 @@ DevMgrInit.USR >LDYAI DRV.BlkDevice
|
|||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
DevMgrInit.BLK ldy #$ff
|
DevMgrInit.BLK ldy #$ff
|
||||||
lda (ZPPtr1),y
|
lda (ZPPtr1),y
|
||||||
sta NODE.BDEV+S.NODE.DEV.ROMPTR
|
sta NODE.BDEV+S.NODE.DEV.BUSPTR
|
||||||
|
|
||||||
>LDYAI DRV.BlkDevice
|
>LDYAI DRV.BlkDevice
|
||||||
jmp DevMgrInit.AddDev
|
jmp DevMgrInit.AddDev
|
||||||
@@ -904,7 +893,7 @@ DevMgrInit.SP ldy #$ff
|
|||||||
clc
|
clc
|
||||||
adc #3 Compute smartport entry point
|
adc #3 Compute smartport entry point
|
||||||
sta .1+1
|
sta .1+1
|
||||||
sta NODE.BDEV+S.NODE.DEV.ROMPTR
|
sta NODE.BDEV+S.NODE.DEV.BUSPTR
|
||||||
lda ZPPtr1+1
|
lda ZPPtr1+1
|
||||||
sta .1+2
|
sta .1+2
|
||||||
|
|
||||||
@@ -935,13 +924,13 @@ DevMgrInit.AddDev
|
|||||||
>LDYAI NODE.BDEV
|
>LDYAI NODE.BDEV
|
||||||
|
|
||||||
DevMgrInit.AddNode
|
DevMgrInit.AddNode
|
||||||
ldx DevMgr.Count
|
ldx DevMgr.NodeCount
|
||||||
sta Dev.Table+1,x
|
sta Node.Table+1,x
|
||||||
tya
|
tya
|
||||||
sta Dev.Table,x
|
sta Node.Table,x
|
||||||
inx
|
inx
|
||||||
inx
|
inx
|
||||||
stx DevMgr.Count
|
stx DevMgr.NodeCount
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
@@ -6,8 +6,6 @@ IO.SELECT jsr K.GetMemPtr
|
|||||||
>STYA pNode
|
>STYA pNode
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
IO
|
|
||||||
*--------------------------------------
|
|
||||||
IO.WRITE lda (pNode) #S.NODE.T
|
IO.WRITE lda (pNode) #S.NODE.T
|
||||||
tax
|
tax
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@@ -35,7 +35,7 @@ K.IrqHAuxLC cld
|
|||||||
|
|
||||||
lda RDREADAUX
|
lda RDREADAUX
|
||||||
pha
|
pha
|
||||||
sta CLRREADAUX Make sure we can access Dev.Table
|
sta CLRREADAUX Make sure we can access Node.Table
|
||||||
|
|
||||||
lda RDWRITEAUX
|
lda RDWRITEAUX
|
||||||
pha
|
pha
|
||||||
@@ -188,30 +188,44 @@ K.IrqH.Switch inc IRQ.Tick
|
|||||||
.8 clc exit with V flag set
|
.8 clc exit with V flag set
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
K.IrqH.DEV >LDYAI Dev.Table
|
K.IrqH.DEV ldx #0
|
||||||
>STYA $fe
|
|
||||||
|
|
||||||
ldx DevMgr.Count
|
|
||||||
|
|
||||||
.1 ldy #S.DEV.S
|
.1 lda Node.Table+1,x
|
||||||
lda ($fe),y
|
|
||||||
and #S.DEV.S.IRQ
|
|
||||||
beq .2
|
beq .2
|
||||||
|
|
||||||
phx
|
sta $ff
|
||||||
ldx #DEVMGR.IRQ
|
lda Node.Table,x
|
||||||
jsr .88
|
sta $fe
|
||||||
|
|
||||||
|
ldy #S.NODE.DEV.DRVPTR
|
||||||
|
lda ($fe),y
|
||||||
|
pha
|
||||||
|
|
||||||
|
iny
|
||||||
|
lda ($fe),y
|
||||||
|
sta $ff
|
||||||
|
pla
|
||||||
|
sta $fe
|
||||||
|
|
||||||
|
ldy #IOCTL.IRQ+4+1
|
||||||
|
lda ($fe),y
|
||||||
|
cmp /A2osX.BADCALL
|
||||||
|
beq .2
|
||||||
|
|
||||||
|
sta .10+2
|
||||||
|
dey
|
||||||
|
lda ($fe),y
|
||||||
|
sta .10+1
|
||||||
|
|
||||||
|
.10 jsr $ffff SELF MODIFIED
|
||||||
|
|
||||||
plx
|
plx
|
||||||
bcc .8 CC, IRQ cleared by device
|
bcc .8 CC, IRQ cleared by device
|
||||||
|
|
||||||
.2 lda $fe
|
.2 inx
|
||||||
clc
|
inx
|
||||||
adc #S.DEV
|
|
||||||
sta $fe
|
|
||||||
bcc .3
|
|
||||||
inc $ff
|
|
||||||
|
|
||||||
.3 dex
|
.3 cpx DevMgr.NodeCount
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
sec
|
sec
|
||||||
@@ -219,8 +233,6 @@ K.IrqH.DEV >LDYAI Dev.Table
|
|||||||
.8 clv clear V (no task switching)
|
.8 clv clear V (no task switching)
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.88 jmp ($fe)
|
|
||||||
*--------------------------------------
|
|
||||||
MAN
|
MAN
|
||||||
SAVE /A2OSX.SRC/SYS/KERNEL.S.IRQ
|
SAVE /A2OSX.SRC/SYS/KERNEL.S.IRQ
|
||||||
LOAD /A2OSX.SRC/SYS/KERNEL.S
|
LOAD /A2OSX.SRC/SYS/KERNEL.S
|
||||||
|
Reference in New Issue
Block a user