KERNEL 0.94-2

This commit is contained in:
burniouf 2021-07-24 22:42:23 +02:00
parent 3c55ead88e
commit eceedd72d7
70 changed files with 1017 additions and 941 deletions

Binary file not shown.

Binary file not shown.

View File

@ -109,6 +109,10 @@ RT.GET >SYSCALL GetChar
sta (ZPStrBuf)
ldy #1
lda #0
sta (ZPStrBuf),y
bra RT.INPUT.8
*--------------------------------------
RT.INPUT lda #0

View File

@ -519,7 +519,7 @@ OUT.CLRSCR .DA #C.ESC
.DA #C.ESC
.AZ ")0"
*--------------------------------------
FMT.DATE .AZ "%d/%m/%Y"
FMT.DATE .AZ "%m/%d/%y"
FMT.TIME .AZ "%H:%M:%S"
*--------------------------------------
OptionList .AS "DdTt"

View File

@ -656,7 +656,7 @@ DIR.TF >LDA.G ASM.PASS If Pass#1, ignore
sta ZPPtr2+1
.7 >PUSHW ZPPtr1
>PUSHWI 0 Allocate
>PUSHWZ Allocate
>SYSCALL RealPath
bcs .9

View File

@ -371,7 +371,7 @@ CS.RUN.ARGS ldy #S.PS.ARGC
beq .2
>PUSHW ZPPtr2
>PUSHWI 0 Allocate
>PUSHWZ Allocate
>SYSCALL RealPath
bcs .99
txa

View File

@ -1,242 +1,375 @@
NEW
AUTO 3,1
.LIST OFF
.OP 65C02
.OR $2000
.TF bin/cat
.LIST OFF
.OP 65C02
.OR $2000
.TF bin/cat
*--------------------------------------
.INB inc/macros.i
.INB inc/a2osx.i
.INB inc/kernel.i
.INB inc/mli.i
.INB inc/mli.e.i
.INB inc/macros.i
.INB inc/a2osx.i
.INB inc/kernel.i
.INB inc/mli.i
.INB inc/mli.e.i
*--------------------------------------
.DUMMY
.OR ZPBIN
.DUMMY
.OR ZPBIN
ZS.START
ZPPtr1 .BS 2
ZPBufPtr .BS 2
ByteIndex .BS 1
ArgCount .BS 1
FileCount .BS 1
bPause .BS 1
bDummy .BS 1
bIsTTY .BS 1
ArgIndex .BS 1
hBuf .BS 1
hFile .BS 1
ZS.END .ED
ZPPtr1 .BS 2
ZPBufPtr .BS 2
ByteIndex .BS 1
ArgCount .BS 1
FileCount .BS 1
bPause .BS 1
bPrintAll .BS 1
bLineNum .BS 1
bSuppressBlankLine .BS 1
ArgIndex .BS 1
hBuf .BS 1
hFile .BS 1
LineNum .BS 2
bPrintedBlankLine .BS 1
ZS.END .ED
*--------------------------------------
* File Header (16 Bytes)
* File Header (16 Bytes)
*--------------------------------------
CS.START cld
jmp (.1,x)
.DA #$61 6502,Level 1 (65c02)
.DA #1 BIN Layout Version 1
.DA #S.PS.F.EVENT S.PS.F
.DA #0
.DA CS.END-CS.START CS
.DA DS.END-DS.START DS
.DA #64 SS
.DA #ZS.END-ZS.START Zero Page Size
.DA 0
CS.START cld
jmp (.1,x)
.DA #$61 6502,Level 1 (65c02)
.DA #1 BIN Layout Version 1
.DA #S.PS.F.EVENT S.PS.F
.DA #0
.DA CS.END-CS.START CS
.DA DS.END-DS.START DS
.DA #64 SS
.DA #ZS.END-ZS.START Zero Page Size
.DA 0
*--------------------------------------
* Relocation Table
*--------------------------------------
.1 .DA CS.INIT
.DA CS.RUN
.DA CS.DOEVENT
.DA CS.QUIT
L.MSG.USAGE .DA MSG.USAGE
L.MSG.CRLF .DA MSG.CRLF
L.MSG.INIT .DA MSG.INIT
.DA 0
.1 .DA CS.INIT
.DA CS.RUN
.DA CS.DOEVENT
.DA CS.QUIT
L.MSG.USAGE .DA MSG.USAGE
L.MSG.CRLF .DA MSG.CRLF
L.MSG.INIT .DA MSG.INIT
L.MSG.LINENUM .DA MSG.LINENUM
L.MSG.CTRLCHAR .DA MSG.CTRLCHAR
L.ASCII .DA ASCII
.DA 0
*--------------------------------------
CS.INIT clc
rts
CS.INIT clc
rts
*--------------------------------------
CS.RUN
.1 stz bIsTTY
inc ArgCount
lda ArgCount
>SYSCALL ArgV
bcs .7
CS.RUN
.1 inc ArgCount
lda ArgCount
>SYSCALL ArgV
bcs .7
>STYA ZPPtr1
>STYA ZPPtr1
lda (ZPPtr1)
cmp #'-'
bne .4
lda (ZPPtr1)
cmp #'-'
bne .4
ldy #1
lda (ZPPtr1),y
ldy #1
lda (ZPPtr1),y
ldx #OptionList.Cnt-1
.2 cmp OptionList,x
beq .3
ldx #OptionList.Cnt-1
.2 cmp OptionList,x
beq .3
dex
bpl .2
dex
bpl .2
.99 >PUSHW L.MSG.USAGE
>PUSHBI 0
>SYSCALL PrintF
lda #E.SYN
sec
.9 rts
.99 >PUSHW L.MSG.USAGE
>PUSHBI 0
>SYSCALL PrintF
lda #E.SYN
sec
.9 rts
.3 ldy OptionVars,x
lda #$80
sta 0,y
bra .1
.3 ldy OptionVars,x
lda #$80
sta 0,y
bra .1
.4 inc FileCount
bra .1 scan for any other args
.4 inc FileCount
bra .1 scan for any other args
.7 lda FileCount
beq .99
.7 lda FileCount
beq .99
>LDYAI 256
>SYSCALL GetMem
bcs .9
>LDYAI 256
>SYSCALL GetMem
bcs .9
>STYA ZPBufPtr
stx hBuf
ldy #S.PS.hStdOut
lda (pPS),y
>STYA ZPBufPtr
stx hBuf
ldy #S.PS.hStdOut
lda (pPS),y
tax
lsr
bcc CS.RUN.LOOP
lda Nod.Table.hFD-2,x
>SYSCALL GetMemPtr
>STYA ZPPtr1
tax
lda hFDs-1,x
>SYSCALL GetMemPtr
>STYA ZPPtr1
lda (ZPPtr1)
lda (ZPPtr1)
beq CS.RUN.LOOP
beq CS.RUN.LOOP
inc bIsTTY
>PUSHW L.MSG.INIT
>PUSHBI 0
>SYSCALL PrintF
cmp #S.FD.T.PIPE
beq CS.RUN.LOOP
>PUSHW L.MSG.INIT
>PUSHBI 0
>SYSCALL PrintF
*--------------------------------------
CS.RUN.LOOP ldy #S.PS.hStdIn
lda (pPS),y
>SYSCALL FEOF
bcs .90 IO error
CS.RUN.LOOP ldy #S.PS.hStdIn
lda (pPS),y
>SYSCALL FEOF
bcs .90 IO error
tay
bne .10 no char
tay
bne .10 no char
>SYSCALL GetChar
bcs .9 IO error
>SYSCALL GetChar
bcs .9 IO error
cmp #$03 Ctrl-C
beq .9 Abort....
cmp #$03 Ctrl-C
beq .9 Abort....
cmp #$13 Ctrl-S
bne .10
cmp #$13 Ctrl-S
bne .10
lda bPause
eor #$ff
sta bPause
bne CS.RUN.LOOP
lda bPause
eor #$ff
sta bPause
bne CS.RUN.LOOP
.10 lda bPause
bne CS.RUN.LOOP Pause...
.10 lda bPause
bne CS.RUN.LOOP Pause...
.11 lda hFile
bne .2
.11 lda hFile
bne .2
.1 inc ArgIndex
lda ArgIndex
>SYSCALL ArgV
bcs .99 No more arg...the end!
.1 inc ArgIndex
lda ArgIndex
>SYSCALL ArgV
bcs .99 No more arg...the end!
>STYA ZPPtr1
lda (ZPPtr1)
cmp #'-'
beq .1 An option, skip...
>STYA ZPPtr1
lda (ZPPtr1)
cmp #'-'
beq .1 An option, skip...
>LDYA ZPPtr1
jsr CS.RUN.OPEN
.90 bcs .9
>LDYA ZPPtr1
jsr CS.RUN.OPEN
.90 bcs .9
sta hFile
sta hFile
.2 lda hFile
>SYSCALL GetC
bcs .7
.2 >PUSHA
>PUSHW ZPBufPtr
>PUSHWI 254 Leave room for CRLF
>SYSCALL FGetS
bcs .7
pha
>SYSCALL PutChar
pla
jsr CS.RUN.PRINT
bcc CS.RUN.LOOP
rts
cmp #C.CR
bne CS.RUN.LOOP
.7 cmp #MLI.E.EOF
bne .9
lda bIsTTY
beq CS.RUN.LOOP
jsr CS.RUN.CLOSE
jmp CS.RUN.LOOP
lda #C.LF
>SYSCALL PutChar
bra CS.RUN.LOOP
.7 cmp #MLI.E.EOF
bne .9
jsr CS.RUN.CLOSE
jmp CS.RUN.LOOP
.99 lda #0 Exit with no Error
.9 sec
rts
.99 lda #0 Exit with no Error
.9 sec
rts
*--------------------------------------
CS.RUN.OPEN >PUSHYA
>PUSHBI O.RDONLY+O.TEXT
>PUSHBI S.FI.T.TXT
>PUSHWZ Aux type
>SYSCALL FOpen
rts
CS.RUN.OPEN stz bPrintedBlankLine Reset this flag for the new file
>PUSHYA
>PUSHBI O.RDONLY+O.TEXT
>PUSHBI S.FI.T.TXT
>PUSHWZ Aux type
>SYSCALL FOpen
rts
*--------------------------------------
CS.QUIT lda hBuf
beq CS.RUN.CLOSE
>SYSCALL FreeMem
CS.RUN.PRINT inc LineNum
bne .10
CS.RUN.CLOSE lda hFile
beq .8
inc LineNum+1
stz hFile
.10 lda bSuppressBlankLine
bpl .2
>SYSCALL FClose
.8 clc
rts
lda (ZPBufPtr)
bne .1 Empty line ?
lda bPrintedBlankLine
bmi .8
lda #$ff
sta bPrintedBlankLine
bra .2
.1 stz bPrintedBlankLine
.2 jsr CS.RUN.PRINTNUM
bcs .99
lda bPrintAll
bmi .3
ldy #$ff
.20 iny
lda (ZPBufPtr),y
beq .21
cmp #C.SPACE
bcs .20
lda #C.SPACE
sta (ZPBufPtr),y
bra .20
.21 >LDYA ZPBufPtr
>SYSCALL PutS
rts
*--------------------------------------
CS.DOEVENT sec
rts
.3 stz ByteIndex
.4 ldy ByteIndex
lda (ZPBufPtr),y
beq .7
cmp #C.SPACE
bcc .5
>SYSCALL PutChar
.99 bcs .9
bra .62
.8 clc
rts
.5 tax
>LDYA L.ASCII
>STYA ZPPtr1
.6 dex
bmi .61
lda ZPPtr1
sec
adc (ZPPtr1)
sta ZPPtr1
bcc .6
inc ZPPtr1+1
bra .6
.61 >PUSHW L.MSG.CTRLCHAR
>PUSHW ZPPtr1
>PUSHBI 2
>SYSCALL PrintF
bcs .9
.62 inc ByteIndex
bne .4
.7 >PUSHW L.MSG.CRLF
>PUSHBI 0
>SYSCALL PrintF
.9 rts
*--------------------------------------
CS.RUN.PRINTNUM clc
lda bLineNum
bpl .8
>PUSHW L.MSG.LINENUM
>PUSHW LineNum
>PUSHBI 2
>SYSCALL PrintF
.8 rts
*--------------------------------------
CS.QUIT lda hBuf
beq CS.RUN.CLOSE
>SYSCALL FreeMem
CS.RUN.CLOSE lda hFile
beq .8
stz hFile
>SYSCALL FClose
.8 clc
rts
*--------------------------------------
CS.DOEVENT sec
rts
*--------------------------------------
CS.END
*--------------------------------------
OptionList .AS "x"
OptionList.Cnt .EQ *-OptionList
OptionVars .DA #bDummy
OptionList .AS "ANSans"
OptionList.Cnt .EQ *-OptionList
OptionVars .DA #bPrintAll,#bLineNum,#bSuppressBlankLine,#bPrintAll,#bLineNum,#bSuppressBlankLine
*--------------------------------------
MSG.USAGE .AS "Usage : CAT File1 [File2...]"
MSG.CRLF .AZ "\r\n"
MSG.INIT .AZ "\e[?7h" Enable Line Wrap
MSG.USAGE .AS "Usage : CAT File1 [File2...]\r\n"
.AS " -A : Show All non printable characters\r\n"
.AS " -N : Number all output lines\r\n"
.AS " -S : Suppress repeated empty output lines"
MSG.CRLF .AZ "\r\n"
MSG.INIT .AZ "\e[?7h" Enable Line Wrap
MSG.LINENUM .AZ "%5D:"
MSG.CTRLCHAR .AZ "[%S]"
*--------------------------------------
.DUMMY
.OR 0
ASCII >PSTR "NUL"
>PSTR "SOH"
>PSTR "STX"
>PSTR "ETX"
>PSTR "EOT"
>PSTR "ENQ"
>PSTR "ACK"
>PSTR "BEL"
>PSTR "BS"
>PSTR "TAB"
>PSTR "LF"
>PSTR "VT"
>PSTR "FF"
>PSTR "CR"
>PSTR "SO"
>PSTR "SI"
>PSTR "DLE"
>PSTR "DC1"
>PSTR "DC2"
>PSTR "DC3"
>PSTR "DC4"
>PSTR "NAK"
>PSTR "SYN"
>PSTR "ETB"
>PSTR "CAN"
>PSTR "EM"
>PSTR "SUB"
>PSTR "ESC"
>PSTR "FS"
>PSTR "GS"
>PSTR "RS"
>PSTR "US"
*--------------------------------------
.DUMMY
.OR 0
DS.START
DS.END .ED
DS.END .ED
*--------------------------------------
MAN
SAVE usr/src/bin/cat.s

