Kernel 0.9.1 : ASM ...

This commit is contained in:
Rémy GIBERT 2018-01-29 07:41:05 +00:00
parent 25071e2798
commit 3dc0e991f5
11 changed files with 95 additions and 90 deletions

Binary file not shown.

Binary file not shown.

View File

@ -322,8 +322,7 @@ DIR.MA jsr SRC.GetNextCharNB
clc clc
rts rts
.8 ldy #ASM.PASS If Pass#2, ignore .8 >LDA.G ASM.PASS If Pass#2, ignore
lda (pData),y
bne .1 bne .1

View File

@ -90,11 +90,13 @@ EXP.Eval.Next1 cmp #'.' Local Label?
bne .43 bne .43
jsr SRC.GetNextChar jsr SRC.GetNextChar
bcs EXP.EvalExitSYN bcs EXP.EvalExitSYN
jsr EXP.SetAccA jsr EXP.SetAccA
jsr SRC.GetNextChar jsr SRC.GetNextChar
bcs EXP.EvalOperator bcs EXP.EvalOperator
cmp #''' cmp #'''
bne EXP.EvalExitSYN bne EXP.EvalExitSYN
jsr SRC.GetNextChar
bra EXP.EvalOperator bra EXP.EvalOperator
.43 cmp '"' .43 cmp '"'
@ -107,13 +109,14 @@ EXP.Eval.Next1 cmp #'.' Local Label?
bcs EXP.EvalOperator bcs EXP.EvalOperator
cmp #'"' cmp #'"'
bne EXP.EvalExitSYN bne EXP.EvalExitSYN
jsr SRC.GetNextChar
bra EXP.EvalOperator bra EXP.EvalOperator
.42 jsr SRC.IsLetter Symbol ? .42 jsr SRC.IsLetter Symbol ?
bcs EXP.EvalExitSYN bcs EXP.EvalExitSYN
jsr EXP.GetSymbol jsr EXP.GetSymbol
bcs EXP.EvalExitRTS bcs EXP.EvalExitUND
bra EXP.EvalOperator bra EXP.EvalOperator
EXP.EvalExitOK clc EXP.EvalExitOK clc
@ -182,45 +185,14 @@ EXP.SetAccA sta SRC.ACC
stz SRC.ACC+3 stz SRC.ACC+3
rts rts
*--------------------------------------- *---------------------------------------
EXP.GetSymbol >PUSHB.G SYM.hGlobals EXP.GetSymbol jsr SYM.LookupGlobal
>PUSHW ZPLinePtr bcc .9
>PUSHEA.G SYM.Global
>SYSCALL SListLookup .2 >LDA.G ASM.PASS pass#2?
bcs .2
adc ZPLinePtr
sta ZPLinePtr
bcc .1
inc ZPLinePtr+1
.1 clc
rts
.2 ldy #ASM.PASS
lda (pData),y pass#2?
bne .99 yes, undefined symbol bne .99 yes, undefined symbol
>PUSHB.G SYM.hGlobals lda #0 Add Pending....
>PUSHW ZPLinePtr jsr SYM.AddGlobal
>PUSHEA.G SYM.Global
lda #6
>STA.G SYM.Global+SYM.LEN
lda #0
>STA.G SYM.Global+SYM.F
>SYSCALL SListAdd
bcs .9
adc ZPLinePtr
sta ZPLinePtr
bcc .3
inc ZPLinePtr+1
.3 clc .3 clc
rts rts
@ -231,8 +203,7 @@ EXP.GetSymbol >PUSHB.G SYM.hGlobals
EXP.Compute dec EXP.Compute dec
asl asl
tax tax
* ldy #ASM.PASS * >LDA.G ASM.PASS pass#2?
* lda (pData),y pass#2?
* beq .8 * beq .8
jmp (J.EXP.OP,x) jmp (J.EXP.OP,x)
.8 clc .8 clc

35
BIN/ASM.S.MAC.txt Normal file
View File

@ -0,0 +1,35 @@
NEW
PREFIX /A2OSX.BUILD
AUTO 4,1
*---------------------------------------
MAC.Init >SYSCALL SListNew
bcs .9
>STA.G MAC.hMacros
>LDYAI 256
>SYSCALL GetMem.YA
bcs .9
>STYA ZPMacroBuf
txa
>STA.G MAC.hBuf
.9 rts
*---------------------------------------
MAC.Quit >LDA.G MAC.hBuf
beq .1
>SYSCALL FreeMem.A
.1 >LDA.G MAC.hMacros
beq .8
>SYSCALL SListFree.A
.8 clc
rts
*---------------------------------------
MAN
SAVE /A2OSX.BUILD/BIN/DEV/ASM.S.MAC
LOAD /A2OSX.BUILD/BIN/DEV/ASM.S
ASM

View File

