KERNEL:VT100 fixes

CC:comment,scopes fixes
DAN2ETH:fixes for IIgs
This commit is contained in:
burniouf 2023-01-21 22:53:55 +01:00
parent 104360d2fa
commit 07172d7359
20 changed files with 316 additions and 240 deletions

Binary file not shown.

View File

@ -18,7 +18,7 @@ CODE.Init stz ZPCCConst
ldy #SCOPE-1
lda #0
.1 sta (ScopeStk),y reset initial Scope ID, LocalPtr, FrameSize
dey
bpl .1
@ -58,12 +58,12 @@ CODE.PUSHAXI pha
txa
jsr CODE.PUSHI
bcs CODE.LDAXI.RTS
pla
*--------------------------------------
CODE.PUSHI jsr CODE.LDAI
bcs CODE.LDAXI.RTS
bra CODE.PUSHA
*--------------------------------------
CODE.LDYAI pha
@ -71,15 +71,15 @@ CODE.LDYAI pha
lda #$A0 LDY #imm
jsr CODE.EmitByte
bcs CODE.LDAXI.RTS
tya
jsr CODE.EmitByte
bcs CODE.LDAXI.RTS
lda #$A9 LDA #imm
jsr CODE.EmitByte
bcs CODE.LDAXI.RTS
pla
jmp CODE.EmitByte
@ -151,23 +151,23 @@ CODE.INCPSTACK lda #$E6 INC zp
*--------------------------------------
CODE.SYSCALL jsr CODE.LDXI
bcs .9
lda #$20 JSR
ldx #A2osX.SYSCALL
ldy /A2osX.SYSCALL
bra CODE.TOABSYX
.9 rts
.9 rts
*--------------------------------------
CODE.FPUCALL jsr CODE.LDXI
bcs .9
lda #$20 JSR
ldx #A2osX.FPUCALL
ldy /A2osX.FPUCALL
bra CODE.TOABSYX
.9 rts
.9 rts
*--------------------------------------
CODE.LIBCALL jsr CODE.LDXI
bcs .9
@ -187,7 +187,7 @@ CODE.LIBCALL jsr CODE.LDXI
lda #$20 JSR
bra CODE.TOABSYX
.9 rts
.9 rts
*--------------------------------------
CODE.TOABSYX jsr CODE.EmitByte A=opcode : JMP, JSR .....
bcs .9
@ -199,7 +199,7 @@ CODE.TOABSYX jsr CODE.EmitByte A=opcode : JMP, JSR .....
tya
bra CODE.EmitByte
.9 rts
.9 rts
*--------------------------------------
CODE.DEBUG >LDYA L.PCC.DEBUG
*--------------------------------------
@ -208,7 +208,7 @@ CODE.EmitPCC >STYA ZPLookupPtr
lda (ZPLookupPtr)
tax
dex
ldy #1
.1 lda (ZPLookupPtr),y
@ -230,16 +230,16 @@ CODE.EmitByte clc if Pass 1...
pha
.DO _DBG_OUT=1
lda ZPCCCode
and #$1F
bne .11
>PUSHW L.MSG.DEBUG.CSOUT
>PUSHW ZPCCCode
>PUSHBI 2
>SYSCALL PrintF
.11 >PUSHW L.MSG.DEBUG.OUT
pla
pha
@ -248,7 +248,7 @@ CODE.EmitByte clc if Pass 1...
>SYSCALL PrintF
.FIN
>PUSHB.G CC.hOutFile
pla
@ -289,37 +289,37 @@ CODE.EmitDATA clc
*--------------------------------------
CODE.EmitTail jsr CODE.DSSelect
bcs .99
stz ArgIndex
.1 lda ArgIndex
>CMP.G LibCount
beq .8
clc
adc #hLibNs
tay
lda (pData),y
pha
>PUSHB.G CC.hOutFile
pla
>SYSCALL ArgV
>PUSHYA
>SYSCALL fputs
bcs .99
jsr .8
bcs .99
inc ArgIndex
bra .1
.8 >PUSHB.G CC.hOutFile
lda #0
>PUSHA
>SYSCALL fputc
.99 rts
*--------------------------------------
CODE.CSSelect clc

View File

