mirror of
https://github.com/A2osX/A2osX.git
synced 2025-02-26 08:29:46 +00:00
SCMASM.SYSTEM & ASM:C-string support (new directives .CS. CZ .PS, updated Notepad++ XML)
CC:Added typedef, struct/union need a KERNEL mod VEDRIVE:bugfixes, added LanCEGS code (oops ;-)
This commit is contained in:
parent
037fc870a5
commit
a5ba00f1a6
@ -16,8 +16,10 @@ no .AC support
|
||||
| .AC | Ascii Compressed string| S-C | NOT IMPL. | | As strings are supposed to be printed with A2osX API, Printf cannot handle 'AC' compressed strings |
|
||||
| .AS | Ascii String | S-C,A2osX | Working | `.AS dTEXTd` where d is any delimiter `.AS -"TEXT"`produce ascii code with b7=1 | |
|
||||
| .AT | Ascii string Terminated | S-C,A2osX | Working | (same as above) | |
|
||||
| .AZ | Ascii string Zero terminated (C String) | S-C,A2osX | Working | (same as above) | |
|
||||
| .AZ | Ascii string Zero terminated | S-C,A2osX | Working | (same as above) | |
|
||||
| .BS | Block (Byte) Storage | S-C,A2osX | Working | `.BS count[,value]` | Reserves `count` bytes in output and sets them to `value` (or zero if omitted) |
|
||||
| .CS | C-string | S-C 3.1,A2osX | Working | | |
|
||||
| .CZ | C-String Zero terminated| S-C 3.1,A2osX | Working | | |
|
||||
| .DA | DAta value | S-C,A2osX | Working | `.DA value` | 2-byte address: `.DA $1234` only high byte: `.DA /$1234` only low byte: `.DA #$1234` |
|
||||
| .DO | conditional start | S-C,A2osX | Working | | |
|
||||
| .DU,.DUMMY | begin DUmmy section | S-C,A2osX | Working | | |
|
||||
@ -36,6 +38,7 @@ no .AC support
|
||||
| .OR | ORigin | S-C,A2osX | Working | `.OR address` | Set initial output address (only one allowed per assembly) |
|
||||
| .PG | PaGe control | S-C,A2osX | IGNORED | | |
|
||||
| .PH | PHase start | S-C,A2osX | Working | `.PH address` | Start a temporary addressing range |
|
||||
| .CS | Pascal-string | S-C 3.1,A2osX | Working | | |
|
||||
| .SE | | S-C,A2osX | Working | | |
|
||||
| .TA | Target Address| S-C,A2osX | IGNORED | | |
|
||||
| .TF | Target File | S-C,A2osX | Working | `.TF TargetFile[,Txxx]` | only ,TSYS supported |
|
||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -24,7 +24,7 @@
|
||||
<Keywords name="Folders in comment, open"></Keywords>
|
||||
<Keywords name="Folders in comment, middle"></Keywords>
|
||||
<Keywords name="Folders in comment, close"></Keywords>
|
||||
<Keywords name="Keywords1">.BS
.DA
.AS
.AT
.AZ
.EQ
.MA
.EM
.OR
.TF
.LIST
.HS
.IN
.INB
.OP
.TA
.EM
.PH
.EP
.DUMMY
.ED</Keywords>
|
||||
<Keywords name="Keywords1">.BS
.DA
.AS
.AT
.AZ
.EQ
.MA
.EM
.OR
.TF
.LIST
.HS
.IN
.INB
.OP
.TA
.EM
.PH
.EP
.DUMMY
.ED
.CS
.CZ
.PS</Keywords>
|
||||
<Keywords name="Keywords2">adc
and
asl
bit
brk
clc
cld
cli
clv
cmp
cpx
cpy
dec
dex
dey
eor
inc
inx
iny
lda
ldx
ldy
lsr
nop
ora
rmb
rol
ror
rti
rts
sbc
sec
sed
sei
smb
sta
stp
stx
sty
stz
tax
tay
trb
tsb
tsx
txa
txs
tya
wai</Keywords>
|
||||
<Keywords name="Keywords3">$
%
/
#
&
^</Keywords>
|
||||
<Keywords name="Keywords4">.1
.2
.3
.4
.5
.6
.7
.8
.9
</Keywords>
|
||||
@ -35,30 +35,30 @@
|
||||
<Keywords name="Delimiters"></Keywords>
|
||||
</KeywordLists>
|
||||
<Styles>
|
||||
<WordsStyle name="DEFAULT" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
|
||||
<WordsStyle name="COMMENTS" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
|
||||
<WordsStyle name="LINE COMMENTS" fgColor="008040" bgColor="FFFFFF" fontName="" fontStyle="2" nesting="0" />
|
||||
<WordsStyle name="NUMBERS" fgColor="00B32D" bgColor="FFFFFF" fontName="" fontStyle="1" nesting="0" />
|
||||
<WordsStyle name="KEYWORDS1" fgColor="FF8000" bgColor="FFFFFF" fontName="" fontStyle="3" nesting="0" />
|
||||
<WordsStyle name="KEYWORDS2" fgColor="0000FF" bgColor="FFFFFF" fontName="" fontStyle="3" nesting="0" />
|
||||
<WordsStyle name="KEYWORDS3" fgColor="00B32D" bgColor="FFFFFF" fontName="" fontStyle="1" nesting="0" />
|
||||
<WordsStyle name="KEYWORDS4" fgColor="FF0000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
|
||||
<WordsStyle name="KEYWORDS5" fgColor="0000FF" bgColor="FFFF00" fontName="" fontStyle="3" nesting="0" />
|
||||
<WordsStyle name="KEYWORDS6" fgColor="008000" bgColor="FFFFFF" fontName="" fontStyle="3" nesting="0" />
|
||||
<WordsStyle name="KEYWORDS7" fgColor="800040" bgColor="FFFFFF" fontName="" fontStyle="3" nesting="0" />
|
||||
<WordsStyle name="KEYWORDS8" fgColor="CC1F15" bgColor="FFFFFF" fontName="" fontStyle="3" nesting="0" />
|
||||
<WordsStyle name="OPERATORS" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
|
||||
<WordsStyle name="FOLDER IN CODE1" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
|
||||
<WordsStyle name="FOLDER IN CODE2" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
|
||||
<WordsStyle name="FOLDER IN COMMENT" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
|
||||
<WordsStyle name="DELIMITERS1" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
|
||||
<WordsStyle name="DELIMITERS2" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
|
||||
<WordsStyle name="DELIMITERS3" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
|
||||
<WordsStyle name="DELIMITERS4" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
|
||||
<WordsStyle name="DELIMITERS5" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
|
||||
<WordsStyle name="DELIMITERS6" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
|
||||
<WordsStyle name="DELIMITERS7" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
|
||||
<WordsStyle name="DELIMITERS8" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
|
||||
<WordsStyle name="DEFAULT" fgColor="000000" bgColor="FFFFFF" fontStyle="0" nesting="0" />
|
||||
<WordsStyle name="COMMENTS" fgColor="000000" bgColor="FFFFFF" fontStyle="0" nesting="0" />
|
||||
<WordsStyle name="LINE COMMENTS" fgColor="008040" bgColor="FFFFFF" fontStyle="2" nesting="0" />
|
||||
<WordsStyle name="NUMBERS" fgColor="00B32D" bgColor="FFFFFF" fontStyle="1" nesting="0" />
|
||||
<WordsStyle name="KEYWORDS1" fgColor="FF8000" bgColor="FFFFFF" fontStyle="3" nesting="0" />
|
||||
<WordsStyle name="KEYWORDS2" fgColor="0000FF" bgColor="FFFFFF" fontStyle="3" nesting="0" />
|
||||
<WordsStyle name="KEYWORDS3" fgColor="00B32D" bgColor="FFFFFF" fontStyle="1" nesting="0" />
|
||||
<WordsStyle name="KEYWORDS4" fgColor="FF0000" bgColor="FFFFFF" fontStyle="0" nesting="0" />
|
||||
<WordsStyle name="KEYWORDS5" fgColor="0000FF" bgColor="FFFF00" fontStyle="3" nesting="0" />
|
||||
<WordsStyle name="KEYWORDS6" fgColor="008000" bgColor="FFFFFF" fontStyle="3" nesting="0" />
|
||||
<WordsStyle name="KEYWORDS7" fgColor="800040" bgColor="FFFFFF" fontStyle="3" nesting="0" />
|
||||
<WordsStyle name="KEYWORDS8" fgColor="CC1F15" bgColor="FFFFFF" fontStyle="3" nesting="0" />
|
||||
<WordsStyle name="OPERATORS" fgColor="000000" bgColor="FFFFFF" fontStyle="0" nesting="0" />
|
||||
<WordsStyle name="FOLDER IN CODE1" fgColor="000000" bgColor="FFFFFF" fontStyle="0" nesting="0" />
|
||||
<WordsStyle name="FOLDER IN CODE2" fgColor="000000" bgColor="FFFFFF" fontStyle="0" nesting="0" />
|
||||
<WordsStyle name="FOLDER IN COMMENT" fgColor="000000" bgColor="FFFFFF" fontStyle="0" nesting="0" />
|
||||
<WordsStyle name="DELIMITERS1" fgColor="000000" bgColor="FFFFFF" fontStyle="0" nesting="0" />
|
||||
<WordsStyle name="DELIMITERS2" fgColor="000000" bgColor="FFFFFF" fontStyle="0" nesting="0" />
|
||||
<WordsStyle name="DELIMITERS3" fgColor="000000" bgColor="FFFFFF" fontStyle="0" nesting="0" />
|
||||
<WordsStyle name="DELIMITERS4" fgColor="000000" bgColor="FFFFFF" fontStyle="0" nesting="0" />
|
||||
<WordsStyle name="DELIMITERS5" fgColor="000000" bgColor="FFFFFF" fontStyle="0" nesting="0" />
|
||||
<WordsStyle name="DELIMITERS6" fgColor="000000" bgColor="FFFFFF" fontStyle="0" nesting="0" />
|
||||
<WordsStyle name="DELIMITERS7" fgColor="000000" bgColor="FFFFFF" fontStyle="0" nesting="0" />
|
||||
<WordsStyle name="DELIMITERS8" fgColor="000000" bgColor="FFFFFF" fontStyle="0" nesting="0" />
|
||||
</Styles>
|
||||
</UserLang>
|
||||
</NotepadPlus>
|
||||
|
@ -9,9 +9,9 @@ DIR.Reset lda #$ff
|
||||
sta (pData),y
|
||||
iny #ASM.LI.XON
|
||||
sta (pData),y
|
||||
|
||||
|
||||
>STA.G MAC.StkPtr
|
||||
|
||||
|
||||
rts
|
||||
*---------------------------------------
|
||||
DIR.AC clc
|
||||
@ -22,7 +22,7 @@ DIR.AT sec
|
||||
*---------------------------------------
|
||||
DIR.AS clc
|
||||
lda #0
|
||||
ror
|
||||
ror
|
||||
sta DIR.Byte Save b7 of last char in string
|
||||
jsr SRC.GetNextChar
|
||||
bcs .9
|
||||
@ -82,11 +82,107 @@ DIR.AZ jsr DIR.AS
|
||||
lda #0
|
||||
jmp OUT.EmitByte
|
||||
*---------------------------------------
|
||||
DIR.PS jsr SRC.GetNextChar
|
||||
bcs .9
|
||||
|
||||
sta DIR.Word Save delimiter....
|
||||
|
||||
ldx #$ff
|
||||
ldy #1 skip delimiter
|
||||
|
||||
.1 inx
|
||||
lda (ZPLinePtr),y
|
||||
beq .9
|
||||
|
||||
cmp #$0D
|
||||
beq .9
|
||||
|
||||
iny
|
||||
|
||||
cmp DIR.Word
|
||||
bne .1
|
||||
|
||||
txa
|
||||
jsr OUT.EmitByte emit length
|
||||
bcs .9
|
||||
|
||||
.2 jsr SRC.GetNextChar
|
||||
jsr OUT.EmitByte
|
||||
bcs .9
|
||||
|
||||
dex
|
||||
bne .2
|
||||
|
||||
jsr SRC.GetNextChar skip delimiter
|
||||
|
||||
clc
|
||||
rts
|
||||
|
||||
.9 lda #E.SYNTAX.ERROR
|
||||
sec
|
||||
rts
|
||||
*---------------------------------------
|
||||
DIR.CS jsr SRC.GetNextChar
|
||||
bcs .9
|
||||
|
||||
stz DIR.Byte
|
||||
|
||||
cmp #'-'
|
||||
bne .1
|
||||
|
||||
ror DIR.Byte save b7 status of ALL chars
|
||||
|
||||
jsr SRC.GetNextChar
|
||||
bcs .9
|
||||
|
||||
.1 sta DIR.Word Save delimiter....
|
||||
|
||||
.2 jsr SRC.GetNextChar
|
||||
bcs .9
|
||||
|
||||
cmp DIR.Word delimiter ?
|
||||
beq .8
|
||||
|
||||
cmp #'\'
|
||||
bne .7
|
||||
|
||||
jsr SRC.GetNextChar
|
||||
bcs .9
|
||||
|
||||
ldx #DIR.EscChars.L-1
|
||||
|
||||
.3 cmp DIR.EscChars,x
|
||||
beq .4
|
||||
|
||||
dex
|
||||
bpl .3
|
||||
|
||||
bmi .9
|
||||
|
||||
.4 lda DIR.EscCodes,x
|
||||
|
||||
.7 ora DIR.Byte
|
||||
|
||||
jsr OUT.EmitByte
|
||||
bcc .2
|
||||
|
||||
.9 lda #E.SYNTAX.ERROR
|
||||
sec
|
||||
rts
|
||||
|
||||
.8 clc
|
||||
DIR.CZ.RTS rts
|
||||
*---------------------------------------
|
||||
DIR.CZ jsr DIR.CS
|
||||
bcs DIR.CZ.RTS
|
||||
lda #0
|
||||
jmp OUT.EmitByte
|
||||
*---------------------------------------
|
||||
DIR.BS jsr SRC.GetNextCharNB
|
||||
bcs .98
|
||||
|
||||
jsr EXP.ResetAcc
|
||||
|
||||
|
||||
jsr EXP.Eval
|
||||
bcs .9
|
||||
|
||||
@ -105,15 +201,15 @@ DIR.BS jsr SRC.GetNextCharNB
|
||||
stz DIR.Byte
|
||||
jsr SRC.GetChar
|
||||
bcs .1
|
||||
|
||||
|
||||
cmp #C.SPACE
|
||||
beq .1
|
||||
|
||||
|
||||
cmp #','
|
||||
bne .98
|
||||
|
||||
|
||||
jsr EXP.ResetAcc
|
||||
|
||||
|
||||
jsr EXP.Eval
|
||||
bcs .9
|
||||
|
||||
@ -121,15 +217,15 @@ DIR.BS jsr SRC.GetNextCharNB
|
||||
ora SRC.ACC+2
|
||||
ora SRC.ACC+1
|
||||
bne .99
|
||||
|
||||
|
||||
lda SRC.ACC
|
||||
sta DIR.Byte
|
||||
|
||||
|
||||
.1 inc DIR.Word
|
||||
bne .2
|
||||
inc DIR.Word+1
|
||||
beq .8
|
||||
|
||||
|
||||
.2 lda DIR.Byte
|
||||
jsr OUT.EmitByte
|
||||
bcc .1
|
||||
@ -148,35 +244,35 @@ DIR.BS jsr SRC.GetNextCharNB
|
||||
*---------------------------------------
|
||||
DIR.DA jsr SRC.GetNextCharNB
|
||||
bcs .98
|
||||
|
||||
|
||||
.1 jsr EXP.ResetAcc
|
||||
|
||||
jsr EXP.Eval
|
||||
bcs .9
|
||||
|
||||
|
||||
ldy #0
|
||||
ldx SRC.ACC.SIZE
|
||||
|
||||
|
||||
.2 lda SRC.ACC,y
|
||||
jsr OUT.EmitByte
|
||||
bcs .9
|
||||
|
||||
|
||||
iny
|
||||
dex
|
||||
bne .2
|
||||
|
||||
|
||||
.3 jsr SRC.GetChar
|
||||
bcs .8
|
||||
|
||||
cmp #C.SPACE
|
||||
beq .8
|
||||
|
||||
|
||||
cmp #','
|
||||
bne .98
|
||||
|
||||
|
||||
jsr SRC.GetNextChar
|
||||
bcc .1
|
||||
|
||||
|
||||
.98 lda #E.SYNTAX.ERROR
|
||||
sec
|
||||
.9 rts
|
||||
@ -189,17 +285,17 @@ DIR.DO >LDA.G ASM.DO.StackPtr
|
||||
inc
|
||||
cmp #DO.MAXDEPTH
|
||||
bcs .98
|
||||
|
||||
|
||||
tya
|
||||
beq .1
|
||||
|
||||
|
||||
* clc
|
||||
adc #ASM.DO.Stack-1
|
||||
tay
|
||||
|
||||
|
||||
lda (pData),y Previous DO is false?
|
||||
bne .1
|
||||
|
||||
|
||||
>INC.G ASM.DO.StackPtr yes,stack FALSE
|
||||
|
||||
* clc
|
||||
@ -212,7 +308,7 @@ DIR.DO >LDA.G ASM.DO.StackPtr
|
||||
bcs .99
|
||||
|
||||
jsr EXP.ResetAcc
|
||||
|
||||
|
||||
jsr EXP.Eval
|
||||
bcs .99
|
||||
|
||||
@ -238,11 +334,11 @@ DIR.DO >LDA.G ASM.DO.StackPtr
|
||||
*---------------------------------------
|
||||
DIR.EL >LDA.G ASM.DO.StackPtr
|
||||
beq .9
|
||||
|
||||
|
||||
tax
|
||||
dec
|
||||
beq .1 no previous DO context
|
||||
|
||||
|
||||
clc
|
||||
adc #ASM.DO.Stack-1
|
||||
tay
|
||||
@ -256,7 +352,7 @@ DIR.EL >LDA.G ASM.DO.StackPtr
|
||||
lda (pData),y
|
||||
eor #$ff
|
||||
sta (pData),y
|
||||
|
||||
|
||||
.8 clc
|
||||
rts
|
||||
|
||||
@ -273,7 +369,7 @@ DIR.DU >LDA.G ASM.DU.ON
|
||||
|
||||
lda #$80
|
||||
sta (pData),y
|
||||
|
||||
|
||||
ldy #ASM.PC.DU
|
||||
jmp DIR.SavePC
|
||||
*---------------------------------------
|
||||
@ -298,7 +394,7 @@ DIR.ED >LDA.G ASM.DU.ON
|
||||
*---------------------------------------
|
||||
DIR.EP >LDA.G ASM.PH.ON
|
||||
bpl .9
|
||||
|
||||
|
||||
lda #0
|
||||
sta (pData),y
|
||||
ldy #ASM.PC.PH
|
||||
@ -315,29 +411,29 @@ DIR.EQ clc
|
||||
|
||||
lda #$ff
|
||||
>STA.G OUT.bEquate
|
||||
|
||||
|
||||
>LDA.G SYM.BufPtr
|
||||
beq DIR.EP.ILLEGAL not in global symbol context
|
||||
|
||||
eor #SYMG
|
||||
beq .1
|
||||
|
||||
|
||||
bcs DIR.EP.ILLEGAL .SE not allowed in local/private
|
||||
bcc .10 .EQ in local, skip F update
|
||||
|
||||
|
||||
.1 ror A = 0 : CS = SYMG.F.RW
|
||||
|
||||
ora #SYMG.F.EQU
|
||||
sta SRC.ACC.F
|
||||
|
||||
|
||||
.10 jsr SRC.GetNextCharNB
|
||||
bcs .9
|
||||
|
||||
jsr EXP.ResetAccV keep F
|
||||
|
||||
|
||||
jsr EXP.Eval
|
||||
bcs DIR.EP.RTS
|
||||
|
||||
|
||||
>LDA.G SYM.BufPtr
|
||||
|
||||
cmp #SYMG
|
||||
@ -345,28 +441,28 @@ DIR.EQ clc
|
||||
|
||||
tay
|
||||
ldx #3 we are in local/private
|
||||
|
||||
|
||||
.11 lda SRC.ACC,x update value
|
||||
dey
|
||||
sta (ZPSymbolBuf),y
|
||||
dex
|
||||
bpl .11
|
||||
|
||||
|
||||
clc
|
||||
rts
|
||||
|
||||
|
||||
.12 ldy #SYMG-1
|
||||
|
||||
.13 lda SRC.ACC.F,y
|
||||
sta (ZPSymbolBuf),y
|
||||
dey
|
||||
bpl .13
|
||||
|
||||
|
||||
>LDA.G ASM.PASS
|
||||
bne .2
|
||||
|
||||
jmp SYM.StoreGlobal
|
||||
|
||||
|
||||
.2 jmp SYM.UpdateGlobal
|
||||
|
||||
.9 lda #E.SYNTAX.ERROR
|
||||
@ -384,16 +480,16 @@ DIR.FI >LDA.G ASM.DO.StackPtr
|
||||
*---------------------------------------
|
||||
DIR.HS jsr SRC.GetNextCharNB
|
||||
bcs .99
|
||||
|
||||
|
||||
jsr SRC.IsDigit16
|
||||
bcs .99
|
||||
|
||||
|
||||
.1 sta DIR.Byte
|
||||
jsr SRC.GetNextChar
|
||||
bcc .2
|
||||
|
||||
jmp OUT.EmitByte
|
||||
|
||||
|
||||
.2 jsr SRC.IsDigit16
|
||||
bcc .3
|
||||
|
||||
@ -407,7 +503,7 @@ DIR.HS jsr SRC.GetNextCharNB
|
||||
jsr OUT.EmitByte
|
||||
bcc .5
|
||||
rts
|
||||
|
||||
|
||||
.3 pha
|
||||
lda DIR.Byte
|
||||
asl
|
||||
@ -417,44 +513,44 @@ DIR.HS jsr SRC.GetNextCharNB
|
||||
sta DIR.Byte
|
||||
pla
|
||||
ora DIR.Byte
|
||||
|
||||
|
||||
.4 jsr OUT.EmitByte
|
||||
bcs .9
|
||||
|
||||
|
||||
jsr SRC.GetNextChar
|
||||
bcs .8
|
||||
|
||||
|
||||
cmp #C.SPACE
|
||||
beq .8
|
||||
|
||||
|
||||
jsr SRC.IsDigit16
|
||||
bcc .1
|
||||
|
||||
|
||||
cmp #','
|
||||
beq .5
|
||||
|
||||
cmp #'.'
|
||||
bne .99
|
||||
|
||||
|
||||
.5 jsr SRC.GetNextChar
|
||||
bcs .99
|
||||
|
||||
|
||||
jsr SRC.IsDigit16
|
||||
bcc .1
|
||||
|
||||
|
||||
.99 lda #E.SYNTAX.ERROR
|
||||
sec
|
||||
.9 rts
|
||||
.9 rts
|
||||
|
||||
.8 clc
|
||||
rts
|
||||
*---------------------------------------
|
||||
DIR.IN jsr SRC.GetNextCharNB
|
||||
bcs .9
|
||||
|
||||
|
||||
>LDYA ZPLinePtr
|
||||
jmp FIO.OpenFile
|
||||
|
||||
|
||||
.9 lda #E.SYNTAX.ERROR
|
||||
sec
|
||||
rts
|
||||
@ -471,10 +567,10 @@ DIR.LI jsr SRC.GetNextChar
|
||||
bcs .8
|
||||
cmp #','
|
||||
beq DIR.LI
|
||||
|
||||
|
||||
cmp #C.SPACE
|
||||
beq .8
|
||||
|
||||
|
||||
.9 lda #E.SYNTAX.ERROR
|
||||
sec
|
||||
rts
|
||||
@ -485,15 +581,15 @@ DIR.LI jsr SRC.GetNextChar
|
||||
rts
|
||||
|
||||
DIR.LI.ON ldy #ASM.LI.ON
|
||||
sec
|
||||
sec
|
||||
bra DIR.LI.APPLY
|
||||
|
||||
DIR.LI.OFF ldy #ASM.LI.ON
|
||||
clc
|
||||
clc
|
||||
bra DIR.LI.APPLY
|
||||
|
||||
DIR.LI.CON ldy #ASM.LI.CON
|
||||
sec
|
||||
sec
|
||||
bra DIR.LI.APPLY
|
||||
|
||||
DIR.LI.COFF ldy #ASM.LI.CON
|
||||
@ -501,19 +597,19 @@ DIR.LI.COFF ldy #ASM.LI.CON
|
||||
bra DIR.LI.APPLY
|
||||
|
||||
DIR.LI.MON ldy #ASM.LI.MON
|
||||
sec
|
||||
sec
|
||||
bra DIR.LI.APPLY
|
||||
|
||||
DIR.LI.MOFF ldy #ASM.LI.MON
|
||||
clc
|
||||
clc
|
||||
bra DIR.LI.APPLY
|
||||
|
||||
DIR.LI.XON ldy #ASM.LI.XON
|
||||
sec
|
||||
sec
|
||||
bra DIR.LI.APPLY
|
||||
|
||||
DIR.LI.XOFF ldy #ASM.LI.XON
|
||||
clc
|
||||
clc
|
||||
DIR.LI.APPLY lda #0
|
||||
ror
|
||||
|
||||
@ -533,14 +629,14 @@ DIR.MA >LDA.G ASM.MA.ON
|
||||
>PUSHW ZPLinePtr
|
||||
>SYSCALL SListNewKey
|
||||
bcs .99
|
||||
|
||||
|
||||
>STYA.G MAC.ID
|
||||
|
||||
|
||||
.8 lda #$ff
|
||||
>STA.G ASM.MA.ON
|
||||
clc
|
||||
rts
|
||||
|
||||
|
||||
.9 lda #E.MACRO.INV.DEF
|
||||
sec
|
||||
.99 rts
|
||||
@ -548,7 +644,7 @@ DIR.MA >LDA.G ASM.MA.ON
|
||||
DIR.OP jsr SRC.GetNextCharNB
|
||||
bcs DIR.OP.SYNERR
|
||||
>LDYA ZPLinePtr
|
||||
|
||||
|
||||
jmp FIO.LOAD.CPU
|
||||
|
||||
DIR.OP.SYNERR lda #E.SYNTAX.ERROR
|
||||
@ -557,34 +653,34 @@ DIR.OP.SYNERR lda #E.SYNTAX.ERROR
|
||||
*---------------------------------------
|
||||
DIR.OR jsr SRC.GetNextCharNB
|
||||
bcs DIR.OP.SYNERR
|
||||
|
||||
|
||||
jsr EXP.ResetAcc
|
||||
|
||||
|
||||
jsr EXP.Eval
|
||||
bcs .9
|
||||
|
||||
ldx #0
|
||||
ldy #ASM.PC
|
||||
|
||||
|
||||
.1 lda SRC.ACC,x
|
||||
sta (pData),y
|
||||
iny
|
||||
inx
|
||||
cpx #4
|
||||
bne .1
|
||||
|
||||
|
||||
>LDA.G ASM.DU.ON
|
||||
bmi .8
|
||||
|
||||
|
||||
>LDA.G ASM.PH.ON
|
||||
bmi .8
|
||||
|
||||
|
||||
lda SRC.ACC
|
||||
>STA.G DST.AUXTYPE
|
||||
lda SRC.ACC+1
|
||||
iny
|
||||
sta (pData),y
|
||||
|
||||
|
||||
.8 clc
|
||||
.9 rts
|
||||
*---------------------------------------
|
||||
@ -603,37 +699,37 @@ DIR.TA.RTS rts
|
||||
*---------------------------------------
|
||||
DIR.TF >LDA.G ASM.PASS If Pass#1, ignore
|
||||
beq DIR.TA.8
|
||||
|
||||
|
||||
>LDA.G ArgDstFile
|
||||
beq .1
|
||||
|
||||
|
||||
>SYSCALL ArgV
|
||||
bra .2
|
||||
|
||||
|
||||
.1 jsr SRC.GetNextCharNB
|
||||
bcs DIR.OP.SYNERR
|
||||
|
||||
>LDYA ZPLinePtr
|
||||
|
||||
|
||||
.2 >SYSCALL StrDup
|
||||
bcs DIR.TA.RTS
|
||||
>STYA ZPPtr1
|
||||
stx ZPPtr2
|
||||
|
||||
|
||||
lda #S.FI.T.BIN
|
||||
sta ZPPtr2+1
|
||||
|
||||
|
||||
ldy #$ff
|
||||
|
||||
|
||||
.3 iny
|
||||
lda (ZPPtr1),y
|
||||
beq .7
|
||||
cmp #','
|
||||
bne .3
|
||||
|
||||
|
||||
lda #0
|
||||
sta (ZPPtr1),y
|
||||
|
||||
|
||||
iny
|
||||
lda (ZPPtr1),y
|
||||
cmp #'T'
|
||||
@ -641,7 +737,7 @@ DIR.TF >LDA.G ASM.PASS If Pass#1, ignore
|
||||
|
||||
.30 lda #E.SYNTAX.ERROR
|
||||
bra .9
|
||||
|
||||
|
||||
.4 ldx #0
|
||||
|
||||
.5 iny
|
||||
@ -651,7 +747,7 @@ DIR.TF >LDA.G ASM.PASS If Pass#1, ignore
|
||||
inx
|
||||
cpx #4
|
||||
bne .5
|
||||
|
||||
|
||||
lda #S.FI.T.SYS
|
||||
sta ZPPtr2+1
|
||||
|
||||
@ -659,7 +755,7 @@ DIR.TF >LDA.G ASM.PASS If Pass#1, ignore
|
||||
>PUSHWZ Allocate
|
||||
>SYSCALL RealPath
|
||||
bcs .9
|
||||
|
||||
|
||||
txa
|
||||
>STA.G DST.hFILENAME
|
||||
>SYSCALL GetMemPtr
|
||||
@ -669,18 +765,18 @@ DIR.TF >LDA.G ASM.PASS If Pass#1, ignore
|
||||
>PUSHW.G DST.AUXTYPE
|
||||
>SYSCALL FOpen
|
||||
bcs .9
|
||||
|
||||
|
||||
>STA.G DST.hREFNUM
|
||||
|
||||
|
||||
clc
|
||||
|
||||
|
||||
.9 php
|
||||
pha
|
||||
lda ZPPtr2
|
||||
>SYSCALL FreeMem
|
||||
pla
|
||||
plp
|
||||
|
||||
|
||||
rts
|
||||
*---------------------------------------
|
||||
DIR.SavePC phy
|
||||
@ -692,7 +788,7 @@ DIR.SavePC phy
|
||||
dey
|
||||
cpy #ASM.PC-1
|
||||
bne .1
|
||||
|
||||
|
||||
phx
|
||||
ply
|
||||
ldx #3
|
||||
@ -716,7 +812,7 @@ DIR.RestorePC ldx #3
|
||||
|
||||
ldy #ASM.PC+3
|
||||
ldx #3
|
||||
|
||||
|
||||
.2 pla
|
||||
sta (pData),y
|
||||
dey
|
||||
|
@ -198,12 +198,8 @@ MAC.Exec jsr SRC.GetNextChar skip '>'
|
||||
bcs .90
|
||||
|
||||
>STYA ZPPtr1 MAC.ID
|
||||
txa
|
||||
* clc
|
||||
adc ZPLinePtr
|
||||
sta ZPLinePtr
|
||||
bcc .1
|
||||
inc ZPLinePtr+1
|
||||
|
||||
jsr SRC.SkipX
|
||||
|
||||
.1 jsr SRC.GetChar
|
||||
bcs .8
|
||||
|
@ -107,7 +107,10 @@ OUT.PrintBuf.RTS
|
||||
rts
|
||||
*---------------------------------------
|
||||
OUT.PrintLine jsr OUT.PrintLineOn
|
||||
bcs OUT.PrintBuf.RTS
|
||||
bcc OUT.PrintLine.1
|
||||
|
||||
clc
|
||||
rts
|
||||
|
||||
OUT.PrintLine.1 jsr OUT.PrintLineOutBuf
|
||||
bcs OUT.PrintBuf.RTS
|
||||
@ -254,7 +257,7 @@ OUT.PrintLineErr
|
||||
jsr OUT.PrintLine.1
|
||||
bcs OUT.PrintLineOnRTS
|
||||
|
||||
.1 >PUSHW L.MSG.ERROR
|
||||
>PUSHW L.MSG.ERROR
|
||||
>PUSHB DIR.Byte
|
||||
>PUSHBI 1
|
||||
>SYSCALL PrintF
|
||||
|
@ -91,13 +91,13 @@ SRC.ParseLine.DirOp
|
||||
jsr SRC.DoCheck
|
||||
bcs .1 TRUE, always execute
|
||||
|
||||
cpx #12 .DO?
|
||||
cpx #DIR.DO.ID
|
||||
beq .1
|
||||
|
||||
cpx #20 .ELSE?
|
||||
cpx #DIR.EL.ID
|
||||
beq .1
|
||||
|
||||
cpx #30 .FIN?
|
||||
cpx #DIR.FI.ID
|
||||
bne SRC.ParseLine.Ok
|
||||
|
||||
.1 jmp (J.DIRECTIVES,x)
|
||||
@ -988,6 +988,18 @@ SRC.IsDigit8 cmp #'0'
|
||||
.9 sec
|
||||
rts
|
||||
*---------------------------------------
|
||||
SRC.SkipX clc
|
||||
.HS B0 BCS
|
||||
SRC.SkipXp1 sec
|
||||
txa
|
||||
adc ZPLinePtr
|
||||
sta ZPLinePtr
|
||||
bcc .8
|
||||
|
||||
inc ZPLinePtr+1
|
||||
|
||||
.8 rts
|
||||
*---------------------------------------
|
||||
SRC.GetNextCharNB
|
||||
jsr SRC.GetNextChar
|
||||
bcs .9
|
||||
@ -996,30 +1008,26 @@ SRC.GetNextCharNB
|
||||
clc
|
||||
.9 rts
|
||||
*---------------------------------------
|
||||
SRC.GetNextCharUC
|
||||
jsr SRC.GetNextChar
|
||||
bcs .9
|
||||
cmp #'a'
|
||||
bcc .8
|
||||
cmp #'z'+1
|
||||
bcs .8
|
||||
eor #$20 to Uppercase
|
||||
.8 clc
|
||||
.9 rts
|
||||
*---------------------------------------
|
||||
SRC.GetNextChar lda (ZPLinePtr)
|
||||
beq SRC.GetChar.ERR
|
||||
|
||||
cmp #$0D
|
||||
beq SRC.GetChar.ERR
|
||||
|
||||
inc ZPLinePtr
|
||||
bne SRC.GetChar
|
||||
|
||||
inc ZPLinePtr+1
|
||||
|
||||
SRC.GetChar lda (ZPLinePtr)
|
||||
beq SRC.GetChar.ERR
|
||||
|
||||
cmp #$0D
|
||||
beq SRC.GetChar.ERR
|
||||
|
||||
clc
|
||||
rts
|
||||
|
||||
SRC.GetChar.ERR sec
|
||||
rts
|
||||
*---------------------------------------
|
||||
|
@ -10,10 +10,10 @@ NEW
|
||||
* 2-5 : 32 bits Value
|
||||
* 6+ : Local Symbols.....
|
||||
*---------------------------------------
|
||||
* Local/Private Symbol Record: (6 bytes)
|
||||
* Local/Private Symbol Record: (4 bytes)
|
||||
* 0 : Local ID (1->255)
|
||||
* 1 : Macro Context ID (private)
|
||||
* 2-5 : 32 bits Value (PC)
|
||||
* 2-3 : 16 bits offset (PC)
|
||||
*---------------------------------------
|
||||
SYM.Init >SYSCALL SListNew
|
||||
bcs .9
|
||||
@ -55,12 +55,7 @@ SYM.NewGlobal >LDA.G ASM.PASS
|
||||
|
||||
>STYA.G SYM.ID
|
||||
|
||||
txa
|
||||
* clc
|
||||
adc ZPLinePtr
|
||||
sta ZPLinePtr
|
||||
bcc .1
|
||||
inc ZPLinePtr+1
|
||||
jsr SRC.SkipX
|
||||
|
||||
.1 stz SRC.ACC.F
|
||||
jsr SYM.PC2Acc
|
||||
@ -83,6 +78,7 @@ SYM.NewGlobal >LDA.G ASM.PASS
|
||||
|
||||
.9 cmp #E.DUPKEY
|
||||
bne .99
|
||||
|
||||
lda #E.SYMBOL.REDEF
|
||||
.99
|
||||
SYM.NewGlobal.RTS
|
||||
@ -95,12 +91,7 @@ SYM.GetGlobal >PUSHB.G SYM.hList Pass #2: should be already defined...
|
||||
|
||||
>STYA.G SYM.ID
|
||||
|
||||
txa
|
||||
* clc
|
||||
adc ZPLinePtr
|
||||
sta ZPLinePtr
|
||||
bcc .1
|
||||
inc ZPLinePtr+1
|
||||
jsr SRC.SkipX
|
||||
|
||||
.1 >PUSHB.G SYM.hList Pass #2: Restore full context
|
||||
>PUSHW.G SYM.ID
|
||||
@ -156,12 +147,7 @@ SYM.LookupGlobal
|
||||
|
||||
>STYA ZPPtr1 KeyID
|
||||
|
||||
txa
|
||||
* clc
|
||||
adc ZPLinePtr
|
||||
sta ZPLinePtr
|
||||
bcc .1
|
||||
inc ZPLinePtr+1
|
||||
jsr SRC.SkipX
|
||||
|
||||
.1 >LDA.G SYM.ID
|
||||
cmp ZPPtr1
|
||||
@ -198,7 +184,7 @@ SYM.LookupGlobal
|
||||
|
||||
lda #2
|
||||
sta SRC.ACC.SIZE
|
||||
|
||||
|
||||
lda #$ff
|
||||
sta SRC.ACC
|
||||
sta SRC.ACC+1
|
||||
@ -271,7 +257,7 @@ SYM.UpdateGlobal
|
||||
|
||||
>SYSCALL SListSetData
|
||||
bcs .9
|
||||
|
||||
|
||||
>STZ.G SYM.BufPtr
|
||||
.9 rts
|
||||
*---------------------------------------
|
||||
@ -322,6 +308,29 @@ SYM.NewLocalA tax Save Local ID
|
||||
cpy #ASM.PC
|
||||
bne .1
|
||||
|
||||
ldy #SYMG.V
|
||||
|
||||
sec
|
||||
|
||||
pla
|
||||
sbc (ZPSymbolBuf),y
|
||||
sta SYM.LocalOfs
|
||||
|
||||
iny
|
||||
pla
|
||||
sbc (ZPSymbolBuf),y
|
||||
sta SYM.LocalOfs+1
|
||||
|
||||
iny
|
||||
pla
|
||||
sbc (ZPSymbolBuf),y
|
||||
bne .97
|
||||
|
||||
iny
|
||||
pla
|
||||
sbc (ZPSymbolBuf),y
|
||||
bne .98
|
||||
|
||||
>LDA.G MAC.CtxID Get Macro Context ID
|
||||
|
||||
pha
|
||||
@ -331,13 +340,17 @@ SYM.NewLocalA tax Save Local ID
|
||||
txa Get Back ID
|
||||
sta (ZPSymbolBuf),y
|
||||
|
||||
ldx #5 MAC ID + PC (4)
|
||||
|
||||
.2 pla
|
||||
pla
|
||||
iny
|
||||
sta (ZPSymbolBuf),y
|
||||
|
||||
lda SYM.LocalOfs
|
||||
iny
|
||||
sta (ZPSymbolBuf),y
|
||||
|
||||
lda SYM.LocalOfs+1
|
||||
iny
|
||||
sta (ZPSymbolBuf),y
|
||||
dex
|
||||
bne .2
|
||||
|
||||
iny
|
||||
lda #0
|
||||
@ -350,7 +363,7 @@ SYM.NewLocalA tax Save Local ID
|
||||
ora #SYMG.F.LOCALS
|
||||
sta (ZPSymbolBuf)
|
||||
|
||||
.8 clc
|
||||
clc
|
||||
rts
|
||||
|
||||
.91 lda #E.INV.LABEL
|
||||
@ -361,6 +374,12 @@ SYM.NewLocalA tax Save Local ID
|
||||
sec
|
||||
rts
|
||||
|
||||
.97 pla
|
||||
.98 lda #E.RANGE
|
||||
|
||||
sec
|
||||
rts
|
||||
|
||||
.9 lda #E.SYMBOL.REDEF
|
||||
sec
|
||||
rts
|
||||
@ -369,7 +388,7 @@ SYM.NewLocalA tax Save Local ID
|
||||
clc
|
||||
adc #SYML
|
||||
sta (pData),y
|
||||
|
||||
* clc
|
||||
rts
|
||||
*---------------------------------------
|
||||
SYM.LookupLocalX
|
||||
@ -379,45 +398,60 @@ SYM.LookupLocalX
|
||||
|
||||
ldy #SYMG
|
||||
|
||||
.1 phy
|
||||
lda (ZPSymbolBuf),y
|
||||
beq .9
|
||||
.1 lda (ZPSymbolBuf),y
|
||||
beq .99
|
||||
|
||||
phy SYML.ID
|
||||
|
||||
txa
|
||||
cmp (ZPSymbolBuf),y
|
||||
bne .3
|
||||
bne .4
|
||||
|
||||
>LDA.G MAC.CtxID
|
||||
|
||||
ply
|
||||
phy
|
||||
|
||||
iny
|
||||
iny SYML.CtxID
|
||||
cmp (ZPSymbolBuf),y
|
||||
bne .3
|
||||
bne .4
|
||||
|
||||
ldy #SYMG.V
|
||||
ldx #0
|
||||
|
||||
.2 iny
|
||||
lda (ZPSymbolBuf),y
|
||||
.2 lda (ZPSymbolBuf),y
|
||||
sta SRC.ACC,x
|
||||
inx
|
||||
cpx #4
|
||||
|
||||
iny
|
||||
cpy #SYMG
|
||||
bne .2
|
||||
|
||||
pla
|
||||
ply
|
||||
iny
|
||||
iny SYML.O
|
||||
|
||||
lda (ZPSymbolBuf),y
|
||||
clc
|
||||
adc SRC.ACC
|
||||
sta SRC.ACC
|
||||
|
||||
iny
|
||||
lda (ZPSymbolBuf),y
|
||||
adc SRC.ACC+1
|
||||
sta SRC.ACC+1
|
||||
bcc .3
|
||||
|
||||
inc SRC.ACC+2
|
||||
|
||||
.3 clc
|
||||
rts
|
||||
|
||||
.3 pla
|
||||
.4 pla
|
||||
clc
|
||||
adc #SYML
|
||||
tay
|
||||
bra .1
|
||||
|
||||
.9 ply
|
||||
.99 lda #E.UNDEF.SYMBOL
|
||||
sec
|
||||
rts
|
||||
@ -579,19 +613,38 @@ SYM.Dump.LP ldy #SYMG
|
||||
.8 rts
|
||||
*---------------------------------------
|
||||
SYM.Dump.PushValueY
|
||||
ldx #4
|
||||
iny
|
||||
lda (ZPSymbolBuf),y
|
||||
sta SRC.ACC
|
||||
|
||||
iny
|
||||
iny
|
||||
iny
|
||||
iny
|
||||
lda (ZPSymbolBuf),y
|
||||
sta SRC.ACC+1
|
||||
|
||||
stz SRC.ACC+2
|
||||
stz SRC.ACC+3
|
||||
|
||||
.1 lda (ZPSymbolBuf),y
|
||||
>PUSHA
|
||||
dey
|
||||
dex
|
||||
ldy #SYMG.V
|
||||
ldx #0
|
||||
|
||||
clc
|
||||
|
||||
.1 lda (ZPSymbolBuf),y
|
||||
adc SRC.ACC,x
|
||||
sta SRC.ACC,x
|
||||
iny
|
||||
inx
|
||||
txa
|
||||
eor #4
|
||||
bne .1
|
||||
|
||||
ldx #3
|
||||
|
||||
.2 lda SRC.ACC,x
|
||||
>PUSHA
|
||||
dex
|
||||
bpl .1
|
||||
|
||||
rts
|
||||
*---------------------------------------
|
||||
MAN
|
||||
|
187
BIN/ASM.S.txt
187
BIN/ASM.S.txt
@ -38,6 +38,7 @@ ZPMacroArgCnt .BS 1
|
||||
DIR.Byte .BS 1
|
||||
|
||||
DIR.Word .BS 2
|
||||
SYM.LocalOfs .BS 2
|
||||
ZPPtr1 .BS 2
|
||||
ZPPtr2 .BS 2
|
||||
|
||||
@ -57,9 +58,9 @@ SYMG .EQ 6
|
||||
*---------------------------------------
|
||||
SYML.ID .EQ 0 1..255
|
||||
SYML.CtxID .EQ 1 0 if local, !0 if private
|
||||
SYML.V .EQ 2 DWORD
|
||||
SYML.O .EQ 2 WORD
|
||||
*
|
||||
SYML .EQ 6
|
||||
SYML .EQ 4
|
||||
*---------------------------------------
|
||||
ASM.T.AM .EQ 0
|
||||
ASM.T.R .EQ 2
|
||||
@ -149,22 +150,27 @@ L.SRC.ACC.SIZE .DA SRC.ACC.SIZE
|
||||
L.SRC.ACC .DA SRC.ACC
|
||||
L.SRC.ARG .DA SRC.ARG
|
||||
L.T.DIRECTIVES .DA T.DIRECTIVES
|
||||
J.DIRECTIVES .DA DIR.AC 0
|
||||
J.DIRECTIVES .DA DIR.AC
|
||||
.DA DIR.AS
|
||||
.DA DIR.AT
|
||||
.DA DIR.AZ
|
||||
.DA DIR.BS
|
||||
.DA DIR.CS
|
||||
.DA DIR.CZ
|
||||
.DA DIR.DA
|
||||
.DA DIR.DO 12
|
||||
DIR.DO.ID .EQ *-J.DIRECTIVES
|
||||
.DA DIR.DO
|
||||
.DA DIR.DU
|
||||
.DA DIR.DU
|
||||
.DA DIR.ED
|
||||
.DA DIR.EL 20
|
||||
DIR.EL.ID .EQ *-J.DIRECTIVES
|
||||
.DA DIR.EL
|
||||
.DA DIR.EM
|
||||
.DA DIR.EN
|
||||
.DA DIR.EP
|
||||
.DA DIR.EQ
|
||||
.DA DIR.FI 30
|
||||
DIR.FI.ID .EQ *-J.DIRECTIVES
|
||||
.DA DIR.FI
|
||||
.DA DIR.HS
|
||||
.DA DIR.IN
|
||||
.DA DIR.IN
|
||||
@ -184,6 +190,7 @@ J.DIRECTIVES .DA DIR.AC 0
|
||||
.DA DIR.OR
|
||||
.DA DIR.PG
|
||||
.DA DIR.PH
|
||||
.DA DIR.PS
|
||||
.DA DIR.SE
|
||||
.DA DIR.TA
|
||||
.DA DIR.TF
|
||||
@ -341,7 +348,7 @@ CS.RUN.LOOP ldy #S.PS.hStdIn
|
||||
.2 jsr SRC.ParseLine
|
||||
bcs .9
|
||||
|
||||
jsr OUT.PrintLine
|
||||
jmp OUT.PrintLine
|
||||
|
||||
.8 clc
|
||||
rts
|
||||
@ -364,6 +371,7 @@ CS.RUN.ARGS ldy #S.PS.ARGC
|
||||
lda ZPPtr1
|
||||
>SYSCALL ArgV
|
||||
bcs .8
|
||||
|
||||
>STYA ZPPtr2
|
||||
|
||||
lda (ZPPtr2)
|
||||
@ -461,92 +469,101 @@ CS.QUIT >LDA.G SRC.Depth
|
||||
.INB usr/src/bin/asm.s.sym
|
||||
*---------------------------------------
|
||||
CS.END
|
||||
T.DIRECTIVES >PSTR "AC"
|
||||
>PSTR "AS"
|
||||
>PSTR "AT"
|
||||
>PSTR "AZ"
|
||||
>PSTR "BS"
|
||||
>PSTR "DA"
|
||||
>PSTR "DO"
|
||||
>PSTR "DU"
|
||||
>PSTR "DUMMY"
|
||||
>PSTR "ED"
|
||||
>PSTR "ELSE"
|
||||
>PSTR "EM"
|
||||
>PSTR "EN"
|
||||
>PSTR "EP"
|
||||
>PSTR "EQ"
|
||||
>PSTR "FIN"
|
||||
>PSTR "HS"
|
||||
>PSTR "IN"
|
||||
>PSTR "INB"
|
||||
>PSTR "INB1"
|
||||
>PSTR "INB2"
|
||||
>PSTR "INB3"
|
||||
>PSTR "INB4"
|
||||
>PSTR "INB5"
|
||||
>PSTR "INB6"
|
||||
>PSTR "INB7"
|
||||
>PSTR "INB8"
|
||||
>PSTR "INB9"
|
||||
>PSTR "LI"
|
||||
>PSTR "LIST"
|
||||
>PSTR "MA"
|
||||
>PSTR "OP"
|
||||
>PSTR "OR"
|
||||
>PSTR "PG"
|
||||
>PSTR "PH"
|
||||
>PSTR "SE"
|
||||
>PSTR "TA"
|
||||
>PSTR "TF"
|
||||
>PSTR "TI"
|
||||
>PSTR "US"
|
||||
T.DIRECTIVES .PS "AC"
|
||||
.PS "AS"
|
||||
.PS "AT"
|
||||
.PS "AZ"
|
||||
.PS "BS"
|
||||
.PS "CS"
|
||||
.PS "CZ"
|
||||
.PS "DA"
|
||||
.PS "DO"
|
||||
.PS "DU"
|
||||
.PS "DUMMY"
|
||||
.PS "ED"
|
||||
.PS "ELSE"
|
||||
.PS "EM"
|
||||
.PS "EN"
|
||||
.PS "EP"
|
||||
.PS "EQ"
|
||||
.PS "FIN"
|
||||
.PS "HS"
|
||||
.PS "IN"
|
||||
.PS "INB"
|
||||
.PS "INB1"
|
||||
.PS "INB2"
|
||||
.PS "INB3"
|
||||
.PS "INB4"
|
||||
.PS "INB5"
|
||||
.PS "INB6"
|
||||
.PS "INB7"
|
||||
.PS "INB8"
|
||||
.PS "INB9"
|
||||
.PS "LI"
|
||||
.PS "LIST"
|
||||
.PS "MA"
|
||||
.PS "OP"
|
||||
.PS "OR"
|
||||
.PS "PG"
|
||||
.PS "PH"
|
||||
.PS "PS"
|
||||
.PS "SE"
|
||||
.PS "TA"
|
||||
.PS "TF"
|
||||
.PS "TI"
|
||||
.PS "US"
|
||||
.HS 00
|
||||
*---------------------------------------
|
||||
T.LI >PSTR "ON"
|
||||
>PSTR "OFF"
|
||||
>PSTR "CON"
|
||||
>PSTR "COFF"
|
||||
>PSTR "MON"
|
||||
>PSTR "MOFF"
|
||||
>PSTR "XON"
|
||||
>PSTR "XOFF"
|
||||
T.LI .PS "ON"
|
||||
.PS "OFF"
|
||||
.PS "CON"
|
||||
.PS "COFF"
|
||||
.PS "MON"
|
||||
.PS "MOFF"
|
||||
.PS "XON"
|
||||
.PS "XOFF"
|
||||
.HS 00
|
||||
*--------------------------------------
|
||||
DIR.EscChars .AS "abefnrtv"
|
||||
.HS 5C27223F \'"?
|
||||
DIR.EscChars.L .EQ *-DIR.EscChars
|
||||
DIR.EscCodes .HS 07081B0C0A0D090B
|
||||
.HS 5C27223F
|
||||
*---------------------------------------
|
||||
SRC.MOD.RESERVED >PSTR "#/^<>"
|
||||
SRC.EXP.RESERVED >PSTR "^!|&<=>+-*/"
|
||||
SRC.AM.RESERVED >PSTR "[](),"
|
||||
SRC.MOD.RESERVED .PS "#/^<>"
|
||||
SRC.EXP.RESERVED .PS "^!|&<=>+-*/"
|
||||
SRC.AM.RESERVED .PS "[](),"
|
||||
*---------------------------------------
|
||||
DIR.SYS .AZ "SYS"
|
||||
*---------------------------------------
|
||||
ASM.6502 .AZ "6502"
|
||||
MSG.HELP .AS "A2osX-Macro Assembler (S-C MASM 3.0 Based)\r\n"
|
||||
.AS "Usage : ASM <src file> [type TXT ($04) or S-C/BAS ($FA)]\r\n"
|
||||
.AS " -L : Override .LIST (C,M,X)OFF\r\n"
|
||||
.AS " -T <target file> : Override .TF directive"
|
||||
MSG.CRLF .AZ "\r\n"
|
||||
MSG.PASS .AZ "**** Pass:#%d"
|
||||
MSG.SRC.FILE .AZ "**** Reading SRC File:%s"
|
||||
MSG.OBJ.FILE .AZ "**** Writing OBJ File:%s, Type=%02x"
|
||||
MSG.CPU.FILE .AZ "**** Loading CPU File:%s"
|
||||
MSG.OUT0 .AZ "%H- "
|
||||
MSG.OUT1 .AZ "%H-%h "
|
||||
MSG.OUT2 .AZ "%H-%h %h "
|
||||
MSG.OUT3 .AZ "%H-%h %h %h"
|
||||
MSG.EQU0 .AZ " [ ?] "
|
||||
MSG.EQU1 .AZ " [ %h] "
|
||||
MSG.EQU2 .AZ " [ %h%h] "
|
||||
MSG.EQU3 .AZ " [ %h%h%h] "
|
||||
MSG.EQU4 .AZ " [%h%h%h%h] "
|
||||
MSG.LINENUM .AZ " %05D "
|
||||
MSG.ERROR .AZ "**** Fatal Error $%h"
|
||||
MSG.SYMBOLS .AZ "**** Symbol Table:"
|
||||
MSG.LSYMBOL .AZ " .%d=%h%h%h%h"
|
||||
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.HELP .CS "A2osX-Macro Assembler (S-C MASM 3.1 Dialect)\r\n"
|
||||
.CS "Usage : ASM <src file> [type TXT ($04) or S-C/BAS ($FA)]\r\n"
|
||||
.CS " -L : Override .LIST (C,M,X)OFF\r\n"
|
||||
.CS " -T <target file> : Override .TF directive"
|
||||
MSG.CRLF .CZ "\r\n"
|
||||
MSG.PASS .CZ "**** Pass:#%d"
|
||||
MSG.SRC.FILE .CZ "**** Reading SRC File:%s"
|
||||
MSG.OBJ.FILE .CZ "**** Writing OBJ File:%s, Type=%02x"
|
||||
MSG.CPU.FILE .CZ "**** Loading CPU File:%s"
|
||||
MSG.OUT0 .CZ "%H- "
|
||||
MSG.OUT1 .CZ "%H-%h "
|
||||
MSG.OUT2 .CZ "%H-%h %h "
|
||||
MSG.OUT3 .CZ "%H-%h %h %h"
|
||||
MSG.EQU0 .CZ " [ ?] "
|
||||
MSG.EQU1 .CZ " [ %h] "
|
||||
MSG.EQU2 .CZ " [ %h%h] "
|
||||
MSG.EQU3 .CZ " [ %h%h%h] "
|
||||
MSG.EQU4 .CZ " [%h%h%h%h] "
|
||||
MSG.LINENUM .CZ " %05D "
|
||||
MSG.ERROR .CZ "**** Fatal Error $%h"
|
||||
MSG.SYMBOLS .CZ "**** Symbol Table:"
|
||||
MSG.LSYMBOL .CZ " .%d=%h%h%h%h"
|
||||
MSG.PSYMBOL .CZ " :%d(%d)=%h%h%h%h"
|
||||
MSG.SUMMARY .CZ "\r\n**** Symbol Table Size : %5D Bytes.\r\n"
|
||||
MSG.END .CZ "**** End Of Assembly."
|
||||
.DO ASMDBG=1
|
||||
MSG.DBG .AZ "\r\nCtxID=%d, ARG=%H%H <op> ACC=%H%H -> ACC %b [%h]\r\n"
|
||||
MSG.DBG .CZ "\r\nCtxID=%d, ARG=%H%H <op> ACC=%H%H -> ACC %b [%h]\r\n"
|
||||
.FIN
|
||||
*---------------------------------------
|
||||
ASM.CPU.FILE .BS 65
|
||||
|
@ -164,23 +164,29 @@ CC.CompileLine jsr CC.GetCharNB
|
||||
*--------------------------------------
|
||||
CC.CompileStmt >LDYA L.CC.KW
|
||||
jsr CC.LookupID
|
||||
bcs .10 not an internal CC keyword....
|
||||
bcs .1 not an internal CC keyword....
|
||||
|
||||
txa
|
||||
>STA.G CC.CmdSave
|
||||
jmp (J.CC.KW,x)
|
||||
*--------------------------------------
|
||||
* Declaration : int var or int func()
|
||||
* Declaration : typedef, type var or type func()
|
||||
*--------------------------------------
|
||||
.10 >LDYA L.CC.TYPEQUAL
|
||||
.1 >LDYA L.CC.SCSPEC
|
||||
jsr CC.LookupID
|
||||
bcs .6
|
||||
bcs .2
|
||||
|
||||
jmp (J.CC.SCSPEC,x)
|
||||
|
||||
.2 >LDYA L.CC.TYPEQUAL
|
||||
jsr CC.LookupID
|
||||
bcs .3
|
||||
|
||||
jmp CC.DECL
|
||||
*--------------------------------------
|
||||
* Statement : ++var, var=, func();
|
||||
*--------------------------------------
|
||||
.6 jmp CC.STMT
|
||||
.3 jmp CC.STMT
|
||||
*--------------------------------------
|
||||
.99 lda #E.CSYN
|
||||
sec
|
||||
|
@ -1,71 +1,6 @@
|
||||
NEW
|
||||
AUTO 3,1
|
||||
*--------------------------------------
|
||||
* X = type qual
|
||||
*--------------------------------------
|
||||
CC.DECL jsr CC.TYPE.Decl
|
||||
bcs .9
|
||||
|
||||
ldx #SYM.SC.STATIC Y,A = Type/Qual
|
||||
bit bLocalScope
|
||||
bpl .25
|
||||
|
||||
bit #SYM.Q.FUNC someone wants to add a local f() ?
|
||||
sec
|
||||
bne .29
|
||||
|
||||
ldx #SYM.SC.AUTO
|
||||
|
||||
.25 jsr CC.SYM.New Y,A=T/Q, add with undef value...
|
||||
bcs .29 OOM or DUP
|
||||
|
||||
.22 jsr CC.GetCharNB
|
||||
bcs .99
|
||||
|
||||
cmp #';'
|
||||
beq .28
|
||||
|
||||
cmp #'{'
|
||||
bne .26
|
||||
|
||||
jsr CC.GetNextCharNB skip '{'
|
||||
bcs .99
|
||||
|
||||
jmp CC.SYM.StoreF
|
||||
*--------------------------------------
|
||||
* Initializer
|
||||
*--------------------------------------
|
||||
.26 cmp #'=' type var = value ?
|
||||
bne .99
|
||||
|
||||
jsr CC.GetNextCharNB skip '='
|
||||
bcs .99
|
||||
|
||||
jsr CC.SYM.GetTypeInYA expected T/Q
|
||||
jsr CC.EXP.Eval
|
||||
bcs .9
|
||||
|
||||
jsr CC.SYM.GetAddr1
|
||||
bcs .9
|
||||
|
||||
jsr CC.SYM.GetTypeInYA Y,A = T/Q
|
||||
jsr CC.SYM.PopValue Set value to this var
|
||||
.29 bcs .9
|
||||
|
||||
.28 jsr CC.SYM.Store
|
||||
bcs .9
|
||||
|
||||
jsr CC.GetCharNB
|
||||
cmp #';'
|
||||
bne .99
|
||||
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
.99 lda #E.CSYN
|
||||
sec
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
CC.SCSPEC.AUTO
|
||||
CC.SCSPEC.REGISTER
|
||||
CC.SCSPEC.STATIC
|
||||
@ -75,7 +10,101 @@ CC.SCSPEC.EXTERN
|
||||
.99 rts
|
||||
*--------------------------------------
|
||||
CC.SCSPEC.TYPEDEF
|
||||
>DEBUG
|
||||
jsr CC.GetNextCharNB
|
||||
bcs .98
|
||||
|
||||
>LDYA L.CC.TYPEQUAL
|
||||
jsr CC.LookupID
|
||||
bcs .98
|
||||
|
||||
cpx #4 no const nor volatile
|
||||
bcc .98
|
||||
|
||||
jsr CC.TYPE.Decl
|
||||
bcs .99
|
||||
|
||||
ldx #SYM.SC.TYPEDEF
|
||||
sec Reset Buffer
|
||||
jsr CC.SYM.New Y,A=T/Q,storage class TYPEDEF
|
||||
bcs .99
|
||||
|
||||
jsr CC.GetCharNB
|
||||
bcs .98
|
||||
|
||||
cmp #';'
|
||||
bne .98
|
||||
|
||||
jsr CC.GetNextCharNB skip ';'
|
||||
|
||||
jmp CC.SYM.Store
|
||||
|
||||
.98 lda #E.CSYN
|
||||
sec
|
||||
.99
|
||||
CC.SCSPEC.TYPEDEF.RTS
|
||||
rts
|
||||
*--------------------------------------
|
||||
* X = type qual
|
||||
*--------------------------------------
|
||||
CC.DECL jsr CC.TYPE.Decl
|
||||
bcs CC.SCSPEC.TYPEDEF.RTS
|
||||
|
||||
sec Reset Buffer
|
||||
|
||||
CC.DECL.YAC ldx #SYM.SC.STATIC Y,A = Type/Qual
|
||||
bit bLocalScope
|
||||
bpl .25
|
||||
|
||||
bit #SYM.Q.FUNC someone wants to add a local f() ?
|
||||
bne .98
|
||||
|
||||
ldx #SYM.SC.AUTO
|
||||
|
||||
.25 jsr CC.SYM.New Y,A=T/Q, add with undef value...
|
||||
bcs .98 OOM or DUP
|
||||
|
||||
.22 jsr CC.GetCharNB
|
||||
bcs .98
|
||||
|
||||
cmp #';'
|
||||
beq .28
|
||||
|
||||
cmp #'{'
|
||||
bne .26
|
||||
|
||||
jsr CC.GetNextCharNB skip '{'
|
||||
bcs .98
|
||||
|
||||
jmp CC.SYM.StoreF
|
||||
*--------------------------------------
|
||||
* Initializer
|
||||
*--------------------------------------
|
||||
.26 cmp #'=' type var = value ?
|
||||
bne .98
|
||||
|
||||
jsr CC.GetNextCharNB skip '='
|
||||
bcs .98
|
||||
|
||||
jsr CC.SYM.GetTypeInYA expected T/Q
|
||||
jsr CC.EXP.Eval
|
||||
bcs .99
|
||||
|
||||
jsr CC.SYM.GetAddr1
|
||||
bcs .99
|
||||
|
||||
jsr CC.SYM.GetTypeInYA Y,A = T/Q
|
||||
jsr CC.SYM.PopValue Set value to this var
|
||||
.29 bcs .99
|
||||
|
||||
.28 jsr CC.SYM.Store
|
||||
bcs .99
|
||||
|
||||
jsr CC.GetCharNB
|
||||
cmp #';'
|
||||
bne .98
|
||||
|
||||
clc
|
||||
rts
|
||||
|
||||
.98 lda #E.CSYN
|
||||
sec
|
||||
|
@ -25,6 +25,7 @@ CC.F.Decl stz LocalPtr
|
||||
>STYA ZPPtr2 Save T/Q
|
||||
|
||||
jsr CC.SYM.AddWord
|
||||
bcs .99
|
||||
|
||||
jsr CC.GetCharNB
|
||||
bcs .9
|
||||
@ -51,9 +52,8 @@ CC.F.Decl stz LocalPtr
|
||||
sec
|
||||
.99 rts
|
||||
*--------------------------------------
|
||||
.6 ldy #0
|
||||
lda #0
|
||||
jsr CC.SYM.AddWord definition End
|
||||
.6 jsr CC.SYM.Add0000 definition End
|
||||
bcs .99
|
||||
|
||||
jsr CC.GetNextCharNBNL Skip )
|
||||
bcs .9
|
||||
@ -146,6 +146,7 @@ CC.F.NewArg >LDYA.G CC.SymID
|
||||
|
||||
>LDYA ZPPtr2
|
||||
ldx #SYM.SC.AUTO
|
||||
sec Reset Buffer
|
||||
jsr CC.SYM.New
|
||||
bcs .9
|
||||
|
||||
|
330
BIN/CC.S.KW.txt
330
BIN/CC.S.KW.txt
@ -53,7 +53,7 @@ CC.KW.IF.END jsr CC.GetCharNBNL
|
||||
.1 lda #'E' define ELSE Label
|
||||
jsr CC.KW.NewLabel
|
||||
bcs .99
|
||||
|
||||
|
||||
clv pop context
|
||||
rts
|
||||
*--------------------------------------
|
||||
@ -159,7 +159,7 @@ CC.KW.DO jsr CC.KW.BEGIN00
|
||||
lda #'C' define CONT Label
|
||||
jsr CC.SYM.NewA
|
||||
bcs .99
|
||||
|
||||
|
||||
jmp CC.KW.STMT
|
||||
|
||||
.99 rts
|
||||
@ -199,14 +199,14 @@ CC.KW.DO.END >LDYA L.CC.KW2.DO Check allowed KW for DO....
|
||||
|
||||
cmp #')'
|
||||
bne .9
|
||||
|
||||
|
||||
jsr CC.GetNextCharNB
|
||||
bcs .9
|
||||
|
||||
clv pop context
|
||||
clc
|
||||
rts
|
||||
|
||||
|
||||
.9 lda #E.CSYN
|
||||
sec
|
||||
.99 rts
|
||||
@ -354,10 +354,10 @@ CC.KW.SWITCH jsr CC.GetCharNB
|
||||
|
||||
tax
|
||||
bne .97
|
||||
|
||||
|
||||
cpy #SYM.T.UCHAR
|
||||
bcc .97
|
||||
|
||||
|
||||
cpy #SYM.T.FLOAT
|
||||
bcs .97
|
||||
|
||||
@ -371,10 +371,10 @@ CC.KW.SWITCH jsr CC.GetCharNB
|
||||
|
||||
jsr CC.Push push SizeOf(type)
|
||||
bcs .99
|
||||
|
||||
|
||||
jsr CC.KW.BEGIN
|
||||
bcs .99
|
||||
|
||||
|
||||
jsr CC.GetCharNB
|
||||
bcs .99
|
||||
|
||||
@ -382,10 +382,10 @@ CC.KW.SWITCH jsr CC.GetCharNB
|
||||
bne .98
|
||||
|
||||
jmp CC.KW.STMT
|
||||
|
||||
|
||||
.97 lda #E.TMISMATCH
|
||||
sec
|
||||
rts
|
||||
rts
|
||||
|
||||
.98 lda #E.CSYN
|
||||
sec
|
||||
@ -395,7 +395,7 @@ CC.KW.SWITCH.END
|
||||
lda #'B' define BREAK Label
|
||||
jsr CC.KW.NewLabel
|
||||
bcs .99
|
||||
|
||||
|
||||
clv pop context
|
||||
|
||||
.99 rts
|
||||
@ -407,7 +407,7 @@ CC.KW.CASE ldy CStackPtr
|
||||
lda (ZPCCStack),y
|
||||
cmp #10 SWITCH ??
|
||||
bne .9
|
||||
|
||||
|
||||
lda CStackPtr
|
||||
clc
|
||||
adc #7
|
||||
@ -416,13 +416,13 @@ CC.KW.CASE ldy CStackPtr
|
||||
lda (ZPCCStack),y type
|
||||
tay
|
||||
lda #0 for integral type
|
||||
|
||||
|
||||
jsr CC.EXP.Eval
|
||||
bcs .99
|
||||
|
||||
jsr CC.GetCharNB
|
||||
bcs .9
|
||||
|
||||
|
||||
cmp #':'
|
||||
bne .9
|
||||
|
||||
@ -430,7 +430,7 @@ CC.KW.CASE ldy CStackPtr
|
||||
|
||||
clc
|
||||
rts
|
||||
|
||||
|
||||
.9 lda #E.CSYN
|
||||
sec
|
||||
.99 rts
|
||||
@ -442,18 +442,18 @@ CC.KW.DEFAULT ldy CStackPtr
|
||||
lda (ZPCCStack),y
|
||||
cmp #10 SWITCH ??
|
||||
bne .9
|
||||
|
||||
|
||||
jsr CC.GetCharNB
|
||||
bcs .9
|
||||
|
||||
|
||||
cmp #':'
|
||||
bne .9
|
||||
|
||||
jsr CC.GetNextCharNB skip ':'
|
||||
|
||||
|
||||
clc
|
||||
rts
|
||||
|
||||
|
||||
.9 lda #E.CSYN
|
||||
sec
|
||||
.99 rts
|
||||
@ -462,10 +462,10 @@ CC.KW.BREAK lda #'B'
|
||||
|
||||
jsr CC.KW.LookupLabel
|
||||
bcs .9
|
||||
|
||||
|
||||
lda #$4C emit JMP break
|
||||
jmp CODE.TOABSYX
|
||||
|
||||
|
||||
.9 lda #E.CSYN
|
||||
sec
|
||||
rts
|
||||
@ -474,10 +474,10 @@ CC.KW.CONTINUE lda #'C'
|
||||
|
||||
jsr CC.KW.LookupLabel
|
||||
bcs .9
|
||||
|
||||
|
||||
lda #$4C emit JMP cont
|
||||
jmp CODE.TOABSYX
|
||||
|
||||
|
||||
.9 lda #E.CSYN
|
||||
sec
|
||||
rts
|
||||
@ -531,51 +531,275 @@ CC.KW.SIZEOF
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CC.KW.STRUCT >ENTER 4
|
||||
CC.KW.STRUCT clc
|
||||
.HS B0 BCS
|
||||
*--------------------------------------
|
||||
CC.KW.UNION sec
|
||||
stz ZPPtr2 bNewTagDef
|
||||
|
||||
ror ZPPtr2+1 bStrucUnion
|
||||
|
||||
jsr CC.GetCharNB
|
||||
bcs .99
|
||||
|
||||
ldx #SYM.SC.TAG
|
||||
>LDA.G CC.hTags
|
||||
jsr CC.SYM.NewKey
|
||||
bcs .99
|
||||
|
||||
sta (pStack) Y,A = KeyID
|
||||
tya
|
||||
ldy #1
|
||||
sta (pStack),y
|
||||
|
||||
jsr CC.SkipX
|
||||
|
||||
jsr CC.GetNextCharNB
|
||||
bcs .99
|
||||
bit bPass2
|
||||
bpl CC.KW.SU.1 Pass 1: create def
|
||||
*--------------------------------------
|
||||
CC.KW.SU.2 jsr CC.GetNextCharNB
|
||||
bcs .98
|
||||
|
||||
cmp #'{'
|
||||
bne .99
|
||||
beq .1 no TAG
|
||||
|
||||
.1 jsr CC.GetNextCharNB
|
||||
jsr CC.KW.GetTag
|
||||
bcs .99
|
||||
|
||||
jsr CC.GetNextCharNBNL
|
||||
bcs .98
|
||||
|
||||
cmp #'{'
|
||||
bne .2
|
||||
|
||||
.1 jsr CC.GetNextCharNBNL skip '{'
|
||||
|
||||
cmp #'}'
|
||||
bne .1
|
||||
|
||||
jsr CC.GetNextCharNB skip '}'
|
||||
jsr CC.GetNextCharNBNL skip '}'
|
||||
|
||||
cmp #';'
|
||||
bne .2
|
||||
|
||||
jsr CC.GetNextCharNB skip ';'
|
||||
|
||||
clc
|
||||
rts
|
||||
|
||||
.2 clc reuse buffer
|
||||
|
||||
jsr CC.SYM.Lookup
|
||||
bcs .99
|
||||
|
||||
jsr CC.GetCharNB
|
||||
bcs .98
|
||||
|
||||
cmp #','
|
||||
bne .3
|
||||
|
||||
jsr CC.GetNextCharNBNL
|
||||
bcc .2
|
||||
bcs .98
|
||||
|
||||
.3 cmp #';'
|
||||
bne .98
|
||||
|
||||
clc
|
||||
rts
|
||||
|
||||
.98 lda #E.CSYN
|
||||
sec
|
||||
.99 rts
|
||||
*--------------------------------------
|
||||
CC.KW.SU.1 ldy #SYM.T.STRUCT
|
||||
lda #0
|
||||
ldx #SYM.SC.TAG
|
||||
sec reset buffer
|
||||
jsr CC.SYM.BufInitYAX
|
||||
|
||||
jsr CC.GetNextCharNB
|
||||
bcs .98
|
||||
|
||||
cmp #'{'
|
||||
beq .30 no TAG
|
||||
|
||||
jsr CC.KW.NewTag
|
||||
bcc .20
|
||||
|
||||
jsr CC.KW.GetTag
|
||||
bcs .99
|
||||
*--------------------------------------
|
||||
.20 jsr CC.GetNextCharNBNL
|
||||
bcs .98
|
||||
|
||||
cmp #'{'
|
||||
beq .30
|
||||
|
||||
bit ZPPtr2 bNewTagDef
|
||||
bmi .98
|
||||
|
||||
bra .41 go create vars...
|
||||
*--------------------------------------
|
||||
.30 jsr CC.GetNextCharNBNL skip '{' of ';'
|
||||
bcs .98
|
||||
|
||||
cmp #'}'
|
||||
beq .38
|
||||
|
||||
>LDYA L.CC.TYPEQUAL
|
||||
jsr CC.LookupID
|
||||
bcs .98
|
||||
|
||||
cpx #4 no const nor volatile
|
||||
bcc .98
|
||||
|
||||
jsr CC.TYPE.Decl
|
||||
bcs .99
|
||||
|
||||
jsr CC.TYPE.SizeOf get sizeof in X
|
||||
|
||||
jsr CC.KW.SU.AddYAX
|
||||
bcs .99
|
||||
|
||||
jsr CC.SYM.Add0000 TODO: bitO & bitW
|
||||
bcs .99
|
||||
|
||||
jsr CC.SYM.AddName
|
||||
bcs .99
|
||||
|
||||
jsr CC.GetCharNB
|
||||
cmp #';'
|
||||
bne .98
|
||||
|
||||
bra .30
|
||||
|
||||
.38 jsr CC.GetNextCharNB skip '}'
|
||||
bcs .98
|
||||
|
||||
cmp #';'
|
||||
bne .40
|
||||
|
||||
jsr CC.GetNextCharNB skip ';'
|
||||
|
||||
bit ZPPtr2 bNewTagDef
|
||||
bpl .98 no tag & no var, error
|
||||
|
||||
jmp CC.KW.StoreTag
|
||||
*--------------------------------------
|
||||
.98 lda #E.CSYN
|
||||
sec
|
||||
.99 rts
|
||||
*--------------------------------------
|
||||
.40 bit ZPPtr2 bNewTagDef
|
||||
bpl .41
|
||||
|
||||
jsr CC.KW.StoreTag
|
||||
bcs .99
|
||||
|
||||
.41 clc reuse buffer
|
||||
|
||||
ldy #SYM.T.STRUCT
|
||||
lda #0
|
||||
jsr CC.DECL.YAC
|
||||
bcs .99
|
||||
|
||||
jsr CC.GetCharNB
|
||||
bcs .98
|
||||
|
||||
cmp #','
|
||||
bne .42
|
||||
|
||||
jsr CC.GetNextCharNBNL
|
||||
bcc .41
|
||||
bcs .98
|
||||
|
||||
.42 cmp #';'
|
||||
bne .98
|
||||
|
||||
clc
|
||||
.99 >LEAVE
|
||||
rts
|
||||
*--------------------------------------
|
||||
CC.KW.UNION
|
||||
CC.KW.SU.AddYAX jsr CC.SYM.AddWord add T/Q
|
||||
bcs .99
|
||||
|
||||
bit ZPPtr2+1 bStrucUnion
|
||||
bmi .1
|
||||
|
||||
ldy #SYM.SizeOf
|
||||
lda (ZPSymBufPtr),y
|
||||
pha
|
||||
iny
|
||||
lda (ZPSymBufPtr),y
|
||||
ply
|
||||
|
||||
jsr CC.SYM.AddWord Add Y/A Offset
|
||||
bcs .99
|
||||
|
||||
txa
|
||||
|
||||
ldy #SYM.SizeOf
|
||||
* clc
|
||||
adc (ZPSymBufPtr),y
|
||||
sta (ZPSymBufPtr),y
|
||||
bcc .99
|
||||
|
||||
iny
|
||||
lda #0
|
||||
adc (ZPSymBufPtr),y
|
||||
sta (ZPSymBufPtr),y
|
||||
|
||||
* clc
|
||||
|
||||
.99 rts
|
||||
|
||||
.1 txa
|
||||
ldy #SYM.SizeOf
|
||||
cmp (ZPSymBufPtr),y
|
||||
bcs .2
|
||||
|
||||
sta (ZPSymBufPtr),y
|
||||
|
||||
.2 jmp CC.SYM.Add0000 Add Y/A Offset (always 0 for union)
|
||||
*--------------------------------------
|
||||
CC.KW.ENUM
|
||||
lda #E.CSYN
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CC.KW.NewTag >LDA.G CC.hTags
|
||||
jsr CC.SYM.NewKey
|
||||
bcs .9
|
||||
|
||||
>STYA ZPPtr1 TagID
|
||||
dec ZPPtr2 bNewTagDef = true
|
||||
|
||||
jsr CC.SkipX
|
||||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
CC.KW.GetTag >PUSHB.G CC.hTags
|
||||
>PUSHW ZPLineBufPtr
|
||||
|
||||
>SYSCALL SListLookup
|
||||
bcs .9
|
||||
|
||||
phy Y,A = KeyID
|
||||
pha
|
||||
|
||||
jsr CC.SkipX X = KeyLen
|
||||
|
||||
>PUSHB.G CC.hTags
|
||||
pla
|
||||
>PUSHA
|
||||
pla
|
||||
>PUSHA
|
||||
>PUSHW ZPSymBufPtr
|
||||
>PUSHWI 65535 all
|
||||
>PUSHWZ From Start
|
||||
>SYSCALL SListGetData
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
CC.KW.StoreTag >PUSHB.G CC.hTags
|
||||
>PUSHW ZPPtr1
|
||||
>PUSHW ZPSymBufPtr
|
||||
>PUSHBI 0
|
||||
ldy #SYM.DefSize
|
||||
lda (ZPSymBufPtr),y
|
||||
>PUSHA
|
||||
|
||||
>SYSCALL SListAddData
|
||||
rts
|
||||
*--------------------------------------
|
||||
CC.KW.BEGIN00 lda #0
|
||||
jsr CC.Push no T/Q
|
||||
bcs CC.KW.BEGIN.RTS
|
||||
|
||||
|
||||
jsr CC.Push
|
||||
bcs CC.KW.BEGIN.RTS
|
||||
|
||||
@ -670,7 +894,7 @@ CC.KW.LookupLabel
|
||||
|
||||
lda (ZPCCStack),y
|
||||
bmi .9 f()
|
||||
|
||||
|
||||
iny
|
||||
iny
|
||||
iny
|
||||
@ -680,12 +904,12 @@ CC.KW.LookupLabel
|
||||
iny
|
||||
lda (ZPCCStack),y
|
||||
iny
|
||||
|
||||
|
||||
iny
|
||||
iny
|
||||
|
||||
|
||||
sty ArgIndex
|
||||
|
||||
|
||||
ply
|
||||
>STYA.G CC.CPSPFX+2
|
||||
|
||||
@ -693,10 +917,10 @@ CC.KW.LookupLabel
|
||||
pha
|
||||
jsr CC.SYM.LookupA
|
||||
bcs .1
|
||||
|
||||
|
||||
pla
|
||||
.8 rts
|
||||
|
||||
|
||||
.9 pla
|
||||
lda #E.CSYN
|
||||
sec
|
||||
|
@ -26,6 +26,11 @@ CC.Link >LDYA L.MSG.LINKING
|
||||
>SYSCALL SListGetData
|
||||
bcs .99
|
||||
|
||||
ldy #SYM.SC
|
||||
lda (ZPSymBufPtr),y
|
||||
cmp #SYM.SC.TYPEDEF
|
||||
bcs .6
|
||||
|
||||
ldy #SYM.Addr+1
|
||||
lda (ZPSymBufPtr),y
|
||||
dey
|
||||
|
@ -28,7 +28,30 @@ CC.STMT jsr CC.GetCharNB
|
||||
|
||||
jmp CC.SYM.LookupFree
|
||||
|
||||
.60 jsr STMT.SetVar
|
||||
.60 ldy #SYM.SC
|
||||
lda (ZPLookupSymPtr),y
|
||||
cmp #SYM.SC.TYPEDEF
|
||||
bne .61
|
||||
|
||||
jsr CC.GetNextCharNB
|
||||
bcs .9
|
||||
|
||||
ldy #SYM.Q
|
||||
lda (ZPLookupSymPtr),y
|
||||
pha
|
||||
lda (ZPLookupSymPtr)
|
||||
pha
|
||||
|
||||
jsr CC.SYM.LookupFree
|
||||
|
||||
ply
|
||||
pla
|
||||
|
||||
sec Reset Buffer
|
||||
|
||||
jmp CC.DECL.YAC
|
||||
|
||||
.61 jsr STMT.SetVar
|
||||
bcs .99
|
||||
|
||||
jmp CC.SYM.LookupFree
|
||||
|
245
BIN/CC.S.SYM.txt
245
BIN/CC.S.SYM.txt
@ -2,16 +2,18 @@ NEW
|
||||
AUTO 3,1
|
||||
*--------------------------------------
|
||||
* Input : ZPLineBufPtr, Y,A = T/Q, X = SC
|
||||
* CS : Reset Buffer
|
||||
* CC : Reuse Buffer
|
||||
* Output : Y,A = VarID
|
||||
*--------------------------------------
|
||||
CC.SYM.New >STYA ZPPtr2 T/Q
|
||||
stx ZPPtr3 SC
|
||||
|
||||
bit bPass2
|
||||
bpl CC.SYM.New1
|
||||
bpl CC.SYM.New.1
|
||||
|
||||
bit bLocalScope
|
||||
bmi CC.SYM.New1
|
||||
bmi CC.SYM.New.1
|
||||
|
||||
>PUSHB.G CC.hScopes Global Scope
|
||||
>PUSHW ZPLineBufPtr
|
||||
@ -29,11 +31,13 @@ CC.SYM.New >STYA ZPPtr2 T/Q
|
||||
>PUSHWI 65535 all
|
||||
>PUSHWZ From Start
|
||||
>SYSCALL SListGetData
|
||||
bcc CC.SYM.New2
|
||||
bcc CC.SYM.New.2
|
||||
|
||||
CC.SYM.New.9 rts Y,A = SymSize
|
||||
*--------------------------------------
|
||||
CC.SYM.New1 ldy ScopeIdx
|
||||
CC.SYM.New.1 jsr CC.SYM.BufInitYAX set buf according C
|
||||
|
||||
ldy ScopeIdx
|
||||
lda (pData),y
|
||||
jsr CC.SYM.NewKey
|
||||
bcs CC.SYM.New.9
|
||||
@ -41,34 +45,21 @@ CC.SYM.New1 ldy ScopeIdx
|
||||
>STYA.G CC.SymID Y,A = KeyID
|
||||
|
||||
jsr CC.SkipX X = KeyLen
|
||||
*--------------------------------------
|
||||
CC.SYM.New.2 jsr CC.GetCharNB
|
||||
bcs .98
|
||||
|
||||
lda ZPPtr2
|
||||
sta (ZPSymBufPtr) #SYM.T
|
||||
|
||||
lda ZPPtr2+1
|
||||
ldy #SYM.Q
|
||||
sta (ZPSymBufPtr),y
|
||||
|
||||
lda ZPPtr3
|
||||
iny #SYM.SC
|
||||
sta (ZPSymBufPtr),y
|
||||
|
||||
iny
|
||||
lda #0
|
||||
|
||||
.1 sta (ZPSymBufPtr),y
|
||||
iny
|
||||
cpy #SYM.Def
|
||||
cmp #';'
|
||||
bne .1
|
||||
|
||||
tya
|
||||
ldy #SYM.DefSize
|
||||
sta (ZPSymBufPtr),y
|
||||
*--------------------------------------
|
||||
CC.SYM.New2 jsr CC.GetCharNB
|
||||
bcs CC.SYM.SetAddr
|
||||
lda ZPPtr3
|
||||
cmp #SYM.SC.TYPEDEF
|
||||
bne CC.SYM.SetAddr
|
||||
|
||||
cmp #'('
|
||||
clc
|
||||
rts
|
||||
|
||||
.1 cmp #'('
|
||||
bne CC.SYM.NewV
|
||||
|
||||
ldy #SYM.Q
|
||||
@ -77,6 +68,10 @@ CC.SYM.New2 jsr CC.GetCharNB
|
||||
sta (ZPSymBufPtr),y
|
||||
|
||||
jmp CC.F.Decl
|
||||
|
||||
.98 lda #E.CSYN
|
||||
sec
|
||||
.99 rts
|
||||
*--------------------------------------
|
||||
CC.SYM.NewV cmp #'['
|
||||
bne CC.SYM.SetAddr
|
||||
@ -98,7 +93,7 @@ CC.SYM.NewV cmp #'['
|
||||
sta (ZPSymBufPtr),y
|
||||
|
||||
jsr CC.GetNextCharNB Skip [
|
||||
bcs .99
|
||||
bcs .98
|
||||
|
||||
cmp #']'
|
||||
bne .2
|
||||
@ -106,22 +101,24 @@ CC.SYM.NewV cmp #'['
|
||||
ldy #SYM.Q
|
||||
lda (ZPSymBufPtr),y
|
||||
and #SYM.Q.PPPOINTER
|
||||
beq .99 [] only allowed for *
|
||||
beq .98 [] only allowed for *
|
||||
|
||||
jsr CC.SYM.Add0000 set as [0] (deref)
|
||||
bcs .99
|
||||
|
||||
>LDYAI 0 set as [0] (deref)
|
||||
jsr CC.SYM.AddWord
|
||||
bra .3
|
||||
|
||||
.2 jsr CC.EXP.IntConst
|
||||
bcs .99
|
||||
bcs .98
|
||||
|
||||
jsr CC.SYM.AddWord
|
||||
|
||||
jsr CC.GetCharNB
|
||||
bcs .99
|
||||
|
||||
jsr CC.GetCharNB
|
||||
bcs .98
|
||||
|
||||
cmp #']'
|
||||
bne .99
|
||||
bne .98
|
||||
|
||||
.3 jsr CC.GetNextCharNB Skip ]
|
||||
bcs CC.SYM.SetAddr
|
||||
@ -133,15 +130,22 @@ CC.SYM.NewV cmp #'['
|
||||
lda (ZPSymBufPtr),y
|
||||
and #SYM.Q.AAARRAY
|
||||
cmp #SYM.Q.AAARRAY
|
||||
beq .99 already [][][]
|
||||
bne .1 already [][][] ?
|
||||
|
||||
bra .1
|
||||
|
||||
.99 lda #E.CSYN
|
||||
.98 lda #E.CSYN
|
||||
sec
|
||||
.9 rts
|
||||
.99 rts
|
||||
*--------------------------------------
|
||||
CC.SYM.SetAddr ldy #SYM.Q
|
||||
CC.SYM.SetAddr ldy #SYM.SizeOf
|
||||
lda (ZPSymBufPtr),y
|
||||
iny
|
||||
ora (ZPSymBufPtr),y
|
||||
bne .1
|
||||
|
||||
jsr CC.SYM.GetSymSizeOfInAXC
|
||||
jsr CC.SYM.SetSizeOf
|
||||
|
||||
.1 ldy #SYM.Q
|
||||
lda (ZPSymBufPtr),y
|
||||
and #SYM.Q.FUNC
|
||||
bne .9
|
||||
@ -157,14 +161,7 @@ CC.SYM.SetAddr ldy #SYM.Q
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CC.SYM.SetAddrG jsr CC.SYM.GetSymSizeOfInAXC
|
||||
jsr CC.SYM.SetSizeOf
|
||||
|
||||
* clc / sec A,X=Size, CS if pointer
|
||||
|
||||
pha
|
||||
|
||||
ldy #SYM.Addr
|
||||
CC.SYM.SetAddrG ldy #SYM.Addr
|
||||
|
||||
lda ZPCCData
|
||||
sta (ZPSymBufPtr),y
|
||||
@ -174,22 +171,21 @@ CC.SYM.SetAddrG jsr CC.SYM.GetSymSizeOfInAXC
|
||||
lda ZPCCData+1
|
||||
sta (ZPSymBufPtr),y
|
||||
|
||||
pla
|
||||
ldy #SYM.SizeOf
|
||||
lda (ZPSymBufPtr),y
|
||||
clc
|
||||
adc ZPCCData
|
||||
sta ZPCCData
|
||||
|
||||
txa
|
||||
iny
|
||||
lda (ZPSymBufPtr),y
|
||||
adc ZPCCData+1
|
||||
sta ZPCCData+1
|
||||
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
CC.SYM.SetAddrL jsr CC.SYM.GetSymSizeOfInAXC
|
||||
jsr CC.SYM.SetSizeOf
|
||||
|
||||
ldy #SYM.SizeOf+1
|
||||
CC.SYM.SetAddrL ldy #SYM.SizeOf+1
|
||||
lda (ZPSymBufPtr),y
|
||||
bne .9
|
||||
|
||||
@ -197,8 +193,7 @@ CC.SYM.SetAddrL jsr CC.SYM.GetSymSizeOfInAXC
|
||||
|
||||
lda (ZPSymBufPtr),y
|
||||
|
||||
* clc / sec A,X=Size, CS if pointer
|
||||
clc
|
||||
clc
|
||||
adc LocalPtr
|
||||
sta LocalPtr
|
||||
bcs .9
|
||||
@ -206,7 +201,8 @@ CC.SYM.SetAddrL jsr CC.SYM.GetSymSizeOfInAXC
|
||||
ldy #SYM.Addr
|
||||
sta (ZPSymBufPtr),y
|
||||
|
||||
jsr CC.SYM.GetSymSizeOfInAXC
|
||||
ldy #SYM.SizeOf
|
||||
lda (ZPSymBufPtr),y
|
||||
jsr CODE.nAddLocal
|
||||
|
||||
clc
|
||||
@ -216,6 +212,35 @@ CC.SYM.SetAddrL jsr CC.SYM.GetSymSizeOfInAXC
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CC.SYM.BufInitYAX
|
||||
pha
|
||||
tya
|
||||
sta (ZPSymBufPtr) #SYM.T
|
||||
|
||||
pla
|
||||
ldy #SYM.Q
|
||||
sta (ZPSymBufPtr),y
|
||||
|
||||
txa
|
||||
iny #SYM.SC
|
||||
sta (ZPSymBufPtr),y
|
||||
|
||||
bcc .8 DONT reset buffer
|
||||
|
||||
iny
|
||||
lda #0
|
||||
|
||||
.1 sta (ZPSymBufPtr),y
|
||||
iny
|
||||
cpy #SYM.Def
|
||||
bne .1
|
||||
|
||||
tya
|
||||
ldy #SYM.DefSize
|
||||
sta (ZPSymBufPtr),y
|
||||
|
||||
.8 rts
|
||||
*--------------------------------------
|
||||
CC.SYM.PushAddr ldy #SYM.SC
|
||||
lda (ZPSymBufPtr),y
|
||||
beq .1 SYM.SC.STATIC
|
||||
@ -291,7 +316,7 @@ CC.SYM.GetAddr1 ldy #SYM.SC
|
||||
|
||||
>LDYA L.PCC.GetIAddr1
|
||||
jmp CODE.EmitPCC
|
||||
|
||||
|
||||
.2 >LDYA L.PCC.GetUAddr1
|
||||
jmp CODE.EmitPCC
|
||||
|
||||
@ -344,25 +369,87 @@ CC.SYM.NewKey >PUSHA
|
||||
|
||||
.9 rts Y,A = KeyID, X = KeyLen
|
||||
*--------------------------------------
|
||||
CC.SYM.AddWord pha
|
||||
phy
|
||||
CC.SYM.Add0000 >LDYAI 0
|
||||
*--------------------------------------
|
||||
CC.SYM.AddWord phy
|
||||
pha
|
||||
|
||||
ldy #SYM.DefSize
|
||||
lda (ZPSymBufPtr),y
|
||||
pha
|
||||
|
||||
inc
|
||||
inc
|
||||
clc
|
||||
adc #2
|
||||
bcs .9
|
||||
|
||||
sta (ZPSymBufPtr),y
|
||||
tay
|
||||
|
||||
dey
|
||||
|
||||
pla A
|
||||
sta (ZPSymBufPtr),y
|
||||
|
||||
ply
|
||||
|
||||
pla
|
||||
dey
|
||||
|
||||
pla Y
|
||||
pha
|
||||
sta (ZPSymBufPtr),y
|
||||
iny
|
||||
lda (ZPSymBufPtr),y get back A
|
||||
ply get back Y
|
||||
|
||||
* clc
|
||||
rts
|
||||
|
||||
.9 pla
|
||||
pla
|
||||
lda #E.BUF
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CC.SYM.AddName jsr CC.GetCharNB
|
||||
|
||||
bcs .98
|
||||
|
||||
jsr CC.IsLetter
|
||||
bcs .98
|
||||
|
||||
.1 jsr CC.SYM.AddByte
|
||||
bcs .99
|
||||
|
||||
jsr CC.GetNextCharNB
|
||||
bcs .98
|
||||
|
||||
jsr CC.IsLetterOrDigit
|
||||
bcc .1
|
||||
|
||||
lda #0
|
||||
bra CC.SYM.AddByte
|
||||
|
||||
.98 lda #E.CSYN
|
||||
sec
|
||||
.99 rts
|
||||
*--------------------------------------
|
||||
CC.SYM.AddByte pha
|
||||
|
||||
ldy #SYM.DefSize
|
||||
lda (ZPSymBufPtr),y
|
||||
|
||||
inc
|
||||
beq .9
|
||||
|
||||
sta (ZPSymBufPtr),y
|
||||
dec
|
||||
tay
|
||||
pla
|
||||
sta (ZPSymBufPtr),y
|
||||
CC.SYM.AddWord.RTS
|
||||
|
||||
clc
|
||||
rts
|
||||
|
||||
.9 pla
|
||||
lda #E.BUF
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CC.SYM.NewCPSID >LDYA.G CC.CPSID
|
||||
@ -372,19 +459,19 @@ CC.SYM.NewCPSID >LDYA.G CC.CPSID
|
||||
inc
|
||||
cmp #'Z'+1
|
||||
bne .1
|
||||
|
||||
|
||||
dey CC.CPSID
|
||||
lda (pData),y
|
||||
inc
|
||||
cmp #'Z'+1
|
||||
beq .9
|
||||
|
||||
|
||||
sta (pData),y
|
||||
|
||||
lda #'A'
|
||||
iny CC.CPSID+1
|
||||
|
||||
.1 sta (pData),y
|
||||
|
||||
.1 sta (pData),y
|
||||
|
||||
clc
|
||||
rts
|
||||
@ -402,7 +489,7 @@ CC.SYM.NewA bit bPass2
|
||||
>PUSHEA.G CC.CPSPFX
|
||||
|
||||
>SYSCALL SListNewKey
|
||||
bcs CC.SYM.AddWord.RTS
|
||||
bcs .99
|
||||
|
||||
>STYA.G CC.SymID Y,A = KeyID
|
||||
|
||||
@ -647,7 +734,7 @@ CC.SYM.LookupCheckTQ
|
||||
eor (ZPLookupSymPtr),y
|
||||
and #$F8 ignore VOLATILE|FUNC|FASTCALL
|
||||
bne .9
|
||||
|
||||
|
||||
clc
|
||||
rts
|
||||
|
||||
@ -661,16 +748,16 @@ CC.SYM.PopValue jsr CC.SYM.GetYASizeOfInAXC
|
||||
tax
|
||||
dex
|
||||
bne .1
|
||||
|
||||
|
||||
>LDYA L.PCC.PopValue1
|
||||
jmp CODE.EmitPCC
|
||||
|
||||
|
||||
.1 cpx #1
|
||||
bne .2
|
||||
|
||||
|
||||
>LDYA L.PCC.PopValue2
|
||||
jmp CODE.EmitPCC
|
||||
|
||||
|
||||
.2 jsr CODE.LDXI
|
||||
bcs .9
|
||||
|
||||
|
@ -7,7 +7,7 @@ CC.TYPE.Decl >ENTER 2
|
||||
ldy #1
|
||||
sta (pStack),y Qual
|
||||
|
||||
jsr .7
|
||||
jsr .8
|
||||
bcs .99
|
||||
|
||||
ldy #1
|
||||
@ -22,7 +22,7 @@ CC.TYPE.Decl >ENTER 2
|
||||
.99 >LEAVE
|
||||
rts
|
||||
|
||||
.7 jmp (J.CC.TYPEQUAL,x)
|
||||
.8 jmp (J.CC.TYPEQUAL,x)
|
||||
*--------------------------------------
|
||||
* Type Declaration keywords
|
||||
*--------------------------------------
|
||||
|
460
BIN/CC.S.txt
460
BIN/CC.S.txt
@ -622,22 +622,22 @@ CS.END
|
||||
*--------------------------------------
|
||||
* Initialized DATA
|
||||
*--------------------------------------
|
||||
MSG.GREETINGS .AZ "\r\nA2osX C Compiler %d.%d\r\n\r\n"
|
||||
MSG.USAGE .AS "Usage : CC <option> srcfile.c dstfile\r\n"
|
||||
.AS " -D : Debug Mode\r\n"
|
||||
.AS " -T : Trace On\r\n"
|
||||
.AZ " -L Libname1 -O Libname2 ...\r\n"
|
||||
MSG.READING .AZ "*** Reading file: %s\r\n"
|
||||
MSG.LINKING .AZ "*** Linking..."
|
||||
MSG.LINKING2 .AZ "*** %H:%18s T/Q=%h/%h, SC=%h, Def=%h, SizeOf=%H, @=%H\r\n"
|
||||
MSG.GENERATING .AZ "*** Generating: %s\r\n"
|
||||
MSG.DEBUG .AS "*** pCode=%H, pConst=%H, pData=%H, pStack=%H\r\n"
|
||||
.AZ " LSP=%h, CSP=%H:%h>%h:%h, ScopeIdx=%h\r\n"
|
||||
MSG.TRACE .AZ "%5D> %s\r\n"
|
||||
MSG.RTSTK .AZ "<pBase=%H, pVar=%H, (pVar)=%H, pStack=%H>\r\n"
|
||||
MSG.ERROR .AZ " %s^\r\n"
|
||||
MSG.SUMMARY .AZ "*** Compilation OK : Code size=%5D, Const size=%5D, uData size=%5D\r\n"
|
||||
MSG.NOMAIN .AZ "*** No 'main()' function defined."
|
||||
MSG.GREETINGS .CZ "\r\nA2osX C Compiler %d.%d\r\n\r\n"
|
||||
MSG.USAGE .CS "Usage : CC <option> srcfile.c dstfile\r\n"
|
||||
.CS " -D : Debug Mode\r\n"
|
||||
.CS " -T : Trace On\r\n"
|
||||
.CZ " -L Libname1 -L Libname2 ...\r\n"
|
||||
MSG.READING .CZ "*** Reading file: %s\r\n"
|
||||
MSG.LINKING .CZ "*** Linking..."
|
||||
MSG.LINKING2 .CZ "*** %H:%18s T/Q=%h/%h, SC=%h, Def=%h, SizeOf=%H, @=%H\r\n"
|
||||
MSG.GENERATING .CZ "*** Generating: %s\r\n"
|
||||
MSG.DEBUG .CS "*** pCode=%H, pConst=%H, pData=%H, pStack=%H\r\n"
|
||||
.CZ " LSP=%h, CSP=%H:%h>%h:%h, ScopeIdx=%h\r\n"
|
||||
MSG.TRACE .CZ "%5D> %s\r\n"
|
||||
MSG.RTSTK .CZ "<pBase=%H, pVar=%H, (pVar)=%H, pStack=%H>\r\n"
|
||||
MSG.ERROR .CZ " %s^\r\n"
|
||||
MSG.SUMMARY .CZ "*** Compilation OK : Code size=%5D, Const size=%5D, uData size=%5D\r\n"
|
||||
MSG.NOMAIN .CZ "*** No 'main()' function defined."
|
||||
*--------------------------------------
|
||||
OptionList .AS "DdTtLl"
|
||||
OptionVars .DA #bDebug,#bDebug,#bTrace,#bTrace
|
||||
@ -657,38 +657,38 @@ CC.OPChars.Cnt .EQ *-CC.OPChars
|
||||
*--------------------------------------
|
||||
* Assignment Operators: = += -= *= /= %= <<= >>= &= ^= |=
|
||||
*--------------------------------------
|
||||
CC.AOPS >PSTR "="
|
||||
>PSTR "+="
|
||||
>PSTR "-="
|
||||
>PSTR "*="
|
||||
>PSTR "/="
|
||||
>PSTR "%="
|
||||
>PSTR "<<="
|
||||
>PSTR ">>="
|
||||
>PSTR "&="
|
||||
>PSTR "^="
|
||||
>PSTR "!="
|
||||
CC.AOPS .PS "="
|
||||
.PS "+="
|
||||
.PS "-="
|
||||
.PS "*="
|
||||
.PS "/="
|
||||
.PS "%="
|
||||
.PS "<<="
|
||||
.PS ">>="
|
||||
.PS "&="
|
||||
.PS "^="
|
||||
.PS "!="
|
||||
.HS 00
|
||||
*--------------------------------------
|
||||
* Pre Operators: & * + - ! ~ ++ --
|
||||
*--------------------------------------
|
||||
CC.PREOPS >PSTR "&" ref
|
||||
>PSTR "*" deref
|
||||
>PSTR "+" abs
|
||||
>PSTR "-" negate
|
||||
>PSTR "!" logical not
|
||||
>PSTR "~" bitwise not
|
||||
>PSTR "++" pre increase
|
||||
>PSTR "--" pre decrease
|
||||
CC.PREOPS .PS "&" ref
|
||||
.PS "*" deref
|
||||
.PS "+" abs
|
||||
.PS "-" negate
|
||||
.PS "!" logical not
|
||||
.PS "~" bitwise not
|
||||
.PS "++" pre increase
|
||||
.PS "--" pre decrease
|
||||
.HS 00
|
||||
*--------------------------------------
|
||||
* Post Operators: ++ --
|
||||
*--------------------------------------
|
||||
CC.POSTOPS >PSTR "++"
|
||||
>PSTR "--"
|
||||
>PSTR "["
|
||||
>PSTR "."
|
||||
>PSTR "->"
|
||||
CC.POSTOPS .PS "++"
|
||||
.PS "--"
|
||||
.PS "["
|
||||
.PS "."
|
||||
.PS "->"
|
||||
.HS 00
|
||||
*-- Binary ---- H to L precedence -----
|
||||
* Arithmetic Operators: * / %
|
||||
@ -698,77 +698,77 @@ CC.POSTOPS >PSTR "++"
|
||||
* Bitwise Operators: & | ^ ~
|
||||
* Logical Operators: && ||
|
||||
*--------------------------------------
|
||||
CC.BOPS >PSTR "*"
|
||||
>PSTR "/"
|
||||
>PSTR "%"
|
||||
>PSTR "+"
|
||||
>PSTR "-"
|
||||
>PSTR "<<"
|
||||
>PSTR ">>"
|
||||
>PSTR "<"
|
||||
>PSTR "<="
|
||||
>PSTR ">"
|
||||
>PSTR ">="
|
||||
>PSTR "=="
|
||||
>PSTR "!="
|
||||
>PSTR "&"
|
||||
>PSTR "|"
|
||||
>PSTR "^"
|
||||
>PSTR "&&"
|
||||
>PSTR "||"
|
||||
CC.BOPS .PS "*"
|
||||
.PS "/"
|
||||
.PS "%"
|
||||
.PS "+"
|
||||
.PS "-"
|
||||
.PS "<<"
|
||||
.PS ">>"
|
||||
.PS "<"
|
||||
.PS "<="
|
||||
.PS ">"
|
||||
.PS ">="
|
||||
.PS "=="
|
||||
.PS "!="
|
||||
.PS "&"
|
||||
.PS "|"
|
||||
.PS "^"
|
||||
.PS "&&"
|
||||
.PS "||"
|
||||
.HS 00
|
||||
*--------------------------------------
|
||||
* Reserved Directives:
|
||||
*--------------------------------------
|
||||
CC.DIRS >PSTR "define"
|
||||
>PSTR "include"
|
||||
CC.DIRS .PS "define"
|
||||
.PS "include"
|
||||
.HS 00
|
||||
*--------------------------------------
|
||||
* Reserved Keywords:
|
||||
*--------------------------------------
|
||||
CC.KW >PSTR "if"
|
||||
>PSTR "while"
|
||||
>PSTR "else"
|
||||
>PSTR "do"
|
||||
>PSTR "for"
|
||||
>PSTR "switch"
|
||||
>PSTR "case"
|
||||
>PSTR "default"
|
||||
>PSTR "break"
|
||||
>PSTR "continue"
|
||||
>PSTR "return"
|
||||
>PSTR "sizeof"
|
||||
>PSTR "struct"
|
||||
>PSTR "union"
|
||||
>PSTR "enum"
|
||||
CC.KW .PS "if"
|
||||
.PS "while"
|
||||
.PS "else"
|
||||
.PS "do"
|
||||
.PS "for"
|
||||
.PS "switch"
|
||||
.PS "case"
|
||||
.PS "default"
|
||||
.PS "break"
|
||||
.PS "continue"
|
||||
.PS "return"
|
||||
.PS "sizeof"
|
||||
.PS "struct"
|
||||
.PS "union"
|
||||
.PS "enum"
|
||||
.HS 00
|
||||
CC.KW2.IF >PSTR "else"
|
||||
CC.KW2.IF .PS "else"
|
||||
.HS 00
|
||||
CC.KW2.DO >PSTR "while"
|
||||
CC.KW2.DO .PS "while"
|
||||
.HS 00
|
||||
*--------------------------------------
|
||||
CC.SCSPEC >PSTR "auto"
|
||||
>PSTR "register"
|
||||
>PSTR "static"
|
||||
>PSTR "extern"
|
||||
>PSTR "typedef"
|
||||
CC.SCSPEC .PS "auto"
|
||||
.PS "register"
|
||||
.PS "static"
|
||||
.PS "extern"
|
||||
.PS "typedef"
|
||||
.HS 00
|
||||
*--------------------------------------
|
||||
CC.TYPEQUAL >PSTR "const" ALL
|
||||
>PSTR "volatile"
|
||||
CC.TYPESPEC >PSTR "signed" char,int,long
|
||||
>PSTR "unsigned" char,int,long
|
||||
>PSTR "short" int
|
||||
CC.TYPES >PSTR "void"
|
||||
>PSTR "char"
|
||||
>PSTR "int"
|
||||
>PSTR "long"
|
||||
>PSTR "float"
|
||||
CC.TYPEQUAL .PS "const" ALL
|
||||
.PS "volatile"
|
||||
CC.TYPESPEC .PS "signed" char,int,long
|
||||
.PS "unsigned" char,int,long
|
||||
.PS "short" int
|
||||
CC.TYPES .PS "void"
|
||||
.PS "char"
|
||||
.PS "int"
|
||||
.PS "long"
|
||||
.PS "float"
|
||||
.HS 00
|
||||
*--------------------------------------
|
||||
CC.Type2FPU .DA #FPU.wMUL,#FPU.iMUL,#FPU.uMUL,#FPU.lMUL,#FPU.fMUL
|
||||
*--------------------------------------
|
||||
CC.FTYPES >PSTR "fastcall"
|
||||
CC.FTYPES .PS "fastcall"
|
||||
* .HS 00
|
||||
*--------------------------------------
|
||||
CC.TYPESIZE .HS 0001010202040405
|
||||
@ -778,281 +778,281 @@ CC.MAIN .AZ "main"
|
||||
CC.MAIN.DEF .DA #SYM.T.SINT,#0,#SYM.T.SINT,#0,#SYM.T.UCHAR,#SYM.Q.PPOINTER,0
|
||||
CC.MAIN.DEF.LEN .EQ *-CC.MAIN.DEF
|
||||
*--------------------------------------
|
||||
CC.SYSCALL >PSTR "chtyp"
|
||||
CC.SYSCALL .PS "chtyp"
|
||||
.DA #SYS.ChTyp
|
||||
>PSTR "chmod"
|
||||
.PS "chmod"
|
||||
.DA #SYS.ChMod
|
||||
>PSTR "fstat"
|
||||
.PS "fstat"
|
||||
.DA #SYS.FStat
|
||||
>PSTR "stat"
|
||||
.PS "stat"
|
||||
.DA #SYS.Stat
|
||||
>PSTR "mkdir"
|
||||
.PS "mkdir"
|
||||
.DA #SYS.MKDir
|
||||
>PSTR "mknod"
|
||||
.PS "mknod"
|
||||
.DA #SYS.MKNod
|
||||
>PSTR "mkfifo"
|
||||
.PS "mkfifo"
|
||||
.DA #SYS.MKFIFO
|
||||
>PSTR "pipe"
|
||||
.PS "pipe"
|
||||
.DA #SYS.Pipe
|
||||
>PSTR "opendir"
|
||||
.PS "opendir"
|
||||
.DA #SYS.OpenDir
|
||||
>PSTR "readdir"
|
||||
.PS "readdir"
|
||||
.DA #SYS.ReadDir
|
||||
>PSTR "closedir"
|
||||
.PS "closedir"
|
||||
.DA #SYS.CloseDir
|
||||
>PSTR "open"
|
||||
.PS "open"
|
||||
.DA #SYS.Open
|
||||
>PSTR "close"
|
||||
.PS "close"
|
||||
.DA #SYS.Close
|
||||
>PSTR "read"
|
||||
.PS "read"
|
||||
.DA #SYS.Read
|
||||
>PSTR "write"
|
||||
.PS "write"
|
||||
.DA #SYS.Write
|
||||
>PSTR "chown"
|
||||
.PS "chown"
|
||||
.DA #SYS.ChOwn
|
||||
>PSTR "fputc"
|
||||
.PS "fputc"
|
||||
.DA #SYS.FPutC
|
||||
>PSTR "putchar"
|
||||
.PS "putchar"
|
||||
.DA #SYS.PutChar
|
||||
>PSTR "getc"
|
||||
.PS "getc"
|
||||
.DA #SYS.GetC
|
||||
>PSTR "getchar"
|
||||
.PS "getchar"
|
||||
.DA #SYS.GetChar
|
||||
>PSTR "fputs"
|
||||
.PS "fputs"
|
||||
.DA #SYS.FPutS
|
||||
>PSTR "puts"
|
||||
.PS "puts"
|
||||
.DA #SYS.PutS
|
||||
>PSTR "fgets"
|
||||
.PS "fgets"
|
||||
.DA #SYS.FGetS
|
||||
>PSTR "ungetc"
|
||||
.PS "ungetc"
|
||||
.DA #SYS.UngetC
|
||||
>PSTR "fopen"
|
||||
.PS "fopen"
|
||||
.DA #SYS.FOpen
|
||||
>PSTR "fclose"
|
||||
.PS "fclose"
|
||||
.DA #SYS.FClose
|
||||
>PSTR "fread"
|
||||
.PS "fread"
|
||||
.DA #SYS.FRead
|
||||
>PSTR "fwrite"
|
||||
.PS "fwrite"
|
||||
.DA #SYS.FWrite
|
||||
>PSTR "fflush"
|
||||
.PS "fflush"
|
||||
.DA #SYS.FFlush
|
||||
>PSTR "fseek"
|
||||
.PS "fseek"
|
||||
.DA #SYS.FSeek
|
||||
>PSTR "ftell"
|
||||
.PS "ftell"
|
||||
.DA #SYS.FTell
|
||||
>PSTR "feof"
|
||||
.PS "feof"
|
||||
.DA #SYS.FEOF
|
||||
>PSTR "remove"
|
||||
.PS "remove"
|
||||
.DA #SYS.Remove
|
||||
>PSTR "rename"
|
||||
.PS "rename"
|
||||
.DA #SYS.Rename
|
||||
>PSTR "printf"
|
||||
.PS "printf"
|
||||
.DA #SYS.PrintF
|
||||
>PSTR "fprintf"
|
||||
.PS "fprintf"
|
||||
.DA #SYS.FPrintF
|
||||
>PSTR "sprintf"
|
||||
.PS "sprintf"
|
||||
.DA #SYS.SPrintF
|
||||
>PSTR "scanf"
|
||||
.PS "scanf"
|
||||
.DA #SYS.ScanF
|
||||
>PSTR "fscanf"
|
||||
.PS "fscanf"
|
||||
.DA #SYS.FScanF
|
||||
>PSTR "sscanf"
|
||||
.PS "sscanf"
|
||||
.DA #SYS.SScanF
|
||||
* >PSTR "$50"
|
||||
* .PS "$50"
|
||||
* .DA #0
|
||||
* >PSTR "$52"
|
||||
* .PS "$52"
|
||||
* .DA #0
|
||||
* >PSTR "$54"
|
||||
* .PS "$54"
|
||||
* .DA #0
|
||||
* >PSTR "$56"
|
||||
* .PS "$56"
|
||||
* .DA #0
|
||||
* >PSTR "$58"
|
||||
* .PS "$58"
|
||||
* .DA #0
|
||||
* >PSTR "$5A"
|
||||
* .PS "$5A"
|
||||
* .DA #0
|
||||
* >PSTR "$5C"
|
||||
* .PS "$5C"
|
||||
* .DA #0
|
||||
>PSTR "setattr"
|
||||
.PS "setattr"
|
||||
.DA #SYS.SetAttr
|
||||
* >PSTR "mount"
|
||||
* .PS "mount"
|
||||
* .DA #0
|
||||
* >PSTR "umount"
|
||||
* .PS "umount"
|
||||
* .DA #0
|
||||
* >PSTR "online"
|
||||
* .PS "online"
|
||||
* .DA #0
|
||||
* >PSTR "getstkobj"
|
||||
* .PS "getstkobj"
|
||||
* .DA #0
|
||||
* >PSTR "shift"
|
||||
* .PS "shift"
|
||||
* .DA #0
|
||||
* >PSTR "argv"
|
||||
* .PS "argv"
|
||||
* .DA #0
|
||||
* >PSTR "argvDup"
|
||||
* .PS "argvDup"
|
||||
* .DA #0
|
||||
* >PSTR "geterrmsg"
|
||||
* .PS "geterrmsg"
|
||||
* .DA #0
|
||||
>PSTR "atof"
|
||||
.PS "atof"
|
||||
.DA #SYS.AToF
|
||||
>PSTR "atoi"
|
||||
.PS "atoi"
|
||||
.DA #SYS.AToI
|
||||
>PSTR "atol"
|
||||
.PS "atol"
|
||||
.DA #SYS.AToL
|
||||
>PSTR "strtof"
|
||||
.PS "strtof"
|
||||
.DA #SYS.StrToF
|
||||
>PSTR "strtol"
|
||||
.PS "strtol"
|
||||
.DA #SYS.StrToL
|
||||
>PSTR "strtoul"
|
||||
.PS "strtoul"
|
||||
.DA #SYS.StrToUL
|
||||
>PSTR "realpath"
|
||||
.PS "realpath"
|
||||
.DA #SYS.RealPath
|
||||
>PSTR "expand"
|
||||
.PS "expand"
|
||||
.DA #SYS.Expand
|
||||
>PSTR "strlen"
|
||||
.PS "strlen"
|
||||
.DA #SYS.StrLen
|
||||
>PSTR "strcpy"
|
||||
.PS "strcpy"
|
||||
.DA #SYS.StrCpy
|
||||
>PSTR "strcat"
|
||||
.PS "strcat"
|
||||
.DA #SYS.StrCat
|
||||
>PSTR "strdup"
|
||||
.PS "strdup"
|
||||
.DA #SYS.StrDup
|
||||
>PSTR "strupr"
|
||||
.PS "strupr"
|
||||
.DA #SYS.StrUpr
|
||||
>PSTR "strlwr"
|
||||
.PS "strlwr"
|
||||
.DA #SYS.StrLwr
|
||||
>PSTR "strcmp"
|
||||
.PS "strcmp"
|
||||
.DA #SYS.StrCmp
|
||||
>PSTR "strcasecmp"
|
||||
.PS "strcasecmp"
|
||||
.DA #SYS.StrCaseCmp
|
||||
* >PSTR "getdevbyname"
|
||||
* .PS "getdevbyname"
|
||||
* .DA #0
|
||||
* >PSTR "getdevstatus"
|
||||
* .PS "getdevstatus"
|
||||
* .DA #0
|
||||
* >PSTR "mkdev"
|
||||
* .PS "mkdev"
|
||||
* .DA #0
|
||||
* >PSTR "ioctl"
|
||||
* .PS "ioctl"
|
||||
* .DA #0
|
||||
* >PSTR "loadlib"
|
||||
* .PS "loadlib"
|
||||
* .DA #0
|
||||
* >PSTR "unloadlib"
|
||||
* .PS "unloadlib"
|
||||
* .DA #0
|
||||
* >PSTR "loaddrv"
|
||||
* .PS "loaddrv"
|
||||
* .DA #0
|
||||
* >PSTR "insdrv"
|
||||
* .PS "insdrv"
|
||||
* .DA #0
|
||||
>PSTR "execl"
|
||||
.PS "execl"
|
||||
.DA #SYS.ExecL
|
||||
* >PSTR "execv"
|
||||
* .PS "execv"
|
||||
* .DA #0
|
||||
>PSTR "fork"
|
||||
.PS "fork"
|
||||
.DA #SYS.Fork
|
||||
>PSTR "kill"
|
||||
.PS "kill"
|
||||
.DA #SYS.Kill
|
||||
* >PSTR "loadfile"
|
||||
* .PS "loadfile"
|
||||
* .DA #0
|
||||
* >PSTR "loadtxtfile"
|
||||
* .PS "loadtxtfile"
|
||||
* .DA #0
|
||||
* >PSTR "filesearch"
|
||||
* .PS "filesearch"
|
||||
* .DA #0
|
||||
* >PSTR "getmemstat"
|
||||
* .PS "getmemstat"
|
||||
* .DA #0
|
||||
* >PSTR "strvnew"
|
||||
* .PS "strvnew"
|
||||
* .DA #0
|
||||
* >PSTR "strvset"
|
||||
* .PS "strvset"
|
||||
* .DA #0
|
||||
* >PSTR "strvget"
|
||||
* .PS "strvget"
|
||||
* .DA #0
|
||||
* >PSTR "strvfree"
|
||||
* .PS "strvfree"
|
||||
* .DA #0
|
||||
>PSTR "putenv"
|
||||
.PS "putenv"
|
||||
.DA #SYS.PutEnv
|
||||
>PSTR "setenv"
|
||||
.PS "setenv"
|
||||
.DA #SYS.SetEnv
|
||||
>PSTR "getenv"
|
||||
.PS "getenv"
|
||||
.DA #SYS.GetEnv
|
||||
>PSTR "unsetenv"
|
||||
.PS "unsetenv"
|
||||
.DA #SYS.UnsetEnv
|
||||
>PSTR "time"
|
||||
.PS "time"
|
||||
.DA #SYS.Time
|
||||
>PSTR "strftime"
|
||||
.PS "strftime"
|
||||
.DA #SYS.StrFTime
|
||||
* >PSTR "ptime2time"
|
||||
* .PS "ptime2time"
|
||||
* .DA #0
|
||||
>PSTR "ctime2time"
|
||||
.PS "ctime2time"
|
||||
.DA #SYS.CTime2Time
|
||||
>PSTR "md5"
|
||||
.PS "md5"
|
||||
.DA #SYS.MD5
|
||||
>PSTR "md5init"
|
||||
.PS "md5init"
|
||||
.DA #SYS.MD5Init
|
||||
>PSTR "md5update"
|
||||
.PS "md5update"
|
||||
.DA #SYS.MD5Update
|
||||
>PSTR "md5finalize"
|
||||
.PS "md5finalize"
|
||||
.DA #SYS.MD5Finalize
|
||||
>PSTR "getpwuid"
|
||||
.PS "getpwuid"
|
||||
.DA #SYS.GetPWUID
|
||||
>PSTR "getpwname"
|
||||
.PS "getpwname"
|
||||
.DA #SYS.GetPWName
|
||||
>PSTR "putpw"
|
||||
.PS "putpw"
|
||||
.DA #SYS.PutPW
|
||||
>PSTR "getgrpgid"
|
||||
.PS "getgrpgid"
|
||||
.DA #SYS.GetGRGID
|
||||
>PSTR "getgrpname"
|
||||
.PS "getgrpname"
|
||||
.DA #SYS.GetGRName
|
||||
>PSTR "putgr"
|
||||
.PS "putgr"
|
||||
.DA #SYS.PutGR
|
||||
* >PSTR "opensession"
|
||||
* .PS "opensession"
|
||||
* .DA #0
|
||||
* >PSTR "closesession"
|
||||
* .PS "closesession"
|
||||
* .DA #0
|
||||
* >PSTR "slistgetdata"
|
||||
* .PS "slistgetdata"
|
||||
* .DA #0
|
||||
* >PSTR "slistadddata"
|
||||
* .PS "slistadddata"
|
||||
* .DA #0
|
||||
* >PSTR "slistsetdata"
|
||||
* .PS "slistsetdata"
|
||||
* .DA #0
|
||||
* >PSTR "slistgetbyid"
|
||||
* .PS "slistgetbyid"
|
||||
* .DA #0
|
||||
* >PSTR "slistnewkey"
|
||||
* .PS "slistnewkey"
|
||||
* .DA #0
|
||||
* >PSTR "slistlookup"
|
||||
* .PS "slistlookup"
|
||||
* .DA #0
|
||||
* >PSTR "slistfree"
|
||||
* .PS "slistfree"
|
||||
* .DA #0
|
||||
* >PSTR "slistnew"
|
||||
* .PS "slistnew"
|
||||
* .DA #0
|
||||
>PSTR "malloc"
|
||||
.PS "malloc"
|
||||
.DA #SYS.GetMem
|
||||
>PSTR "realloc"
|
||||
.PS "realloc"
|
||||
.DA #SYS.Realloc
|
||||
* >PSTR "getmemptr"
|
||||
* .PS "getmemptr"
|
||||
* .DA #0
|
||||
>PSTR "free"
|
||||
.PS "free"
|
||||
.DA #SYS.FreeMem
|
||||
* >PSTR "newstkobj"
|
||||
* .PS "newstkobj"
|
||||
* .DA #0
|
||||
* >PSTR "loadstkobj"
|
||||
* .PS "loadstkobj"
|
||||
* .DA #0
|
||||
* >PSTR "getstkobjptr"
|
||||
* .PS "getstkobjptr"
|
||||
* .DA #0
|
||||
* >PSTR "freestkobj"
|
||||
* .PS "freestkobj"
|
||||
* .DA #0
|
||||
.DA #0
|
||||
*--------------------------------------
|
||||
CC.FPUCALL >PSTR "pwr"
|
||||
CC.FPUCALL .PS "pwr"
|
||||
.DA #FPU.PWR
|
||||
>PSTR "log"
|
||||
.PS "log"
|
||||
.DA #FPU.LOG
|
||||
>PSTR "sqr"
|
||||
.PS "sqr"
|
||||
.DA #FPU.SQR
|
||||
>PSTR "exp"
|
||||
.PS "exp"
|
||||
.DA #FPU.EXP
|
||||
>PSTR "cos"
|
||||
.PS "cos"
|
||||
.DA #FPU.COS
|
||||
>PSTR "sin"
|
||||
.PS "sin"
|
||||
.DA #FPU.SIN
|
||||
>PSTR "tan"
|
||||
.PS "tan"
|
||||
.DA #FPU.TAN
|
||||
>PSTR "atan"
|
||||
.PS "atan"
|
||||
.DA #FPU.ATAN
|
||||
>PSTR "lrintf"
|
||||
.PS "lrintf"
|
||||
.DA #FPU.QINT
|
||||
.DA #0
|
||||
*--------------------------------------
|
||||
|
430
BIN/CSH.S.txt
430
BIN/CSH.S.txt
@ -446,13 +446,13 @@ CS.END
|
||||
*--------------------------------------
|
||||
* Initialized DATA
|
||||
*--------------------------------------
|
||||
MSG.GREETINGS .AZ "\r\nCSH-Shell %d.%d\r\n\r\n"
|
||||
MSG.USAGE .AS "Usage : CSH <option> file\r\n"
|
||||
.AS " -D : Debug Mode\r\n"
|
||||
.AS " -T : Trace On"
|
||||
MSG.ECHOCRLF .AZ "\r\n"
|
||||
MSG.DEBUG .AZ "pStack=%H\r\n"
|
||||
MSG.ERR .AZ "-^\r\nLine #%D:"
|
||||
MSG.GREETINGS .CZ "\r\nCSH-Shell %d.%d\r\n\r\n"
|
||||
MSG.USAGE .CS "Usage : CSH <option> file\r\n"
|
||||
.CS " -D : Debug Mode\r\n"
|
||||
.CS " -T : Trace On"
|
||||
MSG.ECHOCRLF .CZ "\r\n"
|
||||
MSG.DEBUG .CZ "pStack=%H\r\n"
|
||||
MSG.ERR .CZ "-^\r\nLine #%D:"
|
||||
*--------------------------------------
|
||||
ENV.INCLUDE .AZ "INCLUDE"
|
||||
*--------------------------------------
|
||||
@ -465,30 +465,30 @@ CSH.OPChars.Cnt .EQ *-CSH.OPChars
|
||||
*--------------------------------------
|
||||
* Pre Operators: + - ! ~ ++ --
|
||||
*--------------------------------------
|
||||
CSH.PREOPS >PSTR "+"
|
||||
>PSTR "-"
|
||||
>PSTR "!"
|
||||
>PSTR "~"
|
||||
CSH.PREOPS .PS "+"
|
||||
.PS "-"
|
||||
.PS "!"
|
||||
.PS "~"
|
||||
*--------------------------------------
|
||||
* Post Operators: ++ --
|
||||
*--------------------------------------
|
||||
CSH.POSTOPS >PSTR "++"
|
||||
>PSTR "--"
|
||||
CSH.POSTOPS .PS "++"
|
||||
.PS "--"
|
||||
.HS 00
|
||||
*--------------------------------------
|
||||
* Assignment Operators: = += -= *= /= %= <<= >>= &= ^= |=
|
||||
*--------------------------------------
|
||||
CSH.AOPS >PSTR "="
|
||||
>PSTR "+="
|
||||
>PSTR "-="
|
||||
>PSTR "*="
|
||||
>PSTR "/="
|
||||
>PSTR "%="
|
||||
>PSTR "<<="
|
||||
>PSTR ">>="
|
||||
>PSTR "&="
|
||||
>PSTR "^="
|
||||
>PSTR "!="
|
||||
CSH.AOPS .PS "="
|
||||
.PS "+="
|
||||
.PS "-="
|
||||
.PS "*="
|
||||
.PS "/="
|
||||
.PS "%="
|
||||
.PS "<<="
|
||||
.PS ">>="
|
||||
.PS "&="
|
||||
.PS "^="
|
||||
.PS "!="
|
||||
.HS 00
|
||||
*-- Binary ---- H to L precedence -----
|
||||
* Arithmetic Operators: * / %
|
||||
@ -498,289 +498,289 @@ CSH.AOPS >PSTR "="
|
||||
* Bitwise Operators: & | ^ ~
|
||||
* Logical Operators: && ||
|
||||
*--------------------------------------
|
||||
CSH.BOPS >PSTR "*"
|
||||
>PSTR "/"
|
||||
>PSTR "%"
|
||||
>PSTR "+"
|
||||
>PSTR "-"
|
||||
>PSTR "<<"
|
||||
>PSTR ">>"
|
||||
>PSTR "<"
|
||||
>PSTR "<="
|
||||
>PSTR ">"
|
||||
>PSTR ">="
|
||||
>PSTR "=="
|
||||
>PSTR "!="
|
||||
>PSTR "&"
|
||||
>PSTR "|"
|
||||
>PSTR "^"
|
||||
>PSTR "&&"
|
||||
>PSTR "||"
|
||||
CSH.BOPS .PS "*"
|
||||
.PS "/"
|
||||
.PS "%"
|
||||
.PS "+"
|
||||
.PS "-"
|
||||
.PS "<<"
|
||||
.PS ">>"
|
||||
.PS "<"
|
||||
.PS "<="
|
||||
.PS ">"
|
||||
.PS ">="
|
||||
.PS "=="
|
||||
.PS "!="
|
||||
.PS "&"
|
||||
.PS "|"
|
||||
.PS "^"
|
||||
.PS "&&"
|
||||
.PS "||"
|
||||
.HS 00
|
||||
*--------------------------------------
|
||||
* Reserved Directives:
|
||||
*--------------------------------------
|
||||
CSH.DIRS >PSTR "define"
|
||||
>PSTR "include"
|
||||
CSH.DIRS .PS "define"
|
||||
.PS "include"
|
||||
.HS 00
|
||||
*--------------------------------------
|
||||
* Reserved Keywords:
|
||||
*--------------------------------------
|
||||
CSH.KW >PSTR "if"
|
||||
>PSTR "while"
|
||||
>PSTR "else"
|
||||
>PSTR "do"
|
||||
>PSTR "for"
|
||||
>PSTR "switch"
|
||||
>PSTR "case"
|
||||
>PSTR "break"
|
||||
>PSTR "continue"
|
||||
>PSTR "sizeof"
|
||||
>PSTR "typedef"
|
||||
>PSTR "struct"
|
||||
CSH.KW .PS "if"
|
||||
.PS "while"
|
||||
.PS "else"
|
||||
.PS "do"
|
||||
.PS "for"
|
||||
.PS "switch"
|
||||
.PS "case"
|
||||
.PS "break"
|
||||
.PS "continue"
|
||||
.PS "sizeof"
|
||||
.PS "typedef"
|
||||
.PS "struct"
|
||||
.HS 00
|
||||
*--------------------------------------
|
||||
* Type Declaration
|
||||
*--------------------------------------
|
||||
CSH.TMODS >PSTR "const" ALL
|
||||
CSH.TMODS2 >PSTR "signed" char,int,long
|
||||
>PSTR "unsigned" char,int,long
|
||||
>PSTR "short" int
|
||||
CSH.TYPES >PSTR "void"
|
||||
>PSTR "char"
|
||||
>PSTR "int"
|
||||
>PSTR "long"
|
||||
>PSTR "float"
|
||||
CSH.TMODS .PS "const" ALL
|
||||
CSH.TMODS2 .PS "signed" char,int,long
|
||||
.PS "unsigned" char,int,long
|
||||
.PS "short" int
|
||||
CSH.TYPES .PS "void"
|
||||
.PS "char"
|
||||
.PS "int"
|
||||
.PS "long"
|
||||
.PS "float"
|
||||
.HS 00
|
||||
*--------------------------------------
|
||||
CSH.Type2FPU .DA #FPU.wMUL,#FPU.iMUL,#FPU.uMUL,#FPU.lMUL,FPU.fMUL
|
||||
*--------------------------------------
|
||||
CSH.FTYPES >PSTR "fastcall"
|
||||
CSH.FTYPES .PS "fastcall"
|
||||
* .HS 00
|
||||
*--------------------------------------
|
||||
CSH.TYPESIZE .HS 0001010202040405
|
||||
*--------------------------------------
|
||||
CSH.LIBC >PSTR "chtyp"
|
||||
>PSTR "chmod"
|
||||
>PSTR "fstat"
|
||||
>PSTR "stat"
|
||||
>PSTR "mkdir"
|
||||
>PSTR "mknod"
|
||||
>PSTR "mkfifo"
|
||||
>PSTR "pipe"
|
||||
>PSTR "opendir"
|
||||
>PSTR "readdir"
|
||||
>PSTR "closedir"
|
||||
>PSTR "open"
|
||||
>PSTR "close"
|
||||
>PSTR "read"
|
||||
>PSTR "write"
|
||||
>PSTR "chown"
|
||||
>PSTR "fputc"
|
||||
>PSTR "putchar"
|
||||
>PSTR "getc"
|
||||
>PSTR "getchar"
|
||||
>PSTR "fputs"
|
||||
>PSTR "puts"
|
||||
>PSTR "fgets"
|
||||
>PSTR "ungetc"
|
||||
>PSTR "fopen"
|
||||
>PSTR "fclose"
|
||||
>PSTR "fread"
|
||||
>PSTR "fwrite"
|
||||
>PSTR "fflush"
|
||||
>PSTR "fseek"
|
||||
>PSTR "ftell"
|
||||
>PSTR "feof"
|
||||
>PSTR "remove"
|
||||
>PSTR "rename"
|
||||
>PSTR "printf"
|
||||
>PSTR "fprintf"
|
||||
>PSTR "sprintf"
|
||||
>PSTR "scanf"
|
||||
>PSTR "fscanf"
|
||||
>PSTR "sscanf"
|
||||
>PSTR "$50"
|
||||
>PSTR "$52"
|
||||
>PSTR "$54"
|
||||
>PSTR "$56"
|
||||
>PSTR "$58"
|
||||
>PSTR "$5A"
|
||||
>PSTR "$5C"
|
||||
>PSTR "setattr"
|
||||
>PSTR "mount"
|
||||
>PSTR "umount"
|
||||
>PSTR "online"
|
||||
>PSTR "getstkobj"
|
||||
>PSTR "shift"
|
||||
>PSTR "argv"
|
||||
>PSTR "argvDup"
|
||||
>PSTR "geterrmsg"
|
||||
>PSTR "atof"
|
||||
>PSTR "atoi"
|
||||
>PSTR "atol"
|
||||
>PSTR "strtof"
|
||||
>PSTR "strtol"
|
||||
>PSTR "strtoul"
|
||||
>PSTR "realpath"
|
||||
>PSTR "expand"
|
||||
>PSTR "strlen"
|
||||
>PSTR "strcpy"
|
||||
>PSTR "strcat"
|
||||
>PSTR "strdup"
|
||||
>PSTR "strupr"
|
||||
>PSTR "strlwr"
|
||||
>PSTR "strcmp"
|
||||
>PSTR "strcasecmp"
|
||||
>PSTR "getdevbyname"
|
||||
>PSTR "getdevstatus"
|
||||
>PSTR "mkdev"
|
||||
>PSTR "ioctl"
|
||||
>PSTR "loadlib"
|
||||
>PSTR "unloadlib"
|
||||
>PSTR "loaddrv"
|
||||
>PSTR "insdrv"
|
||||
>PSTR "execl"
|
||||
>PSTR "execv"
|
||||
>PSTR "fork"
|
||||
>PSTR "kill"
|
||||
>PSTR "loadfile"
|
||||
>PSTR "loadtxtfile"
|
||||
>PSTR "filesearch"
|
||||
>PSTR "getmemstat"
|
||||
>PSTR "strvnew"
|
||||
>PSTR "strvset"
|
||||
>PSTR "strvget"
|
||||
>PSTR "strvfree"
|
||||
>PSTR "putenv"
|
||||
>PSTR "setenv"
|
||||
>PSTR "getenv"
|
||||
>PSTR "unsetenv"
|
||||
>PSTR "time"
|
||||
>PSTR "strftime"
|
||||
>PSTR "ctime2time"
|
||||
>PSTR "md5"
|
||||
>PSTR "md5init"
|
||||
>PSTR "md5update"
|
||||
>PSTR "md5finalize"
|
||||
>PSTR "getpwuid"
|
||||
>PSTR "getpwname"
|
||||
>PSTR "putpw"
|
||||
>PSTR "getgrpgid"
|
||||
>PSTR "getgrpname"
|
||||
>PSTR "putgr"
|
||||
>PSTR "opensession"
|
||||
>PSTR "closesession"
|
||||
>PSTR "slistgetdata"
|
||||
>PSTR "slistadddata"
|
||||
>PSTR "slistsetdata"
|
||||
>PSTR "slistgetbyid"
|
||||
>PSTR "slistnewkey"
|
||||
>PSTR "slistlookup"
|
||||
>PSTR "slistfree"
|
||||
>PSTR "slistnew"
|
||||
>PSTR "malloc"
|
||||
>PSTR "realloc"
|
||||
>PSTR "getmemptr"
|
||||
>PSTR "free"
|
||||
>PSTR "newstkobj"
|
||||
>PSTR "loadstkobj"
|
||||
>PSTR "getstkobjptr"
|
||||
>PSTR "freestkobj"
|
||||
CSH.LIBC .PS "chtyp"
|
||||
.PS "chmod"
|
||||
.PS "fstat"
|
||||
.PS "stat"
|
||||
.PS "mkdir"
|
||||
.PS "mknod"
|
||||
.PS "mkfifo"
|
||||
.PS "pipe"
|
||||
.PS "opendir"
|
||||
.PS "readdir"
|
||||
.PS "closedir"
|
||||
.PS "open"
|
||||
.PS "close"
|
||||
.PS "read"
|
||||
.PS "write"
|
||||
.PS "chown"
|
||||
.PS "fputc"
|
||||
.PS "putchar"
|
||||
.PS "getc"
|
||||
.PS "getchar"
|
||||
.PS "fputs"
|
||||
.PS "puts"
|
||||
.PS "fgets"
|
||||
.PS "ungetc"
|
||||
.PS "fopen"
|
||||
.PS "fclose"
|
||||
.PS "fread"
|
||||
.PS "fwrite"
|
||||
.PS "fflush"
|
||||
.PS "fseek"
|
||||
.PS "ftell"
|
||||
.PS "feof"
|
||||
.PS "remove"
|
||||
.PS "rename"
|
||||
.PS "printf"
|
||||
.PS "fprintf"
|
||||
.PS "sprintf"
|
||||
.PS "scanf"
|
||||
.PS "fscanf"
|
||||
.PS "sscanf"
|
||||
.PS "$50"
|
||||
.PS "$52"
|
||||
.PS "$54"
|
||||
.PS "$56"
|
||||
.PS "$58"
|
||||
.PS "$5A"
|
||||
.PS "$5C"
|
||||
.PS "setattr"
|
||||
.PS "mount"
|
||||
.PS "umount"
|
||||
.PS "online"
|
||||
.PS "getstkobj"
|
||||
.PS "shift"
|
||||
.PS "argv"
|
||||
.PS "argvDup"
|
||||
.PS "geterrmsg"
|
||||
.PS "atof"
|
||||
.PS "atoi"
|
||||
.PS "atol"
|
||||
.PS "strtof"
|
||||
.PS "strtol"
|
||||
.PS "strtoul"
|
||||
.PS "realpath"
|
||||
.PS "expand"
|
||||
.PS "strlen"
|
||||
.PS "strcpy"
|
||||
.PS "strcat"
|
||||
.PS "strdup"
|
||||
.PS "strupr"
|
||||
.PS "strlwr"
|
||||
.PS "strcmp"
|
||||
.PS "strcasecmp"
|
||||
.PS "getdevbyname"
|
||||
.PS "getdevstatus"
|
||||
.PS "mkdev"
|
||||
.PS "ioctl"
|
||||
.PS "loadlib"
|
||||
.PS "unloadlib"
|
||||
.PS "loaddrv"
|
||||
.PS "insdrv"
|
||||
.PS "execl"
|
||||
.PS "execv"
|
||||
.PS "fork"
|
||||
.PS "kill"
|
||||
.PS "loadfile"
|
||||
.PS "loadtxtfile"
|
||||
.PS "filesearch"
|
||||
.PS "getmemstat"
|
||||
.PS "strvnew"
|
||||
.PS "strvset"
|
||||
.PS "strvget"
|
||||
.PS "strvfree"
|
||||
.PS "putenv"
|
||||
.PS "setenv"
|
||||
.PS "getenv"
|
||||
.PS "unsetenv"
|
||||
.PS "time"
|
||||
.PS "strftime"
|
||||
.PS "ctime2time"
|
||||
.PS "md5"
|
||||
.PS "md5init"
|
||||
.PS "md5update"
|
||||
.PS "md5finalize"
|
||||
.PS "getpwuid"
|
||||
.PS "getpwname"
|
||||
.PS "putpw"
|
||||
.PS "getgrpgid"
|
||||
.PS "getgrpname"
|
||||
.PS "putgr"
|
||||
.PS "opensession"
|
||||
.PS "closesession"
|
||||
.PS "slistgetdata"
|
||||
.PS "slistadddata"
|
||||
.PS "slistsetdata"
|
||||
.PS "slistgetbyid"
|
||||
.PS "slistnewkey"
|
||||
.PS "slistlookup"
|
||||
.PS "slistfree"
|
||||
.PS "slistnew"
|
||||
.PS "malloc"
|
||||
.PS "realloc"
|
||||
.PS "getmemptr"
|
||||
.PS "free"
|
||||
.PS "newstkobj"
|
||||
.PS "loadstkobj"
|
||||
.PS "getstkobjptr"
|
||||
.PS "freestkobj"
|
||||
.HS 00
|
||||
*--------------------------------------
|
||||
CSH.FN
|
||||
* float pwr (float x, float y);
|
||||
>PSTR "pwr"
|
||||
.PS "pwr"
|
||||
.DA #CSH.T.FLOAT,#0 returned value
|
||||
.DA #CSH.T.FLOAT,#0
|
||||
.DA #CSH.T.FLOAT,#0
|
||||
.DA #0
|
||||
* float cos (float x);
|
||||
>PSTR "log"
|
||||
.PS "log"
|
||||
.DA #CSH.T.FLOAT,#0 returned value
|
||||
.DA #CSH.T.FLOAT,#0
|
||||
.DA #0
|
||||
>PSTR "sqr"
|
||||
.PS "sqr"
|
||||
.DA #CSH.T.FLOAT,#0 returned value
|
||||
.DA #CSH.T.FLOAT,#0
|
||||
.DA #0
|
||||
>PSTR "exp"
|
||||
.PS "exp"
|
||||
.DA #CSH.T.FLOAT,#0 returned value
|
||||
.DA #CSH.T.FLOAT,#0
|
||||
.DA #0
|
||||
>PSTR "cos"
|
||||
.PS "cos"
|
||||
.DA #CSH.T.FLOAT,#0 returned value
|
||||
.DA #CSH.T.FLOAT,#0
|
||||
.DA #0
|
||||
>PSTR "sin"
|
||||
.PS "sin"
|
||||
.DA #CSH.T.FLOAT,#0 returned value
|
||||
.DA #CSH.T.FLOAT,#0
|
||||
.DA #0
|
||||
>PSTR "tan"
|
||||
.PS "tan"
|
||||
.DA #CSH.T.FLOAT,#0 returned value
|
||||
.DA #CSH.T.FLOAT,#0
|
||||
.DA #0
|
||||
>PSTR "atan"
|
||||
.PS "atan"
|
||||
.DA #CSH.T.FLOAT,#0 returned value
|
||||
.DA #CSH.T.FLOAT,#0
|
||||
.DA #0
|
||||
* char getchar ( void );
|
||||
>PSTR "getchar"
|
||||
.PS "getchar"
|
||||
.DA #CSH.T.UCHAR,#0 returned value
|
||||
.DA #0
|
||||
* int puts ( const char * str );
|
||||
>PSTR "puts"
|
||||
.PS "puts"
|
||||
.DA #CSH.T.SINT,#0 returned value
|
||||
.DA #CSH.T.UCHAR,#CSH.Q.CONST+CSH.Q.POINTER
|
||||
.DA #0
|
||||
* int execl(const char* cmdline, short int flags);
|
||||
>PSTR "execl"
|
||||
.PS "execl"
|
||||
.DA #CSH.T.SINT,#0 returned value
|
||||
.DA #CSH.T.UCHAR,#CSH.Q.CONST+CSH.Q.POINTER
|
||||
.DA #CSH.T.UCHAR,#0
|
||||
.DA #0
|
||||
* int printf ( const char * format, ... );
|
||||
>PSTR "printf"
|
||||
.PS "printf"
|
||||
.DA #CSH.T.SINT,#0 returned value
|
||||
.DA #CSH.T.UCHAR,#CSH.Q.CONST+CSH.Q.POINTER
|
||||
.DA #CSH.T.VARIADIC,#0
|
||||
.DA #0
|
||||
* int putenv(const char *string);
|
||||
>PSTR "putenv"
|
||||
.PS "putenv"
|
||||
.DA #CSH.T.SINT,#0 returned value
|
||||
.DA #CSH.T.UCHAR,#CSH.Q.CONST+CSH.Q.POINTER
|
||||
.DA #0
|
||||
* int setenv(const char *name, const char *value);
|
||||
>PSTR "setenv"
|
||||
.PS "setenv"
|
||||
.DA #CSH.T.SINT,#0 returned value
|
||||
.DA #CSH.T.UCHAR,#CSH.Q.CONST+CSH.Q.POINTER
|
||||
.DA #CSH.T.UCHAR,#CSH.Q.CONST+CSH.Q.POINTER
|
||||
.DA #0
|
||||
* char *getenv(const char *name, char *value);
|
||||
>PSTR "getenv"
|
||||
.PS "getenv"
|
||||
.DA #CSH.T.UCHAR,#CSH.Q.POINTER
|
||||
.DA #CSH.T.UCHAR,#CSH.Q.CONST+CSH.Q.POINTER
|
||||
.DA #CSH.T.UCHAR,#CSH.Q.POINTER
|
||||
.DA #0
|
||||
* int unsetenv(const char *name);
|
||||
>PSTR "unsetenv"
|
||||
.PS "unsetenv"
|
||||
.DA #CSH.T.SINT,#0 returned value
|
||||
.DA #CSH.T.UCHAR,#CSH.Q.CONST+CSH.Q.POINTER
|
||||
.DA #0
|
||||
* void md5 (const char* str, char* digest);
|
||||
>PSTR "md5"
|
||||
.PS "md5"
|
||||
.DA #CSH.T.VOID,#0
|
||||
.DA #CSH.T.UCHAR,#CSH.Q.CONST+CSH.Q.POINTER
|
||||
.DA #CSH.T.UCHAR,#CSH.Q.POINTER
|
||||
.DA #0
|
||||
* void * malloc ( int size );
|
||||
>PSTR "malloc"
|
||||
.PS "malloc"
|
||||
.DA #CSH.T.VOID,#CSH.Q.POINTER returned value
|
||||
.DA #CSH.T.SINT,#0
|
||||
.DA #0
|
||||
* short int fopen(const char*,short int,short int,int);
|
||||
>PSTR "fopen"
|
||||
.PS "fopen"
|
||||
.DA #CSH.T.SCHAR,#0
|
||||
.DA #CSH.T.UCHAR,#CSH.Q.CONST+CSH.Q.POINTER
|
||||
.DA #CSH.T.SCHAR,#0
|
||||
@ -788,19 +788,19 @@ CSH.FN
|
||||
.DA #CSH.T.SINT,#0
|
||||
.DA #0
|
||||
* int fclose(short int);
|
||||
>PSTR "fclose"
|
||||
.PS "fclose"
|
||||
.DA #CSH.T.SINT,#0
|
||||
.DA #CSH.T.SCHAR,#0
|
||||
.DA #0
|
||||
* int fread (short int,void*,int);
|
||||
>PSTR "fread"
|
||||
.PS "fread"
|
||||
.DA #CSH.T.SINT,#0
|
||||
.DA #CSH.T.SCHAR,#0
|
||||
.DA #CSH.T.VOID,#CSH.Q.POINTER
|
||||
.DA #CSH.T.SINT,#0
|
||||
.DA #0
|
||||
* int fwrite (short int,const void*,int);
|
||||
>PSTR "fwrite"
|
||||
.PS "fwrite"
|
||||
.DA #CSH.T.SINT,#0
|
||||
.DA #CSH.T.SCHAR,#0
|
||||
.DA #CSH.T.VOID,#CSH.Q.CONST+CSH.Q.POINTER
|
||||
|
@ -1,10 +1,10 @@
|
||||
NEW
|
||||
AUTO 3,1
|
||||
*--------------------------------------
|
||||
IO.D2.SeekTimeR .EQ 55 LIBBLKDEV Recalibration
|
||||
IO.D2.SeekTimeF .EQ 55 LIBBLKDEV Track Formatter
|
||||
IO.D2.SeekTimeB .EQ 55 LIBBLKDEV Boot Block
|
||||
IO.D2.SeekTimeP .EQ 25 ProDOS.FX initial
|
||||
IO.D2.SeekTimeR .EQ 60 LIBBLKDEV Recalibration
|
||||
IO.D2.SeekTimeF .EQ 60 LIBBLKDEV Track Formatter
|
||||
IO.D2.SeekTimeB .EQ 60 LIBBLKDEV Boot Block
|
||||
IO.D2.SeekTimeP .EQ 30 ProDOS.FX initial
|
||||
IO.D2.SeekTimeI .EQ 10 ProDOS.FX increment -> until > 128
|
||||
*--------------------------------------
|
||||
IO.D2.Ph0Off .EQ $C080
|
||||
|
@ -1,6 +1,7 @@
|
||||
NEW
|
||||
AUTO 3,1
|
||||
|
||||
typedef int mode_t;
|
||||
typedef short int dev_t;
|
||||
|
||||
MAN
|
||||
|
@ -82,50 +82,138 @@ PSTA JSR EXPR.DEFINED GET EXPR VALUE
|
||||
ORA EXP.VALUE+3
|
||||
BEQ NEW.TARGET
|
||||
JMP RAER
|
||||
*--------------------------------
|
||||
*--------------------------------------
|
||||
DIR1.PS jsr GNNB
|
||||
bcs .9
|
||||
|
||||
sta DLIM SAVE DELIMITER
|
||||
|
||||
ldx #$ff
|
||||
ldy CHAR.PNTR
|
||||
|
||||
.1 inx
|
||||
lda WBUF,Y
|
||||
and #$7F
|
||||
beq .9
|
||||
|
||||
iny
|
||||
cmp DLIM
|
||||
bne .1
|
||||
|
||||
txa
|
||||
jsr EMIT
|
||||
|
||||
.2 jsr GNC
|
||||
jsr EMIT
|
||||
dex
|
||||
bne .2
|
||||
|
||||
clc
|
||||
rts
|
||||
|
||||
.9 jmp ERBA2
|
||||
*--------------------------------------
|
||||
DIR1.EscChars .AS "abefnrtv"
|
||||
.HS 5C27223F \'"?
|
||||
DIR1.EscChars.L .EQ *-DIR1.EscChars
|
||||
DIR1.EscCodes .HS 07081B0C0A0D090B
|
||||
.HS 5C27223F
|
||||
*--------------------------------------
|
||||
DIR1.CZ jsr DIR1.CS
|
||||
jmp EMIT.ZERO
|
||||
|
||||
DIR1.CS lda #0
|
||||
sec
|
||||
jmp DIR1.String
|
||||
*--------------------------------------
|
||||
* .AT -- ASCII STRING WITH LAST BYTE FLAGGED
|
||||
* .AS -- ASCII STRING WITH ALL BYTES SAME
|
||||
* .AZ -- Same as .AS, but with 00 terminator byte.
|
||||
*--------------------------------
|
||||
PSAZ JSR PSAS
|
||||
JMP EMIT.ZERO
|
||||
PSAT LDA #$80 LAST BYTE HAS OPPOSITE BIT 7
|
||||
.HS 2C ...SKIP OVER 2 BYTES
|
||||
PSAS LDA #0 ALL BYTES GET SAME BIT 7
|
||||
STA AT.HIBIT
|
||||
JSR GNNB Scan to next non-blank
|
||||
BCS ERBA2 END OF LINE
|
||||
DEC CHAR.PNTR BACK UP
|
||||
.1 JSR TRY.HEX.STRING
|
||||
BEQ .5 ...END OF LINE
|
||||
LDY #0
|
||||
STY AS.HIBIT ...assume hibit is 0
|
||||
CMP #'-' 1ST NON-BLANK A MINUS?
|
||||
BNE .15 ...no, hibit is 0
|
||||
ROR AS.HIBIT ...yes, hibit is 1
|
||||
JSR GNC.UC
|
||||
.15 STA DLIM SAVE DELIMITER
|
||||
JSR GNC.UC GET NEXT CHAR
|
||||
BCS ERBA2 END OF LINE IS BAD NEWS
|
||||
CMP DLIM CHK IF DELIMITER
|
||||
BEQ .4 YES, NO STRING IN BETWEEN
|
||||
.2 JSR GNC.UC GET NEXT CHAR
|
||||
BCS ERBA2 END OF LINE IS BAD NEWS
|
||||
CMP DLIM CHK IF DELIMITER
|
||||
BEQ .3 YES, FINISH UP AND RETURN
|
||||
LDA WBUF-2,Y ...NO, GET PREVIOUS CHAR
|
||||
ORA AS.HIBIT MERGE WITH TOP BIT
|
||||
JSR EMIT
|
||||
JMP .2 GO FOR ANOTHER ONE
|
||||
.3 LDA WBUF-2,Y GET PREVIOUS CHAR
|
||||
ORA AS.HIBIT MERGE WITH SELECTED BIT 7
|
||||
EOR AT.HIBIT TOGGLE BIT 7 IF IN .AT
|
||||
JSR EMIT EMIT THE BYTE
|
||||
.4 JSR GNC CHECK IF MORE IN LIST
|
||||
BEQ .5
|
||||
CMP #','
|
||||
BEQ .1
|
||||
.5 RTS
|
||||
*--------------------------------------
|
||||
PSAZ jsr PSAS
|
||||
jmp EMIT.ZERO
|
||||
|
||||
PSAT lda #$80 LAST BYTE HAS OPPOSITE BIT 7
|
||||
.HS 2C ...SKIP OVER 2 BYTES
|
||||
|
||||
PSAS lda #0 ALL BYTES GET SAME BIT 7
|
||||
clc
|
||||
|
||||
DIR1.String sta AT.HIBIT
|
||||
ror BYTE C String Flag
|
||||
|
||||
jsr GNNB Scan to next non-blank
|
||||
bcs .9 END OF LINE
|
||||
|
||||
dec CHAR.PNTR BACK UP
|
||||
|
||||
.1 jsr TRY.HEX.STRING
|
||||
beq .5 ...END OF LINE
|
||||
|
||||
ldy #0
|
||||
sty AS.HIBIT ...assume hibit is 0
|
||||
cmp #'-' 1ST NON-BLANK A MINUS?
|
||||
bne .15 ...no, hibit is 0
|
||||
|
||||
ror AS.HIBIT ...yes, hibit is 1
|
||||
jsr GNC.UC
|
||||
|
||||
.15 sta DLIM SAVE DELIMITER
|
||||
jsr GNC.UC GET NEXT CHAR
|
||||
.9 bcs ERBA2 END OF LINE IS BAD NEWS
|
||||
|
||||
cmp DLIM CHK IF DELIMITER
|
||||
beq .4 YES, NO STRING IN BETWEEN
|
||||
|
||||
.2 jsr GNC.UC GET NEXT CHAR
|
||||
bcs ERBA2 END OF LINE IS BAD NEWS
|
||||
|
||||
cmp DLIM CHK IF DELIMITER
|
||||
beq .3 YES, FINISH UP AND RETURN
|
||||
|
||||
lda WBUF-2,Y ...NO, GET PREVIOUS CHAR
|
||||
bit BYTE
|
||||
bpl .27
|
||||
|
||||
cmp #'\' "\?" ?
|
||||
bne .27
|
||||
|
||||
jsr GNC.UC GET NEXT CHAR
|
||||
bcs ERBA2 END OF LINE IS BAD NEWS
|
||||
|
||||
lda WBUF-2,Y get "?"
|
||||
ldx #DIR1.EscChars.L-1
|
||||
|
||||
.20 cmp DIR1.EscChars,x
|
||||
beq .21
|
||||
|
||||
dex
|
||||
bpl .20
|
||||
bmi ERBA2
|
||||
|
||||
.21 lda DIR1.EscCodes,x
|
||||
|
||||
ldx WBUF-1,Y
|
||||
cpx DLIM
|
||||
beq .30
|
||||
|
||||
.27 ora AS.HIBIT MERGE WITH TOP BIT
|
||||
jsr EMIT
|
||||
jmp .2 GO FOR ANOTHER ONE
|
||||
|
||||
.3 lda WBUF-2,Y GET PREVIOUS CHAR
|
||||
|
||||
.30 ora AS.HIBIT MERGE WITH SELECTED BIT 7
|
||||
eor AT.HIBIT TOGGLE BIT 7 IF IN .AT
|
||||
jsr EMIT EMIT THE BYTE
|
||||
|
||||
.4 jsr GNC CHECK IF MORE IN LIST
|
||||
beq .5
|
||||
|
||||
cmp #','
|
||||
beq .1
|
||||
|
||||
.5 rts
|
||||
*---------------------------------
|
||||
* .HS -- HEX STRING
|
||||
*---------------------------------
|
||||
|
@ -12,34 +12,36 @@ DIR. .SE "]1"
|
||||
.DA #"]2"-$40,]3-1 .]1]2
|
||||
.EM
|
||||
*--------------------------------
|
||||
OPTBL.DIR
|
||||
>DIR A,C,DIR.AC ASCII STRING COMPRESSED
|
||||
>DIR A,S,PSAS ASCII STRING
|
||||
>DIR A,T,PSAT ASCII STRING WITH LAST BYTE
|
||||
>DIR A,Z,PSAZ ASCII STRING WITH ZERO END
|
||||
>DIR B,S,PSBS BLOCK STORAGE
|
||||
>DIR D,A,PSDA DATA
|
||||
>DIR D,O,PSDO DO
|
||||
>DIR D,U,D.DUMMY DUMMY
|
||||
>DIR E,D,D.END.DUMMY
|
||||
>DIR E,L,PSEL ELSE
|
||||
>DIR E,N,PSEN END OF SOURCE
|
||||
>DIR E,P,D.END.PHASE
|
||||
>DIR E,Q,PSEQ EQUATE
|
||||
>DIR F,I,PSFI FIN
|
||||
>DIR H,S,PSHS HEX STRING
|
||||
>DIR I,N,PSIN INCLUDE
|
||||
>DIR L,I,PSLI LIST ON,/ OFF
|
||||
>DIR M,A,PSMA MACRO
|
||||
>DIR O,P,PSOP OPCODE TABLE SELECT
|
||||
>DIR O,R,PSOR ORIGIN
|
||||
>DIR P,G,PSPG PAGE EJECT
|
||||
>DIR P,H,D.PHASE PHASE
|
||||
>DIR T,A,PSTA TARGET ADDRESS
|
||||
>DIR T,F,PSTF TARGET FILE
|
||||
>DIR T,I,PSTI TITLE
|
||||
>DIR U,S,PSUSER USER DIRECTIVE
|
||||
.HS 41 <<<TERMINATOR>>>
|
||||
OPTBL.DIR >DIR A,C,DIR.AC ASCII STRING COMPRESSED
|
||||
>DIR A,S,PSAS ASCII STRING
|
||||
>DIR A,T,PSAT ASCII STRING WITH LAST BYTE
|
||||
>DIR A,Z,PSAZ ASCII STRING WITH ZERO END
|
||||
>DIR B,S,PSBS BLOCK STORAGE
|
||||
>DIR C,S,DIR1.CS C STRING
|
||||
>DIR C,Z,DIR1.CZ C STRING WITH ZERO END
|
||||
>DIR D,A,PSDA DATA
|
||||
>DIR D,O,PSDO DO
|
||||
>DIR D,U,D.DUMMY DUMMY
|
||||
>DIR E,D,D.END.DUMMY
|
||||
>DIR E,L,PSEL ELSE
|
||||
>DIR E,N,PSEN END OF SOURCE
|
||||
>DIR E,P,D.END.PHASE
|
||||
>DIR E,Q,PSEQ EQUATE
|
||||
>DIR F,I,PSFI FIN
|
||||
>DIR H,S,PSHS HEX STRING
|
||||
>DIR I,N,PSIN INCLUDE
|
||||
>DIR L,I,PSLI LIST ON,/ OFF
|
||||
>DIR M,A,PSMA MACRO
|
||||
>DIR O,P,PSOP OPCODE TABLE SELECT
|
||||
>DIR O,R,PSOR ORIGIN
|
||||
>DIR P,G,PSPG PAGE EJECT
|
||||
>DIR P,H,D.PHASE PHASE
|
||||
>DIR P,S,DIR1.PS PASCAL STRING
|
||||
>DIR T,A,PSTA TARGET ADDRESS
|
||||
>DIR T,F,PSTF TARGET FILE
|
||||
>DIR T,I,PSTI TITLE
|
||||
>DIR U,S,PSUSER USER DIRECTIVE
|
||||
.HS 41 <<<TERMINATOR>>>
|
||||
*--------------------------------
|
||||
.ELSE
|
||||
*--------------------------------
|
||||
|
@ -4,8 +4,8 @@ NEW
|
||||
.OR $2000
|
||||
.TF SCMASM.SYSTEM,TSYS
|
||||
*--------------------------------------
|
||||
VERSION.HI .EQ 3 VERSION 3.0
|
||||
VERSION.LO .EQ 1
|
||||
VERSION.HI .EQ 3 VERSION 3.1
|
||||
VERSION.LO .EQ 1 new CS,CZ directives
|
||||
*--------------------------------
|
||||
AUXMEM .EQ 1 ...USE AUXMEM FOR SYMBOL TABLE
|
||||
ROCKWELL .EQ 1 0 = LEAVE OUT ROCKWELL OPTION
|
||||
|
@ -230,4 +230,4 @@ X.DigitCount .BS 1
|
||||
X.DigitBuffer .BS 6
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE USR/SRC/SHARED/X.PRINTF.S
|
||||
SAVE usr/src/shared/x.printf.s
|
||||
|
@ -51,6 +51,9 @@ VEDRIVE.ReadConf
|
||||
.DA MLIREAD.P
|
||||
bcs .8
|
||||
|
||||
ldx MLIREAD.P+6
|
||||
stz CONF.LBUF,x
|
||||
|
||||
jsr VEDRIVE.CONF.L
|
||||
bcc .2
|
||||
|
||||
@ -84,7 +87,11 @@ VEDRIVE.ReadConf
|
||||
plp
|
||||
rts
|
||||
*--------------------------------------
|
||||
VEDRIVE.CONF.L lda CONF.LBUF
|
||||
VEDRIVE.CONF.L >LDYAI CONF.LBUF
|
||||
>STYA ZPPtr1
|
||||
jsr PrintFYA
|
||||
|
||||
lda (ZPPtr1)
|
||||
|
||||
cmp #13 CR
|
||||
beq .8
|
||||
@ -92,101 +99,31 @@ VEDRIVE.CONF.L lda CONF.LBUF
|
||||
cmp #'#' comment
|
||||
beq .8
|
||||
|
||||
lda #CONF.LBUF
|
||||
sta ZPPtr1
|
||||
lda /CONF.LBUF
|
||||
sta ZPPtr1+1
|
||||
|
||||
ldy #CONF.KW
|
||||
lda /CONF.KW
|
||||
>LDYAI CONF.KW
|
||||
jsr VEDRIVE.CONF.KW
|
||||
bcs .9
|
||||
|
||||
.1 jsr VEDRIVE.GetNextCharPtr1
|
||||
bcs .9
|
||||
|
||||
cmp #32
|
||||
beq .1
|
||||
|
||||
ldx idx
|
||||
jmp (.5,x)
|
||||
|
||||
.5 .DA VEDRIVE.CONF.KW.NIC
|
||||
.DA VEDRIVE.CONF.KW.SLOT
|
||||
.DA VEDRIVE.CONF.KW.MAC
|
||||
.DA VEDRIVE.CONF.KW.ADDRESS
|
||||
.DA VEDRIVE.CONF.KW.MASK
|
||||
.DA VEDRIVE.CONF.KW.GATEWAY
|
||||
.DA VEDRIVE.CONF.KW.SERVER
|
||||
.DA VEDRIVE.CONF.KW.PORT
|
||||
.DA VEDRIVE.CONF.KW.SIZE1
|
||||
.DA VEDRIVE.CONF.KW.SIZE2
|
||||
|
||||
.8 clc
|
||||
rts
|
||||
|
||||
.9 sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
VEDRIVE.CONF.KW.NIC
|
||||
jsr VEDRIVE.CONF.SKIPSP
|
||||
bcs .9
|
||||
|
||||
ldy #CONF.KW.NIC
|
||||
lda /CONF.KW.NIC
|
||||
|
||||
jsr VEDRIVE.CONF.KW
|
||||
bcs .9
|
||||
|
||||
lda idx
|
||||
sta CONF.NIC
|
||||
|
||||
clc
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
VEDRIVE.CONF.KW.SLOT
|
||||
jsr VEDRIVE.CONF.SKIPSP
|
||||
bcs .9
|
||||
|
||||
lda (ZPPtr1)
|
||||
cmp #'1'
|
||||
bcc .9
|
||||
|
||||
cmp #'8'
|
||||
bcs .9
|
||||
|
||||
and #$0F
|
||||
sta CONF.SLOT
|
||||
|
||||
clc
|
||||
rts
|
||||
|
||||
.9 sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
VEDRIVE.CONF.KW.ADDRESS
|
||||
ldx #CONF.ADDRESS-CONF.IPCFG
|
||||
.HS 2C BIT ABS
|
||||
VEDRIVE.CONF.KW.MASK
|
||||
ldx #CONF.MASK-CONF.IPCFG
|
||||
.HS 2C BIT ABS
|
||||
VEDRIVE.CONF.KW.GATEWAY
|
||||
ldx #CONF.GATEWAY-CONF.IPCFG
|
||||
.HS 2C BIT ABS
|
||||
VEDRIVE.CONF.KW.SERVER
|
||||
ldx #CONF.SERVER-CONF.IPCFG
|
||||
|
||||
jsr VEDRIVE.CONF.SKIPSP
|
||||
bcs .9
|
||||
|
||||
jsr VEDRIVE.CONF.GetIPatX
|
||||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
VEDRIVE.CONF.KW.PORT
|
||||
jsr VEDRIVE.CONF.SKIPSP
|
||||
bcs .9
|
||||
|
||||
jsr VEDRIVE.CONF.GetInt
|
||||
bcs .9
|
||||
|
||||
lda int
|
||||
sta CONF.PORT+1
|
||||
|
||||
lda int+1
|
||||
sta CONF.PORT
|
||||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
VEDRIVE.CONF.KW sty ZPPtr2
|
||||
@ -247,30 +184,70 @@ VEDRIVE.CONF.KW sty ZPPtr2
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
VEDRIVE.CONF.SKIPSP
|
||||
lda (ZPPtr1)
|
||||
cmp #32
|
||||
bne .9
|
||||
VEDRIVE.CONF.KW.NIC
|
||||
>LDYAI CONF.KW.NIC
|
||||
jsr VEDRIVE.CONF.KW
|
||||
bcs .9
|
||||
|
||||
bra .3
|
||||
|
||||
.1 lda (ZPPtr1)
|
||||
cmp #13
|
||||
beq .9
|
||||
|
||||
.2 cmp #32
|
||||
bne .8
|
||||
|
||||
.3 inc ZPPtr1
|
||||
bne .1
|
||||
|
||||
inc ZPPtr1+1
|
||||
bra .1
|
||||
|
||||
.8 clc
|
||||
lda idx
|
||||
sta CONF.NIC
|
||||
|
||||
clc
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
VEDRIVE.CONF.KW.SLOT
|
||||
lda (ZPPtr1)
|
||||
cmp #'1'
|
||||
bcc .9
|
||||
|
||||
cmp #'8'
|
||||
bcs .9
|
||||
|
||||
and #$0F
|
||||
sta CONF.SLOT
|
||||
|
||||
clc
|
||||
rts
|
||||
|
||||
.9 sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
VEDRIVE.CONF.KW.MAC
|
||||
ldy #6
|
||||
ldx #0
|
||||
|
||||
.1 jsr VEDRIVE.CONF.GetHexByte
|
||||
bcs .9
|
||||
|
||||
sta CONF.SRCMAC,x
|
||||
inx
|
||||
dey
|
||||
beq .9 CC
|
||||
|
||||
jsr VEDRIVE.GetNextCharPtr1
|
||||
bcs .9
|
||||
|
||||
cmp #':'
|
||||
sec
|
||||
bne .9
|
||||
|
||||
jsr VEDRIVE.GetNextCharPtr1
|
||||
bcc .1
|
||||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
VEDRIVE.CONF.KW.ADDRESS
|
||||
ldx #CONF.ADDRESS-CONF.IPCFG
|
||||
.HS 2C BIT ABS
|
||||
VEDRIVE.CONF.KW.MASK
|
||||
ldx #CONF.MASK-CONF.IPCFG
|
||||
.HS 2C BIT ABS
|
||||
VEDRIVE.CONF.KW.GATEWAY
|
||||
ldx #CONF.GATEWAY-CONF.IPCFG
|
||||
.HS 2C BIT ABS
|
||||
VEDRIVE.CONF.KW.SERVER
|
||||
ldx #CONF.SERVER-CONF.IPCFG
|
||||
|
||||
VEDRIVE.CONF.GetIPatX
|
||||
jsr VEDRIVE.CONF.GetShort
|
||||
bcs .9
|
||||
@ -282,16 +259,87 @@ VEDRIVE.CONF.GetIPatX
|
||||
dey
|
||||
beq .9 CC
|
||||
|
||||
jsr VEDRIVE.GetCharPtr1
|
||||
bcs .9
|
||||
lda (ZPPtr1)
|
||||
cmp #13
|
||||
beq .9
|
||||
|
||||
cmp #'.'
|
||||
sec
|
||||
bne .9
|
||||
|
||||
jsr VEDRIVE.GetNextCharPtr1
|
||||
bcs .9
|
||||
|
||||
jsr VEDRIVE.CONF.GetShort
|
||||
bcc .1
|
||||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
VEDRIVE.CONF.KW.PORT
|
||||
jsr VEDRIVE.CONF.GetInt
|
||||
bcs .9
|
||||
|
||||
lda int
|
||||
sta CONF.PORT+1
|
||||
|
||||
lda int+1
|
||||
sta CONF.PORT
|
||||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
VEDRIVE.CONF.KW.SIZE1
|
||||
stz bD1Size
|
||||
jsr VEDRIVE.CONF.GetInt
|
||||
bcs .9
|
||||
|
||||
lda int
|
||||
sta CONF.D1TOTALBLK
|
||||
|
||||
lda int+1
|
||||
sta CONF.D1TOTALBLK+1
|
||||
|
||||
dec bD1Size
|
||||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
VEDRIVE.CONF.KW.SIZE2
|
||||
stz bD2Size
|
||||
jsr VEDRIVE.CONF.GetInt
|
||||
bcs .9
|
||||
|
||||
lda int
|
||||
sta CONF.D2TOTALBLK
|
||||
|
||||
lda int+1
|
||||
sta CONF.D2TOTALBLK+1
|
||||
|
||||
dec bD2Size
|
||||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
VEDRIVE.CONF.GetHexByte
|
||||
jsr VEDRIVE.GetCharPtr1
|
||||
bcs .9
|
||||
|
||||
jsr VEDRIVE.IsHexDigit
|
||||
bcs .9
|
||||
|
||||
asl
|
||||
asl
|
||||
asl
|
||||
asl
|
||||
sta int
|
||||
|
||||
jsr VEDRIVE.GetNextCharPtr1
|
||||
bcs .9
|
||||
|
||||
jsr VEDRIVE.IsHexDigit
|
||||
bcs .9
|
||||
|
||||
ora int
|
||||
|
||||
* clc
|
||||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
VEDRIVE.CONF.GetShort
|
||||
@ -310,21 +358,14 @@ VEDRIVE.CONF.GetShort
|
||||
VEDRIVE.CONF.GetInt
|
||||
stz int
|
||||
stz int+1
|
||||
|
||||
jsr VEDRIVE.GetCharPtr1
|
||||
bcs .9
|
||||
|
||||
.1 lda (ZPPtr1)
|
||||
cmp #'0'
|
||||
bcc .8
|
||||
jsr VEDRIVE.IsDigit
|
||||
bcs .9
|
||||
|
||||
cmp #'9'+1
|
||||
bcs .8
|
||||
|
||||
inc ZPPtr1
|
||||
bne .2
|
||||
|
||||
inc ZPPtr1+1
|
||||
|
||||
.2 and #$0F
|
||||
pha
|
||||
.1 pha
|
||||
|
||||
lda int+1
|
||||
pha
|
||||
@ -352,27 +393,73 @@ VEDRIVE.CONF.GetInt
|
||||
clc
|
||||
adc int
|
||||
sta int
|
||||
bcc .1
|
||||
bcc .2
|
||||
|
||||
inc int+1
|
||||
bra .1
|
||||
|
||||
.2 jsr VEDRIVE.GetNextCharPtr1
|
||||
bcs .8
|
||||
|
||||
jsr VEDRIVE.IsDigit
|
||||
bcc .1
|
||||
|
||||
.8 clc
|
||||
rts
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
VEDRIVE.GetNextCharPtr1
|
||||
inc ZPPtr1
|
||||
bne VEDRIVE.GetCharPtr1
|
||||
|
||||
inc ZPPtr1+1
|
||||
*--------------------------------------
|
||||
VEDRIVE.GetCharPtr1
|
||||
lda (ZPPtr1)
|
||||
cmp #13
|
||||
beq .9
|
||||
|
||||
inc ZPPtr1
|
||||
bne .8
|
||||
|
||||
inc ZPPtr1+1
|
||||
|
||||
.8 clc
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
VEDRIVE.IsHexDigit
|
||||
jsr VEDRIVE.IsDigit
|
||||
bcc .8
|
||||
|
||||
cmp #'A'
|
||||
bcc .9
|
||||
|
||||
cmp #'F'+1
|
||||
bcc .1
|
||||
|
||||
cmp #'a'
|
||||
bcc .9
|
||||
|
||||
cmp #'f'+1
|
||||
bcs .99
|
||||
|
||||
eor #$20
|
||||
|
||||
.1
|
||||
* clc
|
||||
sbc #'A'-11 cc so A->10 (11-CC)
|
||||
clc
|
||||
.8 rts
|
||||
|
||||
.9 sec
|
||||
.99 rts
|
||||
*--------------------------------------
|
||||
VEDRIVE.IsDigit cmp #'0'
|
||||
bcc .9
|
||||
|
||||
cmp #'9'+1
|
||||
bcs .99
|
||||
|
||||
and #$0F
|
||||
* clc
|
||||
rts
|
||||
|
||||
.9 sec
|
||||
.99 rts
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE usr/src/sys/pm.vedrive.s.cf
|
||||
LOAD usr/src/sys/pm.vedrive.s
|
||||
|
@ -1,13 +1,108 @@
|
||||
NEW
|
||||
AUTO 3,1
|
||||
*--------------------------------------
|
||||
GS.Init sec
|
||||
GS.Init lda CONF.SLOT
|
||||
asl
|
||||
asl
|
||||
asl
|
||||
asl
|
||||
sta Slotn0
|
||||
tax
|
||||
|
||||
lda #L91C96.0.TCR.FDSE+L91C96.0.TCR.FUDPLX+L91C96.0.TCR.PADEN+L91C96.0.TCR.TXENA
|
||||
sta L91C96.0.TCR,x
|
||||
lda /L91C96.0.TCR.FDSE+L91C96.0.TCR.FUDPLX+L91C96.0.TCR.PADEN+L91C96.0.TCR.TXENA
|
||||
sta L91C96.0.TCR+1,x
|
||||
lda #L91C96.0.RCR.NOCRC+L91C96.0.RCR.RXENA+L91C96.0.RCR.ALLMUL
|
||||
sta L91C96.0.RCR,x
|
||||
lda /L91C96.0.RCR.NOCRC+L91C96.0.RCR.RXENA+L91C96.0.RCR.ALLMUL
|
||||
sta L91C96.0.RCR+1,x
|
||||
|
||||
lda #1
|
||||
sta L91C96.BSR,x
|
||||
|
||||
lda #L91C96.1.CR.NOWAIT
|
||||
sta L91C96.1.CR,x
|
||||
lda /L91C96.1.CR.NOWAIT
|
||||
sta L91C96.1.CR+1,x
|
||||
|
||||
ldy #0
|
||||
|
||||
.2 lda CONF.SRCMAC,y
|
||||
sta L91C96.1.IAR,x
|
||||
inx
|
||||
iny
|
||||
cpy #6
|
||||
bne .2
|
||||
|
||||
.3 ldx Slotn0
|
||||
|
||||
lda #L91C96.1.CTR.DEFAULT+L91C96.1.CTR.AUTOREL
|
||||
sta L91C96.1.CTR,x
|
||||
lda /L91C96.1.CTR.DEFAULT+L91C96.1.CTR.AUTOREL
|
||||
sta L91C96.1.CTR+1,x
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
GS.Read php
|
||||
sei
|
||||
|
||||
ldx Slotn0
|
||||
|
||||
lda #2
|
||||
sta L91C96.BSR,x
|
||||
|
||||
lda L91C96.2.IST,x
|
||||
and #L91C96.2.IST.RCV
|
||||
beq GS.READWRITE.9
|
||||
|
||||
.1 lda #L91C96.2.PTR.RCVD+L91C96.2.PTR.AUTOI+L91C96.2.PTR.READ
|
||||
sta L91C96.2.PTR,x
|
||||
lda /L91C96.2.PTR.RCVD+L91C96.2.PTR.AUTOI+L91C96.2.PTR.READ
|
||||
sta L91C96.2.PTR+1,x
|
||||
|
||||
lda L91C96.2.DATA,x Get Frame Status Word (lo)
|
||||
lda L91C96.2.DATA,x Get Frame Status Word (HI)
|
||||
asl
|
||||
asl
|
||||
asl #$10 = odd?
|
||||
asl if odd, CS
|
||||
lda L91C96.2.DATA,x get lo byte count
|
||||
sbc #5 compute Size
|
||||
|
||||
sta ZPBufCnt
|
||||
eor #$ff
|
||||
sta ZPnCnt
|
||||
|
||||
lda L91C96.2.DATA,x get hi byte count
|
||||
sbc #0
|
||||
|
||||
sta ZPBufCnt+1
|
||||
eor #$ff
|
||||
sta ZPnCnt+1
|
||||
|
||||
ldy #0
|
||||
|
||||
.2 inc ZPnCnt
|
||||
bne .3
|
||||
|
||||
inc ZPnCnt+1
|
||||
beq .4
|
||||
|
||||
.3 lda L91C96.2.DATA,x
|
||||
sta (ZPBufPtr),y
|
||||
iny
|
||||
bne .2
|
||||
|
||||
inc ZPBufPtr+1
|
||||
bra .2
|
||||
|
||||
.4 lda #L91C96.2.MMUCR.REMREL
|
||||
sta L91C96.2.MMUCR,x
|
||||
|
||||
plp
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
GS.READWRITE.9 plp
|
||||
sec
|
||||
@ -18,33 +113,324 @@ GS.Write php
|
||||
|
||||
ldx Slotn0
|
||||
|
||||
lda #2
|
||||
sta L91C96.BSR,x
|
||||
|
||||
lda ZPBufCnt
|
||||
eor #$ff
|
||||
sta ZPnCnt
|
||||
eor #$ff
|
||||
clc
|
||||
adc #6 3 WORDs more Status, len & Control
|
||||
|
||||
bne .10
|
||||
|
||||
clc LO byte is 0, no need for an extra empty page
|
||||
|
||||
.10 lda ZPBufCnt+1
|
||||
eor #$ff
|
||||
sta ZPnCnt+1
|
||||
eor #$ff
|
||||
|
||||
adc #0
|
||||
|
||||
.1 ora #L91C96.2.MMUCR.ALLOC
|
||||
sta L91C96.2.MMUCR,x
|
||||
|
||||
ldy #0
|
||||
|
||||
.2 lda L91C96.2.IST,x
|
||||
and #L91C96.2.IST.ALLOC
|
||||
bne .3
|
||||
|
||||
dey
|
||||
bne .2
|
||||
|
||||
bra GS.READWRITE.9
|
||||
|
||||
.3 lda L91C96.2.AAR,x
|
||||
sta L91C96.2.PNR,x
|
||||
lda #L91C96.2.PTR.AUTOI
|
||||
sta L91C96.2.PTR,x
|
||||
lda /L91C96.2.PTR.AUTOI
|
||||
sta L91C96.2.PTR+1,x
|
||||
|
||||
ldy #S.ETH.SRCMAC+5 Add Src MAC Address
|
||||
ldx #5
|
||||
|
||||
.4 lda CONF.SRCMAC,x
|
||||
sta (ZPBufPtr),y
|
||||
dey
|
||||
dex
|
||||
bpl .4
|
||||
|
||||
ldx Slotn0
|
||||
|
||||
stz L91C96.2.DATA,x write fake status word
|
||||
stz L91C96.2.DATA,x
|
||||
|
||||
lda ZPBufCnt
|
||||
pha
|
||||
eor #$01
|
||||
lsr
|
||||
pla
|
||||
|
||||
adc #$05 add 5 if odd, 6 if even
|
||||
sta L91C96.2.DATA,x
|
||||
|
||||
lda ZPBufCnt+1
|
||||
adc #$00
|
||||
sta L91C96.2.DATA,x
|
||||
|
||||
ldy #0
|
||||
|
||||
.5 inc ZPnCnt
|
||||
bne .51
|
||||
|
||||
inc ZPnCnt+1
|
||||
beq .70
|
||||
|
||||
.51 lda (ZPBufPtr),y
|
||||
iny
|
||||
bne .6
|
||||
|
||||
inc ZPBufPtr+1
|
||||
|
||||
.6 inc ZPnCnt
|
||||
bne .61
|
||||
|
||||
inc ZPnCnt+1
|
||||
beq .71
|
||||
|
||||
.61 sta L91C96.2.DATA,x
|
||||
lda (ZPBufPtr),y
|
||||
sta L91C96.2.DATA,x
|
||||
iny
|
||||
bne .5
|
||||
|
||||
inc ZPBufPtr+1
|
||||
bra .5
|
||||
|
||||
.70 lda #0
|
||||
sta L91C96.2.DATA,x
|
||||
sta L91C96.2.DATA,x
|
||||
bra .8
|
||||
|
||||
.71 sta L91C96.2.DATA,x
|
||||
lda #%00100000 signal an extra (odd) byte
|
||||
sta L91C96.2.DATA,x
|
||||
|
||||
.8 lda #L91C96.2.MMUCR.NQPKT
|
||||
sta L91C96.2.MMUCR,x
|
||||
|
||||
plp
|
||||
sec
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
GS.Name >PSTR "LanCEgs"
|
||||
*--------------------------------------
|
||||
DRV.GS .PH DRV.NIC.START
|
||||
|
||||
jmp DRV.GS.Write
|
||||
jmp DRV.GS.SendARP
|
||||
jmp DRV.GS.SendUDP
|
||||
|
||||
DRV.GS.Read php
|
||||
DRV.GS.Rcvd php
|
||||
sei
|
||||
|
||||
|
||||
|
||||
ldx DRV.BLK.Slotn0
|
||||
|
||||
lda #2
|
||||
sta L91C96.BSR,x
|
||||
|
||||
lda L91C96.2.IST,x
|
||||
and #L91C96.2.IST.RCV
|
||||
beq DRV.GS.9
|
||||
|
||||
.1 lda #L91C96.2.PTR.RCVD+L91C96.2.PTR.AUTOI+L91C96.2.PTR.READ
|
||||
sta L91C96.2.PTR,x
|
||||
lda /L91C96.2.PTR.RCVD+L91C96.2.PTR.AUTOI+L91C96.2.PTR.READ
|
||||
sta L91C96.2.PTR+1,x
|
||||
|
||||
lda L91C96.2.DATA,x Get Frame Status Word (lo)
|
||||
lda L91C96.2.DATA,x Get Frame Status Word (HI)
|
||||
asl
|
||||
asl
|
||||
asl #$10 = odd?
|
||||
asl if odd, CS
|
||||
lda L91C96.2.DATA,x get lo byte count
|
||||
sbc #5 compute Size
|
||||
|
||||
sta DRV.FrameSize
|
||||
eor #$ff
|
||||
sta DRV.nCnt
|
||||
|
||||
lda L91C96.2.DATA,x get hi byte count
|
||||
sbc #0
|
||||
|
||||
sta DRV.FrameSize+1
|
||||
eor #$ff
|
||||
sta DRV.nCnt+1
|
||||
|
||||
>LDYAI DRV.InBuf
|
||||
>STYA DRV.A1L
|
||||
|
||||
ldy #0
|
||||
|
||||
.2 inc DRV.nCnt
|
||||
bne .3
|
||||
|
||||
inc DRV.nCnt+1
|
||||
beq .4
|
||||
|
||||
.3 lda L91C96.2.DATA,x
|
||||
sta (DRV.A1L),y
|
||||
iny
|
||||
bne .2
|
||||
|
||||
inc DRV.A1L+1
|
||||
bra .2
|
||||
|
||||
.4 lda #L91C96.2.MMUCR.REMREL
|
||||
sta L91C96.2.MMUCR,x
|
||||
|
||||
plp
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
DRV.GS.9 plp
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
DRV.GS.Write php
|
||||
DRV.GS.SendARP >LDYAI S.ARP
|
||||
>STYA DRV.FrameSize
|
||||
>LDYAI DRV.ARPBuf
|
||||
bra DRV.GS.Send
|
||||
*--------------------------------------
|
||||
DRV.GS.SendUDP >STYA DRV.FrameSize
|
||||
|
||||
jsr DRV.BLK.IPUDPCheksum
|
||||
|
||||
>LDYAI DRV.UDPBuf
|
||||
|
||||
DRV.GS.Send >STYA DRV.A1L
|
||||
|
||||
php
|
||||
sei
|
||||
|
||||
ldx DRV.BLK.Slotn0
|
||||
|
||||
lda #2
|
||||
sta L91C96.BSR,x
|
||||
|
||||
lda DRV.FrameSize
|
||||
eor #$ff
|
||||
sta DRV.nCnt
|
||||
eor #$ff
|
||||
clc
|
||||
adc #6 3 WORDs more Status, len & Control
|
||||
|
||||
bne .10
|
||||
|
||||
clc LO byte is 0, no need for an extra empty page
|
||||
|
||||
.10 lda DRV.FrameSize+1
|
||||
eor #$ff
|
||||
sta DRV.nCnt+1
|
||||
eor #$ff
|
||||
|
||||
adc #0
|
||||
|
||||
.1 ora #L91C96.2.MMUCR.ALLOC
|
||||
sta L91C96.2.MMUCR,x
|
||||
|
||||
ldy #0
|
||||
|
||||
.2 lda L91C96.2.IST,x
|
||||
and #L91C96.2.IST.ALLOC
|
||||
bne .3
|
||||
|
||||
dey
|
||||
bne .2
|
||||
|
||||
bra DRV.GS.9
|
||||
|
||||
.3 lda L91C96.2.AAR,x
|
||||
sta L91C96.2.PNR,x
|
||||
lda #L91C96.2.PTR.AUTOI
|
||||
sta L91C96.2.PTR,x
|
||||
lda /L91C96.2.PTR.AUTOI
|
||||
sta L91C96.2.PTR+1,x
|
||||
|
||||
* ldy #S.ETH.SRCMAC+5 Add Src MAC Address
|
||||
* ldx #5
|
||||
|
||||
*.4 lda CONF.SRCMAC,x
|
||||
* sta (DRV.A1L),y
|
||||
* dey
|
||||
* dex
|
||||
* bpl .4
|
||||
|
||||
ldx DRV.BLK.Slotn0
|
||||
|
||||
stz L91C96.2.DATA,x write fake status word
|
||||
stz L91C96.2.DATA,x
|
||||
|
||||
lda DRV.FrameSize
|
||||
pha
|
||||
eor #$01
|
||||
lsr
|
||||
pla
|
||||
|
||||
adc #$05 add 5 if odd, 6 if even
|
||||
sta L91C96.2.DATA,x
|
||||
|
||||
lda DRV.FrameSize+1
|
||||
adc #$00
|
||||
sta L91C96.2.DATA,x
|
||||
|
||||
ldy #0
|
||||
|
||||
.5 inc DRV.nCnt
|
||||
bne .51
|
||||
|
||||
inc DRV.nCnt+1
|
||||
beq .70
|
||||
|
||||
.51 lda (DRV.A1L),y
|
||||
iny
|
||||
bne .6
|
||||
|
||||
inc DRV.A1L+1
|
||||
|
||||
.6 inc DRV.nCnt
|
||||
bne .61
|
||||
|
||||
inc DRV.nCnt+1
|
||||
beq .71
|
||||
|
||||
.61 sta L91C96.2.DATA,x
|
||||
lda (DRV.A1L),y
|
||||
sta L91C96.2.DATA,x
|
||||
iny
|
||||
bne .5
|
||||
|
||||
inc DRV.A1L+1
|
||||
bra .5
|
||||
|
||||
.70 lda #0
|
||||
sta L91C96.2.DATA,x
|
||||
sta L91C96.2.DATA,x
|
||||
bra .8
|
||||
|
||||
.71 sta L91C96.2.DATA,x
|
||||
lda #%00100000 signal an extra (odd) byte
|
||||
sta L91C96.2.DATA,x
|
||||
|
||||
.8 lda #L91C96.2.MMUCR.NQPKT
|
||||
sta L91C96.2.MMUCR,x
|
||||
|
||||
plp
|
||||
sec
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
.EP
|
||||
|
@ -125,7 +125,7 @@ U2.Read php
|
||||
|
||||
lda TotalSize+1
|
||||
sbc #0
|
||||
sta ZPBufCnt
|
||||
sta ZPBufCnt+1
|
||||
eor #$ff
|
||||
sta ZPnCnt+1
|
||||
|
||||
|
@ -31,7 +31,9 @@ ZPCheckSum .EQ 14
|
||||
timerS .EQ 16
|
||||
timerC .EQ 17
|
||||
bRemoteMac .EQ 18
|
||||
Slotn0 .EQ 19
|
||||
bD1Size .EQ 19
|
||||
bD2Size .EQ 19
|
||||
Slotn0 .EQ 21
|
||||
*--------------------------------------
|
||||
CONF.FBUF .EQ $4000
|
||||
CONF.LBUF .EQ $4400
|
||||
@ -179,32 +181,77 @@ VEDRIVE.Ping lda CONF.PORT
|
||||
|
||||
>LDYAI ADT.REQ.LEN
|
||||
>STYA ZPBufCnt
|
||||
|
||||
jsr VEDRIVE.SendUDP
|
||||
bcs .9
|
||||
|
||||
jsr VEDRIVE.InitTimer
|
||||
|
||||
.3 jsr VEDRIVE.READ
|
||||
bcc .4
|
||||
.1 jsr VEDRIVE.READ
|
||||
bcc .2
|
||||
|
||||
jsr VEDRIVE.Wait
|
||||
bcc .3
|
||||
bcc .1
|
||||
|
||||
rts
|
||||
|
||||
.4 jsr VEDRIVE.CheckADTRep
|
||||
bcc .8
|
||||
.2 jsr VEDRIVE.CheckADTRep
|
||||
bcc .3
|
||||
|
||||
jsr VEDRIVE.CheckARPFrame
|
||||
bra .3
|
||||
bra .1
|
||||
|
||||
.8 ldy #S.UDP+$29
|
||||
.3 bit bD1Size
|
||||
bmi .30
|
||||
|
||||
ldy #S.UDP+10+4+$25
|
||||
lda (ZPBufPtr),y
|
||||
sta CONF.D1TOTALBLK
|
||||
iny
|
||||
lda (ZPBufPtr),y
|
||||
sta CONF.D1TOTALBLK+1
|
||||
|
||||
.30 lda #5
|
||||
sta ADT.REQ.CMD
|
||||
|
||||
lda #$C2
|
||||
sta ADT.REQ.SUM
|
||||
|
||||
>LDYAI ADT.REQ
|
||||
>STYA ZPBufPtr
|
||||
|
||||
>LDYAI ADT.REQ.LEN
|
||||
>STYA ZPBufCnt
|
||||
|
||||
jsr VEDRIVE.SendUDP
|
||||
bcs .9
|
||||
|
||||
jsr VEDRIVE.InitTimer
|
||||
|
||||
.4 jsr VEDRIVE.READ
|
||||
bcc .5
|
||||
|
||||
jsr VEDRIVE.Wait
|
||||
bcc .4
|
||||
|
||||
rts
|
||||
|
||||
.5 jsr VEDRIVE.CheckADTRep
|
||||
bcc .6
|
||||
|
||||
jsr VEDRIVE.CheckARPFrame
|
||||
bra .4
|
||||
|
||||
.6 bit bD2Size
|
||||
bmi .60
|
||||
|
||||
ldy #S.UDP+10+4+$25
|
||||
lda (ZPBufPtr),y
|
||||
sta CONF.D2TOTALBLK
|
||||
iny
|
||||
lda (ZPBufPtr),y
|
||||
sta CONF.D2TOTALBLK+1
|
||||
.60
|
||||
* clc
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
@ -461,11 +508,14 @@ CONF.FILENAME.L .EQ *-CONF.FILENAME
|
||||
*--------------------------------------
|
||||
CONF.KW >PSTR "nic"
|
||||
>PSTR "slot"
|
||||
>PSTR "mac"
|
||||
>PSTR "address"
|
||||
>PSTR "netmask"
|
||||
>PSTR "gateway"
|
||||
>PSTR "server"
|
||||
>PSTR "port"
|
||||
>PSTR "blksize1"
|
||||
>PSTR "blksize2"
|
||||
.HS 00
|
||||
*--------------------------------------
|
||||
CONF.KW.NIC >PSTR "lancegs"
|
||||
@ -482,8 +532,8 @@ CONF.MASK .HS 00000000
|
||||
CONF.GATEWAY .HS 00000000
|
||||
CONF.SERVER .HS 00000000
|
||||
CONF.PORT .DA /1977,#1977
|
||||
CONF.D1TOTALBLK .DA $FFFF
|
||||
CONF.D2TOTALBLK .DA $FFFF
|
||||
CONF.D1TOTALBLK .DA 1600
|
||||
CONF.D2TOTALBLK .DA 1600
|
||||
*--------------------------------------
|
||||
MLIGETPREFIX.P .DA #1
|
||||
.DA CONF.FILEPATH
|
||||
@ -631,7 +681,8 @@ ADT.REQ.UDP.DST .BS 2 DST PORT
|
||||
.BS 2 UDP CHECKSUM
|
||||
*--------------------------------------
|
||||
.DA #ADT.CMD.VSD
|
||||
.HS 030000C6 READ D1, BLK 0
|
||||
ADT.REQ.CMD .HS 030200 READ D1, BLK 2
|
||||
ADT.REQ.SUM .HS C4
|
||||
ADT.REQ.END .EQ *
|
||||
ADT.REQ.LEN .EQ *-ADT.REQ
|
||||
*--------------------------------------
|
||||
|
Loading…
x
Reference in New Issue
Block a user