mirror of https://github.com/A2osX/A2osX.git
Kernel 0.93
This commit is contained in:
parent
0e2ae89b97
commit
4d8432082a
Binary file not shown.
|
@ -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
|
||||
|
|
|
@ -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
|
||||
*---------------------------------------
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
*--------------------------------------
|
||||
|
|
|
@ -240,6 +240,7 @@ SLIST.NewKey jsr SLIST.Search
|
|||
bcs .9
|
||||
|
||||
>LDYA ZPSListKeyID
|
||||
ldx SLIST.KeyLen
|
||||
clc
|
||||
rts
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue