bugfix: DU, EDIT, LSDEV, LSOF, WC, WHO, XMASTREE

Enh : UNAME
This commit is contained in:
burniouf 2022-12-23 17:50:50 +01:00
parent 7aa3860a58
commit f7681deebe
24 changed files with 575 additions and 440 deletions

Binary file not shown.

Binary file not shown.

View File

@ -4,7 +4,7 @@ NEW
CODE.Init stz ZPCCConst CODE.Init stz ZPCCConst
stz ZPCCConst+1 stz ZPCCConst+1
stz bInitCode >STZ.G CC.bInitCode
>LDYAI PCC.FH.CS >LDYAI PCC.FH.CS
>STYA ZPCCCode >STYA ZPCCCode

View File

@ -60,7 +60,7 @@ DECL.X jsr TYPE.GetTQInYA
jsr CC.IsLetter jsr CC.IsLetter
bcs .98 bcs .98
* >DEBUG
.1 clc reuse buffer .1 clc reuse buffer
ldy #SYM.T.SU ldy #SYM.T.SU
txa restore Q txa restore Q
@ -105,12 +105,15 @@ DECL.YAC ldx #SYM.SC.STATIC Y,A = Type/Qual
bcs .98 bcs .98
cmp #';' cmp #';'
beq .8
cmp #'{'
bne .26 bne .26
jmp CORE.GetNCharNBNL Skip '{' ldy #SYM.Q
lda (ZPSymBufPtr),y
and #SYM.Q.FUNC
beq .28 no initializer...store SYM
clc function are already stored
rts
*-------------------------------------- *--------------------------------------
* Initializer * Initializer
*-------------------------------------- *--------------------------------------

View File

@ -614,7 +614,7 @@ EXP.Idx ldy #SYM.Q
jsr EXP.array.getIdx ...int16 on stack... jsr EXP.array.getIdx ...int16 on stack...
bcs .99 bcs .99
jsr EXP.GetSymSizeOfInAXC jsr EXP.GetSymSizeOfInAX
cmp #1 cmp #1
bne .1 bne .1
@ -675,7 +675,7 @@ EXP.array ldy #SYM.Def
.2 jsr EXP.array.getIdx ...int16 on stack... .2 jsr EXP.array.getIdx ...int16 on stack...
bcs .9 bcs .9
jsr EXP.GetSymSizeOfInAXC jsr EXP.GetSymSizeOfInAX
jsr CODE.PUSHAXI ...sizeof on stack... jsr CODE.PUSHAXI ...sizeof on stack...
bcs .9 bcs .9
@ -714,7 +714,7 @@ 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 EXP.GetSymSizeOfInAXC jsr EXP.GetSymSizeOfInAX
jsr CODE.PUSHAXI ...sizeof on stack... jsr CODE.PUSHAXI ...sizeof on stack...
bcs .9 bcs .9
@ -1112,7 +1112,7 @@ EXP.GetAddr2 ldy #SYM.SC
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
EXP.PushValue jsr EXP.GetSymSizeOfInAXC EXP.PushValue jsr EXP.GetSymSizeOfInAX
tay tay
dey dey
bne .1 bne .1
@ -1134,9 +1134,9 @@ EXP.PushValue jsr EXP.GetSymSizeOfInAXC
.99 rts .99 rts
*-------------------------------------- *--------------------------------------
* out : A,X,C = size * out : A,X = size
*-------------------------------------- *--------------------------------------
EXP.GetSymSizeOfInAXC EXP.GetSymSizeOfInAX
ldy #SYM.Q ldy #SYM.Q
lda (ZPLookupSymPtr),y lda (ZPLookupSymPtr),y
pha pha
@ -1144,7 +1144,7 @@ EXP.GetSymSizeOfInAXC
tay tay
pla pla
EXP.GetYASizeOfInAXC EXP.GetYASizeOfInAX
bit #SYM.Q.PPPOINTER+SYM.Q.AAARRAY bit #SYM.Q.PPPOINTER+SYM.Q.AAARRAY
bne .1 bne .1

View File

@ -51,13 +51,25 @@ F.Decl ldy #SYM.Q
jsr CC.IsLetter jsr CC.IsLetter
bcs .2 bcs .2
jsr F.NewArg jsr F.NewArg will update LocalPtr
bcs .99 bcc .3
rts
.2 >LDYA ZPPtr2
jsr EXP.GetYASizeOfInAX
clc
adc LocalPtr
sta LocalPtr
bcs .9
txa
bne .9
jsr CC.GetCharNB .3 jsr CC.GetCharNB
bcs .9 bcs .9
.2 cmp #')' cmp #')'
beq .6 beq .6
cmp #',' cmp #','
@ -73,51 +85,40 @@ F.Decl ldy #SYM.Q
.6 jsr SYM.Add0000 definition End .6 jsr SYM.Add0000 definition End
bcs .99 bcs .99
ldy #SYM.ArgSize
lda LocalPtr
sta (ZPSymBufPtr),y
jsr CORE.GetNCharNBNL Skip ')' jsr CORE.GetNCharNBNL Skip ')'
bcs .9 bcs .9
cmp #';' cmp #';'
bne .7 bne .7
jsr SYM.Update
bcs .99
jsr SCOPE.Close discard local scope jsr SCOPE.Close discard local scope
bcs .99 bcs .99
stz LocalPtr reset for DEBUG Message jmp SYM.Update Store this declaration & exit
* clc
rts
*-------------------------------------- *--------------------------------------
.7 cmp #'{' .7 cmp #'{'
bne .9 bne .9
*-------------------------------------- *--------------------------------------
F.Def bit bInitCode F.Def >LDA.G CC.bInitCode
bmi .1 bmi .1
lda #$60 RTS lda #$60 RTS
jsr CODE.EmitByte Close INIT code jsr CODE.EmitByte Close INIT code
bcs .99 bcs .99
dec bInitCode lda #$FF
>STA.G CC.bInitCode
.1 jsr SYM.SetAddrCCode f() Code starts HERE .1 jsr SYM.SetAddrCCode f() Code starts HERE
jsr SYM.Update jsr SYM.Update
bcs .99 bcs .99
lda #$ff lda LocalPtr
>STA.G CC.CmdSave
jsr STMT.NewCPS00
bcs .99
lda #'F'
jsr SYM.LookupLabelA
bcs .99
txa
jsr CODE.LDAI A = f() ARGS size jsr CODE.LDAI A = f() ARGS size
bcs .99 bcs .99
@ -134,10 +135,10 @@ F.Def.END lda #'X' define EXIT Label
jsr CODE.EmitPCC jsr CODE.EmitPCC
bcs .9 bcs .9
jsr SCOPE.Close jsr STMT.Close
bcs .9 bcs .9
jmp STMT.Close jmp SCOPE.Close
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
@ -220,6 +221,8 @@ F.NewArg >LDYA.G CC.SymID
jsr SYM.Store jsr SYM.Store
bcs .9 bcs .9
stz LocalFrame DONT ADD TO LOCAL
>LDA.G CC.hSymBuf >LDA.G CC.hSymBuf
>SYSCALL GetMemPtr >SYSCALL GetMemPtr
>STYA ZPSymBufPtr >STYA ZPSymBufPtr
@ -271,13 +274,13 @@ F.CallRetV sec
lda #0 Expected T/Q = 0 if VARIADIC lda #0 Expected T/Q = 0 if VARIADIC
tay tay
* >DEBUG
.4 and #$F0 CONST+VOLATILE+FUNC+FASTCALL .4 and #$F0 CONST+VOLATILE+FUNC+FASTCALL
* >DEBUG
jsr EXP.Eval jsr EXP.Eval
bcs .93 bcs .93
jsr EXP.GetYASizeOfInAXC jsr EXP.GetYASizeOfInAX
tax save Sizeof in X tax save Sizeof in X
jsr F.GetTQ jsr F.GetTQ

View File

@ -124,10 +124,10 @@ FIO.FGetS >LDYA.G LineBufPtr
>SYSCALL FGetS >SYSCALL FGetS
bcs .9 bcs .9
>LDA.G bTrace >LDA.G bVerbose
bpl .8 bpl .8
jsr PrintTraceMsg jsr PrintVerboseMsg
.8 .8

View File

