Lenguajes de programación BASIC en PC: todo lo conocido

Foro dedicado a la programación en todo tipo de sistemas clásicos.
Avatar de Usuario
Alki
Amstrad PC 1640
Amstrad PC 1640
Mensajes: 524
Registrado: 05 Jul 2006, 10:24
Gracias dadas: 3 veces
Gracias recibidas: 2 veces

Re: Lenguajes de programación BASIC en PC: todo lo conocido

Mensajepor Alki » 15 Jul 2013, 00:55

Doy otro voto para GAMBAS del que he oido maravillas... Yo no lo he probado aun, ando mas emocionado con python y haskell..

jepalza

Re: Lenguajes de programación BASIC en PC: todo lo conocido

Mensajepor jepalza » 15 Jul 2013, 15:55

Namek escribió:http://www.purebasic.com Este empezo en el Amiga inspirado por el BLITZ BASIC y actualmente tiene versiones comerciales para GÜINDOUS, MACACOS y LINUX. La version para AMIGA es opensource pero ya no esta al día con las otras versiones.

Añadido

Luna
Amiga 1200
Amiga 1200
Mensajes: 1974
Registrado: 01 Jun 2013, 16:21
Sistema Favorito: PC
primer_sistema: ZX81
consola_favorita: Sega Saturn
Primera consola: Atari 2600
Ubicación: Republica de catalunya
Gracias dadas: 30 veces
Gracias recibidas: 29 veces
Contactar:

Re: Lenguajes de programación BASIC en PC: todo lo conocido

Mensajepor Luna » 15 Jul 2013, 16:07

IBM-BASIC, lenguaje integado en la BIOS original de IBM por contrato (Aunque IBM la borró en tiempos del PS/2 el dia que Microsoft quiera dinero facil yá sabe...) muy similar al BASIC de los ordenadores MSX 1, pero limitado en comandos que dependan en hardware, por otro lado, es la única forma de acceder al conector 'tape' en un IBM 5150...

BASIC.com, Comando el cual introducido desde DOS permite invocar el BASIC sin re-iniciar. (solo funciona en IBM pre-ps/2)

BASICA, versión de IBM-BASIC 'Avanzada' (ergo: compatibilidad de la unidad A: mediante el comando 'files')

GWBASIC, Muy similar al IBM-BASIC, pero que no depende de la BIOS de IBM

jepalza

Re: Lenguajes de programación BASIC en PC: todo lo conocido

Mensajepor jepalza » 15 Jul 2013, 18:55

Luna, no he incluído esos clásicos, por que no son utilizables hoy día, sin ayudas externas. La idea, es poner Basic funcionales, potentes, modernos, a ser posible multisistema y con buen soporte gráfico (GUI, 2D, 3D, etc).
Ademas, sobre productos Microsoft se conoce "casi" todo, como el VisualBasic, y son redundantes. Pero gracias por mencionarlos aquí.

Avatar de Usuario
mcleod_ideafix
Amiga 2500
Amiga 2500
Mensajes: 5316
Registrado: 06 Oct 2009, 04:12
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Vectrex
Primera consola: TV Games/Pong Clone
Ubicación: Jerez de la Frontera
Gracias dadas: 12 veces
Gracias recibidas: 53 veces
Contactar:

Re: Lenguajes de programación BASIC en PC: todo lo conocido

Mensajepor mcleod_ideafix » 15 Jul 2013, 21:25

Ejemplo de chorriprograma en FreeBASIC que he estado haciendo ahora. Es una versión de otro que hice para el SAM Coupé hace un tiempo, que a su vez es una versión de otro que hice aún hace más tiempo en C y ASM para el PC en DOS y modo MCGA.

Código: Seleccionar todo

'Prueba grafica en FreeBASIC. Demo "worm"
'Port de un efecto hecho en BASIC del SAM Coupe
'disponible en http://foro.speccy.org/viewtopic.php?f=6&t=958&start=15#p12207

'(c)2013 mcleod_ideafix


Const xres=640  'cambia estos dos para usar
Const yres=480  'otra resolucion de pantalla

Const gtorad=0.01745329251994329576923690768489
Const d1=(xres-64)/2
Const d2=(yres-64)/2

