Kernel version 0.9 : BLOCK DEVICES, extended S.DEV struct to store ROM entry point,BUS/DEV....moved the whole code to 16 Bytes S.DEV (Max 32 devices)

This commit is contained in:
Rémy GIBERT 2017-03-15 17:44:15 +01:00
parent cfac8b4821
commit 2406290d59
52 changed files with 223 additions and 357 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -16,14 +16,14 @@ INSDRV SSC.I.DRV 9600,N,8,1,X
STARTPROC GETTY COM2 ${A2OSX}SBIN/LOGIN
#INSDRV PIC.DRV
# Network Section
#INSDRV UTHERNET.DRV 000E3A123456
INSDRV UTHERNET.DRV 000E3A123456
#INSDRV UTHERNET2.DRV 0008DC123456
#INSDRV UTHER2.AI.DRV 0008DC123456
#INSDRV LANCEGS.DRV
#STARTPROC TCPIP
STARTPROC TCPIP
#STARTPROC DHCPCLNT
#STARTPROC TELNETD
#STARTPROC HTTPD
#TELNETD
#NFSMOUNT 192.168.1.5:/A2OSX /MNT/A2OSX
#CIFSMOUNT 192.168.1.5:/MSSHARE /MNT/MSSHARE
# End Network Section

View File

@ -82,13 +82,7 @@ CS.RUN >LDYA L.MSG0
CS.RUN.DUMPDEV sta DevID
>SYSCALL GetDevByIDA
>STYA ZPDevPtr
ldy #S.DEV.JMP
lda (ZPDevPtr),y
sta NetDevJmp+1
iny
lda (ZPDevPtr),y
sta NetDevJmp+2
>STYA NetDevJmp+1
ldx #DEVMGR.STATUS
jsr NetDevJmp
@ -104,19 +98,14 @@ CS.RUN.DUMPDEV sta DevID
cpy #S.DEVSTAT.NET.MAC-1
bne .1
ldy #S.DEV.F
lda (ZPDevPtr),y
and #S.DEV.F.LEN
sta DevName
tax
lda #S.DEV.NAME
clc
adc ZPDevPtr
tay
lda /S.DEV.NAME
adc ZPDevPtr+1
.10 iny
lda (ZPDevPtr),y
sta DevName-S.DEV.NAME,y
dex
bne .10
>PUSHW L.DevName
>PUSHYA
>PUSHB DevID

View File

@ -36,7 +36,6 @@ CS.START cld
L.MSG0 .DA MSG0
L.MSG1 .DA MSG1
L.MSG2 .DA MSG2
L.DEV.NAME .DA DEV.NAME
.DA 0
*--------------------------------------
CS.INIT clc
@ -53,37 +52,30 @@ CS.RUN >LDYA L.MSG0
bcc .10
jmp .71
.10 >STYA ZPPTR1
.10 >STYA pDev
>STYA ZPPTR1
ldy #S.DEV.DRV.JMP+1
>PUSHB (pDev),y
ldy #S.DEV.JMP+1
>PUSHB (ZPPTR1),y
sta GetDevStatusJmp+2
dey
>PUSHB (ZPPTR1),y
sta GetDevStatusJmp+1
>PUSHB (pDev),y
lda #S.DEV.NAME
clc
adc pDev
tay
lda /S.DEV.NAME
adc pDev+1
>PUSHYA
ldy #S.DEV.F
lda (ZPPTR1),y
and #S.DEV.F.LEN
sta DEV.NAME
tax
iny
.2 lda (ZPPTR1),y
sta DEV.NAME-S.DEV.F,y
iny
dex
bne .2
>PUSHW L.DEV.NAME
ldy #S.DEV.F
lda (ZPPTR1),y
and #$FF^S.DEV.F.LEN
>PUSHA
>PUSHB (pDev),y
ldy #S.DEV.S
>PUSHB (ZPPTR1),y
>PUSHB (pDev),y
>PUSHB DEV.ID
@ -91,7 +83,11 @@ CS.RUN >LDYA L.MSG0
>SYSCALL CPrintFYA
bcs .9
jsr GetDevStatus
>LDYA ZPPTR1
>STYA pDev
ldx #DEVMGR.STATUS
jsr pDevJmp
bcs .7
>STYA ZPPTR2
@ -139,16 +135,12 @@ CS.EVENT sec
CS.QUIT clc
rts
*--------------------------------------
GetDevStatus ldx #DEVMGR.STATUS
GetDevStatusJmp jmp $ffff
*--------------------------------------
CS.END
MSG0 >CSTR "ID Status Flags Name Addr. Typ/Sub IDString Version\r\n"
MSG1 >CSTR "%03d %b %b %4S $%H "
MSG2 >CSTR "$%h/$%h %16S %03d.%03d"
*--------------------------------------
DEV.ID .BS 1
DEV.NAME .BS 5
MAN
SAVE BIN/LSDEV.S
ASM

View File

@ -47,17 +47,16 @@ MSG.DETECT >CSTR "Apple IIe/IIc 80 Col Driver.\r\n"
*--------------------------------------
* Device Header (16 Bytes)
*--------------------------------------
DEV.HEADER .DA DRV.CS.START
DEV.HEADER cld
jmp (DRV.CS.START,x)
.DA #S.DEV.S.WRITE+S.DEV.S.READ
.DA #3
.AS "CON" NAME
.BS 6
>PSTR "CON" NAME
.HS 00 NAME must Be 5 bytes long
*--------------------------------------
* Driver Code
*--------------------------------------
DRV.CS.START cld
jmp (.1,x)
.1 .DA STATUS
DRV.CS.START .DA STATUS
.DA BADCALL
.DA BADCALL
.DA BADCALL

