Skip to content

Commit

Permalink
more r3 doc
Browse files Browse the repository at this point in the history
  • Loading branch information
phreda4 committed Nov 26, 2017
1 parent f96dc00 commit acd55dc
Showing 1 changed file with 207 additions and 35 deletions.
242 changes: 207 additions & 35 deletions doc/r3.txt
Original file line number Diff line number Diff line change
@@ -1,35 +1,106 @@
Lenguaje R3

LIT
TOS=DATA

WORD
call word

; | -- R: a -- Fin de palabra
ret

---------- remove accessto r stack
>R | a -- R: -- a
push TOS
R> | -- a R: a --
pop TOS
R | -- a R: a -- a
mov TOS,[esp]
RDROP | -- R: a --
sub esp,4
--------------------------------------


0? | -- Es 0 el tope de la pila ?
or TOS,TOS

+? | -- Es positivo el tope de la pila ?
or TOS,TOS

-? | -- Es negativo el tope de la pila ?
or TOS,TOS

1? | -- Es distinto a 0 el tope de la pila ?
or TOS,TOS

=? | a b -- a a = b ?
cmp NOS,TOS

<? | a b -- a a < b ?
cmp NOS,TOS

>? | a b -- a a > b ?
cmp NOS,TOS

<=? | a b -- a a <= b ?
cmp NOS,TOS

>=? | a b -- a a >= b ?
cmp NOS,TOS

<>? | a b -- a a <> b ?
cmp NOS,TOS

AND? | a b -- a a and b ?
test NOS,TOS

NAND? | a b -- a a nand b ?
test NOS,TOS

BTWN? | a b c -- a<=b<=c?

?? ( ) | IF
?? ( () ) | IF-ELSE
( ?? () ) | WHILE
?? ( A ) | IF
jxx .n
A
.n:

?? ( A () B ) | IF-ELSE
jxx .n
A
jmp .s
.n:
B
.s:

( A ?? () B ) | WHILE
.n:
A
jxx .s
B
jmp .n
.s:

jmp .n
.s:
B
.n:
A
jxx .s

( ?? ) | UNTIL
.n:
A
jxx .n

[ ; ] | Inicio y Fin de definicion Anonima
----- no existe

EXEC | vector -- Llama al codigo del vector
call TOS

NTH@ | nro listavector -- nro*4+listavector @
mov eax,[eax*4+CTE]
;lea eax,[eax*4+ebx+CTE]

DUP | a -- a a
DROP | a --
Expand All @@ -49,65 +120,179 @@ ROT | a b c -- b c a


AND | a b -- c c = a AND b
and TOS,NOS

OR | a b -- c c = a OR b
or TOS,NOS

XOR | a b -- c c = a XOR b
NOT | a b -- c c = a NOT b
xor TOS,NOS

+ | a b -- c c=a+b
add TOS,NOS

- | a b -- c c=a-b
sub TOS,NOS

<< | a b -- c c=a<<b
sal NOS,TOS

>> | a b -- c b=a>>b (arrastra signo)
sar NOS,TOS

0> | a b -- c b=a>>b (arrastra zero)
shr NOS,TOS

* | a b -- c c=a*b
imul TOS,NOS

/ | a b -- c c=a/b
cdq
idiv NOS,TOS

MOD | a b -- c c=a resto b
cdq
idiv NOS,TOS

*/ | a b c -- d d=a*b/c resultado intermedio en 64 bits
cdq
imul PK2,NOS
idiv NOS,TOS

*>> | a b c -- d d=(a*b)>>c resultado intermedio en 64 bits
;a=eax
cdq
imul NOS
shrd eax,edx,TOSb

<</ | a b c -- d d(a<<c)/b 64 bits!
cdq
shld edx,eax,TOSb
shl eax,TOSb
idiv NOS

/MOD | a b -- c d c=a/b d=a resto b
MOD | a b -- c c=a resto b
ABS | a -- b b=|a|
CLZ | a -- b count leanding zeros
SQRT | a -- b square root
cdq
idiv TOS

NOT | a -- c a not a
not TOS

NEG | a -- b b=-a
neg TOS

2/ | a -- b b=a/2
SAR TOS,1

2* | a -- b b=a*2
<< | a b -- c c=a<<b
>> | a b -- c b=a>>b (arrastra signo)
0> | a b -- c b=a>>b (arrastra zero)
SAL TOS,1

BSWAP | a -- b b=bswap a
bswap TOS

ABS | a -- b b=|a|
mov edx,TOS
sar edx,31
add TOS,edx
xor TOS,edx
;TOS=eax?
cdq
add eax,edx
xor eax,edx