Dim As Integer x,y,sw
Dim As Double ang,mult,incr
Dim As Any Ptr img1,img2,spr,muestra,pinta

ScreenRes xres,yres,8
img1=ImageCreate (xres,yres,0,8)  'estos son los
img2=ImageCreate (xres,yres,0,8)  'dos buffers
spr=ImageCreate (64,64,0,8)       'sprite de 64x64

'creamos la bolita y la guardamos en el sprite
Circle (31,31),31,15
Paint (31,31),2,15
Get (0,0)-(63,63),spr

sw=0  'switch para intercambiar buffers
ang=0
mult=1
incr=2

While Asc(InKey)<>27  'mientras no se pulse ESC...
   If sw=0 Then  'intercambiamos buffers de acuerdo con el valor de sw
      muestra=img1
      pinta=img2
   Else
      muestra=img2
      pinta=img1
   EndIf

   x=d1+d1*Sin (ang*gtorad)
   y=d2+d2*Cos (ang*gtorad*mult)   'calculamos nueva posicion de la bola
   Put pinta,(x,y),spr,Trans  'pintamos bola en el buffer que toca

   Put (0,0),muestra,PSet  'mostramos por pantalla el buffer que toca
   sw=sw Xor 1  'en la siguiente vuelta se intercambian los buffers
   ang=ang+1  'actualizamos variables para calcular nueva posicion de la bola
   If ang>=360 Then
      ang=0
      mult=mult+incr
      If mult>=7 Or mult<=1 Then
         incr=-incr
      EndIf
   EndIf
   Sleep 40  'quitar para disfrutar de una velocidad absurda de ejecucion
Wend

ImageDestroy img1
ImageDestroy img2
ImageDestroy spr


Esto del FreeBASIC envicia mucho :)
Recuerda: cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista

Avatar de Usuario
mentalthink
Amiga 2500
Amiga 2500
Mensajes: 2840
Registrado: 11 Abr 2010, 15:06
Gracias dadas: 45 veces
Gracias recibidas: 14 veces

Re: Lenguajes de programación BASIC en PC: todo lo conocido

Mensajepor mentalthink » 15 Jul 2013, 21:54

Esto del FreeBASIC envicia mucho :)


Yo creo que lo bueno de los Basics es eso, que enseguida ves resultados y como normalmente todo es bastante sencillo, es realmente divertido.
Sea por nostalgia o por la causa que sea, pero como tiran tanto las máquinas te puedes hacer programas molones.
A ver si cuando termine el Editor que estoy haciendo para el Black Sun pongo el vídeo, tampoco es que haya hecho la Giocconda(como se escriba) en binario :mrgreen:

jepalza

Re: Lenguajes de programación BASIC en PC: todo lo conocido

Mensajepor jepalza » 15 Jul 2013, 22:12

mcleod_ideafix escribió:Esto del FreeBASIC envicia mucho :)


Jeje, ¿te acuerdas de la frase "pasar al lado oscuro"? ;-)

Yo llevo unos 5 o 6 años programando con el FreeBasic, y es una gozada. Limpio, rápido, potente. Parece "C".
He probado tu demo, está muy currada.

Yo tengo otra para que probéis, a ver si os suena (no pongo capturas, así, queda como una sorpresa) :D

Código: Seleccionar todo

Dim PI As Single = 3.14156
Dim i As Integer = 1
Dim T(3) As Integer

Dim s As single

Dim F As Integer = 1
Dim g As Integer

Dim A As Integer
Dim B As Integer
Dim C As integer

SCREEN 12

T(1) = 63 * 65536 + 0 * 256 + 0
T(2) = 0 * 65536 + 50 * 256 + 50
T(3) = 0 * 65536 + 0 * 256 + 50
PALETTE 1, T(1)
PALETTE 2, T(2)
PALETTE 3, T(3)

FOR s = 0 TO 4 * PI STEP PI / 60
 PSET (320 + (320 * SIN(s / 2)), 200 + (198 * COS(s)))
LINE -(320 + (200 * COS(s / 2)), 200 + (198 * SIN(s))), i
i = i + 1: IF i = 4 THEN i = 1
NEXT