@ -18,7 +18,7 @@ CORE.Init lda #SL._
bcs .9
>STA.G CC.hSyms
>LDYAI 256
>SYSCALL GetMem
bcs .9
@ -34,7 +34,7 @@ CORE.Init lda #SL._
>STYA ScopeStk
txa
>STA.G CC.hScopeStk
>LDYAI 256
>SYSCALL GetMem
bcs .9
@ -82,7 +82,7 @@ CORE.Quit jsr FIO.FClose
>LDA.G CC.hScopeStk
jsr .7
>LDA.G CC.hStmtStk
.7 beq .8
@ -118,7 +118,7 @@ CORE.CompileFile
*--------------------------------------
CORE.CompileLine
jsr CC.GetCharNB
bcs .9
bcs .99
cmp #C.CR EOL....
beq .8
@ -132,37 +132,49 @@ CORE.CompileLine
bne .2 comments ...
jmp CORE.Comments
*--------------------------------------
.2 cmp #'}' End of CPStmt ?
beq .5
jsr CORE.CompileStmt
bcs .99
jsr CC.GetCharNB
bcs .98
cmp #'{'
bne .3
jsr CORE.GetNCharNBNL Skip '}'
jsr STMT.CPStmt.END
bcs .9
jsr CORE.GetCharNBNL
jsr CORE.GetNCharNBNL Skip '{'
bcc CORE.CompileLine
rts
*--------------------------------------
.3 cmp #';' End of Stmt ?
bne .4
jsr CORE.GetNCharNBNL Skip ';'
jsr STMT.Stmt.END
bcs .9
bcs .99
bra CORE.CompileLine
jsr CC.GetCharNB
.4 jsr CORE.CompileStmt
bcs .9
.4 cmp #'}' End of CPStmt ?
bne CORE.CompileLine
bra CORE.CompileLine
.5 jsr CORE.GetNCharNBNL Skip '}'
jsr STMT.CPStmt.END
bcs .99
jsr CC.GetCharNB
bcc .3
.98 lda #E.CSYN
sec
.99 rts
.8 clc
.9 rts
rts
*--------------------------------------
* keyword : for, while ....
*--------------------------------------
@ -199,11 +211,26 @@ CORE.CompileStmt
*--------------------------------------
CORE.Comments jsr CC.GetNextChar TODO : /* ... */
cmp #'/'
bne .90
beq CORE.SkipLine // skip line.....
cmp #'*'
bne .9 /* ....
.1 jsr CORE.GetNCharNBNL
bcs .9
cmp #'*' ....*/
bne .1
jmp CORE.SkipLine skip line.....
jsr CC.GetNextChar
bcs .9
.90 lda #E.CSYN
cmp #'/'
bne .1
jmp CC.GetNextChar
.9 lda #E.CSYN
sec
rts
*--------------------------------------
@ -418,10 +445,16 @@ CORE.GetCharNBNL
jsr FIO.FGetS
bcc CORE.GetCharNBNL
rts
*--------------------------------------
CORE.GetNCharNBNL
jsr CC.GetChar
bcs .9
cmp #C.CR
beq .1
jsr CORE.GetNCharNB
bcs .9
@ -429,7 +462,7 @@ CORE.GetNCharNBNL
clc
bne .9
jsr FIO.FGetS
.1 jsr FIO.FGetS
bcc CORE.GetCharNBNL
.9 rts

View File

@ -15,10 +15,10 @@ DECL.TYPEDEF jsr CORE.GetNCharNB
>LDYA L.CC.TYPEQUAL
jsr CC.LookupID
bcs .98
cpx #4 no const nor volatile
bcc .98
jsr TYPE.GetTQInYA
bcs .99
@ -26,15 +26,15 @@ DECL.TYPEDEF jsr CORE.GetNCharNB
sec Reset Buffer
jsr SYM.New Y,A=T/Q,storage class TYPEDEF
bcs .99
jsr CC.GetCharNB
bcs .98
cmp #';'
bne .98
jsr CORE.GetNCharNB skip ';'
jmp SYM.Store
.98 lda #E.CSYN
@ -45,20 +45,20 @@ DECL.TYPEDEF jsr CORE.GetNCharNB
*--------------------------------------
DECL.X jsr TYPE.GetTQInYA
bcs .99
cpy #SYM.T.SU
bne .7
tax save Q
jsr CC.GetCharNB
bcs .98
cmp #';' from a tag def
beq .8
jsr CC.IsLetter
bcs .98
.1 clc reuse buffer
ldy #SYM.T.SU
txa restore Q
@ -79,11 +79,11 @@ DECL.X jsr TYPE.GetTQInYA
bne .98
.8 clc
rts
rts
.98 lda #E.CSYN
sec
.99 rts
.99 rts
.7 sec Reset Buffer
*--------------------------------------
@ -99,14 +99,14 @@ DECL.YAC ldx #SYM.SC.STATIC Y,A = Type/Qual
jsr SYM.GetTQInYA Y,A = T/Q
bit #SYM.Q.FUNC
bne .8
bne .8
jsr CC.GetCharNB
bcs .98
cmp #';' no initializer...store SYM
beq .28
cmp #'=' type var = value ?
bne .98
@ -119,7 +119,7 @@ DECL.YAC ldx #SYM.SC.STATIC Y,A = Type/Qual
jsr SYM.GetAddr1
bcs .99
jsr SYM.GetTQInYA Y,A = T/Q
jsr SYM.PopValue Set value to this var
.29 bcs .99
@ -130,7 +130,7 @@ DECL.YAC ldx #SYM.SC.STATIC Y,A = Type/Qual
jsr CC.GetCharNB
cmp #';'
bne .98
.8 clc
rts

View File

