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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -541,17 +541,17 @@ PrintVerboseMsg
.DO _DBG_SCOPE=1 .DO _DBG_SCOPE=1
>PUSHW L.MSG.DEBUG.SC >PUSHW L.MSG.DEBUG.SC
jsr SCOPE.Push jsr SCOPE.Push
lda ScopePtr lda ScopePtr
>PUSHA >PUSHA
tay tay
iny iny
iny iny
>PUSHB (ScopeStk),y >PUSHB (ScopeStk),y
iny iny
>PUSHB (ScopeStk),y >PUSHB (ScopeStk),y
>PUSHBI 5 >PUSHBI 5
>SYSCALL PrintF >SYSCALL PrintF
* >DEBUG * >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" MSG.DEBUG.SYMSL .CZ "Sto ID=%H,T=%h,Q=%h,SC=%h\r\n"
.FIN .FIN
.DO _DBG_SCOPE=1 .DO _DBG_SCOPE=1
MSG.DEBUG.SCIN .CZ "Scope { %H (%d:%h:%h)\r\n" MSG.DEBUG.SCIN .CZ "Scope { %H (%h:%h:%h)\r\n"
MSG.DEBUG.SC .CZ "Scope = %H (%d:%h:%h)\r\n" MSG.DEBUG.SC .CZ "Scope = %H (%h:%h:%h)\r\n"
MSG.DEBUG.SCOUT .CZ "Scope } %H (%d:%h:%h) -> " MSG.DEBUG.SCOUT .CZ "Scope } %H (%h:%h:%h) -> "
.FIN .FIN
.DO _DBG_OUT=1 .DO _DBG_OUT=1
MSG.DEBUG.CSOUT .CZ "\r\n%H-" MSG.DEBUG.CSOUT .CZ "\r\n%H-"
MSG.DEBUG.OUT .CZ "%h" MSG.DEBUG.OUT .CZ "%h"
.FIN .FIN
MSG.VERBOSE .CZ "%5D> %s\r\n" 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 IO.8255.Mode .EQ $C083-$88
*-------------------------------------- *--------------------------------------
.MA READBYTE .MA READBYTE
lda #IO.8255.S.ByteRcvd :1 lda IO.8255.S,x
:1 bit IO.8255.S,x and #IO.8255.S.ByteRcvd
beq :1 beq :1
lda IO.8255.Data,x lda IO.8255.Data,x
.EM .EM
.MA WRITEBYTE .MA WRITEBYTE
sta IO.8255.Data,x sta IO.8255.Data,x
:1 bit IO.8255.S,x :1 lda IO.8255.S,x
bpl :1 bpl :1
.EM .EM
*-------------------------------------- *--------------------------------------
@ -435,11 +435,13 @@ WRITE php
ldy #S.IOCTL.BYTECNT ldy #S.IOCTL.BYTECNT
lda (ZPIOCTL),y lda (ZPIOCTL),y
>WRITEBYTE >WRITEBYTE
lda (ZPIOCTL),y
eor #$ff eor #$ff
sta Counter sta Counter
iny iny
lda (ZPIOCTL),y lda (ZPIOCTL),y
>WRITEBYTE >WRITEBYTE
lda (ZPIOCTL),y
eor #$ff eor #$ff
sta Counter+1 sta Counter+1

View File

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

View File

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

View File

@ -8,8 +8,8 @@ void *pBuf = malloc(256);
int main(int argc, char *argv[]) { 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]); strcpy(pBuf, argv[0]);
strcat(pBuf, ".c"); strcat(pBuf, ".c");
printf("Filename=%s\r\n", pBuf); printf("Filename=%s\r\n", pBuf);

View File

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