@ -3,9 +3,9 @@ NEW
*-------------------------------------- *--------------------------------------
* Built in Keywords * Built in Keywords
*-------------------------------------- *--------------------------------------
KW.IF jsr SCOPE.New KW.IF jsr STMT.NewCPS00
bcs .99 bcs .99
jsr CC.GetCharNB jsr CC.GetCharNB
bcs .9 bcs .9
@ -34,9 +34,6 @@ KW.IF jsr SCOPE.New
cmp #')' cmp #')'
bne .9 bne .9
jsr STMT.NewCPS00
bcs .99
jmp STMT.SetCPSType jmp STMT.SetCPSType
.9 lda #E.CSYN .9 lda #E.CSYN
@ -57,9 +54,6 @@ KW.IF.END jsr CORE.GetCharNBNL
jsr SYM.NewLabelA jsr SYM.NewLabelA
bcs .99 bcs .99
jsr SCOPE.Close
bcs .99
jmp STMT.Close jmp STMT.Close
rts rts
@ -94,17 +88,11 @@ KW.ELSE.END lda #'X' define EXIT Label
jsr SYM.NewLabelA jsr SYM.NewLabelA
bcs .99 bcs .99
jsr SCOPE.Close jmp STMT.Close
bcs .99
clv pop context
* clc
.99 rts .99 rts
*-------------------------------------- *--------------------------------------
KW.WHILE jsr SCOPE.New KW.WHILE lda #'C' define CONT Label
bcs .99
lda #'C' define CONT Label
jsr SYM.NewLabelA jsr SYM.NewLabelA
bcs .99 bcs .99
@ -358,10 +346,10 @@ KW.FOR.END lda #$60
jsr SYM.NewLabelA jsr SYM.NewLabelA
bcs .99 bcs .99
jsr SCOPE.Close jsr STMT.Close
bcs .99 bcs .99
jmp STMT.Close jmp SCOPE.Close
.99 rts .99 rts
*-------------------------------------- *--------------------------------------
@ -400,7 +388,7 @@ KW.SWITCH jsr CC.GetCharNB
jsr CC.Push push CPS.hMEM jsr CC.Push push CPS.hMEM
lda #0 lda #0
jsr CC.Push push CPS.Ptr jsr CC.Push push CPS.MemPtr
bcs .99 bcs .99
jsr STMT.NewCPS jsr STMT.NewCPS
@ -446,7 +434,7 @@ KW.SWITCH.END lda #'J' define JMP Label
lda CStackPtr lda CStackPtr
clc clc
adc #CPS.Ptr adc #CPS.MemPtr
tay tay
lda (ZPCCStack),y lda (ZPCCStack),y
sta ZPPtr2+1 sta ZPPtr2+1
@ -538,7 +526,7 @@ KW.CASE ldy CStackPtr
lda CStackPtr lda CStackPtr
clc clc
adc #CPS.Ptr adc #CPS.MemPtr
tay tay
lda (ZPCCStack),y lda (ZPCCStack),y
tay tay
@ -562,7 +550,7 @@ KW.CASE ldy CStackPtr
lda CStackPtr lda CStackPtr
clc clc
adc #CPS.Ptr adc #CPS.MemPtr
tay tay
pla pla
sta (ZPCCStack),y sta (ZPCCStack),y
@ -659,21 +647,23 @@ KW.RETURN ldx ZPLineBufPtr
jsr EXP.Eval jsr EXP.Eval
bcs .99 bcs .99
jsr SYM.GetYASizeOfInAXC Y,A=T/Q jsr SYM.GetYASizeOfInAX Y,A=T/Q
tax X = sizeof tax X = sizeof
jsr CODE.SetRetValue jsr CODE.SetRetValue
bcs .99 bcs .99
jsr SYM.LookupFree
bcs .99
lda #'X' lda #'X'
jsr SYM.LookupLabelA jsr SYM.LookupLabelA
bcs .9 bcs .99
lda #$4C emit JMP exit lda #$4C emit JMP exit
jmp CODE.TOABSYX jmp CODE.TOABSYX
.9 lda #E.CSYN .9 lda #E.CSYN
sec sec
rts
.99 rts .99 rts
*-------------------------------------- *--------------------------------------
@ -684,7 +674,7 @@ KW.SIZEOF
*-------------------------------------- *--------------------------------------
* Input : Value on Stack, Y,A = Type/Qual * Input : Value on Stack, Y,A = Type/Qual
*-------------------------------------- *--------------------------------------
KW.TestZero jsr EXP.GetYASizeOfInAXC KW.TestZero jsr EXP.GetYASizeOfInAX
tax tax
cpx #1 cpx #1
bne .1 bne .1
@ -708,7 +698,7 @@ KW.TestZero jsr EXP.GetYASizeOfInAXC
*-------------------------------------- *--------------------------------------
* Input : Value on Stack, Y,A = Type/Qual * Input : Value on Stack, Y,A = Type/Qual
*-------------------------------------- *--------------------------------------
KW.TestnZero jsr EXP.GetYASizeOfInAXC KW.TestnZero jsr EXP.GetYASizeOfInAX
tax tax
cpx #1 cpx #1
bne .1 bne .1

View File

@ -26,7 +26,7 @@ CC.Link >LDYA L.MSG.LINKING
>SYSCALL SListGetData >SYSCALL SListGetData
bcs .99 bcs .99
>LDA.G bTrace >LDA.G bVerbose
bpl .2 bpl .2
jsr CC.Link.Dump jsr CC.Link.Dump
@ -53,7 +53,7 @@ CC.Link >LDYA L.MSG.LINKING
.8 clc .8 clc
rts rts
.9 >LDA.G bTrace .9 >LDA.G bVerbose
bmi .90 bmi .90
jsr CC.Link.Dump jsr CC.Link.Dump

View File

@ -24,11 +24,14 @@ SCOPE.New ldy ScopeIdx
dec bLocalScope dec bLocalScope
stz LocalFrame
.DO _DBG_SCOPE=1 .DO _DBG_SCOPE=1
>PUSHW L.MSG.DEBUG.SCIN >PUSHW L.MSG.DEBUG.SCIN
jsr SCOPE.Push jsr SCOPE.Push
>PUSHB LocalPtr >PUSHB LocalPtr
>PUSHBI 3 >PUSHB LocalFrame
>PUSHBI 4
>SYSCALL PrintF >SYSCALL PrintF
.FIN .FIN
@ -39,11 +42,7 @@ SCOPE.New ldy ScopeIdx
sec sec
.99 rts .99 rts
*-------------------------------------- *--------------------------------------
SCOPE.Close lda #'F' define FRAME SIZE SCOPE.Close .DO _DBG_SCOPE=1
jsr SYM.NewLabelA
bcs .99
.DO _DBG_SCOPE=1
>PUSHW L.MSG.DEBUG.SCOUT >PUSHW L.MSG.DEBUG.SCOUT
jsr SCOPE.Push jsr SCOPE.Push
.FIN .FIN
@ -61,10 +60,11 @@ SCOPE.Close lda #'F' define FRAME SIZE
.DO _DBG_SCOPE=1 .DO _DBG_SCOPE=1
>PUSHB LocalPtr >PUSHB LocalPtr
>PUSHB LocalFrame
jsr SCOPE.Push jsr SCOPE.Push
>PUSHBI 5 >PUSHBI 6
>SYSCALL PrintF >SYSCALL PrintF
* >DEBUG >DEBUG
.FIN .FIN
clc clc

View File

@ -145,10 +145,10 @@ STMT.POP.99 rts
*-------------------------------------- *--------------------------------------
STMT.CPStmt.END ldy CStackPtr STMT.CPStmt.END ldy CStackPtr
beq STMT.POP.9 beq STMT.POP.9
lda (ZPCCStack),y lda (ZPCCStack),y
bpl .1 bpl .1
jmp F.Def.END local F context jmp F.Def.END local F context
.1 iny .1 iny
@ -156,38 +156,24 @@ STMT.CPStmt.END ldy CStackPtr
cmp #'}' must be '}' on stack.... cmp #'}' must be '}' on stack....
bne STMT.POP.9 bne STMT.POP.9
jsr SCOPE.Close
bcs STMT.POP.99
*-------------------------------------- *--------------------------------------
STMT.End ldy CStackPtr CPS.KW STMT.End ldy CStackPtr CPS.KW
lda (ZPCCStack),y lda (ZPCCStack),y
tax tax
jmp (J.CC.KW.END,x) jmp (J.CC.KW.END,x)
*-------------------------------------- *--------------------------------------
STMT.Close ldy CStackPtr
iny
iny CPS.LOCAL
lda (ZPCCStack),y
sta LocalPtr
lda CStackPtr
clc
adc #CPS
sta CStackPtr
.8 clc
.99 rts
*--------------------------------------
STMT.NewCPS00 lda #0 STMT.NewCPS00 lda #0
jsr CC.Push jsr CC.Push CPS.hMEM
bcs STMT.NewCPS.RTS bcs STMT.NewCPS.RTS
jsr CC.Push jsr CC.Push CPS.MemPtr
bcs STMT.NewCPS.RTS bcs STMT.NewCPS.RTS
STMT.NewCPS lda LocalPtr Locals STMT.NewCPS lda LocalFrame
jsr CC.Push
bcs .99
lda LocalPtr
jsr CC.Push jsr CC.Push
bcs .99 bcs .99
@ -215,6 +201,15 @@ STMT.SetCPSType jsr CORE.GetNCharNBNL
jsr SCOPE.New jsr SCOPE.New
bcs .99 bcs .99
lda #'F'
jsr SYM.LookupLabelA
bcs .99
txa
jsr CODE.nAddLocal
bcs .99
ldx #'}' ldx #'}'
.1 txa .1 txa
@ -229,6 +224,38 @@ STMT.SetCPSType jsr CORE.GetNCharNBNL
sec sec
.99 rts .99 rts
*-------------------------------------- *--------------------------------------
STMT.Close ldy CStackPtr CPS.KW
iny CPS.TERM
lda (ZPCCStack),y
cmp #'}'
bne .1
lda #'F' define FRAME SIZE
jsr SYM.NewLabelA
bcs .99
lda CStackPtr
clc
adc #CPS.LocalPtr
tay
lda (ZPCCStack),y
sta LocalPtr
iny CPS.LocalFrame
lda (ZPCCStack),y
sta LocalFrame
jsr SCOPE.Close
bcs .99
.1 lda CStackPtr
clc
adc #CPS
sta CStackPtr
.8 clc
.99 rts
*--------------------------------------
MAN MAN
SAVE usr/src/bin/cc.s.stmt SAVE usr/src/bin/cc.s.stmt
LOAD usr/src/bin/cc.s LOAD usr/src/bin/cc.s

View File