View File

@ -228,7 +228,7 @@ CS.RUN.FILE clc
*--------------------------------------
CS.RUN.GetGID >SYSCALL ArgV
>PUSHYA
>PUSHWI 0
>PUSHWZ
>SYSCALL GetGRName
bcs .9

View File

@ -230,7 +230,7 @@ CS.RUN.FILE
*--------------------------------------
CS.RUN.GetUID >SYSCALL ArgV
>PUSHYA
>PUSHWI 0
>PUSHWZ
>SYSCALL GetPWName
bcs .9

View File

@ -881,7 +881,7 @@ CSH.GetVarDef phy
>PUSHWI ZPVarDef
>PUSHWI 8 8 bytes
>PUSHWI 0 From Start
>PUSHWZ From Start
>SYSCALL SListGetData
rts
*--------------------------------------

View File

@ -283,7 +283,7 @@ CSH.VarLookup >PUSHB.G CSH.hSymbols
>PUSHEA.G CSH.VarDef
>PUSHWI 8 8 bytes
>PUSHWI 0 From Start
>PUSHWZ From Start
>SYSCALL SListGetData
.9 rts
*--------------------------------------

View File

@ -141,10 +141,7 @@ CS.RUN lda #C.SPACE
.80 ldy #S.PS.hStdIn
lda (pPS),y
tax
lsr
bcs .97
lda Nod.Table.hFD-2,x
lda hFDs-1,x
>SYSCALL GetMemPtr
>STYA ZPPtr1

View File

@ -7,7 +7,7 @@ FILE.New jsr FILE.Reset
>LDYA L.MSG.NEWFILE
FILE.RealPath >PUSHYA
>PUSHWI 0 Allocate
>PUSHWZ Allocate
>SYSCALL RealPath
bcs .9

View File

@ -365,7 +365,7 @@ CS.RUN.LL.DISKII
>PUSHB VolNum
>PUSHB CurHead
>PUSHB CurTrack
>PUSHWI 0 Empty track
>PUSHWZ Empty track
>LIBCALL hLIBBLKDEV,LIBBLKDEV.D2TrkWrite16s
bcs .9

View File

@ -38,7 +38,7 @@ GFX.GR ldy #S.PS.hStdIn
GFX.IOCTL >PUSHA
>PUSHBI IOCTL.CONTROL
>PUSHWI 0
>PUSHWZ
>SYSCALL IOCTL
rts
*--------------------------------------

View File

@ -146,10 +146,7 @@ CS.RUN.CheckArgs
lda (pPS),y
tax
lsr
bcs .97
lda Nod.Table.hFD-2,x
lda hFDs-1,x
>SYSCALL GetMemPtr
>STYA ZPPtr1
lda (ZPPtr1)

View File

@ -311,7 +311,7 @@ CS.RUN.GET jsr CS.RUN.ENCODE
>PUSHYA
>PUSHBI O.CREATE+O.WRONLY+O.TRUNC
>PUSHBI 0 TYPE
>PUSHWI 0 AUXTYPE
>PUSHWZ AUXTYPE
>SYSCALL FOpen
bcs .9
sta hFile

View File

@ -229,12 +229,14 @@ CS.RUN.DUMPNIC >PUSHW L.MSG1.DEV
lda IPCFG+S.NETCFG.DevID
>PUSHA
ldx IPCFG+S.NETCFG.DevID
lda Dev.Table-1,x
>SYSCALL GetMemPtr
pha
tya
clc
adc #S.FD.DEV
tay
lda Dev.Table,x
pla
adc /S.FD.DEV
>PUSHYA

View File

@ -1,24 +1,24 @@
NEW
AUTO 3,1
.LIST OFF
.OP 65C02
.OR $2000
.TF bin/ls
.LIST OFF
.OP 65C02
.OR $2000
.TF bin/ls
*--------------------------------------
.INB inc/macros.i
.INB inc/a2osx.i
.INB inc/kernel.i
.INB inc/mli.i
.INB inc/mli.e.i
.INB inc/macros.i
.INB inc/a2osx.i
.INB inc/kernel.i
.INB inc/mli.i
.INB inc/mli.e.i
*--------------------------------------
X.ENTER.SUBDIR .EQ 1
X.COPY.TO.DEST .EQ 0
X.DELETE.SOURCE .EQ 0
*--------------------------------------
MAX.COL .EQ 4
MAX.COL .EQ 4
*--------------------------------------
.DUMMY
.OR ZPBIN
.DUMMY
.OR ZPBIN
ZS.START
ZPPtr1 .BS 2
ZPPtr2 .BS 2
@ -45,52 +45,51 @@ ZS.END .ED
*--------------------------------------
* File Header (16 Bytes)
*--------------------------------------
CS.START cld
jmp (.1,x)
.DA #$61 6502,Level 1 (65c02)
.DA #1 BIN Layout Version 1
.DA #0 S.PS.F.EVENT
.DA #0
.DA CS.END-CS.START Code Size (without Constants)
.DA DS.END-DS.START Data SegmentSize
.DA #64 Stack Size
.DA #ZS.END-ZS.START Zero Page Size
.DA 0
CS.START cld
jmp (.1,x)
.DA #$61 6502,Level 1 (65c02)
.DA #1 BIN Layout Version 1
.DA #0 S.PS.F.EVENT
.DA #0
.DA CS.END-CS.START Code Size (without Constants)
.DA DS.END-DS.START Data SegmentSize
.DA #64 Stack Size
.DA #ZS.END-ZS.START Zero Page Size
.DA 0
*--------------------------------------
* Relocation Table
*--------------------------------------
.1 .DA CS.INIT
.DA CS.RUN
.DA CS.DOEVENT
.DA CS.QUIT
.1 .DA CS.INIT
.DA CS.RUN
.DA CS.DOEVENT
.DA CS.QUIT
L.MSG.USAGE .DA MSG.USAGE
L.MSG.REG .DA MSG.REG
L.MSG.REG .DA MSG.REG
L.MSG.REGEXT .DA MSG.REGEXT
L.MSG.DIR .DA MSG.DIR
L.MSG.DIR .DA MSG.DIR
L.MSG.DIREXT .DA MSG.DIREXT
L.MSG.BDEV .DA MSG.BDEV
L.MSG.BDEV .DA MSG.BDEV
L.MSG.BDEVEXT .DA MSG.BDEVEXT
L.MSG.ENTER .DA MSG.ENTER
L.MSG.ENTER .DA MSG.ENTER
L.PRODOS.FT.TXT .DA PRODOS.FT.TXT
L.FMT.Date .DA FMT.Date
L.FMT.Time .DA FMT.Time
L.FMT.Date .DA FMT.Date
L.FMT.Time .DA FMT.Time
L.FMT.string6 .DA FMT.string6
L.FMT.int16 .DA FMT.int16
L.FMT.int16 .DA FMT.int16
J.CS.RUN.PRINT .DA CS.RUN.PRINT.REG
.DA CS.RUN.PRINT.DIR
.DA CS.RUN.PRINT.CDEV
.DA CS.RUN.PRINT.BDEV
.DA CS.RUN.PRINT.CDEV
.DA CS.RUN.PRINT.CDEV
.DA CS.RUN.PRINT.CDEV
.DA CS.RUN.PRINT.CDEV
.DA 0
.DA CS.RUN.PRINT.DIR
.DA CS.RUN.PRINT.CDEV
.DA CS.RUN.PRINT.BDEV
.DA CS.RUN.PRINT.CDEV
.DA CS.RUN.PRINT.CDEV
.DA CS.RUN.PRINT.CDEV
.DA CS.RUN.PRINT.CDEV
.DA 0
*--------------------------------------
CS.INIT clc
rts
CS.INIT clc
rts
*--------------------------------------
CS.RUN
stz bIsTTY
CS.RUN stz bIsTTY
jsr CS.RUN.ISATTY
.1 inc ArgCount
@ -705,14 +704,14 @@ CS.RUN.NewLine.8
CS.RUN.ISATTY ldy #S.PS.hStdOut
lda (pPS),y
tax
lsr
bcc .9
lda Nod.Table.hFD-2,x
lda hFDs-1,x
>SYSCALL GetMemPtr
>STYA ZPPtr1
lda (ZPPtr1)
beq .9
inc bIsTTY
.9 rts
*--------------------------------------
CS.DOEVENT sec

View File