View File

@ -92,15 +92,15 @@ hArgs .BS 1
*--------------------------------------
* Device Header (16 Bytes)
*--------------------------------------
DEV.HEADER .DA DRV.CS.START
DEV.HEADER cld
jmp (DRV.CS.START,x)
.DA #S.DEV.S.WRITE+S.DEV.S.READ
.BS 6
DEV.HEADER.NAME >PSTR "COM1" NAME
*--------------------------------------
* Driver Code
*--------------------------------------
DRV.CS.START cld
jmp (.1,x)
.1 .DA STATUS
DRV.CS.START .DA STATUS
.DA BADCALL
.DA BADCALL
.DA BADCALL

View File

@ -95,15 +95,15 @@ hArgs .BS 1
*--------------------------------------
* Device Header (16 Bytes)
*--------------------------------------
DEV.HEADER .DA DRV.CS.START
DEV.HEADER cld
jmp (DRV.CS.START,x)
.DA #S.DEV.S.WRITE+S.DEV.S.READ+S.DEV.S.IRQ
.BS 6
DEV.HEADER.NAME >PSTR "COM1" NAME
*--------------------------------------
* Driver Code
*--------------------------------------
DRV.CS.START cld
jmp (.1,x)
.1 .DA STATUS
DRV.CS.START .DA STATUS
.DA BADCALL
.DA BADCALL
.DA BADCALL
@ -167,7 +167,6 @@ READ php
beq .9
lda INBUF,x
* jsr READ.DEBUG
inx
cpx #BUF.SIZE
bne .1
@ -185,56 +184,6 @@ READ php
sec
rts
*--------------------------------------
READ.DEBUG phx
phy
pha
lda #2
>SYSCALL GetDevByIDA
>STYA ZPTmpPtr1
lda (ZPTmpPtr1)
sta READ.DEBUG.JMP+1
ldy #1
lda (ZPTmpPtr1),y
sta READ.DEBUG.JMP+2
lda #'('
ldx #DEVMGR.WRITE
jsr READ.DEBUG.JMP
pla
pha
lsr
lsr
lsr
lsr
tax
lda READ.DEBUG.CHAR,x
ldx #DEVMGR.WRITE
jsr READ.DEBUG.JMP
pla
pha
and #$0F
tax
lda READ.DEBUG.CHAR,x
ldx #DEVMGR.WRITE
jsr READ.DEBUG.JMP
lda #')'
ldx #DEVMGR.WRITE
jsr READ.DEBUG.JMP
pla
ply
plx
rts
READ.DEBUG.JMP jmp $ffff
READ.DEBUG.CHAR .AS "0123456789ABCDEF"
*--------------------------------------
WRITE php
sei
tay save char in Y
@ -368,7 +317,6 @@ STAT .DA #S.DEVSTAT.S.WRITE+S.DEVSTAT.S.READ+S.DEV.S.IRQ
.DA #S.DEVSTAT.TYPE.CHAR
.DA #0
.DA $0900
*--------------------------------------
MAN
SAVE DRV/SSC.DRV.I.S

View File

@ -130,16 +130,15 @@ ARGS .BS 2
*--------------------------------------
* Device Header (16 Bytes)
*--------------------------------------
DEV.HEADER .DA DRV.CS.START
.DA #S.DEV.S.BLOCK+S.DEV.S.WRITE+S.DEV.S.READ
DEV.HEADER.NAME .DA #4
.AS "ETH7" NAME
DEV.HEADER cld
jmp (DRV.CS.START,x)
.DA #0
.BS 6
DEV.HEADER.NAME >PSTR "ETH7" NAME
*--------------------------------------
* Driver Code
*--------------------------------------
DRV.CS.START cld
jmp (.1,x)
.1 .DA STATUS
DRV.CS.START .DA STATUS
.DA READBLOCK
.DA WRITEBLOCK
.DA BADCALL

View File

@ -144,15 +144,15 @@ Args .BS 2
*--------------------------------------
* Device Header (16 Bytes)
*--------------------------------------
DEV.HEADER .DA DRV.CS.START
.DA #S.DEV.S.BLOCK+S.DEV.S.WRITE+S.DEV.S.READ
DEV.HEADER cld
jmp (DRV.CS.START,x)
.DA #0
.BS 6
DEV.HEADER.NAME >PSTR "ETH7" NAME
*--------------------------------------
* Driver Code
*--------------------------------------
DRV.CS.START cld
jmp (.1,x)
.1 .DA STATUS
DRV.CS.START .DA STATUS
.DA READBLOCK
.DA WRITEBLOCK
.DA BADCALL

View File

@ -1,6 +1,6 @@
PR#3
PREFIX /A2OSX.SRC
NEW
LOMEM $A00
INC 1
AUTO 6
.LIST OFF
@ -8,9 +8,9 @@ AUTO 6
* KERNEL CONSTANTS DEFINITON
*--------------------------------------
K.ENV.SIZE .EQ 256
K.EVT.MAX .EQ 16
K.DEV.MAX .EQ 16
K.FLT.MAX .EQ 8
K.FLT.MAX .EQ 4
K.EVT.MAX .EQ 8
K.DEV.MAX .EQ 32
K.PS.MAX .EQ 64
*--------------------------------------
* Kernel ZP Aux
@ -63,10 +63,9 @@ D.STACK.TOP .EQ $03F0 ...Down to $0300
KrnBuf256 .EQ $0C00 Main
*--------------------------------------
MLICALL.PARAMS .EQ $0D00 Main, $12 bytes min !!!!
MLICALL.TMPBUF .EQ $0D12 Small buffer (14 bytes) for MLI calls
BLKCALL.PARAMS .EQ $0D20 Max 6 Bytes copied to/from $42->$47 before Firmware call
PRTCALL.PARAMS .EQ $D030 Max 8 bytes for smartport cmdnum $0->$9
KrnSTAT .EQ $0D40 S.STAT
KrnSTAT .EQ $0D40 S.STAT = 64b
*--------------------------------------
KrnOut256 .EQ $0E00 Used to return Values to User Space
*--------------------------------------
@ -75,11 +74,11 @@ KrnOut256 .EQ $0E00 Used to return Values to User Space
Z80STACK .EQ $0FFF (0FFFFh) Down to $0F00
Z80JMP .EQ $1000 (00000h) Up To $10FF
*--------------------------------------
EvtMgr.Table .EQ $1100 K.EVT.MAX*S.EVT.SIZE=32*8=256b
FltMgr.Table .EQ $1100 K.FLT.MAX*S.FLT.SIZE=8*32=128b
*--------------------------------------
DevMgr.Table .EQ $1200 K.DEV.MAX*S.DEV.SIZE=32*8=256b
EvtMgr.Table .EQ $1180 K.EVT.MAX*S.EVT.SIZE=16*8=128b
*--------------------------------------
FltMgr.Table .EQ $1300 K.FLT.MAX*S.FLT.SIZE=8*32=256b
DevMgr.Table .EQ $1200 K.DEV.MAX*S.DEV.SIZE=32*16=512b
*--------------------------------------
TskMgr.Table .EQ $1400 K.PS.MAX*S.PS.SIZE=64*16=1k
*--------------------------------------
@ -146,11 +145,11 @@ H.BIN.HEADER .EQ 0
H.BIN.HEADER.DRV65 .EQ $4CD8 6502:cld,jmp abs
H.BIN.HEADER.LIB65 .EQ $7CD8 6502:cld,jmp (abs,x)
H.BIN.HEADER.BIN65 .EQ $7CD8 6502:cld,jmp (abs,x)
H.BIN.HEADER.LIB80 .EQ $A28D Z80:
H.BIN.HEADER.BIN80 .EQ $A28D Z80:
*H.BIN.HEADER.LIB80 .EQ $A28D Z80:
*H.BIN.HEADER.BIN80 .EQ $A28D Z80:
H.BIN.JMP .EQ 2
H.BIN.CODE.TYPE .EQ 4
H.BIN.VERSION .EQ 5
*H.BIN.CODE.TYPE .EQ 4
*H.BIN.VERSION .EQ 5
H.BIN.CODE.LEN .EQ 8
*
H.BIN.EXE.DS.SIZE .EQ 10
@ -159,7 +158,7 @@ H.BIN.EXE.REL.TABLE .EQ 16
H.BIN.DRV.HEADER.O .EQ 10
H.BIN.DRV.CODE.O .EQ 12
H.BIN.DRV.CODE.LEN .EQ 14
H.BIN.DRV.REL.TABLE .EQ 2
H.BIN.DRV.REL.TABLE .EQ 0
*--------------------------------------
* A2osX.SYSCALL Functions Indexes
*--------------------------------------
@ -344,15 +343,9 @@ S.MEMSTAT .EQ 24
* DRV : AUXLC entry point
* BLK : ROM Entry point Cn($Cnff)
* PRT : ROM Entry point Cn($Cnff)+3
* ID :
* 00->0F : NUL,SYS & loadable drivers
* X0 : X=Slot (Controller board)
* XY : X=Slot, Y=Device
* NAME:
*
*--------------------------------------
S.DEV.JMP .EQ 0
S.DEV.S .EQ 2
S.DEV.DRV.JMP .EQ 2
S.DEV.S .EQ 4
S.DEV.S.BLOCK .EQ %10000000
S.DEV.S.WRITE .EQ %01000000
S.DEV.S.READ .EQ %00100000
@ -361,13 +354,17 @@ 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 3
*S.DEV.F.IRQ .EQ %10000000 Device is irq driven
*S.DEV.F.EVENT .EQ %01000000 Device is event driven
S.DEV.F.LEN .EQ %00000111 Len
S.DEV.NAME .EQ 4 4 MAX
S.DEV.F .EQ 5
*S.DEV.F.PRT .EQ %10000000
*S.DEV.F.BLK .EQ %01000000
*S.DEV.F.DII .EQ %00100000
S.DEV.BUSID .EQ 6
S.DEV.DEVID .EQ 7
S.DEV.ROM.JMP .EQ 8 word
*
S.DEV .EQ 8
S.DEV.NAME .EQ 11 L+4 MAX
*
S.DEV .EQ 16
*----------- Smartport ----------------
DEVMGR.STATUS .EQ 0
DEVMGR.READBLOCK .EQ 2