@ -2,9 +2,7 @@ NEW
PREFIX /A2OSX.BUILD PREFIX /A2OSX.BUILD
AUTO 4,1 AUTO 4,1
*--------------------------------------- *---------------------------------------
SRC.PrintLine bra .8 SRC.PrintLine >LDA.G ASM.MACRO.ON
>LDA.G ASM.MACRO.ON
bpl .1 bpl .1
>LDA.G ASM.LI.CON >LDA.G ASM.LI.CON
@ -71,7 +69,7 @@ SRC.ParseLine lda #0
beq SRC.ParseLine.DirOp beq SRC.ParseLine.DirOp
cmp #'.' local symbol? cmp #'.' local symbol?
bne .2 bne .1
jsr SRC.GetNextChar jsr SRC.GetNextChar
bcs SRC.ParseLine.InvLbl bcs SRC.ParseLine.InvLbl
@ -86,27 +84,39 @@ SRC.ParseLine lda #0
beq SRC.ParseLine.InvLbl .0 is not allowed beq SRC.ParseLine.InvLbl .0 is not allowed
jsr SYM.AddLocalPC jsr SYM.AddLocalPC
bcs .9
bra .7 bra SRC.ParseLine.DirOp
.8 clc .8 clc
rts .9 rts
.2 lda #$ff .1 lda #$ff
>STA.G SYM.bGlobal >STA.G SYM.bGlobal
>LDA.G ASM.PASS >LDA.G ASM.PASS
beq .6 bne .3
jsr SYM.LookupGlobal jsr SYM.AddGlobalPC Pass #1; try to add global...
bcs SRC.ParseLine.Undef bcc SRC.ParseLine.DirOp yes!!! go scan dir/op
* jsr SYM.UpdateGlobal
jsr SYM.LookupGlobal already defined...get it
>LDA.G SYM.Lookup+SYM.F
bit #SYM.F.RW
bne .2 R/W, always update...
bit #SYM.F.RESOLVED
bne SRC.ParseLine.Redef
.2 jsr SYM.UpdateGlobal
bra SRC.ParseLine.DirOp bra SRC.ParseLine.DirOp
.6 jsr SYM.AddGlobalPC .3 jsr SYM.LookupGlobal Pass #2: shoould be already defined...
bcs SRC.ParseLine.Undef
.7 bcs SRC.ParseLine.Redef jsr SYM.UpdateGlobal
*---------------------------------------
SRC.ParseLine.DirOp jsr SRC.GetNextCharNB Scan for an Opcode... SRC.ParseLine.DirOp jsr SRC.GetNextCharNB Scan for an Opcode...
bcs SRC.ParseLine.Ok bcs SRC.ParseLine.Ok
@ -123,7 +133,7 @@ SRC.ParseLine.DirOp jsr SRC.GetNextCharNB Scan for an Opcode...
.5 cmp #'>' .5 cmp #'>'
bne .6 bne .6
jsr SRC.ParseLine.Exec.Macro jsr SRC.ParseLine.Macro
bcs SRC.ParseLine.Err bcs SRC.ParseLine.Err
bra SRC.ParseLine.Ok bra SRC.ParseLine.Ok
@ -157,11 +167,13 @@ SRC.ParseLine.Dir >LDYA L.T.DIRECTIVES
jmp (J.DIRECTIVES,x) jmp (J.DIRECTIVES,x)
*--------------------------------------- *---------------------------------------
SRC.ParseLine.Exec.Macro SRC.ParseLine.Macro >LDA.G ASM.PASS
clc bne .1
rts
*---------------------------------------
SRC.ParseLine.Add.Macro
.1
clc clc
rts rts
*--------------------------------------- *---------------------------------------

View File

@ -38,24 +38,10 @@ SYM.Init >SYSCALL SListNew
>STYA ZPLocalBuf >STYA ZPLocalBuf
txa txa
>STA.G SYM.hLocalBuf >STA.G SYM.hLocalBuf
>LDYAI 256
>SYSCALL GetMem.YA
bcs .9
>STYA ZPMacroBuf
txa
>STA.G MAC.hBuf
.9 rts .9 rts
*--------------------------------------- *---------------------------------------
SYM.Quit >LDA.G MAC.hBuf SYM.Quit >LDA.G SYM.hLocalBuf
beq .1
>SYSCALL FreeMem.A
.1 >LDA.G SYM.hLocalBuf
beq .2 beq .2
>SYSCALL FreeMem.A >SYSCALL FreeMem.A
@ -64,7 +50,6 @@ SYM.Quit >LDA.G MAC.hBuf
beq .8 beq .8
>SYSCALL SListFree.A >SYSCALL SListFree.A
.8 clc .8 clc
rts rts
*--------------------------------------- *---------------------------------------
@ -128,9 +113,10 @@ SYM.AddGlobalPC ldx #4
dey dey
dex dex
bne .2 bne .2
lda #SYM.F.RESOLVED
*--------------------------------------- *---------------------------------------
SYM.AddGlobal lda #SYM.F.RESOLVED SYM.AddGlobal >STA.G SYM.Global+SYM.F
>STA.G SYM.Global+SYM.F
lda #5 F+DWORD lda #5 F+DWORD
>STA.G SYM.Global+SYM.LEN >STA.G SYM.Global+SYM.LEN
@ -159,9 +145,7 @@ SYM.AddGlobal lda #SYM.F.RESOLVED
*--------------------------------------- *---------------------------------------
SYM.LookupGlobal >PUSHB.G SYM.hGlobals SYM.LookupGlobal >PUSHB.G SYM.hGlobals
>PUSHW ZPLinePtr >PUSHW ZPLinePtr
>PUSHEA.G SYM.Lookup >PUSHEA.G SYM.Lookup
>SYSCALL SListLookup >SYSCALL SListLookup
bcs .9 bcs .9
@ -176,8 +160,7 @@ SYM.LookupGlobal >PUSHB.G SYM.hGlobals
>STA.G SYM.ID+1 >STA.G SYM.ID+1
txa txa
>STA.G SYM.ID >STA.G SYM.ID
.9 rts .9 rts
*--------------------------------------- *---------------------------------------
SYM.UpdateGlobalAcc ldx #3 SYM.UpdateGlobalAcc ldx #3

