[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: What exactly WAS Apple Pascal?



In article <40f8a550_5@corp.newsgroups.com>, exegete@nunya.biz 
wrote:

> The 64K system allows 32 segments, the 128K system 64 segments (whatever 
> that means) In addition, 64K allows one library on line per program, 
> 128K allows up to six libraries on line per program.

Executables and libraries consist of code and (optional) data 
segments. A code segment can be dynamically swapped into memory 
as needed. You can use the program LIBRARY.CODE to create new 
libraries by copying segments from other files. You can use the 
program LIBMAP.CODE to examine existing executables.

For example, the program FORMATTER.CODE consists of just one 
code segment (its data is in a separate file, FORMATTER,DATA):

LIBRARY MAP FOR formatter.code

Segment # 1:  
System version = A2/1.3, code type is 6502
FORMATTE  completely linked segment


In contrast, the pascal compiler itself is a mix of 6502 and 
p-code segments:

LIBRARY MAP FOR system.compiler

COPYRIGHT 1979,1980,1983-1985 APPLE COMPUTER, INC. ALL RIGHTS 
RESERVED

Segment # 1:  
System version = A2/1.3, code type is 6502
PASCALCO  completely linked segment

------------------------------------------------------------

Segment # 7:  
System version = A2/1.3, code type is P-Code (least sig. 1st)
COMPINIT  completely linked segment

------------------------------------------------------------

Segment # 8:  
System version = A2/1.3, code type is P-Code (least sig. 1st)
DECLARAT  completely linked segment

etc.


The SYSTEM.LIBRARY is especially revealing:

  LIBRARY MAP FOR system.library

     COPYRIGHT 1979,1980,1983-1985 APPLE COMPUTER, INC. ALL 
RIGHTS RESERVED


Segment #30:  
System version = A2/1.3, code type is 6502
LONGINTI  library unit (LINKED INTRINSIC)

    
  TYPE DECMAX = INTEGER[36];
       STUNT = RECORD CASE INTEGER OF
                 2:(W2:INTEGER[4]);
                 3:(W3:INTEGER[8]);
                 4:(W4:INTEGER[12]);
                 5:(W5:INTEGER[16]);
                 6:(W6:INTEGER[20]);
                 7:(W7:INTEGER[24]);
                 8:(W8:INTEGER[28]);
                 9:(W9:INTEGER[32]);
                 10:(W10:INTEGER[36])
               END;
       
  
  PROCEDURE FREADDEC(VAR F: FIB; VAR D: STUNT; L: INTEGER);
  PROCEDURE FWRITEDEC(VAR F: FIB; D: DECMAX; RLENG: INTEGER);
  
------------------------------------------------------------

Segment #31:  
System version = A2/1.3, code type is P-Code (least sig. 1st)
PASCALIO  library unit (LINKED INTRINSIC)
    
  TYPE DECMAX = INTEGER[36];
       STUNT = RECORD CASE INTEGER OF
                 2:(W2:INTEGER[4]);
                 3:(W3:INTEGER[8]);
                 4:(W4:INTEGER[12]);
                 5:(W5:INTEGER[16]);
                 6:(W6:INTEGER[20]);
                 7:(W7:INTEGER[24]);
                 8:(W8:INTEGER[28]);
                 9:(W9:INTEGER[32]);
                 10:(W10:INTEGER[36])
               END;
  
  PROCEDURE FSEEK(VAR F: FIB; RECNUM: INTEGER);
  PROCEDURE FREADREAL(VAR F: FIB; VAR X: REAL);
  PROCEDURE FWRITEREAL(VAR F: FIB; X: REAL; W, D: INTEGER);
  PROCEDURE FREADDEC(VAR F: FIB; VAR D: STUNT; L: INTEGER);
  PROCEDURE FWRITEDEC(VAR F: FIB; D: DECMAX; RLENG: INTEGER);
  FUNCTION SUPER_MOD(A,B : INTEGER) : INTEGER;
  FUNCTION SUPER_DIV(A,B : INTEGER) : INTEGER;
  
------------------------------------------------------------

Segment #28:  
System version = A2/1.3, code type is P-Code (least sig. 1st)
CHAINSTU  library unit (LINKED INTRINSIC)

  PROCEDURE SETCHAIN(TYTLE:STRING);
  PROCEDURE SETCVAL(VAL:STRING);
  PROCEDURE GETCVAL(VAR VAL:STRING);
  PROCEDURE SWAPON;
  PROCEDURE SWAPOFF;
  PROCEDURE SWAPGPON;

------------------------------------------------------------

Segment #29:  
System version = A2/1.3, code type is P-Code (least sig. 1st)
TRANSCEN  library unit (LINKED INTRINSIC)

  FUNCTION SIN(X:REAL):REAL;
  FUNCTION COS(X:REAL):REAL;
  FUNCTION EXP(X:REAL):REAL;
  FUNCTION ATAN(X:REAL):REAL;
  FUNCTION LN(X:REAL):REAL;
  FUNCTION LOG(X:REAL):REAL;
  FUNCTION SQRT(X:REAL):REAL;

------------------------------------------------------------

Segment #20:  
System version = A2/1.3, code type is 6502
TURTLEGR  library unit (LINKED INTRINSIC)

    TYPE 
      SCREENCOLOR=(none,white,black,reverse,radar,
      black1,green,violet,white1,black2,orange,blue,white2);
    
    PROCEDURE INITTURTLE;
    PROCEDURE TURN(ANGLE: INTEGER);
    PROCEDURE TURNTO(ANGLE: INTEGER);
    PROCEDURE MOVE(DIST: INTEGER);
    PROCEDURE MOVETO(X,Y: INTEGER);
    PROCEDURE PENCOLOR(PENMODE: SCREENCOLOR);
    PROCEDURE TEXTMODE;
    PROCEDURE GRAFMODE;
    PROCEDURE FILLSCREEN(FILLCOLOR: SCREENCOLOR);
    PROCEDURE VIEWPORT(LEFT,RIGHT,BOTTOM,TOP: INTEGER);
    FUNCTION  TURTLEX: INTEGER;
    FUNCTION  TURTLEY: INTEGER;
    FUNCTION  TURTLEANG: INTEGER;
    FUNCTION  SCREENBIT(X,Y: INTEGER): BOOLEAN;
    PROCEDURE DRAWBLOCK(VAR SOURCE; 
              ROWSIZE,XSKIP,YSKIP,WIDTH,HEIGHT,
              XSCREEN,YSCREEN,MODE: INTEGER);
    PROCEDURE WCHAR(CH: CHAR);
    PROCEDURE WSTRING(S: STRING);
    PROCEDURE CHARTYPE(MODE: INTEGER);

------------------------------------------------------------

Segment #21:  
System version = A2/1.3, code type is P-Code (least sig. 1st)
TURTLEGR  data segment

------------------------------------------------------------

Segment #22:  
System version = A2/1.3, code type is 6502
APPLESTU  library unit (LINKED INTRINSIC)

    FUNCTION  PADDLE(SELECT: INTEGER): INTEGER;
    FUNCTION  BUTTON(SELECT: INTEGER): BOOLEAN;
    PROCEDURE TTLOUT(SELECT: INTEGER; DATA: BOOLEAN);
    FUNCTION  KEYPRESS: BOOLEAN;
    FUNCTION  RANDOM: INTEGER;
    PROCEDURE RANDOMIZE;
    PROCEDURE NOTE(PITCH,DURATION: INTEGER);

John
----
jmatthews at wright dot edu
www dot wright dot edu/~john.matthews/