View File

@ -1,6 +1,6 @@
PR#3
PREFIX /A2OSX.SRC
LOMEM $900
LOMEM $A00
INC 1
AUTO 6
.LIST OFF
@ -36,12 +36,7 @@ SET.IPCFG >PULLW ZPTmpPtr1
>SYSCALL GetDevByIDA
>STYA ZPTmpPtr2
lda (ZPTmpPtr2)
sta NetDevJmp+1
ldy #1
lda (ZPTmpPtr2),y
sta NetDevJmp+2
>STYA NetDevJmp+1
ldx #DEVMGR.STATUS
jsr NetDevJmp

View File

@ -1,6 +1,6 @@
PR#3
PREFIX /A2OSX.SRC
LOMEM $900
LOMEM $A00
INC 1
AUTO 6
.LIST OFF

View File

@ -1,6 +1,6 @@
PR#3
PREFIX /A2OSX.SRC
LOMEM $900
LOMEM $A00
INC 1
AUTO 6
.LIST OFF

View File

@ -1,6 +1,6 @@
PR#3
PREFIX /A2OSX.SRC
LOMEM $900
LOMEM $A00
INC 1
AUTO 6
.LIST OFF

View File

@ -1,6 +1,6 @@
PR#3
PREFIX /A2OSX.SRC
LOMEM $900
LOMEM $A00
INC 1
AUTO 6
.LIST OFF

View File

@ -1,6 +1,6 @@
PR#3
PREFIX /A2OSX.SRC
LOMEM $900
LOMEM $A00
INC 1
AUTO 6
.LIST OFF

View File

@ -1,6 +1,6 @@
PR#3
PREFIX /A2OSX.SRC
LOMEM $900
LOMEM $A00
INC 1
AUTO 6
.LIST OFF

View File

@ -1,6 +1,6 @@
PR#3
PREFIX /A2OSX.SRC
LOMEM $900
LOMEM $A00
INC 1
AUTO 6
.LIST OFF

View File

@ -1,6 +1,6 @@
PR#3
PREFIX /A2OSX.SRC
LOMEM $900
LOMEM $A00
INC 1
AUTO 6
.LIST OFF

View File

@ -1,6 +1,6 @@
PR#3
PREFIX /A2OSX.SRC
LOMEM $900
LOMEM $A00
INC 1
AUTO 6
.LIST OFF

View File

@ -65,7 +65,9 @@ CS.INIT >SYSCALL GetArgC
.99 rts
*--------------------------------------
CS.RUN
CS.DOEVENT
CS.DOEVENT sec
rts
*--------------------------------------
CS.QUIT clc
rts
*--------------------------------------

View File

@ -110,15 +110,10 @@ CS.INIT.DEV >LDYA L.DEVNAME
rts
.1 >STYA ZPIPDevPtr
>STYA NetDevJmp+1
stx hNetDev
stx IPCFG+S.IPCFG.HDEV
lda (ZPIPDevPtr)
sta NetDevJmp+1
ldy #1
lda (ZPIPDevPtr),y
sta NetDevJmp+2
>PUSHW L.DEVNAME
>LDYA L.MSG.DEV.OK
>SYSCALL CPrintFYA

View File

@ -1,9 +1,8 @@
PR#3
PREFIX /A2OSX.SRC
NEW
LOMEM $A00
INC 1
AUTO 6
.LIST OFF
*/--------------------------------------
* #GetArgC
* Returns argument count in the process command line.

View File

@ -1,9 +1,8 @@
PR#3
PREFIX /A2OSX.SRC
NEW
LOMEM $A00
INC 1
AUTO 6
.LIST OFF
*--------------------------------------
* BIN.LoadExeYA
* in :
@ -177,6 +176,7 @@ BIN.InstallDRV ldy #H.BIN.DRV.CODE.O
rts
.10 inc DevMgr.Count
>SYSCALL GetDevByIDA
>STYA ZPPtr2 setup Ptr2 to dest HEADER
@ -197,12 +197,12 @@ BIN.InstallDRV ldy #H.BIN.DRV.CODE.O
dey
bpl .1
ldy #S.DEV.JMP+1 Setup Main JMP
ldy #S.DEV.DRV.JMP+1 Setup Main JMP
lda DevMgr.Free+1
sta (ZPPtr2),y
tax
dey #S.DEV.JMP
dey
lda DevMgr.Free
sta (ZPPtr2),y

View File

@ -1,9 +1,8 @@
PR#3
PREFIX /A2OSX.SRC
NEW
LOMEM $A00
INC 1
AUTO 6
.LIST OFF
*/--------------------------------------
* #FPutCAY
* Print A (char) to File

View File

@ -1,9 +1,8 @@
PR#3
PREFIX /A2OSX.SRC
LOMEM $900
LOMEM $A00
INC 1
AUTO 6
.LIST OFF
*/--------------------------------------
* #SScanF
* Scan a PStr (in progress)

View File

@ -1,9 +1,18 @@
PR#3
PREFIX /A2OSX.SRC
NEW
LOMEM $A00
INC 1
AUTO 6
.LIST OFF
*--------------------------------------
PullPtr1Ptr2Ptr3
sec
.HS 90 bcc
PullPtr1Ptr2 clc
>PULLW ZPPtr1
>PULLW ZPPtr2
bcc .9
>PULLW ZPPtr3
.9 rts
*--------------------------------------
* Convert HEXBUF to ASCBUF decimal padded with 0
*--------------------------------------