@ -17,7 +17,7 @@ DIR jsr CORE.GetNCharNB
DIR.DEFINE clc
bit bPass2
bmi .8
jsr CC.CheckSpace
bcs .99
@ -84,7 +84,7 @@ DIR.INCLUDE lda #0 >STZ.G PathBuf
>PUSHW pData >PUSHEA.G PathBuf
>SYSCALL GetEnv
bcs .90
lda #'>'
.1 sta ArgIndex
@ -116,7 +116,7 @@ DIR.INCLUDE lda #0 >STZ.G PathBuf
lda #0
sta (pData),y terminate string
>LDYA pData
jmp FIO.FOpen
*--------------------------------------

View File

@ -288,7 +288,7 @@ EXP.GetIntegral jsr CC.GetCharNB
bne .9
jsr CORE.GetNCharNB skip '
lda #0 Y,A = integral
clc

View File

@ -3,7 +3,7 @@ NEW
*--------------------------------------
F.Decl jsr SCOPE.New
bcs .99
lda (ZPSymBufPtr) #SYM.T
pha
@ -14,7 +14,7 @@ F.Decl jsr SCOPE.New
ply
cpy #SYM.T.VOID
bne .10
tax
beq .11 function is void
@ -47,7 +47,7 @@ F.Decl jsr SCOPE.New
jsr F.NewArg will update LocalPtr,FrameSize
bcs .99
.2 jsr CC.GetCharNB
bcs .9
@ -66,7 +66,7 @@ F.Decl jsr SCOPE.New
*--------------------------------------
.5 jsr CC.GetCharNB
bcs .9
cmp #')'
bne .9
@ -85,7 +85,7 @@ F.Decl jsr SCOPE.New
jsr SYM.Update Store this declaration & exit
bcs .99
jsr CORE.GetNCharNBNL Skip ';'
* jsr CORE.GetNCharNBNL Skip ';'
clc no error even if EOF
rts
@ -146,7 +146,7 @@ F.Def >LDA.G CC.bInitCode
F.Def.END lda #'X' define EXIT Label
jsr SYM.NewLabelA
bcs .9
jsr STMT.Close
bcs .9
@ -156,7 +156,7 @@ F.Def.END lda #'X' define EXIT Label
jsr SCOPE.Close
bcs .9
.9 rts
*--------------------------------------
F.DeclGetTQ lda (ZPLineBufPtr)
@ -253,12 +253,12 @@ F.CallRetV sec
ror ZPPtr1+1 bRetV
bpl .1
jsr EXP.GetYASizeOfInAX
txa
jsr CODE.AddLocal
bcc .1
rts
.1 jsr CORE.GetNCharNB skip '('

View File

@ -4,7 +4,7 @@ NEW
FIO.LoadLIB.o >LDA.G LibCount
cmp #LIBS.MAX
bne .1
lda #E.OOH
sec
.9 rts
@ -12,7 +12,7 @@ FIO.LoadLIB.o >LDA.G LibCount
.1 clc
adc #hLibNs
tay
lda ArgIndex
sta (pData),y
@ -20,18 +20,18 @@ FIO.LoadLIB.o >LDA.G LibCount
>PUSHW pData >PUSHEA.G PathBuf
>SYSCALL GetEnv
bcs .9
>PUSHW pData
lda ArgIndex
>SYSCALL ArgV
>PUSHYA
>SYSCALL strcat
>PUSHW pData
>PUSHW L.LIB.O
>SYSCALL strcat
>PUSHW L.MSG.READING
>PUSHW pData
>PUSHBI 2
@ -43,14 +43,14 @@ FIO.LoadLIB.o >LDA.G LibCount
>PUSHWZ Aux type
>SYSCALL loadfile
bcs .99
>LDA.G LibCount
clc
adc #hLibOs
tay
txa
sta (pData),y
>INC.G LibCount
clc
@ -163,18 +163,18 @@ FIO.FCreate lda ZPCCCode+1
sec
sbc #$20
sta PCC.FH+PCC.FH.CSSIZE+1
lda ZPCCCode
sta PCC.FH+PCC.FH.CSSIZE
sta PCC.FH+PCC.FH.CONST
clc
adc ZPCCConst
sta PCC.FH+PCC.FH.LIBS
lda ZPCCCode+1
adc ZPCCConst+1
sta PCC.FH+PCC.FH.LIBS+1
lda ZPCCData
sta PCC.FH+PCC.FH.DSSIZE

View File

