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

What's hot (20)

PPT
ParaSail
AdaCore
 
PPT
While loop
Feras_83
 
DOC
What is storage class
Isha Aggarwal
 
PPTX
What is to loop in c++
03446940736
 
PPTX
Closures
prashanthbabu07
 
PPTX
Erlang
Aaron Spiegel
 
PPTX
The Loops
Krishma Parekh
 
PDF
Data structure scope of variables
Saurav Kumar
 
PPTX
What`s New in Java 8
Mohsen Zainalpour
 
PDF
Learn Java Part 2
Gurpreet singh
 
PPT
Working with Bytecode
Marcus Denker
 
PPTX
Preprocessor directives in c language
tanmaymodi4
 
PDF
Notes: Verilog Part 4- Behavioural Modelling
Jay Baxi
 
PPTX
F#3.0
Rodrigo Vidal
 
PDF
Functional programming in scala
Stratio
 
PPTX
Loops c++
Shivani Singh
 
PPTX
Storage classes in c++
Jaspal Singh
 
DOCX
Types of storage class specifiers in c programming
Appili Vamsi Krishna
 
ODP
QVT Traceability: What does it really mean?
Edward Willink
 
PPTX
Javascripts hidden treasures BY - https://geekyants.com/
Geekyants
 
ParaSail
AdaCore
 
While loop
Feras_83
 
What is storage class
Isha Aggarwal
 
What is to loop in c++
03446940736
 
Closures
prashanthbabu07
 
The Loops
Krishma Parekh
 
Data structure scope of variables
Saurav Kumar
 
What`s New in Java 8
Mohsen Zainalpour
 
Learn Java Part 2
Gurpreet singh
 
Working with Bytecode
Marcus Denker
 
Preprocessor directives in c language
tanmaymodi4
 
Notes: Verilog Part 4- Behavioural Modelling
Jay Baxi
 
Functional programming in scala
Stratio
 
Loops c++
Shivani Singh
 
Storage classes in c++
Jaspal Singh
 
Types of storage class specifiers in c programming
Appili Vamsi Krishna
 
QVT Traceability: What does it really mean?
Edward Willink
 
Javascripts hidden treasures BY - https://geekyants.com/
Geekyants
 

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

PDF
Pascal programming lecture notes
Alejandro Domínguez Torres
 
PDF
Pascal for beginers tute
Anutthara Senanayake
 
PPT
Pascal Programming Session 1
Ashesh R
 
PPTX
Turbo pascal
Vien Rivera
 
PDF
Evaluation and analysis of ALGOL, PASCAL and ADA
Dilanka Dias
 
PPTX
Pascal Programming Language
Reham AlBlehid
 
PPT
ALGOL ailesi programlama dilleri
Cumhuriyet Üniversitesi
 
PDF
Abap basics 01
yours4ever002
 
PDF
Pascal programming language
Verónica Meo Laos
 
PPTX
Problem Solving PPT Slides Grade 10- 11students
chamm5
 
PPT
starting_pascal_programming_for_beginner
tharangaprabhathwile
 
PPT
Programming For As Comp
David Halliday
 
PPT
Programming For As Comp
David Halliday
 
PPSX
Write programs to solve problems pascal programming
Anutthara Senanayake
 
PPT
Maclennan chap5-pascal
Serghei Urban
 
PDF
Maxbox starter
Max Kleiner
 
PPT
Cs341
Serghei Urban
 
PPTX
Input-output
neda marie maramo
 
PDF
Pascal
Ezeodum Austin
 
PDF
6 data types
jigeno
 
Pascal programming lecture notes
Alejandro Domínguez Torres
 
Pascal for beginers tute
Anutthara Senanayake
 
Pascal Programming Session 1
Ashesh R
 
Turbo pascal
Vien Rivera
 
Evaluation and analysis of ALGOL, PASCAL and ADA
Dilanka Dias
 
Pascal Programming Language
Reham AlBlehid
 
ALGOL ailesi programlama dilleri
Cumhuriyet Üniversitesi
 
Abap basics 01
yours4ever002
 
Pascal programming language
Verónica Meo Laos
 
Problem Solving PPT Slides Grade 10- 11students
chamm5
 
starting_pascal_programming_for_beginner
tharangaprabhathwile
 
Programming For As Comp
David Halliday
 
Programming For As Comp
David Halliday
 
