Kernel 0.94++

This commit is contained in:
Rémy GIBERT 2021-05-14 22:58:20 +02:00
parent abb96fcfc6
commit 9582ca9af0
44 changed files with 703 additions and 467 deletions

View File

@ -829,6 +829,21 @@ A = hFILE
CC = OK, CS = ERROR CC = OK, CS = ERROR
A = hFD A = hFD
# fputc (BLOCKING)
Print A (char) to hFILE
## C
`int fputc ( hFILE stream , short int character );`
## ASM
**In:**
`>PUSHB stream`
`>PUSHB character`
`>SYSCALL fputc`
## RETURN VALUE
CC = success
# putchar (BLOCKING) # putchar (BLOCKING)
Print A (char) to StdOut Print A (char) to StdOut
@ -843,21 +858,6 @@ Print A (char) to StdOut
## RETURN VALUE ## RETURN VALUE
CC = success CC = success
# fputc (BLOCKING)
Print A (char) to hFILE
## C
`int fputc ( hFILE stream , short int character );`
## ASM
**In:**
`>PUSHB character`
`lda stream`
`>SYSCALL fputc`
## RETURN VALUE
CC = success
# puts (BLOCKING) # puts (BLOCKING)
Write Str to StdOut, appends '\r\n' Write Str to StdOut, appends '\r\n'
@ -1004,9 +1004,9 @@ Read bytes from file
## ASM ## ASM
**In:** **In:**
`>PUSHWI count` `>PUSHB stream`
`>PUSHW ptr` `>PUSHW ptr`
`lda stream` `>PUSHW count`
`>SYSCALL fread` `>SYSCALL fread`
## RETURN VALUE ## RETURN VALUE
@ -1020,9 +1020,9 @@ Write bytes to file
## ASM ## ASM
**In:** **In:**
`>PUSHWI count` `>PUSHB stream`
`>PUSHW ptr` `>PUSHW ptr`
`lda stream` `>PUSHW count`
`>SYSCALL fwrite` `>SYSCALL fwrite`
## RETURN VALUE ## RETURN VALUE
@ -1046,9 +1046,9 @@ Set the file-position indicator for hFILE
## ASM ## ASM
**In:** **In:**
`>PUSHBI whence` `>PUSHB stream`
`>PUSHL offset` `>PUSHL offset`
`lda stream` `>PUSHB whence`
`>SYSCALL fseek` `>SYSCALL fseek`
# FEOF # FEOF
@ -1561,8 +1561,8 @@ Convert S.TIME struct to CSTR
## ASM ## ASM
**In:** **In:**
`>PUSHW pathname`
`>PUSHB flags` `>PUSHB flags`
`>LDYA pathname`
`>SYSCALL open` `>SYSCALL open`
## RETURN VALUE ## RETURN VALUE
@ -1586,9 +1586,9 @@ REG File created on ProDOS : T=TXT,X=$0000
## ASM ## ASM
**In:** **In:**
`>PUSHWI count` `>PUSHB fd`
`>PUSHW buf` `>PUSHW buf`
`lda fd` `>PUSHW count`
`>SYSCALL read` `>SYSCALL read`
## RETURN VALUE ## RETURN VALUE
@ -1602,15 +1602,28 @@ CS: A = EC
## ASM ## ASM
**In:** **In:**
`>PUSHWI count` `>PUSHB fd`
`>PUSHW buf` `>PUSHW buf`
`lda fd` `>PUSHW count`
`>SYSCALL write` `>SYSCALL write`
## RETURN VALUE ## RETURN VALUE
CC: Y,A = bytes written CC: Y,A = bytes written
CS: A = EC CS: A = EC
# LSeek
Set the file-position indicator for hFD
## C
`int lseek( short int hFD, long offset, short int whence );`
## ASM
**In:**
`>PUSHB hFD`
`>PUSHL offset`
`>PUSHB whence`
`>SYSCALL fseek`
# ChOwn # ChOwn
## C ## C

Binary file not shown.

View File

@ -6,6 +6,7 @@ FIO.Init.RTS rts
FIO.Init >LDYAI 256 FIO.Init >LDYAI 256
>SYSCALL GetMem >SYSCALL GetMem
bcs FIO.Init.RTS bcs FIO.Init.RTS
>STYA ZPLineBuf >STYA ZPLineBuf
txa txa
>STA.G SRC.hLineBuf >STA.G SRC.hLineBuf
@ -13,6 +14,7 @@ FIO.Init >LDYAI 256
>LDYAI 256 >LDYAI 256
>SYSCALL GetMem >SYSCALL GetMem
bcs FIO.Init.RTS bcs FIO.Init.RTS
>STYA ZPTmpBuf >STYA ZPTmpBuf
txa txa
>STA.G SRC.hTmpBuf >STA.G SRC.hTmpBuf
@ -183,10 +185,12 @@ FIO.ReadLine >LDA.G SRC.Depth
lda (pData),y lda (pData),y
bmi .10 bmi .10
>PUSHWI 256 jsr FIO.GethFile
>PUSHW ZPLineBuf >PUSHW ZPLineBuf
>PUSHWI 256
jsr FIO.ReadFromFile jsr FIO.ReadFromFile
bcs .19 bcs .19
tya tya
beq .13 beq .13
@ -194,17 +198,21 @@ FIO.ReadLine >LDA.G SRC.Depth
lda (ZPLineBuf),y lda (ZPLineBuf),y
eor #C.CR eor #C.CR
beq .22 beq .22
iny iny
.22 lda #0 replace ending $0D with $00 .22 lda #0 replace ending $0D with $00
.13 sta (ZPLineBuf),y .13 sta (ZPLineBuf),y
>INC.G SRC.LINENUM >INC.G SRC.LINENUM
bne .19 bne .19
>INC.G SRC.LINENUM+1 >INC.G SRC.LINENUM+1
.19 rts .19 rts
*--------------------------------------- *---------------------------------------
.10 >PUSHWI 3 .10 jsr FIO.GethFile
>PUSHW ZPTmpBuf >PUSHW ZPTmpBuf
>PUSHWI 3
jsr FIO.ReadFromFile jsr FIO.ReadFromFile
bcs .19 bcs .19
@ -216,61 +224,81 @@ FIO.ReadLine >LDA.G SRC.Depth
>STA.G SRC.LINENUM+1 >STA.G SRC.LINENUM+1
pla pla
>STA.G SRC.LINENUM >STA.G SRC.LINENUM
lda (ZPTmpBuf) LEN
jsr FIO.GethFile
>PUSHW ZPTmpBuf
lda #0 LENHI = 0
>PUSHA
lda (ZPTmpBuf) LEN
sec sec
sbc #3 sbc #3
bcc .9 LEN should be at least 3 bcc .9 LEN should be at least 3
tay >PUSHA
lda #0
>PUSHYA
>PUSHW ZPTmpBuf
jsr FIO.ReadFromFile jsr FIO.ReadFromFile
bcs .9 bcs .9
>LDYA ZPTmpBuf >LDYA ZPTmpBuf
>STYA ZPPtr1 >STYA ZPPtr1
ldy #0 ldy #0
.1 lda (ZPPtr1) .1 lda (ZPPtr1)
inc ZPPtr1 inc ZPPtr1
bne .11 bne .11
inc ZPPtr1+1 inc ZPPtr1+1
.11 tax .11 tax
bmi .2 bmi .2
sta (ZPLineBuf),y sta (ZPLineBuf),y
beq .8 Ending 00 beq .8 Ending 00
iny iny
bne .1 bne .1
bra .99 bra .99
.2 cmp #$C0 REPEAT char? .2 cmp #$C0 REPEAT char?
bne .5 bne .5
lda (ZPPtr1) Get Repeat Count lda (ZPPtr1) Get Repeat Count
inc ZPPtr1 inc ZPPtr1
bne .3 bne .3
inc ZPPtr1+1 inc ZPPtr1+1
.3 tax .3 tax
lda (ZPPtr1) Get Repeat Char lda (ZPPtr1) Get Repeat Char
inc ZPPtr1 inc ZPPtr1
bne .4 bne .4
inc ZPPtr1+1 inc ZPPtr1+1
.4 sta (ZPLineBuf),y .4 sta (ZPLineBuf),y
iny iny
beq .99 beq .99
dex dex
bne .4 bne .4
bra .1 bra .1
.5 and #$3F Compute blank count .5 and #$3F Compute blank count
tax tax
lda #$20 lda #$20
.6 sta (ZPLineBuf),y .6 sta (ZPLineBuf),y
iny iny
beq .99 beq .99
dex dex
bne .6 bne .6
bra .1 bra .1
.8 clc .8 clc
.9 rts .9 rts
@ -278,17 +306,21 @@ FIO.ReadLine >LDA.G SRC.Depth
sec sec
rts rts
*-------------------------------------- *--------------------------------------
FIO.ReadFromFile FIO.GethFile >LDA.G SRC.Depth
>LDA.G SRC.Depth
clc clc
adc #SRC.hFILES-1 adc #SRC.hFILES-1
tay tay
lda (pData),y lda (pData),y
>PUSHA
rts
*--------------------------------------
FIO.ReadFromFile
>SYSCALL FRead >SYSCALL FRead
bcs .9 bcs .9
tax $100 byte transfered ? tax $100 byte transfered ?
beq .9 beq .9
lda #E.LINE.TOO.LONG lda #E.LINE.TOO.LONG
sec sec
.9 rts .9 rts

View File

@ -16,13 +16,13 @@ OUT.EmitByte phy
>LDA.G ASM.DU.ON >LDA.G ASM.DU.ON
bmi .1 bmi .1
>PUSHB.G DST.hREFNUM
txa txa
pha
>PUSHA >PUSHA
>LDA.G DST.hREFNUM phx
>SYSCALL FPutC >SYSCALL FPutC
plx plx
bcs .99 bcs .9
.1 >INC.G ASM.PC .1 >INC.G ASM.PC
bne .2 bne .2
@ -50,7 +50,7 @@ OUT.EmitByte phy
phx phx
jsr OUT.PrintBuf jsr OUT.PrintBuf
plx plx
bcs .99 bcs .9
ldy #OUT.Buf ldy #OUT.Buf
lda #0 lda #0
@ -65,7 +65,7 @@ OUT.EmitByte phy
.8 clc .8 clc
.99 plx .9 plx
ply ply
rts rts
*--------------------------------------- *---------------------------------------

View File

@ -239,32 +239,32 @@ CS.RUN.SEEK >LDYA ZPPtr1
bcs .9 bcs .9
>PULLL SeekOfs >PULLL SeekOfs
lda bSkip1 lda bSkip1
bmi .1 bmi .1
>PUSHBI SEEK.SET >PUSHB hFile1
>PUSHL SeekOfs >PUSHL SeekOfs
lda hFile1 >PUSHBI SEEK.SET
>SYSCALL FSeek >SYSCALL FSeek
bcs .9 bcs .9
.1 >PUSHBI SEEK.SET .1 >PUSHB hFile2
>PUSHL SeekOfs >PUSHL SeekOfs
lda hFile2 >PUSHBI SEEK.SET
>SYSCALL FSeek >SYSCALL FSeek
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
CS.RUN.READ1 >PUSHWI 256 CS.RUN.READ1 >PUSHB hFile1
>PUSHW ZPBufPtr1 >PUSHW ZPBufPtr1
lda hFile1 >PUSHWI 256
>SYSCALL FRead >SYSCALL FRead
rts rts
*-------------------------------------- *--------------------------------------
CS.RUN.READ2 >PUSHWI 256 CS.RUN.READ2 >PUSHB hFile2
>PUSHW ZPBufPtr2 >PUSHW ZPBufPtr2
lda hFile2 >PUSHWI 256
>SYSCALL FRead >SYSCALL FRead
rts rts
*-------------------------------------- *--------------------------------------

View File

@ -346,6 +346,12 @@ CSH.fDeclaration
lda #CSH.Q.FUNC lda #CSH.Q.FUNC
tsb ZPVarType tsb ZPVarType
jsr CSH.SkipLine
clc
rts
jsr CSH.GetNextCharNB Skip ( jsr CSH.GetNextCharNB Skip (
bcs .9 bcs .9
@ -359,8 +365,6 @@ CSH.fDeclaration
.5 jsr CSH.GetNextCharNB Skip ) .5 jsr CSH.GetNextCharNB Skip )
jsr CSH.SkipLine
clc clc
rts rts

