Fixes for Disk ][ recalibrate code

This commit is contained in:
burniouf 2022-06-22 08:26:44 +02:00
parent 8b82b95e6a
commit 3d98f90fb4
17 changed files with 446 additions and 368 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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