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)

PPTX
Intro to Scala
PDF
Evaluation and analysis of ALGOL, PASCAL and ADA
PPT
Scala presentationjune112011
PDF
Swift, swiftly
PPT
Scala in a nutshell by venkat
PPTX
Turbo pascal
PPTX
Introduction to scala for a c programmer
PDF
Scala tutorial
PDF
Scala tutorial
PPT
Programming For As Comp
PPT
Programming For As Comp
PDF
Alp 05
PDF
PPTX
Arduino Functions
PPTX
Input-output
PDF
CMSC 350 PROJECT 1
PDF
Pascal programming lecture notes
PPTX
Scala final ppt vinay
DOCX
BACKGROUND A shell provides a command-line interface for users. I.docx
PPTX
[ASM]Lab6
Intro to Scala
Evaluation and analysis of ALGOL, PASCAL and ADA
Scala presentationjune112011
Swift, swiftly
Scala in a nutshell by venkat
Turbo pascal
Introduction to scala for a c programmer
Scala tutorial
Scala tutorial
Programming For As Comp
Programming For As Comp
Alp 05
Arduino Functions
Input-output
CMSC 350 PROJECT 1
Pascal programming lecture notes
Scala final ppt vinay
BACKGROUND A shell provides a command-line interface for users. I.docx
[ASM]Lab6
Ad

Recently uploaded (20)

PDF
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
PPTX
Spectroscopy.pptx food analysis technology
PPTX
OMC Textile Division Presentation 2021.pptx
PDF
MIND Revenue Release Quarter 2 2025 Press Release
PPTX
1. Introduction to Computer Programming.pptx
PDF
Empathic Computing: Creating Shared Understanding
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
Machine learning based COVID-19 study performance prediction
PPTX
TechTalks-8-2019-Service-Management-ITIL-Refresh-ITIL-4-Framework-Supports-Ou...
PPTX
Programs and apps: productivity, graphics, security and other tools
PPTX
A Presentation on Artificial Intelligence
PDF
Assigned Numbers - 2025 - Bluetooth® Document
PDF
August Patch Tuesday
PDF
Spectral efficient network and resource selection model in 5G networks
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PDF
Encapsulation_ Review paper, used for researhc scholars
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PPTX
Group 1 Presentation -Planning and Decision Making .pptx
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
Spectroscopy.pptx food analysis technology
OMC Textile Division Presentation 2021.pptx
MIND Revenue Release Quarter 2 2025 Press Release
1. Introduction to Computer Programming.pptx
Empathic Computing: Creating Shared Understanding
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Reach Out and Touch Someone: Haptics and Empathic Computing
Diabetes mellitus diagnosis method based random forest with bat algorithm
Machine learning based COVID-19 study performance prediction
TechTalks-8-2019-Service-Management-ITIL-Refresh-ITIL-4-Framework-Supports-Ou...
Programs and apps: productivity, graphics, security and other tools
A Presentation on Artificial Intelligence
Assigned Numbers - 2025 - Bluetooth® Document
August Patch Tuesday
Spectral efficient network and resource selection model in 5G networks
Digital-Transformation-Roadmap-for-Companies.pptx
Encapsulation_ Review paper, used for researhc scholars
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
Group 1 Presentation -Planning and Decision Making .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.