View File

@ -114,6 +114,10 @@ CSH.BOPS.LOR
clc clc
rts rts
*-------------------------------------- *--------------------------------------
EXEC.pwr >FPU PWR
clc
rts
*--------------------------------------
EXEC.log >FPU LOG EXEC.log >FPU LOG
clc clc
rts rts
@ -183,7 +187,17 @@ EXEC.malloc >PULLYA
>PUSHYA >PUSHYA
rts rts
*-------------------------------------- *--------------------------------------
EXEC.fopen >SYSCALL FOpen
>PUSHYA
*--------------------------------------
EXEC.fclose >SYSCALL FClose
>PUSHYA
*--------------------------------------
EXEC.fread >SYSCALL FRead
>PUSHYA
*--------------------------------------
EXEC.fwrite >SYSCALL FWrite
>PUSHYA
*-------------------------------------- *--------------------------------------
MAN MAN
SAVE usr/src/bin/csh.s.exec SAVE usr/src/bin/csh.s.exec

View File

@ -11,22 +11,29 @@ CSH.KW.JMP txa
CSH.WHILE CSH.WHILE
CSH.IF jsr CSH.GetCharNB CSH.IF jsr CSH.GetCharNB
bcs .9 bcs .9
cmp #'(' cmp #'('
bne .9 bne .9
jsr CSH.GetNextCharNB jsr CSH.GetNextCharNB
bcs .9 bcs .9
lda #0 Any var type lda #0 Any var type
jsr CSH.ExpEval jsr CSH.ExpEval
bcs .99 bcs .99
jsr CSH.GetCharNB jsr CSH.GetCharNB
bcs .99 bcs .99
cmp #')' cmp #')'
bne .9 bne .9
jsr CSH.GetNextCharNB skip ')' jsr CSH.GetNextCharNB skip ')'
bcs .99 bcs .99
cmp #'{' cmp #'{'
bne .9 bne .9
jsr CSH.GetNextCharNB Skip '{' jsr CSH.GetNextCharNB Skip '{'
bcs .99 bcs .99
@ -44,6 +51,7 @@ CSH.IF jsr CSH.GetCharNB
pla pla
.1 jsr CSH.Push .1 jsr CSH.Push
bcs .99 bcs .99
lda #'}' Tell '}' is expected at the end of block lda #'}' Tell '}' is expected at the end of block
jsr CSH.Push jsr CSH.Push
bcs .99 bcs .99

View File

@ -164,7 +164,8 @@ J.CSH.STYPES .DA CSH.SCHAR
J.CSH.KW.END .DA CSH.IF.END J.CSH.KW.END .DA CSH.IF.END
.DA CSH.WHILE.END .DA CSH.WHILE.END
*-------------------------------------- *--------------------------------------
J.CSH.EXEC .DA EXEC.log J.CSH.EXEC .DA EXEC.pwr
.DA EXEC.log
.DA EXEC.sqr .DA EXEC.sqr
.DA EXEC.exp .DA EXEC.exp
.DA EXEC.cos .DA EXEC.cos
@ -181,6 +182,10 @@ J.CSH.EXEC .DA EXEC.log
.DA EXEC.unsetenv .DA EXEC.unsetenv
.DA EXEC.MD5 .DA EXEC.MD5
.DA EXEC.malloc .DA EXEC.malloc
.DA EXEC.fopen
.DA EXEC.fclose
.DA EXEC.fread
.DA EXEC.fwrite
.DA 0 .DA 0
*-------------------------------------- *--------------------------------------
* Called once at process creation * Called once at process creation
@ -358,9 +363,10 @@ PrintErrMsg lda hDefine
cmp ZPInputBufPtr+1 cmp ZPInputBufPtr+1
beq .8 beq .8
.6 >PUSHBI '-' .6 ldy #S.PS.hStdErr
ldy #S.PS.hStdErr
lda (pPS),y lda (pPS),y
>PUSHA
>PUSHBI '-'
>SYSCALL FPutC >SYSCALL FPutC
inc ZPPtr3 inc ZPPtr3
bne .5 bne .5
@ -390,9 +396,10 @@ PrintDebugMsg >LDYA pStack
*-------------------------------------- *--------------------------------------
PrintTraceMsg >STYA ZPPtr3 PrintTraceMsg >STYA ZPPtr3
PrintTraceMsg.3 >PUSHBI '>' PrintTraceMsg.3 ldy #S.PS.hStdErr
ldy #S.PS.hStdErr
lda (pPS),y lda (pPS),y
>PUSHA
>PUSHBI '>'
>SYSCALL FPutC >SYSCALL FPutC
ldy #$ff ldy #$ff
@ -405,9 +412,12 @@ PrintTraceMsg.3 >PUSHBI '>'
beq .8 beq .8
phy phy
>PUSHA pha
ldy #S.PS.hStdErr ldy #S.PS.hStdErr
lda (pPS),y lda (pPS),y
>PUSHA
pla
>PUSHA
>SYSCALL FPutC >SYSCALL FPutC
ply ply
bra .1 bra .1
@ -543,7 +553,13 @@ CSH.FTYPES >PSTR "fastcall"
CSH.TYPESIZE .HS 0001010202040405 CSH.TYPESIZE .HS 0001010202040405
*-------------------------------------- *--------------------------------------
CSH.FN CSH.FN
* float cos ( float x ); * float pwr (float x, float y);
>PSTR "pwr"
.DA #CSH.T.FLOAT returned value
.DA #CSH.T.FLOAT
.DA #CSH.T.FLOAT
.DA #0
* float cos (float x);
>PSTR "log" >PSTR "log"
.DA #CSH.T.FLOAT returned value .DA #CSH.T.FLOAT returned value
.DA #CSH.T.FLOAT .DA #CSH.T.FLOAT
@ -626,6 +642,33 @@ CSH.FN
.DA #CSH.Q.POINTER+CSH.T.VOID returned value .DA #CSH.Q.POINTER+CSH.T.VOID returned value
.DA #CSH.T.SINT .DA #CSH.T.SINT
.DA #0 .DA #0
* short int fopen(const char*,short int,short int,int);
>PSTR "fopen"
.DA #CSH.T.SCHAR
.DA #CSH.Q.CONST+CSH.Q.POINTER+CSH.T.UCHAR
.DA #CSH.T.SCHAR
.DA #CSH.T.SCHAR
.DA #CSH.T.SINT
.DA #0
* int fclose(short int);
>PSTR "fclose"
.DA #CSH.T.SINT
.DA #CSH.T.SCHAR
.DA #0
* int fread (short int,void*,int);
>PSTR "fread"
.DA #CSH.T.SINT
.DA #CSH.T.SCHAR
.DA #CSH.Q.POINTER+CSH.T.VOID
.DA #CSH.T.SINT
.DA #0
* int fwrite (short int,const void*,int);
>PSTR "fwrite"
.DA #CSH.T.SINT
.DA #CSH.T.SCHAR
.DA #CSH.Q.CONST+CSH.Q.POINTER+CSH.T.VOID
.DA #CSH.T.SINT
.DA #0
*-------------------------------------- *--------------------------------------
.DA #0 .DA #0
*-------------------------------------- *--------------------------------------

View File

@ -496,17 +496,25 @@ FILE.Open stz TmpIndex
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
FILE.ReadY lda #0 FILE.ReadY phy
>PUSHYA
>PUSHB TmpIndex
>PUSHW ZPPTR1 >PUSHW ZPPTR1
lda TmpIndex
ply
lda #0
>PUSHYA
>SYSCALL FRead >SYSCALL FRead
rts rts
*-------------------------------------- *--------------------------------------
FILE.WriteY lda #0 FILE.WriteY phy
>PUSHYA
>PUSHB TmpIndex
>PUSHW ZPPTR1 >PUSHW ZPPTR1
lda TmpIndex
ply
lda #0
>PUSHYA
>SYSCALL FWrite >SYSCALL FWrite
rts rts
*-------------------------------------- *--------------------------------------

View File

@ -1,8 +1,8 @@
NEW NEW
AUTO 3,1 AUTO 3,1
*-------------------------------------- *--------------------------------------
GFX.Open >PUSHBI 0 GFX.Open >PUSHW L.DEV.GFX
>LDYA L.DEV.GFX >PUSHBI 0
>SYSCALL Open >SYSCALL Open
bcs .9 bcs .9

View File

@ -277,8 +277,8 @@ CS.QUIT lda hFont
.7 lda hDevGFX .7 lda hDevGFX
beq .8 beq .8
* >DEBUG
* >SYSCALL close >SYSCALL close
.8 clc .8 clc
rts rts
@ -310,8 +310,8 @@ LoadResources >LDYA L.FONTFILE
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
GFX.Open >PUSHBI 0 GFX.Open >PUSHW L.DEVNAME.GFX
>LDYA L.DEVNAME.GFX >PUSHBI 0
>SYSCALL Open >SYSCALL Open
bcs .9 bcs .9
sta hDevGFX sta hDevGFX

View File

@ -512,16 +512,16 @@ CS.RUN.RESPONSE jsr Init.TimeOut
sec sec
ror bHeader ror bHeader
.6 >PUSHW ZPRespBufLen .6 lda hFile
>PUSHW ZPRespBufPtr
lda hFile
bne .7 bne .7
ldy #S.PS.hStdOut ldy #S.PS.hStdOut
lda (pPS),y lda (pPS),y
.7 >SYSCALL FWrite .7 >PUSHA
>PUSHW ZPRespBufPtr
>PUSHW ZPRespBufLen
>SYSCALL FWrite
bcs .9 bcs .9
lda hRespBuf lda hRespBuf

View File

@ -244,8 +244,9 @@ CS.RUN.Save >PUSHW L.FILENAME
bcs .9 bcs .9
pha save hFile pha save hFile
>PUSHWI 16 LEN >PUSHA
>PUSHW ZPCfgPtr >PUSHW ZPCfgPtr
>PUSHWI 16 LEN
pla pla
pha pha
>SYSCALL FWrite >SYSCALL FWrite
@ -258,6 +259,7 @@ CS.RUN.Save >PUSHW L.FILENAME
pla pla
sec sec
rts rts
.1 pla .1 pla
>SYSCALL FClose >SYSCALL FClose

View File

@ -133,9 +133,9 @@ CS.RUN.FILE >LDYAI FILEBUF.SIZE
.1 >SLEEP .1 >SLEEP
>PUSHWI FILEBUF.SIZE Bytes To Read >PUSHB hFile
>PUSHW ZPDataBufPtr Dst Ptr >PUSHW ZPDataBufPtr Dst Ptr
lda hFile >PUSHWI FILEBUF.SIZE Bytes To Read
>SYSCALL FRead >SYSCALL FRead
bcc .2 bcc .2

View File

@ -370,9 +370,9 @@ CS.RUN.OpenFile >PUSHW ZPFullPath
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
CS.RUN.ReadFile >PUSHWI CHNK.SIZE CS.RUN.ReadFile >PUSHB.G hFile
>PUSHW ZPSrcBufPtr >PUSHW ZPSrcBufPtr
>LDA.G hFile >PUSHWI CHNK.SIZE
>SYSCALL FRead >SYSCALL FRead
bcs .9 bcs .9
@ -431,17 +431,15 @@ CS.RUN.AppendArc
rts rts
>PUSHB.G hArcFile
>PUSHLZ
>PUSHBI SEEK.SET >PUSHBI SEEK.SET
>PUSHWI 0
>PUSHWI 0
>LDA.G hArcFile
>SYSCALL FSeek >SYSCALL FSeek
bcs CS.RUN.OpenArc.RTS bcs CS.RUN.OpenArc.RTS
>PUSHWI 3 >PUSHB.G hArcFile
>PUSHW ZPSrcBufPtr >PUSHW ZPSrcBufPtr
>LDA.G hArcFile >PUSHWI 3
>SYSCALL FRead >SYSCALL FRead
bcs .9 bcs .9
@ -456,10 +454,9 @@ CS.RUN.AppendArc
dey dey
bpl .2 bpl .2
>PUSHB.G hArcFile
>PUSHLZ
>PUSHBI SEEK.END >PUSHBI SEEK.END
>PUSHWI 0
>PUSHWI 0
>LDA.G hArcFile
>SYSCALL FSeek >SYSCALL FSeek
* bcc .9 * bcc .9
* cmp #MLI.E.EOF * cmp #MLI.E.EOF
@ -547,9 +544,9 @@ CS.RUN.WriteSrcData
jsr CS.RUN.WriteArcByteA jsr CS.RUN.WriteArcByteA
bcs .9 bcs .9
>PUSHW.G Shunk.SrcSize >PUSHB.G hArcFile
>PUSHW ZPSrcBufPtr >PUSHW ZPSrcBufPtr
>LDA.G hArcFile >PUSHW.G Shunk.SrcSize
>SYSCALL FWrite >SYSCALL FWrite
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
@ -566,9 +563,9 @@ CS.RUN.WritePakData
jsr CS.RUN.WriteArcByteA jsr CS.RUN.WriteArcByteA
bcs .9 bcs .9
>PUSHW.G Shunk.DstSize >PUSHB.G hArcFile
>PUSHW ZPDstBufPtr >PUSHW ZPDstBufPtr
>LDA.G hArcFile >PUSHW.G Shunk.DstSize
>SYSCALL FWrite >SYSCALL FWrite
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
@ -576,8 +573,10 @@ CS.RUN.WriteArcByteY
lda (ZPFileStat),y lda (ZPFileStat),y
CS.RUN.WriteArcByteA CS.RUN.WriteArcByteA
pha
>PUSHB.G hArcFile
pla
>PUSHA >PUSHA
>LDA.G hArcFile
>SYSCALL FPutC >SYSCALL FPutC
rts rts
*-------------------------------------- *--------------------------------------