View File

@ -1,15 +1,10 @@
PR#3
PREFIX /A2OSX.SRC
LOMEM $900
LOMEM $A00
INC 1
AUTO 6
.LIST OFF
*--------------------------------------
DevMgr.LoMem .EQ *
*--------------------------------------
DevMgr.NUL.Code cld
jmp (.1,x)
.1 .DA DevMgr.NUL.Status
DevMgr.NUL.Code .DA .1 STATUS
.DA DevMgr.BADCALL READBLOCK
.DA DevMgr.BADCALL WRITEBLOCK
.DA DevMgr.BADCALL FORMAT
@ -22,21 +17,18 @@ DevMgr.NUL.Code cld
.8 clc
rts
*--------------------------------------
DevMgr.NUL.Status
>LDYAI DevMgr.NUL.Stat
.1 >LDYAI .2
clc
rts
*--------------------------------------
DevMgr.NUL.Stat .DA #S.DEV.S.WRITE+S.DEV.S.READ
.2 .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
DevMgr.SYS.Code .DA .1 STATUS
.DA DevMgr.BADCALL READBLOCK
.DA DevMgr.BADCALL WRITEBLOCK
.DA DevMgr.BADCALL FORMAT
@ -47,16 +39,11 @@ DevMgr.SYS.Code cld
.DA DevMgr.SYS.Read
.DA DevMgr.SYS.Write
*--------------------------------------
DevMgr.BADCALL lda #MLI.ERR.BADCALL
sec
rts
*--------------------------------------
DevMgr.SYS.Status
>LDYAI DevMgr.SYS.Stat
.1 >LDYAI .2
clc
rts
*--------------------------------------
DevMgr.SYS.Stat .DA #S.DEV.S.WRITE+S.DEV.S.READ
.2 .DA #S.DEV.S.WRITE+S.DEV.S.READ
.DA #0,#0,#0
>PSTR "A2osX SYS Screen"
.DA #S.DEVSTAT.TYPE.CHAR
@ -288,6 +275,10 @@ 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.BADCALL lda #MLI.ERR.BADCALL
sec
rts
*--------------------------------------
DevMgr.FreeMem .EQ *
MAN
SAVE SYS/KERNEL.S.D01

View File

@ -1,11 +1,10 @@
PR#3
PREFIX /A2OSX.SRC
NEW
LOMEM $A00
INC 1
AUTO 6
.LIST OFF
*--------------------------------------
DevMgr.Stat .DA DevMgr.LoMem
DevMgr.Stat .DA DevMgr.NUL.Code
DevMgr.Free .DA DevMgr.FreeMem
.DA DevMgr.HiMem
DevMgr.Count .DA #2 NUL,SYS

View File

@ -1,9 +1,8 @@
PR#3
PREFIX /A2OSX.SRC
LOMEM $900
LOMEM $A00
INC 1
AUTO 6
.LIST OFF
*/--------------------------------------
* #GetDevByIDA
* ##IN:
@ -16,20 +15,17 @@ AUTO 6
K.GetDevByIDA cmp DevMgr.Count
bcs K.GetDevDNF
pha save ID
asl
asl
asl
asl
php
clc
adc #DevMgr.Table
tay
pla
php
lsr
lsr
lsr
plp
lda #0
adc /DevMgr.Table
rts CC
*/--------------------------------------
@ -43,13 +39,12 @@ K.GetDevByIDA cmp DevMgr.Count
*\--------------------------------------
K.GetDevByNameYA
>STYA ZPPtr1
>LDYAI DevMgr.Table+S.DEV.F
>LDYAI DevMgr.Table+S.DEV.NAME
>STYA ZPPtr2
ldx #0
.1 lda (ZPPtr2)
and #S.DEV.F.LEN
cmp (ZPPtr1)
bne .3
@ -64,10 +59,10 @@ K.GetDevByNameYA
lda ZPPtr2
sec
sbc #S.DEV.F
sbc #S.DEV.NAME
tay
lda ZPPtr2+1
sbc /S.DEV.F
sbc /S.DEV.NAME
clc
rts
@ -116,19 +111,10 @@ K.MkNodYA jsr K.GetDevByNameYA Ptr1=NAME
lda (pDev),y
bit #S.DEV.S.BLOCK
bne .99
lda (pDev)
sta .2+1
sta .4+1
ldy #1
lda (pDev),y
sta .3+1
sta .4+2
txa Pass DEV.ID to OPEN
ldx #DEVMGR.OPEN
jsr .4
jsr pDevJmp
bcs .9
>PUSHWI S.NODE.DEV
@ -142,17 +128,17 @@ K.MkNodYA jsr K.GetDevByNameYA Ptr1=NAME
lda #S.NODE.T.CDEV
sta (ZPPtr3),y
iny #S.NODE.DEV.ID
ldy #S.NODE.DEV.ID
.1 lda #$ff Self Modified
sta (ZPPtr3),y
iny #S.NODE.DEV.JMP
.2 lda #$ff
ldy #S.NODE.DEV.JMP
lda pDev
sta (ZPPtr3),y
iny ##S.NODE.DEV.JMP+1
.3 lda #$ff
iny
lda pDev+1
sta (ZPPtr3),y
txa
clc
@ -160,8 +146,7 @@ K.MkNodYA jsr K.GetDevByNameYA Ptr1=NAME
.99 lda #MLI.ERR.IO
sec
rts
.4 jmp $ffff
rts
*/--------------------------------------
* #MkNodA
* return a hFile for a given Socket