@ -138,7 +138,7 @@ SYM.SetAddr ldy #SYM.SizeOf
ora (ZPSymBufPtr),y ora (ZPSymBufPtr),y
bne .1 bne .1
jsr SYM.GetSymSizeOfInAXC jsr SYM.GetSymSizeOfInAX
jsr SYM.SetSizeOf jsr SYM.SetSizeOf
.1 ldy #SYM.Q .1 ldy #SYM.Q
@ -187,9 +187,9 @@ SYM.SetAddrL ldy #SYM.SizeOf+1
lda LocalPtr lda LocalPtr
tax tax
clc clc
dey SYM.SizeOf dey SYM.SizeOf
adc (ZPSymBufPtr),y adc (ZPSymBufPtr),y
bcs .9 bcs .9
@ -200,6 +200,13 @@ SYM.SetAddrL ldy #SYM.SizeOf+1
ldy #SYM.Addr ldy #SYM.Addr
sta (ZPSymBufPtr),y sta (ZPSymBufPtr),y
ldy #SYM.SizeOf
lda (ZPSymBufPtr),y
clc
adc LocalFrame
sta LocalFrame
clc clc
rts rts
@ -602,9 +609,13 @@ SYM.NewLabelA bit bPass2
cmp #'F' cmp #'F'
bne .1 bne .1
lda LocalPtr lda LocalFrame
ldy #SYM.Addr ldy #SYM.Addr
sta (ZPSymBufPtr),y sta (ZPSymBufPtr),y
lda #SYM.SC.AUTO
ldy #SYM.SC
sta (ZPSymBufPtr),y
bra .2 bra .2
.1 jsr SYM.SetAddrCCode .1 jsr SYM.SetAddrCCode
@ -623,6 +634,10 @@ SYM.NewLabelA bit bPass2
>PUSHA >PUSHA
>SYSCALL SListAddData >SYSCALL SListAddData
.DO _DBG_SYM=1
bcs .99
jsr SYM.DEBUG2
.FIN
.99 rts .99 rts
*-------------------------------------- *--------------------------------------
SYM.LookupLabelA SYM.LookupLabelA
@ -765,7 +780,7 @@ SYM.LookupCheckTQ
*-------------------------------------- *--------------------------------------
* on RT stack : Addr,value * on RT stack : Addr,value
*-------------------------------------- *--------------------------------------
SYM.PopValue jsr SYM.GetYASizeOfInAXC SYM.PopValue jsr SYM.GetYASizeOfInAX
tax tax
dex dex
bne .1 bne .1
@ -797,9 +812,9 @@ SYM.GetTypeInYA ldy #SYM.Q
pla pla
rts rts
*-------------------------------------- *--------------------------------------
* out : A,X,C = size * out : A,X = size
*-------------------------------------- *--------------------------------------
SYM.GetSymSizeOfInAXC SYM.GetSymSizeOfInAX
ldy #SYM.Q ldy #SYM.Q
lda (ZPSymBufPtr),y lda (ZPSymBufPtr),y
pha pha
@ -807,7 +822,7 @@ SYM.GetSymSizeOfInAXC
tay tay
pla pla
SYM.GetYASizeOfInAXC SYM.GetYASizeOfInAX
bit #SYM.Q.PPPOINTER bit #SYM.Q.PPPOINTER
beq .1 beq .1
@ -888,7 +903,7 @@ SYM.SetAddrYA phy
rts rts
*-------------------------------------- *--------------------------------------
.DO _DBG_SYM=1 .DO _DBG_SYM=1
SYM.DEBUG0 >PUSHW L.MSG.DEBUG.SYM0 SYM.DEBUG0 >PUSHW L.MSG.DEBUG.SYMN
>PUSHW.G CC.SymID >PUSHW.G CC.SymID
jsr SCOPE.Push jsr SCOPE.Push
lda (ZPSymBufPtr) lda (ZPSymBufPtr)
@ -898,17 +913,28 @@ SYM.DEBUG0 >PUSHW L.MSG.DEBUG.SYM0
>PUSHA >PUSHA
>PUSHBI 6 >PUSHBI 6
>SYSCALL Printf >SYSCALL Printf
>DEBUG
rts rts
SYM.DEBUG1 >PUSHW L.MSG.DEBUG.SYM1 SYM.DEBUG1 >PUSHW L.MSG.DEBUG.SYMU
>PUSHW.G CC.SymID >PUSHW.G CC.SymID
>PUSHBI 2 lda (ZPSymBufPtr)
>PUSHA
ldy #1
lda (ZPSymBufPtr),y
>PUSHA
>PUSHBI 4
>SYSCALL Printf >SYSCALL Printf
rts rts
SYM.DEBUG2 >PUSHW L.MSG.DEBUG.SYM2 SYM.DEBUG2 >PUSHW L.MSG.DEBUG.SYMS
>PUSHW.G CC.SymID >PUSHW.G CC.SymID
>PUSHBI 2 lda (ZPSymBufPtr)
>PUSHA
ldy #1
lda (ZPSymBufPtr),y
>PUSHA
>PUSHBI 4
>SYSCALL Printf >SYSCALL Printf
rts rts
.FIN .FIN

View File