View File

@ -122,22 +122,21 @@ CS.RUN.START >PUSHW L.MSG.SRCFILE
jsr CS.RUN.GetSrcBufYA jsr CS.RUN.GetSrcBufYA
bcs CS.RUN.RTS bcs CS.RUN.RTS
>PUSHB hSrcFile
>PUSHLZ
>PUSHBI SEEK.SET >PUSHBI SEEK.SET
>PUSHWZ
>PUSHWZ
lda hSrcFile
>SYSCALL FSeek >SYSCALL FSeek
bcs CS.RUN.RTS bcs CS.RUN.RTS
>PUSHW ZPDstTableOfs >PUSHB hSrcFile
>PUSHW ZPSrcBufPtr >PUSHW ZPSrcBufPtr
lda hSrcFile >PUSHW ZPDstTableOfs
>SYSCALL FRead >SYSCALL FRead
bcs CS.RUN.RTS bcs CS.RUN.RTS
>PUSHW ZPDstTableOfs >PUSHB hDstFile
>PUSHW ZPSrcBufPtr >PUSHW ZPSrcBufPtr
lda hDstFile >PUSHW ZPDstTableOfs
>SYSCALL FWrite >SYSCALL FWrite
bcs CS.RUN.RTS bcs CS.RUN.RTS
@ -259,7 +258,7 @@ CS.RUN.CheckSrcFile
CS.RUN.CheckSrcFile.RTS CS.RUN.CheckSrcFile.RTS
rts rts
*-------------------------------------- *--------------------------------------
CS.RUN.CheckTAG >PUSHBI SEEK.SET CS.RUN.CheckTAG >PUSHB hSrcFile
>PUSHWZ >PUSHWZ
lda ZPSrcFileSize lda ZPSrcFileSize
@ -270,13 +269,13 @@ CS.RUN.CheckTAG >PUSHBI SEEK.SET
sbc #0 sbc #0
>PUSHYA >PUSHYA
lda hSrcFile >PUSHBI SEEK.SET
>SYSCALL FSeek >SYSCALL FSeek
bcs CS.RUN.CheckSrcFile.RTS bcs CS.RUN.CheckSrcFile.RTS
>PUSHWI 10 >PUSHB hSrcFile
>PUSHEA.G PAKME.HEADER >PUSHEA.G PAKME.HEADER
lda hSrcFile >PUSHWI 10
>SYSCALL FRead >SYSCALL FRead
bcs CS.RUN.CheckSrcFile.RTS bcs CS.RUN.CheckSrcFile.RTS
@ -307,13 +306,15 @@ CS.RUN.GetTable >LDA.G PAKME.HEADER+8
>SBC.G PAKME.HEADER+6 >SBC.G PAKME.HEADER+6
sta ZPDstTableOfs+1 sta ZPDstTableOfs+1
>PUSHBI SEEK.SET >PUSHB hSrcFile
>PUSHWZ >PUSHWZ
>PUSHW ZPDstTableOfs >PUSHW ZPDstTableOfs
lda hSrcFile >PUSHBI SEEK.SET
>SYSCALL FSeek >SYSCALL FSeek
bcs .9 bcs .9
>PUSHB hSrcFile
>PUSHEA.G PAKME.TABLE
>LDA.G PAKME.HEADER+7 >LDA.G PAKME.HEADER+7
sta ZPChunkCnt sta ZPChunkCnt
@ -322,8 +323,6 @@ CS.RUN.GetTable >LDA.G PAKME.HEADER+8
lda #0 lda #0
>PUSHYA >PUSHYA
>PUSHEA.G PAKME.TABLE
lda hSrcFile
>SYSCALL FRead >SYSCALL FRead
.9 rts .9 rts
@ -348,16 +347,16 @@ CS.RUN.GetChunk lda ZPChunkIndex
sbc (pData),y sbc (pData),y
sta ZPChunkOfs+1 sta ZPChunkOfs+1
>PUSHBI SEEK.SET >PUSHB hSrcFile
>PUSHWZ >PUSHWZ
>PUSHW ZPChunkOfs >PUSHW ZPChunkOfs
lda hSrcFile >PUSHBI SEEK.SET
>SYSCALL FSeek >SYSCALL FSeek
bcs .9 bcs .9
>PUSHWI 3 >PUSHB hSrcFile
>PUSHEA.G CHUNK.HEADER >PUSHEA.G CHUNK.HEADER
lda hSrcFile >PUSHWI 3
>SYSCALL FRead >SYSCALL FRead
bcs .9 bcs .9
@ -375,9 +374,9 @@ CS.RUN.GetChunk lda ZPChunkIndex
jsr CS.RUN.GetSrcBufYA jsr CS.RUN.GetSrcBufYA
bcs .9 bcs .9
>PUSHW ZPChunkLen >PUSHB hSrcFile
>PUSHW ZPSrcBufPtr >PUSHW ZPSrcBufPtr
lda hSrcFile >PUSHW ZPChunkLen
>SYSCALL FRead >SYSCALL FRead
bcs .9 bcs .9
@ -412,21 +411,21 @@ CS.RUN.Pak >LDYA ZPChunkLen
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
CS.RUN.RewriteTable CS.RUN.RewriteTable
>PUSHBI SEEK.SET >PUSHB hDstFile
>PUSHWZ >PUSHWZ
>PUSHW ZPDstTableOfs >PUSHW ZPDstTableOfs
lda hDstFile >PUSHBI SEEK.SET
>SYSCALL FSeek >SYSCALL FSeek
bcs CS.RUN.WriteTable.RTS bcs CS.RUN.WriteTable.RTS
*-------------------------------------- *--------------------------------------
CS.RUN.WriteTable CS.RUN.WriteTable
>PUSHB hDstFile
>PUSHEA.G PAKME.TABLE
>LDA.G PAKME.HEADER+7 >LDA.G PAKME.HEADER+7
asl asl
tay tay
lda #0 lda #0
>PUSHYA >PUSHYA
>PUSHEA.G PAKME.TABLE
lda hDstFile
>SYSCALL FWrite >SYSCALL FWrite
CS.RUN.WriteTable.RTS CS.RUN.WriteTable.RTS
rts rts
@ -439,9 +438,9 @@ CS.RUN.WritePak lda hDstFile
inc pStack inc pStack
inc pStack inc pStack
>PUSHW ZPChunkPakedLen >PUSHB hDstFile
>PUSHW ZPDstBufPtr >PUSHW ZPDstBufPtr
lda hDstFile >PUSHW ZPChunkPakedLen
>SYSCALL FWrite >SYSCALL FWrite
bcs .9 bcs .9
@ -464,15 +463,15 @@ CS.RUN.WriteStore
inc pStack inc pStack
inc pStack inc pStack
>PUSHWI 3 >PUSHB hDstFile
>PUSHEA.G CHUNK.HEADER >PUSHEA.G CHUNK.HEADER
lda hDstFile >PUSHWI 3
>SYSCALL FWrite >SYSCALL FWrite
bcs .9 bcs .9
>PUSHW ZPChunkLen >PUSHB hDstFile
>PUSHW ZPSrcBufPtr >PUSHW ZPSrcBufPtr
lda hDstFile >PUSHW ZPChunkLen
>SYSCALL FWrite >SYSCALL FWrite
bcs .9 bcs .9

View File

@ -99,20 +99,20 @@ CS.RUN.TEST
>LDYA L.PPP.1 >LDYA L.PPP.1
jsr DumpBuf jsr DumpBuf
>PUSHWI PPP.1.LEN >PUSHB hDev
>PUSHW L.PPP.1 >PUSHW L.PPP.1
lda hDev >PUSHWI PPP.1.LEN
>SYSCALL FWrite >SYSCALL FWrite
bcs .9 bcs .9
>SLEEP >SLEEP
>PUSHWI BUFSIZE >PUSHB hDev
>PUSHW ZPBufPtr >PUSHW ZPBufPtr
lda hDev >PUSHWI BUFSIZE
>SYSCALL FRead >SYSCALL FRead
bcs .9 bcs .9
>STYA ZPBufLen >STYA ZPBufLen
>LDYA ZPBufPtr >LDYA ZPBufPtr
@ -132,17 +132,23 @@ CS.RUN.LOOP >SLEEP
tay tay
bne .1 EOF, no char bne .1 EOF, no char
>PUSHWI BUFSIZE >PUSHB hDev
>PUSHW ZPBufPtr >PUSHW ZPBufPtr
lda hDev >PUSHWI BUFSIZE
>SYSCALL FRead >SYSCALL FRead
bcs CS.RUN.RTS bcs CS.RUN.RTS
>PUSHYA len phy
>PUSHW ZPBufPtr pha
ldy #S.PS.hStdOut ldy #S.PS.hStdOut
lda (pPS),y lda (pPS),y
>PUSHA
>PUSHW ZPBufPtr
pla
ply
>PUSHYA len
>SYSCALL FWrite >SYSCALL FWrite
bcs .9 bcs .9
@ -154,10 +160,11 @@ CS.RUN.LOOP >SLEEP
tay tay
bne CS.RUN.LOOP EOF = true, no char from STDIN bne CS.RUN.LOOP EOF = true, no char from STDIN
>PUSHWI BUFSIZE
>PUSHW ZPBufPtr
ldy #S.PS.hStdIn ldy #S.PS.hStdIn
lda (pPS),y lda (pPS),y
>PUSHA
>PUSHW ZPBufPtr
>PUSHWI BUFSIZE
>SYSCALL FRead >SYSCALL FRead
bcs .9 bcs .9
@ -168,11 +175,16 @@ CS.RUN.LOOP >SLEEP
txa txa
>PUSHYA len phy
pha
>PUSHB hDev
>PUSHW ZPBufPtr >PUSHW ZPBufPtr
lda hDev pla
ply
>PUSHYA len
>SYSCALL FWrite >SYSCALL FWrite
bcs .9 bcs .9
jmp CS.RUN.LOOP jmp CS.RUN.LOOP
.9 rts .9 rts
@ -203,9 +215,9 @@ CS.QUIT lda hDev
ATInit lda #250 ATInit lda #250
sta TimeOut sta TimeOut
>PUSHWI MSG.AT.LEN >PUSHB hDev
>PUSHW L.MSG.AT >PUSHW L.MSG.AT
lda hDev >PUSHWI MSG.AT.LEN
>SYSCALL FWrite >SYSCALL FWrite
bcs .9 bcs .9
@ -223,9 +235,9 @@ ATInit lda #250
rts rts
.2 >PUSHWI BUFSIZE .2 >PUSHB hDev
>PUSHW ZPBufPtr >PUSHW ZPBufPtr
lda hDev >PUSHWI BUFSIZE
>SYSCALL FRead >SYSCALL FRead
bcs .9 bcs .9

View File