View File

@ -169,6 +169,9 @@ CS.INIT ldy #S.PS.ARGC
jsr SYM.Init jsr SYM.Init
bcs .9 bcs .9
jsr MAC.Init
bcs .9
jsr DIR.Init jsr DIR.Init
>LDYAI 256 >LDYAI 256
@ -284,6 +287,7 @@ CS.DOEVENT sec
CS.QUIT jsr FIO.FileClose CS.QUIT jsr FIO.FileClose
bne CS.QUIT bne CS.QUIT
jsr MAC.Quit
jsr SYM.Quit jsr SYM.Quit
>LDA.G ASM.T.hMem >LDA.G ASM.T.hMem
@ -312,6 +316,7 @@ CS.QUIT jsr FIO.FileClose
.INB /A2OSX.BUILD/BIN/DEV/ASM.S.DIR .INB /A2OSX.BUILD/BIN/DEV/ASM.S.DIR
.INB /A2OSX.BUILD/BIN/DEV/ASM.S.EXP .INB /A2OSX.BUILD/BIN/DEV/ASM.S.EXP
.INB /A2OSX.BUILD/BIN/DEV/ASM.S.FIO .INB /A2OSX.BUILD/BIN/DEV/ASM.S.FIO
.INB /A2OSX.BUILD/BIN/DEV/ASM.S.MAC
.INB /A2OSX.BUILD/BIN/DEV/ASM.S.SRC .INB /A2OSX.BUILD/BIN/DEV/ASM.S.SRC
.INB /A2OSX.BUILD/BIN/DEV/ASM.S.SYM .INB /A2OSX.BUILD/BIN/DEV/ASM.S.SYM
*--------------------------------------- *---------------------------------------
@ -431,9 +436,6 @@ ASM.LI.CON .BS 1
ASM.LI.XON .BS 1 ASM.LI.XON .BS 1
ASM.PC .BS 4 ASM.PC .BS 4
ASM.PC.PH .BS 4 ASM.PC.PH .BS 4
ASM.PC.GLABEL .BS 4
ASM.LOCAL.OFFSET .BS 1
ASM.LOCAL.INVALID .BS 1
SYM.hGlobals .BS 1 SYM.hGlobals .BS 1
SYM.bGlobal .BS 1 SYM.bGlobal .BS 1
@ -445,6 +447,7 @@ SYM.LocalIndex .BS 1
SYM.Lookup .BS 6 SYM.Lookup .BS 6
MAC.hMacros .BS 1
MAC.hBuf .BS 1 MAC.hBuf .BS 1
DS.END .ED DS.END .ED

View File

@ -2,7 +2,6 @@ NEW
PREFIX /A2OSX.BUILD PREFIX /A2OSX.BUILD
AUTO 4,1 AUTO 4,1
.LIST OFF .LIST OFF
.OP 65C02
*-------------------------------------- *--------------------------------------
S.CB.CMD .EQ 0 S.CB.CMD .EQ 0
S.CB.CMD.SETPIXEL .EQ 0 S.CB.CMD.SETPIXEL .EQ 0

View File

@ -496,6 +496,7 @@ K.NewStr.YA >STYA .1+1
* PUSHW = Data Ptr * PUSHW = Data Ptr
* ## Out: * ## Out:
* A = Key Length * A = Key Length
* X,Y = KeyID
*\-------------------------------------- *\--------------------------------------
K.SListAdd K.SListAdd
*/-------------------------------------- */--------------------------------------

View File

@ -59,7 +59,9 @@ SLIST.Add jsr SLIST.Search
clc clc
.9 rts .9 rts
.99 sec .99 ldx SLIST.ID
ldy SLIST.ID+1
sec
rts rts
*-------------------------------------- *--------------------------------------
SLIST.Lookup jsr SLIST.Search SLIST.Lookup jsr SLIST.Search