@ -3,7 +3,7 @@ NEW
*--------------------------------------
* Built in Keywords
*--------------------------------------
KW.IF jsr SCOPE.New
KW.IF jsr SCOPE.New IF {
bcs .99
jsr CC.GetCharNB
@ -54,7 +54,7 @@ KW.IF.END jsr STMT.Close
jsr SYM.NewLabelA
bcs .99
jmp SCOPE.Close
jmp SCOPE.Close } IF
*--------------------------------------
.2 lda #'X'
jsr SYM.LookupLabelA
@ -91,7 +91,7 @@ KW.ELSE.END jsr STMT.Close
jsr SYM.NewLabelA
bcs .99
jmp SCOPE.Close
jmp SCOPE.Close } IF
.99 rts
*--------------------------------------
@ -168,6 +168,10 @@ KW.DO jsr SCOPE.New
jsr SYM.NewLabelA
bcs .99
>LDYA L.PCC.SLEEP
jsr CODE.EmitPCC
bcs .99
jsr STMT.New00
bcs .99
@ -248,7 +252,7 @@ KW.FOR jsr CC.GetCharNB
jsr CORE.GetNCharNB skip '('
bcs .29
jsr SCOPE.New
jsr SCOPE.New for (
bcs .19
>LDYA L.CC.TYPEQUAL
@ -342,7 +346,11 @@ KW.FOR jsr CC.GetCharNB
sec
.99 rts
*--------------------------------------
KW.FOR.END lda #$60
KW.FOR.END >LDYA L.PCC.SLEEP
jsr CODE.EmitPCC
bcs .99
lda #$60
jsr CODE.EmitByte set RTS for JSR code;
bcs .99
@ -354,7 +362,7 @@ KW.FOR.END lda #$60
jsr SYM.NewLabelA
bcs .99
jmp SCOPE.Close FOR ()
jmp SCOPE.Close FOR )
.99 rts
*--------------------------------------

View File

@ -55,9 +55,9 @@ CC.Link >LDYA L.MSG.LINKING
.9 >LDA.G bVerbose
bmi .90
jsr CC.Link.Dump
.90 lda #E.FUNDEF
sec
.99 rts
@ -183,7 +183,7 @@ CC.Link.Dump ldy #$ff
.1 iny
lda (pData),y
bne .1
iny
lda (pData),y
sta ZPPtr3

View File

@ -10,7 +10,7 @@ SCOPE.New lda ScopePtr
sta ScopePtr
dec bLocalScope
iny
iny #SCOPE.LocalPtr
lda (ScopeStk),y
@ -24,23 +24,23 @@ SCOPE.New lda ScopePtr
iny
lda (pData),y
adc #0
ldy ScopePtr
iny
sta (ScopeStk),y #SCOPE.ID Hi
txa
dey
sta (ScopeStk),y #SCOPE.ID Lo
iny
iny
pla
sta (ScopeStk),y #SCOPE.LocalPtr
iny
lda #0
sta (ScopeStk),y #SCOPE.FrameSize
lda #'F'
jsr SYM.LookupLabelA
bcs .99
@ -49,21 +49,21 @@ SCOPE.New lda ScopePtr
jsr CODE.AddLocal
bcs .99
.DO _DBG_SCOPE=1
>PUSHW L.MSG.DEBUG.SCIN
jsr SCOPE.Push
lda ScopePtr
>PUSHA
tay
iny
iny
>PUSHB (ScopeStk),y
iny
>PUSHB (ScopeStk),y
>PUSHBI 5
>SYSCALL PrintF
* >DEBUG
@ -74,28 +74,28 @@ SCOPE.New lda ScopePtr
.9 lda #E.OOH
sec
.99
.99
SCOPE.New.RTS rts
*--------------------------------------
SCOPE.Close lda #'F' define FRAME SIZE
jsr SYM.NewLabelA
bcs SCOPE.New.RTS
ldy ScopePtr
iny
iny
iny
lda (ScopeStk),y #SCOPE.FrameSize
jsr CODE.RemLocal
bcs SCOPE.New.RTS
.DO _DBG_SCOPE=1
>PUSHW L.MSG.DEBUG.SCOUT
jsr SCOPE.Push
lda ScopePtr
>PUSHA
tay
iny
iny
@ -106,7 +106,7 @@ SCOPE.Close lda #'F' define FRAME SIZE
>PUSHBI 5
>SYSCALL PrintF
.FIN
lda ScopePtr
beq *
@ -119,10 +119,10 @@ SCOPE.Close lda #'F' define FRAME SIZE
.DO _DBG_SCOPE=1
>PUSHW L.MSG.DEBUG.SC
jsr SCOPE.Push
lda ScopePtr
>PUSHA
tay
iny
iny
@ -134,7 +134,7 @@ SCOPE.Close lda #'F' define FRAME SIZE
>SYSCALL PrintF
* >DEBUG
.FIN
clc
.99 rts

View File