@ -8,7 +8,7 @@ CL.Init >LDYAI 256
>STYA ZPCLBuf >STYA ZPCLBuf
txa txa
>STA.G CL.hCLBuf >STA.G CL.hBuf
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
@ -145,7 +145,10 @@ CL.Insert >LDA.G CL.Len
bmi .7 bmi .7
txa txa
>SYSCALL PutChar >SYSCALL PutChar
bcs .9
jsr CL.PrintEOL jsr CL.PrintEOL
.7 >LDA.G CL.MaxCnt READ N = 1, don't wait for CR .7 >LDA.G CL.MaxCnt READ N = 1, don't wait for CR
@ -156,7 +159,7 @@ CL.Insert >LDA.G CL.Len
>STA.G CL.bReady >STA.G CL.bReady
.8 clc .8 clc
rts .9 rts
*-------------------------------------- *--------------------------------------
CL.CHARIN.CTRL cpx #C.CR CL.CHARIN.CTRL cpx #C.CR
beq .18 beq .18
@ -189,11 +192,12 @@ CL.CLR lda (ZPCLBuf)
beq CL.Reset.1 beq CL.Reset.1
>LDA.G CL.bSilent >LDA.G CL.bSilent
bmi CL.Reset.1 bmi CL.Reset
.1 >LDA.G CL.Ptr .1 >LDA.G CL.Ptr
>CMP.G CL.Len >CMP.G CL.Len
beq .2 beq .2
inc inc
>STA.G CL.Ptr >STA.G CL.Ptr
lda #C.FS lda #C.FS
@ -209,12 +213,13 @@ CL.CLR lda (ZPCLBuf)
lda (ZPCLBuf),y lda (ZPCLBuf),y
bne .3 bne .3
jsr CL.PrintCLBuf jsr CL.Print
*-------------------------------------- *--------------------------------------
CL.Reset lda #0 CL.Reset lda #0
sta (ZPCLBuf) sta (ZPCLBuf)
CL.Reset.1 lda #0 CL.Reset.1 lda #0
ldy #CL.Ptr ldy #CL.Ptr
.1 sta (pData),y .1 sta (pData),y
@ -228,7 +233,9 @@ CL.ReadResetV sec Verbose mode
CL.ReadReset lda #$ff CL.ReadReset lda #$ff
>STA.G CL.MaxCnt >STA.G CL.MaxCnt
adc #0 CC = silent adc #0 CC = silent
iny CL.bSilent iny CL.bSilent
sta (pData),y sta (pData),y
rts rts
@ -322,7 +329,7 @@ CL.PrintEOL >LDA.G CL.Ptr
CL.PrintEOL.8 clc CL.PrintEOL.8 clc
rts rts
*-------------------------------------- *--------------------------------------
CL.PrintCLBuf ldy #S.PS.hStdOut CL.Print ldy #S.PS.hStdOut
lda (pPS),y lda (pPS),y
>PUSHA >PUSHA
>PUSHW ZPCLBuf >PUSHW ZPCLBuf

View File

@ -9,9 +9,9 @@ HIS.Init >LDYAI HISTORY.MAX Get a buffer for History
>STA.G HIS.hBuf >STA.G HIS.hBuf
>STZ.G HIS.Count * >STZ.G HIS.Count
>STA.G HIS.Index * >STA.G HIS.Index
>STA.G HIS.LRU * >STA.G HIS.LRU
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
HIS.Add >LDA.G HIS.hBuf HIS.Add >LDA.G HIS.hBuf
@ -22,18 +22,20 @@ HIS.Add >LDA.G HIS.hBuf
bcc .2 bcc .2
>LDA.G HIS.LRU >LDA.G HIS.LRU
tax
inc
cmp #HIS.MAX cmp #HIS.MAX
bne .1 bne .1
lda #0 lda #0
.1 >STA.G HIS.LRU .1 inc
>STA.G HIS.LRU
tax
>DEBUG
bra .7 bra .7
.2 tax .2 inc
>INC.G HIS.Count >STA.G HIS.Count
tax
.7 >PUSHB.G HIS.hBuf .7 >PUSHB.G HIS.hBuf
>PUSHBI 0 >PUSHBI 0
@ -51,19 +53,24 @@ HIS.Select >LDA.G HIS.Count
clc clc
.99 rts .99 rts
.10 >STZ.G HIS.Index .10 jsr CL.Reset
.1 jsr HIS.GetIndex >STZ.G HIS.Index
.1 >INC.G HIS.Index
jsr HIS.GetIndex
bcs .99 bcs .99
>PUSHW L.MSG.HIS >PUSHW L.MSG.HIS
>PUSHB.G HIS.Index >LDA.G HIS.Index
dec
>PUSHA
>PUSHW ZPCLBuf >PUSHW ZPCLBuf
>PUSHBI 3 >PUSHBI 3
>SYSCALL PrintF >SYSCALL PrintF
bcs .9 bcs .9
>INC.G HIS.Index >LDA.G HIS.Index
>CMP.G HIS.Count >CMP.G HIS.Count
bne .1 bne .1
@ -83,6 +90,8 @@ HIS.Select >LDA.G HIS.Count
bcs .7 bcs .7
and #$f and #$f
inc
>STA.G HIS.Index >STA.G HIS.Index
.7 >PUSHW L.MSG.HISROMPTCLR .7 >PUSHW L.MSG.HISROMPTCLR
@ -90,49 +99,37 @@ HIS.Select >LDA.G HIS.Count
>SYSCALL PrintF >SYSCALL PrintF
jsr CL.PrintPrompt jsr CL.PrintPrompt
bcs .9 bcc HIS.GetToCL1
>LDA.G HIS.Index
bne HIS.GetToCL1
jmp CL.Reset
.8 clc
.9 .9
HIS.Select.RTS rts HIS.Select.RTS rts
*-------------------------------------- *--------------------------------------
HIS.GetPrev >LDA.G HIS.hBuf HIS.GetPrev >LDA.G HIS.Count
beq HIS.Select.RTS
>LDA.G HIS.Count
beq HIS.Select.RTS empty history,nothing to do beq HIS.Select.RTS empty history,nothing to do
>LDA.G HIS.Index >LDA.G HIS.Index
bne .1 bne .1
>LDA.G HIS.Count >LDA.G HIS.Count
bra HIS.GetToCL
.1 dec .1 dec
bra HIS.GetToCL bra HIS.GetToCL
*-------------------------------------- *--------------------------------------
HIS.GetNext >LDA.G HIS.hBuf HIS.GetNext >LDA.G HIS.Count
beq HIS.Select.RTS
>LDA.G HIS.Count
beq HIS.Select.RTS empty history,nothing to do beq HIS.Select.RTS empty history,nothing to do
>EOR.G HIS.Index
beq HIS.GetToCL
>LDA.G HIS.Index >LDA.G HIS.Index
inc inc
>CMP.G HIS.Count
bne HIS.GetToCL
HIS.Reset >STZ.G HIS.Index
jmp CL.CLR
*-------------------------------------- *--------------------------------------
HIS.GetToCL >STA.G HIS.Index HIS.GetToCL >STA.G HIS.Index
HIS.GetToCL1 jsr CL.CLR jsr CL.CLR
HIS.GetToCL1 >LDA.G HIS.Index
beq .9
jsr HIS.GetIndex jsr HIS.GetIndex
bcs .9 bcs .9
@ -147,7 +144,7 @@ HIS.GetToCL1 jsr CL.CLR
>STA.G CL.Ptr >STA.G CL.Ptr
>STA.G CL.Len >STA.G CL.Len
jmp CL.PrintCLBuf jmp CL.Print
.9 rts .9 rts
*-------------------------------------- *--------------------------------------

View File

@ -264,6 +264,7 @@ CS.RUN.LOOP >SLEEP
tay tay
bne CS.RUN.LOOP bne CS.RUN.LOOP
>SYSCALL GetChar >SYSCALL GetChar
bcs .9 I/O err bcs .9 I/O err
@ -464,7 +465,7 @@ CS.QUIT jsr CORE.FUNCRESET
>SYSCALL FreeStkObj >SYSCALL FreeStkObj
.1 ldy #CL.hCLBuf .1 ldy #CL.hBuf
jsr .7 jsr .7
.2 jsr CMD.POPD .2 jsr CMD.POPD
@ -562,7 +563,7 @@ CS.END
MSG.GREETINGS .AZ "\r\nA2osX-SH %d.%d\r\n\r\n" MSG.GREETINGS .AZ "\r\nA2osX-SH %d.%d\r\n\r\n"
MSG.HIS .AZ "\r\n%3d : %s" MSG.HIS .AZ "\r\n%3d : %s"
MSG.HISPROMPT .AZ "\r\n\r\n? " MSG.HISPROMPT .AZ "\r\n\r\n? "
MSG.HISROMPTCLR .DA #C.BS,#C.BS,0 MSG.HISROMPTCLR .DA #C.BS,#C.BS,#0
MSG.PROMPT .AZ "\e[?7h$ " Enable Line Wrap MSG.PROMPT .AZ "\e[?7h$ " Enable Line Wrap
MSG.PROMPTCRLF .AZ "\e[?7l\r\n" Disable Line Wrap MSG.PROMPTCRLF .AZ "\e[?7l\r\n" Disable Line Wrap
MSG.TRACE .AS ">" MSG.TRACE .AS ">"
@ -697,7 +698,7 @@ bSET.X .BS 1
Sleep .BS 4 Sleep .BS 4
CL.hCLBuf .BS 1 CL.hBuf .BS 1
CL.Ptr .BS 1 CL.Ptr .BS 1
CL.Len .BS 1 CL.Len .BS 1

View File

@ -192,7 +192,8 @@ CS.RUN.LOOP >SLEEP
lda hSocket lda hSocket
>LIBCALL hLIBTCPIP,LIBTCPIP.EOF >LIBCALL hLIBTCPIP,LIBTCPIP.EOF
bcs .99 bcs .98
tay tay
bne .2 EOF, no char bne .2 EOF, no char
@ -200,30 +201,40 @@ CS.RUN.LOOP >SLEEP
>PUSHW ZPBufPtr >PUSHW ZPBufPtr
lda hSocket lda hSocket
>LIBCALL hLIBTCPIP,LIBTCPIP.Read >LIBCALL hLIBTCPIP,LIBTCPIP.Read
.98 bcs .99
.99 bcs .9 pha
phy
>PUSHYA len
>PUSHW ZPBufPtr
ldy #S.PS.hStdOut ldy #S.PS.hStdOut
lda (pPS),y lda (pPS),y
>PUSHA
>PUSHW ZPBufPtr
ply
pla
>PUSHYA len
>SYSCALL FWrite >SYSCALL FWrite
bcs .11 bcs .11
.2 ldy #S.PS.hStdIn .2 ldy #S.PS.hStdIn
lda (pPS),y lda (pPS),y
>SYSCALL FEOF >SYSCALL FEOF
bcs .11 CS.RUN.IOERR bcs .11 CS.RUN.IOERR
tay tay
bne CS.RUN.LOOP EOF = true, no char from STDIN bne CS.RUN.LOOP EOF = true, no char from STDIN
>PUSHWI BUFSIZE
>PUSHW ZPBufPtr
ldy #S.PS.hStdIn ldy #S.PS.hStdIn
lda (pPS),y lda (pPS),y
>PUSHA
>PUSHW ZPBufPtr
>PUSHWI BUFSIZE
>SYSCALL FRead >SYSCALL FRead
.11 bcs CS.RUN.IOERR .11 bcc .3
bra CS.RUN.IOERR
.99 bra CS.RUN.SKTERR
.3 >STYA ZPBufLen .3 >STYA ZPBufLen
lda (ZPBufPtr) lda (ZPBufPtr)
@ -234,8 +245,8 @@ CS.RUN.LOOP >SLEEP
>PUSHW ZPBufPtr >PUSHW ZPBufPtr
lda hSocket lda hSocket
>LIBCALL hLIBTCPIP,LIBTCPIP.Write >LIBCALL hLIBTCPIP,LIBTCPIP.Write
.9 bcs CS.RUN.SKTERR .9 bcs CS.RUN.SKTERR
jmp CS.RUN.LOOP jmp CS.RUN.LOOP
*-------------------------------------- *--------------------------------------
CS.RUN.SKTERR pha CS.RUN.SKTERR pha

View File

