Skip to content

eightbitswide/FabGL-Turbo-Pascal-3-Library

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FabGL-Turbo-Pascal-3-Library

Turbo Pascal 3 include library for FabGL Ansi Terminal

Insert into your own TP3 programs using {$i fabgl.inc)

Supports most of the graphics/sound FabGL Specific Terminal Sequences in Ansi Terminal.
Also supports the additional resolution/font change capability of Ansi Terminal Mod.

FabGL Terminal Sequences: http://www.fabglib.org/special_term_escapes.html

Commands SCREEN & APPLY require Ansi Terminal Mods Version of Ansi Terminal.
Ansi Terminal Mods: https://github.com/eightbitswide/FabGL-AnsiTerminal-Mods-

  • Adds a simple 16 color font definition.
  • Adds the ability to load font data from code or external text file.

    Note: I'm a Turbo Pascal beginner. While code has been tested to work, it is likely not optimized.

Procedures:


SPRITECOUNT(X);

FabGL Sequence:
  ESC "_GSPRITECOUNT" count "$"

Parameters:
  count: number of sprites that will be defined by "SPRITEDEFRGB2"

Example:
  // allocates two sprites
  SPRITECOUNT(2);

SPRITEDEFRGB2(SpriteNumber,Width,Height)

FabGL Sequence:
  ESC "_GSPRITEDEF" spriteIndex ";" width ";" height ";"2"

Parameters:
  spriteIndex: sprite index (0...)
  width:       bitmap width
  height:      bitmap height
  format:
      "2" = Assumed bitmap format is 64 colors 
Example:
  // allocates one sprite and assign a 16x23 64 Color Sprite.
  SPRITECOUNT(1);
  SPRITEDEFRGB2(0,16,23);

Important Note:
This Command must be followed with either SPRITEDATA or SPRITEFILEDATA,
providing the expected data to the sprite being defined.

SPRITEDATA(DATA);

FabGL Sequence: (Sends the sprite data expected by SPRITEDEFRGB2 when not reading it from an external text file.)
  ;DATA

Parameters:
  0-F define 16 colors in the sprite as follows:
    * 0 = {Black}
    * 1 = {Grey}
    * 2 = {Light Grey}
    * 3 = {Pink}
    * 4 = {Red}
    * 5 = {Brown}
    * 6 = {Peach}
    * 7 = {Orange}
    * 8 = {Yellow}
    * 9 = {Green}
    * A = {Cyan}
    * B = {Light Blue}
    * C = {Blue}
    * D = {Magenta}
    * E = {Purple}
    * F = {White}
    * $ = {End of Sprite Data}

Example:
  // allocate one sprite, assign a 16x15 16 Color Sprite, sent from code.
  SPRITECOUNT(1);
  SPRITEDEFRGB2(0,16,15);    
  SPRITEDATA('0000000000000000');
  SPRITEDATA('0000004444000000');
  SPRITEDATA('0000444444440000');
  SPRITEDATA('0004444444444000');
  SPRITEDATA('004FF4444FF44400');
  SPRITEDATA('00FFFF44FFFF4400');
  SPRITEDATA('00CCFF44CCFF4400');
  SPRITEDATA('04CCFF44CCFF4440');
  SPRITEDATA('044FF4444FF44440');
  SPRITEDATA('0444444444444440');
  SPRITEDATA('0444444444444440');
  SPRITEDATA('0444444444444440');
  SPRITEDATA('0444444444444440');
  SPRITEDATA('0440444004440440');
  SPRITEDATA('0400044004400040');
  SPRITEDATA('$');
  
  Important Note:
  Sprite data sent from code in this fashion must end with a SPRITEDATA('$'); to finish defining the sprite.
  
  

SPRITEFILEDATA('DATAFILE');

FabGL Sequence: (Sends the sprite data expected by SPRITEDEFRGB2 front an external text file.)
  ;DATA

Parameters:
  0-F define 16 colors in the sprite as follows:
    * 0 = {Black}
    * 1 = {Grey}
    * 2 = {Light Grey}
    * 3 = {Pink}
    * 4 = {Red}
    * 5 = {Brown}
    * 6 = {Peach}
    * 7 = {Orange}
    * 8 = {Yellow}
    * 9 = {Green}
    * A = {Cyan}
    * B = {Light Blue}
    * C = {Blue}
    * D = {Magenta}
    * E = {Purple}
    * F = {White}
    * $ = {End of Sprite Data}