View File

@ -1,9 +1,8 @@
PR#3
PREFIX /A2OSX.SRC
LOMEM $900
LOMEM $A00
INC 1
AUTO 6
.LIST OFF
*/--------------------------------------
* #OpenDirYA
* ##In:

View File

@ -1,9 +1,8 @@
PR#3
PREFIX /A2OSX.SRC
NEW
LOMEM $A00
INC 1
AUTO 6
.LIST OFF
*--------------------------------------
* K.LoadDrvYA
* in :

View File

@ -1,9 +1,8 @@
PR#3
PREFIX /A2OSX.SRC
NEW
LOMEM $A00
INC 1
AUTO 6
.LIST OFF
*/--------------------------------------
* #ExpandPStrYA
* ##In:

View File

@ -1,9 +1,8 @@
PR#3
PREFIX /A2OSX.SRC
LOMEM $900
LOMEM $A00
INC 1
AUTO 6
.LIST OFF
*--------------------------------------
* EVT.GetEvents :
* IN :
@ -12,7 +11,9 @@ AUTO 6
* CC * event in YA
* (pEvent)
*--------------------------------------
EVT.GetEvents stz pEvent point to start of event list
EVT.GetEvents lda #EvtMgr.Table
sta pEvent point to start of event list
stz EvtMgr.Count reset Size
lda K.IrkMgr.VBL do we have IRQ enabled for VBL ?

View File

@ -1,9 +1,8 @@
PR#3
PREFIX /A2OSX.SRC
LOMEM $900
LOMEM $A00
INC 1
AUTO 6
.LIST OFF
*--------------------------------------
* For All SYS.xxxx calls, X = #SYSCall
* Must be kept in X before calling
@ -169,10 +168,10 @@ K.FReadA jsr PFT.CheckNodeA
* Y,A = Bytes Written
*\--------------------------------------
K.FWriteAY jsr PFT.CheckNodeA
sty MLICALL.TMPBUF
sty K.FWriteAY.Buf
ldx #MLIWRITE
K.FReadWrite.0 jsr FILE.SetupPrt1A
>LDYAI MLICALL.TMPBUF
>LDYAI K.FWriteAY.Buf
>STYA MLICALL.PARAMS+2
lda #1
sta MLICALL.PARAMS+4
@ -180,8 +179,9 @@ K.FReadWrite.0 jsr FILE.SetupPrt1A
lda #4 Param Count = 4 for MLIREAD & MLIWRITE
jsr A2osX.MLICALL
bcs .9
lda MLICALL.TMPBUF
.9 rts
lda K.FWriteAY.Buf
.9 rts
K.FWriteAY.Buf .BS 1
*/--------------------------------------
* #FRead
* Read bytes from file

View File

@ -1,9 +1,8 @@
PR#3
PREFIX /A2OSX.SRC
LOMEM $900
LOMEM $A00
INC 1
AUTO 6
.LIST OFF
*/--------------------------------------
* #FileSearch
* Search a file in the provided PATH list

View File

@ -1,9 +1,8 @@
PR#3
PREFIX /A2OSX.SRC
LOMEM $900
LOMEM $A00
INC 1
AUTO 6
.LIST OFF
*--------------------------------------
* SYSCALL (AUXLC to AUXLC)
* Used by user & kernel for inter bank Calls

View File

@ -1,9 +1,8 @@
PR#3
PREFIX /A2OSX.SRC
LOMEM $900
LOMEM $A00
INC 1
AUTO 6
.LIST OFF
*--------------------------------------
Kernel.Init2 sei

View File