@ -85,17 +85,22 @@ CS.RUN.LOOP >SLEEP
tay tay
bne .1 EOF, no char bne .1 EOF, no char
>PUSHWI BUFSIZE >PUSHB hDev
>PUSHW ZPBufPtr >PUSHW ZPBufPtr
lda hDev >PUSHWI BUFSIZE
>SYSCALL FRead >SYSCALL FRead
bcs CS.RUN.RTS bcs CS.RUN.RTS
>PUSHYA len pha
>PUSHW ZPBufPtr phy
ldy #S.PS.hStdOut ldy #S.PS.hStdOut
lda (pPS),y lda (pPS),y
>PUSHA
>PUSHW ZPBufPtr
ply
pla
>PUSHYA len
>SYSCALL FWrite >SYSCALL FWrite
bcs .9 bcs .9
@ -107,10 +112,11 @@ CS.RUN.LOOP >SLEEP
tay tay
bne CS.RUN.LOOP EOF = true, no char from STDIN bne CS.RUN.LOOP EOF = true, no char from STDIN
>PUSHWI BUFSIZE
>PUSHW ZPBufPtr
ldy #S.PS.hStdIn ldy #S.PS.hStdIn
lda (pPS),y lda (pPS),y
>PUSHA
>PUSHW ZPBufPtr
>PUSHWI BUFSIZE
>SYSCALL FRead >SYSCALL FRead
bcs .9 bcs .9
@ -120,11 +126,17 @@ CS.RUN.LOOP >SLEEP
beq .8 beq .8
txa txa
>PUSHYA len
pha
phy
>PUSHB hDev
>PUSHW ZPBufPtr >PUSHW ZPBufPtr
lda hDev ply
pla
>PUSHYA len
>SYSCALL FWrite >SYSCALL FWrite
bcs .9 bcs .9
jmp CS.RUN.LOOP jmp CS.RUN.LOOP
.8 sec .8 sec

View File

@ -243,20 +243,23 @@ CS.RUN.OpenArc >PUSHYA
bcs .9 bcs .9
>STA.G hArcFile >STA.G hArcFile
pha >PUSHA
>PUSHWI 3
>PUSHW ZPInBufPtr >PUSHW ZPInBufPtr
pla >PUSHWI 3
>SYSCALL FRead >SYSCALL FRead
bcs .9 bcs .9
cpy #3 cpy #3
bne .99 bne .99
dey dey
.1 lda MSG.PAK,y .1 lda MSG.PAK,y
cmp (ZPInBufPtr),y cmp (ZPInBufPtr),y
bne .99 bne .99
dey dey
bpl .1 bpl .1
clc clc
.9 rts .9 rts
@ -269,21 +272,23 @@ CS.RUN.E.IARC >PUSHW L.MSG.E.IARC
rts rts
*-------------------------------------- *--------------------------------------
CS.RUN.GetFileType CS.RUN.GetFileType
>PUSHWI 3 >PUSHB.G hArcFile
>PUSHEA.G FileType >PUSHEA.G FileType
>LDA.G hArcFile >PUSHWI 3
>SYSCALL FRead >SYSCALL FRead
rts rts
*-------------------------------------- *--------------------------------------
CS.RUN.GetFileName CS.RUN.GetFileName
jsr CS.RUN.GetByte jsr CS.RUN.GetByte
bcs .9 bcs .9
tay pha
lda #0
>PUSHB.G hArcFile
>PUSHYA
>PUSHW ZPRelPathPtr >PUSHW ZPRelPathPtr
>LDA.G hArcFile
ply
lda #0
>PUSHYA
>SYSCALL FRead >SYSCALL FRead
bcs .9 bcs .9
@ -293,12 +298,12 @@ CS.RUN.GetFileName
* clc * clc
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
CS.RUN.ReadData >PUSHW ZPInBufLen CS.RUN.ReadData >PUSHB.G hArcFile
>LDA.G hInBuf >LDA.G hInBuf
>SYSCALL GetMemPtr >SYSCALL GetMemPtr
>STYA ZPInBufPtr >STYA ZPInBufPtr
>PUSHYA >PUSHYA
>LDA.G hArcFile >PUSHW ZPInBufLen
>SYSCALL FRead >SYSCALL FRead
rts rts
*-------------------------------------- *--------------------------------------
@ -339,11 +344,11 @@ CS.RUN.OpenFile >PUSHW ZPFullPathPtr
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
CS.RUN.WriteFile CS.RUN.WriteFile
>PUSHW ZPOutBufLen >PUSHB.G hFile
>LDA.G hOutBuf >LDA.G hOutBuf
>SYSCALL GetMemPtr >SYSCALL GetMemPtr
>PUSHYA >PUSHYA
>LDA.G hFile >PUSHW ZPOutBufLen
>SYSCALL FWrite >SYSCALL FWrite
rts rts
*-------------------------------------- *--------------------------------------

View File

@ -530,6 +530,14 @@ FPU.FOUT .EQ 210 PrintF
>PULLA >PULLA
sta ]1+1 sta ]1+1
.EM .EM
*--------------------------------------
.MA PUSHLZ
lda #0
ldy #3
:1 >PUSHA
dey
bpl :1
.EM
*-------------------------------------- *--------------------------------------
.MA PUSHL .MA PUSHL
ldy #3 ldy #3

View File

@ -9,21 +9,25 @@ NEW
#define O_TEXT 64 #define O_TEXT 64
#define O_CREATE 128 #define O_CREATE 128
#define SEEK_SET 0
#define SEEK_CUR 1
#define SEEK_END 2
int fastcall putchar(short int); int fastcall putchar(short int);
// int fputc ( hFILE stream , short int character ); int fputc (short int, short int);
int fastcall puts(const char*); int fastcall puts(const char*);
int fputs (short int, const char*); int fputs (short int,const char*);
char* fgets(short int, char* s, int n); char* fgets(short int,char* s,int n);
short int getchar(); short int getchar();
short int fastcall getc(short int); short int fastcall getc(short int);
// short int ungetc(short int c, short int ); // short int ungetc(short int c, short int );
short int fopen(const char*,short int,short int,int); short int fopen(const char*,short int,short int,int);
int fclose(short int); int fclose(short int);
// int fread (short int stream, void * ptr, int count ); int fread (short int,void*,int);
// int fwrite (short int stream, const void * ptr, int count ); int fwrite (short int,const void*,int);
int fastcall fflush(short int); int fastcall fflush(short int);
// int fseek( short int stream, long offset, short int whence ); int fseek(short int,long,short int);
int fastcall feof(short int); int fastcall feof(short int);
long fastcall ftell(short int); long fastcall ftell(short int);
int fastcall remove(const char*); int fastcall remove(const char*);

View File

@ -10,11 +10,11 @@ unsigned long strtoul(const char*,char**,int);
long fastcall atol(const char*); long fastcall atol(const char*);
int fastcall atoi(const char*); int fastcall atoi(const char*);
char *realpath(const char*,char*); char* realpath(const char*,char*);
char *expand(const char*,char*); char* expand(const char*,char*);
int setenv(const char*,const char*); int setenv(const char*,const char*);
char *getenv(const char*, char*); char* getenv(const char*, char*);
int putenv(char*); int putenv(char*);
int unsetenv(const char*); int unsetenv(const char*);

View File

@ -9,5 +9,6 @@ char* fastcall strupr (char*);
char* fastcall strlwr (char*); char* fastcall strlwr (char*);
int strcmp(const char*,const char*); int strcmp(const char*,const char*);
int strcasecmp(const char*,const char *); int strcasecmp(const char*,const char *);
MAN MAN
TEXT include/string.h TEXT include/string.h

13
INCLUDE/unistd.h.txt Normal file
View File

