Quizás os sorprenda que hable de punteros, y de Basic. Los punteros, o apuntadores, un recurso típico de C/C++, ensamblador y Pascal en menor medida.

Así que puede que te extrañe, que PowerBasic, desde su versión 3.2 de 1996 soportara incluso aritmética de punteros.

La sintaxis es realmente sencilla, tenemos el tipo de datos Ptr, que puede apuntar a casi cualquier tipo elemental Basic: Byte, Integer, …

A partir de ahí, cada operación con esa variable alterará el puntero, mientras que usando el operador @, actuaremos sobre su contenido.

Aquí os muestro un pequeño ejemplo, que aparte de llamar a los servicios de BIOS para video (10h), y teclado (16h), utiliza punteros para primeramente borrar la pantalla accediendo directamente al framebuffer, y posteriormente dibujar píxeles.

El borrado de la pantalla, se hace optimizado de 16 bits en 16 bits, de forma que en arquitecturas 8088/8086 o superiores resulta el doble de rápido que de byte en byte.

'Poner modo 320x200x256
Reg 1, &h13
CALL Interrupt &h10
 
CALL ClrScr(1)
CALL SetPixel(160, 100, 10)
 
'Esperar pulsación de tecla
Reg 1, 0
CALL Interrupt &h16
 
'Volver a modo texto
Reg 1, &h3
CALL Interrupt &h10
 
 
'Set Pixel
SUB SetPixel (BYVAL piX AS Word, BYVAL piY AS Word, BYVAL piColor AS Byte)
	DIM pScreen AS Byte Ptr
 
	pScreen = &hA0000000 + (piY * 320) + piX
	@pScreen = piColor
END SUB
 
 
'Clear screen
SUB ClrScr (BYVAL piColor AS Byte)
	DIM pScreen AS Word Ptr
	DIM iCont AS Word
        DIM iColor AS Word
 
	pScreen = &hA0000000
        iColor = piColor * 256 + piColor
	FOR iCont = 0 TO 31999
		@pScreen = iColor
		Incr pScreen, 2
	NEXT
END SUB

He dejado aquí (15 Kb. en formato ZIP), el ejecutable para DOS y su código fuente.