@ -38,14 +38,21 @@ CS.START cld
.DA CS.EVENT
.DA CS.QUIT
L.MSG0 .DA MSG0
L.MSG1 .DA MSG1
L.MSG2.ERR .DA MSG2.ERR
L.MSG2 .DA MSG2
L.MSG2.C .DA MSG2.C
L.MSG2.B .DA MSG2.B
L.MSG3 .DA MSG3
L.MSG4 .DA MSG4
L.MSG.DEV .DA MSG.DEV
L.MSG.DEV.ERR .DA MSG.DEV.ERR
L.MSG.DEV.DIB .DA MSG.DEV.DIB
L.MSG.DEV.C .DA MSG.DEV.C
L.MSG.DEV.B .DA MSG.DEV.B
L.MSG.PIPE .DA MSG.PIPE
L.NO.PATH .DA NO.PATH
J.FD .DA DumpFD.REG
.DA DumpFD.DIR
.DA DumpFD.CDEV
.DA DumpFD.CDEV
.DA DumpFD.LNK
.DA DumpFD.DSOCK
.DA DumpFD.SSOCK
.DA DumpFD.PIPE
L.FD.T .DA FD.T.REG
.DA FD.T.DIR
.DA FD.T.CDEV
@ -59,73 +66,44 @@ L.FD.T .DA FD.T.REG
CS.INIT clc
rts
*--------------------------------------
CS.RUN jsr DumpDev
bcs .9
jsr DumpNod
bcs .9
.8 lda #0 tell TSKMGR that all done ok, but
sec we do not want to stay in memory
.9 rts
*--------------------------------------
DumpDev >LDYA L.MSG0
CS.RUN >LDYA L.MSG0
>SYSCALL PutS
ldx #1
stx Index
ldx #0
.1 lda Dev.Table-1,x
sta ZPFDPtr
lda Dev.Table,x
sta ZPFDPtr+1
.1 stx Index
lda hFDs,x
beq .7
jsr DumpDevFD
>SYSCALL GetMemPtr
>STYA ZPFDPtr
jsr DumpFD
bcs .9
ldy #DEV.DIB+S.DIB-1
ldx #S.DIB-1
.2 lda BLANK.DIB,x
sta (pData),y
dey
dex
bpl .2
>PUSHB Index
>PUSHEA.G DEV.DIB
>SYSCALL GetDevStatus
bcc .6
pha
>PUSHW L.MSG2.ERR
pla
>PUSHA
>PUSHBI 1
>SYSCALL PrintF
bcs .9
bra .7
.6 jsr DumpDevDIB
bcs .9
.7 inc Index
inc Index
ldx Index
cpx #K.DEV.MAX*2+1
.7 inx
cpx #K.hFD.MAX
bne .1
.8 clc
lda #0
sec
.9 rts
*--------------------------------------
DumpDevFD >PUSHW L.MSG1
DumpFD lda (ZPFDPtr)
tax
jmp (J.FD,x)
*--------------------------------------
DumpFD.REG
DumpFD.DIR
clc
rts
*--------------------------------------
DumpFD.CDEV
DumpFD.BDEV >PUSHW L.MSG.DEV
>PUSHB Index
>PUSHB (ZPFDPtr) S.FD.T
jsr DumpFD.T
lda ZPFDPtr
clc
@ -137,16 +115,39 @@ DumpDevFD >PUSHW L.MSG1
ldy #S.FD.DEV.DRVPTR+1
>PUSHB (ZPFDPtr),y
dey
>PUSHB (ZPFDPtr),y
>PUSHBI 6
>PUSHBI 7
>SYSCALL PrintF
rts
bcs .9
ldy #DEV.DIB+S.DIB-1
ldx #S.DIB-1
.1 lda BLANK.DIB,x
sta (pData),y
dey
dex
bpl .1
ldx Index
>PUSHB hFDs,x
>PUSHEA.G DEV.DIB
>SYSCALL GetDevStatus
bcc DumpFD.DevDIB
pha
>PUSHW L.MSG.DEV.ERR
pla
>PUSHA
>PUSHBI 1
>SYSCALL PrintF
.9 rts
*--------------------------------------
DumpDevDIB >PUSHW L.MSG2
DumpFD.DevDIB >PUSHW L.MSG.DEV.DIB
>LDA.G DEV.DIB+S.DIB.S
@ -181,7 +182,7 @@ DumpDevDIB >PUSHW L.MSG2
>LDA.G DEV.DIB+S.DIB.S
bpl .4 char device...
>PUSHW L.MSG2.B
>PUSHW L.MSG.DEV.B
>PUSHBI 0
>PUSHB.G DEV.DIB+S.DIB.SIZE+2
@ -190,59 +191,46 @@ DumpDevDIB >PUSHW L.MSG2
>PUSHBI 4
bra .8
.4 >PUSHW L.MSG2.C
.4 >PUSHW L.MSG.DEV.C
>PUSHBI 0
.8 >SYSCALL PrintF
.9 rts
*--------------------------------------
DumpNod >LDYA L.MSG3
>SYSCALL PutS
DumpFD.LNK
DumpFD.DSOCK
DumpFD.SSOCK clc
rts
*--------------------------------------
DumpFD.PIPE >PUSHW L.MSG.PIPE
ldx #2
jsr DumpFD.T
.1 stx Index
jsr DumpFD.Name
>PUSHBI 5
>SYSCALL PrintF
clc
rts
*--------------------------------------
DumpFD.T ldx Index
>PUSHB hFDs,x
lda Nod.Table.hFD-2,x
beq .7
>PUSHW L.MSG4
txa
>PUSHA
lda Nod.Table.hFD-2,x
>PUSHA
>SYSCALL GetMemPtr
>STYA ZPFDPtr
lda (ZPFDPtr)
lda (ZPFDPtr) S.FD.T
tax
>PUSHW L.FD.T,x
rts
*--------------------------------------
DumpFD.Name ldx Index
lda hFDs.hName,x
beq .1
ldx Index
lda Nod.Table.hName-2,x
bne .2
>LDYA L.NO.PATH
bra .3
>SYSCALL GetMemPtr
>PUSHYA
rts
.2 >SYSCALL GetMemPtr
.3 >PUSHYA
>PUSHBI 6
>SYSCALL PrintF
ldx Index
.7 inx
inx
cpx #K.NOD.MAX+2
bne .1
clc
.9 rts
.1 >PUSHYA L.NO.PATH
rts
*--------------------------------------
CS.EVENT sec
rts
@ -251,16 +239,16 @@ CS.QUIT clc
rts
*--------------------------------------
CS.END
MSG0 .AZ "hDev Tp Name Addr. Status Typ/Sub IDString Version Size (BLK)"
MSG1 .AZ "%03d %h %12s $%H "
MSG2.ERR .AZ "Device Error : $%h\r\n"
MSG2 .AZ "%s $%h/$%h %16S %03d.%03d "
MSG2.B .AZ "%10u\r\n"
MSG2.C .AZ "n/a\r\n"
MSG.SFLAGS .AS "bwrlneio"
MSG0 .AZ "hFD Type Name Addr Status Typ/Sub IDString Version Size (BLK)"
MSG.DEV .AZ "%3d %5s %12s %H "
MSG.DEV.ERR .AZ "Device Error : $%h\r\n"
MSG.DEV.DIB .AZ "%s $%h/$%h %16S %03d.%03d "
MSG.DEV.B .AZ "%10u\r\n"
MSG.DEV.C .AZ "n/a\r\n"
MSG.PIPE .AZ "%3d %5s %s\r\n"
*--------------------------------------
MSG3 .AZ "hNod hFD Type Filepath"
MSG4 .AZ "%03d $%h %5s %s\r\n"
MSG.SFLAGS .AS "bwrlneio"
NO.PATH .AZ "(no path)"
*--------------------------------------
FD.T.REG .AZ "REG"

View File

@ -38,6 +38,7 @@ CS.START cld
.DA CS.QUIT
L.MSG0 .DA MSG0
L.MSG1 .DA MSG1
L.MSG.NA .DA MSG.NA
L.FD.T .DA FD.T.REG
.DA FD.T.DIR
.DA FD.T.CDEV
@ -54,40 +55,50 @@ CS.INIT clc
CS.RUN >LDYA L.MSG0
>SYSCALL PutS
ldx #2
ldx #1
.1 stx FILE.ID
lda Nod.Table.hFD-2,x
lda hFDs-1,x
beq .7
>PUSHW L.MSG1
txa
>PUSHA
lda Nod.Table.hFD-2,x
lda hFDs-1,x
>PUSHA
>SYSCALL GetMemPtr
>STYA ZPFDPtr
ldx FILE.ID
lda hFDs.oCnt-1,x
>PUSHA
lda (ZPFDPtr)
tax
>PUSHW L.FD.T,x
ldx FILE.ID
lda Nod.Table.hName-2,x
>SYSCALL GetMemPtr
>PUSHYA
lda hFDs.hName-1,x
bne .5
>LDYA L.MSG.NA
bra .6
.5 >SYSCALL GetMemPtr
>PUSHBI 6
.6 >PUSHYA
>PUSHBI 7
>SYSCALL PrintF
.7 ldx FILE.ID
inx
inx
cpx #K.NOD.MAX*2+2
cpx #K.hFD.MAX+1
bne .1
lda #0
@ -101,8 +112,9 @@ CS.QUIT clc
rts
*--------------------------------------
CS.END
MSG0 .AZ "hFILE hFD Type Filepath"
MSG1 .AZ "%3d %3d %5s %s\r\n"
MSG0 .AZ "hFILE hFD Cnt Type Filepath"
MSG1 .AZ "%3d %3d %3d %5s %s\r\n"
MSG.NA .AZ "n/a"
FD.T.REG .AZ "REG"
FD.T.DIR .AZ "DIR"
FD.T.CDEV .AZ "CDEV"

View File

@ -116,13 +116,10 @@ CS.RUN
lda (pPS),y
tax
lsr
bcs .71
lda Nod.Table.hFD-2,x
lda hFDs-1,x
>SYSCALL GetMemPtr
>STYA ZPPtr1
lda (ZPPtr1)
cmp #S.FD.T.PIPE
bne .71

View File

@ -159,10 +159,7 @@ CS.RUN.CheckArgs jsr CS.RUN.NextArg
lda (pPS),y
tax
lsr
bcs .97
lda Nod.Table.hFD-2,x
lda hFDs-1,x
>SYSCALL GetMemPtr
>STYA ZPPtr1
lda (ZPPtr1)
@ -216,9 +213,7 @@ CS.RUN.OPEN >PUSHYA
CS.RUN.ISATTY ldy #S.PS.hStdOut
lda (pPS),y
tax
lsr
bcc .9
lda Nod.Table.hFD-2,x
lda hFDs-1,x
>SYSCALL GetMemPtr
>STYA ZPPtr1
lda (ZPPtr1)

View File

@ -263,8 +263,8 @@ NSC.Write php
rts
*--------------------------------------
NSC.Select
* sta $C100
lda $C00B Workaround for Ultrawarp bug
sta $C100
* lda $C00B Workaround for Ultrawarp bug
lda $C104 Reset DS1216E comparison register with READ A2=1

View File

@ -202,7 +202,7 @@ CheckArgs.A lda iArg
bcs .9
>SYSCALL AToL
>PUSHWI 0
>PUSHWZ
>PUSHWI 3600
>FPU uMUL
>PULLL Adjust

View File

@ -160,10 +160,7 @@ CS.RUN.CheckArgs jsr CS.RUN.NextArg
lda (pPS),y
tax
lsr
bcs .97
lda Nod.Table.hFD-2,x
lda hFDs-1,x
>SYSCALL GetMemPtr
>STYA ZPPtr1
lda (ZPPtr1)
@ -217,9 +214,7 @@ CS.RUN.OPEN >PUSHYA
CS.RUN.ISATTY ldy #S.PS.hStdOut
lda (pPS),y
tax
lsr
bcc .9
lda Nod.Table.hFD-2,x
lda hFDs-1,x
>SYSCALL GetMemPtr
>STYA ZPPtr1
lda (ZPPtr1)

View File

@ -276,7 +276,7 @@ CS.RUN.FILE jsr CS.RUN.BuildFilePath
>PUSHW ZPFullPath
>LDA.G hArcFile
tay
lda Nod.Table.hName-2,y
lda hFDs.hName-1,y
>SYSCALL GetMemPtr
>PUSHYA
>SYSCALL StrCmp

View File

@ -147,10 +147,7 @@ CS.RUN.CheckArgs
lda (pPS),y
tax
lsr
bcs .97
lda Nod.Table.hFD-2,x
lda hFDs-1,x
>SYSCALL GetMemPtr
>STYA ZPPtr1
lda (ZPPtr1)

View File

@ -13,7 +13,7 @@ CL.Init >LDYAI 256
.9 rts
*--------------------------------------
CL.PrintPrompt >PUSHW L.PS1
>PUSHWI 0
>PUSHWZ
>SYSCALL Expand
bcs .9

View File

@ -85,7 +85,7 @@ CMD.CD.0 >LDYA ZPArgVBufPtr
CMD.CD.HOME >LDYA L.HOME
CMD.CD.YA >PUSHYA
>PUSHWI 0 Allocate
>PUSHWZ Allocate
>SYSCALL RealPath
bcs CMD.POPD.RTS
>STYA ZPPtr1
@ -449,7 +449,7 @@ CMD.REN lda (ZPArgVBufPtr)
beq CMD.REN.CSYN
>PUSHW ZPArgVBufPrev old path
>PUSHWI 0 Allocate
>PUSHWZ Allocate
>SYSCALL RealPath
bcs CMD.REN.CSYN

View File

@ -469,7 +469,7 @@ CORE.ArgV.Add lda #C.SPACE
>LDYA ZPArgVBufPtr
>STYA ZPArgVBufPrev
>PUSHYA
>PUSHWI 0
>PUSHWZ
>SYSCALL Expand
bcs .9

View File