Write programs to solve problems pascal programming
Anutthara Senanayake
 
Maclennan chap5-pascal
Serghei Urban
 
Maxbox starter
Max Kleiner
 
Input-output
neda marie maramo
 
6 data types
jigeno
 
Ad

Recently uploaded (20)

PDF
Data_Analytics_vs_Data_Science_vs_BI_by_CA_Suvidha_Chaplot.pdf
CA Suvidha Chaplot
 
PDF
Per Axbom: The spectacular lies of maps
Nexer Digital
 
PPTX
AI and Robotics for Human Well-being.pptx
JAYMIN SUTHAR
 
PDF
How ETL Control Logic Keeps Your Pipelines Safe and Reliable.pdf
Stryv Solutions Pvt. Ltd.
 
PDF
Presentation about Hardware and Software in Computer
snehamodhawadiya
 
PDF
Build with AI and GDG Cloud Bydgoszcz- ADK .pdf
jaroslawgajewski1
 
PPTX
AI in Daily Life: How Artificial Intelligence Helps Us Every Day
vanshrpatil7
 
PDF
AI Unleashed - Shaping the Future -Starting Today - AIOUG Yatra 2025 - For Co...
Sandesh Rao
 
PDF
The Future of Mobile Is Context-Aware—Are You Ready?
iProgrammer Solutions Private Limited
 
PDF
Responsible AI and AI Ethics - By Sylvester Ebhonu
Sylvester Ebhonu
 
PDF
Research-Fundamentals-and-Topic-Development.pdf
ayesha butalia
 
PDF
Researching The Best Chat SDK Providers in 2025
Ray Fields
 
PPTX
The Future of AI & Machine Learning.pptx
pritsen4700
 
PDF
How Open Source Changed My Career by abdelrahman ismail
a0m0rajab1
 
PDF
Trying to figure out MCP by actually building an app from scratch with open s...
Julien SIMON
 
PDF
Tea4chat - another LLM Project by Kerem Atam
a0m0rajab1
 
PPTX
Introduction to Flutter by Ayush Desai.pptx
ayushdesai204
 
PPTX
Agile Chennai 18-19 July 2025 | Workshop - Enhancing Agile Collaboration with...
AgileNetwork
 
PDF
NewMind AI Weekly Chronicles – July’25, Week III
NewMind AI
 
PDF
A Strategic Analysis of the MVNO Wave in Emerging Markets.pdf
IPLOOK Networks
 
Data_Analytics_vs_Data_Science_vs_BI_by_CA_Suvidha_Chaplot.pdf
CA Suvidha Chaplot
 
Per Axbom: The spectacular lies of maps
Nexer Digital
 
AI and Robotics for Human Well-being.pptx
JAYMIN SUTHAR
 
How ETL Control Logic Keeps Your Pipelines Safe and Reliable.pdf
Stryv Solutions Pvt. Ltd.
 
Presentation about Hardware and Software in Computer
snehamodhawadiya
 
Build with AI and GDG Cloud Bydgoszcz- ADK .pdf
jaroslawgajewski1
 
AI in Daily Life: How Artificial Intelligence Helps Us Every Day
vanshrpatil7
 
AI Unleashed - Shaping the Future -Starting Today - AIOUG Yatra 2025 - For Co...
Sandesh Rao
 
The Future of Mobile Is Context-Aware—Are You Ready?
iProgrammer Solutions Private Limited
 
Responsible AI and AI Ethics - By Sylvester Ebhonu
Sylvester Ebhonu
 
Research-Fundamentals-and-Topic-Development.pdf
ayesha butalia
 
Researching The Best Chat SDK Providers in 2025
Ray Fields
 
The Future of AI & Machine Learning.pptx
pritsen4700
 
How Open Source Changed My Career by abdelrahman ismail
a0m0rajab1
 
Trying to figure out MCP by actually building an app from scratch with open s...
Julien SIMON
 
Tea4chat - another LLM Project by Kerem Atam
a0m0rajab1
 
Introduction to Flutter by Ayush Desai.pptx
ayushdesai204
 
Agile Chennai 18-19 July 2025 | Workshop - Enhancing Agile Collaboration with...
AgileNetwork
 
NewMind AI Weekly Chronicles – July’25, Week III
NewMind AI
 
A Strategic Analysis of the MVNO Wave in Emerging Markets.pdf
IPLOOK Networks
 
Ad

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.