mirror of
https://github.com/pfusik/xasm.git
synced 2024-06-07 11:29:32 +00:00
X-Assembler 2.3.-5.
This commit is contained in:
parent
0c019b97d1
commit
83d6d7d0ac
318
xasm.asm
318
xasm.asm
|
@ -121,6 +121,18 @@ MACRO file _func, _errtx
|
||||||
call xdisk
|
call xdisk
|
||||||
ENDM
|
ENDM
|
||||||
|
|
||||||
|
MACRO jfile _func, _errtx
|
||||||
|
IFNB <_errtx>
|
||||||
|
mov [errmsg], offset _errtx
|
||||||
|
ENDIF
|
||||||
|
IF _func and 0ff00h
|
||||||
|
mov ax, _func
|
||||||
|
ELSE
|
||||||
|
mov ah, _func
|
||||||
|
ENDIF
|
||||||
|
jmp xdisk
|
||||||
|
ENDM
|
||||||
|
|
||||||
MACRO print _text
|
MACRO print _text
|
||||||
IFNB <_text>
|
IFNB <_text>
|
||||||
mov dx, offset _text
|
mov dx, offset _text
|
||||||
|
@ -273,7 +285,7 @@ gsw1: lodsb ; pobierz switche
|
||||||
mov di, offset swilet
|
mov di, offset swilet
|
||||||
mov cx, 8
|
mov cx, 8
|
||||||
repne scasb
|
repne scasb
|
||||||
jne usg ; nie ma takiego switcha
|
neusg: jne usg ; nie ma takiego switcha
|
||||||
bts [word swits], cx ; sprawdz bit i ustaw
|
bts [word swits], cx ; sprawdz bit i ustaw
|
||||||
jc usg ; juz byl taki
|
jc usg ; juz byl taki
|
||||||
mov di, offset lstnam
|
mov di, offset lstnam
|
||||||
|
@ -287,7 +299,7 @@ gsw1: lodsb ; pobierz switche
|
||||||
cmp al, 'O'
|
cmp al, 'O'
|
||||||
jne gsw1 ; switch bez parametru
|
jne gsw1 ; switch bez parametru
|
||||||
cmp [byte si], ':'
|
cmp [byte si], ':'
|
||||||
jne usg ; /O wymaga ':'
|
jne neusg ; /O wymaga ':'
|
||||||
mov di, offset objnam
|
mov di, offset objnam
|
||||||
mov ecx, 'XBO'
|
mov ecx, 'XBO'
|
||||||
|
|
||||||
|
@ -425,7 +437,7 @@ gline1: cmp di, offset line+256
|
||||||
jz eof
|
jz eof
|
||||||
mov al, [di]
|
mov al, [di]
|
||||||
cmp al, 0dh ; pc cr
|
cmp al, 0dh ; pc cr
|
||||||
je syntax
|
je short syntax
|
||||||
cmp al, 0ah ; unix lf
|
cmp al, 0ah ; unix lf
|
||||||
je syntax
|
je syntax
|
||||||
cmp al, 9bh ; atari eol
|
cmp al, 9bh ; atari eol
|
||||||
|
@ -433,23 +445,7 @@ gline1: cmp di, offset line+256
|
||||||
inc di
|
inc di
|
||||||
jmp gline1
|
jmp gline1
|
||||||
|
|
||||||
eof: mov bx, [iclen] ; koniec pliku
|
skip1: call get ; falszywy warunek - omin etykiete ...
|
||||||
or [(icl bx).flags], m_eofl
|
|
||||||
|
|
||||||
syntax: call lspeol ; zapisz CR/LF i zapamietaj dlugosc linii
|
|
||||||
mov si, offset line
|
|
||||||
mov al, [si]
|
|
||||||
cmp al, '*'
|
|
||||||
je lstrem
|
|
||||||
cmp al, ';'
|
|
||||||
je lstrem
|
|
||||||
cmp al, '|'
|
|
||||||
je lstrem
|
|
||||||
cmp al, 0dh
|
|
||||||
je lsteol
|
|
||||||
testfl m_skip
|
|
||||||
jz nskip ; czy byl falszywy warunek ?
|
|
||||||
skip1: call get ; ... tak - omin etykiete ...
|
|
||||||
cmp al, ' '
|
cmp al, ' '
|
||||||
je skip2
|
je skip2
|
||||||
cmp al, 9
|
cmp al, 9
|
||||||
|
@ -472,27 +468,33 @@ skip2: call space1 ; omin spacje
|
||||||
resfl m_skip
|
resfl m_skip
|
||||||
inc [sift] ;0
|
inc [sift] ;0
|
||||||
skret: ret
|
skret: ret
|
||||||
skift: call shlelf
|
skift: inc [sift]
|
||||||
inc [sift]
|
shlelf: shl [elflag], 1
|
||||||
ret
|
jnc skret
|
||||||
|
error e_tmift
|
||||||
|
|
||||||
skels: call btself
|
skels: call btself
|
||||||
cmp [sift], 0
|
cmp [sift], 0
|
||||||
jnz skret
|
jnz skret
|
||||||
jmp fliski
|
jmp fliski
|
||||||
|
|
||||||
lstrem: call chklst
|
eof: mov bx, [iclen] ; koniec pliku
|
||||||
jnz main
|
or [(icl bx).flags], m_eofl
|
||||||
mov di, offset lstspa+1
|
|
||||||
call putlsp
|
|
||||||
jmp main
|
|
||||||
lsteol: call chklst
|
|
||||||
jnz main
|
|
||||||
mov di, offset lstspa
|
|
||||||
call lspeol
|
|
||||||
call putlnm
|
|
||||||
jmp main
|
|
||||||
|
|
||||||
nskip: mov [labvec], 0
|
syntax: call lspeol ; zapisz CR/LF i zapamietaj dlugosc linii
|
||||||
|
mov si, offset line ; asembluj linie
|
||||||
|
mov al, [si]
|
||||||
|
cmp al, '*'
|
||||||
|
je lstrem
|
||||||
|
cmp al, ';'
|
||||||
|
je lstrem
|
||||||
|
cmp al, '|'
|
||||||
|
je lstrem
|
||||||
|
cmp al, 0dh
|
||||||
|
je lsteol
|
||||||
|
testfl m_skip
|
||||||
|
jnz skip1 ; czy byl falszywy warunek ?
|
||||||
|
mov [labvec], 0 ; ... nie
|
||||||
cmp al, ' '
|
cmp al, ' '
|
||||||
je s_one
|
je s_one
|
||||||
cmp al, 9
|
cmp al, 9
|
||||||
|
@ -503,8 +505,19 @@ nskip: mov [labvec], 0
|
||||||
call getuns
|
call getuns
|
||||||
jc unknow
|
jc unknow
|
||||||
test ax, ax
|
test ax, ax
|
||||||
jz lstrem
|
jnz s_cmd
|
||||||
jmp s_cmd
|
|
||||||
|
lstrem: call chklst
|
||||||
|
jnz jmain
|
||||||
|
mov di, offset lstspa+1
|
||||||
|
call putlsp
|
||||||
|
jmain: jmp main
|
||||||
|
lsteol: call chklst
|
||||||
|
jnz jmain
|
||||||
|
mov di, offset lstspa
|
||||||
|
call lspeol
|
||||||
|
call putlnm
|
||||||
|
jmp main
|
||||||
|
|
||||||
labdef: jpass2 deflp2 ; jest etykieta
|
labdef: jpass2 deflp2 ; jest etykieta
|
||||||
call flabel ; definicja etykiety w pass 1
|
call flabel ; definicja etykiety w pass 1
|
||||||
|
@ -575,7 +588,7 @@ rdcmd3: lodsw ; wez trzy litery
|
||||||
cmp [byte high labvec], 0
|
cmp [byte high labvec], 0
|
||||||
je lbnox ; ... a jest etykieta ...
|
je lbnox ; ... a jest etykieta ...
|
||||||
cmp eax, 'EQU' shl 8
|
cmp eax, 'EQU' shl 8
|
||||||
jne noorg ; ... to dozwolony jest tylko EQU
|
call nenorg ; ... to dozwolony jest tylko EQU
|
||||||
lbnox: inc si
|
lbnox: inc si
|
||||||
cmp [byte si], ':' ; czy para instrukcji?
|
cmp [byte si], ':' ; czy para instrukcji?
|
||||||
jne nopair
|
jne nopair
|
||||||
|
@ -651,6 +664,7 @@ ckcmd5: setfl m_repa
|
||||||
mov [reporg], ax
|
mov [reporg], ax
|
||||||
jz rncmd2
|
jz rncmd2
|
||||||
setfl m_skit ; pseudo instrukcja omijania
|
setfl m_skit ; pseudo instrukcja omijania
|
||||||
|
mov [obuf], 2
|
||||||
mov al, [(com di+bx).c_code]
|
mov al, [(com di+bx).c_code]
|
||||||
call savbyt
|
call savbyt
|
||||||
jmp encmd2
|
jmp encmd2
|
||||||
|
@ -849,7 +863,7 @@ nlata: call lclose
|
||||||
call pridec
|
call pridec
|
||||||
print byttxt
|
print byttxt
|
||||||
zrbyt: mov ax, [exitcod]
|
zrbyt: mov ax, [exitcod]
|
||||||
; dos ;!!!!!!
|
; dos ;!!!
|
||||||
|
|
||||||
; I/O
|
; I/O
|
||||||
xdisk: dos
|
xdisk: dos
|
||||||
|
@ -865,8 +879,7 @@ lclose: mov bx, nhand ; mov bx, [lhand]
|
||||||
mov [errmsg], offset e_wrlst
|
mov [errmsg], offset e_wrlst
|
||||||
hclose: cmp bx, nhand
|
hclose: cmp bx, nhand
|
||||||
je cloret
|
je cloret
|
||||||
file 3eh
|
jfile 3eh
|
||||||
cloret: ret
|
|
||||||
|
|
||||||
fopen: cmp di, offset t_icl+l_icl-2
|
fopen: cmp di, offset t_icl+l_icl-2
|
||||||
jnb icler
|
jnb icler
|
||||||
|
@ -880,7 +893,7 @@ fopen: cmp di, offset t_icl+l_icl-2
|
||||||
mov bx, [iclen]
|
mov bx, [iclen]
|
||||||
mov bx, [(icl bx).prev]
|
mov bx, [(icl bx).prev]
|
||||||
mov [(icl bx).handle], ax
|
mov [(icl bx).handle], ax
|
||||||
ret
|
cloret: ret
|
||||||
|
|
||||||
fread1: mov dx, di
|
fread1: mov dx, di
|
||||||
mov cx, 1
|
mov cx, 1
|
||||||
|
@ -930,8 +943,8 @@ orgwor: push ax
|
||||||
jmp putwor
|
jmp putwor
|
||||||
|
|
||||||
chorg: testfl m_norg
|
chorg: testfl m_norg
|
||||||
jz putx
|
nenorg: jz putx
|
||||||
noorg: error e_norg
|
error e_norg
|
||||||
|
|
||||||
tmorgs: error e_orgs
|
tmorgs: error e_orgs
|
||||||
|
|
||||||
|
@ -1095,8 +1108,7 @@ spatax: call lsplen
|
||||||
putlst: mov dx, offset lstnum
|
putlst: mov dx, offset lstnum
|
||||||
mov cx, [linlen]
|
mov cx, [linlen]
|
||||||
putlad: mov bx, [lhand]
|
putlad: mov bx, [lhand]
|
||||||
file 40h, e_wrlst
|
jfile 40h, e_wrlst
|
||||||
ret
|
|
||||||
|
|
||||||
opnlst: mov dx, offset lstnam
|
opnlst: mov dx, offset lstnam
|
||||||
opntab: xor cx, cx
|
opntab: xor cx, cx
|
||||||
|
@ -1289,16 +1301,21 @@ getval: xor bx, bx
|
||||||
|
|
||||||
v_lop:
|
v_lop:
|
||||||
v_par1: inc bh
|
v_par1: inc bh
|
||||||
call get
|
v_par0: call get
|
||||||
cmp al, '['
|
cmp al, '['
|
||||||
je v_par1
|
je v_par1
|
||||||
cmp al, '('
|
mov di, offset opert0
|
||||||
|
mov cx, noper0
|
||||||
|
repne scasb
|
||||||
|
jne v_n1a
|
||||||
|
sub di, offset opert0-noper1-noper2
|
||||||
|
call goprpa
|
||||||
|
push di bx
|
||||||
|
jmp v_par0
|
||||||
|
|
||||||
|
v_n1a: cmp al, '('
|
||||||
je wropar
|
je wropar
|
||||||
cmp al, '-'
|
|
||||||
je valuem
|
|
||||||
dec si
|
dec si
|
||||||
mov al, '+'
|
|
||||||
valuem: mov bl, al
|
|
||||||
xor eax, eax
|
xor eax, eax
|
||||||
call get
|
call get
|
||||||
cmp al, '*'
|
cmp al, '*'
|
||||||
|
@ -1429,10 +1446,7 @@ value0: dec si
|
||||||
test di, di
|
test di, di
|
||||||
js ilchar
|
js ilchar
|
||||||
lda edx
|
lda edx
|
||||||
value1: cmp bl, '-'
|
value1: push eax
|
||||||
jne value2
|
|
||||||
neg eax
|
|
||||||
value2: push eax
|
|
||||||
v_par2: dec bh
|
v_par2: dec bh
|
||||||
js mbrack
|
js mbrack
|
||||||
lodsb
|
lodsb
|
||||||
|
@ -1457,24 +1471,22 @@ foper2: inc si
|
||||||
sub di, offset opert2
|
sub di, offset opert2
|
||||||
shr di, 1
|
shr di, 1
|
||||||
add di, noper1
|
add di, noper1
|
||||||
goper: lea ax, [di+operpa]
|
goper: call goprpa
|
||||||
add di, di
|
|
||||||
add di, ax
|
|
||||||
mov bl, [di]
|
|
||||||
mov di, [di+1]
|
|
||||||
pop eax
|
pop eax
|
||||||
v_com: pop cx
|
v_com: pop cx
|
||||||
cmp cx, bx
|
cmp cx, bx
|
||||||
jb v_xcm
|
jb v_xcm
|
||||||
pop ecx
|
|
||||||
xchg eax, ecx
|
|
||||||
pop dx
|
pop dx
|
||||||
push offset v_com
|
cmp dx, offset v_1arg
|
||||||
|
jae v_r1a
|
||||||
|
sta ecx
|
||||||
|
pop eax
|
||||||
|
v_r1a: push offset v_com
|
||||||
push dx
|
push dx
|
||||||
ret
|
ret
|
||||||
v_xcm: cmp bl, 1
|
v_xcm: cmp bl, 1
|
||||||
jbe v_xit
|
jbe v_xit
|
||||||
push cx di eax bx
|
push cx eax di bx
|
||||||
jmp v_lop
|
jmp v_lop
|
||||||
v_xit: mov [dword val], eax
|
v_xit: mov [dword val], eax
|
||||||
cmp [ukp1], 1
|
cmp [ukp1], 1
|
||||||
|
@ -1585,7 +1597,7 @@ v_xor: xor eax, ecx ; ^
|
||||||
ret
|
ret
|
||||||
|
|
||||||
v_equ: cmp eax, ecx ; =
|
v_equ: cmp eax, ecx ; =
|
||||||
je v_one
|
v_eq1: je v_one
|
||||||
v_zer: xor eax, eax
|
v_zer: xor eax, eax
|
||||||
ret
|
ret
|
||||||
v_one: mov eax, 1
|
v_one: mov eax, 1
|
||||||
|
@ -1620,6 +1632,30 @@ v_orl: or eax, ecx ; ||
|
||||||
jz v_ret
|
jz v_ret
|
||||||
jmp v_one
|
jmp v_one
|
||||||
|
|
||||||
|
; Operatory 1-argumentowe
|
||||||
|
v_1arg:
|
||||||
|
v_neg: neg eax
|
||||||
|
v_plu: ret
|
||||||
|
|
||||||
|
v_low: movzx eax, al
|
||||||
|
ret
|
||||||
|
|
||||||
|
v_hig: movzx eax, ah
|
||||||
|
ret
|
||||||
|
|
||||||
|
v_nol: test eax, eax
|
||||||
|
jmp v_eq1
|
||||||
|
|
||||||
|
v_not: not eax
|
||||||
|
ret
|
||||||
|
|
||||||
|
goprpa: lea ax, [di+operpa]
|
||||||
|
add di, di
|
||||||
|
add di, ax
|
||||||
|
mov bl, [di]
|
||||||
|
mov di, [di+1]
|
||||||
|
ret
|
||||||
|
|
||||||
; Pobierz operand rozkazu i rozpoznaj tryb adresowania
|
; Pobierz operand rozkazu i rozpoznaj tryb adresowania
|
||||||
getadr: call spaces
|
getadr: call spaces
|
||||||
lodsb
|
lodsb
|
||||||
|
@ -1700,8 +1736,7 @@ getai2: mov dx, 1
|
||||||
getaid: lodsb
|
getaid: lodsb
|
||||||
cmp al, ','
|
cmp al, ','
|
||||||
je getaix
|
je getaix
|
||||||
cmp al, ')'
|
call chkpar
|
||||||
jne mparen
|
|
||||||
lodsw
|
lodsw
|
||||||
mov dx, 1009h
|
mov dx, 1009h
|
||||||
mov bl, 14h
|
mov bl, 14h
|
||||||
|
@ -2125,11 +2160,7 @@ valuco: call getval
|
||||||
ret
|
ret
|
||||||
badsin: error e_sin
|
badsin: error e_sin
|
||||||
|
|
||||||
p_dta: call spaces
|
dtan0: cmp al, 'A'
|
||||||
dta1: call get
|
|
||||||
and al, 0dfh
|
|
||||||
mov [cod], al
|
|
||||||
cmp al, 'A'
|
|
||||||
je dtan1
|
je dtan1
|
||||||
cmp al, 'B'
|
cmp al, 'B'
|
||||||
je dtan1
|
je dtan1
|
||||||
|
@ -2137,17 +2168,30 @@ dta1: call get
|
||||||
je dtan1
|
je dtan1
|
||||||
cmp al, 'H'
|
cmp al, 'H'
|
||||||
je dtan1
|
je dtan1
|
||||||
cmp al, 'C'
|
|
||||||
je dtat1
|
|
||||||
cmp al, 'D'
|
|
||||||
je dtat1
|
|
||||||
cmp al, 'R'
|
cmp al, 'R'
|
||||||
je dtar1
|
jne dtab1
|
||||||
jmp ilchar
|
jmp dtar1
|
||||||
|
|
||||||
dtan1: lodsb
|
dtat0: cmp al, 'C'
|
||||||
cmp al, '('
|
je dtat1j
|
||||||
jne mparen
|
cmp al, 'D'
|
||||||
|
jne dtab1
|
||||||
|
dtat1j: dec si
|
||||||
|
jmp dtat1
|
||||||
|
|
||||||
|
p_dta: call spaces
|
||||||
|
dta1: lodsw
|
||||||
|
and al, 0dfh
|
||||||
|
cmp ah, '('
|
||||||
|
je dtan0
|
||||||
|
cmp ah, "'"
|
||||||
|
je dtat0
|
||||||
|
cmp ah, '"'
|
||||||
|
je dtat0
|
||||||
|
dtab1: dec si
|
||||||
|
dec si
|
||||||
|
mov al, ' '
|
||||||
|
dtan1: mov [cod], al
|
||||||
|
|
||||||
dtan2: lodsd
|
dtan2: lodsd
|
||||||
and eax, 0ffdfdfdfh
|
and eax, 0ffdfdfdfh
|
||||||
|
@ -2177,8 +2221,7 @@ dtan2: lodsd
|
||||||
jb badsin
|
jb badsin
|
||||||
mov [sinmax], ax
|
mov [sinmax], ax
|
||||||
lodsb
|
lodsb
|
||||||
cmp al, ')'
|
call chkpar
|
||||||
jne mparen
|
|
||||||
presin: finit
|
presin: finit
|
||||||
fldpi
|
fldpi
|
||||||
fld st
|
fld st
|
||||||
|
@ -2222,13 +2265,15 @@ dtans: call savbyt
|
||||||
dtanx: mov ax, [sinmin]
|
dtanx: mov ax, [sinmin]
|
||||||
cmp ax, [sinmax]
|
cmp ax, [sinmax]
|
||||||
jbe gensin
|
jbe gensin
|
||||||
|
cmp [cod], ' '
|
||||||
|
je dtanxt
|
||||||
lodsb
|
lodsb
|
||||||
cmp al, ','
|
cmp al, ','
|
||||||
je dtan2
|
je dtan2
|
||||||
cmp al, ')'
|
dtanp: push offset dtanxt
|
||||||
je dtanxt
|
chkpar: cmp al, ')'
|
||||||
|
je paret
|
||||||
mparen: error e_paren
|
error e_paren
|
||||||
|
|
||||||
unknow: error e_uknow
|
unknow: error e_uknow
|
||||||
|
|
||||||
|
@ -2262,12 +2307,10 @@ dtanxt: lodsb
|
||||||
cmp al, ','
|
cmp al, ','
|
||||||
je dta1
|
je dta1
|
||||||
dec si
|
dec si
|
||||||
ret
|
paret: ret
|
||||||
|
|
||||||
; Zapisz liczbe rzeczywista
|
; Zapisz liczbe rzeczywista
|
||||||
dtar1: lodsb
|
dtar1:
|
||||||
cmp al, '('
|
|
||||||
jne mparen
|
|
||||||
dtar2: xor bx, bx
|
dtar2: xor bx, bx
|
||||||
xor edx, edx
|
xor edx, edx
|
||||||
xor cx, cx
|
xor cx, cx
|
||||||
|
@ -2289,22 +2332,7 @@ dreal3: inc cx
|
||||||
jnc dreal3
|
jnc dreal3
|
||||||
cmp al, '.'
|
cmp al, '.'
|
||||||
je drealp
|
je drealp
|
||||||
and al, 0dfh
|
jmp dreale
|
||||||
cmp al, 'E'
|
|
||||||
jne drealf
|
|
||||||
dreale: call getsgn
|
|
||||||
call getdig
|
|
||||||
jc ilchar
|
|
||||||
mov ah, al
|
|
||||||
call getdig
|
|
||||||
jnc dreal4
|
|
||||||
shr ax, 8
|
|
||||||
dreal4: aad
|
|
||||||
add di, di
|
|
||||||
jnc drealn
|
|
||||||
neg ax
|
|
||||||
drealn: add cx, ax
|
|
||||||
jmp drealf
|
|
||||||
dreal5: test edx, edx
|
dreal5: test edx, edx
|
||||||
jnz dreal9
|
jnz dreal9
|
||||||
test bl, bl
|
test bl, bl
|
||||||
|
@ -2313,9 +2341,23 @@ dreal5: test edx, edx
|
||||||
dreal9: call putdig
|
dreal9: call putdig
|
||||||
drealp: call getdig
|
drealp: call getdig
|
||||||
jnc dreal5
|
jnc dreal5
|
||||||
and al, 0dfh
|
dreale: and al, 0dfh
|
||||||
cmp al, 'E'
|
cmp al, 'E'
|
||||||
je dreale
|
jne drealf
|
||||||
|
call getsgn
|
||||||
|
call getdig
|
||||||
|
jc ilchar
|
||||||
|
mov ah, al
|
||||||
|
call getdig
|
||||||
|
jnc dreal4
|
||||||
|
shr ax, 8
|
||||||
|
dec si
|
||||||
|
dreal4: inc si
|
||||||
|
aad
|
||||||
|
add di, di
|
||||||
|
jnc drealn
|
||||||
|
neg ax
|
||||||
|
drealn: add cx, ax
|
||||||
drealf: test edx, edx
|
drealf: test edx, edx
|
||||||
jnz drealx
|
jnz drealx
|
||||||
test bl, bl
|
test bl, bl
|
||||||
|
@ -2344,8 +2386,8 @@ dreal7: cmp bl, al
|
||||||
jb dreal6
|
jb dreal6
|
||||||
dreal8: lda cx
|
dreal8: lda cx
|
||||||
mov ah, bl
|
mov ah, bl
|
||||||
dreals: rol edx, 16
|
rol edx, 16
|
||||||
push edx
|
dreals: push edx
|
||||||
call savwor
|
call savwor
|
||||||
pop ax
|
pop ax
|
||||||
xchg ah, al
|
xchg ah, al
|
||||||
|
@ -2357,9 +2399,7 @@ dreals: rol edx, 16
|
||||||
lodsb
|
lodsb
|
||||||
cmp al, ','
|
cmp al, ','
|
||||||
je dtar2
|
je dtar2
|
||||||
cmp al, ')'
|
jmp dtanp
|
||||||
jne mparen
|
|
||||||
jmp dtanxt
|
|
||||||
|
|
||||||
putdig: cmp bl, 10h
|
putdig: cmp bl, 10h
|
||||||
jnb rlret
|
jnb rlret
|
||||||
|
@ -2459,10 +2499,6 @@ p_end: pop ax
|
||||||
call linend
|
call linend
|
||||||
jmp filend
|
jmp filend
|
||||||
|
|
||||||
shlelf: shl [elflag], 1
|
|
||||||
jnc cndret
|
|
||||||
error e_tmift
|
|
||||||
|
|
||||||
btself: bts [elflag], 0
|
btself: bts [elflag], 0
|
||||||
jnc cndret
|
jnc cndret
|
||||||
error e_eifex
|
error e_eifex
|
||||||
|
@ -2604,34 +2640,42 @@ comtab: cmd ADC0060p_acc
|
||||||
comend:
|
comend:
|
||||||
|
|
||||||
operpa: opr 1ret
|
operpa: opr 1ret
|
||||||
opr 5add
|
opr 6add
|
||||||
opr 5sub
|
opr 6sub
|
||||||
opr 6mul
|
opr 7mul
|
||||||
opr 6div
|
opr 7div
|
||||||
opr 6mod
|
opr 7mod
|
||||||
opr 6and
|
opr 7and
|
||||||
opr 5or
|
opr 6or
|
||||||
opr 5xor
|
opr 6xor
|
||||||
opr 4equ
|
opr 5equ
|
||||||
opr 4les
|
opr 5les
|
||||||
opr 4grt
|
opr 5grt
|
||||||
opr 6sal
|
opr 7sal
|
||||||
opr 6sar
|
opr 7sar
|
||||||
opr 4leq
|
opr 5leq
|
||||||
opr 4geq
|
opr 5geq
|
||||||
opr 4neq
|
opr 5neq
|
||||||
opr 4neq
|
opr 5neq
|
||||||
opr 3anl
|
opr 3anl
|
||||||
opr 2orl
|
opr 2orl
|
||||||
|
opr 8plu
|
||||||
|
opr 8neg
|
||||||
|
opr 8low
|
||||||
|
opr 8hig
|
||||||
|
opr 4nol
|
||||||
|
opr 8not
|
||||||
|
|
||||||
opert2 db '<<>><=>=<>!=&&||'
|
opert2 db '<<>><=>=<>!=&&||'
|
||||||
noper2 = ($-opert2)/2
|
noper2 = ($-opert2)/2
|
||||||
opert1 db '+-*/%&|^=<>'
|
opert1 db '+-*/%&|^=<>'
|
||||||
noper1 = $-opert1
|
noper1 = $-opert1
|
||||||
|
opert0 db '+-<>!~'
|
||||||
|
noper0 = $-opert0
|
||||||
|
|
||||||
swilet db 'TSONLIEC'
|
swilet db 'TSONLIEC'
|
||||||
|
|
||||||
hello db 'X-Assembler 2.2 by Fox/Taquart',eot
|
hello db 'X-Assembler 2.3.-5 by Fox/Taquart',eot
|
||||||
hellen = $-hello-1
|
hellen = $-hello-1
|
||||||
usgtxt db "Syntax: XASM source [options]",eol
|
usgtxt db "Syntax: XASM source [options]",eol
|
||||||
db "/c List false conditionals",eol
|
db "/c List false conditionals",eol
|
||||||
|
|
Loading…
Reference in New Issue
Block a user