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
rts
.8 ldy #ASM.PASS If Pass#2, ignore
lda (pData),y
.8 >LDA.G ASM.PASS If Pass#2, ignore
bne .1

View File

@ -90,11 +90,13 @@ EXP.Eval.Next1 cmp #'.' Local Label?
bne .43
jsr SRC.GetNextChar
bcs EXP.EvalExitSYN
jsr EXP.SetAccA
jsr SRC.GetNextChar
bcs EXP.EvalOperator
cmp #'''
bne EXP.EvalExitSYN
jsr SRC.GetNextChar
bra EXP.EvalOperator
.43 cmp '"'
@ -107,13 +109,14 @@ EXP.Eval.Next1 cmp #'.' Local Label?
bcs EXP.EvalOperator
cmp #'"'
bne EXP.EvalExitSYN
jsr SRC.GetNextChar
bra EXP.EvalOperator
.42 jsr SRC.IsLetter Symbol ?
bcs EXP.EvalExitSYN
jsr EXP.GetSymbol
bcs EXP.EvalExitRTS
bcs EXP.EvalExitUND
bra EXP.EvalOperator
EXP.EvalExitOK clc
@ -182,45 +185,14 @@ EXP.SetAccA sta SRC.ACC
stz SRC.ACC+3
rts
*---------------------------------------
EXP.GetSymbol >PUSHB.G SYM.hGlobals
>PUSHW ZPLinePtr
>PUSHEA.G SYM.Global
EXP.GetSymbol jsr SYM.LookupGlobal
bcc .9
>SYSCALL SListLookup
bcs .2
adc ZPLinePtr
sta ZPLinePtr
bcc .1
inc ZPLinePtr+1
.1 clc
rts
.2 ldy #ASM.PASS
lda (pData),y pass#2?
.2 >LDA.G ASM.PASS pass#2?
bne .99 yes, undefined symbol
>PUSHB.G SYM.hGlobals
>PUSHW ZPLinePtr
>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
lda #0 Add Pending....
jsr SYM.AddGlobal
.3 clc
rts
@ -231,8 +203,7 @@ EXP.GetSymbol >PUSHB.G SYM.hGlobals
EXP.Compute dec
asl
tax
* ldy #ASM.PASS
* lda (pData),y pass#2?
* >LDA.G ASM.PASS pass#2?
* beq .8
jmp (J.EXP.OP,x)
.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
AUTO 4,1
*---------------------------------------
SRC.PrintLine bra .8
>LDA.G ASM.MACRO.ON
SRC.PrintLine >LDA.G ASM.MACRO.ON
bpl .1
>LDA.G ASM.LI.CON
@ -71,7 +69,7 @@ SRC.ParseLine lda #0
beq SRC.ParseLine.DirOp
cmp #'.' local symbol?
bne .2
bne .1
jsr SRC.GetNextChar
bcs SRC.ParseLine.InvLbl
@ -86,27 +84,39 @@ SRC.ParseLine lda #0
beq SRC.ParseLine.InvLbl .0 is not allowed
jsr SYM.AddLocalPC
bra .7
bcs .9
bra SRC.ParseLine.DirOp
.8 clc
rts
.9 rts
.2 lda #$ff
.1 lda #$ff
>STA.G SYM.bGlobal
>LDA.G ASM.PASS
beq .6
jsr SYM.LookupGlobal
bcs SRC.ParseLine.Undef
* jsr SYM.UpdateGlobal
bne .3
jsr SYM.AddGlobalPC Pass #1; try to add global...
bcc SRC.ParseLine.DirOp yes!!! go scan dir/op
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
.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...
bcs SRC.ParseLine.Ok
@ -123,7 +133,7 @@ SRC.ParseLine.DirOp jsr SRC.GetNextCharNB Scan for an Opcode...
.5 cmp #'>'
bne .6
jsr SRC.ParseLine.Exec.Macro
jsr SRC.ParseLine.Macro
bcs SRC.ParseLine.Err
bra SRC.ParseLine.Ok
@ -157,11 +167,13 @@ SRC.ParseLine.Dir >LDYA L.T.DIRECTIVES
jmp (J.DIRECTIVES,x)
*---------------------------------------
SRC.ParseLine.Exec.Macro
clc
rts
*---------------------------------------
SRC.ParseLine.Add.Macro
SRC.ParseLine.Macro >LDA.G ASM.PASS
bne .1
.1
clc
rts
*---------------------------------------

View File

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

View File

@ -169,6 +169,9 @@ CS.INIT ldy #S.PS.ARGC
jsr SYM.Init
bcs .9
jsr MAC.Init
bcs .9
jsr DIR.Init
>LDYAI 256
@ -284,6 +287,7 @@ CS.DOEVENT sec
CS.QUIT jsr FIO.FileClose
bne CS.QUIT
jsr MAC.Quit
jsr SYM.Quit
>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.EXP
.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.SYM
*---------------------------------------
@ -431,9 +436,6 @@ ASM.LI.CON .BS 1
ASM.LI.XON .BS 1
ASM.PC .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.bGlobal .BS 1
@ -445,6 +447,7 @@ SYM.LocalIndex .BS 1
SYM.Lookup .BS 6
MAC.hMacros .BS 1
MAC.hBuf .BS 1
DS.END .ED

View File

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

View File

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

View File

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