Kernel 0.93

This commit is contained in:
Rémy GIBERT 2019-03-19 16:52:08 +00:00
parent 0e2ae89b97
commit 4d8432082a
9 changed files with 157 additions and 191 deletions

Binary file not shown.

View File

@ -287,24 +287,13 @@ DIR.EP >LDA.G ASM.PH.ON
DIR.SE sec
.HS 90 BCC
*---------------------------------------
DIR.EQ clc
lda (ZPGlobalBuf)
beq .99
ror
>STA.G OUT.bEquate
DIR.EQ >LDA.G SYM.bNewGlobal
bpl .99
jsr SRC.GetNextCharNB
bcs .99
jsr EXP.Eval
bcs .9
jsr SYM.Acc2Global
bcs .9
jmp SYM.FlushGlobal
jmp EXP.Eval
.99 lda #ERR.SYNTAX.ERROR
sec

View File

@ -185,8 +185,8 @@ OUT.Print1 >DEC.G OUT.LineCnt
lda #20
sta (pData),y
lda #$80
>STA.G bPause
lda #$80
>STA.G bPause
.8 rts
*---------------------------------------

View File

@ -24,10 +24,16 @@ SRC.ParseLine jsr OUT.Reset
.1 >LDA.G ASM.MA.ON
bmi SRC.ParseLine.MACRO
jmp SRC.ParseLine.LABEL
jsr SRC.ParseLine.LABEL
bcs .9
>LDA.G SYM.bNewGlobal
bpl .8
jmp SYM.StoreGlobal
.8 clc
rts
.9 rts
*---------------------------------------
SRC.ParseLine.Macro
>LDA.G ASM.PASS If Pass#2, ignore
@ -136,8 +142,8 @@ SRC.ParseLine.LABEL
cmp #'.' local symbol?
bne .1
lda (ZPGlobalBuf) Not relative to Global label...
beq SRC.ParseLine.InvLbl
>LDA.G SYM.bNewGlobal Not relative to Global label...
bpl SRC.ParseLine.InvLbl
jsr SRC.GetNextChar
bcs SRC.ParseLine.InvLbl
@ -155,10 +161,7 @@ SRC.ParseLine.LABEL
bcs SRC.ParseLine.RTS
bra SRC.ParseLine.DirOp
.1 jsr SYM.FlushGlobal Close & store Previous Global
bcs SRC.ParseLine.RTS
jsr SYM.NewOrGetGlobal
.1 jsr SYM.NewOrGetGlobal
bcs SRC.ParseLine.RTS
*---------------------------------------
SRC.ParseLine.DirOp

View File

@ -46,8 +46,7 @@ SYM.Init >SYSCALL SListNew
.9 rts
*---------------------------------------
SYM.Reset lda #0
sta (ZPGlobalBuf)
SYM.Reset >STZ.G SYM.bNewGlobal
rts
*---------------------------------------
SYM.Quit >LDA.G SYM.hLookupBuf
@ -71,8 +70,8 @@ SYM.Quit >LDA.G SYM.hLookupBuf
.8 clc
rts
*---------------------------------------
SYM.Dump stz ZPLinePtr
stz ZPLinePtr+1
SYM.Dump stz ZPPtr2
stz ZPPtr2+1
>LDA.G ASM.LI.ON
bpl .1
@ -81,7 +80,7 @@ SYM.Dump stz ZPLinePtr
>SYSCALL puts
.1 >PUSHW ZPNameBuf
>PUSHW ZPLinePtr
>PUSHW ZPPtr1
>LDA.G SYM.hGlobalList
>SYSCALL SListGetByID
bcc .10
@ -89,10 +88,24 @@ SYM.Dump stz ZPLinePtr
clc
rts
.10 >STYA ZPLinePtr Save Next ID
.10 >STYA ZPPtr2 Save Next ID
>LDA.G ASM.LI.ON
bpl .1
>PUSHW ZPNameBuf Label (PString)
>PUSHBI 2
>LDYA L.MSG.PSTR
>SYSCALL printf
bcs .9
>PUSHWI 0 Start
>PUSHWI $ffff End
>PUSHWI 0 Allocate
>PUSHW ZPPtr1
>LDA.G SYM.hGlobalList
>SYSCALL SListGetData
bcs .9
txa
>STA.G hBuf
ldy #SYMG.F Get Symbol Size
lda (ZPGlobalBuf),y
@ -117,11 +130,6 @@ SYM.Dump stz ZPLinePtr
lda L.MSG.EQU0+1,x
>SYSCALL printf
>PUSHW ZPNameBuf Label (PString)
>PUSHBI 2
>LDYA L.MSG.PSTR
>SYSCALL printf
bcs .9
ldy #SYMG.SIZE
.4 tya
@ -161,43 +169,45 @@ SYM.Dump stz ZPLinePtr
*---------------------------------------
SYM.NewOrGetGlobal
>LDA.G ASM.PASS
bne SYM.GetGlobal Pass #2: should be already defined...
bne SYM.GetGlobal
SYM.NewGlobal jsr SYM.LookupGlobal Pass #1; try to add global...
bcc .9 Already Defined
jsr SYM.GetName
bcs .99
jsr SYM.PC2Global A=PC Size
lda #SYMG.SIZE
sta (ZPGlobalBuf)
clc
rts
.9 lda #ERR.SYMBOL.REDEF
sec
.99 rts
*---------------------------------------
SYM.GetGlobal >PUSHB.G SYM.hGlobalList
>PUSHW ZPLinePtr
>PUSHW ZPGlobalBuf
>SYSCALL SListLookup
bcs .9
SYM.NewGlobal >PUSHW ZPLinePtr Pass #1; try to add global...
>LDA.G SYM.hGlobalList
>SYSCALL SListNewKey
bcs .9 Already Defined
>STYA.G SYM.GlobalID
txa
adc ZPLinePtr
sta ZPLinePtr
bcc .1
inc ZPLinePtr+1
clc
.1 tya
>STA.G SYM.GlobalID+1
.1 lda #$ff
>STA.G SYM.bNewGlobal
jmp SYM.PC2Acc
.9 lda #ERR.SYMBOL.REDEF
sec
.99 rts
*---------------------------------------
SYM.GetGlobal >PUSHW ZPLinePtr Pass #2: should be already defined...
>LDA.G SYM.hGlobalList
>SYSCALL SListLookup
bcs .9
>STYA.G SYM.GlobalID
txa
>STA.G SYM.GlobalID
adc ZPLinePtr
sta ZPLinePtr
bcc .1
inc ZPLinePtr+1
.1
clc
rts
.9 lda #ERR.UNDEF.SYMBOL
@ -220,107 +230,31 @@ SYM.LookupGlobal
.8
.9 rts
*---------------------------------------
SYM.FlushGlobal lda (ZPGlobalBuf)
beq .8
>LDA.G ASM.PASS
bne .2
SYM.StoreGlobal >LDA.G ASM.PASS
bne .8
>PUSHW ZPNameBuf
>PUSHW ZPGlobalBuf
>PUSHWI 5
>PUSHW L.SRC.ACC.SIZE
>PUSHW.G SYM.GlobalID
>LDA.G SYM.hGlobalList
>SYSCALL SListAddData
bra .3
bcs .9
.2 >PUSHW ZPGlobalBuf
>PUSHW.G SYM.GlobalID
>LDA.G SYM.hGlobalList
>SYSCALL SListSetData
.3 bcs .9
lda #0
sta (ZPGlobalBuf)
rts
.8 clc
.9 rts
*---------------------------------------
SYM.GetName jsr SRC.GetChar
bcs .9
ldy #0
.1 jsr SRC.IsLetterOrDigit
bcc .2
cmp #'.'
beq .2
cmp #'_'
bne .8
.2 sta (ZPNameBuf),y
iny
jsr SRC.GetNextChar
bcc .1
.8 lda #0
sta (ZPNameBuf),y
clc
rts
.9 lda #ERR.SYNTAX.ERROR
sec
rts
*---------------------------------------
SYM.PC2Global ldx #4
ldy #ASM.PC
SYM.PC2Acc ldy #ASM.PC+3
.1 lda (pData),y
pha
iny
dex
bne .1
ldx #4
ldy #SYMG.V+3
.2 pla
sta (ZPGlobalBuf),y
sta SRC.ACC,x
dey
dex
bne .2
ldx #4
ldy #ASM.PC+3
.3 lda (ZPGlobalBuf),y
bne .4
dex
dey
bne .3
.4 txa
ldy #SYMG.F
sta (ZPGlobalBuf),y
txa A=PC Size
rts
*---------------------------------------
SYM.Acc2Global ldx #4
ldy #SYMG.F+4
.1 lda SRC.ACC.SIZE,x
sta (ZPGlobalBuf),y
dey
dex
bpl .1
clc
lda #4
sta SRC.ACC.SIZE
rts
*---------------------------------------
SYM.Lookup2Acc ldy #SYMG.F+4
@ -346,8 +280,8 @@ SYM.Lookup2Acc ldy #SYMG.F+4
SYM.NewOrGetLocalA
tax Save ID
lda (ZPGlobalBuf) not in a global label
bne .1
>LDA.G SYM.bNewGlobal not in a global label
bmi .1
lda #ERR.INV.LABEL
clc