@ -11,7 +11,7 @@ NEW
.INB inc/mli.e.i .INB inc/mli.e.i
*-------------------------------------- *--------------------------------------
_DBG_SYM .EQ 0 _DBG_SYM .EQ 0
_DBG_SCOPE .EQ 1 _DBG_SCOPE .EQ 0
_DBG_OUT .EQ 0 _DBG_OUT .EQ 0
*-------------------------------------- *--------------------------------------
FILES.MAX .EQ 4 FILES.MAX .EQ 4
@ -55,7 +55,7 @@ SYM.SizeOf .EQ 4
SYM.Addr .EQ 6 SYM.Addr .EQ 6
SYM.BitO .EQ 8 SYM.BitO .EQ 8
SYM.BitW .EQ 9 SYM.BitW .EQ 9
* SYM.ArgSize .EQ 10
* *
* *
SYM.Def .EQ 14 Funtions : fTQ,a1TQ,a2TQ.... SYM.Def .EQ 14 Funtions : fTQ,a1TQ,a2TQ....
@ -70,13 +70,14 @@ SU.F.BitO .EQ 4
SU.F.BitW .EQ 5 SU.F.BitW .EQ 5
SU.F.Name .EQ 6 SU.F.Name .EQ 6
*-------------------------------------- *--------------------------------------
CPS.hMEM .EQ 4 switch/case CPS.hMEM .EQ 5 switch/case
CPS.Ptr .EQ 3 CPS.MemPtr .EQ 4
CPS.LOCAL .EQ 2 CPS.LocalFrame .EQ 3
CPS.LocalPtr .EQ 2
CPS.TERM .EQ 1 CPS.TERM .EQ 1
CPS.KW .EQ 0 CPS.KW .EQ 0
* *
CPS .EQ 5 CPS .EQ 6
*-------------------------------------- *--------------------------------------
*-------------------------------------- *--------------------------------------
@ -100,13 +101,13 @@ ZPLineBufPtr .BS 2
ZPLookupPtr .BS 2 ZPLookupPtr .BS 2
CStackPtr .BS 1 CStackPtr .BS 1
LocalPtr .BS 1 LocalPtr .BS 1
LocalFrame .BS 1
ScopeIdx .BS 1 ScopeIdx .BS 1
bLocalScope .BS 1
ZPSymBufPtr .BS 2 ZPSymBufPtr .BS 2
ZPLookupSymPtr .BS 2 ZPLookupSymPtr .BS 2
bInitCode .BS 1 bLocalScope .BS 1
StmtPreOp .BS 1 StmtPreOp .BS 1
ExpState .BS 1 ExpState .BS 1
*ExpState.VinYA .EQ $10 *ExpState.VinYA .EQ $10
@ -145,9 +146,9 @@ L.MSG.LINKING2 .DA MSG.LINKING2
L.MSG.GENERATING .DA MSG.GENERATING L.MSG.GENERATING .DA MSG.GENERATING
L.MSG.DEBUG .DA MSG.DEBUG L.MSG.DEBUG .DA MSG.DEBUG
.DO _DBG_SYM=1 .DO _DBG_SYM=1
L.MSG.DEBUG.SYM0 .DA MSG.DEBUG.SYM0 L.MSG.DEBUG.SYMN .DA MSG.DEBUG.SYMN
L.MSG.DEBUG.SYM1 .DA MSG.DEBUG.SYM1 L.MSG.DEBUG.SYMU .DA MSG.DEBUG.SYMU
L.MSG.DEBUG.SYM2 .DA MSG.DEBUG.SYM2 L.MSG.DEBUG.SYMS .DA MSG.DEBUG.SYMS
.FIN .FIN
.DO _DBG_SCOPE=1 .DO _DBG_SCOPE=1
L.MSG.DEBUG.SCIN .DA MSG.DEBUG.SCIN L.MSG.DEBUG.SCIN .DA MSG.DEBUG.SCIN
@ -158,7 +159,7 @@ L.MSG.DEBUG.SCOUT .DA MSG.DEBUG.SCOUT
L.MSG.DEBUG.CSOUT .DA MSG.DEBUG.CSOUT L.MSG.DEBUG.CSOUT .DA MSG.DEBUG.CSOUT
L.MSG.DEBUG.OUT .DA MSG.DEBUG.OUT L.MSG.DEBUG.OUT .DA MSG.DEBUG.OUT
.FIN .FIN
L.MSG.TRACE .DA MSG.TRACE L.MSG.VERBOSE .DA MSG.VERBOSE
L.MSG.RTSTK .DA MSG.RTSTK L.MSG.RTSTK .DA MSG.RTSTK
L.MSG.ERROR .DA MSG.ERROR L.MSG.ERROR .DA MSG.ERROR
L.MSG.SUMMARY .DA MSG.SUMMARY L.MSG.SUMMARY .DA MSG.SUMMARY
@ -532,12 +533,13 @@ CS.QUIT jsr CODE.Quit
.8 clc .8 clc
rts rts
*-------------------------------------- *--------------------------------------
PrintTraceMsg 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
>PUSHB LocalPtr >PUSHB LocalPtr
>PUSHBI 3 >PUSHB LocalFrame
>PUSHBI 4
>SYSCALL PrintF >SYSCALL PrintF
* >DEBUG * >DEBUG
.FIN .FIN
@ -547,7 +549,7 @@ PrintTraceMsg
lda (pPS),y lda (pPS),y
>PUSHA >PUSHA
>PUSHW L.MSG.TRACE >PUSHW L.MSG.VERBOSE
>LDA.G LineCntPtr >LDA.G LineCntPtr
inc inc
@ -612,10 +614,10 @@ PrintErrorMsg >LDA.G CC.hDefineBuf
>LDYA.G CC.SaveDefine >LDYA.G CC.SaveDefine
>STYA ZPLineBufPtr >STYA ZPLineBufPtr
.10 >LDA.G bTrace .10 >LDA.G bVerbose
bmi .1 bmi .1
jsr PrintTraceMsg jsr PrintVerboseMsg
.1 lda ZPLineBufPtr .1 lda ZPLineBufPtr
@ -683,8 +685,8 @@ CS.END
*-------------------------------------- *--------------------------------------
MSG.GREETINGS .CZ "\r\nA2osX C Compiler %d.%d\r\n\r\n" MSG.GREETINGS .CZ "\r\nA2osX C Compiler %d.%d\r\n\r\n"
MSG.USAGE .CS "Usage : CC <option> srcfile.c dstfile\r\n" MSG.USAGE .CS "Usage : CC <option> srcfile.c dstfile\r\n"
.CS " -D : Debug Mode\r\n" .CS " -D : Debug mode\r\n"
.CS " -T : Trace On\r\n" .CS " -V : Verbose output\r\n"
.CZ " -L Libname1 -L Libname2 ...\r\n" .CZ " -L Libname1 -L Libname2 ...\r\n"
MSG.READING .CZ "*** Reading file: %s\r\n" MSG.READING .CZ "*** Reading file: %s\r\n"
MSG.LINKING .CZ "*** Linking..." MSG.LINKING .CZ "*** Linking..."
@ -693,28 +695,28 @@ MSG.GENERATING .CZ "*** Generating: %s\r\n"
MSG.DEBUG .CS "*** pCode=%H, pConst=%H, pData=%H, pStack=%H\r\n" MSG.DEBUG .CS "*** pCode=%H, pConst=%H, pData=%H, pStack=%H\r\n"
.CZ " LSP=%h, CSP=%H:%h>%h:%h, ScopeIdx=%h\r\n" .CZ " LSP=%h, CSP=%H:%h>%h:%h, ScopeIdx=%h\r\n"
.DO _DBG_SYM=1 .DO _DBG_SYM=1
MSG.DEBUG.SYM0 .CZ "New SymID=%H[%H],T=%h,Q=%h " MSG.DEBUG.SYMN .CZ "New SymID=%H[%H],T=%h,Q=%h "
MSG.DEBUG.SYM1 .CZ "Upd SymID=%H\r\n" MSG.DEBUG.SYMU .CZ "Upd SymID=%H,T=%h,Q=%h\r\n"
MSG.DEBUG.SYM2 .CZ "Sto SymID=%H\r\n" MSG.DEBUG.SYMS .CZ "Sto SymID=%H,T=%h,Q=%h\r\n"
.FIN .FIN
.DO _DBG_SCOPE=1 .DO _DBG_SCOPE=1
MSG.DEBUG.SCIN .CZ "Scope { %H (%h)\r\n" MSG.DEBUG.SCIN .CZ "Scope { %H (%h:%h)\r\n"
MSG.DEBUG.SC .CZ "Scope = %H (%h)\r\n" MSG.DEBUG.SC .CZ "Scope = %H (%h:%h)\r\n"
MSG.DEBUG.SCOUT .CZ "Scope } %H (%h) -> %H\r\n" MSG.DEBUG.SCOUT .CZ "Scope } %H (%h:%h) -> %H\r\n"
.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.TRACE .CZ "%5D> %s\r\n" MSG.VERBOSE .CZ "%5D> %s\r\n"
MSG.RTSTK .CZ "<pBase=%H, pVar=%H, (pVar)=%H, pStack=%H>\r\n" MSG.RTSTK .CZ "<pBase=%H, pVar=%H, (pVar)=%H, pStack=%H>\r\n"
MSG.ERROR .CZ " %s^\r\n" MSG.ERROR .CZ " %s^\r\n"
MSG.SUMMARY .CZ "*** Compilation OK : Code size=%5D, Const size=%5D, Data size=%5D\r\n" MSG.SUMMARY .CZ "*** Compilation OK : Code size=%5D, Const size=%5D, Data size=%5D\r\n"
MSG.NOMAIN .CZ "*** No 'main()' function defined." MSG.NOMAIN .CZ "*** No 'main()' function defined."
MSG.ALLDONE .CZ "*** All Done." MSG.ALLDONE .CZ "*** All Done."
*-------------------------------------- *--------------------------------------
OptionList .AS "DdTtLl" OptionList .AS "DdVvLl"
OptionVars .DA #bDebug,#bDebug,#bTrace,#bTrace OptionVars .DA #bDebug,#bDebug,#bVerbose,#bVerbose
*-------------------------------------- *--------------------------------------
ENV.INCLUDE .AZ "INCLUDE" ENV.INCLUDE .AZ "INCLUDE"
ENV.LIB .AZ "LIB" ENV.LIB .AZ "LIB"
@ -1139,7 +1141,7 @@ DS.START
PathBuf .BS MLI.MAXPATH+1 PathBuf .BS MLI.MAXPATH+1
bDebug .BS 1 bDebug .BS 1
bTrace .BS 1 bVerbose .BS 1
LibCount .BS 1 LibCount .BS 1
hLibNs .BS LIBS.MAX hLibNs .BS LIBS.MAX
@ -1174,6 +1176,8 @@ CC.hSyms .BS 1
CC.ScopeID .BS 2 CC.ScopeID .BS 2
CC.ScopeIDs .BS 2+SCOPE.MAX*2 2 bytes Global+ MAX locals CC.ScopeIDs .BS 2+SCOPE.MAX*2 2 bytes Global+ MAX locals
CC.bInitCode .BS 1
CC.Label .BS 3 _X\0 CC.Label .BS 3 _X\0
*-------------------------------------- *--------------------------------------
CC.hSymBuf .BS 1 CC.hSymBuf .BS 1

View File