@ -123,28 +123,33 @@ STMT.SetVar stz ExpState
*--------------------------------------
STMT.Stmt.END ldy StmtPtr
beq STMT.POP.8 Global context
beq STMT.End.8 Global context
lda (StmtStk),y
bmi STMT.POP.8 local F context
bmi STMT.End.8 local F context
* in an instruction ...
iny STMT.TERM
lda (StmtStk),y
cmp #'}'
beq STMT.POP.8 in a STMT...
beq STMT.End.8 in a STMT...
cmp #';' must be ';' on stack....
beq STMT.End
bne STMT.End.9
jsr STMT.End
bcc STMT.Stmt.END
STMT.POP.9 lda #E.STACKERROR
rts
STMT.End.9 lda #E.STACKERROR
sec
rts
STMT.POP.8 clc
STMT.POP.99 rts
STMT.End.8 clc
rts
*--------------------------------------
STMT.CPStmt.END ldy StmtPtr
beq STMT.POP.9
beq STMT.End.9
lda (StmtStk),y
bpl .1
@ -155,7 +160,7 @@ STMT.CPStmt.END ldy StmtPtr
lda (StmtStk),y STMT.TERM
cmp #'}' must be '}' on stack....
bne STMT.POP.9
bne STMT.End.9
*--------------------------------------
STMT.End ldy StmtPtr STMT.KW
lda (StmtStk),y
@ -187,10 +192,7 @@ STMT.SetType jsr CORE.GetNCharNBNL
cmp #'{'
bne STMT.SetType.1
STMT.SetTypeCP jsr CORE.GetNCharNBNL skip '{'
bcs STMT.SetType.9
jsr SCOPE.New
STMT.SetTypeCP jsr SCOPE.New
bcs STMT.New.RTS
ldx #'}'
@ -215,7 +217,7 @@ STMT.Close lda StmtPtr
beq .1
>SYSCALL FreeMem
.1 ldy StmtPtr STMT.KW
iny STMT.TERM
lda (StmtStk),y

View File

@ -77,7 +77,7 @@ SYM.New.2 jsr CC.GetCharNB
lda (ZPSymBufPtr),y
ora #SYM.Q.FUNC
sta (ZPSymBufPtr),y
jsr SYM.Store Store this f() with no prototype...
bcs .99
@ -627,7 +627,7 @@ SYM.NewLabelA bit bPass2
bcs .98
>STYA.G CC.LabelID
ldy #CC.LabelBuf+SYM.DefSize
lda #SYM.Def
sta (pData),y
@ -650,11 +650,11 @@ SYM.NewLabelA bit bPass2
lda #SYM.Q.POINTER
iny
sta (pData),y
iny
lda #SYM.SC.STATIC
sta (pData),y
ldy #CC.LabelBuf+SYM.Addr
lda ZPCCCode
sta (pData),y
@ -686,7 +686,7 @@ SYM.NewLabelF lda #SYM.T.UCHAR
lda #0
iny
sta (pData),y
iny
lda #SYM.SC.AUTO
sta (pData),y
@ -696,7 +696,7 @@ SYM.NewLabelF lda #SYM.T.UCHAR
iny
iny
lda (ScopeStk),y #SCOPE.FrameSize
ldy #CC.LabelBuf+SYM.Addr
sta (pData),y
rts
@ -705,13 +705,13 @@ SYM.NewLabelR ldy #SYM.Q
lda (ZPSymBufPtr),y
and #$F8 strip off SYM.Q.FUNC...
pha
lda (ZPSymBufPtr)
>STA.G CC.LabelBuf
pla
iny
sta (pData),y
iny
lda #SYM.SC.AUTO
sta (pData),y
@ -720,7 +720,7 @@ SYM.NewLabelR ldy #SYM.Q
SYM.LookupLabelA
cmp #'R'
beq .1
bit bPass2
bmi .1
@ -770,7 +770,7 @@ SYM.LookupLabelA
bcs .99
phx
txa
>SYSCALL GetMemPtr
>STYA ZPLookupPtr
@ -1024,14 +1024,14 @@ SYM.DEBUGU >PUSHW L.MSG.DEBUG.SYMU
iny
lda (ZPSymBufPtr),y
>PUSHA
ldy #SYM.Addr+1
lda (ZPSymBufPtr),y
>PUSHA
dey
lda (ZPSymBufPtr),y
>PUSHA
>PUSHBI 7
>SYSCALL Printf
rts
@ -1053,7 +1053,7 @@ SYM.DEBUGS >PUSHW L.MSG.DEBUG.SYMS
dey
lda (ZPSymBufPtr),y
>PUSHA
>PUSHBI 7
>SYSCALL Printf
>DEBUG

View File

