mirror of https://github.com/A2osX/A2osX.git
Fixes for Disk ][ recalibrate code
This commit is contained in:
parent
8b82b95e6a
commit
3d98f90fb4
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -16,14 +16,14 @@ BSX.HeadSelect asl A = 0/2
|
|||
lda IO.D2.Ph0Off+4,x
|
||||
rts
|
||||
*--------------------------------------
|
||||
BSX.Recalibrate lda #168
|
||||
|
||||
ldy BSX.Slotn0
|
||||
BSX.Recalibrate ldy BSX.Slotn0
|
||||
lda IO.D2.Ph0On,y
|
||||
|
||||
lda #IO.D2.SeekTimeR
|
||||
jsr BSX.Wait100usecA
|
||||
|
||||
lda #168
|
||||
|
||||
.1 dec
|
||||
dec
|
||||
|
||||
|
|
|
@ -216,8 +216,7 @@ CODE.PushFromPtr
|
|||
|
||||
rts
|
||||
*--------------------------------------
|
||||
CODE.PushConstP
|
||||
lda #$A9 LDA #imm
|
||||
CODE.PushConstP lda #$A9 LDA #imm
|
||||
jsr CODE.EmitByte
|
||||
bcs .9
|
||||
|
||||
|
@ -406,8 +405,6 @@ CODE.DSSelect clc
|
|||
|
||||
>PUSHB.G CC.hOutFile
|
||||
>PUSHWI 0
|
||||
* >PUSHWI 0
|
||||
* >PUSHBI SEEK.END
|
||||
|
||||
lda ZPCCConst
|
||||
clc
|
||||
|
@ -417,6 +414,7 @@ CODE.DSSelect clc
|
|||
adc PCC.FH+PCC.FH.IDATA+1
|
||||
sec
|
||||
sbc #$20
|
||||
|
||||
>PUSHYA
|
||||
>PUSHBI SEEK.SET
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
NEW
|
||||
AUTO 3,1
|
||||
*--------------------------------------
|
||||
CC.Init >SYSCALL SListNew
|
||||
CC.CORE.Init >SYSCALL SListNew
|
||||
bcs .9
|
||||
|
||||
>STA.G CC.hDefines
|
||||
|
@ -14,8 +14,16 @@ CC.Init >SYSCALL SListNew
|
|||
>SYSCALL SListNew
|
||||
bcs .9
|
||||
|
||||
>STA.G CC.hSymbols
|
||||
sty ScopePtr
|
||||
>STA.G CC.hScopes
|
||||
sty ScopeIdx
|
||||
|
||||
>LDYAI 256
|
||||
>SYSCALL GetMem
|
||||
bcs .9
|
||||
|
||||
>STYA ZPSymBufPtr
|
||||
txa
|
||||
>STA.G CC.hSymBuf
|
||||
|
||||
>LDYAI 256
|
||||
>SYSCALL GetMem
|
||||
|
@ -25,21 +33,28 @@ CC.Init >SYSCALL SListNew
|
|||
txa
|
||||
>STA.G CC.hStack
|
||||
|
||||
lda #CC.LookupIdx
|
||||
tay
|
||||
sta (pData),y
|
||||
|
||||
* clc
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
CC.Quit ldy ScopePtr
|
||||
CC.CORE.Quit jsr CS.RUN.FClose
|
||||
bne CC.CORE.Quit
|
||||
|
||||
ldy ScopeIdx
|
||||
beq .1
|
||||
|
||||
.10 lda (pData),y
|
||||
|
||||
>SYSCALL SListFree
|
||||
|
||||
ldy ScopePtr
|
||||
cpy #CC.hSymbols
|
||||
ldy ScopeIdx
|
||||
cpy #CC.hScopes
|
||||
beq .1
|
||||
|
||||
dec ScopePtr
|
||||
dec ScopeIdx
|
||||
dey
|
||||
bra .10
|
||||
|
||||
|
@ -55,16 +70,12 @@ CC.Quit ldy ScopePtr
|
|||
|
||||
.4 >LDA.G CC.hDefineBuf
|
||||
jsr .7
|
||||
|
||||
>LDA.G CC.hLookupSymBuf
|
||||
jsr .7
|
||||
|
||||
.5 jsr CS.RUN.FClose
|
||||
bne .5
|
||||
|
||||
>LDA.G CC.hSymBuf
|
||||
jsr .7
|
||||
|
||||
jsr CC.SYM.LookupFreeAll
|
||||
|
||||
>LDA.G CC.hStack
|
||||
|
||||
.7 beq CC.Quit.RTS
|
||||
|
@ -144,7 +155,7 @@ CC.CompileLine.1
|
|||
bcs .59
|
||||
|
||||
ldx #SYM.SC.STATIC Y,A = Type/Qual
|
||||
bit ScopenCnt
|
||||
bit bLocalScope
|
||||
bpl .25
|
||||
|
||||
bit #SYM.Q.FUNC someone wants to add a local f() ?
|
||||
|
@ -168,10 +179,7 @@ CC.CompileLine.1
|
|||
jsr CC.GetNextCharNB skip '{'
|
||||
bcs .69
|
||||
|
||||
jsr CC.SYM.Store
|
||||
bcs .29
|
||||
|
||||
jmp CC.SYM.Free
|
||||
jmp CC.SYM.StoreF
|
||||
*--------------------------------------
|
||||
|
||||
* TODO: AOPS
|
||||
|
@ -194,7 +202,7 @@ CC.CompileLine.1
|
|||
.28 jsr CC.SYM.Store
|
||||
bcs .9
|
||||
|
||||
jsr CC.SYM.Free
|
||||
|
||||
|
||||
bra .68
|
||||
*--------------------------------------
|
||||
|
@ -210,7 +218,7 @@ CC.CompileLine.1
|
|||
jsr CC.GetNextCharNB skip '{'
|
||||
bcs .99
|
||||
|
||||
jmp CC.CompileLine.1
|
||||
jmp CC.CompileLine.1
|
||||
*--------------------------------------
|
||||
.50 >LDYA L.CC.KW
|
||||
jsr CC.LookupID
|
||||
|
@ -352,36 +360,20 @@ CC.SListLookup >PUSHA hSList
|
|||
>SYSCALL SListLookup
|
||||
bcs .99
|
||||
|
||||
* pha save KeyID
|
||||
* phy
|
||||
|
||||
>PUSHA KeyID.HI
|
||||
tya
|
||||
>PUSHA KeyID.LO
|
||||
|
||||
jsr CC.SkipX
|
||||
|
||||
.1 >PUSHWZ allocate
|
||||
>PUSHWZ allocate
|
||||
>PUSHWI 65535 all
|
||||
>PUSHWZ From Start
|
||||
>SYSCALL SListGetData
|
||||
bcs .9
|
||||
|
||||
>STYA.G CC.LookupSymSize
|
||||
|
||||
txa
|
||||
>STA.G CC.hLookupSymBuf
|
||||
>SYSCALL GetMemPtr
|
||||
|
||||
* clc Y,A = SymPtr, X = hSymBuf
|
||||
.9 rts Y,A = SymSize, X = hSymBuf
|
||||
|
||||
rts
|
||||
|
||||
.9 plx
|
||||
plx
|
||||
rts
|
||||
|
||||
.99 inc pStack
|
||||
.99 inc pStack discard extra hSList
|
||||
rts
|
||||
*--------------------------------------
|
||||
CC.ZPLookupPtrAddAp1
|
||||
|
@ -393,23 +385,26 @@ CC.ZPLookupPtrAddAp1
|
|||
inc ZPLookupPtr+1
|
||||
.1 rts
|
||||
*--------------------------------------
|
||||
CC.GetDefine >LDYA ZPLineBufPtr
|
||||
>STYA.G CC.SaveDefine
|
||||
|
||||
>LDA.G CC.hDefines
|
||||
CC.GetDefine >LDA.G CC.hDefines
|
||||
jsr CC.SListLookup
|
||||
bcs .9
|
||||
|
||||
>STYA ZPLineBufPtr
|
||||
|
||||
>LDYA ZPLineBufPtr
|
||||
>STYA.G CC.SaveDefine
|
||||
|
||||
txa
|
||||
>STA.G CC.hDefineBuf
|
||||
|
||||
>SYSCALL GetMemPtr
|
||||
>STYA ZPLineBufPtr
|
||||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
* CT Stack
|
||||
*--------------------------------------
|
||||
CC.PushTQ ldy #SYM.Q
|
||||
lda (ZPSymBufPtr),y
|
||||
and #$FC ignore SYM.Q.FUNC+SYM.Q.FASTCALL
|
||||
jsr CC.Push
|
||||
bcs CC.Push.RTS
|
||||
|
||||
|
@ -449,16 +444,16 @@ CC.PopYA ldy CStackPtr
|
|||
|
||||
iny
|
||||
sty CStackPtr
|
||||
|
||||
|
||||
ply
|
||||
|
||||
|
||||
clc
|
||||
rts
|
||||
|
||||
.90 pla
|
||||
.9 lda #E.STACKERROR
|
||||
sec
|
||||
rts
|
||||
rts
|
||||
*--------------------------------------
|
||||
CC.Pop ldy CStackPtr
|
||||
beq .9
|
||||
|
|
|
@ -20,7 +20,7 @@ CC.DECL jsr CC.IsLetter
|
|||
bcs .99
|
||||
|
||||
ldx #SYM.SC.STATIC Y,A = Type/Qual
|
||||
bit ScopenCnt
|
||||
bit bLocalScope
|
||||
bpl .21
|
||||
|
||||
bit #SYM.Q.FUNC someone wants to add a local f() ?
|
||||
|
@ -50,7 +50,7 @@ CC.DECL jsr CC.IsLetter
|
|||
.29 bcs .99
|
||||
|
||||
|
||||
jsr CC.SYM.Free
|
||||
|
||||
|
||||
clv
|
||||
clc
|
||||
|
|
|
@ -204,8 +204,21 @@ CC.EXP.CheckGetSymType
|
|||
clc
|
||||
rts
|
||||
|
||||
.1 >LDYA ZPPtr2
|
||||
jmp CC.SYM.CheckTypeYA
|
||||
.1 lda ZPPtr2
|
||||
cmp (ZPLookupSymPtr) #SYM.T
|
||||
bne .9
|
||||
|
||||
lda ZPPtr2+1
|
||||
ldy #SYM.Q
|
||||
cmp (ZPLookupSymPtr),y
|
||||
bne .9
|
||||
|
||||
clc
|
||||
rts
|
||||
|
||||
.9 lda #E.TMISMATCH
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CC.EXP.Cast jsr CC.TYPE.Decl
|
||||
bcs .99
|
||||
|
@ -410,7 +423,7 @@ CC.EXP.Get >LDYA L.CC.AOPS
|
|||
lda ZPPtr2 target T
|
||||
beq .3
|
||||
|
||||
lda (ZPLookupSymPtr) SYM.T
|
||||
lda (ZPLookupSymPtr) SYM.T
|
||||
cmp #SYM.T.VOID
|
||||
beq .2
|
||||
|
||||
|
@ -423,7 +436,7 @@ CC.EXP.Get >LDYA L.CC.AOPS
|
|||
cmp (ZPLookupSymPtr),y
|
||||
bne .9
|
||||
|
||||
.3 lda (ZPLookupSymPtr) SYM.T
|
||||
.3 lda (ZPLookupSymPtr) SYM.T
|
||||
sta ZPPtr2 T
|
||||
pha
|
||||
ldy #SYM.Q
|
||||
|
@ -545,7 +558,7 @@ CC.EXP.PushDeref
|
|||
|
||||
lda #$85 STA zp
|
||||
jsr CODE.EmitByte
|
||||
lda #ZPPtr1+1
|
||||
lda #ZS.RT.Ptr1+1
|
||||
jsr CODE.EmitByte
|
||||
|
||||
ldy #SYM.Addr
|
||||
|
@ -554,7 +567,7 @@ CC.EXP.PushDeref
|
|||
|
||||
lda #$85 STA zp
|
||||
jsr CODE.EmitByte
|
||||
lda #ZPPtr1+1
|
||||
lda #ZS.RT.Ptr1+1
|
||||
jsr CODE.EmitByte
|
||||
|
||||
jsr CODE.Deref
|
||||
|
|
|
@ -6,11 +6,6 @@ CC.F.Decl stz LocalPtr
|
|||
jsr CC.PushTQ push T/Q for RETURN
|
||||
bcs .99
|
||||
|
||||
ldy #SYM.Q
|
||||
lda #SYM.Q.FUNC
|
||||
ora (ZPSymBufPtr),y
|
||||
sta (ZPSymBufPtr),y
|
||||
|
||||
ldx #$80 CPStmt.fDef state
|
||||
jsr CC.STMT.CPStmt
|
||||
bcs .99
|
||||
|
@ -37,15 +32,7 @@ CC.F.Decl stz LocalPtr
|
|||
jsr CC.IsLetter
|
||||
bcs .2
|
||||
|
||||
>LDYA ZPPtr2
|
||||
ldx #SYM.SC.AUTO
|
||||
jsr CC.SYM.New
|
||||
bcs .99
|
||||
|
||||
jsr CC.SYM.Store Store f() Args in Local scope
|
||||
bcs .99
|
||||
|
||||
jsr CC.SYM.Free
|
||||
jsr CC.F.NewArg
|
||||
bcs .99
|
||||
|
||||
jsr CC.GetCharNB
|
||||
|
@ -141,6 +128,29 @@ CC.F.DeclGetTQ lda (ZPLineBufPtr)
|
|||
|
||||
.8 rts
|
||||
*--------------------------------------
|
||||
CC.F.NewArg >LDYA.G CC.SymID
|
||||
>STYA.G CC.SymIDSave
|
||||
|
||||
>LEA.G CC.ArgBuf
|
||||
>STYA ZPSymBufPtr
|
||||
|
||||
>LDYA ZPPtr2
|
||||
ldx #SYM.SC.AUTO
|
||||
jsr CC.SYM.New
|
||||
bcs .9
|
||||
|
||||
jsr CC.SYM.StoreL Store f() Args in Local scope
|
||||
bcs .9
|
||||
|
||||
>LDA.G CC.hSymBuf
|
||||
>SYSCALL GetMemPtr
|
||||
>STYA ZPSymBufPtr
|
||||
|
||||
>LDYA.G CC.SymIDSave
|
||||
>STYA.G CC.SymID
|
||||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
CC.F.Def.END jsr CODE.Leave
|
||||
|
||||
jsr CC.Pop T
|
||||
|
@ -154,14 +164,24 @@ CC.F.Def.END jsr CODE.Leave
|
|||
rts
|
||||
*--------------------------------------
|
||||
CC.F.AddTQ pha
|
||||
tya
|
||||
ldy ZPSymSize
|
||||
phy
|
||||
|
||||
ldy #SYM.DefSize
|
||||
lda (ZPSymBufPtr),y
|
||||
pha
|
||||
|
||||
inc
|
||||
inc
|
||||
sta (ZPSymBufPtr),y
|
||||
|
||||
ply
|
||||
|
||||
pla
|
||||
sta (ZPSymBufPtr),y
|
||||
iny
|
||||
pla
|
||||
sta (ZPSymBufPtr),y
|
||||
iny
|
||||
sty ZPSymSize
|
||||
|
||||
rts
|
||||
*--------------------------------------
|
||||
* in : ZPSymPtr
|
||||
|
@ -182,7 +202,7 @@ CC.F.CallRetV sec
|
|||
phx
|
||||
|
||||
>STYA ZPPtr2
|
||||
>DEBUG
|
||||
|
||||
ror ZPPtr1+1 bRetV
|
||||
bpl .20 no return value on stack
|
||||
|
||||
|
@ -204,13 +224,13 @@ CC.F.CallRetV sec
|
|||
beq .1 no check required
|
||||
|
||||
cpy ZPPtr2
|
||||
bne .91
|
||||
bne .24
|
||||
|
||||
tax save full Q
|
||||
|
||||
and #$fC ignore SYM.Q.FUNC,SYM.Q.FASTCALL
|
||||
cmp ZPPtr2+1
|
||||
bne .91
|
||||
.24 bne .91
|
||||
|
||||
txa
|
||||
|
||||
|
@ -401,7 +421,12 @@ CC.F.Call3 ldy #SYM.Addr+1
|
|||
clc
|
||||
rts
|
||||
|
||||
.2 lda #$20 JSR abs
|
||||
.2 lda #$EA
|
||||
jsr CODE.EmitByte
|
||||
lda #$EA
|
||||
jsr CODE.EmitByte
|
||||
|
||||
lda #$20 JSR abs
|
||||
jsr CODE.TOABSYX Y=HI,X=LO
|
||||
clc
|
||||
rts
|
||||
|
@ -411,12 +436,12 @@ CC.F.Call3 ldy #SYM.Addr+1
|
|||
|
||||
lda #5 leave room for LDX #imm, JSR abs
|
||||
clc
|
||||
adc ZPCCConst
|
||||
sta ZPCCConst
|
||||
adc ZPCCCode
|
||||
sta ZPCCCode
|
||||
|
||||
bcc .90
|
||||
|
||||
inc ZPCCConst+1
|
||||
inc ZPCCCode+1
|
||||
|
||||
.90 clc
|
||||
rts
|
||||
|
|
|
@ -75,11 +75,11 @@ CC.KW.WHILE.END jsr CC.PopYA Get JMP false location
|
|||
|
||||
jsr CC.PopYA Get cont: address
|
||||
bcs .9
|
||||
|
||||
|
||||
phy
|
||||
tay HI byte
|
||||
plx
|
||||
|
||||
|
||||
lda #$4C JMP cont:
|
||||
jsr CODE.TOABSYX
|
||||
|
||||
|
@ -130,7 +130,7 @@ CC.KW.FOR jsr CC.GetCharNB
|
|||
bcs .9
|
||||
|
||||
jsr CC.KW.StackDiscard
|
||||
|
||||
|
||||
jsr CC.GetCharNB
|
||||
bcs .9
|
||||
|
||||
|
@ -248,7 +248,7 @@ CC.KW.RETURN ldy CStackPtr
|
|||
|
||||
.1 iny skip ; or }
|
||||
beq .9
|
||||
|
||||
|
||||
lda (ZPCCStack),y
|
||||
bmi .7 f()
|
||||
|
||||
|
@ -264,15 +264,15 @@ CC.KW.RETURN ldy CStackPtr
|
|||
|
||||
.7 iny skip bState
|
||||
iny skip Locals
|
||||
|
||||
|
||||
iny get SYM.T
|
||||
lda (ZPCCStack),y
|
||||
|
||||
|
||||
pha
|
||||
|
||||
iny get SYM.Q
|
||||
lda (ZPCCStack),y
|
||||
|
||||
|
||||
ply
|
||||
|
||||
jsr CC.EXP.Eval
|
||||
|
@ -281,9 +281,9 @@ CC.KW.RETURN ldy CStackPtr
|
|||
jsr CC.SYM.GetYASizeOfInAXC Y,A=T/Q
|
||||
tax X = sizeof
|
||||
jsr CODE.SetRetValue
|
||||
|
||||
|
||||
jsr CODE.Leave
|
||||
|
||||
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
|
@ -306,7 +306,7 @@ CC.KW.STRUCT >ENTER 4
|
|||
tya
|
||||
ldy #1
|
||||
sta (pStack),y
|
||||
|
||||
|
||||
jsr CC.SkipX
|
||||
|
||||
jsr CC.GetNextCharNB
|
||||
|
@ -340,13 +340,13 @@ CC.KW.BEGIN jsr CC.GetNextCharNB
|
|||
.7 >LDA.G CC.CmdSave
|
||||
jsr CC.Push
|
||||
bcs .99
|
||||
|
||||
|
||||
lda #';'
|
||||
jmp CC.Push
|
||||
|
||||
|
||||
.9 lda #E.CSYN
|
||||
sec
|
||||
.99 rts
|
||||
.99 rts
|
||||
*--------------------------------------
|
||||
* Input : Value on Stack, Y,A = Type/Qual
|
||||
* Output : CC = true, CS = false
|
||||
|
|
|
@ -1,42 +1,30 @@
|
|||
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
|
||||
>PUSHB.G CC.hScopes
|
||||
>PUSHW ZPPtr1 SymID
|
||||
>PUSHW pData
|
||||
|
||||
>SYSCALL SListGetByID
|
||||
bcs .8
|
||||
|
||||
|
||||
>STYA ZPPtr2 NextID
|
||||
|
||||
>PUSHB.G CC.hSymbols
|
||||
>PUSHB.G CC.hScopes
|
||||
>PUSHW ZPPtr1 SymID
|
||||
>PUSHW ZPSymBufPtr
|
||||
>PUSHWI $ffff All
|
||||
>PUSHWZ from Start
|
||||
>SYSCALL SListGetData
|
||||
bcs .9
|
||||
|
||||
>STYA ZPSymSize
|
||||
|
||||
ldy #SYM.Addr+1
|
||||
lda (ZPSymBufPtr),y
|
||||
|
@ -46,7 +34,7 @@ CC.Link >LDYA L.MSG.LINKING
|
|||
|
||||
jsr CC.Link.LIBC
|
||||
bcc .6
|
||||
|
||||
|
||||
jsr CC.Link.Dump
|
||||
lda #E.FUNDEF
|
||||
sec
|
||||
|
@ -54,7 +42,7 @@ CC.Link >LDYA L.MSG.LINKING
|
|||
|
||||
.6 >LDA.G bTrace
|
||||
bpl .7
|
||||
|
||||
|
||||
jsr CC.Link.Dump
|
||||
bcs .9
|
||||
|
||||
|
@ -63,13 +51,7 @@ CC.Link >LDYA L.MSG.LINKING
|
|||
|
||||
.8 clc
|
||||
|
||||
.9 php
|
||||
pha
|
||||
jsr CC.SYM.Free
|
||||
pla
|
||||
plp
|
||||
|
||||
rts
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
* Input : pData = Symbol
|
||||
*--------------------------------------
|
||||
|
@ -77,7 +59,7 @@ CC.Link.LIBC >LDYA L.CC.LIBC
|
|||
>STYA ZPLookupPtr
|
||||
|
||||
ldy #$ff
|
||||
|
||||
|
||||
.10 iny
|
||||
lda (pData),y
|
||||
bne .10
|
||||
|
@ -119,10 +101,13 @@ CC.Link.LIBC >LDYA L.CC.LIBC
|
|||
|
||||
plx
|
||||
|
||||
>PUSHB.G CC.hSymbols
|
||||
>PUSHB.G CC.hScopes
|
||||
>PUSHW ZPPtr1 SymID
|
||||
>PUSHW ZPSymBufPtr
|
||||
>PUSHW ZPSymSize
|
||||
>PUSHBI 0
|
||||
ldy #SYM.DefSize
|
||||
lda (ZPSymBufPtr),y
|
||||
>PUSHA
|
||||
>SYSCALL SListSetData
|
||||
rts
|
||||
|
||||
|
@ -141,8 +126,11 @@ CC.Link.LIBC >LDYA L.CC.LIBC
|
|||
rts
|
||||
*--------------------------------------
|
||||
CC.Link.Dump >PUSHW L.MSG.LINKING2
|
||||
>PUSHW pData
|
||||
|
||||
>PUSHW ZPPtr1 ID
|
||||
|
||||
>PUSHW pData Name
|
||||
|
||||
>PUSHB (ZPSymBufPtr) SYM.T
|
||||
|
||||
ldy #1
|
||||
|
@ -150,18 +138,21 @@ CC.Link.Dump >PUSHW L.MSG.LINKING2
|
|||
|
||||
iny
|
||||
>PUSHB (ZPSymBufPtr),y SYM.SC
|
||||
|
||||
|
||||
iny
|
||||
>PUSHB (ZPSymBufPtr),y SYM.DefSize
|
||||
|
||||
ldy #SYM.SizeOf+1
|
||||
>PUSHB (ZPSymBufPtr),y
|
||||
dey
|
||||
>PUSHB (ZPSymBufPtr),y
|
||||
|
||||
|
||||
ldy #SYM.Addr+1
|
||||
>PUSHB (ZPSymBufPtr),y
|
||||
dey
|
||||
>PUSHB (ZPSymBufPtr),y
|
||||
|
||||
>PUSHBI 9
|
||||
|
||||
>PUSHBI 12
|
||||
>SYSCALL PrintF
|
||||
rts
|
||||
*--------------------------------------
|
||||
|
|
207
BIN/CC.S.SYM.txt
207
BIN/CC.S.SYM.txt
|
@ -7,21 +7,47 @@ NEW
|
|||
CC.SYM.New >STYA ZPPtr2 T/Q
|
||||
stx ZPPtr3 SC
|
||||
|
||||
ldy ScopePtr
|
||||
bit bPass2
|
||||
bpl CC.SYM.New1
|
||||
|
||||
bit bLocalScope
|
||||
bmi CC.SYM.New1
|
||||
|
||||
>PUSHB.G CC.hScopes Global Scope
|
||||
>PUSHW ZPLineBufPtr
|
||||
|
||||
>SYSCALL SListLookup
|
||||
bcs .9
|
||||
|
||||
>STYA.G CC.SymID Y,A = KeyID
|
||||
|
||||
jsr CC.SkipX X = KeyLen
|
||||
|
||||
>PUSHB.G CC.hScopes
|
||||
>PUSHW.G CC.SymID
|
||||
>PUSHW ZPSymBufPtr
|
||||
>PUSHWI 65535 all
|
||||
>PUSHWZ From Start
|
||||
>SYSCALL SListGetData
|
||||
bcs .9
|
||||
|
||||
jsr CC.GetCharNB
|
||||
cmp #'('
|
||||
bne .8
|
||||
|
||||
jmp CC.F.Decl
|
||||
|
||||
.8 clc
|
||||
.9 rts Y,A = SymSize
|
||||
*--------------------------------------
|
||||
CC.SYM.New1 ldy ScopeIdx
|
||||
lda (pData),y
|
||||
jsr CC.SYM.NewKey
|
||||
bcs .9
|
||||
|
||||
>STYA.G CC.SymID Y,A = KeyID
|
||||
stx ZPPtr3+1 X = KeyLen
|
||||
|
||||
>LDYAI 256
|
||||
>SYSCALL GetMem
|
||||
bcs .9
|
||||
|
||||
>STYA ZPSymBufPtr
|
||||
txa
|
||||
>STA.G CC.hSymBuf
|
||||
jsr CC.SkipX X = KeyLen
|
||||
|
||||
lda ZPPtr2
|
||||
sta (ZPSymBufPtr) #SYM.T
|
||||
|
@ -41,12 +67,10 @@ CC.SYM.New >STYA ZPPtr2 T/Q
|
|||
iny
|
||||
cpy #SYM.Def
|
||||
bne .1
|
||||
|
||||
sty ZPSymSize
|
||||
stz ZPSymSize+1
|
||||
|
||||
ldx ZPPtr3+1 Key Len
|
||||
jsr CC.SkipX
|
||||
tya
|
||||
ldy #SYM.DefSize
|
||||
sta (ZPSymBufPtr),y
|
||||
|
||||
jsr CC.GetCharNB
|
||||
bcs CC.SYM.SetAddr
|
||||
|
@ -54,6 +78,11 @@ CC.SYM.New >STYA ZPPtr2 T/Q
|
|||
cmp #'('
|
||||
bne CC.SYM.NewV
|
||||
|
||||
ldy #SYM.Q
|
||||
lda #SYM.Q.FUNC
|
||||
ora (ZPSymBufPtr),y
|
||||
sta (ZPSymBufPtr),y
|
||||
|
||||
jmp CC.F.Decl
|
||||
|
||||
.9 rts
|
||||
|
@ -187,68 +216,57 @@ CC.SYM.SetAddrL jsr CC.SYM.GetSymSizeOfInAXC
|
|||
*--------------------------------------
|
||||
CC.SYM.NewKey >PUSHA
|
||||
>PUSHW ZPLineBufPtr
|
||||
>SYSCALL SListNewKey
|
||||
bcs .9
|
||||
|
||||
|
||||
|
||||
.9 rts Y,A = KeyID, X = KeyLen
|
||||
*--------------------------------------
|
||||
CC.SYM.StoreF >LDA.G CC.hScopes
|
||||
|
||||
bit bPass2
|
||||
bpl .1
|
||||
bpl CC.SYM.Store.1
|
||||
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
CC.SYM.Store bit bPass2
|
||||
bpl CC.SYM.StoreL Store Global & Local at Pass 1
|
||||
|
||||
txa
|
||||
bne .1
|
||||
|
||||
>SYSCALL SListLookup
|
||||
|
||||
* clc
|
||||
bit bLocalScope Store Local at Pass 2
|
||||
bmi CC.SYM.StoreL
|
||||
|
||||
clc
|
||||
rts
|
||||
|
||||
.1 >SYSCALL SListNewKey
|
||||
|
||||
rts Y,A = KeyID, X = KeyLen
|
||||
*--------------------------------------
|
||||
CC.SYM.Store ldy ScopePtr
|
||||
CC.SYM.StoreL ldy ScopeIdx
|
||||
lda (pData),y
|
||||
>PUSHA
|
||||
|
||||
CC.SYM.Store.1 >PUSHA
|
||||
>PUSHW.G CC.SymID
|
||||
>PUSHW ZPSymBufPtr
|
||||
>PUSHW ZPSymSize
|
||||
>PUSHBI 0
|
||||
ldy #SYM.DefSize
|
||||
lda (ZPSymBufPtr),y
|
||||
>PUSHA
|
||||
|
||||
bit bPass2
|
||||
bpl .1
|
||||
|
||||
bit ScopenCnt
|
||||
bmi .1
|
||||
|
||||
>SYSCALL SListSetData
|
||||
rts
|
||||
|
||||
.1 >SYSCALL SListAddData
|
||||
>SYSCALL SListAddData
|
||||
|
||||
rts
|
||||
*--------------------------------------
|
||||
CC.SYM.Free >LDA.G CC.hSymBuf
|
||||
beq .8
|
||||
|
||||
>SYSCALL FreeMem
|
||||
bcs .99
|
||||
|
||||
>STZ.G CC.hSymBuf
|
||||
|
||||
.99 rts
|
||||
|
||||
.8 clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
CC.SYM.NewScope ldy ScopePtr
|
||||
cpy #CC.hSymbols+SCOPE.MAX
|
||||
CC.SYM.NewScope ldy ScopeIdx
|
||||
cpy #CC.hScopes+SCOPE.MAX
|
||||
bcs .9
|
||||
|
||||
>SYSCALL SListNew
|
||||
bcs .99
|
||||
|
||||
inc ScopePtr
|
||||
ldy ScopePtr
|
||||
inc ScopeIdx
|
||||
ldy ScopeIdx
|
||||
sta (pData),y
|
||||
|
||||
dec ScopenCnt
|
||||
dec bLocalScope
|
||||
clc
|
||||
rts
|
||||
|
||||
|
@ -257,19 +275,23 @@ CC.SYM.NewScope ldy ScopePtr
|
|||
.99 rts
|
||||
*--------------------------------------
|
||||
CC.SYM.FreeScope
|
||||
ldy ScopePtr
|
||||
cpy #CC.hSymbols
|
||||
ldy ScopeIdx
|
||||
cpy #CC.hScopes
|
||||
beq *
|
||||
|
||||
lda (pData),y
|
||||
>SYSCALL SListFree
|
||||
|
||||
dec ScopePtr
|
||||
inc ScopenCnt
|
||||
dec ScopeIdx
|
||||
inc bLocalScope
|
||||
|
||||
rts
|
||||
rts
|
||||
*--------------------------------------
|
||||
CC.SYM.Lookup >PUSHB ScopePtr
|
||||
CC.SYM.Lookup >LDA.G CC.LookupIdx
|
||||
cmp #CC.LookupIdx+LOOKUP.MAX
|
||||
beq .99
|
||||
|
||||
>PUSHB ScopeIdx
|
||||
|
||||
.1 tay
|
||||
lda (pData),y
|
||||
|
@ -277,7 +299,7 @@ CC.SYM.Lookup >PUSHB ScopePtr
|
|||
bcc .8
|
||||
|
||||
lda (pstack)
|
||||
cmp #CC.hSymbols
|
||||
cmp #CC.hScopes
|
||||
beq .9
|
||||
|
||||
dec
|
||||
|
@ -291,22 +313,59 @@ CC.SYM.Lookup >PUSHB ScopePtr
|
|||
rts
|
||||
|
||||
.8 inc pStack
|
||||
|
||||
|
||||
>STYA.G CC.LookupSymSize
|
||||
|
||||
>INC.G CC.LookupIdx
|
||||
tay
|
||||
|
||||
txa
|
||||
sta (pdata),y
|
||||
|
||||
>SYSCALL GetMemPtr
|
||||
>STYA ZPLookupSymPtr
|
||||
|
||||
* clc
|
||||
rts
|
||||
|
||||
.99 lda #E.OOH
|
||||
* sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CC.SYM.LookupFree
|
||||
>LDA.G CC.LookupIdx
|
||||
cmp #CC.LookupIdx
|
||||
beq .9
|
||||
|
||||
tay
|
||||
lda (pdata),y
|
||||
>SYSCALL FreeMem
|
||||
bcs .99
|
||||
|
||||
>DEC.G CC.LookupIdx
|
||||
cmp #CC.LookupIdx
|
||||
beq .8
|
||||
|
||||
tay
|
||||
lda (pdata),y
|
||||
>SYSCALL GetMemPtr
|
||||
>STYA ZPLookupSymPtr
|
||||
|
||||
.8 clc
|
||||
rts
|
||||
|
||||
.9 lda E.INVH
|
||||
* sec
|
||||
|
||||
.99 rts
|
||||
*--------------------------------------
|
||||
CC.SYM.LookupFree
|
||||
>LDA.G CC.hLookupSymBuf
|
||||
>SYSCALL FreeMem
|
||||
bcs .99
|
||||
|
||||
>STZ.G CC.hLookupSymBuf
|
||||
CC.SYM.LookupFreeAll
|
||||
|
||||
.1 jsr CC.SYM.LookupFree
|
||||
bcc .1
|
||||
|
||||
clc
|
||||
rts
|
||||
|
||||
|
||||
.99 >DEBUG
|
||||
rts
|
||||
*--------------------------------------
|
||||
* Y,A = value T/Q
|
||||
*--------------------------------------
|
||||
|
|
283
BIN/CC.S.txt
283
BIN/CC.S.txt
|
@ -12,6 +12,7 @@ NEW
|
|||
*--------------------------------------
|
||||
FILES.MAX .EQ 4
|
||||
SCOPE.MAX .EQ 16
|
||||
LOOKUP.MAX .EQ 16
|
||||
*--------------------------------------
|
||||
SYM.T .EQ 0
|
||||
SYM.T.VOID .EQ 1
|
||||
|
@ -42,10 +43,10 @@ SYM.SC.EXTERN .EQ 6
|
|||
SYM.SC.TYPEDEF .EQ 8
|
||||
SYM.SC.DEFINE .EQ 10
|
||||
SYM.SC.TAG .EQ 12
|
||||
*
|
||||
SYM.DefSize .EQ 3
|
||||
SYM.SizeOf .EQ 4
|
||||
SYM.Addr .EQ 6
|
||||
SYM.Def .EQ 8
|
||||
SYM.Def .EQ 8 Funtions : fTQ,a1TQ,a2TQ....
|
||||
*
|
||||
SYM .EQ 10
|
||||
*--------------------------------------
|
||||
|
@ -79,13 +80,13 @@ ZPLookupPtr .BS 2
|
|||
CStackPtr .BS 1
|
||||
LocalPtr .BS 1
|
||||
|
||||
ScopePtr .BS 1
|
||||
ScopenCnt .BS 1
|
||||
ScopeIdx .BS 1
|
||||
bLocalScope .BS 1
|
||||
|
||||
ZPSymBufPtr .BS 2
|
||||
|
||||
* .BS 1
|
||||
* .BS 1
|
||||
ZPSymSize .BS 2
|
||||
ZPSymBufPtr .BS 2
|
||||
|
||||
ZPLookupSymPtr .BS 2
|
||||
|
||||
|
@ -114,7 +115,7 @@ CS.START cld
|
|||
*--------------------------------------
|
||||
L.MSG.GREETINGS .DA MSG.GREETINGS
|
||||
L.MSG.USAGE .DA MSG.USAGE
|
||||
L.MSG.COMPILING .DA MSG.COMPILING
|
||||
L.MSG.READING .DA MSG.READING
|
||||
L.MSG.LINKING .DA MSG.LINKING
|
||||
L.MSG.LINKING2 .DA MSG.LINKING2
|
||||
L.MSG.GENERATING .DA MSG.GENERATING
|
||||
|
@ -257,7 +258,7 @@ CS.RUN >PUSHW L.MSG.GREETINGS
|
|||
jsr CS.RUN.ARGS
|
||||
bcs CS.INIT.RTS
|
||||
|
||||
jsr CC.Init
|
||||
jsr CC.CORE.Init
|
||||
bcs CS.INIT.RTS
|
||||
|
||||
jsr CODE.Init
|
||||
|
@ -377,7 +378,7 @@ CS.RUN.FOpen1st >LDA.G CC.InFileArg
|
|||
CS.RUN.FOpen phy
|
||||
pha
|
||||
|
||||
>PUSHW L.MSG.COMPILING
|
||||
>PUSHW L.MSG.READING
|
||||
pla
|
||||
pha
|
||||
>PUSHYA
|
||||
|
@ -499,7 +500,7 @@ CS.DOEVENT sec
|
|||
rts
|
||||
*--------------------------------------
|
||||
CS.QUIT jsr CODE.Quit
|
||||
jsr CC.Quit
|
||||
jsr CC.CORE.Quit
|
||||
|
||||
>LDA.G hLineBuf
|
||||
beq .8
|
||||
|
@ -561,10 +562,10 @@ PrintDebugMsg >PUSHW L.MSG.DEBUG
|
|||
|
||||
.1 >PUSHYA
|
||||
|
||||
lda ScopePtr
|
||||
lda ScopeIdx
|
||||
sec
|
||||
sbc #CC.hSymbols
|
||||
>PUSHA
|
||||
sbc #CC.hScopes
|
||||
>PUSHA
|
||||
|
||||
>PUSHBI 15
|
||||
>SYSCALL PrintF
|
||||
|
@ -642,7 +643,7 @@ PrintSummary lda ZPCCCode+1
|
|||
>SYSCALL PrintF
|
||||
rts
|
||||
*--------------------------------------
|
||||
CheckMain >PUSHB.G CC.hSymbols
|
||||
CheckMain >PUSHB.G CC.hScopes
|
||||
|
||||
>PUSHW L.CC.MAIN
|
||||
>SYSCALL SListLookup
|
||||
|
@ -650,42 +651,35 @@ CheckMain >PUSHB.G CC.hSymbols
|
|||
|
||||
>STYA ZPPtr1 SymID
|
||||
|
||||
>PUSHB.G CC.hSymbols
|
||||
|
||||
>PUSHB.G CC.hScopes
|
||||
>PUSHW ZPPtr1 SymID
|
||||
>PUSHWZ allocate
|
||||
>PUSHW ZPSymBufPtr
|
||||
>PUSHWI 65535 all
|
||||
>PUSHWZ From Start
|
||||
>SYSCALL SListGetData
|
||||
.9 bcs .99
|
||||
|
||||
>STYA ZPPtr2
|
||||
bcs .99
|
||||
|
||||
ldy #SYM.Addr
|
||||
lda (ZPPtr2),y
|
||||
lda (ZPSymBufPtr),y
|
||||
iny
|
||||
ora (ZPPtr2),y
|
||||
beq .90
|
||||
ora (ZPSymBufPtr),y
|
||||
beq .9
|
||||
|
||||
lda (ZPPtr2),y
|
||||
lda (ZPSymBufPtr),y
|
||||
sta PCC.FH+PCC.FH.MAIN+1
|
||||
dey
|
||||
lda (ZPPtr2),y
|
||||
lda (ZPSymBufPtr),y
|
||||
sta PCC.FH+PCC.FH.MAIN
|
||||
|
||||
txa
|
||||
>SYSCALL FreeMem
|
||||
* clc
|
||||
|
||||
rts
|
||||
|
||||
.90 txa
|
||||
>SYSCALL FreeMem
|
||||
|
||||
.99 >LDYA L.MSG.NOMAIN
|
||||
.9 >LDYA L.MSG.NOMAIN
|
||||
>SYSCALL puts
|
||||
lda #E.CSYN
|
||||
sec
|
||||
rts
|
||||
.99 rts
|
||||
*--------------------------------------
|
||||
.INB usr/src/bin/cc.s.code
|
||||
.INB usr/src/bin/cc.s.core
|
||||
|
@ -709,12 +703,12 @@ 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.READING .AZ "*** Reading file: %s\r\n"
|
||||
MSG.LINKING .AZ "*** Linking..."
|
||||
MSG.LINKING2 .AZ "*** %18s T=%h, Q=%b, SC=%h, SizeOf=%H, @=%H\r\n"
|
||||
MSG.LINKING2 .AZ "*** %H:%18s T/Q=%h/%h, SC=%h, Def=%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"
|
||||
.AZ " LSP=%h, CSP=%H:%h>%h:%h, ScopeIdx=%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"
|
||||
|
@ -727,6 +721,102 @@ ENV.LIB .AZ "LIB"
|
|||
OptionList .AS "DdTt"
|
||||
OptionVars .DA #bDebug,#bDebug,#bTrace,#bTrace
|
||||
*--------------------------------------
|
||||
* PCC = Pre Compiled Code
|
||||
*--------------------------------------
|
||||
ZS.RT.Ptr1 .EQ ZPBIN
|
||||
*--------------------------------------
|
||||
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 #2 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
|
||||
*--------------------------------------
|
||||
PCC.DEBUG >DEBUG
|
||||
PCC.DEBUG.L .EQ *-PCC.DEBUG
|
||||
*--------------------------------------
|
||||
|
@ -858,115 +948,15 @@ PCC.PushFromPtr.L .EQ *-PCC.PushFromPtr
|
|||
*--------------------------------------
|
||||
PCC.PushConstPAX
|
||||
clc
|
||||
adc PCC.FH.IDATA
|
||||
adc PCC.FH.2000+PCC.FH.IDATA
|
||||
tay
|
||||
txa
|
||||
adc PCC.FH.IDATA+1
|
||||
adc PCC.FH.2000+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
|
||||
|
@ -1372,6 +1362,10 @@ PathBuf .BS MLI.MAXPATH+1
|
|||
bDebug .BS 1
|
||||
bTrace .BS 1
|
||||
|
||||
CC.InFileArg .BS 1
|
||||
CC.OutFileArg .BS 1
|
||||
CC.hOutFile .BS 1
|
||||
|
||||
hFilePtr .BS 1
|
||||
hFiles .BS FILES.MAX
|
||||
|
||||
|
@ -1392,18 +1386,17 @@ CC.SaveDefine .BS 2
|
|||
CC.hTags .BS 1
|
||||
CC.hStack .BS 1
|
||||
|
||||
CC.hSymbols .BS SCOPE.MAX+1 1 Global+ MAX locals
|
||||
CC.hScopes .BS 1+SCOPE.MAX 1 Global+ MAX locals
|
||||
*--------------------------------------
|
||||
CC.SymID .BS 2
|
||||
CC.hSymBuf .BS 1
|
||||
CC.SymID .BS 2
|
||||
CC.SymIDSave .BS 2
|
||||
CC.ArgBuf .BS SYM
|
||||
*--------------------------------------
|
||||
CC.hLookupSymBuf .BS 1
|
||||
CC.LookupSymSize .BS 2
|
||||
CC.LookupSymPtr .BS 1
|
||||
*--------------------------------------
|
||||
CC.InFileArg .BS 1
|
||||
CC.OutFileArg .BS 1
|
||||
CC.hOutFile .BS 1
|
||||
CC.LookupSymPtr .BS 2
|
||||
CC.LookupIdx .BS 1
|
||||
CC.hLookupBufs .BS LOOKUP.MAX
|
||||
|
||||
DS.END .ED
|
||||
*--------------------------------------
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
NEW
|
||||
AUTO 3,1
|
||||
*--------------------------------------
|
||||
IO.D2.SeekTimeR .EQ 45 LIBBLKDEV Recalibration
|
||||
IO.D2.SeekTimeR .EQ 42 LIBBLKDEV Recalibration
|
||||
IO.D2.SeekTimeF .EQ 56 LIBBLKDEV Track Formatter
|
||||
IO.D2.SeekTimeB .EQ 56 LIBBLKDEV Boot Block
|
||||
IO.D2.SeekTimeP .EQ 28 ProDOS.FX initial
|
||||
|
|
|
@ -24,14 +24,14 @@ D2.Recalibrate >PULLB D2.DrvSlt
|
|||
jsr D2.CheckDiskII
|
||||
bcs .9
|
||||
|
||||
lda #168
|
||||
|
||||
ldy D2.Slotn0
|
||||
lda IO.D2.Ph0On,y
|
||||
|
||||
lda #IO.D2.SeekTimeR
|
||||
jsr D2.Wait100usecA
|
||||
|
||||
lda #168 41 x 4 Qtracks
|
||||
|
||||
.1 dec
|
||||
dec
|
||||
|
||||
|
@ -169,10 +169,11 @@ D2.MoveHead.SEI lda D2.CurrentQTrack
|
|||
bcc .10
|
||||
|
||||
lda IO.D2.Ph0Off,x
|
||||
|
||||
clc
|
||||
|
||||
.10 lda IO.D2.Ph0Off,y
|
||||
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
D2.SeekPhOnY and #6
|
||||
|
|
|
@ -399,32 +399,35 @@ XRW.Write bit IO.D2.ReadProt,x (4) PREWRITE MODE
|
|||
|
||||
lda #$FF (2)
|
||||
|
||||
* nop (2)
|
||||
nop (2)
|
||||
nop (2)
|
||||
|
||||
sta IO.D2.WriteMode,x (5) goto write mode
|
||||
ora IO.D2.WShift,x (4)
|
||||
|
||||
nop (2)
|
||||
|
||||
ldy nbuf2 (4)
|
||||
sty pcl (3)
|
||||
|
||||
ldy #5 (2)
|
||||
nop (2)
|
||||
|
||||
.1 pha (3) exact timing.
|
||||
pla (4) exact timing.
|
||||
jsr wnibl7 (13,9,6) write sync.
|
||||
jsr wnibl7 (18..10) write sync.
|
||||
dey (2)
|
||||
bne .1 (3) must not cross page !
|
||||
|
||||
nop (2)
|
||||
nop (2)
|
||||
|
||||
lda #$D5 (2) 1st data mark
|
||||
jsr wnibl9 (15,9,6)
|
||||
jsr wnibl9 (20..10)
|
||||
|
||||
lda #$AA (2) 2nd data mark
|
||||
jsr wnibl9 (15,9,6)
|
||||
jsr wnibl9 (20..10)
|
||||
|
||||
lda #$AD (2) 3rd data mark
|
||||
jsr wnibl9 (15,9,6)
|
||||
jsr wnibl9 (20..10)
|
||||
tya (2) zero checksum
|
||||
|
||||
ldy #$56 (2) nbuf2 index
|
||||
|
@ -527,7 +530,7 @@ wrefd5 ldx #$60 (2) restore slot. warning: modified by prenib
|
|||
.1 clc (2)
|
||||
|
||||
lda XRW.EndMark,y (4) DE AA EB
|
||||
jsr wnibl (15,6) write it
|
||||
jsr wnibl (11..10) write it
|
||||
dey (2)
|
||||
bpl .1 (3) if not.
|
||||
|
||||
|
@ -535,7 +538,7 @@ wrefd5 ldx #$60 (2) restore slot. warning: modified by prenib
|
|||
.2 nop (2)
|
||||
|
||||
tya (2) Y = $FF from DEY BMI
|
||||
jsr wnibl (6+9,6) write turn off byte.
|
||||
jsr wnibl (11..10) write turn off byte.
|
||||
|
||||
* jsr XRW.Write.RTS (12)
|
||||
* jsr XRW.Write.RTS (12)
|
||||
|
@ -839,10 +842,10 @@ XRW.SeekYA sta XRW.D2Trk-1,x will be current track at the end
|
|||
|
||||
bcc .10
|
||||
|
||||
clc Exit wit CC (recalibrate)
|
||||
|
||||
lda IO.D2.Ph0Off,x
|
||||
|
||||
|
||||
clc Exit wit CC (recalibrate)
|
||||
|
||||
.10 lda IO.D2.Ph0Off,y
|
||||
|
||||
rts
|
||||
|
|
Loading…
Reference in New Issue