@ -1,14 +1,16 @@
PR#3
PREFIX /A2OSX.SRC
LOMEM $900
LOMEM $A00
INC 1
AUTO 6
.LIST OFF
*--------------------------------------
Kernel.Init3 jsr MemMgrInit
Kernel.Init3 sta SETALTZP
bit RRAMWRAMBNK1
bit RRAMWRAMBNK1
jsr MemMgrInit
jsr PS0Init
bcs *
>LDYAI MSG.Init3
>SYSCALL CPrintFYA
@ -128,14 +130,18 @@ PS0Init ldx #S.DEV*2 NUL,SYS
clc
.9 rts
*--------------------------------------
DevMgr.NUL .DA DevMgr.NUL.Code
DevMgr.NUL cld
jmp (DevMgr.NUL.Code,x)
.DA #S.DEV.S.WRITE+S.DEV.S.READ+S.DEV.S.OPENED
.BS 6
.DA #3
.AS "NUL" NAME
.HS 00 NAME must Be 4 bytes long
*--------------------------------------
DevMgr.SYS .DA DevMgr.SYS.Code
DevMgr.SYS cld
jmp (DevMgr.SYS.Code,x)
.DA #S.DEV.S.WRITE+S.DEV.S.READ
.BS 6
.DA #3
.AS "SYS" NAME
.HS 00 NAME must Be 4 bytes long
@ -247,7 +253,7 @@ DevMgrInit stz ZPPtr1
lda #$C1
sta ZPPtr1+1
lda #'1'
sta DEV.HEADER+5 S1Dy
sta DEV.HEADER+S.DEV.NAME+4 S1Dy
.1 ldx #SmartPort.SIG-SmartPort.OFS-1
@ -301,11 +307,11 @@ DevMgrInit.SP ldy #$ff
adc #3 Compute smartport entry point
sta .1+1
sta .3+1
sta DEV.HEADER+S.DEV.JMP
sta DEV.HEADER+S.DEV.ROM.JMP
lda ZPPtr1+1
sta .1+2
sta .3+2
sta DEV.HEADER+S.DEV.JMP+1
sta DEV.HEADER+S.DEV.ROM.JMP+1
.1 jsr $ffff Self Modified
.DA #0 Status
@ -314,14 +320,12 @@ DevMgrInit.SP ldy #$ff
lda SP.STATUS1
beq .9 no device
.2 lda #1
sta DEV.HEADER.STATUS+1
lda #'1'
sta DEV.HEADER+7 SxD1
.2 lda #'1'
sta DEV.HEADER+S.DEV.NAME+2 SxD1
.3 jsr $ffff Self Modified
.DA #0 Status
.DA DEV.HEADER.STATUS
.DA DEV.HEADER+S.DEV.S
bcs .7
lda SP.STATUS2+S.DEVSTAT.S
sta DEV.HEADER+S.DEV.S
@ -337,7 +341,8 @@ DevMgrInit.SP ldy #$ff
.9 rts
*--------------------------------------
DevMgrInit.DII
DevMgrInit.DII >LDYAI A2osX.DIIDrv
>STYA DEV.HEADER+S.DEV.ROM.JMP
rts
*--------------------------------------
DevMgrInit.BLK
@ -365,8 +370,14 @@ DevMgrInit.AddDev
sec
rts
*--------------------------------------
DEV.HEADER .BS 2 JMP
DEV.HEADER.STATUS .DA #S.DEV.S.BLOCK S
DEV.HEADER clc
jmp ($ffff,x)
.DA #S.DEV.S.BLOCK S
.BS 1 F
.BS 1 BUS.ID
.BS 1 DEV.ID
.BS 2 ROM.JMP
.BS 1
>PSTR "S1D1" 5 bytes
*--------------------------------------
SmartPort.OFS .HS 07010305

View File

@ -1,9 +1,8 @@
PR#3
PREFIX /A2OSX.SRC
LOMEM $900
LOMEM $A00
INC 1
AUTO 6
.LIST OFF
*--------------------------------------
* called directly by IRQ Vector $FFFE in AuxLC
* Must keep:
@ -115,13 +114,8 @@ K.IrqMgrVBL.0n .BS 1
K.IrqMgrVBL.MSM jmp $0000
K.IrqMgrVBL.MRM jmp $0000
*--------------------------------------
K.IrqHandlerJMP lda ($fe)
sta .1+1
ldy #1
lda ($fe),y
sta .1+2
ldx #DEVMGR.IRQ
.1 jmp $ffff
K.IrqHandlerJMP ldx #DEVMGR.IRQ
jmp ($fe)
*--------------------------------------
MAN
SAVE SYS/KERNEL.S.IRQ

View File

@ -3,7 +3,6 @@ PREFIX /A2OSX.SRC
NEW
INC 1
AUTO 6
.LIST OFF
*--------------------------------------
* $D000-D0FF KERNEL.SYSCALL Jmp Table
*--------------------------------------

View File

@ -3,7 +3,6 @@ PREFIX /A2OSX.SRC
NEW
INC 1
AUTO 6
.LIST OFF
*--------------------------------------
* K.LoadLibYA
* in :

View File

@ -1,9 +1,8 @@
PR#3
PREFIX /A2OSX.SRC
NEW
LOMEM $A00
INC 1
AUTO 6
.LIST OFF
*--------------------------------------
* !!!!!! DO NOT USE ZPPtrs !!!!!
*--------------------------------------

View File

@ -1,9 +1,8 @@
PR#3
PREFIX /A2OSX.SRC
NEW
LOMEM $A00
INC 1
AUTO 6
.LIST OFF
*--------------------------------------
* K.PFTAdd
* In :

View File

@ -1,9 +1,8 @@
PR#3
PREFIX /A2OSX.SRC
NEW
LOMEM $A00
INC 1
AUTO 6
.LIST OFF
*/--------------------------------------
* #ExecProcessNewEnvYA
* #ExecProcessYA (Blocking Parent PID)

View File

@ -1,9 +1,8 @@
PR#3
PREFIX /A2OSX.SRC
LOMEM $900
LOMEM $A00
INC 1
AUTO 6
.LIST OFF
*--------------------------------------
SYS.BASL0 .EQ $800
*--------------------------------------
@ -20,7 +19,8 @@ K.KernelRun jsr TSK.TskMgrRun
jsr PS.Select0
stz pEvent
lda #EvtMgr.Table
sta pEvent
.1 lda (pEvent)
beq .3
@ -71,8 +71,9 @@ K.KernelRun jsr TSK.TskMgrRun
beq K.KernelRun
tax
lda A2osX.SCRNDEVS-1,x No device claimed this screen
beq K.KernelRun
lda A2osX.SCRNDEVS-1,x
beq K.KernelRun No device claimed this screen
jsr K.GetDevByIDA x unmodified.....
bcs K.KernelRun ???
@ -80,15 +81,10 @@ K.KernelRun jsr TSK.TskMgrRun
stx A2osX.ASCREEN
>STYA pDev
lda (pDev)
sta .5+1
ldy #1
lda (pDev),y
sta .5+2
ldx #DEVMGR.CONTROL
jsr .5
jsr pDevJmp
jmp K.KernelRun
.5 jmp $ffff
*--------------------------------------
RUN.DumpEvent ldy #S.EVT-1

