mirror of
https://github.com/A2osX/A2osX.git
synced 2024-06-12 20:29:41 +00:00
Kernel 0.94+
This commit is contained in:
parent
fdca1edf79
commit
0f9ebec8be
|
@ -491,14 +491,11 @@ A = Child PSID
|
|||
Load TXT a file in memory (with ending 0)
|
||||
|
||||
## C
|
||||
`int loadtxtfile ( const char * filename, short int flags, short int ftype, int auxtype );`
|
||||
`int loadtxtfile ( const char * filename );`
|
||||
|
||||
## ASM
|
||||
**In:**
|
||||
`>PUSHW filename`
|
||||
`>PUSHB flags`
|
||||
`>PUSHB ftype`
|
||||
`>PUSHW auxtype`
|
||||
`>LDYA filename`
|
||||
`>SYSCALL loadtxtfile`
|
||||
|
||||
## RETURN VALUE
|
||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -47,7 +47,7 @@ CS.INIT clc
|
|||
rts
|
||||
*--------------------------------------
|
||||
CS.RUN ldy #S.PS.ARGC
|
||||
lda (pPs),y
|
||||
lda (pPS),y
|
||||
beq CS.RUN.USAGE
|
||||
|
||||
jsr CS.RUN.GetInfo
|
||||
|
|
|
@ -170,11 +170,7 @@ CS.RUN.ARGS inc ArgIndex
|
|||
sec QUIT Process
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.RUN.LoadFile >PUSHYA
|
||||
>PUSHBI O.RDONLY
|
||||
>PUSHBI S.FI.T.TXT
|
||||
>PUSHWZ Aux type
|
||||
>SYSCALL LoadTxtFile
|
||||
CS.RUN.LoadFile >SYSCALL LoadTxtFile
|
||||
bcs .9
|
||||
|
||||
phx
|
||||
|
|
|
@ -140,9 +140,13 @@ CS.RUN lda #C.SPACE
|
|||
.80 ldy #S.PS.hStdIn
|
||||
lda (pPS),y
|
||||
tax
|
||||
lda OF.Table.hFD-1,x
|
||||
lsr
|
||||
bcs .97
|
||||
|
||||
lda Nod.Table.hFD-2,x
|
||||
>SYSCALL GetMemPtr
|
||||
>STYA ZPPtr1
|
||||
|
||||
lda (ZPPtr1)
|
||||
cmp #S.FD.T.PIPE
|
||||
bne .97
|
||||
|
|
|
@ -8,7 +8,6 @@ NEW
|
|||
.INB inc/macros.i
|
||||
.INB inc/a2osx.i
|
||||
.INB inc/mli.e.i
|
||||
.INB inc/kernel.i
|
||||
.INB inc/libblkdev.i
|
||||
*--------------------------------------
|
||||
.DUMMY
|
||||
|
@ -768,7 +767,7 @@ Disk2.XD .DA 640 BlkCnt
|
|||
Disk2.HD .DA 1280 BlkCnt
|
||||
.DA #80 TrkCnt
|
||||
.DA #2 Stepping
|
||||
.DA ##194 VolNum
|
||||
.DA #194 VolNum
|
||||
.DA #$80 AltBB
|
||||
.DA #1 HeadCnt
|
||||
.BS 1
|
||||
|
@ -776,7 +775,7 @@ Disk2.HD .DA 1280 BlkCnt
|
|||
Disk2.HXD .DA 1280 BlkCnt
|
||||
.DA #80 TrkCnt
|
||||
.DA #2 Stepping
|
||||
.DA ##194 VolNum
|
||||
.DA #194 VolNum
|
||||
.DA #$80 AltBB
|
||||
.DA #1 HeadCnt
|
||||
.BS 1
|
||||
|
|
109
BIN/FORTH.S.GFX.txt
Normal file
109
BIN/FORTH.S.GFX.txt
Normal file
|
@ -0,0 +1,109 @@
|
|||
NEW
|
||||
AUTO 3,1
|
||||
*--------------------------------------
|
||||
GFX.Open >PUSHBI 0
|
||||
>LDYA L.DEV.GFX
|
||||
>SYSCALL Open
|
||||
bcs .9
|
||||
|
||||
>STA.G hDevGFX
|
||||
|
||||
* ldy #S.PS.hStdIn
|
||||
* lda (pPS),y
|
||||
* >SYSCALL GetMemPtr
|
||||
* >STYA ZPPtr1
|
||||
|
||||
* ldy #S.FD.DEV.DEVID
|
||||
* lda (ZPPtr1),y
|
||||
|
||||
* >PUSHA
|
||||
* >PUSHBI IOCTL.CONTROL
|
||||
* >PUSHWI 0
|
||||
* >SYSCALL IOCTL
|
||||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
GFX.Close >LDA.G hDevGFX
|
||||
beq .9
|
||||
|
||||
>SYSCALL Close
|
||||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
* (Y X C)
|
||||
*--------------------------------------
|
||||
GFX.PLOT lda #S.CB.CMD.SETPIXEL
|
||||
>STA.G GFX.CB+S.CB.CMD
|
||||
lda #S.CB.OP.SET
|
||||
>STA.G GFX.CB+S.CB.OP
|
||||
lda #S.CB.M.C16
|
||||
>STA.G GFX.CB+S.CB.M
|
||||
|
||||
>PULLA
|
||||
>STA.G GFX.CB+S.CB.COLOR
|
||||
|
||||
>PULLA
|
||||
|
||||
ldx #4
|
||||
ldy #GFX.CB+S.CB.X1+3
|
||||
|
||||
.1 >PULLA
|
||||
sta (pData),y
|
||||
dey
|
||||
dex
|
||||
bne .1
|
||||
|
||||
>PUSHB.G hDevGFX
|
||||
>PUSHBI IOCTL.WRITE
|
||||
>PUSHEA.G GFX.CB
|
||||
>SYSCALL IOCTL
|
||||
|
||||
lda pStack
|
||||
clc
|
||||
adc #6
|
||||
sta pStack
|
||||
|
||||
rts
|
||||
*--------------------------------------
|
||||
* (Y2 X2 Y1 X1 C)
|
||||
*--------------------------------------
|
||||
GFX.RECT lda #S.CB.CMD.FILLRECT
|
||||
>STA.G GFX.CB+S.CB.CMD
|
||||
lda #S.CB.OP.SET
|
||||
>STA.G GFX.CB+S.CB.OP
|
||||
lda #S.CB.M.C16
|
||||
>STA.G GFX.CB+S.CB.M
|
||||
|
||||
>PULLA
|
||||
>STA.G GFX.CB+S.CB.COLOR
|
||||
|
||||
>PULLA
|
||||
|
||||
ldx #8
|
||||
ldy #GFX.CB+S.CB.X1+7
|
||||
|
||||
.1 >PULLA
|
||||
sta (pData),y
|
||||
dey
|
||||
dex
|
||||
bne .1
|
||||
|
||||
>PUSHB.G hDevGFX
|
||||
>PUSHBI IOCTL.WRITE
|
||||
>PUSHEA.G GFX.CB
|
||||
>SYSCALL IOCTL
|
||||
|
||||
lda pStack
|
||||
clc
|
||||
adc #10
|
||||
sta pStack
|
||||
|
||||
rts
|
||||
*--------------------------------------
|
||||
*--------------------------------------
|
||||
*--------------------------------------
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE usr/src/bin/forth.s.gfx
|
||||
LOAD usr/src/bin/forth.s
|
||||
ASM
|
|
@ -4,9 +4,6 @@ NEW
|
|||
KW.Lookup >LDYA L.KEYWORDS
|
||||
>STYA ZPPtr1
|
||||
|
||||
>LDYA ZPCLBufPtr
|
||||
>STYA ZPPtr2
|
||||
|
||||
ldx #0
|
||||
|
||||
.1 ldy #$ff
|
||||
|
@ -51,7 +48,7 @@ KW.Lookup >LDYA L.KEYWORDS
|
|||
rts
|
||||
|
||||
.7 iny
|
||||
lda (ZPPtr2),y Get Src text char...
|
||||
lda (ZPCLBufPtr),y Get Src text char...
|
||||
beq .9 end of text
|
||||
|
||||
jmp IsSpaceOrCR CS=end of valid chars
|
||||
|
@ -761,7 +758,7 @@ KW.PRINT >LDYAI 256
|
|||
>SYSCALL PutS
|
||||
|
||||
pla
|
||||
>SYSCALL freemem
|
||||
>SYSCALL FreeMem
|
||||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
|
|
|
@ -9,6 +9,7 @@ NEW
|
|||
.INB inc/a2osx.i
|
||||
.INB inc/mli.i
|
||||
.INB inc/mli.e.i
|
||||
.INB inc/gfx.i
|
||||
*--------------------------------------
|
||||
CODE.SIZE .EQ 2048
|
||||
DATA.SIZE .EQ 2048
|
||||
|
@ -73,6 +74,7 @@ CS.START cld
|
|||
.DA CS.RUN
|
||||
.DA CS.DOEVENT
|
||||
.DA CS.QUIT
|
||||
L.DEV.GFX .DA DEV.GFX
|
||||
L.MSG.GREETINGS .DA MSG.GREETINGS
|
||||
L.MSG.USAGE .DA MSG.USAGE
|
||||
L.MSG.ECHOCRLF .DA MSG.ECHOCRLF
|
||||
|
@ -94,7 +96,9 @@ J.ESC .DA CL.BS left arrow
|
|||
* .DA HIS.GetPrev
|
||||
.DA CL.NAK right arrow
|
||||
L.KEYWORDS .DA KEYWORDS
|
||||
J.KEYWORDS .DA KW.DUP
|
||||
J.KEYWORDS .DA GFX.PLOT
|
||||
.DA GFX.RECT
|
||||
.DA KW.DUP
|
||||
.DA KW.DROP
|
||||
.DA KW.SWAP
|
||||
J.KEYWORDS.OVER .DA KW.OVER
|
||||
|
@ -262,6 +266,8 @@ CS.RUN >PUSHW L.MSG.GREETINGS
|
|||
stz bCompile
|
||||
lda #127
|
||||
sta RP
|
||||
|
||||
jsr GFX.Open
|
||||
*--------------------------------------
|
||||
CS.RUN.LOOP >SLEEP
|
||||
|
||||
|
@ -359,7 +365,7 @@ CS.FORTH.Run.File
|
|||
>PUSHW ZPCLBuf
|
||||
|
||||
>LDA.G hFile
|
||||
>SYSCALL fgets
|
||||
>SYSCALL FGetS
|
||||
bcs .9
|
||||
|
||||
>LDA.G bTrace
|
||||
|
@ -577,7 +583,9 @@ CS.RUN.GetNum >PUSHW ZPCLBufPtr
|
|||
CS.DOEVENT sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.QUIT >LDA.G hSList
|
||||
CS.QUIT jsr GFX.Close
|
||||
|
||||
>LDA.G hSList
|
||||
beq .1
|
||||
|
||||
>PUSHA
|
||||
|
@ -766,9 +774,11 @@ CheckStackPop4 lda pStack
|
|||
.INB usr/src/bin/forth.s.cl
|
||||
.INB usr/src/bin/forth.s.cp
|
||||
.INB usr/src/bin/forth.s.kw
|
||||
.INB usr/src/bin/forth.s.gfx
|
||||
*--------------------------------------
|
||||
CS.END
|
||||
*--------------------------------------
|
||||
DEV.GFX .AZ "/dev/gfx"
|
||||
MSG.GREETINGS .AZ "\e[?7h\r\nA2osX-FORTH %d.%d (figFORTH)\r\n"
|
||||
MSG.USAGE .AS "Usage : FORTH <option> file\r\n"
|
||||
.AS " -D : Debug Mode\r\n"
|
||||
|
@ -793,7 +803,10 @@ EscChars .AS 'DBAC'
|
|||
EscChars.Cnt .EQ *-EscChars
|
||||
EscChars.Remap .DA #C.BS,#C.VT,#C.LF,#C.FS
|
||||
*--------------------------------------
|
||||
KEYWORDS .AT "DUP" ( n - n n ) Duplicate top of stack.
|
||||
KEYWORDS .AT "PLOT"
|
||||
.AT "RECT"
|
||||
*--------------------------------------
|
||||
.AT "DUP" ( n - n n ) Duplicate top of stack.
|
||||
.AT "DROP" ( n - ) Discard top of stack.
|
||||
.AT "SWAP" ( n1 n2 - n2 n1 ) Reverse top two stack items.
|
||||
.AT "OVER" ( n1 n2 - n1 n2 n1 ) Copy second item to top.
|
||||
|
@ -960,7 +973,8 @@ hCLBuf .BS 1
|
|||
hFile .BS 1
|
||||
LineCounter .BS 2
|
||||
hSList .BS 1
|
||||
|
||||
hDevGFX .BS 1
|
||||
GFX.CB .BS S.CB
|
||||
DS.END .ED
|
||||
*--------------------------------------
|
||||
MAN
|
||||
|
|
|
@ -109,7 +109,11 @@ CS.RUN
|
|||
ldy #S.PS.hStdIn
|
||||
lda (pPS),y
|
||||
tax
|
||||
lda OF.Table.hFD-1,x
|
||||
|
||||
lsr
|
||||
bcs .97
|
||||
|
||||
lda Nod.Table.hFD-2,x
|
||||
>SYSCALL GetMemPtr
|
||||
>STYA ZPPtr1
|
||||
lda (ZPPtr1)
|
||||
|
|
|
@ -283,42 +283,27 @@ CS.QUIT lda hFont
|
|||
.8 clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
LoadResources >PUSHW L.FONTFILE
|
||||
>PUSHBI O.RDONLY
|
||||
>PUSHBI $CC Type
|
||||
>PUSHWZ Aux type
|
||||
LoadResources >LDYA L.FONTFILE
|
||||
>SYSCALL LoadStkObj
|
||||
bcs .99
|
||||
stx hFont
|
||||
|
||||
>PUSHW L.FONTFILEB
|
||||
>PUSHBI O.RDONLY
|
||||
>PUSHBI $CC Type
|
||||
>PUSHWZ Aux type
|
||||
>LDYA L.FONTFILEB
|
||||
>SYSCALL LoadStkObj
|
||||
bcs .99
|
||||
stx hFontB
|
||||
|
||||
>PUSHW L.MARILYNFILE
|
||||
>PUSHBI O.RDONLY
|
||||
>PUSHBI $CB Type
|
||||
>PUSHWZ Aux type
|
||||
>LDYA L.MARILYNFILE
|
||||
>SYSCALL LoadStkObj
|
||||
.99 bcs .9
|
||||
stx CB.PIX+S.CB.SrcPtr
|
||||
|
||||
>PUSHW L.LOGOFILE
|
||||
>PUSHBI O.RDONLY
|
||||
>PUSHBI $CB Type
|
||||
>PUSHWZ Aux type
|
||||
>LDYA L.LOGOFILE
|
||||
>SYSCALL LoadStkObj
|
||||
bcs .9
|
||||
stx CB.LOGO+S.CB.SrcPtr
|
||||
|
||||
>PUSHW L.PALETTEFILE
|
||||
>PUSHBI O.RDONLY
|
||||
>PUSHBI $CB Type
|
||||
>PUSHWZ Aux type
|
||||
>LDYA L.PALETTEFILE
|
||||
>SYSCALL LoadStkObj
|
||||
bcs .9
|
||||
stx CB.PALETTE+S.CB.SrcPtr
|
||||
|
|
|
@ -55,10 +55,7 @@ CS.INIT >LDYA L.LIBGUI
|
|||
* clc
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
CS.RUN >PUSHW L.LOGOFILE
|
||||
>PUSHBI O.RDONLY
|
||||
>PUSHBI $CB Type
|
||||
>PUSHWZ Aux type
|
||||
CS.RUN >LDYA L.LOGOFILE
|
||||
>SYSCALL LoadStkObj
|
||||
bcs .9
|
||||
|
||||
|
|
|
@ -197,10 +197,6 @@ CS.RUN.HOSTOK jsr CS.RUN.GETNEXTARG
|
|||
jsr CS.RUN.GETNEXTARG
|
||||
bcs .9
|
||||
|
||||
>PUSHYA
|
||||
>PUSHBI O.RDONLY
|
||||
>PUSHBI S.FI.T.TXT
|
||||
>PUSHWZ Aux type
|
||||
>SYSCALL LoadTxtFile
|
||||
bcs .9
|
||||
|
||||
|
|
|
@ -7,7 +7,6 @@ NEW
|
|||
*--------------------------------------
|
||||
.INB inc/macros.i
|
||||
.INB inc/a2osx.i
|
||||
.INB inc/kernel.i
|
||||
.INB inc/mli.i
|
||||
.INB inc/mli.e.i
|
||||
*--------------------------------------
|
||||
|
|
20
BIN/LS.S.txt
20
BIN/LS.S.txt
|
@ -137,18 +137,18 @@ CS.RUN
|
|||
>STYA ZPLineBuf
|
||||
stx hLineBuf
|
||||
|
||||
ldy #S.PS.hStdOut
|
||||
lda (pPS),y
|
||||
tax
|
||||
lda OF.Table.hFD-1,x
|
||||
>SYSCALL GetMemPtr
|
||||
>STYA ZPPtr1
|
||||
* ldy #S.PS.hStdOut
|
||||
* lda (pPS),y
|
||||
* tax
|
||||
* lda OF.Table.hFD-1,x
|
||||
* >SYSCALL GetMemPtr
|
||||
* >STYA ZPPtr1
|
||||
|
||||
lda (ZPPtr1) S.FD.T
|
||||
beq CS.RUN.LOOP S.FD.T.REG
|
||||
* lda (ZPPtr1) S.FD.T
|
||||
* beq CS.RUN.LOOP S.FD.T.REG
|
||||
|
||||
cmp #S.FD.T.PIPE
|
||||
beq CS.RUN.LOOP
|
||||
* cmp #S.FD.T.PIPE
|
||||
* beq CS.RUN.LOOP
|
||||
|
||||
dec bCRLF
|
||||
*--------------------------------------
|
||||
|
|
|
@ -45,6 +45,7 @@ L.MSG2.C .DA MSG2.C
|
|||
L.MSG2.B .DA MSG2.B
|
||||
L.MSG3 .DA MSG3
|
||||
L.MSG4 .DA MSG4
|
||||
L.NO.PATH .DA NO.PATH
|
||||
L.FD.T .DA FD.T.REG
|
||||
.DA FD.T.DIR
|
||||
.DA FD.T.CDEV
|
||||
|
@ -199,22 +200,20 @@ DumpNod >LDYA L.MSG3
|
|||
>SYSCALL PutS
|
||||
|
||||
ldx #2
|
||||
stx Index
|
||||
|
||||
.1 lda Nod.Table.hPath-2,x
|
||||
.1 stx Index
|
||||
|
||||
lda Nod.Table.hFD-2,x
|
||||
beq .7
|
||||
|
||||
>PUSHW L.MSG4
|
||||
|
||||
lda Index
|
||||
txa
|
||||
>PUSHA
|
||||
|
||||
tax
|
||||
lda Nod.Table.hFD-2,x
|
||||
>PUSHA
|
||||
|
||||
ldx Index
|
||||
lda Nod.Table.hFD-2,x
|
||||
>SYSCALL GetMemPtr
|
||||
>STYA ZPFDPtr
|
||||
lda (ZPFDPtr)
|
||||
|
@ -222,16 +221,23 @@ DumpNod >LDYA L.MSG3
|
|||
>PUSHW L.FD.T,x
|
||||
|
||||
ldx Index
|
||||
lda Nod.Table.hPath-2,x
|
||||
>SYSCALL GetMemPtr
|
||||
>PUSHYA
|
||||
lda Nod.Table.hName-2,x
|
||||
bne .2
|
||||
|
||||
>LDYA L.NO.PATH
|
||||
bra .3
|
||||
|
||||
.2 >SYSCALL GetMemPtr
|
||||
|
||||
.3 >PUSHYA
|
||||
>PUSHBI 6
|
||||
|
||||
>SYSCALL PrintF
|
||||
|
||||
.7 inc Index
|
||||
|
||||
ldx Index
|
||||
|
||||
.7 inx
|
||||
inx
|
||||
cpx #K.NOD.MAX+2
|
||||
bne .1
|
||||
|
||||
|
@ -251,10 +257,12 @@ 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"
|
||||
MSG.SFLAGS .AS "bwrlneio"
|
||||
*--------------------------------------
|
||||
MSG3 .AZ "hNod hFD Type Filepath"
|
||||
MSG4 .AZ "%03d $%h %5s %s\r\n"
|
||||
NO.PATH .AZ "(no path)"
|
||||
*--------------------------------------
|
||||
FD.T.REG .AZ "REG"
|
||||
FD.T.DIR .AZ "DIR"
|
||||
FD.T.CDEV .AZ "CDEV"
|
||||
|
|
|
@ -50,61 +50,42 @@ CS.INIT clc
|
|||
CS.RUN >LDYA L.MSG0
|
||||
>SYSCALL PutS
|
||||
|
||||
ldx #1
|
||||
stx FILE.ID
|
||||
ldx #2
|
||||
|
||||
.1 lda OF.Table.hFD-1,x
|
||||
.1 stx FILE.ID
|
||||
|
||||
lda Nod.Table.hFD-2,x
|
||||
beq .7
|
||||
|
||||
>PUSHW L.MSG1
|
||||
|
||||
txa
|
||||
>PUSHA
|
||||
lda Nod.Table.hFD-2,x
|
||||
>PUSHA
|
||||
|
||||
>SYSCALL GetMemPtr
|
||||
>STYA ZPFDPtr
|
||||
|
||||
>PUSHW L.MSG1
|
||||
|
||||
lda FILE.ID
|
||||
tax
|
||||
>PUSHA
|
||||
lda OF.Table.hFD-1,x
|
||||
>PUSHA
|
||||
|
||||
ldx FILE.ID
|
||||
lda OF.Table.hPath-1,x
|
||||
bne .2
|
||||
|
||||
lda OF.Table.hFD-1,x
|
||||
tax
|
||||
|
||||
lda Dev.Table-1,x
|
||||
sta ZPFDPtr
|
||||
clc
|
||||
adc #S.FD.DEV
|
||||
tay
|
||||
lda Dev.Table,x
|
||||
sta ZPFDPtr+1
|
||||
adc /S.FD.DEV
|
||||
|
||||
bra .3
|
||||
|
||||
.2 >SYSCALL GetMemPtr
|
||||
|
||||
.3 pha
|
||||
lda (ZPFDPtr)
|
||||
tax
|
||||
>PUSHW L.FD.T,x
|
||||
pla
|
||||
|
||||
lda Nod.Table.hName-2,x
|
||||
>SYSCALL GetMemPtr
|
||||
>PUSHYA
|
||||
|
||||
>PUSHBI 6
|
||||
|
||||
>SYSCALL PrintF
|
||||
|
||||
.7 inc FILE.ID
|
||||
ldx FILE.ID
|
||||
cpx #K.OF.MAX+1
|
||||
.7 ldx FILE.ID
|
||||
inx
|
||||
inx
|
||||
cpx #K.NOD.MAX*2+2
|
||||
bne .1
|
||||
|
||||
.8 lda #0
|
||||
lda #0
|
||||
sec
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
|
|
|
@ -70,12 +70,14 @@ CS.RUN
|
|||
lda (ZPPtr1)
|
||||
cmp #'-'
|
||||
bne .4
|
||||
|
||||
ldy #1
|
||||
lda (ZPPtr1),y
|
||||
|
||||
ldx OptionList
|
||||
.2 cmp OptionList,x
|
||||
beq .3
|
||||
|
||||
dex
|
||||
bne .2
|
||||
|
||||
|
@ -90,24 +92,34 @@ CS.RUN
|
|||
lda #$80
|
||||
sta (pData),y
|
||||
bra .1
|
||||
|
||||
.4 lda hFile
|
||||
bne .99
|
||||
|
||||
>LDYA ZPPtr1
|
||||
jsr CS.RUN.OPEN
|
||||
bcs .9
|
||||
|
||||
bra .1 scan for any other args
|
||||
|
||||
.7 lda bHelp
|
||||
beq .8
|
||||
|
||||
.71 jsr .99
|
||||
lda #0
|
||||
rts
|
||||
|
||||
.8 lda hFile
|
||||
bne .80
|
||||
|
||||
ldy #S.PS.hStdIn
|
||||
lda (pPS),y
|
||||
tax
|
||||
lda OF.Table.hFD-1,x
|
||||
|
||||
lsr
|
||||
bcs .71
|
||||
|
||||
lda Nod.Table.hFD-2,x
|
||||
>SYSCALL GetMemPtr
|
||||
>STYA ZPPtr1
|
||||
|
||||
|
@ -118,6 +130,7 @@ CS.RUN
|
|||
.80 >LDYAI 256
|
||||
>SYSCALL GetMem
|
||||
bcs .9
|
||||
|
||||
>STYA ZPBufPtr
|
||||
stx hBuf
|
||||
|
||||
|
@ -127,27 +140,37 @@ CS.RUN
|
|||
|
||||
CS.RUN.LOOP jsr CS.RUN.GETLINE
|
||||
bcs .9
|
||||
|
||||
.1 inc LineNum
|
||||
bne .11
|
||||
|
||||
inc LineNum+1
|
||||
|
||||
.11 lda LineCount
|
||||
bne .2
|
||||
|
||||
lda bPage
|
||||
beq .2
|
||||
|
||||
lda #C.FF
|
||||
>SYSCALL PutChar
|
||||
|
||||
.2 jsr CS.RUN.PRINT
|
||||
|
||||
inc LineCount
|
||||
lda LineCount
|
||||
cmp #PG.SIZE
|
||||
bne CS.RUN.LOOP
|
||||
|
||||
stz LineCount
|
||||
jsr CS.RUN.PAUSE
|
||||
bcc CS.RUN.LOOP
|
||||
|
||||
.9 cmp #MLI.E.EOF
|
||||
bne .99
|
||||
|
||||
lda #0 Exit with no Error
|
||||
|
||||
.99 sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
|
@ -174,23 +197,30 @@ CS.RUN.PAUSE ldy #S.PS.hStdErr
|
|||
|
||||
cmp #'Q'
|
||||
beq .9
|
||||
|
||||
cmp #'q'
|
||||
beq .9
|
||||
|
||||
.3 cmp #C.SPACE
|
||||
bne .4
|
||||
|
||||
jmp CS.RUN.ERASE
|
||||
|
||||
.4 cmp #C.CR
|
||||
bne .10
|
||||
|
||||
jsr CS.RUN.ERASE
|
||||
|
||||
.40 jsr CS.RUN.GETLINE
|
||||
bcc .5
|
||||
|
||||
cmp #MLI.E.EOF
|
||||
beq .90
|
||||
|
||||
rts
|
||||
.5 inc LineNum
|
||||
bne .6
|
||||
|
||||
inc LineNum+1
|
||||
|
||||
.6 jsr CS.RUN.PRINT
|
||||
|
@ -225,6 +255,7 @@ CS.RUN.GETLINE >PUSHWI 256
|
|||
>PUSHW ZPBufPtr
|
||||
lda hFile
|
||||
bne .1
|
||||
|
||||
ldy #S.PS.hStdIn
|
||||
lda (pPS),y
|
||||
|
||||
|
@ -239,6 +270,7 @@ CS.RUN.PRINT lda bLineNum
|
|||
>PUSHBI 2
|
||||
>SYSCALL PrintF
|
||||
bcs .9
|
||||
|
||||
.1 lda bEscCodes
|
||||
bmi .2
|
||||
|
||||
|
|
|
@ -276,7 +276,7 @@ CS.RUN.FILE jsr CS.RUN.BuildFilePath
|
|||
>PUSHW ZPFullPath
|
||||
>LDA.G hArcFile
|
||||
tay
|
||||
lda OF.Table.hPath-1,y
|
||||
lda Nod.Table.hName-2,y
|
||||
>SYSCALL GetMemPtr
|
||||
>SYSCALL StrCmp
|
||||
bcc .8
|
||||
|
|
|
@ -6,7 +6,7 @@ CMD.. lda (ZPArgVBufPtr)
|
|||
beq CMD...9
|
||||
|
||||
>LDYA ZPArgVBufPtr
|
||||
jsr IO.Load
|
||||
>SYSCALL LoadTxtFile
|
||||
bcs CMD.SHIFTA.RTS
|
||||
|
||||
>LDYA ZPArgVBufPtr
|
||||
|
|
|
@ -4,18 +4,10 @@ NEW
|
|||
*--------------------------------------
|
||||
IO.Reset jsr IO.Reset.In
|
||||
jsr IO.Reset.Out
|
||||
jsr IO.Reset.Err
|
||||
IO.Reset.9 rts
|
||||
*--------------------------------------
|
||||
IO.Load >PUSHYA
|
||||
>PUSHBI O.RDONLY
|
||||
>PUSHBI S.FI.T.TXT
|
||||
>PUSHWZ Aux type
|
||||
>SYSCALL LoadTxtFile
|
||||
rts
|
||||
jmp IO.Reset.Err
|
||||
*--------------------------------------
|
||||
IO.Pipe.In jsr IO.Pipe.OpenR Open last created PIPE
|
||||
bcs IO.Set.RTS
|
||||
bcs .9
|
||||
|
||||
pha
|
||||
|
||||
|
@ -27,7 +19,8 @@ IO.Pipe.In jsr IO.Pipe.OpenR Open last created PIPE
|
|||
|
||||
ldy #S.PS.hStdIn
|
||||
sta (pPS),y
|
||||
rts
|
||||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
IO.Set.In pha
|
||||
jsr IO.Reset.In
|
||||
|
@ -37,7 +30,8 @@ IO.Set.In pha
|
|||
pla
|
||||
ldy #S.PS.hStdIn
|
||||
sta (pPS),y
|
||||
IO.Set.RTS rts
|
||||
|
||||
rts
|
||||
*--------------------------------------
|
||||
IO.Pop.In clc
|
||||
.HS B0 BCS
|
||||
|
@ -55,16 +49,24 @@ IO.Reset.In sec
|
|||
>STZ.G IO.hIn
|
||||
|
||||
.8 clc
|
||||
IO.Reset.In.RTS rts
|
||||
rts
|
||||
*--------------------------------------
|
||||
IO.Pipe.Out >PUSHEA.G IO.FIFO
|
||||
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/
|
||||
>PUSHWZ mode
|
||||
>SYSCALL MKFIFO
|
||||
bcs IO.Reset.In.RTS Create a new PIPE
|
||||
bcs .9
|
||||
|
||||
jsr IO.Pipe.OpenW Open for OUTPUT
|
||||
|
||||
bcs IO.Reset.In.RTS
|
||||
bcs .9
|
||||
|
||||
pha
|
||||
ldy #S.PS.hStdOut
|
||||
|
@ -74,7 +76,7 @@ IO.Pipe.Out >PUSHEA.G IO.FIFO
|
|||
ldy #S.PS.hStdOut
|
||||
sta (pPS),y
|
||||
|
||||
rts
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
IO.Set.Out pha
|
||||
jsr IO.Reset.Out
|
||||
|
@ -135,7 +137,8 @@ IO.Pipe.OpenR ldx #O.RDONLY+O.TEXT
|
|||
.HS 2C BIT ABS
|
||||
|
||||
IO.Pipe.OpenW ldx #O.WRONLY+O.TEXT
|
||||
>LEA.G IO.FIFO
|
||||
|
||||
>LEA.G IO.DEVFIFO
|
||||
*--------------------------------------
|
||||
IO.FOpenYAX >PUSHYA
|
||||
txa
|
||||
|
|
|
@ -220,7 +220,7 @@ CS.RUN jsr CL.Init
|
|||
jmp CS.RUN.CMDLINE
|
||||
|
||||
.1 jsr GetArgV Load SH batch file
|
||||
jsr IO.Load
|
||||
>SYSCALL LoadTxtFile
|
||||
bcs .9
|
||||
|
||||
phx X = loaded file hMem
|
||||
|
@ -243,7 +243,7 @@ CS.RUN jsr CL.Init
|
|||
bcs .9
|
||||
|
||||
>LDYA L.HOME.PROFILE
|
||||
jsr IO.Load
|
||||
>SYSCALL LoadTxtFile
|
||||
bcs CS.RUN.LOOP No profile...
|
||||
|
||||
>LDYA L.HOME.PROFILE
|
||||
|
@ -573,6 +573,8 @@ 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"
|
||||
|
@ -716,7 +718,7 @@ IO.hErr .BS 1
|
|||
*M32.BUF .BS 12 -1234567890\0
|
||||
TimeBuf .EQ *
|
||||
M32.BUF .EQ *
|
||||
IO.FIFO .BS 12 /DEV/FIFOxx\0
|
||||
IO.DEVFIFO .BS 12 /dev/fifoXX\0
|
||||
*--------------------------------------
|
||||
DS.END .ED
|
||||
*--------------------------------------
|
||||
|
|
|
@ -74,7 +74,7 @@ CS.RUN lda #DEFAULT.TIMEOUT
|
|||
>LDYA ZPPtr1
|
||||
>STYA ArgPtr
|
||||
lda #3
|
||||
sta TimeOut
|
||||
sta Timeout
|
||||
bra .1
|
||||
|
||||
.2 ldy #2
|
||||
|
@ -100,7 +100,7 @@ CS.RUN lda #DEFAULT.TIMEOUT
|
|||
>SYSCALL ArgV
|
||||
bcs .9
|
||||
|
||||
>SYSCALL atol
|
||||
>SYSCALL AToL
|
||||
bcs .9
|
||||
|
||||
>PULLL Timeout
|
||||
|
|
|
@ -7,7 +7,6 @@ NEW
|
|||
*--------------------------------------
|
||||
.INB inc/macros.i
|
||||
.INB inc/a2osx.i
|
||||
.INB inc/kernel.i
|
||||
.INB inc/mli.i
|
||||
.INB inc/mli.e.i
|
||||
*--------------------------------------
|
||||
|
|
|
@ -8,7 +8,6 @@ NEW
|
|||
.INB inc/macros.i
|
||||
.INB inc/a2osx.i
|
||||
.INB inc/mli.e.i
|
||||
.INB inc/kernel.i
|
||||
*--------------------------------------
|
||||
.DUMMY
|
||||
.OR ZPBIN
|
||||
|
|
|
@ -117,7 +117,7 @@ CS.RUN inc ArgIndex
|
|||
ldy #S.PS.hStdIn
|
||||
lda (pPS),y
|
||||
tax
|
||||
lda OF.Table.hFD-1,x
|
||||
lda Nod.Table.hFD-2,x
|
||||
>SYSCALL GetMemPtr
|
||||
>STYA ZPPtr1
|
||||
lda (ZPPtr1)
|
||||
|
|
|
@ -83,7 +83,6 @@ CS.RUN >LDYA L.MSG0
|
|||
|
||||
ldx SessionID
|
||||
lda S.Table.hFile-1,x
|
||||
tax
|
||||
jsr CS.RUN.GetDevName
|
||||
>PUSHYA 2 bytes DEV
|
||||
|
||||
|
@ -106,11 +105,9 @@ CS.RUN >LDYA L.MSG0
|
|||
.9 rts
|
||||
*--------------------------------------
|
||||
CS.RUN.GetDevName
|
||||
lda OF.Table.hPath-1,x
|
||||
bne .1
|
||||
|
||||
lda OF.Table.hFD-1,x
|
||||
tax
|
||||
lsr
|
||||
bcc .1
|
||||
|
||||
lda Dev.Table-1,x
|
||||
|
||||
|
@ -123,7 +120,9 @@ CS.RUN.GetDevName
|
|||
* clc
|
||||
rts
|
||||
|
||||
.1 >SYSCALL GetMemPtr
|
||||
.1 lda Nod.Table.hFD-2,x
|
||||
|
||||
>SYSCALL GetMemPtr
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.EVENT sec
|
||||
|
|
|
@ -45,8 +45,7 @@ RESCALE 4 * CONSTANT S_ESCAPE
|
|||
: DOESCAPE
|
||||
ZR_SQ ZI_SQ 2DUP +
|
||||
ESCAPES? IF
|
||||
2DROP
|
||||
TRUE
|
||||
DROP DROP 1
|
||||
ELSE
|
||||
- CREAL @ + \ leave result on stack
|
||||
ZREAL @ ZIMAG @ RESCALE */ 2 *
|
||||
|
|
|
@ -9,13 +9,14 @@ K.MEM.nALIGNm1 .EQ $F0
|
|||
*K.MEM.ALIGN .EQ 64
|
||||
*K.MEM.nALIGNm1 .EQ $C0
|
||||
*--------------------------------------
|
||||
K.DEV.MAX .EQ 28
|
||||
K.FLT.MAX .EQ 4
|
||||
K.DEV.MAX .EQ 32
|
||||
K.NOD.MAX .EQ 32
|
||||
K.OF.MAX .EQ 32
|
||||
K.USR.MAX .EQ 16
|
||||
|
||||
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
|
||||
|
@ -225,15 +226,15 @@ SYS.FEOF .EQ $3E
|
|||
SYS.Remove .EQ $40
|
||||
SYS.Rename .EQ $42
|
||||
* STDIO2
|
||||
* .EQ $44
|
||||
* .EQ $46
|
||||
SYS.PrintF .EQ $48
|
||||
SYS.FPrintF .EQ $4A
|
||||
SYS.SPrintF .EQ $4C
|
||||
SYS.ScanF .EQ $4E
|
||||
SYS.PrintF .EQ $44
|
||||
SYS.FPrintF .EQ $46
|
||||
SYS.SPrintF .EQ $48
|
||||
SYS.ScanF .EQ $4A
|
||||
SYS.FScanF .EQ $4C
|
||||
SYS.SScanF .EQ $4E
|
||||
|
||||
SYS.FScanF .EQ $50
|
||||
SYS.SScanF .EQ $52
|
||||
* .EQ $50
|
||||
* .EQ $52
|
||||
* .EQ $54
|
||||
* .EQ $56
|
||||
|
||||
|
|
|
@ -4,8 +4,9 @@ NEW
|
|||
IO.D2.SeekTimeR .EQ 140 LIBBLKDEV Recalibration
|
||||
IO.D2.SeekTimeF .EQ 65 LIBBLKDEV Track Formatter
|
||||
IO.D2.SeekTimeB .EQ 65 LIBBLKDEV Boot Block
|
||||
IO.D2.SeekTimeP .EQ 65 ProDOS.FX initial
|
||||
IO.D2.SeekTimeI .EQ 20 ProDOS.FX increment -> until > 128
|
||||
IO.D2.SeekTime0 .EQ 65 ProDOS.FX initial0
|
||||
IO.D2.SeekTimeP .EQ 30 ProDOS.FX initial
|
||||
IO.D2.SeekTimeI .EQ 10 ProDOS.FX increment -> until > 128
|
||||
*--------------------------------------
|
||||
IO.D2.Ph0Off .EQ $C080
|
||||
IO.D2.Ph0On .EQ $C081
|
||||
|
|
|
@ -3,26 +3,23 @@ NEW
|
|||
*--------------------------------------
|
||||
Mem.Table .EQ $0800
|
||||
*--------------------------------------
|
||||
Dev.Table .EQ $1300 K.Dev.MAX*2
|
||||
Dev.Table .EQ $1300 K.DEV.MAX*2
|
||||
*--------------------------------------
|
||||
Flt.Table.hPath .EQ $1338 K.FLT.MAX
|
||||
Flt.Table.hLib .EQ $133C K.FLT.MAX
|
||||
Nod.Table.hName .EQ $1340 K.NOD.MAX*2
|
||||
Nod.Table.hFD .EQ $1341
|
||||
*--------------------------------------
|
||||
Nod.Table.hPath .EQ $1340 K.NOD.MAX
|
||||
Nod.Table.hFD .EQ $1360 K.NOD.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
|
||||
*--------------------------------------
|
||||
OF.Table.hPath .EQ $1380 K.OF.MAX
|
||||
OF.Table.hFD .EQ $13A0 K.OF.MAX
|
||||
S.Table.hSID .EQ $1400 K.USR.MAX
|
||||
S.Table.hFile .EQ $1410 K.USR.MAX
|
||||
*--------------------------------------
|
||||
PS.Table.PID .EQ $13C0 K.PS.MAX
|
||||
PS.Table.hPS .EQ $13E0 K.PS.MAX
|
||||
PS.Table.Hits .EQ $1400 K.PS.MAX
|
||||
PS.Table.Stats .EQ $1420 K.PS.MAX
|
||||
Flt.Table.hPath .EQ $1420 K.FLT.MAX
|
||||
Flt.Table.hLib .EQ $1424 K.FLT.MAX
|
||||
*--------------------------------------
|
||||
S.Table.hSID .EQ $1440 K.USR.MAX
|
||||
S.Table.hFile .EQ $1450 K.USR.MAX
|
||||
*--------------------------------------
|
||||
A2osX.EndTables .EQ $1460
|
||||
A2osX.EndTables .EQ $1428
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE inc/kernel.i
|
||||
|
|
|
@ -1,14 +1,14 @@
|
|||
NEW
|
||||
AUTO 3,1
|
||||
.LIST OFF
|
||||
--------------------------------------
|
||||
*--------------------------------------
|
||||
LIBCRYPT.MD5 .EQ 4
|
||||
LIBCRYPT.MD5Init .EQ 6
|
||||
LIBCRYPT.MD5Update .EQ 8
|
||||
LIBCRYPT.MD5Finalize .EQ 10
|
||||
--------------------------------------
|
||||
S.MD5 STRUCT
|
||||
--------------------------------------
|
||||
*--------------------------------------
|
||||
* S.MD5 STRUCT
|
||||
*--------------------------------------
|
||||
S.MD5.ABCD0 .EQ 0
|
||||
S.MD5.A0 .EQ 0
|
||||
S.MD5.B0 .EQ 4
|
||||
|
@ -19,6 +19,6 @@ S.MD5.EXTRABIT .EQ 24
|
|||
S.MD5.FINALIZED .EQ 25
|
||||
|
||||
S.MD5 .EQ 26
|
||||
--------------------------------------
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE inc/libcrypt.i
|
||||
|
|
|
@ -355,11 +355,7 @@ BB.Seek lda BB.HdrTrk get track we're on
|
|||
.4 tay
|
||||
|
||||
lda IO.D2.Ph0On,x
|
||||
nop
|
||||
nop
|
||||
lda IO.D2.Ph0On,y
|
||||
nop
|
||||
nop
|
||||
|
||||
lda #IO.D2.SeekTimeB
|
||||
jsr BB.Wait
|
||||
|
@ -376,21 +372,12 @@ BB.Seek lda BB.HdrTrk get track we're on
|
|||
bra BB.Read
|
||||
*--------------------------------------
|
||||
BB.PhasesOff bit IO.D2.Ph0Off,x
|
||||
nop
|
||||
nop
|
||||
|
||||
ldx IO.D2.Ph0Off,y
|
||||
nop
|
||||
nop
|
||||
|
||||
rts
|
||||
*--------------------------------------
|
||||
BB.Wait phx (3)
|
||||
|
||||
.1 ldx BB.Slotn0 (3)
|
||||
bit IO.D2.RData,x (4)
|
||||
|
||||
ldx #18 (2)
|
||||
.1 ldx #19 (2)
|
||||
|
||||
.2 dex (2)
|
||||
bne .2 (3)
|
||||
|
|
|
@ -121,24 +121,18 @@ D2MoveHead.SEI ldx Slotn0
|
|||
and #6
|
||||
ora Slotn0
|
||||
|
||||
bcc .4
|
||||
* bcc .4
|
||||
|
||||
* move out : invert 2 phases
|
||||
|
||||
phx
|
||||
tax
|
||||
pla
|
||||
* phx
|
||||
* tax
|
||||
* pla
|
||||
|
||||
.4 tay
|
||||
|
||||
lda IO.D2.Ph0On,x
|
||||
phx
|
||||
ldx Slotn0
|
||||
bit IO.D2.RData,x
|
||||
|
||||
lda IO.D2.Ph0On,y
|
||||
bit IO.D2.RData,x
|
||||
plx
|
||||
|
||||
lda #IO.D2.SeekTimeF
|
||||
jsr D2.Wait100usecA
|
||||
|
@ -147,14 +141,8 @@ D2MoveHead.SEI ldx Slotn0
|
|||
|
||||
.7 jsr D2.Wait25600usec
|
||||
|
||||
.8 pha
|
||||
bit IO.D2.Ph0Off,x
|
||||
ldx Slotn0
|
||||
bit IO.D2.RData,x
|
||||
|
||||
lda IO.D2.Ph0Off,y
|
||||
bit IO.D2.RData,x
|
||||
pla
|
||||
.8 bit IO.D2.Ph0Off,x
|
||||
ldx IO.D2.Ph0Off,y
|
||||
rts
|
||||
*--------------------------------------
|
||||
D2.Wait25600usec
|
||||
|
@ -162,10 +150,7 @@ D2.Wait25600usec
|
|||
|
||||
D2.Wait100usecA phx
|
||||
|
||||
.1 ldx Slotn0 (3)
|
||||
bit IO.D2.RData,x (4)
|
||||
|
||||
ldx #18 (2)
|
||||
.1 ldx #19 (2)
|
||||
|
||||
.2 dex (2)
|
||||
bne .2 (3)
|
||||
|
|
|
@ -2,13 +2,13 @@ NEW
|
|||
AUTO 3,1
|
||||
*--------------------------------------
|
||||
FON.Init >LDYA L.SYSX7
|
||||
jsr FON.Load
|
||||
>SYSCALL2 LoadStkObj
|
||||
bcs .9
|
||||
|
||||
stx hSYSFON
|
||||
|
||||
>LDYA L.SYSX7B
|
||||
jsr FON.Load
|
||||
>SYSCALL2 LoadStkObj
|
||||
bcs .9
|
||||
|
||||
stx hSYSFONB
|
||||
|
@ -26,13 +26,6 @@ FON.Init >LDYA L.SYSX7
|
|||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
FON.Load >PUSHYA
|
||||
>PUSHBI O.RDONLY
|
||||
>PUSHBI $CC Type
|
||||
>PUSHWZ Aux type
|
||||
>SYSCALL2 LoadStkObj
|
||||
rts
|
||||
*--------------------------------------
|
||||
FON.GetTextSize >STYA CB.CACHE+S.CB.TxtPtr
|
||||
stx CB.CACHE+S.CB.hFont
|
||||
|
||||
|
|
|
@ -444,6 +444,29 @@ LDR.ClkDevTCLK lda CLRC8ROM switch out $C8 ROMs
|
|||
dey
|
||||
bpl .2
|
||||
|
||||
lda idxl+1
|
||||
and #$f
|
||||
tax
|
||||
sta CLRPAGE2
|
||||
stz $478,x
|
||||
stz $7f8,x
|
||||
|
||||
sta SETPAGE2
|
||||
stz $478,x
|
||||
stz $7f8,x
|
||||
|
||||
lda idxl+1
|
||||
asl
|
||||
asl
|
||||
asl
|
||||
asl
|
||||
tax
|
||||
|
||||
stz $c080,x
|
||||
|
||||
lda $c088,x
|
||||
lda $c080,x
|
||||
|
||||
lda #'T'
|
||||
ldx PAKME.TCLK
|
||||
ldy PAKME.TCLK+1
|
||||
|
|
|
@ -549,17 +549,20 @@ XRW.Write.RTS rts (6)
|
|||
* for motor on timing.
|
||||
*--------------------------------------
|
||||
XRW.WaitSeekTime
|
||||
lda XRW.SeekTime
|
||||
* lda XRW.SeekCnt
|
||||
* bne .1
|
||||
* inc XRW.SeekCnt
|
||||
|
||||
lda #IO.D2.SeekTime0
|
||||
* bra XRW.Wait100usecA
|
||||
*.1 lda XRW.SeekTime
|
||||
.HS 2C BIT ABS
|
||||
XRW.Wait25600usec
|
||||
lda #0
|
||||
XRW.Wait100usecA
|
||||
phx
|
||||
|
||||
.1 ldx A2L (3)
|
||||
bit IO.D2.RData,x (4)
|
||||
|
||||
ldx #16 (2)
|
||||
.1 ldx #17 (2)
|
||||
|
||||
.2 dex (2)
|
||||
bne .2 (3)
|
||||
|
@ -573,7 +576,7 @@ XRW.Wait100usecA
|
|||
bne .1 (3)
|
||||
|
||||
plx
|
||||
rts (6)
|
||||
rts
|
||||
*--------------------------------------
|
||||
* read subroutine (16-sector format)
|
||||
*
|
||||
|
@ -730,7 +733,6 @@ XRW.Read.RTS rts
|
|||
* A = target track
|
||||
*--------------------------------------
|
||||
XRW.Seek ldx XRW.UnitIndex
|
||||
|
||||
pha save target track
|
||||
|
||||
jsr XRW.Trk2Qtrk
|
||||
|
@ -744,6 +746,8 @@ XRW.Seek ldx XRW.UnitIndex
|
|||
pla
|
||||
sta XRW.D2Trk-1,x will be current track at the end
|
||||
|
||||
stz XRW.SeekCnt
|
||||
|
||||
ldx A2L
|
||||
ldy A2L
|
||||
|
||||
|
@ -790,24 +794,18 @@ XRW.Seek ldx XRW.UnitIndex
|
|||
and #6
|
||||
ora A2L
|
||||
|
||||
bcc .4
|
||||
* bcc .4
|
||||
|
||||
* move out : invert 2 phases
|
||||
|
||||
phx
|
||||
tax
|
||||
pla
|
||||
* phx
|
||||
* tax
|
||||
* pla
|
||||
|
||||
.4 tay
|
||||
|
||||
lda IO.D2.Ph0On,x
|
||||
phx
|
||||
ldx A2L
|
||||
bit IO.D2.RData,x
|
||||
|
||||
lda IO.D2.Ph0On,y
|
||||
bit IO.D2.RData,x
|
||||
plx
|
||||
|
||||
jsr XRW.WaitSeekTime
|
||||
|
||||
|
@ -815,14 +813,8 @@ XRW.Seek ldx XRW.UnitIndex
|
|||
|
||||
.7 jsr XRW.Wait25600usec
|
||||
|
||||
.8 pha
|
||||
bit IO.D2.Ph0Off,x
|
||||
ldx A2L
|
||||
bit IO.D2.RData,x
|
||||
|
||||
lda IO.D2.Ph0Off,y
|
||||
bit IO.D2.RData,x
|
||||
pla
|
||||
.8 bit IO.D2.Ph0Off,x
|
||||
ldx IO.D2.Ph0Off,y
|
||||
rts
|
||||
*--------------------------------------
|
||||
XRW.Reset ldx A2L
|
||||
|
@ -1024,7 +1016,9 @@ XRW.CurrentQTrack .HS 00
|
|||
* .HS FF
|
||||
XRW.TargetQTrack .HS 00
|
||||
.HS B0B4B8BCC0C4C8
|
||||
.HS FFFF
|
||||
* .HS FFFF
|
||||
.HS FF
|
||||
XRW.SeekCnt .HS 00
|
||||
.HS CCD0D4D8DCE0
|
||||
XRW.bWrite .HS 00
|
||||
.HS E4E8ECF0F4F8FC
|
||||
|
|
|
@ -4,7 +4,7 @@ NEW
|
|||
.OP 65C02
|
||||
.OR $2000
|
||||
.TF sbin/initd
|
||||
*---------------------------------------
|
||||
*--------------------------------------
|
||||
INITDDBG .EQ 0
|
||||
*--------------------------------------
|
||||
.INB inc/macros.i
|
||||
|
@ -62,10 +62,13 @@ CS.RUN ldy #S.PS.PID
|
|||
cmp #1
|
||||
bne .9
|
||||
|
||||
* bra .55
|
||||
|
||||
ldy #S.PS.hStdIn
|
||||
lda (pPS),y
|
||||
>SYSCALL FEOF
|
||||
bcs .99
|
||||
|
||||
tay
|
||||
bne .1
|
||||
|
||||
|
@ -75,6 +78,7 @@ CS.RUN ldy #S.PS.PID
|
|||
cmp #18 CTRL-R for Root mode
|
||||
bne .1
|
||||
|
||||
*.55
|
||||
>LDYA L.MSG.CTRLR
|
||||
>SYSCALL PutS
|
||||
|
||||
|
|
|
@ -158,6 +158,7 @@ BIN.Load.1 >PUSHWI K.Buf256
|
|||
>LDYA K.S.STAT+S.STAT.P.AUXTYPE
|
||||
>STYA BIN.R.CS.Start
|
||||
>PUSHYA Push AUXTYPE
|
||||
|
||||
jsr K.LoadFile
|
||||
bcs .9 Error Loading file
|
||||
|
||||
|
@ -425,6 +426,6 @@ BIN.65R02 .HS 1.2.2.1.2.2.2.2.1.2.1.1.B.B.B.3
|
|||
.HS 2.2.2.1.2.2.2.2.1.B.1.1.1.B.B.3
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE USR/SRC/SYS/KERNEL.S.BIN
|
||||
LOAD USR/SRC/SYS/KERNEL.S
|
||||
SAVE usr/src/sys/kernel.s.bin
|
||||
LOAD usr/src/sys/kernel.s
|
||||
ASM
|
||||
|
|
|
@ -606,6 +606,9 @@ CORE.IRQ.TCLOCK.Off
|
|||
ldx IRQ.n0
|
||||
stz $c080,x
|
||||
|
||||
lda $c088,x
|
||||
lda $c080,x
|
||||
|
||||
ldx IRQ.0n
|
||||
sta CLRPAGE2
|
||||
stz $478,x
|
||||
|
@ -615,9 +618,6 @@ CORE.IRQ.TCLOCK.Off
|
|||
stz $478,x
|
||||
stz $7f8,x
|
||||
|
||||
lda $c088,y
|
||||
lda $c080,y
|
||||
|
||||
rts
|
||||
*--------------------------------------
|
||||
CORE.IRQ.MOUSE.Off
|
||||
|
@ -642,6 +642,6 @@ IRQ.Tick .BS 1
|
|||
IRQ.Vectors .BS K.IRQDEV.MAX*2
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE USR/SRC/SYS/KERNEL.S.CORE
|
||||
LOAD USR/SRC/SYS/KERNEL.S
|
||||
SAVE usr/src/sys/kernel.s.core
|
||||
LOAD usr/src/sys/kernel.s
|
||||
ASM
|
||||
|
|
|
@ -15,9 +15,9 @@ pIOBuf .EQ ZPKERNEL+14
|
|||
*--------------------------------------
|
||||
ZPMEMMGR .EQ $10
|
||||
*--------------------------------------
|
||||
SIGNFLG .EQ $16 COS,SIN,TAN
|
||||
*SIGNFLG .EQ $16 COS,SIN,TAN
|
||||
*--------------------------------------
|
||||
* AuxMove / XFer
|
||||
* XMov / XFer
|
||||
*--------------------------------------
|
||||
A1L .EQ $3C
|
||||
A2L .EQ $3E
|
||||
|
@ -25,7 +25,7 @@ A4L .EQ $42
|
|||
|
||||
*XFer.JMP .EQ $3ED
|
||||
|
||||
AuxMove .EQ $C311
|
||||
XMov .EQ $C311
|
||||
XFer .EQ $C314 CS:M->X, VS:Use Aux ZP
|
||||
*--------------------------------------
|
||||
* $42-$47 ProDOS Block Device Drivers Main
|
||||
|
@ -113,11 +113,12 @@ PS.NewPSPtr .BS 2
|
|||
.ED
|
||||
*--------------------------------------
|
||||
.DUMMY
|
||||
.OR ZPTMP+20 7 Bytes
|
||||
.OR ZPTMP+20 6 Bytes
|
||||
IO.Open.FLAGS .BS 1
|
||||
IO.Open.TYPE .BS 1
|
||||
IO.Open.AUXTYPE .BS 2
|
||||
IO.hFD .BS 1
|
||||
IO.hDevNod .BS 1
|
||||
.ED
|
||||
*--------------------------------------
|
||||
A2osX.SaveSM .EQ $100 Aux
|
||||
|
@ -240,6 +241,6 @@ S.MD5.FINALIZED .EQ 25
|
|||
S.MD5 .EQ 26
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE USR/SRC/SYS/KERNEL.S.DEF
|
||||
LOAD USR/SRC/SYS/KERNEL.S
|
||||
SAVE usr/src/sys/kernel.s.def
|
||||
LOAD usr/src/sys/kernel.s
|
||||
ASM
|
||||
|
|
|
@ -9,40 +9,87 @@ NEW
|
|||
* X = hDev
|
||||
*\--------------------------------------
|
||||
K.GetDevByName >STYA ZPPtr1 requested dev name
|
||||
|
||||
ldx #1
|
||||
|
||||
.1 jsr SHARED.GetDevFD
|
||||
bcs K.GetDev.NODEV
|
||||
.1 lda Dev.Table,x
|
||||
beq .4
|
||||
|
||||
sta pFD+1
|
||||
pha
|
||||
tya
|
||||
* clc
|
||||
|
||||
lda Dev.Table-1,x
|
||||
sta pFD
|
||||
|
||||
clc
|
||||
adc #S.FD.DEV
|
||||
sta ZPPtr2
|
||||
tay
|
||||
|
||||
pla
|
||||
|
||||
adc /S.FD.DEV
|
||||
sta ZPPtr2+1
|
||||
|
||||
ldy #$ff
|
||||
jsr .8
|
||||
bcs .3
|
||||
|
||||
.2 iny
|
||||
lda (ZPPtr1),y
|
||||
cmp (ZPPtr2),y
|
||||
bne .7
|
||||
jsr DEV.GetPDrv
|
||||
|
||||
ora (ZPPtr2),y Both char are 0 ?
|
||||
bne .2
|
||||
>LDYA pFD X = hDevNod
|
||||
|
||||
beq SHARED.GetDevFD yes, get Ptr
|
||||
* clc
|
||||
rts
|
||||
|
||||
.7 inx no....loop
|
||||
.3 inx no....loop
|
||||
inx
|
||||
cpx #K.DEV.MAX*2+1
|
||||
bne .1
|
||||
|
||||
K.GetDev.NODEV lda #MLI.E.NODEV
|
||||
.4 ldx #2
|
||||
|
||||
.5 lda Nod.Table.hFD-2,x
|
||||
beq .7
|
||||
|
||||
lda Nod.Table.hName-2,x
|
||||
beq .7
|
||||
jsr K.GetMemPtr
|
||||
|
||||
jsr .8
|
||||
bcs .7
|
||||
|
||||
lda Nod.Table.hFD-2,x
|
||||
jsr K.GetMemPtr Y,A = pPD, X = hDevNod
|
||||
|
||||
>STYA pFD for UNISTD.Open
|
||||
|
||||
* clc
|
||||
rts
|
||||
|
||||
.7 inx
|
||||
inx
|
||||
cpx #K.NOD.MAX*2+2
|
||||
bne .5
|
||||
|
||||
.9 lda #MLI.E.NODEV
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
.8 >STYA ZPPtr2
|
||||
|
||||
ldy #$ff
|
||||
|
||||
.80 iny
|
||||
lda (ZPPtr1),y
|
||||
cmp (ZPPtr2),y
|
||||
bne .89
|
||||
|
||||
eor #0
|
||||
bne .80
|
||||
|
||||
clc
|
||||
rts
|
||||
|
||||
.89 sec
|
||||
|
||||
K.GetDev.9 rts
|
||||
*/--------------------------------------
|
||||
* # GetDevStatus
|
||||
|
@ -56,33 +103,23 @@ K.GetDev.9 rts
|
|||
*\--------------------------------------
|
||||
K.GetDevStatus >PULLW K.S.IOCTL+S.IOCTL.BUFPTR
|
||||
>PULLA
|
||||
tax
|
||||
|
||||
jsr SHARED.GetDevFD
|
||||
jsr DEV.GetPFD
|
||||
bcs K.GetDev.9
|
||||
>STYA pFD
|
||||
|
||||
lda #S.IOCTL.STATCODE.GETDIB
|
||||
*--------------------------------------
|
||||
SHARED.GetDevStatus
|
||||
DEV.GetDevStatus
|
||||
sta K.S.IOCTL+S.IOCTL.STATCODE
|
||||
|
||||
ldy #S.FD.DEV.DEVID
|
||||
lda (pFD),y
|
||||
sta K.S.IOCTL+S.IOCTL.UNITNUM
|
||||
|
||||
jsr SHARED.GetPDrv
|
||||
|
||||
>LDYAI K.S.IOCTL
|
||||
ldx #IOCTL.STATUS
|
||||
*--------------------------------------
|
||||
SHARED.pDrvJmp jmp (pDrv)
|
||||
*--------------------------------------
|
||||
SHARED.GetDevFD lda Dev.Table,x
|
||||
beq K.GetDev.NODEV
|
||||
ldy Dev.Table-1,x
|
||||
clc
|
||||
rts
|
||||
DEV.pDrvJmp jmp (pDrv)
|
||||
*/--------------------------------------
|
||||
* # MKDev
|
||||
* Create a hDEV
|
||||
|
@ -98,9 +135,19 @@ SHARED.GetDevFD lda Dev.Table,x
|
|||
K.MKDev >PULLW ZPPtr2 ptr2=name
|
||||
>PULLW ZPPtr1 ptr1=fd
|
||||
|
||||
ldx DevMgr.DevIdx
|
||||
ldx #1
|
||||
|
||||
.10 lda Dev.Table,x
|
||||
beq .11
|
||||
|
||||
inx
|
||||
inx
|
||||
cpx #K.DEV.MAX*2+1
|
||||
beq .9
|
||||
bne .10
|
||||
|
||||
bra .9
|
||||
|
||||
.11 stx IO.hDevNod
|
||||
|
||||
ldy #$ff
|
||||
ldx #S.FD.DEV
|
||||
|
@ -120,7 +167,7 @@ K.MKDev >PULLW ZPPtr2 ptr2=name
|
|||
>STYA pFD
|
||||
>STYA .4+1
|
||||
|
||||
ldx DevMgr.DevIdx
|
||||
ldx IO.hDevNod
|
||||
sta Dev.Table,x
|
||||
tya
|
||||
sta Dev.Table-1,x
|
||||
|
@ -144,8 +191,10 @@ K.MKDev >PULLW ZPPtr2 ptr2=name
|
|||
>LDYAI K.IOBuf
|
||||
>STYA K.S.IOCTL+S.IOCTL.BUFPTR
|
||||
|
||||
jsr DEV.GetPDrv
|
||||
|
||||
lda #S.IOCTL.STATCODE.STATUS
|
||||
jsr SHARED.GetDevStatus
|
||||
jsr DEV.GetDevStatus
|
||||
bcs .99
|
||||
|
||||
lda K.IOBuf Get Status byte
|
||||
|
@ -173,9 +222,7 @@ K.MKDev >PULLW ZPPtr2 ptr2=name
|
|||
lda (pDRV),y
|
||||
sta IRQ.Vectors+1,x
|
||||
|
||||
.8 lda DevMgr.DevIdx
|
||||
inc DevMgr.DevIdx
|
||||
inc DevMgr.DevIdx
|
||||
.8 lda IO.hDevNod
|
||||
* clc
|
||||
rts
|
||||
*/--------------------------------------
|
||||
|
@ -192,13 +239,9 @@ K.MKDev >PULLW ZPPtr2 ptr2=name
|
|||
*\--------------------------------------
|
||||
K.IOCTL ldy #3 hDev
|
||||
lda (pStack),y
|
||||
tax
|
||||
|
||||
jsr SHARED.GetDevFD
|
||||
jsr DEV.GetPFD
|
||||
bcs .9
|
||||
>STYA pFD
|
||||
|
||||
jsr SHARED.GetPDrv
|
||||
|
||||
ldy #2 request
|
||||
lda (pStack),y
|
||||
|
@ -212,7 +255,85 @@ K.IOCTL ldy #3 hDev
|
|||
|
||||
.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
|
||||
|
||||
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
|
||||
iny
|
||||
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
|
||||
|
||||
ldy DEV.MkFD.Y,x
|
||||
lda #0
|
||||
ldx #S.MEM.F.INIT0+S.MEM.F.FD
|
||||
jsr MEM.GetMem.YAX
|
||||
bcs .9
|
||||
|
||||
>STYA pFD
|
||||
stx IO.hFD
|
||||
|
||||
.8 ldx #$ff SELF MODIFIED
|
||||
lda DEV.MkFD.T,x
|
||||
sta (pFD) X = hFD, A = T
|
||||
|
||||
* clc
|
||||
.9 rts
|
||||
|
||||
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
|
||||
*--------------------------------------
|
||||
DEV.Destroy ldx IO.hDevNod
|
||||
lda Nod.Table.hName-2,x
|
||||
beq .1
|
||||
|
||||
stz Nod.Table.hName-2,x
|
||||
jsr K.FreeMem
|
||||
|
||||
ldx IO.hDevNod
|
||||
|
||||
.1 lda Nod.Table.hFD-2,x
|
||||
stz Nod.Table.hFD-2,x
|
||||
jmp K.FreeMem
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE USR/SRC/SYS/KERNEL.S.DEV
|
||||
LOAD USR/SRC/SYS/KERNEL.S
|
||||
SAVE usr/src/sys/kernel.s.dev
|
||||
LOAD usr/src/sys/kernel.s
|
||||
ASM
|
||||
|
|
|
@ -16,36 +16,9 @@ NEW
|
|||
K.OpenDir jsr PFT.CheckPathYA
|
||||
bcs .9
|
||||
|
||||
ldx #1
|
||||
jsr IO.MkFD
|
||||
bcs .9
|
||||
|
||||
lda K.Buf256+1 One char ("/") ?
|
||||
beq .8 No, Go open dir....
|
||||
|
||||
jsr FS.Stat
|
||||
bcs .98 file/dir does not exists....quit
|
||||
|
||||
lda K.S.STAT+S.STAT.MODE+1
|
||||
and #$f0
|
||||
cmp /S.STAT.MODE.DIR
|
||||
bne .97
|
||||
|
||||
jsr FS.OPEN
|
||||
bcs .98
|
||||
|
||||
.8 jsr STDIO.NewHFile
|
||||
bcs .98
|
||||
jmp FS.OPEN.DIR
|
||||
|
||||
.9 rts
|
||||
|
||||
.97 lda #MLI.E.UNSUPST
|
||||
.98 pha Save Error Code
|
||||
lda IO.hFD
|
||||
jsr K.Close
|
||||
pla
|
||||
sec
|
||||
rts
|
||||
*/--------------------------------------
|
||||
* # ReadDir
|
||||
* ## C
|
||||
|
@ -531,6 +504,6 @@ K.ReadDir.AddStat
|
|||
*K.CloseDir .EQ K.FClose
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE USR/SRC/SYS/KERNEL.S.DIRENT
|
||||
LOAD USR/SRC/SYS/KERNEL.S
|
||||
SAVE usr/src/sys/kernel.s.dirent
|
||||
LOAD usr/src/sys/kernel.s
|
||||
ASM
|
||||
|
|
|
@ -270,6 +270,6 @@ DRV.NULL.CLOSE clc
|
|||
rts
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE USR/SRC/SYS/KERNEL.S.DRV
|
||||
LOAD USR/SRC/SYS/KERNEL.S
|
||||
SAVE usr/src/sys/kernel.s.drv
|
||||
LOAD usr/src/sys/kernel.s
|
||||
ASM
|
||||
|
|
|
@ -75,6 +75,6 @@ K.GetEnv.I ldy #S.PS.hENV FROM STDLIB:EXPAND
|
|||
jmp K.SYSCALL.JMPX
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE USR/SRC/SYS/KERNEL.S.ENV
|
||||
LOAD USR/SRC/SYS/KERNEL.S
|
||||
SAVE usr/src/sys/kernel.s.env
|
||||
LOAD usr/src/sys/kernel.s
|
||||
ASM
|
||||
|
|
|
@ -412,6 +412,6 @@ ENVX.NextEnvP4Y tya
|
|||
.8 rts
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE USR/SRC/SYS/KERNEL.S.ENVX
|
||||
LOAD USR/SRC/SYS/KERNEL.S
|
||||
SAVE usr/src/sys/kernel.s.envx
|
||||
LOAD usr/src/sys/kernel.s
|
||||
ASM
|
||||
|
|
|
@ -18,6 +18,6 @@ K.GetErrorMessage
|
|||
rts
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE USR/SRC/SYS/KERNEL.S.ERROR
|
||||
LOAD USR/SRC/SYS/KERNEL.S
|
||||
SAVE usr/src/sys/kernel.s.error
|
||||
LOAD usr/src/sys/kernel.s
|
||||
ASM
|
||||
|
|
|
@ -148,6 +148,6 @@ ERRORX.Messages .AT "Bad MLI Call"
|
|||
.AT "Unknown Error"
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE USR/SRC/SYS/KERNEL.S.ERRORX
|
||||
LOAD USR/SRC/SYS/KERNEL.S
|
||||
SAVE usr/src/sys/kernel.s.errorx
|
||||
LOAD usr/src/sys/kernel.s
|
||||
ASM
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
NEW
|
||||
AUTO 3,1
|
||||
*--------------------------------------
|
||||
IO.OPEN.REG >MLICALL MLIGETFILEINFO
|
||||
bcc .10 Already Exists
|
||||
FS.OPEN.REG >MLICALL MLIGETFILEINFO
|
||||
bcc .2 Already Exists
|
||||
|
||||
bit IO.Open.FLAGS Create if not exists ?
|
||||
bpl .9 No, return MLI error
|
||||
|
@ -18,35 +18,35 @@ IO.OPEN.REG >MLICALL MLIGETFILEINFO
|
|||
jsr FS.CREATE
|
||||
bcs .9
|
||||
|
||||
.10 ldx #0
|
||||
jsr IO.MkFD
|
||||
.2 ldx #0
|
||||
jsr DEV.MkFD
|
||||
bcs .9
|
||||
|
||||
jsr FS.OPEN
|
||||
jsr FS.MLIOPEN
|
||||
bcs .99
|
||||
|
||||
lda IO.Open.FLAGS
|
||||
bit #O.WRONLY
|
||||
beq .20 Write mode ?
|
||||
beq .5 Write mode ?
|
||||
|
||||
and #O.APPEND Append ?
|
||||
bne .11 yes, go to end of file
|
||||
bne .3 yes, go to end of file
|
||||
|
||||
stz K.MLI.PARAMS+2
|
||||
stz K.MLI.PARAMS+3
|
||||
stz K.MLI.PARAMS+4
|
||||
>MLICALL MLISETEOF no, reset size to 0
|
||||
bra .21
|
||||
bra .4
|
||||
|
||||
.11 >MLICALL MLIGETEOF
|
||||
.3 >MLICALL MLIGETEOF
|
||||
bcs .99
|
||||
|
||||
>MLICALL MLISETMARK
|
||||
.21 bcs .99
|
||||
.4 bcs .99
|
||||
|
||||
.20 lda IO.Open.FLAGS
|
||||
.5 lda IO.Open.FLAGS
|
||||
and #O.TEXT Text Mode ?
|
||||
beq .8
|
||||
beq .6
|
||||
|
||||
lda #$FF
|
||||
sta K.MLI.PARAMS+2
|
||||
|
@ -55,35 +55,53 @@ IO.OPEN.REG >MLICALL MLIGETFILEINFO
|
|||
>MLICALL MLINEWLINE
|
||||
bcs .99
|
||||
|
||||
.8 lda IO.hFD
|
||||
.9 rts
|
||||
.6 >LDYAI K.MLI.PATH+1
|
||||
>STYA ZPPtr1
|
||||
jsr K.MkNod.I
|
||||
bcc .8
|
||||
|
||||
.99 pha Save Error Code
|
||||
lda IO.hFD
|
||||
jsr K.Close
|
||||
pla
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
IO.READ.REG ldx #MLIREAD
|
||||
.HS 2C BIT ABS
|
||||
*--------------------------------------
|
||||
IO.WRITE.REG ldx #MLIWRITE
|
||||
|
||||
ldy #S.FD.REG.REF
|
||||
lda (pFD),y
|
||||
sta K.MLI.PARAMS+1
|
||||
>PULLW K.MLI.PARAMS+2
|
||||
>PULLW K.MLI.PARAMS+4
|
||||
.8
|
||||
|
||||
lda #4 Param Count = 4 for MLIREAD & MLIWRITE
|
||||
jsr GP.MLICall
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
FS.OPEN.DIR ldx #1
|
||||
jsr DEV.MkFD
|
||||
bcs .9
|
||||
>LDYA K.MLI.PARAMS+6
|
||||
|
||||
.9
|
||||
*IO.WRITE.REG.RTS
|
||||
lda K.MLI.PATH+2
|
||||
beq .8 "/"
|
||||
|
||||
>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
|
||||
lda IO.hFD
|
||||
jsr K.Close
|
||||
pla
|
||||
sec
|
||||
rts
|
||||
|
||||
.99 lda #MLI.E.UNSUPST
|
||||
sec
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
FS.CLOSE.REG
|
||||
FS.CLOSE.DIR ldy #S.FD.REG.REF
|
||||
|
@ -100,8 +118,25 @@ FS.CLOSE.DIR ldy #S.FD.REG.REF
|
|||
|
||||
jsr K.FreeMem
|
||||
|
||||
.2 lda IO.hFD
|
||||
jmp K.FreeMem
|
||||
.2 jmp DEV.Destroy
|
||||
*--------------------------------------
|
||||
FS.READ.REG ldx #MLIREAD
|
||||
.HS 2C BIT ABS
|
||||
*--------------------------------------
|
||||
FS.WRITE.REG ldx #MLIWRITE
|
||||
|
||||
ldy #S.FD.REG.REF
|
||||
lda (pFD),y
|
||||
sta K.MLI.PARAMS+1
|
||||
>PULLW K.MLI.PARAMS+2
|
||||
>PULLW K.MLI.PARAMS+4
|
||||
|
||||
lda #4 Param Count = 4 for MLIREAD & MLIWRITE
|
||||
jsr GP.MLICall
|
||||
bcs .9
|
||||
>LDYA K.MLI.PARAMS+6
|
||||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
FS.EOF.REG >MLICALL MLIGETMARK
|
||||
bcs .9
|
||||
|
@ -130,6 +165,7 @@ FS.EOF.REG >MLICALL MLIGETMARK
|
|||
*--------------------------------------
|
||||
FS.CREATE sta K.MLI.PARAMS+7 Storage Type
|
||||
ldx #3
|
||||
|
||||
.1 lda DATELO,x
|
||||
sta K.MLI.PARAMS+8,x Create Date/Time
|
||||
dex
|
||||
|
@ -140,7 +176,7 @@ FS.CREATE sta K.MLI.PARAMS+7 Storage Type
|
|||
>MLICALL MLICREATE
|
||||
rts
|
||||
*--------------------------------------
|
||||
FS.OPEN >LDYAI 1024 get a ProDOS IOBUF
|
||||
FS.MLIOPEN >LDYAI 1024 get a ProDOS IOBUF
|
||||
ldx #S.MEM.F.ALIGN
|
||||
jsr MEM.GetMem.YAX
|
||||
bcs .9
|
||||
|
@ -152,6 +188,7 @@ FS.OPEN >LDYAI 1024 get a ProDOS IOBUF
|
|||
|
||||
>MLICALL MLIOPEN
|
||||
bcs .9
|
||||
|
||||
lda K.MLI.PARAMS+5 get ref_num
|
||||
ldy #S.FD.REG.REF
|
||||
sta (pFD),y
|
||||
|
@ -159,62 +196,15 @@ FS.OPEN >LDYAI 1024 get a ProDOS IOBUF
|
|||
sta K.MLI.PARAMS+1 Next MLI Calls are REF_NUM based
|
||||
|
||||
* clc
|
||||
|
||||
.9
|
||||
FS.OPEN.RTS rts
|
||||
*--------------------------------------
|
||||
FS.FSTAT.A >PUSHA
|
||||
|
||||
FS.FSTAT >PUSHWI K.S.STAT
|
||||
ldx #SYS.FStat
|
||||
jsr PFT.CheckNode2
|
||||
bcs .9
|
||||
|
||||
ldy #2
|
||||
lda (pStack),y
|
||||
|
||||
tax
|
||||
|
||||
lda OF.Table.hPath-1,x
|
||||
jsr K.GetMemPtr
|
||||
jsr PFT.YAToMLIPATH
|
||||
|
||||
jsr FS.Stat.203
|
||||
bcs .9
|
||||
|
||||
lda (pFD) #S.FD.T
|
||||
bne .9
|
||||
|
||||
ldy #S.FD.REG.REF
|
||||
lda (pFD),y
|
||||
sta K.MLI.PARAMS+1
|
||||
|
||||
>MLICALL MLIGETEOF
|
||||
|
||||
ldx #2
|
||||
|
||||
.1 lda K.MLI.PARAMS+2,x
|
||||
sta K.S.STAT+S.STAT.SIZE,x
|
||||
dex
|
||||
bpl .1
|
||||
|
||||
.9 >RET 3
|
||||
*--------------------------------------
|
||||
FS.STAT.YA >PUSHYA
|
||||
>PUSHWI K.S.STAT
|
||||
ldx #SYS.Stat
|
||||
jsr PFT.CheckPath2
|
||||
bcs .9
|
||||
|
||||
jsr FS.Stat.203
|
||||
|
||||
.9 >POP 4
|
||||
FS.STAT.YA.RTS rts
|
||||
FS.MLIOPEN.RTS rts
|
||||
*--------------------------------------
|
||||
FS.Stat bit A2osX.FSID
|
||||
bmi FS.Stat.FX
|
||||
|
||||
FS.Stat.203 >MLICALL MLIGETFILEINFO
|
||||
bcs FS.STAT.YA.RTS
|
||||
bcs FS.MLIOPEN.RTS
|
||||
|
||||
jsr FS.ClrStat
|
||||
|
||||
|
|
|
@ -97,7 +97,9 @@ GP.Sleep2 ldy #S.PS.PC
|
|||
|
||||
inc $1fe PC=PC+1
|
||||
bne .4
|
||||
|
||||
inc $1ff because of RTI
|
||||
|
||||
.4 lda (pPS)
|
||||
ora #S.PS.F.SLEEP
|
||||
sta (pPS)
|
||||
|
@ -123,6 +125,7 @@ GP.SysCall dec IRQ.InKernel
|
|||
pla
|
||||
jsr K.SYSCALL2
|
||||
bcc .2 no error quit...
|
||||
|
||||
tax CS,A=0 ?
|
||||
beq .3 Yes, BLOCKING I/O
|
||||
|
||||
|
@ -136,7 +139,9 @@ GP.SysCall dec IRQ.InKernel
|
|||
* sec
|
||||
sbc #2 move back JSR GP.SysCall -3 (jsr $BF00) +1 (RTI)
|
||||
bcs .4
|
||||
|
||||
dex
|
||||
|
||||
.4 inc IRQ.InKernel
|
||||
bra GP.Sleep2
|
||||
*--------------------------------------
|
||||
|
@ -147,6 +152,7 @@ GP.LibCall dec IRQ.InLib
|
|||
jsr K.GetMemPtr Get LIB Code Segment (MemMgr in $E000, no BNK change)
|
||||
>STYA .1+1
|
||||
pla
|
||||
|
||||
.1 jsr $FFFF SELF MODIFIED
|
||||
|
||||
GP.LibCall.8 inc IRQ.InLib
|
||||
|
@ -155,11 +161,15 @@ GP.LibCall.RTS rts
|
|||
GP.AtkCall dec IRQ.InKernel
|
||||
|
||||
>STYA .1
|
||||
|
||||
jsr GO.ProDOS
|
||||
|
||||
jsr MLI
|
||||
.DA #MLIATALK
|
||||
.1 .DA *
|
||||
|
||||
jsr GO.A2osX
|
||||
|
||||
GP.AtkCall.INC inc IRQ.InKernel
|
||||
rts
|
||||
*/--------------------------------------
|
||||
|
@ -298,6 +308,7 @@ GP.lrintf jsr GP.SetFAC
|
|||
jsr GP.ROMCALL
|
||||
|
||||
ldy #3
|
||||
|
||||
.1 lda FAC+1,y
|
||||
sta (pStack),y
|
||||
dey
|
||||
|
@ -340,7 +351,7 @@ GO.A2osX php
|
|||
|
||||
bcs GO.A2osX.BNK if CS, go AUXLC
|
||||
bit RRAMWRAMBNK1 Go MAINLC (ProDOS), always BNK1
|
||||
bit RRAMWRAMBNK1
|
||||
* bit RRAMWRAMBNK1
|
||||
|
||||
tsx
|
||||
stx A2osX.SaveSX
|
||||
|
@ -352,7 +363,7 @@ GO.A2osX php
|
|||
GO.A2osX.BNK ldx #RRAMWRAMBNK1 Self Modified, initialized to BNK1 for INIT3
|
||||
|
||||
bit $C000,x
|
||||
bit $C000,x
|
||||
* bit $C000,x
|
||||
sta SETALTZP
|
||||
tsx
|
||||
stx A2osX.SaveSM
|
||||
|
@ -418,6 +429,6 @@ GP.CodeEnd .BS $BED0-*
|
|||
*--------------------------------------
|
||||
GP.End .EQ *
|
||||
MAN
|
||||
SAVE USR/SRC/SYS/KERNEL.S.GP
|
||||
LOAD USR/SRC/SYS/KERNEL.S
|
||||
SAVE usr/src/sys/kernel.s.gp
|
||||
LOAD usr/src/sys/kernel.s
|
||||
ASM
|
||||
|
|
|
@ -121,7 +121,7 @@ Kernel.Init3 sta SETALTZP
|
|||
sta A2osX.KVER+1
|
||||
|
||||
sta SETALTCHAR
|
||||
sta CLRMIXED
|
||||
sta SETMIXED
|
||||
sta CLRHIRES
|
||||
sta SET80DISP
|
||||
sta SET80STORE
|
||||
|
@ -153,6 +153,9 @@ Kernel.Init3 sta SETALTZP
|
|||
|
||||
jsr SysScrInit
|
||||
bcs *
|
||||
|
||||
sta CLRMIXED
|
||||
|
||||
>PUSHWI DEV.CONSOLE
|
||||
>PUSHBI O.RDWR
|
||||
>PUSHBI S.FI.T.TXT
|
||||
|
@ -297,7 +300,7 @@ MemMgrInit >LDYAI Mem.MHiMem
|
|||
|
||||
ldx #K.NOD.MAX*2-1
|
||||
|
||||
.2 stz Nod.Table.hPath,x
|
||||
.2 stz Nod.Table.hName,x
|
||||
dex
|
||||
bpl .2
|
||||
|
||||
|
@ -307,12 +310,6 @@ MemMgrInit >LDYAI Mem.MHiMem
|
|||
dex
|
||||
bpl .3
|
||||
|
||||
ldx #K.OF.MAX*2-1
|
||||
|
||||
.4 stz OF.Table.hPath,x
|
||||
dex
|
||||
bpl .4
|
||||
|
||||
ldx #K.EVT.MAX*S.EVT-1
|
||||
|
||||
.5 stz Evt.Table,x
|
||||
|
@ -683,6 +680,7 @@ DevMgrInit >LDYAI MSG.DEV
|
|||
|
||||
sta ZPPtr1+1
|
||||
stz ZPPtr1 Cn00
|
||||
|
||||
plp
|
||||
lda #0
|
||||
adc #1 Make DevID 1 or 2
|
||||
|
@ -1121,14 +1119,14 @@ PwdMgrInit >LDYAI MSG.PWD
|
|||
>SYSCALL2 puts
|
||||
|
||||
>LDYAI PWD.ETCPASSWD
|
||||
jsr PwdMgrInit.Load
|
||||
>SYSCALL2 LoadStkObj
|
||||
bcs .1
|
||||
|
||||
stx PWD.hUsrDB
|
||||
>STYA PWD.UsrDBSize
|
||||
|
||||
>LDYAI PWD.ETCGROUP
|
||||
jsr PwdMgrInit.Load
|
||||
>SYSCALL2 LoadStkObj
|
||||
bcs .1
|
||||
|
||||
stx PWD.hGrpDB
|
||||
|
@ -1138,13 +1136,6 @@ PwdMgrInit >LDYAI MSG.PWD
|
|||
* clc
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
PwdMgrInit.Load >PUSHYA
|
||||
>PUSHBI O.RDONLY
|
||||
>PUSHBI S.FI.T.TXT
|
||||
>PUSHWZ Aux type
|
||||
>SYSCALL2 LoadStkObj
|
||||
rts
|
||||
*--------------------------------------
|
||||
* Modified CHARGET/CHARGOT for ROM CALL
|
||||
* CHRGET .EQ $B1 - C8
|
||||
*--------------------------------------
|
||||
|
|
|
@ -136,6 +136,6 @@ IRQ.JMP jmp $FFFF SELF MODIFIED Not handled, pass to ProDOS
|
|||
IRQ.8 rti
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE USR/SRC/SYS/KERNEL.S.IRQ
|
||||
LOAD USR/SRC/SYS/KERNEL.S
|
||||
SAVE usr/src/sys/kernel.s.irq
|
||||
LOAD usr/src/sys/kernel.s
|
||||
ASM
|
||||
|
|
|
@ -43,15 +43,15 @@ K.SYSCALL .DA K.ChTyp $00 : STAT
|
|||
|
||||
.DA K.Remove $40
|
||||
.DA K.Rename
|
||||
.DA 0
|
||||
.DA 0
|
||||
.DA K.PrintF
|
||||
.DA K.FPrintF
|
||||
.DA K.SPrintF
|
||||
.DA K.ScanF
|
||||
|
||||
.DA K.FScanF $50
|
||||
.DA K.FScanF
|
||||
.DA K.SScanF
|
||||
|
||||
.DA 0 $50
|
||||
.DA 0
|
||||
.DA 0
|
||||
.DA 0
|
||||
.DA 0
|
||||
|
|
|
@ -2,6 +2,6 @@ NEW
|
|||
AUTO 3,1
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE USR/SRC/SYS/KERNEL.S.MATH
|
||||
LOAD USR/SRC/SYS/KERNEL.S
|
||||
SAVE usr/src/sys/kernel.s.math
|
||||
LOAD usr/src/sys/kernel.s
|
||||
ASM
|
||||
|
|
|
@ -550,6 +550,6 @@ MATH32.ACC32NEG.RTS
|
|||
rts
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE USR/SRC/SYS/KERNEL.S.MATH32
|
||||
LOAD USR/SRC/SYS/KERNEL.S
|
||||
SAVE usr/src/sys/kernel.s.math32
|
||||
LOAD usr/src/sys/kernel.s
|
||||
ASM
|
||||
|
|
|
@ -58,6 +58,6 @@ K.MD5Finalize >PULLW FORPNT
|
|||
jmp K.SYSCALL.JMPX
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE USR/SRC/SYS/KERNEL.S.MD5
|
||||
LOAD USR/SRC/SYS/KERNEL.S
|
||||
SAVE usr/src/sys/kernel.s.md5
|
||||
LOAD usr/src/sys/kernel.s
|
||||
ASM
|
||||
|
|
|
@ -487,6 +487,6 @@ MD5.i .BS 1
|
|||
MD5.BUFFER64 .BS 64
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE USR/SRC/SYS/KERNEL.S.MD5X
|
||||
LOAD USR/SRC/SYS/KERNEL.S
|
||||
SAVE usr/src/sys/kernel.s.md5x
|
||||
LOAD usr/src/sys/kernel.s
|
||||
ASM
|
||||
|
|
|
@ -51,11 +51,11 @@ K.Realloc >PULLW MEM.NewSize
|
|||
|
||||
lda .7+1
|
||||
sta SETREADAUX
|
||||
jsr MEM.MoveSetupA1A2 Setup AUX base & End Ptrs
|
||||
jsr MEM.SetA1A2 Setup AUX base & End Ptrs
|
||||
sta CLRREADAUX
|
||||
|
||||
clc Aux To Main
|
||||
jsr AuxMove
|
||||
jsr XMov
|
||||
|
||||
.7 lda #$ff SELF MODIFIED
|
||||
>SYSCALL2 FreeStkObj
|
||||
|
@ -589,11 +589,11 @@ MEM.MoveToMain sec
|
|||
|
||||
lda .2+1 Get AUX mem Ptr
|
||||
sta SETREADAUX
|
||||
jsr MEM.MoveSetupA1A2 Setup AUX base & End Ptrs
|
||||
jsr MEM.SetA1A2 Setup AUX base & End Ptrs
|
||||
sta CLRREADAUX
|
||||
|
||||
clc Aux To Main
|
||||
jsr AuxMove
|
||||
jsr XMov
|
||||
|
||||
.1 lda #$ff SELF MODIFIED
|
||||
bpl .8 Copy : dont discard AUX mem
|
||||
|
@ -615,10 +615,10 @@ MEM.MoveToAux stx .1+1 Save MAIN hMem
|
|||
>STYA A4L Save AUX Ptr
|
||||
|
||||
lda .1+1
|
||||
jsr MEM.MoveSetupA1A2 Setup MAIN base & End Ptrs
|
||||
jsr MEM.SetA1A2 Setup MAIN base & End Ptrs
|
||||
|
||||
sec Main To Aux
|
||||
jsr AuxMove
|
||||
jsr XMov
|
||||
|
||||
.1 lda #$ff SELF MODIFIED
|
||||
jsr K.FreeMem release MAIN memory
|
||||
|
@ -628,8 +628,7 @@ MEM.MoveToAux stx .1+1 Save MAIN hMem
|
|||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
MEM.MoveSetupA1A2
|
||||
jsr K.GetMemPtr
|
||||
MEM.SetA1A2 jsr K.GetMemPtr
|
||||
|
||||
>STYA A1L Start Address
|
||||
pha
|
||||
|
@ -678,6 +677,6 @@ MEM.GetKrnlBuf pha
|
|||
rts
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE USR/SRC/SYS/KERNEL.S.MEM
|
||||
LOAD USR/SRC/SYS/KERNEL.S
|
||||
SAVE usr/src/sys/kernel.s.mem
|
||||
LOAD usr/src/sys/kernel.s
|
||||
ASM
|
||||
|
|
|
@ -94,21 +94,9 @@ PFT.CheckNode2 ldy #2
|
|||
PFT.CheckNodeA stx .80+1 Save SYSCALL #
|
||||
sta .81+1 Save hFILE
|
||||
|
||||
tax
|
||||
lda OF.Table.hFD-1,x
|
||||
beq .9
|
||||
jsr DEV.GetPFD
|
||||
bcs .99
|
||||
|
||||
sta IO.hFD
|
||||
ldy OF.Table.hPath-1,x if 0, its a hDEV
|
||||
bne .10
|
||||
|
||||
tax
|
||||
ldy Dev.Table-1,x
|
||||
lda Dev.Table,x
|
||||
bra .11
|
||||
|
||||
.10 jsr K.GetMemPtr
|
||||
.11 >STYA pFD
|
||||
ldy #S.FD.HANDLER
|
||||
lda (pFD),y
|
||||
beq .8 Handler is 0, back to kernel....
|
||||
|
@ -133,13 +121,10 @@ PFT.CheckNodeA stx .80+1 Save SYSCALL #
|
|||
.80 ldx #$ff SELF MODIFIED
|
||||
.81 lda #$ff SELF MODIFIED
|
||||
clc
|
||||
rts
|
||||
|
||||
.9 lda #E.INVH
|
||||
sec
|
||||
rts
|
||||
.99 rts
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE USR/SRC/SYS/KERNEL.S.PFT
|
||||
LOAD USR/SRC/SYS/KERNEL.S
|
||||
SAVE usr/src/sys/kernel.s.pft
|
||||
LOAD usr/src/sys/kernel.s
|
||||
ASM
|
||||
|
|
|
@ -1,39 +1,38 @@
|
|||
NEW
|
||||
AUTO 3,1
|
||||
*--------------------------------------
|
||||
IO.PIPE.SRCBUF .EQ ZPDRV
|
||||
IO.PIPE.DSTBUF .EQ ZPDRV+2
|
||||
IO.PIPE.CNT .EQ ZPDRV+4
|
||||
IO.PIPE.BASEH .EQ ZPDRV+6
|
||||
IO.PIPE.BUFH .EQ ZPDRV+7
|
||||
IO.PIPE.SIZEH .EQ ZPDRV+8
|
||||
PIPE.SRCBUF .EQ ZPDRV
|
||||
PIPE.DSTBUF .EQ ZPDRV+2
|
||||
PIPE.CNT .EQ ZPDRV+4
|
||||
PIPE.BASEH .EQ ZPDRV+6
|
||||
PIPE.BUFH .EQ ZPDRV+7
|
||||
PIPE.SIZEH .EQ ZPDRV+8
|
||||
*--------------------------------------
|
||||
IO.OPEN.PIPE ldy #S.FD.PIPE.S
|
||||
lda (pFD),y
|
||||
inc
|
||||
sta (pFD),y
|
||||
lda IO.hFD
|
||||
|
||||
lda IO.hDevNod
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
IO.CLOSE.PIPE ldy #S.FD.PIPE.S
|
||||
lda (pFD),y
|
||||
bmi .1 remote PS closed its end
|
||||
|
||||
lda #$80
|
||||
sta (pFD),y
|
||||
clc
|
||||
rts
|
||||
|
||||
.1 jsr IO.CLOSE.NOD
|
||||
|
||||
ldy #S.FD.PIPE.hMem
|
||||
.1 ldy #S.FD.PIPE.hMem
|
||||
lda (pFD),y
|
||||
beq .2
|
||||
|
||||
>SYSCALL2 FreeStkObj
|
||||
|
||||
.2 lda IO.hFD
|
||||
jmp K.FreeMem
|
||||
.2 jmp DEV.Destroy
|
||||
*--------------------------------------
|
||||
* (pStack)+2 count
|
||||
* (pStack)+0 buf
|
||||
|
@ -55,20 +54,20 @@ IO.WRITE.PIPE ldy #S.FD.PIPE.S
|
|||
sbc (pStack),y
|
||||
bcc IO.READ.PIPE.NODATA not enough room in PIPE
|
||||
|
||||
>PULLW IO.PIPE.SRCBUF
|
||||
>PULLW PIPE.SRCBUF
|
||||
|
||||
ldy #S.FD.PIPE.Head+1
|
||||
jsr IO.PIPE.GET.BUF
|
||||
jsr PIPE.GET.BUF
|
||||
|
||||
>STYA IO.PIPE.DSTBUF
|
||||
>STYA PIPE.DSTBUF
|
||||
|
||||
>PULLA get cnt lo
|
||||
sta IO.PIPE.CNT
|
||||
sta PIPE.CNT
|
||||
eor #$ff
|
||||
tax
|
||||
|
||||
>PULLA get cnt hi
|
||||
sta IO.PIPE.CNT+1
|
||||
sta PIPE.CNT+1
|
||||
eor #$ff
|
||||
pha
|
||||
ldy #S.FD.PIPE.Head
|
||||
|
@ -86,28 +85,28 @@ IO.WRITE.PIPE ldy #S.FD.PIPE.S
|
|||
|
||||
pha
|
||||
|
||||
.2 lda (IO.PIPE.SRCBUF)
|
||||
sta (IO.PIPE.DSTBUF),y
|
||||
.2 lda (PIPE.SRCBUF)
|
||||
sta (PIPE.DSTBUF),y
|
||||
|
||||
inc IO.PIPE.SRCBUF
|
||||
inc PIPE.SRCBUF
|
||||
bne .4
|
||||
|
||||
inc IO.PIPE.SRCBUF+1
|
||||
inc PIPE.SRCBUF+1
|
||||
.4 iny
|
||||
bne .1
|
||||
|
||||
lda IO.PIPE.BUFH
|
||||
lda PIPE.BUFH
|
||||
inc
|
||||
cmp IO.PIPE.SIZEH
|
||||
cmp PIPE.SIZEH
|
||||
beq .6
|
||||
|
||||
sta IO.PIPE.BUFH
|
||||
inc IO.PIPE.DSTBUF+1
|
||||
sta PIPE.BUFH
|
||||
inc PIPE.DSTBUF+1
|
||||
bra .1
|
||||
|
||||
.6 stz IO.PIPE.BUFH
|
||||
lda IO.PIPE.BASEH Pipe Buffer Base
|
||||
sta IO.PIPE.DSTBUF+1
|
||||
.6 stz PIPE.BUFH
|
||||
lda PIPE.BASEH Pipe Buffer Base
|
||||
sta PIPE.DSTBUF+1
|
||||
bra .1
|
||||
|
||||
.8 sta CLRWRITEAUX
|
||||
|
@ -116,14 +115,14 @@ IO.WRITE.PIPE ldy #S.FD.PIPE.S
|
|||
ldy #S.FD.PIPE.Head
|
||||
sta (pFD),y
|
||||
iny
|
||||
lda IO.PIPE.BUFH
|
||||
lda PIPE.BUFH
|
||||
sta (pFD),y
|
||||
ldy #S.FD.PIPE.Free
|
||||
jsr IO.PIPE.SUB.CNT
|
||||
jsr PIPE.SUB.CNT
|
||||
|
||||
iny #S.FD.PIPE.Used
|
||||
|
||||
jsr IO.PIPE.ADD.CNT
|
||||
jsr PIPE.ADD.CNT
|
||||
jmp IO.READ.PIPE.EXIT
|
||||
|
||||
IO.READ.PIPE.EOF
|
||||
|
@ -145,12 +144,12 @@ IO.READ.PIPE ldy #S.FD.PIPE.Used+1
|
|||
bmi IO.READ.PIPE.EOF Remote PS closed the Pipe
|
||||
bpl IO.READ.PIPE.NODATA
|
||||
|
||||
.10 >PULLW IO.PIPE.DSTBUF get dest buf
|
||||
.10 >PULLW PIPE.DSTBUF get dest buf
|
||||
|
||||
ldy #S.FD.PIPE.Tail+1
|
||||
jsr IO.PIPE.GET.BUF
|
||||
jsr PIPE.GET.BUF
|
||||
|
||||
>STYA IO.PIPE.SRCBUF
|
||||
>STYA PIPE.SRCBUF
|
||||
|
||||
>PULLA get cnt lo
|
||||
tax
|
||||
|
@ -170,8 +169,8 @@ IO.READ.PIPE ldy #S.FD.PIPE.Used+1
|
|||
iny
|
||||
lda (pFD),y X,A = Used
|
||||
|
||||
.12 stx IO.PIPE.CNT
|
||||
sta IO.PIPE.CNT+1
|
||||
.12 stx PIPE.CNT
|
||||
sta PIPE.CNT+1
|
||||
|
||||
eor #$ff
|
||||
pha
|
||||
|
@ -193,28 +192,28 @@ IO.READ.PIPE ldy #S.FD.PIPE.Used+1
|
|||
|
||||
pha
|
||||
|
||||
.2 lda (IO.PIPE.SRCBUF),y
|
||||
sta (IO.PIPE.DSTBUF)
|
||||
.2 lda (PIPE.SRCBUF),y
|
||||
sta (PIPE.DSTBUF)
|
||||
|
||||
inc IO.PIPE.DSTBUF
|
||||
inc PIPE.DSTBUF
|
||||
bne .4
|
||||
|
||||
inc IO.PIPE.DSTBUF+1
|
||||
inc PIPE.DSTBUF+1
|
||||
.4 iny
|
||||
bne .1
|
||||
|
||||
lda IO.PIPE.BUFH
|
||||
lda PIPE.BUFH
|
||||
inc
|
||||
cmp IO.PIPE.SIZEH
|
||||
cmp PIPE.SIZEH
|
||||
beq .6
|
||||
|
||||
sta IO.PIPE.BUFH
|
||||
inc IO.PIPE.SRCBUF+1
|
||||
sta PIPE.BUFH
|
||||
inc PIPE.SRCBUF+1
|
||||
bra .1
|
||||
|
||||
.6 stz IO.PIPE.BUFH
|
||||
lda IO.PIPE.BASEH
|
||||
sta IO.PIPE.SRCBUF+1 Restore Pipe Buf base
|
||||
.6 stz PIPE.BUFH
|
||||
lda PIPE.BASEH
|
||||
sta PIPE.SRCBUF+1 Restore Pipe Buf base
|
||||
bra .1
|
||||
|
||||
.8 sta CLRREADAUX
|
||||
|
@ -223,54 +222,57 @@ IO.READ.PIPE ldy #S.FD.PIPE.Used+1
|
|||
ldy #S.FD.PIPE.Tail
|
||||
sta (pFD),y
|
||||
iny
|
||||
lda IO.PIPE.BUFH
|
||||
lda PIPE.BUFH
|
||||
sta (pFD),y
|
||||
ldy #S.FD.PIPE.Free
|
||||
jsr IO.PIPE.ADD.CNT
|
||||
jsr PIPE.ADD.CNT
|
||||
|
||||
iny #S.FD.PIPE.Used
|
||||
|
||||
jsr IO.PIPE.SUB.CNT
|
||||
jsr PIPE.SUB.CNT
|
||||
IO.READ.PIPE.EXIT
|
||||
>LDYA IO.PIPE.CNT Y,A = bytes written
|
||||
>LDYA PIPE.CNT Y,A = bytes written
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
IO.PIPE.GET.BUF lda (pFD),y
|
||||
sta IO.PIPE.BUFH
|
||||
PIPE.GET.BUF lda (pFD),y
|
||||
sta PIPE.BUFH
|
||||
|
||||
ldy #S.FD.PIPE.Size+1
|
||||
lda (pFD),y
|
||||
sta IO.PIPE.SIZEH
|
||||
sta PIPE.SIZEH
|
||||
|
||||
ldy #S.FD.PIPE.hMem
|
||||
lda (pFD),y
|
||||
|
||||
>SYSCALL2 GetStkObjPtr
|
||||
|
||||
sta IO.PIPE.BASEH Pipe Buffer Base
|
||||
sta PIPE.BASEH Pipe Buffer Base
|
||||
* clc
|
||||
adc IO.PIPE.BUFH
|
||||
adc PIPE.BUFH
|
||||
rts
|
||||
*--------------------------------------
|
||||
IO.PIPE.ADD.CNT clc
|
||||
PIPE.ADD.CNT clc
|
||||
lda (pFD),y
|
||||
adc IO.PIPE.CNT
|
||||
adc PIPE.CNT
|
||||
sta (pFD),y
|
||||
|
||||
iny
|
||||
|
||||
lda (pFD),y
|
||||
adc IO.PIPE.CNT+1
|
||||
adc PIPE.CNT+1
|
||||
sta (pFD),y
|
||||
rts
|
||||
*--------------------------------------
|
||||
IO.PIPE.SUB.CNT sec
|
||||
PIPE.SUB.CNT sec
|
||||
lda (pFD),y
|
||||
sbc IO.PIPE.CNT
|
||||
sbc PIPE.CNT
|
||||
sta (pFD),y
|
||||
|
||||
iny
|
||||
|
||||
lda (pFD),y
|
||||
sbc IO.PIPE.CNT+1
|
||||
sbc PIPE.CNT+1
|
||||
sta (pFD),y
|
||||
rts
|
||||
*--------------------------------------
|
||||
|
@ -280,15 +282,16 @@ IO.EOF.PIPE clc
|
|||
iny
|
||||
ora (pFD),y
|
||||
beq .8
|
||||
|
||||
lda #0
|
||||
* clc
|
||||
rts
|
||||
|
||||
.8 lda #$ff
|
||||
.8 dec lda #$ff
|
||||
* clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE USR/SRC/SYS/KERNEL.S.PIPE
|
||||
LOAD USR/SRC/SYS/KERNEL.S
|
||||
SAVE usr/src/sys/kernel.s.pipe
|
||||
LOAD usr/src/sys/kernel.s
|
||||
ASM
|
||||
|
|
|
@ -50,6 +50,7 @@ PS.Exec jsr PS.CreateChild A=PID,Child S.PS at PS.NewPSPtr,PS.Load.hMem
|
|||
sta .8+1
|
||||
|
||||
stz K.IOBuf If !=0 after PS.Load, it's a script
|
||||
|
||||
jsr PS.Load
|
||||
bcs .90
|
||||
|
||||
|
@ -320,7 +321,7 @@ PS.Load ldy #$ff
|
|||
bne .1
|
||||
|
||||
>LDYA PS.ArgV found /, some path specified, no search
|
||||
jsr FS.STAT.YA
|
||||
jsr PS.STAT.YA
|
||||
bcc .6 REAL path in K.Buf256
|
||||
|
||||
.99 rts
|
||||
|
@ -404,7 +405,7 @@ PS.Load.SCRIPT jsr PS.Buf2IO
|
|||
sta K.Buf256-1,x K.Buf256 = "${ROOT}BIN/SHELL\0"
|
||||
|
||||
.5 >LDYAI K.Buf256
|
||||
jsr FS.STAT.YA
|
||||
jsr PS.STAT.YA
|
||||
bcs PS.Load.RTS
|
||||
|
||||
lda K.S.STAT+S.STAT.P.TYPE
|
||||
|
@ -745,19 +746,21 @@ K.Kill.2 ldy #S.PS.hSession
|
|||
* # LoadTxtFile
|
||||
* Load TXT a file in memory (with ending 0)
|
||||
* ## C
|
||||
* `int loadtxtfile ( const char * filename, short int flags, short int ftype, int auxtype );`
|
||||
* `int loadtxtfile ( const char * filename );`
|
||||
* ## ASM
|
||||
* **In:**
|
||||
* `>PUSHW filename`
|
||||
* `>PUSHB flags`
|
||||
* `>PUSHB ftype`
|
||||
* `>PUSHW auxtype`
|
||||
* `>LDYA filename`
|
||||
* `>SYSCALL loadtxtfile`
|
||||
* ## RETURN VALUE
|
||||
* Y,A = File Length (without ending 0)
|
||||
* X = hMem of Loaded File
|
||||
*\--------------------------------------
|
||||
K.LoadTxtFile sec
|
||||
K.LoadTxtFile >PUSHYA
|
||||
>PUSHBI O.RDONLY
|
||||
>PUSHBI S.FI.T.TXT
|
||||
>PUSHWZ Aux type
|
||||
|
||||
sec
|
||||
.HS 90 BCC
|
||||
*/--------------------------------------
|
||||
* # LoadFile
|
||||
|
@ -783,8 +786,9 @@ K.LoadFile clc
|
|||
bcs .99
|
||||
|
||||
sta PS.hFILE
|
||||
|
||||
jsr FS.FSTAT.A
|
||||
>PUSHA
|
||||
>PUSHWI K.S.Stat
|
||||
>SYSCALL2 FStat
|
||||
bcs .98
|
||||
|
||||
lda K.S.Stat+S.STAT.SIZE+3
|
||||
|
@ -795,8 +799,10 @@ K.LoadFile clc
|
|||
|
||||
bit PS.bTXT Add 1 to buffer size for ending 0
|
||||
bpl .1
|
||||
|
||||
iny
|
||||
bne .1
|
||||
|
||||
inc
|
||||
bne .1
|
||||
|
||||
|
@ -958,7 +964,7 @@ PS.Find.4 lda $ffff,y Self Modified, Append Filename...
|
|||
bra PS.Find.4
|
||||
|
||||
PS.Find.5 >LDYAI K.Buf256
|
||||
jsr FS.STAT.YA
|
||||
jsr PS.STAT.YA
|
||||
bcs PS.Find.1 Failed...retry next path...
|
||||
|
||||
lda K.S.STAT+S.STAT.P.TYPE
|
||||
|
@ -987,6 +993,11 @@ PS.Buf2IO ldx #$ff
|
|||
|
||||
rts
|
||||
*--------------------------------------
|
||||
PS.STAT.YA >PUSHYA
|
||||
>PUSHWI K.S.STAT
|
||||
>SYSCALL2 Stat
|
||||
rts
|
||||
*--------------------------------------
|
||||
PS.SHUTDOWN .AZ "shutdown"
|
||||
*PS.T .AZ " -T 3"
|
||||
PS.VARS .DA .1
|
||||
|
@ -1028,6 +1039,6 @@ K.GetMemStat >STYA ZPPtr1
|
|||
rts
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE USR/SRC/SYS/KERNEL.S.PS
|
||||
LOAD USR/SRC/SYS/KERNEL.S
|
||||
SAVE usr/src/sys/kernel.s.ps
|
||||
LOAD usr/src/sys/kernel.s
|
||||
ASM
|
||||
|
|
|
@ -833,6 +833,6 @@ PWDX.GROUP .AS "root:0"
|
|||
PWDX.GROUP.Size .EQ *-PWDX.GROUP
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE USR/SRC/SYS/KERNEL.S.PWDX
|
||||
LOAD USR/SRC/SYS/KERNEL.S
|
||||
SAVE usr/src/sys/kernel.s.pwdx
|
||||
LOAD usr/src/sys/kernel.s
|
||||
ASM
|
||||
|
|
|
@ -151,6 +151,6 @@ SHARED.GetScrnDevX
|
|||
rts
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE USR/SRC/SYS/KERNEL.S.SHARED
|
||||
LOAD USR/SRC/SYS/KERNEL.S
|
||||
SAVE usr/src/sys/kernel.s.shared
|
||||
LOAD usr/src/sys/kernel.s
|
||||
ASM
|
||||
|
|
|
@ -87,6 +87,6 @@ K.SListFree >PULLA
|
|||
K.SListNew jmp K.SYSCALL.JMPX
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE USR/SRC/SYS/KERNEL.S.SLIST
|
||||
LOAD USR/SRC/SYS/KERNEL.S
|
||||
SAVE usr/src/sys/kernel.s.slist
|
||||
LOAD usr/src/sys/kernel.s
|
||||
ASM
|
||||
|
|
|
@ -504,6 +504,6 @@ SLIST.ToNextBlock.RTS
|
|||
rts
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE USR/SRC/SYS/KERNEL.S.SLISTX
|
||||
LOAD USR/SRC/SYS/KERNEL.S
|
||||
SAVE usr/src/sys/kernel.s.slistx
|
||||
LOAD usr/src/sys/kernel.s
|
||||
ASM
|
||||
|
|
|
@ -93,9 +93,29 @@ K.FStat jsr PFT.CheckNode2
|
|||
|
||||
>PULLW K.Stat.Store.2+1
|
||||
|
||||
jsr FS.FSTAT
|
||||
>PULLA
|
||||
tax
|
||||
lda Nod.Table.hName-2,x get path
|
||||
jsr K.GetMemPtr
|
||||
jsr PFT.YAToMLIPATH
|
||||
|
||||
jsr FS.Stat.203
|
||||
bcs K.Stat.Store.RTS
|
||||
|
||||
ldy #S.FD.REG.REF
|
||||
lda (pFD),y
|
||||
sta K.MLI.PARAMS+1
|
||||
|
||||
>MLICALL MLIGETEOF
|
||||
bcs K.Stat.Store.RTS
|
||||
|
||||
ldx #2
|
||||
|
||||
.1 lda K.MLI.PARAMS+2,x
|
||||
sta K.S.STAT+S.STAT.SIZE,x
|
||||
dex
|
||||
bpl .1
|
||||
|
||||
K.Stat.Store ldy #S.STAT-1
|
||||
|
||||
K.Stat.Store.1 lda K.S.STAT,y
|
||||
|
@ -174,10 +194,10 @@ K.MKFIFO jsr STAT.PullPathAndMode
|
|||
bcs K.Stat.Store.RTS
|
||||
|
||||
ldy #0
|
||||
.1 lda DEV.FIFO,y
|
||||
.1 lda STAT.FIFO,y
|
||||
sta (ZPPtr1),y fill pathname buffer
|
||||
iny
|
||||
cpy #9
|
||||
cpy #4
|
||||
bne .1
|
||||
|
||||
lda IO.hFD
|
||||
|
@ -211,9 +231,10 @@ K.MkNod >PULLB IO.hFD
|
|||
|
||||
K.MkNod.I ldx #2
|
||||
|
||||
.1 lda Nod.Table.hPath-2,x
|
||||
.1 lda Nod.Table.hFD-2,x empty slot ?
|
||||
beq .2
|
||||
|
||||
inx
|
||||
inx
|
||||
cpx #K.Nod.MAX+2
|
||||
bne .1
|
||||
|
@ -222,18 +243,21 @@ K.MkNod.I ldx #2
|
|||
* sec
|
||||
rts
|
||||
|
||||
.2 stx .3+1 Store hFILE
|
||||
.2 stx IO.hDevNod
|
||||
|
||||
>LDYA ZPPtr1
|
||||
>SYSCALL2 StrDup
|
||||
bcs .9
|
||||
|
||||
txa
|
||||
|
||||
.3 ldx #$ff SELF MODIFIED
|
||||
sta Nod.Table.hPath-2,x
|
||||
lda IO.hFD
|
||||
sta Nod.Table.hFD-2,x
|
||||
txa hNODE
|
||||
.3 ldx IO.hDevNod
|
||||
sta Nod.Table.hName-2,x store path
|
||||
|
||||
.4 lda IO.hFD
|
||||
sta Nod.Table.hFD-2,x store hFD
|
||||
|
||||
txa hDevNod
|
||||
clc
|
||||
.9 rts
|
||||
*/--------------------------------------
|
||||
|
@ -255,7 +279,7 @@ K.Pipe sta .1+1 SIZE HI
|
|||
stx .8+1 save PIPE buffer
|
||||
|
||||
ldx #2
|
||||
jsr IO.MkFD
|
||||
jsr DEV.MkFD
|
||||
bcs .9
|
||||
|
||||
.1 lda #$ff SELF MODIFIED
|
||||
|
@ -288,6 +312,8 @@ STAT.PullPathAndMode
|
|||
>PULLW ZPPtr1 pathname
|
||||
rts
|
||||
*--------------------------------------
|
||||
STAT.FIFO .AS "fifo"
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE usr/src/sys/kernel.s.stat
|
||||
LOAD usr/src/sys/kernel.s
|
||||
|
|
|
@ -210,17 +210,19 @@ K.FGetS jsr PFT.CheckNodeA
|
|||
.1 jsr STDIO.Get.1
|
||||
bcc .2
|
||||
|
||||
cmp #MLI.E.EOF
|
||||
beq .9
|
||||
|
||||
cmp #E.NODATA
|
||||
sec
|
||||
bne .9 IO error
|
||||
|
||||
.11 lda #0 BLOCKING
|
||||
lda #0 BLOCKING
|
||||
rts
|
||||
|
||||
.2 lda K.IOBuf
|
||||
cmp #C.LF Discard any leading LF from a previous CR/LF
|
||||
* beq .8 returns as empty string
|
||||
beq .11 CS -> NODATA -> BLOCKING
|
||||
cmp #C.LF Discard any leading LF from a prev CR/LF
|
||||
beq .1
|
||||
|
||||
cmp #C.CR
|
||||
beq .8 empty string
|
||||
|
@ -234,7 +236,7 @@ K.FGetS jsr PFT.CheckNodeA
|
|||
lda ZPPtr1+1
|
||||
eor #$ff
|
||||
sta ZPPtr1+1
|
||||
|
||||
*--------------------------------------
|
||||
.3 inc ZPPtr1
|
||||
bne .4
|
||||
inc ZPPtr1+1
|
||||
|
@ -385,17 +387,7 @@ K.FOpen jsr PFT.CheckPath4
|
|||
inc pStack discard filename
|
||||
inc pStack
|
||||
|
||||
jsr UNISTD.Open
|
||||
bcs .99
|
||||
|
||||
jsr STDIO.NewHFile
|
||||
bcc .99
|
||||
|
||||
pha Save Error Code
|
||||
lda IO.hFD
|
||||
jsr K.Close
|
||||
pla
|
||||
sec
|
||||
jmp UNISTD.Open
|
||||
|
||||
.9 >POP 6
|
||||
.99 rts
|
||||
|
@ -411,21 +403,9 @@ K.FOpen jsr PFT.CheckPath4
|
|||
* ## RETURN VALUE
|
||||
*\--------------------------------------
|
||||
K.FClose jsr PFT.CheckNodeA
|
||||
bcs K.FClose.RTS
|
||||
bcs K.FRead.RTS
|
||||
|
||||
sta .1+1 store hFile
|
||||
|
||||
jsr UNISTD.Close
|
||||
bcs K.FClose.RTS
|
||||
|
||||
.1 ldx #$ff SELF MODIFIED
|
||||
stz OF.Table.hFD-1,x
|
||||
|
||||
lda OF.Table.hPath-1,x
|
||||
beq K.FClose.RTS special files have no path
|
||||
|
||||
stz OF.Table.hPath-1,x
|
||||
jmp K.FreeMem discard filename
|
||||
jmp UNISTD.Close
|
||||
*/--------------------------------------
|
||||
* # FRead (BLOCKING)
|
||||
* Read bytes from file
|
||||
|
@ -446,7 +426,7 @@ K.FRead jsr PFT.CheckNodeA
|
|||
jsr UNISTD.Read
|
||||
bcs K.FWrite.9
|
||||
|
||||
K.FClose.RTS rts
|
||||
K.FRead.RTS rts
|
||||
*/--------------------------------------
|
||||
* # FWrite (BLOCKING)
|
||||
* Write bytes to file
|
||||
|
@ -682,48 +662,6 @@ K.Rename jsr PFT.CheckPath2
|
|||
|
||||
.9 >RET 4
|
||||
*--------------------------------------
|
||||
* K.Buf256 = filepath
|
||||
* X = hFD
|
||||
*--------------------------------------
|
||||
STDIO.NewHFile ldx #1
|
||||
|
||||
.1 lda OF.Table.hFD-1,x
|
||||
beq .2
|
||||
|
||||
inx
|
||||
cpx #K.OF.MAX+1
|
||||
bne .1
|
||||
|
||||
lda #E.OOH
|
||||
* sec
|
||||
rts
|
||||
|
||||
.2 stx .4+1
|
||||
|
||||
ldx #0
|
||||
|
||||
lda (pFD)
|
||||
cmp #S.FD.T.CDEV
|
||||
beq .3
|
||||
|
||||
cmp #S.FD.T.BDEV
|
||||
beq .3 No hPath for DEV
|
||||
|
||||
>LDYAI K.buf256
|
||||
>SYSCALL2 StrDup
|
||||
bcs .9
|
||||
|
||||
.3 txa
|
||||
|
||||
.4 ldx #$ff SELF MODIFIED
|
||||
sta OF.Table.hPath-1,x
|
||||
lda IO.hFD
|
||||
sta OF.Table.hFD-1,x
|
||||
txa hFILE
|
||||
|
||||
clc
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE usr/src/sys/kernel.s.stdio
|
||||
LOAD usr/src/sys/kernel.s
|
||||
|
|
|
@ -728,6 +728,6 @@ STDIO.Exit php
|
|||
rts
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE USR/SRC/SYS/KERNEL.S.STDIO2
|
||||
LOAD USR/SRC/SYS/KERNEL.S
|
||||
SAVE usr/src/sys/kernel.s.stdio2
|
||||
LOAD usr/src/sys/kernel.s
|
||||
ASM
|
||||
|
|
|
@ -577,6 +577,6 @@ ENV.GetP3LenY ldy #$ff
|
|||
rts
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE USR/SRC/SYS/KERNEL.S.STDLIB
|
||||
LOAD USR/SRC/SYS/KERNEL.S
|
||||
SAVE usr/src/sys/kernel.s.stdlib
|
||||
LOAD usr/src/sys/kernel.s
|
||||
ASM
|
||||
|
|
|
@ -249,6 +249,6 @@ SHARED.SPtr1PPtr2
|
|||
rts
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE USR/SRC/SYS/KERNEL.S.STRING
|
||||
LOAD USR/SRC/SYS/KERNEL.S
|
||||
SAVE usr/src/sys/kernel.s.string
|
||||
LOAD usr/src/sys/kernel.s
|
||||
ASM
|
||||
|
|
|
@ -69,6 +69,6 @@ STRV.Ptr1Ptr2cpy
|
|||
rts
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE USR/SRC/SYS/KERNEL.S.STRV
|
||||
LOAD USR/SRC/SYS/KERNEL.S
|
||||
SAVE usr/src/sys/kernel.s.strv
|
||||
LOAD usr/src/sys/kernel.s
|
||||
ASM
|
||||
|
|
|
@ -150,6 +150,6 @@ STRVX.NStrPtr1 ldy #$ff
|
|||
rts
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE USR/SRC/SYS/KERNEL.S.STRVX
|
||||
LOAD USR/SRC/SYS/KERNEL.S
|
||||
SAVE usr/src/sys/kernel.s.strvx
|
||||
LOAD usr/src/sys/kernel.s
|
||||
ASM
|
||||
|
|
|
@ -24,7 +24,6 @@ TERM.STATUS jsr TERM.GetIOCTLBufCntDCB
|
|||
bra TERM.TOAUX
|
||||
|
||||
TERM.OPEN sta ZPDevID DEV.ID in A for OPEN
|
||||
|
||||
TERM.CONTROL
|
||||
TERM.CLOSE jsr TERM.GetDCB
|
||||
|
||||
|
@ -104,6 +103,6 @@ TERM.GetDevName sta CLRREADAUX
|
|||
rts
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE USR/SRC/SYS/KERNEL.S.TERM
|
||||
LOAD USR/SRC/SYS/KERNEL.S
|
||||
SAVE usr/src/sys/kernel.s.term
|
||||
LOAD usr/src/sys/kernel.s
|
||||
ASM
|
||||
|
|
|
@ -1521,6 +1521,6 @@ BUF.BASEH .DA /S.DCB.TTY+0
|
|||
.DA /S.DCB.TTY+1840
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE USR/SRC/SYS/KERNEL.S.TERMX
|
||||
LOAD USR/SRC/SYS/KERNEL.S
|
||||
SAVE usr/src/sys/kernel.s.termx
|
||||
LOAD usr/src/sys/kernel.s
|
||||
ASM
|
||||
|
|
|
@ -76,6 +76,6 @@ K.CTime2Time >PULLW FORPNT S.TIME
|
|||
jmp K.SYSCALL.JMPX
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE USR/SRC/SYS/KERNEL.S.TIME
|
||||
LOAD USR/SRC/SYS/KERNEL.S
|
||||
SAVE usr/src/sys/kernel.s.time
|
||||
LOAD usr/src/sys/kernel.s
|
||||
ASM
|
||||
|
|
|
@ -459,6 +459,6 @@ TIMEX.IsLeap cmp #0 Year = 00 ?
|
|||
rts
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE USR/SRC/SYS/KERNEL.S.TIMEX
|
||||
LOAD USR/SRC/SYS/KERNEL.S
|
||||
SAVE usr/src/sys/kernel.s.timex
|
||||
LOAD usr/src/sys/kernel.s
|
||||
ASM
|
||||
|
|
|
@ -21,61 +21,30 @@ K.Open jsr PFT.YAToMLIPATH
|
|||
stz IO.Open.AUXTYPE
|
||||
stz IO.Open.AUXTYPE+1
|
||||
*--------------------------------------
|
||||
UNISTD.Open ldx #5 /DEV/
|
||||
UNISTD.Open ldx #5 /dev/
|
||||
cpx K.MLI.PATH
|
||||
bcs .99
|
||||
bcs .8
|
||||
|
||||
.1 lda K.MLI.PATH,x
|
||||
cmp DEV.FIFO-1,x
|
||||
bne .99
|
||||
cmp UNISTD.DEV-1,x
|
||||
bne .8
|
||||
dex
|
||||
bne .1
|
||||
*--------------------------------------
|
||||
* /DEV/xxxxxx (CDEV,BDEV,DSOCK,SSOCK,PIPE)
|
||||
*--------------------------------------
|
||||
>LDYAI K.MLI.PATH+6 skip $/DEV/
|
||||
>LDYAI K.MLI.PATH+6 skip $/dev/
|
||||
|
||||
jsr K.GetDevByName
|
||||
bcc .7
|
||||
|
||||
ldx #2
|
||||
.10 lda Nod.Table.hPath-2,x
|
||||
beq .3
|
||||
|
||||
jsr K.GetMemPtr
|
||||
>STYA ZPPtr1
|
||||
|
||||
ldy #0
|
||||
|
||||
.2 lda (ZPPtr1),y
|
||||
iny
|
||||
cmp K.MLI.PATH,y
|
||||
bne .3
|
||||
|
||||
cmp #0 end of string ?
|
||||
|
||||
bne .2
|
||||
|
||||
lda Nod.Table.hFD-2,x return hFD
|
||||
jsr UNISTD.GetPFD
|
||||
bra .71
|
||||
|
||||
.3 inx
|
||||
cpx #K.NOD.MAX+2
|
||||
bne .10
|
||||
|
||||
lda #MLI.E.NODEV
|
||||
* sec
|
||||
rts no OF found
|
||||
bcs .9
|
||||
*--------------------------------------
|
||||
.7 stx IO.hFD
|
||||
>STYA pFD
|
||||
stx IO.hDevNod pFD set by GetDevByName
|
||||
|
||||
.71 lda (pFD) #S.FD.T
|
||||
lda (pFD) #S.FD.T
|
||||
tax
|
||||
|
||||
jmp (.8-2,x)
|
||||
.8
|
||||
jmp (.2-2,x)
|
||||
.2
|
||||
* .DA STDIO.IOERR REG
|
||||
.DA STDIO.IOERR DIR
|
||||
.DA IO.OPEN.CDEV
|
||||
|
@ -85,7 +54,9 @@ UNISTD.Open ldx #5 /DEV/
|
|||
.DA IO.OPEN.SSOCK
|
||||
.DA IO.OPEN.PIPE
|
||||
|
||||
.99 jmp IO.OPEN.REG
|
||||
.8 jmp FS.OPEN.REG
|
||||
|
||||
.9 rts
|
||||
*/--------------------------------------
|
||||
* # close
|
||||
* ## C
|
||||
|
@ -95,7 +66,7 @@ UNISTD.Open ldx #5 /DEV/
|
|||
* `lda fd`
|
||||
* `>SYSCALL close`
|
||||
*\--------------------------------------
|
||||
K.Close jsr UNISTD.GetPFD
|
||||
K.Close jsr DEV.GetPFD
|
||||
|
||||
UNISTD.Close lda (pFD) #S.FD.T
|
||||
tax
|
||||
|
@ -122,12 +93,12 @@ UNISTD.Close lda (pFD) #S.FD.T
|
|||
* CC: Y,A = bytes read
|
||||
* CS: A = EC
|
||||
*\--------------------------------------
|
||||
K.Read jsr UNISTD.GetPFD
|
||||
K.Read jsr DEV.GetPFD
|
||||
|
||||
UNISTD.Read lda (pFD) #S.FD.T
|
||||
tax
|
||||
jmp (.1,x)
|
||||
.1 .DA IO.READ.REG
|
||||
.1 .DA FS.READ.REG
|
||||
.DA STDIO.IOERR DIR
|
||||
.DA IO.READ.CDEV
|
||||
.DA STDIO.IOERR BDEV
|
||||
|
@ -149,12 +120,12 @@ UNISTD.Read lda (pFD) #S.FD.T
|
|||
* CC: Y,A = bytes written
|
||||
* CS: A = EC
|
||||
*\--------------------------------------
|
||||
K.Write jsr UNISTD.GetPFD
|
||||
K.Write jsr DEV.GetPFD
|
||||
|
||||
UNISTD.Write lda (pFD) #S.FD.T
|
||||
tax
|
||||
jmp (.1,x)
|
||||
.1 .DA IO.WRITE.REG
|
||||
.1 .DA FS.WRITE.REG
|
||||
.DA STDIO.IOERR DIR
|
||||
.DA IO.WRITE.CDEV
|
||||
.DA STDIO.IOERR BDEV
|
||||
|
@ -163,28 +134,22 @@ UNISTD.Write lda (pFD) #S.FD.T
|
|||
.DA IO.WRITE.SSOCK
|
||||
.DA IO.WRITE.PIPE
|
||||
*--------------------------------------
|
||||
UNISTD.GetPFD sta IO.hFD
|
||||
jsr K.GetMemPtr
|
||||
>STYA pFD
|
||||
rts
|
||||
*--------------------------------------
|
||||
IO.OPEN.CDEV
|
||||
IO.OPEN.BDEV jsr SHARED.GetPDrv
|
||||
ldx #IOCTL.OPEN
|
||||
lda IO.hFD
|
||||
jsr SHARED.pDrvJmp
|
||||
IO.OPEN.BDEV ldx #IOCTL.OPEN
|
||||
lda IO.hDevNod
|
||||
jsr DEV.pDrvJmp
|
||||
bcs IO.WRITE.CDEV.RTS
|
||||
*--------------------------------------
|
||||
IO.OPEN.DSOCK
|
||||
*--------------------------------------
|
||||
IO.OPEN.SSOCK
|
||||
lda IO.hFD
|
||||
*--------------------------------------
|
||||
IO.CLOSE.CDEV
|
||||
IO.CLOSE.BDEV
|
||||
IO.OPEN.SSOCK lda IO.hDevNod
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
IO.CLOSE.CDEV
|
||||
IO.CLOSE.BDEV ldx #IOCTL.CLOSE
|
||||
lda IO.hDevNod
|
||||
jmp DEV.pDrvJmp
|
||||
*--------------------------------------
|
||||
IO.READ.CDEV ldx #IOCTL.READ
|
||||
.HS 2C BIT ABS
|
||||
*--------------------------------------
|
||||
|
@ -192,9 +157,9 @@ IO.WRITE.CDEV ldx #IOCTL.WRITE
|
|||
|
||||
>PULLW K.S.IOCTL+S.IOCTL.BUFPTR
|
||||
>PULLW K.S.IOCTL+S.IOCTL.BYTECNT
|
||||
jsr SHARED.GetPDrv
|
||||
|
||||
>LDYAI K.S.IOCTL
|
||||
jsr SHARED.pDrvJmp
|
||||
jsr DEV.pDrvJmp
|
||||
bcs .9
|
||||
|
||||
>LDYA K.S.IOCTL+S.IOCTL.BYTECNT
|
||||
|
@ -227,51 +192,7 @@ IO.WRITE.SSOCK ldy #S.FD.SSOCK.WRITE
|
|||
.1 jmp $FFFF SELF MODIFIED
|
||||
*--------------------------------------
|
||||
IO.EOF.CDEV lda #S.IOCTL.STATCODE.EOF
|
||||
jmp SHARED.GetDevStatus
|
||||
*--------------------------------------
|
||||
* X = 0 > REG
|
||||
* X = 1 > DIR
|
||||
* X = 2 > PIPE
|
||||
*--------------------------------------
|
||||
IO.MkFD stx .8+1
|
||||
|
||||
ldy IO.MkFD.Y,x
|
||||
lda #0
|
||||
ldx #S.MEM.F.INIT0+S.MEM.F.FD
|
||||
jsr MEM.GetMem.YAX
|
||||
bcs .9
|
||||
|
||||
>STYA pFD
|
||||
stx IO.hFD
|
||||
|
||||
.8 ldx #$ff SELF MODIFIED
|
||||
lda IO.MkFD.T,x
|
||||
sta (pFD) X = hFD, A = T
|
||||
* clc
|
||||
.9 rts
|
||||
|
||||
IO.MkFD.Y .DA #S.FD.REG,#S.FD.DIR,#S.FD.PIPE
|
||||
IO.MkFD.T .DA #S.FD.T.REG,#S.FD.T.DIR,#S.FD.T.PIPE
|
||||
*--------------------------------------
|
||||
IO.CLOSE.NOD ldx #2
|
||||
|
||||
lda IO.hFD
|
||||
|
||||
.1 cmp Nod.Table.hFD-2,x
|
||||
bne .2
|
||||
|
||||
stz Nod.Table.hFD-2,x
|
||||
lda Nod.Table.hPath-2,x
|
||||
stz Nod.Table.hPath-2,x
|
||||
jmp K.FreeMem
|
||||
|
||||
.2 inx
|
||||
cpx #K.Nod.MAX+2
|
||||
bne .1
|
||||
|
||||
lda #E.INVH
|
||||
* sec
|
||||
rts
|
||||
jmp DEV.GetDevStatus
|
||||
*/--------------------------------------
|
||||
* # ChOwn
|
||||
* ## C
|
||||
|
@ -310,17 +231,9 @@ K.ChOwn jsr PFT.CheckPath2
|
|||
|
||||
K.ChOwn.RET4 >RET 4
|
||||
*--------------------------------------
|
||||
SHARED.GetPDrv ldy #S.FD.DEV.DRVPTR
|
||||
lda (pFD),y
|
||||
sta pDRV
|
||||
iny
|
||||
lda (pFD),y
|
||||
sta pDRV+1
|
||||
rts
|
||||
*--------------------------------------
|
||||
DEV.FIFO .AS "/dev/fifo" STAT,UNISTD
|
||||
UNISTD.DEV .AS "/dev/"
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE USR/SRC/SYS/KERNEL.S.UNISTD
|
||||
LOAD USR/SRC/SYS/KERNEL.S
|
||||
SAVE usr/src/sys/kernel.s.unistd
|
||||
LOAD usr/src/sys/kernel.s
|
||||
ASM
|
||||
|
|
|
@ -89,6 +89,6 @@ Z80.6502Y .BS 1
|
|||
Z80.6502P .BS 1
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE USR/SRC/SYS/KERNEL.S.Z80
|
||||
LOAD USR/SRC/SYS/KERNEL.S
|
||||
SAVE usr/src/sys/kernel.s.z80
|
||||
LOAD usr/src/sys/kernel.s
|
||||
ASM
|
||||
|
|
|
@ -125,7 +125,6 @@ DevMgr.Timer .BS 1
|
|||
DevMgr.Stat .DA DevMgr.FreeMem
|
||||
DevMgr.Free .DA DevMgr.FreeMem
|
||||
.DA DevMgr.HiMem
|
||||
DevMgr.DevIdx .DA #1
|
||||
DevMgr.FreeMem .EQ *
|
||||
.EP
|
||||
A2osX.E0.S .EQ *-A2osX.E0.B
|
||||
|
|
|
@ -133,8 +133,7 @@ RW.Detect2 php
|
|||
|
||||
ldx #0
|
||||
|
||||
.3 txa
|
||||
sta RWBankSelect
|
||||
.3 stx RWBankSelect
|
||||
*--------------------------------------
|
||||
* Added after David Finnigan from macgui.com testing sessions
|
||||
*
|
||||
|
@ -143,17 +142,16 @@ RW.Detect2 php
|
|||
*
|
||||
* to address possibly a timing issue with Accelerators
|
||||
*--------------------------------------
|
||||
cmp 0
|
||||
bne .4
|
||||
|
||||
eor #$FF
|
||||
lda 0
|
||||
tay
|
||||
eor #$ff
|
||||
cmp 1
|
||||
bne .4
|
||||
|
||||
inx
|
||||
bpl .3
|
||||
|
||||
dex we reached 128,last detected page was 127
|
||||
cpy #127
|
||||
bne .3
|
||||
|
||||
.4 ldy #127 X = detected page count
|
||||
|
||||
|
@ -586,8 +584,10 @@ RWDRVX.RESTORE ldy #RWDRVX.XM.SIZE Now, restore begining of $300
|
|||
*--------------------------------------
|
||||
RWDRVX.XM.START ldy #2 2 pages to copy
|
||||
|
||||
RWDRVX.XM.COPY jsr RWDRV.XM.RUN+RWDRVX.XM.SRCLC-RWDRVX.XM.START
|
||||
sta $C000,x
|
||||
RWDRVX.XM.COPY sta CLRALTZP
|
||||
|
||||
jsr RWDRV.XM.RUN+RWDRVX.XM.SRCLC-RWDRVX.XM.START
|
||||
sta $C000,x select proper Main/Aux ZP/LC
|
||||
sta RWBankSelect
|
||||
|
||||
ldx #0
|
||||
|
@ -597,8 +597,10 @@ RWDRVX.XM.SRC lda $FFFF,x
|
|||
inx
|
||||
bne RWDRVX.XM.SRC
|
||||
|
||||
sta CLRALTZP
|
||||
|
||||
jsr RWDRV.XM.RUN+RWDRVX.XM.DSTLC-RWDRVX.XM.START
|
||||
sta $C000,x
|
||||
sta $C000,x select proper Main/Aux ZP/LC
|
||||
sta RWBankSelect
|
||||
|
||||
ldx #0
|
||||
|
@ -617,7 +619,7 @@ RWDRVX.XM.DST sta $FFFF,x
|
|||
stz RWBankSelect
|
||||
*--------------------------------------
|
||||
RWDRVX.XM.MNLC bit RRAMWRAMBNK1 ProDOS always uses LCBANK1
|
||||
bit RRAMWRAMBNK1
|
||||
* bit RRAMWRAMBNK1
|
||||
|
||||
lda #0
|
||||
|
||||
|
@ -633,7 +635,7 @@ RWDRVX.XM.RWLC lda #$FF
|
|||
bmi RWDRVX.XM.BANK
|
||||
|
||||
bit RRAMWRAMBNK2
|
||||
bit RRAMWRAMBNK2
|
||||
* bit RRAMWRAMBNK2
|
||||
|
||||
RWDRVX.XM.BANK lda #$FF
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user