View File

@ -9,6 +9,9 @@ AUTO 4,1
.INB INC/MACROS.I
.INB INC/A2OSX.I
*---------------------------------------
.DUMMY
.OR ZPBIN
ZS.START
ZPPtr1 .EQ ZPBIN
ZPPtr2 .EQ ZPBIN+2
@ -27,6 +30,7 @@ ZPOpsPtr .EQ ZPBIN+22
ZPOpDefPtr .EQ ZPBIN+24
ZPTmpBuf .EQ ZPBIN+26
ZS.END .ED
*---------------------------------------
* Symbols
*---------------------------------------
@ -97,8 +101,8 @@ CS.START cld
.DA #0
.DA CS.END-CS.START CS
.DA DS.END-DS.START DS
.DA #0 SS
.DA #32 ZP
.DA #ZS.END-ZS.START Zero Page Size
.DA #64 ZP
.DA 0
*--------------------------------------
* Relocation Table
@ -133,6 +137,7 @@ L.SRC.AM.StrBuf .DA SRC.AM.StrBuf
L.ASM.6502 .DA ASM.6502
L.ASM.T.FILENAME .DA ASM.T.FILENAME
L.FIO.Stat .DA FIO.Stat
L.SRC.ACC.SIZE .DA SRC.ACC.SIZE
L.T.DIRECTIVES .DA T.DIRECTIVES
J.DIRECTIVES .DA DIR.AC
.DA DIR.AS
@ -313,9 +318,6 @@ CS.RUN ldy #S.PS.hStdIn
lda (pData),y
bne .8 no continue back to previous file
jsr SYM.FlushGlobal Store last Symbol, if any....
bcs .9
>LDA.G ASM.PASS End of pass #2 ??
bne .1
inc
@ -324,6 +326,7 @@ CS.RUN ldy #S.PS.hStdIn
rts
.1 jsr SYM.Dump
>PUSHW ZPLinePtr
>PUSHBI 2
>LDYA L.MSG.SUMMARY
@ -444,10 +447,10 @@ T.LI >PSTR "ON"
ASM..T. .AZ ".T."
ASM.6502 .AZ "6502"
MSG.HELP .AZ "A2osX-Macro Assembler (S-C MASM 3.0 Based)\r\nUsage : ASM <src file> [type TXT ($04) or S-C/BAS ($FA)]\r\n"
MSG.PASS .AZ "*** Pass:#%d\r\n"
MSG.SRC.FILE .AZ "*** Reading SRC File:%s\r\n"
MSG.OBJ.FILE .AZ "*** Writing OBJ File:%s, Type=%02x\r\n"
MSG.T.FILE .AZ "*** Loading CPU File:%s\r\n"
MSG.PASS .AZ "**** Pass:#%d\r\n"
MSG.SRC.FILE .AZ "**** Reading SRC File:%s\r\n"
MSG.OBJ.FILE .AZ "**** Writing OBJ File:%s, Type=%02x\r\n"
MSG.T.FILE .AZ "**** Loading CPU File:%s\r\n"
MSG.OUT0 .AZ "%H- "
MSG.OUT1 .AZ "%H-%h "
MSG.OUT2 .AZ "%H-%h %h "
@ -538,8 +541,10 @@ SYM.hGlobalList .BS 1
SYM.hNameBuf .BS 1
SYM.hGlobalBuf .BS 1
SYM.GlobalID .BS 2
SYM.bNewGlobal .BS 1
SYM.hLookupBuf .BS 1
SYM.hBuf .BS 1
SYM.LocalID .BS 2