@ -15,19 +15,26 @@ X.ENTER.SUBDIR .EQ 1
X.COPY.TO.DEST .EQ 0 X.COPY.TO.DEST .EQ 0
X.DELETE.SOURCE .EQ 0 X.DELETE.SOURCE .EQ 0
*-------------------------------------- *--------------------------------------
.DUMMY .DUMMY
.OR ZPBIN .OR ZPBIN
ZS.START ZS.START
ZPPtr1 .BS 2 ZPPtr1 .BS 2
ZPPtr2 .BS 2 ZPPtr2 .BS 2
ZPFileName .BS 2 ZPFileName .BS 2
ZPFileStat .BS 2 ZPFileStat .BS 2
ZPPW .BS 2
hLineBuf .BS 1 bPass2 .BS 1
ZPLineBuf .BS 2
bPass2 .BS 1 bDirLevel .BS 1
bDirLevel .BS 1 bCRLF .BS 1
bIsTTY .BS 1
bPause .BS 1
bSummary .BS 1
bAllFiles .BS 1
ArgCount .BS 1
ArgDir .BS 1
ZS.END ZS.END
.ED .ED
*-------------------------------------- *--------------------------------------
@ -35,14 +42,14 @@ ZS.END
*-------------------------------------- *--------------------------------------
CS.START cld CS.START cld
jmp (.1,x) jmp (.1,x)
.DA #$61 6502,Level 1 (65c02) .DA #$61 6502,Level 1 (65c02)
.DA #1 BIN Layout Version 1 .DA #1 BIN Layout Version 1
.DA #0 S.PS.F.EVENT .DA #0 S.PS.F.EVENT
.DA #0 .DA #0
.DA CS.END-CS.START Code Size (without Constants) .DA CS.END-CS.START Code Size (without Constants)
.DA DS.END-DS.START Data SegmentSize .DA DS.END-DS.START Data SegmentSize
.DA #64 Stack Size .DA #64 Stack Size
.DA #ZS.END-ZS.START Zero Page Size .DA #ZS.END-ZS.START Zero Page Size
.DA 0 .DA 0
*-------------------------------------- *--------------------------------------
* Relocation Table * Relocation Table
@ -71,65 +78,66 @@ J.CS.RUN.PRINT .DA CS.RUN.PRINT.REG
CS.INIT clc CS.INIT clc
rts rts
*-------------------------------------- *--------------------------------------
CS.RUN stz bIsTTY CS.RUN jsr CS.RUN.SetCRLF
jsr CS.RUN.ISATTY
.1 stz bDirLevel .1 inc ArgCount
>INC.G ArgCount lda ArgCount
>SYSCALL ArgV >SYSCALL ArgV
bcs .6 bcs .6
>STYA ZPPtr1
>STYA ZPPtr1
lda (ZPPtr1) lda (ZPPtr1)
cmp #'-' cmp #'-'
bne .4 bne .4
ldy #1
ldy #1
lda (ZPPtr1),y lda (ZPPtr1),y
beq .9
ldx #OptionVars-OptionList-1 ldy #OptionVars-OptionList-1
.2 cmp OptionList,x .2 cmp OptionList,y
beq .3 beq .3
dex
dey
bpl .2 bpl .2
>PUSHW L.MSG.USAGE .9 >LDYA L.MSG.USAGE
>PUSHBI 0 >SYSCALL PutS
>SYSCALL PrintF
lda #E.SYN
sec
rts
.3 ldy OptionVars,x lda #E.SYN
lda #$80 sec
sta (pData),y .99 rts
.3 ldx OptionVars,y
sec
ror $0,x
bra .1 bra .1
.4 >LDYA ZPPtr1
.4 lda ArgDir
bne .9
lda ArgCount
sta ArgDir
>LDYA ZPPtr1
jsr InitSrcDirYA jsr InitSrcDirYA
bcc .1 scan for any other args bcc .1 scan for any other args
.9 rts
.6 >LDA.G index do we have a Source dir ? rts
*--------------------------------------
.6 lda ArgDir do we have a Source dir ?
bne .8 bne .8
ldy #S.PS.hCWD ldy #S.PS.hCWD
lda (pPS),y lda (pPS),y
>SYSCALL GetMemPtr >SYSCALL GetMemPtr
jsr InitSrcDirYA jsr InitSrcDirYA
bcs .9 bcs .99
.8 >PUSHEA.G TIME.SysTime .8 >PUSHEA.G TIME.SysTime
>SYSCALL Time >SYSCALL Time
>LDYAI S.PW
>SYSCALL GetMem
bcs .9
>STYA ZPPW
txa
>STA.G hPW
>LDYAI 256
>SYSCALL GetMem
bcs .9
>STYA ZPLineBuf
stx hLineBuf
*-------------------------------------- *--------------------------------------
CS.RUN.LOOP stz bPass2 CS.RUN.LOOP stz bPass2
@ -149,13 +157,13 @@ CS.RUN.LOOP stz bPass2
cmp #$13 Ctrl-S cmp #$13 Ctrl-S
bne .3 bne .3
>LDA.G bPause lda bPause
eor #$ff eor #$ff
sta (pData),y sta bPause
bne .1 bne .1
.3 >LDA.G bPause .3 bit bPause
bne .1 bmi .1
jsr GetEntry First entry jsr GetEntry First entry
bcs .9 bcs .9
@ -190,8 +198,8 @@ CS.RUN.LOOP stz bPass2
dec bPass2 dec bPass2
bra .1 bra .1
.9 >LDA.G bSummary .9 bit bSummary
bne .91 bmi .91
jsr CS.RUN.PrintDirSumm jsr CS.RUN.PrintDirSumm
jsr CS.RUN.PrintCwd jsr CS.RUN.PrintCwd
@ -206,12 +214,14 @@ CS.RUN.LOOP stz bPass2
jsr GetNextEntry Get next entry jsr GetNextEntry Get next entry
jmp CS.RUN.LOOP Go again jmp CS.RUN.LOOP Go again
.97 >LDA.G bSummary .97 bit bSummary
beq .98 bpl .98
inc bDirLevel inc bDirLevel
jsr CS.RUN.PrintDirSumm jsr CS.RUN.PrintDirSumm
jsr CS.RUN.PrintCwd jsr CS.RUN.PrintBaseDir
jsr CS.RUN.NewLine jsr CS.RUN.NewLine
.98 lda #0 .98 lda #0
sec sec
.99 rts .99 rts
@ -221,69 +231,75 @@ CS.RUN.PRINT.JMP
*-------------------------------------- *--------------------------------------
CS.RUN.PRINT.REG CS.RUN.PRINT.REG
bit bPass2 bit bPass2
bmi .1 bmi .1
clc
rts clc
rts
.1 ldx bDirLevel X is loop ctr bDirLevel..0
.1 ldx bDirLevel X is loop ctr bDirLevel..0
.2 >LEA.G BlkCounters .2 >LEA.G BlkCounters
>STYA ZPPtr1 >STYA ZPPtr1
ldy #S.STAT.BLOCKS+3 Read 32-bit number of blocks ldy #S.STAT.BLOCKS+3 Read 32-bit number of blocks
lda (ZPFileStat),y lda (ZPFileStat),y
pha And push to stack pha And push to stack
dey dey
lda (ZPFileStat),y lda (ZPFileStat),y
pha pha
dey dey
lda (ZPFileStat),y lda (ZPFileStat),y
pha pha
dey dey
lda (ZPFileStat),y lda (ZPFileStat),y
pha pha
txa Get loop counter txa Get loop counter
asl x2 asl x2
asl x2 again asl x2 again
tay tay
pla Do 32-bit add pla Do 32-bit add
clc clc
adc (ZPPtr1),y LSB adc (ZPPtr1),y LSB
sta (ZPPtr1),y sta (ZPPtr1),y
pla pla
iny iny
adc (ZPPtr1),y adc (ZPPtr1),y
sta (ZPPtr1),y sta (ZPPtr1),y
pla pla
iny iny
adc (ZPPtr1),y adc (ZPPtr1),y
sta (ZPPtr1),y sta (ZPPtr1),y
pla pla
iny iny
adc (ZPPtr1),y MSB adc (ZPPtr1),y MSB
sta (ZPPtr1),y sta (ZPPtr1),y
dex Decrement loop counter dex Decrement loop counter
cpx #$ff Stop if -1 cpx #$ff Stop if -1
bne .2 bne .2
>LDA.G bAllFiles bit bAllFiles
beq .8 bpl .8
>PUSHW L.MSG.REG1
ldy #S.STAT.BLOCKS+3
ldx #4
>PUSHW L.MSG.REG1
ldy #S.STAT.BLOCKS+3
ldx #4
.3 lda (ZPFileStat),y .3 lda (ZPFileStat),y
>PUSHA >PUSHA
dey dey
dex dex
bne .3 (4) bne .3
>PUSHBI 4 >PUSHBI 4
>SYSCALL PrintF >SYSCALL PrintF
bcs .9 bcs .9
jsr CS.RUN.PrintCwd jsr CS.RUN.PrintCwd
>PUSHW L.MSG.REG2 >PUSHW L.MSG.REG2
>PUSHW ZPFileName (2) >PUSHW ZPFileName
>PUSHBI 2 >PUSHBI 2
>SYSCALL PrintF >SYSCALL PrintF
bcs .9 bcs .9
jmp CS.RUN.NewLine jmp CS.RUN.NewLine
.8 clc .8 clc
@ -344,46 +360,45 @@ CS.RUN.PRINT.BDEV
.8 clc .8 clc
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
CS.RUN.PrintDirSumm CS.RUN.PrintDirSumm
>LEA.G BlkCounters >PUSHW L.MSG.DIRSUMM
>STYA ZPPtr1
lda bDirLevel lda bDirLevel
asl asl
asl asl
ora #3
clc clc
adc ZPPtr1 adc #BlkCounters
sta ZPPtr1 tay
lda #$00
adc ZPPtr1+1 ldx #3
sta ZPPtr1+1
>PUSHW L.MSG.DIRSUMM .1 >PUSHB (pData),y
ldy #$03 lda #0
lda (ZPPtr1),y sta (pData),y
>PUSHA dey
dey dex
lda (ZPPtr1),y bpl .1
>PUSHA
dey
lda (ZPPtr1),y
>PUSHA
dey
lda (ZPPtr1),y
>PUSHA
>PUSHBI 4 >PUSHBI 4
>SYSCALL PrintF >SYSCALL PrintF
ldy #$03
lda #$00
sta (ZPPtr1),y
dey
sta (ZPPtr1),y
dey
sta (ZPPtr1),y
dey
sta (ZPPtr1),y
rts rts
*-------------------------------------- *--------------------------------------
CS.RUN.PrintBaseDir
lda ArgDir
beq .1
>SYSCALL ArgV
>SYSCALL PutS
rts
.1 ldy #S.PS.hCWD
lda (pPS),y
>SYSCALL GetMemPtr
>SYSCALL PutS
rts
*--------------------------------------
CS.RUN.PrintCwd >PUSHW L.MSG.CWD CS.RUN.PrintCwd >PUSHW L.MSG.CWD
ldy #hSrcBasePath ldy #hSrcBasePath
lda (pData),y lda (pData),y
@ -395,39 +410,38 @@ CS.RUN.PrintCwd >PUSHW L.MSG.CWD
*-------------------------------------- *--------------------------------------
CS.RUN.NewLine lda #C.CR CS.RUN.NewLine lda #C.CR
>SYSCALL PutChar >SYSCALL PutChar
lda bIsTTY lda bCRLF
beq .9 beq .9
lda #C.LF lda #C.LF
>SYSCALL PutChar >SYSCALL PutChar
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
CS.RUN.ISATTY ldy #S.PS.hStdOut CS.RUN.SetCRLF ldy #S.PS.hStdOut
lda (pPS),y lda (pPS),y
tax tax
lda hFDs-1,x lda hFDs-1,x
>SYSCALL GetMemPtr >SYSCALL GetMemPtr
>STYA ZPPtr1 >STYA ZPPtr1
lda (ZPPtr1) lda (ZPPtr1) #S.FD.T.REG ?
beq .9 beq .9 no CRLF if REG
inc bIsTTY
.9 rts inc bCRLF
.9 rts
*-------------------------------------- *--------------------------------------
CS.DOEVENT sec CS.DOEVENT sec
rts rts
*-------------------------------------- *--------------------------------------
CS.QUIT jsr LeaveSubDir CS.QUIT jsr LeaveSubDir
bcc CS.QUIT bcc CS.QUIT
>LDA.G hFilter
beq .3
>SYSCALL FreeMem
.3 >LDA.G hPW
beq .4
>SYSCALL FreeMem
.4 lda hLineBuf
beq .8
>SYSCALL FreeMem
.8 clc >LDA.G hFilter
beq .8
>SYSCALL FreeMem
.8 clc
rts rts
*-------------------------------------- *--------------------------------------
.INB usr/src/shared/x.fileenum.s .INB usr/src/shared/x.fileenum.s
@ -450,12 +464,7 @@ MSG.BDEV .CZ "\e[32m%s/\e[0m"
.DUMMY .DUMMY
.OR 0 .OR 0
DS.START DS.START
ArgCount .BS 1
TIME.SysTime .BS S.TIME TIME.SysTime .BS S.TIME
bPause .BS 1
bSummary .BS 1
bAllFiles .BS 1
hPW .BS 1
BlkCounters .BS 64 Array of 32 bit integers, size 16 BlkCounters .BS 64 Array of 32 bit integers, size 16
.INB usr/src/shared/x.fileenum.g .INB usr/src/shared/x.fileenum.g
DS.END .ED DS.END .ED