Example:
  // allocate one sprite, assign a 16x15 16 Color Sprite, sent from code.
  SPRITECOUNT(1);
  SPRITEDEFRGB2(0,16,23);
  SRPITEFILEDATA('MYSPRITE.TXT');

Example Text File: (MYSPRITE.TXT) 
0002220000222000
0BBB88BBBB88BBB0
0BBB88BBBB88BBB0
1BBB88BBBB88BBB1
1BBB88BBBB88BBB1
1BBB88BBBB88BBB1
1BBB11111111BBB1
1BB1111111111BB1
0B111111111111B0
0B1B88BBBB88B1B0
0BBB88BBBB88BBB0
0B1B88BBBB88B1B0
0B1B88BBBB88B1B0
0B1B88BBBB88B1B0
1BBB88BBBB88BBB1
1BBB11111111BBB1
1BBB81111118BBB1
1BB88BBBBBB88BB1
1BB88BBBBBB88BB1
0BB88BBBBBB88BB0
0BB88BBBBBB88BB0
0BB88BBBBBB88BB0
0002000000002000

Important Note:
  Sending SPRITEDATA('$'); is not required.  Included in the routine.
  
  

SPRITESET(SpriteNumber,Visible,X,Y)

FabGL Sequence:
  ESC "_GSPRITESET" spriteIndex ";" visible ";" frameIndex ";" X ";" Y "$"
  
Parameters:
  spriteIndex: sprite index (0...)
  visible:     "0" = hidden, "1" = visible
  X:           horizontal position
  Y:           vertical position

Example:
  // make sprite 0 visible at position 50,120 with first added bitmap
  SPRITESET(0,1,50,120);
  

SCREEN('DATA');

Specific to Ansi Terminal Mods which gives resolution and font control to your programs.

Parameters: (resolution)

     * 1280x768x2
     * 1024x720x4
     * 800x600x8
     * 720x520x16
     * 640x480@73x16
     * 640x480@60x16
     * 640x350x16
     * 512x384x64
     * 400x300x64
     * 320x200x64
     
Parameters: (font) 
     * Auto
     * VGA 4x6
     * VGA 5x7
     * VGA 5x8
     * VGA 6x8
     * VGA 6x9
     * VGA 6x10
     * VGA 6x12
     * VGA 6x13
     * VGA 7x13
     * VGA 7x14
     * VGA 8x8
     * VGA 8x9
     * VGA 8x13
     * VGA 8x14
     * VGA 8x16
     * VGA 8x19
     * VGA 9x15
     * VGA 9x18
     * VGA 10x20
     * BigSerif 8x14
     * BigSerif 8x16
     * Block 8x14
     * Broadway 8x14
     * Computer 8x14
     * Courier 8x14
     * LCD 8x14
     * Old English 8x16
     * Sans Serif 8x14
     * Sans Serif 8x16
     * Slant 8x14
     * Wiggly 8x16 

Example:
  // make resolution 320x200, 64 Colors with VGA 8x8 font and Apply.
  SCREEN('320x200x64');
  SCREEN('VGA 8x8');
  APPLY;

Important Note:
An APPLY command must be send to make the make the SCREEN changes happen.

APPLY;

Must be executed after use of the SCREEN command. 

Additional Commands:

PEN(RED,GREEN,BLUE);
BRUSH(RED,GREEN,BLUE);
RECT(X1,Y1,X2,Y2);
FILLRECT(X1,Y1,X2,Y2);
LINE(X1,Y1,X2,Y2);
CURSOR(0/1);
CLS;
HOME;
CLEAR;
PLOT(X,Y);
SCROLL<offsetX,offsetY);
ELLIPSE(X1,Y1,WIDTH,HEIGHT);
FILLELLIPSE(X1,Y1,WIDTH,HEIGHT);
PLAY(WAVEFORM,FREQ,DURATION,VOLUME);

About

Turbo Pascal 3 include library for FabGL Ansi Terminal

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages