mirror of
https://github.com/A2osX/A2osX.git
synced 2024-05-28 12:41:34 +00:00
Kernel 0.94++
This commit is contained in:
parent
abb96fcfc6
commit
9582ca9af0
|
@ -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.
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
|
|
|
@ -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
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
|
|
@ -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
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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*);
|
||||||
|
|
|
@ -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*);
|
||||||
|
|
||||||
|
|
|
@ -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
13
INCLUDE/unistd.h.txt
Normal 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
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue
Block a user