View File

@ -1,9 +1,8 @@
PR#3
PREFIX /A2OSX.SRC
LOMEM $900
LOMEM $A00
INC 1
AUTO 6
.LIST OFF
*/--------------------------------------
* #NewPStrYA
* Create a new copy of PSTR

View File

@ -1,9 +1,8 @@
PR#3
PREFIX /A2OSX.SRC
NEW
LOMEM $A00
INC 1
AUTO 6
.LIST OFF
*--------------------------------------
* https://www.cise.ufl.edu/~cop4600/cgi-bin/lxr/http/source.cgi/lib/ansi/gmtime.c
*--------------------------------------

View File

@ -1,9 +1,8 @@
PR#3
PREFIX /A2OSX.SRC
LOMEM $900
LOMEM $A00
INC 1
AUTO 6
.LIST OFF
*--------------------------------------
* TSK.TskMgrRun
*--------------------------------------
@ -135,7 +134,8 @@ TSK.DispatchEvents
jsr PS.Select
stz pEvent Select first event in list
lda #EvtMgr.Table
sta pEvent Select first event in list
lda EVTMGR.COUNT
sta TSKMGR.EVENTCNT

View File

@ -1,6 +1,6 @@
PR#3
PREFIX /A2OSX.SRC
LOMEM $900
LOMEM $A00
INC 1
AUTO 6
.LIST OFF
@ -20,8 +20,6 @@ ZPPtr2 .EQ ZPKERNEL+2 (could be trashed by any JSR)
ZPPtr3 .EQ ZPKERNEL+4
ZPPtr4 .EQ ZPKERNEL+6
* Kernel Init Stage 2
sei
ldx #$FF init 6502 stack to highest
txs
@ -36,25 +34,19 @@ ZPPtr4 .EQ ZPKERNEL+6
jsr Kernel.Init2
>DEBUGOA
* Kernel Init Stage 3
sta SETALTZP
bit RRAMWRAMBNK1
bit RRAMWRAMBNK1
jmp Kernel.Init3
*--------------------------------------
.INB X.PRINTF.S
.INB SYS/KERNEL.S.INIT2
.INB SYS/KERNEL.S.INIT3
*--------------------------------------
* Global Page
A2osX.GP .EQ *
.PH $BD00
.INB SYS/KERNEL.S.GP
.EP
A2osX.GP.END .EQ *
A2osX.GP.SIZE .EQ *-A2osX.GP
* LC AUX $D000 BANK1 API Calls $00-$3E
@ -71,7 +63,8 @@ A2osX.D001 .EQ *
.INB SYS/KERNEL.S.PFT
.INB SYS/KERNEL.S.BIN
.EP
A2osX.D001.END .EQ *
A2osX.D001.SIZE .EQ *-A2osX.D001
* LC AUX $D000 BANK2 API Calls $40-$8E
@ -89,7 +82,7 @@ A2osX.D002 .EQ *
.INB SYS/KERNEL.S.EVT
.INB SYS/KERNEL.S.TSK
.EP
A2osX.D002.END .EQ *
A2osX.D002.SIZE .EQ *-A2osX.D002
* LC AUX $E000 API Calls $80-$FE
@ -101,31 +94,19 @@ A2osX.E000 .EQ *
.INB SYS/KERNEL.S.MEM
.INB SYS/KERNEL.S.CNV
.INB SYS/KERNEL.S.CHR
*--------------------------------------
PullPtr1Ptr2Ptr3
sec
.HS 90 bcc
PullPtr1Ptr2 clc
>PULLW ZPPtr1
>PULLW ZPPtr2
bcc .9
>PULLW ZPPtr3
.9 rts
* Make sure KERNEL.S.D01 is the last one
.INB SYS/KERNEL.S.D01
.EP
A2osX.E000.END .EQ *
*--------------------------------------
A2osX.E000.SIZE .EQ *-A2osX.E000
* CONTROL SECTION :
.LIST ON
A2osX.GP.SIZE .EQ A2osX.GP.END-A2osX.GP
A2osX.D001.SIZE .EQ A2osX.D001.END-A2osX.D001
A2osX.D002.SIZE .EQ A2osX.D002.END-A2osX.D002
A2osX.E000.SIZE .EQ A2osX.E000.END-A2osX.E000
Check.GP .EQ A2osX.GP.SIZE
Check.D001 .EQ A2osX.D001.SIZE
Check.D002 .EQ A2osX.D002.SIZE
Check.E000 .EQ A2osX.E000.SIZE
.LIST OFF
.DO A2osX.GP.SIZE>$1E0
.LIST ON
* !!!!!!!!! ERROR:GP too big !!!!!!!!!!
@ -140,8 +121,7 @@ A2osX.E000.SIZE .EQ A2osX.E000.END-A2osX.E000
.LIST ON
* !!!!!!!!! ERROR:BNK2 too big !!!!!!!!
.LIST OFF
.FIN
.FIN
MAN
SAVE SYS/KERNEL.S
ASM