1. An Introduction to
Apple IIgs Programming
in a High Level
Language
by
Mike Stephens
First Presented at
Mt Keira Fest 2009
2. Topics To Cover
What programming languages are available?
An overview of Complete Pascal
A quick introduction to Pascal
Your very first program!
Introducing the Toolbox
Using the Toolbox
6. Complete Pascal
My recommendation for anyone wanting to get
started with high level language programming on
the Apple IIgs is….
You guessed it!
Complete Pascal.
8. Complete Pascal
Positives:
Is freely available
Is a compiled language
Has full access to the Apple IIgs Toolbox
Has an uncomplicated and easy to learn
development environment
Has some nice extensions to Pascal
9. Complete Pascal
Negatives:
Has some bugs in the GUI resource editor
Produces larger & less efficient compiled code
(as compared to ORCA/Pascal)
Can not link to assembly code (however, inline
assembly code is possible)
No debugger
11. Pascal Overview (continued)
In Complete Pascal, comments start with
a (* and end with a *) OR comments may start
with a { and end with a } .
Examples of comments:
(* this is a comment *)
{ so is this! }
12. Pascal Overview
The basic structure of a Pascal program is:
PROGRAM ProgramName (FileList);
CONST
(* Constant declarations *)
TYPE
(* Type declarations *)
VAR
(* Variable declarations *)
(* Subprogram definitions *)
BEGIN
(* Executable statements *)
END.
13. Pascal Overview (continued)
Rules for identifiers:
Must begin with a letter from the English alphabet.
Can be followed by alphanumeric characters (alphabetic
characters and numerals) and possibly the underscore (_).
May not contain certain special characters, many of which
have special meanings in Pascal.
~ ! @ # $ % ^ & * ( ) + ` - = { } [ ] :
" ; ' < > ? , . / |
May be any of the reserved words (see the TML Pascal II
manual for details).
14. Pascal Overview (continued)
Pascal is not case sensitive!
MyProgram, MYPROGRAM,
and mYpRoGrAm are all equivalent.
For readability purposes, it is a good idea to use
meaningful capitalization.
An identifier can be any length so long as it can
fit on one line, however, in Complete Pascal
only the first 255 characters are significant.
15. Pascal Array Types
An array type defines a structure that has a set
number of components, and all of the
components are of the same type.
Array types in Pascal take the form:
ARRAY[ <INDEX TYPE> ] OF <COMPONENT TYPE>
For example, an array of 100 real numbers:
array[1..100] of real
16. Pascal Record Types
A record type consists of a specified collection
of components called fields, each one capable of
being a different type. Each field of a record
type must specify its type, and the name of its
identifier. For example:
record
year: integer;
month: 1..12;
day: 1..31;
end
17. Complete Pascal Strings
A string type is a succession of characters having a dynamic
length attribute and a constant dimension attribute of 1 to 255.
The current value of the length attribute for a string type is
returned by the standard function length.
A null string is a string type value that has a dynamic length of
zero.
For example:
var
myString : string;
myLength : Integer;
myString := ‘Hello Mt Keira Fest!’;
myLength := Length(myString); { myLength equals 20 }
18. Pascal Assignment
Once you have declared a variable, you can store
values in it. This is called assignment.
To assign a value to a variable, follow this
syntax:
variable_name := expression;
For example:
myFloat := 10.559;
19. Pascal Relational Operators
The operand types and the corresponding results for
Relational operations are shown in the following table:
Operator Meaning
< Less than
> Greater than
= Equal to
<= Less than or equal to
>= Greater than or equal to
<> Not equal to
20. Complete Pascal Control Statements
The GOTO statement will pass control to another part
of the program located in the same block.
The CYCLE statement forces a repetition statement to
immediately execute the next iteration of a loop.
The LEAVE statement forces the immediate exit from
a repetition statement loop.
The HALT statement will stop the execution of the
program immediately.
21. Pascal Procedures
A procedure declaration associates an identifier with a block of
statements.
A procedure is called by using the procedure identifier and the
current parameters required by it.
An example of a procedure declaration:
procedure Num2String (N: integer; var S: string);
var V: integer;
begin
V := Abs(N);
S:='';
repeat
S:= concat(Chr(V mod 10 + ord('0')),S);
V:= V div 10;
until V = 0;
if V<0 then S := Concat(('-',S);
end;
22. Pascal Functions
A function declaration associates an identifier with a block of statements, able
to be called in order to calculate and return a value of the specified type.
An example of a function declaration:
function Num2String(N: integer;) : string;
var V: integer;
S: string;
begin
V := Abs(N):
S := '';
repeat
S := concat(Chr(V mod 10 + ord('0')),S);
V := V div 10;
until V = 0;
if V<0 then S := concat('-',S);
Num2String := S;
end;
23. Pascal Units
Complete Pascal supports the use of Units,
which are stand alone modules (or libraries)
which may define any number of procedures
and functions.
Units are compiled separately.
Units are made accessible to a main program or
to other Units via the USES clause.
25. Hello Mt Keira Fest!
Open Complete Pascal and select FileNew
from the menu.
In the Create File box, type HelloKFest.p and
click New.
You will then be presented with a new window
in which to type your first Complete Pascal
program.
26. Hello Mt Keira Fest! (continued)
Type in the following:
Program HelloKFest;
begin
writeln(‘Hello (Mt) K(eira)Fest!!’);
readln;
end.
27. Compile Your Code
You can check the syntax of your code without
compiling it by clicking CompileCheck Syntax,
however, most times you will probably just want
to compile to disk by clicking CompileTo Disk.
If everything went smoothly, you should have
just created your first Complete Pascal textbook
application!
28. Running Your Program
You can execute your program by:
Exiting Complete Pascal and running your program
from the Finder; or
From within Complete Pascal click GSOSTransfer
and select your HELLOKFEST application and
click Transfer.
30. The Apple IIgs Toolbox
The Apple IIgs Toolbox is comprised of a number of
specialised tool sets.
Each tool set is made up of a number of routines that
you can use from within your own programs.
The Toolbox routines are designed to hide the
complexity of dealing with the IIgs hardware.
To become really familiar with the Apple IIgs Toolbox,
you need to have the 3 Toolbox reference manuals +
the GS/OS manual.
31. What Do the Toolsets Provide?
Quickdraw II - Graphics routines
Memory Manager – allocating/deallocating
memory
Sound Toolset – load and play digitized sounds
SANE – floating point routines
Window Manager – create & handle windows
Event Manager – handle system events
Plus more!
33. Complete Pascal & the Toolbox
Complete Pascal comes complete with interface
files necessary to hook directly into the Toolbox
routines
As a rule of thumb, each tool set is defined as a
Unit, which you can use from your
programs/units by adding the appropriate tool
set interface file to the USES clause.