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) sta (ZPStrBuf)
ldy #1 ldy #1
lda #0
sta (ZPStrBuf),y
bra RT.INPUT.8 bra RT.INPUT.8
*-------------------------------------- *--------------------------------------
RT.INPUT lda #0 RT.INPUT lda #0

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,26 +1,6 @@
NEW NEW
AUTO 3,1 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 ZPDRV .EQ $20 32 bytes
ZPLIB .EQ $40 32 bytes ZPLIB .EQ $40 32 bytes
*-------------------------------------- *--------------------------------------

View File

@ -1,27 +1,44 @@
NEW NEW
AUTO 3,1 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 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 Flt.Table.pftLO .EQ $1360 K.FLT.MAX
Nod.Table.hFD .EQ $1341 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.PID .EQ $1380 K.PS.MAX
PS.Table.hPS .EQ $13A0 K.PS.MAX PS.Table.hPS .EQ $13A0 K.PS.MAX
PS.Table.Hits .EQ $13C0 K.PS.MAX PS.Table.Hits .EQ $13C0 K.PS.MAX
PS.Table.Stats .EQ $13E0 K.PS.MAX PS.Table.Stats .EQ $13E0 K.PS.MAX
*-------------------------------------- *--------------------------------------
S.Table.hSID .EQ $1400 K.USR.MAX A2osX.EndTables .EQ $1400
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
*-------------------------------------- *--------------------------------------
MAN MAN
SAVE inc/kernel.i SAVE inc/kernel.i

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -116,7 +116,7 @@ IO.Open.FLAGS .BS 1
IO.Open.TYPE .BS 1 IO.Open.TYPE .BS 1
IO.Open.AUXTYPE .BS 2 IO.Open.AUXTYPE .BS 2
IO.hFD .BS 1 IO.hFD .BS 1
IO.hDevNod .BS 1 IO.hFILE .BS 1
.ED .ED
*-------------------------------------- *--------------------------------------
SaveSM .EQ $100 Aux SaveSM .EQ $100 Aux
@ -159,9 +159,9 @@ Mem.LastSlot .EQ $0806
Z80CODE .EQ $1000 (00000h) Up To $10FF Z80CODE .EQ $1000 (00000h) Up To $10FF
Z80STACK .EQ $10FF (000FFh) Down to $1000 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.MHiMem .EQ A2osX.SYSCALL
Mem.XLoMem .EQ $1000 Mem.XLoMem .EQ $1000

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -472,42 +472,6 @@ Mem.IncRefCnt ldy #S.MEM.REFCNT
* A = EC * 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 * # GetStkObjPtr
* ## ASM * ## ASM
* `lda hStkObj` * `lda hStkObj`

View File

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

View File

@ -13,7 +13,7 @@ PIPE.OPEN ldy #S.FD.PIPE.S
inc inc
sta (pFD),y sta (pFD),y
lda IO.hDevNod lda IO.hFD
clc clc
rts rts
*-------------------------------------- *--------------------------------------
@ -23,7 +23,6 @@ PIPE.CLOSE ldy #S.FD.PIPE.S
lda #$80 lda #$80
sta (pFD),y sta (pFD),y
clc
rts rts
.1 ldy #S.FD.PIPE.hMem .1 ldy #S.FD.PIPE.hMem
@ -32,7 +31,7 @@ PIPE.CLOSE ldy #S.FD.PIPE.S
>SYSCALL2 FreeStkObj >SYSCALL2 FreeStkObj
.2 jmp DEV.Destroy .2 jmp DEV.hFDFree
*-------------------------------------- *--------------------------------------
* (pStack)+2 buf * (pStack)+2 buf
* (pStack)+0 count * (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 .10 .DA #S.PS.hSS,#S.PS.hDS,#S.PS.hCS
.DA #S.PS.hARGV,#S.PS.hCWD .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 * # LoadTxtFile
* Load TXT a file in memory (with ending 0) * Load TXT a file in memory (with ending 0)
* ## C * ## C
@ -762,7 +802,8 @@ K.Kill.2 ldy #S.PS.hSession
K.LoadTxtFile >PUSHYA K.LoadTxtFile >PUSHYA
>PUSHBI O.RDONLY >PUSHBI O.RDONLY
>PUSHBI S.FI.T.TXT >PUSHBI S.FI.T.TXT
>PUSHWZ Aux type
K.LoadFile.1 >PUSHWZ Aux type
sec sec
.HS 90 BCC .HS 90 BCC
@ -925,10 +966,10 @@ PS.Find.DRV ldx #2
.HS 2C BIT ABS .HS 2C BIT ABS
PS.Find.PATH ldx #4 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 >PUSHW PS.VARS,x
>PUSHWI 0 allocate... >PUSHWZ allocate...
>SYSCALL2 GetEnv get value for Search Path >SYSCALL2 GetEnv get value for Search Path
bcs PS.Find.RTS 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 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 iny
cmp #':' cmp #':'
@ -1005,7 +1046,6 @@ PS.STAT.YA >PUSHYA
rts rts
*-------------------------------------- *--------------------------------------
PS.SHUTDOWN .AZ "shutdown" PS.SHUTDOWN .AZ "shutdown"
*PS.T .AZ " -T 3"
PS.VARS .DA .1 PS.VARS .DA .1
.DA .2 .DA .2
.DA .3 .DA .3
@ -1029,8 +1069,11 @@ K.GetMemStat >STYA ZPPtr1
dey dey
dex dex
bpl .1 bpl .1
sta SETREADAUX sta SETREADAUX
jsr .2 jsr .2
sta CLRREADAUX sta CLRREADAUX
.2 ldx #7 .2 ldx #7

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -22,13 +22,14 @@ TERM.STATUS jsr TERM.GetIOCTLBufCntDCB
lda (ZPIOCTL),y lda (ZPIOCTL),y
tay tay
bra TERM.TOAUX 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.CONTROL
TERM.CLOSE jsr TERM.GetDCB TERM.CLOSE jsr TERM.GetDCB
bra TERM.TOAUX bra TERM.TOAUX
*--------------------------------------
TERM.READ TERM.READ
TERM.WRITE jsr TERM.GetIOCTLBufCntDCB TERM.WRITE jsr TERM.GetIOCTLBufCntDCB
*-------------------------------------- *--------------------------------------
@ -90,14 +91,15 @@ TERM.GetBufByte sta CLRREADAUX
rts rts
*-------------------------------------- *--------------------------------------
TERM.GetDevName sta CLRREADAUX TERM.GetDevName sta CLRREADAUX
lda Dev.Table-1,x lda pFD
clc clc
adc #S.FD.DEV adc #S.FD.DEV
tay sta TXTPTR
lda Dev.Table,x lda pFD+1
adc /S.FD.DEV adc /S.FD.DEV
sta TXTPTR+1
sta SETREADAUX sta SETREADAUX
rts rts

View File

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

View File

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

View File

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