View File

@ -59,7 +59,7 @@ Ctrl.A >STZ.G bUpdateStatus
bcs .9 bcs .9
lda (ZPPTR1) lda (ZPPTR1)
beq .8 beq .7
>PUSHW L.MSG.HELPLINE >PUSHW L.MSG.HELPLINE
>PUSHW ZPPTR1 >PUSHW ZPPTR1
@ -74,10 +74,11 @@ Ctrl.A >STZ.G bUpdateStatus
adc ZPPTR1 adc ZPPTR1
sta ZPPTR1 sta ZPPTR1
bcc .1 bcc .1
inc ZPPTR1+1 inc ZPPTR1+1
bra .1 bra .1
.8 jsr SCRN.ResetStatusBar .7 jsr SCRN.ResetStatusBar
>PUSHW LineBufPtr >PUSHW LineBufPtr
>PUSHW L.MSG.STATUSBAR.H >PUSHW L.MSG.STATUSBAR.H
@ -88,8 +89,10 @@ Ctrl.A >STZ.G bUpdateStatus
jsr SCRN.LineBufOut jsr SCRN.LineBufOut
bcs .9 bcs .9
jsr GetCh .8 jsr GetCh
bcs .9 bcs .9
beq .8
jmp SCRN.Repaint jmp SCRN.Repaint

View File

@ -705,6 +705,9 @@ DLG.CTRL.CharIn.TB
cmp #C.DEL cmp #C.DEL
beq .5 beq .5
cmp #C.SPACE
bcc .9
pha pha
iny iny
@ -777,6 +780,9 @@ DLG.CTRL.CharIn.TB
.8 clc .8 clc
rts rts
.9 sec
rts
*-------------------------------------- *--------------------------------------
DLG.CTRL.CharIn.OL DLG.CTRL.CharIn.OL
cmp #C.SPACE cmp #C.SPACE

View File

@ -35,12 +35,10 @@ FILE.Load jsr FILE.RealPath
.1 ldx #S.FI.T.ASM .1 ldx #S.FI.T.ASM
lda #O.RDONLY lda #O.RDONLY
jsr FILE.OpenAX jsr FILE.OpenAX
bcs .8 bcs .9
jsr FILE.Load.ASM jsr FILE.Load.ASM
jmp FILE.Close jmp FILE.Close
.8 clc
.9 rts .9 rts
*-------------------------------------- *--------------------------------------

View File

@ -150,10 +150,14 @@ CS.RUN >PUSHW L.MSG.TERMCAP
>SYSCALL PrintF Send Query for term W & H >SYSCALL PrintF Send Query for term W & H
bcs CS.INIT.RTS bcs CS.INIT.RTS
.1 >SYSCALL GetChar .1 jsr GetCh
bcs CS.INIT.RTS bcs CS.INIT.RTS
jsr CharIn beq .1
>SYSCALL PutChar
bcs CS.INIT.RTS
>LDA.G ScreenW Wait for Response from terminal for W & H >LDA.G ScreenW Wait for Response from terminal for W & H
beq .1 beq .1
@ -196,10 +200,12 @@ CS.RUN >PUSHW L.MSG.TERMCAP
CS.RUN.LOOP jsr GetCh CS.RUN.LOOP jsr GetCh
bcs CS.RUN.RTS I/O error bcs CS.RUN.RTS I/O error
jsr CharIn beq .8
jsr CS.RUN.LOOP.CharIn
bcs .9 bcs .9
>LDA.G bExit .8 >LDA.G bExit
bpl CS.RUN.LOOP bpl CS.RUN.LOOP
lda #0 lda #0
@ -212,6 +218,29 @@ CS.RUN.LOOP jsr GetCh
sec sec
CS.RUN.RTS rts CS.RUN.RTS rts
*-------------------------------------- *--------------------------------------
CS.RUN.LOOP.CharIn
cmp #C.DEL
bne .1
jmp Ctrl.DEL
.1 cmp #C.SPACE
bcc .2
jsr BUF.InsertA
bcs .9
jsr SCRN.UpdateCurrentEOL
bcs .9
jmp Ctrl.FS
.2 asl
tax
jmp (J.CTRL,x)
.9 rts
*--------------------------------------
CS.RUN.GetBuf64 >LDYAI 64 CS.RUN.GetBuf64 >LDYAI 64
>SYSCALL GetMem >SYSCALL GetMem
bcs .9 bcs .9
@ -238,39 +267,38 @@ CS.DOEVENT lda (pEvent)
rts rts
*-------------------------------------- *--------------------------------------
CS.QUIT ldy #hLineBuf CS.QUIT ldy #hLineBuf
jsr .8 jsr .7
ldy #hBuf ldy #hBuf
jsr .8 jsr .7
ldy #hBufBackup ldy #hBufBackup
jsr .8 jsr .7
ldy #hClipBoard ldy #hClipBoard
jsr .8 jsr .7
ldy #hFileName ldy #hFileName
jsr .8 jsr .7
ldy #hFind ldy #hFind
jsr .8 jsr .7
ldy #hReplace ldy #hReplace
.8 lda (pData),y .7 lda (pData),y
beq .9 beq .8
>SYSCALL FreeMem >SYSCALL FreeMem
.9 .8 clc
CS.QUIT.CLCRTS clc
rts rts
*-------------------------------------- *--------------------------------------
GetCh >SYSCALL GetChar GetCh >SYSCALL GetChar
bcs .9 bcs .9
cmp #C.CR cmp #C.CR
bne CS.QUIT.CLCRTS bne GetChTranslate
ldy #S.PS.hStdIn Check for any extra LF ldy #S.PS.hStdIn Check for any extra LF
lda (pPS),y lda (pPS),y
@ -279,14 +307,17 @@ GetCh >SYSCALL GetChar
tay tay
bne .8 bne .8
>SYSCALL GetChar >SYSCALL GetChar
bcs .9 bcs .9
.8 lda #C.CR .8 lda #C.CR
* clc
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
CharIn tax GetChTranslate tax
>LDA.G bEscMode >LDA.G bEscMode
bpl .1 Not in ESC mode bpl .1 Not in ESC mode
@ -296,6 +327,7 @@ CharIn tax
lda (pData) #EscBufferPtr lda (pData) #EscBufferPtr
bne .19 buffer not empty...bad SEQ bne .19 buffer not empty...bad SEQ
clc clc
rts rts
@ -316,46 +348,28 @@ CharIn tax
sta (pData),y sta (pData),y
cmp #64 cmp #64
bcc .8 not a letter...SEQ is incomplete bcc .7 not a letter...SEQ is incomplete
jsr CharIn.Esc jsr GetCh.Esc
bcs .8 Not translated, exit bcs .8 Not translated, exit
.HS B0 BCS .HS B0 BCS
*-------------------------------------- *--------------------------------------
.1 txa .1 txa
cmp #C.ESC cmp #C.ESC
bne .2 bne .8
lda #$ff lda #$ff
>STA.G bEscMode >STA.G bEscMode
inc inc
sta (pData) #EscBufferPtr sta (pData) #EscBufferPtr
.7 lda #0
.8 clc .8 clc
.9 rts .9 rts
.2 cmp #C.DEL
bne .22
jmp Ctrl.DEL
.22 cmp #C.SPACE
bcc .3
jsr BUF.InsertA
bcs .9
jsr SCRN.UpdateCurrentEOL
bcs .9
jmp Ctrl.FS
.3 asl
tax
jmp (J.CTRL,x)
*-------------------------------------- *--------------------------------------
CharIn.Esc >STZ.G bEscMode GetCh.Esc >STZ.G bEscMode
lda (pData) #EscBufferPtr lda (pData) #EscBufferPtr
tay tay
@ -372,6 +386,7 @@ CharIn.Esc >STZ.G bEscMode
.1 cmp EscChars,x .1 cmp EscChars,x
beq .2 beq .2
dex dex
bpl .1 bpl .1
@ -400,7 +415,7 @@ CharIn.Esc >STZ.G bEscMode
cmp #';' cmp #';'
beq .5 beq .5
jsr CharIn.TmpByte10pA jsr GetCh.TmpByte10pA
bra .4 bra .4
.5 phy .5 phy
@ -426,7 +441,7 @@ CharIn.Esc >STZ.G bEscMode
cmp #'R' cmp #'R'
beq .7 beq .7
jsr CharIn.TmpByte10pA jsr GetCh.TmpByte10pA
bra .6 bra .6
.7 lda TmpByte .7 lda TmpByte
@ -435,7 +450,7 @@ CharIn.Esc >STZ.G bEscMode
sec sec
rts rts
*-------------------------------------- *--------------------------------------
CharIn.TmpByte10pA GetCh.TmpByte10pA
and #$0f and #$0f
pha pha
lda TmpByte lda TmpByte

