mirror of
https://github.com/A2osX/A2osX.git
synced 2025-02-19 07:30:41 +00:00
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.
BIN
.Floppies/ProDOSFX.BOOTHD.woz
Normal file
BIN
.Floppies/ProDOSFX.BOOTHD.woz
Normal file
Binary file not shown.
@ -58,23 +58,29 @@ BSX.MoveHead sta BSX.TargetQTrack
|
||||
lda BSX.CurrentQTrack
|
||||
|
||||
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
|
||||
bra .9 no wait, next operation will be phy/plx/Ph0On,y
|
||||
pha
|
||||
|
||||
.1 cmp BSX.TargetQTrack we are on 1/4 or 3/4
|
||||
bcs .2 if CS, C > T, must move out
|
||||
cmp BSX.TargetQTrack we are on 1/4 or 3/4 track
|
||||
bcc .1 if CC, C < T, must move in
|
||||
|
||||
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
|
||||
|
||||
@ -113,12 +119,13 @@ BSX.MoveHead sta BSX.TargetQTrack
|
||||
|
||||
jsr BSX.Wait25600usec
|
||||
|
||||
lda IO.D2.Ph0Off,y
|
||||
bcc .90
|
||||
bcc .10
|
||||
|
||||
lda IO.D2.Ph0Off,x
|
||||
|
||||
.90 rts
|
||||
.10 lda IO.D2.Ph0Off,y
|
||||
|
||||
rts
|
||||
*--------------------------------------
|
||||
BSX.SeekPhOnY and #6
|
||||
ora BSX.Slotn0
|
||||
|
@ -1,6 +1,25 @@
|
||||
NEW
|
||||
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
|
||||
ldy #0
|
||||
@ -197,6 +216,37 @@ CODE.PushFromPtr
|
||||
|
||||
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
|
||||
lda #$A9 LDA #imm
|
||||
jsr CODE.EmitByte
|
||||
@ -266,6 +316,17 @@ CODE.TOABSYX jsr CODE.EmitByte A=opcode : JMP, JSR .....
|
||||
tya
|
||||
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
|
||||
jsr CODE.EmitByte
|
||||
txa
|
||||
@ -277,22 +338,90 @@ CODE.FPUCALL lda #$A2 LDX #imm
|
||||
lda /A2osX.FPUCALL
|
||||
bra CODE.EmitByte
|
||||
*--------------------------------------
|
||||
CODE.SYSCALL lda #$A2 LDX #imm
|
||||
jsr CODE.EmitByte
|
||||
CODE.EmitByte clc if Pass 1...
|
||||
bit bPass2
|
||||
bpl .1
|
||||
|
||||
phx
|
||||
phy
|
||||
tax
|
||||
|
||||
>PUSHB.G CC.hOutFile
|
||||
txa
|
||||
jsr CODE.EmitByte
|
||||
lda #$20 JSR
|
||||
jsr CODE.EmitByte
|
||||
lda #A2osX.SYSCALL
|
||||
jsr CODE.EmitByte
|
||||
lda /A2osX.SYSCALL
|
||||
*--------------------------------------
|
||||
CODE.EmitByte sta (ZPCCCode)
|
||||
inc ZPCCCode
|
||||
>PUSHA
|
||||
>SYSCALL fputc
|
||||
|
||||
ply
|
||||
plx
|
||||
|
||||
.1 inc ZPCCCode
|
||||
bne .8
|
||||
|
||||
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
|
||||
*--------------------------------------
|
||||
MAN
|
||||
|
@ -1,14 +1,13 @@
|
||||
NEW
|
||||
AUTO 3,1
|
||||
.LIST OFF
|
||||
*--------------------------------------
|
||||
CC.Init >SYSCALL SListNew
|
||||
bcs .99
|
||||
bcs .9
|
||||
|
||||
>STA.G CC.hDefines
|
||||
|
||||
>SYSCALL SListNew
|
||||
bcs .99
|
||||
bcs .9
|
||||
|
||||
>STA.G CC.hTags
|
||||
|
||||
@ -18,30 +17,6 @@ CC.Init >SYSCALL SListNew
|
||||
>STA.G CC.hSymbols
|
||||
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
|
||||
>SYSCALL GetMem
|
||||
bcs .9
|
||||
@ -78,25 +53,19 @@ CC.Quit ldy ScopePtr
|
||||
|
||||
>SYSCALL SListFree
|
||||
|
||||
.4 lda hDefineBuf
|
||||
.4 >LDA.G CC.hDefineBuf
|
||||
jsr .7
|
||||
|
||||
>LDA.G CC.hLookupSymBuf
|
||||
jsr .7
|
||||
|
||||
.5 jsr CS.RUN.FClose
|
||||
bne .5
|
||||
|
||||
lda hSymBuf
|
||||
>LDA.G CC.hSymBuf
|
||||
jsr .7
|
||||
|
||||
>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
|
||||
>SYSCALL FreeMem
|
||||
@ -202,7 +171,7 @@ CC.CompileLine.1
|
||||
jsr CC.SYM.Store
|
||||
bcs .29
|
||||
|
||||
jmp CC.SYM.FreeBuf
|
||||
jmp CC.SYM.Free
|
||||
*--------------------------------------
|
||||
|
||||
* TODO: AOPS
|
||||
@ -225,7 +194,7 @@ CC.CompileLine.1
|
||||
.28 jsr CC.SYM.Store
|
||||
bcs .9
|
||||
|
||||
jsr CC.SYM.FreeBuf
|
||||
jsr CC.SYM.Free
|
||||
|
||||
bra .68
|
||||
*--------------------------------------
|
||||
@ -256,7 +225,7 @@ CC.CompileLine.1
|
||||
.69 bcs .99
|
||||
|
||||
ldy #SYM.Q
|
||||
lda (ZPSymBufPtr),y
|
||||
lda (ZPLookupSymPtr),y
|
||||
bit #SYM.Q.FUNC
|
||||
beq .60
|
||||
|
||||
@ -265,7 +234,7 @@ CC.CompileLine.1
|
||||
jsr CC.F.CallNoRetV
|
||||
bcs .9
|
||||
|
||||
jsr CC.SYM.FreeBufPop
|
||||
jsr CC.SYM.LookupFree
|
||||
|
||||
bra .8
|
||||
*--------------------------------------
|
||||
@ -285,7 +254,7 @@ CC.CompileLine.1
|
||||
jsr CC.SYM.PopValue
|
||||
bcs .9
|
||||
|
||||
jsr CC.SYM.FreeBufPop
|
||||
jsr CC.SYM.LookupFree
|
||||
*--------------------------------------
|
||||
.68 jsr CC.GetCharNB
|
||||
cmp #';'
|
||||
@ -383,8 +352,8 @@ CC.SListLookup >PUSHA hSList
|
||||
>SYSCALL SListLookup
|
||||
bcs .99
|
||||
|
||||
pha save KeyID
|
||||
phy
|
||||
* pha save KeyID
|
||||
* phy
|
||||
|
||||
>PUSHA KeyID.HI
|
||||
tya
|
||||
@ -398,9 +367,14 @@ CC.SListLookup >PUSHA hSList
|
||||
>SYSCALL SListGetData
|
||||
bcs .9
|
||||
|
||||
ply
|
||||
pla X = hSymScope, Y,A = SymID
|
||||
* clc
|
||||
>STYA.G CC.LookupSymSize
|
||||
|
||||
txa
|
||||
>STA.G CC.hLookupSymBuf
|
||||
>SYSCALL GetMemPtr
|
||||
|
||||
* clc Y,A = SymPtr, X = hSymBuf
|
||||
|
||||
rts
|
||||
|
||||
.9 plx
|
||||
@ -410,88 +384,6 @@ CC.SListLookup >PUSHA hSList
|
||||
.99 inc pStack
|
||||
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
|
||||
sec
|
||||
adc ZPLookupPtr
|
||||
@ -501,19 +393,16 @@ CC.ZPLookupPtrAddAp1
|
||||
inc ZPLookupPtr+1
|
||||
.1 rts
|
||||
*--------------------------------------
|
||||
CC.GetDefine >LDA.G CC.hDefines
|
||||
|
||||
jsr CC.SListLookup
|
||||
bcs .9
|
||||
|
||||
stx hDefineBuf
|
||||
|
||||
>LDYA ZPLineBufPtr
|
||||
CC.GetDefine >LDYA ZPLineBufPtr
|
||||
>STYA.G CC.SaveDefine
|
||||
|
||||
txa
|
||||
>SYSCALL GetMemPtr
|
||||
>LDA.G CC.hDefines
|
||||
jsr CC.SListLookup
|
||||
bcs .9
|
||||
|
||||
>STYA ZPLineBufPtr
|
||||
txa
|
||||
>STA.G CC.hDefineBuf
|
||||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
@ -667,30 +556,29 @@ CC.GetNextChar inc ZPLineBufPtr
|
||||
CC.GetChar lda (ZPLineBufPtr)
|
||||
bne .8
|
||||
|
||||
lda hDefineBuf
|
||||
phy
|
||||
|
||||
>LDA.G CC.hDefineBuf
|
||||
beq .1
|
||||
|
||||
stz hDefineBuf
|
||||
|
||||
phx
|
||||
phy
|
||||
|
||||
>SYSCALL FreeMem
|
||||
|
||||
>STZ.G CC.hDefineBuf
|
||||
|
||||
>LDYA.G CC.SaveDefine
|
||||
>STYA ZPLineBufPtr
|
||||
|
||||
ply
|
||||
plx
|
||||
ply
|
||||
bra CC.GetChar
|
||||
|
||||
.1 lda #C.CR
|
||||
.1 ply
|
||||
lda #C.CR
|
||||
|
||||
.8 clc
|
||||
rts
|
||||
|
||||
.9 lda #MLI.E.EOF
|
||||
sec
|
||||
.99 rts
|
||||
*---------------------------------------
|
||||
CC.IsEndArg cmp #']'
|
||||
beq .8
|
||||
|
@ -1,6 +1,5 @@
|
||||
NEW
|
||||
AUTO 3,1
|
||||
.LIST OFF
|
||||
*--------------------------------------
|
||||
CC.DECL jsr CC.IsLetter
|
||||
bcs .80
|
||||
@ -51,7 +50,7 @@ CC.DECL jsr CC.IsLetter
|
||||
.29 bcs .99
|
||||
|
||||
|
||||
jsr CC.SYM.FreeBuf
|
||||
jsr CC.SYM.Free
|
||||
|
||||
clv
|
||||
clc
|
||||
|
@ -1,6 +1,5 @@
|
||||
NEW
|
||||
AUTO 3,1
|
||||
.LIST OFF
|
||||
*--------------------------------------
|
||||
CC.DIR jsr CC.GetNextCharNB
|
||||
bcs .99
|
||||
@ -20,17 +19,22 @@ CC.DIR jsr CC.GetNextCharNB
|
||||
sec
|
||||
.99 rts
|
||||
*--------------------------------------
|
||||
CC.DIR.DEFINE jsr CC.CheckSpace
|
||||
CC.DIR.DEFINE clc
|
||||
bit bPass2
|
||||
bmi .8
|
||||
|
||||
jsr CC.CheckSpace
|
||||
bcs .99
|
||||
|
||||
jsr CC.IsLetter
|
||||
bcs .90
|
||||
|
||||
ldx #SYM.SC.DEFINE
|
||||
>LDA.G CC.hDefines
|
||||
jsr CC.SYM.NewKey
|
||||
bcs .99
|
||||
|
||||
>STYA ZPSymID
|
||||
>STYA ZPPtr1 SymID
|
||||
|
||||
jsr CC.SkipX
|
||||
|
||||
@ -53,7 +57,7 @@ CC.DIR.DEFINE jsr CC.CheckSpace
|
||||
phy
|
||||
|
||||
>PUSHB.G CC.hDefines
|
||||
>PUSHW ZPSymID
|
||||
>PUSHW ZPPtr1 SymID
|
||||
>PUSHW ZPLineBufPtr
|
||||
|
||||
ply
|
||||
@ -63,7 +67,7 @@ CC.DIR.DEFINE jsr CC.CheckSpace
|
||||
>SYSCALL SListAddData
|
||||
bcs .99
|
||||
|
||||
jmp CC.SkipLine
|
||||
.8 jmp CC.SkipLine
|
||||
|
||||
.90 lda #E.CSYN
|
||||
sec
|
||||
@ -100,27 +104,37 @@ CC.DIR.INCLUDE lda #0 >STZ.G PathBuf
|
||||
beq .90
|
||||
|
||||
cmp ArgIndex
|
||||
beq .8
|
||||
beq .4
|
||||
|
||||
sta (pData),y
|
||||
iny
|
||||
cpy #64
|
||||
cpy #MLI.MAXPATH
|
||||
bne .3
|
||||
|
||||
.90 lda #E.CSYN
|
||||
sec
|
||||
.99 rts
|
||||
|
||||
.8 lda #0
|
||||
.4 phy
|
||||
jsr CC.GetNextChar skip " or >
|
||||
ply
|
||||
|
||||
lda #0
|
||||
sta (pData),y terminate string
|
||||
|
||||
jsr CC.GetNextChar skip " or >
|
||||
|
||||
>LDYA pData
|
||||
jsr CS.RUN.FOpen
|
||||
bcs .99
|
||||
dey
|
||||
lda (pData),y
|
||||
cmp #'h'
|
||||
bne .5
|
||||
|
||||
bit bPass2
|
||||
bpl .5
|
||||
|
||||
clc
|
||||
rts
|
||||
|
||||
.5 >LDYA pData
|
||||
jmp CS.RUN.FOpen
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE usr/src/bin/cc.s.dir
|
||||
|
@ -1,6 +1,5 @@
|
||||
NEW
|
||||
AUTO 3,1
|
||||
.LIST OFF
|
||||
*--------------------------------------
|
||||
CC.BOPS.bMUL
|
||||
CC.BOPS.cMUL
|
||||
|
@ -1,6 +1,5 @@
|
||||
NEW
|
||||
AUTO 3,1
|
||||
.LIST OFF
|
||||
*--------------------------------------
|
||||
* Input:
|
||||
* ZPLineBufPtr, Y,A = Expected type/qual
|
||||
@ -74,7 +73,7 @@ CC.EXP.Eval ldx ZPPtr2 local : expected T/Q
|
||||
bcs .22
|
||||
|
||||
ldy #SYM.Q
|
||||
lda (ZPSymBufPtr),y
|
||||
lda (ZPLookupSymPtr),y
|
||||
and #SYM.Q.FUNC
|
||||
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
|
||||
bcs .29
|
||||
|
||||
jsr CC.SYM.FreeBufPop
|
||||
jsr CC.SYM.LookupFree
|
||||
|
||||
bra .30
|
||||
*--------------------------------------
|
||||
@ -95,7 +94,7 @@ CC.EXP.Eval ldx ZPPtr2 local : expected T/Q
|
||||
|
||||
>STYA ZPPtr2 store real T/Q
|
||||
|
||||
jsr CC.SYM.FreeBufPop
|
||||
jsr CC.SYM.LookupFree
|
||||
|
||||
bra .30
|
||||
*--------------------------------------
|
||||
@ -195,11 +194,11 @@ CC.EXP.CheckGetSymType
|
||||
ora ZPPtr2+1
|
||||
bne .1
|
||||
|
||||
lda (ZPSymBufPtr)
|
||||
lda (ZPLookupSymPtr)
|
||||
sta ZPPtr2
|
||||
|
||||
ldy #SYM.Q
|
||||
lda (ZPSymBufPtr),y
|
||||
lda (ZPLookupSymPtr),y
|
||||
sta ZPPtr2+1
|
||||
|
||||
clc
|
||||
@ -279,44 +278,46 @@ CC.EXP.BOPS cpy #SYM.T.UINT
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
CC.AddContCharP ldy #0
|
||||
CC.AddContCharP jsr CODE.PushConstP
|
||||
bcs .99
|
||||
|
||||
jsr CODE.DSSelect
|
||||
bcs .99
|
||||
|
||||
ldy #0
|
||||
|
||||
.1 jsr CC.GetNextChar
|
||||
bcs .9
|
||||
|
||||
* TODO : add support for \ to next line
|
||||
|
||||
cmp #C.CR
|
||||
beq .9
|
||||
|
||||
cmp #'"'
|
||||
beq .2
|
||||
|
||||
sta (ZPCCConst),y
|
||||
jsr CODE.EmitData
|
||||
bcs .99
|
||||
|
||||
iny
|
||||
bra .1
|
||||
|
||||
.2 lda #0
|
||||
sta (ZPCCConst),y
|
||||
jsr CODE.EmitData
|
||||
bcs .99
|
||||
|
||||
jsr CODE.CSSelect
|
||||
bcs .99
|
||||
|
||||
lda ZPCCConst+1 Push PTR on stack
|
||||
jsr CODE.PUSHI
|
||||
lda ZPCCConst
|
||||
jsr CODE.PUSHI
|
||||
|
||||
tya
|
||||
sec
|
||||
adc ZPCCConst
|
||||
sta ZPCCConst
|
||||
bcc .3
|
||||
|
||||
inc ZPCCConst+1
|
||||
.3 jsr CC.GetNextChar Skip "
|
||||
jsr CC.GetNextChar Skip "
|
||||
|
||||
clc
|
||||
rts
|
||||
|
||||
.9 lda #E.ESYN
|
||||
sec
|
||||
rts
|
||||
.99 rts
|
||||
*--------------------------------------
|
||||
CC.EXP.GetNum cpy #SYM.T.FLOAT
|
||||
bcc .1
|
||||
@ -409,7 +410,7 @@ CC.EXP.Get >LDYA L.CC.AOPS
|
||||
lda ZPPtr2 target T
|
||||
beq .3
|
||||
|
||||
lda (ZPSymBufPtr) SYM.T
|
||||
lda (ZPLookupSymPtr) SYM.T
|
||||
cmp #SYM.T.VOID
|
||||
beq .2
|
||||
|
||||
@ -419,14 +420,14 @@ CC.EXP.Get >LDYA L.CC.AOPS
|
||||
.2 lda ZPPtr2+1 Q
|
||||
|
||||
ldy #SYM.Q
|
||||
cmp (ZPSymBufPtr),y
|
||||
cmp (ZPLookupSymPtr),y
|
||||
bne .9
|
||||
|
||||
.3 lda (ZPSymBufPtr) SYM.T
|
||||
.3 lda (ZPLookupSymPtr) SYM.T
|
||||
sta ZPPtr2 T
|
||||
pha
|
||||
ldy #SYM.Q
|
||||
lda (ZPSymBufPtr),y
|
||||
lda (ZPLookupSymPtr),y
|
||||
sta ZPPtr2+1 Q
|
||||
ply Y,A = T/Q
|
||||
|
||||
@ -442,7 +443,7 @@ CC.EXP.Get >LDYA L.CC.AOPS
|
||||
.8 jmp (J.CC.PREOPS,x)
|
||||
*--------------------------------------
|
||||
CC.EXP.Array ldy #SYM.Q
|
||||
lda (ZPSymBufPtr),y
|
||||
lda (ZPLookupSymPtr),y
|
||||
and #SYM.Q.AAARRAY
|
||||
beq .9
|
||||
|
||||
@ -477,11 +478,11 @@ CC.EXP.Array ldy #SYM.Q
|
||||
ldx #FPU.iAdd
|
||||
jsr CODE.FPUCALL add to base address
|
||||
|
||||
lda (ZPSymBufPtr) SYM.T
|
||||
lda (ZPLookupSymPtr) SYM.T
|
||||
pha
|
||||
|
||||
ldy #SYM.Q
|
||||
lda (ZPSymBufPtr),y
|
||||
lda (ZPLookupSymPtr),y
|
||||
sec
|
||||
sbc #SYM.Q.ARRAY
|
||||
ply
|
||||
@ -497,13 +498,13 @@ CC.EXP.Array ldy #SYM.Q
|
||||
.99 rts
|
||||
*--------------------------------------
|
||||
CC.EXP.PushAddr ldy #SYM.Addr+1
|
||||
lda (ZPSymBufPtr),y
|
||||
lda (ZPLookupSymPtr),y
|
||||
bne .7
|
||||
* LOCAL
|
||||
jsr CODE.PUSHpBASEp1
|
||||
|
||||
ldy #SYM.Addr
|
||||
lda (ZPSymBufPtr),y
|
||||
lda (ZPLookupSymPtr),y
|
||||
eor #$FF
|
||||
inc
|
||||
jsr CODE.LDAI
|
||||
@ -515,7 +516,7 @@ CC.EXP.PushAddr ldy #SYM.Addr+1
|
||||
.7 jsr CODE.PUSHI
|
||||
|
||||
ldy #SYM.Addr
|
||||
lda (ZPSymBufPtr),y
|
||||
lda (ZPLookupSymPtr),y
|
||||
jsr CODE.PUSHI
|
||||
|
||||
clc
|
||||
@ -523,13 +524,13 @@ CC.EXP.PushAddr ldy #SYM.Addr+1
|
||||
*--------------------------------------
|
||||
CC.EXP.PushDeref
|
||||
ldy #SYM.Addr+1
|
||||
lda (ZPSymBufPtr),y
|
||||
lda (ZPLookupSymPtr),y
|
||||
bne .7
|
||||
* LOCAL
|
||||
jsr CODE.SETpBASEp1
|
||||
|
||||
ldy #SYM.Addr
|
||||
lda (ZPSymBufPtr),y
|
||||
lda (ZPLookupSymPtr),y
|
||||
eor #$FF
|
||||
inc
|
||||
jsr CODE.LDAI
|
||||
@ -541,13 +542,14 @@ CC.EXP.PushDeref
|
||||
rts
|
||||
* DATASEG
|
||||
.7 jsr CODE.LDAI
|
||||
|
||||
lda #$85 STA zp
|
||||
jsr CODE.EmitByte
|
||||
lda #ZPPtr1+1
|
||||
jsr CODE.EmitByte
|
||||
|
||||
ldy #SYM.Addr
|
||||
lda (ZPSymBufPtr),y
|
||||
lda (ZPLookupSymPtr),y
|
||||
jsr CODE.LDAI
|
||||
|
||||
lda #$85 STA zp
|
||||
@ -558,22 +560,22 @@ CC.EXP.PushDeref
|
||||
jsr CODE.Deref
|
||||
|
||||
clc
|
||||
rts
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
CC.EXP.GetRef ldy #SYM.Addr+1
|
||||
lda (ZPSymBufPtr),y
|
||||
lda (ZPLookupSymPtr),y
|
||||
jsr CODE.PUSHI
|
||||
|
||||
ldy #SYM.Addr
|
||||
lda (ZPSymBufPtr),y
|
||||
lda (ZPLookupSymPtr),y
|
||||
jsr CODE.PUSHI
|
||||
|
||||
lda (ZPSymBufPtr) SYM.T
|
||||
lda (ZPLookupSymPtr) SYM.T
|
||||
|
||||
sta ZPPtr2 T
|
||||
|
||||
ldy #SYM.Q
|
||||
lda (ZPSymBufPtr),y
|
||||
lda (ZPLookupSymPtr),y
|
||||
clc
|
||||
adc #SYM.Q.POINTER
|
||||
bcs .9 more than ***
|
||||
|
@ -1,6 +1,5 @@
|
||||
NEW
|
||||
AUTO 3,1
|
||||
.LIST OFF
|
||||
*--------------------------------------
|
||||
CC.F.Decl stz LocalPtr
|
||||
|
||||
@ -38,9 +37,6 @@ CC.F.Decl stz LocalPtr
|
||||
jsr CC.IsLetter
|
||||
bcs .2
|
||||
|
||||
jsr CC.SYM.Push
|
||||
bcs .99
|
||||
|
||||
>LDYA ZPPtr2
|
||||
ldx #SYM.SC.AUTO
|
||||
jsr CC.SYM.New
|
||||
@ -49,7 +45,7 @@ CC.F.Decl stz LocalPtr
|
||||
jsr CC.SYM.Store Store f() Args in Local scope
|
||||
bcs .99
|
||||
|
||||
jsr CC.SYM.FreeBufPop
|
||||
jsr CC.SYM.Free
|
||||
bcs .99
|
||||
|
||||
jsr CC.GetCharNB
|
||||
@ -93,12 +89,6 @@ CC.F.Decl stz LocalPtr
|
||||
.7 cmp #'{'
|
||||
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
|
||||
jsr CC.SYM.SetAddrYA
|
||||
|
||||
@ -108,10 +98,6 @@ CC.F.Decl stz LocalPtr
|
||||
|
||||
clc Store f() Declaration / Start Definition
|
||||
rts
|
||||
|
||||
.90 lda #E.REDEF
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CC.F.DeclGetTQ lda (ZPLineBufPtr)
|
||||
cmp #'.'
|
||||
@ -167,6 +153,17 @@ CC.F.Def.END jsr CODE.Leave
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
CC.F.AddTQ pha
|
||||
tya
|
||||
ldy ZPSymSize
|
||||
sta (ZPSymBufPtr),y
|
||||
iny
|
||||
pla
|
||||
sta (ZPSymBufPtr),y
|
||||
iny
|
||||
sty ZPSymSize
|
||||
rts
|
||||
*--------------------------------------
|
||||
* in : ZPSymPtr
|
||||
* Y,A = Expected T/Q
|
||||
*--------------------------------------
|
||||
@ -188,11 +185,10 @@ CC.F.CallRetV sec
|
||||
|
||||
ror ZPPtr1+1 bRetV
|
||||
bpl .20 no return value on stack
|
||||
|
||||
|
||||
ldy #SYM.Addr+1
|
||||
lda (ZPSymBufPtr),y
|
||||
cmp #2
|
||||
bcc .20 SYS/FPU call, no ret value space
|
||||
beq .20 SYS/LIB/FPU call, no ret value space
|
||||
|
||||
jsr CC.SYM.GetSymSizeOfInAXC
|
||||
jsr CODE.nAddLocal
|
||||
@ -354,7 +350,7 @@ CC.F.Call2 lda ZPPtr2+1
|
||||
* Return Value : call & put result on stack if in Y,A
|
||||
|
||||
.5 ldy #SYM.Addr+1
|
||||
lda (ZPSymBufPtr),y
|
||||
lda (ZPLookupSymPtr),y
|
||||
cmp #2
|
||||
bcs .8 not a SYS/FPU call...Ret value on stack
|
||||
|
||||
@ -377,13 +373,14 @@ CC.F.Call2 lda ZPPtr2+1
|
||||
rts
|
||||
*--------------------------------------
|
||||
CC.F.Call3 ldy #SYM.Addr+1
|
||||
lda (ZPSymBufPtr),y
|
||||
|
||||
lda (ZPLookupSymPtr),y
|
||||
beq .9
|
||||
|
||||
pha
|
||||
|
||||
dey
|
||||
lda (ZPSymBufPtr),y
|
||||
lda (ZPLookupSymPtr),y
|
||||
tax
|
||||
|
||||
ply
|
||||
@ -407,19 +404,23 @@ CC.F.Call3 ldy #SYM.Addr+1
|
||||
clc
|
||||
rts
|
||||
|
||||
.9 lda #E.FUNDEF
|
||||
sec
|
||||
.9 bit bPass2
|
||||
bmi .99
|
||||
|
||||
lda #5 leave room for LDX #imm, JSR abs
|
||||
clc
|
||||
adc ZPCCConst
|
||||
sta ZPCCConst
|
||||
|
||||
bcc .90
|
||||
|
||||
inc ZPCCConst+1
|
||||
|
||||
.90 clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
CC.F.AddTQ pha
|
||||
tya
|
||||
ldy ZPSymSize
|
||||
sta (ZPSymBufPtr),y
|
||||
iny
|
||||
pla
|
||||
sta (ZPSymBufPtr),y
|
||||
iny
|
||||
sty ZPSymSize
|
||||
|
||||
.99 lda #E.FUNDEF
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CC.F.GetTQ ldy ZPSymSize
|
||||
|
@ -1,6 +1,5 @@
|
||||
NEW
|
||||
AUTO 3,1
|
||||
.LIST OFF
|
||||
*--------------------------------------
|
||||
* Built in Keywords
|
||||
*--------------------------------------
|
||||
@ -49,11 +48,11 @@ CC.KW.IF.END jsr CC.PopYA
|
||||
>STYA ZPPtr1 set JMP false
|
||||
|
||||
lda ZPCCCode
|
||||
sta (ZPPtr1)
|
||||
* sta (ZPPtr1)
|
||||
|
||||
ldy #1
|
||||
lda ZPCCCode+1
|
||||
sta (ZPPtr1),y
|
||||
* sta (ZPPtr1),y
|
||||
|
||||
* clc
|
||||
|
||||
@ -85,11 +84,11 @@ CC.KW.WHILE.END jsr CC.PopYA Get JMP false location
|
||||
jsr CODE.TOABSYX
|
||||
|
||||
lda ZPCCCode
|
||||
sta (ZPPtr1)
|
||||
* sta (ZPPtr1)
|
||||
|
||||
ldy #1
|
||||
lda ZPCCCode+1
|
||||
sta (ZPPtr1),y
|
||||
* sta (ZPPtr1),y
|
||||
|
||||
clc
|
||||
|
||||
@ -106,37 +105,40 @@ CC.KW.DO.END
|
||||
*--------------------------------------
|
||||
* for (e1;e2;e3) s;
|
||||
*
|
||||
* e1;
|
||||
* while (e2)
|
||||
* {
|
||||
* s;
|
||||
* cont:
|
||||
* e3;
|
||||
* { <- new scope : allows for(int i=1; ....)
|
||||
* e1;
|
||||
* loop:
|
||||
* while (e2)
|
||||
* {
|
||||
* s;
|
||||
* cont:
|
||||
* e3;
|
||||
* }
|
||||
* break:
|
||||
* }
|
||||
* break:
|
||||
*--------------------------------------
|
||||
CC.KW.FOR jsr CC.GetCharNB
|
||||
bcs .19
|
||||
bcs .9
|
||||
|
||||
cmp #'('
|
||||
bne .19
|
||||
bne .9
|
||||
|
||||
jsr CC.GetNextCharNB
|
||||
bcs .19
|
||||
bcs .9
|
||||
|
||||
jsr CC.EXP.Eval00 get e1
|
||||
bcs .29
|
||||
bcs .9
|
||||
|
||||
jsr CC.KW.StackDiscard
|
||||
|
||||
jsr CC.GetCharNB
|
||||
bcs .19
|
||||
bcs .9
|
||||
|
||||
cmp #';'
|
||||
bne .19
|
||||
bne .9
|
||||
|
||||
jsr CC.GetNextCharNB skip ';'
|
||||
.19 bcs .9
|
||||
bcs .9
|
||||
*--------------------------------------
|
||||
>LDYA ZPCCCode
|
||||
>STYA ZPPtr2 save LOOP address
|
||||
@ -187,11 +189,11 @@ CC.KW.FOR jsr CC.GetCharNB
|
||||
jsr CODE.TOABSYX JMP e2
|
||||
|
||||
lda ZPCCCode setup JSR s;
|
||||
sta (ZPPtr3)
|
||||
* sta (ZPPtr3)
|
||||
|
||||
lda ZPCCCode+1
|
||||
ldy #1
|
||||
sta (ZPPtr3),y
|
||||
* sta (ZPPtr3),y
|
||||
|
||||
jmp CC.KW.BEGIN
|
||||
|
||||
@ -215,11 +217,11 @@ CC.KW.FOR.END lda #$60
|
||||
>STYA ZPPtr1 get JMP break: location
|
||||
|
||||
lda ZPCCCode
|
||||
sta (ZPPtr1)
|
||||
* sta (ZPPtr1)
|
||||
|
||||
ldy #1
|
||||
lda ZPCCCode+1
|
||||
sta (ZPPtr1),y
|
||||
* sta (ZPPtr1),y
|
||||
|
||||
clc
|
||||
|
||||
@ -227,7 +229,15 @@ CC.KW.FOR.END lda #$60
|
||||
*--------------------------------------
|
||||
CC.KW.SWITCH
|
||||
CC.KW.CASE
|
||||
lda #E.CSYN
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CC.KW.BREAK
|
||||
lda #E.CSYN
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CC.KW.CONTINUE
|
||||
lda #E.CSYN
|
||||
sec
|
||||
@ -287,6 +297,7 @@ CC.KW.STRUCT >ENTER 4
|
||||
jsr CC.GetCharNB
|
||||
bcs .99
|
||||
|
||||
ldx #SYM.SC.TAG
|
||||
>LDA.G CC.hTags
|
||||
jsr CC.SYM.NewKey
|
||||
bcs .99
|
||||
|
173
BIN/CC.S.LINK.txt
Normal file
173
BIN/CC.S.LINK.txt
Normal file
@ -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
|
||||
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
|
||||
*--------------------------------------
|
||||
@ -88,7 +34,7 @@ CC.STMT.CPStmt.END
|
||||
|
||||
jsr CC.Pop Locals
|
||||
sta LocalPtr
|
||||
|
||||
|
||||
txa
|
||||
bmi .5
|
||||
|
||||
@ -100,6 +46,8 @@ CC.STMT.CPStmt.END
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CC.CPS.New
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE usr/src/bin/cc.s.stmt
|
||||
LOAD usr/src/bin/cc.s
|
||||
|
208
BIN/CC.S.SYM.txt
208
BIN/CC.S.SYM.txt
@ -1,6 +1,5 @@
|
||||
NEW
|
||||
AUTO 3,1
|
||||
.LIST OFF
|
||||
*--------------------------------------
|
||||
* Input : ZPLineBufPtr, Y,A = T/Q, X = SC
|
||||
* Output : Y,A = VarID
|
||||
@ -10,11 +9,10 @@ CC.SYM.New >STYA ZPPtr2 T/Q
|
||||
|
||||
ldy ScopePtr
|
||||
lda (pData),y
|
||||
sta hSymScope
|
||||
jsr CC.SYM.NewKey
|
||||
bcs .9
|
||||
|
||||
>STYA ZPSymID Y,A = KeyID
|
||||
>STYA.G CC.SymID Y,A = KeyID
|
||||
stx ZPPtr3+1 X = KeyLen
|
||||
|
||||
>LDYAI 256
|
||||
@ -22,22 +20,32 @@ CC.SYM.New >STYA ZPPtr2 T/Q
|
||||
bcs .9
|
||||
|
||||
>STYA ZPSymBufPtr
|
||||
stx hSymBuf
|
||||
txa
|
||||
>STA.G CC.hSymBuf
|
||||
|
||||
>LDYA ZPPtr2
|
||||
jsr CC.SYM.SetTypeYA
|
||||
lda ZPPtr2
|
||||
sta (ZPSymBufPtr) #SYM.T
|
||||
|
||||
lda ZPPtr3
|
||||
ldy #SYM.SC
|
||||
lda ZPPtr2+1
|
||||
ldy #SYM.Q
|
||||
sta (ZPSymBufPtr),y
|
||||
|
||||
lda #SYM.Def
|
||||
sta ZPSymSize
|
||||
lda ZPPtr3
|
||||
iny #SYM.SC
|
||||
sta (ZPSymBufPtr),y
|
||||
|
||||
iny
|
||||
lda #0
|
||||
|
||||
.1 sta (ZPSymBufPtr),y
|
||||
iny
|
||||
cpy #SYM.Def
|
||||
bne .1
|
||||
|
||||
sty ZPSymSize
|
||||
stz ZPSymSize+1
|
||||
|
||||
ldx ZPPtr3+1 Key Len
|
||||
jsr CC.SYM.Link
|
||||
|
||||
jsr CC.SkipX
|
||||
|
||||
jsr CC.GetCharNB
|
||||
@ -46,7 +54,7 @@ CC.SYM.New >STYA ZPPtr2 T/Q
|
||||
cmp #'('
|
||||
bne CC.SYM.NewV
|
||||
|
||||
jmp CC.F.Decl
|
||||
jmp CC.F.Decl
|
||||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
@ -166,7 +174,7 @@ CC.SYM.SetAddrL jsr CC.SYM.GetSymSizeOfInAXC
|
||||
|
||||
ldy #SYM.Addr
|
||||
sta (ZPSymBufPtr),y
|
||||
|
||||
|
||||
jsr CC.SYM.GetSymSizeOfInAXC
|
||||
jsr CODE.nAddLocal
|
||||
|
||||
@ -179,87 +187,55 @@ CC.SYM.SetAddrL jsr CC.SYM.GetSymSizeOfInAXC
|
||||
*--------------------------------------
|
||||
CC.SYM.NewKey >PUSHA
|
||||
>PUSHW ZPLineBufPtr
|
||||
>SYSCALL SListNewKey
|
||||
* bcs .9
|
||||
|
||||
* clc Y,A = KeyID, X = KeyLen
|
||||
bit bPass2
|
||||
bpl .1
|
||||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
* Input : ZPLineBufPtr, X = KeyLen
|
||||
*--------------------------------------
|
||||
CC.SYM.Link >LDYA L.CC.LIBC
|
||||
>STYA ZPLookupPtr
|
||||
txa
|
||||
bne .1
|
||||
|
||||
phx
|
||||
>SYSCALL SListLookup
|
||||
|
||||
lda #0
|
||||
ldy #SYM.Addr
|
||||
sta (ZPSymBufPtr),y
|
||||
iny
|
||||
sta (ZPSymBufPtr),y
|
||||
* clc
|
||||
|
||||
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
|
||||
|
||||
.4 inx
|
||||
inx
|
||||
.1 >SYSCALL SListNewKey
|
||||
|
||||
lda (ZPLookupPtr)
|
||||
jsr CC.ZPLookupPtrAddAp1 Skip LEN\Symbol
|
||||
|
||||
lda (ZPLookupPtr)
|
||||
jsr CC.ZPLookupPtrAddAp1 Skip LEN\definition
|
||||
bra .1
|
||||
|
||||
.9 plx
|
||||
sec
|
||||
rts
|
||||
rts Y,A = KeyID, X = KeyLen
|
||||
*--------------------------------------
|
||||
CC.SYM.Store >PUSHB hSymScope
|
||||
>PUSHW ZPSymID
|
||||
CC.SYM.Store ldy ScopePtr
|
||||
lda (pData),y
|
||||
>PUSHA
|
||||
>PUSHW.G CC.SymID
|
||||
>PUSHW ZPSymBufPtr
|
||||
>PUSHBI 0
|
||||
>PUSHB ZPSymSize
|
||||
>SYSCALL SListAddData
|
||||
>PUSHW ZPSymSize
|
||||
|
||||
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
|
||||
*--------------------------------------
|
||||
CC.SYM.NewScope ldy ScopePtr
|
||||
cpy #CC.hSymbols+SCOPE.MAX-1
|
||||
cpy #CC.hSymbols+SCOPE.MAX
|
||||
bcs .9
|
||||
|
||||
>SYSCALL SListNew
|
||||
@ -288,12 +264,9 @@ CC.SYM.FreeScope
|
||||
dec ScopePtr
|
||||
inc ScopenCnt
|
||||
|
||||
rts
|
||||
rts
|
||||
*--------------------------------------
|
||||
CC.SYM.Lookup jsr CC.SYM.Push
|
||||
bcs .99
|
||||
|
||||
>PUSHB ScopePtr
|
||||
CC.SYM.Lookup >PUSHB ScopePtr
|
||||
|
||||
.1 tay
|
||||
lda (pData),y
|
||||
@ -302,64 +275,35 @@ CC.SYM.Lookup jsr CC.SYM.Push
|
||||
|
||||
lda (pstack)
|
||||
cmp #CC.hSymbols
|
||||
beq .9 CS
|
||||
beq .9
|
||||
|
||||
dec
|
||||
sta (pstack)
|
||||
bra .1
|
||||
|
||||
.9 jsr CC.SYM.Pop
|
||||
|
||||
inc pStack
|
||||
.9 inc pStack
|
||||
|
||||
lda #E.NOKEY
|
||||
sec
|
||||
rts
|
||||
|
||||
.8 stx hSymBuf
|
||||
|
||||
>PULLA
|
||||
tay
|
||||
lda (pData),y
|
||||
sta hSymScope
|
||||
|
||||
txa
|
||||
>SYSCALL GetMemPtr
|
||||
>STYA ZPSymBufPtr
|
||||
.8 inc pStack
|
||||
|
||||
>STYA ZPLookupSymPtr
|
||||
|
||||
.99 rts
|
||||
*--------------------------------------
|
||||
CC.SYM.Push ldx #7
|
||||
|
||||
.1 lda ZPSymID,x
|
||||
jsr CC.Push
|
||||
bcs .9
|
||||
|
||||
dex
|
||||
bpl .1
|
||||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
CC.SYM.FreeBuf lda hSymBuf
|
||||
|
||||
stz hSymBuf
|
||||
CC.SYM.LookupFree
|
||||
>LDA.G CC.hLookupSymBuf
|
||||
>SYSCALL FreeMem
|
||||
bcs .99
|
||||
|
||||
>STZ.G CC.hLookupSymBuf
|
||||
rts
|
||||
*--------------------------------------
|
||||
CC.SYM.FreeBufPop
|
||||
jsr CC.SYM.FreeBuf
|
||||
*--------------------------------------
|
||||
CC.SYM.Pop ldx #0
|
||||
|
||||
.1 jsr CC.Pop
|
||||
bcs .9
|
||||
|
||||
sta ZPSymID,x
|
||||
inx
|
||||
cpx #8
|
||||
bne .1
|
||||
|
||||
clc
|
||||
.9 rts
|
||||
|
||||
|
||||
.99 >DEBUG
|
||||
rts
|
||||
*--------------------------------------
|
||||
* Y,A = value T/Q
|
||||
*--------------------------------------
|
||||
@ -525,7 +469,7 @@ CC.SYM.GetAddrInYA
|
||||
lda (ZPSymBufPtr),y
|
||||
pha
|
||||
|
||||
dey #SYM.Addr
|
||||
dey
|
||||
lda (ZPSymBufPtr),y
|
||||
tay
|
||||
|
||||
|
@ -1,6 +1,5 @@
|
||||
NEW
|
||||
AUTO 3,1
|
||||
.LIST OFF
|
||||
*--------------------------------------
|
||||
CC.TYPE.Decl >ENTER 2
|
||||
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.EXTERN .EQ 6
|
||||
SYM.SC.TYPEDEF .EQ 8
|
||||
SYM.SC.DEFINE .EQ 10
|
||||
SYM.SC.TAG .EQ 12
|
||||
*
|
||||
SYM.SizeOf .EQ 4
|
||||
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
|
||||
*--------------------------------------
|
||||
.DUMMY
|
||||
.OR ZPBIN
|
||||
ZS.START
|
||||
ZPPtr1 .BS 2
|
||||
ZPPtr2 .BS 2
|
||||
ZPPtr3 .BS 2
|
||||
ArgIndex .BS 1
|
||||
bPass2 .BS 1
|
||||
|
||||
ZPCCCode .BS 2
|
||||
ZPCCConst .BS 2
|
||||
ZPCCData .BS 2
|
||||
@ -66,17 +82,12 @@ LocalPtr .BS 1
|
||||
ScopePtr .BS 1
|
||||
ScopenCnt .BS 1
|
||||
|
||||
ZPSymID .BS 2
|
||||
hSymScope .BS 1
|
||||
hSymBuf .BS 1
|
||||
* .BS 1
|
||||
* .BS 1
|
||||
ZPSymSize .BS 2
|
||||
ZPSymBufPtr .BS 2
|
||||
|
||||
ZPPtr1 .BS 2
|
||||
ZPPtr2 .BS 2
|
||||
ZPPtr3 .BS 2
|
||||
ArgIndex .BS 1
|
||||
hDefineBuf .BS 1
|
||||
ZPLookupSymPtr .BS 2
|
||||
|
||||
ZS.END .ED
|
||||
*--------------------------------------
|
||||
@ -104,10 +115,14 @@ CS.START cld
|
||||
L.MSG.GREETINGS .DA MSG.GREETINGS
|
||||
L.MSG.USAGE .DA MSG.USAGE
|
||||
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.TRACE .DA MSG.TRACE
|
||||
L.MSG.RTSTK .DA MSG.RTSTK
|
||||
L.MSG.ERROR .DA MSG.ERROR
|
||||
L.MSG.SUMMARY .DA MSG.SUMMARY
|
||||
L.MSG.NOMAIN .DA MSG.NOMAIN
|
||||
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.LIBC .DA CC.LIBC
|
||||
L.PCC.FH .DA PCC.FH
|
||||
.DA 0
|
||||
*--------------------------------------
|
||||
* Called once at process creation
|
||||
@ -243,21 +259,48 @@ CS.RUN >PUSHW L.MSG.GREETINGS
|
||||
|
||||
jsr CC.Init
|
||||
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
|
||||
bne .9
|
||||
|
||||
jsr CS.RUN.FClose
|
||||
bne CS.RUN.LOOP
|
||||
bne CS.RUN.CLOOP
|
||||
*--------------------------------------
|
||||
jsr CC.MainExec
|
||||
bcc .8
|
||||
jsr PrintSummary
|
||||
bcs .99
|
||||
|
||||
>LDYA L.MSG.NOMAIN
|
||||
>SYSCALL puts
|
||||
jsr CC.Link
|
||||
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
|
||||
sec
|
||||
rts
|
||||
@ -266,13 +309,13 @@ CS.RUN.LOOP jsr CC.CompileFile
|
||||
jsr PrintErrorMsg
|
||||
pla
|
||||
sec
|
||||
rts
|
||||
.99 rts
|
||||
*--------------------------------------
|
||||
CS.RUN.ARGS inc ArgIndex
|
||||
|
||||
lda ArgIndex
|
||||
>SYSCALL ArgV
|
||||
bcs .7
|
||||
bcs .8
|
||||
|
||||
>STYA ZPPtr1
|
||||
lda (ZPPtr1)
|
||||
@ -297,18 +340,24 @@ CS.RUN.ARGS inc ArgIndex
|
||||
sta (pData),y
|
||||
bra CS.RUN.ARGS
|
||||
|
||||
.4 >LDA.G hFilePtr
|
||||
cmp #hFilePtr
|
||||
.4 >LDA.G CC.InFileArg
|
||||
bne .5
|
||||
|
||||
lda ArgIndex
|
||||
>STA.G CC.InFileArg
|
||||
bra CS.RUN.ARGS
|
||||
|
||||
.5 >LDA.G CC.OutFileArg
|
||||
bne .90
|
||||
|
||||
>LDYA ZPPtr1
|
||||
jsr CS.RUN.FOpen
|
||||
bcc CS.RUN.ARGS
|
||||
lda ArgIndex
|
||||
>STA.G CC.OutFileArg
|
||||
bra CS.RUN.ARGS
|
||||
|
||||
rts
|
||||
.8 >LDA.G CC.InFileArg
|
||||
beq .90
|
||||
|
||||
.7 >LDA.G hFilePtr
|
||||
cmp #hFilePtr
|
||||
>LDA.G CC.OutFileArg
|
||||
beq .90
|
||||
|
||||
clc
|
||||
@ -322,7 +371,22 @@ CS.RUN.ARGS inc ArgIndex
|
||||
sec
|
||||
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 S.FI.T.TXT
|
||||
>PUSHWZ Aux type
|
||||
@ -406,10 +470,36 @@ CS.RUN.FClose >LDA.G hFilePtr
|
||||
|
||||
.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
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.QUIT jsr CC.Quit
|
||||
CS.QUIT jsr CODE.Quit
|
||||
jsr CC.Quit
|
||||
|
||||
>LDA.G hLineBuf
|
||||
beq .8
|
||||
@ -458,7 +548,7 @@ PrintDebugMsg >PUSHW L.MSG.DEBUG
|
||||
>PUSHB LocalPtr
|
||||
|
||||
>PUSHW ZPCCStack
|
||||
|
||||
|
||||
>PUSHB CStackPtr
|
||||
tay
|
||||
beq .1
|
||||
@ -471,44 +561,17 @@ PrintDebugMsg >PUSHW L.MSG.DEBUG
|
||||
|
||||
.1 >PUSHYA
|
||||
|
||||
>PUSHBI 14
|
||||
lda ScopePtr
|
||||
sec
|
||||
sbc #CC.hSymbols
|
||||
>PUSHA
|
||||
|
||||
>PUSHBI 15
|
||||
>SYSCALL PrintF
|
||||
>DEBUGOA
|
||||
>DEBUG
|
||||
rts
|
||||
*--------------------------------------
|
||||
PrintRTStackTrace
|
||||
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
|
||||
PrintErrorMsg >LDA.G CC.hDefineBuf
|
||||
beq .10
|
||||
|
||||
>LDYA.G CC.SaveDefine
|
||||
@ -551,6 +614,78 @@ PrintErrorMsg lda hDefineBuf
|
||||
>PUSHBI 2
|
||||
>SYSCALL FPrintF
|
||||
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.core
|
||||
@ -562,65 +697,72 @@ PrintErrorMsg lda hDefineBuf
|
||||
.INB usr/src/bin/cc.s.f
|
||||
.INB usr/src/bin/cc.s.exp
|
||||
.INB usr/src/bin/cc.s.sym
|
||||
.INB usr/src/bin/cc.s.link
|
||||
.INB usr/src/bin/cc.s.exec
|
||||
*--------------------------------------
|
||||
PCC.DEBUG
|
||||
jsr PrintRTStackTrace
|
||||
>DEBUG
|
||||
CS.END
|
||||
*--------------------------------------
|
||||
* 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.ENTER
|
||||
* jsr PrintRTStackTrace
|
||||
|
||||
ldx pBase
|
||||
PCC.SLEEP >SLEEP
|
||||
PCC.SLEEP.L .EQ *-PCC.SLEEP
|
||||
*--------------------------------------
|
||||
PCC.ENTER ldx pBase
|
||||
phx
|
||||
clc
|
||||
adc pStack A = Local Size
|
||||
sta pBase
|
||||
|
||||
* jsr PrintRTStackTrace
|
||||
* >DEBUG
|
||||
|
||||
PCC.ENTER.L .EQ *-PCC.ENTER
|
||||
*--------------------------------------
|
||||
PCC.LEAVE
|
||||
* jsr PrintRTStackTrace
|
||||
|
||||
lda pBase
|
||||
PCC.LEAVE lda pBase
|
||||
sta pStack
|
||||
pla
|
||||
sta pBase
|
||||
|
||||
* jsr PrintRTStackTrace
|
||||
* >DEBUG
|
||||
|
||||
rts
|
||||
|
||||
PCC.LEAVE.L .EQ *-PCC.LEAVE
|
||||
*--------------------------------------
|
||||
PCC.ADDLOCAL
|
||||
* jsr PrintRTStackTrace
|
||||
* >DEBUG
|
||||
clc
|
||||
PCC.ADDLOCAL clc
|
||||
adc pStack
|
||||
sta pStack
|
||||
|
||||
* jsr PrintRTStackTrace
|
||||
* >DEBUG
|
||||
|
||||
PCC.ADDLOCAL.L .EQ *-PCC.ADDLOCAL
|
||||
*--------------------------------------
|
||||
PCC.GETLOCAL clc
|
||||
adc pBase
|
||||
tay
|
||||
lda pBase+1
|
||||
|
||||
|
||||
PCC.GETLOCAL.L .EQ *-PCC.GETLOCAL
|
||||
*--------------------------------------
|
||||
PCC.SETRETVALUE ldy #0
|
||||
|
||||
* jsr PrintRTStackTrace
|
||||
* >DEBUG
|
||||
|
||||
.1 >PULLA
|
||||
sta (pBase),y
|
||||
iny
|
||||
@ -629,93 +771,42 @@ PCC.SETRETVALUE ldy #0
|
||||
|
||||
PCC.SETRETVALUE.L .EQ *-PCC.SETRETVALUE
|
||||
*--------------------------------------
|
||||
PCC.PushXFromYA >STYA ZPPtr1
|
||||
|
||||
* jsr PrintRTStackTrace
|
||||
* >DEBUG
|
||||
|
||||
PCC.PushXFromYA >STYA ZS.RT.Ptr1
|
||||
txa
|
||||
dec
|
||||
tay
|
||||
|
||||
.1 lda (ZPPtr1),y
|
||||
.1 lda (ZS.RT.Ptr1),y
|
||||
>PUSHA
|
||||
dey
|
||||
bpl .1
|
||||
|
||||
PCC.PushXFromYA.L .EQ *-PCC.PushXFromYA
|
||||
*--------------------------------------
|
||||
PCC.PopXToYA >STYA ZPPtr1
|
||||
|
||||
* jsr PrintRTStackTrace
|
||||
* >DEBUG
|
||||
PCC.PopXToYA >STYA ZS.RT.Ptr1
|
||||
|
||||
ldy #0
|
||||
|
||||
.1 >PULLA
|
||||
sta (ZPPtr1),y
|
||||
sta (ZS.RT.Ptr1),y
|
||||
iny
|
||||
dex
|
||||
bne .1
|
||||
|
||||
PCC.PopXToYA.L .EQ *-PCC.PopXToYA
|
||||
*--------------------------------------
|
||||
PCC.SetXToYA >STYA ZPPtr1
|
||||
|
||||
* jsr PrintRTStackTrace
|
||||
* >DEBUG
|
||||
PCC.SetXToYA >STYA ZS.RT.Ptr1
|
||||
|
||||
ldy #0
|
||||
|
||||
.1 lda (pStack),y
|
||||
sta (ZPPtr1),y
|
||||
sta (ZS.RT.Ptr1),y
|
||||
iny
|
||||
dex
|
||||
bne .1
|
||||
|
||||
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
|
||||
|
||||
.1 ora (pStack)
|
||||
@ -730,35 +821,153 @@ PCC.Test0X lda #0
|
||||
PCC.Test0X.L .EQ *-PCC.Test0X
|
||||
*--------------------------------------
|
||||
PCC.SETpBASEp1 lda pBase+1
|
||||
sta ZPPtr1+1
|
||||
sta ZS.RT.Ptr1+1
|
||||
|
||||
PCC.SETpBASEp1.L .EQ *-PCC.SETpBASEp1
|
||||
*--------------------------------------
|
||||
PCC.SETpBASEpA clc
|
||||
adc pBase
|
||||
sta ZPPtr1
|
||||
sta ZS.RT.Ptr1
|
||||
ldy #1
|
||||
|
||||
PCC.SETpBASEpA.L .EQ *-PCC.SETpBASEpA
|
||||
*--------------------------------------
|
||||
PCC.Deref >PUSHB (ZPPtr1),y
|
||||
>PUSHB (ZPPtr1)
|
||||
PCC.Deref.L .EQ *-PCC.Deref
|
||||
PCC.Deref >PUSHB (ZS.RT.Ptr1),y
|
||||
>PUSHB (ZS.RT.Ptr1)
|
||||
|
||||
PCC.Deref.L .EQ *-PCC.Deref
|
||||
*--------------------------------------
|
||||
PCC.PUSHpBASEp1 >PUSHB pBase+1
|
||||
|
||||
PCC.PUSHpBASEp1.L .EQ *-PCC.PUSHpBASEp1
|
||||
*--------------------------------------
|
||||
PCC.PUSHpBASEpA clc
|
||||
adc pBase
|
||||
>PUSHA
|
||||
|
||||
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
|
||||
dey
|
||||
bpl .1
|
||||
|
||||
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.Cnt .EQ *-CC.OPChars
|
||||
*--------------------------------------
|
||||
@ -1151,6 +1360,8 @@ CC.LIBC >PSTR "chtyp"
|
||||
.DA #2,#2,#FPU.TAN
|
||||
>PSTR "atan"
|
||||
.DA #2,#2,#FPU.ATAN
|
||||
>PSTR "lrintf"
|
||||
.DA #2,#2,#FPU.QINT
|
||||
.HS 00
|
||||
*--------------------------------------
|
||||
.DUMMY
|
||||
@ -1166,26 +1377,32 @@ hFiles .BS FILES.MAX
|
||||
|
||||
LineCntPtr .BS 1
|
||||
.BS 1 for inc inc
|
||||
LineCnts .BS FILES.MAX+2
|
||||
LineCnts .BS FILES.MAX*2
|
||||
|
||||
hLineBuf .BS 1
|
||||
LineBufPtr .BS 2
|
||||
|
||||
CC.CmdSave .BS 1
|
||||
|
||||
CC.hDefineBuf .BS 1
|
||||
|
||||
CC.hDefines .BS 1
|
||||
CC.SaveDefine .BS 2
|
||||
|
||||
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.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
|
||||
*--------------------------------------
|
||||
|
@ -1,5 +1,6 @@
|
||||
NEW
|
||||
AUTO 3,1
|
||||
|
||||
short int tuiInit();
|
||||
int fastcall tuiClose(short int);
|
||||
|
||||
|
@ -1,5 +1,6 @@
|
||||
NEW
|
||||
AUTO 3,1
|
||||
|
||||
void md5(const char*, char*);
|
||||
|
||||
short int md5init();
|
||||
|
@ -70,7 +70,7 @@ D2.HeadSelect >PULLB D2.HeadNum
|
||||
|
||||
jsr D2.CheckDiskII
|
||||
bcs .9
|
||||
|
||||
|
||||
lda D2.HeadNum A = 0/1
|
||||
|
||||
asl A = 0/2
|
||||
@ -106,23 +106,29 @@ D2.MoveHead >PULLB D2.TargetQTrack
|
||||
D2.MoveHead.SEI lda D2.CurrentQTrack
|
||||
|
||||
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
|
||||
bra .9 no wait, next operation will be phy/plx/Ph0On,y
|
||||
pha
|
||||
|
||||
.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
|
||||
|
||||
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
|
||||
|
||||
sta D2.CurrentQTrack
|
||||
|
||||
bra .6 Ph ON to go to 0/4 or 2/4, then wait
|
||||
bra .9 no wait
|
||||
*--------------------------------------
|
||||
.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
|
||||
|
||||
.8 lda #IO.D2.SeekTimeF
|
||||
|
||||
jsr D2.Wait100usecA ...wait...
|
||||
|
||||
.9 lda D2.CurrentQTrack
|
||||
@ -161,12 +166,14 @@ D2.MoveHead.SEI lda D2.CurrentQTrack
|
||||
|
||||
jsr D2.Wait25600usec
|
||||
|
||||
lda IO.D2.Ph0Off,y
|
||||
bcc .90
|
||||
bcc .10
|
||||
clc
|
||||
|
||||
lda IO.D2.Ph0Off,x
|
||||
|
||||
.90 rts
|
||||
.10 lda IO.D2.Ph0Off,y
|
||||
|
||||
rts
|
||||
*--------------------------------------
|
||||
D2.SeekPhOnY and #6
|
||||
ora D2.Slotn0
|
||||
|
@ -10,7 +10,7 @@ XCLK.API.RDCLK .EQ $D8F0
|
||||
*--------------------------------------
|
||||
XCLK.START php
|
||||
sei
|
||||
ldx #XCLK.START2xx.L
|
||||
ldx #XCLK.START2xx.L-1
|
||||
|
||||
.1 lda XCLK.START2xx,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
|
||||
|
||||
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
|
||||
bra .9 no wait, next operation will be phy/plx/Ph0On,y
|
||||
cmp XRW.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 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
|
||||
|
||||
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
|
||||
|
||||
sta XRW.CurrentQTrack
|
||||
|
||||
bra .6 PhY ON to go to 0/4 or 2/4, then wait
|
||||
bra .9 no wait
|
||||
*--------------------------------------
|
||||
.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
|
||||
|
||||
bit #1
|
||||
bne .5
|
||||
bit #1 C = xxxxxxx1 ?
|
||||
bne .5 yes, 2 PhOn required
|
||||
|
||||
lda IO.D2.Ph0Off,x we must go to 0/4 or 2/4 : PhX Off
|
||||
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
|
||||
|
||||
.8 lda XRW.SeekTime
|
||||
|
||||
.8 lda #IO.D2.SeekTimeF XRW.SeekTime
|
||||
jsr XRW.Wait100usecA ...wait...
|
||||
|
||||
.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
|
||||
|
||||
lda IO.D2.Ph0Off,y
|
||||
bcc .90
|
||||
|
||||
lda IO.D2.Ph0Off,x
|
||||
bcc .10
|
||||
clc Exit wit CC (recalibrate)
|
||||
|
||||
.90 rts
|
||||
lda IO.D2.Ph0Off,x
|
||||
|
||||
.10 lda IO.D2.Ph0Off,y
|
||||
|
||||
rts
|
||||
*--------------------------------------
|
||||
XRW.SeekPhOnY and #6
|
||||
ora A2L
|
||||
|
@ -241,6 +241,13 @@ BB.FX2.Trk2Qtrk
|
||||
|
||||
BB.Trk2Qtrk.RTS rts
|
||||
*--------------------------------------
|
||||
BB.FX2.SeekPhOnY
|
||||
and #6
|
||||
ora ROM.D2.Slotn0
|
||||
tay
|
||||
lda IO.D2.Ph0On,y
|
||||
rts
|
||||
*--------------------------------------
|
||||
BB.FX2.SeekReadD2
|
||||
jsr BB.FX2.HeadSelect
|
||||
|
||||
@ -256,30 +263,27 @@ BB.FX2.SeekReadD2
|
||||
beq BB.FX2.ReadSectD2
|
||||
|
||||
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 cmp BB.TargetQTrack we are on 1/4 or 3/4
|
||||
.1 and #6 move in : X = Ph(N)
|
||||
ora ROM.D2.Slotn0
|
||||
tax
|
||||
lda IO.D2.Ph0On,x
|
||||
|
||||
pla
|
||||
|
||||
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 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
|
||||
.2 jsr BB.FX2.SeekPhOnY move out: Y = Ph(N)
|
||||
bra .9 Ph ON to go to 0/4 or 2/4, then wait
|
||||
*--------------------------------------
|
||||
.3 bcs .4 if CS, C > T, must move out
|
||||
|
||||
@ -304,13 +308,12 @@ BB.FX2.SeekReadD2
|
||||
|
||||
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
|
||||
jsr BB.Wait100usecA ...wait...
|
||||
|
||||
.9 jsr BB.Wait100usecA ...wait...
|
||||
|
||||
.10 lda BB.CurrentQTrack
|
||||
.9 lda BB.CurrentQTrack
|
||||
cmp BB.TargetQTrack
|
||||
bne .3
|
||||
|
||||
@ -319,12 +322,11 @@ BB.FX2.SeekReadD2
|
||||
lda #0
|
||||
jsr BB.Wait100usecA
|
||||
|
||||
lda IO.D2.Ph0Off,y
|
||||
bcc .11
|
||||
bcc .10
|
||||
|
||||
lda IO.D2.Ph0Off,x
|
||||
|
||||
.11
|
||||
.10 lda IO.D2.Ph0Off,y
|
||||
*--------------------------------------
|
||||
BB.FX2.ReadSectD2
|
||||
ldx ROM.D2.Slotn0
|
||||
|
Loading…
x
Reference in New Issue
Block a user