@ -27,10 +27,10 @@ TYPE.GetTQInYA >ENTER 2
TYPE.GetTQInYA2 >ENTER 2
lda (ZPLookupSymPtr)
sta (pStack) Type
ldy #SYM.Q
lda (ZPLookupSymPtr),y
* ldy #1
sta (pStack),y Qual
@ -49,7 +49,7 @@ TYPE.GetTQInYA2 >ENTER 2
clc
.99 >LEAVE
rts
rts
*--------------------------------------
* Type Declaration keywords
*--------------------------------------
@ -67,9 +67,9 @@ TYPE.VOLATILE.1 ldy #1
>LDYA L.CC.TYPESPEC
jsr CC.LookupID
bcs .9
jmp (J.CC.TYPESPEC,x)
.9 lda #E.CSYN
sec
rts
@ -81,7 +81,7 @@ TYPE.UNION sec
ror ZPPtr2+1 bStrucUnion
stz ZPPtr2 bNewTagDef
bit bPass2
bpl TYPE.SU.1 Pass 1: create def
*--------------------------------------
@ -131,7 +131,7 @@ TYPE.SU.1 ldy #SYM.T.SU
jsr TYPE.NewTag
bcs .99
sec
ror ZPPtr2 bNewTagDef
*--------------------------------------
@ -140,7 +140,7 @@ TYPE.SU.1 ldy #SYM.T.SU
cmp #'{'
beq .30
bit ZPPtr2 bNewTagDef
bmi .98
@ -190,7 +190,7 @@ TYPE.SU.1 ldy #SYM.T.SU
jsr TYPE.StoreTag
bcs .99
*--------------------------------------
*--------------------------------------
.38 lda #SYM.T.SU
jmp TYPE.GetQ
@ -210,34 +210,34 @@ TYPE.SU.AddYAX jsr SYM.AddWord add T/Q
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
* 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
@ -254,7 +254,7 @@ TYPE.NewTag >LDA.G CC.hTags
jsr CC.SkipX
.9 rts
.9 rts
*--------------------------------------
TYPE.GetTag >PUSHB.G CC.hTags
>PUSHW ZPLineBufPtr
@ -304,7 +304,7 @@ TYPE.UNSIGNED clc
cpx #SYM.T.UCHAR
bcc .9 void
cpx #SYM.T.SLONG+1 only char int long allowed
bcs .9
@ -323,18 +323,18 @@ TYPE.UNSIGNED clc
*--------------------------------------
TYPE.SHORT jsr CC.CheckSpace
bcs .9
>LDYA L.CC.TYPES
jsr CC.LookupID
bcs TYPE.UCHAR
cpx #4 only int allowed
beq TYPE.SCHAR
.9 lda #E.CSYN
sec
rts
rts
*--------------------------------------
TYPE.VOID lda #SYM.T.VOID
bra TYPE.GetQ
@ -377,10 +377,10 @@ TYPE.GetQ2 jsr CC.GetCharNB
bcs .9 more than ***
sta (pStack),y
jsr CORE.GetNCharNB
bcc .1
.9 lda #E.CSYN
sec
.99 rts
@ -391,7 +391,7 @@ TYPE.GetQ2 jsr CC.GetCharNB
>LDYA L.CC.FTYPES int fastcall f() ?
jsr CC.LookupID
bcs .8 next char is an identifier
ldy #1
lda (pStack),y
ora #SYM.Q.FUNC+SYM.Q.FASTCALL
@ -399,9 +399,9 @@ TYPE.GetQ2 jsr CC.GetCharNB
jsr CORE.GetNCharNB
bcs .9 next char is an identifier, ",", "(",")"
.8 clc
rts
rts
*--------------------------------------
* in : Y,A = type/qual
* out : X = size

View File

@ -541,17 +541,17 @@ PrintVerboseMsg
.DO _DBG_SCOPE=1
>PUSHW L.MSG.DEBUG.SC
jsr SCOPE.Push
lda ScopePtr
>PUSHA
tay
iny
iny
>PUSHB (ScopeStk),y
iny
>PUSHB (ScopeStk),y
>PUSHBI 5
>SYSCALL PrintF
* >DEBUG
@ -670,12 +670,12 @@ MSG.DEBUG.SYMNL .CZ "New (%s) ID=%H[%H],T=%h,Q=%h,SC=%h "
MSG.DEBUG.SYMSL .CZ "Sto ID=%H,T=%h,Q=%h,SC=%h\r\n"
.FIN
.DO _DBG_SCOPE=1
MSG.DEBUG.SCIN .CZ "Scope { %H (%d:%h:%h)\r\n"
MSG.DEBUG.SC .CZ "Scope = %H (%d:%h:%h)\r\n"
MSG.DEBUG.SCOUT .CZ "Scope } %H (%d:%h:%h) -> "
MSG.DEBUG.SCIN .CZ "Scope { %H (%h:%h:%h)\r\n"
MSG.DEBUG.SC .CZ "Scope = %H (%h:%h:%h)\r\n"
MSG.DEBUG.SCOUT .CZ "Scope } %H (%h:%h:%h) -> "
.FIN
.DO _DBG_OUT=1
MSG.DEBUG.CSOUT .CZ "\r\n%H-"
MSG.DEBUG.CSOUT .CZ "\r\n%H-"
MSG.DEBUG.OUT .CZ "%h"
.FIN
MSG.VERBOSE .CZ "%5D> %s\r\n"

View File

@ -28,15 +28,15 @@ IO.8255.S.ByteRcvd .EQ %00100000
IO.8255.Mode .EQ $C083-$88
*--------------------------------------
.MA READBYTE
lda #IO.8255.S.ByteRcvd
:1 bit IO.8255.S,x
:1 lda IO.8255.S,x
and #IO.8255.S.ByteRcvd
beq :1
lda IO.8255.Data,x
.EM
.MA WRITEBYTE
sta IO.8255.Data,x
:1 bit IO.8255.S,x
:1 lda IO.8255.S,x
bpl :1
.EM
*--------------------------------------
@ -435,11 +435,13 @@ WRITE php
ldy #S.IOCTL.BYTECNT
lda (ZPIOCTL),y
>WRITEBYTE
lda (ZPIOCTL),y
eor #$ff
sta Counter
iny
lda (ZPIOCTL),y
>WRITEBYTE
lda (ZPIOCTL),y
eor #$ff
sta Counter+1

