Home » Archimedes archive » Acorn User » AU 1997-10 A.adf » Extras » Apple][e/PD/BOB/ARMBOB/doc/Intro

Apple][e/PD/BOB/ARMBOB/doc/Intro

This website contains an archive of files for the Acorn Electron, BBC Micro, Acorn Archimedes, Commodore 16 and Commodore 64 computers, which Dominic Ford has rescued from his private collection of floppy disks and cassettes.

Some of these files were originally commercial releases in the 1980s and 1990s, but they are now widely available online. I assume that copyright over them is no longer being asserted. If you own the copyright and would like files to be removed, please contact me.

Tape/disk: Home » Archimedes archive » Acorn User » AU 1997-10 A.adf » Extras
Filename: Apple][e/PD/BOB/ARMBOB/doc/Intro
Read OK:
File size: 133A bytes
Load address: 0000
Exec address: 0000
File contents
*********************************************************************
*                                                                   *
*                         ARMBOB  v.2.1                             *
*                                                         25/12/94  *
*********************************************************************

History
-------
Bob was written by David Betz (167 Villa Ave. #11, Los Gatos, CA 95032
email: dbetz@Apple.com) for the IBM PC. He owns the copyright.

See the article

          David Betz.  A tiny object-oriented language.  
                       Dr Dobb's Journal, Sep 1991, p.26.

for a description of Bob and how it works.

The sources for Bob, version 1.5, are available by anonymous ftp from:

         ftp: ftp.mv.com:/pub/ddj/packages/bob15.arc

This version, for Acorn RISC OS computers, was adapted from them
by G.C.Wraith (12, Mushroom Field, Kingston by Lewes, E.Sussex BN7 3LE,
email: G.Wraith@Sussex.ac.uk). 

Overview of ArmBob
------------------
Bob is a small object oriented language, with a syntax resembling C++.
It works by compiling the source program - which may be spread over 
several files - into code for a virtual machine, as an intermediate 
step, and then running the virtual machine emulator.

Bob provides an easy introduction to object oriented programming for
those already familiar with Basic or C. Bob has a garbage collected
heap which enables it to provide sophisticated datatypes without the
complexities of storage allocation and pointer arithmetic.

ArmBob is compatible with Bob, with the minor syntactic change that
local variables are declared in the first line of the function body
after the keyword 'local' (rather like in Basic), rather than with the
function's formal parameters. ArmBob has extra features, such as the
switch() {...} structure, more built-in functions, and facilities to
access software interrupts and interact with the task manager. 

How to run Bob programs
-----------------------
Four new filetypes are defined:

             BobFile, BobTask, BobProj, BobPTask

BobFiles are analogous to Basic files. Double click on them to make
them run (in a command window, unless a mode change command is given).

BobTask files run in a taskwindow when double clicked. They are only 
appropriate for programs with textual input and output. For graphics use 
a BobFile.

BobProj files are appropriate for large programs stretching over many 
files. They contain a list of the program files (which might as well
have the text filetype). Double click on a BobProj file to compile
and run the program contained in the files that it lists, in a
command window.

BobPTask files are like BobProj files but run in a task window.

Files of any of these types can be edited by holding down SHIFT and 
double clicking on them. They can be created initially as text files, 
with their filetypes altered later from the filer menu, or as blank 
files of the appropriate type, created by filling in the filetype 
in the blank option of Edit's Create submenu from the iconbar.

Double clicking !ArmBob sets up the BobFile, TaskBob and BobProj 
filetypes and their run actions, and opens a filer window on a 
directory forholding Bob programs. The path prefix to this directory 
is Bob:.

Compiler errors cause a window to open with an error message.
Clicking on the Throwback icon causes the relevant source file
to be displayed in an edit window, with the error line
highlighted. Runtime errors do not do this (yet!).

If you want to run a taskwindow Bob program in trace and/or debug mode, 
double click on the Obey files called debug and trace. You will find it
easier to debug or trace an ArmBob program in a taskwindow (if it has no 
graphics output), because you can scroll back the output that has 
disappeared off the screen. In any case, for producing still graphics
it is best to use the draw library to produce and display the graphics
in a draw file. Double click on the !Armbob icon to turn debug or trace
mode off.

The  directory doc.Ref contains more detailed reference files
on ArmBob. The directory doc.Tutorial is intended to help beginners.
!BobDoc is an HTML guide to ArmBob. You need a web browser
(e.g. ArcWeb, Webster, Webite, Fresco) to use it. 

Changes since v.1.0:
   Bug in switch statement cured.
   The example !Harness has been rewritten to use the
   library Bob:h.wimp.
Changes since v.1.01:
   Cured >>= bug. 
   Corrected bug in Bob:h.string.string.
   Replaced !Harness by !Exec.
   Corrected fputc to putc in documentation.
   Corrected remark about TRUE in documentation. Its
   value is 1, not -1.
Changes since v.1.02:
   Throwback added.
Changes since v.1.03:
    Floating point arithmetic added.
Changes since v.2.0
    vector { ... } and enum { ... } constructs added.
    syntax of project files made easier.
    draw library added.

                      ----------- END -----------
00000000  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00000040  2a 2a 2a 2a 2a 0a 2a 20  20 20 20 20 20 20 20 20  |*****.*         |
00000050  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
00000080  20 20 20 20 20 20 20 20  20 20 2a 0a 2a 20 20 20  |          *.*   |
00000090  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000000a0  20 20 20 20 20 20 41 52  4d 42 4f 42 20 20 76 2e  |      ARMBOB  v.|
000000b0  32 2e 31 20 20 20 20 20  20 20 20 20 20 20 20 20  |2.1             |
000000c0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000000d0  2a 0a 2a 20 20 20 20 20  20 20 20 20 20 20 20 20  |*.*             |
000000e0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
00000100  20 20 20 20 20 20 20 20  20 20 20 20 32 35 2f 31  |            25/1|
00000110  32 2f 39 34 20 20 2a 0a  2a 2a 2a 2a 2a 2a 2a 2a  |2/94  *.********|
00000120  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00000150  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 0a 0a 48  |*************..H|
00000160  69 73 74 6f 72 79 0a 2d  2d 2d 2d 2d 2d 2d 0a 42  |istory.-------.B|
00000170  6f 62 20 77 61 73 20 77  72 69 74 74 65 6e 20 62  |ob was written b|
00000180  79 20 44 61 76 69 64 20  42 65 74 7a 20 28 31 36  |y David Betz (16|
00000190  37 20 56 69 6c 6c 61 20  41 76 65 2e 20 23 31 31  |7 Villa Ave. #11|
000001a0  2c 20 4c 6f 73 20 47 61  74 6f 73 2c 20 43 41 20  |, Los Gatos, CA |
000001b0  39 35 30 33 32 0a 65 6d  61 69 6c 3a 20 64 62 65  |95032.email: dbe|
000001c0  74 7a 40 41 70 70 6c 65  2e 63 6f 6d 29 20 66 6f  |tz@Apple.com) fo|
000001d0  72 20 74 68 65 20 49 42  4d 20 50 43 2e 20 48 65  |r the IBM PC. He|
000001e0  20 6f 77 6e 73 20 74 68  65 20 63 6f 70 79 72 69  | owns the copyri|
000001f0  67 68 74 2e 0a 0a 53 65  65 20 74 68 65 20 61 72  |ght...See the ar|
00000200  74 69 63 6c 65 0a 0a 20  20 20 20 20 20 20 20 20  |ticle..         |
00000210  20 44 61 76 69 64 20 42  65 74 7a 2e 20 20 41 20  | David Betz.  A |
00000220  74 69 6e 79 20 6f 62 6a  65 63 74 2d 6f 72 69 65  |tiny object-orie|
00000230  6e 74 65 64 20 6c 61 6e  67 75 61 67 65 2e 20 20  |nted language.  |
00000240  0a 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |.               |
00000250  20 20 20 20 20 20 20 20  44 72 20 44 6f 62 62 27  |        Dr Dobb'|
00000260  73 20 4a 6f 75 72 6e 61  6c 2c 20 53 65 70 20 31  |s Journal, Sep 1|
00000270  39 39 31 2c 20 70 2e 32  36 2e 0a 0a 66 6f 72 20  |991, p.26...for |
00000280  61 20 64 65 73 63 72 69  70 74 69 6f 6e 20 6f 66  |a description of|
00000290  20 42 6f 62 20 61 6e 64  20 68 6f 77 20 69 74 20  | Bob and how it |
000002a0  77 6f 72 6b 73 2e 0a 0a  54 68 65 20 73 6f 75 72  |works...The sour|
000002b0  63 65 73 20 66 6f 72 20  42 6f 62 2c 20 76 65 72  |ces for Bob, ver|
000002c0  73 69 6f 6e 20 31 2e 35  2c 20 61 72 65 20 61 76  |sion 1.5, are av|
000002d0  61 69 6c 61 62 6c 65 20  62 79 20 61 6e 6f 6e 79  |ailable by anony|
000002e0  6d 6f 75 73 20 66 74 70  20 66 72 6f 6d 3a 0a 0a  |mous ftp from:..|
000002f0  20 20 20 20 20 20 20 20  20 66 74 70 3a 20 66 74  |         ftp: ft|
00000300  70 2e 6d 76 2e 63 6f 6d  3a 2f 70 75 62 2f 64 64  |p.mv.com:/pub/dd|
00000310  6a 2f 70 61 63 6b 61 67  65 73 2f 62 6f 62 31 35  |j/packages/bob15|
00000320  2e 61 72 63 0a 0a 54 68  69 73 20 76 65 72 73 69  |.arc..This versi|
00000330  6f 6e 2c 20 66 6f 72 20  41 63 6f 72 6e 20 52 49  |on, for Acorn RI|
00000340  53 43 20 4f 53 20 63 6f  6d 70 75 74 65 72 73 2c  |SC OS computers,|
00000350  20 77 61 73 20 61 64 61  70 74 65 64 20 66 72 6f  | was adapted fro|
00000360  6d 20 74 68 65 6d 0a 62  79 20 47 2e 43 2e 57 72  |m them.by G.C.Wr|
00000370  61 69 74 68 20 28 31 32  2c 20 4d 75 73 68 72 6f  |aith (12, Mushro|
00000380  6f 6d 20 46 69 65 6c 64  2c 20 4b 69 6e 67 73 74  |om Field, Kingst|
00000390  6f 6e 20 62 79 20 4c 65  77 65 73 2c 20 45 2e 53  |on by Lewes, E.S|
000003a0  75 73 73 65 78 20 42 4e  37 20 33 4c 45 2c 0a 65  |ussex BN7 3LE,.e|
000003b0  6d 61 69 6c 3a 20 47 2e  57 72 61 69 74 68 40 53  |mail: G.Wraith@S|
000003c0  75 73 73 65 78 2e 61 63  2e 75 6b 29 2e 20 0a 0a  |ussex.ac.uk). ..|
000003d0  4f 76 65 72 76 69 65 77  20 6f 66 20 41 72 6d 42  |Overview of ArmB|
000003e0  6f 62 0a 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |ob.-------------|
000003f0  2d 2d 2d 2d 2d 0a 42 6f  62 20 69 73 20 61 20 73  |-----.Bob is a s|
00000400  6d 61 6c 6c 20 6f 62 6a  65 63 74 20 6f 72 69 65  |mall object orie|
00000410  6e 74 65 64 20 6c 61 6e  67 75 61 67 65 2c 20 77  |nted language, w|
00000420  69 74 68 20 61 20 73 79  6e 74 61 78 20 72 65 73  |ith a syntax res|
00000430  65 6d 62 6c 69 6e 67 20  43 2b 2b 2e 0a 49 74 20  |embling C++..It |
00000440  77 6f 72 6b 73 20 62 79  20 63 6f 6d 70 69 6c 69  |works by compili|
00000450  6e 67 20 74 68 65 20 73  6f 75 72 63 65 20 70 72  |ng the source pr|
00000460  6f 67 72 61 6d 20 2d 20  77 68 69 63 68 20 6d 61  |ogram - which ma|
00000470  79 20 62 65 20 73 70 72  65 61 64 20 6f 76 65 72  |y be spread over|
00000480  20 0a 73 65 76 65 72 61  6c 20 66 69 6c 65 73 20  | .several files |
00000490  2d 20 69 6e 74 6f 20 63  6f 64 65 20 66 6f 72 20  |- into code for |
000004a0  61 20 76 69 72 74 75 61  6c 20 6d 61 63 68 69 6e  |a virtual machin|
000004b0  65 2c 20 61 73 20 61 6e  20 69 6e 74 65 72 6d 65  |e, as an interme|
000004c0  64 69 61 74 65 20 0a 73  74 65 70 2c 20 61 6e 64  |diate .step, and|
000004d0  20 74 68 65 6e 20 72 75  6e 6e 69 6e 67 20 74 68  | then running th|
000004e0  65 20 76 69 72 74 75 61  6c 20 6d 61 63 68 69 6e  |e virtual machin|
000004f0  65 20 65 6d 75 6c 61 74  6f 72 2e 0a 0a 42 6f 62  |e emulator...Bob|
00000500  20 70 72 6f 76 69 64 65  73 20 61 6e 20 65 61 73  | provides an eas|
00000510  79 20 69 6e 74 72 6f 64  75 63 74 69 6f 6e 20 74  |y introduction t|
00000520  6f 20 6f 62 6a 65 63 74  20 6f 72 69 65 6e 74 65  |o object oriente|
00000530  64 20 70 72 6f 67 72 61  6d 6d 69 6e 67 20 66 6f  |d programming fo|
00000540  72 0a 74 68 6f 73 65 20  61 6c 72 65 61 64 79 20  |r.those already |
00000550  66 61 6d 69 6c 69 61 72  20 77 69 74 68 20 42 61  |familiar with Ba|
00000560  73 69 63 20 6f 72 20 43  2e 20 42 6f 62 20 68 61  |sic or C. Bob ha|
00000570  73 20 61 20 67 61 72 62  61 67 65 20 63 6f 6c 6c  |s a garbage coll|
00000580  65 63 74 65 64 0a 68 65  61 70 20 77 68 69 63 68  |ected.heap which|
00000590  20 65 6e 61 62 6c 65 73  20 69 74 20 74 6f 20 70  | enables it to p|
000005a0  72 6f 76 69 64 65 20 73  6f 70 68 69 73 74 69 63  |rovide sophistic|
000005b0  61 74 65 64 20 64 61 74  61 74 79 70 65 73 20 77  |ated datatypes w|
000005c0  69 74 68 6f 75 74 20 74  68 65 0a 63 6f 6d 70 6c  |ithout the.compl|
000005d0  65 78 69 74 69 65 73 20  6f 66 20 73 74 6f 72 61  |exities of stora|
000005e0  67 65 20 61 6c 6c 6f 63  61 74 69 6f 6e 20 61 6e  |ge allocation an|
000005f0  64 20 70 6f 69 6e 74 65  72 20 61 72 69 74 68 6d  |d pointer arithm|
00000600  65 74 69 63 2e 0a 0a 41  72 6d 42 6f 62 20 69 73  |etic...ArmBob is|
00000610  20 63 6f 6d 70 61 74 69  62 6c 65 20 77 69 74 68  | compatible with|
00000620  20 42 6f 62 2c 20 77 69  74 68 20 74 68 65 20 6d  | Bob, with the m|
00000630  69 6e 6f 72 20 73 79 6e  74 61 63 74 69 63 20 63  |inor syntactic c|
00000640  68 61 6e 67 65 20 74 68  61 74 0a 6c 6f 63 61 6c  |hange that.local|
00000650  20 76 61 72 69 61 62 6c  65 73 20 61 72 65 20 64  | variables are d|
00000660  65 63 6c 61 72 65 64 20  69 6e 20 74 68 65 20 66  |eclared in the f|
00000670  69 72 73 74 20 6c 69 6e  65 20 6f 66 20 74 68 65  |irst line of the|
00000680  20 66 75 6e 63 74 69 6f  6e 20 62 6f 64 79 0a 61  | function body.a|
00000690  66 74 65 72 20 74 68 65  20 6b 65 79 77 6f 72 64  |fter the keyword|
000006a0  20 27 6c 6f 63 61 6c 27  20 28 72 61 74 68 65 72  | 'local' (rather|
000006b0  20 6c 69 6b 65 20 69 6e  20 42 61 73 69 63 29 2c  | like in Basic),|
000006c0  20 72 61 74 68 65 72 20  74 68 61 6e 20 77 69 74  | rather than wit|
000006d0  68 20 74 68 65 0a 66 75  6e 63 74 69 6f 6e 27 73  |h the.function's|
000006e0  20 66 6f 72 6d 61 6c 20  70 61 72 61 6d 65 74 65  | formal paramete|
000006f0  72 73 2e 20 41 72 6d 42  6f 62 20 68 61 73 20 65  |rs. ArmBob has e|
00000700  78 74 72 61 20 66 65 61  74 75 72 65 73 2c 20 73  |xtra features, s|
00000710  75 63 68 20 61 73 20 74  68 65 0a 73 77 69 74 63  |uch as the.switc|
00000720  68 28 29 20 7b 2e 2e 2e  7d 20 73 74 72 75 63 74  |h() {...} struct|
00000730  75 72 65 2c 20 6d 6f 72  65 20 62 75 69 6c 74 2d  |ure, more built-|
00000740  69 6e 20 66 75 6e 63 74  69 6f 6e 73 2c 20 61 6e  |in functions, an|
00000750  64 20 66 61 63 69 6c 69  74 69 65 73 20 74 6f 0a  |d facilities to.|
00000760  61 63 63 65 73 73 20 73  6f 66 74 77 61 72 65 20  |access software |
00000770  69 6e 74 65 72 72 75 70  74 73 20 61 6e 64 20 69  |interrupts and i|
00000780  6e 74 65 72 61 63 74 20  77 69 74 68 20 74 68 65  |nteract with the|
00000790  20 74 61 73 6b 20 6d 61  6e 61 67 65 72 2e 20 0a  | task manager. .|
000007a0  0a 48 6f 77 20 74 6f 20  72 75 6e 20 42 6f 62 20  |.How to run Bob |
000007b0  70 72 6f 67 72 61 6d 73  0a 2d 2d 2d 2d 2d 2d 2d  |programs.-------|
000007c0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
000007d0  0a 46 6f 75 72 20 6e 65  77 20 66 69 6c 65 74 79  |.Four new filety|
000007e0  70 65 73 20 61 72 65 20  64 65 66 69 6e 65 64 3a  |pes are defined:|
000007f0  0a 0a 20 20 20 20 20 20  20 20 20 20 20 20 20 42  |..             B|
00000800  6f 62 46 69 6c 65 2c 20  42 6f 62 54 61 73 6b 2c  |obFile, BobTask,|
00000810  20 42 6f 62 50 72 6f 6a  2c 20 42 6f 62 50 54 61  | BobProj, BobPTa|
00000820  73 6b 0a 0a 42 6f 62 46  69 6c 65 73 20 61 72 65  |sk..BobFiles are|
00000830  20 61 6e 61 6c 6f 67 6f  75 73 20 74 6f 20 42 61  | analogous to Ba|
00000840  73 69 63 20 66 69 6c 65  73 2e 20 44 6f 75 62 6c  |sic files. Doubl|
00000850  65 20 63 6c 69 63 6b 20  6f 6e 20 74 68 65 6d 20  |e click on them |
00000860  74 6f 20 6d 61 6b 65 0a  74 68 65 6d 20 72 75 6e  |to make.them run|
00000870  20 28 69 6e 20 61 20 63  6f 6d 6d 61 6e 64 20 77  | (in a command w|
00000880  69 6e 64 6f 77 2c 20 75  6e 6c 65 73 73 20 61 20  |indow, unless a |
00000890  6d 6f 64 65 20 63 68 61  6e 67 65 20 63 6f 6d 6d  |mode change comm|
000008a0  61 6e 64 20 69 73 20 67  69 76 65 6e 29 2e 0a 0a  |and is given)...|
000008b0  42 6f 62 54 61 73 6b 20  66 69 6c 65 73 20 72 75  |BobTask files ru|
000008c0  6e 20 69 6e 20 61 20 74  61 73 6b 77 69 6e 64 6f  |n in a taskwindo|
000008d0  77 20 77 68 65 6e 20 64  6f 75 62 6c 65 20 63 6c  |w when double cl|
000008e0  69 63 6b 65 64 2e 20 54  68 65 79 20 61 72 65 20  |icked. They are |
000008f0  6f 6e 6c 79 20 0a 61 70  70 72 6f 70 72 69 61 74  |only .appropriat|
00000900  65 20 66 6f 72 20 70 72  6f 67 72 61 6d 73 20 77  |e for programs w|
00000910  69 74 68 20 74 65 78 74  75 61 6c 20 69 6e 70 75  |ith textual inpu|
00000920  74 20 61 6e 64 20 6f 75  74 70 75 74 2e 20 46 6f  |t and output. Fo|
00000930  72 20 67 72 61 70 68 69  63 73 20 75 73 65 20 0a  |r graphics use .|
00000940  61 20 42 6f 62 46 69 6c  65 2e 0a 0a 42 6f 62 50  |a BobFile...BobP|
00000950  72 6f 6a 20 66 69 6c 65  73 20 61 72 65 20 61 70  |roj files are ap|
00000960  70 72 6f 70 72 69 61 74  65 20 66 6f 72 20 6c 61  |propriate for la|
00000970  72 67 65 20 70 72 6f 67  72 61 6d 73 20 73 74 72  |rge programs str|
00000980  65 74 63 68 69 6e 67 20  6f 76 65 72 20 6d 61 6e  |etching over man|
00000990  79 20 0a 66 69 6c 65 73  2e 20 54 68 65 79 20 63  |y .files. They c|
000009a0  6f 6e 74 61 69 6e 20 61  20 6c 69 73 74 20 6f 66  |ontain a list of|
000009b0  20 74 68 65 20 70 72 6f  67 72 61 6d 20 66 69 6c  | the program fil|
000009c0  65 73 20 28 77 68 69 63  68 20 6d 69 67 68 74 20  |es (which might |
000009d0  61 73 20 77 65 6c 6c 0a  68 61 76 65 20 74 68 65  |as well.have the|
000009e0  20 74 65 78 74 20 66 69  6c 65 74 79 70 65 29 2e  | text filetype).|
000009f0  20 44 6f 75 62 6c 65 20  63 6c 69 63 6b 20 6f 6e  | Double click on|
00000a00  20 61 20 42 6f 62 50 72  6f 6a 20 66 69 6c 65 20  | a BobProj file |
00000a10  74 6f 20 63 6f 6d 70 69  6c 65 0a 61 6e 64 20 72  |to compile.and r|
00000a20  75 6e 20 74 68 65 20 70  72 6f 67 72 61 6d 20 63  |un the program c|
00000a30  6f 6e 74 61 69 6e 65 64  20 69 6e 20 74 68 65 20  |ontained in the |
00000a40  66 69 6c 65 73 20 74 68  61 74 20 69 74 20 6c 69  |files that it li|
00000a50  73 74 73 2c 20 69 6e 20  61 0a 63 6f 6d 6d 61 6e  |sts, in a.comman|
00000a60  64 20 77 69 6e 64 6f 77  2e 0a 0a 42 6f 62 50 54  |d window...BobPT|
00000a70  61 73 6b 20 66 69 6c 65  73 20 61 72 65 20 6c 69  |ask files are li|
00000a80  6b 65 20 42 6f 62 50 72  6f 6a 20 66 69 6c 65 73  |ke BobProj files|
00000a90  20 62 75 74 20 72 75 6e  20 69 6e 20 61 20 74 61  | but run in a ta|
00000aa0  73 6b 20 77 69 6e 64 6f  77 2e 0a 0a 46 69 6c 65  |sk window...File|
00000ab0  73 20 6f 66 20 61 6e 79  20 6f 66 20 74 68 65 73  |s of any of thes|
00000ac0  65 20 74 79 70 65 73 20  63 61 6e 20 62 65 20 65  |e types can be e|
00000ad0  64 69 74 65 64 20 62 79  20 68 6f 6c 64 69 6e 67  |dited by holding|
00000ae0  20 64 6f 77 6e 20 53 48  49 46 54 20 61 6e 64 20  | down SHIFT and |
00000af0  0a 64 6f 75 62 6c 65 20  63 6c 69 63 6b 69 6e 67  |.double clicking|
00000b00  20 6f 6e 20 74 68 65 6d  2e 20 54 68 65 79 20 63  | on them. They c|
00000b10  61 6e 20 62 65 20 63 72  65 61 74 65 64 20 69 6e  |an be created in|
00000b20  69 74 69 61 6c 6c 79 20  61 73 20 74 65 78 74 20  |itially as text |
00000b30  66 69 6c 65 73 2c 20 0a  77 69 74 68 20 74 68 65  |files, .with the|
00000b40  69 72 20 66 69 6c 65 74  79 70 65 73 20 61 6c 74  |ir filetypes alt|
00000b50  65 72 65 64 20 6c 61 74  65 72 20 66 72 6f 6d 20  |ered later from |
00000b60  74 68 65 20 66 69 6c 65  72 20 6d 65 6e 75 2c 20  |the filer menu, |
00000b70  6f 72 20 61 73 20 62 6c  61 6e 6b 20 0a 66 69 6c  |or as blank .fil|
00000b80  65 73 20 6f 66 20 74 68  65 20 61 70 70 72 6f 70  |es of the approp|
00000b90  72 69 61 74 65 20 74 79  70 65 2c 20 63 72 65 61  |riate type, crea|
00000ba0  74 65 64 20 62 79 20 66  69 6c 6c 69 6e 67 20 69  |ted by filling i|
00000bb0  6e 20 74 68 65 20 66 69  6c 65 74 79 70 65 20 0a  |n the filetype .|
00000bc0  69 6e 20 74 68 65 20 62  6c 61 6e 6b 20 6f 70 74  |in the blank opt|
00000bd0  69 6f 6e 20 6f 66 20 45  64 69 74 27 73 20 43 72  |ion of Edit's Cr|
00000be0  65 61 74 65 20 73 75 62  6d 65 6e 75 20 66 72 6f  |eate submenu fro|
00000bf0  6d 20 74 68 65 20 69 63  6f 6e 62 61 72 2e 0a 0a  |m the iconbar...|
00000c00  44 6f 75 62 6c 65 20 63  6c 69 63 6b 69 6e 67 20  |Double clicking |
00000c10  21 41 72 6d 42 6f 62 20  73 65 74 73 20 75 70 20  |!ArmBob sets up |
00000c20  74 68 65 20 42 6f 62 46  69 6c 65 2c 20 54 61 73  |the BobFile, Tas|
00000c30  6b 42 6f 62 20 61 6e 64  20 42 6f 62 50 72 6f 6a  |kBob and BobProj|
00000c40  20 0a 66 69 6c 65 74 79  70 65 73 20 61 6e 64 20  | .filetypes and |
00000c50  74 68 65 69 72 20 72 75  6e 20 61 63 74 69 6f 6e  |their run action|
00000c60  73 2c 20 61 6e 64 20 6f  70 65 6e 73 20 61 20 66  |s, and opens a f|
00000c70  69 6c 65 72 20 77 69 6e  64 6f 77 20 6f 6e 20 61  |iler window on a|
00000c80  20 0a 64 69 72 65 63 74  6f 72 79 20 66 6f 72 68  | .directory forh|
00000c90  6f 6c 64 69 6e 67 20 42  6f 62 20 70 72 6f 67 72  |olding Bob progr|
00000ca0  61 6d 73 2e 20 54 68 65  20 70 61 74 68 20 70 72  |ams. The path pr|
00000cb0  65 66 69 78 20 74 6f 20  74 68 69 73 20 64 69 72  |efix to this dir|
00000cc0  65 63 74 6f 72 79 20 0a  69 73 20 42 6f 62 3a 2e  |ectory .is Bob:.|
00000cd0  0a 0a 43 6f 6d 70 69 6c  65 72 20 65 72 72 6f 72  |..Compiler error|
00000ce0  73 20 63 61 75 73 65 20  61 20 77 69 6e 64 6f 77  |s cause a window|
00000cf0  20 74 6f 20 6f 70 65 6e  20 77 69 74 68 20 61 6e  | to open with an|
00000d00  20 65 72 72 6f 72 20 6d  65 73 73 61 67 65 2e 0a  | error message..|
00000d10  43 6c 69 63 6b 69 6e 67  20 6f 6e 20 74 68 65 20  |Clicking on the |
00000d20  54 68 72 6f 77 62 61 63  6b 20 69 63 6f 6e 20 63  |Throwback icon c|
00000d30  61 75 73 65 73 20 74 68  65 20 72 65 6c 65 76 61  |auses the releva|
00000d40  6e 74 20 73 6f 75 72 63  65 20 66 69 6c 65 0a 74  |nt source file.t|
00000d50  6f 20 62 65 20 64 69 73  70 6c 61 79 65 64 20 69  |o be displayed i|
00000d60  6e 20 61 6e 20 65 64 69  74 20 77 69 6e 64 6f 77  |n an edit window|
00000d70  2c 20 77 69 74 68 20 74  68 65 20 65 72 72 6f 72  |, with the error|
00000d80  20 6c 69 6e 65 0a 68 69  67 68 6c 69 67 68 74 65  | line.highlighte|
00000d90  64 2e 20 52 75 6e 74 69  6d 65 20 65 72 72 6f 72  |d. Runtime error|
00000da0  73 20 64 6f 20 6e 6f 74  20 64 6f 20 74 68 69 73  |s do not do this|
00000db0  20 28 79 65 74 21 29 2e  0a 0a 49 66 20 79 6f 75  | (yet!)...If you|
00000dc0  20 77 61 6e 74 20 74 6f  20 72 75 6e 20 61 20 74  | want to run a t|
00000dd0  61 73 6b 77 69 6e 64 6f  77 20 42 6f 62 20 70 72  |askwindow Bob pr|
00000de0  6f 67 72 61 6d 20 69 6e  20 74 72 61 63 65 20 61  |ogram in trace a|
00000df0  6e 64 2f 6f 72 20 64 65  62 75 67 20 6d 6f 64 65  |nd/or debug mode|
00000e00  2c 20 0a 64 6f 75 62 6c  65 20 63 6c 69 63 6b 20  |, .double click |
00000e10  6f 6e 20 74 68 65 20 4f  62 65 79 20 66 69 6c 65  |on the Obey file|
00000e20  73 20 63 61 6c 6c 65 64  20 64 65 62 75 67 20 61  |s called debug a|
00000e30  6e 64 20 74 72 61 63 65  2e 20 59 6f 75 20 77 69  |nd trace. You wi|
00000e40  6c 6c 20 66 69 6e 64 20  69 74 0a 65 61 73 69 65  |ll find it.easie|
00000e50  72 20 74 6f 20 64 65 62  75 67 20 6f 72 20 74 72  |r to debug or tr|
00000e60  61 63 65 20 61 6e 20 41  72 6d 42 6f 62 20 70 72  |ace an ArmBob pr|
00000e70  6f 67 72 61 6d 20 69 6e  20 61 20 74 61 73 6b 77  |ogram in a taskw|
00000e80  69 6e 64 6f 77 20 28 69  66 20 69 74 20 68 61 73  |indow (if it has|
00000e90  20 6e 6f 20 0a 67 72 61  70 68 69 63 73 20 6f 75  | no .graphics ou|
00000ea0  74 70 75 74 29 2c 20 62  65 63 61 75 73 65 20 79  |tput), because y|
00000eb0  6f 75 20 63 61 6e 20 73  63 72 6f 6c 6c 20 62 61  |ou can scroll ba|
00000ec0  63 6b 20 74 68 65 20 6f  75 74 70 75 74 20 74 68  |ck the output th|
00000ed0  61 74 20 68 61 73 20 0a  64 69 73 61 70 70 65 61  |at has .disappea|
00000ee0  72 65 64 20 6f 66 66 20  74 68 65 20 73 63 72 65  |red off the scre|
00000ef0  65 6e 2e 20 49 6e 20 61  6e 79 20 63 61 73 65 2c  |en. In any case,|
00000f00  20 66 6f 72 20 70 72 6f  64 75 63 69 6e 67 20 73  | for producing s|
00000f10  74 69 6c 6c 20 67 72 61  70 68 69 63 73 0a 69 74  |till graphics.it|
00000f20  20 69 73 20 62 65 73 74  20 74 6f 20 75 73 65 20  | is best to use |
00000f30  74 68 65 20 64 72 61 77  20 6c 69 62 72 61 72 79  |the draw library|
00000f40  20 74 6f 20 70 72 6f 64  75 63 65 20 61 6e 64 20  | to produce and |
00000f50  64 69 73 70 6c 61 79 20  74 68 65 20 67 72 61 70  |display the grap|
00000f60  68 69 63 73 0a 69 6e 20  61 20 64 72 61 77 20 66  |hics.in a draw f|
00000f70  69 6c 65 2e 20 44 6f 75  62 6c 65 20 63 6c 69 63  |ile. Double clic|
00000f80  6b 20 6f 6e 20 74 68 65  20 21 41 72 6d 62 6f 62  |k on the !Armbob|
00000f90  20 69 63 6f 6e 20 74 6f  20 74 75 72 6e 20 64 65  | icon to turn de|
00000fa0  62 75 67 20 6f 72 20 74  72 61 63 65 0a 6d 6f 64  |bug or trace.mod|
00000fb0  65 20 6f 66 66 2e 0a 0a  54 68 65 20 20 64 69 72  |e off...The  dir|
00000fc0  65 63 74 6f 72 79 20 64  6f 63 2e 52 65 66 20 63  |ectory doc.Ref c|
00000fd0  6f 6e 74 61 69 6e 73 20  6d 6f 72 65 20 64 65 74  |ontains more det|
00000fe0  61 69 6c 65 64 20 72 65  66 65 72 65 6e 63 65 20  |ailed reference |
00000ff0  66 69 6c 65 73 0a 6f 6e  20 41 72 6d 42 6f 62 2e  |files.on ArmBob.|
00001000  20 54 68 65 20 64 69 72  65 63 74 6f 72 79 20 64  | The directory d|
00001010  6f 63 2e 54 75 74 6f 72  69 61 6c 20 69 73 20 69  |oc.Tutorial is i|
00001020  6e 74 65 6e 64 65 64 20  74 6f 20 68 65 6c 70 20  |ntended to help |
00001030  62 65 67 69 6e 6e 65 72  73 2e 0a 21 42 6f 62 44  |beginners..!BobD|
00001040  6f 63 20 69 73 20 61 6e  20 48 54 4d 4c 20 67 75  |oc is an HTML gu|
00001050  69 64 65 20 74 6f 20 41  72 6d 42 6f 62 2e 20 59  |ide to ArmBob. Y|
00001060  6f 75 20 6e 65 65 64 20  61 20 77 65 62 20 62 72  |ou need a web br|
00001070  6f 77 73 65 72 0a 28 65  2e 67 2e 20 41 72 63 57  |owser.(e.g. ArcW|
00001080  65 62 2c 20 57 65 62 73  74 65 72 2c 20 57 65 62  |eb, Webster, Web|
00001090  69 74 65 2c 20 46 72 65  73 63 6f 29 20 74 6f 20  |ite, Fresco) to |
000010a0  75 73 65 20 69 74 2e 20  0a 0a 43 68 61 6e 67 65  |use it. ..Change|
000010b0  73 20 73 69 6e 63 65 20  76 2e 31 2e 30 3a 0a 20  |s since v.1.0:. |
000010c0  20 20 42 75 67 20 69 6e  20 73 77 69 74 63 68 20  |  Bug in switch |
000010d0  73 74 61 74 65 6d 65 6e  74 20 63 75 72 65 64 2e  |statement cured.|
000010e0  0a 20 20 20 54 68 65 20  65 78 61 6d 70 6c 65 20  |.   The example |
000010f0  21 48 61 72 6e 65 73 73  20 68 61 73 20 62 65 65  |!Harness has bee|
00001100  6e 20 72 65 77 72 69 74  74 65 6e 20 74 6f 20 75  |n rewritten to u|
00001110  73 65 20 74 68 65 0a 20  20 20 6c 69 62 72 61 72  |se the.   librar|
00001120  79 20 42 6f 62 3a 68 2e  77 69 6d 70 2e 0a 43 68  |y Bob:h.wimp..Ch|
00001130  61 6e 67 65 73 20 73 69  6e 63 65 20 76 2e 31 2e  |anges since v.1.|
00001140  30 31 3a 0a 20 20 20 43  75 72 65 64 20 3e 3e 3d  |01:.   Cured >>=|
00001150  20 62 75 67 2e 20 0a 20  20 20 43 6f 72 72 65 63  | bug. .   Correc|
00001160  74 65 64 20 62 75 67 20  69 6e 20 42 6f 62 3a 68  |ted bug in Bob:h|
00001170  2e 73 74 72 69 6e 67 2e  73 74 72 69 6e 67 2e 0a  |.string.string..|
00001180  20 20 20 52 65 70 6c 61  63 65 64 20 21 48 61 72  |   Replaced !Har|
00001190  6e 65 73 73 20 62 79 20  21 45 78 65 63 2e 0a 20  |ness by !Exec.. |
000011a0  20 20 43 6f 72 72 65 63  74 65 64 20 66 70 75 74  |  Corrected fput|
000011b0  63 20 74 6f 20 70 75 74  63 20 69 6e 20 64 6f 63  |c to putc in doc|
000011c0  75 6d 65 6e 74 61 74 69  6f 6e 2e 0a 20 20 20 43  |umentation..   C|
000011d0  6f 72 72 65 63 74 65 64  20 72 65 6d 61 72 6b 20  |orrected remark |
000011e0  61 62 6f 75 74 20 54 52  55 45 20 69 6e 20 64 6f  |about TRUE in do|
000011f0  63 75 6d 65 6e 74 61 74  69 6f 6e 2e 20 49 74 73  |cumentation. Its|
00001200  0a 20 20 20 76 61 6c 75  65 20 69 73 20 31 2c 20  |.   value is 1, |
00001210  6e 6f 74 20 2d 31 2e 0a  43 68 61 6e 67 65 73 20  |not -1..Changes |
00001220  73 69 6e 63 65 20 76 2e  31 2e 30 32 3a 0a 20 20  |since v.1.02:.  |
00001230  20 54 68 72 6f 77 62 61  63 6b 20 61 64 64 65 64  | Throwback added|
00001240  2e 0a 43 68 61 6e 67 65  73 20 73 69 6e 63 65 20  |..Changes since |
00001250  76 2e 31 2e 30 33 3a 0a  20 20 20 20 46 6c 6f 61  |v.1.03:.    Floa|
00001260  74 69 6e 67 20 70 6f 69  6e 74 20 61 72 69 74 68  |ting point arith|
00001270  6d 65 74 69 63 20 61 64  64 65 64 2e 0a 43 68 61  |metic added..Cha|
00001280  6e 67 65 73 20 73 69 6e  63 65 20 76 2e 32 2e 30  |nges since v.2.0|
00001290  0a 20 20 20 20 76 65 63  74 6f 72 20 7b 20 2e 2e  |.    vector { ..|
000012a0  2e 20 7d 20 61 6e 64 20  65 6e 75 6d 20 7b 20 2e  |. } and enum { .|
000012b0  2e 2e 20 7d 20 63 6f 6e  73 74 72 75 63 74 73 20  |.. } constructs |
000012c0  61 64 64 65 64 2e 0a 20  20 20 20 73 79 6e 74 61  |added..    synta|
000012d0  78 20 6f 66 20 70 72 6f  6a 65 63 74 20 66 69 6c  |x of project fil|
000012e0  65 73 20 6d 61 64 65 20  65 61 73 69 65 72 2e 0a  |es made easier..|
000012f0  20 20 20 20 64 72 61 77  20 6c 69 62 72 61 72 79  |    draw library|
00001300  20 61 64 64 65 64 2e 0a  0a 20 20 20 20 20 20 20  | added...       |
00001310  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 2d  |               -|
00001320  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 20 45 4e 44 20 2d  |---------- END -|
00001330  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d                    |----------|
0000133a