Kernel 0.94

This commit is contained in:
Rémy GIBERT 2020-03-09 07:58:48 +01:00
parent a2cb686ead
commit 65f4b7a520
8 changed files with 270 additions and 285 deletions

Binary file not shown.

View File

@ -205,33 +205,6 @@ DIR.DO >LDA.G ASM.DO.StackPtr
sec
.99 rts
*---------------------------------------
DIR.DU >LDA.G ASM.DU.ON
bmi DIR.DU.ERR
lda #$80
sta (pData),y
ldy #ASM.PC.DU
jsr DIR.SavePC
clc
rts
DIR.DU.ERR lda #E.ILLEGAL.DIR
sec
rts
*---------------------------------------
DIR.ED >LDA.G ASM.DU.ON
bpl DIR.DU.ERR
lda #0
sta (pData),y
ldy #ASM.PC.DU
jsr DIR.RestorePC
clc
rts
*---------------------------------------
DIR.EL >LDA.G ASM.DO.StackPtr
beq .9
@ -253,21 +226,43 @@ DIR.EM lda #E.MACRO.INV.DEF
sec
rts
*---------------------------------------
DIR.EN clc
rts
DIR.DU >LDA.G ASM.DU.ON
bmi DIR.EP.ILLEGAL
lda #$80
sta (pData),y
ldy #ASM.PC.DU
jmp DIR.SavePC
*---------------------------------------
DIR.PH >LDA.G ASM.PH.ON
bmi DIR.EP.ILLEGAL
lda #$80
sta (pData),y
ldy #ASM.PC.PH
jsr DIR.SavePC
jmp DIR.OR
*---------------------------------------
DIR.ED >LDA.G ASM.DU.ON
bpl DIR.EP.ILLEGAL
lda #0
sta (pData),y
ldy #ASM.PC.DU
jmp DIR.RestorePC
*---------------------------------------
DIR.EP >LDA.G ASM.PH.ON
bpl .9
lda #0
sta (pData),y
ldy #ASM.PC.PH
jsr DIR.RestorePC
clc
rts
.9 lda #E.ILLEGAL.DIR
jmp DIR.RestorePC
.9
DIR.EP.ILLEGAL lda #E.ILLEGAL.DIR
sec
rts
*---------------------------------------
@ -547,22 +542,13 @@ DIR.OR jsr SRC.GetNextCharNB
.8 clc
.9 rts
*---------------------------------------
DIR.PG clc
rts
DIR.EN
*---------------------------------------
DIR.PH >LDA.G ASM.PH.ON
bmi .9
lda #$80
sta (pData),y
ldy #ASM.PC.PH
jsr DIR.SavePC
jmp DIR.OR
.9 lda #E.ILLEGAL.DIR
sec
rts
DIR.PG
*---------------------------------------
DIR.TI
*---------------------------------------
DIR.US
*---------------------------------------
DIR.TA
@ -651,12 +637,6 @@ DIR.TF >LDA.G ASM.PASS If Pass#1, ignore
rts
*---------------------------------------
DIR.TI clc
rts
*---------------------------------------
DIR.US clc
rts
*---------------------------------------
DIR.SavePC phy
plx
ldy #ASM.PC+3
@ -677,6 +657,7 @@ DIR.SavePC phy
dex
bpl .2
clc
rts
*---------------------------------------
DIR.RestorePC ldx #3
@ -696,6 +677,7 @@ DIR.RestorePC ldx #3
dex
bpl .2
clc because of JMP to it
rts
*---------------------------------------
MAN

View File

