mirror of https://github.com/A2osX/A2osX.git
Fresh MEDIAs with QTrack seek mod
This commit is contained in:
parent
aed1c7fc35
commit
a06fc41072
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -58,23 +58,29 @@ BSX.MoveHead sta BSX.TargetQTrack
|
||||||
lda BSX.CurrentQTrack
|
lda BSX.CurrentQTrack
|
||||||
|
|
||||||
bit #1
|
bit #1
|
||||||
bne .1
|
beq .2 we are on 0/4 or 2/4 track
|
||||||
|
|
||||||
jsr BSX.SeekPhOnY we are on 0/4 or 2/4 track
|
pha
|
||||||
bra .9 no wait, next operation will be phy/plx/Ph0On,y
|
|
||||||
|
|
||||||
.1 cmp BSX.TargetQTrack we are on 1/4 or 3/4
|
cmp BSX.TargetQTrack we are on 1/4 or 3/4 track
|
||||||
bcs .2 if CS, C > T, must move out
|
bcc .1 if CC, C < T, must move in
|
||||||
|
|
||||||
inc CC: C < T, ON next PH
|
inc CC: C < T, ON next PH
|
||||||
|
|
||||||
.HS B0 BCS
|
.1 and #6 move in : X = Ph(N)
|
||||||
|
ora BSX.Slotn0
|
||||||
|
tax
|
||||||
|
lda IO.D2.Ph0On,x
|
||||||
|
|
||||||
.2 dec CS: C > T, ON prev PH
|
pla
|
||||||
|
|
||||||
sta BSX.CurrentQTrack
|
bcs .2 if CS, C > T, must move out
|
||||||
|
|
||||||
bra .6 Ph ON to go to 0/4 or 2/4, then wait
|
inc move in : Y = Ph(N+1)
|
||||||
|
|
||||||
|
.2 jsr BSX.SeekPhOnY move out: Y = Ph(N)
|
||||||
|
|
||||||
|
bra .9 no wait
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.3 bcs .4 if CS, C > T, must move out
|
.3 bcs .4 if CS, C > T, must move out
|
||||||
|
|
||||||
|
@ -113,12 +119,13 @@ BSX.MoveHead sta BSX.TargetQTrack
|
||||||
|
|
||||||
jsr BSX.Wait25600usec
|
jsr BSX.Wait25600usec
|
||||||
|
|
||||||
lda IO.D2.Ph0Off,y
|
bcc .10
|
||||||
bcc .90
|
|
||||||
|
|
||||||
lda IO.D2.Ph0Off,x
|
lda IO.D2.Ph0Off,x
|
||||||
|
|
||||||
.90 rts
|
.10 lda IO.D2.Ph0Off,y
|
||||||
|
|
||||||
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
BSX.SeekPhOnY and #6
|
BSX.SeekPhOnY and #6
|
||||||
ora BSX.Slotn0
|
ora BSX.Slotn0
|
||||||
|
|
|
@ -1,6 +1,25 @@
|
||||||
NEW
|
NEW
|
||||||
AUTO 3,1
|
AUTO 3,1
|
||||||
.LIST OFF
|
*--------------------------------------
|
||||||
|
CODE.Init stz ZPCCConst
|
||||||
|
stz ZPCCConst+1
|
||||||
|
|
||||||
|
>LDYAI PCC.FH.CS
|
||||||
|
>STYA ZPCCCode
|
||||||
|
|
||||||
|
>LDYAI 20 char *ARGV[10]
|
||||||
|
>STYA ZPCCData
|
||||||
|
|
||||||
|
clc
|
||||||
|
.9 rts
|
||||||
|
*--------------------------------------
|
||||||
|
CODE.Quit >LDA.G CC.hOutFile
|
||||||
|
beq .8
|
||||||
|
|
||||||
|
>SYSCALL FClose
|
||||||
|
|
||||||
|
.8 clc
|
||||||
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CODE.Debug ldx #PCC.DEBUG.L
|
CODE.Debug ldx #PCC.DEBUG.L
|
||||||
ldy #0
|
ldy #0
|
||||||
|
@ -197,6 +216,37 @@ CODE.PushFromPtr
|
||||||
|
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
CODE.PushConstP
|
||||||
|
lda #$A9 LDA #imm
|
||||||
|
jsr CODE.EmitByte
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
lda ZPCCConst
|
||||||
|
jsr CODE.EmitByte
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
lda #$A2 LDX #imm
|
||||||
|
jsr CODE.EmitByte
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
lda ZPCCConst+1
|
||||||
|
jsr CODE.EmitByte
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
ldx #PCC.PushConstPAX.L
|
||||||
|
ldy #0
|
||||||
|
|
||||||
|
.1 lda PCC.PushConstPAX,y
|
||||||
|
jsr CODE.EmitByte
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
iny
|
||||||
|
dex
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
clc
|
||||||
|
.9 rts
|
||||||
|
*--------------------------------------
|
||||||
CODE.PUSHI pha
|
CODE.PUSHI pha
|
||||||
lda #$A9 LDA #imm
|
lda #$A9 LDA #imm
|
||||||
jsr CODE.EmitByte
|
jsr CODE.EmitByte
|
||||||
|
@ -266,6 +316,17 @@ CODE.TOABSYX jsr CODE.EmitByte A=opcode : JMP, JSR .....
|
||||||
tya
|
tya
|
||||||
bra CODE.EmitByte
|
bra CODE.EmitByte
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
CODE.SYSCALL lda #$A2 LDX #imm
|
||||||
|
jsr CODE.EmitByte
|
||||||
|
txa
|
||||||
|
jsr CODE.EmitByte
|
||||||
|
lda #$20 JSR
|
||||||
|
jsr CODE.EmitByte
|
||||||
|
lda #A2osX.SYSCALL
|
||||||
|
jsr CODE.EmitByte
|
||||||
|
lda /A2osX.SYSCALL
|
||||||
|
bra CODE.EmitByte
|
||||||
|
*--------------------------------------
|
||||||
CODE.FPUCALL lda #$A2 LDX #imm
|
CODE.FPUCALL lda #$A2 LDX #imm
|
||||||
jsr CODE.EmitByte
|
jsr CODE.EmitByte
|
||||||
txa
|
txa
|
||||||
|
@ -277,22 +338,90 @@ CODE.FPUCALL lda #$A2 LDX #imm
|
||||||
lda /A2osX.FPUCALL
|
lda /A2osX.FPUCALL
|
||||||
bra CODE.EmitByte
|
bra CODE.EmitByte
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CODE.SYSCALL lda #$A2 LDX #imm
|
CODE.EmitByte clc if Pass 1...
|
||||||
jsr CODE.EmitByte
|
bit bPass2
|
||||||
|
bpl .1
|
||||||
|
|
||||||
|
phx
|
||||||
|
phy
|
||||||
|
tax
|
||||||
|
|
||||||
|
>PUSHB.G CC.hOutFile
|
||||||
txa
|
txa
|
||||||
jsr CODE.EmitByte
|
>PUSHA
|
||||||
lda #$20 JSR
|
>SYSCALL fputc
|
||||||
jsr CODE.EmitByte
|
|
||||||
lda #A2osX.SYSCALL
|
ply
|
||||||
jsr CODE.EmitByte
|
plx
|
||||||
lda /A2osX.SYSCALL
|
|
||||||
*--------------------------------------
|
.1 inc ZPCCCode
|
||||||
CODE.EmitByte sta (ZPCCCode)
|
|
||||||
inc ZPCCCode
|
|
||||||
bne .8
|
bne .8
|
||||||
|
|
||||||
inc ZPCCCode+1
|
inc ZPCCCode+1
|
||||||
|
|
||||||
|
.8 rts CC/CS from fputc
|
||||||
|
*--------------------------------------
|
||||||
|
CODE.EmitDATA clc
|
||||||
|
bit bPass2
|
||||||
|
bpl .1
|
||||||
|
|
||||||
|
phx
|
||||||
|
phy
|
||||||
|
tax
|
||||||
|
|
||||||
|
>PUSHB.G CC.hOutFile
|
||||||
|
txa
|
||||||
|
>PUSHA
|
||||||
|
>SYSCALL fputc
|
||||||
|
ply
|
||||||
|
plx
|
||||||
|
|
||||||
|
.1 inc ZPCCConst
|
||||||
|
bne .8
|
||||||
|
|
||||||
|
inc ZPCCConst+1
|
||||||
|
|
||||||
|
.8 rts CC/CS from fputc
|
||||||
|
*--------------------------------------
|
||||||
|
CODE.CSSelect clc
|
||||||
|
bit bPass2
|
||||||
|
bpl .8
|
||||||
|
|
||||||
|
>PUSHB.G CC.hOutFile
|
||||||
|
>PUSHWI 0
|
||||||
|
lda ZPCCCode+1
|
||||||
|
sec
|
||||||
|
sbc #$20
|
||||||
|
>PUSHA
|
||||||
|
lda ZPCCCode
|
||||||
|
>PUSHA
|
||||||
|
>PUSHBI SEEK.SET
|
||||||
|
>SYSCALL fseek
|
||||||
|
|
||||||
|
.8 rts
|
||||||
|
*--------------------------------------
|
||||||
|
CODE.DSSelect clc
|
||||||
|
bit bPass2
|
||||||
|
bpl .8
|
||||||
|
|
||||||
|
>PUSHB.G CC.hOutFile
|
||||||
|
>PUSHWI 0
|
||||||
|
* >PUSHWI 0
|
||||||
|
* >PUSHBI SEEK.END
|
||||||
|
|
||||||
|
lda ZPCCConst
|
||||||
|
clc
|
||||||
|
adc PCC.FH+PCC.FH.IDATA
|
||||||
|
tay
|
||||||
|
lda ZPCCConst+1
|
||||||
|
adc PCC.FH+PCC.FH.IDATA+1
|
||||||
|
sec
|
||||||
|
sbc #$20
|
||||||
|
>PUSHYA
|
||||||
|
>PUSHBI SEEK.SET
|
||||||
|
|
||||||
|
>SYSCALL fseek
|
||||||
|
|
||||||
.8 rts
|
.8 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
|
|
|
@ -1,14 +1,13 @@
|
||||||
NEW
|
NEW
|
||||||
AUTO 3,1
|
AUTO 3,1
|
||||||
.LIST OFF
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.Init >SYSCALL SListNew
|
CC.Init >SYSCALL SListNew
|
||||||
bcs .99
|
bcs .9
|
||||||
|
|
||||||
>STA.G CC.hDefines
|
>STA.G CC.hDefines
|
||||||
|
|
||||||
>SYSCALL SListNew
|
>SYSCALL SListNew
|
||||||
bcs .99
|
bcs .9
|
||||||
|
|
||||||
>STA.G CC.hTags
|
>STA.G CC.hTags
|
||||||
|
|
||||||
|
@ -18,30 +17,6 @@ CC.Init >SYSCALL SListNew
|
||||||
>STA.G CC.hSymbols
|
>STA.G CC.hSymbols
|
||||||
sty ScopePtr
|
sty ScopePtr
|
||||||
|
|
||||||
>LDYAI 4096
|
|
||||||
>SYSCALL GetMem
|
|
||||||
.99 bcs .9
|
|
||||||
|
|
||||||
>STYA ZPCCCode
|
|
||||||
txa
|
|
||||||
>STA.G CC.hCode
|
|
||||||
|
|
||||||
>LDYAI 1024
|
|
||||||
>SYSCALL GetMem
|
|
||||||
bcs .9
|
|
||||||
|
|
||||||
>STYA ZPCCConst
|
|
||||||
txa
|
|
||||||
>STA.G CC.hConst
|
|
||||||
|
|
||||||
>LDYAI 1024
|
|
||||||
>SYSCALL GetMem
|
|
||||||
bcs .9
|
|
||||||
|
|
||||||
>STYA ZPCCData
|
|
||||||
txa
|
|
||||||
>STA.G CC.hData
|
|
||||||
|
|
||||||
>LDYAI 256
|
>LDYAI 256
|
||||||
>SYSCALL GetMem
|
>SYSCALL GetMem
|
||||||
bcs .9
|
bcs .9
|
||||||
|
@ -78,25 +53,19 @@ CC.Quit ldy ScopePtr
|
||||||
|
|
||||||
>SYSCALL SListFree
|
>SYSCALL SListFree
|
||||||
|
|
||||||
.4 lda hDefineBuf
|
.4 >LDA.G CC.hDefineBuf
|
||||||
|
jsr .7
|
||||||
|
|
||||||
|
>LDA.G CC.hLookupSymBuf
|
||||||
jsr .7
|
jsr .7
|
||||||
|
|
||||||
.5 jsr CS.RUN.FClose
|
.5 jsr CS.RUN.FClose
|
||||||
bne .5
|
bne .5
|
||||||
|
|
||||||
lda hSymBuf
|
>LDA.G CC.hSymBuf
|
||||||
jsr .7
|
jsr .7
|
||||||
|
|
||||||
>LDA.G CC.hStack
|
>LDA.G CC.hStack
|
||||||
jsr .7
|
|
||||||
|
|
||||||
>LDA.G CC.hData
|
|
||||||
jsr .7
|
|
||||||
|
|
||||||
>LDA.G CC.hConst
|
|
||||||
jsr .7
|
|
||||||
|
|
||||||
>LDA.G CC.hCode
|
|
||||||
|
|
||||||
.7 beq CC.Quit.RTS
|
.7 beq CC.Quit.RTS
|
||||||
>SYSCALL FreeMem
|
>SYSCALL FreeMem
|
||||||
|
@ -202,7 +171,7 @@ CC.CompileLine.1
|
||||||
jsr CC.SYM.Store
|
jsr CC.SYM.Store
|
||||||
bcs .29
|
bcs .29
|
||||||
|
|
||||||
jmp CC.SYM.FreeBuf
|
jmp CC.SYM.Free
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
|
||||||
* TODO: AOPS
|
* TODO: AOPS
|
||||||
|
@ -225,7 +194,7 @@ CC.CompileLine.1
|
||||||
.28 jsr CC.SYM.Store
|
.28 jsr CC.SYM.Store
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
jsr CC.SYM.FreeBuf
|
jsr CC.SYM.Free
|
||||||
|
|
||||||
bra .68
|
bra .68
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -256,7 +225,7 @@ CC.CompileLine.1
|
||||||
.69 bcs .99
|
.69 bcs .99
|
||||||
|
|
||||||
ldy #SYM.Q
|
ldy #SYM.Q
|
||||||
lda (ZPSymBufPtr),y
|
lda (ZPLookupSymPtr),y
|
||||||
bit #SYM.Q.FUNC
|
bit #SYM.Q.FUNC
|
||||||
beq .60
|
beq .60
|
||||||
|
|
||||||
|
@ -265,7 +234,7 @@ CC.CompileLine.1
|
||||||
jsr CC.F.CallNoRetV
|
jsr CC.F.CallNoRetV
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
jsr CC.SYM.FreeBufPop
|
jsr CC.SYM.LookupFree
|
||||||
|
|
||||||
bra .8
|
bra .8
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -285,7 +254,7 @@ CC.CompileLine.1
|
||||||
jsr CC.SYM.PopValue
|
jsr CC.SYM.PopValue
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
jsr CC.SYM.FreeBufPop
|
jsr CC.SYM.LookupFree
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.68 jsr CC.GetCharNB
|
.68 jsr CC.GetCharNB
|
||||||
cmp #';'
|
cmp #';'
|
||||||
|
@ -383,8 +352,8 @@ CC.SListLookup >PUSHA hSList
|
||||||
>SYSCALL SListLookup
|
>SYSCALL SListLookup
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
pha save KeyID
|
* pha save KeyID
|
||||||
phy
|
* phy
|
||||||
|
|
||||||
>PUSHA KeyID.HI
|
>PUSHA KeyID.HI
|
||||||
tya
|
tya
|
||||||
|
@ -398,9 +367,14 @@ CC.SListLookup >PUSHA hSList
|
||||||
>SYSCALL SListGetData
|
>SYSCALL SListGetData
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
ply
|
>STYA.G CC.LookupSymSize
|
||||||
pla X = hSymScope, Y,A = SymID
|
|
||||||
* clc
|
txa
|
||||||
|
>STA.G CC.hLookupSymBuf
|
||||||
|
>SYSCALL GetMemPtr
|
||||||
|
|
||||||
|
* clc Y,A = SymPtr, X = hSymBuf
|
||||||
|
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.9 plx
|
.9 plx
|
||||||
|
@ -410,88 +384,6 @@ CC.SListLookup >PUSHA hSList
|
||||||
.99 inc pStack
|
.99 inc pStack
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* int main(int argc, char *argv[]) ;
|
|
||||||
*--------------------------------------
|
|
||||||
CC.MainExec lda #$EEEE
|
|
||||||
>PUSHA
|
|
||||||
>PUSHA int ret value
|
|
||||||
|
|
||||||
lda #0
|
|
||||||
>PUSHA
|
|
||||||
ldy #S.PS.ARGC
|
|
||||||
lda (pPS),y
|
|
||||||
>PUSHA push int ARGC (int)
|
|
||||||
|
|
||||||
>PUSHW ZPCCConst push int ARGV *char[]
|
|
||||||
|
|
||||||
stz ArgIndex
|
|
||||||
|
|
||||||
.1 lda ArgIndex
|
|
||||||
>SYSCALL ArgV
|
|
||||||
bcs .2
|
|
||||||
|
|
||||||
inc ArgIndex
|
|
||||||
|
|
||||||
pha
|
|
||||||
tya
|
|
||||||
|
|
||||||
sta (ZPCCConst)
|
|
||||||
pla
|
|
||||||
|
|
||||||
ldy #1
|
|
||||||
sta (ZPCCConst),y
|
|
||||||
|
|
||||||
lda ZPCCConst
|
|
||||||
* clc
|
|
||||||
adc #2
|
|
||||||
sta ZPCCConst
|
|
||||||
bcc .1
|
|
||||||
|
|
||||||
inc ZPCCConst+1
|
|
||||||
bra .1
|
|
||||||
|
|
||||||
.2 >PUSHB.G CC.hSymbols
|
|
||||||
|
|
||||||
>PUSHW L.CC.MAIN
|
|
||||||
>SYSCALL SListLookup
|
|
||||||
bcs .9
|
|
||||||
|
|
||||||
phy
|
|
||||||
pha
|
|
||||||
|
|
||||||
>PUSHB.G CC.hSymbols
|
|
||||||
|
|
||||||
pla
|
|
||||||
>PUSHA
|
|
||||||
pla
|
|
||||||
>PUSHA KeyID
|
|
||||||
|
|
||||||
>PUSHWZ allocate
|
|
||||||
>PUSHWI 65535 all
|
|
||||||
>PUSHWZ From Start
|
|
||||||
>SYSCALL SListGetData
|
|
||||||
bcs .9
|
|
||||||
|
|
||||||
stx hSymBuf
|
|
||||||
txa
|
|
||||||
>SYSCALL GetMemPtr
|
|
||||||
>STYA ZPSymBufPtr
|
|
||||||
|
|
||||||
ldy #SYM.Addr
|
|
||||||
lda (ZPSymBufPtr),y
|
|
||||||
sta ZPCCCode
|
|
||||||
|
|
||||||
iny
|
|
||||||
lda (ZPSymBufPtr),y
|
|
||||||
sta ZPCCCode+1
|
|
||||||
|
|
||||||
jsr .7
|
|
||||||
|
|
||||||
clc
|
|
||||||
.9 rts
|
|
||||||
|
|
||||||
.7 jmp (ZPCCCode)
|
|
||||||
*--------------------------------------
|
|
||||||
CC.ZPLookupPtrAddAp1
|
CC.ZPLookupPtrAddAp1
|
||||||
sec
|
sec
|
||||||
adc ZPLookupPtr
|
adc ZPLookupPtr
|
||||||
|
@ -501,19 +393,16 @@ CC.ZPLookupPtrAddAp1
|
||||||
inc ZPLookupPtr+1
|
inc ZPLookupPtr+1
|
||||||
.1 rts
|
.1 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.GetDefine >LDA.G CC.hDefines
|
CC.GetDefine >LDYA ZPLineBufPtr
|
||||||
|
|
||||||
jsr CC.SListLookup
|
|
||||||
bcs .9
|
|
||||||
|
|
||||||
stx hDefineBuf
|
|
||||||
|
|
||||||
>LDYA ZPLineBufPtr
|
|
||||||
>STYA.G CC.SaveDefine
|
>STYA.G CC.SaveDefine
|
||||||
|
|
||||||
txa
|
>LDA.G CC.hDefines
|
||||||
>SYSCALL GetMemPtr
|
jsr CC.SListLookup
|
||||||
|
bcs .9
|
||||||
|
|
||||||
>STYA ZPLineBufPtr
|
>STYA ZPLineBufPtr
|
||||||
|
txa
|
||||||
|
>STA.G CC.hDefineBuf
|
||||||
|
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -667,30 +556,29 @@ CC.GetNextChar inc ZPLineBufPtr
|
||||||
CC.GetChar lda (ZPLineBufPtr)
|
CC.GetChar lda (ZPLineBufPtr)
|
||||||
bne .8
|
bne .8
|
||||||
|
|
||||||
lda hDefineBuf
|
phy
|
||||||
|
|
||||||
|
>LDA.G CC.hDefineBuf
|
||||||
beq .1
|
beq .1
|
||||||
|
|
||||||
stz hDefineBuf
|
|
||||||
|
|
||||||
phx
|
phx
|
||||||
phy
|
|
||||||
>SYSCALL FreeMem
|
>SYSCALL FreeMem
|
||||||
|
|
||||||
|
>STZ.G CC.hDefineBuf
|
||||||
|
|
||||||
>LDYA.G CC.SaveDefine
|
>LDYA.G CC.SaveDefine
|
||||||
>STYA ZPLineBufPtr
|
>STYA ZPLineBufPtr
|
||||||
|
|
||||||
ply
|
|
||||||
plx
|
plx
|
||||||
|
ply
|
||||||
bra CC.GetChar
|
bra CC.GetChar
|
||||||
|
|
||||||
.1 lda #C.CR
|
.1 ply
|
||||||
|
lda #C.CR
|
||||||
|
|
||||||
.8 clc
|
.8 clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.9 lda #MLI.E.EOF
|
|
||||||
sec
|
|
||||||
.99 rts
|
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
CC.IsEndArg cmp #']'
|
CC.IsEndArg cmp #']'
|
||||||
beq .8
|
beq .8
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
NEW
|
NEW
|
||||||
AUTO 3,1
|
AUTO 3,1
|
||||||
.LIST OFF
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.DECL jsr CC.IsLetter
|
CC.DECL jsr CC.IsLetter
|
||||||
bcs .80
|
bcs .80
|
||||||
|
@ -51,7 +50,7 @@ CC.DECL jsr CC.IsLetter
|
||||||
.29 bcs .99
|
.29 bcs .99
|
||||||
|
|
||||||
|
|
||||||
jsr CC.SYM.FreeBuf
|
jsr CC.SYM.Free
|
||||||
|
|
||||||
clv
|
clv
|
||||||
clc
|
clc
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
NEW
|
NEW
|
||||||
AUTO 3,1
|
AUTO 3,1
|
||||||
.LIST OFF
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.DIR jsr CC.GetNextCharNB
|
CC.DIR jsr CC.GetNextCharNB
|
||||||
bcs .99
|
bcs .99
|
||||||
|
@ -20,17 +19,22 @@ CC.DIR jsr CC.GetNextCharNB
|
||||||
sec
|
sec
|
||||||
.99 rts
|
.99 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.DIR.DEFINE jsr CC.CheckSpace
|
CC.DIR.DEFINE clc
|
||||||
|
bit bPass2
|
||||||
|
bmi .8
|
||||||
|
|
||||||
|
jsr CC.CheckSpace
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
jsr CC.IsLetter
|
jsr CC.IsLetter
|
||||||
bcs .90
|
bcs .90
|
||||||
|
|
||||||
|
ldx #SYM.SC.DEFINE
|
||||||
>LDA.G CC.hDefines
|
>LDA.G CC.hDefines
|
||||||
jsr CC.SYM.NewKey
|
jsr CC.SYM.NewKey
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
>STYA ZPSymID
|
>STYA ZPPtr1 SymID
|
||||||
|
|
||||||
jsr CC.SkipX
|
jsr CC.SkipX
|
||||||
|
|
||||||
|
@ -53,7 +57,7 @@ CC.DIR.DEFINE jsr CC.CheckSpace
|
||||||
phy
|
phy
|
||||||
|
|
||||||
>PUSHB.G CC.hDefines
|
>PUSHB.G CC.hDefines
|
||||||
>PUSHW ZPSymID
|
>PUSHW ZPPtr1 SymID
|
||||||
>PUSHW ZPLineBufPtr
|
>PUSHW ZPLineBufPtr
|
||||||
|
|
||||||
ply
|
ply
|
||||||
|
@ -63,7 +67,7 @@ CC.DIR.DEFINE jsr CC.CheckSpace
|
||||||
>SYSCALL SListAddData
|
>SYSCALL SListAddData
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
jmp CC.SkipLine
|
.8 jmp CC.SkipLine
|
||||||
|
|
||||||
.90 lda #E.CSYN
|
.90 lda #E.CSYN
|
||||||
sec
|
sec
|
||||||
|
@ -100,27 +104,37 @@ CC.DIR.INCLUDE lda #0 >STZ.G PathBuf
|
||||||
beq .90
|
beq .90
|
||||||
|
|
||||||
cmp ArgIndex
|
cmp ArgIndex
|
||||||
beq .8
|
beq .4
|
||||||
|
|
||||||
sta (pData),y
|
sta (pData),y
|
||||||
iny
|
iny
|
||||||
cpy #64
|
cpy #MLI.MAXPATH
|
||||||
bne .3
|
bne .3
|
||||||
|
|
||||||
.90 lda #E.CSYN
|
.90 lda #E.CSYN
|
||||||
sec
|
sec
|
||||||
.99 rts
|
.99 rts
|
||||||
|
|
||||||
.8 lda #0
|
.4 phy
|
||||||
|
jsr CC.GetNextChar skip " or >
|
||||||
|
ply
|
||||||
|
|
||||||
|
lda #0
|
||||||
sta (pData),y terminate string
|
sta (pData),y terminate string
|
||||||
|
|
||||||
jsr CC.GetNextChar skip " or >
|
dey
|
||||||
|
lda (pData),y
|
||||||
>LDYA pData
|
cmp #'h'
|
||||||
jsr CS.RUN.FOpen
|
bne .5
|
||||||
bcs .99
|
|
||||||
|
|
||||||
|
bit bPass2
|
||||||
|
bpl .5
|
||||||
|
|
||||||
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
.5 >LDYA pData
|
||||||
|
jmp CS.RUN.FOpen
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE usr/src/bin/cc.s.dir
|
SAVE usr/src/bin/cc.s.dir
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
NEW
|
NEW
|
||||||
AUTO 3,1
|
AUTO 3,1
|
||||||
.LIST OFF
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.BOPS.bMUL
|
CC.BOPS.bMUL
|
||||||
CC.BOPS.cMUL
|
CC.BOPS.cMUL
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
NEW
|
NEW
|
||||||
AUTO 3,1
|
AUTO 3,1
|
||||||
.LIST OFF
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* Input:
|
* Input:
|
||||||
* ZPLineBufPtr, Y,A = Expected type/qual
|
* ZPLineBufPtr, Y,A = Expected type/qual
|
||||||
|
@ -74,7 +73,7 @@ CC.EXP.Eval ldx ZPPtr2 local : expected T/Q
|
||||||
bcs .22
|
bcs .22
|
||||||
|
|
||||||
ldy #SYM.Q
|
ldy #SYM.Q
|
||||||
lda (ZPSymBufPtr),y
|
lda (ZPLookupSymPtr),y
|
||||||
and #SYM.Q.FUNC
|
and #SYM.Q.FUNC
|
||||||
bne .21
|
bne .21
|
||||||
|
|
||||||
|
@ -84,7 +83,7 @@ CC.EXP.Eval ldx ZPPtr2 local : expected T/Q
|
||||||
jsr CC.EXP.Get Check T/Q & Get value on stack
|
jsr CC.EXP.Get Check T/Q & Get value on stack
|
||||||
bcs .29
|
bcs .29
|
||||||
|
|
||||||
jsr CC.SYM.FreeBufPop
|
jsr CC.SYM.LookupFree
|
||||||
|
|
||||||
bra .30
|
bra .30
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -95,7 +94,7 @@ CC.EXP.Eval ldx ZPPtr2 local : expected T/Q
|
||||||
|
|
||||||
>STYA ZPPtr2 store real T/Q
|
>STYA ZPPtr2 store real T/Q
|
||||||
|
|
||||||
jsr CC.SYM.FreeBufPop
|
jsr CC.SYM.LookupFree
|
||||||
|
|
||||||
bra .30
|
bra .30
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -195,11 +194,11 @@ CC.EXP.CheckGetSymType
|
||||||
ora ZPPtr2+1
|
ora ZPPtr2+1
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
lda (ZPSymBufPtr)
|
lda (ZPLookupSymPtr)
|
||||||
sta ZPPtr2
|
sta ZPPtr2
|
||||||
|
|
||||||
ldy #SYM.Q
|
ldy #SYM.Q
|
||||||
lda (ZPSymBufPtr),y
|
lda (ZPLookupSymPtr),y
|
||||||
sta ZPPtr2+1
|
sta ZPPtr2+1
|
||||||
|
|
||||||
clc
|
clc
|
||||||
|
@ -279,44 +278,46 @@ CC.EXP.BOPS cpy #SYM.T.UINT
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.AddContCharP ldy #0
|
CC.AddContCharP jsr CODE.PushConstP
|
||||||
|
bcs .99
|
||||||
|
|
||||||
|
jsr CODE.DSSelect
|
||||||
|
bcs .99
|
||||||
|
|
||||||
|
ldy #0
|
||||||
|
|
||||||
.1 jsr CC.GetNextChar
|
.1 jsr CC.GetNextChar
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
|
* TODO : add support for \ to next line
|
||||||
|
|
||||||
cmp #C.CR
|
cmp #C.CR
|
||||||
beq .9
|
beq .9
|
||||||
|
|
||||||
cmp #'"'
|
cmp #'"'
|
||||||
beq .2
|
beq .2
|
||||||
|
|
||||||
sta (ZPCCConst),y
|
jsr CODE.EmitData
|
||||||
|
bcs .99
|
||||||
|
|
||||||
iny
|
iny
|
||||||
bra .1
|
bra .1
|
||||||
|
|
||||||
.2 lda #0
|
.2 lda #0
|
||||||
sta (ZPCCConst),y
|
jsr CODE.EmitData
|
||||||
|
bcs .99
|
||||||
|
|
||||||
|
jsr CODE.CSSelect
|
||||||
|
bcs .99
|
||||||
|
|
||||||
lda ZPCCConst+1 Push PTR on stack
|
jsr CC.GetNextChar Skip "
|
||||||
jsr CODE.PUSHI
|
|
||||||
lda ZPCCConst
|
|
||||||
jsr CODE.PUSHI
|
|
||||||
|
|
||||||
tya
|
|
||||||
sec
|
|
||||||
adc ZPCCConst
|
|
||||||
sta ZPCCConst
|
|
||||||
bcc .3
|
|
||||||
|
|
||||||
inc ZPCCConst+1
|
|
||||||
.3 jsr CC.GetNextChar Skip "
|
|
||||||
|
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.9 lda #E.ESYN
|
.9 lda #E.ESYN
|
||||||
sec
|
sec
|
||||||
rts
|
.99 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.EXP.GetNum cpy #SYM.T.FLOAT
|
CC.EXP.GetNum cpy #SYM.T.FLOAT
|
||||||
bcc .1
|
bcc .1
|
||||||
|
@ -409,7 +410,7 @@ CC.EXP.Get >LDYA L.CC.AOPS
|
||||||
lda ZPPtr2 target T
|
lda ZPPtr2 target T
|
||||||
beq .3
|
beq .3
|
||||||
|
|
||||||
lda (ZPSymBufPtr) SYM.T
|
lda (ZPLookupSymPtr) SYM.T
|
||||||
cmp #SYM.T.VOID
|
cmp #SYM.T.VOID
|
||||||
beq .2
|
beq .2
|
||||||
|
|
||||||
|
@ -419,14 +420,14 @@ CC.EXP.Get >LDYA L.CC.AOPS
|
||||||
.2 lda ZPPtr2+1 Q
|
.2 lda ZPPtr2+1 Q
|
||||||
|
|
||||||
ldy #SYM.Q
|
ldy #SYM.Q
|
||||||
cmp (ZPSymBufPtr),y
|
cmp (ZPLookupSymPtr),y
|
||||||
bne .9
|
bne .9
|
||||||
|
|
||||||
.3 lda (ZPSymBufPtr) SYM.T
|
.3 lda (ZPLookupSymPtr) SYM.T
|
||||||
sta ZPPtr2 T
|
sta ZPPtr2 T
|
||||||
pha
|
pha
|
||||||
ldy #SYM.Q
|
ldy #SYM.Q
|
||||||
lda (ZPSymBufPtr),y
|
lda (ZPLookupSymPtr),y
|
||||||
sta ZPPtr2+1 Q
|
sta ZPPtr2+1 Q
|
||||||
ply Y,A = T/Q
|
ply Y,A = T/Q
|
||||||
|
|
||||||
|
@ -442,7 +443,7 @@ CC.EXP.Get >LDYA L.CC.AOPS
|
||||||
.8 jmp (J.CC.PREOPS,x)
|
.8 jmp (J.CC.PREOPS,x)
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.EXP.Array ldy #SYM.Q
|
CC.EXP.Array ldy #SYM.Q
|
||||||
lda (ZPSymBufPtr),y
|
lda (ZPLookupSymPtr),y
|
||||||
and #SYM.Q.AAARRAY
|
and #SYM.Q.AAARRAY
|
||||||
beq .9
|
beq .9
|
||||||
|
|
||||||
|
@ -477,11 +478,11 @@ CC.EXP.Array ldy #SYM.Q
|
||||||
ldx #FPU.iAdd
|
ldx #FPU.iAdd
|
||||||
jsr CODE.FPUCALL add to base address
|
jsr CODE.FPUCALL add to base address
|
||||||
|
|
||||||
lda (ZPSymBufPtr) SYM.T
|
lda (ZPLookupSymPtr) SYM.T
|
||||||
pha
|
pha
|
||||||
|
|
||||||
ldy #SYM.Q
|
ldy #SYM.Q
|
||||||
lda (ZPSymBufPtr),y
|
lda (ZPLookupSymPtr),y
|
||||||
sec
|
sec
|
||||||
sbc #SYM.Q.ARRAY
|
sbc #SYM.Q.ARRAY
|
||||||
ply
|
ply
|
||||||
|
@ -497,13 +498,13 @@ CC.EXP.Array ldy #SYM.Q
|
||||||
.99 rts
|
.99 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.EXP.PushAddr ldy #SYM.Addr+1
|
CC.EXP.PushAddr ldy #SYM.Addr+1
|
||||||
lda (ZPSymBufPtr),y
|
lda (ZPLookupSymPtr),y
|
||||||
bne .7
|
bne .7
|
||||||
* LOCAL
|
* LOCAL
|
||||||
jsr CODE.PUSHpBASEp1
|
jsr CODE.PUSHpBASEp1
|
||||||
|
|
||||||
ldy #SYM.Addr
|
ldy #SYM.Addr
|
||||||
lda (ZPSymBufPtr),y
|
lda (ZPLookupSymPtr),y
|
||||||
eor #$FF
|
eor #$FF
|
||||||
inc
|
inc
|
||||||
jsr CODE.LDAI
|
jsr CODE.LDAI
|
||||||
|
@ -515,7 +516,7 @@ CC.EXP.PushAddr ldy #SYM.Addr+1
|
||||||
.7 jsr CODE.PUSHI
|
.7 jsr CODE.PUSHI
|
||||||
|
|
||||||
ldy #SYM.Addr
|
ldy #SYM.Addr
|
||||||
lda (ZPSymBufPtr),y
|
lda (ZPLookupSymPtr),y
|
||||||
jsr CODE.PUSHI
|
jsr CODE.PUSHI
|
||||||
|
|
||||||
clc
|
clc
|
||||||
|
@ -523,13 +524,13 @@ CC.EXP.PushAddr ldy #SYM.Addr+1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.EXP.PushDeref
|
CC.EXP.PushDeref
|
||||||
ldy #SYM.Addr+1
|
ldy #SYM.Addr+1
|
||||||
lda (ZPSymBufPtr),y
|
lda (ZPLookupSymPtr),y
|
||||||
bne .7
|
bne .7
|
||||||
* LOCAL
|
* LOCAL
|
||||||
jsr CODE.SETpBASEp1
|
jsr CODE.SETpBASEp1
|
||||||
|
|
||||||
ldy #SYM.Addr
|
ldy #SYM.Addr
|
||||||
lda (ZPSymBufPtr),y
|
lda (ZPLookupSymPtr),y
|
||||||
eor #$FF
|
eor #$FF
|
||||||
inc
|
inc
|
||||||
jsr CODE.LDAI
|
jsr CODE.LDAI
|
||||||
|
@ -541,13 +542,14 @@ CC.EXP.PushDeref
|
||||||
rts
|
rts
|
||||||
* DATASEG
|
* DATASEG
|
||||||
.7 jsr CODE.LDAI
|
.7 jsr CODE.LDAI
|
||||||
|
|
||||||
lda #$85 STA zp
|
lda #$85 STA zp
|
||||||
jsr CODE.EmitByte
|
jsr CODE.EmitByte
|
||||||
lda #ZPPtr1+1
|
lda #ZPPtr1+1
|
||||||
jsr CODE.EmitByte
|
jsr CODE.EmitByte
|
||||||
|
|
||||||
ldy #SYM.Addr
|
ldy #SYM.Addr
|
||||||
lda (ZPSymBufPtr),y
|
lda (ZPLookupSymPtr),y
|
||||||
jsr CODE.LDAI
|
jsr CODE.LDAI
|
||||||
|
|
||||||
lda #$85 STA zp
|
lda #$85 STA zp
|
||||||
|
@ -558,22 +560,22 @@ CC.EXP.PushDeref
|
||||||
jsr CODE.Deref
|
jsr CODE.Deref
|
||||||
|
|
||||||
clc
|
clc
|
||||||
rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.EXP.GetRef ldy #SYM.Addr+1
|
CC.EXP.GetRef ldy #SYM.Addr+1
|
||||||
lda (ZPSymBufPtr),y
|
lda (ZPLookupSymPtr),y
|
||||||
jsr CODE.PUSHI
|
jsr CODE.PUSHI
|
||||||
|
|
||||||
ldy #SYM.Addr
|
ldy #SYM.Addr
|
||||||
lda (ZPSymBufPtr),y
|
lda (ZPLookupSymPtr),y
|
||||||
jsr CODE.PUSHI
|
jsr CODE.PUSHI
|
||||||
|
|
||||||
lda (ZPSymBufPtr) SYM.T
|
lda (ZPLookupSymPtr) SYM.T
|
||||||
|
|
||||||
sta ZPPtr2 T
|
sta ZPPtr2 T
|
||||||
|
|
||||||
ldy #SYM.Q
|
ldy #SYM.Q
|
||||||
lda (ZPSymBufPtr),y
|
lda (ZPLookupSymPtr),y
|
||||||
clc
|
clc
|
||||||
adc #SYM.Q.POINTER
|
adc #SYM.Q.POINTER
|
||||||
bcs .9 more than ***
|
bcs .9 more than ***
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
NEW
|
NEW
|
||||||
AUTO 3,1
|
AUTO 3,1
|
||||||
.LIST OFF
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.F.Decl stz LocalPtr
|
CC.F.Decl stz LocalPtr
|
||||||
|
|
||||||
|
@ -38,9 +37,6 @@ CC.F.Decl stz LocalPtr
|
||||||
jsr CC.IsLetter
|
jsr CC.IsLetter
|
||||||
bcs .2
|
bcs .2
|
||||||
|
|
||||||
jsr CC.SYM.Push
|
|
||||||
bcs .99
|
|
||||||
|
|
||||||
>LDYA ZPPtr2
|
>LDYA ZPPtr2
|
||||||
ldx #SYM.SC.AUTO
|
ldx #SYM.SC.AUTO
|
||||||
jsr CC.SYM.New
|
jsr CC.SYM.New
|
||||||
|
@ -49,7 +45,7 @@ CC.F.Decl stz LocalPtr
|
||||||
jsr CC.SYM.Store Store f() Args in Local scope
|
jsr CC.SYM.Store Store f() Args in Local scope
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
jsr CC.SYM.FreeBufPop
|
jsr CC.SYM.Free
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
jsr CC.GetCharNB
|
jsr CC.GetCharNB
|
||||||
|
@ -93,12 +89,6 @@ CC.F.Decl stz LocalPtr
|
||||||
.7 cmp #'{'
|
.7 cmp #'{'
|
||||||
bne .9
|
bne .9
|
||||||
|
|
||||||
ldy #SYM.Addr+1
|
|
||||||
lda (ZPSymBufPtr),y
|
|
||||||
dey
|
|
||||||
ora (ZPSymBufPtr),y
|
|
||||||
bne .90 Already populated by LINK
|
|
||||||
|
|
||||||
>LDYA ZPCCCode f() Code starts HERE
|
>LDYA ZPCCCode f() Code starts HERE
|
||||||
jsr CC.SYM.SetAddrYA
|
jsr CC.SYM.SetAddrYA
|
||||||
|
|
||||||
|
@ -108,10 +98,6 @@ CC.F.Decl stz LocalPtr
|
||||||
|
|
||||||
clc Store f() Declaration / Start Definition
|
clc Store f() Declaration / Start Definition
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.90 lda #E.REDEF
|
|
||||||
sec
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.F.DeclGetTQ lda (ZPLineBufPtr)
|
CC.F.DeclGetTQ lda (ZPLineBufPtr)
|
||||||
cmp #'.'
|
cmp #'.'
|
||||||
|
@ -167,6 +153,17 @@ CC.F.Def.END jsr CODE.Leave
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
CC.F.AddTQ pha
|
||||||
|
tya
|
||||||
|
ldy ZPSymSize
|
||||||
|
sta (ZPSymBufPtr),y
|
||||||
|
iny
|
||||||
|
pla
|
||||||
|
sta (ZPSymBufPtr),y
|
||||||
|
iny
|
||||||
|
sty ZPSymSize
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
* in : ZPSymPtr
|
* in : ZPSymPtr
|
||||||
* Y,A = Expected T/Q
|
* Y,A = Expected T/Q
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -188,11 +185,10 @@ CC.F.CallRetV sec
|
||||||
|
|
||||||
ror ZPPtr1+1 bRetV
|
ror ZPPtr1+1 bRetV
|
||||||
bpl .20 no return value on stack
|
bpl .20 no return value on stack
|
||||||
|
|
||||||
ldy #SYM.Addr+1
|
ldy #SYM.Addr+1
|
||||||
lda (ZPSymBufPtr),y
|
lda (ZPSymBufPtr),y
|
||||||
cmp #2
|
beq .20 SYS/LIB/FPU call, no ret value space
|
||||||
bcc .20 SYS/FPU call, no ret value space
|
|
||||||
|
|
||||||
jsr CC.SYM.GetSymSizeOfInAXC
|
jsr CC.SYM.GetSymSizeOfInAXC
|
||||||
jsr CODE.nAddLocal
|
jsr CODE.nAddLocal
|
||||||
|
@ -354,7 +350,7 @@ CC.F.Call2 lda ZPPtr2+1
|
||||||
* Return Value : call & put result on stack if in Y,A
|
* Return Value : call & put result on stack if in Y,A
|
||||||
|
|
||||||
.5 ldy #SYM.Addr+1
|
.5 ldy #SYM.Addr+1
|
||||||
lda (ZPSymBufPtr),y
|
lda (ZPLookupSymPtr),y
|
||||||
cmp #2
|
cmp #2
|
||||||
bcs .8 not a SYS/FPU call...Ret value on stack
|
bcs .8 not a SYS/FPU call...Ret value on stack
|
||||||
|
|
||||||
|
@ -377,13 +373,14 @@ CC.F.Call2 lda ZPPtr2+1
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.F.Call3 ldy #SYM.Addr+1
|
CC.F.Call3 ldy #SYM.Addr+1
|
||||||
lda (ZPSymBufPtr),y
|
|
||||||
|
lda (ZPLookupSymPtr),y
|
||||||
beq .9
|
beq .9
|
||||||
|
|
||||||
pha
|
pha
|
||||||
|
|
||||||
dey
|
dey
|
||||||
lda (ZPSymBufPtr),y
|
lda (ZPLookupSymPtr),y
|
||||||
tax
|
tax
|
||||||
|
|
||||||
ply
|
ply
|
||||||
|
@ -407,19 +404,23 @@ CC.F.Call3 ldy #SYM.Addr+1
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.9 lda #E.FUNDEF
|
.9 bit bPass2
|
||||||
sec
|
bmi .99
|
||||||
|
|
||||||
|
lda #5 leave room for LDX #imm, JSR abs
|
||||||
|
clc
|
||||||
|
adc ZPCCConst
|
||||||
|
sta ZPCCConst
|
||||||
|
|
||||||
|
bcc .90
|
||||||
|
|
||||||
|
inc ZPCCConst+1
|
||||||
|
|
||||||
|
.90 clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
|
||||||
CC.F.AddTQ pha
|
.99 lda #E.FUNDEF
|
||||||
tya
|
sec
|
||||||
ldy ZPSymSize
|
|
||||||
sta (ZPSymBufPtr),y
|
|
||||||
iny
|
|
||||||
pla
|
|
||||||
sta (ZPSymBufPtr),y
|
|
||||||
iny
|
|
||||||
sty ZPSymSize
|
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.F.GetTQ ldy ZPSymSize
|
CC.F.GetTQ ldy ZPSymSize
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
NEW
|
NEW
|
||||||
AUTO 3,1
|
AUTO 3,1
|
||||||
.LIST OFF
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* Built in Keywords
|
* Built in Keywords
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -49,11 +48,11 @@ CC.KW.IF.END jsr CC.PopYA
|
||||||
>STYA ZPPtr1 set JMP false
|
>STYA ZPPtr1 set JMP false
|
||||||
|
|
||||||
lda ZPCCCode
|
lda ZPCCCode
|
||||||
sta (ZPPtr1)
|
* sta (ZPPtr1)
|
||||||
|
|
||||||
ldy #1
|
ldy #1
|
||||||
lda ZPCCCode+1
|
lda ZPCCCode+1
|
||||||
sta (ZPPtr1),y
|
* sta (ZPPtr1),y
|
||||||
|
|
||||||
* clc
|
* clc
|
||||||
|
|
||||||
|
@ -85,11 +84,11 @@ CC.KW.WHILE.END jsr CC.PopYA Get JMP false location
|
||||||
jsr CODE.TOABSYX
|
jsr CODE.TOABSYX
|
||||||
|
|
||||||
lda ZPCCCode
|
lda ZPCCCode
|
||||||
sta (ZPPtr1)
|
* sta (ZPPtr1)
|
||||||
|
|
||||||
ldy #1
|
ldy #1
|
||||||
lda ZPCCCode+1
|
lda ZPCCCode+1
|
||||||
sta (ZPPtr1),y
|
* sta (ZPPtr1),y
|
||||||
|
|
||||||
clc
|
clc
|
||||||
|
|
||||||
|
@ -106,37 +105,40 @@ CC.KW.DO.END
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* for (e1;e2;e3) s;
|
* for (e1;e2;e3) s;
|
||||||
*
|
*
|
||||||
* e1;
|
* { <- new scope : allows for(int i=1; ....)
|
||||||
* while (e2)
|
* e1;
|
||||||
* {
|
* loop:
|
||||||
* s;
|
* while (e2)
|
||||||
* cont:
|
* {
|
||||||
* e3;
|
* s;
|
||||||
|
* cont:
|
||||||
|
* e3;
|
||||||
|
* }
|
||||||
|
* break:
|
||||||
* }
|
* }
|
||||||
* break:
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.KW.FOR jsr CC.GetCharNB
|
CC.KW.FOR jsr CC.GetCharNB
|
||||||
bcs .19
|
bcs .9
|
||||||
|
|
||||||
cmp #'('
|
cmp #'('
|
||||||
bne .19
|
bne .9
|
||||||
|
|
||||||
jsr CC.GetNextCharNB
|
jsr CC.GetNextCharNB
|
||||||
bcs .19
|
bcs .9
|
||||||
|
|
||||||
jsr CC.EXP.Eval00 get e1
|
jsr CC.EXP.Eval00 get e1
|
||||||
bcs .29
|
bcs .9
|
||||||
|
|
||||||
jsr CC.KW.StackDiscard
|
jsr CC.KW.StackDiscard
|
||||||
|
|
||||||
jsr CC.GetCharNB
|
jsr CC.GetCharNB
|
||||||
bcs .19
|
bcs .9
|
||||||
|
|
||||||
cmp #';'
|
cmp #';'
|
||||||
bne .19
|
bne .9
|
||||||
|
|
||||||
jsr CC.GetNextCharNB skip ';'
|
jsr CC.GetNextCharNB skip ';'
|
||||||
.19 bcs .9
|
bcs .9
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
>LDYA ZPCCCode
|
>LDYA ZPCCCode
|
||||||
>STYA ZPPtr2 save LOOP address
|
>STYA ZPPtr2 save LOOP address
|
||||||
|
@ -187,11 +189,11 @@ CC.KW.FOR jsr CC.GetCharNB
|
||||||
jsr CODE.TOABSYX JMP e2
|
jsr CODE.TOABSYX JMP e2
|
||||||
|
|
||||||
lda ZPCCCode setup JSR s;
|
lda ZPCCCode setup JSR s;
|
||||||
sta (ZPPtr3)
|
* sta (ZPPtr3)
|
||||||
|
|
||||||
lda ZPCCCode+1
|
lda ZPCCCode+1
|
||||||
ldy #1
|
ldy #1
|
||||||
sta (ZPPtr3),y
|
* sta (ZPPtr3),y
|
||||||
|
|
||||||
jmp CC.KW.BEGIN
|
jmp CC.KW.BEGIN
|
||||||
|
|
||||||
|
@ -215,11 +217,11 @@ CC.KW.FOR.END lda #$60
|
||||||
>STYA ZPPtr1 get JMP break: location
|
>STYA ZPPtr1 get JMP break: location
|
||||||
|
|
||||||
lda ZPCCCode
|
lda ZPCCCode
|
||||||
sta (ZPPtr1)
|
* sta (ZPPtr1)
|
||||||
|
|
||||||
ldy #1
|
ldy #1
|
||||||
lda ZPCCCode+1
|
lda ZPCCCode+1
|
||||||
sta (ZPPtr1),y
|
* sta (ZPPtr1),y
|
||||||
|
|
||||||
clc
|
clc
|
||||||
|
|
||||||
|
@ -227,7 +229,15 @@ CC.KW.FOR.END lda #$60
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.KW.SWITCH
|
CC.KW.SWITCH
|
||||||
CC.KW.CASE
|
CC.KW.CASE
|
||||||
|
lda #E.CSYN
|
||||||
|
sec
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
CC.KW.BREAK
|
CC.KW.BREAK
|
||||||
|
lda #E.CSYN
|
||||||
|
sec
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
CC.KW.CONTINUE
|
CC.KW.CONTINUE
|
||||||
lda #E.CSYN
|
lda #E.CSYN
|
||||||
sec
|
sec
|
||||||
|
@ -287,6 +297,7 @@ CC.KW.STRUCT >ENTER 4
|
||||||
jsr CC.GetCharNB
|
jsr CC.GetCharNB
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
|
ldx #SYM.SC.TAG
|
||||||
>LDA.G CC.hTags
|
>LDA.G CC.hTags
|
||||||
jsr CC.SYM.NewKey
|
jsr CC.SYM.NewKey
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
|
@ -0,0 +1,173 @@
|
||||||
|
NEW
|
||||||
|
AUTO 3,1
|
||||||
|
*--------------------------------------
|
||||||
|
CC.Link.RTS rts
|
||||||
|
|
||||||
|
CC.Link >LDYA L.MSG.LINKING
|
||||||
|
>SYSCALL Puts
|
||||||
|
|
||||||
|
>LDYAI 256
|
||||||
|
>SYSCALL GetMem
|
||||||
|
bcs CC.Link.RTS
|
||||||
|
|
||||||
|
>STYA ZPSymBufPtr
|
||||||
|
txa
|
||||||
|
>STA.G CC.hSymBuf
|
||||||
|
|
||||||
|
ldy #0
|
||||||
|
lda #0
|
||||||
|
|
||||||
|
.1 >STYA ZPPtr1 SymID
|
||||||
|
|
||||||
|
>PUSHB.G CC.hSymbols
|
||||||
|
>PUSHW ZPPtr1 SymID
|
||||||
|
>PUSHW pData
|
||||||
|
|
||||||
|
>SYSCALL SListGetByID
|
||||||
|
bcs .8
|
||||||
|
|
||||||
|
>STYA ZPPtr2 NextID
|
||||||
|
|
||||||
|
>PUSHB.G CC.hSymbols
|
||||||
|
>PUSHW ZPPtr1 SymID
|
||||||
|
>PUSHW ZPSymBufPtr
|
||||||
|
>PUSHWI $ffff All
|
||||||
|
>PUSHWZ from Start
|
||||||
|
>SYSCALL SListGetData
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
>STYA ZPSymSize
|
||||||
|
|
||||||
|
ldy #SYM.Addr+1
|
||||||
|
lda (ZPSymBufPtr),y
|
||||||
|
dey
|
||||||
|
ora (ZPSymBufPtr),y
|
||||||
|
bne .6
|
||||||
|
|
||||||
|
jsr CC.Link.LIBC
|
||||||
|
bcc .6
|
||||||
|
|
||||||
|
jsr CC.Link.Dump
|
||||||
|
lda #E.FUNDEF
|
||||||
|
sec
|
||||||
|
bra .9
|
||||||
|
|
||||||
|
.6 >LDA.G bTrace
|
||||||
|
bpl .7
|
||||||
|
|
||||||
|
jsr CC.Link.Dump
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
.7 >LDYA ZPPtr2
|
||||||
|
jmp .1
|
||||||
|
|
||||||
|
.8 clc
|
||||||
|
|
||||||
|
.9 php
|
||||||
|
pha
|
||||||
|
jsr CC.SYM.Free
|
||||||
|
pla
|
||||||
|
plp
|
||||||
|
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
* Input : pData = Symbol
|
||||||
|
*--------------------------------------
|
||||||
|
CC.Link.LIBC >LDYA L.CC.LIBC
|
||||||
|
>STYA ZPLookupPtr
|
||||||
|
|
||||||
|
ldy #$ff
|
||||||
|
|
||||||
|
.10 iny
|
||||||
|
lda (pData),y
|
||||||
|
bne .10
|
||||||
|
|
||||||
|
phy Symbol Len
|
||||||
|
|
||||||
|
ldx #0
|
||||||
|
|
||||||
|
.1 lda (ZPLookupPtr)
|
||||||
|
beq .9 Ending 0, not found....
|
||||||
|
|
||||||
|
pla
|
||||||
|
pha Get Back Len
|
||||||
|
cmp (ZPLookupPtr) Same Len ?
|
||||||
|
bne .4
|
||||||
|
|
||||||
|
tay
|
||||||
|
|
||||||
|
.2 lda (ZPLookupPtr),y
|
||||||
|
|
||||||
|
dey
|
||||||
|
cmp (pData),y
|
||||||
|
bne .4
|
||||||
|
|
||||||
|
tya
|
||||||
|
bne .2
|
||||||
|
|
||||||
|
lda (ZPLookupPtr)
|
||||||
|
jsr CC.ZPLookupPtrAddAp1 Skip LEN\Symbol
|
||||||
|
|
||||||
|
ldy #2 Skip LEN
|
||||||
|
lda (ZPLookupPtr),y
|
||||||
|
pha
|
||||||
|
dey
|
||||||
|
lda (ZPLookupPtr),y
|
||||||
|
ply
|
||||||
|
|
||||||
|
jsr CC.SYM.SetAddrYA
|
||||||
|
|
||||||
|
plx
|
||||||
|
|
||||||
|
>PUSHB.G CC.hSymbols
|
||||||
|
>PUSHW ZPPtr1 SymID
|
||||||
|
>PUSHW ZPSymBufPtr
|
||||||
|
>PUSHW ZPSymSize
|
||||||
|
>SYSCALL SListSetData
|
||||||
|
rts
|
||||||
|
|
||||||
|
.4 inx
|
||||||
|
inx
|
||||||
|
|
||||||
|
lda (ZPLookupPtr)
|
||||||
|
jsr CC.ZPLookupPtrAddAp1 Skip LEN\Symbol
|
||||||
|
|
||||||
|
lda (ZPLookupPtr)
|
||||||
|
jsr CC.ZPLookupPtrAddAp1 Skip LEN\definition
|
||||||
|
bra .1
|
||||||
|
|
||||||
|
.9 plx
|
||||||
|
sec
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
CC.Link.Dump >PUSHW L.MSG.LINKING2
|
||||||
|
>PUSHW pData
|
||||||
|
|
||||||
|
>PUSHB (ZPSymBufPtr) SYM.T
|
||||||
|
|
||||||
|
ldy #1
|
||||||
|
>PUSHB (ZPSymBufPtr),y SYM.Q
|
||||||
|
|
||||||
|
iny
|
||||||
|
>PUSHB (ZPSymBufPtr),y SYM.SC
|
||||||
|
|
||||||
|
ldy #SYM.SizeOf+1
|
||||||
|
>PUSHB (ZPSymBufPtr),y
|
||||||
|
dey
|
||||||
|
>PUSHB (ZPSymBufPtr),y
|
||||||
|
|
||||||
|
ldy #SYM.Addr+1
|
||||||
|
>PUSHB (ZPSymBufPtr),y
|
||||||
|
dey
|
||||||
|
>PUSHB (ZPSymBufPtr),y
|
||||||
|
|
||||||
|
>PUSHBI 9
|
||||||
|
>SYSCALL PrintF
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
|
||||||
|
*--------------------------------------
|
||||||
|
MAN
|
||||||
|
SAVE usr/src/bin/cc.s.link
|
||||||
|
LOAD usr/src/bin/cc.s
|
||||||
|
ASM
|
|
@ -1,59 +1,5 @@
|
||||||
NEW
|
NEW
|
||||||
AUTO 3,1
|
AUTO 3,1
|
||||||
.LIST OFF
|
|
||||||
*--------------------------------------
|
|
||||||
CC.STMT jsr CC.SYM.Lookup var= or func() ?
|
|
||||||
bcs .80
|
|
||||||
|
|
||||||
ldy #SYM.Q
|
|
||||||
lda (ZPSymBufPtr),y
|
|
||||||
bit #SYM.Q.FUNC
|
|
||||||
bne .20
|
|
||||||
|
|
||||||
jsr CC.GetCharNB var = ?
|
|
||||||
bcs .90
|
|
||||||
|
|
||||||
* TODO: AOPS
|
|
||||||
|
|
||||||
cmp #'='
|
|
||||||
bne .90
|
|
||||||
|
|
||||||
jsr CC.GetNextChar Skip =
|
|
||||||
bcs .99
|
|
||||||
|
|
||||||
jsr CC.SYM.GetTypeInYA
|
|
||||||
jsr CC.EXP.Eval
|
|
||||||
bcs .99
|
|
||||||
|
|
||||||
jsr CC.SYM.PopValue
|
|
||||||
bcs .99
|
|
||||||
|
|
||||||
jsr CC.SYM.FreeBufPop
|
|
||||||
|
|
||||||
|
|
||||||
clv
|
|
||||||
clc
|
|
||||||
rts
|
|
||||||
|
|
||||||
|
|
||||||
.20 ldy #0 func( ... );
|
|
||||||
lda #0
|
|
||||||
jsr CC.F.CallNoRetV
|
|
||||||
bcs .9
|
|
||||||
|
|
||||||
jsr CC.SYM.FreeBufPop
|
|
||||||
|
|
||||||
clv
|
|
||||||
clc
|
|
||||||
rts
|
|
||||||
|
|
||||||
.80 bit #$60
|
|
||||||
clc
|
|
||||||
rts
|
|
||||||
|
|
||||||
.90 lda #E.CSYN
|
|
||||||
sec
|
|
||||||
.99 rts
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* X = KW.ID
|
* X = KW.ID
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -88,7 +34,7 @@ CC.STMT.CPStmt.END
|
||||||
|
|
||||||
jsr CC.Pop Locals
|
jsr CC.Pop Locals
|
||||||
sta LocalPtr
|
sta LocalPtr
|
||||||
|
|
||||||
txa
|
txa
|
||||||
bmi .5
|
bmi .5
|
||||||
|
|
||||||
|
@ -100,6 +46,8 @@ CC.STMT.CPStmt.END
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
CC.CPS.New
|
||||||
|
*--------------------------------------
|
||||||
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
|
||||||
|
|
208
BIN/CC.S.SYM.txt
208
BIN/CC.S.SYM.txt
|
@ -1,6 +1,5 @@
|
||||||
NEW
|
NEW
|
||||||
AUTO 3,1
|
AUTO 3,1
|
||||||
.LIST OFF
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* Input : ZPLineBufPtr, Y,A = T/Q, X = SC
|
* Input : ZPLineBufPtr, Y,A = T/Q, X = SC
|
||||||
* Output : Y,A = VarID
|
* Output : Y,A = VarID
|
||||||
|
@ -10,11 +9,10 @@ CC.SYM.New >STYA ZPPtr2 T/Q
|
||||||
|
|
||||||
ldy ScopePtr
|
ldy ScopePtr
|
||||||
lda (pData),y
|
lda (pData),y
|
||||||
sta hSymScope
|
|
||||||
jsr CC.SYM.NewKey
|
jsr CC.SYM.NewKey
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
>STYA ZPSymID Y,A = KeyID
|
>STYA.G CC.SymID Y,A = KeyID
|
||||||
stx ZPPtr3+1 X = KeyLen
|
stx ZPPtr3+1 X = KeyLen
|
||||||
|
|
||||||
>LDYAI 256
|
>LDYAI 256
|
||||||
|
@ -22,22 +20,32 @@ CC.SYM.New >STYA ZPPtr2 T/Q
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
>STYA ZPSymBufPtr
|
>STYA ZPSymBufPtr
|
||||||
stx hSymBuf
|
txa
|
||||||
|
>STA.G CC.hSymBuf
|
||||||
|
|
||||||
>LDYA ZPPtr2
|
lda ZPPtr2
|
||||||
jsr CC.SYM.SetTypeYA
|
sta (ZPSymBufPtr) #SYM.T
|
||||||
|
|
||||||
lda ZPPtr3
|
lda ZPPtr2+1
|
||||||
ldy #SYM.SC
|
ldy #SYM.Q
|
||||||
sta (ZPSymBufPtr),y
|
sta (ZPSymBufPtr),y
|
||||||
|
|
||||||
lda #SYM.Def
|
lda ZPPtr3
|
||||||
sta ZPSymSize
|
iny #SYM.SC
|
||||||
|
sta (ZPSymBufPtr),y
|
||||||
|
|
||||||
|
iny
|
||||||
|
lda #0
|
||||||
|
|
||||||
|
.1 sta (ZPSymBufPtr),y
|
||||||
|
iny
|
||||||
|
cpy #SYM.Def
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
sty ZPSymSize
|
||||||
stz ZPSymSize+1
|
stz ZPSymSize+1
|
||||||
|
|
||||||
ldx ZPPtr3+1 Key Len
|
ldx ZPPtr3+1 Key Len
|
||||||
jsr CC.SYM.Link
|
|
||||||
|
|
||||||
jsr CC.SkipX
|
jsr CC.SkipX
|
||||||
|
|
||||||
jsr CC.GetCharNB
|
jsr CC.GetCharNB
|
||||||
|
@ -46,7 +54,7 @@ CC.SYM.New >STYA ZPPtr2 T/Q
|
||||||
cmp #'('
|
cmp #'('
|
||||||
bne CC.SYM.NewV
|
bne CC.SYM.NewV
|
||||||
|
|
||||||
jmp CC.F.Decl
|
jmp CC.F.Decl
|
||||||
|
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -166,7 +174,7 @@ CC.SYM.SetAddrL jsr CC.SYM.GetSymSizeOfInAXC
|
||||||
|
|
||||||
ldy #SYM.Addr
|
ldy #SYM.Addr
|
||||||
sta (ZPSymBufPtr),y
|
sta (ZPSymBufPtr),y
|
||||||
|
|
||||||
jsr CC.SYM.GetSymSizeOfInAXC
|
jsr CC.SYM.GetSymSizeOfInAXC
|
||||||
jsr CODE.nAddLocal
|
jsr CODE.nAddLocal
|
||||||
|
|
||||||
|
@ -179,87 +187,55 @@ CC.SYM.SetAddrL jsr CC.SYM.GetSymSizeOfInAXC
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.SYM.NewKey >PUSHA
|
CC.SYM.NewKey >PUSHA
|
||||||
>PUSHW ZPLineBufPtr
|
>PUSHW ZPLineBufPtr
|
||||||
>SYSCALL SListNewKey
|
|
||||||
* bcs .9
|
|
||||||
|
|
||||||
* clc Y,A = KeyID, X = KeyLen
|
bit bPass2
|
||||||
|
bpl .1
|
||||||
|
|
||||||
.9 rts
|
txa
|
||||||
*--------------------------------------
|
bne .1
|
||||||
* Input : ZPLineBufPtr, X = KeyLen
|
|
||||||
*--------------------------------------
|
|
||||||
CC.SYM.Link >LDYA L.CC.LIBC
|
|
||||||
>STYA ZPLookupPtr
|
|
||||||
|
|
||||||
phx
|
>SYSCALL SListLookup
|
||||||
|
|
||||||
lda #0
|
* clc
|
||||||
ldy #SYM.Addr
|
|
||||||
sta (ZPSymBufPtr),y
|
|
||||||
iny
|
|
||||||
sta (ZPSymBufPtr),y
|
|
||||||
|
|
||||||
ldx #0
|
|
||||||
|
|
||||||
.1 lda (ZPLookupPtr)
|
|
||||||
beq .9 Ending 0, not found....
|
|
||||||
|
|
||||||
pla
|
|
||||||
pha Get Back Len
|
|
||||||
cmp (ZPLookupPtr) Same Len ?
|
|
||||||
bne .4
|
|
||||||
|
|
||||||
tay
|
|
||||||
|
|
||||||
.2 lda (ZPLookupPtr),y
|
|
||||||
|
|
||||||
dey
|
|
||||||
cmp (ZPLineBufPtr),y
|
|
||||||
bne .4
|
|
||||||
|
|
||||||
tya
|
|
||||||
bne .2
|
|
||||||
|
|
||||||
lda (ZPLookupPtr)
|
|
||||||
jsr CC.ZPLookupPtrAddAp1 Skip LEN\Symbol
|
|
||||||
|
|
||||||
ldy #2 Skip LEN
|
|
||||||
lda (ZPLookupPtr),y
|
|
||||||
pha
|
|
||||||
dey
|
|
||||||
lda (ZPLookupPtr),y
|
|
||||||
ply
|
|
||||||
|
|
||||||
jsr CC.SYM.SetAddrYA
|
|
||||||
|
|
||||||
plx
|
|
||||||
clc
|
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.4 inx
|
.1 >SYSCALL SListNewKey
|
||||||
inx
|
|
||||||
|
|
||||||
lda (ZPLookupPtr)
|
rts Y,A = KeyID, X = KeyLen
|
||||||
jsr CC.ZPLookupPtrAddAp1 Skip LEN\Symbol
|
|
||||||
|
|
||||||
lda (ZPLookupPtr)
|
|
||||||
jsr CC.ZPLookupPtrAddAp1 Skip LEN\definition
|
|
||||||
bra .1
|
|
||||||
|
|
||||||
.9 plx
|
|
||||||
sec
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.SYM.Store >PUSHB hSymScope
|
CC.SYM.Store ldy ScopePtr
|
||||||
>PUSHW ZPSymID
|
lda (pData),y
|
||||||
|
>PUSHA
|
||||||
|
>PUSHW.G CC.SymID
|
||||||
>PUSHW ZPSymBufPtr
|
>PUSHW ZPSymBufPtr
|
||||||
>PUSHBI 0
|
>PUSHW ZPSymSize
|
||||||
>PUSHB ZPSymSize
|
|
||||||
>SYSCALL SListAddData
|
bit bPass2
|
||||||
|
bpl .1
|
||||||
|
|
||||||
|
bit ScopenCnt
|
||||||
|
bmi .1
|
||||||
|
|
||||||
|
>SYSCALL SListSetData
|
||||||
|
rts
|
||||||
|
|
||||||
|
.1 >SYSCALL SListAddData
|
||||||
|
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
CC.SYM.Free >LDA.G CC.hSymBuf
|
||||||
|
>SYSCALL FreeMem
|
||||||
|
bcs .99
|
||||||
|
|
||||||
|
>STZ.G CC.hSymBuf
|
||||||
|
rts
|
||||||
|
|
||||||
|
.99 >DEBUG
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.SYM.NewScope ldy ScopePtr
|
CC.SYM.NewScope ldy ScopePtr
|
||||||
cpy #CC.hSymbols+SCOPE.MAX-1
|
cpy #CC.hSymbols+SCOPE.MAX
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
>SYSCALL SListNew
|
>SYSCALL SListNew
|
||||||
|
@ -288,12 +264,9 @@ CC.SYM.FreeScope
|
||||||
dec ScopePtr
|
dec ScopePtr
|
||||||
inc ScopenCnt
|
inc ScopenCnt
|
||||||
|
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.SYM.Lookup jsr CC.SYM.Push
|
CC.SYM.Lookup >PUSHB ScopePtr
|
||||||
bcs .99
|
|
||||||
|
|
||||||
>PUSHB ScopePtr
|
|
||||||
|
|
||||||
.1 tay
|
.1 tay
|
||||||
lda (pData),y
|
lda (pData),y
|
||||||
|
@ -302,64 +275,35 @@ CC.SYM.Lookup jsr CC.SYM.Push
|
||||||
|
|
||||||
lda (pstack)
|
lda (pstack)
|
||||||
cmp #CC.hSymbols
|
cmp #CC.hSymbols
|
||||||
beq .9 CS
|
beq .9
|
||||||
|
|
||||||
dec
|
dec
|
||||||
sta (pstack)
|
sta (pstack)
|
||||||
bra .1
|
bra .1
|
||||||
|
|
||||||
.9 jsr CC.SYM.Pop
|
.9 inc pStack
|
||||||
|
|
||||||
inc pStack
|
|
||||||
|
|
||||||
lda #E.NOKEY
|
lda #E.NOKEY
|
||||||
|
sec
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.8 stx hSymBuf
|
.8 inc pStack
|
||||||
|
|
||||||
>PULLA
|
>STYA ZPLookupSymPtr
|
||||||
tay
|
|
||||||
lda (pData),y
|
|
||||||
sta hSymScope
|
|
||||||
|
|
||||||
txa
|
|
||||||
>SYSCALL GetMemPtr
|
|
||||||
>STYA ZPSymBufPtr
|
|
||||||
|
|
||||||
.99 rts
|
.99 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.SYM.Push ldx #7
|
CC.SYM.LookupFree
|
||||||
|
>LDA.G CC.hLookupSymBuf
|
||||||
.1 lda ZPSymID,x
|
|
||||||
jsr CC.Push
|
|
||||||
bcs .9
|
|
||||||
|
|
||||||
dex
|
|
||||||
bpl .1
|
|
||||||
|
|
||||||
.9 rts
|
|
||||||
*--------------------------------------
|
|
||||||
CC.SYM.FreeBuf lda hSymBuf
|
|
||||||
|
|
||||||
stz hSymBuf
|
|
||||||
>SYSCALL FreeMem
|
>SYSCALL FreeMem
|
||||||
|
bcs .99
|
||||||
|
|
||||||
|
>STZ.G CC.hLookupSymBuf
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
|
||||||
CC.SYM.FreeBufPop
|
|
||||||
jsr CC.SYM.FreeBuf
|
.99 >DEBUG
|
||||||
*--------------------------------------
|
rts
|
||||||
CC.SYM.Pop ldx #0
|
|
||||||
|
|
||||||
.1 jsr CC.Pop
|
|
||||||
bcs .9
|
|
||||||
|
|
||||||
sta ZPSymID,x
|
|
||||||
inx
|
|
||||||
cpx #8
|
|
||||||
bne .1
|
|
||||||
|
|
||||||
clc
|
|
||||||
.9 rts
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* Y,A = value T/Q
|
* Y,A = value T/Q
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -525,7 +469,7 @@ CC.SYM.GetAddrInYA
|
||||||
lda (ZPSymBufPtr),y
|
lda (ZPSymBufPtr),y
|
||||||
pha
|
pha
|
||||||
|
|
||||||
dey #SYM.Addr
|
dey
|
||||||
lda (ZPSymBufPtr),y
|
lda (ZPSymBufPtr),y
|
||||||
tay
|
tay
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
NEW
|
NEW
|
||||||
AUTO 3,1
|
AUTO 3,1
|
||||||
.LIST OFF
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.TYPE.Decl >ENTER 2
|
CC.TYPE.Decl >ENTER 2
|
||||||
lda #0
|
lda #0
|
||||||
|
|
553
BIN/CC.S.txt
553
BIN/CC.S.txt
|
@ -40,18 +40,34 @@ SYM.SC.AUTO .EQ 2
|
||||||
SYM.SC.REGISTER .EQ 4
|
SYM.SC.REGISTER .EQ 4
|
||||||
SYM.SC.EXTERN .EQ 6
|
SYM.SC.EXTERN .EQ 6
|
||||||
SYM.SC.TYPEDEF .EQ 8
|
SYM.SC.TYPEDEF .EQ 8
|
||||||
|
SYM.SC.DEFINE .EQ 10
|
||||||
|
SYM.SC.TAG .EQ 12
|
||||||
*
|
*
|
||||||
SYM.SizeOf .EQ 4
|
SYM.SizeOf .EQ 4
|
||||||
SYM.Addr .EQ 6
|
SYM.Addr .EQ 6
|
||||||
* .EQ 8
|
SYM.Def .EQ 8
|
||||||
*
|
*
|
||||||
SYM.Def .EQ 10
|
SYM .EQ 10
|
||||||
|
*--------------------------------------
|
||||||
|
CPS.ParentID .EQ 0
|
||||||
|
CPS.hSYM .EQ 2
|
||||||
|
*
|
||||||
|
CPS.Cont .EQ 4
|
||||||
|
CPS.Break .EQ 6
|
||||||
|
*
|
||||||
|
CPS .EQ 8
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* Zero Page Segment, up to 32 bytes
|
* Zero Page Segment, up to 32 bytes
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.DUMMY
|
.DUMMY
|
||||||
.OR ZPBIN
|
.OR ZPBIN
|
||||||
ZS.START
|
ZS.START
|
||||||
|
ZPPtr1 .BS 2
|
||||||
|
ZPPtr2 .BS 2
|
||||||
|
ZPPtr3 .BS 2
|
||||||
|
ArgIndex .BS 1
|
||||||
|
bPass2 .BS 1
|
||||||
|
|
||||||
ZPCCCode .BS 2
|
ZPCCCode .BS 2
|
||||||
ZPCCConst .BS 2
|
ZPCCConst .BS 2
|
||||||
ZPCCData .BS 2
|
ZPCCData .BS 2
|
||||||
|
@ -66,17 +82,12 @@ LocalPtr .BS 1
|
||||||
ScopePtr .BS 1
|
ScopePtr .BS 1
|
||||||
ScopenCnt .BS 1
|
ScopenCnt .BS 1
|
||||||
|
|
||||||
ZPSymID .BS 2
|
* .BS 1
|
||||||
hSymScope .BS 1
|
* .BS 1
|
||||||
hSymBuf .BS 1
|
|
||||||
ZPSymSize .BS 2
|
ZPSymSize .BS 2
|
||||||
ZPSymBufPtr .BS 2
|
ZPSymBufPtr .BS 2
|
||||||
|
|
||||||
ZPPtr1 .BS 2
|
ZPLookupSymPtr .BS 2
|
||||||
ZPPtr2 .BS 2
|
|
||||||
ZPPtr3 .BS 2
|
|
||||||
ArgIndex .BS 1
|
|
||||||
hDefineBuf .BS 1
|
|
||||||
|
|
||||||
ZS.END .ED
|
ZS.END .ED
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -104,10 +115,14 @@ CS.START cld
|
||||||
L.MSG.GREETINGS .DA MSG.GREETINGS
|
L.MSG.GREETINGS .DA MSG.GREETINGS
|
||||||
L.MSG.USAGE .DA MSG.USAGE
|
L.MSG.USAGE .DA MSG.USAGE
|
||||||
L.MSG.COMPILING .DA MSG.COMPILING
|
L.MSG.COMPILING .DA MSG.COMPILING
|
||||||
|
L.MSG.LINKING .DA MSG.LINKING
|
||||||
|
L.MSG.LINKING2 .DA MSG.LINKING2
|
||||||
|
L.MSG.GENERATING .DA MSG.GENERATING
|
||||||
L.MSG.DEBUG .DA MSG.DEBUG
|
L.MSG.DEBUG .DA MSG.DEBUG
|
||||||
L.MSG.TRACE .DA MSG.TRACE
|
L.MSG.TRACE .DA MSG.TRACE
|
||||||
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.NOMAIN .DA MSG.NOMAIN
|
L.MSG.NOMAIN .DA MSG.NOMAIN
|
||||||
L.ENV.INCLUDE .DA ENV.INCLUDE
|
L.ENV.INCLUDE .DA ENV.INCLUDE
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -207,6 +222,7 @@ J.CC.STYPES .DA CC.TYPE.SCHAR
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
L.CC.MAIN .DA CC.MAIN
|
L.CC.MAIN .DA CC.MAIN
|
||||||
L.CC.LIBC .DA CC.LIBC
|
L.CC.LIBC .DA CC.LIBC
|
||||||
|
L.PCC.FH .DA PCC.FH
|
||||||
.DA 0
|
.DA 0
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* Called once at process creation
|
* Called once at process creation
|
||||||
|
@ -243,21 +259,48 @@ CS.RUN >PUSHW L.MSG.GREETINGS
|
||||||
|
|
||||||
jsr CC.Init
|
jsr CC.Init
|
||||||
bcs CS.INIT.RTS
|
bcs CS.INIT.RTS
|
||||||
|
|
||||||
|
jsr CODE.Init
|
||||||
|
|
||||||
|
jsr CS.RUN.FOpen1st
|
||||||
|
bcs CS.INIT.RTS
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.RUN.LOOP jsr CC.CompileFile
|
CS.RUN.CLOOP jsr CC.CompileFile
|
||||||
|
|
||||||
cmp #MLI.E.EOF
|
cmp #MLI.E.EOF
|
||||||
bne .9
|
bne .9
|
||||||
|
|
||||||
jsr CS.RUN.FClose
|
jsr CS.RUN.FClose
|
||||||
bne CS.RUN.LOOP
|
bne CS.RUN.CLOOP
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
jsr CC.MainExec
|
jsr PrintSummary
|
||||||
bcc .8
|
bcs .99
|
||||||
|
|
||||||
>LDYA L.MSG.NOMAIN
|
jsr CC.Link
|
||||||
>SYSCALL puts
|
bcs .99
|
||||||
|
|
||||||
|
jsr CheckMain
|
||||||
|
bcs .99
|
||||||
|
|
||||||
|
dec bPass2
|
||||||
|
|
||||||
|
jsr CS.RUN.FCreate
|
||||||
|
bcs .99
|
||||||
|
|
||||||
|
jsr CODE.Init
|
||||||
|
bcs .99
|
||||||
|
|
||||||
|
jsr CS.RUN.FOpen1st
|
||||||
|
bcs .99
|
||||||
|
*--------------------------------------
|
||||||
|
.2 jsr CC.CompileFile
|
||||||
|
|
||||||
|
cmp #MLI.E.EOF
|
||||||
|
bne .9
|
||||||
|
|
||||||
|
jsr CS.RUN.FClose
|
||||||
|
bne .2
|
||||||
|
*--------------------------------------
|
||||||
.8 lda #0 Exit Code = Success
|
.8 lda #0 Exit Code = Success
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
|
@ -266,13 +309,13 @@ CS.RUN.LOOP jsr CC.CompileFile
|
||||||
jsr PrintErrorMsg
|
jsr PrintErrorMsg
|
||||||
pla
|
pla
|
||||||
sec
|
sec
|
||||||
rts
|
.99 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.RUN.ARGS inc ArgIndex
|
CS.RUN.ARGS inc ArgIndex
|
||||||
|
|
||||||
lda ArgIndex
|
lda ArgIndex
|
||||||
>SYSCALL ArgV
|
>SYSCALL ArgV
|
||||||
bcs .7
|
bcs .8
|
||||||
|
|
||||||
>STYA ZPPtr1
|
>STYA ZPPtr1
|
||||||
lda (ZPPtr1)
|
lda (ZPPtr1)
|
||||||
|
@ -297,18 +340,24 @@ CS.RUN.ARGS inc ArgIndex
|
||||||
sta (pData),y
|
sta (pData),y
|
||||||
bra CS.RUN.ARGS
|
bra CS.RUN.ARGS
|
||||||
|
|
||||||
.4 >LDA.G hFilePtr
|
.4 >LDA.G CC.InFileArg
|
||||||
cmp #hFilePtr
|
bne .5
|
||||||
|
|
||||||
|
lda ArgIndex
|
||||||
|
>STA.G CC.InFileArg
|
||||||
|
bra CS.RUN.ARGS
|
||||||
|
|
||||||
|
.5 >LDA.G CC.OutFileArg
|
||||||
bne .90
|
bne .90
|
||||||
|
|
||||||
>LDYA ZPPtr1
|
lda ArgIndex
|
||||||
jsr CS.RUN.FOpen
|
>STA.G CC.OutFileArg
|
||||||
bcc CS.RUN.ARGS
|
bra CS.RUN.ARGS
|
||||||
|
|
||||||
rts
|
.8 >LDA.G CC.InFileArg
|
||||||
|
beq .90
|
||||||
|
|
||||||
.7 >LDA.G hFilePtr
|
>LDA.G CC.OutFileArg
|
||||||
cmp #hFilePtr
|
|
||||||
beq .90
|
beq .90
|
||||||
|
|
||||||
clc
|
clc
|
||||||
|
@ -322,7 +371,22 @@ CS.RUN.ARGS inc ArgIndex
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.RUN.FOpen >PUSHYA
|
CS.RUN.FOpen1st >LDA.G CC.InFileArg
|
||||||
|
>SYSCALL ArgV
|
||||||
|
|
||||||
|
CS.RUN.FOpen phy
|
||||||
|
pha
|
||||||
|
|
||||||
|
>PUSHW L.MSG.COMPILING
|
||||||
|
pla
|
||||||
|
pha
|
||||||
|
>PUSHYA
|
||||||
|
>PUSHBI 2
|
||||||
|
>SYSCALL PrintF
|
||||||
|
|
||||||
|
pla
|
||||||
|
ply
|
||||||
|
>PUSHYA
|
||||||
>PUSHBI O.RDONLY
|
>PUSHBI O.RDONLY
|
||||||
>PUSHBI S.FI.T.TXT
|
>PUSHBI S.FI.T.TXT
|
||||||
>PUSHWZ Aux type
|
>PUSHWZ Aux type
|
||||||
|
@ -406,10 +470,36 @@ CS.RUN.FClose >LDA.G hFilePtr
|
||||||
|
|
||||||
.8 rts
|
.8 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
CS.RUN.FCreate >LDA.G CC.OutFileArg
|
||||||
|
>SYSCALL ArgV
|
||||||
|
>STYA ZPPtr1
|
||||||
|
|
||||||
|
>PUSHW L.MSG.GENERATING
|
||||||
|
>PUSHW ZPPtr1
|
||||||
|
>PUSHBI 2
|
||||||
|
>SYSCALL PrintF
|
||||||
|
|
||||||
|
>PUSHW ZPPtr1
|
||||||
|
>PUSHBI O.WRONLY+O.CREATE
|
||||||
|
>PUSHBI S.FI.T.BIN
|
||||||
|
>PUSHWI $2000 Aux type
|
||||||
|
>SYSCALL FOpen
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
>STA.G CC.hOutFile
|
||||||
|
|
||||||
|
>PUSHA A = CC.hOutFile
|
||||||
|
>PUSHW L.PCC.FH
|
||||||
|
>PUSHWI PCC.FH.L
|
||||||
|
>SYSCALL FWrite
|
||||||
|
|
||||||
|
.9 rts
|
||||||
|
*--------------------------------------
|
||||||
CS.DOEVENT sec
|
CS.DOEVENT sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.QUIT jsr CC.Quit
|
CS.QUIT jsr CODE.Quit
|
||||||
|
jsr CC.Quit
|
||||||
|
|
||||||
>LDA.G hLineBuf
|
>LDA.G hLineBuf
|
||||||
beq .8
|
beq .8
|
||||||
|
@ -458,7 +548,7 @@ PrintDebugMsg >PUSHW L.MSG.DEBUG
|
||||||
>PUSHB LocalPtr
|
>PUSHB LocalPtr
|
||||||
|
|
||||||
>PUSHW ZPCCStack
|
>PUSHW ZPCCStack
|
||||||
|
|
||||||
>PUSHB CStackPtr
|
>PUSHB CStackPtr
|
||||||
tay
|
tay
|
||||||
beq .1
|
beq .1
|
||||||
|
@ -471,44 +561,17 @@ PrintDebugMsg >PUSHW L.MSG.DEBUG
|
||||||
|
|
||||||
.1 >PUSHYA
|
.1 >PUSHYA
|
||||||
|
|
||||||
>PUSHBI 14
|
lda ScopePtr
|
||||||
|
sec
|
||||||
|
sbc #CC.hSymbols
|
||||||
|
>PUSHA
|
||||||
|
|
||||||
|
>PUSHBI 15
|
||||||
>SYSCALL PrintF
|
>SYSCALL PrintF
|
||||||
>DEBUGOA
|
>DEBUG
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
PrintRTStackTrace
|
PrintErrorMsg >LDA.G CC.hDefineBuf
|
||||||
pha
|
|
||||||
phx
|
|
||||||
phy
|
|
||||||
|
|
||||||
>PUSHW L.MSG.RTSTK
|
|
||||||
>PUSHW pBase
|
|
||||||
|
|
||||||
>PUSHW ZPPtr1
|
|
||||||
|
|
||||||
ldy #1
|
|
||||||
>PUSHB (ZPPtr1),y
|
|
||||||
>PUSHB (ZPPtr1)
|
|
||||||
|
|
||||||
lda pStack
|
|
||||||
clc
|
|
||||||
adc #8
|
|
||||||
pha
|
|
||||||
lda pStack+1
|
|
||||||
adc #0
|
|
||||||
>PUSHA
|
|
||||||
pla
|
|
||||||
>PUSHA
|
|
||||||
|
|
||||||
>PUSHBI 8
|
|
||||||
>SYSCALL PrintF
|
|
||||||
|
|
||||||
ply
|
|
||||||
plx
|
|
||||||
pla
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
PrintErrorMsg lda hDefineBuf
|
|
||||||
beq .10
|
beq .10
|
||||||
|
|
||||||
>LDYA.G CC.SaveDefine
|
>LDYA.G CC.SaveDefine
|
||||||
|
@ -551,6 +614,78 @@ PrintErrorMsg lda hDefineBuf
|
||||||
>PUSHBI 2
|
>PUSHBI 2
|
||||||
>SYSCALL FPrintF
|
>SYSCALL FPrintF
|
||||||
rts
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
PrintSummary lda ZPCCCode+1
|
||||||
|
sta PCC.FH+PCC.FH.IDATA+1
|
||||||
|
sec
|
||||||
|
sbc #$20
|
||||||
|
sta PCC.FH+PCC.FH.CSSIZE+1
|
||||||
|
|
||||||
|
lda ZPCCCode
|
||||||
|
sta PCC.FH+PCC.FH.CSSIZE
|
||||||
|
sta PCC.FH+PCC.FH.IDATA
|
||||||
|
|
||||||
|
>PUSHW L.MSG.SUMMARY
|
||||||
|
|
||||||
|
>PUSHW PCC.FH+PCC.FH.CSSIZE
|
||||||
|
|
||||||
|
>PUSHW ZPCCConst
|
||||||
|
|
||||||
|
lda ZPCCData+1
|
||||||
|
>PUSHA
|
||||||
|
sta PCC.FH+PCC.FH.DSSIZE+1
|
||||||
|
lda ZPCCData
|
||||||
|
>PUSHA
|
||||||
|
sta PCC.FH+PCC.FH.DSSIZE
|
||||||
|
|
||||||
|
>PUSHBI 6
|
||||||
|
>SYSCALL PrintF
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
CheckMain >PUSHB.G CC.hSymbols
|
||||||
|
|
||||||
|
>PUSHW L.CC.MAIN
|
||||||
|
>SYSCALL SListLookup
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
>STYA ZPPtr1 SymID
|
||||||
|
|
||||||
|
>PUSHB.G CC.hSymbols
|
||||||
|
|
||||||
|
>PUSHW ZPPtr1 SymID
|
||||||
|
>PUSHWZ allocate
|
||||||
|
>PUSHWI 65535 all
|
||||||
|
>PUSHWZ From Start
|
||||||
|
>SYSCALL SListGetData
|
||||||
|
.9 bcs .99
|
||||||
|
|
||||||
|
>STYA ZPPtr2
|
||||||
|
|
||||||
|
ldy #SYM.Addr
|
||||||
|
lda (ZPPtr2),y
|
||||||
|
iny
|
||||||
|
ora (ZPPtr2),y
|
||||||
|
beq .90
|
||||||
|
|
||||||
|
lda (ZPPtr2),y
|
||||||
|
sta PCC.FH+PCC.FH.MAIN+1
|
||||||
|
dey
|
||||||
|
lda (ZPPtr2),y
|
||||||
|
sta PCC.FH+PCC.FH.MAIN
|
||||||
|
|
||||||
|
txa
|
||||||
|
>SYSCALL FreeMem
|
||||||
|
|
||||||
|
rts
|
||||||
|
|
||||||
|
.90 txa
|
||||||
|
>SYSCALL FreeMem
|
||||||
|
|
||||||
|
.99 >LDYA L.MSG.NOMAIN
|
||||||
|
>SYSCALL puts
|
||||||
|
lda #E.CSYN
|
||||||
|
sec
|
||||||
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.INB usr/src/bin/cc.s.code
|
.INB usr/src/bin/cc.s.code
|
||||||
.INB usr/src/bin/cc.s.core
|
.INB usr/src/bin/cc.s.core
|
||||||
|
@ -562,65 +697,72 @@ PrintErrorMsg lda hDefineBuf
|
||||||
.INB usr/src/bin/cc.s.f
|
.INB usr/src/bin/cc.s.f
|
||||||
.INB usr/src/bin/cc.s.exp
|
.INB usr/src/bin/cc.s.exp
|
||||||
.INB usr/src/bin/cc.s.sym
|
.INB usr/src/bin/cc.s.sym
|
||||||
|
.INB usr/src/bin/cc.s.link
|
||||||
.INB usr/src/bin/cc.s.exec
|
.INB usr/src/bin/cc.s.exec
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
PCC.DEBUG
|
CS.END
|
||||||
jsr PrintRTStackTrace
|
*--------------------------------------
|
||||||
>DEBUG
|
* Initialized DATA
|
||||||
|
*--------------------------------------
|
||||||
|
MSG.GREETINGS .AZ "\r\nA2osX C Compiler %d.%d\r\n\r\n"
|
||||||
|
MSG.USAGE .AS "Usage : CC <option> srcfile.c dstfile\r\n"
|
||||||
|
.AS " -D : Debug Mode\r\n"
|
||||||
|
.AS " -T : Trace On"
|
||||||
|
.AZ "\r\n"
|
||||||
|
MSG.COMPILING .AZ "*** Compiling file: %s\r\n"
|
||||||
|
MSG.LINKING .AZ "*** Linking..."
|
||||||
|
MSG.LINKING2 .AZ "*** %18s T=%h, Q=%b, SC=%h, SizeOf=%H, @=%H\r\n"
|
||||||
|
MSG.GENERATING .AZ "*** Generating: %s\r\n"
|
||||||
|
MSG.DEBUG .AS "*** pCode=%H, pConst=%H, pData=%H, pStack=%H\r\n"
|
||||||
|
.AZ " LSP=%h, CSP=%H:%h>%h:%h, ScopePtr=%h\r\n"
|
||||||
|
MSG.TRACE .AZ "%5D> %s\r\n"
|
||||||
|
MSG.RTSTK .AZ "<pBase=%H, pVar=%H, (pVar)=%H, pStack=%H>\r\n"
|
||||||
|
MSG.ERROR .AZ " %s^\r\n"
|
||||||
|
MSG.SUMMARY .AZ "\r\n*** Compilation OK : Code size=%5D, iData size=%5D, uData size=%5D\r\n\r\n"
|
||||||
|
MSG.NOMAIN .AZ "*** No 'main()' function defined."
|
||||||
|
*--------------------------------------
|
||||||
|
ENV.INCLUDE .AZ "INCLUDE"
|
||||||
|
ENV.LIB .AZ "LIB"
|
||||||
|
*--------------------------------------
|
||||||
|
OptionList .AS "DdTt"
|
||||||
|
OptionVars .DA #bDebug,#bDebug,#bTrace,#bTrace
|
||||||
|
*--------------------------------------
|
||||||
|
PCC.DEBUG >DEBUG
|
||||||
PCC.DEBUG.L .EQ *-PCC.DEBUG
|
PCC.DEBUG.L .EQ *-PCC.DEBUG
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
PCC.ENTER
|
PCC.SLEEP >SLEEP
|
||||||
* jsr PrintRTStackTrace
|
PCC.SLEEP.L .EQ *-PCC.SLEEP
|
||||||
|
*--------------------------------------
|
||||||
ldx pBase
|
PCC.ENTER ldx pBase
|
||||||
phx
|
phx
|
||||||
clc
|
clc
|
||||||
adc pStack A = Local Size
|
adc pStack A = Local Size
|
||||||
sta pBase
|
sta pBase
|
||||||
|
|
||||||
* jsr PrintRTStackTrace
|
|
||||||
* >DEBUG
|
|
||||||
|
|
||||||
PCC.ENTER.L .EQ *-PCC.ENTER
|
PCC.ENTER.L .EQ *-PCC.ENTER
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
PCC.LEAVE
|
PCC.LEAVE lda pBase
|
||||||
* jsr PrintRTStackTrace
|
|
||||||
|
|
||||||
lda pBase
|
|
||||||
sta pStack
|
sta pStack
|
||||||
pla
|
pla
|
||||||
sta pBase
|
sta pBase
|
||||||
|
|
||||||
* jsr PrintRTStackTrace
|
|
||||||
* >DEBUG
|
|
||||||
|
|
||||||
rts
|
rts
|
||||||
|
|
||||||
PCC.LEAVE.L .EQ *-PCC.LEAVE
|
PCC.LEAVE.L .EQ *-PCC.LEAVE
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
PCC.ADDLOCAL
|
PCC.ADDLOCAL clc
|
||||||
* jsr PrintRTStackTrace
|
|
||||||
* >DEBUG
|
|
||||||
clc
|
|
||||||
adc pStack
|
adc pStack
|
||||||
sta pStack
|
sta pStack
|
||||||
|
|
||||||
* jsr PrintRTStackTrace
|
|
||||||
* >DEBUG
|
|
||||||
|
|
||||||
PCC.ADDLOCAL.L .EQ *-PCC.ADDLOCAL
|
PCC.ADDLOCAL.L .EQ *-PCC.ADDLOCAL
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
PCC.GETLOCAL clc
|
PCC.GETLOCAL clc
|
||||||
adc pBase
|
adc pBase
|
||||||
tay
|
tay
|
||||||
lda pBase+1
|
lda pBase+1
|
||||||
|
|
||||||
PCC.GETLOCAL.L .EQ *-PCC.GETLOCAL
|
PCC.GETLOCAL.L .EQ *-PCC.GETLOCAL
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
PCC.SETRETVALUE ldy #0
|
PCC.SETRETVALUE ldy #0
|
||||||
|
|
||||||
* jsr PrintRTStackTrace
|
|
||||||
* >DEBUG
|
|
||||||
|
|
||||||
.1 >PULLA
|
.1 >PULLA
|
||||||
sta (pBase),y
|
sta (pBase),y
|
||||||
iny
|
iny
|
||||||
|
@ -629,93 +771,42 @@ PCC.SETRETVALUE ldy #0
|
||||||
|
|
||||||
PCC.SETRETVALUE.L .EQ *-PCC.SETRETVALUE
|
PCC.SETRETVALUE.L .EQ *-PCC.SETRETVALUE
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
PCC.PushXFromYA >STYA ZPPtr1
|
PCC.PushXFromYA >STYA ZS.RT.Ptr1
|
||||||
|
|
||||||
* jsr PrintRTStackTrace
|
|
||||||
* >DEBUG
|
|
||||||
|
|
||||||
txa
|
txa
|
||||||
dec
|
dec
|
||||||
tay
|
tay
|
||||||
|
|
||||||
.1 lda (ZPPtr1),y
|
.1 lda (ZS.RT.Ptr1),y
|
||||||
>PUSHA
|
>PUSHA
|
||||||
dey
|
dey
|
||||||
bpl .1
|
bpl .1
|
||||||
|
|
||||||
PCC.PushXFromYA.L .EQ *-PCC.PushXFromYA
|
PCC.PushXFromYA.L .EQ *-PCC.PushXFromYA
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
PCC.PopXToYA >STYA ZPPtr1
|
PCC.PopXToYA >STYA ZS.RT.Ptr1
|
||||||
|
|
||||||
* jsr PrintRTStackTrace
|
|
||||||
* >DEBUG
|
|
||||||
|
|
||||||
ldy #0
|
ldy #0
|
||||||
|
|
||||||
.1 >PULLA
|
.1 >PULLA
|
||||||
sta (ZPPtr1),y
|
sta (ZS.RT.Ptr1),y
|
||||||
iny
|
iny
|
||||||
dex
|
dex
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
PCC.PopXToYA.L .EQ *-PCC.PopXToYA
|
PCC.PopXToYA.L .EQ *-PCC.PopXToYA
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
PCC.SetXToYA >STYA ZPPtr1
|
PCC.SetXToYA >STYA ZS.RT.Ptr1
|
||||||
|
|
||||||
* jsr PrintRTStackTrace
|
|
||||||
* >DEBUG
|
|
||||||
|
|
||||||
ldy #0
|
ldy #0
|
||||||
|
|
||||||
.1 lda (pStack),y
|
.1 lda (pStack),y
|
||||||
sta (ZPPtr1),y
|
sta (ZS.RT.Ptr1),y
|
||||||
iny
|
iny
|
||||||
dex
|
dex
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
PCC.SetXToYA.L .EQ *-PCC.SetXToYA
|
PCC.SetXToYA.L .EQ *-PCC.SetXToYA
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.END
|
|
||||||
*--------------------------------------
|
|
||||||
* Initialized DATA
|
|
||||||
*--------------------------------------
|
|
||||||
MSG.GREETINGS .AZ "\r\nA2osX C Compiler %d.%d\r\n\r\n"
|
|
||||||
MSG.USAGE .AS "Usage : CC <option> srcfile\r\n"
|
|
||||||
.AS " -D : Debug Mode\r\n"
|
|
||||||
.AS " -T : Trace On"
|
|
||||||
.AZ "\r\n"
|
|
||||||
MSG.COMPILING .AZ "***Compiling : %s...\r\n"
|
|
||||||
MSG.DEBUG .AZ "***pCode=%H, pConst=%H, pData=%H, pStack=%H, LSP=%h, CSP=%H:%h>%h:%h\r\n"
|
|
||||||
MSG.TRACE .AZ "%5D> %s\r\n"
|
|
||||||
MSG.RTSTK .AZ "<pBase=%H, pVar=%H, (pVar)=%H, pStack=%H>\r\n"
|
|
||||||
MSG.ERROR .AZ " %s^\r\n"
|
|
||||||
MSG.NOMAIN .AZ "***No 'main()' function defined."
|
|
||||||
*--------------------------------------
|
|
||||||
ENV.INCLUDE .AZ "INCLUDE"
|
|
||||||
ENV.LIB .AZ "LIB"
|
|
||||||
*--------------------------------------
|
|
||||||
OptionList .AS "DdTt"
|
|
||||||
OptionVars .DA #bDebug,#bDebug,#bTrace,#bTrace
|
|
||||||
*--------------------------------------
|
|
||||||
PCC.SLEEP >SLEEP
|
|
||||||
PCC.SLEEP.L .EQ *-PCC.SLEEP
|
|
||||||
*--------------------------------------
|
|
||||||
*PCC.HEADER cld
|
|
||||||
* jmp (.1,x)
|
|
||||||
* .DA #$61 6502,Level 1 (65c02)
|
|
||||||
* .DA #1 BIN Layout Version 1
|
|
||||||
* .DA #0 S.PS.F.EVENT
|
|
||||||
* .DA #0
|
|
||||||
* .DA CS.END-CS.START Code Size (without Constants)
|
|
||||||
* .DA DS.END-DS.START Data Size
|
|
||||||
* .DA #256 Stack Size
|
|
||||||
* .DA #ZS.END-ZS.START Zero Page Size
|
|
||||||
* .DA 0
|
|
||||||
*.1 .DA CS.INIT
|
|
||||||
* .DA CS.RUN
|
|
||||||
* .DA CS.DOEVENT
|
|
||||||
* .DA CS.QUIT
|
|
||||||
*--------------------------------------
|
|
||||||
PCC.Test0X lda #0
|
PCC.Test0X lda #0
|
||||||
|
|
||||||
.1 ora (pStack)
|
.1 ora (pStack)
|
||||||
|
@ -730,35 +821,153 @@ PCC.Test0X lda #0
|
||||||
PCC.Test0X.L .EQ *-PCC.Test0X
|
PCC.Test0X.L .EQ *-PCC.Test0X
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
PCC.SETpBASEp1 lda pBase+1
|
PCC.SETpBASEp1 lda pBase+1
|
||||||
sta ZPPtr1+1
|
sta ZS.RT.Ptr1+1
|
||||||
|
|
||||||
PCC.SETpBASEp1.L .EQ *-PCC.SETpBASEp1
|
PCC.SETpBASEp1.L .EQ *-PCC.SETpBASEp1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
PCC.SETpBASEpA clc
|
PCC.SETpBASEpA clc
|
||||||
adc pBase
|
adc pBase
|
||||||
sta ZPPtr1
|
sta ZS.RT.Ptr1
|
||||||
ldy #1
|
ldy #1
|
||||||
|
|
||||||
PCC.SETpBASEpA.L .EQ *-PCC.SETpBASEpA
|
PCC.SETpBASEpA.L .EQ *-PCC.SETpBASEpA
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
PCC.Deref >PUSHB (ZPPtr1),y
|
PCC.Deref >PUSHB (ZS.RT.Ptr1),y
|
||||||
>PUSHB (ZPPtr1)
|
>PUSHB (ZS.RT.Ptr1)
|
||||||
PCC.Deref.L .EQ *-PCC.Deref
|
|
||||||
|
PCC.Deref.L .EQ *-PCC.Deref
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
PCC.PUSHpBASEp1 >PUSHB pBase+1
|
PCC.PUSHpBASEp1 >PUSHB pBase+1
|
||||||
|
|
||||||
PCC.PUSHpBASEp1.L .EQ *-PCC.PUSHpBASEp1
|
PCC.PUSHpBASEp1.L .EQ *-PCC.PUSHpBASEp1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
PCC.PUSHpBASEpA clc
|
PCC.PUSHpBASEpA clc
|
||||||
adc pBase
|
adc pBase
|
||||||
>PUSHA
|
>PUSHA
|
||||||
|
|
||||||
PCC.PUSHpBASEpA.L .EQ *-PCC.PUSHpBASEpA
|
PCC.PUSHpBASEpA.L .EQ *-PCC.PUSHpBASEpA
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
PCC.PushFromPtr >PULLW ZPPtr1
|
PCC.PushFromPtr >PULLW ZS.RT.Ptr1
|
||||||
|
|
||||||
.1 lda (ZPPtr1),y
|
.1 lda (ZS.RT.Ptr1),y
|
||||||
>PUSHA
|
>PUSHA
|
||||||
dey
|
dey
|
||||||
bpl .1
|
bpl .1
|
||||||
|
|
||||||
PCC.PushFromPtr.L .EQ *-PCC.PushFromPtr
|
PCC.PushFromPtr.L .EQ *-PCC.PushFromPtr
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
PCC.PushConstPAX
|
||||||
|
clc
|
||||||
|
adc PCC.FH.IDATA
|
||||||
|
tay
|
||||||
|
txa
|
||||||
|
adc PCC.FH.IDATA+1
|
||||||
|
>PUSHA
|
||||||
|
tya
|
||||||
|
>PUSHA
|
||||||
|
|
||||||
|
PCC.PushConstPAX.L .EQ *-PCC.PushConstPAX
|
||||||
|
*--------------------------------------
|
||||||
|
.DUMMY
|
||||||
|
.OR ZPBIN
|
||||||
|
ZS.RT.START
|
||||||
|
ZS.RT.Ptr1 .BS 2
|
||||||
|
|
||||||
|
ZS.RT.END .ED
|
||||||
|
*--------------------------------------
|
||||||
|
PCC.FH .PH $2000
|
||||||
|
PCC.FH.2000 cld
|
||||||
|
jmp (PCC.FH.JMP,x)
|
||||||
|
.DA #$61 6502,Level 1 (65c02)
|
||||||
|
.DA #1 BIN Layout Version 1
|
||||||
|
.DA #0 S.PS.F.EVENT
|
||||||
|
.DA #0
|
||||||
|
PCC.FH.CSSIZE .EQ *-PCC.FH.2000
|
||||||
|
.DA $FFFF * Code Size (without Constants)
|
||||||
|
PCC.FH.DSSIZE .EQ *-PCC.FH.2000
|
||||||
|
.DA $FFFF * Data Size
|
||||||
|
.DA #256 Stack Size
|
||||||
|
.DA #ZS.RT.END-ZS.RT.START ZP Size
|
||||||
|
.DA 0
|
||||||
|
|
||||||
|
PCC.FH.JMP .DA PCC.FH.INIT
|
||||||
|
.DA PCC.FH.RUN
|
||||||
|
.DA PCC.FH.DOEVENT
|
||||||
|
.DA PCC.FH.QUIT
|
||||||
|
PCC.FH.IDATA .EQ *-PCC.FH.2000
|
||||||
|
.DA $FFFF
|
||||||
|
.DA 0
|
||||||
|
|
||||||
|
PCC.FH.INIT
|
||||||
|
* TODO : LoadLib code
|
||||||
|
PCC.FH.QUIT
|
||||||
|
* TODO : UnloadLib code
|
||||||
|
PCC.FH.DOEVENT
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
|
||||||
|
* int main(int argc, char *argv[]) ;
|
||||||
|
|
||||||
|
PCC.FH.RUN ldy #S.PS.ARGC
|
||||||
|
lda (pPS),y
|
||||||
|
|
||||||
|
.1 pha
|
||||||
|
>SYSCALL ArgV
|
||||||
|
bcs .2
|
||||||
|
|
||||||
|
>STYA ZS.RT.Ptr1
|
||||||
|
|
||||||
|
pla
|
||||||
|
pha
|
||||||
|
asl
|
||||||
|
tay
|
||||||
|
|
||||||
|
lda ZS.RT.Ptr1
|
||||||
|
sta (pData),y
|
||||||
|
|
||||||
|
lda ZS.RT.Ptr1+1
|
||||||
|
iny
|
||||||
|
sta (pData),y
|
||||||
|
|
||||||
|
pla
|
||||||
|
inc
|
||||||
|
bra .1
|
||||||
|
|
||||||
|
.2 pla
|
||||||
|
|
||||||
|
>PUSHWI 0 returned int
|
||||||
|
|
||||||
|
lda #0
|
||||||
|
>PUSHA
|
||||||
|
ldy #S.PS.ARGC
|
||||||
|
lda (pPS),y
|
||||||
|
>PUSHA int ARGC
|
||||||
|
>PUSHW pData *char[] ARGV
|
||||||
|
>DEBUG
|
||||||
|
PCC.FH.MAIN .EQ *-PCC.FH.2000+1
|
||||||
|
jsr $FFFF * jsr main
|
||||||
|
>PULLA
|
||||||
|
inc pStack pull returned int
|
||||||
|
sec
|
||||||
|
rts
|
||||||
|
|
||||||
|
PCC.FH.SYSCALL jsr A2osX.SYSCALL
|
||||||
|
bcc .8
|
||||||
|
|
||||||
|
inc pStack
|
||||||
|
eor #$ff
|
||||||
|
inc
|
||||||
|
>PUSHA int -ERROR code...
|
||||||
|
ldy #1
|
||||||
|
lda #$FF
|
||||||
|
sta (pStack),y on stack
|
||||||
|
rts
|
||||||
|
|
||||||
|
.8
|
||||||
|
|
||||||
|
PCC.FH.CS .EP
|
||||||
|
PCC.FH.L .EQ *-PCC.FH
|
||||||
|
*--------------------------------------
|
||||||
CC.OPChars .AS "!~+-*/%=&|^<>["
|
CC.OPChars .AS "!~+-*/%=&|^<>["
|
||||||
CC.OPChars.Cnt .EQ *-CC.OPChars
|
CC.OPChars.Cnt .EQ *-CC.OPChars
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -1151,6 +1360,8 @@ CC.LIBC >PSTR "chtyp"
|
||||||
.DA #2,#2,#FPU.TAN
|
.DA #2,#2,#FPU.TAN
|
||||||
>PSTR "atan"
|
>PSTR "atan"
|
||||||
.DA #2,#2,#FPU.ATAN
|
.DA #2,#2,#FPU.ATAN
|
||||||
|
>PSTR "lrintf"
|
||||||
|
.DA #2,#2,#FPU.QINT
|
||||||
.HS 00
|
.HS 00
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.DUMMY
|
.DUMMY
|
||||||
|
@ -1166,26 +1377,32 @@ hFiles .BS FILES.MAX
|
||||||
|
|
||||||
LineCntPtr .BS 1
|
LineCntPtr .BS 1
|
||||||
.BS 1 for inc inc
|
.BS 1 for inc inc
|
||||||
LineCnts .BS FILES.MAX+2
|
LineCnts .BS FILES.MAX*2
|
||||||
|
|
||||||
hLineBuf .BS 1
|
hLineBuf .BS 1
|
||||||
LineBufPtr .BS 2
|
LineBufPtr .BS 2
|
||||||
|
|
||||||
CC.CmdSave .BS 1
|
CC.CmdSave .BS 1
|
||||||
|
|
||||||
|
CC.hDefineBuf .BS 1
|
||||||
|
|
||||||
CC.hDefines .BS 1
|
CC.hDefines .BS 1
|
||||||
|
CC.SaveDefine .BS 2
|
||||||
|
|
||||||
CC.hTags .BS 1
|
CC.hTags .BS 1
|
||||||
CC.hSymbols .BS SCOPE.MAX
|
|
||||||
|
|
||||||
CC.hCode .BS 1
|
|
||||||
CC.hConst .BS 1
|
|
||||||
CC.ConstCnt .BS 2
|
|
||||||
CC.hData .BS 1
|
|
||||||
CC.hLocal .BS 1
|
|
||||||
|
|
||||||
CC.hStack .BS 1
|
CC.hStack .BS 1
|
||||||
|
|
||||||
CC.SaveDefine .BS 2
|
CC.hSymbols .BS SCOPE.MAX+1 1 Global+ MAX locals
|
||||||
|
*--------------------------------------
|
||||||
|
CC.SymID .BS 2
|
||||||
|
CC.hSymBuf .BS 1
|
||||||
|
*--------------------------------------
|
||||||
|
CC.hLookupSymBuf .BS 1
|
||||||
|
CC.LookupSymSize .BS 2
|
||||||
|
*--------------------------------------
|
||||||
|
CC.InFileArg .BS 1
|
||||||
|
CC.OutFileArg .BS 1
|
||||||
|
CC.hOutFile .BS 1
|
||||||
|
|
||||||
DS.END .ED
|
DS.END .ED
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
NEW
|
NEW
|
||||||
AUTO 3,1
|
AUTO 3,1
|
||||||
|
|
||||||
short int tuiInit();
|
short int tuiInit();
|
||||||
int fastcall tuiClose(short int);
|
int fastcall tuiClose(short int);
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
NEW
|
NEW
|
||||||
AUTO 3,1
|
AUTO 3,1
|
||||||
|
|
||||||
void md5(const char*, char*);
|
void md5(const char*, char*);
|
||||||
|
|
||||||
short int md5init();
|
short int md5init();
|
||||||
|
|
|
@ -70,7 +70,7 @@ D2.HeadSelect >PULLB D2.HeadNum
|
||||||
|
|
||||||
jsr D2.CheckDiskII
|
jsr D2.CheckDiskII
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
lda D2.HeadNum A = 0/1
|
lda D2.HeadNum A = 0/1
|
||||||
|
|
||||||
asl A = 0/2
|
asl A = 0/2
|
||||||
|
@ -106,23 +106,29 @@ D2.MoveHead >PULLB D2.TargetQTrack
|
||||||
D2.MoveHead.SEI lda D2.CurrentQTrack
|
D2.MoveHead.SEI lda D2.CurrentQTrack
|
||||||
|
|
||||||
bit #1
|
bit #1
|
||||||
bne .1
|
beq .2 we are on 0/4 or 2/4 track
|
||||||
|
|
||||||
jsr D2.SeekPhOnY we are on 0/4 or 2/4 track
|
pha
|
||||||
bra .9 no wait, next operation will be phy/plx/Ph0On,y
|
|
||||||
|
|
||||||
.1 cmp D2.TargetQTrack we are on 1/4 or 3/4
|
cmp D2.TargetQTrack we are on 1/4 or 3/4 track
|
||||||
|
bcc .1 if CC, C < T, must move in
|
||||||
|
|
||||||
|
inc move out: X = Ph(N+1)
|
||||||
|
|
||||||
|
.1 and #6 move in : X = Ph(N)
|
||||||
|
ora D2.Slotn0
|
||||||
|
tax
|
||||||
|
lda IO.D2.Ph0On,x
|
||||||
|
|
||||||
|
pla
|
||||||
|
|
||||||
bcs .2 if CS, C > T, must move out
|
bcs .2 if CS, C > T, must move out
|
||||||
|
|
||||||
inc CC: C < T, ON next PH
|
inc move in : Y = Ph(N+1)
|
||||||
|
|
||||||
.HS B0 BCS
|
.2 jsr D2.SeekPhOnY move out: Y = Ph(N)
|
||||||
|
|
||||||
.2 dec CS: C > T, ON prev PH
|
bra .9 no wait
|
||||||
|
|
||||||
sta D2.CurrentQTrack
|
|
||||||
|
|
||||||
bra .6 Ph ON to go to 0/4 or 2/4, then wait
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.3 bcs .4 if CS, C > T, must move out
|
.3 bcs .4 if CS, C > T, must move out
|
||||||
|
|
||||||
|
@ -150,7 +156,6 @@ D2.MoveHead.SEI lda D2.CurrentQTrack
|
||||||
.6 jsr D2.SeekPhOnY now X and Y on
|
.6 jsr D2.SeekPhOnY now X and Y on
|
||||||
|
|
||||||
.8 lda #IO.D2.SeekTimeF
|
.8 lda #IO.D2.SeekTimeF
|
||||||
|
|
||||||
jsr D2.Wait100usecA ...wait...
|
jsr D2.Wait100usecA ...wait...
|
||||||
|
|
||||||
.9 lda D2.CurrentQTrack
|
.9 lda D2.CurrentQTrack
|
||||||
|
@ -161,12 +166,14 @@ D2.MoveHead.SEI lda D2.CurrentQTrack
|
||||||
|
|
||||||
jsr D2.Wait25600usec
|
jsr D2.Wait25600usec
|
||||||
|
|
||||||
lda IO.D2.Ph0Off,y
|
bcc .10
|
||||||
bcc .90
|
clc
|
||||||
|
|
||||||
lda IO.D2.Ph0Off,x
|
lda IO.D2.Ph0Off,x
|
||||||
|
|
||||||
.90 rts
|
.10 lda IO.D2.Ph0Off,y
|
||||||
|
|
||||||
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
D2.SeekPhOnY and #6
|
D2.SeekPhOnY and #6
|
||||||
ora D2.Slotn0
|
ora D2.Slotn0
|
||||||
|
|
|
@ -10,7 +10,7 @@ XCLK.API.RDCLK .EQ $D8F0
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
XCLK.START php
|
XCLK.START php
|
||||||
sei
|
sei
|
||||||
ldx #XCLK.START2xx.L
|
ldx #XCLK.START2xx.L-1
|
||||||
|
|
||||||
.1 lda XCLK.START2xx,X
|
.1 lda XCLK.START2xx,X
|
||||||
sta XCLK.CODE2xx,X
|
sta XCLK.CODE2xx,X
|
||||||
|
|
|
@ -777,23 +777,29 @@ XRW.SeekYA sta XRW.D2Trk-1,x will be current track at the end
|
||||||
sta XRW.CurrentQTrack
|
sta XRW.CurrentQTrack
|
||||||
|
|
||||||
bit #1 A = Current QT
|
bit #1 A = Current QT
|
||||||
bne .1
|
beq .2 we are on 0/4 or 2/4 track
|
||||||
|
|
||||||
|
pha
|
||||||
|
|
||||||
jsr XRW.SeekPhOnY we are on 0/4 or 2/4 track : PhY on
|
cmp XRW.TargetQTrack we are on 1/4 or 3/4 track
|
||||||
bra .9 no wait, next operation will be phy/plx/Ph0On,y
|
bcc .1 if CC, C < T, must move in
|
||||||
|
|
||||||
|
inc move out: X = Ph(N+1)
|
||||||
|
|
||||||
|
.1 and #6 move in : X = Ph(N)
|
||||||
|
ora A2L
|
||||||
|
tax
|
||||||
|
lda IO.D2.Ph0On,x
|
||||||
|
|
||||||
|
pla
|
||||||
|
|
||||||
.1 cmp XRW.TargetQTrack we are on 1/4 or 3/4
|
|
||||||
bcs .2 if CS, C > T, must move out
|
bcs .2 if CS, C > T, must move out
|
||||||
|
|
||||||
inc CC: C < T, ON next PH
|
inc move in : Y = Ph(N+1)
|
||||||
|
|
||||||
.HS B0 BCS
|
.2 jsr XRW.SeekPhOnY move out: Y = Ph(N)
|
||||||
|
|
||||||
.2 dec CS: C > T, ON prev PH
|
bra .9 no wait
|
||||||
|
|
||||||
sta XRW.CurrentQTrack
|
|
||||||
|
|
||||||
bra .6 PhY ON to go to 0/4 or 2/4, then wait
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.3 bcs .4 if CS, C > T, must move out
|
.3 bcs .4 if CS, C > T, must move out
|
||||||
|
|
||||||
|
@ -805,8 +811,8 @@ XRW.SeekYA sta XRW.D2Trk-1,x will be current track at the end
|
||||||
|
|
||||||
sta XRW.CurrentQTrack
|
sta XRW.CurrentQTrack
|
||||||
|
|
||||||
bit #1
|
bit #1 C = xxxxxxx1 ?
|
||||||
bne .5
|
bne .5 yes, 2 PhOn required
|
||||||
|
|
||||||
lda IO.D2.Ph0Off,x we must go to 0/4 or 2/4 : PhX Off
|
lda IO.D2.Ph0Off,x we must go to 0/4 or 2/4 : PhX Off
|
||||||
bra .8 go wait....
|
bra .8 go wait....
|
||||||
|
@ -820,8 +826,7 @@ XRW.SeekYA sta XRW.D2Trk-1,x will be current track at the end
|
||||||
|
|
||||||
.6 jsr XRW.SeekPhOnY now X and Y on
|
.6 jsr XRW.SeekPhOnY now X and Y on
|
||||||
|
|
||||||
.8 lda XRW.SeekTime
|
.8 lda #IO.D2.SeekTimeF XRW.SeekTime
|
||||||
|
|
||||||
jsr XRW.Wait100usecA ...wait...
|
jsr XRW.Wait100usecA ...wait...
|
||||||
|
|
||||||
.9 lda XRW.CurrentQTrack
|
.9 lda XRW.CurrentQTrack
|
||||||
|
@ -832,13 +837,14 @@ XRW.SeekYA sta XRW.D2Trk-1,x will be current track at the end
|
||||||
|
|
||||||
jsr XRW.Wait25600usec
|
jsr XRW.Wait25600usec
|
||||||
|
|
||||||
lda IO.D2.Ph0Off,y
|
bcc .10
|
||||||
bcc .90
|
|
||||||
|
|
||||||
lda IO.D2.Ph0Off,x
|
|
||||||
clc Exit wit CC (recalibrate)
|
clc Exit wit CC (recalibrate)
|
||||||
|
|
||||||
.90 rts
|
lda IO.D2.Ph0Off,x
|
||||||
|
|
||||||
|
.10 lda IO.D2.Ph0Off,y
|
||||||
|
|
||||||
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
XRW.SeekPhOnY and #6
|
XRW.SeekPhOnY and #6
|
||||||
ora A2L
|
ora A2L
|
||||||
|
|
|
@ -241,6 +241,13 @@ BB.FX2.Trk2Qtrk
|
||||||
|
|
||||||
BB.Trk2Qtrk.RTS rts
|
BB.Trk2Qtrk.RTS rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
BB.FX2.SeekPhOnY
|
||||||
|
and #6
|
||||||
|
ora ROM.D2.Slotn0
|
||||||
|
tay
|
||||||
|
lda IO.D2.Ph0On,y
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
BB.FX2.SeekReadD2
|
BB.FX2.SeekReadD2
|
||||||
jsr BB.FX2.HeadSelect
|
jsr BB.FX2.HeadSelect
|
||||||
|
|
||||||
|
@ -256,30 +263,27 @@ BB.FX2.SeekReadD2
|
||||||
beq BB.FX2.ReadSectD2
|
beq BB.FX2.ReadSectD2
|
||||||
|
|
||||||
bit #1
|
bit #1
|
||||||
bne .1
|
beq .2 we are on 0/4 or 2/4 track
|
||||||
|
|
||||||
|
pha
|
||||||
|
|
||||||
jsr .20 we are on 0/4 or 2/4 track
|
bcc .1 if CC, C < T, must move in
|
||||||
|
|
||||||
|
inc
|
||||||
|
|
||||||
bra .10 no wait, next operation will be phy/plx/Ph0On,y
|
.1 and #6 move in : X = Ph(N)
|
||||||
|
ora ROM.D2.Slotn0
|
||||||
.1 cmp BB.TargetQTrack we are on 1/4 or 3/4
|
tax
|
||||||
|
lda IO.D2.Ph0On,x
|
||||||
|
|
||||||
|
pla
|
||||||
|
|
||||||
bcs .2 if CS, C > T, must move out
|
bcs .2 if CS, C > T, must move out
|
||||||
|
|
||||||
inc CC: C < T, ON next PH
|
inc move in : Y = Ph(N+1)
|
||||||
|
|
||||||
.HS B0 BCS
|
.2 jsr BB.FX2.SeekPhOnY move out: Y = Ph(N)
|
||||||
|
bra .9 Ph ON to go to 0/4 or 2/4, then wait
|
||||||
.2 dec CS: C > T, ON prev PH
|
|
||||||
|
|
||||||
sta BB.CurrentQTrack
|
|
||||||
|
|
||||||
bra .6 Ph ON to go to 0/4 or 2/4, then wait
|
|
||||||
*--------------------------------------
|
|
||||||
.20 and #6
|
|
||||||
ora ROM.D2.Slotn0
|
|
||||||
tay
|
|
||||||
lda IO.D2.Ph0On,y
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.3 bcs .4 if CS, C > T, must move out
|
.3 bcs .4 if CS, C > T, must move out
|
||||||
|
|
||||||
|
@ -304,13 +308,12 @@ BB.FX2.SeekReadD2
|
||||||
|
|
||||||
inc CC: C < T, ON next PH
|
inc CC: C < T, ON next PH
|
||||||
|
|
||||||
.6 jsr .20 now X and Y on
|
.6 jsr BB.FX2.SeekPhOnY now X and Y on
|
||||||
|
|
||||||
.8 lda #IO.D2.SeekTimeB
|
.8 lda #IO.D2.SeekTimeB
|
||||||
|
jsr BB.Wait100usecA ...wait...
|
||||||
|
|
||||||
.9 jsr BB.Wait100usecA ...wait...
|
.9 lda BB.CurrentQTrack
|
||||||
|
|
||||||
.10 lda BB.CurrentQTrack
|
|
||||||
cmp BB.TargetQTrack
|
cmp BB.TargetQTrack
|
||||||
bne .3
|
bne .3
|
||||||
|
|
||||||
|
@ -319,12 +322,11 @@ BB.FX2.SeekReadD2
|
||||||
lda #0
|
lda #0
|
||||||
jsr BB.Wait100usecA
|
jsr BB.Wait100usecA
|
||||||
|
|
||||||
lda IO.D2.Ph0Off,y
|
bcc .10
|
||||||
bcc .11
|
|
||||||
|
|
||||||
lda IO.D2.Ph0Off,x
|
lda IO.D2.Ph0Off,x
|
||||||
|
|
||||||
.11
|
.10 lda IO.D2.Ph0Off,y
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
BB.FX2.ReadSectD2
|
BB.FX2.ReadSectD2
|
||||||
ldx ROM.D2.Slotn0
|
ldx ROM.D2.Slotn0
|
||||||
|
|
Loading…
Reference in New Issue