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

@ -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.....
jmp CORE.SkipLine skip line..... cmp #'*'
bne .9 /* ....
.90 lda #E.CSYN .1 jsr CORE.GetNCharNBNL
bcs .9
cmp #'*' ....*/
bne .1
jsr CC.GetNextChar
bcs .9
cmp #'/'
bne .1
jmp CC.GetNextChar
.9 lda #E.CSYN
sec sec
rts rts
*-------------------------------------- *--------------------------------------
@ -422,6 +449,12 @@ 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

@ -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

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

@ -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
STMT.POP.9 lda #E.STACKERROR jsr STMT.End
bcc STMT.Stmt.END
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 #'}'

View File

@ -670,9 +670,9 @@ 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-"

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

@ -44,13 +44,13 @@ int main(int argc, char *argv[]) {
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); printf("main() argc=%D\r\n", argc);
getchar();
for(int i=0; i<=argc; i++) { for(int i=0; i<=argc; i++) printf(" argv[%D]=%s\r\n", i, argv[i]);
printf(" argv[%I] : %s\r\n", i, argv[i]);
}
printf("i = %D\r\n", i);
puts("set main() return code=0x73"); puts("set main() return code=0x73");
return 115; // return E_INUM return 115; // return E_INUM
} }

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

@ -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
@ -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
@ -1105,8 +1128,6 @@ 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
@ -1119,7 +1140,9 @@ TERMX.CCheck sec
clc clc
.9 rts .9
TERMX.RTS rts
*-------------------------------------- *--------------------------------------
DecOut jsr MATH.A2STR10NP DecOut jsr MATH.A2STR10NP