While InKey$<>Chr$(27)
 If F = 1 THEN A = 1: B = 2: C = 3
 If F = 2 THEN A = 3: B = 1: C = 2
 If F = 3 THEN A = 2: B = 3: C = 1
 Palette 1, T(A)
 Palette 2, T(B)
 Palette 3, T(C)
 F = F + 1: IF F = 4 THEN F = 1
 ' For G = 1 TO 1000: NEXT ' pausa tradicional
 Sleep 200 ' pausa "moderna" : 200ms.=0.2s.
Wend


El que lo consiga, que ponga captura

Avatar de Usuario
mcleod_ideafix
Amiga 2500
Amiga 2500
Mensajes: 5316
Registrado: 06 Oct 2009, 04:12
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Vectrex
Primera consola: TV Games/Pong Clone
Ubicación: Jerez de la Frontera
Gracias dadas: 12 veces
Gracias recibidas: 53 veces
Contactar:

Re: Lenguajes de programación BASIC en PC: todo lo conocido

Mensajepor mcleod_ideafix » 16 Jul 2013, 00:35

jepalza escribió:
mcleod_ideafix escribió:Esto del FreeBASIC envicia mucho :)


Jeje, ¿te acuerdas de la frase "pasar al lado oscuro"? ;-)

Ya te digo... como que nunca he abandonado ese lado. ¡¡Viva el GOTO!! :D

jepalza escribió:Yo tengo otra para que probéis, a ver si os suena (no pongo capturas, así, queda como una sorpresa) :D

A ver a ver... Anda, ¡qué chulo! Con animación de paleta y esas cosas.

jepalza escribió:El que lo consiga, que ponga captura

Imagen

Pues hablando de animación de paleta...
Veo tu demo, y paso a otro programa que escribí inicialmente hace mucho tiempo, y que he portado sin mayores problemas a FreeBASIC: un generador de conjunto de Mandelbrot con animación por ciclos de color a-la Amiga, y zoom con el ratón (clic izquierdo para zoom, clic derecho para deshacer zoom)

Código: Seleccionar todo

'Conjunto de Mandelbrot
'Clic izquierdo para zoom
'Clic derecho para unzoom

'Port de un programa tela de antiguo que escribí en ensamblador allá por 1992
'para 80286 y 80287, pantalla MCGA y ratón Microsoft, en el PC

'(c)2013 mcleod_ideafix

Dim As Integer xres,yres,x,y,fin
Dim col As UInteger
Dim As Double cr,ci,xmin,xmax,ymin,ymax,xmint,xmaxt,ymint,ymaxt,centrox,centroy
Dim As Integer mx,my,botones,botonpulsado,hacerzoom,quitarzoom
Dim zoomlevel As Double

Dim stack(100,4) As Double
Dim sp As Integer

Declare Function calcolor (cr As Double, ci As Double) As UInteger
Declare Sub RotarPaleta

xres = 800
yres = 600

xmin = -2.4
xmax = 0.8
ymin = -1.2
ymax = 1.2

zoomlevel = 10
sp = 0

ScreenRes xres,yres,8

fin = 0
While fin=0
   For y=0 To yres-1
      For x=0 To xres-1
         cr = xmin+(x*(xmax-xmin)/(xres-1))
         ci = ymin+(y*(ymax-ymin)/(yres-1))

         col = calcolor (cr,ci)
         PSet (x,y),col
      Next
   Next

   hacerzoom = 0
   quitarzoom = 0
   While (hacerzoom=0 And quitarzoom=0 And Asc(InKey)<>27)
      RotarPaleta
      Sleep 40
      GetMouse (mx, my, , botones)
      If botones<>-1 Then
         hacerzoom = botones And 1
         quitarzoom = botones And 2
      EndIf
   Wend
   If hacerzoom<>0 Then
      stack(sp,0) = xmin
      stack(sp,1) = xmax
      stack(sp,2) = ymin
      stack(sp,3) = ymax
      sp = sp + 1
      centrox = xmin+(mx*(xmax-xmin)/(xres-1))
      centroy = ymin+(my*(ymax-ymin)/(yres-1))
      xmint = centrox - (xmax-xmin)/(zoomlevel*2)
      xmaxt = centrox + (xmax-xmin)/(zoomlevel*2)
      ymint = centroy - (ymax-ymin)/(zoomlevel*2)
      ymaxt = centroy + (ymax-ymin)/(zoomlevel*2)
      xmin = xmint
      xmax = xmaxt
      ymin = ymint
      ymax = ymaxt
      Palette
   ElseIf quitarzoom<>0 Then
      If sp>0 Then
         sp = sp - 1
         xmin = stack(sp,0)
         xmax = stack(sp,1)
         ymin = stack(sp,2)
         ymax = stack(sp,3)
         Palette
      EndIf
   Else
      fin = 1
   EndIf