@ -20,8 +20,8 @@ EXP.Eval.Missing
rts
EXP.Eval >STZ.G EXP.Modifier
>STZ.G EXP.Prefix
>STZ.G EXP.Operator
>STA.G EXP.Prefix
>STA.G EXP.Operator
jsr SRC.GetChar
bcs EXP.Eval.Missing
@ -175,8 +175,6 @@ EXP.EvalExitUND lda #E.UNDEF.SYMBOL
rts
*---------------------------------------
EXP.EvalOperator
* jsr EXP.SetACCSize
>LDA.G EXP.Operator
beq .7
@ -399,32 +397,6 @@ EXP.SetAccA sta SRC.ACC
clc
rts
*---------------------------------------
EXP.SetACCSize lda SRC.ACC.SIZE
bne .8
>LDA.G ASM.PASS
bne .1
lda SRC.ACC.F
and #SYMG.F.FWREF
beq .1
ldx #2
bra .7
.1 ldx #4
.2 lda SRC.ACC-1,x
bne .7
dex
bne .2
inx
.7 stx SRC.ACC.SIZE
.8 rts
*---------------------------------------
MAN
SAVE USR/SRC/BIN/ASM.S.EXP
LOAD USR/SRC/BIN/ASM.S

View File

@ -255,7 +255,9 @@ MAC.ReadLine >LDA.G MAC.hBuf
sta ZPPtr2+1
ldy #0
stz DIR.Byte
.1 lda (ZPMacroBuf)
beq .8
@ -266,9 +268,19 @@ MAC.ReadLine >LDA.G MAC.hBuf
bne .2
inc ZPMacroBuf+1
.2 cmp #']'
.2 cmp #'"'
bne .20
lda DIR.Byte
eor #$ff
sta DIR.Byte
.20 cmp #']'
bne .7
bit DIR.Byte
bmi .7
lda (ZPMacroBuf)
beq .9
@ -281,16 +293,13 @@ MAC.ReadLine >LDA.G MAC.hBuf
lda ZPMacroArgCnt
ora #$30
sta (ZPLineBuf),y
iny
bra .1
bra .7
.22 cmp #'1'
bcc .9
bcc .6
cmp #'9'+1
bcs .9
bcs .6
and #$0f
tax
@ -301,16 +310,16 @@ MAC.ReadLine >LDA.G MAC.hBuf
jsr MAC.GetArgX
bcs .1 no arg ]n, append nothing
lda (ZPPtr1)
cmp #'"'
bne .3
* lda (ZPPtr1)
* cmp #'"'
* bne .3
inc ZPPtr1
bne .23
inc ZPPtr1+1
* inc ZPPtr1
* bne .23
* inc ZPPtr1+1
.23 dex
dex
*.23 dex
* dex
.3 lda (ZPPtr1)
sta (ZPLineBuf),y
@ -324,6 +333,12 @@ MAC.ReadLine >LDA.G MAC.hBuf
bne .3
bra .1
.6 pha
lda #']'
sta (ZPLineBuf),y
iny
pla
.7 sta (ZPLineBuf),y
iny
@ -356,7 +371,7 @@ MAC.Push >LDA.G MAC.StkPtr
>STA.G MAC.CtxID
>LDYA ZPLinePtr
>SYSCALL strdup Args
>SYSCALL StrDup Args
bcs .99
>STYA ZPPtr2

View File