@ -51,16 +51,7 @@ IO.Reset.In sec
.8 clc
rts
*--------------------------------------
IO.Pipe.Out ldy #IO.DEVFIFO+4
ldx #4
.1 lda DEV,x
sta (pData),y
dey
dex
bpl .1
>PUSHEA.G IO.DEVFIFO+5 leave room for /dev/
IO.Pipe.Out >PUSHEA.G IO.DEVFIFO
>PUSHWZ mode
>SYSCALL MKFIFO
bcs .9

View File

@ -586,8 +586,6 @@ EscChars .AS 'DBAC'
EscChars.Cnt .EQ *-EscChars
EscChars.Remap .DA #C.BS,#C.VT,#C.LF,#C.FS
*--------------------------------------
DEV .AS "/dev/"
*--------------------------------------
CD.. .AZ ".."
*--------------------------------------
IN .AZ "IN"

View File

@ -258,15 +258,16 @@ CS.RUN.KILL >PUSHW L.MSG.PS
>SYSCALL Kill
rts
*--------------------------------------
CS.RUN.DEV ldx #1
CS.RUN.DEV ldx #K.hFD.MAX
.1 dex
stx Index
.1 lda Dev.Table-1,x
sta ZPPtr1
lda Dev.Table,x
sta ZPPtr1+1
lda hFDs,x
beq .7
>SYSCALL GetMemPtr
>STYA ZPPtr1
>PUSHW L.MSG.DEV
>PUSHB Index
@ -280,12 +281,14 @@ CS.RUN.DEV ldx #1
>PUSHBI 3
>SYSCALL PrintF
.7 inc Index
inc Index
ldx Index
cpx #K.DEV.MAX*2+1
>PUSHB hFDs,x
>PUSHBI IOCTL.CLOSE
>PUSHWZ
>SYSCALL IOCTL
.7 ldx Index
bne .1
rts

View File

@ -198,7 +198,7 @@ CS.RUN.PRINT.RTS
CS.RUN.DUMP lda ArgFile
>SYSCALL ArgV
>PUSHYA
>PUSHWI 0 Allocate
>PUSHWZ Allocate
>SYSCALL RealPath
bcs CS.RUN.PRINT.RTS

View File

@ -119,7 +119,7 @@ CS.RUN inc ArgIndex
ldy #S.PS.hStdIn
lda (pPS),y
tax
lda Nod.Table.hFD-2,x
lda hFDs-1,x
>SYSCALL GetMemPtr
>STYA ZPPtr1
lda (ZPPtr1)

View File

@ -135,10 +135,7 @@ CS.RUN.CheckArgs
lda (pPS),y
tax
lsr
bcs .97
lda Nod.Table.hFD-2,x
lda hFDs-1,x
>SYSCALL GetMemPtr
>STYA ZPPtr1
lda (ZPPtr1)

View File

@ -1,26 +1,6 @@
NEW
AUTO 3,1
*--------------------------------------
K.VER .EQ $5E00 94.0
K.ENV.SIZE .EQ 256
*--------------------------------------
K.MEM.ALIGN .EQ 16
K.MEM.nALIGNm1 .EQ $F0
*K.MEM.ALIGN .EQ 64
*K.MEM.nALIGNm1 .EQ $C0
*--------------------------------------
K.DEV.MAX .EQ 32
K.NOD.MAX .EQ 32
K.OF.MAX .EQ 32
K.PS.MAX .EQ 32
K.USR.MAX .EQ 16
K.FLT.MAX .EQ 4
K.EVT.MAX .EQ 4
K.TTY.MAX .EQ 8
K.IRQDEV.MAX .EQ 4
*--------------------------------------
ZPDRV .EQ $20 32 bytes
ZPLIB .EQ $40 32 bytes
*--------------------------------------

View File

@ -1,27 +1,44 @@
NEW
AUTO 3,1
*--------------------------------------
K.VER .EQ $5E00 94.0
K.ENV.SIZE .EQ 256
*--------------------------------------
K.MEM.ALIGN .EQ 16
K.MEM.nALIGNm1 .EQ $F0
*K.MEM.ALIGN .EQ 64
*K.MEM.nALIGNm1 .EQ $C0
*--------------------------------------
K.hFD.MAX .EQ 32
K.FLT.MAX .EQ 4
K.USR.MAX .EQ 8
K.PS.MAX .EQ 32
K.EVT.MAX .EQ 4
K.TTY.MAX .EQ 8
K.IRQDEV.MAX .EQ 4
*--------------------------------------
Mem.Table .EQ $0800
*--------------------------------------
Dev.Table .EQ $1300 K.DEV.MAX*2
hFDs .EQ $1300 K.hFD.MAX
hFDs.hName .EQ $1320 K.hFD.MAX
hFDs.oCnt .EQ $1340 K.hFD.MAX
*--------------------------------------
Nod.Table.hName .EQ $1340 K.NOD.MAX*2
Nod.Table.hFD .EQ $1341
Flt.Table.pftLO .EQ $1360 K.FLT.MAX
Flt.Table.pftHI .EQ $1364 K.FLT.MAX
Flt.Table.cbLO .EQ $1368 K.FLT.MAX
Flt.Table.cbHI .EQ $136C K.FLT.MAX
*--------------------------------------
S.Table.hSID .EQ $1370 K.USR.MAX
S.Table.hFile .EQ $1278 K.USR.MAX
*--------------------------------------
PS.Table.PID .EQ $1380 K.PS.MAX
PS.Table.hPS .EQ $13A0 K.PS.MAX
PS.Table.Hits .EQ $13C0 K.PS.MAX
PS.Table.Stats .EQ $13E0 K.PS.MAX
*--------------------------------------
S.Table.hSID .EQ $1400 K.USR.MAX
S.Table.hFile .EQ $1410 K.USR.MAX
*--------------------------------------
Flt.Table.pftLO .EQ $1420 K.FLT.MAX
Flt.Table.pftHI .EQ $1424 K.FLT.MAX
Flt.Table.cbLO .EQ $1428 K.FLT.MAX
Flt.Table.cbHI .EQ $142C K.FLT.MAX
*--------------------------------------
A2osX.EndTables .EQ $1430
A2osX.EndTables .EQ $1400
*--------------------------------------
MAN
SAVE inc/kernel.i

View File

@ -147,7 +147,7 @@ CIFS.OpenDir >STYA pPath resolved path
sta (ZPPtr2),y
>PUSHW pPath
>PUSHWI 0
>PUSHWZ
>PUSHB hFD
>SYSCALL2 mknod
bcc .9
@ -480,18 +480,18 @@ CIFS2.ReadDir.FillBuf
CIFS.CloseReg
CIFS.CloseDir tax
lda Nod.Table.hName-2,x
lda hFDs.hName-1,x
beq .1
phx
stz Nod.Table.hName-2,x
stz hFDs.hName-1,x
>SYSCALL2 FreeMem
plx
.1 lda Nod.Table.hFD-2,x
stz Nod.Table.hFD-2,x
.1 lda hFDs-1,x
stz hFDs-1,x
>SYSCALL2 FreeMem
stz CIFS.Status

View File

@ -524,12 +524,12 @@ CIFS.CallBack bit CIFS.Status
GetPFD tax
phx
lda Nod.Table.hName-2,x
lda hFDs.hName-1,x
>SYSCALL2 GetMemPtr
>STYA pPath
plx
lda Nod.Table.hFD-2,x
lda hFDs-1,x
>SYSCALL2 GetMemPtr
>STYA pFD
rts

View File

@ -378,8 +378,8 @@ LDR.ClkDevScan php
dex
bne .1
*--------------------------------------
* sta $C300
lda $C00B Workaround for Ultrawarp bug
sta $C100
* lda $C00B Workaround for Ultrawarp bug
lda $C104 Reset DS1216E comparison register with READ A2=1
@ -1085,6 +1085,7 @@ LDR.PrintX bit RROMBNK2
pla
sta INVFLG
sta CLRPAGE2 for screen holes proper access
rts
*--------------------------------------
PALETTE.MAIN .HS 00.02.04.06.08.0A.0C.0E

View File

@ -15,8 +15,8 @@ NCLK.START php
sta SETCXROM
* sta $C300
lda $C00B Workaround for Ultrawarp bug
sta $C100
* lda $C00B Workaround for Ultrawarp bug
lda $C104 Reset DS1216E comparison register with READ A2=1

View File

@ -363,7 +363,7 @@ CS.RUN.CONF.COMLISTEN
rts
CS.RUN.CONF.MSGFILE
>PUSHYA
>PUSHWI 0 Allocate
>PUSHWZ Allocate
>SYSCALL RealPath
bcs .9
@ -374,7 +374,7 @@ CS.RUN.CONF.MSGFILE
CS.RUN.CONF.STARTUPFILE
>PUSHYA
>PUSHWI 0 Allocate
>PUSHWZ Allocate
>SYSCALL RealPath
bcs .9

View File

@ -104,8 +104,8 @@ CS.RUN lda hSocket
>PUSHB hSocket
>PUSHB hSMBContext
>PUSHWI 0
>PUSHWI 0
>PUSHWZ
>PUSHWZ
>PUSHBI 0
>LIBCALL hLIBCIFS,LIBCIFS.SessionSetup
bcs CS.INIT.RTS

View File

@ -307,7 +307,7 @@ CS.RUN.CONF.LISTEN
.9 rts
CS.RUN.CONF.DOCUMENTROOT
>PUSHYA
>PUSHWI 0 Allocate
>PUSHWZ Allocate
>SYSCALL RealPath
bcs .9

View File

@ -5,7 +5,7 @@ NEW
.OR $2000
.TF sbin/initd
*--------------------------------------
INITDDBG .EQ 1
INITDDBG .EQ 0
*--------------------------------------
.INB inc/macros.i
.INB inc/a2osx.i
@ -64,6 +64,8 @@ CS.RUN ldy #S.PS.PID
cmp #1
bne .9
* bra .55
ldy #S.PS.hStdIn
lda (pPS),y
>SYSCALL FEOF
@ -78,7 +80,7 @@ CS.RUN ldy #S.PS.PID
cmp #18 CTRL-R for Root mode
bne .1
>LDYA L.MSG.CTRLR
.55 >LDYA L.MSG.CTRLR
>SYSCALL PutS
ldx #0

View File

@ -292,7 +292,7 @@ CS.RUN.DumpFile >PUSHYA
bcs .7
>PUSHW ZPBufPtr
>PUSHWI 0
>PUSHWZ
>SYSCALL Expand
bcc .2

View File

@ -136,7 +136,7 @@ FilterMatch.NextPtr2
rts
*--------------------------------------
InitSrcDirYA >PUSHYA
>PUSHWI 0 Allocate
>PUSHWZ Allocate
>SYSCALL RealPath
bcs FilterMatch.RTS
@ -288,7 +288,7 @@ ResetSrcDir jsr GethDIR
*--------------------------------------
.DO X.COPY.TO.DEST=1
InitDstDirYA >PUSHYA
>PUSHWI 0 Allocate
>PUSHWZ Allocate
>SYSCALL RealPath
bcs InitSrcDirYA.RTS

View File

@ -89,7 +89,7 @@ K.ArgV tax save requested arg#
* A = Arg count
*\--------------------------------------
K.Arg2ArgV >PULLW ZPPtr2 Get target buffer
>PUSHWI 0 allocate a new buffer
>PUSHWZ allocate a new buffer
jsr K.Expand args on stack
bcs .9

View File

@ -115,14 +115,16 @@ CORE.Events jsr CORE.GetEvents
bcs .8
sta KBDSTROBE
and #$0F
tax
lda A2osX.SCRNDEVS,x Get DevID
beq .8 No device claimed this screen
cmp A2osX.ASCREEN Same as active screen...nothing to do
beq .8
tax
lda A2osX.SCRNDEVS,x Get DevID
beq .8 No device claimed this screen
>PUSHA
>PUSHBI IOCTL.CONTROL request
>PUSHWZ Param
@ -216,8 +218,8 @@ CORE.GetEvents lda #Evt.Table
lda IRQ.Mode
eor #$C0
sta IRQ.Mode
ldx A2osX.ASCREEN
cpx #3 devID 3 is /DEV/CONSOLE
ldx A2osX.ASCREEN /DEV/CONSOLE
bne .22
sta SYS.BASL0+38

View File

