mirror of https://github.com/A2osX/A2osX.git
SH:new ALIAS cmd, new && operator
MKDIR:completely implemented LS/RM/MV/CP: combined switches KERNEL:SList API now handle options to handle several languages/parsers
This commit is contained in:
parent
89af12918a
commit
04a83f00f3
|
@ -24,6 +24,23 @@ exists, thus return value is limited to
|
||||||
whether or not a valid argument was
|
whether or not a valid argument was
|
||||||
given.
|
given.
|
||||||
|
|
||||||
|
# MKDIR
|
||||||
|
Create directories
|
||||||
|
*
|
||||||
|
|
||||||
|
## Arguments
|
||||||
|
**-M mode**
|
||||||
|
Apply specified mode to created directories
|
||||||
|
*
|
||||||
|
**-P**
|
||||||
|
Create parent directories if required
|
||||||
|
*
|
||||||
|
**-V**
|
||||||
|
Verbose mode
|
||||||
|
*
|
||||||
|
|
||||||
|
## Return Value
|
||||||
|
|
||||||
# SEQ
|
# SEQ
|
||||||
Prints sequences of numbers.
|
Prints sequences of numbers.
|
||||||
*
|
*
|
||||||
|
|
|
@ -375,6 +375,13 @@ Add Data to MD5 computation
|
||||||
CS :
|
CS :
|
||||||
A = EC
|
A = EC
|
||||||
|
|
||||||
|
# Free
|
||||||
|
Y,A = Ptr To Free
|
||||||
|
|
||||||
|
## RETURN VALUE
|
||||||
|
none.
|
||||||
|
(X unmodified)
|
||||||
|
|
||||||
# FreeMem
|
# FreeMem
|
||||||
A = hMem To Free
|
A = hMem To Free
|
||||||
|
|
||||||
|
@ -414,22 +421,6 @@ Y,A = PTR to MemBlock
|
||||||
none.
|
none.
|
||||||
(X,Y unmodified)
|
(X,Y unmodified)
|
||||||
|
|
||||||
# GetStkObj
|
|
||||||
|
|
||||||
## C
|
|
||||||
`int *ptr getstkobj (short int hStkObj);`
|
|
||||||
|
|
||||||
## ASM
|
|
||||||
`lda hStkObj`
|
|
||||||
`>SYSCALL GetStkObj`
|
|
||||||
|
|
||||||
## RETURN VALUE
|
|
||||||
CC : success
|
|
||||||
X = hMem
|
|
||||||
Y,A = ptr
|
|
||||||
CS : error
|
|
||||||
A = EC
|
|
||||||
|
|
||||||
# Online
|
# Online
|
||||||
Get ProDOS Volume Info
|
Get ProDOS Volume Info
|
||||||
|
|
||||||
|
@ -531,17 +522,6 @@ A = Child PSID
|
||||||
|
|
||||||
## RETURN VALUE
|
## RETURN VALUE
|
||||||
|
|
||||||
# LoadStkObj
|
|
||||||
Load a file in AUX memory (Stock Objects)
|
|
||||||
PUSHW = PATH (Handled by....
|
|
||||||
PUSHB = MODE ...
|
|
||||||
PUSHB = TYPE ...
|
|
||||||
PUSHW = AUXTYPE ...FOpen)
|
|
||||||
|
|
||||||
## RETURN VALUE
|
|
||||||
Y,A = File Length
|
|
||||||
X = hMem of Loaded Object in AUX mem
|
|
||||||
|
|
||||||
# LoadTxtFile
|
# LoadTxtFile
|
||||||
Load TXT a file in memory (with ending 0)
|
Load TXT a file in memory (with ending 0)
|
||||||
|
|
||||||
|
@ -716,7 +696,7 @@ CS : not found
|
||||||
`>PUSHB hSList`
|
`>PUSHB hSList`
|
||||||
`>PUSHW KeyID`
|
`>PUSHW KeyID`
|
||||||
`>PUSHW DataPtr`
|
`>PUSHW DataPtr`
|
||||||
`>PUSHW DataLen`
|
`>PUSHW DataLen` (Data bytes to add, 0 if String mode)
|
||||||
`>SYSCALL SListAddData`
|
`>SYSCALL SListAddData`
|
||||||
|
|
||||||
## RETURN VALUE
|
## RETURN VALUE
|
||||||
|
@ -727,7 +707,7 @@ CS : not found
|
||||||
`>PUSHB hSList`
|
`>PUSHB hSList`
|
||||||
`>PUSHW KeyID`
|
`>PUSHW KeyID`
|
||||||
`>PUSHW DataPtr`
|
`>PUSHW DataPtr`
|
||||||
`>PUSHW DataLen`
|
`>PUSHW DataLen` (Data bytes to set, 0 if String mode)
|
||||||
`>SYSCALL SListSetData`
|
`>SYSCALL SListSetData`
|
||||||
|
|
||||||
## RETURN VALUE
|
## RETURN VALUE
|
||||||
|
@ -776,6 +756,7 @@ CS : not found
|
||||||
# SListNew
|
# SListNew
|
||||||
|
|
||||||
## ASM
|
## ASM
|
||||||
|
`lda Opt`
|
||||||
`>SYSCALL SListNew`
|
`>SYSCALL SListNew`
|
||||||
|
|
||||||
## RETURN VALUE
|
## RETURN VALUE
|
||||||
|
@ -1392,6 +1373,33 @@ if expanded == null
|
||||||
if expanded = null
|
if expanded = null
|
||||||
Y,A = strlen
|
Y,A = strlen
|
||||||
|
|
||||||
|
# LoadStkObj
|
||||||
|
Load a file in AUX memory (Stock Objects)
|
||||||
|
PUSHW = PATH (Handled by....
|
||||||
|
PUSHB = MODE ...
|
||||||
|
PUSHB = TYPE ...
|
||||||
|
PUSHW = AUXTYPE ...FOpen)
|
||||||
|
|
||||||
|
## RETURN VALUE
|
||||||
|
Y,A = File Length
|
||||||
|
X = hMem of Loaded Object in AUX mem
|
||||||
|
|
||||||
|
# GetStkObj
|
||||||
|
|
||||||
|
## C
|
||||||
|
`int *ptr getstkobj (short int hStkObj);`
|
||||||
|
|
||||||
|
## ASM
|
||||||
|
`lda hStkObj`
|
||||||
|
`>SYSCALL GetStkObj`
|
||||||
|
|
||||||
|
## RETURN VALUE
|
||||||
|
CC : success
|
||||||
|
X = hMem
|
||||||
|
Y,A = ptr
|
||||||
|
CS : error
|
||||||
|
A = EC
|
||||||
|
|
||||||
# StrLen
|
# StrLen
|
||||||
Returns Length of C-String
|
Returns Length of C-String
|
||||||
|
|
||||||
|
@ -1544,7 +1552,7 @@ CS : no match
|
||||||
Get System Time in Buffer
|
Get System Time in Buffer
|
||||||
|
|
||||||
## C
|
## C
|
||||||
`int time (S.TIME* timer);`
|
`void time (struct tm* timeptr);`
|
||||||
|
|
||||||
## ASM
|
## ASM
|
||||||
`>PUSHW timer`
|
`>PUSHW timer`
|
||||||
|
@ -1557,7 +1565,7 @@ S.TIME filled with System date/time
|
||||||
|
|
||||||
## C
|
## C
|
||||||
Convert S.TIME struct to CSTR
|
Convert S.TIME struct to CSTR
|
||||||
`void strftime (char* str, const char* format, const struct S.TIME* timeptr );`
|
`void strftime (char* str, const char* format, const struct tm* timeptr );`
|
||||||
|
|
||||||
## ASM
|
## ASM
|
||||||
`>PUSHW str`
|
`>PUSHW str`
|
||||||
|
@ -1587,7 +1595,7 @@ Convert S.TIME struct to CSTR
|
||||||
Convert ProDOS Time To S.TIME
|
Convert ProDOS Time To S.TIME
|
||||||
|
|
||||||
## C
|
## C
|
||||||
`int PTime2Time (long* ptime, S.TIME* timer);`
|
`void PTime2Time (long* ptime, const struct tm* timeptr );`
|
||||||
|
|
||||||
## ASM
|
## ASM
|
||||||
`>PUSHW ptime`
|
`>PUSHW ptime`
|
||||||
|
@ -1600,7 +1608,7 @@ Convert S.TIME struct to CSTR
|
||||||
Convert CTime Time To S.TIME
|
Convert CTime Time To S.TIME
|
||||||
|
|
||||||
## C
|
## C
|
||||||
`int CTime2Time (long* ctime, S.TIME* timer);`
|
`void CTime2Time (long* ctime, const struct tm* timeptr );`
|
||||||
|
|
||||||
## ASM
|
## ASM
|
||||||
`>PUSHW ctime`
|
`>PUSHW ctime`
|
||||||
|
|
|
@ -16,7 +16,7 @@ Initialize screen & create a new context
|
||||||
CC = success, A = hCTX
|
CC = success, A = hCTX
|
||||||
|
|
||||||
# tuiClose
|
# tuiClose
|
||||||
destroy context and all sub objects
|
destroy context
|
||||||
|
|
||||||
## C
|
## C
|
||||||
`void fastcall tuiClose(short int hCTX);`
|
`void fastcall tuiClose(short int hCTX);`
|
||||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -43,7 +43,7 @@ CORE.Init lda #SL._
|
||||||
* clc
|
* clc
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CORE.Quit jsr CC.FIO.FClose
|
CORE.Quit jsr FIO.FClose
|
||||||
bne CORE.Quit
|
bne CORE.Quit
|
||||||
|
|
||||||
ldy ScopeIdx
|
ldy ScopeIdx
|
||||||
|
@ -77,7 +77,7 @@ CORE.Quit jsr CC.FIO.FClose
|
||||||
>LDA.G CC.hSymBuf
|
>LDA.G CC.hSymBuf
|
||||||
jsr .7
|
jsr .7
|
||||||
|
|
||||||
.5 jsr CC.SYM.LookupFree
|
.5 jsr SYM.LookupFree
|
||||||
bcc .5
|
bcc .5
|
||||||
|
|
||||||
>LDA.G CC.hStack
|
>LDA.G CC.hStack
|
||||||
|
@ -88,7 +88,8 @@ CORE.Quit jsr CC.FIO.FClose
|
||||||
|
|
||||||
.8 rts
|
.8 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.CompileFile >SLEEP
|
CORE.CompileFile
|
||||||
|
>SLEEP
|
||||||
|
|
||||||
ldy #S.PS.hStdIn
|
ldy #S.PS.hStdIn
|
||||||
lda (pPS),y
|
lda (pPS),y
|
||||||
|
@ -104,22 +105,23 @@ CC.CompileFile >SLEEP
|
||||||
cmp #3 Ctrl-C
|
cmp #3 Ctrl-C
|
||||||
beq .9
|
beq .9
|
||||||
|
|
||||||
.1 jsr CC.FIO.FGetS
|
.1 jsr FIO.FGetS
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
jsr CC.CompileLine
|
jsr CORE.CompileLine
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
>LDA.G bDebug
|
>LDA.G bDebug
|
||||||
bpl CC.CompileFile
|
bpl CORE.CompileFile
|
||||||
|
|
||||||
jsr PrintDebugMsg
|
jsr PrintDebugMsg
|
||||||
|
|
||||||
bra CC.CompileFile
|
bra CORE.CompileFile
|
||||||
|
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.CompileLine jsr CC.GetCharNB
|
CORE.CompileLine
|
||||||
|
jsr CC.GetCharNB
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
cmp #C.CR EOL....
|
cmp #C.CR EOL....
|
||||||
|
@ -128,44 +130,45 @@ CC.CompileLine jsr CC.GetCharNB
|
||||||
cmp #'#' directive ?
|
cmp #'#' directive ?
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
jmp CC.DIR
|
jmp DIR
|
||||||
|
|
||||||
.1 cmp #'/'
|
.1 cmp #'/'
|
||||||
bne .2 comments ...
|
bne .2 comments ...
|
||||||
|
|
||||||
jmp CC.Comments
|
jmp CORE.Comments
|
||||||
|
|
||||||
.2 cmp #'}' End of CPStmt ?
|
.2 cmp #'}' End of CPStmt ?
|
||||||
bne .3
|
bne .3
|
||||||
|
|
||||||
jsr CC.GetNextCharNB Skip '}'
|
jsr CORE.GetNCharNB Skip '}'
|
||||||
|
|
||||||
jsr CC.STMT.CPStmt.END
|
jsr CC.STMT.CPStmt.END
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
bra CC.CompileLine
|
bra CORE.CompileLine
|
||||||
|
|
||||||
.3 cmp #';' End of Stmt ?
|
.3 cmp #';' End of Stmt ?
|
||||||
bne .4
|
bne .4
|
||||||
|
|
||||||
jsr CC.GetNextCharNB Skip ';'
|
jsr CORE.GetNCharNB Skip ';'
|
||||||
|
|
||||||
jsr CC.STMT.Stmt.END
|
jsr CC.STMT.Stmt.END
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
bra CC.CompileLine
|
bra CORE.CompileLine
|
||||||
|
|
||||||
.4 jsr CC.CompileStmt
|
.4 jsr CORE.CompileStmt
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
bra CC.CompileLine
|
bra CORE.CompileLine
|
||||||
|
|
||||||
.8 clc
|
.8 clc
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* keyword : for, while ....
|
* keyword : for, while ....
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.CompileStmt >LDYA L.CC.KW
|
CORE.CompileStmt
|
||||||
|
>LDYA L.CC.KW
|
||||||
jsr CC.LookupID
|
jsr CC.LookupID
|
||||||
bcs .1 not an internal CC keyword....
|
bcs .1 not an internal CC keyword....
|
||||||
|
|
||||||
|
@ -185,31 +188,31 @@ CC.CompileStmt >LDYA L.CC.KW
|
||||||
jsr CC.LookupID
|
jsr CC.LookupID
|
||||||
bcs .3
|
bcs .3
|
||||||
|
|
||||||
jmp CC.DECL
|
jmp DECL.X
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* Statement : ++var, var=, func();
|
* Statement : ++var, var=, func();
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.3 jmp CC.STMT
|
.3 jmp STMT.Get
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.99 lda #E.CSYN
|
.99 lda #E.CSYN
|
||||||
sec
|
sec
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.Comments jsr CC.GetNextChar TODO : /* ... */
|
CORE.Comments jsr CC.GetNextChar TODO : /* ... */
|
||||||
cmp #'/'
|
cmp #'/'
|
||||||
bne .90
|
bne .90
|
||||||
|
|
||||||
jmp CC.SkipLine skip line.....
|
jmp CORE.SkipLine skip line.....
|
||||||
|
|
||||||
.90 lda #E.CSYN
|
.90 lda #E.CSYN
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.SkipLine jsr CC.GetNextChar
|
CORE.SkipLine jsr CC.GetNextChar
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
cmp #C.CR
|
cmp #C.CR
|
||||||
bne CC.SkipLine
|
bne CORE.SkipLine
|
||||||
|
|
||||||
clc
|
clc
|
||||||
|
|
||||||
|
@ -447,44 +450,44 @@ CC.GetIDLen ldy #0
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.GetCharNB jsr CC.GetChar
|
CC.GetCharNB jsr CC.GetChar
|
||||||
bcs CC.GetNextCharNB.RTS
|
bcs CORE.GetNCharNB.RTS
|
||||||
|
|
||||||
jsr CC.CheckCharNB
|
jsr CC.CheckCharNB
|
||||||
bcc CC.GetNextCharNB.RTS
|
bcc CORE.GetNCharNB.RTS
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.GetNextCharNB
|
CORE.GetNCharNB jsr CC.GetNextChar
|
||||||
jsr CC.GetNextChar
|
bcs CORE.GetNCharNB.RTS
|
||||||
bcs CC.GetNextCharNB.RTS
|
|
||||||
|
|
||||||
jsr CC.CheckCharNB
|
jsr CC.CheckCharNB
|
||||||
bcs CC.GetNextCharNB
|
bcs CORE.GetNCharNB
|
||||||
|
|
||||||
CC.GetNextCharNB.RTS
|
CORE.GetNCharNB.RTS
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.GetCharNBNL jsr CC.GetChar
|
CORE.GetCharNBNL
|
||||||
bcs CC.GetNextCharNB.RTS
|
jsr CC.GetChar
|
||||||
|
bcs CORE.GetNCharNB.RTS
|
||||||
|
|
||||||
jsr CC.CheckCharNB
|
jsr CC.CheckCharNB
|
||||||
bcs CC.GetNextCharNBNL
|
bcs CORE.GetNCharNBNL
|
||||||
|
|
||||||
cmp #C.CR
|
cmp #C.CR
|
||||||
clc
|
clc
|
||||||
bne CC.GetNextCharNB.RTS
|
bne CORE.GetNCharNB.RTS
|
||||||
|
|
||||||
jsr CC.FIO.FGetS
|
jsr FIO.FGetS
|
||||||
bcs CC.GetNextCharNB.RTS
|
bcs CORE.GetNCharNB.RTS
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.GetNextCharNBNL
|
CORE.GetNCharNBNL
|
||||||
jsr CC.GetNextCharNB
|
jsr CORE.GetNCharNB
|
||||||
bcs CC.GetNextCharNB.RTS
|
bcs .9
|
||||||
|
|
||||||
cmp #C.CR
|
cmp #C.CR
|
||||||
clc
|
clc
|
||||||
bne .9
|
bne .9
|
||||||
|
|
||||||
jsr CC.FIO.FGetS
|
jsr FIO.FGetS
|
||||||
bcc CC.GetNextCharNBNL
|
bcc CORE.GetCharNBNL
|
||||||
|
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -494,7 +497,7 @@ CC.CheckSpace jsr CC.GetChar
|
||||||
cmp #C.SPACE
|
cmp #C.SPACE
|
||||||
bne .90
|
bne .90
|
||||||
|
|
||||||
jsr CC.GetNextCharNB
|
jsr CORE.GetNCharNB
|
||||||
bcc .99
|
bcc .99
|
||||||
|
|
||||||
.90 lda #E.CSYN
|
.90 lda #E.CSYN
|
||||||
|
|
|
@ -1,16 +1,15 @@
|
||||||
NEW
|
NEW
|
||||||
AUTO 3,1
|
AUTO 3,1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.SCSPEC.AUTO
|
DECL.AUTO
|
||||||
CC.SCSPEC.REGISTER
|
DECL.REGISTER
|
||||||
CC.SCSPEC.STATIC
|
DECL.STATIC
|
||||||
CC.SCSPEC.EXTERN
|
DECL.EXTERN
|
||||||
.98 lda #E.CSYN
|
.98 lda #E.CSYN
|
||||||
sec
|
sec
|
||||||
.99 rts
|
.99 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.SCSPEC.TYPEDEF
|
DECL.TYPEDEF jsr CORE.GetNCharNB
|
||||||
jsr CC.GetNextCharNB
|
|
||||||
bcs .98
|
bcs .98
|
||||||
|
|
||||||
>LDYA L.CC.TYPEQUAL
|
>LDYA L.CC.TYPEQUAL
|
||||||
|
@ -20,12 +19,12 @@ CC.SCSPEC.TYPEDEF
|
||||||
cpx #4 no const nor volatile
|
cpx #4 no const nor volatile
|
||||||
bcc .98
|
bcc .98
|
||||||
|
|
||||||
jsr CC.TYPE.Decl
|
jsr TYPE.GetTQInYA
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
ldx #SYM.SC.TYPEDEF
|
ldx #SYM.SC.TYPEDEF
|
||||||
sec Reset Buffer
|
sec Reset Buffer
|
||||||
jsr CC.SYM.New Y,A=T/Q,storage class TYPEDEF
|
jsr SYM.New Y,A=T/Q,storage class TYPEDEF
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
jsr CC.GetCharNB
|
jsr CC.GetCharNB
|
||||||
|
@ -34,24 +33,63 @@ CC.SCSPEC.TYPEDEF
|
||||||
cmp #';'
|
cmp #';'
|
||||||
bne .98
|
bne .98
|
||||||
|
|
||||||
jsr CC.GetNextCharNB skip ';'
|
jsr CORE.GetNCharNB skip ';'
|
||||||
|
|
||||||
jmp CC.SYM.Store
|
jmp SYM.Store
|
||||||
|
|
||||||
.98 lda #E.CSYN
|
.98 lda #E.CSYN
|
||||||
sec
|
sec
|
||||||
.99
|
.99
|
||||||
CC.SCSPEC.TYPEDEF.RTS
|
DECL.TYPEDEF.RTS
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* X = type qual
|
* X = type qual
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.DECL jsr CC.TYPE.Decl
|
DECL.X jsr TYPE.GetTQInYA
|
||||||
bcs CC.SCSPEC.TYPEDEF.RTS
|
bcs .99
|
||||||
|
|
||||||
|
cpy #SYM.T.SU
|
||||||
|
bne .7
|
||||||
|
|
||||||
sec Reset Buffer
|
tax save Q
|
||||||
|
jsr CC.GetCharNB
|
||||||
|
bcs .98
|
||||||
|
|
||||||
|
cmp #';' from a tag def
|
||||||
|
beq .8
|
||||||
|
|
||||||
CC.DECL.YAC ldx #SYM.SC.STATIC Y,A = Type/Qual
|
jsr CC.IsLetter
|
||||||
|
bcs .98
|
||||||
|
* >DEBUG
|
||||||
|
.1 clc reuse buffer
|
||||||
|
ldy #SYM.T.SU
|
||||||
|
txa restore Q
|
||||||
|
jsr DECL.YAC
|
||||||
|
bcs .99
|
||||||
|
|
||||||
|
jsr CC.GetCharNB
|
||||||
|
bcs .98
|
||||||
|
|
||||||
|
cmp #','
|
||||||
|
bne .2
|
||||||
|
|
||||||
|
jsr CORE.GetNCharNBNL
|
||||||
|
bcc .1
|
||||||
|
bcs .98
|
||||||
|
|
||||||
|
.2 cmp #';' TODO: struct initalizers
|
||||||
|
bne .98
|
||||||
|
|
||||||
|
.8 clc
|
||||||
|
rts
|
||||||
|
|
||||||
|
.98 lda #E.CSYN
|
||||||
|
sec
|
||||||
|
.99 rts
|
||||||
|
*--------------------------------------
|
||||||
|
.7 sec Reset Buffer
|
||||||
|
|
||||||
|
DECL.YAC ldx #SYM.SC.STATIC Y,A = Type/Qual
|
||||||
bit bLocalScope
|
bit bLocalScope
|
||||||
bpl .25
|
bpl .25
|
||||||
|
|
||||||
|
@ -60,7 +98,7 @@ CC.DECL.YAC ldx #SYM.SC.STATIC Y,A = Type/Qual
|
||||||
|
|
||||||
ldx #SYM.SC.AUTO
|
ldx #SYM.SC.AUTO
|
||||||
|
|
||||||
.25 jsr CC.SYM.New Y,A=T/Q, add with undef value...
|
.25 jsr SYM.New Y,A=T/Q, X=SC, C=clear/reuse
|
||||||
bcs .98 OOM or DUP
|
bcs .98 OOM or DUP
|
||||||
|
|
||||||
.22 jsr CC.GetCharNB
|
.22 jsr CC.GetCharNB
|
||||||
|
@ -72,31 +110,31 @@ CC.DECL.YAC ldx #SYM.SC.STATIC Y,A = Type/Qual
|
||||||
cmp #'{'
|
cmp #'{'
|
||||||
bne .26
|
bne .26
|
||||||
|
|
||||||
jsr CC.GetNextCharNB skip '{'
|
jsr CORE.GetNCharNB skip '{'
|
||||||
bcs .98
|
bcs .98
|
||||||
|
|
||||||
jmp CC.SYM.StoreF
|
jmp SYM.StoreF
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* Initializer
|
* Initializer
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.26 cmp #'=' type var = value ?
|
.26 cmp #'=' type var = value ?
|
||||||
bne .98
|
bne .98
|
||||||
|
|
||||||
jsr CC.GetNextCharNB skip '='
|
jsr CORE.GetNCharNB skip '='
|
||||||
bcs .98
|
bcs .98
|
||||||
|
|
||||||
jsr CC.SYM.GetTypeInYA expected T/Q
|
jsr SYM.GetTypeInYA expected T/Q
|
||||||
jsr CC.EXP.Eval
|
jsr EXP.Eval
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
jsr CC.SYM.GetAddr1
|
jsr SYM.GetAddr1
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
jsr CC.SYM.GetTypeInYA Y,A = T/Q
|
jsr SYM.GetTypeInYA Y,A = T/Q
|
||||||
jsr CC.SYM.PopValue Set value to this var
|
jsr SYM.PopValue Set value to this var
|
||||||
.29 bcs .99
|
.29 bcs .99
|
||||||
|
|
||||||
.28 jsr CC.SYM.Store
|
.28 jsr SYM.Store
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
jsr CC.GetCharNB
|
jsr CC.GetCharNB
|
||||||
|
|
|
@ -1,15 +1,10 @@
|
||||||
NEW
|
NEW
|
||||||
AUTO 3,1
|
AUTO 3,1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.DIR jsr CC.GetNextCharNB
|
DIR jsr CORE.GetNCharNB
|
||||||
bcs .99
|
bcs .91
|
||||||
|
|
||||||
cmp #'!' #!/bin/cc
|
>LDYA L.CC.DIRS
|
||||||
bne .1
|
|
||||||
|
|
||||||
jmp CC.SkipLine
|
|
||||||
|
|
||||||
.1 >LDYA L.CC.DIRS
|
|
||||||
jsr CC.LookupID
|
jsr CC.LookupID
|
||||||
bcs .91
|
bcs .91
|
||||||
|
|
||||||
|
@ -19,7 +14,7 @@ CC.DIR jsr CC.GetNextCharNB
|
||||||
sec
|
sec
|
||||||
.99 rts
|
.99 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.DIR.DEFINE clc
|
DIR.DEFINE clc
|
||||||
bit bPass2
|
bit bPass2
|
||||||
bmi .8
|
bmi .8
|
||||||
|
|
||||||
|
@ -31,7 +26,7 @@ CC.DIR.DEFINE clc
|
||||||
|
|
||||||
ldx #SYM.SC.DEFINE
|
ldx #SYM.SC.DEFINE
|
||||||
>LDA.G CC.hDefines
|
>LDA.G CC.hDefines
|
||||||
jsr CC.SYM.NewKey
|
jsr SYM.NewKey
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
>STYA ZPPtr1 SymID
|
>STYA ZPPtr1 SymID
|
||||||
|
@ -67,13 +62,13 @@ CC.DIR.DEFINE clc
|
||||||
>SYSCALL SListAddData
|
>SYSCALL SListAddData
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
.8 jmp CC.SkipLine
|
.8 jmp CORE.SkipLine
|
||||||
|
|
||||||
.90 lda #E.CSYN
|
.90 lda #E.CSYN
|
||||||
sec
|
sec
|
||||||
.99 rts
|
.99 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.DIR.INCLUDE lda #0 >STZ.G PathBuf
|
DIR.INCLUDE lda #0 >STZ.G PathBuf
|
||||||
sta (pData)
|
sta (pData)
|
||||||
|
|
||||||
jsr CC.CheckSpace
|
jsr CC.CheckSpace
|
||||||
|
@ -134,7 +129,10 @@ CC.DIR.INCLUDE lda #0 >STZ.G PathBuf
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.5 >LDYA pData
|
.5 >LDYA pData
|
||||||
jmp CC.FIO.FOpen
|
jmp FIO.FOpen
|
||||||
|
*--------------------------------------
|
||||||
|
DIR.IFDEF
|
||||||
|
DIR.IFNDEF
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE usr/src/bin/cc.s.dir
|
SAVE usr/src/bin/cc.s.dir
|
||||||
|
|
194
BIN/CC.S.EXP.txt
194
BIN/CC.S.EXP.txt
|
@ -7,10 +7,10 @@ NEW
|
||||||
* CS, A = EC
|
* CS, A = EC
|
||||||
* CC, Y,A = type/qual
|
* CC, Y,A = type/qual
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.EXP.Eval00 lda #0
|
EXP.Eval00 lda #0
|
||||||
tay
|
tay
|
||||||
|
|
||||||
CC.EXP.Eval ldx ZPPtr1 local : returned T/Q
|
EXP.Eval ldx ZPPtr1 local : returned T/Q
|
||||||
phx
|
phx
|
||||||
ldx ZPPtr1+1
|
ldx ZPPtr1+1
|
||||||
phx
|
phx
|
||||||
|
@ -40,20 +40,20 @@ CC.EXP.Eval ldx ZPPtr1 local : returned T/Q
|
||||||
cmp #'('
|
cmp #'('
|
||||||
bne .20
|
bne .20
|
||||||
|
|
||||||
jsr CC.GetNextCharNB skip (
|
jsr CORE.GetNCharNB skip (
|
||||||
bcs .19
|
bcs .19
|
||||||
|
|
||||||
>LDYA L.CC.TYPEQUAL
|
>LDYA L.CC.TYPEQUAL
|
||||||
jsr CC.LookupID
|
jsr CC.LookupID
|
||||||
bcs .12
|
bcs .12
|
||||||
|
|
||||||
jsr CC.EXP.Cast
|
jsr EXP.Cast
|
||||||
bcs .19
|
bcs .19
|
||||||
|
|
||||||
bra .20
|
bra .20
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.12 >LDYA ZPPtr2 expected T/Q
|
.12 >LDYA ZPPtr2 expected T/Q
|
||||||
jsr CC.EXP.Eval
|
jsr EXP.Eval
|
||||||
bcs .19
|
bcs .19
|
||||||
|
|
||||||
>STYA ZPPtr2 update T/Q
|
>STYA ZPPtr2 update T/Q
|
||||||
|
@ -64,10 +64,10 @@ CC.EXP.Eval ldx ZPPtr1 local : returned T/Q
|
||||||
cmp #')'
|
cmp #')'
|
||||||
bne .19
|
bne .19
|
||||||
|
|
||||||
jsr CC.GetNextCharNB skip )
|
jsr CORE.GetNCharNB skip )
|
||||||
bcc .31
|
bcc .31
|
||||||
|
|
||||||
.19 jmp CC.EXP.Eval.ESYN
|
.19 jmp EXP.Eval.ESYN
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.20 >LDYA L.CC.PREOPS
|
.20 >LDYA L.CC.PREOPS
|
||||||
jsr CC.LookupOP
|
jsr CC.LookupOP
|
||||||
|
@ -82,7 +82,7 @@ CC.EXP.Eval ldx ZPPtr1 local : returned T/Q
|
||||||
jsr CC.GetDefine
|
jsr CC.GetDefine
|
||||||
bcc .10
|
bcc .10
|
||||||
|
|
||||||
jsr CC.SYM.Lookup
|
jsr SYM.Lookup
|
||||||
bcs .22
|
bcs .22
|
||||||
|
|
||||||
ldy #SYM.Q
|
ldy #SYM.Q
|
||||||
|
@ -90,21 +90,21 @@ CC.EXP.Eval ldx ZPPtr1 local : returned T/Q
|
||||||
and #SYM.Q.FUNC
|
and #SYM.Q.FUNC
|
||||||
bne .21
|
bne .21
|
||||||
|
|
||||||
jsr CC.EXP.GetVar Check T/Q & Get value on stack
|
jsr EXP.GetVar Check T/Q & Get value on stack
|
||||||
bcs .29
|
bcs .29
|
||||||
|
|
||||||
jsr CC.SYM.LookupFree
|
jsr SYM.LookupFree
|
||||||
|
|
||||||
bra .30
|
bra .30
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.21 >LDYA ZPPtr2 get expected T/Q
|
.21 >LDYA ZPPtr2 get expected T/Q
|
||||||
|
|
||||||
jsr CC.F.CallRetV
|
jsr F.CallRetV
|
||||||
bcs .29
|
bcs .29
|
||||||
|
|
||||||
>STYA ZPPtr2 store real T/Q
|
>STYA ZPPtr2 store real T/Q
|
||||||
|
|
||||||
jsr CC.SYM.LookupFree
|
jsr SYM.LookupFree
|
||||||
|
|
||||||
bra .30
|
bra .30
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -118,7 +118,7 @@ CC.EXP.Eval ldx ZPPtr1 local : returned T/Q
|
||||||
sty ZPPtr2
|
sty ZPPtr2
|
||||||
stz ZPPtr2+1 Q
|
stz ZPPtr2+1 Q
|
||||||
|
|
||||||
.23 jsr CC.EXP.GetNum
|
.23 jsr EXP.GetNum
|
||||||
bcs .29
|
bcs .29
|
||||||
|
|
||||||
bra .30
|
bra .30
|
||||||
|
@ -126,29 +126,29 @@ CC.EXP.Eval ldx ZPPtr1 local : returned T/Q
|
||||||
.24 cmp #'''
|
.24 cmp #'''
|
||||||
bne .25
|
bne .25
|
||||||
|
|
||||||
jsr CC.EXP.GetChar
|
jsr EXP.GetChar
|
||||||
bcs .29
|
bcs .29
|
||||||
|
|
||||||
bra .30
|
bra .30
|
||||||
|
|
||||||
.25 cmp #'"' String literal
|
.25 cmp #'"' String literal
|
||||||
bne CC.EXP.Eval.ESYN
|
bne EXP.Eval.ESYN
|
||||||
|
|
||||||
jsr CC.EXP.AddConstCharP
|
jsr EXP.AddConstCharP
|
||||||
.29 bcs CC.EXP.Eval.Err
|
.29 bcs EXP.Eval.Err
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.30 jsr CC.GetCharNB
|
.30 jsr CC.GetCharNB
|
||||||
bcs CC.EXP.Eval.ESYN
|
bcs EXP.Eval.ESYN
|
||||||
|
|
||||||
.31 jsr CC.IsEndArg , ; ) ? :
|
.31 jsr CC.IsEndArg , ; ) ? :
|
||||||
bcc CC.EXP.Eval.End
|
bcc EXP.Eval.End
|
||||||
|
|
||||||
jsr CC.IsOPChar
|
jsr CC.IsOPChar
|
||||||
bcs CC.EXP.Eval.ESYN
|
bcs EXP.Eval.ESYN
|
||||||
|
|
||||||
>LDYA L.CC.BOPS we are at V1 op1 V2 op2...
|
>LDYA L.CC.BOPS we are at V1 op1 V2 op2...
|
||||||
jsr CC.LookupOP
|
jsr CC.LookupOP
|
||||||
bcs CC.EXP.Eval.ESYN
|
bcs EXP.Eval.ESYN
|
||||||
|
|
||||||
stx ZPPtr3 save OP(n)
|
stx ZPPtr3 save OP(n)
|
||||||
|
|
||||||
|
@ -159,10 +159,10 @@ CC.EXP.Eval ldx ZPPtr1 local : returned T/Q
|
||||||
bcc .38 OP(n) has precedence, on stack : V1,V2
|
bcc .38 OP(n) has precedence, on stack : V1,V2
|
||||||
|
|
||||||
>LDYA ZPPtr2 OP(n-1) has precedence...
|
>LDYA ZPPtr2 OP(n-1) has precedence...
|
||||||
jsr CC.EXP.BOPS compute V(n-1) <OP(n-1)> V(n)
|
jsr EXP.BOPS compute V(n-1) <OP(n-1)> V(n)
|
||||||
bcc .33
|
bcc .33
|
||||||
|
|
||||||
bcs CC.EXP.Eval.Err
|
bcs EXP.Eval.Err
|
||||||
|
|
||||||
.38 phx push back OP(n-1)
|
.38 phx push back OP(n-1)
|
||||||
|
|
||||||
|
@ -171,28 +171,25 @@ CC.EXP.Eval ldx ZPPtr1 local : returned T/Q
|
||||||
|
|
||||||
jmp .10 go check for next token
|
jmp .10 go check for next token
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.EXP.Eval.End plx any OP on stack ?
|
EXP.Eval.End plx any OP on stack ?
|
||||||
bmi CC.EXP.Eval.Exit
|
bmi EXP.Eval.Exit
|
||||||
|
|
||||||
>LDYA ZPPtr2 Var Type
|
>LDYA ZPPtr2 Var Type
|
||||||
|
|
||||||
jsr CC.EXP.BOPS
|
jsr EXP.BOPS
|
||||||
bcc CC.EXP.Eval.End
|
bcc EXP.Eval.End
|
||||||
|
|
||||||
bra CC.EXP.Eval.Err
|
bra EXP.Eval.Err
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.EXP.Eval.ESYN
|
EXP.Eval.ESYN lda #E.ESYN
|
||||||
lda #E.ESYN
|
|
||||||
|
|
||||||
CC.EXP.Eval.Err
|
EXP.Eval.Err plx
|
||||||
plx
|
bpl EXP.Eval.Err
|
||||||
bpl CC.EXP.Eval.Err
|
|
||||||
|
|
||||||
sec
|
sec
|
||||||
bra CC.EXP.Eval.ExitErr
|
bra EXP.Eval.ExitErr
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.EXP.Eval.Exit
|
EXP.Eval.Exit lda ZPPtr1+1
|
||||||
lda ZPPtr1+1
|
|
||||||
ldy ZPPtr1
|
ldy ZPPtr1
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
|
@ -201,7 +198,7 @@ CC.EXP.Eval.Exit
|
||||||
.1 and #$FC ignore SYM.Q.FUNC+SYM.Q.FASTCALL
|
.1 and #$FC ignore SYM.Q.FUNC+SYM.Q.FASTCALL
|
||||||
clc
|
clc
|
||||||
|
|
||||||
CC.EXP.Eval.ExitErr
|
EXP.Eval.ExitErr
|
||||||
plx
|
plx
|
||||||
stx ZPPtr3+1
|
stx ZPPtr3+1
|
||||||
plx
|
plx
|
||||||
|
@ -219,7 +216,7 @@ CC.EXP.Eval.ExitErr
|
||||||
|
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.EXP.Cast jsr CC.TYPE.Decl
|
EXP.Cast jsr TYPE.GetTQInYA
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
>STYA ZPPtr1
|
>STYA ZPPtr1
|
||||||
|
@ -230,7 +227,7 @@ CC.EXP.Cast jsr CC.TYPE.Decl
|
||||||
cmp #')'
|
cmp #')'
|
||||||
bne .9
|
bne .9
|
||||||
|
|
||||||
jsr CC.GetNextCharNB skip )
|
jsr CORE.GetNCharNB skip )
|
||||||
|
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
@ -241,7 +238,7 @@ CC.EXP.Cast jsr CC.TYPE.Decl
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* Y,A = Type/Qual, X = OP
|
* Y,A = Type/Qual, X = OP
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.EXP.BOPS bit #SYM.Q.PPPOINTER
|
EXP.BOPS bit #SYM.Q.PPPOINTER
|
||||||
beq .10
|
beq .10
|
||||||
|
|
||||||
ldy #SYM.T.UINT
|
ldy #SYM.T.UINT
|
||||||
|
@ -275,7 +272,7 @@ CC.EXP.BOPS bit #SYM.Q.PPPOINTER
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.EXP.IntConst >PUSHW ZPLineBufPtr
|
EXP.IntConst >PUSHW ZPLineBufPtr
|
||||||
>PUSHWI ZPLineBufPtr
|
>PUSHWI ZPLineBufPtr
|
||||||
>PUSHBI 10
|
>PUSHBI 10
|
||||||
>SYSCALL StrToUL
|
>SYSCALL StrToUL
|
||||||
|
@ -290,7 +287,7 @@ CC.EXP.IntConst >PUSHW ZPLineBufPtr
|
||||||
|
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.EXP.GetNum cpy #SYM.T.FLOAT
|
EXP.GetNum cpy #SYM.T.FLOAT
|
||||||
bcc .1
|
bcc .1
|
||||||
|
|
||||||
beq .11
|
beq .11
|
||||||
|
@ -352,7 +349,7 @@ CC.EXP.GetNum cpy #SYM.T.FLOAT
|
||||||
* https://riptutorial.com/c/example/16255/character-literals
|
* https://riptutorial.com/c/example/16255/character-literals
|
||||||
* 'c', '\n', '\123', '\xAB'
|
* 'c', '\n', '\123', '\xAB'
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.EXP.GetChar ldy ZPPtr2+1
|
EXP.GetChar ldy ZPPtr2+1
|
||||||
bne .9
|
bne .9
|
||||||
|
|
||||||
lda ZPPtr2
|
lda ZPPtr2
|
||||||
|
@ -374,7 +371,7 @@ CC.EXP.GetChar ldy ZPPtr2+1
|
||||||
cmp #'''
|
cmp #'''
|
||||||
bne .9
|
bne .9
|
||||||
|
|
||||||
jsr CC.GetNextCharNB skip '
|
jsr CORE.GetNCharNB skip '
|
||||||
|
|
||||||
|
|
||||||
clc
|
clc
|
||||||
|
@ -384,7 +381,7 @@ CC.EXP.GetChar ldy ZPPtr2+1
|
||||||
sec
|
sec
|
||||||
.99 rts
|
.99 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.EXP.AddConstCharP
|
EXP.AddConstCharP
|
||||||
lda ZPCCConst
|
lda ZPCCConst
|
||||||
ldx ZPCCConst+1
|
ldx ZPCCConst+1
|
||||||
|
|
||||||
|
@ -415,7 +412,7 @@ CC.EXP.AddConstCharP
|
||||||
|
|
||||||
bra .1
|
bra .1
|
||||||
|
|
||||||
.3 jsr CC.GetNextCharNBNL Skip "
|
.3 jsr CORE.GetNCharNBNL Skip "
|
||||||
bcs .8
|
bcs .8
|
||||||
|
|
||||||
cmp #'"'
|
cmp #'"'
|
||||||
|
@ -434,13 +431,13 @@ CC.EXP.AddConstCharP
|
||||||
* ZPPtr2 = expected T/Q
|
* ZPPtr2 = expected T/Q
|
||||||
* ZPPtr3+1 = PREOPS
|
* ZPPtr3+1 = PREOPS
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.EXP.GetVar stz ExpState
|
EXP.GetVar stz ExpState
|
||||||
|
|
||||||
jsr CC.EXP.POSTOPS var++, var[0]... ?
|
jsr EXP.POSTOPS var++, var[0]... ?
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
ldx ZPPtr3+1 preop &, * ...
|
ldx ZPPtr3+1 preop &, * ...
|
||||||
jsr CC.EXP.PREOPS
|
jsr EXP.PREOPS
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
lda ExpState
|
lda ExpState
|
||||||
|
@ -453,7 +450,7 @@ CC.EXP.GetVar stz ExpState
|
||||||
asl
|
asl
|
||||||
bmi .6 AonStack
|
bmi .6 AonStack
|
||||||
|
|
||||||
jsr CC.EXP.GetAddr2
|
jsr EXP.GetAddr2
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
bra .7
|
bra .7
|
||||||
|
@ -462,16 +459,16 @@ CC.EXP.GetVar stz ExpState
|
||||||
jsr CODE.EmitPCC
|
jsr CODE.EmitPCC
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
.7 jsr CC.EXP.PushValue
|
.7 jsr EXP.PushValue
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
.8 jmp CC.SYM.LookupCheckTQ
|
.8 jmp SYM.LookupCheckTQ
|
||||||
|
|
||||||
.99 rts
|
.99 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* POSTOPS
|
* POSTOPS
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.EXP.POSTOPS >LDYA L.CC.POSTOPS
|
EXP.POSTOPS >LDYA L.CC.POSTOPS
|
||||||
jsr CC.LookupOP
|
jsr CC.LookupOP
|
||||||
bcs .8
|
bcs .8
|
||||||
|
|
||||||
|
@ -480,11 +477,11 @@ CC.EXP.POSTOPS >LDYA L.CC.POSTOPS
|
||||||
.8 clc
|
.8 clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.EXP.postinc lda ExpState
|
EXP.postinc lda ExpState
|
||||||
bit #ExpState.AinPTR
|
bit #ExpState.AinPTR
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
jsr CC.EXP.GetAddr2
|
jsr EXP.GetAddr2
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
lda #ExpState.AinPTR
|
lda #ExpState.AinPTR
|
||||||
|
@ -524,11 +521,11 @@ CC.EXP.postinc lda ExpState
|
||||||
sec
|
sec
|
||||||
.99 rts
|
.99 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.EXP.postdec lda ExpState
|
EXP.postdec lda ExpState
|
||||||
bit #ExpState.AinPTR
|
bit #ExpState.AinPTR
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
jsr CC.EXP.GetAddr2
|
jsr EXP.GetAddr2
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
lda #ExpState.AinPTR
|
lda #ExpState.AinPTR
|
||||||
|
@ -568,11 +565,11 @@ CC.EXP.postdec lda ExpState
|
||||||
sec
|
sec
|
||||||
.99 rts
|
.99 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.EXP.Idx ldy #SYM.Q
|
EXP.Idx ldy #SYM.Q
|
||||||
lda (ZPLookupSymPtr),y
|
lda (ZPLookupSymPtr),y
|
||||||
|
|
||||||
bit #SYM.Q.AAARRAY
|
bit #SYM.Q.AAARRAY
|
||||||
bne CC.EXP.array
|
bne EXP.array
|
||||||
|
|
||||||
and #SYM.Q.PPPOINTER
|
and #SYM.Q.PPPOINTER
|
||||||
cmp #SYM.Q.POINTER
|
cmp #SYM.Q.POINTER
|
||||||
|
@ -582,17 +579,17 @@ CC.EXP.Idx ldy #SYM.Q
|
||||||
eor #SYM.Q.POINTER+SYM.Q.ARRAY
|
eor #SYM.Q.POINTER+SYM.Q.ARRAY
|
||||||
sta (ZPLookupSymPtr),y convert from *type to type[]
|
sta (ZPLookupSymPtr),y convert from *type to type[]
|
||||||
|
|
||||||
jsr CC.EXP.GetAddr2
|
jsr EXP.GetAddr2
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
>LDYA L.PCC.PushDeref2
|
>LDYA L.PCC.PushDeref2
|
||||||
jsr CODE.EmitPCC
|
jsr CODE.EmitPCC
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
jsr CC.EXP.array.getIdx ...int16 on stack...
|
jsr EXP.array.getIdx ...int16 on stack...
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
jsr CC.EXP.GetSymSizeOfInAXC
|
jsr EXP.GetSymSizeOfInAXC
|
||||||
cmp #1
|
cmp #1
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
|
@ -616,7 +613,7 @@ CC.EXP.Idx ldy #SYM.Q
|
||||||
cmp #']'
|
cmp #']'
|
||||||
bne .97
|
bne .97
|
||||||
|
|
||||||
jsr CC.GetNextCharNB skip ']'
|
jsr CORE.GetNCharNB skip ']'
|
||||||
|
|
||||||
lda #ExpState.AonStack
|
lda #ExpState.AonStack
|
||||||
sta ExpState
|
sta ExpState
|
||||||
|
@ -632,28 +629,28 @@ CC.EXP.Idx ldy #SYM.Q
|
||||||
sec
|
sec
|
||||||
.99 rts
|
.99 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.EXP.array ldy #SYM.Def
|
EXP.array ldy #SYM.Def
|
||||||
lda (ZPLookupSymPtr),y
|
lda (ZPLookupSymPtr),y
|
||||||
iny
|
iny
|
||||||
ora (ZPLookupSymPtr),y
|
ora (ZPLookupSymPtr),y
|
||||||
beq .1
|
beq .1
|
||||||
* jsr CODE.DEBUG
|
* jsr CODE.DEBUG
|
||||||
jsr CC.EXP.PushAddr array[int]...
|
jsr EXP.PushAddr array[int]...
|
||||||
bcc .2
|
bcc .2
|
||||||
|
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.1 jsr CC.EXP.GetAddr2 array[]...it is a *
|
.1 jsr EXP.GetAddr2 array[]...it is a *
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
>LDYA L.PCC.PushDeref2
|
>LDYA L.PCC.PushDeref2
|
||||||
jsr CODE.EmitPCC
|
jsr CODE.EmitPCC
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
.2 jsr CC.EXP.array.getIdx ...int16 on stack...
|
.2 jsr EXP.array.getIdx ...int16 on stack...
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
jsr CC.EXP.GetSymSizeOfInAXC
|
jsr EXP.GetSymSizeOfInAXC
|
||||||
jsr CODE.PUSHAXI ...sizeof on stack...
|
jsr CODE.PUSHAXI ...sizeof on stack...
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
|
@ -665,13 +662,13 @@ CC.EXP.array ldy #SYM.Def
|
||||||
jsr CODE.FPUCALL ...add to base address
|
jsr CODE.FPUCALL ...add to base address
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
.3 jsr CC.GetNextCharNB skip ']'
|
.3 jsr CORE.GetNCharNB skip ']'
|
||||||
bcs .98
|
bcs .98
|
||||||
|
|
||||||
cmp #'['
|
cmp #'['
|
||||||
bne .8
|
bne .8
|
||||||
|
|
||||||
jsr CC.GetNextCharNB skip '['
|
jsr CORE.GetNCharNB skip '['
|
||||||
bcs .98
|
bcs .98
|
||||||
|
|
||||||
ldy #SYM.Q
|
ldy #SYM.Q
|
||||||
|
@ -679,7 +676,7 @@ CC.EXP.array ldy #SYM.Def
|
||||||
and #SYM.Q.AAARRAY
|
and #SYM.Q.AAARRAY
|
||||||
.39 beq .99
|
.39 beq .99
|
||||||
|
|
||||||
jsr CC.EXP.array.getIdx ...int16 on stack...
|
jsr EXP.array.getIdx ...int16 on stack...
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
ldy #SYM.Def+3
|
ldy #SYM.Def+3
|
||||||
|
@ -692,7 +689,7 @@ CC.EXP.array ldy #SYM.Def
|
||||||
ldx #FPU.wMUL
|
ldx #FPU.wMUL
|
||||||
jsr CODE.FPUCALL [][SIZE] * int16 on stack
|
jsr CODE.FPUCALL [][SIZE] * int16 on stack
|
||||||
|
|
||||||
jsr CC.EXP.GetSymSizeOfInAXC
|
jsr EXP.GetSymSizeOfInAXC
|
||||||
jsr CODE.PUSHAXI ...sizeof on stack...
|
jsr CODE.PUSHAXI ...sizeof on stack...
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
|
@ -703,7 +700,7 @@ CC.EXP.array ldy #SYM.Def
|
||||||
jsr CODE.FPUCALL ...add to base address
|
jsr CODE.FPUCALL ...add to base address
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
jsr CC.GetNextCharNB skip ']'
|
jsr CORE.GetNCharNB skip ']'
|
||||||
bcs .98
|
bcs .98
|
||||||
|
|
||||||
|
|
||||||
|
@ -723,11 +720,11 @@ CC.EXP.array ldy #SYM.Def
|
||||||
sec
|
sec
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.EXP.array.getIdx
|
EXP.array.getIdx
|
||||||
ldy #SYM.T.SINT
|
ldy #SYM.T.SINT
|
||||||
lda #0
|
lda #0
|
||||||
|
|
||||||
jsr CC.EXP.Eval
|
jsr EXP.Eval
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
jsr CC.GetCharNB
|
jsr CC.GetCharNB
|
||||||
|
@ -749,7 +746,7 @@ CC.EXP.array.getIdx
|
||||||
sec
|
sec
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.EXP.SU lda (ZPLookupSymPtr)
|
EXP.SU lda (ZPLookupSymPtr)
|
||||||
cmp #SYM.T.SU
|
cmp #SYM.T.SU
|
||||||
bne .97
|
bne .97
|
||||||
|
|
||||||
|
@ -764,7 +761,7 @@ CC.EXP.SU lda (ZPLookupSymPtr)
|
||||||
jsr CC.IsLetter
|
jsr CC.IsLetter
|
||||||
bcs .98
|
bcs .98
|
||||||
|
|
||||||
jsr CC.EXP.SU.GetF
|
jsr EXP.SU.GetF
|
||||||
bcs .98
|
bcs .98
|
||||||
|
|
||||||
jsr CC.SkipX
|
jsr CC.SkipX
|
||||||
|
@ -789,7 +786,7 @@ CC.EXP.SU lda (ZPLookupSymPtr)
|
||||||
|
|
||||||
ply
|
ply
|
||||||
iny
|
iny
|
||||||
lda (ZPLookupSymPtr),y SU.F.O
|
lda (ZPLookupSymPtr),y SU.F.O+1
|
||||||
ldy #SYM.Addr+1
|
ldy #SYM.Addr+1
|
||||||
adc (ZPLookupSymPtr),y
|
adc (ZPLookupSymPtr),y
|
||||||
sta (ZPLookupSymPtr),y
|
sta (ZPLookupSymPtr),y
|
||||||
|
@ -805,11 +802,11 @@ CC.EXP.SU lda (ZPLookupSymPtr)
|
||||||
sec
|
sec
|
||||||
.99 rts
|
.99 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.EXP.pSU lda #E.ESYN
|
EXP.pSU lda #E.ESYN
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.EXP.SU.GetF jsr CC.GetIDLen
|
EXP.SU.GetF jsr CC.GetIDLen
|
||||||
tya
|
tya
|
||||||
tax
|
tax
|
||||||
|
|
||||||
|
@ -875,27 +872,27 @@ CC.EXP.SU.GetF jsr CC.GetIDLen
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* PREOPS
|
* PREOPS
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.EXP.PREOPS bmi .8
|
EXP.PREOPS bmi .8
|
||||||
|
|
||||||
jmp (J.CC.PREOPS,x)
|
jmp (J.CC.PREOPS,x)
|
||||||
|
|
||||||
.8 clc
|
.8 clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.EXP.Ref ldy #SYM.Q
|
EXP.Ref ldy #SYM.Q
|
||||||
lda (ZPLookupSymPtr),y
|
lda (ZPLookupSymPtr),y
|
||||||
|
|
||||||
clc
|
clc
|
||||||
adc #SYM.Q.POINTER
|
adc #SYM.Q.POINTER
|
||||||
bcs .9 more than ***
|
bcs .9 more than ***
|
||||||
|
|
||||||
and #%11001111
|
* and #%11001111
|
||||||
sta (ZPLookupSymPtr),y
|
sta (ZPLookupSymPtr),y
|
||||||
|
|
||||||
bit ExpState
|
bit ExpState
|
||||||
bvs .8
|
bvs .8
|
||||||
|
|
||||||
jsr CC.EXP.PushAddr
|
jsr EXP.PushAddr
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
.8 lda #ExpState.VonStack
|
.8 lda #ExpState.VonStack
|
||||||
|
@ -908,7 +905,7 @@ CC.EXP.Ref ldy #SYM.Q
|
||||||
* sec
|
* sec
|
||||||
.99 rts
|
.99 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.EXP.Deref ldy #SYM.Q
|
EXP.Deref ldy #SYM.Q
|
||||||
lda (ZPLookupSymPtr),y
|
lda (ZPLookupSymPtr),y
|
||||||
bit #SYM.Q.PPPOINTER
|
bit #SYM.Q.PPPOINTER
|
||||||
beq .9
|
beq .9
|
||||||
|
@ -917,7 +914,7 @@ CC.EXP.Deref ldy #SYM.Q
|
||||||
sbc #SYM.Q.POINTER
|
sbc #SYM.Q.POINTER
|
||||||
sta (ZPLookupSymPtr),y
|
sta (ZPLookupSymPtr),y
|
||||||
|
|
||||||
jsr CC.EXP.GetAddr2
|
jsr EXP.GetAddr2
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
>LDYA L.PCC.Deref2
|
>LDYA L.PCC.Deref2
|
||||||
|
@ -934,43 +931,43 @@ CC.EXP.Deref ldy #SYM.Q
|
||||||
sec
|
sec
|
||||||
.99 rts
|
.99 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.EXP.Abs
|
EXP.Abs
|
||||||
|
|
||||||
clc
|
clc
|
||||||
|
|
||||||
.99 rts
|
.99 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.EXP.negate
|
EXP.negate
|
||||||
|
|
||||||
clc
|
clc
|
||||||
|
|
||||||
.99 rts
|
.99 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.EXP.lnot
|
EXP.lnot
|
||||||
|
|
||||||
clc
|
clc
|
||||||
|
|
||||||
.99 rts
|
.99 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.EXP.bnot
|
EXP.bnot
|
||||||
|
|
||||||
clc
|
clc
|
||||||
|
|
||||||
.99 rts
|
.99 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.EXP.preinc
|
EXP.preinc
|
||||||
|
|
||||||
clc
|
clc
|
||||||
|
|
||||||
.99 rts
|
.99 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.EXP.predec
|
EXP.predec
|
||||||
|
|
||||||
clc
|
clc
|
||||||
|
|
||||||
.99 rts
|
.99 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.EXP.PushAddr ldy #SYM.SC
|
EXP.PushAddr ldy #SYM.SC
|
||||||
lda (ZPLookupSymPtr),y
|
lda (ZPLookupSymPtr),y
|
||||||
beq .1 SYM.SC.STATIC
|
beq .1 SYM.SC.STATIC
|
||||||
* LOCAL
|
* LOCAL
|
||||||
|
@ -1014,7 +1011,7 @@ CC.EXP.PushAddr ldy #SYM.SC
|
||||||
|
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.EXP.GetAddr1 ldy #SYM.SC
|
EXP.GetAddr1 ldy #SYM.SC
|
||||||
lda (ZPLookupSymPtr),y
|
lda (ZPLookupSymPtr),y
|
||||||
beq .1 SYM.SC.STATIC
|
beq .1 SYM.SC.STATIC
|
||||||
* LOCAL
|
* LOCAL
|
||||||
|
@ -1052,7 +1049,7 @@ CC.EXP.GetAddr1 ldy #SYM.SC
|
||||||
|
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.EXP.GetAddr2 ldy #SYM.SC
|
EXP.GetAddr2 ldy #SYM.SC
|
||||||
lda (ZPLookupSymPtr),y
|
lda (ZPLookupSymPtr),y
|
||||||
beq .1 SYM.SC.STATIC
|
beq .1 SYM.SC.STATIC
|
||||||
* LOCAL
|
* LOCAL
|
||||||
|
@ -1090,8 +1087,7 @@ CC.EXP.GetAddr2 ldy #SYM.SC
|
||||||
|
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.EXP.PushValue
|
EXP.PushValue jsr EXP.GetSymSizeOfInAXC
|
||||||
jsr CC.EXP.GetSymSizeOfInAXC
|
|
||||||
tay
|
tay
|
||||||
dey
|
dey
|
||||||
bne .1
|
bne .1
|
||||||
|
@ -1115,7 +1111,7 @@ CC.EXP.PushValue
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* out : A,X,C = size
|
* out : A,X,C = size
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.EXP.GetSymSizeOfInAXC
|
EXP.GetSymSizeOfInAXC
|
||||||
ldy #SYM.Q
|
ldy #SYM.Q
|
||||||
lda (ZPLookupSymPtr),y
|
lda (ZPLookupSymPtr),y
|
||||||
pha
|
pha
|
||||||
|
@ -1123,7 +1119,7 @@ CC.EXP.GetSymSizeOfInAXC
|
||||||
tay
|
tay
|
||||||
pla
|
pla
|
||||||
|
|
||||||
CC.EXP.GetYASizeOfInAXC
|
EXP.GetYASizeOfInAXC
|
||||||
|
|
||||||
bit #SYM.Q.PPPOINTER+SYM.Q.AAARRAY
|
bit #SYM.Q.PPPOINTER+SYM.Q.AAARRAY
|
||||||
bne .1
|
bne .1
|
||||||
|
|
108
BIN/CC.S.F.txt
108
BIN/CC.S.F.txt
|
@ -1,7 +1,7 @@
|
||||||
NEW
|
NEW
|
||||||
AUTO 3,1
|
AUTO 3,1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.F.Decl stz LocalPtr
|
F.Decl stz LocalPtr
|
||||||
|
|
||||||
jsr CC.PushTQ push T/Q for RETURN
|
jsr CC.PushTQ push T/Q for RETURN
|
||||||
bcs .99
|
bcs .99
|
||||||
|
@ -10,21 +10,21 @@ CC.F.Decl stz LocalPtr
|
||||||
jsr CC.STMT.CPStmt.NEW
|
jsr CC.STMT.CPStmt.NEW
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
jsr CC.SYM.NewScope
|
jsr SYM.NewScope
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
jsr CC.GetNextCharNB Skip (
|
jsr CORE.GetNCharNB Skip (
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
cmp #')' func()
|
cmp #')' func()
|
||||||
beq .6
|
beq .6
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.1 jsr CC.F.DeclGetTQ
|
.1 jsr F.DeclGetTQ
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
>STYA ZPPtr2 Save T/Q
|
>STYA ZPPtr2 Save T/Q
|
||||||
|
|
||||||
jsr CC.SYM.AddWord
|
jsr SYM.AddWord
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
jsr CC.GetCharNB
|
jsr CC.GetCharNB
|
||||||
|
@ -33,7 +33,7 @@ CC.F.Decl stz LocalPtr
|
||||||
jsr CC.IsLetter
|
jsr CC.IsLetter
|
||||||
bcs .2
|
bcs .2
|
||||||
|
|
||||||
jsr CC.F.NewArg
|
jsr F.NewArg
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
jsr CC.GetCharNB
|
jsr CC.GetCharNB
|
||||||
|
@ -45,24 +45,24 @@ CC.F.Decl stz LocalPtr
|
||||||
cmp #','
|
cmp #','
|
||||||
bne .9
|
bne .9
|
||||||
|
|
||||||
jsr CC.GetNextCharNB Skip ,
|
jsr CORE.GetNCharNB Skip ,
|
||||||
bcc .1
|
bcc .1
|
||||||
|
|
||||||
.9 lda #E.CSYN
|
.9 lda #E.CSYN
|
||||||
sec
|
sec
|
||||||
.99 rts
|
.99 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.6 jsr CC.SYM.Add0000 definition End
|
.6 jsr SYM.Add0000 definition End
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
jsr CC.GetNextCharNBNL Skip )
|
jsr CORE.GetNCharNBNL Skip ')'
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
cmp #';'
|
cmp #';'
|
||||||
bne .7
|
bne .7
|
||||||
|
|
||||||
jsr CC.SYM.FreeScope discard local scope
|
jsr SYM.FreeScope discard local scope
|
||||||
|
|
||||||
lda CStackPtr
|
lda CStackPtr
|
||||||
clc
|
clc
|
||||||
adc #8
|
adc #8
|
||||||
|
@ -87,7 +87,7 @@ CC.F.Decl stz LocalPtr
|
||||||
|
|
||||||
|
|
||||||
.8 >LDYA ZPCCCode f() Code starts HERE
|
.8 >LDYA ZPCCCode f() Code starts HERE
|
||||||
jsr CC.SYM.SetAddrYA
|
jsr SYM.SetAddrYA
|
||||||
|
|
||||||
lda LocalPtr
|
lda LocalPtr
|
||||||
jsr CODE.LDAI A = f() ARGS size
|
jsr CODE.LDAI A = f() ARGS size
|
||||||
|
@ -96,7 +96,7 @@ CC.F.Decl stz LocalPtr
|
||||||
>LDYA L.PCC.ENTER
|
>LDYA L.PCC.ENTER
|
||||||
jmp CODE.EmitPCC Store f() Declaration / Start Definition
|
jmp CODE.EmitPCC Store f() Declaration / Start Definition
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.F.DeclGetTQ lda (ZPLineBufPtr)
|
F.DeclGetTQ lda (ZPLineBufPtr)
|
||||||
cmp #'.'
|
cmp #'.'
|
||||||
bne .5
|
bne .5
|
||||||
|
|
||||||
|
@ -111,7 +111,7 @@ CC.F.DeclGetTQ lda (ZPLineBufPtr)
|
||||||
dex
|
dex
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
jsr CC.GetNextCharNB
|
jsr CORE.GetNCharNB
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
eor #')'
|
eor #')'
|
||||||
|
@ -122,23 +122,27 @@ CC.F.DeclGetTQ lda (ZPLineBufPtr)
|
||||||
* clc
|
* clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.5 >LDYA L.CC.TYPEQUAL
|
.5 jsr SYM.Lookup var or func() ?
|
||||||
|
bcs .6
|
||||||
|
|
||||||
|
ldy #SYM.SC
|
||||||
|
lda (ZPLookupSymPtr),y
|
||||||
|
cmp #SYM.SC.TYPEDEF
|
||||||
|
bne .9
|
||||||
|
|
||||||
|
jmp TYPE.GetTQInYA2
|
||||||
|
|
||||||
|
.6 >LDYA L.CC.TYPEQUAL
|
||||||
jsr CC.LookupID
|
jsr CC.LookupID
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
jsr CC.TYPE.Decl
|
jmp TYPE.GetTQInYA
|
||||||
bcs .9
|
|
||||||
|
|
||||||
* Y,A = Type/Qual
|
|
||||||
|
|
||||||
bra .8
|
|
||||||
|
|
||||||
.9 lda #E.CSYN
|
.9 lda #E.CSYN
|
||||||
sec
|
sec
|
||||||
|
rts
|
||||||
.8 rts
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.F.NewArg >LDYA.G CC.SymID
|
F.NewArg >LDYA.G CC.SymID
|
||||||
>STYA.G CC.SymIDSave
|
>STYA.G CC.SymIDSave
|
||||||
|
|
||||||
>LEA.G CC.ArgBuf
|
>LEA.G CC.ArgBuf
|
||||||
|
@ -147,10 +151,10 @@ CC.F.NewArg >LDYA.G CC.SymID
|
||||||
>LDYA ZPPtr2
|
>LDYA ZPPtr2
|
||||||
ldx #SYM.SC.AUTO
|
ldx #SYM.SC.AUTO
|
||||||
sec Reset Buffer
|
sec Reset Buffer
|
||||||
jsr CC.SYM.New
|
jsr SYM.New
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
jsr CC.SYM.StoreL Store f() Args in Local scope
|
jsr SYM.StoreL Store f() Args in Local scope
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
>LDA.G CC.hSymBuf
|
>LDA.G CC.hSymBuf
|
||||||
|
@ -162,11 +166,11 @@ CC.F.NewArg >LDYA.G CC.SymID
|
||||||
|
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.F.Def.END >LDYA L.PCC.LEAVE
|
F.Def.END >LDYA L.PCC.LEAVE
|
||||||
jsr CODE.EmitPCC
|
jsr CODE.EmitPCC
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
jsr CC.SYM.FreeScope
|
jsr SYM.FreeScope
|
||||||
|
|
||||||
stz LocalPtr back to global
|
stz LocalPtr back to global
|
||||||
|
|
||||||
|
@ -177,11 +181,11 @@ CC.F.Def.END >LDYA L.PCC.LEAVE
|
||||||
* in : ZPSymPtr
|
* in : ZPSymPtr
|
||||||
* Y,A = Expected T/Q
|
* Y,A = Expected T/Q
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.F.CallNoRetV ldy #0 no expected T/Q
|
F.CallNoRetV ldy #0 no expected T/Q
|
||||||
tya
|
tya
|
||||||
clc
|
clc
|
||||||
.HS B0 BCS
|
.HS B0 BCS
|
||||||
CC.F.CallRetV sec
|
F.CallRetV sec
|
||||||
|
|
||||||
ldx ZPPtr1 local : variadic size
|
ldx ZPPtr1 local : variadic size
|
||||||
phx
|
phx
|
||||||
|
@ -202,13 +206,13 @@ CC.F.CallRetV sec
|
||||||
* lda (ZPLookupSymPtr),y
|
* lda (ZPLookupSymPtr),y
|
||||||
* beq .20 SYS/LIB/FPU call, no ret value space
|
* beq .20 SYS/LIB/FPU call, no ret value space
|
||||||
|
|
||||||
jsr CC.EXP.GetSymSizeOfInAXC
|
jsr EXP.GetSymSizeOfInAXC
|
||||||
jsr CODE.nAddLocal
|
jsr CODE.nAddLocal
|
||||||
|
* >DEBUG
|
||||||
.20 jsr CC.GetNextCharNB skip '('
|
.20 jsr CORE.GetNCharNB skip '('
|
||||||
bcs .90
|
bcs .90
|
||||||
|
|
||||||
jsr CC.SYM.LookupCheckTQ
|
jsr SYM.LookupCheckTQ
|
||||||
bcs .93
|
bcs .93
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
stz ZPPtr1 Reset VARIADIC byte count
|
stz ZPPtr1 Reset VARIADIC byte count
|
||||||
|
@ -216,7 +220,7 @@ CC.F.CallRetV sec
|
||||||
lda #SYM.Def
|
lda #SYM.Def
|
||||||
>STA.G CC.LookupSymPtr
|
>STA.G CC.LookupSymPtr
|
||||||
|
|
||||||
jsr CC.F.GetTQ get First Arg T/Q
|
jsr F.GetTQ get First Arg T/Q
|
||||||
beq .7 end of list, go check ending ')'
|
beq .7 end of list, go check ending ')'
|
||||||
|
|
||||||
.3 cpy #SYM.T.VARIADIC
|
.3 cpy #SYM.T.VARIADIC
|
||||||
|
@ -227,13 +231,13 @@ CC.F.CallRetV sec
|
||||||
|
|
||||||
.4 and #$F0 CONST+VOLATILE+FUNC+FASTCALL
|
.4 and #$F0 CONST+VOLATILE+FUNC+FASTCALL
|
||||||
|
|
||||||
jsr CC.EXP.Eval
|
jsr EXP.Eval
|
||||||
bcs .93
|
bcs .93
|
||||||
|
|
||||||
jsr CC.EXP.GetYASizeOfInAXC
|
jsr EXP.GetYASizeOfInAXC
|
||||||
tax save Sizeof in X
|
tax save Sizeof in X
|
||||||
|
|
||||||
jsr CC.F.GetTQ
|
jsr F.GetTQ
|
||||||
cpy #SYM.T.VARIADIC
|
cpy #SYM.T.VARIADIC
|
||||||
bne .50 if VARIADIC, don't advance to next arg
|
bne .50 if VARIADIC, don't advance to next arg
|
||||||
|
|
||||||
|
@ -255,9 +259,9 @@ CC.F.CallRetV sec
|
||||||
cmp #','
|
cmp #','
|
||||||
bne .6
|
bne .6
|
||||||
|
|
||||||
jsr CC.GetNextCharNBNL Skip ','
|
jsr CORE.GetNCharNBNL Skip ','
|
||||||
|
|
||||||
jsr CC.F.GetTQ
|
jsr F.GetTQ
|
||||||
bne .3 Another ARG....
|
bne .3 Another ARG....
|
||||||
|
|
||||||
bra .90 extra args....error
|
bra .90 extra args....error
|
||||||
|
@ -265,7 +269,7 @@ CC.F.CallRetV sec
|
||||||
.6 cmp #')'
|
.6 cmp #')'
|
||||||
bne .90
|
bne .90
|
||||||
|
|
||||||
jsr CC.F.GetTQ
|
jsr F.GetTQ
|
||||||
beq .8 no more arg after ')', exit
|
beq .8 no more arg after ')', exit
|
||||||
|
|
||||||
cpy #SYM.T.VARIADIC
|
cpy #SYM.T.VARIADIC
|
||||||
|
@ -280,9 +284,9 @@ CC.F.CallRetV sec
|
||||||
cmp #')'
|
cmp #')'
|
||||||
bne .90
|
bne .90
|
||||||
|
|
||||||
.8 jsr CC.GetNextCharNB Skip )
|
.8 jsr CORE.GetNCharNB Skip )
|
||||||
|
|
||||||
jsr CC.F.Call2
|
jsr F.Call2
|
||||||
bra .93
|
bra .93
|
||||||
|
|
||||||
.90 lda #E.CSYN
|
.90 lda #E.CSYN
|
||||||
|
@ -303,14 +307,14 @@ CC.F.CallRetV sec
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* X = last var size
|
* X = last var size
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.F.Call2 ldy #SYM.Q
|
F.Call2 ldy #SYM.Q
|
||||||
lda (ZPLookupSymPtr),y
|
lda (ZPLookupSymPtr),y
|
||||||
and #SYM.Q.FASTCALL
|
and #SYM.Q.FASTCALL
|
||||||
beq .1
|
beq .1
|
||||||
|
|
||||||
ldy #SYM.Def Get first (only) argument
|
ldy #SYM.Def Get first (only) argument
|
||||||
jsr CC.F.GetTQAtY
|
jsr F.GetTQAtY
|
||||||
jsr CC.TYPE.SizeOf
|
jsr TYPE.SizeOf
|
||||||
|
|
||||||
dex
|
dex
|
||||||
bne .19
|
bne .19
|
||||||
|
@ -320,7 +324,7 @@ CC.F.Call2 ldy #SYM.Q
|
||||||
|
|
||||||
.19 jsr CODE.PULLYA
|
.19 jsr CODE.PULLYA
|
||||||
|
|
||||||
.1 jsr CC.F.Call3
|
.1 jsr F.Call3
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
bit ZPPtr1+1 bRetV
|
bit ZPPtr1+1 bRetV
|
||||||
|
@ -329,7 +333,7 @@ CC.F.Call2 ldy #SYM.Q
|
||||||
* NO Return Value : call & discard stack if not in Y,A
|
* NO Return Value : call & discard stack if not in Y,A
|
||||||
|
|
||||||
>LDYA ZPPtr2 function T/Q
|
>LDYA ZPPtr2 function T/Q
|
||||||
jsr CC.TYPE.SizeOf
|
jsr TYPE.SizeOf
|
||||||
txa
|
txa
|
||||||
beq .11 void
|
beq .11 void
|
||||||
|
|
||||||
|
@ -352,7 +356,7 @@ CC.F.Call2 ldy #SYM.Q
|
||||||
bcs .8 not a SYS/FPU/LIB call...Ret value on stack
|
bcs .8 not a SYS/FPU/LIB call...Ret value on stack
|
||||||
|
|
||||||
>LDYA ZPPtr2 function T/Q
|
>LDYA ZPPtr2 function T/Q
|
||||||
jsr CC.TYPE.SizeOf
|
jsr TYPE.SizeOf
|
||||||
cpx #3
|
cpx #3
|
||||||
bcs .8 leave on stack
|
bcs .8 leave on stack
|
||||||
|
|
||||||
|
@ -369,7 +373,7 @@ CC.F.Call2 ldy #SYM.Q
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.F.Call3 ldy #SYM.Addr+1
|
F.Call3 ldy #SYM.Addr+1
|
||||||
|
|
||||||
lda (ZPLookupSymPtr),y
|
lda (ZPLookupSymPtr),y
|
||||||
beq .9
|
beq .9
|
||||||
|
@ -427,10 +431,10 @@ CC.F.Call3 ldy #SYM.Addr+1
|
||||||
sec
|
sec
|
||||||
.99 rts
|
.99 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.F.GetTQ >LDA.G CC.LookupSymPtr
|
F.GetTQ >LDA.G CC.LookupSymPtr
|
||||||
tay
|
tay
|
||||||
|
|
||||||
CC.F.GetTQAtY lda (ZPLookupSymPtr),y
|
F.GetTQAtY lda (ZPLookupSymPtr),y
|
||||||
pha
|
pha
|
||||||
iny
|
iny
|
||||||
lda (ZPLookupSymPtr),y
|
lda (ZPLookupSymPtr),y
|
||||||
|
|
|
@ -1,8 +1,7 @@
|
||||||
NEW
|
NEW
|
||||||
AUTO 3,1
|
AUTO 3,1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.FIO.LoadLIB.o
|
FIO.LoadLIB.o >LDA.G LibCount
|
||||||
>LDA.G LibCount
|
|
||||||
cmp #LIBS.MAX
|
cmp #LIBS.MAX
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
|
@ -57,10 +56,10 @@ CC.FIO.LoadLIB.o
|
||||||
|
|
||||||
.99 rts
|
.99 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.FIO.FOpen1st >LDA.G CC.InFileArg
|
FIO.FOpen1st >LDA.G CC.InFileArg
|
||||||
>SYSCALL ArgV
|
>SYSCALL ArgV
|
||||||
|
|
||||||
CC.FIO.FOpen phy
|
FIO.FOpen phy
|
||||||
pha
|
pha
|
||||||
|
|
||||||
>PUSHW L.MSG.READING
|
>PUSHW L.MSG.READING
|
||||||
|
@ -100,7 +99,7 @@ CC.FIO.FOpen phy
|
||||||
|
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.FIO.FGetS >LDYA.G LineBufPtr
|
FIO.FGetS >LDYA.G LineBufPtr
|
||||||
>STYA ZPLineBufPtr
|
>STYA ZPLineBufPtr
|
||||||
|
|
||||||
>LDA.G LineCntPtr
|
>LDA.G LineCntPtr
|
||||||
|
@ -134,7 +133,7 @@ CC.FIO.FGetS >LDYA.G LineBufPtr
|
||||||
|
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.FIO.FClose >LDA.G hFilePtr
|
FIO.FClose >LDA.G hFilePtr
|
||||||
cmp #hFilePtr
|
cmp #hFilePtr
|
||||||
beq .8
|
beq .8
|
||||||
|
|
||||||
|
@ -156,7 +155,7 @@ CC.FIO.FClose >LDA.G hFilePtr
|
||||||
|
|
||||||
.8 rts
|
.8 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.FIO.FCreate lda ZPCCCode+1
|
FIO.FCreate lda ZPCCCode+1
|
||||||
sta PCC.FH+PCC.FH.CONST+1
|
sta PCC.FH+PCC.FH.CONST+1
|
||||||
sec
|
sec
|
||||||
sbc #$20
|
sbc #$20
|
||||||
|
|
453
BIN/CC.S.KW.txt
453
BIN/CC.S.KW.txt
|
@ -3,7 +3,7 @@ NEW
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* Built in Keywords
|
* Built in Keywords
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.KW.IF jsr CC.KW.BEGIN00
|
KW.IF jsr KW.BEGIN00
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
jsr CC.GetCharNB
|
jsr CC.GetCharNB
|
||||||
|
@ -12,16 +12,16 @@ CC.KW.IF jsr CC.KW.BEGIN00
|
||||||
cmp #'('
|
cmp #'('
|
||||||
bne .9
|
bne .9
|
||||||
|
|
||||||
jsr CC.GetNextCharNB
|
jsr CORE.GetNCharNB
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
jsr CC.EXP.Eval00 Any var type
|
jsr EXP.Eval00 Any var type
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
jsr CC.KW.TestZero Y,A=T/Q
|
jsr KW.TestZero Y,A=T/Q
|
||||||
|
|
||||||
lda #'E'
|
lda #'E'
|
||||||
jsr CC.SYM.LookupA
|
jsr SYM.LookupA
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
lda #$4C emit JMP else
|
lda #$4C emit JMP else
|
||||||
|
@ -34,13 +34,13 @@ CC.KW.IF jsr CC.KW.BEGIN00
|
||||||
cmp #')'
|
cmp #')'
|
||||||
bne .9
|
bne .9
|
||||||
|
|
||||||
jmp CC.KW.STMT
|
jmp KW.STMT
|
||||||
|
|
||||||
.9 lda #E.CSYN
|
.9 lda #E.CSYN
|
||||||
sec
|
sec
|
||||||
.99 rts
|
.99 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.KW.IF.END jsr CC.GetCharNBNL
|
KW.IF.END jsr CORE.GetCharNBNL
|
||||||
bcs .1
|
bcs .1
|
||||||
|
|
||||||
cmp #';'
|
cmp #';'
|
||||||
|
@ -51,14 +51,14 @@ CC.KW.IF.END jsr CC.GetCharNBNL
|
||||||
bcc .2
|
bcc .2
|
||||||
|
|
||||||
.1 lda #'E' define ELSE Label
|
.1 lda #'E' define ELSE Label
|
||||||
jsr CC.KW.NewLabel
|
jsr KW.NewLabel
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
clv pop context
|
clv pop context
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.2 lda #'X'
|
.2 lda #'X'
|
||||||
jsr CC.SYM.LookupA
|
jsr SYM.LookupA
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
lda #$4C emit JMP exit
|
lda #$4C emit JMP exit
|
||||||
|
@ -66,7 +66,7 @@ CC.KW.IF.END jsr CC.GetCharNBNL
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
lda #'E' define ELSE Label
|
lda #'E' define ELSE Label
|
||||||
jsr CC.KW.NewLabel
|
jsr KW.NewLabel
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
inc CStackPtr pop ; or }
|
inc CStackPtr pop ; or }
|
||||||
|
@ -75,7 +75,7 @@ CC.KW.IF.END jsr CC.GetCharNBNL
|
||||||
ldy CStackPtr
|
ldy CStackPtr
|
||||||
sta (ZPCCStack),y
|
sta (ZPCCStack),y
|
||||||
|
|
||||||
jsr CC.KW.STMT
|
jsr KW.STMT
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
bit .99 set V : DONT pop context
|
bit .99 set V : DONT pop context
|
||||||
|
@ -85,22 +85,22 @@ CC.KW.IF.END jsr CC.GetCharNBNL
|
||||||
sec
|
sec
|
||||||
.99 rts
|
.99 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.KW.ELSE lda #E.CSYN illegal
|
KW.ELSE lda #E.CSYN illegal
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.KW.ELSE.END lda #'X' define EXIT Label
|
KW.ELSE.END lda #'X' define EXIT Label
|
||||||
jsr CC.KW.NewLabel
|
jsr KW.NewLabel
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
clv pop context
|
clv pop context
|
||||||
.99 rts
|
.99 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.KW.WHILE jsr CC.KW.BEGIN00
|
KW.WHILE jsr KW.BEGIN00
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
lda #'C' define CONT Label
|
lda #'C' define CONT Label
|
||||||
jsr CC.SYM.NewA
|
jsr SYM.NewA
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
jsr CC.GetCharNB
|
jsr CC.GetCharNB
|
||||||
|
@ -109,16 +109,16 @@ CC.KW.WHILE jsr CC.KW.BEGIN00
|
||||||
cmp #'('
|
cmp #'('
|
||||||
bne .9
|
bne .9
|
||||||
|
|
||||||
jsr CC.GetNextCharNB
|
jsr CORE.GetNCharNB
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
jsr CC.EXP.Eval00 Any var type
|
jsr EXP.Eval00 Any var type
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
jsr CC.KW.TestZero
|
jsr KW.TestZero
|
||||||
|
|
||||||
lda #'B'
|
lda #'B'
|
||||||
jsr CC.SYM.LookupA
|
jsr SYM.LookupA
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
lda #$4C emit JMP break:
|
lda #$4C emit JMP break:
|
||||||
|
@ -131,14 +131,14 @@ CC.KW.WHILE jsr CC.KW.BEGIN00
|
||||||
cmp #')'
|
cmp #')'
|
||||||
bne .9
|
bne .9
|
||||||
|
|
||||||
jmp CC.KW.STMT
|
jmp KW.STMT
|
||||||
|
|
||||||
.9 lda #E.CSYN
|
.9 lda #E.CSYN
|
||||||
sec
|
sec
|
||||||
.99 rts
|
.99 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.KW.WHILE.END lda #'C'
|
KW.WHILE.END lda #'C'
|
||||||
jsr CC.KW.GetLabel
|
jsr KW.GetLabel
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
lda #$4C
|
lda #$4C
|
||||||
|
@ -146,25 +146,25 @@ CC.KW.WHILE.END lda #'C'
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
lda #'B' define BREAK Label
|
lda #'B' define BREAK Label
|
||||||
jsr CC.KW.NewLabel
|
jsr KW.NewLabel
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
clv pop context
|
clv pop context
|
||||||
|
|
||||||
.99 rts
|
.99 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.KW.DO jsr CC.KW.BEGIN00
|
KW.DO jsr KW.BEGIN00
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
lda #'C' define CONT Label
|
lda #'C' define CONT Label
|
||||||
jsr CC.SYM.NewA
|
jsr SYM.NewA
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
jmp CC.KW.STMT
|
jmp KW.STMT
|
||||||
|
|
||||||
.99 rts
|
.99 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.KW.DO.END >LDYA L.CC.KW2.DO Check allowed KW for DO....
|
KW.DO.END >LDYA L.CC.KW2.DO Check allowed KW for DO....
|
||||||
jsr CC.LookupID
|
jsr CC.LookupID
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
|
@ -174,16 +174,16 @@ CC.KW.DO.END >LDYA L.CC.KW2.DO Check allowed KW for DO....
|
||||||
cmp #'('
|
cmp #'('
|
||||||
bne .9
|
bne .9
|
||||||
|
|
||||||
jsr CC.GetNextCharNB
|
jsr CORE.GetNCharNB
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
jsr CC.EXP.Eval00 Any var type
|
jsr EXP.Eval00 Any var type
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
jsr CC.KW.TestnZero
|
jsr KW.TestnZero
|
||||||
|
|
||||||
lda #'C'
|
lda #'C'
|
||||||
jsr CC.KW.GetLabel
|
jsr KW.GetLabel
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
lda #$4C emit JMP cont
|
lda #$4C emit JMP cont
|
||||||
|
@ -191,7 +191,7 @@ CC.KW.DO.END >LDYA L.CC.KW2.DO Check allowed KW for DO....
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
lda #'B' define BREAK Label
|
lda #'B' define BREAK Label
|
||||||
jsr CC.KW.NewLabel
|
jsr KW.NewLabel
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
jsr CC.GetCharNB
|
jsr CC.GetCharNB
|
||||||
|
@ -200,7 +200,7 @@ CC.KW.DO.END >LDYA L.CC.KW2.DO Check allowed KW for DO....
|
||||||
cmp #')'
|
cmp #')'
|
||||||
bne .9
|
bne .9
|
||||||
|
|
||||||
jsr CC.GetNextCharNB
|
jsr CORE.GetNCharNB
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
clv pop context
|
clv pop context
|
||||||
|
@ -227,31 +227,31 @@ CC.KW.DO.END >LDYA L.CC.KW2.DO Check allowed KW for DO....
|
||||||
* break:
|
* break:
|
||||||
* }
|
* }
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.KW.FOR jsr CC.GetCharNB
|
KW.FOR jsr CC.GetCharNB
|
||||||
bcs .29
|
bcs .29
|
||||||
|
|
||||||
cmp #'('
|
cmp #'('
|
||||||
bne .29
|
bne .29
|
||||||
|
|
||||||
jsr CC.KW.BEGIN00
|
jsr KW.BEGIN00
|
||||||
bcs .29
|
bcs .29
|
||||||
|
|
||||||
jsr CC.GetNextCharNB skip '('
|
jsr CORE.GetNCharNB skip '('
|
||||||
bcs .29
|
bcs .29
|
||||||
|
|
||||||
>LDYA L.CC.TYPEQUAL
|
>LDYA L.CC.TYPEQUAL
|
||||||
jsr CC.LookupID
|
jsr CC.LookupID
|
||||||
bcs .1
|
bcs .1
|
||||||
|
|
||||||
jsr CC.DECL
|
jsr DECL.X
|
||||||
bcc .2
|
bcc .2
|
||||||
|
|
||||||
.19 rts
|
.19 rts
|
||||||
|
|
||||||
.1 jsr CC.STMT get s1
|
.1 jsr STMT.Get get s1
|
||||||
bcs .19
|
bcs .19
|
||||||
|
|
||||||
* jsr CC.KW.StackDiscard
|
* jsr KW.StackDiscard
|
||||||
|
|
||||||
.2 jsr CC.GetCharNB
|
.2 jsr CC.GetCharNB
|
||||||
bcs .9
|
bcs .9
|
||||||
|
@ -259,28 +259,28 @@ CC.KW.FOR jsr CC.GetCharNB
|
||||||
cmp #';'
|
cmp #';'
|
||||||
bne .9
|
bne .9
|
||||||
|
|
||||||
jsr CC.GetNextCharNB skip ';'
|
jsr CORE.GetNCharNB skip ';'
|
||||||
bcs .9
|
bcs .9
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
lda #'L' LOOP Label
|
lda #'L' LOOP Label
|
||||||
jsr CC.SYM.NewA
|
jsr SYM.NewA
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
jsr CC.EXP.Eval00 get e2
|
jsr EXP.Eval00 get e2
|
||||||
.29 bcs .99
|
.29 bcs .99
|
||||||
|
|
||||||
jsr CC.KW.TestZero
|
jsr KW.TestZero
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
lda #'B'
|
lda #'B'
|
||||||
jsr CC.SYM.LookupA
|
jsr SYM.LookupA
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
lda #$4C emit JMP break:
|
lda #$4C emit JMP break:
|
||||||
jsr CODE.TOABSYX
|
jsr CODE.TOABSYX
|
||||||
|
|
||||||
lda #'S'
|
lda #'S'
|
||||||
jsr CC.SYM.LookupA
|
jsr SYM.LookupA
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
lda #$20 emit JSR s:
|
lda #$20 emit JSR s:
|
||||||
|
@ -292,17 +292,17 @@ CC.KW.FOR jsr CC.GetCharNB
|
||||||
cmp #';'
|
cmp #';'
|
||||||
bne .9
|
bne .9
|
||||||
|
|
||||||
jsr CC.GetNextCharNB skip ';'
|
jsr CORE.GetNCharNB skip ';'
|
||||||
bcs .9
|
bcs .9
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
lda #'C' CONT Label
|
lda #'C' CONT Label
|
||||||
jsr CC.SYM.NewA
|
jsr SYM.NewA
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
jsr CC.STMT get s3
|
jsr STMT.Get get s3
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
* jsr CC.KW.StackDiscard
|
* jsr KW.StackDiscard
|
||||||
|
|
||||||
jsr CC.GetCharNB
|
jsr CC.GetCharNB
|
||||||
bcs .9
|
bcs .9
|
||||||
|
@ -311,45 +311,45 @@ CC.KW.FOR jsr CC.GetCharNB
|
||||||
bne .9
|
bne .9
|
||||||
|
|
||||||
lda #'L'
|
lda #'L'
|
||||||
jsr CC.SYM.LookupA
|
jsr SYM.LookupA
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
lda #$4C
|
lda #$4C
|
||||||
jsr CODE.TOABSYX emit JMP loop
|
jsr CODE.TOABSYX emit JMP loop
|
||||||
|
|
||||||
lda #'S' S Label
|
lda #'S' S Label
|
||||||
jsr CC.SYM.NewA
|
jsr SYM.NewA
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
jmp CC.KW.STMT
|
jmp KW.STMT
|
||||||
|
|
||||||
.9 lda #E.CSYN
|
.9 lda #E.CSYN
|
||||||
sec
|
sec
|
||||||
.99 rts
|
.99 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.KW.FOR.END lda #$60
|
KW.FOR.END lda #$60
|
||||||
|
|
||||||
jsr CODE.EmitByte set RTS for JSR code;
|
jsr CODE.EmitByte set RTS for JSR code;
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
lda #'B' define BREAK Label
|
lda #'B' define BREAK Label
|
||||||
jsr CC.KW.NewLabel
|
jsr KW.NewLabel
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
clv pop context
|
clv pop context
|
||||||
|
|
||||||
.99 rts
|
.99 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.KW.SWITCH jsr CC.GetCharNB
|
KW.SWITCH jsr CC.GetCharNB
|
||||||
bcs .98
|
bcs .98
|
||||||
|
|
||||||
cmp #'('
|
cmp #'('
|
||||||
bne .98
|
bne .98
|
||||||
|
|
||||||
jsr CC.GetNextCharNB
|
jsr CORE.GetNCharNB
|
||||||
bcs .98
|
bcs .98
|
||||||
|
|
||||||
jsr CC.EXP.Eval00 Any var type
|
jsr EXP.Eval00 Any var type
|
||||||
bcs .99 Y,A=T/Q
|
bcs .99 Y,A=T/Q
|
||||||
|
|
||||||
tax
|
tax
|
||||||
|
@ -372,7 +372,7 @@ CC.KW.SWITCH jsr CC.GetCharNB
|
||||||
jsr CC.Push push SizeOf(type)
|
jsr CC.Push push SizeOf(type)
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
jsr CC.KW.BEGIN
|
jsr KW.BEGIN
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
jsr CC.GetCharNB
|
jsr CC.GetCharNB
|
||||||
|
@ -381,7 +381,7 @@ CC.KW.SWITCH jsr CC.GetCharNB
|
||||||
cmp #')'
|
cmp #')'
|
||||||
bne .98
|
bne .98
|
||||||
|
|
||||||
jmp CC.KW.STMT
|
jmp KW.STMT
|
||||||
|
|
||||||
.97 lda #E.TMISMATCH
|
.97 lda #E.TMISMATCH
|
||||||
sec
|
sec
|
||||||
|
@ -391,16 +391,16 @@ CC.KW.SWITCH jsr CC.GetCharNB
|
||||||
sec
|
sec
|
||||||
.99 rts
|
.99 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.KW.SWITCH.END
|
KW.SWITCH.END
|
||||||
lda #'B' define BREAK Label
|
lda #'B' define BREAK Label
|
||||||
jsr CC.KW.NewLabel
|
jsr KW.NewLabel
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
clv pop context
|
clv pop context
|
||||||
|
|
||||||
.99 rts
|
.99 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.KW.CASE ldy CStackPtr
|
KW.CASE ldy CStackPtr
|
||||||
beq .9
|
beq .9
|
||||||
|
|
||||||
iny skip ; or }
|
iny skip ; or }
|
||||||
|
@ -417,7 +417,7 @@ CC.KW.CASE ldy CStackPtr
|
||||||
tay
|
tay
|
||||||
lda #0 for integral type
|
lda #0 for integral type
|
||||||
|
|
||||||
jsr CC.EXP.Eval
|
jsr EXP.Eval
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
jsr CC.GetCharNB
|
jsr CC.GetCharNB
|
||||||
|
@ -426,7 +426,7 @@ CC.KW.CASE ldy CStackPtr
|
||||||
cmp #':'
|
cmp #':'
|
||||||
bne .9
|
bne .9
|
||||||
|
|
||||||
jsr CC.GetNextCharNB skip ':'
|
jsr CORE.GetNCharNB skip ':'
|
||||||
|
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
@ -435,7 +435,7 @@ CC.KW.CASE ldy CStackPtr
|
||||||
sec
|
sec
|
||||||
.99 rts
|
.99 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.KW.DEFAULT ldy CStackPtr
|
KW.DEFAULT ldy CStackPtr
|
||||||
beq .9
|
beq .9
|
||||||
|
|
||||||
iny skip ; or }
|
iny skip ; or }
|
||||||
|
@ -449,7 +449,7 @@ CC.KW.DEFAULT ldy CStackPtr
|
||||||
cmp #':'
|
cmp #':'
|
||||||
bne .9
|
bne .9
|
||||||
|
|
||||||
jsr CC.GetNextCharNB skip ':'
|
jsr CORE.GetNCharNB skip ':'
|
||||||
|
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
@ -458,9 +458,9 @@ CC.KW.DEFAULT ldy CStackPtr
|
||||||
sec
|
sec
|
||||||
.99 rts
|
.99 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.KW.BREAK lda #'B'
|
KW.BREAK lda #'B'
|
||||||
|
|
||||||
jsr CC.KW.LookupLabel
|
jsr KW.LookupLabel
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
lda #$4C emit JMP break
|
lda #$4C emit JMP break
|
||||||
|
@ -470,9 +470,9 @@ CC.KW.BREAK lda #'B'
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.KW.CONTINUE lda #'C'
|
KW.CONTINUE lda #'C'
|
||||||
|
|
||||||
jsr CC.KW.LookupLabel
|
jsr KW.LookupLabel
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
lda #$4C emit JMP cont
|
lda #$4C emit JMP cont
|
||||||
|
@ -482,7 +482,7 @@ CC.KW.CONTINUE lda #'C'
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.KW.RETURN ldy CStackPtr
|
KW.RETURN ldy CStackPtr
|
||||||
beq .9
|
beq .9
|
||||||
|
|
||||||
.1 iny skip ; or }
|
.1 iny skip ; or }
|
||||||
|
@ -515,10 +515,10 @@ CC.KW.RETURN ldy CStackPtr
|
||||||
|
|
||||||
ply
|
ply
|
||||||
|
|
||||||
jsr CC.EXP.Eval
|
jsr EXP.Eval
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
jsr CC.SYM.GetYASizeOfInAXC Y,A=T/Q
|
jsr SYM.GetYASizeOfInAXC Y,A=T/Q
|
||||||
tax X = sizeof
|
tax X = sizeof
|
||||||
jsr CODE.SetRetValue
|
jsr CODE.SetRetValue
|
||||||
bcs .99
|
bcs .99
|
||||||
|
@ -526,287 +526,19 @@ CC.KW.RETURN ldy CStackPtr
|
||||||
>LDYA L.PCC.LEAVE
|
>LDYA L.PCC.LEAVE
|
||||||
jmp CODE.EmitPCC
|
jmp CODE.EmitPCC
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.KW.SIZEOF
|
KW.SIZEOF
|
||||||
lda #E.CSYN
|
lda #E.CSYN
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.KW.STRUCT clc
|
KW.BEGIN00 lda #0
|
||||||
.HS B0 BCS
|
|
||||||
*--------------------------------------
|
|
||||||
CC.KW.UNION sec
|
|
||||||
stz ZPPtr2 bNewTagDef
|
|
||||||
|
|
||||||
ror ZPPtr2+1 bStrucUnion
|
|
||||||
|
|
||||||
bit bPass2
|
|
||||||
bpl CC.KW.SU.1 Pass 1: create def
|
|
||||||
*--------------------------------------
|
|
||||||
CC.KW.SU.2 jsr CC.GetNextCharNB
|
|
||||||
bcs .98
|
|
||||||
|
|
||||||
cmp #'{'
|
|
||||||
beq .1 no TAG
|
|
||||||
|
|
||||||
jsr CC.KW.GetTag
|
|
||||||
bcs .99
|
|
||||||
|
|
||||||
jsr CC.GetNextCharNBNL
|
|
||||||
bcs .98
|
|
||||||
|
|
||||||
cmp #'{'
|
|
||||||
bne .2
|
|
||||||
|
|
||||||
.1 jsr CC.GetNextCharNBNL skip '{'
|
|
||||||
|
|
||||||
cmp #'}'
|
|
||||||
bne .1
|
|
||||||
|
|
||||||
jsr CC.GetNextCharNBNL skip '}'
|
|
||||||
|
|
||||||
cmp #';'
|
|
||||||
bne .2
|
|
||||||
|
|
||||||
jsr CC.GetNextCharNB skip ';'
|
|
||||||
|
|
||||||
clc
|
|
||||||
rts
|
|
||||||
|
|
||||||
.2 clc reuse buffer
|
|
||||||
|
|
||||||
jsr CC.SYM.Lookup
|
|
||||||
bcs .99
|
|
||||||
|
|
||||||
jsr CC.GetCharNB
|
|
||||||
bcs .98
|
|
||||||
|
|
||||||
cmp #','
|
|
||||||
bne .3
|
|
||||||
|
|
||||||
jsr CC.GetNextCharNBNL
|
|
||||||
bcc .2
|
|
||||||
bcs .98
|
|
||||||
|
|
||||||
.3 cmp #';'
|
|
||||||
bne .98
|
|
||||||
|
|
||||||
clc
|
|
||||||
rts
|
|
||||||
|
|
||||||
.98 lda #E.CSYN
|
|
||||||
sec
|
|
||||||
.99 rts
|
|
||||||
*--------------------------------------
|
|
||||||
CC.KW.SU.1 ldy #SYM.T.SU
|
|
||||||
lda #0
|
|
||||||
ldx #SYM.SC.TAG
|
|
||||||
sec reset buffer
|
|
||||||
jsr CC.SYM.BufInitYAX
|
|
||||||
|
|
||||||
jsr CC.GetNextCharNB
|
|
||||||
bcs .98
|
|
||||||
|
|
||||||
cmp #'{'
|
|
||||||
beq .30 no TAG
|
|
||||||
|
|
||||||
jsr CC.KW.NewTag
|
|
||||||
bcc .20
|
|
||||||
|
|
||||||
jsr CC.KW.GetTag
|
|
||||||
bcs .99
|
|
||||||
*--------------------------------------
|
|
||||||
.20 jsr CC.GetNextCharNBNL
|
|
||||||
bcs .98
|
|
||||||
|
|
||||||
cmp #'{'
|
|
||||||
beq .30
|
|
||||||
|
|
||||||
bit ZPPtr2 bNewTagDef
|
|
||||||
bmi .98
|
|
||||||
|
|
||||||
bra .41 go create vars...
|
|
||||||
*--------------------------------------
|
|
||||||
.30 jsr CC.GetNextCharNBNL skip '{' of ';'
|
|
||||||
bcs .98
|
|
||||||
|
|
||||||
cmp #'}'
|
|
||||||
beq .38
|
|
||||||
|
|
||||||
>LDYA L.CC.TYPEQUAL
|
|
||||||
jsr CC.LookupID
|
|
||||||
bcs .98
|
|
||||||
|
|
||||||
cpx #4 no const nor volatile
|
|
||||||
bcc .98
|
|
||||||
|
|
||||||
jsr CC.TYPE.Decl
|
|
||||||
bcs .99
|
|
||||||
|
|
||||||
jsr CC.TYPE.SizeOf get sizeof in X
|
|
||||||
|
|
||||||
jsr CC.KW.SU.AddYAX
|
|
||||||
bcs .99
|
|
||||||
|
|
||||||
jsr CC.SYM.Add0000 TODO: bitO & bitW
|
|
||||||
bcs .99
|
|
||||||
|
|
||||||
jsr CC.SYM.AddName
|
|
||||||
bcs .99
|
|
||||||
|
|
||||||
jsr CC.GetCharNB
|
|
||||||
cmp #';'
|
|
||||||
bne .98
|
|
||||||
|
|
||||||
bra .30
|
|
||||||
|
|
||||||
.38 jsr CC.GetNextCharNB skip '}'
|
|
||||||
bcs .98
|
|
||||||
|
|
||||||
jsr CC.SYM.Add0000 Close F definition
|
|
||||||
bcs .99
|
|
||||||
|
|
||||||
cmp #';'
|
|
||||||
bne .40
|
|
||||||
|
|
||||||
jsr CC.GetNextCharNB skip ';'
|
|
||||||
|
|
||||||
bit ZPPtr2 bNewTagDef
|
|
||||||
bpl .98 no tag & no var, error
|
|
||||||
|
|
||||||
jmp CC.KW.StoreTag
|
|
||||||
*--------------------------------------
|
|
||||||
.98 lda #E.CSYN
|
|
||||||
sec
|
|
||||||
.99 rts
|
|
||||||
*--------------------------------------
|
|
||||||
.40 bit ZPPtr2 bNewTagDef
|
|
||||||
bpl .41
|
|
||||||
|
|
||||||
jsr CC.KW.StoreTag
|
|
||||||
bcs .99
|
|
||||||
|
|
||||||
.41 clc reuse buffer
|
|
||||||
|
|
||||||
ldy #SYM.T.SU
|
|
||||||
lda #0
|
|
||||||
jsr CC.DECL.YAC
|
|
||||||
bcs .99
|
|
||||||
|
|
||||||
jsr CC.GetCharNB
|
|
||||||
bcs .98
|
|
||||||
|
|
||||||
cmp #','
|
|
||||||
bne .42
|
|
||||||
|
|
||||||
jsr CC.GetNextCharNBNL
|
|
||||||
bcc .41
|
|
||||||
bcs .98
|
|
||||||
|
|
||||||
.42 cmp #';'
|
|
||||||
bne .98
|
|
||||||
|
|
||||||
clc
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
CC.KW.SU.AddYAX jsr CC.SYM.AddWord add T/Q
|
|
||||||
bcs .99
|
|
||||||
|
|
||||||
bit ZPPtr2+1 bStrucUnion
|
|
||||||
bmi .1
|
|
||||||
|
|
||||||
ldy #SYM.SizeOf
|
|
||||||
lda (ZPSymBufPtr),y
|
|
||||||
pha
|
|
||||||
iny
|
|
||||||
lda (ZPSymBufPtr),y
|
|
||||||
ply
|
|
||||||
|
|
||||||
jsr CC.SYM.AddWord Add Y/A Offset
|
|
||||||
bcs .99
|
|
||||||
|
|
||||||
txa
|
|
||||||
|
|
||||||
ldy #SYM.SizeOf
|
|
||||||
* clc
|
|
||||||
adc (ZPSymBufPtr),y
|
|
||||||
sta (ZPSymBufPtr),y
|
|
||||||
bcc .99
|
|
||||||
|
|
||||||
iny
|
|
||||||
lda #0
|
|
||||||
adc (ZPSymBufPtr),y
|
|
||||||
sta (ZPSymBufPtr),y
|
|
||||||
|
|
||||||
* clc
|
|
||||||
|
|
||||||
.99 rts
|
|
||||||
|
|
||||||
.1 txa
|
|
||||||
ldy #SYM.SizeOf
|
|
||||||
cmp (ZPSymBufPtr),y
|
|
||||||
bcs .2
|
|
||||||
|
|
||||||
sta (ZPSymBufPtr),y
|
|
||||||
|
|
||||||
.2 jmp CC.SYM.Add0000 Add Y/A Offset (always 0 for union)
|
|
||||||
*--------------------------------------
|
|
||||||
CC.KW.ENUM
|
|
||||||
lda #E.CSYN
|
|
||||||
sec
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
CC.KW.NewTag >LDA.G CC.hTags
|
|
||||||
jsr CC.SYM.NewKey
|
|
||||||
bcs .9
|
|
||||||
|
|
||||||
>STYA ZPPtr1 TagID
|
|
||||||
dec ZPPtr2 bNewTagDef = true
|
|
||||||
|
|
||||||
jsr CC.SkipX
|
|
||||||
|
|
||||||
.9 rts
|
|
||||||
*--------------------------------------
|
|
||||||
CC.KW.GetTag >PUSHB.G CC.hTags
|
|
||||||
>PUSHW ZPLineBufPtr
|
|
||||||
|
|
||||||
>SYSCALL SListLookup
|
|
||||||
bcs .9
|
|
||||||
|
|
||||||
phy Y,A = KeyID
|
|
||||||
pha
|
|
||||||
|
|
||||||
jsr CC.SkipX X = KeyLen
|
|
||||||
|
|
||||||
>PUSHB.G CC.hTags
|
|
||||||
pla
|
|
||||||
>PUSHA
|
|
||||||
pla
|
|
||||||
>PUSHA
|
|
||||||
>PUSHW ZPSymBufPtr
|
|
||||||
>PUSHWI 65535 all
|
|
||||||
>PUSHWZ From Start
|
|
||||||
>SYSCALL SListGetData
|
|
||||||
.9 rts
|
|
||||||
*--------------------------------------
|
|
||||||
CC.KW.StoreTag >PUSHB.G CC.hTags
|
|
||||||
>PUSHW ZPPtr1
|
|
||||||
>PUSHW ZPSymBufPtr
|
|
||||||
>PUSHBI 0
|
|
||||||
ldy #SYM.DefSize
|
|
||||||
lda (ZPSymBufPtr),y
|
|
||||||
>PUSHA
|
|
||||||
|
|
||||||
>SYSCALL SListAddData
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
CC.KW.BEGIN00 lda #0
|
|
||||||
jsr CC.Push no T/Q
|
jsr CC.Push no T/Q
|
||||||
bcs CC.KW.BEGIN.RTS
|
bcs KW.BEGIN.RTS
|
||||||
|
|
||||||
jsr CC.Push
|
jsr CC.Push
|
||||||
bcs CC.KW.BEGIN.RTS
|
bcs KW.BEGIN.RTS
|
||||||
|
|
||||||
CC.KW.BEGIN jsr CC.SYM.NewCPSID
|
KW.BEGIN jsr SYM.NewCPSID
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
>LDA.G CC.CPSPFX+3
|
>LDA.G CC.CPSPFX+3
|
||||||
|
@ -829,15 +561,15 @@ CC.KW.BEGIN jsr CC.SYM.NewCPSID
|
||||||
jmp CC.Push
|
jmp CC.Push
|
||||||
|
|
||||||
.99
|
.99
|
||||||
CC.KW.BEGIN.RTS rts
|
KW.BEGIN.RTS rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.KW.STMT jsr CC.GetNextCharNBNL
|
KW.STMT jsr CORE.GetNCharNBNL
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
cmp #'{'
|
cmp #'{'
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
jsr CC.GetNextCharNB skip '{'
|
jsr CORE.GetNCharNB skip '{'
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
lda #'}'
|
lda #'}'
|
||||||
|
@ -850,7 +582,7 @@ CC.KW.STMT jsr CC.GetNextCharNBNL
|
||||||
sec
|
sec
|
||||||
.99 rts
|
.99 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.KW.NewLabel pha
|
KW.NewLabel pha
|
||||||
|
|
||||||
lda CStackPtr
|
lda CStackPtr
|
||||||
clc
|
clc
|
||||||
|
@ -865,9 +597,9 @@ CC.KW.NewLabel pha
|
||||||
>STYA.G CC.CPSPFX+2
|
>STYA.G CC.CPSPFX+2
|
||||||
|
|
||||||
pla
|
pla
|
||||||
jmp CC.SYM.NewA
|
jmp SYM.NewA
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.KW.GetLabel pha
|
KW.GetLabel pha
|
||||||
|
|
||||||
lda CStackPtr
|
lda CStackPtr
|
||||||
clc
|
clc
|
||||||
|
@ -882,10 +614,9 @@ CC.KW.GetLabel pha
|
||||||
>STYA.G CC.CPSPFX+2
|
>STYA.G CC.CPSPFX+2
|
||||||
|
|
||||||
pla
|
pla
|
||||||
jmp CC.SYM.LookupA
|
jmp SYM.LookupA
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.KW.LookupLabel
|
KW.LookupLabel pha
|
||||||
pha
|
|
||||||
|
|
||||||
ldy CStackPtr
|
ldy CStackPtr
|
||||||
sty ArgIndex
|
sty ArgIndex
|
||||||
|
@ -918,7 +649,7 @@ CC.KW.LookupLabel
|
||||||
|
|
||||||
pla
|
pla
|
||||||
pha
|
pha
|
||||||
jsr CC.SYM.LookupA
|
jsr SYM.LookupA
|
||||||
bcs .1
|
bcs .1
|
||||||
|
|
||||||
pla
|
pla
|
||||||
|
@ -931,7 +662,7 @@ CC.KW.LookupLabel
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* Input : Value on Stack, Y,A = Type/Qual
|
* Input : Value on Stack, Y,A = Type/Qual
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.KW.TestZero jsr CC.EXP.GetYASizeOfInAXC
|
KW.TestZero jsr EXP.GetYASizeOfInAXC
|
||||||
tax
|
tax
|
||||||
cpx #1
|
cpx #1
|
||||||
bne .1
|
bne .1
|
||||||
|
@ -955,7 +686,7 @@ CC.KW.TestZero jsr CC.EXP.GetYASizeOfInAXC
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* Input : Value on Stack, Y,A = Type/Qual
|
* Input : Value on Stack, Y,A = Type/Qual
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.KW.TestnZero jsr CC.EXP.GetYASizeOfInAXC
|
KW.TestnZero jsr EXP.GetYASizeOfInAXC
|
||||||
tax
|
tax
|
||||||
cpx #1
|
cpx #1
|
||||||
bne .1
|
bne .1
|
||||||
|
@ -979,9 +710,7 @@ CC.KW.TestnZero jsr CC.EXP.GetYASizeOfInAXC
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* Input : Value on Stack, Y,A = Type/Qual
|
* Input : Value on Stack, Y,A = Type/Qual
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.KW.StackDiscard
|
KW.StackDiscard jsr TYPE.SizeOf
|
||||||
|
|
||||||
jsr CC.TYPE.SizeOf
|
|
||||||
txa
|
txa
|
||||||
beq .8 void
|
beq .8 void
|
||||||
|
|
||||||
|
|
|
@ -180,8 +180,8 @@ CC.Link.Dump >PUSHW L.MSG.LINKING2
|
||||||
iny
|
iny
|
||||||
>PUSHB (ZPSymBufPtr),y SYM.SC
|
>PUSHB (ZPSymBufPtr),y SYM.SC
|
||||||
|
|
||||||
iny
|
ldy #SYM.DefSize
|
||||||
>PUSHB (ZPSymBufPtr),y SYM.DefSize
|
>PUSHB (ZPSymBufPtr),y
|
||||||
|
|
||||||
ldy #SYM.SizeOf+1
|
ldy #SYM.SizeOf+1
|
||||||
>PUSHB (ZPSymBufPtr),y
|
>PUSHB (ZPSymBufPtr),y
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
NEW
|
NEW
|
||||||
AUTO 3,1
|
AUTO 3,1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.STMT jsr CC.GetCharNB
|
STMT.Get jsr CC.GetCharNB
|
||||||
jsr CC.IsLetter
|
jsr CC.IsLetter
|
||||||
ldx #$ff
|
ldx #$ff
|
||||||
bcc .20
|
bcc .20
|
||||||
|
@ -12,49 +12,49 @@ CC.STMT jsr CC.GetCharNB
|
||||||
|
|
||||||
.20 stx StmtPreOp
|
.20 stx StmtPreOp
|
||||||
|
|
||||||
jsr CC.SYM.Lookup var or func() ?
|
jsr SYM.Lookup var or func() ?
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
ldy #SYM.Q
|
ldy #SYM.SC
|
||||||
lda (ZPLookupSymPtr),y
|
|
||||||
bit #SYM.Q.FUNC
|
|
||||||
beq .60
|
|
||||||
|
|
||||||
bit StmtPreOp
|
|
||||||
bpl .9 ++func ????????
|
|
||||||
|
|
||||||
jsr CC.F.CallNoRetV func( ... );
|
|
||||||
bcs .99
|
|
||||||
|
|
||||||
jmp CC.SYM.LookupFree
|
|
||||||
|
|
||||||
.60 ldy #SYM.SC
|
|
||||||
lda (ZPLookupSymPtr),y
|
lda (ZPLookupSymPtr),y
|
||||||
cmp #SYM.SC.TYPEDEF
|
cmp #SYM.SC.TYPEDEF
|
||||||
bne .61
|
bne .60
|
||||||
|
*--------------------------------------
|
||||||
jsr CC.GetNextCharNB
|
jsr CORE.GetNCharNB
|
||||||
bcs .9
|
bcs .9
|
||||||
|
* >DEBUG
|
||||||
ldy #SYM.Q
|
ldy #SYM.Q
|
||||||
lda (ZPLookupSymPtr),y
|
lda (ZPLookupSymPtr),y
|
||||||
pha
|
pha
|
||||||
lda (ZPLookupSymPtr)
|
lda (ZPLookupSymPtr)
|
||||||
pha
|
pha
|
||||||
|
|
||||||
jsr CC.SYM.LookupFree
|
jsr SYM.LookupFree
|
||||||
|
|
||||||
ply
|
ply
|
||||||
pla
|
pla
|
||||||
|
|
||||||
sec Reset Buffer
|
sec Reset Buffer
|
||||||
|
|
||||||
jmp CC.DECL.YAC
|
jmp DECL.YAC
|
||||||
|
*--------------------------------------
|
||||||
|
.60 ldy #SYM.Q
|
||||||
|
lda (ZPLookupSymPtr),y
|
||||||
|
bit #SYM.Q.FUNC
|
||||||
|
beq .61
|
||||||
|
|
||||||
|
bit StmtPreOp
|
||||||
|
bpl .9 ++func ????????
|
||||||
|
|
||||||
|
jsr F.CallNoRetV func( ... );
|
||||||
|
bcs .99
|
||||||
|
|
||||||
|
jmp SYM.LookupFree
|
||||||
|
*--------------------------------------
|
||||||
.61 jsr STMT.SetVar
|
.61 jsr STMT.SetVar
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
jmp CC.SYM.LookupFree
|
jmp SYM.LookupFree
|
||||||
|
|
||||||
.9 lda #E.CSYN
|
.9 lda #E.CSYN
|
||||||
sec
|
sec
|
||||||
|
@ -62,11 +62,11 @@ CC.STMT jsr CC.GetCharNB
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
STMT.SetVar stz ExpState
|
STMT.SetVar stz ExpState
|
||||||
|
|
||||||
jsr CC.EXP.POSTOPS var++, var[0]... ?
|
jsr EXP.POSTOPS var++, var[0]... ?
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
ldx StmtPreOp
|
ldx StmtPreOp
|
||||||
jsr CC.EXP.PREOPS apply ++var, ....
|
jsr EXP.PREOPS apply ++var, ....
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
jsr CC.GetCharNB
|
jsr CC.GetCharNB
|
||||||
|
@ -91,7 +91,7 @@ STMT.SetVar stz ExpState
|
||||||
asl
|
asl
|
||||||
bmi .6 AonStack
|
bmi .6 AonStack
|
||||||
|
|
||||||
jsr CC.EXP.GetAddr1
|
jsr EXP.GetAddr1
|
||||||
bcc .7
|
bcc .7
|
||||||
|
|
||||||
rts
|
rts
|
||||||
|
@ -107,10 +107,10 @@ STMT.SetVar stz ExpState
|
||||||
tay
|
tay
|
||||||
pla get expected T/Q
|
pla get expected T/Q
|
||||||
|
|
||||||
jsr CC.EXP.Eval
|
jsr EXP.Eval
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
jmp CC.SYM.PopValue
|
jmp SYM.PopValue
|
||||||
|
|
||||||
.8 clc
|
.8 clc
|
||||||
rts
|
rts
|
||||||
|
@ -197,7 +197,7 @@ CC.STMT.POP bne .98
|
||||||
|
|
||||||
jmp (J.CC.KW.END,x)
|
jmp (J.CC.KW.END,x)
|
||||||
|
|
||||||
.8 jmp CC.F.Def.END
|
.8 jmp F.Def.END
|
||||||
|
|
||||||
.98 lda #E.CSYN
|
.98 lda #E.CSYN
|
||||||
sec
|
sec
|
||||||
|
|
165
BIN/CC.S.SYM.txt
165
BIN/CC.S.SYM.txt
|
@ -6,20 +6,20 @@ NEW
|
||||||
* CC : Reuse Buffer
|
* CC : Reuse Buffer
|
||||||
* Output : Y,A = VarID
|
* Output : Y,A = VarID
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.SYM.New >STYA ZPPtr2 T/Q
|
SYM.New >STYA ZPPtr2 T/Q
|
||||||
stx ZPPtr3 SC
|
stx ZPPtr3 SC
|
||||||
|
|
||||||
bit bPass2
|
bit bPass2
|
||||||
bpl CC.SYM.New.1
|
bpl SYM.New.1
|
||||||
|
|
||||||
bit bLocalScope
|
bit bLocalScope
|
||||||
bmi CC.SYM.New.1
|
bmi SYM.New.1
|
||||||
|
|
||||||
>PUSHB.G CC.hScopes Global Scope
|
>PUSHB.G CC.hScopes Global Scope
|
||||||
>PUSHW ZPLineBufPtr
|
>PUSHW ZPLineBufPtr
|
||||||
|
|
||||||
>SYSCALL SListLookup
|
>SYSCALL SListLookup
|
||||||
bcs CC.SYM.New.9
|
bcs SYM.New.9
|
||||||
|
|
||||||
>STYA.G CC.SymID Y,A = KeyID
|
>STYA.G CC.SymID Y,A = KeyID
|
||||||
|
|
||||||
|
@ -31,22 +31,22 @@ CC.SYM.New >STYA ZPPtr2 T/Q
|
||||||
>PUSHWI 65535 all
|
>PUSHWI 65535 all
|
||||||
>PUSHWZ From Start
|
>PUSHWZ From Start
|
||||||
>SYSCALL SListGetData
|
>SYSCALL SListGetData
|
||||||
bcc CC.SYM.New.2
|
bcc SYM.New.2
|
||||||
|
|
||||||
CC.SYM.New.9 rts Y,A = SymSize
|
SYM.New.9 rts Y,A = SymSize
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.SYM.New.1 jsr CC.SYM.BufInitYAX set buf according C
|
SYM.New.1 jsr SYM.BufInitYAXC set buf according C
|
||||||
|
|
||||||
ldy ScopeIdx
|
ldy ScopeIdx
|
||||||
lda (pData),y
|
lda (pData),y
|
||||||
jsr CC.SYM.NewKey
|
jsr SYM.NewKey
|
||||||
bcs CC.SYM.New.9
|
bcs SYM.New.9
|
||||||
|
|
||||||
>STYA.G CC.SymID Y,A = KeyID
|
>STYA.G CC.SymID Y,A = KeyID
|
||||||
|
|
||||||
jsr CC.SkipX X = KeyLen
|
jsr CC.SkipX X = KeyLen
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.SYM.New.2 jsr CC.GetCharNB
|
SYM.New.2 jsr CC.GetCharNB
|
||||||
bcs .98
|
bcs .98
|
||||||
|
|
||||||
cmp #';'
|
cmp #';'
|
||||||
|
@ -54,35 +54,35 @@ CC.SYM.New.2 jsr CC.GetCharNB
|
||||||
|
|
||||||
lda ZPPtr3
|
lda ZPPtr3
|
||||||
cmp #SYM.SC.TYPEDEF
|
cmp #SYM.SC.TYPEDEF
|
||||||
bne CC.SYM.SetAddr
|
bne SYM.SetAddr
|
||||||
|
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.1 cmp #'('
|
.1 cmp #'('
|
||||||
bne CC.SYM.NewV
|
bne SYM.NewV
|
||||||
|
|
||||||
ldy #SYM.Q
|
ldy #SYM.Q
|
||||||
lda #SYM.Q.FUNC
|
lda #SYM.Q.FUNC
|
||||||
ora (ZPSymBufPtr),y
|
ora (ZPSymBufPtr),y
|
||||||
sta (ZPSymBufPtr),y
|
sta (ZPSymBufPtr),y
|
||||||
|
|
||||||
jmp CC.F.Decl
|
jmp F.Decl
|
||||||
|
|
||||||
.98 lda #E.CSYN
|
.98 lda #E.CSYN
|
||||||
sec
|
sec
|
||||||
.99 rts
|
.99 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.SYM.NewV cmp #'['
|
SYM.NewV cmp #'['
|
||||||
bne CC.SYM.SetAddr
|
bne SYM.SetAddr
|
||||||
|
|
||||||
ldy #SYM.Q
|
ldy #SYM.Q
|
||||||
lda (ZPSymBufPtr),y
|
lda (ZPSymBufPtr),y
|
||||||
and #%11001111
|
and #%11001111
|
||||||
sta (ZPSymBufPtr),y
|
sta (ZPSymBufPtr),y
|
||||||
|
|
||||||
lda #SYM.Def
|
|
||||||
ldy #SYM.DefSize
|
ldy #SYM.DefSize
|
||||||
|
lda #SYM.Def
|
||||||
sta (ZPSymBufPtr),y
|
sta (ZPSymBufPtr),y
|
||||||
|
|
||||||
ldy #SYM.Q
|
ldy #SYM.Q
|
||||||
|
@ -92,7 +92,7 @@ CC.SYM.NewV cmp #'['
|
||||||
adc #SYM.Q.ARRAY
|
adc #SYM.Q.ARRAY
|
||||||
sta (ZPSymBufPtr),y
|
sta (ZPSymBufPtr),y
|
||||||
|
|
||||||
jsr CC.GetNextCharNB Skip [
|
jsr CORE.GetNCharNB Skip [
|
||||||
bcs .98
|
bcs .98
|
||||||
|
|
||||||
cmp #']'
|
cmp #']'
|
||||||
|
@ -103,15 +103,15 @@ CC.SYM.NewV cmp #'['
|
||||||
and #SYM.Q.PPPOINTER
|
and #SYM.Q.PPPOINTER
|
||||||
beq .98 [] only allowed for *
|
beq .98 [] only allowed for *
|
||||||
|
|
||||||
jsr CC.SYM.Add0000 set as [0] (deref)
|
jsr SYM.Add0000 set as [0] (deref)
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
bra .3
|
bra .3
|
||||||
|
|
||||||
.2 jsr CC.EXP.IntConst
|
.2 jsr EXP.IntConst
|
||||||
bcs .98
|
bcs .98
|
||||||
|
|
||||||
jsr CC.SYM.AddWord
|
jsr SYM.AddWord
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
jsr CC.GetCharNB
|
jsr CC.GetCharNB
|
||||||
|
@ -120,11 +120,11 @@ CC.SYM.NewV cmp #'['
|
||||||
cmp #']'
|
cmp #']'
|
||||||
bne .98
|
bne .98
|
||||||
|
|
||||||
.3 jsr CC.GetNextCharNB Skip ]
|
.3 jsr CORE.GetNCharNB Skip ]
|
||||||
bcs CC.SYM.SetAddr
|
bcs SYM.SetAddr
|
||||||
|
|
||||||
cmp #'['
|
cmp #'['
|
||||||
bne CC.SYM.SetAddr
|
bne SYM.SetAddr
|
||||||
|
|
||||||
ldy #SYM.Q
|
ldy #SYM.Q
|
||||||
lda (ZPSymBufPtr),y
|
lda (ZPSymBufPtr),y
|
||||||
|
@ -136,14 +136,14 @@ CC.SYM.NewV cmp #'['
|
||||||
sec
|
sec
|
||||||
.99 rts
|
.99 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.SYM.SetAddr ldy #SYM.SizeOf
|
SYM.SetAddr ldy #SYM.SizeOf
|
||||||
lda (ZPSymBufPtr),y
|
lda (ZPSymBufPtr),y
|
||||||
iny
|
iny
|
||||||
ora (ZPSymBufPtr),y
|
ora (ZPSymBufPtr),y
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
jsr CC.SYM.GetSymSizeOfInAXC
|
jsr SYM.GetSymSizeOfInAXC
|
||||||
jsr CC.SYM.SetSizeOf
|
jsr SYM.SetSizeOf
|
||||||
|
|
||||||
.1 ldy #SYM.Q
|
.1 ldy #SYM.Q
|
||||||
lda (ZPSymBufPtr),y
|
lda (ZPSymBufPtr),y
|
||||||
|
@ -152,16 +152,16 @@ CC.SYM.SetAddr ldy #SYM.SizeOf
|
||||||
|
|
||||||
ldy #SYM.SC
|
ldy #SYM.SC
|
||||||
lda (ZPSymBufPtr),y
|
lda (ZPSymBufPtr),y
|
||||||
beq CC.SYM.SetAddrG SYM.SC.STATIC
|
beq SYM.SetAddrG SYM.SC.STATIC
|
||||||
|
|
||||||
cmp #SYM.SC.AUTO
|
cmp #SYM.SC.AUTO
|
||||||
beq CC.SYM.SetAddrL
|
beq SYM.SetAddrL
|
||||||
|
|
||||||
.9 lda #E.TMISMATCH
|
.9 lda #E.TMISMATCH
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.SYM.SetAddrG ldy #SYM.Addr
|
SYM.SetAddrG ldy #SYM.Addr
|
||||||
|
|
||||||
lda ZPCCData
|
lda ZPCCData
|
||||||
sta (ZPSymBufPtr),y
|
sta (ZPSymBufPtr),y
|
||||||
|
@ -185,7 +185,7 @@ CC.SYM.SetAddrG ldy #SYM.Addr
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.SYM.SetAddrL ldy #SYM.SizeOf+1
|
SYM.SetAddrL ldy #SYM.SizeOf+1
|
||||||
lda (ZPSymBufPtr),y
|
lda (ZPSymBufPtr),y
|
||||||
bne .9
|
bne .9
|
||||||
|
|
||||||
|
@ -212,8 +212,7 @@ CC.SYM.SetAddrL ldy #SYM.SizeOf+1
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.SYM.BufInitYAX
|
SYM.BufInitYAXC pha
|
||||||
pha
|
|
||||||
tya
|
tya
|
||||||
sta (ZPSymBufPtr) #SYM.T
|
sta (ZPSymBufPtr) #SYM.T
|
||||||
|
|
||||||
|
@ -227,21 +226,20 @@ CC.SYM.BufInitYAX
|
||||||
|
|
||||||
bcc .8 DONT reset buffer
|
bcc .8 DONT reset buffer
|
||||||
|
|
||||||
iny
|
|
||||||
lda #0
|
lda #0
|
||||||
|
|
||||||
.1 sta (ZPSymBufPtr),y
|
.1 iny
|
||||||
iny
|
sta (ZPSymBufPtr),y
|
||||||
cpy #SYM.Def
|
cpy #SYM.DefSize-1
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
tya
|
iny #SYM.DefSize
|
||||||
ldy #SYM.DefSize
|
lda #SYM.Def
|
||||||
sta (ZPSymBufPtr),y
|
sta (ZPSymBufPtr),y
|
||||||
|
|
||||||
.8 rts
|
.8 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.SYM.PushAddr ldy #SYM.SC
|
SYM.PushAddr ldy #SYM.SC
|
||||||
lda (ZPSymBufPtr),y
|
lda (ZPSymBufPtr),y
|
||||||
beq .1 SYM.SC.STATIC
|
beq .1 SYM.SC.STATIC
|
||||||
* LOCAL
|
* LOCAL
|
||||||
|
@ -284,7 +282,7 @@ CC.SYM.PushAddr ldy #SYM.SC
|
||||||
|
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.SYM.GetAddr1 ldy #SYM.SC
|
SYM.GetAddr1 ldy #SYM.SC
|
||||||
lda (ZPSymBufPtr),y
|
lda (ZPSymBufPtr),y
|
||||||
beq .1 SYM.SC.STATIC
|
beq .1 SYM.SC.STATIC
|
||||||
* LOCAL
|
* LOCAL
|
||||||
|
@ -322,7 +320,7 @@ CC.SYM.GetAddr1 ldy #SYM.SC
|
||||||
|
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.SYM.GetAddr2 ldy #SYM.SC
|
SYM.GetAddr2 ldy #SYM.SC
|
||||||
lda (ZPSymBufPtr),y
|
lda (ZPSymBufPtr),y
|
||||||
beq .1 SYM.SC.STATIC
|
beq .1 SYM.SC.STATIC
|
||||||
* LOCAL
|
* LOCAL
|
||||||
|
@ -360,7 +358,7 @@ CC.SYM.GetAddr2 ldy #SYM.SC
|
||||||
|
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.SYM.NewKey >PUSHA
|
SYM.NewKey >PUSHA
|
||||||
>PUSHW ZPLineBufPtr
|
>PUSHW ZPLineBufPtr
|
||||||
>SYSCALL SListNewKey
|
>SYSCALL SListNewKey
|
||||||
bcs .9
|
bcs .9
|
||||||
|
@ -369,9 +367,9 @@ CC.SYM.NewKey >PUSHA
|
||||||
|
|
||||||
.9 rts Y,A = KeyID, X = KeyLen
|
.9 rts Y,A = KeyID, X = KeyLen
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.SYM.Add0000 >LDYAI 0
|
SYM.Add0000 >LDYAI 0
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.SYM.AddWord phy
|
SYM.AddWord phy
|
||||||
pha
|
pha
|
||||||
|
|
||||||
ldy #SYM.DefSize
|
ldy #SYM.DefSize
|
||||||
|
@ -407,7 +405,7 @@ CC.SYM.AddWord phy
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.SYM.AddName jsr CC.GetCharNB
|
SYM.AddName jsr CC.GetCharNB
|
||||||
bcs .98
|
bcs .98
|
||||||
|
|
||||||
jsr CC.IsLetter
|
jsr CC.IsLetter
|
||||||
|
@ -415,14 +413,14 @@ CC.SYM.AddName jsr CC.GetCharNB
|
||||||
|
|
||||||
jsr CC.GetIDLen
|
jsr CC.GetIDLen
|
||||||
tax
|
tax
|
||||||
jsr CC.SYM.AddByte
|
jsr SYM.AddByte
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
ldy #0
|
ldy #0
|
||||||
|
|
||||||
.1 lda (ZPLineBufPtr),y
|
.1 lda (ZPLineBufPtr),y
|
||||||
phy
|
phy
|
||||||
jsr CC.SYM.AddByte
|
jsr SYM.AddByte
|
||||||
ply
|
ply
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
|
@ -440,7 +438,7 @@ CC.SYM.AddName jsr CC.GetCharNB
|
||||||
sec
|
sec
|
||||||
.99 rts
|
.99 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.SYM.AddByte pha
|
SYM.AddByte pha
|
||||||
|
|
||||||
ldy #SYM.DefSize
|
ldy #SYM.DefSize
|
||||||
lda (ZPSymBufPtr),y
|
lda (ZPSymBufPtr),y
|
||||||
|
@ -462,7 +460,7 @@ CC.SYM.AddByte pha
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.SYM.NewCPSID >LDYA.G CC.CPSID
|
SYM.NewCPSID >LDYA.G CC.CPSID
|
||||||
>STYA.G CC.CPSPFX+2
|
>STYA.G CC.CPSPFX+2
|
||||||
|
|
||||||
>LDA.G CC.CPSID+1
|
>LDA.G CC.CPSID+1
|
||||||
|
@ -490,7 +488,7 @@ CC.SYM.NewCPSID >LDYA.G CC.CPSID
|
||||||
* sec
|
* sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.SYM.NewA bit bPass2
|
SYM.NewA bit bPass2
|
||||||
bmi .8
|
bmi .8
|
||||||
|
|
||||||
>STA.G CC.CPSPFX A = "B"reak, "C"ontinue...
|
>STA.G CC.CPSPFX A = "B"reak, "C"ontinue...
|
||||||
|
@ -514,49 +512,48 @@ CC.SYM.NewA bit bPass2
|
||||||
iny #SYM.SC
|
iny #SYM.SC
|
||||||
sta (ZPSymBufPtr),y
|
sta (ZPSymBufPtr),y
|
||||||
|
|
||||||
iny
|
|
||||||
lda #0
|
lda #0
|
||||||
|
|
||||||
.1 sta (ZPSymBufPtr),y
|
.1 iny
|
||||||
iny
|
sta (ZPSymBufPtr),y
|
||||||
cpy #SYM.Def
|
cpy #SYM.DefSize-1
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
tya
|
iny #SYM.DefSize
|
||||||
ldy #SYM.DefSize
|
lda #SYM.Def
|
||||||
sta (ZPSymBufPtr),y
|
sta (ZPSymBufPtr),y
|
||||||
|
|
||||||
>LDYA ZPCCCode
|
>LDYA ZPCCCode
|
||||||
jsr CC.SYM.SetAddrYA
|
jsr SYM.SetAddrYA
|
||||||
|
|
||||||
>LDA.G CC.hScopes Global Scope
|
>LDA.G CC.hScopes Global Scope
|
||||||
jmp CC.SYM.Store.1
|
jmp SYM.Store.1
|
||||||
|
|
||||||
.8 clc
|
.8 clc
|
||||||
|
|
||||||
.99 rts
|
.99 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.SYM.StoreF >LDA.G CC.hScopes
|
SYM.StoreF >LDA.G CC.hScopes
|
||||||
|
|
||||||
bit bPass2
|
bit bPass2
|
||||||
bpl CC.SYM.Store.1
|
bpl SYM.Store.1
|
||||||
|
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.SYM.Store bit bPass2
|
SYM.Store bit bPass2
|
||||||
bpl CC.SYM.StoreL Store Global & Local at Pass 1
|
bpl SYM.StoreL Store Global & Local at Pass 1
|
||||||
|
|
||||||
bit bLocalScope Store Local at Pass 2
|
bit bLocalScope Store Local at Pass 2
|
||||||
bmi CC.SYM.StoreL
|
bmi SYM.StoreL
|
||||||
|
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
CC.SYM.StoreL ldy ScopeIdx
|
SYM.StoreL ldy ScopeIdx
|
||||||
lda (pData),y
|
lda (pData),y
|
||||||
|
|
||||||
CC.SYM.Store.1 >PUSHA
|
SYM.Store.1 >PUSHA
|
||||||
>PUSHW.G CC.SymID
|
>PUSHW.G CC.SymID
|
||||||
>PUSHW ZPSymBufPtr
|
>PUSHW ZPSymBufPtr
|
||||||
>PUSHBI 0
|
>PUSHBI 0
|
||||||
|
@ -568,7 +565,7 @@ CC.SYM.Store.1 >PUSHA
|
||||||
|
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.SYM.NewScope ldy ScopeIdx
|
SYM.NewScope ldy ScopeIdx
|
||||||
cpy #CC.hScopes+SCOPE.MAX
|
cpy #CC.hScopes+SCOPE.MAX
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
|
@ -588,8 +585,7 @@ CC.SYM.NewScope ldy ScopeIdx
|
||||||
sec
|
sec
|
||||||
.99 rts
|
.99 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.SYM.FreeScope
|
SYM.FreeScope ldy ScopeIdx
|
||||||
ldy ScopeIdx
|
|
||||||
cpy #CC.hScopes
|
cpy #CC.hScopes
|
||||||
beq *
|
beq *
|
||||||
|
|
||||||
|
@ -601,7 +597,7 @@ CC.SYM.FreeScope
|
||||||
|
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.SYM.Lookup >LDA.G CC.LookupIdx
|
SYM.Lookup >LDA.G CC.LookupIdx
|
||||||
cmp #CC.LookupIdx+LOOKUP.MAX
|
cmp #CC.LookupIdx+LOOKUP.MAX
|
||||||
beq .99
|
beq .99
|
||||||
|
|
||||||
|
@ -646,7 +642,7 @@ CC.SYM.Lookup >LDA.G CC.LookupIdx
|
||||||
* sec
|
* sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.SYM.LookupA bit bPass2
|
SYM.LookupA bit bPass2
|
||||||
bmi .1
|
bmi .1
|
||||||
|
|
||||||
ldx #0
|
ldx #0
|
||||||
|
@ -684,8 +680,7 @@ CC.SYM.LookupA bit bPass2
|
||||||
|
|
||||||
.99 rts
|
.99 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.SYM.LookupFree
|
SYM.LookupFree >LDA.G CC.LookupIdx
|
||||||
>LDA.G CC.LookupIdx
|
|
||||||
cmp #CC.LookupIdx
|
cmp #CC.LookupIdx
|
||||||
beq .9
|
beq .9
|
||||||
|
|
||||||
|
@ -714,7 +709,7 @@ CC.SYM.LookupFree
|
||||||
* ZPPtr2 = expected T/Q
|
* ZPPtr2 = expected T/Q
|
||||||
* ZPLookupSymPtr
|
* ZPLookupSymPtr
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.SYM.LookupCheckTQ
|
SYM.LookupCheckTQ
|
||||||
lda ZPPtr2 target T
|
lda ZPPtr2 target T
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
|
@ -744,9 +739,16 @@ CC.SYM.LookupCheckTQ
|
||||||
ldy #SYM.Q
|
ldy #SYM.Q
|
||||||
eor (ZPLookupSymPtr),y
|
eor (ZPLookupSymPtr),y
|
||||||
and #$F8 ignore VOLATILE|FUNC|FASTCALL
|
and #$F8 ignore VOLATILE|FUNC|FASTCALL
|
||||||
|
beq .8
|
||||||
|
|
||||||
|
and #SYM.Q.AAARRAY is mismatch about array ?
|
||||||
|
beq .9 no...
|
||||||
|
|
||||||
|
lda ZPPtr2+1 Q
|
||||||
|
and #SYM.Q.AAARRAY
|
||||||
bne .9
|
bne .9
|
||||||
|
|
||||||
clc
|
.8 clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.9 lda #E.TMISMATCH
|
.9 lda #E.TMISMATCH
|
||||||
|
@ -755,7 +757,7 @@ CC.SYM.LookupCheckTQ
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* on RT stack : Addr,value
|
* on RT stack : Addr,value
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.SYM.PopValue jsr CC.SYM.GetYASizeOfInAXC
|
SYM.PopValue jsr SYM.GetYASizeOfInAXC
|
||||||
tax
|
tax
|
||||||
dex
|
dex
|
||||||
bne .1
|
bne .1
|
||||||
|
@ -779,8 +781,7 @@ CC.SYM.PopValue jsr CC.SYM.GetYASizeOfInAXC
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* out : Y,A = T/Q
|
* out : Y,A = T/Q
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.SYM.GetTypeInYA
|
SYM.GetTypeInYA ldy #SYM.Q
|
||||||
ldy #SYM.Q
|
|
||||||
lda (ZPSymBufPtr),y
|
lda (ZPSymBufPtr),y
|
||||||
pha
|
pha
|
||||||
lda (ZPSymBufPtr)
|
lda (ZPSymBufPtr)
|
||||||
|
@ -790,7 +791,7 @@ CC.SYM.GetTypeInYA
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* out : A,X,C = size
|
* out : A,X,C = size
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.SYM.GetSymSizeOfInAXC
|
SYM.GetSymSizeOfInAXC
|
||||||
ldy #SYM.Q
|
ldy #SYM.Q
|
||||||
lda (ZPSymBufPtr),y
|
lda (ZPSymBufPtr),y
|
||||||
pha
|
pha
|
||||||
|
@ -798,7 +799,7 @@ CC.SYM.GetSymSizeOfInAXC
|
||||||
tay
|
tay
|
||||||
pla
|
pla
|
||||||
|
|
||||||
CC.SYM.GetYASizeOfInAXC
|
SYM.GetYASizeOfInAXC
|
||||||
|
|
||||||
bit #SYM.Q.PPPOINTER
|
bit #SYM.Q.PPPOINTER
|
||||||
beq .1
|
beq .1
|
||||||
|
@ -852,8 +853,7 @@ CC.SYM.GetYASizeOfInAXC
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* in/out : A,X,C = size
|
* in/out : A,X,C = size
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.SYM.SetSizeOf
|
SYM.SetSizeOf ldy #SYM.SizeOf
|
||||||
ldy #SYM.SizeOf
|
|
||||||
sta (ZPSymBufPtr),y
|
sta (ZPSymBufPtr),y
|
||||||
|
|
||||||
pha
|
pha
|
||||||
|
@ -865,8 +865,7 @@ CC.SYM.SetSizeOf
|
||||||
pla
|
pla
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.SYM.SetAddrYA
|
SYM.SetAddrYA phy
|
||||||
phy
|
|
||||||
|
|
||||||
ldy #SYM.Addr+1
|
ldy #SYM.Addr+1
|
||||||
sta (ZPSymBufPtr),y
|
sta (ZPSymBufPtr),y
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
NEW
|
NEW
|
||||||
AUTO 3,1
|
AUTO 3,1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.TYPE.Decl >ENTER 2
|
TYPE.GetTQInYA >ENTER 2
|
||||||
lda #0
|
lda #0
|
||||||
sta (pStack) Type
|
sta (pStack) Type
|
||||||
ldy #1
|
ldy #1
|
||||||
|
@ -24,15 +24,40 @@ CC.TYPE.Decl >ENTER 2
|
||||||
|
|
||||||
.8 jmp (J.CC.TYPEQUAL,x)
|
.8 jmp (J.CC.TYPEQUAL,x)
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
TYPE.GetTQInYA2 >ENTER 2
|
||||||
|
lda (ZPLookupSymPtr)
|
||||||
|
sta (pStack) Type
|
||||||
|
|
||||||
|
ldy #SYM.Q
|
||||||
|
lda (ZPLookupSymPtr),y
|
||||||
|
|
||||||
|
* ldy #1
|
||||||
|
sta (pStack),y Qual
|
||||||
|
|
||||||
|
jsr TYPE.GetQ2
|
||||||
|
bcs .99
|
||||||
|
|
||||||
|
jsr SYM.LookupFree
|
||||||
|
|
||||||
|
ldy #1
|
||||||
|
lda (pStack),y
|
||||||
|
pha
|
||||||
|
lda (pStack)
|
||||||
|
tay Y = Type
|
||||||
|
pla A = Qual
|
||||||
|
|
||||||
|
clc
|
||||||
|
|
||||||
|
.99 >LEAVE
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
* Type Declaration keywords
|
* Type Declaration keywords
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.TYPE.CONST lda #SYM.Q.CONST
|
TYPE.CONST lda #SYM.Q.CONST
|
||||||
bra CC.TYPE.VOLATILE.1
|
bra TYPE.VOLATILE.1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.TYPE.VOLATILE
|
TYPE.VOLATILE lda #SYM.Q.VOLATILE
|
||||||
lda #SYM.Q.VOLATILE
|
TYPE.VOLATILE.1 ldy #1
|
||||||
CC.TYPE.VOLATILE.1
|
|
||||||
ldy #1
|
|
||||||
ora (pStack),y
|
ora (pStack),y
|
||||||
sta (pStack),y
|
sta (pStack),y
|
||||||
|
|
||||||
|
@ -49,11 +74,225 @@ CC.TYPE.VOLATILE.1
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.TYPE.SIGNED sec
|
TYPE.STRUCT clc
|
||||||
|
.HS B0 BCS
|
||||||
|
*--------------------------------------
|
||||||
|
TYPE.UNION sec
|
||||||
|
ror ZPPtr2+1 bStrucUnion
|
||||||
|
|
||||||
|
stz ZPPtr2 bNewTagDef
|
||||||
|
|
||||||
|
bit bPass2
|
||||||
|
bpl TYPE.SU.1 Pass 1: create def
|
||||||
|
*--------------------------------------
|
||||||
|
TYPE.SU.2 jsr CORE.GetCharNBNL
|
||||||
|
bcs .98
|
||||||
|
|
||||||
|
cmp #'{'
|
||||||
|
beq .1 no TAG
|
||||||
|
|
||||||
|
jsr TYPE.GetTag
|
||||||
|
bcs .99
|
||||||
|
|
||||||
|
jsr CORE.GetNCharNBNL
|
||||||
|
bcs .98
|
||||||
|
|
||||||
|
cmp #'{'
|
||||||
|
bne .8
|
||||||
|
|
||||||
|
.1 jsr CORE.GetNCharNBNL skip '{'
|
||||||
|
|
||||||
|
cmp #'}'
|
||||||
|
bne .1 skip definition
|
||||||
|
|
||||||
|
jsr CORE.GetNCharNB skip '}'
|
||||||
|
|
||||||
|
.8 lda #SYM.T.SU
|
||||||
|
jmp TYPE.GetQ
|
||||||
|
|
||||||
|
.98 lda #E.CSYN
|
||||||
|
sec
|
||||||
|
.99 rts
|
||||||
|
*--------------------------------------
|
||||||
|
TYPE.SU.1 ldy #SYM.T.SU
|
||||||
|
lda #0
|
||||||
|
ldx #SYM.SC.TAG
|
||||||
|
sec reset buffer
|
||||||
|
jsr SYM.BufInitYAXC
|
||||||
|
|
||||||
|
jsr CORE.GetCharNBNL
|
||||||
|
bcs .98
|
||||||
|
|
||||||
|
cmp #'{'
|
||||||
|
beq .30 no TAG
|
||||||
|
|
||||||
|
jsr TYPE.GetTag
|
||||||
|
bcc .20
|
||||||
|
|
||||||
|
jsr TYPE.NewTag
|
||||||
|
bcs .99
|
||||||
|
|
||||||
|
sec
|
||||||
|
ror ZPPtr2 bNewTagDef
|
||||||
|
*--------------------------------------
|
||||||
|
.20 jsr CORE.GetCharNBNL
|
||||||
|
bcs .98
|
||||||
|
|
||||||
|
cmp #'{'
|
||||||
|
beq .30
|
||||||
|
|
||||||
|
bit ZPPtr2 bNewTagDef
|
||||||
|
bmi .98
|
||||||
|
|
||||||
|
bra .38
|
||||||
|
*--------------------------------------
|
||||||
|
.30 jsr CORE.GetNCharNBNL skip '{' of ';'
|
||||||
|
bcs .98
|
||||||
|
|
||||||
|
cmp #'}'
|
||||||
|
beq .37
|
||||||
|
|
||||||
|
>LDYA L.CC.TYPEQUAL
|
||||||
|
jsr CC.LookupID
|
||||||
|
bcs .98
|
||||||
|
|
||||||
|
cpx #4 no const nor volatile
|
||||||
|
bcc .98
|
||||||
|
|
||||||
|
jsr TYPE.GetTQInYA
|
||||||
|
bcs .99
|
||||||
|
|
||||||
|
jsr TYPE.SizeOf get sizeof in X
|
||||||
|
|
||||||
|
jsr TYPE.SU.AddYAX
|
||||||
|
bcs .99
|
||||||
|
|
||||||
|
jsr SYM.Add0000 TODO: bitO & bitW
|
||||||
|
bcs .99
|
||||||
|
|
||||||
|
jsr SYM.AddName
|
||||||
|
bcs .99
|
||||||
|
|
||||||
|
jsr CC.GetCharNB
|
||||||
|
cmp #';'
|
||||||
|
bne .98
|
||||||
|
|
||||||
|
bra .30
|
||||||
|
*--------------------------------------
|
||||||
|
.37 jsr CORE.GetNCharNB skip '}'
|
||||||
|
bcs .98
|
||||||
|
|
||||||
|
jsr SYM.Add0000 Close F definition
|
||||||
|
bcs .99
|
||||||
|
|
||||||
|
bit ZPPtr2 bNewTagDef
|
||||||
|
bpl .38
|
||||||
|
|
||||||
|
jsr TYPE.StoreTag
|
||||||
|
bcs .99
|
||||||
|
*--------------------------------------
|
||||||
|
.38 lda #SYM.T.SU
|
||||||
|
jmp TYPE.GetQ
|
||||||
|
|
||||||
|
.98 lda #E.CSYN
|
||||||
|
sec
|
||||||
|
.99 rts
|
||||||
|
*--------------------------------------
|
||||||
|
TYPE.SU.AddYAX jsr SYM.AddWord add T/Q
|
||||||
|
bcs .99
|
||||||
|
|
||||||
|
bit ZPPtr2+1 bStrucUnion
|
||||||
|
bmi .1
|
||||||
|
|
||||||
|
ldy #SYM.SizeOf
|
||||||
|
lda (ZPSymBufPtr),y
|
||||||
|
pha
|
||||||
|
iny
|
||||||
|
lda (ZPSymBufPtr),y
|
||||||
|
ply
|
||||||
|
|
||||||
|
jsr SYM.AddWord Add Y/A Offset
|
||||||
|
bcs .99
|
||||||
|
|
||||||
|
txa
|
||||||
|
|
||||||
|
ldy #SYM.SizeOf
|
||||||
|
* clc
|
||||||
|
adc (ZPSymBufPtr),y
|
||||||
|
sta (ZPSymBufPtr),y
|
||||||
|
bcc .99
|
||||||
|
|
||||||
|
iny
|
||||||
|
lda #0
|
||||||
|
adc (ZPSymBufPtr),y
|
||||||
|
sta (ZPSymBufPtr),y
|
||||||
|
|
||||||
|
* clc
|
||||||
|
|
||||||
|
.99 rts
|
||||||
|
|
||||||
|
.1 txa
|
||||||
|
ldy #SYM.SizeOf
|
||||||
|
cmp (ZPSymBufPtr),y
|
||||||
|
bcs .2
|
||||||
|
|
||||||
|
sta (ZPSymBufPtr),y
|
||||||
|
|
||||||
|
.2 jmp SYM.Add0000 Add Y/A Offset (always 0 for union)
|
||||||
|
*--------------------------------------
|
||||||
|
TYPE.ENUM
|
||||||
|
lda #E.CSYN
|
||||||
|
sec
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
TYPE.NewTag >LDA.G CC.hTags
|
||||||
|
jsr SYM.NewKey
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
>STYA ZPPtr1 TagID
|
||||||
|
dec ZPPtr2 bNewTagDef = true
|
||||||
|
|
||||||
|
jsr CC.SkipX
|
||||||
|
|
||||||
|
.9 rts
|
||||||
|
*--------------------------------------
|
||||||
|
TYPE.GetTag >PUSHB.G CC.hTags
|
||||||
|
>PUSHW ZPLineBufPtr
|
||||||
|
|
||||||
|
>SYSCALL SListLookup
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
phy Y,A = KeyID
|
||||||
|
pha
|
||||||
|
|
||||||
|
jsr CC.SkipX X = KeyLen
|
||||||
|
|
||||||
|
>PUSHB.G CC.hTags
|
||||||
|
pla
|
||||||
|
>PUSHA
|
||||||
|
pla
|
||||||
|
>PUSHA
|
||||||
|
>PUSHW ZPSymBufPtr
|
||||||
|
>PUSHWI 65535 all
|
||||||
|
>PUSHWZ From Start
|
||||||
|
>SYSCALL SListGetData
|
||||||
|
.9 rts
|
||||||
|
*--------------------------------------
|
||||||
|
TYPE.StoreTag >PUSHB.G CC.hTags
|
||||||
|
>PUSHW ZPPtr1
|
||||||
|
>PUSHW ZPSymBufPtr
|
||||||
|
>PUSHBI 0
|
||||||
|
ldy #SYM.DefSize
|
||||||
|
lda (ZPSymBufPtr),y
|
||||||
|
>PUSHA
|
||||||
|
|
||||||
|
>SYSCALL SListAddData
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
TYPE.SIGNED sec
|
||||||
.HS 90 BCC
|
.HS 90 BCC
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.TYPE.UNSIGNED
|
TYPE.UNSIGNED clc
|
||||||
clc
|
|
||||||
php
|
php
|
||||||
|
|
||||||
jsr CC.CheckSpace
|
jsr CC.CheckSpace
|
||||||
|
@ -61,7 +300,6 @@ CC.TYPE.UNSIGNED
|
||||||
|
|
||||||
>LDYA L.CC.TYPES
|
>LDYA L.CC.TYPES
|
||||||
jsr CC.LookupID
|
jsr CC.LookupID
|
||||||
|
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
cpx #SYM.T.UCHAR
|
cpx #SYM.T.UCHAR
|
||||||
|
@ -83,50 +321,50 @@ CC.TYPE.UNSIGNED
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.TYPE.SHORT jsr CC.CheckSpace
|
TYPE.SHORT jsr CC.CheckSpace
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
>LDYA L.CC.TYPES
|
>LDYA L.CC.TYPES
|
||||||
jsr CC.LookupID
|
jsr CC.LookupID
|
||||||
|
|
||||||
bcs CC.TYPE.UCHAR
|
bcs TYPE.UCHAR
|
||||||
|
|
||||||
cpx #4 only int allowed
|
cpx #4 only int allowed
|
||||||
beq CC.TYPE.SCHAR
|
beq TYPE.SCHAR
|
||||||
|
|
||||||
.9 lda #E.CSYN
|
.9 lda #E.CSYN
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.TYPE.VOID lda #SYM.T.VOID
|
TYPE.VOID lda #SYM.T.VOID
|
||||||
bra CC.TYPE
|
bra TYPE.GetQ
|
||||||
|
|
||||||
CC.TYPE.CHAR
|
TYPE.CHAR
|
||||||
CC.TYPE.UCHAR lda #SYM.T.UCHAR
|
TYPE.UCHAR lda #SYM.T.UCHAR
|
||||||
bra CC.TYPE
|
bra TYPE.GetQ
|
||||||
|
|
||||||
CC.TYPE.SCHAR lda #SYM.T.SCHAR
|
TYPE.SCHAR lda #SYM.T.SCHAR
|
||||||
bra CC.TYPE
|
bra TYPE.GetQ
|
||||||
|
|
||||||
CC.TYPE.UINT lda #SYM.T.UINT
|
TYPE.UINT lda #SYM.T.UINT
|
||||||
bra CC.TYPE
|
bra TYPE.GetQ
|
||||||
|
|
||||||
CC.TYPE.INT
|
TYPE.INT
|
||||||
CC.TYPE.SINT lda #SYM.T.SINT
|
TYPE.SINT lda #SYM.T.SINT
|
||||||
bra CC.TYPE
|
bra TYPE.GetQ
|
||||||
|
|
||||||
CC.TYPE.ULONG lda #SYM.T.ULONG
|
TYPE.ULONG lda #SYM.T.ULONG
|
||||||
bra CC.TYPE
|
bra TYPE.GetQ
|
||||||
|
|
||||||
CC.TYPE.LONG
|
TYPE.LONG
|
||||||
CC.TYPE.SLONG lda #SYM.T.SLONG
|
TYPE.SLONG lda #SYM.T.SLONG
|
||||||
bra CC.TYPE
|
bra TYPE.GetQ
|
||||||
|
|
||||||
CC.TYPE.FLOAT lda #SYM.T.FLOAT
|
TYPE.FLOAT lda #SYM.T.FLOAT
|
||||||
|
|
||||||
CC.TYPE sta (pStack) T
|
TYPE.GetQ sta (pStack) T
|
||||||
|
|
||||||
jsr CC.GetCharNB
|
TYPE.GetQ2 jsr CC.GetCharNB
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
.1 cmp #'*'
|
.1 cmp #'*'
|
||||||
|
@ -140,13 +378,13 @@ CC.TYPE sta (pStack) T
|
||||||
|
|
||||||
sta (pStack),y
|
sta (pStack),y
|
||||||
|
|
||||||
jsr CC.GetNextCharNB
|
jsr CORE.GetNCharNB
|
||||||
bcc .1
|
bcc .1
|
||||||
|
|
||||||
.9 lda #E.CSYN
|
.9 lda #E.CSYN
|
||||||
sec
|
sec
|
||||||
.99 rts
|
.99 rts
|
||||||
|
*--------------------------------------
|
||||||
.10 jsr CC.IsLetter
|
.10 jsr CC.IsLetter
|
||||||
bcs .8
|
bcs .8
|
||||||
|
|
||||||
|
@ -159,7 +397,7 @@ CC.TYPE sta (pStack) T
|
||||||
ora #SYM.Q.FUNC+SYM.Q.FASTCALL
|
ora #SYM.Q.FUNC+SYM.Q.FASTCALL
|
||||||
sta (pStack),y
|
sta (pStack),y
|
||||||
|
|
||||||
jsr CC.GetNextCharNB
|
jsr CORE.GetNCharNB
|
||||||
bcs .9 next char is an identifier, ",", "(",")"
|
bcs .9 next char is an identifier, ",", "(",")"
|
||||||
|
|
||||||
.8 clc
|
.8 clc
|
||||||
|
@ -168,7 +406,7 @@ CC.TYPE sta (pStack) T
|
||||||
* in : Y,A = type/qual
|
* in : Y,A = type/qual
|
||||||
* out : X = size
|
* out : X = size
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.TYPE.SizeOf bit #SYM.Q.PPPOINTER
|
TYPE.SizeOf bit #SYM.Q.PPPOINTER
|
||||||
bne .2
|
bne .2
|
||||||
|
|
||||||
ldx CC.TYPESIZE-1,y
|
ldx CC.TYPESIZE-1,y
|
||||||
|
|
181
BIN/CC.S.txt
181
BIN/CC.S.txt
|
@ -46,12 +46,15 @@ SYM.SC.EXTERN .EQ 6
|
||||||
SYM.SC.TYPEDEF .EQ 8
|
SYM.SC.TYPEDEF .EQ 8
|
||||||
SYM.SC.DEFINE .EQ 10
|
SYM.SC.DEFINE .EQ 10
|
||||||
SYM.SC.TAG .EQ 12
|
SYM.SC.TAG .EQ 12
|
||||||
SYM.DefSize .EQ 3
|
SYM.hSym .EQ 3
|
||||||
SYM.SizeOf .EQ 4
|
SYM.SizeOf .EQ 4
|
||||||
SYM.Addr .EQ 6
|
SYM.Addr .EQ 6
|
||||||
SYM.Def .EQ 8 Funtions : fTQ,a1TQ,a2TQ....
|
SYM.BitO .EQ 8
|
||||||
|
SYM.BitW .EQ 9
|
||||||
|
SYM.DefSize .EQ 10
|
||||||
|
SYM.Def .EQ 11 Funtions : fTQ,a1TQ,a2TQ....
|
||||||
*
|
*
|
||||||
SYM .EQ 10
|
SYM .EQ 14
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
SU.F.T .EQ 0
|
SU.F.T .EQ 0
|
||||||
SU.F.Q .EQ 1
|
SU.F.Q .EQ 1
|
||||||
|
@ -135,20 +138,7 @@ L.LIB.O .DA LIB.O
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
L.CC.AOPS .DA CC.AOPS
|
L.CC.AOPS .DA CC.AOPS
|
||||||
L.CC.PREOPS .DA CC.PREOPS
|
L.CC.PREOPS .DA CC.PREOPS
|
||||||
J.CC.PREOPS .DA CC.EXP.Ref
|
|
||||||
.DA CC.EXP.Deref
|
|
||||||
.DA CC.EXP.Abs
|
|
||||||
.DA CC.EXP.negate
|
|
||||||
.DA CC.EXP.lnot
|
|
||||||
.DA CC.EXP.bnot
|
|
||||||
.DA CC.EXP.preinc
|
|
||||||
.DA CC.EXP.predec
|
|
||||||
L.CC.POSTOPS .DA CC.POSTOPS
|
L.CC.POSTOPS .DA CC.POSTOPS
|
||||||
J.CC.POSTOPS .DA CC.EXP.postinc
|
|
||||||
.DA CC.EXP.postdec
|
|
||||||
.DA CC.EXP.idx
|
|
||||||
.DA CC.EXP.SU
|
|
||||||
.DA CC.EXP.pSU
|
|
||||||
L.CC.BOPS .DA CC.BOPS
|
L.CC.BOPS .DA CC.BOPS
|
||||||
L.CC.DIRS .DA CC.DIRS
|
L.CC.DIRS .DA CC.DIRS
|
||||||
L.CC.KW .DA CC.KW
|
L.CC.KW .DA CC.KW
|
||||||
|
@ -159,60 +149,77 @@ L.CC.TYPEQUAL .DA CC.TYPEQUAL
|
||||||
L.CC.TYPESPEC .DA CC.TYPESPEC
|
L.CC.TYPESPEC .DA CC.TYPESPEC
|
||||||
L.CC.TYPES .DA CC.TYPES
|
L.CC.TYPES .DA CC.TYPES
|
||||||
L.CC.FTYPES .DA CC.FTYPES
|
L.CC.FTYPES .DA CC.FTYPES
|
||||||
J.CC.DIRS .DA CC.DIR.DEFINE
|
|
||||||
.DA CC.DIR.INCLUDE
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
J.CC.KW .DA CC.KW.IF
|
J.CC.DIRS .DA DIR.DEFINE
|
||||||
.DA CC.KW.WHILE
|
.DA DIR.INCLUDE
|
||||||
.DA CC.KW.ELSE
|
.DA DIR.IFDEF
|
||||||
.DA CC.KW.DO
|
.DA DIR.IFNDEF
|
||||||
.DA CC.KW.FOR
|
|
||||||
.DA CC.KW.SWITCH
|
|
||||||
.DA CC.KW.CASE
|
|
||||||
.DA CC.KW.DEFAULT
|
|
||||||
.DA CC.KW.BREAK
|
|
||||||
.DA CC.KW.CONTINUE
|
|
||||||
.DA CC.KW.RETURN
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.DA CC.KW.SIZEOF
|
J.CC.PREOPS .DA EXP.Ref
|
||||||
.DA CC.KW.STRUCT
|
.DA EXP.Deref
|
||||||
.DA CC.KW.UNION
|
.DA EXP.Abs
|
||||||
.DA CC.KW.ENUM
|
.DA EXP.negate
|
||||||
|
.DA EXP.lnot
|
||||||
|
.DA EXP.bnot
|
||||||
|
.DA EXP.preinc
|
||||||
|
.DA EXP.predec
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
J.CC.KW.END .DA CC.KW.IF.END
|
J.CC.POSTOPS .DA EXP.postinc
|
||||||
.DA CC.KW.WHILE.END
|
.DA EXP.postdec
|
||||||
.DA CC.KW.ELSE.END
|
.DA EXP.idx
|
||||||
.DA CC.KW.DO.END
|
.DA EXP.SU
|
||||||
.DA CC.KW.FOR.END
|
.DA EXP.pSU
|
||||||
.DA CC.KW.SWITCH.END
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
J.CC.SCSPEC .DA CC.SCSPEC.AUTO
|
J.CC.KW .DA KW.IF
|
||||||
.DA CC.SCSPEC.REGISTER
|
.DA KW.WHILE
|
||||||
.DA CC.SCSPEC.STATIC
|
.DA KW.ELSE
|
||||||
.DA CC.SCSPEC.EXTERN
|
.DA KW.DO
|
||||||
.DA CC.SCSPEC.TYPEDEF
|
.DA KW.FOR
|
||||||
J.CC.TYPEQUAL .DA CC.TYPE.CONST
|
.DA KW.SWITCH
|
||||||
.DA CC.TYPE.VOLATILE
|
.DA KW.CASE
|
||||||
J.CC.TYPESPEC .DA CC.TYPE.SIGNED
|
.DA KW.DEFAULT
|
||||||
.DA CC.TYPE.UNSIGNED
|
.DA KW.BREAK
|
||||||
.DA CC.TYPE.SHORT
|
.DA KW.CONTINUE
|
||||||
J.CC.TYPES .DA CC.TYPE.VOID
|
.DA KW.RETURN
|
||||||
.DA CC.TYPE.CHAR
|
.DA KW.SIZEOF
|
||||||
.DA CC.TYPE.INT
|
*--------------------------------------
|
||||||
.DA CC.TYPE.LONG
|
J.CC.KW.END .DA KW.IF.END
|
||||||
.DA CC.TYPE.FLOAT
|
.DA KW.WHILE.END
|
||||||
J.CC.UTYPES .DA CC.TYPE.UCHAR
|
.DA KW.ELSE.END
|
||||||
.DA CC.TYPE.UINT
|
.DA KW.DO.END
|
||||||
.DA CC.TYPE.ULONG
|
.DA KW.FOR.END
|
||||||
J.CC.STYPES .DA CC.TYPE.SCHAR
|
.DA KW.SWITCH.END
|
||||||
.DA CC.TYPE.SINT
|
*--------------------------------------
|
||||||
.DA CC.TYPE.SLONG
|
J.CC.SCSPEC .DA DECL.AUTO
|
||||||
|
.DA DECL.REGISTER
|
||||||
|
.DA DECL.STATIC
|
||||||
|
.DA DECL.EXTERN
|
||||||
|
.DA DECL.TYPEDEF
|
||||||
|
J.CC.TYPEQUAL .DA TYPE.CONST
|
||||||
|
.DA TYPE.VOLATILE
|
||||||
|
J.CC.TYPESPEC .DA TYPE.STRUCT
|
||||||
|
.DA TYPE.UNION
|
||||||
|
.DA TYPE.ENUM
|
||||||
|
.DA TYPE.SIGNED
|
||||||
|
.DA TYPE.UNSIGNED
|
||||||
|
.DA TYPE.SHORT
|
||||||
|
J.CC.TYPES .DA TYPE.VOID
|
||||||
|
.DA TYPE.CHAR
|
||||||
|
.DA TYPE.INT
|
||||||
|
.DA TYPE.LONG
|
||||||
|
.DA TYPE.FLOAT
|
||||||
|
J.CC.UTYPES .DA TYPE.UCHAR
|
||||||
|
.DA TYPE.UINT
|
||||||
|
.DA TYPE.ULONG
|
||||||
|
J.CC.STYPES .DA TYPE.SCHAR
|
||||||
|
.DA TYPE.SINT
|
||||||
|
.DA TYPE.SLONG
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
L.CC.MAIN .DA CC.MAIN
|
L.CC.MAIN .DA CC.MAIN
|
||||||
L.CC.SYSCALL .DA CC.SYSCALL
|
L.CC.SYSCALL .DA CC.SYSCALL
|
||||||
L.CC.FPUCALL .DA CC.FPUCALL
|
L.CC.FPUCALL .DA CC.FPUCALL
|
||||||
L.PCC.FH .DA PCC.FH
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
L.PCC.FH .DA PCC.FH
|
||||||
L.PCC.DEBUG .DA PCC.DEBUG
|
L.PCC.DEBUG .DA PCC.DEBUG
|
||||||
L.PCC.SLEEP .DA PCC.SLEEP
|
L.PCC.SLEEP .DA PCC.SLEEP
|
||||||
L.PCC.ENTER .DA PCC.ENTER
|
L.PCC.ENTER .DA PCC.ENTER
|
||||||
|
@ -330,15 +337,15 @@ CS.RUN >PUSHW L.MSG.GREETINGS
|
||||||
jsr CODE.Init
|
jsr CODE.Init
|
||||||
bcs CS.INIT.RTS
|
bcs CS.INIT.RTS
|
||||||
|
|
||||||
jsr CC.FIO.FOpen1st
|
jsr FIO.FOpen1st
|
||||||
bcs CS.INIT.RTS
|
bcs CS.INIT.RTS
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.RUN.CLOOP jsr CC.CompileFile
|
CS.RUN.CLOOP jsr CORE.CompileFile
|
||||||
|
|
||||||
cmp #MLI.E.EOF
|
cmp #MLI.E.EOF
|
||||||
bne .9
|
bne .9
|
||||||
|
|
||||||
jsr CC.FIO.FClose
|
jsr FIO.FClose
|
||||||
bne CS.RUN.CLOOP
|
bne CS.RUN.CLOOP
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
jsr PrintSummary
|
jsr PrintSummary
|
||||||
|
@ -346,22 +353,22 @@ CS.RUN.CLOOP jsr CC.CompileFile
|
||||||
|
|
||||||
jsr CC.Link
|
jsr CC.Link
|
||||||
bcs .99
|
bcs .99
|
||||||
* >DEBUG
|
>DEBUG
|
||||||
jsr CC.Link.CheckMain
|
jsr CC.Link.CheckMain
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
dec bPass2
|
dec bPass2
|
||||||
|
|
||||||
jsr CC.FIO.FCreate
|
jsr FIO.FCreate
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
jsr CODE.Init
|
jsr CODE.Init
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
jsr CC.FIO.FOpen1st
|
jsr FIO.FOpen1st
|
||||||
bcs .99
|
bcs .99
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.2 jsr CC.CompileFile
|
.2 jsr CORE.CompileFile
|
||||||
|
|
||||||
cmp #MLI.E.EOF
|
cmp #MLI.E.EOF
|
||||||
bne .9
|
bne .9
|
||||||
|
@ -369,7 +376,7 @@ CS.RUN.CLOOP jsr CC.CompileFile
|
||||||
jsr CODE.EmitTail
|
jsr CODE.EmitTail
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
jsr CC.FIO.FClose
|
jsr FIO.FClose
|
||||||
bne .2
|
bne .2
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.8 lda #0 Exit Code = Success
|
.8 lda #0 Exit Code = Success
|
||||||
|
@ -416,7 +423,7 @@ CS.RUN.ARGS inc ArgIndex
|
||||||
>SYSCALL ArgV
|
>SYSCALL ArgV
|
||||||
bcs .90
|
bcs .90
|
||||||
|
|
||||||
jsr CC.FIO.LoadLIB.o
|
jsr FIO.LoadLIB.o
|
||||||
bcc CS.RUN.ARGS
|
bcc CS.RUN.ARGS
|
||||||
|
|
||||||
rts
|
rts
|
||||||
|
@ -672,12 +679,12 @@ CC.AOPS .PS "="
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* Pre Operators: & * + - ! ~ ++ --
|
* Pre Operators: & * + - ! ~ ++ --
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.PREOPS .PS "&" ref
|
CC.PREOPS .PS "&" ref
|
||||||
.PS "*" deref
|
.PS "*" deref
|
||||||
.PS "+" abs
|
.PS "+" abs
|
||||||
.PS "-" negate
|
.PS "-" negate
|
||||||
.PS "!" logical not
|
.PS "!" logical not
|
||||||
.PS "~" bitwise not
|
.PS "~" bitwise not
|
||||||
.PS "++" pre increase
|
.PS "++" pre increase
|
||||||
.PS "--" pre decrease
|
.PS "--" pre decrease
|
||||||
.HS 00
|
.HS 00
|
||||||
|
@ -738,9 +745,6 @@ CC.KW .PS "if"
|
||||||
.PS "continue"
|
.PS "continue"
|
||||||
.PS "return"
|
.PS "return"
|
||||||
.PS "sizeof"
|
.PS "sizeof"
|
||||||
.PS "struct"
|
|
||||||
.PS "union"
|
|
||||||
.PS "enum"
|
|
||||||
.HS 00
|
.HS 00
|
||||||
CC.KW2.IF .PS "else"
|
CC.KW2.IF .PS "else"
|
||||||
.HS 00
|
.HS 00
|
||||||
|
@ -754,11 +758,14 @@ CC.SCSPEC .PS "auto"
|
||||||
.PS "typedef"
|
.PS "typedef"
|
||||||
.HS 00
|
.HS 00
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.TYPEQUAL .PS "const" ALL
|
CC.TYPEQUAL .PS "const" ALL
|
||||||
.PS "volatile"
|
.PS "volatile"
|
||||||
CC.TYPESPEC .PS "signed" char,int,long
|
CC.TYPESPEC .PS "struct"
|
||||||
.PS "unsigned" char,int,long
|
.PS "union"
|
||||||
.PS "short" int
|
.PS "enum"
|
||||||
|
.PS "signed" char,int,long
|
||||||
|
.PS "unsigned" char,int,long
|
||||||
|
.PS "short" int
|
||||||
CC.TYPES .PS "void"
|
CC.TYPES .PS "void"
|
||||||
.PS "char"
|
.PS "char"
|
||||||
.PS "int"
|
.PS "int"
|
||||||
|
@ -878,7 +885,7 @@ CC.SYSCALL .PS "chtyp"
|
||||||
* .DA #0
|
* .DA #0
|
||||||
* .PS "umount"
|
* .PS "umount"
|
||||||
* .DA #0
|
* .DA #0
|
||||||
* .PS "online"
|
* .PS "loadstkobj"
|
||||||
* .DA #0
|
* .DA #0
|
||||||
* .PS "getstkobj"
|
* .PS "getstkobj"
|
||||||
* .DA #0
|
* .DA #0
|
||||||
|
@ -1024,12 +1031,12 @@ CC.SYSCALL .PS "chtyp"
|
||||||
.DA #SYS.Realloc
|
.DA #SYS.Realloc
|
||||||
* .PS "getmemptr"
|
* .PS "getmemptr"
|
||||||
* .DA #0
|
* .DA #0
|
||||||
|
* .PS "freemem"
|
||||||
|
* .DA #SYS.FreeMem
|
||||||
.PS "free"
|
.PS "free"
|
||||||
.DA #SYS.FreeMem
|
.DA #SYS.Free
|
||||||
* .PS "newstkobj"
|
* .PS "newstkobj"
|
||||||
* .DA #0
|
* .DA #0
|
||||||
* .PS "loadstkobj"
|
|
||||||
* .DA #0
|
|
||||||
* .PS "getstkobjptr"
|
* .PS "getstkobjptr"
|
||||||
* .DA #0
|
* .DA #0
|
||||||
* .PS "freestkobj"
|
* .PS "freestkobj"
|
||||||
|
|
|
@ -328,13 +328,13 @@ CS.END
|
||||||
OptionList .AS "CRcr"
|
OptionList .AS "CRcr"
|
||||||
OptionVars .DA #bContinue,#bRecurse,#bContinue,#bRecurse
|
OptionVars .DA #bContinue,#bRecurse,#bContinue,#bRecurse
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MSG.USAGE .AS "Usage : CHMOD mode [File *,? wildcards allowed]\r\n"
|
MSG.USAGE .CS "Usage : CHMOD mode [File *,? wildcards allowed]\r\n"
|
||||||
.AS " -C : Continue on error\r\n"
|
.CS " -C : Continue on error\r\n"
|
||||||
.AZ " -R : Recurse subdirectories\r\n"
|
.CZ " -R : Recurse subdirectories\r\n"
|
||||||
MSG.OK .AZ "[OK]"
|
MSG.OK .CZ "[OK]"
|
||||||
MSG.ERR .AZ "[%h]\r\n"
|
MSG.ERR .CZ "[%h]\r\n"
|
||||||
MSG.DIR .AZ "Dir :%s..."
|
MSG.DIR .CZ "Dir :%s..."
|
||||||
MSG.FILE .AZ "File:%s..."
|
MSG.FILE .CZ "File:%s..."
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.DUMMY
|
.DUMMY
|
||||||
.OR 0
|
.OR 0
|
||||||
|
|
24
BIN/CP.S.txt
24
BIN/CP.S.txt
|
@ -25,18 +25,18 @@ OptionVars .DA #bContinue,#bContinue
|
||||||
.DA #bRecurse,#bRecurse
|
.DA #bRecurse,#bRecurse
|
||||||
.DA #bNoConfirm,#bNoConfirm
|
.DA #bNoConfirm,#bNoConfirm
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MSG.USAGE .AS "Usage : CP [Src File/Dir, *,? wildcards allowed]\r\n"
|
MSG.USAGE .CS "Usage : CP [Src File/Dir, *,? wildcards allowed]\r\n"
|
||||||
.AS " -C : Continue on error\r\n"
|
.CS " -C : Continue on error\r\n"
|
||||||
.AS " -Q : Quiet\r\n"
|
.CS " -Q : Quiet\r\n"
|
||||||
.AS " -R : Recurse subdirectories\r\n"
|
.CS " -R : Recurse subdirectories\r\n"
|
||||||
.AZ " -Y : Don't prompt for override\r\n"
|
.CZ " -Y : Don't prompt for override\r\n"
|
||||||
MSG.DIR .AZ "CP Dir :%s to %s..."
|
MSG.DIR .CZ "CP Dir :%s to %s..."
|
||||||
MSG.REG .AZ "CP File:%s to %s..."
|
MSG.REG .CZ "CP File:%s to %s..."
|
||||||
MSG.OVERWRITE .AZ "Overwrite %s [Yes,No,All]?"
|
MSG.OVERWRITE .CZ "Overwrite %s [Yes,No,All]?"
|
||||||
MSG.OK .AZ "[OK]"
|
MSG.OK .CZ "[OK]"
|
||||||
MSG.ERR .AS "[%h]"
|
MSG.ERR .CS "[%h]"
|
||||||
MSG.CRLF .AZ "\r\n"
|
MSG.CRLF .CZ "\r\n"
|
||||||
MSG.DONE .AZ "%D File(s) Copied.\r\n"
|
MSG.DONE .CZ "%D File(s) Copied.\r\n"
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.DUMMY
|
.DUMMY
|
||||||
.OR 0
|
.OR 0
|
||||||
|
|
|
@ -610,7 +610,7 @@ CSH.LIBC .PS "chtyp"
|
||||||
.PS "setattr"
|
.PS "setattr"
|
||||||
.PS "mount"
|
.PS "mount"
|
||||||
.PS "umount"
|
.PS "umount"
|
||||||
.PS "online"
|
.PS "loadstkobj"
|
||||||
.PS "getstkobj"
|
.PS "getstkobj"
|
||||||
.PS "shift"
|
.PS "shift"
|
||||||
.PS "argv"
|
.PS "argv"
|
||||||
|
@ -682,9 +682,9 @@ CSH.LIBC .PS "chtyp"
|
||||||
.PS "malloc"
|
.PS "malloc"
|
||||||
.PS "realloc"
|
.PS "realloc"
|
||||||
.PS "getmemptr"
|
.PS "getmemptr"
|
||||||
|
.PS "freemem"
|
||||||
.PS "free"
|
.PS "free"
|
||||||
.PS "newstkobj"
|
.PS "newstkobj"
|
||||||
.PS "loadstkobj"
|
|
||||||
.PS "getstkobjptr"
|
.PS "getstkobjptr"
|
||||||
.PS "freestkobj"
|
.PS "freestkobj"
|
||||||
.HS 00
|
.HS 00
|
||||||
|
|
114
BIN/EDIT.S.txt
114
BIN/EDIT.S.txt
|
@ -459,75 +459,75 @@ CharIn.TmpByte10pA
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.END
|
CS.END
|
||||||
SEQS .EQ *
|
SEQS .EQ *
|
||||||
SEQ.BAR .AZ "\e[7m\e[37;40m"
|
SEQ.BAR .CZ "\e[7m\e[37;40m"
|
||||||
SEQ.DLG.BAR .AS "\e[0m\e[37;40m"
|
SEQ.DLG.BAR .CS "\e[0m\e[37;40m"
|
||||||
.DA #C.SO,#'x',#C.SI
|
.DA #C.SO,#'x',#C.SI
|
||||||
.AZ "\e[7m\e[37;40m"
|
.CZ "\e[7m\e[37;40m"
|
||||||
SEQ.DLG .AS "\e[30;46m"
|
SEQ.DLG .CS "\e[30;46m"
|
||||||
.DA #C.SO,#'x',#C.SI
|
.DA #C.SO,#'x',#C.SI
|
||||||
.DA #0
|
.DA #0
|
||||||
SEQ.DLG.VBAR .AS "\e[37;40m"
|
SEQ.DLG.VBAR .CS "\e[37;40m"
|
||||||
.DA #C.SO,#'x',#C.SI
|
.DA #C.SO,#'x',#C.SI
|
||||||
.DA #0
|
.DA #0
|
||||||
SEQ.DLG.LBL .AZ "\e[0m\e[30;46m"
|
SEQ.DLG.LBL .CZ "\e[0m\e[30;46m"
|
||||||
SEQ.DLG.TB .AZ "\e[0m\e[93;44m"
|
SEQ.DLG.TB .CZ "\e[0m\e[93;44m"
|
||||||
SEQ.DLG.BUT .AZ "\e[7m\e[93;44m"
|
SEQ.DLG.BUT .CZ "\e[7m\e[93;44m"
|
||||||
SEQ.EDIT .AS "\e[0m\e[93;44m" +CEOL
|
SEQ.EDIT .CS "\e[0m\e[93;44m" +CEOL
|
||||||
SEQ.CEOL .AZ "\e[K"
|
SEQ.CEOL .CZ "\e[K"
|
||||||
SEQ.NORM .AZ "\e[0m"
|
SEQ.NORM .CZ "\e[0m"
|
||||||
SEQ.INV .AZ "\e[7m"
|
SEQ.INV .CZ "\e[7m"
|
||||||
SEQ.CURSAVE .AZ "\e7"
|
SEQ.CURSAVE .CZ "\e7"
|
||||||
SEQ.CURRESTORE .AZ "\e8"
|
SEQ.CURRESTORE .CZ "\e8"
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
SEQ.RESET .AZ "\ec"
|
SEQ.RESET .CZ "\ec"
|
||||||
SEQ.INIT .AS "\ec\e(B\e)0"
|
SEQ.INIT .CS "\ec\e(B\e)0"
|
||||||
SEQ.SCROLLRGN .AZ "\e[?7l\e[2;%dr"
|
SEQ.SCROLLRGN .CZ "\e[?7l\e[2;%dr"
|
||||||
SEQ.SCROLLCURUP .AS "\e[?7l\e[%d;%dr"
|
SEQ.SCROLLCURUP .CS "\e[?7l\e[%d;%dr"
|
||||||
SEQ.SCROLLUP .AZ "\eD"
|
SEQ.SCROLLUP .CZ "\eD"
|
||||||
SEQ.SCROLLCURDN .AS "\e[?7l\e[%d;%dr"
|
SEQ.SCROLLCURDN .CS "\e[?7l\e[%d;%dr"
|
||||||
SEQ.SCROLLDN .AZ "\eM"
|
SEQ.SCROLLDN .CZ "\eM"
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MSG.TERMCAP .AZ "\e[999;999H\e[6n"
|
MSG.TERMCAP .CZ "\e[999;999H\e[6n"
|
||||||
MSG.TOPBAR .AZ "A2osX Edit %d.%d:%s (%s)"
|
MSG.TOPBAR .CZ "A2osX Edit %d.%d:%s (%s)"
|
||||||
MSG.TXTCR .AZ "TXT/CR"
|
MSG.TXTCR .CZ "TXT/CR"
|
||||||
MSG.TXTCRLF .AZ "TXT/CRLF"
|
MSG.TXTCRLF .CZ "TXT/CRLF"
|
||||||
MSG.ASM .AZ "ASM"
|
MSG.ASM .CZ "ASM"
|
||||||
MSG.STATUSBAR .AZ "Press Ctrl-A For Help Len:%5D Pos:%5D Col:%3d Line:%5D"
|
MSG.STATUSBAR .CZ "Press Ctrl-A For Help Len:%5D Pos:%5D Col:%3d Line:%5D"
|
||||||
MSG.STATUSBAR.H .AZ "Press any key to exit this screen "
|
MSG.STATUSBAR.H .CZ "Press any key to exit this screen "
|
||||||
MSG.STATUSBAR.U .AZ "Quit without Saving [Y/N] ? "
|
MSG.STATUSBAR.U .CZ "Quit without Saving [Y/N] ? "
|
||||||
MSG.STATUSBAR.S .AZ "%s Saved."
|
MSG.STATUSBAR.S .CZ "%s Saved."
|
||||||
MSG.STATUSBAR.E .AZ "Error:%h"
|
MSG.STATUSBAR.E .CZ "Error:%h"
|
||||||
MSG.GOTOXY .AZ "\e[%d;%dH"
|
MSG.GOTOXY .CZ "\e[%d;%dH"
|
||||||
MSG.HELPLINE .AZ "\e[0m\e[93;44m%S\e[K"
|
MSG.HELPLINE .CZ "\e[0m\e[93;44m%S\e[K"
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MSG.HELP >PSTR "All commands:"
|
MSG.HELP .PS "All commands:"
|
||||||
>PSTR "-------------"
|
.PS "-------------"
|
||||||
>PSTR " Ctrl-A : This help screen"
|
.PS " Ctrl-A : This help screen"
|
||||||
>PSTR " Ctrl-B : Mark beginning of selection"
|
.PS " Ctrl-B : Mark beginning of selection"
|
||||||
>PSTR " Ctrl-C : Copy selection to clipboard"
|
.PS " Ctrl-C : Copy selection to clipboard"
|
||||||
>PSTR " Ctrl-D : Delete selection"
|
.PS " Ctrl-D : Delete selection"
|
||||||
>PSTR " Ctrl-E : Mark end of selection"
|
.PS " Ctrl-E : Mark end of selection"
|
||||||
>PSTR " Ctrl-F : Find/Replace..."
|
.PS " Ctrl-F : Find/Replace..."
|
||||||
>PSTR " Ctrl-G : Go to start of current line"
|
.PS " Ctrl-G : Go to start of current line"
|
||||||
>PSTR " Ctrl-L : Go to end of current line"
|
.PS " Ctrl-L : Go to end of current line"
|
||||||
>PSTR " Ctrl-N : Find next"
|
.PS " Ctrl-N : Find next"
|
||||||
>PSTR " Ctrl-O : Page up"
|
.PS " Ctrl-O : Page up"
|
||||||
>PSTR " Ctrl-P : Page down"
|
.PS " Ctrl-P : Page down"
|
||||||
>PSTR " Ctrl-Q : Quit"
|
.PS " Ctrl-Q : Quit"
|
||||||
>PSTR " Ctrl-R : Replace next"
|
.PS " Ctrl-R : Replace next"
|
||||||
>PSTR " Ctrl-S : Save file..."
|
.PS " Ctrl-S : Save file..."
|
||||||
>PSTR " Ctrl-T : Go to top of file"
|
.PS " Ctrl-T : Go to top of file"
|
||||||
>PSTR " Ctrl-V : Paste clipboard at cursor position"
|
.PS " Ctrl-V : Paste clipboard at cursor position"
|
||||||
>PSTR " Ctrl-W : Erase current line"
|
.PS " Ctrl-W : Erase current line"
|
||||||
>PSTR " Ctrl-X : Cut block to clipboard"
|
.PS " Ctrl-X : Cut block to clipboard"
|
||||||
>PSTR " Ctrl-Y : Go to end of file"
|
.PS " Ctrl-Y : Go to end of file"
|
||||||
>PSTR " Ctrl-Z : Erase char under cursor"
|
.PS " Ctrl-Z : Erase char under cursor"
|
||||||
.HS 00
|
.HS 00
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MSG.NEWFILE .AZ "newfile"
|
MSG.NEWFILE .AZ "newfile"
|
||||||
EscChars .AS "DBAC"
|
EscChars .AS "DABC"
|
||||||
EscChars.Cnt .EQ *-EscChars
|
EscChars.Cnt .EQ *-EscChars
|
||||||
EscAscii .HS 080A0B15
|
EscAscii .DA #C.BS,#C.VT,#C.LF,#C.FS
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
S.DLG.Size .EQ 0
|
S.DLG.Size .EQ 0
|
||||||
S.DLG.X .EQ 1
|
S.DLG.X .EQ 1
|
||||||
|
|
|
@ -284,31 +284,49 @@ CS.QUIT lda hFont
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
LoadResources >LDYA L.FONTFILE
|
LoadResources >LDYA L.FONTFILE
|
||||||
>SYSCALL LoadStkObj
|
ldx #S.FI.T.FON
|
||||||
bcs .99
|
jsr .1
|
||||||
|
bcs .9
|
||||||
|
|
||||||
stx hFont
|
stx hFont
|
||||||
|
|
||||||
>LDYA L.FONTFILEB
|
>LDYA L.FONTFILEB
|
||||||
>SYSCALL LoadStkObj
|
ldx #S.FI.T.FON
|
||||||
bcs .99
|
jsr .1
|
||||||
|
bcs .9
|
||||||
|
|
||||||
stx hFontB
|
stx hFontB
|
||||||
|
|
||||||
>LDYA L.MARILYNFILE
|
>LDYA L.MARILYNFILE
|
||||||
>SYSCALL LoadStkObj
|
ldx #S.FI.T.PIX
|
||||||
.99 bcs .9
|
jsr .1
|
||||||
|
bcs .9
|
||||||
|
|
||||||
stx CB.PIX+S.CB.SrcPtr
|
stx CB.PIX+S.CB.SrcPtr
|
||||||
|
|
||||||
>LDYA L.LOGOFILE
|
>LDYA L.LOGOFILE
|
||||||
>SYSCALL LoadStkObj
|
ldx #S.FI.T.PIX
|
||||||
|
jsr .1
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
stx CB.LOGO+S.CB.SrcPtr
|
stx CB.LOGO+S.CB.SrcPtr
|
||||||
|
|
||||||
>LDYA L.PALETTEFILE
|
>LDYA L.PALETTEFILE
|
||||||
>SYSCALL LoadStkObj
|
ldx #S.FI.T.PIX
|
||||||
|
jsr .1
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
stx CB.PALETTE+S.CB.SrcPtr
|
stx CB.PALETTE+S.CB.SrcPtr
|
||||||
|
|
||||||
.9 rts
|
.9 rts
|
||||||
|
|
||||||
|
.1 >PUSHYA
|
||||||
|
>PUSHBI O.RDONLY
|
||||||
|
txa
|
||||||
|
>PUSHA type
|
||||||
|
>PUSHWZ Aux type
|
||||||
|
>SYSCALL LoadStkObj
|
||||||
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
GFX.Open >PUSHW L.DEVNAME.GFX
|
GFX.Open >PUSHW L.DEVNAME.GFX
|
||||||
>PUSHBI 0
|
>PUSHBI 0
|
||||||
|
|
|
@ -7,7 +7,7 @@ NEW
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.INB inc/macros.i
|
.INB inc/macros.i
|
||||||
.INB inc/a2osx.i
|
.INB inc/a2osx.i
|
||||||
.INB inc/kernel.i
|
.INB inc/mli.i
|
||||||
.INB inc/gfx.i
|
.INB inc/gfx.i
|
||||||
.INB inc/libgui.i
|
.INB inc/libgui.i
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -55,7 +55,10 @@ CS.INIT >LDYA L.LIBGUI
|
||||||
* clc
|
* clc
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.RUN >LDYA L.LOGOFILE
|
CS.RUN >PUSHW L.LOGOFILE
|
||||||
|
>PUSHBI O.RDONLY
|
||||||
|
>PUSHBI S.FI.T.PIX
|
||||||
|
>PUSHWZ Aux type
|
||||||
>SYSCALL LoadStkObj
|
>SYSCALL LoadStkObj
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
|
@ -151,7 +154,7 @@ hLIBGUI .BS 1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MouseData .BS S.MOUSE
|
MouseData .BS S.MOUSE
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
LOGOFILE .AZ "${ROOT}root/bmp/A2OSX.LOGO"
|
LOGOFILE .AZ "${ROOT}A2osX.logo"
|
||||||
WND.TITLE .AZ "Window Title"
|
WND.TITLE .AZ "Window Title"
|
||||||
WND.STATUS .AZ "Window status bar message"
|
WND.STATUS .AZ "Window status bar message"
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
|
40
BIN/LS.S.txt
40
BIN/LS.S.txt
|
@ -110,6 +110,7 @@ CS.RUN ldy #S.PS.hStdOut
|
||||||
.10 dec bToFile
|
.10 dec bToFile
|
||||||
|
|
||||||
.1 inc ArgCount
|
.1 inc ArgCount
|
||||||
|
|
||||||
lda ArgCount
|
lda ArgCount
|
||||||
>SYSCALL ArgV
|
>SYSCALL ArgV
|
||||||
bcs .6
|
bcs .6
|
||||||
|
@ -121,8 +122,9 @@ CS.RUN ldy #S.PS.hStdOut
|
||||||
|
|
||||||
ldy #1
|
ldy #1
|
||||||
lda (ZPPtr1),y
|
lda (ZPPtr1),y
|
||||||
|
beq .99
|
||||||
|
|
||||||
ldx #OptionVars-OptionList-1
|
.20 ldx #OptionVars-OptionList-1
|
||||||
|
|
||||||
.2 cmp OptionList,x
|
.2 cmp OptionList,x
|
||||||
beq .3
|
beq .3
|
||||||
|
@ -130,7 +132,7 @@ CS.RUN ldy #S.PS.hStdOut
|
||||||
dex
|
dex
|
||||||
bpl .2
|
bpl .2
|
||||||
|
|
||||||
>PUSHW L.MSG.USAGE
|
.99 >PUSHW L.MSG.USAGE
|
||||||
>PUSHBI 0
|
>PUSHBI 0
|
||||||
>SYSCALL PrintF
|
>SYSCALL PrintF
|
||||||
|
|
||||||
|
@ -138,9 +140,15 @@ CS.RUN ldy #S.PS.hStdOut
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.3 ldy OptionVars,x
|
.3 lda OptionVars,x
|
||||||
lda #$80
|
tax
|
||||||
sta $0,y
|
* sec
|
||||||
|
ror $0,x
|
||||||
|
|
||||||
|
iny
|
||||||
|
lda (ZPPtr1),y
|
||||||
|
bne .20
|
||||||
|
|
||||||
bra .1
|
bra .1
|
||||||
|
|
||||||
.4 >LDYA ZPPtr1
|
.4 >LDYA ZPPtr1
|
||||||
|
@ -880,20 +888,20 @@ CS.END
|
||||||
OptionList .AS "ACFLRacflr"
|
OptionList .AS "ACFLRacflr"
|
||||||
OptionVars .DA #bAllmostAll,#bColumn,#bFullPath,#bLong,#bRecurse,#bAllmostAll,#bColumn,#bFullPath,#bLong,#bRecurse
|
OptionVars .DA #bAllmostAll,#bColumn,#bFullPath,#bLong,#bRecurse,#bAllmostAll,#bColumn,#bFullPath,#bLong,#bRecurse
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MSG.USAGE .AS "Usage : LS [-A] [-C] [-F] [-L] [-R] [filespec]\r\n"
|
MSG.USAGE .CS "Usage : LS [-A] [-C] [-F] [-L] [-R] [filespec]\r\n"
|
||||||
.AS " -A : Show all files\r\n"
|
.CS " -A : Show all files\r\n"
|
||||||
.AS " -C : List in multiple columns\r\n"
|
.CS " -C : List in one column\r\n"
|
||||||
.AS " -F : Show full paths\r\n"
|
.CS " -F : Show full paths\r\n"
|
||||||
.AS " -L : Use long listing format\r\n"
|
.CS " -L : Use long listing format\r\n"
|
||||||
.AZ " -R : Recursively list subdirectories\r\n"
|
.CZ " -R : Recursively list subdirectories\r\n"
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MSG.ENTER .AZ "Directory:"
|
MSG.ENTER .CZ "Directory:"
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MSG.REGEXT .AZ " %10u "
|
MSG.REGEXT .CZ " %10u "
|
||||||
MSG.DIREXT .AZ " <dir> "
|
MSG.DIREXT .CZ " <dir> "
|
||||||
MSG.BDEVEXT .AZ " %5D/%5D s%dd%d "
|
MSG.BDEVEXT .CZ " %5D/%5D s%dd%d "
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MSG.SETCOLOR .AZ "\e[1;%dm"
|
MSG.SETCOLOR .CZ "\e[1;%dm"
|
||||||
PRODOS.FT.HEX .HS 0406FAFCFDCBCCCFFF
|
PRODOS.FT.HEX .HS 0406FAFCFDCBCCCFFF
|
||||||
PRODOS.FT.TXT .AZ "txt"
|
PRODOS.FT.TXT .AZ "txt"
|
||||||
.AZ "bin"
|
.AZ "bin"
|
||||||
|
|
|
@ -246,14 +246,13 @@ CS.QUIT clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.END
|
CS.END
|
||||||
MSG0 .AZ "hFD Type Name Addr Status Typ/Sub IDString Version Size (BLK)"
|
MSG0 .CZ "hFD Type Name Addr Status Typ/Sub IDString Version Size (BLK)"
|
||||||
MSG.DEV .AZ "%3d %5s %12s %H "
|
MSG.DEV .CZ "%3d %5s %12s %H "
|
||||||
MSG.DEV.ERR .AZ "Device Error : $%h\r\n"
|
MSG.DEV.ERR .CZ "Device Error : $%h\r\n"
|
||||||
MSG.DEV.DIB .AZ "%s $%h/$%h %16S %03d.%03d "
|
MSG.DEV.DIB .CZ "%s $%h/$%h %16S %03d.%03d "
|
||||||
MSG.DEV.B .AZ "%10u\r\n"
|
MSG.DEV.B .CZ "%10u\r\n"
|
||||||
MSG.DEV.C .AZ "n/a\r\n"
|
MSG.DEV.C .CZ "n/a\r\n"
|
||||||
|
MSG.PIPE .CZ "%3d %5s %s\r\n"
|
||||||
MSG.PIPE .AZ "%3d %5s %s\r\n"
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MSG.SFLAGS .AS "bwrlneio"
|
MSG.SFLAGS .AS "bwrlneio"
|
||||||
NO.PATH .AZ "(no path)"
|
NO.PATH .AZ "(no path)"
|
||||||
|
@ -269,7 +268,7 @@ FD.T.PIPE .AZ "PIPE"
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
BLANK.DIB .DA #0 #S.DIB.S.BLOCK+S.DIB.S.WRITE+S.DIB.S.READ
|
BLANK.DIB .DA #0 #S.DIB.S.BLOCK+S.DIB.S.WRITE+S.DIB.S.READ
|
||||||
.BS 3
|
.BS 3
|
||||||
>PSTR "(No IDS String!)"
|
.PS "(No IDS String!)"
|
||||||
.DA #0 #S.DIB.T.PRODOS
|
.DA #0 #S.DIB.T.PRODOS
|
||||||
.DA #0
|
.DA #0
|
||||||
.DA 0 K.VER
|
.DA 0 K.VER
|
||||||
|
|
269
BIN/MKDIR.S.txt
269
BIN/MKDIR.S.txt
|
@ -4,9 +4,35 @@ NEW
|
||||||
.OP 65C02
|
.OP 65C02
|
||||||
.OR $2000
|
.OR $2000
|
||||||
.TF bin/mkdir
|
.TF bin/mkdir
|
||||||
*--------------------------------------
|
*/-------------------------------------
|
||||||
|
* # MKDIR
|
||||||
|
* Create directories
|
||||||
|
*
|
||||||
|
* ## Arguments
|
||||||
|
* **-M mode**
|
||||||
|
* Apply specified mode to created directories
|
||||||
|
*
|
||||||
|
* **-P**
|
||||||
|
* Create parent directories if required
|
||||||
|
*
|
||||||
|
* **-V**
|
||||||
|
* Verbose mode
|
||||||
|
*
|
||||||
|
* ## Return Value
|
||||||
|
*\-------------------------------------
|
||||||
.INB inc/macros.i
|
.INB inc/macros.i
|
||||||
.INB inc/a2osx.i
|
.INB inc/a2osx.i
|
||||||
|
*--------------------------------------
|
||||||
|
.DUMMY
|
||||||
|
.OR ZPBIN
|
||||||
|
ZS.START
|
||||||
|
ZPPtr1 .BS 2
|
||||||
|
ZPMode .BS 2
|
||||||
|
ArgIndex .BS 1
|
||||||
|
ArgLen .BS 1
|
||||||
|
bParent .BS 1
|
||||||
|
bVerbose .BS 1
|
||||||
|
ZS.END .ED
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* File Header (16 Bytes)
|
* File Header (16 Bytes)
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -25,41 +51,254 @@ CS.START cld
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.1 .DA CS.INIT
|
.1 .DA CS.INIT
|
||||||
.DA CS.RUN
|
.DA CS.RUN
|
||||||
.DA CS.DOEVENT
|
.DA CS.DOEVENT
|
||||||
.DA CS.QUIT
|
.DA CS.QUIT
|
||||||
|
L.MSG.USAGE .DA MSG.USAGE
|
||||||
|
L.MSG.DIR .DA MSG.DIR
|
||||||
|
L.MSG.OK .DA MSG.OK
|
||||||
|
L.MSG.ERR .DA MSG.ERR
|
||||||
.DA 0
|
.DA 0
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.INIT clc
|
CS.INIT
|
||||||
|
CS.QUIT clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.RUN lda #1
|
CS.RUN >LDYAI S.STAT.MODE.FO+S.STAT.MODE.FG+S.STAT.MODE.FU
|
||||||
>SYSCALL ArgV
|
>STYA ZPMode
|
||||||
bcs .99
|
|
||||||
|
.1 jsr CS.RUN.GetNextArg
|
||||||
>PUSHYA
|
bcs .8
|
||||||
>PUSHWI S.STAT.MODE.FO+S.STAT.MODE.FG+S.STAT.MODE.FU
|
|
||||||
>SYSCALL MKDir
|
lda (ZPPtr1)
|
||||||
|
cmp #'-'
|
||||||
|
bne .6
|
||||||
|
|
||||||
|
ldy #1
|
||||||
|
lda (ZPPtr1),y
|
||||||
|
beq .9
|
||||||
|
|
||||||
|
.2 ldx #OptionVars-OptionList-1
|
||||||
|
|
||||||
|
.3 cmp OptionList,x
|
||||||
|
beq .5
|
||||||
|
|
||||||
|
dex
|
||||||
|
bpl .3
|
||||||
|
|
||||||
|
cmp #'M'
|
||||||
|
beq .4
|
||||||
|
|
||||||
|
cmp #'m'
|
||||||
|
bne .9
|
||||||
|
|
||||||
|
.4 jsr CS.RUN.GetNextArg
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
|
jsr CS.RUN.Str2Mode
|
||||||
|
bcc .1
|
||||||
|
|
||||||
|
bra .9
|
||||||
|
|
||||||
|
.5 lda OptionVars,x
|
||||||
|
tax
|
||||||
|
* sec
|
||||||
|
ror $0,x
|
||||||
|
|
||||||
|
iny
|
||||||
|
lda (ZPPtr1),y
|
||||||
|
bne .2
|
||||||
|
|
||||||
|
bra .1
|
||||||
|
|
||||||
|
.6 lda (pData)
|
||||||
|
bne .9
|
||||||
|
|
||||||
|
>PUSHW ZPPtr1
|
||||||
|
>PUSHW pData
|
||||||
|
>SYSCALL RealPath
|
||||||
|
bcc .1
|
||||||
|
|
||||||
|
.9 >LDYA L.MSG.USAGE
|
||||||
|
>SYSCALL PutS
|
||||||
|
|
||||||
|
lda #E.SYN
|
||||||
|
sec
|
||||||
|
rts
|
||||||
|
|
||||||
|
.8 lda (pData)
|
||||||
|
beq .9
|
||||||
|
*--------------------------------------
|
||||||
|
CS.RUN.Create bit bParent
|
||||||
|
bmi CS.RUN.CreateP
|
||||||
|
|
||||||
|
jsr CS.RUN.Create1
|
||||||
|
bcs .9
|
||||||
|
|
||||||
lda #0
|
lda #0
|
||||||
sec
|
sec
|
||||||
.9 rts
|
.9 rts
|
||||||
|
*--------------------------------------
|
||||||
|
CS.RUN.CreateP ldy #$ff
|
||||||
|
|
||||||
.99 lda #E.SYN
|
.1 iny
|
||||||
|
lda (pData),y
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
sty ArgLen
|
||||||
|
|
||||||
|
ldy #0 skip /
|
||||||
|
|
||||||
|
.2 iny
|
||||||
|
lda (pData),y
|
||||||
|
beq .8 /VOL
|
||||||
|
|
||||||
|
eor #'/'
|
||||||
|
bne .2
|
||||||
|
|
||||||
|
.3 iny /VOL/
|
||||||
|
lda (pData),y
|
||||||
|
beq .4 /VOL/DIR
|
||||||
|
|
||||||
|
eor #'/'
|
||||||
|
bne .3
|
||||||
|
|
||||||
|
.4 sty ArgIndex /VOL/DIR/
|
||||||
|
|
||||||
|
sta (pData),y /VOL/DIR
|
||||||
|
|
||||||
|
>PUSHW pData
|
||||||
|
>PUSHEA.G StatBuf
|
||||||
|
>SYSCALL Stat
|
||||||
|
bcc .5
|
||||||
|
|
||||||
|
jsr CS.RUN.Create1
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
.5 ldy ArgIndex
|
||||||
|
cpy ArgLen
|
||||||
|
beq .8
|
||||||
|
|
||||||
|
lda #'/'
|
||||||
|
sta (pData),y /VOL/DIR/.....
|
||||||
|
bra .3
|
||||||
|
|
||||||
|
.8 lda #0
|
||||||
sec
|
sec
|
||||||
|
.9 rts
|
||||||
|
*--------------------------------------
|
||||||
|
CS.RUN.Create1 clc
|
||||||
|
bit bVerbose
|
||||||
|
bpl .1
|
||||||
|
|
||||||
|
>PUSHW L.MSG.DIR
|
||||||
|
>PUSHW pData
|
||||||
|
>PUSHBI 2
|
||||||
|
>SYSCALL PrintF
|
||||||
|
|
||||||
|
.1 >PUSHW pData
|
||||||
|
>PUSHW ZPMode
|
||||||
|
>SYSCALL MKDir
|
||||||
|
|
||||||
|
bit bVerbose
|
||||||
|
bpl .8
|
||||||
|
|
||||||
|
bcs .2
|
||||||
|
|
||||||
|
>LDYA L.MSG.OK
|
||||||
|
>SYSCALL PutS
|
||||||
|
|
||||||
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
.2 pha
|
||||||
|
>PUSHW L.MSG.ERR
|
||||||
|
pla
|
||||||
|
pha
|
||||||
|
>PUSHA
|
||||||
|
>PUSHBI 1
|
||||||
|
>SYSCALL PrintF
|
||||||
|
pla
|
||||||
|
sec
|
||||||
|
|
||||||
|
.8 rts
|
||||||
|
*--------------------------------------
|
||||||
|
CS.RUN.GetNextArg
|
||||||
|
inc ArgIndex
|
||||||
|
|
||||||
|
lda ArgIndex
|
||||||
|
>SYSCALL ArgV
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
>STYA ZPPtr1
|
||||||
|
|
||||||
|
.9 rts
|
||||||
|
*--------------------------------------
|
||||||
|
CS.RUN.Str2Mode ldy #$ff
|
||||||
|
|
||||||
|
.1 iny
|
||||||
|
lda (ZPPtr1),y
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
cpy #4 must be "765" max
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
stz ZPMode
|
||||||
|
stz ZPMode+1
|
||||||
|
|
||||||
|
ldy #0
|
||||||
|
|
||||||
|
.2 lda (ZPPtr1),y
|
||||||
|
beq .8
|
||||||
|
cmp #'0'
|
||||||
|
bcc .9
|
||||||
|
|
||||||
|
cmp #'7'+1
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
asl ZPMode
|
||||||
|
rol ZPMode+1
|
||||||
|
asl ZPMode
|
||||||
|
rol ZPMode+1
|
||||||
|
asl ZPMode
|
||||||
|
rol ZPMode+1
|
||||||
|
and #7
|
||||||
|
clc
|
||||||
|
adc ZPMode
|
||||||
|
sta ZPMode
|
||||||
|
bcc .3
|
||||||
|
|
||||||
|
inc ZPMode+1
|
||||||
|
|
||||||
|
.3 iny
|
||||||
|
bra .2
|
||||||
|
|
||||||
|
.8 clc
|
||||||
|
rts
|
||||||
|
|
||||||
|
.9
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.DOEVENT sec
|
CS.DOEVENT sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.QUIT clc
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
CS.END
|
CS.END
|
||||||
|
*--------------------------------------
|
||||||
|
OptionList .AS "PpVv"
|
||||||
|
OptionVars .DA #bParent,#bParent
|
||||||
|
.DA #bVerbose,#bVerbose
|
||||||
|
*--------------------------------------
|
||||||
|
MSG.USAGE .CS "Usage : MKDIR newdir\r\n"
|
||||||
|
.CS " -M mode : set mode\r\n"
|
||||||
|
.CS " -P : Make parent directories as needed\r\n"
|
||||||
|
.CZ " -V : Verbose"
|
||||||
|
MSG.DIR .CZ "MKDir:%s..."
|
||||||
|
MSG.OK .CZ "[OK]"
|
||||||
|
MSG.ERR .CS "[%h]"
|
||||||
|
MSG.CRLF .CZ "\r\n"
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.DUMMY
|
.DUMMY
|
||||||
.OR 0
|
.OR 0
|
||||||
DS.START
|
DS.START .BS 128 Path buffer
|
||||||
|
StatBuf .BS S.STAT
|
||||||
DS.END .ED
|
DS.END .ED
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
|
|
|
@ -61,11 +61,12 @@ L.MSG.PauseErase .DA MSG.PauseErase
|
||||||
CS.INIT clc
|
CS.INIT clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.RUN
|
CS.RUN
|
||||||
.1 inc ArgCount
|
.1 inc ArgCount
|
||||||
lda ArgCount
|
lda ArgCount
|
||||||
>SYSCALL ArgV
|
>SYSCALL ArgV
|
||||||
bcs .7
|
bcs .7
|
||||||
|
|
||||||
>STYA ZPPtr1
|
>STYA ZPPtr1
|
||||||
lda (ZPPtr1)
|
lda (ZPPtr1)
|
||||||
cmp #'-'
|
cmp #'-'
|
||||||
|
@ -74,12 +75,13 @@ CS.RUN
|
||||||
ldy #1
|
ldy #1
|
||||||
lda (ZPPtr1),y
|
lda (ZPPtr1),y
|
||||||
|
|
||||||
ldx OptionList
|
ldx #OptionVars-OptionList-1
|
||||||
|
|
||||||
.2 cmp OptionList,x
|
.2 cmp OptionList,x
|
||||||
beq .3
|
beq .3
|
||||||
|
|
||||||
dex
|
dex
|
||||||
bne .2
|
bpl .2
|
||||||
|
|
||||||
.99 >PUSHW L.MSG.USAGE
|
.99 >PUSHW L.MSG.USAGE
|
||||||
>PUSHBI 0
|
>PUSHBI 0
|
||||||
|
@ -88,7 +90,7 @@ CS.RUN
|
||||||
sec
|
sec
|
||||||
.9 rts
|
.9 rts
|
||||||
|
|
||||||
.3 ldy OptionVars-1,x
|
.3 ldy OptionVars,x
|
||||||
lda #$80
|
lda #$80
|
||||||
sta (pData),y
|
sta (pData),y
|
||||||
bra .1
|
bra .1
|
||||||
|
@ -305,19 +307,19 @@ CS.DOEVENT sec
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.END
|
CS.END
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
OptionList >PSTR "NnHhPpSs"
|
OptionList .AS "NnHhPpSs"
|
||||||
OptionVars .DA #bLineNum,#bLineNum,#bHelp,#bHelp,#bPage,#bPage,#bEscCodes,#bEscCodes
|
OptionVars .DA #bLineNum,#bLineNum,#bHelp,#bHelp,#bPage,#bPage,#bEscCodes,#bEscCodes
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MSG.USAGE .AS "Usage : MORE <File>\r\n"
|
MSG.USAGE .CS "Usage : MORE <File>\r\n"
|
||||||
.AS " -H : This help screen\r\n"
|
.CS " -H : This help screen\r\n"
|
||||||
.AS " -N : Number all output lines\r\n"
|
.CS " -N : Number all output lines\r\n"
|
||||||
.AS " -P : Page mode, no scroll\r\n"
|
.CS " -P : Page mode, no scroll\r\n"
|
||||||
.AS " -S : Process ESC codes"
|
.CS " -S : Process ESC codes"
|
||||||
MSG.CRLF .AZ "\r\n"
|
MSG.CRLF .CZ "\r\n"
|
||||||
MSG.Init .AZ "\e[?7l"
|
MSG.Init .CZ "\e[?7l"
|
||||||
MSG.NUMLINE .AZ "%5D:"
|
MSG.NUMLINE .CZ "%5D:"
|
||||||
MSG.Pause .AZ "\r\e[7m --- 'SPACE' for more, 'CR' one line, 'Q/q' to quit --- \e[0m"
|
MSG.Pause .CZ "\r\e[7m --- 'SPACE' for more, 'CR' one line, 'Q/q' to quit --- \e[0m"
|
||||||
MSG.PauseErase .AZ "\r\e[2K"
|
MSG.PauseErase .CZ "\r\e[2K"
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.DUMMY
|
.DUMMY
|
||||||
.OR 0
|
.OR 0
|
||||||
|
|
24
BIN/MV.S.txt
24
BIN/MV.S.txt
|
@ -25,18 +25,18 @@ OptionVars .DA #bContinue,#bContinue
|
||||||
.DA #bRecurse,#bRecurse
|
.DA #bRecurse,#bRecurse
|
||||||
.DA #bNoConfirm,#bNoConfirm
|
.DA #bNoConfirm,#bNoConfirm
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MSG.USAGE .AS "Usage : MV [Src File/Dir, *,? wildcards allowed]\r\n"
|
MSG.USAGE .CS "Usage : MV [Src File/Dir, *,? wildcards allowed]\r\n"
|
||||||
.AS " -C : Continue on error\r\n"
|
.CS " -C : Continue on error\r\n"
|
||||||
.AS " -Q : Quiet\r\n"
|
.CS " -Q : Quiet\r\n"
|
||||||
.AS " -R : Recurse subdirectories\r\n"
|
.CS " -R : Recurse subdirectories\r\n"
|
||||||
.AZ " -Y : Dont't prompt for override\r\n"
|
.CZ " -Y : Dont't prompt for override\r\n"
|
||||||
MSG.DIR .AZ "MV Dir :%s to %s..."
|
MSG.DIR .CZ "MV Dir :%s to %s..."
|
||||||
MSG.REG .AZ "MV File:%s to %s..."
|
MSG.REG .CZ "MV File:%s to %s..."
|
||||||
MSG.OVERWRITE .AZ "Overwrite %s [Yes,No,All]?"
|
MSG.OVERWRITE .CZ "Overwrite %s [Yes,No,All]?"
|
||||||
MSG.OK .AZ "[OK]"
|
MSG.OK .CZ "[OK]"
|
||||||
MSG.ERR .AS "[%h]"
|
MSG.ERR .CS "[%h]"
|
||||||
MSG.CRLF .AZ "\r\n"
|
MSG.CRLF .CZ "\r\n"
|
||||||
MSG.DONE .AZ "%D File(s) Moved.\r\n"
|
MSG.DONE .CZ "%D File(s) Moved.\r\n"
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.DUMMY
|
.DUMMY
|
||||||
.OR 0
|
.OR 0
|
||||||
|
|
20
BIN/RM.S.txt
20
BIN/RM.S.txt
|
@ -24,16 +24,16 @@ OptionVars .DA #bContinue,#bContinue
|
||||||
.DA #bQuiet,#bQuiet
|
.DA #bQuiet,#bQuiet
|
||||||
.DA #bRecurse,#bRecurse
|
.DA #bRecurse,#bRecurse
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MSG.USAGE .AS "Usage : RM [File/Dir, *,? wildcards allowed]\r\n"
|
MSG.USAGE .CS "Usage : RM [File/Dir, *,? wildcards allowed]\r\n"
|
||||||
.AS " -C : Continue on error\r\n"
|
.CS " -C : Continue on error\r\n"
|
||||||
.AS " -Q : Quiet\r\n"
|
.CS " -Q : Quiet\r\n"
|
||||||
.AZ " -R : Recurse subdirectories\r\n"
|
.CZ " -R : Recurse subdirectories\r\n"
|
||||||
MSG.DIR .AZ "RM Dir :%s..."
|
MSG.DIR .CZ "RM Dir :%s..."
|
||||||
MSG.REG .AZ "RM File:%s..."
|
MSG.REG .CZ "RM File:%s..."
|
||||||
MSG.OK .AZ "[OK]"
|
MSG.OK .CZ "[OK]"
|
||||||
MSG.ERR .AS "[%h]"
|
MSG.ERR .CS "[%h]"
|
||||||
MSG.CRLF .AZ "\r\n"
|
MSG.CRLF .CZ "\r\n"
|
||||||
MSG.DONE .AZ "%D File(s) Removed.\r\n"
|
MSG.DONE .CZ "%D File(s) Removed.\r\n"
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.DUMMY
|
.DUMMY
|
||||||
.OR 0
|
.OR 0
|
||||||
|
|
|
@ -19,16 +19,13 @@ CL.PrintPrompt >PUSHW L.PS1
|
||||||
|
|
||||||
phx
|
phx
|
||||||
|
|
||||||
>PUSHYA
|
jsr PrintYANoCR
|
||||||
>PUSHBI 0
|
|
||||||
|
|
||||||
>SYSCALL PrintF
|
|
||||||
pla
|
pla
|
||||||
>SYSCALL FreeMem
|
>SYSCALL FreeMem
|
||||||
|
|
||||||
.1 >PUSHW L.MSG.PROMPT
|
.1 >LDYA L.MSG.PROMPT
|
||||||
>PUSHBI 0
|
jsr PrintYANoCR
|
||||||
>SYSCALL PrintF
|
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CL.READN0A tax
|
CL.READN0A tax
|
||||||
|
@ -188,7 +185,9 @@ CL.CHARIN.CTRL cpx #C.CR
|
||||||
.8 clc
|
.8 clc
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CL.CLR lda (ZPCLBuf)
|
CL.CLR >STZ.G HIS.Ptr
|
||||||
|
|
||||||
|
CL.CLR.1 lda (ZPCLBuf)
|
||||||
beq CL.Reset.1
|
beq CL.Reset.1
|
||||||
|
|
||||||
>LDA.G CL.bSilent
|
>LDA.G CL.bSilent
|
||||||
|
@ -213,7 +212,8 @@ CL.CLR lda (ZPCLBuf)
|
||||||
lda (ZPCLBuf),y
|
lda (ZPCLBuf),y
|
||||||
bne .3
|
bne .3
|
||||||
|
|
||||||
jsr CL.Print
|
>LDYA ZPCLBuf
|
||||||
|
jsr PrintYANoCR
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CL.Reset lda #0
|
CL.Reset lda #0
|
||||||
sta (ZPCLBuf)
|
sta (ZPCLBuf)
|
||||||
|
@ -329,14 +329,6 @@ CL.PrintEOL >LDA.G CL.Ptr
|
||||||
CL.PrintEOL.8 clc
|
CL.PrintEOL.8 clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CL.Print ldy #S.PS.hStdOut
|
|
||||||
lda (pPS),y
|
|
||||||
>PUSHA
|
|
||||||
>PUSHW ZPCLBuf
|
|
||||||
|
|
||||||
>SYSCALL FPutS
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
MAN
|
MAN
|
||||||
SAVE usr/src/bin/sh.s.cl
|
SAVE usr/src/bin/sh.s.cl
|
||||||
LOAD usr/src/bin/sh.s
|
LOAD usr/src/bin/sh.s
|
||||||
|
|
169
BIN/SH.S.CMD.txt
169
BIN/SH.S.CMD.txt
|
@ -2,6 +2,99 @@ NEW
|
||||||
AUTO 3,1
|
AUTO 3,1
|
||||||
.LIST OFF
|
.LIST OFF
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
* https://linuxize.com/post/how-to-create-bash-aliases/
|
||||||
|
*--------------------------------------
|
||||||
|
CMD.ALIAS lda (ZPArgVBufPtr)
|
||||||
|
bne CMD.ALIAS.ADD
|
||||||
|
|
||||||
|
>LDA.G hAliases
|
||||||
|
beq .8
|
||||||
|
|
||||||
|
ldy #0
|
||||||
|
lda #1
|
||||||
|
|
||||||
|
.1 >STYA ZPTmpW Save KeyID
|
||||||
|
|
||||||
|
clc
|
||||||
|
jsr CMD.ALIAS.Push
|
||||||
|
|
||||||
|
>SYSCALL SListGetByID
|
||||||
|
bcs .8
|
||||||
|
|
||||||
|
>STYA ZPPtr1 NextID
|
||||||
|
|
||||||
|
>LDYA ZPCLBuf
|
||||||
|
jsr PrintYANoCR
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
sec
|
||||||
|
jsr CMD.ALIAS.Push
|
||||||
|
|
||||||
|
>SYSCALL SListGetData
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
>PUSHW L.MSG.ALIAS
|
||||||
|
>PUSHW ZPCLBuf
|
||||||
|
>PUSHBI 2
|
||||||
|
>SYSCALL PrintF
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
>LDYA ZPPtr1
|
||||||
|
bra .1
|
||||||
|
|
||||||
|
.8 clc
|
||||||
|
.9 rts
|
||||||
|
*--------------------------------------
|
||||||
|
CMD.ALIAS.ADD >LDYA ZPArgVBufPtr
|
||||||
|
>STYA ZPVarNamePtr
|
||||||
|
|
||||||
|
jsr CORE.ArgV.Next
|
||||||
|
beq .9
|
||||||
|
|
||||||
|
cmp #'='
|
||||||
|
bne .99
|
||||||
|
|
||||||
|
jsr CORE.ArgV.Next
|
||||||
|
beq .9
|
||||||
|
|
||||||
|
>LDA.G hAliases
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
lda #0
|
||||||
|
>SYSCALL SListNew
|
||||||
|
bcs .99
|
||||||
|
|
||||||
|
>STA.G hAliases
|
||||||
|
|
||||||
|
.1 >PUSHA
|
||||||
|
>PUSHW ZPVarNamePtr
|
||||||
|
|
||||||
|
>SYSCALL SListNewKey
|
||||||
|
bcs .99
|
||||||
|
|
||||||
|
>STYA ZPTmpW Save KeyID
|
||||||
|
|
||||||
|
>PUSHB.G hAliases
|
||||||
|
>PUSHW ZPTmpW KeyID
|
||||||
|
>PUSHW ZPArgVBufPtr DataPtr
|
||||||
|
>PUSHWZ String Mode
|
||||||
|
>SYSCALL SListAddData
|
||||||
|
rts
|
||||||
|
|
||||||
|
.9 lda #E.CSYN
|
||||||
|
sec
|
||||||
|
.99 rts
|
||||||
|
*--------------------------------------
|
||||||
|
CMD.ALIAS.Push >PUSHB.G hAliases
|
||||||
|
>PUSHW ZPTmpW KeyID
|
||||||
|
>PUSHW ZPCLBuf
|
||||||
|
bcc .8
|
||||||
|
|
||||||
|
>PUSHWI $ffff All
|
||||||
|
>PUSHWZ from Start
|
||||||
|
|
||||||
|
.8 rts
|
||||||
|
*--------------------------------------
|
||||||
CMD.. lda (ZPArgVBufPtr)
|
CMD.. lda (ZPArgVBufPtr)
|
||||||
beq CMD...9
|
beq CMD...9
|
||||||
|
|
||||||
|
@ -9,9 +102,9 @@ CMD.. lda (ZPArgVBufPtr)
|
||||||
>SYSCALL LoadTxtFile
|
>SYSCALL LoadTxtFile
|
||||||
bcs CMD.SHIFTA.RTS
|
bcs CMD.SHIFTA.RTS
|
||||||
|
|
||||||
>LDYA ZPArgVBufPtr
|
>LDYA ZPArgVBufPtr Exec . file
|
||||||
|
|
||||||
CMD..EXEC.YAX jsr CORE.Load.YAX Exec . file
|
CMD..EXEC.YAX jsr CORE.Load.YAX Y,A = Args, X = Code
|
||||||
bcs CMD.SHIFTA.RTS
|
bcs CMD.SHIFTA.RTS
|
||||||
|
|
||||||
lda #$C0+C..
|
lda #$C0+C..
|
||||||
|
@ -55,7 +148,7 @@ CMD.PUSHD >LDA.G PUSHD.STACK
|
||||||
lda (ZPArgVBufPtr)
|
lda (ZPArgVBufPtr)
|
||||||
bne CMD.CD.0
|
bne CMD.CD.0
|
||||||
|
|
||||||
.8 clc
|
* clc
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CMD.POPD >LDA.G PUSHD.STACK
|
CMD.POPD >LDA.G PUSHD.STACK
|
||||||
|
@ -170,21 +263,19 @@ CMD.SET.1
|
||||||
.1 jsr CMD.IsSwitch
|
.1 jsr CMD.IsSwitch
|
||||||
bcs .6
|
bcs .6
|
||||||
|
|
||||||
ldx #SET.VARS-SET.FLAGS
|
ldx #SET.VARS-SET.FLAGS-1
|
||||||
|
|
||||||
.2 dex
|
.2 cmp SET.FLAGS,x
|
||||||
bmi .4
|
bne .3
|
||||||
|
|
||||||
cmp SET.FLAGS,x
|
lda SET.VARS,x
|
||||||
bne .2
|
|
||||||
|
|
||||||
ldy SET.VARS,x
|
|
||||||
|
|
||||||
lda (pData),y
|
|
||||||
eor #$ff
|
|
||||||
sta (pData),y
|
|
||||||
|
|
||||||
|
eor bState
|
||||||
|
sta bState
|
||||||
bra .5
|
bra .5
|
||||||
|
|
||||||
|
.3 dex
|
||||||
|
bpl .2
|
||||||
|
|
||||||
.4 cmp #'F'
|
.4 cmp #'F'
|
||||||
bne .99
|
bne .99
|
||||||
|
@ -308,7 +399,8 @@ CMD.ECHO stz ZPPtr1 echo -N
|
||||||
lda #C.SPACE
|
lda #C.SPACE
|
||||||
>SYSCALL PutChar
|
>SYSCALL PutChar
|
||||||
|
|
||||||
.3 jsr CMD.PrintArgVBufPtr
|
.3 >LDYA ZPArgVBufPtr
|
||||||
|
jsr PrintYANoCR
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
inc ZPPtr1+1
|
inc ZPPtr1+1
|
||||||
|
@ -319,13 +411,11 @@ CMD.ECHO stz ZPPtr1 echo -N
|
||||||
.7 bit ZPPtr1
|
.7 bit ZPPtr1
|
||||||
bmi .8
|
bmi .8
|
||||||
|
|
||||||
>PUSHW L.MSG.ECHOCRLF
|
>LDYA L.MSG.ECHOCRLF
|
||||||
>PUSHBI 0
|
jmp PrintYANoCR
|
||||||
>SYSCALL PrintF
|
|
||||||
.9 rts
|
|
||||||
|
|
||||||
.8 clc
|
.8 clc
|
||||||
rts
|
.9 rts
|
||||||
|
|
||||||
CMD.ECHO.CSYN lda #E.CSYN
|
CMD.ECHO.CSYN lda #E.CSYN
|
||||||
sec
|
sec
|
||||||
|
@ -355,7 +445,8 @@ CMD.READ lda (ZPArgVBufPtr)
|
||||||
jsr CORE.ArgV.Next
|
jsr CORE.ArgV.Next
|
||||||
beq CMD.ECHO.CSYN
|
beq CMD.ECHO.CSYN
|
||||||
|
|
||||||
jsr CMD.PrintArgVBufPtr
|
>LDYA ZPArgVBufPtr
|
||||||
|
jsr PrintYANoCR
|
||||||
bcs CMD.ECHO.RTS
|
bcs CMD.ECHO.RTS
|
||||||
bra .5
|
bra .5
|
||||||
|
|
||||||
|
@ -408,8 +499,8 @@ CMD.SLEEP lda (ZPArgVBufPtr)
|
||||||
|
|
||||||
CMD.SLEEP.RTS rts
|
CMD.SLEEP.RTS rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CMD.PAUSE lda #$FF
|
CMD.PAUSE lda #bState.Pause
|
||||||
>STA.G bPause
|
tsb bState
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -529,14 +620,14 @@ CMD.FUNCTION lda (ZPArgVBufPtr)
|
||||||
jsr CORE.StkGetCtx
|
jsr CORE.StkGetCtx
|
||||||
bcc .9 No context allowed
|
bcc .9 No context allowed
|
||||||
|
|
||||||
>LDA.G hFuncList
|
>LDA.G hFunctions
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
lda #SL..+SL._
|
lda #SL..+SL._
|
||||||
>SYSCALL SListNew
|
>SYSCALL SListNew
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
>STA.G hFuncList
|
>STA.G hFunctions
|
||||||
|
|
||||||
.1 >PUSHA
|
.1 >PUSHA
|
||||||
>PUSHW ZPArgVBufPtr
|
>PUSHW ZPArgVBufPtr
|
||||||
|
@ -597,21 +688,21 @@ CMD.FUNCTION lda (ZPArgVBufPtr)
|
||||||
inc ZPPtr2+1
|
inc ZPPtr2+1
|
||||||
|
|
||||||
.15 jsr CORE.GetNextChar
|
.15 jsr CORE.GetNextChar
|
||||||
bne .12
|
bcc .12
|
||||||
|
|
||||||
.6 txa
|
.6 txa
|
||||||
bpl .9
|
bpl .9
|
||||||
|
|
||||||
.7 jsr CORE.GetNextChar skip ending '}'
|
.7 jsr CORE.GetNextChar skip ending '}'
|
||||||
|
|
||||||
>PUSHB.G hFuncList
|
>PUSHB.G hFunctions
|
||||||
>PUSHW ZPTmpW KeyID
|
>PUSHW ZPTmpW KeyID
|
||||||
>PUSHW ZPPtr1 DataPtr
|
>PUSHW ZPPtr1 DataPtr
|
||||||
>PUSHW ZPPtr2 DataLen
|
>PUSHW ZPPtr2 DataLen
|
||||||
>SYSCALL SListAddData
|
>SYSCALL SListAddData
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
>PUSHB.G hFuncList
|
>PUSHB.G hFunctions
|
||||||
>PUSHW ZPTmpW KeyID
|
>PUSHW ZPTmpW KeyID
|
||||||
>PUSHW L.PtrZero DataPtr
|
>PUSHW L.PtrZero DataPtr
|
||||||
>PUSHWI 1 DataLen
|
>PUSHWI 1 DataLen
|
||||||
|
@ -623,7 +714,7 @@ CMD.CALL jsr CMD.CALL.GETFUNC
|
||||||
|
|
||||||
>STYA ZPTmpW KeyID
|
>STYA ZPTmpW KeyID
|
||||||
|
|
||||||
>PUSHB.G hFuncList
|
>PUSHB.G hFunctions
|
||||||
>PUSHW ZPTmpW KeyID
|
>PUSHW ZPTmpW KeyID
|
||||||
>PUSHWZ Allocate..
|
>PUSHWZ Allocate..
|
||||||
>PUSHWI $ffff all
|
>PUSHWI $ffff all
|
||||||
|
@ -640,10 +731,10 @@ CMD.CALL jsr CMD.CALL.GETFUNC
|
||||||
jmp CORE.StkPush
|
jmp CORE.StkPush
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CMD.CALL.GETFUNC
|
CMD.CALL.GETFUNC
|
||||||
>LDA.G hFuncList
|
>LDA.G hFunctions
|
||||||
beq CMD.CALL.UNDEF
|
beq CMD.CALL.UNDEF
|
||||||
|
|
||||||
>PUSHB.G hFuncList
|
>PUSHB.G hFunctions
|
||||||
>PUSHW ZPArgVBufPtr
|
>PUSHW ZPArgVBufPtr
|
||||||
>SYSCALL SListLookup
|
>SYSCALL SListLookup
|
||||||
bcc CMD.CALL.RTS
|
bcc CMD.CALL.RTS
|
||||||
|
@ -678,8 +769,9 @@ CMD.EXIT lda (ZPArgVBufPtr)
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.8 jsr CMD.EXIT.FILE
|
.8 jsr CMD.EXIT.FILE
|
||||||
lda #$ff
|
lda #bState.ExitOnEOF
|
||||||
>STA.G bExitOnEOF
|
tsb bState
|
||||||
|
|
||||||
clc
|
clc
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -834,6 +926,7 @@ CMD.FOR jsr CORE.StkGetCtx
|
||||||
|
|
||||||
jsr CORE.ArgV.Next
|
jsr CORE.ArgV.Next
|
||||||
beq CMD.E.CSYN
|
beq CMD.E.CSYN
|
||||||
|
|
||||||
>PUSHW L.IN
|
>PUSHW L.IN
|
||||||
>PUSHW ZPArgVBufPtr
|
>PUSHW ZPArgVBufPtr
|
||||||
>SYSCALL StrCaseCmp
|
>SYSCALL StrCaseCmp
|
||||||
|
@ -995,8 +1088,10 @@ CMD.NEXT.LIST.TOKEN
|
||||||
ldy #0
|
ldy #0
|
||||||
.10 jsr GetPtr1NextChar
|
.10 jsr GetPtr1NextChar
|
||||||
beq .3
|
beq .3
|
||||||
|
|
||||||
cmp #C.SPACE
|
cmp #C.SPACE
|
||||||
beq .10
|
beq .10
|
||||||
|
|
||||||
sta (ZPCLBuf),y
|
sta (ZPCLBuf),y
|
||||||
iny
|
iny
|
||||||
.1 jsr GetPtr1NextChar
|
.1 jsr GetPtr1NextChar
|
||||||
|
@ -1207,7 +1302,7 @@ CMD.IsSwitch lda (ZPArgVBufPtr)
|
||||||
cmp #'9'+1
|
cmp #'9'+1
|
||||||
bcc .9
|
bcc .9
|
||||||
|
|
||||||
.1 tax
|
tax
|
||||||
iny
|
iny
|
||||||
lda (ZPArgVBufPtr),y
|
lda (ZPArgVBufPtr),y
|
||||||
bne .9
|
bne .9
|
||||||
|
@ -1218,12 +1313,6 @@ CMD.IsSwitch lda (ZPArgVBufPtr)
|
||||||
.9 sec
|
.9 sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CMD.PrintArgVBufPtr
|
|
||||||
>PUSHW ZPArgVBufPtr
|
|
||||||
>PUSHBI 0
|
|
||||||
>SYSCALL PrintF
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
MAN
|
MAN
|
||||||
SAVE usr/src/bin/sh.s.cmd
|
SAVE usr/src/bin/sh.s.cmd
|
||||||
LOAD usr/src/bin/sh.s
|
LOAD usr/src/bin/sh.s
|
||||||
|
|
|
@ -1,34 +1,39 @@
|
||||||
NEW
|
NEW
|
||||||
AUTO 3,1
|
AUTO 3,1
|
||||||
.LIST OFF
|
.LIST OFF
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CORE.Init lda #PUSHD.STACK
|
CORE.Init lda #PUSHD.STACK
|
||||||
>STA.G PUSHD.STACK
|
tay
|
||||||
|
sta (pdata),y
|
||||||
|
|
||||||
|
lda #CODE.STACK
|
||||||
|
tay
|
||||||
|
sta (pdata),y
|
||||||
|
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CORE.FUNCRESET >LDA.G hFuncList
|
CORE.FUNCRESET >LDA.G hFunctions
|
||||||
beq .8
|
beq .8
|
||||||
|
|
||||||
>SYSCALL SListFree
|
>SYSCALL SListFree
|
||||||
>STZ.G hFuncList
|
>STZ.G hFunctions
|
||||||
|
|
||||||
.8 rts
|
.8 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* stack-6 InputBuf
|
* stack-6,7 InputBuf
|
||||||
* stack-4 InputBufPtr
|
* stack-4,5 InputBufPtr
|
||||||
* stack-3 old ARGC
|
* stack-3 old ARGC
|
||||||
* stack-2 old ARGV
|
* stack-2 old ARGV
|
||||||
* stack-1 new hCode
|
* stack-1 new hCode
|
||||||
* stack
|
* stack
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CORE.Load.YAX stx M32.ACC X = Code to Execute
|
CORE.Load.YAX stx LOAD.hCode X = Code to Execute
|
||||||
|
|
||||||
>SYSCALL ArgVDup Y,A = ArgV
|
>SYSCALL ArgVDup Y,A = ArgV
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
stx M32.ACC+1 X = hARGV
|
stx LOAD.hArgs X = hARGV
|
||||||
sta M32.ACC+2 A = ARGC
|
sta LOAD.ArgCnt A = ARGC
|
||||||
|
|
||||||
lda #8
|
lda #8
|
||||||
jsr CORE.StkCheck
|
jsr CORE.StkCheck
|
||||||
|
@ -48,17 +53,17 @@ CORE.Load.YAX stx M32.ACC X = Code to Execute
|
||||||
jsr CORE.StkPush old hARGV
|
jsr CORE.StkPush old hARGV
|
||||||
|
|
||||||
ldy #S.PS.ARGC
|
ldy #S.PS.ARGC
|
||||||
lda M32.ACC+2 new ARGC
|
lda LOAD.ArgCnt new ARGC
|
||||||
dec Skip ARG0 in count
|
dec Skip ARG0 in count
|
||||||
sta (pPS),y
|
sta (pPS),y
|
||||||
|
|
||||||
iny #S.PS.hARGV
|
iny #S.PS.hARGV
|
||||||
|
lda LOAD.hArgs
|
||||||
lda M32.ACC+1
|
|
||||||
sta (pPS),y new hARGV
|
sta (pPS),y new hARGV
|
||||||
lda M32.ACC new code
|
|
||||||
|
lda LOAD.hCode new code
|
||||||
jsr CORE.StkPush
|
jsr CORE.StkPush
|
||||||
* lda M32.ACC
|
* lda LOAD.hCode
|
||||||
>SYSCALL GetMemPtr
|
>SYSCALL GetMemPtr
|
||||||
>STYA ZPInputBuf
|
>STYA ZPInputBuf
|
||||||
>STYA ZPInputBufPtr
|
>STYA ZPInputBufPtr
|
||||||
|
@ -72,7 +77,7 @@ CORE.Load.YAX stx M32.ACC X = Code to Execute
|
||||||
* Input : ZPInputBufPtr (String)
|
* Input : ZPInputBufPtr (String)
|
||||||
* Tokenize ZPArgVBuf
|
* Tokenize ZPArgVBuf
|
||||||
* :LOOP
|
* :LOOP
|
||||||
* if CmdSep=| :
|
* if CmdSep=| :
|
||||||
* set hStdIn = hStdOut
|
* set hStdIn = hStdOut
|
||||||
* set hStdOut = Std
|
* set hStdOut = Std
|
||||||
* GetCmd from line until | or EOL
|
* GetCmd from line until | or EOL
|
||||||
|
@ -95,13 +100,17 @@ CORE.Run.EOF jsr CORE.StkPull
|
||||||
bcs *
|
bcs *
|
||||||
cmp #$C0+C.. check CALL . CL context
|
cmp #$C0+C.. check CALL . CL context
|
||||||
beq .1
|
beq .1
|
||||||
|
|
||||||
cmp #$C0+C.CALL
|
cmp #$C0+C.CALL
|
||||||
beq .1
|
beq .1
|
||||||
|
|
||||||
cmp #$C0+C.CLEXEC
|
cmp #$C0+C.CLEXEC
|
||||||
bne .9
|
bne .9
|
||||||
|
|
||||||
.1 jsr CMD.EXIT.FILE
|
.1 jsr CMD.EXIT.FILE
|
||||||
|
|
||||||
jsr IO.Reset
|
jsr IO.Reset
|
||||||
|
|
||||||
lda #0
|
lda #0
|
||||||
sec
|
sec
|
||||||
jmp CORE.Run.Exit Ending 0, CS,A=0
|
jmp CORE.Run.Exit Ending 0, CS,A=0
|
||||||
|
@ -109,7 +118,7 @@ CORE.Run.EOF jsr CORE.StkPull
|
||||||
.9 lda #E.UNEXPEOF
|
.9 lda #E.UNEXPEOF
|
||||||
sec
|
sec
|
||||||
jmp CORE.Run.Exit
|
jmp CORE.Run.Exit
|
||||||
|
|
||||||
CORE.Run.RTS rts
|
CORE.Run.RTS rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CORE.Run jsr IO.Reset
|
CORE.Run jsr IO.Reset
|
||||||
|
@ -122,14 +131,9 @@ CORE.Run jsr IO.Reset
|
||||||
txa
|
txa
|
||||||
>STA.G CORE.hArgVBuf
|
>STA.G CORE.hArgVBuf
|
||||||
|
|
||||||
clc
|
>STZ.G CORE.bPipeIn
|
||||||
.HS B0 BCS
|
|
||||||
|
|
||||||
CORE.Run.1 sec coming from PIPE OUT
|
CORE.Run.1 >LDYA ZPInputBufPtr Save Actual ptr for looping
|
||||||
ror
|
|
||||||
>STA.G CORE.bPipeIn
|
|
||||||
|
|
||||||
>LDYA ZPInputBufPtr Save Actual ptr for looping
|
|
||||||
>STYA ZPInputCmdPtr
|
>STYA ZPInputCmdPtr
|
||||||
|
|
||||||
>LDYA ZPArgVBuf Reset ArgV Buffer
|
>LDYA ZPArgVBuf Reset ArgV Buffer
|
||||||
|
@ -137,7 +141,7 @@ CORE.Run.1 sec coming from PIPE OUT
|
||||||
|
|
||||||
lda #0
|
lda #0
|
||||||
sta (ZPArgVBuf)
|
sta (ZPArgVBuf)
|
||||||
|
|
||||||
sec
|
sec
|
||||||
ror CORE.IntCmd assume external
|
ror CORE.IntCmd assume external
|
||||||
|
|
||||||
|
@ -154,15 +158,41 @@ CORE.Run.1 sec coming from PIPE OUT
|
||||||
bra .8
|
bra .8
|
||||||
|
|
||||||
.33 cmp #'#' commented line?
|
.33 cmp #'#' commented line?
|
||||||
bne .4
|
bne CORE.Run.3
|
||||||
|
|
||||||
.12 jsr CORE.SkipLine
|
.12 jsr CORE.SkipLine
|
||||||
|
|
||||||
.8 lda #0
|
.8 lda #0
|
||||||
clc
|
clc
|
||||||
.9 jmp CORE.Run.Exit EOL, CS,A=0
|
.9 jmp CORE.Run.Exit EOL, CS,A=0
|
||||||
|
*--------------------------------------
|
||||||
|
CORE.Run.3 >LDA.G hAliases
|
||||||
|
beq CORE.Run.4
|
||||||
|
|
||||||
.4 >LDYA L.CMD internal command ?
|
>PUSHA
|
||||||
|
>PUSHW ZPInputBufPtr
|
||||||
|
>SYSCALL SListLookup
|
||||||
|
bcs CORE.Run.4
|
||||||
|
|
||||||
|
>STYA ZPTmpW Save KeyID
|
||||||
|
txa
|
||||||
|
jsr CORE.SkipCharsA
|
||||||
|
|
||||||
|
>PUSHB.G hAliases
|
||||||
|
>PUSHW ZPTmpW KeyID
|
||||||
|
>PUSHWZ Allocate..
|
||||||
|
>PUSHWI $ffff all
|
||||||
|
>PUSHWZ From Start
|
||||||
|
|
||||||
|
>SYSCALL SListGetData X = hMem
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
jsr CORE.PushBufX
|
||||||
|
bcc CORE.Run.3
|
||||||
|
|
||||||
|
.9 rts
|
||||||
|
*--------------------------------------
|
||||||
|
CORE.Run.4 >LDYA L.CMD internal command ?
|
||||||
jsr CORE.LookupInputBuf
|
jsr CORE.LookupInputBuf
|
||||||
bcc .41
|
bcc .41
|
||||||
|
|
||||||
|
@ -170,11 +200,10 @@ CORE.Run.1 sec coming from PIPE OUT
|
||||||
bra .42
|
bra .42
|
||||||
|
|
||||||
.41 stx CORE.IntCmd
|
.41 stx CORE.IntCmd
|
||||||
asl CORE.IntCmd
|
|
||||||
jsr CORE.SkipCharsA
|
jsr CORE.SkipCharsA
|
||||||
|
|
||||||
.42 jsr CORE.StkGet
|
.42 jsr CORE.StkGet
|
||||||
bcs CORE.Run.7 no particular context, exec...
|
bcs CORE.Run.5 no particular context, exec...
|
||||||
|
|
||||||
tax
|
tax
|
||||||
lda CORE.IntCmd
|
lda CORE.IntCmd
|
||||||
|
@ -182,13 +211,13 @@ CORE.Run.1 sec coming from PIPE OUT
|
||||||
|
|
||||||
and #$3F
|
and #$3F
|
||||||
cmp #C.SWITCH SWITCH....FI ?
|
cmp #C.SWITCH SWITCH....FI ?
|
||||||
bcs CORE.Run.7
|
bcs CORE.Run.5
|
||||||
|
|
||||||
.45 txa
|
.45 txa
|
||||||
bpl .43 context is FALSE, skip line
|
bpl .43 context is FALSE, skip line
|
||||||
|
|
||||||
asl
|
asl
|
||||||
bmi CORE.Run.7 parent context is true, exec
|
bmi CORE.Run.5 parent context is true, exec
|
||||||
|
|
||||||
.43 jsr CORE.GetCharNB
|
.43 jsr CORE.GetCharNB
|
||||||
bcs .44 EOF
|
bcs .44 EOF
|
||||||
|
@ -206,86 +235,131 @@ CORE.Run.1 sec coming from PIPE OUT
|
||||||
clc
|
clc
|
||||||
jmp CORE.Run.Exit
|
jmp CORE.Run.Exit
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CORE.Run.5 >LDYA L.CORE.IO
|
CORE.Run.5 jsr CORE.GetCharNB
|
||||||
|
bcs CORE.Run.NOPIPE Nothing to skip
|
||||||
|
|
||||||
|
jsr CORE.IsEndCmd
|
||||||
|
bcc .3
|
||||||
|
|
||||||
|
>LDYA L.CORE.IO
|
||||||
jsr CORE.LookupInputBuf
|
jsr CORE.LookupInputBuf
|
||||||
bcs CORE.Run.6
|
bcs .2
|
||||||
|
|
||||||
jsr CORE.SkipCharsA
|
jsr CORE.SkipCharsA
|
||||||
|
|
||||||
jsr CORE.IO.JMP
|
jsr CORE.IO.JMP
|
||||||
bcc CORE.Run.7
|
bcc CORE.Run.5
|
||||||
|
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
.2 jsr CORE.ArgV.Add
|
||||||
|
bcc CORE.Run.5
|
||||||
|
|
||||||
|
.9 lda #E.SYN
|
||||||
|
sec
|
||||||
jmp CORE.Run.Exit
|
jmp CORE.Run.Exit
|
||||||
|
|
||||||
CORE.Run.6 jsr CORE.ArgV.Add
|
.3 cmp #C.CR
|
||||||
|
beq .7
|
||||||
|
|
||||||
CORE.Run.7 jsr CORE.GetCharNB
|
cmp #';'
|
||||||
bcs .2 Nothing to skip
|
beq .7
|
||||||
|
|
||||||
jsr CORE.IsEndCmd
|
cmp #'|'
|
||||||
bcs CORE.Run.5
|
bne .5
|
||||||
|
|
||||||
tax
|
|
||||||
|
|
||||||
jsr CORE.GetNextCharNB Skip EoL char
|
jsr CORE.GetNextCharNB '|'
|
||||||
|
bra CORE.Run.PIPE
|
||||||
|
|
||||||
cpx #'|' Pipe OUT ?
|
.5 cmp #'&'
|
||||||
bne .2
|
bne .9
|
||||||
sec
|
|
||||||
.1 .HS 90 BCC
|
jsr CORE.GetNextChar Skip '&'
|
||||||
|
bcs .50
|
||||||
|
|
||||||
|
cmp #'&'
|
||||||
|
beq .6 &&
|
||||||
|
|
||||||
|
.50 lda #S.PS.F.HOLD Run in the background...
|
||||||
|
trb CORE.PSFlags
|
||||||
|
bra CORE.Run.NOPIPE
|
||||||
|
|
||||||
|
.6 jsr CORE.GetNextChar Skip '&&'
|
||||||
|
|
||||||
.2 clc
|
jsr CORE.ExecCmd
|
||||||
|
bcc .60
|
||||||
|
|
||||||
|
jsr CORE.SkipLine
|
||||||
|
clc
|
||||||
|
lda #0
|
||||||
|
jmp CORE.Run.Exit
|
||||||
|
|
||||||
|
.60 jmp CORE.Run.1
|
||||||
|
|
||||||
|
.7 jsr CORE.GetNextCharNB Skip EoL char
|
||||||
|
|
||||||
|
.8 bra CORE.Run.NOPIPE
|
||||||
|
*--------------------------------------
|
||||||
|
CORE.Run.NOPIPE clc no pipe
|
||||||
|
.HS B0 BCS
|
||||||
|
CORE.Run.PIPE sec
|
||||||
ror
|
ror
|
||||||
>STA.G CORE.bPipeOut
|
>STA.G CORE.bPipeOut
|
||||||
|
|
||||||
>LDA.G CORE.bPipeIn
|
>LDA.G CORE.bPipeIn
|
||||||
bpl .3
|
bpl .1
|
||||||
|
|
||||||
jsr IO.Pipe.In
|
jsr IO.Pipe.In
|
||||||
bcs CORE.Run.Exit
|
bcs CORE.Run.Exit
|
||||||
|
|
||||||
.3 >LDA.G CORE.bPipeOut
|
.1 >LDA.G CORE.bPipeOut
|
||||||
bpl .7
|
bpl .7
|
||||||
|
|
||||||
jsr IO.Pipe.Out
|
jsr IO.Pipe.Out
|
||||||
bcs CORE.Run.Exit
|
bcs CORE.Run.Exit
|
||||||
|
|
||||||
lda #S.PS.F.HOLD Run in the background...
|
lda #S.PS.F.HOLD Run in the background...
|
||||||
trb CORE.PSFlags
|
trb CORE.PSFlags
|
||||||
|
|
||||||
lda #S.PS.F.CLOSEONX ...and close PIPE OUT on exit
|
lda #S.PS.F.CLOSEONX ...and close PIPE OUT on exit
|
||||||
tsb CORE.PSFlags
|
tsb CORE.PSFlags
|
||||||
|
|
||||||
jsr CORE.ExecCmd
|
jsr CORE.ExecCmd
|
||||||
|
|
||||||
php
|
php
|
||||||
pha
|
pha
|
||||||
|
|
||||||
lda CORE.IntCmd $ff if external
|
lda CORE.IntCmd $ff if external
|
||||||
eor #$80
|
eor #$80
|
||||||
asl if cc Was external...
|
asl if cc Was external...
|
||||||
|
|
||||||
jsr IO.Reset.OutC restore Output, NO close if EXTERNAL
|
jsr IO.Reset.OutC restore Output, NO close if EXTERNAL
|
||||||
|
|
||||||
>LDA.G CORE.bPipeIn
|
>LDA.G CORE.bPipeIn
|
||||||
bpl .6
|
bpl .6
|
||||||
|
|
||||||
jsr IO.Pop.In restore Input
|
jsr IO.Pop.In restore Input
|
||||||
|
|
||||||
.6 pla
|
.6 pla
|
||||||
plp
|
plp
|
||||||
bcs CORE.Run.Exit
|
bcs CORE.Run.Exit
|
||||||
|
|
||||||
|
lda #$FF
|
||||||
|
>STA.G CORE.bPipeIn
|
||||||
|
|
||||||
jmp CORE.Run.1 Loop with Pipe IN
|
jmp CORE.Run.1 Loop with Pipe IN
|
||||||
|
|
||||||
.7 jsr CORE.ExecCmd
|
.7 jsr CORE.ExecCmd
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CORE.Run.Exit php
|
CORE.Run.Exit php
|
||||||
pha
|
pha
|
||||||
>LDA.G CORE.hArgVBuf
|
>LDA.G CORE.hArgVBuf
|
||||||
beq .1
|
beq .1
|
||||||
|
|
||||||
>SYSCALL FreeMem
|
>SYSCALL FreeMem
|
||||||
|
|
||||||
>STZ.G CORE.hArgVBuf
|
>STZ.G CORE.hArgVBuf
|
||||||
|
|
||||||
.1 pla
|
.1 pla
|
||||||
plp
|
plp
|
||||||
rts
|
rts
|
||||||
|
@ -297,17 +371,23 @@ CORE.ExecCmd lda #0
|
||||||
>LDYA ZPArgVBuf
|
>LDYA ZPArgVBuf
|
||||||
>STYA ZPArgVBufPtr
|
>STYA ZPArgVBufPtr
|
||||||
|
|
||||||
ldx CORE.IntCmd
|
lda CORE.IntCmd
|
||||||
bmi CORE.ExecExtCmd
|
bmi CORE.ExecExtCmd
|
||||||
|
|
||||||
|
asl
|
||||||
|
tax
|
||||||
jmp (J.CMD,x)
|
jmp (J.CMD,x)
|
||||||
|
*--------------------------------------
|
||||||
|
CORE.ExecExtCmd ldy #S.PS.RC
|
||||||
|
lda #0
|
||||||
|
sta (pPS),y
|
||||||
|
|
||||||
CORE.ExecExtCmd >PUSHW ZPArgVBuf
|
>PUSHW ZPArgVBuf
|
||||||
>PUSHB CORE.PSFlags
|
>PUSHB CORE.PSFlags
|
||||||
|
|
||||||
>SYSCALL ExecV
|
>SYSCALL ExecV
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
tax CPID
|
tax CPID
|
||||||
lda CORE.PSFlags
|
lda CORE.PSFlags
|
||||||
and #S.PS.F.HOLD
|
and #S.PS.F.HOLD
|
||||||
|
@ -320,7 +400,7 @@ CORE.ExecExtCmd >PUSHW ZPArgVBuf
|
||||||
lda (pPS),y
|
lda (pPS),y
|
||||||
>PUSHA
|
>PUSHA
|
||||||
>PUSHW L.MSG.PID
|
>PUSHW L.MSG.PID
|
||||||
|
|
||||||
txa
|
txa
|
||||||
>PUSHA
|
>PUSHA
|
||||||
>PUSHBI 1
|
>PUSHBI 1
|
||||||
|
@ -341,6 +421,7 @@ CORE.SkipLine jsr CORE.GetNextCharNB
|
||||||
|
|
||||||
cmp #C.CR EOL
|
cmp #C.CR EOL
|
||||||
bne CORE.SkipLine
|
bne CORE.SkipLine
|
||||||
|
|
||||||
jsr CORE.GetNextChar skip CR...
|
jsr CORE.GetNextChar skip CR...
|
||||||
|
|
||||||
.8 rts
|
.8 rts
|
||||||
|
@ -355,7 +436,9 @@ CORE.LookupArgVBuf
|
||||||
>STYA ZPPtr1 Keywords table
|
>STYA ZPPtr1 Keywords table
|
||||||
>LDYA ZPArgVBufPtr
|
>LDYA ZPArgVBufPtr
|
||||||
bcc CORE.Lookup
|
bcc CORE.Lookup
|
||||||
|
|
||||||
>LDYA ZPInputBufPtr
|
>LDYA ZPInputBufPtr
|
||||||
|
|
||||||
CORE.Lookup >STYA ZPPtr2
|
CORE.Lookup >STYA ZPPtr2
|
||||||
|
|
||||||
ldx #0
|
ldx #0
|
||||||
|
@ -377,7 +460,7 @@ CORE.Lookup >STYA ZPPtr2
|
||||||
|
|
||||||
.8 tya Keyword Len
|
.8 tya Keyword Len
|
||||||
|
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.3 dey
|
.3 dey
|
||||||
|
@ -389,6 +472,7 @@ CORE.Lookup >STYA ZPPtr2
|
||||||
|
|
||||||
.4 lda (ZPPtr1)
|
.4 lda (ZPPtr1)
|
||||||
bpl .41
|
bpl .41
|
||||||
|
|
||||||
jsr IncPtr1
|
jsr IncPtr1
|
||||||
|
|
||||||
.6 inx
|
.6 inx
|
||||||
|
@ -403,11 +487,11 @@ CORE.Lookup >STYA ZPPtr2
|
||||||
.7 iny
|
.7 iny
|
||||||
lda (ZPPtr2),y Get Src text char...
|
lda (ZPPtr2),y Get Src text char...
|
||||||
beq .9 end of text
|
beq .9 end of text
|
||||||
|
|
||||||
jsr CORE.IsSpaceOrEndCmd
|
jsr CORE.IsSpaceOrEndCmd
|
||||||
bcc .9 end of valid chars
|
bcc .9 end of valid chars
|
||||||
clc
|
clc
|
||||||
CORE.ArgV.Add.RTS
|
CORE.ArgV.Add.RTS
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* ArgV
|
* ArgV
|
||||||
|
@ -416,7 +500,7 @@ CORE.ArgV.Add lda #C.SPACE
|
||||||
sta ZPTmpW
|
sta ZPTmpW
|
||||||
|
|
||||||
ldy #0
|
ldy #0
|
||||||
|
|
||||||
jsr CORE.GetCharNB
|
jsr CORE.GetCharNB
|
||||||
bcs CORE.ArgV.Add.RTS
|
bcs CORE.ArgV.Add.RTS
|
||||||
|
|
||||||
|
@ -432,7 +516,7 @@ CORE.ArgV.Add lda #C.SPACE
|
||||||
ldx #')'
|
ldx #')'
|
||||||
stx ZPTmpW
|
stx ZPTmpW
|
||||||
bra .12
|
bra .12
|
||||||
|
|
||||||
.11 cmp #'`'
|
.11 cmp #'`'
|
||||||
bne .12
|
bne .12
|
||||||
|
|
||||||
|
@ -475,16 +559,16 @@ CORE.ArgV.Add lda #C.SPACE
|
||||||
|
|
||||||
tya
|
tya
|
||||||
beq .8 Empty string....
|
beq .8 Empty string....
|
||||||
|
|
||||||
sec
|
sec
|
||||||
adc ZPArgVBufPtr
|
adc ZPArgVBufPtr
|
||||||
sta ZPArgVBufPtr
|
sta ZPArgVBufPtr
|
||||||
bcc .8
|
bcc .8
|
||||||
|
|
||||||
inc ZPArgVBufPtr+1
|
inc ZPArgVBufPtr+1
|
||||||
clc
|
clc
|
||||||
|
|
||||||
.8
|
.8
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CORE.ArgV.Next lda (ZPArgVBufPtr)
|
CORE.ArgV.Next lda (ZPArgVBufPtr)
|
||||||
|
@ -515,18 +599,15 @@ CORE.IO.JMP txa
|
||||||
tax
|
tax
|
||||||
jmp (J.CORE.IO,x)
|
jmp (J.CORE.IO,x)
|
||||||
|
|
||||||
CORE.IO.AMP lda #S.PS.F.HOLD
|
|
||||||
trb CORE.PSFlags
|
|
||||||
clc
|
|
||||||
CORE.IO.RTS rts
|
|
||||||
CORE.IO.IN lda #O.RDONLY+O.TEXT
|
CORE.IO.IN lda #O.RDONLY+O.TEXT
|
||||||
jsr CORE.IO.Open
|
jsr CORE.IO.Open
|
||||||
bcs CORE.IO.RTS
|
bcs CORE.IO.RTS
|
||||||
|
|
||||||
jmp IO.Set.In
|
jmp IO.Set.In
|
||||||
CORE.IO.OUTA
|
CORE.IO.OUTA
|
||||||
CORE.IO.1OUTA lda #O.WRONLY+O.APPEND+O.CREATE+O.TEXT
|
CORE.IO.1OUTA lda #O.WRONLY+O.APPEND+O.CREATE+O.TEXT
|
||||||
bra CORE.IO.OUT.1
|
bra CORE.IO.OUT.1
|
||||||
CORE.IO.OUT
|
CORE.IO.OUT
|
||||||
CORE.IO.1OUT lda #O.WRONLY+O.TRUNC+O.CREATE+O.TEXT
|
CORE.IO.1OUT lda #O.WRONLY+O.TRUNC+O.CREATE+O.TEXT
|
||||||
|
|
||||||
CORE.IO.OUT.1 jsr CORE.IO.Open
|
CORE.IO.OUT.1 jsr CORE.IO.Open
|
||||||
|
@ -535,10 +616,12 @@ CORE.IO.OUT.1 jsr CORE.IO.Open
|
||||||
|
|
||||||
CORE.IO.2OUTA lda #O.WRONLY+O.APPEND+O.CREATE+O.TEXT
|
CORE.IO.2OUTA lda #O.WRONLY+O.APPEND+O.CREATE+O.TEXT
|
||||||
bra CORE.IO.2OUT.1
|
bra CORE.IO.2OUT.1
|
||||||
|
|
||||||
CORE.IO.2OUT lda #O.WRONLY+O.TRUNC+O.CREATE+O.TEXT
|
CORE.IO.2OUT lda #O.WRONLY+O.TRUNC+O.CREATE+O.TEXT
|
||||||
|
|
||||||
CORE.IO.2OUT.1 jsr CORE.IO.Open
|
CORE.IO.2OUT.1 jsr CORE.IO.Open
|
||||||
bcs CORE.IO.RTS
|
bcs CORE.IO.RTS
|
||||||
|
|
||||||
jmp IO.Set.Err
|
jmp IO.Set.Err
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CORE.IO.Open pha Open Mode
|
CORE.IO.Open pha Open Mode
|
||||||
|
@ -551,10 +634,11 @@ CORE.IO.Open pha Open Mode
|
||||||
>STYA ZPArgVBufPtr Discard filename
|
>STYA ZPArgVBufPtr Discard filename
|
||||||
plx
|
plx
|
||||||
jmp IO.FOpenYAX
|
jmp IO.FOpenYAX
|
||||||
|
|
||||||
.9 pla
|
.9 pla
|
||||||
lda #E.SYN
|
lda #E.SYN
|
||||||
sec
|
sec
|
||||||
rts
|
CORE.IO.RTS rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* Input Buffer
|
* Input Buffer
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -568,6 +652,9 @@ CORE.IsEndCmd cmp #';'
|
||||||
cmp #C.CR
|
cmp #C.CR
|
||||||
beq CORE.IsEndCmd.8
|
beq CORE.IsEndCmd.8
|
||||||
|
|
||||||
|
cmp #'&'
|
||||||
|
beq CORE.IsEndCmd.8
|
||||||
|
|
||||||
cmp #'|'
|
cmp #'|'
|
||||||
beq CORE.IsEndCmd.8
|
beq CORE.IsEndCmd.8
|
||||||
|
|
||||||
|
@ -581,7 +668,7 @@ CORE.GetCharNB jsr CORE.GetChar
|
||||||
bcs CORE.GetNextCharNB.RTS
|
bcs CORE.GetNextCharNB.RTS
|
||||||
|
|
||||||
jsr CORE.CheckCharNB
|
jsr CORE.CheckCharNB
|
||||||
bcc CORE.GetNextCharNB.RTS
|
bcc CORE.GetNextCharNB.RTS
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CORE.GetNextCharNB
|
CORE.GetNextCharNB
|
||||||
jsr CORE.GetNextChar
|
jsr CORE.GetNextChar
|
||||||
|
@ -611,22 +698,98 @@ CORE.GetNextChar
|
||||||
|
|
||||||
inc ZPInputBufPtr+1
|
inc ZPInputBufPtr+1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CORE.GetChar lda (ZPInputBufPtr)
|
CORE.GetChar phy
|
||||||
|
|
||||||
|
.1 lda (ZPInputBufPtr)
|
||||||
|
bne .8
|
||||||
|
|
||||||
|
>LDA.G CODE.STACK
|
||||||
|
cmp #CODE.STACK
|
||||||
beq .9
|
beq .9
|
||||||
|
|
||||||
clc
|
jsr CORE.PopBuf
|
||||||
rts
|
bra .1
|
||||||
|
|
||||||
.9 sec
|
.8 clc
|
||||||
|
|
||||||
|
.9 ply
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CORE.SkipCharsA clc
|
CORE.SkipCharsA clc
|
||||||
adc ZPInputBufPtr
|
adc ZPInputBufPtr
|
||||||
sta ZPInputBufPtr
|
sta ZPInputBufPtr
|
||||||
bcc .8
|
bcc .8
|
||||||
|
|
||||||
inc ZPInputBufPtr+1
|
inc ZPInputBufPtr+1
|
||||||
|
|
||||||
.8 rts
|
.8 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
CORE.PushBufX >LDA.G CODE.STACK
|
||||||
|
cmp #CODE.STACK.MAX*5
|
||||||
|
beq .9
|
||||||
|
|
||||||
|
inc
|
||||||
|
tay
|
||||||
|
|
||||||
|
phx next hBuffer
|
||||||
|
|
||||||
|
ldx #0
|
||||||
|
|
||||||
|
.1 lda ZPInputBuf,x
|
||||||
|
sta (pData),y
|
||||||
|
inx
|
||||||
|
iny
|
||||||
|
cpx #6
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
pla
|
||||||
|
pha
|
||||||
|
sta (pData),y
|
||||||
|
|
||||||
|
tya
|
||||||
|
>STA.G CODE.STACK
|
||||||
|
|
||||||
|
pla
|
||||||
|
>SYSCALL GetMemPtr
|
||||||
|
>STYA ZPInputBuf
|
||||||
|
>STYA ZPInputBufPtr
|
||||||
|
|
||||||
|
* clc
|
||||||
|
rts
|
||||||
|
|
||||||
|
.9 lda #E.STKOVERFLOW
|
||||||
|
* sec
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
CORE.PopBuf >LDA.G CODE.STACK
|
||||||
|
cmp #CODE.STACK
|
||||||
|
beq .9
|
||||||
|
|
||||||
|
tay
|
||||||
|
lda (pData),y
|
||||||
|
phy
|
||||||
|
>SYSCALL FreeMem
|
||||||
|
ply
|
||||||
|
|
||||||
|
ldx #5
|
||||||
|
dey
|
||||||
|
|
||||||
|
.1 lda (pData),y
|
||||||
|
sta ZPInputBuf,x
|
||||||
|
dey
|
||||||
|
dex
|
||||||
|
bpl .1
|
||||||
|
|
||||||
|
tya
|
||||||
|
>STA.G CODE.STACK
|
||||||
|
|
||||||
|
* clc
|
||||||
|
rts
|
||||||
|
|
||||||
|
.9 lda #E.STACKERROR
|
||||||
|
* sec
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
* Stack
|
* Stack
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CORE.StkPopCtx jsr CORE.StkPull
|
CORE.StkPopCtx jsr CORE.StkPull
|
||||||
|
@ -651,34 +814,34 @@ CORE.StkPopCtxA and #$3F
|
||||||
|
|
||||||
cmp #C.DEFAULT DEFAULT : C.DEFAULT + hValue
|
cmp #C.DEFAULT DEFAULT : C.DEFAULT + hValue
|
||||||
bne .9
|
bne .9
|
||||||
|
|
||||||
.1 jsr CORE.StkPopX
|
.1 jsr CORE.StkPopX
|
||||||
|
|
||||||
.2 jsr CORE.StkPullFree
|
.2 jsr CORE.StkPullFree
|
||||||
|
|
||||||
.8 clc
|
.8 clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.3 jsr CORE.StkPull Get FOR sub cmd
|
.3 jsr CORE.StkPull Get FOR sub cmd
|
||||||
beq .4 FOR List
|
beq .4 FOR List
|
||||||
|
|
||||||
jsr CORE.StkPullFree hVARNAME
|
jsr CORE.StkPullFree hVARNAME
|
||||||
|
|
||||||
jsr CORE.StkPullFClose hFILE/hPIPE
|
jsr CORE.StkPullFClose hFILE/hPIPE
|
||||||
|
|
||||||
ldx #2 CmdPtr
|
ldx #2 CmdPtr
|
||||||
jmp CORE.StkPopX
|
jmp CORE.StkPopX
|
||||||
|
|
||||||
.4 jsr CORE.StkPullFree hVARNAME
|
.4 jsr CORE.StkPullFree hVARNAME
|
||||||
|
|
||||||
jsr CORE.StkPullFClose hFILE/hPIPE
|
jsr CORE.StkPullFClose hFILE/hPIPE
|
||||||
|
|
||||||
ldx #4 ListPtr,CmdPtr
|
ldx #4 ListPtr,CmdPtr
|
||||||
jmp CORE.StkPopX
|
jmp CORE.StkPopX
|
||||||
|
|
||||||
.9 lda #E.STACKERROR
|
.9 lda #E.STACKERROR
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CORE.StkPopX lda (pData)
|
CORE.StkPopX lda (pData)
|
||||||
.1 dec
|
.1 dec
|
||||||
|
@ -701,8 +864,10 @@ CORE.StkCheck sec
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CORE.StkPushYAX phx
|
CORE.StkPushYAX phx
|
||||||
jsr CORE.StkPushYA
|
jsr CORE.StkPushYA
|
||||||
bcs CORE.StkPushYA.9
|
bcc CORE.StkPush.1
|
||||||
bra CORE.StkPush.1
|
|
||||||
|
plx
|
||||||
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CORE.StkPushInputBufPtr
|
CORE.StkPushInputBufPtr
|
||||||
>LDYA ZPInputBufPtr
|
>LDYA ZPInputBufPtr
|
||||||
|
@ -710,15 +875,15 @@ CORE.StkPushInputBufPtr
|
||||||
CORE.StkPushYA phy
|
CORE.StkPushYA phy
|
||||||
jsr CORE.StkPush
|
jsr CORE.StkPush
|
||||||
bcc CORE.StkPush.1
|
bcc CORE.StkPush.1
|
||||||
CORE.StkPushYA.9
|
|
||||||
plx
|
plx
|
||||||
CORE.StkPushYA.RTS
|
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CORE.PushVarName
|
CORE.PushVarName
|
||||||
>LDYA ZPVarNamePtr
|
>LDYA ZPVarNamePtr
|
||||||
>SYSCALL StrDup
|
>SYSCALL StrDup
|
||||||
bcs CORE.StkPushYA.RTS
|
bcs CORE.StkPush.RTS
|
||||||
|
|
||||||
txa
|
txa
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CORE.StkPush pha
|
CORE.StkPush pha
|
||||||
|
@ -730,7 +895,7 @@ CORE.StkPush.1 lda (pData) StackPtr
|
||||||
|
|
||||||
sta (pData) StackPtr
|
sta (pData) StackPtr
|
||||||
tay
|
tay
|
||||||
pla
|
pla
|
||||||
sta (pData),y
|
sta (pData),y
|
||||||
* clc
|
* clc
|
||||||
rts
|
rts
|
||||||
|
@ -738,6 +903,7 @@ CORE.StkPush.1 lda (pData) StackPtr
|
||||||
.9 pla
|
.9 pla
|
||||||
lda #E.STKOVERFLOW
|
lda #E.STKOVERFLOW
|
||||||
* sec
|
* sec
|
||||||
|
CORE.StkPush.RTS
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CORE.StkGetCtx jsr CORE.StkGet
|
CORE.StkGetCtx jsr CORE.StkGet
|
||||||
|
|
125
BIN/SH.S.HIS.txt
125
BIN/SH.S.HIS.txt
|
@ -2,7 +2,7 @@ NEW
|
||||||
AUTO 3,1
|
AUTO 3,1
|
||||||
.LIST OFF
|
.LIST OFF
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
HIS.Init >LDYAI HISTORY.MAX Get a buffer for History
|
HIS.Init >LDYAI HISBUF.MAX Get a buffer for History
|
||||||
|
|
||||||
>SYSCALL StrVNew
|
>SYSCALL StrVNew
|
||||||
bcs .9
|
bcs .9
|
||||||
|
@ -10,39 +10,37 @@ 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
|
* >STZ.G HIS.Head
|
||||||
* >STA.G HIS.LRU
|
* clc
|
||||||
|
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
HIS.Add >LDA.G HIS.hBuf
|
HIS.Add >LDA.G HIS.hBuf
|
||||||
beq .9
|
beq .9
|
||||||
|
|
||||||
>LDA.G HIS.Count
|
>LDA.G HIS.Count
|
||||||
cmp #HIS.MAX
|
cmp #HISCNT.MAX
|
||||||
bcc .2
|
bcs .1
|
||||||
|
|
||||||
>LDA.G HIS.LRU
|
inc
|
||||||
cmp #HIS.MAX
|
sta (pData),y
|
||||||
bne .1
|
|
||||||
|
|
||||||
lda #0
|
>STA.G HIS.Head
|
||||||
|
tax
|
||||||
.1 inc
|
|
||||||
>STA.G HIS.LRU
|
|
||||||
bra .7
|
bra .7
|
||||||
|
|
||||||
.2 inc
|
.1 ldy #HIS.Head
|
||||||
>STA.G HIS.Count
|
jsr HIS.NextY replace oldest
|
||||||
|
|
||||||
.7 tax
|
tax
|
||||||
>PUSHB.G HIS.hBuf
|
|
||||||
|
.7 >PUSHB.G HIS.hBuf
|
||||||
>PUSHBI 0
|
>PUSHBI 0
|
||||||
txa
|
txa
|
||||||
>PUSHA
|
>PUSHA
|
||||||
>PUSHW ZPCLBuf
|
>PUSHW ZPCLBuf
|
||||||
>SYSCALL StrVSet
|
>SYSCALL StrVSet
|
||||||
|
|
||||||
>STZ.G HIS.Index Reset Index
|
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
HIS.Select >LDA.G HIS.Count
|
HIS.Select >LDA.G HIS.Count
|
||||||
|
@ -50,39 +48,44 @@ HIS.Select >LDA.G HIS.Count
|
||||||
|
|
||||||
clc
|
clc
|
||||||
.99 rts
|
.99 rts
|
||||||
|
|
||||||
.10 jsr CL.Reset
|
.10 jsr CL.Reset
|
||||||
|
|
||||||
>STZ.G HIS.Index
|
ldx #0
|
||||||
|
|
||||||
.1 >INC.G HIS.Index
|
.1 inx
|
||||||
jsr HIS.GetIndex
|
phx
|
||||||
|
jsr HIS.GetX
|
||||||
|
plx
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
>PUSHW L.MSG.HIS
|
>PUSHW L.MSG.HIS
|
||||||
>LDA.G HIS.Index
|
txa
|
||||||
dec
|
dec
|
||||||
>PUSHA
|
>PUSHA
|
||||||
>PUSHW ZPCLBuf
|
>PUSHW ZPCLBuf
|
||||||
>PUSHBI 3
|
>PUSHBI 3
|
||||||
|
phx
|
||||||
>SYSCALL PrintF
|
>SYSCALL PrintF
|
||||||
|
plx
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
>LDA.G HIS.Index
|
txa
|
||||||
>CMP.G HIS.Count
|
>CMP.G HIS.Count
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
>PUSHW L.MSG.HISPROMPT
|
>LDYA L.MSG.HISPROMPT
|
||||||
>PUSHBI 0
|
jsr PrintYANoCR
|
||||||
>SYSCALL PrintF
|
bcs .9
|
||||||
|
|
||||||
>STZ.G HIS.Index
|
|
||||||
|
|
||||||
lda #0
|
lda #0
|
||||||
sta (ZPCLBuf)
|
sta (ZPCLBuf)
|
||||||
|
|
||||||
|
ldy #HIS.Ptr
|
||||||
|
sta (ZPCLBuf),y
|
||||||
|
|
||||||
>SYSCALL GetChar
|
>SYSCALL GetChar
|
||||||
bcs HIS.Select.RTS
|
bcs .9
|
||||||
|
|
||||||
cmp #'0'
|
cmp #'0'
|
||||||
bcc .7
|
bcc .7
|
||||||
|
@ -92,13 +95,12 @@ HIS.Select >LDA.G HIS.Count
|
||||||
|
|
||||||
and #$f
|
and #$f
|
||||||
inc
|
inc
|
||||||
|
>STA.G HIS.Ptr
|
||||||
|
|
||||||
>STA.G HIS.Index
|
.7 >LDYA L.MSG.HISROMPTCLR
|
||||||
|
jsr PrintYANoCR
|
||||||
.7 >PUSHW L.MSG.HISROMPTCLR
|
bcs .9
|
||||||
>PUSHBI 0
|
|
||||||
>SYSCALL PrintF
|
|
||||||
|
|
||||||
jsr CL.PrintPrompt
|
jsr CL.PrintPrompt
|
||||||
bcc HIS.GetToCL1
|
bcc HIS.GetToCL1
|
||||||
.9
|
.9
|
||||||
|
@ -107,32 +109,38 @@ HIS.Select.RTS rts
|
||||||
HIS.GetPrev >LDA.G HIS.Count
|
HIS.GetPrev >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.Ptr
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
>LDA.G HIS.Count
|
>LDA.G HIS.Head Get newest
|
||||||
bra HIS.GetToCL
|
bra HIS.GetToCL
|
||||||
|
|
||||||
.1 dec
|
.1 dec
|
||||||
bra HIS.GetToCL
|
bne .2
|
||||||
|
|
||||||
|
>LDA.G HIS.Count
|
||||||
|
|
||||||
|
.2 bra HIS.GetToCL
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
HIS.GetNext >LDA.G HIS.Count
|
HIS.GetNext >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
|
>LDA.G HIS.Ptr
|
||||||
beq HIS.GetToCL
|
bne .1
|
||||||
|
|
||||||
>LDA.G HIS.Index
|
ldy #HIS.Head
|
||||||
inc
|
|
||||||
|
.1 jsr HIS.NextY
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
HIS.GetToCL >STA.G HIS.Index
|
HIS.GetToCL >STA.G HIS.Ptr
|
||||||
|
|
||||||
jsr CL.CLR
|
jsr CL.CLR.1
|
||||||
|
|
||||||
HIS.GetToCL1 >LDA.G HIS.Index
|
HIS.GetToCL1 >LDA.G HIS.Ptr
|
||||||
beq .9
|
beq .9
|
||||||
|
|
||||||
jsr HIS.GetIndex
|
tax
|
||||||
|
jsr HIS.GetX
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
ldy #$ff
|
ldy #$ff
|
||||||
|
@ -145,17 +153,34 @@ HIS.GetToCL1 >LDA.G HIS.Index
|
||||||
|
|
||||||
>STA.G CL.Ptr
|
>STA.G CL.Ptr
|
||||||
>STA.G CL.Len
|
>STA.G CL.Len
|
||||||
jmp CL.Print
|
|
||||||
|
>LDYA ZPCLBuf
|
||||||
|
jmp PrintYANoCR
|
||||||
|
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
HIS.GetIndex >PUSHB.G HIS.hBuf
|
HIS.GetX >PUSHB.G HIS.hBuf
|
||||||
>PUSHBI 0
|
>PUSHBI 0
|
||||||
>PUSHB.G HIS.Index
|
txa
|
||||||
|
>PUSHA
|
||||||
>PUSHW ZPCLBuf
|
>PUSHW ZPCLBuf
|
||||||
>SYSCALL StrVGet
|
>SYSCALL StrVGet
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
HIS.NextY lda (pData),y
|
||||||
|
|
||||||
|
phy
|
||||||
|
>CMP.G HIS.Count
|
||||||
|
ply
|
||||||
|
|
||||||
|
bcc .1
|
||||||
|
|
||||||
|
lda #0
|
||||||
|
|
||||||
|
.1 inc
|
||||||
|
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE usr/src/bin/sh.s.his
|
SAVE usr/src/bin/sh.s.his
|
||||||
LOAD usr/src/bin/sh.s
|
LOAD usr/src/bin/sh.s
|
||||||
|
|
272
BIN/SH.S.txt
272
BIN/SH.S.txt
|
@ -5,46 +5,48 @@ NEW
|
||||||
.OR $2000
|
.OR $2000
|
||||||
.TF bin/sh
|
.TF bin/sh
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
HIS.MAX .EQ 10
|
HISCNT.MAX .EQ 10
|
||||||
HISTORY.MAX .EQ 256
|
HISBUF.MAX .EQ 256
|
||||||
CORE.STACK.MAX .EQ 128
|
CORE.STACK.MAX .EQ 128
|
||||||
PUSHD.STACK.MAX .EQ 4
|
PUSHD.STACK.MAX .EQ 4
|
||||||
|
CODE.STACK.MAX .EQ 4
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
C... .EQ 0
|
C... .EQ 0
|
||||||
C.. .EQ 2
|
C.. .EQ 1
|
||||||
C.CD .EQ 4
|
C.CD .EQ 2
|
||||||
C.NOHUP .EQ 6
|
C.NOHUP .EQ 3
|
||||||
C.DATE .EQ 8
|
C.DATE .EQ 4
|
||||||
C.ECHO .EQ 10
|
C.ECHO .EQ 5
|
||||||
C.EXIT .EQ 12
|
C.EXIT .EQ 6
|
||||||
C.MD .EQ 14
|
C.MD .EQ 7
|
||||||
C.PAUSE .EQ 16
|
C.PAUSE .EQ 8
|
||||||
C.PWD .EQ 18
|
C.PWD .EQ 9
|
||||||
C.RD .EQ 20
|
C.RD .EQ 10
|
||||||
C.READ .EQ 22
|
C.READ .EQ 11
|
||||||
C.REN .EQ 24
|
C.REN .EQ 12
|
||||||
C.SET .EQ 26
|
C.SET .EQ 13
|
||||||
C.SLEEP .EQ 28
|
C.SLEEP .EQ 14
|
||||||
C.SHIFT .EQ 30
|
C.SHIFT .EQ 15
|
||||||
C.PUSHD .EQ 32
|
C.PUSHD .EQ 16
|
||||||
C.POPD .EQ 34
|
C.POPD .EQ 17
|
||||||
C.FUNCTION .EQ 36
|
C.FUNCTION .EQ 18
|
||||||
C.CALL .EQ 38
|
C.CALL .EQ 19
|
||||||
C.BREAK .EQ 40
|
C.BREAK .EQ 20
|
||||||
C.SWITCH .EQ 42
|
C.SWITCH .EQ 21
|
||||||
C.CASE .EQ 44
|
C.CASE .EQ 22
|
||||||
C.DEFAULT .EQ 46
|
C.DEFAULT .EQ 23
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
C.FOR .EQ 48
|
C.FOR .EQ 24
|
||||||
C.FOR.LIST .EQ 0
|
C.FOR.LIST .EQ 0
|
||||||
C.FOR.FILEEXEC .EQ 1
|
C.FOR.FILEEXEC .EQ 1
|
||||||
C.WHILE .EQ 50
|
C.WHILE .EQ 25
|
||||||
C.IF .EQ 52
|
C.IF .EQ 26
|
||||||
C.NEXT .EQ 54
|
C.NEXT .EQ 27
|
||||||
C.LOOP .EQ 56
|
C.LOOP .EQ 28
|
||||||
C.ELSE .EQ 58
|
C.ELSE .EQ 29
|
||||||
C.FI .EQ 60
|
C.FI .EQ 30
|
||||||
C.END .EQ 62
|
C.END .EQ 31
|
||||||
|
C.ALIAS .EQ 32
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
C.CLEXEC .EQ 63
|
C.CLEXEC .EQ 63
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -77,7 +79,21 @@ ZPTmpW .BS 2
|
||||||
ZPPtr1 .BS 2
|
ZPPtr1 .BS 2
|
||||||
ZPPtr2 .BS 2
|
ZPPtr2 .BS 2
|
||||||
|
|
||||||
M32.ACC .BS 4
|
LOAD.hCode .BS 1
|
||||||
|
LOAD.hArgs .BS 1
|
||||||
|
LOAD.ArgCnt .BS 1
|
||||||
|
|
||||||
|
bState .BS 1
|
||||||
|
|
||||||
|
bState.ExitOnEOF .EQ %10000000
|
||||||
|
bState.Pause .EQ %01000000
|
||||||
|
|
||||||
|
bState.PipeIn .EQ %00100000
|
||||||
|
bState.PipeOut .EQ %00010000
|
||||||
|
bState.AmpAmp .EQ %00001000
|
||||||
|
bState.SET.C .EQ %00000100
|
||||||
|
bState.SET.E .EQ %00000010
|
||||||
|
bState.SET.X .EQ %00000001
|
||||||
|
|
||||||
ZS.END .ED
|
ZS.END .ED
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -114,13 +130,14 @@ L.MSG.BATCHLINE .DA MSG.BATCHLINE
|
||||||
L.MSG.BATCHERR .DA MSG.BATCHERR
|
L.MSG.BATCHERR .DA MSG.BATCHERR
|
||||||
L.MSG.ERROR .DA MSG.ERROR
|
L.MSG.ERROR .DA MSG.ERROR
|
||||||
L.MSG.PID .DA MSG.PID
|
L.MSG.PID .DA MSG.PID
|
||||||
|
L.MSG.ALIAS .DA MSG.ALIAS
|
||||||
L.FMT.DATE .DA FMT.DATE
|
L.FMT.DATE .DA FMT.DATE
|
||||||
L.FMT.Long .DA FMT.Long
|
L.FMT.Long .DA FMT.Long
|
||||||
L.FMT.Byte .DA FMT.Byte
|
L.FMT.Byte .DA FMT.Byte
|
||||||
J.ESC .DA CL.BS left arrow
|
J.ESC .DA CL.BS left arrow
|
||||||
.DA HIS.GetNext
|
.DA HIS.GetPrev up
|
||||||
.DA HIS.GetPrev
|
.DA HIS.GetNext down
|
||||||
.DA CL.NAK right arrow
|
.DA CL.NAK right
|
||||||
L.CD.. .DA CD..
|
L.CD.. .DA CD..
|
||||||
L.IN .DA IN
|
L.IN .DA IN
|
||||||
L.CMD .DA CMD
|
L.CMD .DA CMD
|
||||||
|
@ -156,9 +173,9 @@ J.CMD .DA CMD...
|
||||||
.DA CMD.ELSE
|
.DA CMD.ELSE
|
||||||
.DA CMD.FI
|
.DA CMD.FI
|
||||||
.DA CMD.END
|
.DA CMD.END
|
||||||
|
.DA CMD.ALIAS
|
||||||
L.CORE.IO .DA CORE.IO
|
L.CORE.IO .DA CORE.IO
|
||||||
J.CORE.IO .DA CORE.IO.AMP
|
J.CORE.IO .DA CORE.IO.IN
|
||||||
.DA CORE.IO.IN
|
|
||||||
.DA CORE.IO.OUTA
|
.DA CORE.IO.OUTA
|
||||||
.DA CORE.IO.OUT
|
.DA CORE.IO.OUT
|
||||||
.DA CORE.IO.1OUTA
|
.DA CORE.IO.1OUTA
|
||||||
|
@ -193,9 +210,10 @@ CS.RUN jsr CL.Init
|
||||||
lda (pPS),y
|
lda (pPS),y
|
||||||
beq .2 no arg, continue starting interactive
|
beq .2 no arg, continue starting interactive
|
||||||
|
|
||||||
lda #$ff
|
lda #bState.ExitOnEOF
|
||||||
>STA.G bExitOnEOF
|
tsb bState
|
||||||
inc lda #0
|
|
||||||
|
lda #0
|
||||||
jsr CMD.SHIFTA Remove $0 = /bin/sh
|
jsr CMD.SHIFTA Remove $0 = /bin/sh
|
||||||
|
|
||||||
jsr GetArgV
|
jsr GetArgV
|
||||||
|
@ -207,22 +225,21 @@ CS.RUN jsr CL.Init
|
||||||
|
|
||||||
ldy #1
|
ldy #1
|
||||||
lda (ZPPtr1),y
|
lda (ZPPtr1),y
|
||||||
cmp #'c'
|
jsr ToUpperCase
|
||||||
beq .10
|
|
||||||
|
|
||||||
cmp #'C'
|
cmp #'C'
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
.10 iny
|
iny
|
||||||
lda (ZPPtr1),y
|
lda (ZPPtr1),y
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
* lda #0
|
* lda #0
|
||||||
jsr CMD.SHIFTA Remove $0 = -C
|
jsr CMD.SHIFTA Remove $0 = -C
|
||||||
|
|
||||||
jsr GetArgV
|
jsr GetArgV
|
||||||
jmp CS.RUN.CMDLINE
|
jmp CS.RUN.CMDLINE
|
||||||
|
*--------------------------------------
|
||||||
.1 jsr GetArgV Load SH batch file
|
.1 jsr GetArgV Load SH batch file
|
||||||
>SYSCALL LoadTxtFile
|
>SYSCALL LoadTxtFile
|
||||||
bcs .9
|
bcs .9
|
||||||
|
@ -232,7 +249,7 @@ CS.RUN jsr CL.Init
|
||||||
plx
|
plx
|
||||||
jsr CMD..EXEC.YAX Execute . Batch file
|
jsr CMD..EXEC.YAX Execute . Batch file
|
||||||
bcc CS.RUN.LOOP
|
bcc CS.RUN.LOOP
|
||||||
|
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.2 jsr CMD.CD.HOME
|
.2 jsr CMD.CD.HOME
|
||||||
|
@ -249,8 +266,10 @@ CS.RUN jsr CL.Init
|
||||||
>SYSCALL LoadTxtFile
|
>SYSCALL LoadTxtFile
|
||||||
bcs CS.RUN.LOOP No profile...
|
bcs CS.RUN.LOOP No profile...
|
||||||
|
|
||||||
>LDYA L.HOME.PROFILE
|
phx X = loaded file hMem
|
||||||
jsr CMD..EXEC.YAX Execute . ${home}profile
|
jsr GetArgV Y,A = Args
|
||||||
|
plx
|
||||||
|
jsr CMD..EXEC.YAX Execute . ${home}.profile
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.RUN.LOOP >SLEEP
|
CS.RUN.LOOP >SLEEP
|
||||||
|
|
||||||
|
@ -274,7 +293,8 @@ CS.RUN.LOOP >SLEEP
|
||||||
lda (pData) batch mode ?
|
lda (pData) batch mode ?
|
||||||
beq CS.RUN.LOOP
|
beq CS.RUN.LOOP
|
||||||
|
|
||||||
>LDA.G bSET.C
|
lda bState
|
||||||
|
and #bState.SET.C
|
||||||
beq .8
|
beq .8
|
||||||
|
|
||||||
bra CS.RUN.LOOP
|
bra CS.RUN.LOOP
|
||||||
|
@ -282,16 +302,17 @@ CS.RUN.LOOP >SLEEP
|
||||||
.11 cmp #19 test Ctrl-s
|
.11 cmp #19 test Ctrl-s
|
||||||
bne CS.RUN.LOOP
|
bne CS.RUN.LOOP
|
||||||
|
|
||||||
lda #$80
|
lda #bState.Pause
|
||||||
>STA.G bPause
|
tsb bState
|
||||||
bra CS.RUN.LOOP
|
bra CS.RUN.LOOP
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.8 lda #3 User Interrupt
|
.8 lda #3 User Interrupt
|
||||||
sec
|
sec
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.2 >LDA.G bPause
|
.2 lda bState
|
||||||
bpl .6
|
and #bState.Pause
|
||||||
|
beq .6
|
||||||
|
|
||||||
.3 >SYSCALL GetChar
|
.3 >SYSCALL GetChar
|
||||||
bcs .9 I/O err
|
bcs .9 I/O err
|
||||||
|
@ -302,22 +323,24 @@ CS.RUN.LOOP >SLEEP
|
||||||
lda (pData) batch mode ?
|
lda (pData) batch mode ?
|
||||||
beq .5
|
beq .5
|
||||||
|
|
||||||
>LDA.G bSET.C
|
lda bState
|
||||||
|
and #bState.SET.C
|
||||||
beq .8
|
beq .8
|
||||||
|
|
||||||
bra .5
|
bra .5
|
||||||
|
|
||||||
.4 tax
|
.4 tax
|
||||||
>LDA.G bPause
|
lda bState
|
||||||
asl $ff ?
|
and #bState.Pause
|
||||||
bpl .5 not from PAUSE command
|
beq .5 not from PAUSE command
|
||||||
|
|
||||||
cpx #C.CR
|
cpx #C.CR
|
||||||
bne .5
|
bne .5
|
||||||
jsr CheckLFAfterCR Check for any extra LF
|
jsr CheckLFAfterCR Check for any extra LF
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
.5 >STZ.G bPause
|
.5 lda #bState.Pause
|
||||||
|
trb bState
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.6 lda (pData) batch mode ?
|
.6 lda (pData) batch mode ?
|
||||||
bne CS.RUN.BATCH
|
bne CS.RUN.BATCH
|
||||||
|
@ -326,13 +349,15 @@ CS.RUN.INTERACTIVE
|
||||||
jsr IO.Reset
|
jsr IO.Reset
|
||||||
jsr CL.Reset
|
jsr CL.Reset
|
||||||
|
|
||||||
|
>STZ.G HIS.Ptr
|
||||||
|
|
||||||
jsr CL.ReadResetV
|
jsr CL.ReadResetV
|
||||||
|
|
||||||
jsr CL.PrintPrompt
|
jsr CL.PrintPrompt
|
||||||
bcs CS.RUN.CMDLINE.9
|
bcs CS.RUN.CMDLINE.9
|
||||||
|
|
||||||
.1 >SYSCALL GetChar
|
.1 >SYSCALL GetChar
|
||||||
bcs CS.RUN.CMDLINE.9 I/O error
|
bcs CS.RUN.CMDLINE.9 I/O error
|
||||||
|
|
||||||
.2 cmp #C.EOF ....or Ctrl-D
|
.2 cmp #C.EOF ....or Ctrl-D
|
||||||
beq CS.RUN.CMDLINE.9 CS
|
beq CS.RUN.CMDLINE.9 CS
|
||||||
|
@ -342,9 +367,8 @@ CS.RUN.INTERACTIVE
|
||||||
>LDA.G CL.bReady Something to execute ?
|
>LDA.G CL.bReady Something to execute ?
|
||||||
bpl .1
|
bpl .1
|
||||||
|
|
||||||
>PUSHW L.MSG.PROMPTCRLF
|
>LDYA L.MSG.PROMPTCRLF
|
||||||
>PUSHBI 0
|
jsr PrintYANoCR
|
||||||
>SYSCALL PrintF
|
|
||||||
bcs CS.RUN.CMDLINE.9
|
bcs CS.RUN.CMDLINE.9
|
||||||
|
|
||||||
lda (ZPCLBuf)
|
lda (ZPCLBuf)
|
||||||
|
@ -356,7 +380,7 @@ CS.RUN.INTERACTIVE
|
||||||
|
|
||||||
CS.RUN.CMDLINE >SYSCALL StrDup
|
CS.RUN.CMDLINE >SYSCALL StrDup
|
||||||
bcs CS.RUN.CMDLINE.9
|
bcs CS.RUN.CMDLINE.9
|
||||||
|
|
||||||
phx
|
phx
|
||||||
jsr GetArgV
|
jsr GetArgV
|
||||||
plx Y,A=ARGV, X=strdup
|
plx Y,A=ARGV, X=strdup
|
||||||
|
@ -370,9 +394,10 @@ CS.RUN.CMDLINE >SYSCALL StrDup
|
||||||
bra CS.RUN.LOOP.RUN
|
bra CS.RUN.LOOP.RUN
|
||||||
|
|
||||||
CS.RUN.CMDLINE.9
|
CS.RUN.CMDLINE.9
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.RUN.BATCH >LDA.G bSET.X
|
CS.RUN.BATCH lda bState
|
||||||
|
and #bState.SET.X
|
||||||
beq CS.RUN.LOOP.RUN
|
beq CS.RUN.LOOP.RUN
|
||||||
|
|
||||||
ldy #$ff
|
ldy #$ff
|
||||||
|
@ -402,8 +427,9 @@ CS.RUN.LOOP.END ldy #S.PS.RC
|
||||||
tay
|
tay
|
||||||
beq CS.RUN.LOOP.80 0 = EOF
|
beq CS.RUN.LOOP.80 0 = EOF
|
||||||
|
|
||||||
>LDA.G bSET.E
|
lda bState
|
||||||
bmi CS.RUN.LOOP.80
|
and #bState.SET.E
|
||||||
|
bne CS.RUN.LOOP.80
|
||||||
|
|
||||||
.1 jsr CORE.StkGet
|
.1 jsr CORE.StkGet
|
||||||
cmp #$C0+C.CLEXEC
|
cmp #$C0+C.CLEXEC
|
||||||
|
@ -414,13 +440,13 @@ CS.RUN.LOOP.END ldy #S.PS.RC
|
||||||
|
|
||||||
cmp #$C0+C.CALL in CALL ?
|
cmp #$C0+C.CALL in CALL ?
|
||||||
beq .7
|
beq .7
|
||||||
|
|
||||||
jsr CORE.StkPopCtx
|
jsr CORE.StkPopCtx
|
||||||
bcc .1
|
bcc .1
|
||||||
|
|
||||||
.7 jsr IO.PrintBatchErrMsg
|
.7 jsr IO.PrintBatchErrMsg
|
||||||
bcs CS.RUN.LOOP.RTS
|
bcs CS.RUN.LOOP.RTS
|
||||||
|
|
||||||
jsr CORE.StkPull
|
jsr CORE.StkPull
|
||||||
jsr CMD.EXIT.FILE
|
jsr CMD.EXIT.FILE
|
||||||
|
|
||||||
|
@ -430,8 +456,9 @@ CS.RUN.LOOP.END ldy #S.PS.RC
|
||||||
CS.RUN.LOOP.80 lda (pData) something on stack ?
|
CS.RUN.LOOP.80 lda (pData) something on stack ?
|
||||||
bne CS.RUN.LOOP.88
|
bne CS.RUN.LOOP.88
|
||||||
|
|
||||||
>LDA.G bExitOnEOF
|
lda bState
|
||||||
bmi CS.RUN.LOOP.EXIT
|
and #bState.ExitOnEOF
|
||||||
|
bne CS.RUN.LOOP.EXIT
|
||||||
|
|
||||||
CS.RUN.LOOP.88 jmp CS.RUN.LOOP
|
CS.RUN.LOOP.88 jmp CS.RUN.LOOP
|
||||||
CS.RUN.LOOP.EXIT
|
CS.RUN.LOOP.EXIT
|
||||||
|
@ -461,9 +488,14 @@ CS.DOEVENT lda (pEvent)
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.QUIT jsr CORE.FUNCRESET
|
CS.QUIT jsr CORE.FUNCRESET
|
||||||
|
|
||||||
>LDA.G HIS.hBuf
|
>LDA.G hFunctions
|
||||||
|
beq .10
|
||||||
|
|
||||||
|
>SYSCALL SListFree
|
||||||
|
|
||||||
|
.10 >LDA.G HIS.hBuf
|
||||||
beq .1
|
beq .1
|
||||||
|
|
||||||
>SYSCALL FreeStkObj
|
>SYSCALL FreeStkObj
|
||||||
|
|
||||||
.1 ldy #CL.hBuf
|
.1 ldy #CL.hBuf
|
||||||
|
@ -476,9 +508,9 @@ CS.QUIT jsr CORE.FUNCRESET
|
||||||
|
|
||||||
.7 lda (pData),y
|
.7 lda (pData),y
|
||||||
beq .8
|
beq .8
|
||||||
|
|
||||||
>SYSCALL FreeMem
|
>SYSCALL FreeMem
|
||||||
|
|
||||||
.8 clc
|
.8 clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -495,11 +527,11 @@ CheckLFAfterCR ldy #S.PS.hStdIn Check for any extra LF
|
||||||
lda (pPS),y
|
lda (pPS),y
|
||||||
>SYSCALL FEOF
|
>SYSCALL FEOF
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
tay
|
tay
|
||||||
bne .9
|
bne .9
|
||||||
>SYSCALL GetChar
|
>SYSCALL GetChar
|
||||||
|
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CheckSleep ldy #Sleep+3
|
CheckSleep ldy #Sleep+3
|
||||||
|
@ -540,9 +572,12 @@ AddAp1Ptr1 sec
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
ToUpperCase cmp #'a'
|
ToUpperCase cmp #'a'
|
||||||
bcc .8
|
bcc .8
|
||||||
|
|
||||||
cmp #'z'+1
|
cmp #'z'+1
|
||||||
bcs .8
|
bcs .8
|
||||||
|
|
||||||
eor #$20
|
eor #$20
|
||||||
|
|
||||||
.8 clc exit CC to allow Jmp to
|
.8 clc exit CC to allow Jmp to
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -551,6 +586,11 @@ IncPStack3 inc pStack
|
||||||
inc pStack
|
inc pStack
|
||||||
inc pStack
|
inc pStack
|
||||||
rts
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
PrintYANoCR >PUSHYA
|
||||||
|
>PUSHBI 0
|
||||||
|
>SYSCALL PrintF
|
||||||
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.INB usr/src/bin/sh.s.cl
|
.INB usr/src/bin/sh.s.cl
|
||||||
.INB usr/src/bin/sh.s.his
|
.INB usr/src/bin/sh.s.his
|
||||||
|
@ -561,28 +601,30 @@ IncPStack3 inc pStack
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.END
|
CS.END
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MSG.GREETINGS .AZ "\r\nA2osX-SH %d.%d\r\n\r\n"
|
MSG.GREETINGS .CZ "\r\nA2osX-SH %d.%d\r\n\r\n"
|
||||||
MSG.HIS .AZ "\r\n%3d : %s"
|
MSG.HIS .CZ "\r\n%3d : %s"
|
||||||
MSG.HISPROMPT .AZ "\r\n\r\n? "
|
MSG.HISPROMPT .CZ "\r\n\r\n? "
|
||||||
MSG.HISROMPTCLR .DA #C.BS,#C.BS,#0
|
MSG.HISROMPTCLR .CZ "\b\b"
|
||||||
MSG.PROMPT .AZ "\e[?7h$ " Enable Line Wrap
|
MSG.PROMPT .CZ "\e[?7h$ " Enable Line Wrap
|
||||||
MSG.PROMPTCRLF .AZ "\e[?7l\r\n" Disable Line Wrap
|
MSG.PROMPTCRLF .CZ "\e[?7l\r\n" Disable Line Wrap
|
||||||
MSG.TRACE .AS ">"
|
MSG.TRACE .CS ">"
|
||||||
MSG.BATCHLINE .AZ "%s\r\n"
|
MSG.BATCHLINE .CZ "%s\r\n"
|
||||||
MSG.BATCHERR .AZ "%s^\r\nLine #%D:"
|
MSG.BATCHERR .CZ "%s^\r\nLine #%D:"
|
||||||
MSG.ERROR .AS "[$%h]:%s."
|
MSG.ERROR .CS "[$%h]:%s."
|
||||||
MSG.ECHOCRLF .AZ "\r\n"
|
MSG.ECHOCRLF .CZ "\r\n"
|
||||||
MSG.PID .AZ "PID=%d\r\n"
|
MSG.PID .CZ "PID=%d\r\n"
|
||||||
|
MSG.ALIAS .CZ ' = "%s"\r\n'
|
||||||
|
*--------------------------------------
|
||||||
FMT.DATE .AZ "%A, %B %d %Y %H:%M:%S"
|
FMT.DATE .AZ "%A, %B %d %Y %H:%M:%S"
|
||||||
FMT.Long .AZ "%L"
|
FMT.Long .AZ "%L"
|
||||||
FMT.Byte .AZ "%d"
|
FMT.Byte .AZ "%d"
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
HOME.PROFILE .AZ "${HOME}profile"
|
HOME.PROFILE .AS "${HOME}.profile"
|
||||||
PtrZero .HS 00 To Make It ArgV
|
PtrZero .HS 00
|
||||||
PS1 .AZ "${PS1}"
|
PS1 .AZ "${PS1}"
|
||||||
HOME .AZ "${HOME}"
|
HOME .AZ "${HOME}"
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
EscChars .AS 'DBAC'
|
EscChars .AS "DABC"
|
||||||
EscChars.Cnt .EQ *-EscChars
|
EscChars.Cnt .EQ *-EscChars
|
||||||
EscChars.Remap .DA #C.BS,#C.VT,#C.LF,#C.FS
|
EscChars.Remap .DA #C.BS,#C.VT,#C.LF,#C.FS
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -622,9 +664,9 @@ CMD .AT ".."
|
||||||
.AT "ELSE"
|
.AT "ELSE"
|
||||||
.AT "FI"
|
.AT "FI"
|
||||||
.AT "END"
|
.AT "END"
|
||||||
|
.AT "ALIAS"
|
||||||
.HS 00
|
.HS 00
|
||||||
CORE.IO .AT "&"
|
CORE.IO .AT "<"
|
||||||
.AT "<"
|
|
||||||
.AT ">>"
|
.AT ">>"
|
||||||
.AT ">"
|
.AT ">"
|
||||||
.AT "1>>"
|
.AT "1>>"
|
||||||
|
@ -676,29 +718,22 @@ EXP.OP.BINARY.BITS
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
EXP.OP.MATH.FPU .DA #FPU.lMUL,#FPU.lDIV,#FPU.lMOD,#FPU.lADD,#FPU.lSUB
|
EXP.OP.MATH.FPU .DA #FPU.lMUL,#FPU.lDIV,#FPU.lMOD,#FPU.lADD,#FPU.lSUB
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
SET.FLAGS .AS "CXE"
|
SET.FLAGS .AS "CEX"
|
||||||
SET.VARS .DA #bSET.C,#bSET.X,#bSET.E
|
SET.VARS .DA #bState.SET.C,#bState.SET.E,#bState.SET.X
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.DUMMY
|
.DUMMY
|
||||||
.OR 0
|
.OR 0
|
||||||
DS.START
|
DS.START
|
||||||
CORE.STACK .BS CORE.STACK.MAX+1 pData (0 = Stack Ptr)
|
CORE.STACK .BS CORE.STACK.MAX+1 pData (0 = Stack Ptr)
|
||||||
PUSHD.STACK .BS PUSHD.STACK.MAX+1
|
PUSHD.STACK .BS PUSHD.STACK.MAX+1
|
||||||
|
CODE.STACK .BS CODE.STACK.MAX*7+1
|
||||||
|
|
||||||
hFuncList .BS 1
|
hAliases .BS 1
|
||||||
|
hFunctions .BS 1
|
||||||
|
|
||||||
bExitOnEOF .BS 1
|
CORE.hArgVBuf .BS 1
|
||||||
|
|
||||||
bPause .BS 1
|
|
||||||
|
|
||||||
bSET.C .BS 1
|
|
||||||
bSET.E .BS 1
|
|
||||||
bSET.X .BS 1
|
|
||||||
|
|
||||||
Sleep .BS 4
|
|
||||||
|
|
||||||
CL.hBuf .BS 1
|
CL.hBuf .BS 1
|
||||||
|
|
||||||
CL.Ptr .BS 1
|
CL.Ptr .BS 1
|
||||||
CL.Len .BS 1
|
CL.Len .BS 1
|
||||||
CL.bReady .BS 1
|
CL.bReady .BS 1
|
||||||
|
@ -706,19 +741,20 @@ CL.bEscMode .BS 1
|
||||||
CL.MaxCnt .BS 1
|
CL.MaxCnt .BS 1
|
||||||
CL.bSilent .BS 1
|
CL.bSilent .BS 1
|
||||||
|
|
||||||
CORE.hArgVBuf .BS 1
|
|
||||||
CORE.bPipeIn .BS 1
|
CORE.bPipeIn .BS 1
|
||||||
CORE.bPipeOut .BS 1
|
CORE.bPipeOut .BS 1
|
||||||
|
|
||||||
HIS.hBuf .BS 1
|
HIS.hBuf .BS 1
|
||||||
HIS.Count .BS 1
|
HIS.Count .BS 1
|
||||||
HIS.Index .BS 1
|
HIS.Ptr .BS 1
|
||||||
HIS.LRU .BS 1
|
HIS.Head .BS 1
|
||||||
|
|
||||||
IO.hIn .BS 1
|
IO.hIn .BS 1
|
||||||
IO.hOut .BS 1
|
IO.hOut .BS 1
|
||||||
IO.hErr .BS 1
|
IO.hErr .BS 1
|
||||||
|
|
||||||
|
Sleep .BS 4
|
||||||
|
|
||||||
*TimeBuf .BS S.TIME 8 bytes
|
*TimeBuf .BS S.TIME 8 bytes
|
||||||
*M32.BUF .BS 12 -1234567890\0
|
*M32.BUF .BS 12 -1234567890\0
|
||||||
TimeBuf .EQ *
|
TimeBuf .EQ *
|
||||||
|
|
|
@ -1,89 +0,0 @@
|
||||||
NEW
|
|
||||||
PREFIX
|
|
||||||
AUTO 4,1
|
|
||||||
#!/bin/csh
|
|
||||||
// This is a comment....
|
|
||||||
|
|
||||||
puts(argv[1]);
|
|
||||||
|
|
||||||
|
|
||||||
exit
|
|
||||||
|
|
||||||
puts("puts: test 'const char *' string.");
|
|
||||||
|
|
||||||
struct tag_test {
|
|
||||||
int cnt;
|
|
||||||
float f;
|
|
||||||
tag_test *next;
|
|
||||||
};
|
|
||||||
|
|
||||||
long L1=3;
|
|
||||||
long L2=5;
|
|
||||||
long L3=7;
|
|
||||||
printf("L1=%L, L2=%L, L3=%L\r\n", L1, L2, L3);
|
|
||||||
|
|
||||||
L3=L1*L2+1;
|
|
||||||
printf("L3=L1*L2+1:L1=%L, L2=%L, L3=%L\r\n", L1, L2, L3);
|
|
||||||
|
|
||||||
L3=L1+5*9;
|
|
||||||
printf("L3=L1+5*9:L1=%L, L2=%L, L3=%L\r\n", L1, L2, L3);
|
|
||||||
|
|
||||||
L3=(L1+5)*L2+10;
|
|
||||||
printf("L3=(L1+5)*L2+10:L1=%L, L2=%L, L3=%L\r\n", L1, L2, L3);
|
|
||||||
|
|
||||||
#define PI 3.14159265
|
|
||||||
|
|
||||||
float f = PI / 3;
|
|
||||||
printf("f=%e\r\n", f);
|
|
||||||
|
|
||||||
float COSPI3=cos(f);
|
|
||||||
float SQR2=sqr(2);
|
|
||||||
printf("cos(PI/3)=%e, sqr(2)=%e\r\n", COSPI3, SQR2);
|
|
||||||
|
|
||||||
printf("f=%e, COSPI3=%e\r\n", f, COSPI3);
|
|
||||||
|
|
||||||
int i = 36;
|
|
||||||
i = i - 11;
|
|
||||||
i=i<<4;
|
|
||||||
printf("i=%I\r\n", i);
|
|
||||||
|
|
||||||
float BILLION=1000000000; //9E6E6B2800
|
|
||||||
printf("BILLION=%e %h%h%h%h%h\r\n", BILLION, BILLION);
|
|
||||||
unsigned int Test=61027;
|
|
||||||
printf("Test=%D\r\n", Test);
|
|
||||||
|
|
||||||
float a = 66 / 3;
|
|
||||||
printf("a=%e\r\n", a);
|
|
||||||
a=a+1;
|
|
||||||
printf("a=%e\r\n", a);
|
|
||||||
float mul=256*128;
|
|
||||||
printf("mul=%e\r\n", mul);
|
|
||||||
|
|
||||||
puts("Press a key");
|
|
||||||
char chr = getchar();
|
|
||||||
printf("chr=%d\r\n", chr);
|
|
||||||
|
|
||||||
int cnt=3;
|
|
||||||
|
|
||||||
if (cnt) {
|
|
||||||
puts("IF block...");
|
|
||||||
cnt=cnt+1;
|
|
||||||
printf("cnt=%I\r\n", cnt);
|
|
||||||
}
|
|
||||||
|
|
||||||
puts("Press a key");
|
|
||||||
chr=getchar();
|
|
||||||
|
|
||||||
while (cnt) {
|
|
||||||
cnt=cnt-1;
|
|
||||||
printf("cnt=%5I, 0x%H\r\n", cnt, cnt);
|
|
||||||
}
|
|
||||||
|
|
||||||
puts("Press a key");
|
|
||||||
getchar();
|
|
||||||
|
|
||||||
if (0) {
|
|
||||||
puts("false{{{{{SKIPTHIS");
|
|
||||||
}
|
|
||||||
MAN
|
|
||||||
TEXT /MAKE/USR/SHARE/ctests/ctest
|
|
|
@ -170,7 +170,7 @@ SEEK.END .EQ $02
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
SL.. .EQ %10000000
|
SL.. .EQ %10000000
|
||||||
SL._ .EQ %01000000
|
SL._ .EQ %01000000
|
||||||
SL.NoCase .EQ %01000010
|
SL.NoCase .EQ %00000010
|
||||||
SL.EndDollar .EQ %00000001
|
SL.EndDollar .EQ %00000001
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* A2osX.SYSCALL Functions Indexes
|
* A2osX.SYSCALL Functions Indexes
|
||||||
|
@ -235,7 +235,8 @@ SYS.SetAttr .EQ $5E
|
||||||
* MOUNT
|
* MOUNT
|
||||||
SYS.Mount .EQ $60
|
SYS.Mount .EQ $60
|
||||||
SYS.UMount .EQ $62
|
SYS.UMount .EQ $62
|
||||||
* .EQ $64
|
* STKOBJ
|
||||||
|
SYS.LoadStkObj .EQ $64
|
||||||
SYS.GetStkObj .EQ $66
|
SYS.GetStkObj .EQ $66
|
||||||
* ARG
|
* ARG
|
||||||
SYS.Shift .EQ $68
|
SYS.Shift .EQ $68
|
||||||
|
@ -325,9 +326,9 @@ SYS.GetMem .EQ $F0
|
||||||
SYS.Realloc .EQ $F2
|
SYS.Realloc .EQ $F2
|
||||||
SYS.GetMemPtr .EQ $F4
|
SYS.GetMemPtr .EQ $F4
|
||||||
SYS.FreeMem .EQ $F6
|
SYS.FreeMem .EQ $F6
|
||||||
|
SYS.Free .EQ $F8
|
||||||
|
|
||||||
SYS.NewStkObj .EQ $F8
|
SYS.NewStkObj .EQ $FA
|
||||||
SYS.LoadStkObj .EQ $FA
|
|
||||||
SYS.GetStkObjPtr .EQ $FC
|
SYS.GetStkObjPtr .EQ $FC
|
||||||
SYS.FreeStkObj .EQ $FE
|
SYS.FreeStkObj .EQ $FE
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
|
|
@ -10,6 +10,8 @@ LIBBLKDEV.D2HeadSelect .EQ 14
|
||||||
LIBBLKDEV.D2TrkFmt16s .EQ 16
|
LIBBLKDEV.D2TrkFmt16s .EQ 16
|
||||||
LIBBLKDEV.D2TrkRead16s .EQ 18
|
LIBBLKDEV.D2TrkRead16s .EQ 18
|
||||||
LIBBLKDEV.D2TrkWrite16s .EQ 20
|
LIBBLKDEV.D2TrkWrite16s .EQ 20
|
||||||
|
LIBBLKDEV.D2TrkReadNIB .EQ 22
|
||||||
|
LIBBLKDEV.D2TrkWriteNIB .EQ 24
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE inc/libblkdev.i
|
SAVE inc/libblkdev.i
|
||||||
|
|
|
@ -0,0 +1,48 @@
|
||||||
|
NEW
|
||||||
|
AUTO 3,1
|
||||||
|
|
||||||
|
#define AF_LOCAL 0
|
||||||
|
#define AF_INET 2
|
||||||
|
#define AF_ETHERTALK 4
|
||||||
|
|
||||||
|
#define SOCK_RAW 0
|
||||||
|
#define SOCK_DGRAM 2
|
||||||
|
#define SOCK_SEQPACKET 4
|
||||||
|
#define SOCK_STREAM 6
|
||||||
|
|
||||||
|
#define SO_DEBUG 1
|
||||||
|
#define SO_ACCEPTCONN 2
|
||||||
|
#define SO_REUSEADDR 4
|
||||||
|
#define SO_KEEPALIVE 8
|
||||||
|
#define SO_DONTROUTE 16
|
||||||
|
#define SO_BROADCAST 32
|
||||||
|
#define SO_USELOOPBACK 64
|
||||||
|
#define SO_LINGER 128
|
||||||
|
|
||||||
|
typedef int sa_family_t;
|
||||||
|
typedef int ssize_t;
|
||||||
|
|
||||||
|
struct sockaddr
|
||||||
|
{
|
||||||
|
sa_family_t sa_family;
|
||||||
|
char sa_data[];
|
||||||
|
};
|
||||||
|
|
||||||
|
int socket(int, int, int);
|
||||||
|
int bind(int, const struct sockaddr *, socklen_t);
|
||||||
|
int connect(int, const struct sockaddr *, socklen_t);
|
||||||
|
int listen(int, int);
|
||||||
|
int accept(int, struct sockaddr *restrict, socklen_t *restrict);
|
||||||
|
int shutdown(int, int);
|
||||||
|
|
||||||
|
ssize_t recv(int, void *, size_t, int);
|
||||||
|
ssize_t send(int, const void *, size_t, int);
|
||||||
|
|
||||||
|
ssize_t recvfrom(int, void *restrict, size_t, int,struct sockaddr *restrict, socklen_t *restrict);
|
||||||
|
ssize_t sendto(int, const void *, size_t, int, const struct sockaddr *,socklen_t);
|
||||||
|
|
||||||
|
int getsockopt(int, int, int, void *restrict, socklen_t *restrict);
|
||||||
|
int setsockopt(int, int, int, const void *, socklen_t);
|
||||||
|
|
||||||
|
MAN
|
||||||
|
TEXT include/sys/socket.h
|
|
@ -2,19 +2,19 @@ NEW
|
||||||
AUTO 3,1
|
AUTO 3,1
|
||||||
|
|
||||||
struct stat {
|
struct stat {
|
||||||
mode_t st_mode
|
mode_t st_mode
|
||||||
dev_t st_dev
|
dev_t st_dev
|
||||||
uid_t st_uid
|
uid_t st_uid
|
||||||
gid_t st_gid
|
gid_t st_gid
|
||||||
ino_t st_ino
|
ino_t st_ino
|
||||||
nlink_t st_nlink
|
nlink_t st_nlink
|
||||||
off_t st_size
|
off_t st_size
|
||||||
//dev_t st_rdev
|
//dev_t st_rdev
|
||||||
time_t st_atime
|
time_t st_atime
|
||||||
time_t st_mtime
|
time_t st_mtime
|
||||||
time_t st_ctime
|
time_t st_ctime
|
||||||
blkcnt_t st_blocks
|
blkcnt_t st_blocks
|
||||||
blksize_t st_blksize
|
blksize_t st_blksize
|
||||||
|
|
||||||
short int st_P_type
|
short int st_P_type
|
||||||
int st_P_auxtype
|
int st_P_auxtype
|
||||||
|
@ -26,6 +26,6 @@ short int se_P_fsid
|
||||||
short int st_P_access
|
short int st_P_access
|
||||||
short int st_P_SPARE
|
short int st_P_SPARE
|
||||||
};
|
};
|
||||||
|
|
||||||
MAN
|
MAN
|
||||||
TEXT include/sys/stat.h
|
TEXT include/sys/stat.h
|
||||||
|
|
|
@ -3,6 +3,10 @@ NEW
|
||||||
|
|
||||||
typedef int mode_t;
|
typedef int mode_t;
|
||||||
typedef short int dev_t;
|
typedef short int dev_t;
|
||||||
|
typedef short int uid_t;
|
||||||
|
typedef short int gid_t;
|
||||||
|
typedef short int ino_t[8];
|
||||||
|
typedef int nlink_t;
|
||||||
|
typedef unsigned long int off_t;
|
||||||
MAN
|
MAN
|
||||||
TEXT include/sys/types.h
|
TEXT include/sys/types.h
|
||||||
|
|
|
@ -0,0 +1,17 @@
|
||||||
|
NEW
|
||||||
|
AUTO 3,1
|
||||||
|
|
||||||
|
int blkdevGetProDOSCatSize(int, short int, short int);
|
||||||
|
void blkdevBuildProDOSCat(int, short int, short int, char*, void*);
|
||||||
|
short int blkdevD2MotorControl(short int, short int);
|
||||||
|
short int fastcall blkdevD2Recalibrate(short int);
|
||||||
|
short int blkdevD2HeadSelect(short int, short int);
|
||||||
|
short int blkdevD2MoveHead(short int, short int, short int);
|
||||||
|
short int blkdevD2TrkFmt16s(short int, short int, short int, short int);
|
||||||
|
short int blkdevD2TrkRead16s(short int, short int, void*);
|
||||||
|
short int blkdevD2TrkWrite16s(short int, short int, short int, void*);
|
||||||
|
short int blkdevD2TrkReadNIB(short int, short int, void*);
|
||||||
|
short int blkdevD2TrkWriteNIB(short int, short int, short int, void*);
|
||||||
|
|
||||||
|
MAN
|
||||||
|
TEXT include/libblkdev.h
|
|
@ -1,23 +1,26 @@
|
||||||
NEW
|
NEW
|
||||||
AUTO 3,1
|
AUTO 3,1
|
||||||
|
|
||||||
|
struct tm {
|
||||||
|
short int tm_cent;
|
||||||
|
short int tm_year;
|
||||||
|
short int tm_mon;
|
||||||
|
short int tm_mday;
|
||||||
|
short int tm_hour;
|
||||||
|
short int tm_min;
|
||||||
|
short int tm_sec;
|
||||||
|
short int tm_wday;
|
||||||
|
};
|
||||||
|
|
||||||
|
// short int tm_yday;
|
||||||
|
// short int tm_isdst;
|
||||||
|
|
||||||
typedef unsigned long time_t;
|
typedef unsigned long time_t;
|
||||||
|
|
||||||
struct tm {
|
struct tm* time(struct tm*);
|
||||||
short int tm_cent;
|
void strftime(char*,const char*,const struct tm*);
|
||||||
short int tm_year;
|
void ptime2time(time_t*,const struct tm*);
|
||||||
short int tm_mon;
|
void ctime2time(time_t*,const struct tm*);
|
||||||
short int tm_mday;
|
|
||||||
short int tm_hour;
|
|
||||||
short int tm_min;
|
|
||||||
short int tm_sec;
|
|
||||||
short int tm_wday;
|
|
||||||
// short int tm_yday;
|
|
||||||
// short int tm_isdst;
|
|
||||||
};
|
|
||||||
|
|
||||||
time_t time(time_t *);
|
|
||||||
|
|
||||||
|
|
||||||
MAN
|
MAN
|
||||||
TEXT include/time.h
|
TEXT include/time.h
|
||||||
|
|
|
@ -0,0 +1,36 @@
|
||||||
|
NEW
|
||||||
|
AUTO 3,1
|
||||||
|
.LIST OFF
|
||||||
|
.OR $0
|
||||||
|
.TF lib/libblkdev.o
|
||||||
|
*--------------------------------------
|
||||||
|
.INB inc/libblkdev.i
|
||||||
|
*--------------------------------------
|
||||||
|
.PS "blkdevGetProDOSCatSize"
|
||||||
|
.DA #LIBBLKDEV.GetProDOSCatSize
|
||||||
|
.PS "blkdevBuildProDOSCat"
|
||||||
|
.DA #LIBBLKDEV.BuildProDOSCat
|
||||||
|
|
||||||
|
.PS "blkdevD2MotorControl"
|
||||||
|
.DA #LIBBLKDEV.D2MotorControl
|
||||||
|
.PS "blkdevD2Recalibrate"
|
||||||
|
.DA #LIBBLKDEV.D2Recalibrate
|
||||||
|
.PS "blkdevD2MoveHead"
|
||||||
|
.DA #LIBBLKDEV.D2MoveHead
|
||||||
|
.PS "blkdevD2HeadSelect"
|
||||||
|
.DA #LIBBLKDEV.D2HeadSelect
|
||||||
|
.PS "blkdevD2TrkFmt16s"
|
||||||
|
.DA #LIBBLKDEV.D2TrkFmt16s
|
||||||
|
.PS "blkdevD2TrkRead16s"
|
||||||
|
.DA #LIBBLKDEV.D2TrkRead16s
|
||||||
|
.PS "blkdevD2TrkWrite16s"
|
||||||
|
.DA #LIBBLKDEV.D2TrkWrite16s
|
||||||
|
.PS "blkdevD2TrkReadNIB"
|
||||||
|
.DA #LIBBLKDEV.D2TrkReadNIB
|
||||||
|
.PS "blkdevD2TrkWriteNIB"
|
||||||
|
.DA #LIBBLKDEV.D2TrkWriteNIB
|
||||||
|
.DA #0
|
||||||
|
*--------------------------------------
|
||||||
|
MAN
|
||||||
|
SAVE usr/src/lib/libblkdev.o.s
|
||||||
|
ASM
|
|
@ -2,13 +2,13 @@ NEW
|
||||||
AUTO 3,1
|
AUTO 3,1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
FON.Init >LDYA L.SYSX7
|
FON.Init >LDYA L.SYSX7
|
||||||
>SYSCALL2 LoadStkObj
|
jsr .1
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
stx hSYSFON
|
stx hSYSFON
|
||||||
|
|
||||||
>LDYA L.SYSX7B
|
>LDYA L.SYSX7B
|
||||||
>SYSCALL2 LoadStkObj
|
jsr .1
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
stx hSYSFONB
|
stx hSYSFONB
|
||||||
|
@ -25,6 +25,13 @@ FON.Init >LDYA L.SYSX7
|
||||||
sta SYSFON.Hp2
|
sta SYSFON.Hp2
|
||||||
|
|
||||||
.9 rts
|
.9 rts
|
||||||
|
|
||||||
|
.1 >PUSHYA
|
||||||
|
>PUSHBI O.RDONLY
|
||||||
|
>PUSHBI S.FI.T.FON
|
||||||
|
>PUSHWZ Aux type
|
||||||
|
>SYSCALL LoadStkObj
|
||||||
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
FON.GetTextSize >STYA CB.CACHE+S.CB.TxtPtr
|
FON.GetTextSize >STYA CB.CACHE+S.CB.TxtPtr
|
||||||
stx CB.CACHE+S.CB.hFont
|
stx CB.CACHE+S.CB.hFont
|
||||||
|
|
|
@ -7,7 +7,7 @@ NEW
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.INB inc/macros.i
|
.INB inc/macros.i
|
||||||
.INB inc/a2osx.i
|
.INB inc/a2osx.i
|
||||||
.INB inc/kernel.i
|
.INB inc/mli.i
|
||||||
.INB inc/gfx.i
|
.INB inc/gfx.i
|
||||||
.INB inc/libgui.i
|
.INB inc/libgui.i
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
|
|
@ -4,48 +4,47 @@ NEW
|
||||||
.OR $0
|
.OR $0
|
||||||
.TF lib/libtui.o
|
.TF lib/libtui.o
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.INB inc/macros.i
|
|
||||||
.INB inc/libtui.i
|
.INB inc/libtui.i
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
>PSTR "tuiInit"
|
.PS "tuiInit"
|
||||||
.DA #LIBTUI.Init
|
.DA #LIBTUI.Init
|
||||||
>PSTR "tuiClose"
|
.PS "tuiClose"
|
||||||
.DA #LIBTUI.Close
|
.DA #LIBTUI.Close
|
||||||
|
|
||||||
>PSTR "tuiNewScrn"
|
.PS "tuiNewScrn"
|
||||||
.DA #LIBTUI.NewScrn
|
.DA #LIBTUI.NewScrn
|
||||||
>PSTR "tuiNewDlg"
|
.PS "tuiNewDlg"
|
||||||
.DA #LIBTUI.NewDlg
|
.DA #LIBTUI.NewDlg
|
||||||
>PSTR "tuiNewLabel"
|
.PS "tuiNewLabel"
|
||||||
.DA #LIBTUI.NewLabel
|
.DA #LIBTUI.NewLabel
|
||||||
>PSTR "tuiNewTLine"
|
.PS "tuiNewTLine"
|
||||||
.DA #LIBTUI.NewTLine
|
.DA #LIBTUI.NewTLine
|
||||||
>PSTR "tuiNewTBox"
|
.PS "tuiNewTBox"
|
||||||
.DA #LIBTUI.NewTBox
|
.DA #LIBTUI.NewTBox
|
||||||
>PSTR "tuiNewLBox"
|
.PS "tuiNewLBox"
|
||||||
.DA #LIBTUI.NewLBox
|
.DA #LIBTUI.NewLBox
|
||||||
>PSTR "tuiNewCBox"
|
.PS "tuiNewCBox"
|
||||||
.DA #LIBTUI.NewCBox
|
.DA #LIBTUI.NewCBox
|
||||||
>PSTR "tuiNewBut"
|
.PS "tuiNewBut"
|
||||||
.DA #LIBTUI.NewBut
|
.DA #LIBTUI.NewBut
|
||||||
>PSTR "tuiNewRadio"
|
.PS "tuiNewRadio"
|
||||||
.DA #LIBTUI.NewRadio
|
.DA #LIBTUI.NewRadio
|
||||||
|
|
||||||
>PSTR "tuiExec"
|
.PS "tuiExec"
|
||||||
.DA #LIBTUI.Exec
|
.DA #LIBTUI.Exec
|
||||||
>PSTR "tuiDestroy"
|
.PS "tuiDestroy"
|
||||||
.DA #LIBTUI.Destroy
|
.DA #LIBTUI.Destroy
|
||||||
>PSTR "tuiRun"
|
.PS "tuiRun"
|
||||||
.DA #LIBTUI.Run
|
.DA #LIBTUI.Run
|
||||||
>PSTR "tuiDraw"
|
.PS "tuiDraw"
|
||||||
.DA #LIBTUI.Draw
|
.DA #LIBTUI.Draw
|
||||||
>PSTR "tuiGetProp"
|
.PS "tuiGetProp"
|
||||||
.DA #LIBTUI.GetProp
|
.DA #LIBTUI.GetProp
|
||||||
>PSTR "tuiSetProp"
|
.PS "tuiSetProp"
|
||||||
.DA #LIBTUI.SetProp
|
.DA #LIBTUI.SetProp
|
||||||
>PSTR "tuiActivate"
|
.PS "tuiActivate"
|
||||||
.DA #LIBTUI.Activate
|
.DA #LIBTUI.Activate
|
||||||
>PSTR "tuiDeactivate"
|
.PS "tuiDeactivate"
|
||||||
.DA #LIBTUI.Deactivate
|
.DA #LIBTUI.Deactivate
|
||||||
.DA #0
|
.DA #0
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
|
|
@ -225,8 +225,8 @@ LibCnt .BS 1
|
||||||
hLineBuf .BS 1
|
hLineBuf .BS 1
|
||||||
LineBuf .BS 2
|
LineBuf .BS 2
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
ESC.In .AS "DBAC"
|
ESC.In .AS "DABC"
|
||||||
ESC.Out .DA #C.BS,#C.LF,#C.VT,#C.FS
|
ESC.Out .DA #C.BS,#C.VT,#C.LF,#C.FS
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
FMT.ESCCSI.R .AZ "%d;%d"
|
FMT.ESCCSI.R .AZ "%d;%d"
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -242,45 +242,26 @@ OBJ.COLORS .DA #93,#44 SCRN
|
||||||
.DA #92,#100 BUT
|
.DA #92,#100 BUT
|
||||||
.DA #93,#0 RADIO
|
.DA #93,#0 RADIO
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
SEQ.INIT .DA #C.ESC
|
SEQ.INIT .CS "\ec\e[999;999H" Set Cursor Pos to 999,999
|
||||||
.AS "c" FF
|
.CS "\e[6n" then query Cursor Pos
|
||||||
.DA #C.ESC
|
.CS "\e(B" font select
|
||||||
.AS "[999;999H" Set Cursor Pos to 999,999
|
.CS "\e)0" font select
|
||||||
.DA #C.ESC
|
.CS "\e[?7l" Disable Line Wrap
|
||||||
.AS "[6n" then query Cursor Pos
|
.CZ "\e[?25l" Hide Cursor
|
||||||
.DA #C.ESC
|
|
||||||
.AS "(B" font select
|
|
||||||
.DA #C.ESC
|
|
||||||
.AS ")0" font select
|
|
||||||
.DA #C.ESC
|
|
||||||
.AS "[?7l" Disable Line Wrap
|
|
||||||
.DA #C.ESC
|
|
||||||
.AS "[?25l" Hide Cursor
|
|
||||||
.DA #0
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
SEQ.GOTOXY .AZ "\e[%d;%dH"
|
SEQ.GOTOXY .CZ "\e[%d;%dH"
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
SEQ.COLOR .AZ "\e[%d;%dm"
|
SEQ.COLOR .CZ "\e[%d;%dm"
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
SEQS .EQ *
|
SEQS .EQ *
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
SEQ.CURON .DA #C.ESC
|
SEQ.CURON .CZ "\e[?25h" Show Cursor
|
||||||
.AS "[?25h" Show Cursor
|
SEQ.CUROFF .CZ "\e[?25l" Hide Cursor
|
||||||
.DA #0
|
|
||||||
SEQ.CUROFF .DA #C.ESC
|
|
||||||
.AS "[?25l" Hide Cursor
|
|
||||||
.DA #0
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
SEQ.BAR .DA #C.ESC
|
SEQ.BAR .CS "\e[1m" BOLD
|
||||||
.AS "[1m" BOLD
|
.CS "\e[7m" INVERSE
|
||||||
.DA #C.ESC
|
.CZ "\e[37;40m"
|
||||||
.AS "[7m" INVERSE
|
SEQ.BAREND .CZ "\e[0m"
|
||||||
.DA #C.ESC
|
|
||||||
.AS "[37;40m"
|
|
||||||
.DA #0
|
|
||||||
SEQ.BAREND .DA #C.ESC
|
|
||||||
.AS "[0m"
|
|
||||||
.DA #0
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
SEQ.BORDERTL .DA #C.SO,#'l'
|
SEQ.BORDERTL .DA #C.SO,#'l'
|
||||||
.DA #0
|
.DA #0
|
||||||
|
@ -294,22 +275,15 @@ SEQ.BORDERBR .DA #C.SO,#'j',#C.SI
|
||||||
* .DA #0
|
* .DA #0
|
||||||
SEQ.BORDERV .DA #C.SO,#'x',#C.SI
|
SEQ.BORDERV .DA #C.SO,#'x',#C.SI
|
||||||
.DA #0
|
.DA #0
|
||||||
SEQ.INVERSE .DA #C.ESC
|
SEQ.INVERSE .CZ "\e[7m"
|
||||||
.AS "[7m"
|
SEQ.NORMAL .CZ "\e[0m"
|
||||||
.DA #0
|
|
||||||
SEQ.NORMAL .DA #C.ESC
|
|
||||||
.AS "[0m"
|
|
||||||
.DA #0
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
*SEQ.SCROLLCURUP .AS "\e[?7l\e[%d;%dr"
|
*SEQ.SCROLLCURUP .CS "\e[?7l\e[%d;%dr"
|
||||||
*SEQ.SCROLLUP .AZ "\eD"
|
*SEQ.SCROLLUP .CZ "\eD"
|
||||||
*SEQ.SCROLLCURDN .AS "\e[?7l\e[%d;%dr"
|
*SEQ.SCROLLCURDN .CS "\e[?7l\e[%d;%dr"
|
||||||
*SEQ.SCROLLDN .AZ "\eM"
|
*SEQ.SCROLLDN .CZ "\eM"
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
SEQ.CLOSE .DA #C.ESC
|
SEQ.CLOSE .CZ "\ec\e[?7h" Enable Line Wrap
|
||||||
.AS "c"
|
|
||||||
.DA #C.ESC
|
|
||||||
.AZ "[?7h" Enable Line Wrap
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE usr/src/lib/libtui.s
|
SAVE usr/src/lib/libtui.s
|
||||||
|
|
|
@ -43,9 +43,7 @@ bin/ipconfig
|
||||||
bin/irc
|
bin/irc
|
||||||
bin/kconfig
|
bin/kconfig
|
||||||
bin/kill
|
bin/kill
|
||||||
bin/l
|
|
||||||
bin/lc
|
bin/lc
|
||||||
bin/lm
|
|
||||||
bin/ls
|
bin/ls
|
||||||
bin/lsdev
|
bin/lsdev
|
||||||
bin/lsof
|
bin/lsof
|
||||||
|
@ -153,12 +151,16 @@ inc/xy.mouse.i
|
||||||
inc/zp.i
|
inc/zp.i
|
||||||
include/md5.h
|
include/md5.h
|
||||||
include/math.h
|
include/math.h
|
||||||
|
include/time.h
|
||||||
include/stdio.h
|
include/stdio.h
|
||||||
include/stdlib.h
|
include/stdlib.h
|
||||||
include/string.h
|
include/string.h
|
||||||
include/unistd.h
|
include/unistd.h
|
||||||
|
include/libblkdev.h
|
||||||
include/libtui.h
|
include/libtui.h
|
||||||
include/sys/types.h
|
include/sys/types.h
|
||||||
|
include/sys/stat.h
|
||||||
|
include/sys/socket.h
|
||||||
lib/libblkdev
|
lib/libblkdev
|
||||||
lib/libcifs
|
lib/libcifs
|
||||||
lib/libcrypt
|
lib/libcrypt
|
||||||
|
@ -168,6 +170,7 @@ lib/libpak
|
||||||
lib/libtcpip
|
lib/libtcpip
|
||||||
lib/libtui
|
lib/libtui
|
||||||
lib/libtui.o
|
lib/libtui.o
|
||||||
|
lib/libblkdev.o
|
||||||
root/profile
|
root/profile
|
||||||
root/netd
|
root/netd
|
||||||
root/netd2
|
root/netd2
|
||||||
|
|
|
@ -63,13 +63,14 @@ CS.INIT
|
||||||
|
|
||||||
ldy #1
|
ldy #1
|
||||||
lda (ZPPtr1),y
|
lda (ZPPtr1),y
|
||||||
|
beq .99
|
||||||
|
|
||||||
ldy #OptionVars-OptionList-1
|
.20 ldx #OptionVars-OptionList-1
|
||||||
|
|
||||||
.2 cmp OptionList,y
|
.2 cmp OptionList,x
|
||||||
beq .3
|
beq .3
|
||||||
|
|
||||||
dey
|
dex
|
||||||
bpl .2
|
bpl .2
|
||||||
|
|
||||||
.99 >PUSHW L.MSG.USAGE
|
.99 >PUSHW L.MSG.USAGE
|
||||||
|
@ -79,9 +80,15 @@ CS.INIT
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.3 ldx OptionVars,y
|
.3 lda OptionVars,x
|
||||||
|
tax
|
||||||
* sec
|
* sec
|
||||||
ror $0,x
|
ror $0,x
|
||||||
|
|
||||||
|
iny
|
||||||
|
lda (ZPPtr1),y
|
||||||
|
bne .20
|
||||||
|
|
||||||
bra .1
|
bra .1
|
||||||
|
|
||||||
.4 >LDA.G index
|
.4 >LDA.G index
|
||||||
|
|
|
@ -853,7 +853,7 @@ DIB .DO SSCIRQ=1
|
||||||
.DA #S.DIB.S.WRITE+S.DIB.S.READ
|
.DA #S.DIB.S.WRITE+S.DIB.S.READ
|
||||||
.FIN
|
.FIN
|
||||||
.DA #0,#0,#0
|
.DA #0,#0,#0
|
||||||
>PSTR "Serial Card/Port"
|
.PS "Serial Card/Port"
|
||||||
.DA #S.DIB.T.CHAR
|
.DA #S.DIB.T.CHAR
|
||||||
.DA #0
|
.DA #0
|
||||||
.DA K.VER
|
.DA K.VER
|
||||||
|
|
|
@ -1213,22 +1213,28 @@ PwdMgrInit >LDYAI MSG.PWD
|
||||||
>SYSCALL2 puts
|
>SYSCALL2 puts
|
||||||
|
|
||||||
>LDYAI PWD.ETCPASSWD
|
>LDYAI PWD.ETCPASSWD
|
||||||
>SYSCALL2 LoadStkObj
|
jsr .1
|
||||||
bcs .1
|
bcs .9
|
||||||
|
|
||||||
stx PWD.hUsrDB
|
stx PWD.hUsrDB
|
||||||
>STYA PWD.UsrDBSize
|
>STYA PWD.UsrDBSize
|
||||||
|
|
||||||
>LDYAI PWD.ETCGROUP
|
>LDYAI PWD.ETCGROUP
|
||||||
>SYSCALL2 LoadStkObj
|
jsr .1
|
||||||
bcs .1
|
bcs .9
|
||||||
|
|
||||||
stx PWD.hGrpDB
|
stx PWD.hGrpDB
|
||||||
>STYA PWD.GrpDBSize
|
>STYA PWD.GrpDBSize
|
||||||
|
|
||||||
.1
|
|
||||||
* clc
|
* clc
|
||||||
.9 rts
|
.9 rts
|
||||||
|
|
||||||
|
.1 >PUSHYA
|
||||||
|
>PUSHBI O.RDONLY
|
||||||
|
>PUSHBI S.FI.T.TXT
|
||||||
|
>PUSHWZ Auxtype=0000
|
||||||
|
>SYSCALL2 LoadStkObj
|
||||||
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* Modified CHARGET/CHARGOT for ROM CALL
|
* Modified CHARGET/CHARGOT for ROM CALL
|
||||||
* CHRGET .EQ $B1 - C8
|
* CHRGET .EQ $B1 - C8
|
||||||
|
|
|
@ -46,7 +46,7 @@ K.SYSCALL .DA 0 $00 : STAT
|
||||||
.DA K.PrintF
|
.DA K.PrintF
|
||||||
.DA K.FPrintF
|
.DA K.FPrintF
|
||||||
.DA K.SPrintF
|
.DA K.SPrintF
|
||||||
.DA K.ScanF
|
.DA K.ScanF
|
||||||
.DA K.FScanF
|
.DA K.FScanF
|
||||||
.DA K.SScanF
|
.DA K.SScanF
|
||||||
|
|
||||||
|
@ -61,9 +61,9 @@ K.SYSCALL .DA 0 $00 : STAT
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* Bank 2
|
* Bank 2
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.DA K.Mount $60
|
.DA K.Mount $60 : MOUNT
|
||||||
.DA K.UMount
|
.DA K.UMount
|
||||||
.DA 0
|
.DA K.LoadStkObj $64 : STKOBJ
|
||||||
.DA K.GetStkObj
|
.DA K.GetStkObj
|
||||||
.DA K.Shift $68 : ARG
|
.DA K.Shift $68 : ARG
|
||||||
.DA K.ArgV
|
.DA K.ArgV
|
||||||
|
@ -113,9 +113,9 @@ K.SYSCALL .DA 0 $00 : STAT
|
||||||
.DA K.StrVGet
|
.DA K.StrVGet
|
||||||
.DA K.StrVFree
|
.DA K.StrVFree
|
||||||
.DA K.PutEnv $B8 : ENV
|
.DA K.PutEnv $B8 : ENV
|
||||||
.DA K.SetEnv
|
.DA K.SetEnv
|
||||||
.DA K.GetEnv
|
.DA K.GetEnv
|
||||||
.DA K.UnsetEnv
|
.DA K.UnsetEnv
|
||||||
|
|
||||||
.DA K.Time $C0 : TIME
|
.DA K.Time $C0 : TIME
|
||||||
.DA K.StrFTime
|
.DA K.StrFTime
|
||||||
|
@ -151,9 +151,9 @@ K.SYSCALL .DA 0 $00 : STAT
|
||||||
.DA K.Realloc
|
.DA K.Realloc
|
||||||
.DA K.GetMemPtr
|
.DA K.GetMemPtr
|
||||||
.DA K.FreeMem
|
.DA K.FreeMem
|
||||||
|
.DA K.Free
|
||||||
|
|
||||||
.DA K.GetMem K.NewStkObj
|
.DA K.GetMem K.NewStkObj
|
||||||
.DA K.LoadStkObj
|
|
||||||
.DA K.GetMemPtr K.GetStkObjPtr
|
.DA K.GetMemPtr K.GetStkObjPtr
|
||||||
.DA K.FreeMem K.FreeStkObj
|
.DA K.FreeMem K.FreeStkObj
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -194,15 +194,15 @@ K.SYSCALL.BANK .DA #RRAMWRAMBNK1 $00
|
||||||
.DA #RRAMWRAMBNK1
|
.DA #RRAMWRAMBNK1
|
||||||
.DA #0
|
.DA #0
|
||||||
.DA #RRAMWRAMBNK1
|
.DA #RRAMWRAMBNK1
|
||||||
.DA #0
|
.DA #0
|
||||||
|
|
||||||
.DA #RRAMWRAMBNK1 $20
|
.DA #RRAMWRAMBNK1 $20 : STDIO
|
||||||
.DA #0
|
.DA #0
|
||||||
.DA #RRAMWRAMBNK1
|
.DA #RRAMWRAMBNK1
|
||||||
.DA #0
|
.DA #0
|
||||||
.DA #RRAMWRAMBNK1
|
.DA #RRAMWRAMBNK1
|
||||||
.DA #0
|
.DA #0
|
||||||
.DA #RRAMWRAMBNK1
|
.DA #RRAMWRAMBNK1
|
||||||
.DA #0
|
.DA #0
|
||||||
.DA #RRAMWRAMBNK1
|
.DA #RRAMWRAMBNK1
|
||||||
.DA #0
|
.DA #0
|
||||||
|
@ -219,7 +219,7 @@ K.SYSCALL.BANK .DA #RRAMWRAMBNK1 $00
|
||||||
.DA #0
|
.DA #0
|
||||||
.DA #RRAMWRAMBNK1
|
.DA #RRAMWRAMBNK1
|
||||||
.DA #0
|
.DA #0
|
||||||
.DA #RRAMWRAMBNK1
|
.DA #RRAMWRAMBNK1
|
||||||
.DA #0
|
.DA #0
|
||||||
.DA #RRAMWRAMBNK1
|
.DA #RRAMWRAMBNK1
|
||||||
.DA #0
|
.DA #0
|
||||||
|
@ -236,7 +236,7 @@ K.SYSCALL.BANK .DA #RRAMWRAMBNK1 $00
|
||||||
.DA #0
|
.DA #0
|
||||||
.DA #RRAMWRAMBNK1
|
.DA #RRAMWRAMBNK1
|
||||||
.DA #0
|
.DA #0
|
||||||
.DA #RRAMWRAMBNK1
|
.DA #RRAMWRAMBNK1
|
||||||
.DA #0
|
.DA #0
|
||||||
.DA #RRAMWRAMBNK1
|
.DA #RRAMWRAMBNK1
|
||||||
.DA #0
|
.DA #0
|
||||||
|
@ -253,10 +253,10 @@ K.SYSCALL.BANK .DA #RRAMWRAMBNK1 $00
|
||||||
.DA #0
|
.DA #0
|
||||||
.DA #RRAMWRAMBNK1
|
.DA #RRAMWRAMBNK1
|
||||||
.DA #0
|
.DA #0
|
||||||
.DA #RRAMWRAMBNK1
|
|
||||||
.DA #0
|
|
||||||
.DA #RRAMWRAMBNK1
|
.DA #RRAMWRAMBNK1
|
||||||
.DA #0
|
.DA #0
|
||||||
|
.DA #RRAMWRAMBNK1 $58 : PRODOS
|
||||||
|
.DA #0
|
||||||
.DA #RRAMWRAMBNK1
|
.DA #RRAMWRAMBNK1
|
||||||
.DA #0
|
.DA #0
|
||||||
.DA #RRAMWRAMBNK1
|
.DA #RRAMWRAMBNK1
|
||||||
|
@ -268,9 +268,9 @@ K.SYSCALL.BANK .DA #RRAMWRAMBNK1 $00
|
||||||
.DA #0
|
.DA #0
|
||||||
.DA #RRAMWRAMBNK2
|
.DA #RRAMWRAMBNK2
|
||||||
.DA #0
|
.DA #0
|
||||||
.DA #RRAMWRAMBNK2
|
.DA #RRAMWRAMBNK2 $64 : STKOBJ
|
||||||
.DA #0
|
.DA #0
|
||||||
.DA #RRAMWRAMBNK2
|
.DA #RRAMWRAMBNK2
|
||||||
.DA #0
|
.DA #0
|
||||||
.DA #RRAMWRAMBNK2 $68 : ARG
|
.DA #RRAMWRAMBNK2 $68 : ARG
|
||||||
.DA #0
|
.DA #0
|
||||||
|
@ -426,9 +426,9 @@ K.SYSCALL.BANK .DA #RRAMWRAMBNK1 $00
|
||||||
.DA #0
|
.DA #0
|
||||||
.DA #0
|
.DA #0
|
||||||
.DA #0
|
.DA #0
|
||||||
.DA #$C0 NewStkObj
|
|
||||||
.DA #0
|
.DA #0
|
||||||
.DA #RRAMWRAMBNK2 LoadStkObj
|
.DA #0
|
||||||
|
.DA #$C0 NewStkObj
|
||||||
.DA #0
|
.DA #0
|
||||||
.DA #$C0 GetStkObjPtr
|
.DA #$C0 GetStkObjPtr
|
||||||
.DA #0
|
.DA #0
|
||||||
|
@ -494,7 +494,7 @@ K.SYSCALL.JMPX2 clc
|
||||||
bcc K.SYSCALL.JMPX
|
bcc K.SYSCALL.JMPX
|
||||||
|
|
||||||
>PULLA
|
>PULLA
|
||||||
|
|
||||||
K.SYSCALL.JMPX sta SETREADAUX
|
K.SYSCALL.JMPX sta SETREADAUX
|
||||||
sta SETWRITEAUX
|
sta SETWRITEAUX
|
||||||
jsr JMPX
|
jsr JMPX
|
||||||
|
|
|
@ -327,6 +327,35 @@ MEM.Init0 phx
|
||||||
.13 plx
|
.13 plx
|
||||||
rts
|
rts
|
||||||
*/--------------------------------------
|
*/--------------------------------------
|
||||||
|
* # Free
|
||||||
|
* Y,A = Ptr To Free
|
||||||
|
* ## RETURN VALUE
|
||||||
|
* none.
|
||||||
|
* (X unmodified)
|
||||||
|
*\--------------------------------------
|
||||||
|
K.Free >STYA ZPMemMgrTmp1
|
||||||
|
|
||||||
|
ldx Mem.LastSlot
|
||||||
|
|
||||||
|
.1 txa
|
||||||
|
jsr MEM.GetMemByID
|
||||||
|
|
||||||
|
ldy #S.MEM.PTR
|
||||||
|
lda (ZPMemMgrSPtr),y
|
||||||
|
cmp ZPMemMgrTmp1
|
||||||
|
bne .2
|
||||||
|
|
||||||
|
iny
|
||||||
|
lda (ZPMemMgrSPtr),y
|
||||||
|
cmp ZPMemMgrTmp1+1
|
||||||
|
beq MEM.FreeMem
|
||||||
|
|
||||||
|
.2 dex
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
sec
|
||||||
|
rts
|
||||||
|
*/--------------------------------------
|
||||||
* # FreeMem
|
* # FreeMem
|
||||||
* A = hMem To Free
|
* A = hMem To Free
|
||||||
* ## RETURN VALUE
|
* ## RETURN VALUE
|
||||||
|
@ -355,14 +384,15 @@ K.FreeMem tay
|
||||||
beq K.FreeMem.ERR Slot=0, reserved by Kernel
|
beq K.FreeMem.ERR Slot=0, reserved by Kernel
|
||||||
|
|
||||||
cmp Mem.LastSlot
|
cmp Mem.LastSlot
|
||||||
bcc .10
|
bcc .1
|
||||||
|
|
||||||
bne K.FreeMem.ERR
|
bne K.FreeMem.ERR
|
||||||
|
|
||||||
.10 jsr MEM.GetMemByID X,Y unmodified
|
.1 jsr MEM.GetMemByID X,Y unmodified
|
||||||
lda (ZPMemMgrSPtr) In use ?
|
*--------------------------------------
|
||||||
|
MEM.FreeMem lda (ZPMemMgrSPtr) In use ?
|
||||||
bpl K.FreeMem.ERR
|
bpl K.FreeMem.ERR
|
||||||
|
|
||||||
ldy #S.MEM.REFCNT
|
ldy #S.MEM.REFCNT
|
||||||
lda (ZPMemMgrSPtr),y
|
lda (ZPMemMgrSPtr),y
|
||||||
dec only one left ?
|
dec only one left ?
|
||||||
|
|
|
@ -54,32 +54,6 @@ K.UMount tax
|
||||||
.9 lda #E.INVH
|
.9 lda #E.INVH
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*/--------------------------------------
|
|
||||||
* # GetStkObj
|
|
||||||
* ## C
|
|
||||||
* `int *ptr getstkobj (short int hStkObj);`
|
|
||||||
* ## ASM
|
|
||||||
* `lda hStkObj`
|
|
||||||
* `>SYSCALL GetStkObj`
|
|
||||||
* ## RETURN VALUE
|
|
||||||
* CC : success
|
|
||||||
* X = hMem
|
|
||||||
* Y,A = ptr
|
|
||||||
* CS : error
|
|
||||||
* A = EC
|
|
||||||
*\--------------------------------------
|
|
||||||
K.GetStkObj tax hMem for CopyToMain
|
|
||||||
|
|
||||||
jsr MEM.GetMemByID
|
|
||||||
|
|
||||||
ldy #S.MEM.LEN
|
|
||||||
lda (ZPMemMgrSPtr),y
|
|
||||||
pha
|
|
||||||
iny
|
|
||||||
lda (ZPMemMgrSPtr),y
|
|
||||||
ply YA = Len
|
|
||||||
|
|
||||||
jmp MEM.CopyToMain
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE usr/src/sys/kernel.s.mount
|
SAVE usr/src/sys/kernel.s.mount
|
||||||
|
|
|
@ -777,46 +777,6 @@ K.Kill.2 ldy #S.PS.hSession
|
||||||
.10 .DA #S.PS.hSS,#S.PS.hDS,#S.PS.hCS
|
.10 .DA #S.PS.hSS,#S.PS.hDS,#S.PS.hCS
|
||||||
.DA #S.PS.hARGV,#S.PS.hCWD
|
.DA #S.PS.hARGV,#S.PS.hCWD
|
||||||
*/--------------------------------------
|
*/--------------------------------------
|
||||||
* # LoadStkObj
|
|
||||||
* Load a file in AUX memory (Stock Objects)
|
|
||||||
* PUSHW = PATH (Handled by....
|
|
||||||
* PUSHB = MODE ...
|
|
||||||
* PUSHB = TYPE ...
|
|
||||||
* PUSHW = AUXTYPE ...FOpen)
|
|
||||||
* ## RETURN VALUE
|
|
||||||
* Y,A = File Length
|
|
||||||
* X = hMem of Loaded Object in AUX mem
|
|
||||||
*\--------------------------------------
|
|
||||||
K.LoadStkObj >PUSHYA
|
|
||||||
>PUSHBI O.RDONLY
|
|
||||||
>PUSHBI 0 any type...
|
|
||||||
|
|
||||||
jsr K.LoadFile.1 ... ending \0
|
|
||||||
bcs .99
|
|
||||||
|
|
||||||
stx .90+1
|
|
||||||
sty .81+1 Save File Len
|
|
||||||
sta .82+1
|
|
||||||
|
|
||||||
iny
|
|
||||||
bne .1
|
|
||||||
inc +1 for ending 0
|
|
||||||
|
|
||||||
.1 jsr MEM.MoveToAux X = AUX hMem
|
|
||||||
bcs .9
|
|
||||||
|
|
||||||
.81 ldy #$ff and file len in Y,A
|
|
||||||
.82 lda #$ff
|
|
||||||
* clc
|
|
||||||
rts
|
|
||||||
|
|
||||||
.9 pha
|
|
||||||
.90 lda #$ff SELF MODIFIED
|
|
||||||
jsr K.freemem
|
|
||||||
pla
|
|
||||||
sec
|
|
||||||
.99 rts
|
|
||||||
*/--------------------------------------
|
|
||||||
* # LoadTxtFile
|
* # LoadTxtFile
|
||||||
* Load TXT a file in memory (with ending 0)
|
* Load TXT a file in memory (with ending 0)
|
||||||
* ## C
|
* ## C
|
||||||
|
@ -832,10 +792,9 @@ K.LoadStkObj >PUSHYA
|
||||||
K.LoadTxtFile >PUSHYA
|
K.LoadTxtFile >PUSHYA
|
||||||
>PUSHBI O.RDONLY
|
>PUSHBI O.RDONLY
|
||||||
>PUSHBI S.FI.T.TXT
|
>PUSHBI S.FI.T.TXT
|
||||||
|
>PUSHWZ Aux type
|
||||||
K.LoadFile.1 >PUSHWZ Aux type
|
|
||||||
|
|
||||||
sec
|
K.LoadFile0 sec
|
||||||
.HS 90 BCC
|
.HS 90 BCC
|
||||||
*/--------------------------------------
|
*/--------------------------------------
|
||||||
* # LoadFile
|
* # LoadFile
|
||||||
|
|
|
@ -20,7 +20,7 @@ K.SListGetData >PULLW ZPSListDataOfs
|
||||||
* `>PUSHB hSList`
|
* `>PUSHB hSList`
|
||||||
* `>PUSHW KeyID`
|
* `>PUSHW KeyID`
|
||||||
* `>PUSHW DataPtr`
|
* `>PUSHW DataPtr`
|
||||||
* `>PUSHW DataLen`
|
* `>PUSHW DataLen` (Data bytes to add, 0 if String mode)
|
||||||
* `>SYSCALL SListAddData`
|
* `>SYSCALL SListAddData`
|
||||||
* ## RETURN VALUE
|
* ## RETURN VALUE
|
||||||
*\--------------------------------------
|
*\--------------------------------------
|
||||||
|
@ -31,7 +31,7 @@ K.SListAddData
|
||||||
* `>PUSHB hSList`
|
* `>PUSHB hSList`
|
||||||
* `>PUSHW KeyID`
|
* `>PUSHW KeyID`
|
||||||
* `>PUSHW DataPtr`
|
* `>PUSHW DataPtr`
|
||||||
* `>PUSHW DataLen`
|
* `>PUSHW DataLen` (Data bytes to set, 0 if String mode)
|
||||||
* `>SYSCALL SListSetData`
|
* `>SYSCALL SListSetData`
|
||||||
* ## RETURN VALUE
|
* ## RETURN VALUE
|
||||||
*\--------------------------------------
|
*\--------------------------------------
|
||||||
|
|
|
@ -97,6 +97,7 @@ SLISTX.GetData jsr SLIST.Select
|
||||||
.5 jsr SHARED.FORPNTpn
|
.5 jsr SHARED.FORPNTpn
|
||||||
inc ZPSListDataLen
|
inc ZPSListDataLen
|
||||||
bne .2
|
bne .2
|
||||||
|
|
||||||
inc ZPSListDataLen+1
|
inc ZPSListDataLen+1
|
||||||
bra .2
|
bra .2
|
||||||
|
|
||||||
|
@ -120,6 +121,8 @@ SLISTX.AddData jsr SLIST.Select
|
||||||
|
|
||||||
jsr SLIST.SkipKey
|
jsr SLIST.SkipKey
|
||||||
|
|
||||||
|
jsr SLISTX.CheckLen
|
||||||
|
|
||||||
ldy iByte
|
ldy iByte
|
||||||
lda (DBlkPtr),y
|
lda (DBlkPtr),y
|
||||||
pha
|
pha
|
||||||
|
@ -152,6 +155,7 @@ SLISTX.AddData jsr SLIST.Select
|
||||||
|
|
||||||
.1 inc ZPSListDataLen
|
.1 inc ZPSListDataLen
|
||||||
bne .2
|
bne .2
|
||||||
|
|
||||||
inc ZPSListDataLen+1
|
inc ZPSListDataLen+1
|
||||||
beq .8
|
beq .8
|
||||||
|
|
||||||
|
@ -172,6 +176,9 @@ SLISTX.AddData jsr SLIST.Select
|
||||||
SLISTX.SetData jsr SLIST.Select
|
SLISTX.SetData jsr SLIST.Select
|
||||||
|
|
||||||
jsr SLIST.SkipKey
|
jsr SLIST.SkipKey
|
||||||
|
|
||||||
|
jsr SLISTX.CheckLen
|
||||||
|
|
||||||
jsr SLIST.GetDataLen
|
jsr SLIST.GetDataLen
|
||||||
|
|
||||||
lda SLIST.DataLen
|
lda SLIST.DataLen
|
||||||
|
@ -204,6 +211,38 @@ SLISTX.SetData jsr SLIST.Select
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
SLISTX.CheckLen lda ZPSListDataLen
|
||||||
|
ora ZPSListDataLen+1
|
||||||
|
bne .8
|
||||||
|
|
||||||
|
ldx #0
|
||||||
|
ldy #0
|
||||||
|
|
||||||
|
lda FORPNT+1
|
||||||
|
pha
|
||||||
|
|
||||||
|
.1 jsr SHARED.FORPNTgY
|
||||||
|
beq .2
|
||||||
|
|
||||||
|
iny
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
inx
|
||||||
|
bra .1
|
||||||
|
|
||||||
|
.2 iny add Ending \0
|
||||||
|
bne .3
|
||||||
|
|
||||||
|
inx
|
||||||
|
|
||||||
|
.3 sty ZPSListDataLen
|
||||||
|
stx ZPSListDataLen+1
|
||||||
|
|
||||||
|
pla
|
||||||
|
sta FORPNT+1
|
||||||
|
|
||||||
|
.8 rts
|
||||||
|
*--------------------------------------
|
||||||
SLISTX.GetByID jsr SLIST.Select
|
SLISTX.GetByID jsr SLIST.Select
|
||||||
|
|
||||||
jsr BLISTX.GetNByte
|
jsr BLISTX.GetNByte
|
||||||
|
|
|
@ -0,0 +1,69 @@
|
||||||
|
NEW
|
||||||
|
AUTO 3,1
|
||||||
|
*/--------------------------------------
|
||||||
|
* # LoadStkObj
|
||||||
|
* Load a file in AUX memory (Stock Objects)
|
||||||
|
* PUSHW = PATH (Handled by....
|
||||||
|
* PUSHB = MODE ...
|
||||||
|
* PUSHB = TYPE ...
|
||||||
|
* PUSHW = AUXTYPE ...FOpen)
|
||||||
|
* ## RETURN VALUE
|
||||||
|
* Y,A = File Length
|
||||||
|
* X = hMem of Loaded Object in AUX mem
|
||||||
|
*\--------------------------------------
|
||||||
|
K.LoadStkObj jsr K.LoadFile0 ... ending \0
|
||||||
|
bcs .99
|
||||||
|
|
||||||
|
stx .90+1
|
||||||
|
sty .81+1 Save File Len
|
||||||
|
sta .82+1
|
||||||
|
|
||||||
|
iny
|
||||||
|
bne .1
|
||||||
|
inc +1 for ending 0
|
||||||
|
|
||||||
|
.1 jsr MEM.MoveToAux X = AUX hMem
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
.81 ldy #$ff and file len in Y,A
|
||||||
|
.82 lda #$ff
|
||||||
|
* clc
|
||||||
|
rts
|
||||||
|
|
||||||
|
.9 pha
|
||||||
|
.90 lda #$ff SELF MODIFIED
|
||||||
|
jsr K.freemem
|
||||||
|
pla
|
||||||
|
sec
|
||||||
|
.99 rts
|
||||||
|
*/--------------------------------------
|
||||||
|
* # GetStkObj
|
||||||
|
* ## C
|
||||||
|
* `int *ptr getstkobj (short int hStkObj);`
|
||||||
|
* ## ASM
|
||||||
|
* `lda hStkObj`
|
||||||
|
* `>SYSCALL GetStkObj`
|
||||||
|
* ## RETURN VALUE
|
||||||
|
* CC : success
|
||||||
|
* X = hMem
|
||||||
|
* Y,A = ptr
|
||||||
|
* CS : error
|
||||||
|
* A = EC
|
||||||
|
*\--------------------------------------
|
||||||
|
K.GetStkObj tax hMem for CopyToMain
|
||||||
|
|
||||||
|
jsr MEM.GetMemByID
|
||||||
|
|
||||||
|
ldy #S.MEM.LEN
|
||||||
|
lda (ZPMemMgrSPtr),y
|
||||||
|
pha
|
||||||
|
iny
|
||||||
|
lda (ZPMemMgrSPtr),y
|
||||||
|
ply YA = Len
|
||||||
|
|
||||||
|
jmp MEM.CopyToMain
|
||||||
|
*--------------------------------------
|
||||||
|
MAN
|
||||||
|
SAVE usr/src/sys/kernel.s.stkobj
|
||||||
|
LOAD usr/src/sys/kernel.s
|
||||||
|
ASM
|
|
@ -4,7 +4,7 @@ NEW
|
||||||
* # Time
|
* # Time
|
||||||
* Get System Time in Buffer
|
* Get System Time in Buffer
|
||||||
* ## C
|
* ## C
|
||||||
* `int time (S.TIME* timer);`
|
* `void time (struct tm* timeptr);`
|
||||||
* ## ASM
|
* ## ASM
|
||||||
* `>PUSHW timer`
|
* `>PUSHW timer`
|
||||||
* `>SYSCALL time`
|
* `>SYSCALL time`
|
||||||
|
@ -21,7 +21,7 @@ K.Time >PULLW FORPNT
|
||||||
* # StrFTime
|
* # StrFTime
|
||||||
* ## C
|
* ## C
|
||||||
* Convert S.TIME struct to CSTR
|
* Convert S.TIME struct to CSTR
|
||||||
* `void strftime (char* str, const char* format, const struct S.TIME* timeptr );`
|
* `void strftime (char* str, const char* format, const struct tm* timeptr );`
|
||||||
* ## ASM
|
* ## ASM
|
||||||
* `>PUSHW str`
|
* `>PUSHW str`
|
||||||
* `>PUSHW format`
|
* `>PUSHW format`
|
||||||
|
@ -52,7 +52,7 @@ K.StrFTime >PULLW ZPPtr3 S.TIME
|
||||||
* # PTime2Time
|
* # PTime2Time
|
||||||
* Convert ProDOS Time To S.TIME
|
* Convert ProDOS Time To S.TIME
|
||||||
* ## C
|
* ## C
|
||||||
* `int PTime2Time (long* ptime, S.TIME* timer);`
|
* `void PTime2Time (long* ptime, const struct tm* timeptr );`
|
||||||
* ## ASM
|
* ## ASM
|
||||||
* `>PUSHW ptime`
|
* `>PUSHW ptime`
|
||||||
* `>PUSHW timer`
|
* `>PUSHW timer`
|
||||||
|
@ -68,7 +68,7 @@ K.PTime2Time .EQ K.SYSCALL.JMPX2
|
||||||
* # CTime2Time
|
* # CTime2Time
|
||||||
* Convert CTime Time To S.TIME
|
* Convert CTime Time To S.TIME
|
||||||
* ## C
|
* ## C
|
||||||
* `int CTime2Time (long* ctime, S.TIME* timer);`
|
* `void CTime2Time (long* ctime, const struct tm* timeptr );`
|
||||||
* ## ASM
|
* ## ASM
|
||||||
* `>PUSHW ctime`
|
* `>PUSHW ctime`
|
||||||
* `>PUSHW timer`
|
* `>PUSHW timer`
|
||||||
|
|
|
@ -93,6 +93,7 @@ D2 .DA #0
|
||||||
D2.B .PH $D000
|
D2.B .PH $D000
|
||||||
.DA #RRAMWRAMBNK2
|
.DA #RRAMWRAMBNK2
|
||||||
.INB usr/src/sys/kernel.s.mount
|
.INB usr/src/sys/kernel.s.mount
|
||||||
|
.INB usr/src/sys/kernel.s.stkobj
|
||||||
.INB usr/src/sys/kernel.s.arg
|
.INB usr/src/sys/kernel.s.arg
|
||||||
.INB usr/src/sys/kernel.s.error
|
.INB usr/src/sys/kernel.s.error
|
||||||
.INB usr/src/sys/kernel.s.stdlib
|
.INB usr/src/sys/kernel.s.stdlib
|
||||||
|
|
Loading…
Reference in New Issue