View File

@ -5,7 +5,7 @@ NEW
int testf1() {
puts("testf1 called!");
int r = 1029;
if (r == 1029) {
if (r == 1029) {
printf("testf1 will return %D...\r\n", r);
}
return r;
@ -19,7 +19,7 @@ int testf2() {
void testf3(char *msg)
{
puts(msg);
}
}
int testf4(int arg1, int arg2) {
printf("arg1=%D, arg2=%D\r\n", arg1, arg2);
@ -36,23 +36,23 @@ int main(int argc, char *argv[]) {
int r=testf1();
printf("testf1() returned %D\r\n", r);
getchar();
getchar();
r=testf2();
printf("testf2() returned %D\r\n", r);
getchar();
getchar();
testf3("testf3() void function...");
getchar();
getchar();
i = testf4(34, 43);
printf("testf4() returned %D\r\n", i);
getchar();
printf("main() argc=%D\r\n", argc);
for(int i=0; i<=argc; i++) {
printf(" argv[%I] : %s\r\n", i, argv[i]);
}
puts("set main() return code=0x73");
return 115; // return E_INUM
printf("main() argc=%D\r\n", argc);
getchar();
for(int i=0; i<=argc; i++) printf(" argv[%D]=%s\r\n", i, argv[i]);
printf("i = %D\r\n", i);
puts("set main() return code=0x73");
return 115; // return E_INUM
}
MAN
TEXT root/ctest/testargs.c

View File

@ -2,6 +2,9 @@ NEW
AUTO 3,1
#include <stdio.h>
/* C-style comments....
...multi-lines */
int main(int argc, char *argv[])
{
puts("Press a key");
@ -10,11 +13,16 @@ int main(int argc, char *argv[])
if (c == 13)
{
puts("ENTER");
// C99 comments: skip LF
getchar();
}
else
{
puts("Not ENTER");
}
else
if (c == 32)
{
puts("Not ENTER...but SPACE");
}
else
puts("Some other key...");
int i=0;
while (i++ < 10) {

View File

@ -8,8 +8,8 @@ void *pBuf = malloc(256);
int main(int argc, char *argv[]) {
for (int i=0; i<=argc; i++) printf("argv[%I]=%s\r\n", i, argv[i]);
for (int i=0; i<=argc; i++) printf("argv[%D]=%s\r\n", i, argv[i]);
getchar();
strcpy(pBuf, argv[0]);
strcat(pBuf, ".c");
printf("Filename=%s\r\n", pBuf);

View File

@ -102,7 +102,7 @@ TERMX.OPEN jsr TERMX.ISOPENED
tax
* lda ZPhFD
lda IO.hFD in ZPTMP
sta CLRWRITEAUX
sta A2osX.SCRNDEVS,x
sta SETWRITEAUX
@ -124,7 +124,7 @@ TERMX.CONTROL lda (ZPDCBPtr) #S.DCB.TTY.DEVID
sta CLRMIXED
jsr TERMX.SCRCPY
lda #0
ldy #S.DCB.TTY.bTITLE
sta (ZPDCBPtr),y
@ -376,6 +376,7 @@ TERMX.OUT.DEL ldy #S.DCB.TTY.CH
.1 ldy #S.DCB.TTY.CV
lda (ZPDCBPtr),y
beq TERMX.OUT.BS.8
dec
sta (ZPDCBPtr),y
@ -536,7 +537,7 @@ TERMX.CSI.Exec stz CsiH
.DA Csi.Home H
*--------------------------------------
* CRLF : ESC [ 20
* LINEWRAP : ESC [ ? 7
* LINEWRAP : ESC [ ? 7
* CUR : ESC [ ? 25
*--------------------------------------
Csi.SetM sec
@ -569,7 +570,7 @@ Csi.ResetM clc
ldy #S.DCB.TTY.bLINEWRAP
bra .8
.2 cmp #25
bne .98
@ -579,7 +580,7 @@ Csi.ResetM clc
ror
sta (ZPDCBPtr),y
bmi .80
jsr TERMX.CUROFF
clc
@ -588,7 +589,7 @@ Csi.ResetM clc
.8 plp
ror
sta (ZPDCBPtr),y
.80 clc
rts
@ -597,22 +598,20 @@ Csi.ResetM clc
rts
*--------------------------------------
Csi.DispAttr ldx CsiPCnt
bne .10
beq .10
jmp RESETATTR
.10 ldx #0
ldx #0
.1 lda CsiP,x
bne .2
jsr RESETATTR
jsr .10
bra .7
.2 eor #7
bne .7
.3 ldy #S.DCB.TTY.bNORMAL
ldy #S.DCB.TTY.bNORMAL
sta (ZPDCBPtr),y
.7 inx
@ -621,15 +620,23 @@ Csi.DispAttr ldx CsiPCnt
.8 clc
rts
.10 lda #$80
ldy #S.DCB.TTY.bNORMAL
sta (ZPDCBPtr),y
clc
rts
*--------------------------------------
Csi.Query ldx CsiPCnt
beq .8
dex
bne .8
lda CsiP
cmp #6
bne .8
lda #C.ESC
jsr TERMX.COUT
lda #'['
@ -650,20 +657,29 @@ Csi.Query ldx CsiPCnt
.8 clc
rts
*--------------------------------------
Csi.Scroll ldy CsiPCnt
bne .1
lda #0
Csi.Scroll lda #0
ldx #23
bra .8
.1 cpy #2
ldy CsiPCnt
beq .8
cpy #2
bne .9
lda CsiP
dec
ldx CsiP+1
dex
ldy CsiP
dey
cpy #24
bcs .9
tya
ldy CsiP+1
dey
cpy #24
bcs .9
phy
plx
.8 ldy #S.DCB.TTY.SCROLLTOP
sta (ZPDCBPtr),y
@ -829,14 +845,19 @@ TERMX.IAC ldy #S.DCB.TTY.INBUF
cmp #SE
bne Csi.Home.8 wait for ending SE....keep bIACMode
bra COUT.IAC.SB
ldy #S.DCB.TTY.INBUF+1
lda (ZPDCBPtr),y get back CMD
.1 cmp #IAC
beq COUT.IAC.SB.9
sec
sbc #WILL
bcc COUT.IAC.SB.9
asl
tax
@ -855,11 +876,14 @@ COUT.IAC.SB ldy #S.DCB.TTY.INBUF+2
cmp #TN.O.TTYPE
bne COUT.IAC.SB.9
iny
lda (ZPDCBPtr),y
cmp #SB.SEND
bne COUT.IAC.SB.9
ldx #0
.1 lda SB.IS.TTYPE,x
jsr TERMX.COUT
inx
@ -872,12 +896,15 @@ COUT.IAC.WILL ldx #WILLDO.CNT-1
.1 cmp WILLDO,x
beq .7
dex
bpl .1
ldx #WILLDONT.CNT-1
.2 cmp WILLDONT,x
beq .8
dex
bpl .2
@ -893,6 +920,7 @@ COUT.IAC.DO ldx #DOWILL.CNT-1
.1 cmp DOWILL,x
beq .7
dex
bpl .1
@ -900,6 +928,7 @@ COUT.IAC.DO ldx #DOWILL.CNT-1
.2 cmp DOWONT,x
beq .8
dex
bpl .2
@ -940,12 +969,6 @@ RESET ldy #S.DCB.TTY.M
jmp TERMX.CLRSCR
*--------------------------------------
RESETATTR lda #$80
ldy #S.DCB.TTY.bNORMAL
sta (ZPDCBPtr),y
clc
rts
*--------------------------------------
ENQ ldx #0
.1 lda ENQ.String,x
@ -968,7 +991,7 @@ TERMX.OUT.LF.1 ldy #S.DCB.TTY.CV
lda (ZPDCBPtr),y
ldy #S.DCB.TTY.SCROLLBOT
cmp (ZPDCBPtr),y
beq SCROLL.UP
bcs SCROLL.UP
inc
ldy #S.DCB.TTY.CV
@ -1087,7 +1110,7 @@ TERMX.CBLNK jsr TERMX.CCheck
sta (ZPDCBPtr),y
asl
beq TERMX.CUROFF.1
jsr GetCharAtCurPos
bcs TERMX.RTS Out of screen
@ -1100,26 +1123,26 @@ TERMX.CUROFF jsr TERMX.CCheck
asl
beq TERMX.RTS already off
TERMX.CUROFF.1 jsr GetCharAtCurPos
bcs TERMX.RTS Out of screen
jmp SetCharAtY.SCR
TERMX.RTS rts
*--------------------------------------
TERMX.CCheck sec
bit bActive
bpl .9
ldy #S.DCB.TTY.bCURON
lda (ZPDCBPtr),y
bpl .9
clc
.9 rts
.9
TERMX.RTS rts
*--------------------------------------
DecOut jsr MATH.A2STR10NP
@ -1537,7 +1560,7 @@ RESET.VALUES .DA #0 MODE
.DA #S.DCB.TTY.OUTBUF OUTHEAD
.DA #S.DCB.TTY.INBUF INBUFFER
*--------------------------------------
TERMX.DIB .DA #S.DIB.S.WRITE+S.DIB.S.READ
TERMX.DIB .DA #S.DIB.S.WRITE+S.DIB.S.READ
.DA #0,#0,#0
.PS "A2osX VT100 term"
.DA #S.DIB.T.CHAR