@ -116,7 +116,7 @@ IO.Open.FLAGS .BS 1
IO.Open.TYPE .BS 1
IO.Open.AUXTYPE .BS 2
IO.hFD .BS 1
IO.hDevNod .BS 1
IO.hFILE .BS 1
.ED
*--------------------------------------
SaveSM .EQ $100 Aux
@ -159,9 +159,9 @@ Mem.LastSlot .EQ $0806
Z80CODE .EQ $1000 (00000h) Up To $10FF
Z80STACK .EQ $10FF (000FFh) Down to $1000
*--------------------------------------
K.Buf256 .EQ $1100
K.Buf256 .EQ $1100 512 bytes....
*--------------------------------------
K.IOBuf .EQ $1200
K.IOBuf .EQ $1200 ....for ReadDir
*--------------------------------------
Mem.MHiMem .EQ A2osX.SYSCALL
Mem.XLoMem .EQ $1000

View File

@ -6,84 +6,63 @@ NEW
* ## RETURN VALUE
* CC = OK, CS = ERROR
* Y,A = FD
* X = hDev
* X = hFD
*\--------------------------------------
K.GetDevByName >STYA ZPPtr1 requested dev name
ldx #1
.1 lda Dev.Table,x
beq .4
.1 lda hFDs-1,x
beq .7
sta pFD+1
pha
sta IO.hFD
jsr K.GetMemPtr
>STYA pFD
lda Dev.Table-1,x
sta pFD
clc
adc #S.FD.DEV
tay
pla
adc /S.FD.DEV
jsr .8
bcs .3
lda hFDs.hName-1,x
bne .2
jsr DEV.GetPDrv
>LDYA pFD X = hDevNod
lda pFD
clc
adc #S.FD.DEV
sta ZPPtr2
* clc
rts
lda pFD+1
adc /S.FD.DEV
sta ZPPtr2+1
bra .3
.2 jsr K.GetMemPtr
>STYA ZPPtr2
.3 inx no....loop
inx
cpx #K.DEV.MAX*2+1
bne .1
.4 ldx #2
.5 lda Nod.Table.hFD-2,x
lda (ZPPtr2)
cmp #'/' REG/DIR
beq .7
lda Nod.Table.hName-2,x
beq .7
jsr K.GetMemPtr
.3 ldy #$ff
jsr .8
bcs .7
lda Nod.Table.hFD-2,x
jmp K.GetMemPtr Y,A = pPD, X = hDevNod
.7 inx
inx
cpx #K.NOD.MAX*2+2
bne .5
lda #MLI.E.NODEV
* sec
rts
*--------------------------------------
.8 >STYA ZPPtr2
ldy #$ff
.80 iny
.4 iny
lda (ZPPtr1),y
cmp (ZPPtr2),y
bne .89
bne .7
eor #0
bne .80
bne .4
stx IO.hFILE
>LDYA pFD
ldx IO.hFD
clc
rts
.89 sec
.7 inx no....loop
cpx #K.hFD.MAX+1
bne .1
lda #MLI.E.NODEV
* sec
K.GetDev.9 rts
*/--------------------------------------
@ -116,20 +95,21 @@ DEV.GetStatus sta K.S.IOCTL+S.IOCTL.S
>LDYAI K.S.IOCTL
ldx #IOCTL.STATUS
*--------------------------------------
DEV.pDrvJmp jmp (pDrv)
jmp (pDrv)
*--------------------------------------
DEV.OPEN ldx #IOCTL.OPEN
lda IO.hDevNod
lda IO.hFD
jsr DEV.pDrvJmp
bcs .9
lda IO.hDevNod
lda IO.hFD
.9 rts
*--------------------------------------
DEV.CLOSE ldx #IOCTL.CLOSE
lda IO.hDevNod
jmp (pDrv)
lda IO.hFD
DEV.pDrvJmp jmp (pDrv)
*--------------------------------------
DEV.READ ldx #IOCTL.READ
.HS 2C BIT ABS
@ -162,19 +142,10 @@ DEV.WRITE ldx #IOCTL.WRITE
*\--------------------------------------
K.MKDev jsr SHARED.PullP2P1 ptr2=name,tr1=fd
ldx #1
jsr DEV.GetFreeFD
bcs .9
.10 lda Dev.Table,x
beq .11
inx
inx
cpx #K.DEV.MAX*2+1
bne .10
bra .9
.11 stx IO.hDevNod
stx IO.hFILE
ldy #$ff
ldx #S.FD.DEV
@ -188,16 +159,19 @@ K.MKDev jsr SHARED.PullP2P1 ptr2=name,tr1=fd
tay
lda #0
jsr MEM.GetKBuf
bcs .99
jsr K.GetMem
bcs .9
>STYA pFD
>STYA .4+1
ldx IO.hDevNod
sta Dev.Table,x
tya
sta Dev.Table-1,x
stx IO.hFD
txa
ldx IO.hFILE
sta hFDs-1,x
stz hFDs.hName-1,x
ldy #S.FD.DEV-1
@ -222,7 +196,7 @@ K.MKDev jsr SHARED.PullP2P1 ptr2=name,tr1=fd
lda #S.IOCTL.S.STATUS
jsr DEV.GetStatus
bcs .99
bcs .9
lda K.IOBuf Get Status byte
bit #S.DIB.S.IRQ
@ -238,9 +212,9 @@ K.MKDev jsr SHARED.PullP2P1 ptr2=name,tr1=fd
cpx #K.IRQDEV.MAX*2+1
bne .5
.9 lda #E.OOH
* sec
.99 rts
.9 rts
.7 ldy #IOCTL.IRQ+4
lda (pDRV),y
@ -249,13 +223,13 @@ K.MKDev jsr SHARED.PullP2P1 ptr2=name,tr1=fd
lda (pDRV),y
sta IRQ.Vectors+1,x
.8 lda IO.hDevNod
.8 lda IO.hFD
* clc
rts
*/--------------------------------------
* # IOCTL
* ## C
* `int ioctl(short int DevID, short int request, void *param);`
* `int ioctl(short int hFD, short int request, void *param);`
* ## ASM
* `>PUSHB hDEV`
* `>PUSHB request`
@ -264,11 +238,10 @@ K.MKDev jsr SHARED.PullP2P1 ptr2=name,tr1=fd
* ## RETURN VALUE
* Y,A = ...
*\--------------------------------------
K.IOCTL ldy #3 hDev
K.IOCTL ldy #3 hFD
lda (pStack),y
jsr DEV.GetPFD
bcs .9
ldy #2 request
lda (pStack),y
@ -279,35 +252,12 @@ K.IOCTL ldy #3 hDev
inc pStack
jmp (pDrv)
.9 >RET 4
*--------------------------------------
DEV.GetPFD sta IO.hDevNod
tax
lsr
bcs .1
lda Nod.Table.hFD-2,x empty slot ?
beq DEV.GetPFD.9
sta IO.hFD
DEV.GetPFD sta IO.hFD
jsr K.GetMemPtr
>STYA pFD
* clc
rts
.1 stz IO.hFD
ldy Dev.Table-1,x
lda Dev.Table,x
beq DEV.GetPFD.9
>STYA pFD
DEV.GetPDrv ldy #S.FD.DEV.DRVPTR
lda (pFD),y
sta pDRV
@ -315,20 +265,17 @@ DEV.GetPDrv ldy #S.FD.DEV.DRVPTR
lda (pFD),y
sta pDRV+1
clc
rts
DEV.GetPFD.9 lda #E.INVH
sec
rts
*--------------------------------------
* X = 0 > REG
* X = 1 > DIR
* X = 2 > PIPE
*--------------------------------------
DEV.MkFD stx .8+1
DEV.MkFD sta .8+1 S.FD.T
ldy DEV.MkFD.Y,x
jsr DEV.GetFreeFD
bcs .9
stx IO.hFILE
ldy #16 MAX=16 for S.FD.DIR
lda #0
ldx #S.MEM.F.INIT0+S.MEM.F.FD
jsr MEM.GetMem.YAX
@ -336,16 +283,43 @@ DEV.MkFD stx .8+1
>STYA pFD
stx IO.hFD
txa
.7 ldx IO.hFILE
.8 ldx #$ff SELF MODIFIED
lda DEV.MkFD.T,x
sta hFDs-1,x
stz hFDs.hName-1,x
.8 lda #$ff SELF MODIFIED
sta (pFD) X = hFD, A = T
* clc
.9 rts
*--------------------------------------
DEV.GetFreeFD ldx #1
DEV.MkFD.Y .DA #S.FD.REG,#S.FD.DIR,#S.FD.PIPE
DEV.MkFD.T .DA #S.FD.T.REG,#S.FD.T.DIR,#S.FD.T.PIPE
clc
.1 lda hFDs-1,x
beq .8
inx
cpx #K.hFD.MAX+1
bne .1
lda #E.OOH
* sec
.8 rts
*--------------------------------------
DEV.hFDFree lda IO.hFD
beq .8
jmp K.FreeMem
.8 clc
rts
*--------------------------------------
MAN
SAVE usr/src/sys/kernel.s.dev

View File

@ -16,7 +16,10 @@ NEW
K.OpenDir jsr PFT.CheckPathYA
bcs .9
jmp FS.OPEN.DIR
jsr FS.OPEN.DIR
bcs .9
jmp K.FOpen.REGDIR
.9 rts
*/--------------------------------------
@ -82,9 +85,6 @@ K.ReadDir.ROOT ldy #S.FD.DIR.FC did we already returned something ?
jsr K.ReadDir.GetBufYA
bcs DIRENT.RTS
lda #16
sta K.ReadDir.EC
.1 lda (ZPPtr2)
and #$0F
beq .4
@ -144,10 +144,6 @@ K.ReadDir.ROOT ldy #S.FD.DIR.FC did we already returned something ?
clc
adc #16
sta ZPPtr2
bcc .5
inc ZPPtr2+1
.5 dec K.ReadDir.EC
bne .1
jsr FS.ClrStat
@ -190,27 +186,22 @@ K.ReadDir.DEV jmp DIRENT.EOF TODO : /dev
*--------------------------------------
K.ReadDir.DIR sta K.MLI.PARAMS+1 A=#S.DIR.PRODOS.REF
>LDYAI 512 Get a 512 bytes buffer for reading dir...
jsr K.GetMem
bcs .99
lda /K.Buf256 read in
stz K.MLI.PARAMS+2 For reading
sta K.MLI.PARAMS+3 For reading
ldy #4 Skip 4 bytes linked list
sty ZPPtr2 PTR to Buffer for PASS #1
sty ZPPtr3 PTR to Buffer for PASS #2
stx K.ReadDir.hBlk
>STYA K.MLI.PARAMS+2 For reading
pha
tya
* clc CC from K.GetMem
adc #4 Skip 4 bytes linked list
sta ZPPtr2 PTR to Buffer for PASS #1
sta ZPPtr3 PTR to Buffer for PASS #2
pla
adc #0
sta ZPPtr2+1 PTR to Buffer for PASS #1
sta ZPPtr3+1 PTR to Buffer for PASS #2
>LDYAI 512
>STYA K.MLI.PARAMS+4
>MLICALL MLIREAD Read A block from directory
bcs .98
bcs .99
ldy #S.FD.DIR.EL Check if first run....
lda (pFD),y
@ -256,8 +247,6 @@ K.ReadDir.DIR sta K.MLI.PARAMS+1 A=#S.DIR.PRODOS.REF
inc K.ReadDir.EC+1 ...and ProDOS does NOT include header entry in EC
bra .4
.98 jmp K.ReadDir.FreeBlk
.99 rts
.2 ldy #S.FD.DIR.EL+3
@ -281,8 +270,11 @@ K.ReadDir.DIR sta K.MLI.PARAMS+1 A=#S.DIR.PRODOS.REF
bne .5
iny
beq .98 no...exit
clc
beq .99 no...exit
*--------------------------------------
* pass #1 compute BufSize...
*--------------------------------------
.5 lda K.ReadDir.EPB
sta K.ReadDir.ECIB
@ -332,13 +324,17 @@ K.ReadDir.DIR1 lda (ZPPtr2) X = EntryCount In This Block
.8 dec K.ReadDir.ECIB
bne K.ReadDir.DIR1
*--------------------------------------
* pass #2 Fill Buffer...(ZPPtr1 & Ptr2 can now be trashed)
K.ReadDir.DIR2 jsr K.ReadDir.GetBuf
bcs K.ReadDir.FreeBlk
lda K.ReadDir.EPB
*--------------------------------------
K.ReadDir.DIR2 lda K.ReadDir.EPB
sta K.ReadDir.ECIB
jsr K.ReadDir.GetBuf
bcc .1
rts
.1 lda (ZPPtr3)
beq .7 Empty slot, skip
@ -393,27 +389,19 @@ K.ReadDir.DIR2 jsr K.ReadDir.GetBuf
dex
bpl .81
jsr K.ReadDir.FreeBlk
K.ReadDir.EXIT ldx K.ReadDir.hBuf
txa
jmp K.GetMemPtr
*--------------------------------------
K.ReadDir.FreeBlk
pha
lda K.ReadDir.hBlk
jsr K.FreeMem
pla
sec
rts
*--------------------------------------
K.ReadDir.GetBuf
>LDYA K.ReadDir.BufSize Get a BufSize bytes buffer for storing results
>LDYA K.ReadDir.BufSize Get a BufSize bytes buffer for storing results
K.ReadDir.GetBufYA
jsr K.GetMem0 make sure 0 filled
bcs .9
stx K.ReadDir.hBuf
>STYA ZPPtr4
.9 rts
*--------------------------------------
K.ReadDir.ADD. ldx #1 filename="1."

