diff --git a/.Docs/Acosx Words.md b/.Docs/Acosx Words.md
index 70a6ae7c..0cd5786e 100644
--- a/.Docs/Acosx Words.md
+++ b/.Docs/Acosx Words.md
@@ -70,7 +70,7 @@ This document lists all of the **ACOS Words** supported in the A2osX implementat
| SETINT | SETINT (*string1* [,*string1*...])
SETINT ("")
SETINT (*number*) | Not Yet Implemented | Sets the interrupt table with specified keys. | The SETINT command is used to set up 'interrupt' keys. Once setup the system will check for those keys whenever text is being displayed. If one of the keys are encountered, all further output will be suppressed until an input statement of some kind is encountered or the SETINT is reset. To reset the SETINT command, use the second syntax. If you wish to set the interrupt keys to those pre-defined by the ACOS config program, use the third syntax. SETINT(1) will set the interrupt key to the 'file stop' character. SETINT(2) will set the interrupt keys to the 'file stop' and 'file next' characters. | |
| STR$ | *string*=STR$(*number*) | Not Yet Implemented | Returns string representation of a numerical expression. | Returns the numerical supplied numerical expression as a string. | |
| TEXT | TEXT | Not Yet Implemented | Clear the screen and any window on the local console. | Used to clear the screen and any window on the local console. BJB REMY TODO: How is this different from HOME? | |
-| THEN | THEN | Not Yet Implemented | Statement separator for logical IF statements. | Separates statements within IF statements. | |
+| THEN | THEN | Impl. | Statement separator for logical IF statements. | Separates statements within IF statements. | |
| TIME$ | *string*=TIME$ | Not Yet Implemented | Returns the current TIME into a string. | The TIME$ function is used to get the current time from your clock. If your system is equipped with a clock, the time will be returned in a "HH:MM:SS XM" format. If your clock is in the 24 hour configuration then it will be returned in the "HH:MM:SS" format. If you have no clock, then your estimated time on will be returned. The estimated time is based upon the number of characters output and the speed they were sent. The format for estimated time is "HH:MM:SS ET". When the clock is first reset via a MODEM(0) command, the time will be "00:00:00 ET" and will advance from there. REMY TODO: How is your implementation of no clocks? | |
| TONE | TONE (*pitch*, *duration*) | Not Yet Implemented | Generates a tone on the local speaker. | The TONE function is used to generate a tone from the speaker in your computer. BJB TODO: Need to determine limits. | |
| UPDATE | UPDATE | Not Yet Implemented | Flushes any cached data for the current message database. | The UPDATE statement is used to write any information about the current message base from memory out to disk (i.e. a flush operation). Normally, certain things are buffered and will stay within memory for long periods of time. In the event of a power failure or a system reset, this data will be lost before it is written out to disk. Use the UPDATE statement to force the data to be written out to disk. | |
diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po
index 77908878..cbc43182 100644
Binary files a/.Floppies/A2OSX.BUILD.po and b/.Floppies/A2OSX.BUILD.po differ
diff --git a/A2osX.S.QC.txt b/A2osX.S.QC.txt
index 7adf6999..59188ba6 100644
--- a/A2osX.S.QC.txt
+++ b/A2osX.S.QC.txt
@@ -39,9 +39,24 @@ A2osX.QC.Start1 sei
lda #$8C Reset 80 col screen ($0C=FF=HOME)
jsr $C300
- lda $280
+ ldx $280
beq A2osX.QC.Start2
+.2 dex
+ lda $280,x
+ cmp #'/'
+ bne .2
+
+ stx A2osX.QC.BOOT
+
+.3 lda $280,x
+ sta A2osX.QC.BOOT,x
+ dex
+ bne .3
+
+ jsr A2osX.QC.SetPFX
+ bcs A2osX.QC.Start2
+
jsr A2osX.QC.Load
bcs A2osX.QC.Start2
@@ -51,9 +66,7 @@ A2osX.QC.Start2 sec
>LDYAI MSG.INIT1
jsr A2osX.QC.PrintYA
-.3 jsr MLI
- .DA #MLISETPREFIX
- .DA MLISETPREFIX03
+.3 jsr A2osX.QC.SetPFX
bcc .4
>LDYAI MSG.SETPREFIXKO
@@ -113,6 +126,11 @@ A2osX.QC.Start2 sec
A2osX.QC.JMP >DEBUGOA
jmp $2000
*--------------------------------------
+A2osX.QC.SetPFX jsr MLI
+ .DA #MLISETPREFIX
+ .DA MLISETPREFIX03
+ rts
+*--------------------------------------
A2osX.QC.Load >LDYAI MSG.LOAD
clc
jsr A2osX.QC.PrintYA
diff --git a/BIN/ACOS.S.CORE.txt b/BIN/ACOS.S.CORE.txt
index eb44b3eb..b4b80fa1 100644
--- a/BIN/ACOS.S.CORE.txt
+++ b/BIN/ACOS.S.CORE.txt
@@ -160,7 +160,7 @@ CORE.Compile jsr CORE.GetChar
bra .8
*--------------------------------------
.3 jsr CORE.CreateOrGetVar
- bcs .90
+ bcs .99
jsr CORE.GetCharNB
bcs .90
@@ -425,6 +425,8 @@ CORE.CreateLabel
jsr CORE.NewKey
bcs .9
+ >STYA ZPSID
+
>PUSHB.G hLabels
>PUSHW ZPSID
>PUSHWI ZPCodeBufPtr
@@ -490,21 +492,15 @@ CORE.CreateOrGetVar
jsr CORE.GetAddr
bcc .2
- >LDA.G hVars
- jsr CORE.NewKey
+ jsr CORE.NewVarKey
bcs .99
- jsr CORE.GetChar
- bcs .1
+ >STYA ZPSID
- stz ZPTYPE
+ jsr CORE.GetVarType
+ stx ZPTYPE
- cmp #'$'
- bne .1
-
- sta ZPTYPE
-
- jsr CORE.GetNextChar skip $
+ beq .1
lda STRID
sta ZPADDR
@@ -537,19 +533,9 @@ CORE.CreateOrGetVar
>SYSCALL SListAddData
rts
*--------------------------------------
-.2 ldx #0
+.2 jsr CORE.GetVarType
- jsr CORE.GetChar
- bcs .3
-
- cmp #'$'
- bne .3
-
- tax
-
- jsr CORE.GetNextChar skip $
-
-.3 cpx ZPTYPE
+ cpx ZPTYPE
bne .90
clc
@@ -560,15 +546,22 @@ CORE.CreateOrGetVar
.99 rts
*--------------------------------------
+CORE.NewVarKey >LDA.G hVars
+
CORE.NewKey >PUSHA
>PUSHW ZPInputBufPtr
>SYSCALL SListNewKey
- bcs CORE.GetAddr.RTS
+ bcs .9
- >STYA ZPSID
+ pha
txa
- jmp CORE.SkipA
+ jsr CORE.SkipA
+
+ pla Y,A = KeyID
+ clc
+
+.9 rts
*--------------------------------------
CORE.GetAddr >PUSHA
>PUSHA for SListGetData
@@ -590,9 +583,27 @@ CORE.GetAddr >PUSHA
rts
.9 >POP 1
-CORE.GetAddr.RTS
+
rts
*--------------------------------------
+CORE.GetVarType jsr CORE.GetChar
+ bcs .9
+
+ cmp #'$'
+ bne .9
+
+ inc ZPInputBufPtr
+ bne .1
+ inc ZPInputBufPtr+1 skip $
+
+.1 tax NZ
+
+ rts
+
+.9 ldx #0 Z
+
+ rts
+*--------------------------------------
CORE.ToUpperCase
cmp #'a'
bcc .8
diff --git a/BIN/ACOS.S.EXP.txt b/BIN/ACOS.S.EXP.txt
index 8d17ac1f..31562dba 100644
--- a/BIN/ACOS.S.EXP.txt
+++ b/BIN/ACOS.S.EXP.txt
@@ -60,16 +60,17 @@ EXP.Eval.R lda EXP.AOPS
bra .40
.21 jsr EXP.VARLookup
- bcs .99
+ bcc .22
- ldx EXP.TYPE
- bne .22
+
+.22 ldx EXP.TYPE
+ bne .23
jsr CODE.INTGET
bra .40
-.22 jsr CODE.STRGET
+.23 jsr CODE.STRGET
bra .40
*--------------------------------------
@@ -198,13 +199,13 @@ EXP.Int16 >PUSHW ZPInputBufPtr
EXP.VARLookup >LDA.G hVars
>PUSHA
- >PUSHA for SListGetData
+ >PUSHA for SListGetData/SListAddData
>PUSHW ZPInputBufPtr
>SYSCALL SListLookup
- bcs .9
+ bcs .3
- >PUSHYA ZPSID
+ >PUSHYA KeyID
txa
jsr CORE.SkipA
@@ -215,31 +216,64 @@ EXP.VARLookup >LDA.G hVars
>SYSCALL SListGetData
bcs .99
- ldx #0
+ jsr CORE.GetVarType
- jsr CORE.GetChar
- bcs .2
-
- cmp #'$'
- bne .2
-
- tax
-
- jsr CORE.GetNextChar skip $
-
-.2 cpx EXP.TYPE
+ cpx EXP.TYPE
bne .90
clc
rts
-.9 >PULLA
-.99 rts
-
.90 lda #E.TMISMATCH
sec
- rts
+.99 rts
*--------------------------------------
+.3 jsr CORE.NewVarKey
+ bcs .39
+
+ phy
+ pha KeyID
+
+ jsr CORE.GetVarType
+ stx EXP.TYPE
+
+ beq .11
+
+ lda STRID
+ sta EXP.ADDR
+
+ lda STRID+1
+ sta EXP.ADDR+1
+
+ inc STRID
+ bne .10
+
+ inc STRID+1
+ bra .10
+
+.11 lda ZPDataBufPtr
+ sta EXP.ADDR
+
+ clc
+ adc #2 Word
+ sta ZPDataBufPtr
+
+ lda ZPDataBufPtr+1
+ sta EXP.ADDR+1
+ adc #0
+ sta ZPDataBufPtr+1
+
+.10 pla
+ >PUSHA
+ pla
+ >PUSHA
+ >PUSHWI EXP.ADDR
+ >PUSHWI 3 3 bytes : ADDR + TYPE
+ >SYSCALL SListAddData
+ rts
+
+.39 inc pStack
+ rts
*--------------------------------------
MAN
SAVE usr/src/bin/acos.s.exp
diff --git a/BIN/ACOS.S.KW.txt b/BIN/ACOS.S.KW.txt
index 33035307..88f40d28 100644
--- a/BIN/ACOS.S.KW.txt
+++ b/BIN/ACOS.S.KW.txt
@@ -294,7 +294,22 @@ KW.RIPCO
KW.SET
KW.SETINT
KW.TEXT
-KW.THEN
+ lda #E.CSYN
+ sec
+ rts
+*--------------------------------------
+KW.THEN ldy pCCS
+ lda (pData),y
+ eor #KWID.IF
+ bne .9
+
+ clc
+ rts
+
+.9 lda #E.NOIF
+ sec
+ rts
+*--------------------------------------
KW.TONE
KW.UPDATE
KW.USE
diff --git a/BIN/ACOS.S.STR.txt b/BIN/ACOS.S.RT.txt
similarity index 68%
rename from BIN/ACOS.S.STR.txt
rename to BIN/ACOS.S.RT.txt
index aec078c5..a6dca663 100644
--- a/BIN/ACOS.S.STR.txt
+++ b/BIN/ACOS.S.RT.txt
@@ -2,16 +2,14 @@ NEW
AUTO 3,1
.LIST OFF
*--------------------------------------
-STR.Add
+RT.StrSet
*--------------------------------------
-STR.replace
-*--------------------------------------
-STR.Get
+RT.StrGet
*--------------------------------------
clc
rts
*--------------------------------------
MAN
-SAVE usr/src/bin/acos.s.str
+SAVE usr/src/bin/acos.s.rt
LOAD usr/src/bin/acos.s
ASM
diff --git a/BIN/ACOS.S.txt b/BIN/ACOS.S.txt
index 1808718d..d41b7162 100644
--- a/BIN/ACOS.S.txt
+++ b/BIN/ACOS.S.txt
@@ -506,6 +506,7 @@ CCODE.LEFT.LEN .EQ *-CCODE.LEFT
.INB usr/src/bin/acos.s.exp
.INB usr/src/bin/acos.s.fn
.INB usr/src/bin/acos.s.kw
+ .INB usr/src/bin/acos.s.rt
*--------------------------------------
CS.END
*--------------------------------------
diff --git a/BIN/CSH.S.CORE.txt b/BIN/CSH.S.CORE.txt
index df37fd4d..ad8c1022 100644
--- a/BIN/CSH.S.CORE.txt
+++ b/BIN/CSH.S.CORE.txt
@@ -3,12 +3,12 @@ NEW
.LIST OFF
*--------------------------------------
CSH.Init >SYSCALL SListNew
- bcs .9
+ bcs .99
>STA.G CSH.hDefines
>SYSCALL SListNew
- bcs .9
+ bcs .99
>STA.G CSH.hTags
@@ -19,7 +19,7 @@ CSH.Init >SYSCALL SListNew
>LDYAI 256
>SYSCALL GetMem
- bcs .9
+.99 bcs .9
>STYA ZPCSHCode
txa
@@ -49,6 +49,14 @@ CSH.Init >SYSCALL SListNew
txa
>STA.G CSH.hStack
+ >LDYAI 256
+ >SYSCALL GetMem
+ bcs .9
+
+ >STYA ZPCSHfDecl
+ txa
+ >STA.G CSH.hfDecl
+
lda #0
>STA.G CSH.ConstPtr
>STA.G CSH.StackPtr
@@ -81,6 +89,9 @@ CSH.Quit >LDA.G CSH.hSymbols
>LDA.G hFileBuf
jsr .7
+ >LDA.G CSH.hfDecl
+ jsr .7
+
>LDA.G CSH.hStack
jsr .7
@@ -115,30 +126,70 @@ CSH.Run.1 cmp #C.CR empty line....
jmp CSH.DIR
.4 cmp #'}' End of block ?
- bne .40
+ bne .10
jsr CSH.CheckStack must be something on stack....
- bcs .9
+ bcs CSH.Quit.RTS
+
jsr CSH.GetNextCharNB Skip '}'
jsr CSH.Pop was expected....
jsr CSH.Pop get stacked Cmd...
tax
jmp (J.CSH.KW.END,x)
-
-.40 jsr CSH.IsLetter
- bcc .5
+*--------------------------------------
+.10 jsr CSH.IsLetter
+ bcc .20
- bra .99 error, todo : PREOPS ++ --.....
+ bcs .29 error, todo : PREOPS ++ --.....
+*--------------------------------------
+.20 >LDYA L.CSH.TMODS
+ jsr CSH.LookupID
+ bcs .50
-.5 jsr CSH.SavePtr Save Ptr, in case of while,for....
+ jsr CSH.tDecl.JMP
+ bcs .59
+
+ jsr CSH.AddSymbol add with undef value...
+ bcs .99 OOM or DUP
+
+ jsr CSH.GetCharNB
+ bcs .99
+
+ cmp #';'
+ beq .8
+
+ cmp #'='
+ bne .21
+
+ jsr CSH.GetNextCharNB skip '='
+ bcs .99
+
+ lda ZPVarType
+ jsr CSH.ExpEval
+ bcs .9
+
+ jsr CSH.SetVarValueFromStack X= Type, Set value to this var
+.29 bcs .99
+
+ bra .68
+
+.21 cmp #'('
+ bne .99
+
+ jsr CSH.fDecl
+ bcs .99
+
+ bra .68
+*--------------------------------------
+.50 jsr CSH.SavePtr Save Ptr, in case of while,for....
>LDYA L.CSH.KW
jsr CSH.LookupID
bcs .6 not an internal CSH keyword....
jsr CSH.KW.JMP
- bcs .9
+.59 bcs .9
bra .8
.6 jsr CSH.GetVar
@@ -148,7 +199,13 @@ CSH.Run.1 cmp #C.CR empty line....
jsr CSH.GetVarDef Get Type & ptr...
bcs .9
- jsr CSH.GetCharNB
+ lda ZPVarQual
+ bit #CSH.Q.FUNC
+ beq .60
+
+
+*--------------------------------------
+.60 jsr CSH.GetCharNB
bcs .9
cmp #'=' TODO: all AOPS
@@ -164,7 +221,7 @@ CSH.Run.1 cmp #C.CR empty line....
jsr CSH.SetVarValueFromStack X = Exp Type
bcs .9
- jsr CSH.GetChar
+.68 jsr CSH.GetCharNB
cmp #';'
beq .8
@@ -337,56 +394,95 @@ CSH.AddSymbol >LDA.G CSH.hSymbols
.9 rts
.99 lda #E.OOM
- .HS 2C BIT ABS
-CSH.TMISMATCH lda #E.TMISMATCH
- sec
+* sec
rts
*--------------------------------------
-CSH.fDeclaration
- lda #CSH.Q.FUNC
- tsb ZPVarType
-
-
- jsr CSH.SkipLine
- clc
- rts
-
+CSH.fDecl lda ZPCSHfDecl
+ sta ZPVarDataPtr
+
+ lda ZPCSHfDecl+1
+ sta ZPVarDataPtr+1
+ lda ZPVarID
+ jsr CSH.fDeclAddA
+ lda ZPVarID+1
+ jsr CSH.fDeclAddA
+ >DEBUG
jsr CSH.GetNextCharNB Skip (
bcs .9
.1 cmp #')'
beq .5
- jsr CSH.GetDeclaration
+.2 jsr CSH.fDeclGetArg
bcs .99
-
+ jsr CSH.GetCharNB
+ bcs .9
+
+ cmp #')'
+ beq .5
+
+ cmp #','
+ bne .9
+
+ jsr CSH.GetNextCharNB Skip ,
+ bcs .9
+
+ bra .2
.5 jsr CSH.GetNextCharNB Skip )
+ bcs .9
- clc
- rts
+ cmp #';'
+ bne .9
+
+ jsr CSH.GetNextCharNB Skip ;
+
+.8 lda #0
+ sta (ZPCSHfDecl)
+
+ jmp CSH.SetVarValueFromStack
.9 lda #E.CSYN
sec
.99 rts
*--------------------------------------
-CSH.GetDeclaration
- >ENTER 4
+CSH.fDeclGetArg >ENTER 4
- >LDYA L.CSH.MTYPES
+ >LDYA L.CSH.TMODS
jsr CSH.LookupID
bcs .9
+ jsr CSH.tDecl
+ bcs .9
+
bra .8
.9 lda #E.CSYN
sec
+
.8 >LEAVE
rts
*--------------------------------------
+CSH.fDeclAddA sta (ZPCSHfDecl)
+ inc ZPCSHfDecl
+ bne .8
+
+ inc ZPCSHfDecl+1
+
+.8 rts
+*--------------------------------------
+CSH.tDecl jsr CSH.tDecl.JMP
+ bcs .9
+
+
+
+.9 rts
+
+CSH.tDecl.JMP jmp (J.CSH.TMODS,x)
+*--------------------------------------
CSH.NewKey >PUSHA
>PUSHW ZPInputBufPtr
>SYSCALL SListNewKey
@@ -771,14 +867,19 @@ CSH.GetChar lda (ZPInputBufPtr)
sec
rts
*---------------------------------------
+CSH.IsEndArg
+*---------------------------------------
CSH.IsOPChar ldx #CSH.OPChars.Cnt-1
.1 cmp CSH.OPChars,x
beq .8
+
dex
bpl .1
+
sec
rts
+
.8 clc
rts
*---------------------------------------
@@ -788,16 +889,21 @@ CSH.IsLetterOrDigit
*---------------------------------------
CSH.IsLetter cmp #'_'
bne .1
+
clc
rts
+
.1 cmp #'A'
bcc .9
+
cmp #'Z'+1
bcc CSH.IsLetterRTS
cmp #'a'
bcc .9
+
cmp #'z'+1
+
rts CC if lowercase
.9 sec
diff --git a/BIN/CSH.S.EXP.txt b/BIN/CSH.S.EXP.txt
index c995721e..f9b4a2d6 100644
--- a/BIN/CSH.S.EXP.txt
+++ b/BIN/CSH.S.EXP.txt
@@ -35,15 +35,18 @@ CSH.ExpEval ldx ZPPtr1
jsr CSH.ExpEval
bcs .19
+
stx ZPPtr2
jsr CSH.GetCharNB
bcs .19
+
cmp #')'
bne .19
jsr CSH.GetNextCharNB skip )
bcc .31
+
.19 jmp .90
*--------------------------------------
.20 jsr CSH.IsLetter define, Fnc or Var ?
@@ -81,25 +84,27 @@ CSH.ExpEval ldx ZPPtr1
.23 jsr CSH.GetNumOnStack
bcs .29
+
bra .30
.24 cmp #'"' String literal
bne .90
+
jsr CSH.AddContCharP
.29 bcs .99
*--------------------------------------
.30 jsr CSH.GetCharNB
bcs .90
-.31 cmp #','
+.31 cmp #';'
+ beq .80
+
+ cmp #','
beq .80
cmp #')'
beq .80
- cmp #';'
- beq .80
-
jsr CSH.IsOPChar
bcs .90
@@ -163,10 +168,13 @@ CSH.AddContCharP
.1 jsr CSH.GetNextChar
bcs .9
+
cmp #C.CR
beq .9
+
cmp #'"'
beq .2
+
sta (ZPCSHConst),y
iny
bra .1
diff --git a/BIN/CSH.S.KW.txt b/BIN/CSH.S.KW.txt
index 5980eb12..e4a8f839 100644
--- a/BIN/CSH.S.KW.txt
+++ b/BIN/CSH.S.KW.txt
@@ -116,21 +116,14 @@ CSH.STRUCT >ENTER 4
.99 >LEAVE
rts
*--------------------------------------
-CSH.CONST lda ZPVarQual
- bit #CSH.Q.PPPOINTER
- bne .1
+CSH.CONST lda #CSH.Q.CONST
- lda #CSH.Q.CONST
- bra .2
-
-.1 lda #CSH.Q.PCONST
-
-.2 bit ZPVarQual
- bne .9
-
tsb ZPVarQual
- clc
- rts
+ >LDYA L.CSH.TMODS2
+ jsr CSH.LookupID
+ bcs .9
+
+ jmp (J.CSH.TMODS2-2,x)
.9 lda #E.CSYN
sec
@@ -224,59 +217,21 @@ CSH.TYPE stx ZPVarType
bra .9 more than ***
.10 jsr CSH.IsLetter
- bcs .9
+ bcs .8
>LDYA L.CSH.FTYPES
jsr CSH.LookupID
- bcs .12
+ bcs .8 next char is an identifier
sec
ror bFastCall
+ lda #CSH.Q.FUNC
+ tsb ZPVarQual
+
jsr CSH.GetNextCharNB
- bcs .9
+ bcs .9 next char is an identifier, ",", "(",")"
- jsr CSH.AddSymbol
- bcs .99
-
- jsr CSH.GetCharNB
- bcs .9
-
- bra .13
-
-.12 jsr CSH.AddSymbol add with undef value...
- bcs .99 OOM or DUP
-
- jsr CSH.GetCharNB
- bcs .9
-
- cmp #';'
- beq .8
-
- cmp #'='
- beq .2
-
-.13 cmp #'('
- bne .9
-
- jmp CSH.fDeclaration
-
-.2 jsr CSH.GetNextCharNB Skip =
- bcs .9
-
- lda ZPVarType
- jsr CSH.ExpEval
- bcs .99
-
-.7 jsr CSH.SetVarValueFromStack X= Type, Set value to this var
- bcs .99
-
- jsr CSH.GetChar
- bcs .9
-
- cmp #';'
- bne .9
-
.8 clc
rts
diff --git a/BIN/CSH.S.txt b/BIN/CSH.S.txt
index f9b2e2f0..c39b142c 100644
--- a/BIN/CSH.S.txt
+++ b/BIN/CSH.S.txt
@@ -36,6 +36,7 @@ ZPCSHCode .BS 2
ZPCSHConst .BS 2
ZPCSHData .BS 2
ZPCSHStack .BS 2
+ZPCSHfDecl .BS 2
ZPVarID .BS 2
ZPVarDef .EQ *
@@ -127,7 +128,8 @@ J.CSH.cBOPS .DA CSH.BOPS.cMUL
L.CSH.FN .DA CSH.FN
L.CSH.DIRS .DA CSH.DIRS
L.CSH.KW .DA CSH.KW
-L.CSH.MTYPES .DA CSH.MTYPES
+L.CSH.TMODS .DA CSH.TMODS
+L.CSH.TMODS2 .DA CSH.TMODS2
L.CSH.TYPES .DA CSH.TYPES
L.CSH.FTYPES .DA CSH.FTYPES
J.CSH.DIRS .DA CSH.DIR.DEFINE
@@ -146,8 +148,8 @@ J.CSH.KW .DA CSH.IF
.DA CSH.TYPEDEF
.DA CSH.STRUCT
*--------------------------------------
-J.CSH.MTYPES .DA CSH.CONST
- .DA CSH.SIGNED
+J.CSH.TMODS .DA CSH.CONST
+J.CSH.TMODS2 .DA CSH.SIGNED
.DA CSH.UNSIGNED
.DA CSH.SHORT
J.CSH.TYPES .DA CSH.VOID
@@ -534,8 +536,12 @@ CSH.KW >PSTR "if"
>PSTR "sizeof"
>PSTR "typedef"
>PSTR "struct"
-CSH.MTYPES >PSTR "const" ALL
- >PSTR "signed" char,int,long
+ .HS 00
+*--------------------------------------
+* Type Declaration
+*--------------------------------------
+CSH.TMODS >PSTR "const" ALL
+CSH.TMODS2 >PSTR "signed" char,int,long
>PSTR "unsigned" char,int,long
>PSTR "short" int
CSH.TYPES >PSTR "void"
@@ -700,6 +706,9 @@ CSH.DataPtr .BS 2
CSH.hStack .BS 1
CSH.StackPtr .BS 1
+CSH.hfDecl .BS 1
+CSH.fDeclBuf .BS 2
+
CSH.SaveInclude .BS 2
CSH.SaveDefine .BS 2
diff --git a/LIB/LIBCIFS.S.IO.txt b/LIB/LIBCIFS.S.IO.txt
index afafb627..0937cef6 100644
--- a/LIB/LIBCIFS.S.IO.txt
+++ b/LIB/LIBCIFS.S.IO.txt
@@ -534,14 +534,111 @@ CIFS2.ChOwn
sec
rts
*--------------------------------------
-CIFS.FOpen
+CIFS.FOpen jsr MakeTrans2Reg
+ ldx #0
-CIFS2.FOpen
+.1 lda SMB.Open2,x
+ sta (ZPReqPtr),y
+ iny
+ inx
+ cpx #SMB.Open2.Len
+ bne .1
- lda #MLI.E.BADCALL
+ phy
+
+ ldy #5
+ lda (pStack),y
+ sta pPath+1
+
+ dey
+ lda (pStack),y
+ sta pPath
+
+ dey flags
+ lda (pStack),y
+ pha
+
+ and #O.RDWR
+ dec
+ ldy #S.NETBIOS+S.SMB.H+SMB.Trans2.H.Len+9 AccessMode
+ sta (ZPReqPtr),y
+
+ ldy #S.NETBIOS+S.SMB.H+SMB.Trans2.H.Len+19 OpenMode
+
+ pla
+ pha
+ and #O.CREATE
+ beq .2
+
+ lda #$10
+ sta (ZPReqPtr),y
+
+.2 pla
+ and #O.APPEND
+ beq .3
+
+ lda (ZPReqPtr),y
+ ora #1
+ sta (ZPReqPtr),y
+
+.3 ply
+
+ jsr AppendPath
+
+ lda #0
+ sta (ZPReqPtr),y
+ iny
+
+ jsr SetT2ReqLenYA
+
+ pha
+ >PUSHB MountTable+3 hSocket
+ >PUSHW ZPReqPtr
+ pla
+ >PUSHYA
+
+ ldx #LIBTCPIP.Send
+ jsr GO.LIBTCPIP
+ bcs .9
+
+ jmp Sleep
+
+.9 >RET 6
+*--------------------------------------
+CIFS2.FOpen jsr ReadSocket
+ bcs .9
+
+ jsr GetRespData
+
+ ldy #S.NETBIOS+S.SMB.H.STATUS
+ lda (ZPRespPtr),y
+ clc
+ beq .8
+
+ lda #MLI.E.DUPFILE
+ sec
+
+.8 jsr FreeRespData
+
+ stz CIFS.Status
+ >RET 4
+
+.9 cmp #E.NODATA
+ bne .99
+
+ dec CIFS.Retries
+ beq .98
+
+ lda #0
sec
rts
+
+.98 lda #MLI.E.IO
+
+.99 sec
+ stz CIFS.Status
+ >RET 4
*--------------------------------------
CIFS.FClose
CIFS2.FClose
diff --git a/LIB/LIBCIFS.S.txt b/LIB/LIBCIFS.S.txt
index b46ce19e..d8117134 100644
--- a/LIB/LIBCIFS.S.txt
+++ b/LIB/LIBCIFS.S.txt
@@ -20,13 +20,18 @@ ZPReqPtr .BS 2
ZPReqLen .BS 2
ZPCtxPtr .BS 2
pFD .BS 2
-pPath .BS 2
ZPPtr1 .BS 2
ZPPtr2 .BS 2
BufPtr .BS 2
hBuf .BS 1
hResp .BS 1
+
+pPath .BS 2
+flags .BS 1
+ftype .BS 1
+auxtype .BS 2
+
ZPRespPtr .BS 2
bFlag .BS 1
@@ -1032,7 +1037,7 @@ SMB.Open2 .DA 0 TRANS2_OPEN2
.BS 2 PrmCnt
.HS 000000 Padding
.HS 0000 Flags
- .BS 2 Access Mode
+ .BS 2 AccessMode
.HS 0000 Reserved1
.BS 2 FileAttributes
.HS 00000000 CreationTime
diff --git a/ProDOS.FX/ProDOS.S.txt b/ProDOS.FX/ProDOS.S.txt
index eccd152f..4950d8d2 100644
--- a/ProDOS.FX/ProDOS.S.txt
+++ b/ProDOS.FX/ProDOS.S.txt
@@ -11,7 +11,7 @@ LOWERCASE .EQ 1
ACL .EQ 1
LOGO .EQ 1
*--------------------------------------
-XRWDBG .EQ 1
+XRWDBG .EQ 0
*--------------------------------------
.INB inc/zp.i
.INB inc/io.i
diff --git a/SBIN/INITD.S.txt b/SBIN/INITD.S.txt
index b9e5e86e..2442b2b3 100644
--- a/SBIN/INITD.S.txt
+++ b/SBIN/INITD.S.txt
@@ -54,7 +54,9 @@ L.CMDS .DA BINSH
.DA BINSHUTDOWN
.DA 0
*--------------------------------------
-CS.INIT clc
+CS.INIT
+*--------------------------------------
+CS.QUIT clc
rts
*--------------------------------------
CS.RUN ldy #S.PS.PID
@@ -208,9 +210,6 @@ CS.RUN.ERRMSG tax
CS.DOEVENT sec
rts
*--------------------------------------
-CS.QUIT clc
- rts
-*--------------------------------------
CS.END
*--------------------------------------
MSG.CTRLR .AZ "INITD:Entering ROOT mode..."
@@ -224,12 +223,6 @@ BINMEM .AZ "${ROOT}bin/mem"
BINPS .AZ "${ROOT}bin/ps"
BINLSOF .AZ "${ROOT}bin/lsof"
BINSHUTDOWN .AZ "${ROOT}bin/shutdown"
-*--------------------------------------
-MLI.PARAMS .DA #4
- .DA #0
- .DA 0
- .DA #0
- .DA 0
*--------------------------------------
.DUMMY
.OR 0
diff --git a/SHARED/X.PRINTF.S.txt b/SHARED/X.PRINTF.S.txt
index 408e31d0..b3a5fc8a 100644
--- a/SHARED/X.PRINTF.S.txt
+++ b/SHARED/X.PRINTF.S.txt
@@ -4,52 +4,70 @@ NEW
*--------------------------------------
PrintFYA sty PrintFYA.Next+1
sta PrintFYA.Next+2
+
pla
sta PrintFYA.99+1
pla
sta PrintFYA.98+1
+
lda $C011 RDLCBNK2
sta PrintFYA.91+1
+
lda $C012 RDLCRAM
sta PrintFYA.90+1
+
lda $C08A RROMBNK1, make sure $D000-$FFFF ROM selected
lda $CFFF get access to $C800-$CFFF internal ROM
+
PrintFYA.1 stz X.b0Flag
stz X.DigitCount
jsr PrintFYA.Next
beq PrintFYA.90
cmp #'%'
bne .7
+
.2 jsr PrintFYA.Next
beq PrintFYA.90
cmp #'0'
bne .3
+
ror X.b0Flag beq -> CS
bra .2
+
.3 bcc .4
+
cmp #'9'+1
bcs .4
+
and #$0f
sta X.DigitCount
bra .2
+
.4 ldx #PrintFYA.Tbl-PrintFYA.Esc-1
.5 cmp PrintFYA.Esc,x
beq .6
+
dex
bpl .5
+
bra PrintFYA.1
+
.6 txa
asl
tax
jmp (PrintFYA.Tbl,x)
+
.7 cmp #'\'
bne .8
+
jsr PrintFYA.Next
beq PrintFYA.90
cmp #'n'
bne .8
+
lda #$0D
+
.8 ora #$80
jsr $FDED COUT
bra PrintFYA.1
@@ -73,9 +91,12 @@ PrintFYA.99 lda #$ff Self modified RTS LOPrintFYAPrintFYA
*--------------------------------------
PrintFYA.Next lda $ffff
beq .8
+
inc PrintFYA.Next+1
bne .8
+
inc PrintFYA.Next+2 Always !=0
+
.8 rts
*--------------------------------------
PrintFYA.Esc .AS "dDhHS"
@@ -96,11 +117,14 @@ PrintFYA.DD plx
stz X.BCDBuffer+2
ldx #16 let's roll 16 bits
sed
+
.2 asl X.HexBuffer
rol X.HexBuffer+1
php cpy will disturb carry while BCD adc
ldy #0
+
.3 plp
+
lda X.BCDBuffer,y
adc X.BCDBuffer,y
sta X.BCDBuffer,y
@@ -108,12 +132,15 @@ PrintFYA.DD plx
iny
cpy #3 Last byte of X.BCDBufferBUF?
bne .3
+
plp
dex
bne .2
+
cld
ldx #0
ldy #5
+
.4 lda X.BCDBuffer,x
pha
and #$0F
@@ -131,12 +158,16 @@ PrintFYA.DD plx
inx
dey
bpl .4
+
lda X.DigitCount
beq .5
+
lda #6
sec
sbc X.DigitCount
+
.5 tay
+
.6 lda X.DigitBuffer,y
cmp #"0"
beq .7
@@ -144,18 +175,24 @@ PrintFYA.DD plx
sec
ror X.b0Flag
bra .8
+
.7 cpy #5
beq .8
+
lda #" "
bit X.b0Flag
bpl .81
+
lda #"0"
+
.8 phy
jsr $FDED COUT
ply
+
.81 iny
cpy #6
bne .6
+
.9 jmp PrintFYA.1
*--------------------------------------
PrintFYA.HH pla
@@ -170,16 +207,20 @@ PrintFYA.S pla
pla
sta .1+1
sta .2+1
+
.1 lda $ffff
beq .9
+
tax
ldy #1
+
.2 lda $ffff,y
ora #$80
jsr $FDED COUT
iny
dex
bne .2
+
.9 jmp PrintFYA.1
*--------------------------------------
X.HexBuffer .BS 2