View File

@ -246,8 +246,8 @@ CS.QUIT clc
rts rts
*-------------------------------------- *--------------------------------------
CS.END CS.END
MSG0 .CZ "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 .CZ "%3d %5s %12s %H " MSG.DEV .CZ "%3d %4s %12s %H "
MSG.DEV.ERR .CZ "[%h] Device Error.\r\n" MSG.DEV.ERR .CZ "[%h] Device Error.\r\n"
MSG.DEV.DIB .CZ "%s $%h/$%h %16S %03d.%03d " MSG.DEV.DIB .CZ "%s $%h/$%h %16S %03d.%03d "
MSG.DEV.B .CZ "%10u\r\n" MSG.DEV.B .CZ "%10u\r\n"
@ -262,8 +262,8 @@ FD.T.DIR .AZ "DIR"
FD.T.CDEV .AZ "CDEV" FD.T.CDEV .AZ "CDEV"
FD.T.BDEV .AZ "BDEV" FD.T.BDEV .AZ "BDEV"
FD.T.LNK .AZ "LNK" FD.T.LNK .AZ "LNK"
FD.T.DSOCK .AZ "DSOCK" FD.T.DSOCK .AZ "DSCK"
FD.T.SSOCK .AZ "SSOCK" FD.T.SSOCK .AZ "SSCK"
FD.T.PIPE .AZ "PIPE" 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

View File

@ -112,16 +112,16 @@ CS.QUIT clc
rts rts
*-------------------------------------- *--------------------------------------
CS.END CS.END
MSG0 .CZ "hFILE hFD Cnt Type Filepath" MSG0 .CZ "hFILE hFD Cnt Type Filepath"
MSG1 .CZ "%3d %3d %3d %5s %s\r\n" MSG1 .CZ "%3d %3d %3d %4s %s\r\n"
MSG.NA .CZ "n/a" MSG.NA .CZ "n/a"
FD.T.REG .CZ "REG" FD.T.REG .CZ "REG"
FD.T.DIR .CZ "DIR" FD.T.DIR .CZ "DIR"
FD.T.CDEV .CZ "CDEV" FD.T.CDEV .CZ "CDEV"
FD.T.BDEV .CZ "BDEV" FD.T.BDEV .CZ "BDEV"
FD.T.LNK .CZ "LNK" FD.T.LNK .CZ "LNK"
FD.T.DSOCK .CZ "DSOCK" FD.T.DSOCK .CZ "DSCK"
FD.T.SSOCK .CZ "SSOCK" FD.T.SSOCK .CZ "SSCK"
FD.T.PIPE .CZ "PIPE" FD.T.PIPE .CZ "PIPE"
*-------------------------------------- *--------------------------------------
.DUMMY .DUMMY

View File

@ -30,6 +30,7 @@ bKernelVersion .BS 1
bKernelBuild .BS 1 bKernelBuild .BS 1
bKernelMode .BS 1 bKernelMode .BS 1
bKernelClk .BS 1 bKernelClk .BS 1
bFSID .BS 1
ZS.END .ED ZS.END .ED
*-------------------------------------- *--------------------------------------
* File Header (16 Bytes) * File Header (16 Bytes)
@ -71,6 +72,8 @@ L.KERNEL.VER .DA KERNEL.VER
L.KERNEL.MODES .DA KERNEL.POLLING L.KERNEL.MODES .DA KERNEL.POLLING
.DA KERNEL.IRQ .DA KERNEL.IRQ
.DA KERNEL.PREEMPT .DA KERNEL.PREEMPT
L.FSID .DA FSID.PRODOS
.DA FSID.FX
.DA 0 .DA 0
*-------------------------------------- *--------------------------------------
CS.INIT clc CS.INIT clc
@ -111,6 +114,7 @@ CS.RUN ldy #S.PS.ARGC
sta bMachineType sta bMachineType
sta bCPUType sta bCPUType
sta bCPUSpeed sta bCPUSpeed
sta bFSID
*-------------------------------------- *--------------------------------------
CS.RUN.PRINT bit bHostName CS.RUN.PRINT bit bHostName
bpl .1 bpl .1
@ -129,22 +133,12 @@ CS.RUN.PRINT bit bHostName
.2 bit bCPUType .2 bit bCPUType
bpl .3 bpl .3
lda A2osX.CPUTYPE jsr CS.RUN.CPUType
asl
and #$0F
tax
>LDYA L.CPUS-2,x
jsr CS.RUN.PRINTYA
.3 bit bCPUSpeed .3 bit bCPUSpeed
bpl .4 bpl .4
>PUSHW L.CPU.SPEED jsr CS.RUN.CPUSpeed
>PUSHW A2osX.CPUSPEED
>PUSHBI 2
jsr CS.RUN.PRINTF
.4 bit bAltCPU .4 bit bAltCPU
bpl .5 bpl .5
@ -156,16 +150,13 @@ CS.RUN.PRINT bit bHostName
.5 bit bKernelVersion .5 bit bKernelVersion
bpl .6 bpl .6
>PUSHW L.KERNEL.VER jsr CS.RUN.KVER
>PUSHW A2osX.KVER
>PUSHBI 2
jsr CS.RUN.PRINTF
.6 bit bKernelBuild .6 bit bKernelBuild
bpl .60 bpl .7
jsr CS.RUN.GetBuild jsr CS.RUN.GetBuild
bcs .60 bcs .7
>LDYA pData >LDYA pData
jsr CS.RUN.PRINTYA jsr CS.RUN.PRINTYA
@ -173,29 +164,28 @@ CS.RUN.PRINT bit bHostName
.60 bit bKernelMode .7 bit bKernelMode
bpl .7
ldx #0
bit A2osX.IRQMode
bpl .61
inx
inx
bit A2osX.F
bvc .61
inx
inx
.61 >LDYA L.KERNEL.MODES,x
jsr CS.RUN.PRINTYA
.7 bit bKernelClk
bpl .8 bpl .8
jsr CS.RUN.KMode
.8 >PUSHW L.MSG.CRLF .8 bit bKernelClk
bpl .9
.9 bit bFSID
bpl .10
jsr CS.RUN.FSID
.10 >PUSHW L.MSG.CRLF
>PUSHBI 0 >PUSHBI 0
>SYSCALL PrintF >SYSCALL PrintF
@ -291,6 +281,49 @@ CS.RUN.TYPESUBT lda A2osX.HWType
.8 rts .8 rts
*-------------------------------------- *--------------------------------------
CS.RUN.FSID ldx #0
bit A2osX.FSID
bpl .1
inx
inx
.1 >LDYA L.FSID,x
jmp CS.RUN.PRINTYA
*--------------------------------------
CS.RUN.KVER >PUSHW L.KERNEL.VER
>PUSHW A2osX.KVER
>PUSHBI 2
jmp CS.RUN.PRINTF
*--------------------------------------
CS.RUN.KMode ldx #0
bit A2osX.IRQMode
bpl .1
inx
inx
bit A2osX.F
bvc .1
inx
inx
.1 >LDYA L.KERNEL.MODES,x
jmp CS.RUN.PRINTYA
*--------------------------------------
CS.RUN.CPUSpeed >PUSHW L.CPU.SPEED
>PUSHW A2osX.CPUSPEED
>PUSHBI 2
jmp CS.RUN.PRINTF
*--------------------------------------
CS.RUN.CPUType lda A2osX.CPUTYPE
asl
and #$0F
tax
>LDYA L.CPUS-2,x
*--------------------------------------
CS.RUN.PRINTYA >PUSHYA CS.RUN.PRINTYA >PUSHYA
>PUSHBI 0 >PUSHBI 0
@ -333,7 +366,7 @@ CS.RUN.CheckOpt ldy #1
*-------------------------------------- *--------------------------------------
CS.END CS.END
*-------------------------------------- *--------------------------------------
OptionList .AS "HhMmCcSsAaVvBbKkZz" OptionList .AS "HhMmCcSsAaVvBbKkZzXx"
OptionVars .DA #bHostName,#bHostName OptionVars .DA #bHostName,#bHostName
.DA #bMachineType,#bMachineType .DA #bMachineType,#bMachineType
.DA #bCPUType,#bCPUType .DA #bCPUType,#bCPUType
@ -343,6 +376,7 @@ OptionVars .DA #bHostName,#bHostName
.DA #bKernelBuild,#bKernelBuild .DA #bKernelBuild,#bKernelBuild
.DA #bKernelMode,#bKernelMode .DA #bKernelMode,#bKernelMode
.DA #bKernelClk,#bKernelClk .DA #bKernelClk,#bKernelClk
.DA #bFSID,#bFSID
*-------------------------------------- *--------------------------------------
MSG.USAGE .CS "Usage : UNAME\r\n" MSG.USAGE .CS "Usage : UNAME\r\n"
.CS " -H : Hostname\r\n" .CS " -H : Hostname\r\n"
@ -354,6 +388,7 @@ MSG.USAGE .CS "Usage : UNAME\r\n"
.CS " -B : Kernel Build\r\n" .CS " -B : Kernel Build\r\n"
.CS " -K : Kernel Mode\r\n" .CS " -K : Kernel Mode\r\n"
.CS " -Z : Kernel Timing\r\n" .CS " -Z : Kernel Timing\r\n"
.CS " -X : ProDOS | FX"
MSG.CRLF .CZ "\r\n" MSG.CRLF .CZ "\r\n"
*-------------------------------------- *--------------------------------------
ETCHOSTNAME .AZ "${ROOT}etc/hostname" ETCHOSTNAME .AZ "${ROOT}etc/hostname"
@ -374,6 +409,10 @@ KERNEL.VER .AZ "A2osX_%d.%02d"
KERNEL.POLLING .AZ "Polling_Mode" KERNEL.POLLING .AZ "Polling_Mode"
KERNEL.IRQ .AZ "IRQ_Mode" KERNEL.IRQ .AZ "IRQ_Mode"
KERNEL.PREEMPT .AZ "Preemptive_Mode" KERNEL.PREEMPT .AZ "Preemptive_Mode"
KERNEL.50 .AZ "50hz"
KERNEL.60 .AZ "60hz"
FSID.PRODOS .AZ "ProDOS"
FSID.FX .AZ "FX"
*-------------------------------------- *--------------------------------------
.DUMMY .DUMMY
.OR 0 .OR 0