Wend

Function calcolor (cr As Double, ci As Double) As UInteger
   Dim col As UInteger
   Dim As Double zr,zi,tr,ti

   zr=cr
   zi=ci
   col=0
   While (zr*zr+zi*zi<100 And col<255)
      tr=zr*zr-zi*zi+cr
      ti=2*zr*zi+ci
      col=col+1
      zr=tr
      zi=ti
   Wend
   Return col
End Function

Sub RotarPaleta
   Dim paleta(256) As UInteger
   Dim As Integer i,t

   Palette Get Using paleta
   t=paleta(255)
   For i=254 To 0 Step -1
      paleta(i+1)=paleta(i)
   Next
   paleta(0)=t
   Palette Using paleta
End Sub
Recuerda: cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista

Avatar de Usuario
zup
Amiga 2500
Amiga 2500
Mensajes: 2970
Registrado: 04 Sep 2009, 20:07
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Nintendo DS/3DS
Primera consola: Nintendo GameBoy
Ubicación: Navarra
Gracias dadas: 68 veces
Gracias recibidas: 326 veces
Contactar:

Re: Lenguajes de programación BASIC en PC: todo lo conocido

Mensajepor zup » 16 Jul 2013, 08:15

mcleod_ideafix escribió:Ya te digo... como que nunca he abandonado ese lado. ¡¡Viva el GOTO!! :D


Es curioso que cuando aprendí informática (FP, no soy universitario), se nos hiciera repetir como loritos que GOTO estaba prohibido. Que si podías solucionar algo con un GOTO había una solución que no lo requería y todas esas cosas. Que si veían un GOTO en un examen nos suspendían... y los consiguientes malabarismos en ensamblador, donde no es que exista GOTO sino que lo único que tienes son GOTOs condicionales.

Y al final, TODOS los lenguajes tienen GOTOs y encima en algunos no te queda otro remedio que tener que usar ese tipo de tejemanejes (como los ON ERROR de Visual Basic o el manejo de excepciones con throw y catch) que te convierten el programa en código spaguetti.

Lo que cambia el mundo...
I have traveled across the universe and through the years to find Her. Sometimes going all the way is just a start.
Además vendo cosas!

Avatar de Usuario
na_th_an
Amiga 1200
Amiga 1200
Mensajes: 1273
Registrado: 10 Oct 2012, 11:17
Sistema Favorito: (Otro)
primer_sistema: Spectrum +2
consola_favorita: Sony PlayStation 1
Primera consola: Sega Master System
Gracias dadas: 18 veces
Gracias recibidas: 15 veces

Re: Lenguajes de programación BASIC en PC: todo lo conocido

Mensajepor na_th_an » 16 Jul 2013, 08:42

Entiendo que se enseñe a no usar GOTO, porque es fácil abusar. Si puedes usar un While, o un For, procedimientos, o anidar construcciones de forma correcta, es mejor que cascar un GOTO. Luego podrás coger un trozo de tu código y hacerlo funcionar en otro sitio de forma sencilla.

De hecho, si yo fuese profesor de programación y estuviese intentando enseñar a mis alumnos programación estructurada, un GOTO en un examen significaría un suspenso fulminante. Porque se supone que estamos aprendiendo programación estructurada.

Ahora bien, cuando uno ya sabe, no hay nada de malo en usarlo cuando es necesario.


Volver a “Programación”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 14 invitados