@ -5,23 +5,205 @@ OUT.Init lda #PAGE.LEN
>STA.G OUT.LineCnt
rts
*---------------------------------------
OUT.Reset ldx #4
OUT.EmitByte phy
phx
tax
>LDA.G ASM.PASS
beq .1
>LDA.G ASM.DU.ON
bmi .1
txa
pha
>PUSHA
>LDA.G DST.hREFNUM
>SYSCALL FPutC
plx
bcs .99
.1 >INC.G ASM.PC
bne .2
>INC.G ASM.PC+1
bne .2
>INC.G ASM.PC+2
bne .2
>INC.G ASM.PC+3
.2 >LDA.G ASM.PH.ON
beq .3
>INC.G ASM.PC.PH
bne .3
>INC.G ASM.PC.PH+1
bne .3
>INC.G ASM.PC.PH+2
bne .3
>INC.G ASM.PC.PH+3
.3 >LDA.G OUT.Buf
cmp #3
bne .4
phx
jsr OUT.PrintBuf
plx
bcs .99
ldy #OUT.Buf
lda #0
.4 inc
sta (pData),y
clc
adc #OUT.Buf
tay
txa
sta (pData),y
.8 clc
.99 plx
ply
rts
*---------------------------------------
OUT.PrintBuf jsr OUT.PrintLineOn
bcs OUT.PrintBufReset
>LDA.G ASM.LI.XON
bpl OUT.PrintBufReset
jsr OUT.PrintLineOutBuf
bcs OUT.PrintBuf.RTS
jsr OUT.PrintCR
bcs OUT.PrintBuf.RTS
OUT.PrintBufReset
>STZ.G OUT.Buf
ldx #4
ldy #ASM.PC
.1 lda (pData),y
.2 lda (pData),y
pha
iny
dex
bne .1
bne .2
ldx #4
ldy #OUT.PC+3
.2 pla
.3 pla
sta (pData),y
dey
dex
bne .2
bne .3
.8 clc
OUT.PrintBuf.RTS
rts
*---------------------------------------
OUT.PrintLine jsr OUT.PrintLineOn
bcs OUT.PrintBuf.RTS
OUT.PrintLine.1 jsr OUT.PrintLineOutBuf
bcs OUT.PrintBuf.RTS
>LDA.G SRC.Depth
>STZ.G OUT.Buf
>STA.G OUT.bEquate
.1 dec
beq .2
pha
lda #'>'
>SYSCALL PutChar
pla
bra .1
.2 >PUSHW L.MSG.LINENUM
>PUSHW.G SRC.LINENUM
>PUSHBI 2
>SYSCALL PrintF
>LDA.G MAC.CtxStackPtr
.3 dec
bmi .4
pha
lda #'>'
>SYSCALL PutChar
pla
bra .3
.4 >LDYA ZPLineBuf
>SYSCALL PutS
jmp OUT.PrintCR1
*---------------------------------------
OUT.PrintLineOutBuf
>LDA.G OUT.bEquate
bne OUT.PrintLineEQU
>LDA.G OUT.Buf
pha
asl
tax
>PUSHB L.MSG.OUT0+1,x
>PUSHB L.MSG.OUT0,x
ldy #OUT.PC+1
>PUSHB (pData),y
dey
>PUSHB (pData),y
pla
beq .2
tax
ldy #OUT.Buf
pha
.1 iny
>PUSHB (pData),y
dex
bne .1
pla
.2 inc
inc
>PUSHA Byte Count+2 for PC
>SYSCALL PrintF
rts
*---------------------------------------
OUT.PrintLineEQU
lda SRC.ACC.SIZE
asl
tax
>PUSHB L.MSG.EQU0+1,x
>PUSHB L.MSG.EQU0,x
lda SRC.ACC.SIZE
beq .2
tay
.1 dey
>PUSHB SRC.ACC,y
tya
bne .1
lda SRC.ACC.SIZE
.2 >PUSHA Byte Count
>SYSCALL PrintF
rts
*---------------------------------------
OUT.PrintLineOn
@ -117,170 +299,8 @@ OUT.PrintLineErrDashA
.8 clc
.9 rts
*---------------------------------------
OUT.PrintLine jsr OUT.PrintLineOn
bcs OUT.Print.RTS
OUT.PrintLine.1 jsr OUT.PrintLineOutBuf
bcs OUT.Print.RTS
>LDA.G SRC.Depth
.1 dec
beq .2
pha
lda #'>'
>SYSCALL putchar
pla
bra .1
.2 >PUSHW L.MSG.LINENUM
>PUSHW.G SRC.LINENUM
>PUSHBI 2
>SYSCALL PrintF
>LDA.G MAC.CtxStackPtr
.3 dec
bmi .4
pha
lda #'>'
>SYSCALL putchar
pla
bra .3
.4 >LDYA ZPLineBuf
>SYSCALL PutS
jmp OUT.PrintCR1
*---------------------------------------
OUT.Print >SYSCALL PrintF
bcs OUT.Print.RTS
jmp OUT.PrintCR
OUT.Print.RTS rts
*---------------------------------------
OUT.PrintLineOutBuf
>LDA.G OUT.bEquate
bne OUT.PrintLineEQU
>LDA.G OUT.Buf
pha
asl
tax
>PUSHB L.MSG.OUT0+1,x
>PUSHB L.MSG.OUT0,x
ldy #OUT.PC+1
>PUSHB (pData),y
dey
>PUSHB (pData),y
pla
beq .2
tax
ldy #OUT.Buf
pha
.1 iny
>PUSHB (pData),y
dex
bne .1
pla
.2 inc
inc
>PUSHA Byte Count+2 for PC
>SYSCALL PrintF
rts
*---------------------------------------
OUT.PrintLineEQU
lda SRC.ACC.SIZE
asl
tax
>PUSHB L.MSG.EQU0+1,x
>PUSHB L.MSG.EQU0,x
lda SRC.ACC.SIZE
beq .2
tay
.1 dey
>PUSHB SRC.ACC,y
tya
bne .1
lda SRC.ACC.SIZE
.2 >PUSHA Byte Count
>SYSCALL PrintF
rts
*---------------------------------------
OUT.EmitByte phy
phx
pha
>LDA.G ASM.PASS
beq .10
>LDA.G ASM.DU.ON
bmi .10
pla
pha
>PUSHA
>LDA.G DST.hREFNUM
>SYSCALL fputc
plx
bcs .99
phx
.10 >LDA.G OUT.Buf
cmp #3
bne .2
jsr OUT.PrintLineOn
bcs .1
>LDA.G ASM.LI.XON
bpl .1
jsr OUT.PrintLineOutBuf
jsr OUT.PrintCR
.1 jsr OUT.Reset
lda #0
ldy #OUT.Buf
.2 inc
sta (pData),y
clc
adc #OUT.Buf
tay
pla
sta (pData),y
.8 >INC.G ASM.PC
bne .80
>INC.G ASM.PC+1
bne .80
>INC.G ASM.PC+2
bne .80
>INC.G ASM.PC+3
.80 clc
.99 plx
ply
rts
*---------------------------------------
OUT.PrintCR >PUSHW L.MSG.CRLF
>PUSHBI 0
@ -293,11 +313,13 @@ OUT.PrintCR1 >DEC.G OUT.LineCnt
sta (pData),y
* lda #$80
* >STA.G bPause
.8 rts
.8
OUT.Print.RTS rts
*---------------------------------------
OUT.DEBUG phy
phx
>SYSCALL putchar
>SYSCALL PutChar
>PUSHW L.MSG.DEBUG
ldy #ASM.PC+4

View File

@ -1,7 +1,10 @@
NEW
AUTO 3,1
*---------------------------------------
SRC.ParseLine jsr OUT.Reset
SRC.ParseLine jsr OUT.PrintBufReset
>STZ.G OUT.bEquate
jsr SRC.GetChar
bcs .8

View File

@ -451,13 +451,6 @@ SYM.Dump.1 >LDYA L.MSG.SYMBOLS
.9 rts
*---------------------------------------
SYM.Dump.DBG >PUSHW L.MSG.WORD
>PUSHW ZPPtr2
>PUSHBI 2
>SYSCALL printf
rts
*---------------------------------------
SYM.Dump.GLP jsr SYM.Dump.G
bcs .9

View File

@ -135,7 +135,6 @@ L.MSG.PSYMBOL .DA MSG.PSYMBOL
L.MSG.SUMMARY .DA MSG.SUMMARY
L.MSG.END .DA MSG.END
L.MSG.DEBUG .DA MSG.DEBUG
L.MSG.WORD .DA MSG.WORD
L.MSG.SRC.FILE .DA MSG.SRC.FILE
L.MSG.OBJ.FILE .DA MSG.OBJ.FILE
L.MSG.T.FILE .DA MSG.T.FILE
@ -536,7 +535,6 @@ MSG.PSYMBOL .AZ " :%d(%d)=%h%h%h%h"
MSG.SUMMARY .AZ "\r\n**** Symbol Table Size : %5D Bytes.\r\n"
MSG.END .AZ "**** End Of Assembly."
MSG.DEBUG .AZ "PC=%h%h%h%h, ACC=%h%h%h%h [%h] F:%b ARG=%h%h%h%h [%h]\r\n"
MSG.WORD .AZ "ID:%H "
*---------------------------------------
ASM.CPU.FILE .BS 65