SlideShare a Scribd company logo
An Introduction to
Apple IIgs Programming
    in a High Level
       Language
              by
         Mike Stephens

       First Presented at
       Mt Keira Fest 2009
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
What programming languages are
           available?
BASIC Programming
   Applesoft BASIC with Toolbox extensions
    (Interpreted)
   TML BASIC
   Micol Advanced BASIC
   GSoft BASIC (Interpreted)
ORCA Languages
   ORCA/Integer BASIC
   ORCA/Pascal
   ORCA/C
   ORCA/Modula-2
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.
An overview of Complete Pascal
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
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
A quick introduction to Pascal
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! }
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.
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).
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.
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
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
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 }
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;
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
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.
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;
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;
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.
Your very first program!
Hello Mt Keira Fest!
   Open Complete Pascal and select FileNew
    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.
Hello Mt Keira Fest! (continued)
   Type in the following:
    Program HelloKFest;

    begin
      writeln(‘Hello (Mt) K(eira)Fest!!’);
      readln;
    end.
Compile Your Code
   You can check the syntax of your code without
    compiling it by clicking CompileCheck Syntax,
    however, most times you will probably just want
    to compile to disk by clicking CompileTo Disk.
   If everything went smoothly, you should have
    just created your first Complete Pascal textbook
    application!
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 GSOSTransfer
      and select your HELLOKFEST application and
      click Transfer.
Introducing the Toolbox
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.
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!
Using the Toolbox
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.

More Related Content

PDF
Opps concept
PPTX
Storage Class Specifiers
PDF
Algorithm and Programming (Looping Structure)
PDF
Function in C++
PDF
Chapter 11 Function
PDF
Algorithm and Programming (Branching Structure)
PPTX
Storage classes in c language
PPTX
C++ loop
Opps concept
Storage Class Specifiers
Algorithm and Programming (Looping Structure)
Function in C++
Chapter 11 Function
Algorithm and Programming (Branching Structure)
Storage classes in c language
C++ loop

What's hot (20)

PPT
ParaSail
PPT
While loop
DOC
What is storage class
PPTX
What is to loop in c++
PPTX
Closures
PPTX
PPTX
The Loops
PDF
Data structure scope of variables
PPTX
What`s New in Java 8
PDF
Learn Java Part 2
PPT
Working with Bytecode
PPTX
Preprocessor directives in c language
PDF
Notes: Verilog Part 4- Behavioural Modelling
PPTX
PDF
Functional programming in scala
PPTX
Loops c++
PPTX
Storage classes in c++
DOCX
Types of storage class specifiers in c programming
ODP
QVT Traceability: What does it really mean?
PPTX
Javascripts hidden treasures BY - https://geekyants.com/
ParaSail
While loop
What is storage class
What is to loop in c++
Closures
The Loops
Data structure scope of variables
What`s New in Java 8
Learn Java Part 2
Working with Bytecode
Preprocessor directives in c language
Notes: Verilog Part 4- Behavioural Modelling
Functional programming in scala
Loops c++
Storage classes in c++
Types of storage class specifiers in c programming
QVT Traceability: What does it really mean?
Javascripts hidden treasures BY - https://geekyants.com/
Ad

Similar to Apple IIgs Programming (K Fest) (20)

PDF
Pascal programming lecture notes
PDF
Pascal for beginers tute
PPT
Pascal Programming Session 1
PPTX
Turbo pascal
PDF
Evaluation and analysis of ALGOL, PASCAL and ADA
PPTX
Pascal Programming Language
PPT
ALGOL ailesi programlama dilleri
PDF
Abap basics 01
PDF
Pascal programming language
PPTX
Problem Solving PPT Slides Grade 10- 11students
PPT
starting_pascal_programming_for_beginner
PPT
Programming For As Comp
PPT
Programming For As Comp
PPSX
Write programs to solve problems pascal programming
PPT
Maclennan chap5-pascal
PDF
Maxbox starter
PPT
PPTX
Input-output
PDF
PDF
6 data types
Pascal programming lecture notes
Pascal for beginers tute
Pascal Programming Session 1
Turbo pascal
Evaluation and analysis of ALGOL, PASCAL and ADA
Pascal Programming Language
ALGOL ailesi programlama dilleri
Abap basics 01
Pascal programming language
Problem Solving PPT Slides Grade 10- 11students
starting_pascal_programming_for_beginner
Programming For As Comp
Programming For As Comp
Write programs to solve problems pascal programming
Maclennan chap5-pascal
Maxbox starter
Input-output
6 data types
Ad

Recently uploaded (20)

PPTX
MYSQL Presentation for SQL database connectivity
PDF
Spectral efficient network and resource selection model in 5G networks
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PDF
NewMind AI Weekly Chronicles - August'25-Week II
PDF
Approach and Philosophy of On baking technology
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PDF
Encapsulation theory and applications.pdf
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PDF
Machine learning based COVID-19 study performance prediction
PDF
Encapsulation_ Review paper, used for researhc scholars
PDF
gpt5_lecture_notes_comprehensive_20250812015547.pdf
PDF
cuic standard and advanced reporting.pdf
PDF
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
PPTX
A Presentation on Artificial Intelligence
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
DOCX
The AUB Centre for AI in Media Proposal.docx
PPTX
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
MYSQL Presentation for SQL database connectivity
Spectral efficient network and resource selection model in 5G networks
Digital-Transformation-Roadmap-for-Companies.pptx
NewMind AI Weekly Chronicles - August'25-Week II
Approach and Philosophy of On baking technology
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
Per capita expenditure prediction using model stacking based on satellite ima...
Encapsulation theory and applications.pdf
Advanced methodologies resolving dimensionality complications for autism neur...
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Machine learning based COVID-19 study performance prediction
Encapsulation_ Review paper, used for researhc scholars
gpt5_lecture_notes_comprehensive_20250812015547.pdf
cuic standard and advanced reporting.pdf
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
A Presentation on Artificial Intelligence
20250228 LYD VKU AI Blended-Learning.pptx
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
The AUB Centre for AI in Media Proposal.docx
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx

Apple IIgs Programming (K Fest)

  • 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
  • 3. What programming languages are available?
  • 4. BASIC Programming  Applesoft BASIC with Toolbox extensions (Interpreted)  TML BASIC  Micol Advanced BASIC  GSoft BASIC (Interpreted)
  • 5. ORCA Languages  ORCA/Integer BASIC  ORCA/Pascal  ORCA/C  ORCA/Modula-2
  • 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.
  • 7. An overview of 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
  • 10. A quick introduction to Pascal
  • 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.
  • 24. Your very first program!
  • 25. Hello Mt Keira Fest!  Open Complete Pascal and select FileNew 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 CompileCheck Syntax, however, most times you will probably just want to compile to disk by clicking CompileTo 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 GSOSTransfer 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.