CLZ | a -- b count leanding zeros
bsr TOS,TOS
xor TOS,31

SQRT | a -- b square root

@ | a -- b b=32(a)
mov TOS,[TOS]

C@ | a -- b b=8 (a)
movsx TOS,byte [TOS]

W@ | a -- b b=16(a)
movsx TOS,word [TOS]

! | v d -- 32(d) = v
mov [TOS],NOS

C! | v d -- 8(d) = v
mov byte [TOS],NOSb

W! | v d -- 16(d) = v
mov word [TOS],NOSw

+! | v d -- 32(d)=32(d)+v
add [TOS],NOS

C+! | v d -- 8(d)=8(d)+v
add byte [TOS],NOSb

W+! | v d -- 16(d)=16(d)+v
add word [TOS],NOSw

@+ | d -- d+4 v dword (32bits)
!+ | v d -- d+4
mov nTOS,[TOS];add TOS,4

C@+ | d -- d+1 v byte (8bits)
C!+ | v d -- d+1
movzs nTOS,byte [TOS];add TOS,1

W@+ | d -- d+2 v word (16bits)
movzs nTOS,word [TOS];add TOS,2

!+ | v d -- d+4
mov [TOS],NOS;add TOS,4

C!+ | v d -- d+1
mov byte [TOS],NOSb;add TOS,1

W!+ | v d -- d+2
mov word [TOS],NOSw;add TOS,2

>A | a -- S=a
A@ | -- v
Ac@ | -- v8 S+4
A@+ | -- v
Ac@+ | -- v8 S+1
A!+ | v -- v=(s);d+4
Ac!+ | v -- v=(s);d+1
mov edi,TOS

A+ | a --
add edi,TOS

A@ | -- v
mov TOS,[edi]

A! | v --
mov [edi],TOS


>B | a -- d=a
B@ | -- v
B!+ | v -- v=(d);d+4
mov esi,TOS

B+ | c -- d+c
add esi,TOS

B@ | -- v
mov TOS,[esi]

B! | v -- v=(d);d+4
mov [esi],TOS


MOVE | de sr cnt -- Copia CNT dword de SR a DE
MOVE> | de sr cnt -- Copia CNT dword de SR a DE (para atras)
FILL | v sr cnt --

CMOVE | de sr cnt -- Copia CNT bytes de SR a DE
CMOVE> | de sr cnt -- Copia CNT bytes de SR a DE (para atras)
CFILL | v sr cnt --

MEM | -- dir Direccion de inicio de memoria libre

SW | -- w Ancho de pantalla
SH | -- h Alto de pantalla
FRAMEV | -- m Memoria de video

REDRAW | -- Dibuja nuevo FRAME

UPDATE | s -- s Actualiza las irqel raton, el teclado, sonido, etc, s=sleep time
MSEC | -- a milisegundos del sistema
TIME | -- s m h hora minutos y segundos
Expand All @@ -119,22 +304,13 @@ APPEND | d n "filename" -- Graba memoria D en un archivo, N bytes
FFIRST | "path" -- fdd/0 Obtiene la primera entrada de la carpeta
FNEXT | -- fdd/0 Obtiene la siguiente entrada en la carpeta,0 es fin

SW | -- w Ancho de pantalla
SH | -- h Alto de pantalla
CLS | -- Limpia pantalla
REDRAW | -- Dibuja nuevo FRAME
FRAMEV | -- m Memoria de video
FRAMEVXY | x y -- d


ALPHA | a -- Transparencia (canal alpha)
INK | -- 'i direccion de dibujo
INK' | -- 'i direccion de dibujo
OP | x y -- Punto de origen

LINE | x y -- Traza linea
CURVE | x y x y -- Traza curva
CURVE3 | x y x y x y -- Traza curva

PLINE | x y -- Traza linea poligono
PCURVE | x y x y -- Traza curva poligono
PCURVE3 | x y x y x y -- Traza curva poligono
Expand All @@ -146,18 +322,14 @@ BMOUSE | -- b estado del apuntado
IKEY! | v -- vector de irq del teclado
KEY | -- s ultima tecla pulsada (scancode)


CNTJOY | -- cnt cantidad de joysticks
GETJOY | j -- a direccion de los datos de joystick J


SLOAD | "" -- pp carga sonido .mp3,.ogg
SPLAY | pp -- suena sonido
MLOAD | "" -- mm carga musica .xm
MPLAY | mm -- suena musica


OPENURL | url header buff -- buff/0 abre URL


SYSTEM | "cmd" -- status ejecuta cmd de sistema/0 end/-1 check

0 comments on commit acd55dc

Please sign in to comment.