View File

@ -65,6 +65,7 @@ CS.START cld
.DA CS.DOEVENT .DA CS.DOEVENT
.DA CS.QUIT .DA CS.QUIT
L.MSG.USAGE .DA MSG.USAGE L.MSG.USAGE .DA MSG.USAGE
L.MSG.CRLF .DA MSG.CRLF
L.MSG.ERR .DA MSG.ERR L.MSG.ERR .DA MSG.ERR
L.MSG.LONGTAB .DA MSG.LONGTAB L.MSG.LONGTAB .DA MSG.LONGTAB
L.MSG.LONG .DA MSG.LONG L.MSG.LONG .DA MSG.LONG
@ -467,10 +468,12 @@ CS.RUN.PrintFstat
inx inx
.11 bit bChar .11 bit bChar
bpl .12
inx inx
.12 cpx #2 .12 cpx #2
.19 ror bTabbed .19 ror bTabbed
bit bWord bit bWord
@ -500,8 +503,16 @@ CS.RUN.PrintFstat
>SYSCALL PrintF >SYSCALL PrintF
bcs .9 bcs .9
.3 >LDYA ZPRelPath .3 bit bTabbed
bpl .4
>LDYA ZPRelPath
>SYSCALL PutS >SYSCALL PutS
rts
.4 >PUSHW L.MSG.CRLF
>PUSHBI 0
>SYSCALL PrintF
.9 .9
CS.RUN.PrintFstat.RTS CS.RUN.PrintFstat.RTS
rts rts
@ -606,7 +617,8 @@ MSG.USAGE .CS "Usage : WC File(s) (*,? wildcards allowed)\r\n"
.CS " -R : Recurse subdirectories\r\n" .CS " -R : Recurse subdirectories\r\n"
.CS " -M : Print the CHAR counts\r\n" .CS " -M : Print the CHAR counts\r\n"
.CS " -L : Print the LINE counts\r\n" .CS " -L : Print the LINE counts\r\n"
.CZ " -W : Print the WORD counts\r\n" .CS " -W : Print the WORD counts"
MSG.CRLF .CZ "\r\n"
MSG.ERR .CZ "[%h]\r\n" MSG.ERR .CZ "[%h]\r\n"
MSG.LONG .CZ "%L" MSG.LONG .CZ "%L"
MSG.LONGTAB .CZ "%10L " MSG.LONGTAB .CZ "%10L "

View File

@ -17,6 +17,7 @@ ZS.START
SessionID .BS 1 SessionID .BS 1
hSession .BS 1 hSession .BS 1
ZPSessionPtr .BS 2 ZPSessionPtr .BS 2
ZPFDPtr .BS 2
ZS.END .ED ZS.END .ED
*-------------------------------------- *--------------------------------------
* File Header (16 Bytes) * File Header (16 Bytes)
@ -81,12 +82,9 @@ CS.RUN >LDYA L.MSG0
adc /S.SESSION.NAME adc /S.SESSION.NAME
>PUSHYA 2 bytes NAME >PUSHYA 2 bytes NAME
ldx SessionID jsr CS.RUN.GetDevName 3 bytes hFD DEV
lda S.Table.hFile-1,x
jsr CS.RUN.GetDevName
>PUSHYA 2 bytes DEV
>PUSHBI 9 total = 9 ... bytes >PUSHBI 10 total = 10 ... bytes
>SYSCALL PrintF >SYSCALL PrintF
@ -96,34 +94,36 @@ CS.RUN >LDYA L.MSG0
.7 inc SessionID .7 inc SessionID
ldx SessionID ldx SessionID
cpx #K.USR.MAX+1 cpx #K.USR.MAX+1
beq .8 bcc .1
jmp .1
.8 lda #0 tell TSKMGR that all done ok, but .8 lda #0 tell TSKMGR that all done ok, but
sec we do not want to stay in memory sec we do not want to stay in memory
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
CS.RUN.GetDevName CS.RUN.GetDevName
lda S.Table.hFile-1,x
>PUSHA
tax tax
lda hFDs.hName-1,x lda hFDs.hName-1,x
bne .8 bne .1
lda hFDs-1,x lda hFDs-1,x
>SYSCALL GetMemPtr >SYSCALL GetMemPtr
>STYA ZPFDPtr
pha
tya lda ZPFDPtr
clc clc
adc #S.FD.DEV adc #S.FD.DEV
tay tay
lda ZPFDPtr+1
pla
adc /S.FD.DEV adc /S.FD.DEV
* clc >PUSHYA
rts
rts
.1 >SYSCALL GetMemPtr
>PUSHYA
.8 >SYSCALL GetMemPtr
rts rts
*-------------------------------------- *--------------------------------------
CS.EVENT sec CS.EVENT sec
@ -133,8 +133,8 @@ CS.QUIT clc
rts rts
*-------------------------------------- *--------------------------------------
CS.END CS.END
MSG0 .CZ "SID hSD Privilege UID GID Name Dev" MSG0 .CZ "SID hSD Privilege UID GID Name hFD Dev"
MSG1 .CZ "%3d $%0h %b %3d %3d %16s %s\r\n" MSG1 .CZ "%3d %3d %b %3d %3d %16s %3d %s\r\n"
*-------------------------------------- *--------------------------------------
.DUMMY .DUMMY
.OR 0 .OR 0

View File

@ -23,7 +23,7 @@ NEW
.INB inc/a2osx.i .INB inc/a2osx.i
*-------------------------------------- *--------------------------------------
STAR .EQ '*' STAR .EQ '*'
BLANK .EQ '_' BLANK .EQ ' '
MAX .EQ 30 MAX .EQ 30
*-------------------------------------- *--------------------------------------
* Zero Page Segment, up to 32 bytes * Zero Page Segment, up to 32 bytes
@ -113,10 +113,10 @@ CS.QUIT clc ; nothing to do on exit except clear car
*-------------------------------------- *--------------------------------------
CS.RUN.Tree lda bSize CS.RUN.Tree lda bSize
cmp #3 ; did they specify a size of 2? cmp #3 ; did they specify a size of 2?
bcs CS.RUN.Start ; if not, go normal tree drawing bcs CS.RUN.Start ; CC if < 3 !!! if not, go normal tree drawing
cmp #2 ; did they specify a size of 2? cmp #2 ; did they specify a size of 2?
bcc CS.RUN.Sapling bcc CS.RUN.Sapling ; CC if < 2 !!!
lda #'Y' lda #'Y'
>SYSCALL PutChar >SYSCALL PutChar
@ -137,7 +137,7 @@ CS.RUN.Start lda #2 ; start from row 2
jsr CS.RUN.Stump ; display a stump first since same as top of tree jsr CS.RUN.Stump ; display a stump first since same as top of tree
CS.RUN.Blanks lda #MAX ; calculate number of blanks to tab CS.RUN.Blanks lda #MAX ; calculate number of blanks to tab
sec clc
sbc ROW sbc ROW
sbc MARGIN sbc MARGIN
tax ; put into x register tax ; put into x register
@ -147,7 +147,7 @@ CS.RUN.Blanks lda #MAX ; calculate number of blanks to tab
CS.RUN.Stars lda ROW ; calculate number of stars to display CS.RUN.Stars lda ROW ; calculate number of stars to display
asl ; ASL not ROL !!! asl ; ASL not ROL !!!
tax ; put into x register and -2 tax ; put into x register and -2
dex * dex ; -1 !!! not -2
dex dex
lda #STAR ; load star character lda #STAR ; load star character
jsr CS.RUN.Disp ; display ́x ́ stars jsr CS.RUN.Disp ; display ́x ́ stars