home *** CD-ROM | disk | FTP | other *** search
Text File | 1993-07-14 | 40.5 KB | 1,247 lines |
-
- Greetings Programmer,
-
- Thanks for using my NAPLPS interpreter for Turbo Pascal 7.0. This
- product was designed to enable everyone to add support for the naplps
- standard, without having to spend a lot of time and money dealing with
- the complex nature of the standard. The Turbo Pascal NAPLPS interpreter
- is a very powerful tool that adds NAPLPS displaying capabilities to your
- Turbo Pascal 7.0 programs.
-
- Although the NAPLPS interpreter was initially designed for other
- products soon to be released, it quickly became a powerful and easy to
- use product, which I hope you'll like as much as I do.
-
- With regards,
-
- John M. Beck
-
-
-
-
-
-
-
-
-
-
-
- Turbo Pascal 7.0 NAPLPS Interpreter
-
-
- User's Manual
-
-
-
-
-
-
- (c) Copyright 1993 by John M. Beck
- All Rights Reserved
-
- Version 1.00 / July 1993
-
-
-
-
-
- Naplps Interpreter
- Copyright (C) 1991-92 by John M. Beck
-
- -----------------------------------------------------------------
- Contents Line Number
- -----------------------------------------------------------------
- Introduction...................................................72
- Quick start for experts........................................96
- Quick start for beginners.....................................111
- Example program...............................................148
- What is NAPLPS?...............................................198
- NAPLPS API description........................................237
- Extending the API.............................................808
- Features on the addition list.................................821
- Licensing agreement...........................................836
- How to register...............................................864
- Support.......................................................912
- Credits.......................................................926
- Appendix 1: Guide to NAPLPS lingo.............................994
- Appendix 2: American National Standards Committees...........1176
- Appendix 3: Proposal for External Device Support.............1226
-
-
- ------------
- Introduction
- ------------
-
- At the moment, more and more programmers are becoming interested in
- adding NAPLPS support to their programs. Anyone who intends to stay up
- to date has to deal with all of the different protocols like NAPLPS, RIP,
- ETGC, etc. Unfortunately, the NAPLPS protocol is one of the most complex and
- takes a lot of time and research to program. Only a few programmers will
- be able to implement it from scratch.
-
- At the time I began developing the NAPLPS interpreter, I was one of
- the many trying to keep up to date with the technology. Now I'm in the
- position to save you the time and development troubles of designing your
- own interpreter from scratch. In addition to that, the NAPLPS
- interpreter source code is also being made available to registered
- users so that you can extend and customize it to your needs.
-
- -----------
- Quick Setup
- -----------
-
- If you're so excited that you can't wait to start, here are the basic
- steps to writing your first NAPLPS compatible program:
-
- For experts:
-
- 1. Add "graph", "driver1", and "naplps" to your uses statement.
- 2. Call the procedure register_drivers *before* calling
- initgraph.
- 3. Call initgraph with '' passed as "pathtodrivers" parameter.
- *Note: use the NAPLPS global variables "graphdriver" and
- "graphmode" to initialize the graphics, that way the API
- knows what you passed. See sample program for example.
- 4. Call the procedure nap_init.
- 5. Send any string of NAPLPS data to the procedure
- interpret_naplps.
- 6. Call updateblinks during idle moments.
- 7. Call the procedure nap_done at your program's closing.
-
- For beginners:
-
- 1. Towards the top of your program, right under the PROGRAM
- statement, add the following line:
-
- USES graph, driver1, naplps;
-
- 2. Add to the first line of your program, right below the main
- BEGIN statement, the following lines:
-
- register_drivers;
- graphmode := detect;
- initgraph(graphdriver,graphmode,'');
- nap_init;
-
- 3. To print some naplps information, use the procedure
- interpret_naplps, like so:
-
- { str = string of naplps data }
- interpret_naplps(str);
-
- 4. When your program is waiting for a user to do something, or
- is in a loop that you'd like the animation to continue
- through, call the procedure updateblinks like in this
- example:
-
- repeat {until user types something}
- updateblinks;
- until keypressed;
- readkey;
-
- 5. Add to your program, right before the main END statement, the
- following line:
-
- nap_done;
-
- ---------------
- Working Example
- ---------------
-
- {$I NAPFLAGS.INC}
-
- program test;
-
- uses crt,dos,graph,driver1,naplps,timer;
-
- var
- f : file;
- numread : word;
- buf : array[0..199] of char; {200 char buffer}
- str : string;
- start,
- stop : longint;
-
- begin
- register_drivers;
- graphdriver := vga;
- graphmode := vgahi;
- initgraph(graphdriver,graphmode,'');
- nap_init;
-
- assign(f,'d:\files\videograp.nap');
- reset(f,1);
-
- start := readtimer;
- repeat
- blockread(f,buf,sizeof(buf),numread);
- move(buf,str[1],numread);
- str[0] := char(numread);
- interpret_naplps(str);
- until numread = 0;
- stop := readtimer;
-
- repeat
- updateblinks;
- until keypressed;
- readkey;
-
- nap_done;
- close(f);
- closegraph;
-
- writeln('Elapsed time = ',(elapsedtime(start,stop,0)):10:4,'seconds');
- readln;
- end.
-
- ---------------
- What is NAPLPS?
- ---------------
-
- NAPLPS is the videotex/teletext industry standard for
- presentation level graphics. The word NAPLPS stands for North
- American Presentation Level Protocol Syntax. The North American
- part is in there because the NAPLPS syntax was standardized by
- both the American National Standards Institute and the Canadian
- Standards Association. ANSI is responsible for industry
- standards for the way we display images all the way down to the
- way two computers establish a hardware connection. Everyone has
- noticed ANSI.SYS in their configuration file, which was also a
- standard.
-
- From the technical side, NAPLPS is a *very* compact and
- efficient way to transfer pictorial information. Everything is
- at the bit level, without regard to byte boundaries in parts. It
- is well thought out in the respects that a single command can
- perform different functions depending on the data following it.
- NAPLPS is also resolution and machine independent. The same
- images can be viewed on a Mac, Amiga, IBM, or any other computer
- with a display device.
-
- From the user side, NAPLPS is simply neat. You can type in
- different sizes of text, at different spacing, and at different
- rotations-even upside down. You can columnate the text and scroll
- little regions of the screen. Then you can switch to the
- supplementary character set and type in different languages
- making pictures out of the circumflex, ogonek, breve, upper case
- Icelandic thorn, or lower case Greenlandic K (the special K
- symbol). And how about those measly five block characters that
- everyone used to draw with? NAPLPS offers you a full character set
- full of them -- a tetris player's nightmare. All of this with just
- the text aspects. You also have a full set of drawing commands.
- Arcs, circles, lines, rectangles, and all the rest of the geometric
- primitives. As far as color goes, you can mix and use from 2 bit
- to 24 bit color depending on your monitor and software.
-
- ----------------------
- NAPLPS API Description
- ----------------------
-
- There's not much to say about using this API, it is all very
- straight forward. There may be some procedures and functions that
- you might want to experiment with. If you purchase the source
- code, you'll find that each major procedure is followed by
- comments describing its function. The following are the interface
- sections of all the units.
-
- **************
- * NAPLPS.TPU *
- **************
-
- UNIT Naplps;
-
- INTERFACE
-
- USES crt, { screen library }
- graph, { graphics library }
- bits1, { unit for bit manipulation }
- draw1, { drawing routines }
- trig1, { trig calculations routines }
- timer, { timing routines }
- driver1, { graphics modes drivers }
- output1, { text output object }
- charset1, { primary character set }
- charset2, { supplementary character set }
- charset3; { mosaic character set }
-
- CONST
- maxblinks = 255; { 255 active blinks max }
- maxpalette = 255; { 255 max color palette }
- grafbufsize = 6*1024; { 6K graphics buffer }
-
- setpal : boolean = true; {for fade in and fade out graphics}
-
- TYPE
- charsets = (pri,supp,pdi,mosaic,macro,drcs,temp,null);
-
- temprec = record {record to keep track of single shifts}
- oldset,
- newset : charsets;
- end;
-
- paletterec = record {record for palette management}
- cr,cg,cb : byte;
- used : boolean;
- end;
-
- paltype = array[0..maxpalette] of paletterec;
-
- blinkrec = record {record for blink management}
- bto,
- bfrom,
- sr,sg,sb : byte;
- sdelay,
- ontime,
- offtime : word;
- elapsed,
- start : longint;
- ison,
- active : boolean;
- end;
-
- macrorec = record {record for macro information}
- length : word;
- macro : pointer; {every macro is allow 1K max size}
- trnsmit : boolean; {thats 1024 characters / macro }
- end;
-
- drcsrec = record {record for DRCS information}
- image : pointer;
- size : word;
- end;
-
- VAR
- graphmode, {use these variables when initializing }
- graphdriver : integer; {the bgi drivers }
-
- savestr : string; {command buffer}
- masterstr : string; {main chunk of NAPLPS code}
- masterlen : byte absolute masterstr; {length of masterlen}
-
- napon : boolean; {in graphics mode?}
-
- extra : string; {extra code that got cut off}
- textout : vgawriteobj; {text output object}
-
- cf : byte; {current font}
-
- xaspect, {ANSI aspect ratios}
- yaspect : real;
-
- maxx, {max x res}
- maxy : integer; {max y res}
-
- nbits : byte; {num of bits of color in graphics mode}
- dimen : byte; {dimensionality}
- slen : byte; {single value operand length}
- mlen : byte; {multi value operand length}
- px,py : integer; {pel x and y positions}
-
- tset : temprec; {rec for SS's}
- g0,g1, {virtual character tables}
- g2,g3 : charsets;
- gl,gr : charsets; {in use character tables}
-
- blinksize : byte; {# of active blinks}
- drcss : array[0..95] of drcsrec; {drcs set}
- macros : array[0..95] of macrorec; {macro set}
- polygon : array[0..500] of pointtype; {global var for polygon drawing}
-
- palette : paltype; {palette info}
- blinks : array[0..maxblinks] of blinkrec; {blinks info}
-
- procedure nap_init;
- procedure nap_done;
-
- function checkwrap : boolean;
- function nextisoper(theset : charsets) : boolean;
-
- function naptocartx (str : string) : real;
- function naptocarty (str : string) : real;
-
- function naptocordx (str : string) : integer;
- function naptocordy (str : string) : integer;
- function naptosizex (str : string) : integer;
- function naptosizey (str : string) : integer;
-
- function naptocordrx(str : string) : real;
- function naptocordry(str : string) : real;
- function naptosizerx(str : string) : real;
- function naptosizery(str : string) : real;
-
- procedure angtocolor(ang : integer; var cr,cg,cb : byte);
- procedure naptocolor(str : string ; var cr,cg,cb : byte);
-
- function get_g0 : charsets ; {virtual table}
- function get_g1 : charsets ;
- function get_g2 : charsets ;
- function get_g3 : charsets ;
- procedure set_g0(newset : charsets);
- procedure set_g1(newset : charsets);
- procedure set_g2(newset : charsets);
- procedure set_g3(newset : charsets);
-
- function get_gl : charsets ; {in-use table }
- function get_gr : charsets ;
- procedure set_gl(newset : charsets);
- procedure set_gr(newset : charsets);
-
- function getnapstatus : boolean ; {nap mode on or off}
- procedure setnapstatus(ison : boolean);
-
- procedure gettsetinfo(var olds,news : charsets); {temp char set}
- procedure settsetinfo(olds,news : charsets);
-
- function getcf : integer ;
- procedure setcf(ncf : integer);
- procedure setdif;
-
- function findfirstnotused : integer;
- function findpalettecolor (cr,cg,cb : byte) : integer;
- procedure setnappalette(reg,cr,cg,cb : byte);
- procedure setrgbpalette_fast(color,red,green,blue: byte);
-
- procedure assign_text_variables;
- procedure assign_default_colormap;
- procedure assign_texture_variables;
-
- procedure reset_naplps ;
- procedure reset_domain ;
- procedure reset_colors ;
- procedure reset_text ;
- procedure reset_blink ;
- procedure reset_texture;
- procedure reset_macro ;
- procedure reset_drcs ;
-
- procedure beep ;
- procedure updateblinks;
- procedure remove_blink(num : byte);
- procedure check_blink (var a : blinkrec);
- function findblink (var a : blinkrec): integer;
-
- procedure exec_si ; {shift in } {G0->GL }
- procedure exec_so ; {shift out } {G1->GL }
- procedure exec_ls1r ; {locking shift 1 right } {G1->GR }
- procedure exec_ls2 ; {locking shift 2 } {G2->GL }
- procedure exec_ls2r ; {locking shift 2 right } {G2->GR }
- procedure exec_ls3 ; {locking shift 3 } {G3->GL }
- procedure exec_ls3r ; {locking shift 3 right } {G3->GR }
- procedure exec_ss2 ; {single shift two } {G2 TEMP}
- procedure exec_ss3 ; {single shift three } {G3 TEMP}
-
- procedure exec_domain ;
- procedure exec_text ;
- procedure exec_texture ;
- procedure exec_field ;
- procedure exec_setcolor ;
- procedure exec_selectcolor ;
- procedure exec_reset ;
- procedure exec_line_abs ;
- procedure exec_line_rel ;
- procedure exec_setnline_abs;
- procedure exec_setnline_rel;
- procedure exec_incpoint ;
- procedure exec_incline ;
- procedure exec_incpoly ;
- procedure exec_wait ;
- procedure exec_blink ;
-
- procedure exec_pointset_abs(visible : boolean);
- procedure exec_pointset_rel(visible : boolean);
- procedure exec_arc (setp, filled : boolean);
- procedure exec_poly (setp, filled : boolean);
- procedure exec_rectangle (setp, filled : boolean);
-
- procedure exec_defdrcs;
- procedure exec_deftexture;
- procedure exec_defmacro(defp,transmittion : boolean);
-
- procedure decode_control0_set;
- procedure decode_control1_set;
-
- procedure decode_pri ; {interpret command from primary set }
- procedure decode_supp ; {interpret command from supplementary set}
- procedure decode_pdi ; {interpret command from PDI set }
- procedure decode_mosaic; {interpret command from mosaic set }
- procedure decode_macro ; {interpret command from macro set }
- procedure decode_drcs ; {interpret command from DRCS set }
-
- PROCEDURE INTERPRET_NAPLPS(str : string); {the main procedure}
-
- IMPLEMENTATION
-
- *************
- * BITS1.TPU *
- *************
-
- unit bits1;
-
- interface
-
- function biton (position, testbyte : byte ) : boolean;
- function bitval (position,len,testbyte : byte ) : byte ;
- function dectobin (dec,sig : byte ) : string ;
- function bintodec (binstr : string) : byte ;
-
- function maxbinf (len,dim : byte ) : real;
- function binftodecf (binstr : string) : real;
- function int_binftodecf(binstr : string) : real;
-
- function decftobinf (sig : byte; decf : real ) : string;
- function roundbinf (place : byte; binstr : string) : string;
-
- procedure setbit(position,value : byte; var changebyte : byte);
-
- implementation
-
- ****************
- * CHARSET1.TPU *
- ****************
-
- unit charset1;
-
- interface
-
- var
- p1,p2,p3,p4 : integer; {font numbers}
-
- procedure register_primary;
-
- procedure primarya_driver;
- procedure primaryb_driver;
- procedure primaryc_driver;
- procedure primaryd_driver;
-
- implementation
-
- ****************
- * CHARSET2.TPU *
- ****************
-
- unit charset2;
-
- interface
-
- var
- s1,s2,s3,s4 : integer; {font numbers}
-
- procedure register_supplementary;
-
- procedure supplementarya_driver ;
- procedure supplementaryb_driver ;
- procedure supplementaryc_driver ;
- procedure supplementaryd_driver ;
-
- implementation
-
- ****************
- * CHARSET3.TPU *
- ****************
-
- unit charset3;
-
- interface
-
- var
- m1,m2,m3,m4 : integer; {font numbers}
-
- procedure register_mosaic;
-
- procedure mosaica_driver;
- procedure mosaicb_driver;
- procedure mosaicc_driver;
- procedure mosaicd_driver;
-
- implementation
-
- *************
- * DRAW1.TPU *
- *************
-
- unit draw1;
-
- interface
-
- uses graph, trig1;
-
- var
- cmode, { color mode }
- pattern, { fill pattern }
- highcolor, { highlight color }
- highlight : byte; { use highlight }
- patterns : array[0..3] of fillpatterntype; { fill patterns }
-
- ltexture : byte;
- mdx,
- mdy : real;
- {logical pel dimensions}
- pdxr,pdyr : real; { real width and height }
- pdx,pdy : integer; { adjusted width and height }
-
- forecolor, { foreground color register }
- backcolor : byte; { background color register }
-
- procedure showpalette;
- procedure set_aspects;
-
- procedure draw_pel (wx,wy : integer);
- procedure clear_area (x1,y1,x2,y2 : integer);
- procedure draw_line_pas(start_x,start_y,end_x,end_y : integer);
- procedure draw_line_asm(start_x,start_y,end_x,end_y : integer);
-
- procedure draw_circle (wx,wy,rad : integer; filled : boolean);
- procedure draw_rectangle(x1,y1,x2,y2 : integer; filled : boolean);
- procedure draw_arc (cx,cy,ang1,ang2,rad : integer; filled : boolean);
-
- procedure draw_poly(num : word; var points : array of pointtype; filled : boolean);
-
- implementation
-
- ***************
- * DRIVER1.TPU *
- ***************
-
- unit driver1;
-
- interface
-
- const
- drv1result : integer = 0; {unit operations result variable}
-
- (* Driver Installation Procedures *)
-
- procedure att_driver ;
- procedure cga_driver ;
- procedure herc_driver ;
- procedure egavga_driver ;
- procedure pc3270_driver ;
-
- procedure register_drivers ;
-
- implementation
-
- ***************
- * OUTPUT1.TPU *
- ***************
-
- unit output1;
-
- interface
-
- type
- fieldrec = record
- x1,y1,
- x2,y2 : integer;
- end;
-
- vgawriteobjptr = ^vgawriteobj;
-
- vgawriteOBJ = object
- constructor init;
-
- function getseg : word ;
- procedure setseg(newseg : word);
-
- function getprop : boolean ;
- procedure setprop(newp : boolean);
-
- procedure setxadj(nx : integer);
- procedure setyadj(ny : integer);
-
- function getwidth : integer;
- function getheight : integer;
-
- function cordtorow (cord : integer) : byte;
- function cordtocol (cord : integer) : byte;
-
- function getnumcols : integer;
- function getnumrows : integer;
-
- function needswrap : boolean;
- function getlastchar : char;
-
- procedure pel_to_text( px,py : integer);
- procedure text_to_pel(var px,py : integer);
-
- procedure do_apb;
- procedure do_apf;
- procedure do_apd;
- procedure do_apu;
- procedure do_apr;
-
- function getxspacing : real ;
- function getyspacing : real ;
- procedure setxspacing(new : real);
- procedure setyspacing(new : real);
-
- function getx : byte ;
- function gety : byte ;
- procedure setx(nx : byte);
- procedure sety(ny : byte);
-
- function getxabs : integer ;
- function getyabs : integer ;
- procedure setxabs(nx : integer);
- procedure setyabs(ny : integer);
-
- function gettdir : byte ;
- procedure settdir(dir : byte);
-
- function getscroll : boolean ;
- procedure setscroll(on : boolean);
-
- function getwrap : boolean ;
- procedure setwrap(on : boolean);
-
- procedure clear_area(x1,y1,x2,y2 : integer);
-
- procedure window(x1,y1,x2,y2 : byte);
-
- procedure scrollup (x1,y1,x2,y2,num : integer);
- procedure scrolldown (x1,y1,x2,y2,num : integer);
- procedure scrollleft (x1,y1,x2,y2,num : integer);
- procedure scrollright(x1,y1,x2,y2,num : integer);
-
- procedure writechar(ch : char; adv : boolean; cmode : byte);
-
- destructor done;
- private
- lastchar : char ;
- tdir : byte ; {text direction}
- prop : boolean;
- scroll : boolean; {scroll on/off}
- wrap : boolean; {integer wrap on/off}
- xspace : real ; {intercharacter spacing}
- yspace : real ; {interrow spacing}
- tx,ty : integer; {note: text cords start at zero!}
- graphseg : word ; {graphics segment}
- end;
-
- VAR
- field : fieldrec;
- sfield : fieldrec;
-
- rot : byte;
- cpath : byte;
- xspac : byte;
- yspac : byte;
- mparam : byte;
- cstyle : byte;
-
- cdx : integer;
- cdy : integer;
- cdif : integer;
-
- rchar : char;
- rforecolor,
- rbackcolor : byte;
- underlineon,
- reverseon : boolean;
-
- implementation
-
- *************
- * TIMER.TPU *
- *************
-
- unit timer;
-
- interface
-
- function calibrate : longint;
- function readtimer : longint;
- function elapsedtime (start, stop : longint; format : byte): real;
- function elapsedtime_int(start, stop : longint; format : byte): longint;
- function add_time (time : longint; amount,format : byte): longint;
-
- procedure init_timer;
- procedure done_timer;
-
- implementation
-
- *************
- * TRIG1.TPU *
- *************
-
- unit trig1;
-
- interface
-
- { everything's in radians }
-
- function rad_to_deg(r : real) : real;
- function deg_to_rad(d : real) : real;
-
- function sign (var x : real): real;
- function logb (var b : real; var x : real): real;
-
- function tan(var x : real): real;
- function cot(var x : real): real;
- function sec(var x : real): real;
- function csc(var x : real): real;
-
- function arcsin(var x : real): real;
- function arccos(var x : real): real;
- function arcsec(var x : real): real;
- function arccsc(var x : real): real;
-
- function sinh(var x : real): real;
- function cosh(var x : real): real;
- function tanh(var x : real): real;
- function coth(var x : real): real;
- function sech(var x : real): real;
- function csch(var x : real): real;
-
- function arcsinh(var x : real): real;
- function arccosh(var x : real): real;
- function arctanh(var x : real): real;
- function arccoth(var x : real): real;
- function arcsech(var x : real): real;
- function arccsch(var x : real): real;
-
- function find_angle(x1,y1,x2,y2 : real) : word;
-
- implementation
-
- -----------------
- Extending the API
- -----------------
-
- With the source code, you are free to make any changes that
- you wish. One such change that you may consider customizing is
- the text mode printing. When NAPLPS mode is turned off, the API
- uses Turbo's internal write command to print the subsequent
- characters. To modify this so that you may have ANSI color
- interpretation, or have the API filter the information to another
- layer in your program, simply change the line in the procedure
- interpret_naplps to pass the data where ever you wish.
-
- -----------------------------
- Features on the addition list
- -----------------------------
-
- The following features could not be implemented in time for
- this release, but will available for a free upgrade to registered
- users of the API.
-
- - Drawing core taken to assembly.
- - Screen scrolling taken to assembly.
- - DRCS set implemented.
- - Four user definable fill patterns implemented.
- - Line styles implemented at any pel size.
- - Cursor support
-
- -------------------
- Licensing Agreement
- -------------------
-
- The NAPLPS Interpreter (API) software is copyright by John M. Beck.
- You may use this software for free, without any notice to the users of
- any programs you create, only if the programs are for free. If the
- program that you create is sold, distributed, or registered for money,
- you must register this software with the option of purchasing the source
- code. After registration of this software, you may freely use it in any
- commercial programs you create without any notice to the users and
- without royalties. You may not include this software in any tool kits or
- programmer utilities, and you may not release the source code if purchased.
-
- This license is non-transferrable. By using this software, you agree
- to the terms of this license. I support no warranties for this product,
- and disclaim any warranties either expressed or implied. I accept no
- liability for the use of this product, or any consequences or consequential
- damages resulting from the use of this product, even if I have advised of
- the possibility of such damages.
-
- This statement shall be construed, interpreted and governed by the
- laws of the State of Indiana. Use, duplication or disclosure by the U.S.
- Government of this software and documentation shall be subject to
- restricted rights (under DFARS 52.227-7013) applicable to commercial
- computer software. All rights not specifically granted in this statement
- are reserved by John M. Beck.
-
- ---------------
- How to Register
- ---------------
-
- Turbo Pascal 7.0 NAPLPS Interpreter Registration Form
-
-
- Name ___________________________________________________
- Address ___________________________________________________
- ___________________________________________________
- City ____________________ State _____ Zip _________
- Country ___________________________
-
- Telephone ___________________________
-
- Disk Size: ( ) 360k 5 1/4" ( ) 720k 3 1/2"
- ( ) 1.2 Mb 5 1/4" ( ) 1.44 3 1/2"
-
- The prices below are effective July 10, 1993 and are subject to
- change.
-
- No of copies required : _____ @ $100.00 = $ _____
- No of copies + source code: _____ @ $200.00 = $ _____
-
- *Note: if you don't buy the source code now, but may buy it in
- the future, save your return card. Fill it out and send
- it back with the difference ($100) and we'll return send
- you the source code.
-
- Shipping (per copy) - This price includes upgrade shipping.
-
- USA + $5.00
- Canada + $10.00
- Overseas + $15.00 = $ _____
-
- Total enclosed = $ _____
-
- - Make checks payable to John M. Beck.
-
- *Note: Checks must be in US dollars from a US account with an
- American Banking Association routing number.
-
- Send the above form to:
-
- John M. Beck
- Futureware Co.
- PO Box 9742
- Ft. Wayne, IN 46899
-
- -------
- Support
- -------
-
- If you encounter any problems that you cannot resolve, send a copy of
- the problematic software with a description of the problem, a copy of your
- config.sys and autoexec.bat files, and a description of your computer to:
-
- John M. Beck
- Futureware Co.
- P.O. Box 9742
- Ft. Wayne, In 46899
-
- And I'll do my best to eradicate the problem.
-
- -------
- Credits
- -------
-
- The American National Standards Institute and the Canadian
- Standards Association for their development of this standard.
-
- ANSI can be reached at:
- American National Standards Institute, Inc.
- 1430 Broadway
- New York, NY 10018
-
- CSA can be reached at:
- Canadian Standards Association
- 178 Rexdale Boulevard
- Rexdale (Toronto), Ontario M9W 1R3
-
- Turbopower Software for their public domain routine to read and
- calibrate the timer chip. Turbopower Software can be reached at
- 1-800-333-4160.
-
- Jordan Hargrave for his public domain super vga bgi drivers. At
- last contact, Jordan could be reached at the following locations:
-
- From September 1st to May 8th:
- Jordan Hargrave
- 1000 Morewood Ave, Box #3277
- Pittsburgh, PA 15213
- (412) 268-4493
-
- From May 8th to September 1st:
- Jordan Hargrave
- 1615 Burnley Road
- Charlotte, NC 28210
- (704) 553-2332
-
- Glen F. Marshall for his public domain math unit, illustrating
- the arcsin, arccos, arctan, tan, and csc (etc.) calculations. In
- Glen's documentation dating back a few years, he could be reached
- at:
- Glen F. Marshall
- 1006 Gwilym Circle
- Berwyn, PA 19312
-
- Lithium artist Damion Junk for agreeing to be hired to hand draw
- all twelve stroked fonts and for his contribution to the three
- point on a circle problem. Damion can be netmailed as:
-
- Damion Junk
- Semper Fi BBS
- 1:236/21@fidonet.org
-
- Victor J. Capton for a earlier binary fraction algorithm, the end
- angle -> start angle or start angle -> end angle if statement,
- his insightful discussions on the three point on a circle problem,
- and insight in general.
-
- Shawn Rhoads for insightful discussions regarding different aspects
- of the standard. Shawn can be reached at the following address:
-
- Shawn Rhoads
- Software @ Work
- P.O. Box 566491
- Atlanta, GA 31156
-
- Jeff Feightner, Damion Junk, and Lawrence Fraser for loyal and patient
- prototype work, ideas, and creative bitching.
-
- ---------------------------------
- Appendix 1: Guide to NAPLPS lingo
- ---------------------------------
-
- NAPLPS (we pronounce it nap'lips), through the course of its
- development, has accumulated quite a large repertoire of lingo.
- If you come across a word or phrase that you don't recognize, try
- looking it up below (a good portion of the following is found at
- the beginning of the NAPLPS document in a more technical form).
-
- Absolute coordinates - an ordered pair of signed two's complement
- numbers that specify the new location of the drawing point as a
- displacement of the origin (0,0). Note that only positive
- coordinates appear on the unit screen.
-
- Alphanumeric text - the written form of languages, comprising the
- alphabetic letters with or without the respective symbols and
- special characters such as space.
-
- Attribute - a settable parameter that is to be applied to all
- subsequent text or pictorial information.
-
- Binary fraction - a string of binary digits that are just right
- of the decimal point. A binary fraction of 0.1 would be 0.5 in
- decimal.
-
- Bit combination - a ordered set of bits (binary digits).
-
- Border area - the part of the physical display screen that lies
- outside of the display area.
-
- C-Set or Control Set - the two control sets, C0 and C1, each
- comprising thirty-two character positions.
-
- Character field - the rectangular region in which a character is
- displayed.
-
- Code extension - techniques for expanding the absolute character
- address space into a larger virtual address space.
-
- Code table - the set of unambiguous rules that defines the
- mapping of received bit combinations to presentation level
- characters.
-
- Coding interface - an interface through which coded bit sequences
- pass.
-
- Color map address - an ordinal number associated with each pixel
- in a digital image which represents the address in the color
- map at which the actual color value can be found.
-
- Color map - a look-up table which is used during scan conversion
- of the image to convert color map addresses into actual color
- values.
-
- Color value - a entry in a color map.
-
- Composite symbol - a symbol consisting of a combination of
- multiple symbols in a single character field. The umlaut or
- diacritical mark combined with a basic letter is an example.
-
- Consistent with the physical resolution - the position of the
- display information is calculated to a sufficient precision so
- that it is displayed within one pixel of the actual location.
-
- Cursor - a indicator having character field dimensions of the
- screen position where the next character is to be placed.
-
- Designate - to identify a given set from the repertory of G-Sets
- as a G0, G1, G2, or G3 set.
-
- Display area - the rectangular part of the physical display
- screen in which information is visibly displayed.
-
- Drawing point - a indicator (similar to the cursor) of the
- position at which the next geometric primitive will begin
- execution.
-
- DRCS Set - Dynamically redefinable character set. A set
- containing definable characters whose patterns are downloaded
- from the host.
-
- Escape sequence - a string of two or more bit combinations
- beginning with the escape character.
-
- Final character - the last character of an escape sequence.
-
- G-Set - one of the four sets, G0, G1, G2, and G3, which each
- comprises 94 or 96 character positions.
-
- G-Set repertory - the collection of available character sets.
-
- Geometric graphic primitive - a picture drawing algorithm which
- can be executed via a opcode and associated operands.
-
- Graphic character repertoire - the list of graphic characters.
-
- Implementation-dependent - a feature that may be specified more
- completely by the implementor.
-
- In-use - the code sets or attributes that will be used to
- interpret to subsequently received commands.
-
- Intermediate character - any character that occurs between the
- escape character and the final character.
-
- Invoke - to cause a designated code set to be represented by the
- bit combinations of the in-use table.
-
- Layer - an individual module of the reference model for open
- systems interconnection (OSI).
-
- Locking shift - an invocation of a code set into the in-use table
- which remains in effect until another code set is invoked in
- its place.
-
- Logical picture element or logical pel - a geometric construct
- associated with the drawing point whose size determines the
- stroke width of graphic primitives.
-
- Macro - a stored string of presentation code represented by a
- single character.
-
- Mosaic - a rectangular matrix of predefined elements that can be
- used to construct block style images.
-
- Nominal black - the color black (all zeros) in color mode zero,
- or the color that is at color map address zero in color modes
- one and two.
-
- Nominal white - the color white (all ones) in color mode zero, or
- the color that is at color map address seven in color modes one
- and two.
-
- Nonspacing - a character that does not automatically advance the
- cursor after being printed.
-
- Opcode - a one-byte character that initiates execution of a
- operation.
-
- Operand - one or more bytes following a opcode.
-
- Physical picture element or pixel - the smallest displayable unit
- on a display device.
-
- Pictorial information - the display information.
-
- PDI - picture description instruction. A opcode followed by zero
- or more operands that constitutes an executable picture or
- control operation.
-
- Presentation layer - the sixth of seven layers defined by ISO's
- reference model for open systems interconnection.
-
- Protocol - a set of rules and procedures governing the exchange
- of information.
-
- Receiving device - equipment capable of receiving coded bit
- combinations.
-
- Relative coordinates - an ordered pair of signed two's compliment
- numbers between -1 and 1 that specifies the new drawing point
- location with respect to the old location.
-
- Service reference model or SRM - a specification of the minimum
- set of features that must be implemented by the receiving
- device in order to meet the requirements for a particular
- service.
-
- Signed - a number which may be either positive or negative.
-
- Single shift - an invocation of a code set into the in-use table
- that affects only the interpretation of the next bit
- combination received.
-
- Spacing - a character that causes the cursor to automatically
- advance.
-
- Unit screen - the logical display address space within which all
- drawing operation are executed and alphanumeric characters are
- deposited.
-
- --------------------------------------------------
- Appendix 2: American National Standards Committees
- --------------------------------------------------
-
- The NAPLPS standard was processed and approved for submittal
- to ANSI by the American National Standards Committee on
- Information Processing Systems, X3. At the time of NAPLPS's
- approval, this committee had the following members (note that not
- necessarily all members voted for NAPLPS's approval):
-
- Organization
- -----------------------------------------------------------------
- American Library Association.....................................
- American Nuclear Society.........................................
- AMP Incorporated.................................................
- Association of American Railroads................................
- Association for Computing Machinery..............................
- Association of the Institute
- for Certification of Computer Professionals......................
- AT&T Information Systems.........................................
- Burroughs Corporation............................................
- Control Data Corporation.........................................
- Data General Corporation.........................................
- Data Processing Management Association...........................
- Digital Equipment Computer Users Society.........................
- Digital Equipment Corporation....................................
- Exxon Office Systems.............................................
- General Services Administration..................................
- GUIDE International..............................................
- Harris Corporation...............................................
- Hewlett-Packard..................................................
- Honeywell Information Systems....................................
- IBM Corporation..................................................
- IEEE.............................................................
- Lawrence Kerkeley Laboratory.....................................
- Life Office Management Association...............................
- Moore Business Forms, Inc........................................
- National Bureau of Standards.....................................
- National Communications Systems..................................
- NCR Corporation..................................................
- Perkin-Elmer Corporation.........................................
- Prime Computer...................................................
- Recognition Technology Users Association.........................
- SHARE, Inc.......................................................
- Sperry Corporation...............................................
- Telephone Group..................................................
- Texas Instruments, Inc...........................................
- Travelers Insurance Companies, Inc...............................
- 3M Company.......................................................
- US Department of Defense.........................................
- VIM..............................................................
- Wang Laboratories, Inc...........................................
- Xerox Corporation................................................
-
- ------------------------------------------------
- Appendix 3: Proposal for External Device Support
- ------------------------------------------------
-
- The following section refers to knowledgeable NAPLPS developers,
- and users of the Turbo Pascal 7.0 NAPLPS Interpreter.
-
- Futureware proposes that in order to implement mouse and
- sound support into the NAPLPS syntax, that we create and agree to
- support a new character set; the external device set. This would
- be enough to handle the load of mice, joysticks, sound cards,
- printers, light pens, and whatever else--there's an entire
- character set to fill up. If you're a NAPLPS developer, I'd like
- to hear any input you may have about this. Please write to us at
- the above listed address.
-
-