View File

@ -113,8 +113,16 @@ CS.INIT
clc
rts
*--------------------------------------
CS.RUN >SYSCALL GetChar
bcs .10 no char
CS.RUN ldy #S.PS.hStdIn
lda (pPS),y
>SYSCALL feof
bcs .99
tay
beq .10
>SYSCALL GetChar
bcs .99
cmp #$03 Ctrl-C
beq .92 Abort....
@ -268,7 +276,7 @@ GetHexFileType ldy #$ff
.10 iny
lda (ZPPtr1),y
bne .10
cpy #3
bne .9
@ -276,25 +284,21 @@ GetHexFileType ldy #$ff
cmp #'0'
bne .1
iny
ldy #1
lda (ZPPtr1),y
cmp #'0'
bcc .9
cmp #'9'+1
jsr IsDigit16
bcs .9
asl
asl
asl
asl
>STA.G HexFileType
iny
ldy #2
lda (ZPPtr1),y
cmp #'0'
bcc .9
cmp #'9'+1
jsr IsDigit16
bcs .9
and #$0F
>ORA.G HexFileType
sta (pData),y
clc
@ -334,6 +338,34 @@ GetHexFileType ldy #$ff
cpx #PRODOS.FT.COUNT
bne .2
.9 sec
rts
*---------------------------------------
IsDigit16 cmp #'0'
bcc .9
cmp #'9'+1
bcc .8
cmp #'A'
bcc .9
cmp #'F'+1
bcc .1
cmp #'a'
bcc .9
cmp #'f'+1
bcs .9
eor #$20
.1
* clc
sbc #'A'-11 cc so A->10 (11-CC)
clc
.8 and #$0F
rts
.9 sec
rts
*--------------------------------------

View File

@ -240,6 +240,7 @@ SLIST.NewKey jsr SLIST.Search
bcs .9
>LDYA ZPSListKeyID
ldx SLIST.KeyLen
clc
rts

View File

@ -100,38 +100,40 @@ DRV.TERM.STATUS jsr DRV.TERM.GetIOCTLBufCntDCB
sec
rts
*--------------------------------------
DRV.TERM.OPEN ldx #0 DEV.ID in A
DRV.TERM.OPEN tax DEV.ID in A
.1 ldy A2osX.SCRNDEVS,x
beq .2
jsr DRV.TERM.GetDCB
ldy #S.DCB.TTY.STATUS
lda (ZPDCBPtr),y
bit #S.DIB.S.OPENED
beq .1
lda #MLI.E.OPEN
sec
rts
.1 txa
ldx #0
.2 ldy A2osX.SCRNDEVS,x
beq .3
inx
cpx #K.SCR.MAX
bne .1
bne .2
lda #E.OOH
sec
rts
.9 lda #MLI.E.OPEN
sec
rts
.2 sta A2osX.SCRNDEVS,x
.3 sta A2osX.SCRNDEVS,x
pha
jsr DRV.TERM.GetDCB
pla
ldy #S.DCB.TTY.DEVID
sta (ZPDCBPtr),y
ldy #S.DCB.TTY.STATUS
lda (ZPDCBPtr),y
bit #S.DIB.S.OPENED
bne .9
ora #S.DIB.S.OPENED
ora DRV.TERM.DIB+S.DIB.S
sta (ZPDCBPtr),y