mirror of https://github.com/A2osX/A2osX.git
KERNEL 0.94-2
This commit is contained in:
parent
3c55ead88e
commit
eceedd72d7
Binary file not shown.
Binary file not shown.
|
@ -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
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
499
BIN/CAT.S.txt
499
BIN/CAT.S.txt
|
@ -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
|
||||
|
|
|
@ -228,7 +228,7 @@ CS.RUN.FILE clc
|
|||
*--------------------------------------
|
||||
CS.RUN.GetGID >SYSCALL ArgV
|
||||
>PUSHYA
|
||||
>PUSHWI 0
|
||||
>PUSHWZ
|
||||
>SYSCALL GetGRName
|
||||
bcs .9
|
||||
|
||||
|
|
|
@ -230,7 +230,7 @@ CS.RUN.FILE
|
|||
*--------------------------------------
|
||||
CS.RUN.GetUID >SYSCALL ArgV
|
||||
>PUSHYA
|
||||
>PUSHWI 0
|
||||
>PUSHWZ
|
||||
>SYSCALL GetPWName
|
||||
bcs .9
|
||||
|
||||
|
|
|
@ -881,7 +881,7 @@ CSH.GetVarDef phy
|
|||
|
||||
>PUSHWI ZPVarDef
|
||||
>PUSHWI 8 8 bytes
|
||||
>PUSHWI 0 From Start
|
||||
>PUSHWZ From Start
|
||||
>SYSCALL SListGetData
|
||||
rts
|
||||
*--------------------------------------
|
||||
|
|
|
@ -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
|
||||
*--------------------------------------
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -38,7 +38,7 @@ GFX.GR ldy #S.PS.hStdIn
|
|||
|
||||
GFX.IOCTL >PUSHA
|
||||
>PUSHBI IOCTL.CONTROL
|
||||
>PUSHWI 0
|
||||
>PUSHWZ
|
||||
>SYSCALL IOCTL
|
||||
rts
|
||||
*--------------------------------------
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
97
BIN/LS.S.txt
97
BIN/LS.S.txt
|
@ -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
|
||||
|
|
222
BIN/LSDEV.S.txt
222
BIN/LSDEV.S.txt
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -202,7 +202,7 @@ CheckArgs.A lda iArg
|
|||
bcs .9
|
||||
|
||||
>SYSCALL AToL
|
||||
>PUSHWI 0
|
||||
>PUSHWZ
|
||||
>PUSHWI 3600
|
||||
>FPU uMUL
|
||||
>PULLL Adjust
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -13,7 +13,7 @@ CL.Init >LDYAI 256
|
|||
.9 rts
|
||||
*--------------------------------------
|
||||
CL.PrintPrompt >PUSHW L.PS1
|
||||
>PUSHWI 0
|
||||
>PUSHWZ
|
||||
>SYSCALL Expand
|
||||
bcs .9
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -469,7 +469,7 @@ CORE.ArgV.Add lda #C.SPACE
|
|||
>LDYA ZPArgVBufPtr
|
||||
>STYA ZPArgVBufPrev
|
||||
>PUSHYA
|
||||
>PUSHWI 0
|
||||
>PUSHWZ
|
||||
>SYSCALL Expand
|
||||
bcs .9
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
*--------------------------------------
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -307,7 +307,7 @@ CS.RUN.CONF.LISTEN
|
|||
.9 rts
|
||||
CS.RUN.CONF.DOCUMENTROOT
|
||||
>PUSHYA
|
||||
>PUSHWI 0 Allocate
|
||||
>PUSHWZ Allocate
|
||||
>SYSCALL RealPath
|
||||
bcs .9
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -292,7 +292,7 @@ CS.RUN.DumpFile >PUSHYA
|
|||
bcs .7
|
||||
|
||||
>PUSHW ZPBufPtr
|
||||
>PUSHWI 0
|
||||
>PUSHWZ
|
||||
>SYSCALL Expand
|
||||
bcc .2
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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."
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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`
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
NEW
|
||||
AUTO 3,1
|
||||
*--------------------------------------
|
||||
SOCK.OPEN lda IO.hDevNod
|
||||
SOCK.OPEN lda IO.hFD
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -152,7 +152,7 @@ K.realpath ldy #3
|
|||
>PUSHA
|
||||
lda (pStack),y
|
||||
>PUSHA
|
||||
>PUSHWI 0
|
||||
>PUSHWZ
|
||||
jsr K.expand
|
||||
bcs K.realpath.RET4
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
Loading…
Reference in New Issue