View File

@ -3,13 +3,13 @@ NEW
*--------------------------------------
FS.OPEN.REG >MLICALL MLIGETFILEINFO
bcs .10
lda IO.Open.TYPE Already Exists
beq .2
cmp K.MLI.PARAMS+S.FI.T
beq .2
lda #MLI.E.INCFF
sec
rts
@ -28,12 +28,12 @@ FS.OPEN.REG >MLICALL MLIGETFILEINFO
jsr FS.CREATE
bcs .9
.2 ldx #0
.2 lda #S.FD.T.REG
jsr DEV.MkFD
bcs .9
jsr FS.MLIOPEN
bcs .99
bcs FS.OPEN.ERR
lda IO.Open.FLAGS
bit #O.WRONLY
@ -49,37 +49,33 @@ FS.OPEN.REG >MLICALL MLIGETFILEINFO
bra .4
.3 >MLICALL MLIGETEOF
bcs .99
bcs FS.OPEN.ERR
>MLICALL MLISETMARK
.4 bcs .99
.4 bcs FS.OPEN.ERR
.5 lda IO.Open.FLAGS
and #O.TEXT Text Mode ?
beq .6
beq .8
lda #$FF
sta K.MLI.PARAMS+2
lda #C.CR
sta K.MLI.PARAMS+3
>MLICALL MLINEWLINE
bcs .99
.6 >LDYAI K.MLI.PATH+1
>STYA ZPPtr1
jsr K.MkNod.I
bcc .8
.99 pha Save Error Code
jsr FS.CLOSE.REG
pla
sec
.8
bcs FS.OPEN.ERR
.8 lda IO.hFD
* clc
.9 rts
*--------------------------------------
FS.OPEN.DIR ldx #1
FS.OPEN.ERR pha Save Error Code
jsr FS.CLOSE.REGDIR
pla
sec
rts
*--------------------------------------
FS.OPEN.DIR lda #S.FD.T.DIR
jsr DEV.MkFD
bcs .9
@ -88,31 +84,23 @@ FS.OPEN.DIR ldx #1
>MLICALL MLIGETFILEINFO
bcs .9
lda K.MLI.PARAMS+S.FI.T
cmp #S.FI.T.DIR
bne .99
jsr FS.MLIOPEN
bcs .98
.8 >LDYAI K.MLI.PATH+1
>STYA ZPPtr1
jsr K.MkNod.I
bcc .9
.98 pha Save Error Code
jsr FS.CLOSE.DIR
pla
sec
jsr FS.MLIOPEN
bcs FS.OPEN.ERR
.8 lda IO.hFD
* clc
rts
.99 lda #MLI.E.UNSUPST
sec
.9 rts
*--------------------------------------
FS.CLOSE.REG
FS.CLOSE.DIR ldy #S.FD.REG.REF
FS.CLOSE.REGDIR ldy #S.FD.REG.REF
lda (pFD),y
beq .1
@ -122,11 +110,11 @@ FS.CLOSE.DIR ldy #S.FD.REG.REF
.1 ldy #S.FD.REG.IOBUF
lda (pFD),y
beq .2
beq .8
jsr K.FreeMem
.2 jmp DEV.Destroy
.8 jmp DEV.hFDFree
*--------------------------------------
FS.READ.REG ldx #MLIREAD
.HS 2C BIT ABS
@ -138,7 +126,7 @@ FS.WRITE.REG ldx #MLIWRITE
sta K.MLI.PARAMS+1
>PULLW K.MLI.PARAMS+4
>PULLW K.MLI.PARAMS+2
lda #4 Param Count = 4 for MLIREAD & MLIWRITE
jsr GP.MLICall
bcs .9
@ -284,16 +272,16 @@ FS.DirEnt2Stat jsr FS.ClrStat
ldy #S.FIEX.AUXTYPE
lda (ZPPtr3),y
sta K.S.STAT+S.STAT.BLOCKS
asl
asl
sta K.S.STAT+S.STAT.SIZE+1
iny
lda (ZPPtr3),y
sta K.S.STAT+S.STAT.BLOCKS+1
rol
rol
sta K.S.STAT+S.STAT.SIZE+2
lda #0
rol K.S.STAT+S.STAT.SIZE+3

View File

@ -155,7 +155,7 @@ Kernel.Init3 sta SETALTZP
jsr SysScrInit
bcs *
sta CLRMIXED
* sta CLRMIXED
>PUSHWI DEV.CONSOLE
>PUSHBI O.RDWR
@ -287,18 +287,14 @@ MemMgrInit >LDYAI Mem.MHiMem
stz Mem.LastSlot Reserve Slot #0
sta CLRWRITEAUX
ldx #K.DEV.MAX*2-1
ldx #K.hFD.MAX-1
.1 stz Dev.Table,x
.1 stz hFDs,x
stz hFDs.hName,x
stz hFDs.oCnt,x
dex
bpl .1
ldx #K.NOD.MAX*2-1
.2 stz Nod.Table.hName,x
dex
bpl .2
ldx #K.PS.MAX*4-1
.3 stz PS.Table.PID,x
@ -361,24 +357,30 @@ SysScrInit.TTYPtrs
sec
sbc #80*24+S.DCB.TTY
sta FD.TTY+S.FD.DEV.DCBPTR
sta .1+1
sta ZPPtr1
tay
lda FD.TTY+S.FD.DEV.DCBPTR+1
sbc /80*24+S.DCB.TTY
sta FD.TTY+S.FD.DEV.DCBPTR+1
sta .1+2
ldx #S.DCB.TTY-1
sta ZPPtr1+1
sta SETWRITEAUX
.1 stz $ffff,x SELF MODIFIED
dex
bpl .1
>STYA Mem.HiMem
>STYA Mem.Free
ldy #S.DCB.TTY-1
lda #0
.1 sta (ZPPtr1),y
dey
bne .1
lda FD.TTY+S.FD.DEV.DEVID
sta (ZPPtr1)
sta CLRWRITEAUX
rts
@ -1123,8 +1125,8 @@ TskMgrInit >LDYAI MSG.TSK
sta CLRWRITEAUX
>PUSHWI 0
>PUSHWI 0
>PUSHWZ
>PUSHWZ
>SYSCALL OpenSession
bcs .99
@ -1321,12 +1323,13 @@ FD.NULL .DA #S.FD.T.CDEV
.DA DRV.NULL
.DA 0 DCBPTR
.DA 0 BUFPTR
*--------------------------------------
FD.NULL.NAME .AZ "null" NAME
*--------------------------------------
FD.TTY .DA #S.FD.T.CDEV
.DA #0 HANDLER
.DA #0 BUSID
.DA #1 DEVID
.DA #0 DEVID
.DA 0 BUSPTR
.DA DRV.TERM
.BS 2 DCBPTR
@ -1343,6 +1346,7 @@ FD.BDEV .DA #S.FD.T.BDEV
.BS 2 DRVPTR
.DA 0 DCBPTR
.DA 0 BUFPTR
*--------------------------------------
FD.BDEV.NAME .AZ "s1d1"
*--------------------------------------
MAN

View File

@ -428,7 +428,7 @@ K.SYSCALL.BANK .DA #RRAMWRAMBNK1 $00
.DA #0
.DA #$C0 NewStkObj
.DA #0
.DA #0 LoadStkObj
.DA #RRAMWRAMBNK2 LoadStkObj
.DA #0
.DA #$C0 GetStkObjPtr
.DA #0

View File

@ -472,42 +472,6 @@ Mem.IncRefCnt ldy #S.MEM.REFCNT
* A = EC
*\--------------------------------------
*/--------------------------------------
* # LoadStkObj
* Load a file in AUX memory (Stock Objects)
* PUSHW = PATH (Handled by....
* PUSHB = MODE ...
* PUSHB = TYPE ...
* PUSHW = AUXTYPE ...FOpen)
* ## RETURN VALUE
* Y,A = File Length
* X = hMem of Loaded Object in AUX mem
*\--------------------------------------
K.LoadStkObj >SYSCALL2 LoadTxtFile To get ending \0
bcs .99
stx .90+1
sty .81+1 Save File Len
sta .82+1
iny
bne .1
inc +1 for ending 0
.1 jsr MEM.MoveToAux X = AUX hMem
bcs .9
.81 ldy #$ff and file len in Y,A
.82 lda #$ff
* clc
rts
.9 pha
.90 lda #$ff SELF MODIFIED
jsr K.freemem
pla
sec
.99 rts
*/--------------------------------------
* # GetStkObjPtr
* ## ASM
* `lda hStkObj`

View File

@ -96,16 +96,22 @@ PFT.YAToMLIPATH >STYA .1+1
PFT.RTS rts
*--------------------------------------
PFT.CheckNode4 ldy #4
.HS 2C BIT ABS
PFT.CheckNode2 ldy #2
PFT.CheckNodeY lda (pStack),y
PFT.CheckNodeA stx .80+1 Save SYSCALL #
sta .81+1 Save hFILE
sta IO.hFILE
tax
beq .9
cpx #K.hFD.MAX+1
bcs .9
lda hFDs-1,x
beq .9
jsr DEV.GetPFD
bcs .99
ldy #S.FD.PFT
lda (pFD),y
@ -124,7 +130,7 @@ PFT.CheckNodeA stx .80+1 Save SYSCALL #
pla discard JSR return @
pla
ldx .80+1 restore SYSCALL #
lda .81+1 restore passed hFILE
lda IO.hFILE
.7 jmp $ffff SELF MODIFIED
@ -137,10 +143,14 @@ PFT.CheckNodeA stx .80+1 Save SYSCALL #
sta K.MLI.PARAMS+1
.80 ldx #$ff SELF MODIFIED
.81 lda #$ff SELF MODIFIED
.81 lda IO.hFILE
clc
.99 rts
.9 lda #E.INVH
sec
rts
*--------------------------------------
MAN
SAVE usr/src/sys/kernel.s.pft

View File

@ -13,7 +13,7 @@ PIPE.OPEN ldy #S.FD.PIPE.S
inc
sta (pFD),y
lda IO.hDevNod
lda IO.hFD
clc
rts
*--------------------------------------
@ -23,7 +23,6 @@ PIPE.CLOSE ldy #S.FD.PIPE.S
lda #$80
sta (pFD),y
clc
rts
.1 ldy #S.FD.PIPE.hMem
@ -32,7 +31,7 @@ PIPE.CLOSE ldy #S.FD.PIPE.S
>SYSCALL2 FreeStkObj
.2 jmp DEV.Destroy
.2 jmp DEV.hFDFree
*--------------------------------------
* (pStack)+2 buf
* (pStack)+0 count

View File