@ -0,0 +1,13 @@
NEW
AUTO 3,1
short int open(const char*, short int);
short int fastcall close(short int)
int read(short int, void*, int);
int write(short int, const void*, int);
// int lseek(short int,long,short int);
short int chown(const char*, short int, short int);`
MAN
TEXT include/unistd.h

View File

@ -131,10 +131,11 @@ CS.RUN.LOOP0 >SLEEP
>PUSHW L.ENV.TERM >PUSHW L.ENV.TERM
>SYSCALL UnsetEnv >SYSCALL UnsetEnv
.1 >PUSHWI TELNETOPTS.LEN .1 ldy #S.PS.hStdOut
>PUSHW L.TELNETOPTS
ldy #S.PS.hStdOut
lda (pPS),y lda (pPS),y
>PUSHA
>PUSHW L.TELNETOPTS
>PUSHWI TELNETOPTS.LEN
>SYSCALL FWrite >SYSCALL FWrite
bcs CS.RUN.EXIT I/O error bcs CS.RUN.EXIT I/O error
@ -156,8 +157,10 @@ CS.RUN.LOOP1 >SLEEP
cmp #IAC cmp #IAC
beq CS.RUN.IACMODE beq CS.RUN.IACMODE
>SYSCALL PutChar >SYSCALL PutChar
bcs CS.RUN.EXIT bcs CS.RUN.EXIT
bra CS.RUN.LOOP1 bra CS.RUN.LOOP1
.1 lda TimeOut .1 lda TimeOut
@ -206,23 +209,29 @@ CS.RUN.IAC.CMD cmp #WILL
cpx #TN.O.TTYPE cpx #TN.O.TTYPE
bne .2 bne .2
>PUSHWI TELNETOPT.TTYPE.LEN ldy #S.PS.hStdOut
lda (pPS),y
>PUSHA
>PUSHW L.TELNETOPT.TTYPE >PUSHW L.TELNETOPT.TTYPE
>PUSHWI TELNETOPT.TTYPE.LEN
bra .7 bra .7
.2 cpx #TN.O.LINEMODE .2 cpx #TN.O.LINEMODE
bne .8 bne .8
>PUSHWI TELNETOPT.LMODE.LEN ldy #S.PS.hStdOut
>PUSHW L.TELNETOPT.LMODE
.7 ldy #S.PS.hStdOut
lda (pPS),y lda (pPS),y
>SYSCALL FWrite >PUSHA
>PUSHW L.TELNETOPT.LMODE
>PUSHWI TELNETOPT.LMODE.LEN
.7 >SYSCALL FWrite
.8 jmp CS.RUN.LOOP1 .8 jmp CS.RUN.LOOP1
*-------------------------------------- *--------------------------------------
CS.RUN.IAC.SB >SYSCALL GetChar Wait for IAC SB.IS or SEND CS.RUN.IAC.SB >SYSCALL GetChar Wait for IAC SB.IS or SEND
bcs .9 bcs .9
sta IAC.SB.CMD sta IAC.SB.CMD
stz IAC.SB.LEN stz IAC.SB.LEN
.2 >SYSCALL GetChar .2 >SYSCALL GetChar

View File

@ -574,9 +574,9 @@ CS.RUN.SendFile >PUSHW ZPRepPtr
jsr CS.RUN.SendBuf Y,A = car count jsr CS.RUN.SendBuf Y,A = car count
.1 >PUSHWI 1024 .1 >PUSHB REQ.hFile
>PUSHW ZPRepPtr >PUSHW ZPRepPtr
lda REQ.hFile >PUSHWI 1024
>SYSCALL FRead >SYSCALL FRead
bcs .8 bcs .8

View File

@ -87,8 +87,8 @@ CS.INIT lda DevID
sec sec
rts rts
*-------------------------------------- *--------------------------------------
CS.INIT.DEV >PUSHBI 0 CS.INIT.DEV >PUSHW L.DEVNAME
>LDYA L.DEVNAME >PUSHBI 0
>SYSCALL Open >SYSCALL Open
bcc .8 bcc .8

View File

@ -516,7 +516,7 @@ CS.RUN.CopyStart
ldy #hSrcFullPath ldy #hSrcFullPath
lda #O.RDONLY lda #O.RDONLY
jsr CS.RUN.Open jsr CS.RUN.Open
bcs CS.RUN.CopyEnd bcs .9
>STA.G hSrcFile >STA.G hSrcFile
@ -532,9 +532,9 @@ CS.RUN.CopyStart
* clc * clc
rts rts
*-------------------------------------- *--------------------------------------
CS.RUN.Copy >PUSHWI X.COPY.BUF.SIZE Bytes To Read CS.RUN.Copy >PUSHB.G hSrcFile
>PUSHW ZPPtr1 Dst Ptr >PUSHW ZPPtr1 Dst Ptr
>LDA.G hSrcFile >PUSHWI X.COPY.BUF.SIZE Bytes To Read
>SYSCALL FRead >SYSCALL FRead
bcc .1 bcc .1
@ -545,9 +545,13 @@ CS.RUN.Copy >PUSHWI X.COPY.BUF.SIZE Bytes To Read
clc clc
bra .9 bra .9
.1 >PUSHYA Bytes To Write .1 phy
pha
>PUSHB.G hDstFile
>PUSHW ZPPtr1 Src Ptr >PUSHW ZPPtr1 Src Ptr
>LDA.G hDstFile pla
ply
>PUSHYA Bytes To Write
>SYSCALL FWrite >SYSCALL FWrite
bcs .9 bcs .9

View File

@ -87,13 +87,13 @@ CORE.Events jsr CORE.GetEvents
>STYA pStack >STYA pStack
lda #Evt.Table lda #Evt.Table
sta pEvent sta pEvent
.1 lda (pEvent) .1 lda (pEvent)
beq .3 beq .3
bmi .2 Ignore & Discard any timer event bpl .3
* jsr CORE.DumpEvent jsr CORE.DestroyEvent Discard any timer event
.2 jsr CORE.DestroyEvent
.3 lda pEvent .3 lda pEvent
clc clc
@ -366,14 +366,6 @@ CORE.GetPS tay
.8 clc .8 clc
rts rts
*-------------------------------------- *--------------------------------------
*CORE.DumpEvent ldy #S.EVT-1
*.1 >PUSHB (pEvent),y
* dey
* bpl .1
* >LDYAI .2
* jmp K.printf
*.2 .AZ "!Evt:F=%b,Dev=$%h,LO=$%h,HI=$%h,W1=$%H,W2=$%H\n"
*--------------------------------------
CORE.DestroyEvent CORE.DestroyEvent
lda (pEvent) lda (pEvent)
beq .9 beq .9

View File

@ -108,9 +108,11 @@ K.GetDevStatus >PULLW K.S.IOCTL+S.IOCTL.BUFPTR
bcs K.GetDev.9 bcs K.GetDev.9
lda #S.IOCTL.S.GETDIB lda #S.IOCTL.S.GETDIB
.HS 2C BIT ABS
*-------------------------------------- *--------------------------------------
DEV.GetDevStatus DEV.EOF lda #S.IOCTL.S.EOF
sta K.S.IOCTL+S.IOCTL.S *--------------------------------------
DEV.GetStatus sta K.S.IOCTL+S.IOCTL.S
ldy #S.FD.DEV.DEVID ldy #S.FD.DEV.DEVID
lda (pFD),y lda (pFD),y
@ -193,7 +195,7 @@ K.MKDev jsr SHARED.PullP2P1 ptr2=name,tr1=fd
jsr DEV.GetPDrv jsr DEV.GetPDrv
lda #S.IOCTL.S.STATUS lda #S.IOCTL.S.STATUS
jsr DEV.GetDevStatus jsr DEV.GetStatus
bcs .99 bcs .99
lda K.IOBuf Get Status byte lda K.IOBuf Get Status byte

View File

@ -128,15 +128,18 @@ FS.WRITE.REG ldx #MLIWRITE
ldy #S.FD.REG.REF ldy #S.FD.REG.REF
lda (pFD),y lda (pFD),y
sta K.MLI.PARAMS+1 sta K.MLI.PARAMS+1
>PULLW K.MLI.PARAMS+2
>PULLW K.MLI.PARAMS+4 >PULLW K.MLI.PARAMS+4
>PULLW K.MLI.PARAMS+2
lda #4 Param Count = 4 for MLIREAD & MLIWRITE lda #4 Param Count = 4 for MLIREAD & MLIWRITE
jsr GP.MLICall jsr GP.MLICall
bcs .9 bcs .9
>LDYA K.MLI.PARAMS+6 >LDYA K.MLI.PARAMS+6
.9 rts .9 inc pStack
rts
*-------------------------------------- *--------------------------------------
FS.EOF.REG >MLICALL MLIGETMARK FS.EOF.REG >MLICALL MLIGETMARK
bcs .9 bcs .9

View File

@ -438,7 +438,6 @@ HW.Detect >PUSHWI MSG.HW
>PUSHB A2osX.HWSubT >PUSHB A2osX.HWSubT
>PUSHBI 2 >PUSHBI 2
>SYSCALL2 printf >SYSCALL2 printf
rts rts
*-------------------------------------- *--------------------------------------
CPU.Init >PUSHWI MSG.CPU CPU.Init >PUSHWI MSG.CPU

View File

@ -1,8 +1,6 @@
NEW NEW
AUTO 3,1 AUTO 3,1
*-------------------------------------- *--------------------------------------
PFT.CheckPath0 ldy #0
.HS 2C BIT ABS
PFT.CheckPath1 ldy #1 PFT.CheckPath1 ldy #1
.HS 2C BIT ABS .HS 2C BIT ABS
PFT.CheckPath2 ldy #2 PFT.CheckPath2 ldy #2
@ -98,7 +96,7 @@ PFT.CheckNode4 ldy #4
.HS 2C BIT ABS .HS 2C BIT ABS
PFT.CheckNode2 ldy #2 PFT.CheckNode2 ldy #2
lda (pStack),y PFT.CheckNodeY lda (pStack),y
PFT.CheckNodeA stx .80+1 Save SYSCALL # PFT.CheckNodeA stx .80+1 Save SYSCALL #
sta .81+1 Save hFILE sta .81+1 Save hFILE

View File

@ -7,8 +7,9 @@ PIPE.CNT .EQ ZPDRV+4
PIPE.BASEH .EQ ZPDRV+6 PIPE.BASEH .EQ ZPDRV+6
PIPE.BUFH .EQ ZPDRV+7 PIPE.BUFH .EQ ZPDRV+7
PIPE.SIZEH .EQ ZPDRV+8 PIPE.SIZEH .EQ ZPDRV+8
PIPE.nCNT .EQ ZPDRV+10
*-------------------------------------- *--------------------------------------
IO.OPEN.PIPE ldy #S.FD.PIPE.S PIPE.OPEN ldy #S.FD.PIPE.S
lda (pFD),y lda (pFD),y
inc inc
sta (pFD),y sta (pFD),y
@ -17,7 +18,7 @@ IO.OPEN.PIPE ldy #S.FD.PIPE.S
clc clc
rts rts
*-------------------------------------- *--------------------------------------
IO.CLOSE.PIPE ldy #S.FD.PIPE.S PIPE.CLOSE ldy #S.FD.PIPE.S
lda (pFD),y lda (pFD),y
bmi .1 remote PS closed its end bmi .1 remote PS closed its end
@ -34,30 +35,27 @@ IO.CLOSE.PIPE ldy #S.FD.PIPE.S
.2 jmp DEV.Destroy .2 jmp DEV.Destroy
*-------------------------------------- *--------------------------------------
* (pStack)+2 count * (pStack)+2 buf
* (pStack)+0 buf * (pStack)+0 count
*-------------------------------------- *--------------------------------------
IO.WRITE.PIPE ldy #S.FD.PIPE.S PIPE.WRITE ldy #S.FD.PIPE.S
lda (pFD),y lda (pFD),y
bpl .10 bpl .10
jmp IO.READ.PIPE.EOF Remote PS closed the Pipe jmp PIPE.eEOF Remote PS closed the Pipe
.10 ldy #S.FD.PIPE.Free .10 ldy #S.FD.PIPE.Free
lda (pFD),y lda (pFD),y
ldy #2 cmp (pStack)
cmp (pStack),y
ldy #S.FD.PIPE.Free+1 ldy #S.FD.PIPE.Free+1
lda (pFD),y lda (pFD),y
ldy #3 ldy #1
sbc (pStack),y sbc (pStack),y
bcc IO.READ.PIPE.NODATA not enough room in PIPE bcc PIPE.eNODATA not enough room in PIPE
>PULLW PIPE.SRCBUF
ldy #S.FD.PIPE.Head+1 ldy #S.FD.PIPE.Head+1
jsr PIPE.GET.BUF jsr PIPE.GetBuf
>STYA PIPE.DSTBUF >STYA PIPE.DSTBUF
@ -70,6 +68,9 @@ IO.WRITE.PIPE ldy #S.FD.PIPE.S
sta PIPE.CNT+1 sta PIPE.CNT+1
eor #$ff eor #$ff
pha pha
>PULLW PIPE.SRCBUF
ldy #S.FD.PIPE.Head ldy #S.FD.PIPE.Head
lda (pFD),y lda (pFD),y
tay tay
@ -118,22 +119,20 @@ IO.WRITE.PIPE ldy #S.FD.PIPE.S
lda PIPE.BUFH lda PIPE.BUFH
sta (pFD),y sta (pFD),y
ldy #S.FD.PIPE.Free ldy #S.FD.PIPE.Free
jsr PIPE.SUB.CNT jsr PIPE.SubCnt
iny #S.FD.PIPE.Used iny #S.FD.PIPE.Used
jsr PIPE.ADD.CNT jsr PIPE.AddCnt
jmp IO.READ.PIPE.EXIT jmp PIPE.EXIT
IO.READ.PIPE.EOF PIPE.eEOF lda #MLI.E.EOF
lda #MLI.E.EOF
.HS 2C BIT ABS .HS 2C BIT ABS
IO.READ.PIPE.NODATA PIPE.eNODATA lda #E.NODATA
lda #E.NODATA
sec sec
>RET 4 >RET 5
*-------------------------------------- *--------------------------------------
IO.READ.PIPE ldy #S.FD.PIPE.Used+1 PIPE.READ ldy #S.FD.PIPE.Used+1
lda (pFD),y Data ? lda (pFD),y Data ?
dey dey
ora (pFD),y ora (pFD),y
@ -141,13 +140,12 @@ IO.READ.PIPE ldy #S.FD.PIPE.Used+1
ldy #S.FD.PIPE.S ldy #S.FD.PIPE.S
lda (pFD),y lda (pFD),y
bmi IO.READ.PIPE.EOF Remote PS closed the Pipe bmi PIPE.eEOF Remote PS closed the Pipe
bpl IO.READ.PIPE.NODATA
.10 >PULLW PIPE.DSTBUF get dest buf
ldy #S.FD.PIPE.Tail+1 bpl PIPE.eNODATA
jsr PIPE.GET.BUF
.10 ldy #S.FD.PIPE.Tail+1
jsr PIPE.GetBuf
>STYA PIPE.SRCBUF >STYA PIPE.SRCBUF
@ -177,6 +175,9 @@ IO.READ.PIPE ldy #S.FD.PIPE.Used+1
txa txa
eor #$ff eor #$ff
tax tax
>PULLW PIPE.DSTBUF get dest buf
ldy #S.FD.PIPE.Tail ldy #S.FD.PIPE.Tail
lda (pFD),y lda (pFD),y
tay tay
@ -225,17 +226,18 @@ IO.READ.PIPE ldy #S.FD.PIPE.Used+1
lda PIPE.BUFH lda PIPE.BUFH
sta (pFD),y sta (pFD),y
ldy #S.FD.PIPE.Free ldy #S.FD.PIPE.Free
jsr PIPE.ADD.CNT jsr PIPE.AddCnt
iny #S.FD.PIPE.Used iny #S.FD.PIPE.Used
jsr PIPE.SUB.CNT jsr PIPE.SubCnt
IO.READ.PIPE.EXIT
>LDYA PIPE.CNT Y,A = bytes written PIPE.EXIT >LDYA PIPE.CNT Y,A = bytes written
inc pStack
clc clc
rts rts
*-------------------------------------- *--------------------------------------
PIPE.GET.BUF lda (pFD),y PIPE.GetBuf lda (pFD),y
sta PIPE.BUFH sta PIPE.BUFH
ldy #S.FD.PIPE.Size+1 ldy #S.FD.PIPE.Size+1
@ -252,7 +254,7 @@ PIPE.GET.BUF lda (pFD),y
adc PIPE.BUFH adc PIPE.BUFH
rts rts
*-------------------------------------- *--------------------------------------
PIPE.ADD.CNT clc PIPE.AddCnt clc
lda (pFD),y lda (pFD),y
adc PIPE.CNT adc PIPE.CNT
sta (pFD),y sta (pFD),y
@ -264,7 +266,7 @@ PIPE.ADD.CNT clc
sta (pFD),y sta (pFD),y
rts rts
*-------------------------------------- *--------------------------------------
PIPE.SUB.CNT sec PIPE.SubCnt sec
lda (pFD),y lda (pFD),y
sbc PIPE.CNT sbc PIPE.CNT
sta (pFD),y sta (pFD),y
@ -276,7 +278,7 @@ PIPE.SUB.CNT sec
sta (pFD),y sta (pFD),y
rts rts
*-------------------------------------- *--------------------------------------
IO.EOF.PIPE clc PIPE.EOF clc
ldy #S.FD.PIPE.Used ldy #S.FD.PIPE.Used
lda (pFD),y lda (pFD),y
iny iny

View File

@ -513,16 +513,19 @@ PS.LoadGetHeader
sta .1+1 sta .1+1
>PUSHWI 128 >PUSHA
>PUSHWI K.IOBuf+128 >PUSHWI K.IOBuf+128
.1 lda #$ff SELF MODIFIED >PUSHWI 128
>SYSCALL2 fread >SYSCALL2 fread
php php
pha pha
lda .1+1 .1 lda #$FF SELF MODIFIED
>SYSCALL2 fclose >SYSCALL2 fclose
pla pla
plp plp
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
PS.Load.ROOT .AZ "ROOT" PS.Load.ROOT .AZ "ROOT"
@ -823,10 +826,10 @@ K.LoadFile clc
>STYA PS.MemPtr >STYA PS.MemPtr
stx PS.hMem stx PS.hMem
>PUSHWI $ffff >PUSHB PS.hFILE
>PUSHW PS.MemPtr >PUSHW PS.MemPtr
lda PS.hFILE >PUSHWI $ffff
>SYSCALL2 FRead >SYSCALL2 fread
bcs .96 bcs .96
sty .7+1 sty .7+1

View File

@ -149,11 +149,11 @@ PWD.Flush >STYA PWD.FileSize
.1 sta .7+1 .1 sta .7+1
>PUSHW PWD.FileSize >PUSHA
lda .8+1 lda .8+1
jsr K.getmemptr jsr K.getmemptr
>PUSHYA >PUSHYA
lda .7+1 >PUSHW PWD.FileSize
>SYSCALL2 FWrite >SYSCALL2 FWrite
bcc .7 bcc .7

View File

@ -1,6 +1,35 @@
NEW NEW
AUTO 3,1 AUTO 3,1
*/-------------------------------------- */--------------------------------------
* # fputc (BLOCKING)
* Print A (char) to hFILE
* ## C
* `int fputc ( hFILE stream , short int character );`
* ## ASM
* **In:**
* `>PUSHB stream`
* `>PUSHB character`
* `>SYSCALL fputc`
* ## RETURN VALUE
* CC = success
*\--------------------------------------
K.FPutC lda (pStack) character
sta K.IOBuf
ldy #1
lda (pStack),y hFile
>PUSHA
jsr STDIO.Put1
bcc .8
tay
beq .9 BLOCKING, keep parms on stack
.8 >POP 2
.9 rts
*/--------------------------------------
* # putchar (BLOCKING) * # putchar (BLOCKING)
* Print A (char) to StdOut * Print A (char) to StdOut
* ## C * ## C
@ -12,56 +41,28 @@ NEW
* ## RETURN VALUE * ## RETURN VALUE
* CC = success * CC = success
*\-------------------------------------- *\--------------------------------------
K.PutChar >PUSHA character K.PutChar sta K.IOBuf character
ldy #S.PS.hStdOut ldy #S.PS.hStdOut
lda (pPS),y lda (pPS),y
jsr K.FPutC >PUSHA
bcc .8 *--------------------------------------
STDIO.Put1 >PUSHWI K.IOBuf buf
tay
bne .8
>PULLA CS,A=0:BLOCKING, restore A
.8 rts
*/--------------------------------------
* # fputc (BLOCKING)
* Print A (char) to hFILE
* ## C
* `int fputc ( hFILE stream , short int character );`
* ## ASM
* **In:**
* `>PUSHB character`
* `lda stream`
* `>SYSCALL fputc`
* ## RETURN VALUE
* CC = success
*\--------------------------------------
K.FPutC jsr PFT.CheckNodeA
bcs .8
lda (pStack) character
sta K.IOBuf
lda #0 lda #0
>PUSHA >PUSHA
inc write 1 byte inc write 1 byte
>PUSHA >PUSHA
>PUSHWI K.IOBuf buf jsr K.FWrite
jsr IO.Write bcc .9
bcc .8 pop char...
cmp #E.NODATA tay
sec bne .9
bne .8
inc CS,A=0:BLOCKING >POP 5
rts
.8 >POP 1 .9 rts
rts
*/-------------------------------------- */--------------------------------------
* # puts (BLOCKING) * # puts (BLOCKING)
* Write Str to StdOut, appends '\r\n' * Write Str to StdOut, appends '\r\n'
@ -76,13 +77,13 @@ K.FPutC jsr PFT.CheckNodeA
*\-------------------------------------- *\--------------------------------------
K.PutS >STYA .1+1 K.PutS >STYA .1+1
ldy #0 ldx #0
.1 lda $FFFF,y SELF MODIFIED .1 lda $FFFF,x SELF MODIFIED
beq .2 beq .2
sta K.IOBuf,y sta K.IOBuf,x
iny inx
bne .1 bne .1
.9 lda #E.BUF .9 lda #E.BUF
@ -90,33 +91,32 @@ K.PutS >STYA .1+1
rts rts
.2 lda #C.CR .2 lda #C.CR
sta K.IOBuf,y sta K.IOBuf,x
iny inx
beq .9 beq .9
lda #C.LF lda #C.LF
sta K.IOBuf,y sta K.IOBuf,x
iny inx
beq .9 beq .9
lda #0
sta K.IOBuf,y
ldy #S.PS.hStdOut ldy #S.PS.hStdOut
lda (pPS),y lda (pPS),y
>PUSHA >PUSHA
>PUSHWI K.IOBuf >PUSHWI K.IOBuf
>PUSHBI 0
txa
>PUSHA
jsr K.FPutS jsr K.FWrite
bcc .99
bcc K.PutS.RTS
tay tay
bne K.PutS.RTS bne .99
>LDYA .1+1 CS,A=0:BLOCKING, restore Y,A >POP 5 pop hFile, buffer & len
K.PutS.RET3 >POP 3 pop StdOut & buffer .99 rts
K.PutS.RTS rts
*/-------------------------------------- */--------------------------------------
* # fputs (BLOCKING) * # fputs (BLOCKING)
* Write Str to hFILE * Write Str to hFILE
@ -130,42 +130,52 @@ K.PutS.RTS rts
* ## RETURN VALUE * ## RETURN VALUE
* CC = success * CC = success
*\-------------------------------------- *\--------------------------------------
K.FPutS jsr PFT.CheckNode2 set IO.hFD K.FPutS lda (pStack)
bcs K.PutS.RET3 sta ZPPtr1 Get String
sta ZPPtr2
lda (pStack)
sta ZPPtr2 Get String
ldy #1 ldy #1
lda (pStack),y lda (pStack),y
sta ZPPtr1+1
sta ZPPtr2+1 sta ZPPtr2+1
ldy #0 ldy #0
ldx #0 ldx #0
.1 lda (ZPPtr2),y .1 lda (ZPPtr1),y
beq .2 beq .2
iny iny
bne .1 bne .1
inx inx
inc ZPPtr1+1
bra .1 bra .1
.2 txa .2 phy
>PUSHA push len HI
tya ldy #2
>PUSHA push len LO lda (pStack),y
>PUSHA
>PUSHW ZPPtr2 >PUSHW ZPPtr2
jsr IO.Write
bcc K.PutS.RET3
cmp #E.NODATA txa
sec >PUSHA push len HI
bne K.PutS.RET3 IO Error
inc FF-> 0 = BLOCKING pla
>PUSHA push len LO
jsr K.Write
bcc .8
tay
bne .8
>POP 5
rts
.8 >POP 2
K.FPutS.RTS rts K.FPutS.RTS rts
*/-------------------------------------- */--------------------------------------
@ -190,10 +200,7 @@ K.FPutS.RTS rts
* (pStack)+2 s -> ZPPtr2 * (pStack)+2 s -> ZPPtr2
* (pStack)+0 n -> ZPPtr1 * (pStack)+0 n -> ZPPtr1
*-------------------------------------- *--------------------------------------
K.FGetS jsr PFT.CheckNode4 K.FGetS ldy #3
bcs K.FPutS.RTS
ldy #3
.1 lda (pStack),y .1 lda (pStack),y
sta ZPPtr1,y sta ZPPtr1,y
@ -203,18 +210,13 @@ K.FGetS jsr PFT.CheckNode4
lda ZPPtr1+1 lda ZPPtr1+1
bmi .4 already something in buffer bmi .4 already something in buffer
.2 jsr STDIO.Get.1 .2 ldy #4
bcc .3 lda (pStack),y
jsr STDIO.Get1
bcs .9
cmp #MLI.E.EOF * BLOCKING > POP 5 FREAD parms
beq .9 * EOF or IOERR.... > POP 5 FGETS parms
cmp #E.NODATA
sec
bne .9 IO error
lda #0 BLOCKING
rts
.3 lda K.IOBuf .3 lda K.IOBuf
cmp #C.LF Discard any leading LF from a prev CR/LF cmp #C.LF Discard any leading LF from a prev CR/LF
@ -233,7 +235,9 @@ K.FGetS jsr PFT.CheckNode4
bra .5 bra .5
*-------------------------------------- *--------------------------------------
.4 jsr STDIO.Get.1 .4 ldy #4
lda (pStack),y
jsr STDIO.Get1
bcs .6 bcs .6
.5 lda K.IOBuf .5 lda K.IOBuf
@ -249,12 +253,15 @@ K.FGetS jsr PFT.CheckNode4
beq .8 Buffer full beq .8 Buffer full
.6 cmp #MLI.E.EOF .6 tay
beq .70
cmp #MLI.E.EOF
beq .8 String terminated by EOF beq .8 String terminated by EOF
cmp #E.NODATA bra .9 I/O error > POP 5 FGETS parms
sec
bne .9 I/O error .70 jsr .9 > POP 5 FREAD parms
ldy #3 ldy #3
@ -298,29 +305,27 @@ K.GetChar ldy #S.PS.hStdIn
* CC = success * CC = success
* A = char * A = char
*\-------------------------------------- *\--------------------------------------
K.GetC jsr PFT.CheckNodeA K.GetC jsr STDIO.Get1
bcs .9
jsr STDIO.Get.1
bcc .8 bcc .8
cmp #E.NODATA tay
sec
bne .9 I/O error bne .9 I/O error
inc 0 = BLOCKING >POP 5 BLOCKING
rts rts
.8 lda K.IOBuf .8 lda K.IOBuf
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
STDIO.Get.1 lda #0 STDIO.Get1 >PUSHA
>PUSHWI K.IOBuf
lda #0
>PUSHA >PUSHA
inc read 1 byte inc read 1 byte
>PUSHA >PUSHA
>PUSHWI K.IOBuf jmp K.FRead
jmp IO.Read
*/-------------------------------------- */--------------------------------------
* # ungetc * # ungetc
* push byte back into input stream * push byte back into input stream
@ -402,17 +407,17 @@ K.FClose jsr PFT.CheckNodeA
* `int fread (short int stream, void * ptr, int count );` * `int fread (short int stream, void * ptr, int count );`
* ## ASM * ## ASM
* **In:** * **In:**
* `>PUSHWI count` * `>PUSHB stream`
* `>PUSHW ptr` * `>PUSHW ptr`
* `lda stream` * `>PUSHW count`
* `>SYSCALL fread` * `>SYSCALL fread`
* ## RETURN VALUE * ## RETURN VALUE
* Y,A = Bytes Read * Y,A = Bytes Read
*\-------------------------------------- *\--------------------------------------
K.FRead jsr PFT.CheckNodeA K.FRead jsr PFT.CheckNode4
bcs K.FWrite.RET4 bcs K.FWrite.RET5
jsr IO.Read jsr UNISTD.Read
bcs K.FWrite.9 bcs K.FWrite.9
K.FRead.RTS rts K.FRead.RTS rts
@ -423,32 +428,33 @@ K.FRead.RTS rts
* `int fwrite ( short int stream, const void * ptr, int count );` * `int fwrite ( short int stream, const void * ptr, int count );`
* ## ASM * ## ASM
* **In:** * **In:**
* `>PUSHWI count` * `>PUSHB stream`
* `>PUSHW ptr` * `>PUSHW ptr`
* `lda stream` * `>PUSHW count`
* `>SYSCALL fwrite` * `>SYSCALL fwrite`
* ## RETURN VALUE * ## RETURN VALUE
* Y,A = Bytes Written * Y,A = Bytes Written
*\-------------------------------------- *\--------------------------------------
K.FWrite jsr PFT.CheckNodeA K.FWrite jsr PFT.CheckNode4
bcs K.FWrite.RET4 bcs K.FWrite.RET5
jsr IO.Write jsr UNISTD.Write
bcc K.FWrite.RTS bcc K.FRead.RTS
K.FWrite.9 cmp #E.NODATA K.FWrite.9 cmp #E.NODATA
sec sec
bne K.FWrite.RTS IO Error bne K.FRead.RTS IO Error
dec pStack FF = NODATA dec pStack FF = NODATA
dec pStack dec pStack
dec pStack dec pStack
dec pStack keep ptr & count on stack dec pStack
dec pStack keep stream, ptr & count on stack
inc 0 = BLOCKING inc 0 = BLOCKING
* sec * sec
K.FWrite.RTS rts rts
K.FWrite.RET4 >RET 4 K.FWrite.RET5 >RET 5
*/-------------------------------------- */--------------------------------------
* # FFlush * # FFlush
* ## C * ## C
@ -476,25 +482,30 @@ STDIO.IOERR lda #MLI.E.IO
* `int fseek( short int stream, long offset, short int whence );` * `int fseek( short int stream, long offset, short int whence );`
* ## ASM * ## ASM
* **In:** * **In:**
* `>PUSHBI whence` * `>PUSHB stream`
* `>PUSHL offset` * `>PUSHL offset`
* `lda stream` * `>PUSHB whence`
* `>SYSCALL fseek` * `>SYSCALL fseek`
*\------------------------------------- *\-------------------------------------
K.FSeek jsr PFT.CheckNodeA K.FSeek ldy #5
jsr PFT.CheckNodeY
bcc .11 bcc .11
>RET 5 >RET 5
.11 lda (pFD) .11 lda (pFD)
bne STDIO.IOERR bne STDIO.IOERR
>PULLL ACC32
>PULLA whence >PULLA whence
cmp #SEEK.END tax
>PULLL ACC32
cpx #SEEK.END
beq .30 beq .30
bcs .98 bcs .98
dec dex
beq .20 beq .20
stz K.MLI.PARAMS+2 stz K.MLI.PARAMS+2
@ -557,17 +568,17 @@ K.FSeek.RTS rts
K.FEOF jsr PFT.CheckNodeA K.FEOF jsr PFT.CheckNodeA
bcs K.FSeek.RTS bcs K.FSeek.RTS
IO.EOF lda (pFD) lda (pFD)
tax tax
jmp (.1,x) jmp (.1,x)
.1 .DA FS.EOF.REG .1 .DA FS.EOF.REG
.DA STDIO.IOERR DIR .DA STDIO.IOERR DIR
.DA IO.EOF.CDEV .DA DEV.EOF
.DA STDIO.IOERR BDEV .DA STDIO.IOERR BDEV
.DA STDIO.IOERR LNK .DA STDIO.IOERR LNK
.DA STDIO.IOERR DSOCK .DA STDIO.IOERR DSOCK
.DA IO.EOF.SSOCK .DA IO.EOF.SSOCK
.DA IO.EOF.PIPE .DA PIPE.EOF
*/-------------------------------------- */--------------------------------------
* # FTell * # FTell
* Return the current value of the file-position indicator * Return the current value of the file-position indicator
@ -831,20 +842,19 @@ K.PrintF.1 sec format string->ptr2
sec sec
jmp STDIO.Exit jmp STDIO.Exit
*-------------------------------------- *--------------------------------------
.8 ldx PrintF.hFILE .8 lda PrintF.hFILE
beq .80 Writing to buffer, append \0 beq .80 Writing to buffer, append \0
>PUSHW PrintF.Cnt Writing to File/dev... >PUSHA
>PUSHWI K.IOBuf >PUSHWI K.IOBuf
>PUSHW PrintF.Cnt Writing to File/dev...
txa
jsr K.FWrite jsr K.FWrite
bcc .81 bcc .81
tay tay
bne .9 bne .9
>RET 4 0=BLOCKING >RET 5 0=BLOCKING
.80 ldy PrintF.Cnt A=0, Writing to buffer, append \0 .80 ldy PrintF.Cnt A=0, Writing to buffer, append \0
sta (pIOBuf),y sta (pIOBuf),y
@ -1070,6 +1080,7 @@ PrintF.PutC phy
ply ply
inc PrintF.Cnt inc PrintF.Cnt
bne .8 bne .8
lda PrintF.hFILE lda PrintF.hFILE
bne .9 bne .9

View File

@ -182,7 +182,7 @@ STRVX.GetID jsr K.GetMemPtr
rts rts
*-------------------------------------- *--------------------------------------
STRVX.Next lda (ZPPtr1) STRVX.Next lda (ZPPtr1)
sec clc
adc ZPPtr1 adc ZPPtr1
sta ZPPtr1 sta ZPPtr1
bcc .8 bcc .8

View File

@ -6,14 +6,14 @@ NEW
* `hFD open(const char *pathname, short int flags);` * `hFD open(const char *pathname, short int flags);`
* ## ASM * ## ASM
* **In:** * **In:**
* `>PUSHW pathname`
* `>PUSHB flags` * `>PUSHB flags`
* `>LDYA pathname`
* `>SYSCALL open` * `>SYSCALL open`
* ## RETURN VALUE * ## RETURN VALUE
* A = hFD * A = hFD
* REG File created on ProDOS : T=TXT,X=$0000 * REG File created on ProDOS : T=TXT,X=$0000
*\-------------------------------------- *\--------------------------------------
K.Open jsr PFT.YAToMLIPATH K.Open jsr PFT.CheckPath1
>PULLB IO.Open.FLAGS >PULLB IO.Open.FLAGS
lda #S.FI.T.TXT lda #S.FI.T.TXT
@ -52,7 +52,7 @@ IO.Open ldx #5 /dev/
.DA STDIO.IOERR LNK .DA STDIO.IOERR LNK
.DA IO.OPEN.SOCK .DA IO.OPEN.SOCK
.DA IO.OPEN.SOCK .DA IO.OPEN.SOCK
.DA IO.OPEN.PIPE .DA PIPE.OPEN
.8 jmp FS.OPEN.REG .8 jmp FS.OPEN.REG
@ -78,24 +78,27 @@ IO.Close lda (pFD) #S.FD.T
.DA STDIO.IOERR LNK .DA STDIO.IOERR LNK
.DA IO.CLOSE.SOCK .DA IO.CLOSE.SOCK
.DA IO.CLOSE.SOCK .DA IO.CLOSE.SOCK
.DA IO.CLOSE.PIPE .DA PIPE.CLOSE
*/-------------------------------------- */--------------------------------------
* # read * # read
* ## C * ## C
* `int read(hFD fd, void *buf, int count);` * `int read(hFD fd, void *buf, int count);`
* ## ASM * ## ASM
* **In:** * **In:**
* `>PUSHWI count` * `>PUSHB fd`
* `>PUSHW buf` * `>PUSHW buf`
* `lda fd` * `>PUSHW count`
* `>SYSCALL read` * `>SYSCALL read`
* ## RETURN VALUE * ## RETURN VALUE
* CC: Y,A = bytes read * CC: Y,A = bytes read
* CS: A = EC * CS: A = EC
*\-------------------------------------- *\--------------------------------------
K.Read jsr DEV.GetPFD K.Read ldy #4 hDev
lda (pStack),y
jsr DEV.GetPFD
IO.Read lda (pFD) #S.FD.T UNISTD.Read lda (pFD) #S.FD.T
tax tax
jmp (.1,x) jmp (.1,x)
.1 .DA FS.READ.REG .1 .DA FS.READ.REG
@ -105,24 +108,27 @@ IO.Read lda (pFD) #S.FD.T
.DA STDIO.IOERR LNK .DA STDIO.IOERR LNK
.DA STDIO.IOERR DSOCK .DA STDIO.IOERR DSOCK
.DA IO.READ.SSOCK .DA IO.READ.SSOCK
.DA IO.READ.PIPE .DA PIPE.READ
*/-------------------------------------- */--------------------------------------
* # write * # write
* ## C * ## C
* `int write(hFD fd, const void *buf, int count);` * `int write(hFD fd, const void *buf, int count);`
* ## ASM * ## ASM
* **In:** * **In:**
* `>PUSHWI count` * `>PUSHB fd`
* `>PUSHW buf` * `>PUSHW buf`
* `lda fd` * `>PUSHW count`
* `>SYSCALL write` * `>SYSCALL write`
* ## RETURN VALUE * ## RETURN VALUE
* CC: Y,A = bytes written * CC: Y,A = bytes written
* CS: A = EC * CS: A = EC
*\-------------------------------------- *\--------------------------------------
K.Write jsr DEV.GetPFD K.Write ldy #4 hDev
lda (pStack),y
jsr DEV.GetPFD
IO.Write lda (pFD) #S.FD.T UNISTD.Write lda (pFD) #S.FD.T
tax tax
jmp (.1,x) jmp (.1,x)
.1 .DA FS.WRITE.REG .1 .DA FS.WRITE.REG
@ -132,7 +138,7 @@ IO.Write lda (pFD) #S.FD.T
.DA STDIO.IOERR LNK .DA STDIO.IOERR LNK
.DA STDIO.IOERR DSOCK .DA STDIO.IOERR DSOCK
.DA IO.WRITE.SSOCK .DA IO.WRITE.SSOCK
.DA IO.WRITE.PIPE .DA PIPE.WRITE
*-------------------------------------- *--------------------------------------
IO.OPEN.DEV ldx #IOCTL.OPEN IO.OPEN.DEV ldx #IOCTL.OPEN
lda IO.hDevNod lda IO.hDevNod
@ -141,7 +147,8 @@ IO.OPEN.DEV ldx #IOCTL.OPEN
*-------------------------------------- *--------------------------------------
IO.OPEN.SOCK lda IO.hDevNod IO.OPEN.SOCK lda IO.hDevNod
clc clc
rts
IO.RTS rts
*-------------------------------------- *--------------------------------------
IO.CLOSE.DEV ldx #IOCTL.CLOSE IO.CLOSE.DEV ldx #IOCTL.CLOSE
lda IO.hDevNod lda IO.hDevNod
@ -152,16 +159,18 @@ IO.READ.CDEV ldx #IOCTL.READ
*-------------------------------------- *--------------------------------------
IO.WRITE.CDEV ldx #IOCTL.WRITE IO.WRITE.CDEV ldx #IOCTL.WRITE
>PULLW K.S.IOCTL+S.IOCTL.BUFPTR
>PULLW K.S.IOCTL+S.IOCTL.BYTECNT >PULLW K.S.IOCTL+S.IOCTL.BYTECNT
>PULLW K.S.IOCTL+S.IOCTL.BUFPTR
inc pStack pop hFD
>LDYAI K.S.IOCTL >LDYAI K.S.IOCTL
jsr DEV.pDrvJmp jsr DEV.pDrvJmp
bcs IO.RTS bcs .9
>LDYA K.S.IOCTL+S.IOCTL.BYTECNT >LDYA K.S.IOCTL+S.IOCTL.BYTECNT
IO.RTS rts .9 rts
*-------------------------------------- *--------------------------------------
IO.CLOSE.SOCK ldy #S.FD.SSOCK.CLOSE IO.CLOSE.SOCK ldy #S.FD.SSOCK.CLOSE
.HS 2C BIT ABS .HS 2C BIT ABS
@ -183,9 +192,20 @@ IO.WRITE.SSOCK ldy #S.FD.SSOCK.WRITE
>STYA .1+1 >STYA .1+1
lda IO.hFD lda IO.hFD
.1 jmp $FFFF SELF MODIFIED .1 jmp $FFFF SELF MODIFIED
*-------------------------------------- */-------------------------------------
IO.EOF.CDEV lda #S.IOCTL.S.EOF * # LSeek
jmp DEV.GetDevStatus * Set the file-position indicator for hFD
* ## C
* `int lseek( short int hFD, long offset, short int whence );`
* ## ASM
* **In:**
* `>PUSHB hFD`
* `>PUSHL offset`
* `>PUSHB whence`
* `>SYSCALL fseek`
*\-------------------------------------
K.LSeek
*/-------------------------------------- */--------------------------------------
* # ChOwn * # ChOwn
* ## C * ## C