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