@ -747,6 +747,46 @@ K.Kill.2 ldy #S.PS.hSession
.10 .DA #S.PS.hSS,#S.PS.hDS,#S.PS.hCS
.DA #S.PS.hARGV,#S.PS.hCWD
*/--------------------------------------
* # LoadStkObj
* Load a file in AUX memory (Stock Objects)
* PUSHW = PATH (Handled by....
* PUSHB = MODE ...
* PUSHB = TYPE ...
* PUSHW = AUXTYPE ...FOpen)
* ## RETURN VALUE
* Y,A = File Length
* X = hMem of Loaded Object in AUX mem
*\--------------------------------------
K.LoadStkObj >PUSHYA
>PUSHBI O.RDONLY
>PUSHBI 0 any type...
jsr K.LoadFile.1 ... ending \0
bcs .99
stx .90+1
sty .81+1 Save File Len
sta .82+1
iny
bne .1
inc +1 for ending 0
.1 jsr MEM.MoveToAux X = AUX hMem
bcs .9
.81 ldy #$ff and file len in Y,A
.82 lda #$ff
* clc
rts
.9 pha
.90 lda #$ff SELF MODIFIED
jsr K.freemem
pla
sec
.99 rts
*/--------------------------------------
* # LoadTxtFile
* Load TXT a file in memory (with ending 0)
* ## C
@ -762,7 +802,8 @@ K.Kill.2 ldy #S.PS.hSession
K.LoadTxtFile >PUSHYA
>PUSHBI O.RDONLY
>PUSHBI S.FI.T.TXT
>PUSHWZ Aux type
K.LoadFile.1 >PUSHWZ Aux type
sec
.HS 90 BCC
@ -925,10 +966,10 @@ PS.Find.DRV ldx #2
.HS 2C BIT ABS
PS.Find.PATH ldx #4
>STYA PS.Find.4+1 filename to find
>STYA PS.Find.4+1 filename to find
>PUSHW PS.VARS,x
>PUSHWI 0 allocate...
>PUSHWZ allocate...
>SYSCALL2 GetEnv get value for Search Path
bcs PS.Find.RTS
@ -943,7 +984,7 @@ PS.Find.1 ldy #0 Self Modified Index in Search list string
PS.Find.2 lda $ffff,y SELF MODIFIED
beq PS.Find.3 end of string, try it....
beq PS.Find.3 end of string, try it....
iny
cmp #':'
@ -1005,7 +1046,6 @@ PS.STAT.YA >PUSHYA
rts
*--------------------------------------
PS.SHUTDOWN .AZ "shutdown"
*PS.T .AZ " -T 3"
PS.VARS .DA .1
.DA .2
.DA .3
@ -1029,8 +1069,11 @@ K.GetMemStat >STYA ZPPtr1
dey
dex
bpl .1
sta SETREADAUX
jsr .2
sta CLRREADAUX
.2 ldx #7

View File

@ -121,12 +121,6 @@ SHARED.P3gY sta CLRREADAUX
sta SETREADAUX
rts
*--------------------------------------
SHARED.GetScrnDevX
sta CLRREADAUX
lda A2osX.SCRNDEVS,x
sta SETREADAUX
rts
*--------------------------------------
MAN
SAVE usr/src/sys/kernel.s.shared
LOAD usr/src/sys/kernel.s

View File

@ -1,7 +1,7 @@
NEW
AUTO 3,1
*--------------------------------------
SOCK.OPEN lda IO.hDevNod
SOCK.OPEN lda IO.hFD
clc
rts
*--------------------------------------

View File

@ -88,14 +88,15 @@ K.ChMod.RET3 inc pStack
* `>SYSCALL fstat`
* ## RETURN VALUE
*--------------------------------------
K.FStat jsr PFT.CheckNode2
K.FStat ldy #2
jsr PFT.CheckNodeY
bcs K.ChMod.RET3
>PULLW K.Stat.Store.2+1
>PULLA
tax
lda Nod.Table.hName-2,x get path
lda hFDs.hName-1,x get path
jsr K.GetMemPtr
jsr PFT.YAToMLIPATH
@ -193,10 +194,11 @@ K.MKFIFO jsr STAT.PM
bcs STAT.RTS
ldy #0
.1 lda STAT.FIFO,y
sta (ZPPtr1),y fill pathname buffer
iny
cpy #4
cpy #9
bne .1
lda IO.hFD
@ -208,7 +210,17 @@ K.MKFIFO jsr STAT.PM
iny
lda #0
sta (ZPPtr1),y
lda ZPPtr1
clc
adc #5 skip /dev/
sta ZPPtr1
bcc K.MkNod.I
inc ZPPtr1+1
bra K.MkNod.I
*--------------------------------------
STAT.FIFO .AS "/dev/fifo"
*/--------------------------------------
* # MkNod
* Create a special or ordinary file.
@ -228,21 +240,21 @@ K.MkNod >PULLB IO.hFD
jsr STAT.PM
K.MkNod.I ldx #2
K.MkNod.I ldx #1
.1 lda Nod.Table.hFD-2,x empty slot ?
.1 lda hFDs-1,x
cmp IO.hFD
beq .2
inx
inx
cpx #K.Nod.MAX+2
cpx #K.hFD.MAX+1
bne .1
lda #E.OOH
lda #MLI.E.IO
* sec
rts
.2 stx IO.hDevNod
.2 stx IO.hFILE
>LDYA ZPPtr1
>SYSCALL2 StrDup
@ -250,13 +262,10 @@ K.MkNod.I ldx #2
txa
.3 ldx IO.hDevNod
sta Nod.Table.hName-2,x store path
ldx IO.hFILE
sta hFDs.hName-1,x store path
.4 lda IO.hFD
sta Nod.Table.hFD-2,x store hFD
txa hDevNod
txa hFILE
clc
.9 rts
*/--------------------------------------
@ -277,7 +286,7 @@ K.Pipe sta .1+1 SIZE HI
stx .8+1 save PIPE buffer
ldx #2
lda #S.FD.T.PIPE
jsr DEV.MkFD
bcs .9
@ -292,7 +301,7 @@ K.Pipe sta .1+1 SIZE HI
.8 lda #$ff Self Modified
sta (pFD),y
txa hFD
lda IO.hFD
* clc
rts
@ -303,15 +312,12 @@ K.Pipe sta .1+1 SIZE HI
pla
sec
.99
rts
.99 rts
*--------------------------------------
STAT.PM >PULLW K.S.STAT+S.STAT.MODE
>PULLW ZPPtr1 pathname
rts
*--------------------------------------
STAT.FIFO .AS "fifo"
*--------------------------------------
MAN
SAVE usr/src/sys/kernel.s.stat
LOAD usr/src/sys/kernel.s

View File

@ -359,7 +359,7 @@ K.UngetC clc
* CS : A = EC
*\--------------------------------------
K.FOpen jsr PFT.CheckPath4
bcs .9
bcs K.FOpen.9
>PULLW IO.Open.AUXTYPE
>PULLB IO.Open.TYPE
@ -368,10 +368,35 @@ K.FOpen jsr PFT.CheckPath4
inc pStack discard filename
inc pStack
jmp UNISTD.Open
jsr UNISTD.Open
bcs K.FOpen.99
.9 >POP 6
ldx IO.hFILE
lda (pFD)
bne K.FOpen.8
K.FOpen.REGDIR >LDYAI K.Buf256
>SYSCALL2 StrDup
bcs K.FOpen.90
txa
ldx IO.hFILE
sta hFDs.hName-1,x
K.FOpen.8 inc hFDs.oCnt-1,x
txa
* clc
rts
K.FOpen.90 pha
jsr UNISTD.Close
pla
sec
rts
K.FOpen.9 >POP 6
K.FOpen.99 rts
*/--------------------------------------
* # FClose
* Close a file
@ -386,21 +411,17 @@ K.FOpen jsr PFT.CheckPath4
K.FClose jsr PFT.CheckNodeA
bcs K.FRead.RTS
jmp UNISTD.Close
*--------------------------------------
DEV.Destroy ldx IO.hDevNod
lda Nod.Table.hName-2,x
beq .1
jsr UNISTD.Close
stz Nod.Table.hName-2,x
jsr K.FreeMem
ldx IO.hDevNod
.1 lda Nod.Table.hFD-2,x
ldx IO.hFILE
dec hFDs.oCnt-1,x
bne .8
lda hFDs.hName-1,x its a DEV, don't clear FD
beq .8
stz Nod.Table.hFD-2,x
stz hFDs-1,x
stz hFDs.hName-1,x
jmp K.FreeMem
.8 clc
@ -444,8 +465,8 @@ K.FWrite jsr PFT.CheckNode4
bcs K.FWrite.RET5
jsr UNISTD.Write
bcc K.FRead.RTS
bcc K.FRead.RTS
K.FWrite.9 cmp #E.NODATA
sec
bne K.FRead.RTS IO Error

View File

@ -152,7 +152,7 @@ K.realpath ldy #3
>PUSHA
lda (pStack),y
>PUSHA
>PUSHWI 0
>PUSHWZ
jsr K.expand
bcs K.realpath.RET4

View File

@ -22,13 +22,14 @@ TERM.STATUS jsr TERM.GetIOCTLBufCntDCB
lda (ZPIOCTL),y
tay
bra TERM.TOAUX
*--------------------------------------
TERM.OPEN sta ZPhFD hFD in A for OPEN
TERM.OPEN sta ZPDevID DEV.ID in A for OPEN
TERM.CONTROL
TERM.CLOSE jsr TERM.GetDCB
bra TERM.TOAUX
*--------------------------------------
TERM.READ
TERM.WRITE jsr TERM.GetIOCTLBufCntDCB
*--------------------------------------
@ -90,14 +91,15 @@ TERM.GetBufByte sta CLRREADAUX
rts
*--------------------------------------
TERM.GetDevName sta CLRREADAUX
lda Dev.Table-1,x
lda pFD
clc
adc #S.FD.DEV
tay
sta TXTPTR
lda Dev.Table,x
lda pFD+1
adc /S.FD.DEV
sta TXTPTR+1
sta SETREADAUX
rts

View File

@ -8,7 +8,6 @@ CURSOR.BLINK.SPEED .EQ 2
ZPIOCTL .BS 2
ZPBufPtr .BS 2
ZPDCBPtr .BS 2
ZPCnt .BS 2
ZPBufBL1 .BS 2
@ -17,7 +16,7 @@ ZPScrBL1 .BS 2
ZPScrBL2 .BS 2
*--------------------------------------
bActive .BS 1
ZPDevID .BS 1
ZPhFD .BS 1
ZPTmpBool .BS 1
ZPTmpChar .BS 1
@ -73,7 +72,7 @@ TERMX.STATUS tya
iny
* sec
eor (ZPDCBPtr),y OUTHEAD
bne .8
bne .8
bit bActive
bpl .7
@ -99,27 +98,14 @@ TERMX.OPEN.E lda #MLI.E.OPEN
TERMX.OPEN jsr TERMX.ISOPENED
bne TERMX.OPEN.E
ldx #0
.2 jsr SHARED.GetScrnDevX
beq .3
inx
cpx #K.TTY.MAX+1
bne .2
lda #E.OOH
sec
rts
.3 lda ZPDevID
lda (ZPDCBPtr) #S.DCB.TTY.DEVID
tax
lda ZPhFD
sta CLRWRITEAUX
sta A2osX.SCRNDEVS,x
sta SETWRITEAUX
sta (ZPDCBPtr) #S.DCB.TTY.DEVID
ldy #S.DCB.TTY.S
lda (ZPDCBPtr),y
ora #S.DIB.S.OPENED
@ -128,44 +114,39 @@ TERMX.OPEN jsr TERMX.ISOPENED
jsr RESET
*--------------------------------------
TERMX.CONTROL lda (ZPDCBPtr) #S.DCB.TTY.DEVID
sta CLRWRITEAUX
sta A2osX.ASCREEN
sta SETWRITEAUX
sta SETTEXT
sta CLRMIXED
jsr TERMX.SCRCPY
lda #0
lda #0
ldy #S.DCB.TTY.bCURON
sta (ZPDCBPtr),y
iny #S.DCB.TTY.bTITLE
sta (ZPDCBPtr),y
clc
rts
*--------------------------------------
TERMX.CLOSE jsr TERMX.ISOPENED
TERMX.CLOSE jsr TERMX.ISOPENED
beq .9
lda TERMX.DIB+S.DIB.S
sta (ZPDCBPtr),y
ldx #0
.1 jsr SHARED.GetScrnDevX
cmp (ZPDCBPtr) #S.DCB.TTY.DEVID
bne .2
lda (ZPDCBPtr) #S.DCB.TTY.DEVID
tax
sta CLRWRITEAUX
stz A2osX.SCRNDEVS,x
sta SETWRITEAUX
clc
rts
.2 inx
cpx #K.TTY.MAX+1
bne .1
.9 lda #MLI.E.IO
sec
@ -197,7 +178,7 @@ TERMX.READ bit bActive is screen active?
and #$7F
cmp #C.ESC
bne .10
lda #3
.10 ldx #3
@ -205,7 +186,7 @@ TERMX.READ bit bActive is screen active?
.2 cmp KeyMap,x
beq .3
dex
dex
bpl .2
cmp #C.CR
@ -229,7 +210,7 @@ TERMX.READ bit bActive is screen active?
pla
jsr TERMX.COUT
bra .7
.6 ldy #S.DCB.TTY.OUTTAIL
lda (ZPDCBPtr),y
iny
@ -256,9 +237,9 @@ TERMX.READ bit bActive is screen active?
bra .70
.8 lda #$ff SELF MODIFIED
sta CLRWRITEAUX
ldy #S.IOCTL.BYTECNT
sta (ZPIOCTL),y
iny
@ -353,9 +334,9 @@ TERMX.OUT.FS ldy #S.DCB.TTY.CH
ldy #S.DCB.TTY.bLINEWRAP
lda (ZPDCBPtr),y
bpl TERMX.OUT.BS.8
jsr TERMX.OUT.CR
jmp TERMX.OUT.LF.1
*--------------------------------------
TERMX.OUT.BS ldy #S.DCB.TTY.CH
@ -453,7 +434,7 @@ TERMX.ESC jsr TERM.GetBufByte y = #S.DCB.TTY.M
.DA TERMX.RTS [
.DA TERMX.RTS (
.DA TERMX.RTS )
*--------------------------------------
*--------------------------------------
TERMX.SETM0 lda #0
TERMX.SETM ldy #S.DCB.TTY.M
sta (ZPDCBPtr),y
@ -468,9 +449,9 @@ TERMX.CSI ldy #S.DCB.TTY.INBUF
inc
sta (ZPDCBPtr),y
tay
jsr TERM.GetBufByte
sta (ZPDCBPtr),y
cmp #64 End of Seq ?
bcs TERMX.CSI.Exec
@ -527,10 +508,10 @@ TERMX.CSI.Exec stz CsiH
.6 cmp CsiCodes,x
beq .7
dex
bpl .6
clc
rts
@ -553,16 +534,16 @@ TERMX.CSI.Exec stz CsiH
.DA Csi.Home H
*--------------------------------------
Csi.SetM sec
.HS 90 BCC
.HS 90 BCC
*--------------------------------------
Csi.ResetM clc
ldx CsiPCnt
beq .99
dex
bne .99
ldx CsiH
lda CsiP
@ -576,7 +557,7 @@ Csi.ResetM clc
ldy #S.DCB.TTY.bCRLF
bra .8
.1 cmp #7
bne .98
@ -597,7 +578,7 @@ Csi.ResetM clc
*--------------------------------------
Csi.DispAttr ldx CsiPCnt
bne .10
jmp RESETATTR
.10 ldx #0
@ -639,11 +620,11 @@ Csi.Query ldx CsiPCnt
jsr DecOut
lda #';'
jsr TERMX.COUT
ldy #S.DCB.TTY.CH
lda (ZPDCBPtr),y
inc
jsr DecOut
jsr DecOut
lda #'R'
jsr TERMX.COUT
.8 clc
@ -673,7 +654,7 @@ Csi.CUU sec
Csi.CUD clc
ldy #S.DCB.TTY.CV
bra Csi.CU
Csi.CUF clc
.HS B0 BCS
Csi.CUB sec
@ -681,22 +662,22 @@ Csi.CUB sec
Csi.CU lda CsiPCnt
beq .8
dec
bne .8
lda (ZPDCBPtr),y
bcs .1
adc CsiP
sta (ZPDCBPtr),y
clc
rts
.1 sbc CsiP
sta (ZPDCBPtr),y
.8 clc
rts
*--------------------------------------
@ -705,7 +686,7 @@ Csi.CLRSCR ldx CsiPCnt
.1 lda CsiP
beq .8
cmp #1
bne .2
@ -780,7 +761,7 @@ HOME lda #0
sta (ZPDCBPtr),y
clc
rts
*--------------------------------------
*--------------------------------------
TERMX.G0 ldx #$80
.HS 2C BIT ABS
TERMX.G1 ldx #$40
@ -790,12 +771,12 @@ TERMX.G1 ldx #$40
jsr TERM.GetBufByte
cmp #'0'
beq .1
txa
eor #$ff
and (ZPDCBPtr),y
bra .8
.1 txa
ora (ZPDCBPtr),y
.8 sta (ZPDCBPtr),y
@ -807,9 +788,9 @@ TERMX.IAC ldy #S.DCB.TTY.INBUF
inc
sta (ZPDCBPtr),y
tay
jsr TERM.GetBufByte
sta (ZPDCBPtr),y
cpy #S.DCB.TTY.INBUF+1 CMD ?
beq Csi.Home.8 yes, wait for additional bytes
@ -1008,20 +989,20 @@ CLR.8 clc
SaveCurPos ldy #S.DCB.TTY.CH
jsr .1
iny
.1 lda (ZPDCBPtr),y
iny
sta (ZPDCBPtr),y
rts
*--------------------------------------
RestoreCurPos jsr TERMX.CUROFF
ldy #S.DCB.TTY.CV.SAVE
jsr .1
dey
.1 lda (ZPDCBPtr),y
@ -1058,7 +1039,7 @@ SCROLL.DN ldy #S.DCB.TTY.SCROLLBOT
txa
ldy #S.DCB.TTY.SCROLLTOP
cmp (ZPDCBPtr),y
bne .1
bne .1
clc
rts
@ -1096,7 +1077,7 @@ TERMX.CBLNK.SET
eor #CURSOR.BLINK.SPEED
sta (ZPDCBPtr),y
rts
TERMX.CBLNK.OFF
jsr GetCharAtCurPos
bcc TERMX.CBLNK.SET if not Out of screen
@ -1160,7 +1141,7 @@ TERMX.SETUP.L1X lda ZPDCBPtr
clc
adc BUF.BL,x
sta ZPBufBL1
lda ZPDCBPtr+1
adc BUF.BH,x
sta ZPBufBL1+1
@ -1200,7 +1181,7 @@ TERMX.CLRSCR.2 sty .1+1
bit bActive
bpl .4
sta SETPAGE2
jsr .7
@ -1208,7 +1189,7 @@ TERMX.CLRSCR.2 sty .1+1
jsr .7
.4 ldy #79
.5 sta (ZPBufBL1),y
dey
bpl .5
@ -1219,7 +1200,7 @@ TERMX.CLRSCR.2 sty .1+1
.7 ldy #39
.8 sta (ZPScrBL1),y
dey
bpl .8
bpl .8
.9 rts
*--------------------------------------
TERMX.Title.ON ldy #S.DCB.TTY.bTITLE
@ -1229,11 +1210,8 @@ TERMX.Title.ON ldy #S.DCB.TTY.bTITLE
lda #$ff
sta (ZPDCBPtr),y
lda (ZPDCBPtr) #S.DCB.TTY.DEVID
tax
jsr TERM.GetDevName
>STYA TXTPTR
ldx #0
jsr TERMX.SETUP.L1X.SCR
@ -1262,7 +1240,7 @@ TERMX.Title.ON ldy #S.DCB.TTY.bTITLE
iny
cpy #80
bne .4
TERMX.RTS2 rts
TERMX.Title.OFF ldy #S.DCB.TTY.bTITLE
@ -1307,7 +1285,7 @@ TERMX.SCRCPY ldx #23
dex
bpl .1
rts
.8 ldy #39
.80 lda $ffff,x SELF MODIFIED
@ -1333,7 +1311,7 @@ TERMX.COPY.XtoL1
ldy #79
.1 lda (ZPBufBL2),y
sta (ZPBufBL1),y
sta (ZPBufBL1),y
dey
bpl .1
@ -1351,7 +1329,7 @@ TERMX.COPY.XtoL1
.6 ldy #39
.7 lda (ZPScrBL2),y
sta (ZPScrBL1),y
sta (ZPScrBL1),y
dey
bpl .7
@ -1399,13 +1377,13 @@ SetCharAtYX cmp #$40
bcc .3
tay
lda REMAP.E0.FF-$E0,y
lda REMAP.E0.FF-$E0,y
sta ZPTmpChar
.3 jsr TERMX.SETUP.L1X
ply
lda ZPTmpChar
sta (ZPBufBL1),y
sta (ZPBufBL1),y
bit bActive
bpl SetCharAtYX.8
@ -1440,11 +1418,11 @@ GetCharAtCurPos ldy #S.DCB.TTY.CV
bcs .9 Out of screen
tay
lda (ZPBufBL1),y
lda (ZPBufBL1),y
cmp #$20
bcs .8
* clc
* clc
adc #40 remap $00-$1F uppercase
.8 clc
@ -1502,7 +1480,7 @@ RESET.VALUES .DA #0 MODE
.DA #S.DCB.TTY.OUTBUF OUTTAIL
.DA #S.DCB.TTY.OUTBUF OUTHEAD
.DA #S.DCB.TTY.INBUF INBUFFER
.DA #S.DCB.TTY.INBUF INBUFFER
*--------------------------------------
TERMX.DIB .DA #S.DIB.S.WRITE+S.DIB.S.READ
.DA #0,#0,#0

View File

@ -32,20 +32,15 @@ UNISTD.Open ldx #5 /dev/
dex
bne .1
*--------------------------------------
* /DEV/xxxxxx (CDEV,BDEV,DSOCK,SSOCK,PIPE)
* /dev/xxxxxx (CDEV,BDEV,DSOCK,SSOCK,PIPE)
*--------------------------------------
>LDYAI K.MLI.PATH+6 skip $/dev/
jsr K.GetDevByName
bcs .9
>STYA pFD
stx IO.hDevNod
lda (pFD) #S.FD.T
tax
jmp (.2-2,x)
.2
* .DA STDIO.IOERR REG
@ -74,8 +69,9 @@ K.Close jsr DEV.GetPFD
UNISTD.Close lda (pFD) #S.FD.T
tax
jmp (.1,x)
.1 .DA FS.CLOSE.REG
.DA FS.CLOSE.DIR
.1 .DA FS.CLOSE.REGDIR
.DA FS.CLOSE.REGDIR
.DA DEV.CLOSE
.DA DEV.CLOSE
.DA STDIO.IOERR LNK
@ -96,7 +92,7 @@ UNISTD.Close lda (pFD) #S.FD.T
* CC: Y,A = bytes read
* CS: A = EC
*\--------------------------------------
K.Read ldy #4 hDev
K.Read ldy #4 hFD
lda (pStack),y
jsr DEV.GetPFD
@ -104,6 +100,7 @@ K.Read ldy #4 hDev
UNISTD.Read lda (pFD) #S.FD.T
tax
jmp (.1,x)
.1 .DA FS.READ.REG
.DA STDIO.IOERR DIR
.DA DEV.READ
@ -126,14 +123,15 @@ UNISTD.Read lda (pFD) #S.FD.T
* CC: Y,A = bytes written
* CS: A = EC
*\--------------------------------------
K.Write ldy #4 hDev
K.Write ldy #4 hFD
lda (pStack),y
jsr DEV.GetPFD
UNISTD.Write lda (pFD) #S.FD.T
tax
jmp (.1,x)
.1 .DA FS.WRITE.REG
.DA STDIO.IOERR DIR
.DA DEV.WRITE

View File

@ -60,8 +60,8 @@ NSC.Detect php
sta SETCXROM
* sta $C300
lda $C00B Workaround for Ultrawarp bug
sta $C100
* lda $C00B Workaround for Ultrawarp bug
ldx #8
@ -76,8 +76,8 @@ NSC.Detect php
dex
bne .1
* sta $C300
lda $C00B Workaround for Ultrawarp bug
sta $C100
* lda $C00B Workaround for Ultrawarp bug
lda $C104 Reset DS1216E comparison register with READ A2=1
@ -210,8 +210,8 @@ NSCDRV php
sta SETCXROM
* sta $C300
lda $C00B Workaround for Ultrawarp bug
sta $C100
* lda $C00B Workaround for Ultrawarp bug
lda $C104 Reset DS1216E comparison register with READ A2=1