Autor Thema: STPascal Plus 2.00 kennt GEMDOS() nicht  (Gelesen 15795 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

Offline yalsi

  • Administrator
  • *****
  • Beiträge: 536
STPascal Plus 2.00 kennt GEMDOS() nicht
« am: Mi 22.10.2014, 00:20:25 »
Hallo in die Runde

Gerade spiele ich ein bisschen mit StPascal Plus Version 2 herum, nachdem Handbuch und Disks nun so lange herumstanden. Die Funktion GEMDOS() kennt aber anscheinend nur das Handbuch und nicht der Compiler- der sagt immer, der Bezeichner sei nicht verenbart. Da mache ich doch bestimmt einen Anfängerfehler, oder?

Gruss- Georg B. aus H.
Mein Netz: Acorn | Atari | Milan | Amiga | Apple IIGS | Macintosh | SUN Sparc | NeXT |SGI | IBM RS/6000 | DEC Vaxstation| Raspberry Pi | PCs mit OS/2, BeOS, Linux, AROS, Windows, BSD | Stand-alone: Apple //c | Sinclair QL | Amstrad | PDAs

Offline 1ST1

  • Benutzer
  • Beiträge: 8.661
  • Gesperrter User
Re: STPascal Plus 2.00 kennt GEMDOS() nicht
« Antwort #1 am: Mi 22.10.2014, 08:14:30 »
Kleiner Denkanstoß:

  {Externe Funktionen und Prozeduren}

   {$I trixsubs.pas}
   {$I gemsubs.pas}

   {Interne Funktionen und Prozeduren}

   function pexec(mode:integer;var name,kommandozeile,umgebung:cstring):long_integer;
      gemdos($4b);

   procedure dsetpath(var name:cstring);
      gemdos($3b);

   function dgetpath(var name:cstring;laufwerk:integer):integer;
      gemdos($47);

   function dsetdrv(lauferk:integer):integer;
      gemdos($0e);

   function dgetdrv:integer;
      gemdos($19);
Ausgeloggter Mitleser, der hier NIE mehr aktiv wird. Am besten, meine Inhalte komplett löschen. Dabei berufe ich mich auf mein Urheberrecht, die DSGVO und auf die Rechte, die mir unter Impressunm&Datenschutz zugestanden werden. Tschö!

Offline yalsi

  • Administrator
  • *****
  • Beiträge: 536
Re: STPascal Plus 2.00 kennt GEMDOS() nicht
« Antwort #2 am: Mi 22.10.2014, 21:32:44 »
Kleiner Denkanstoß:
...nur in die falsche Richtung: in Version 2 sind dort nur noch GEM Funktionen drin, aber keine gemdos() Definition. Das Einbinden geht jetzt auch anders:
program xy;
const
  {$I gemconst.pas}
type
  {$I gemtype.pas}

{$I gemsubs.pas}

Die drei Dateien gibt es analog auch für Pastrix. Die Doku zu beiden Bibliotheken nennt übrigens gemdos() nicht. Das Buch "Atari ST Programmierpraxis ST Pascal" (übrigens grottenschlecht strukturiert) setzt Version 1.2 voraus und hat Beispiele mit gemdos() Aufrufen ohne Compller-Includes. Vielleicht passt Dein Beispiel zur Version 1?

Gruss- Georg B. aus H.
Mein Netz: Acorn | Atari | Milan | Amiga | Apple IIGS | Macintosh | SUN Sparc | NeXT |SGI | IBM RS/6000 | DEC Vaxstation| Raspberry Pi | PCs mit OS/2, BeOS, Linux, AROS, Windows, BSD | Stand-alone: Apple //c | Sinclair QL | Amstrad | PDAs

Offline 1ST1

  • Benutzer
  • Beiträge: 8.661
  • Gesperrter User
Re: STPascal Plus 2.00 kennt GEMDOS() nicht
« Antwort #3 am: Mi 22.10.2014, 21:39:52 »
Das ist ein Auszug aus einem Programm, welches ich mal mit ST-Pascal Plus 2.02 entwickelt habe. Das Programm funktioniert jedenfalls.

Zitat
                                        Eltville, den 20.11.1987

        Sehr geehrte Kunden,

        auf der vorliegenden Diskette befindet sich die ST Pascal plus
        Compiler-Version 2.02.
Ausgeloggter Mitleser, der hier NIE mehr aktiv wird. Am besten, meine Inhalte komplett löschen. Dabei berufe ich mich auf mein Urheberrecht, die DSGVO und auf die Rechte, die mir unter Impressunm&Datenschutz zugestanden werden. Tschö!

Offline yalsi

  • Administrator
  • *****
  • Beiträge: 536
Re: STPascal Plus 2.00 kennt GEMDOS() nicht
« Antwort #4 am: Do 23.10.2014, 00:11:30 »
Es wird mysteriös: Dein Beispiel geht in meiner Installation einfach nicht und auch das vollständige Buchbeispiel will nicht. Meine Version ist auch die gleiche wie Deine... . In den Include Dateien ist übrigens keine "external" Definition für Gemdos enthalten- die Funktion muss irgendwo anders herkommen oder die Includes haben einen Fehler. Ich probiere am WE noch weiter... .

Gruss- Georg B. aus H.
Mein Netz: Acorn | Atari | Milan | Amiga | Apple IIGS | Macintosh | SUN Sparc | NeXT |SGI | IBM RS/6000 | DEC Vaxstation| Raspberry Pi | PCs mit OS/2, BeOS, Linux, AROS, Windows, BSD | Stand-alone: Apple //c | Sinclair QL | Amstrad | PDAs

Offline 1ST1

  • Benutzer
  • Beiträge: 8.661
  • Gesperrter User
Re: STPascal Plus 2.00 kennt GEMDOS() nicht
« Antwort #5 am: Do 23.10.2014, 00:39:19 »
Ein bischen mehr:

   const {$I trixcons.pas}
         {$I gemconst.pas}
   type  {$I trixtype.pas}
         {$I gemtype.pas}
dann kommen meine Variablen-Deklarationen und dann anschließend der Code, den ich oben gepostet habe. Danach kommen die ganzen normalen Funktionen und Proceduren und schließlich main.
Ausgeloggter Mitleser, der hier NIE mehr aktiv wird. Am besten, meine Inhalte komplett löschen. Dabei berufe ich mich auf mein Urheberrecht, die DSGVO und auf die Rechte, die mir unter Impressunm&Datenschutz zugestanden werden. Tschö!

Offline yalsi

  • Administrator
  • *****
  • Beiträge: 536
Re: STPascal Plus 2.00 kennt GEMDOS() nicht
« Antwort #6 am: Do 23.10.2014, 07:23:39 »
Genau das habe ich ja probiert. Hilft aber nix. Es muss ein anderes Problem bei mir sein.
Mein Netz: Acorn | Atari | Milan | Amiga | Apple IIGS | Macintosh | SUN Sparc | NeXT |SGI | IBM RS/6000 | DEC Vaxstation| Raspberry Pi | PCs mit OS/2, BeOS, Linux, AROS, Windows, BSD | Stand-alone: Apple //c | Sinclair QL | Amstrad | PDAs

Offline 1ST1

  • Benutzer
  • Beiträge: 8.661
  • Gesperrter User
Re: STPascal Plus 2.00 kennt GEMDOS() nicht
« Antwort #7 am: Do 23.10.2014, 08:20:58 »
Zeig mal deinen Code, vom Anfang bis zur ersten von dir erstellten Procedur/Funktion. Deine Variablendeklarationen kannst du evtl. ausklammern.
Ausgeloggter Mitleser, der hier NIE mehr aktiv wird. Am besten, meine Inhalte komplett löschen. Dabei berufe ich mich auf mein Urheberrecht, die DSGVO und auf die Rechte, die mir unter Impressunm&Datenschutz zugestanden werden. Tschö!

Offline yalsi

  • Administrator
  • *****
  • Beiträge: 536
Re: STPascal Plus 2.00 kennt GEMDOS() nicht
« Antwort #8 am: Fr 24.10.2014, 21:32:33 »
Das geht schon mit 'was ganz banalem nicht:
program taste;
CONST
{$I TRIXCONS.PAS}
{$I GEMCONST.PAS}
TYPE
{$I trixtype.pas}
{$I gemtype.pas}
VAR
   l: integer ;
{$I trixsubs.pas}
{$I gemsubs.pas}
begin
   l:=gemdos(7);
end.

Den Bezeichner gemdos() kennt der Compiler nicht. Und nochmal: In keinem der Include-Dateien ist er vereinbart, da liegt das Problem nicht. Wenn Du STPascal Plus installiert hast, compiliere das doch bitte mal und sage mir, was passiert.

Gruss- Georg B. aus H.
Mein Netz: Acorn | Atari | Milan | Amiga | Apple IIGS | Macintosh | SUN Sparc | NeXT |SGI | IBM RS/6000 | DEC Vaxstation| Raspberry Pi | PCs mit OS/2, BeOS, Linux, AROS, Windows, BSD | Stand-alone: Apple //c | Sinclair QL | Amstrad | PDAs

Offline 1ST1

  • Benutzer
  • Beiträge: 8.661
  • Gesperrter User
Re: STPascal Plus 2.00 kennt GEMDOS() nicht
« Antwort #9 am: Fr 24.10.2014, 21:43:01 »
Mach mal vor die 7 ein $

l:=gemdos($7);
Ausgeloggter Mitleser, der hier NIE mehr aktiv wird. Am besten, meine Inhalte komplett löschen. Dabei berufe ich mich auf mein Urheberrecht, die DSGVO und auf die Rechte, die mir unter Impressunm&Datenschutz zugestanden werden. Tschö!

Offline yalsi

  • Administrator
  • *****
  • Beiträge: 536
Re: STPascal Plus 2.00 kennt GEMDOS() nicht
« Antwort #10 am: Fr 24.10.2014, 21:50:28 »
 :o  :o  :o Das war's!

Nun geht's auch ohne die ganzen Includes! Ich hasse missverständliche Compilermeldungen  >:(

Dankeschön- Georg B. aus H.
Mein Netz: Acorn | Atari | Milan | Amiga | Apple IIGS | Macintosh | SUN Sparc | NeXT |SGI | IBM RS/6000 | DEC Vaxstation| Raspberry Pi | PCs mit OS/2, BeOS, Linux, AROS, Windows, BSD | Stand-alone: Apple //c | Sinclair QL | Amstrad | PDAs

Offline yalsi

  • Administrator
  • *****
  • Beiträge: 536
Re: STPascal Plus 2.00 kennt GEMDOS() nicht
« Antwort #11 am: Fr 24.10.2014, 23:51:34 »
Hallo nochmal

Kurz zu früh gefreut, jetzt aber korrigiert:

function fnSAAReadkey:integer;
    var iKey:long_integer;
    function conin:long_integer;
        gemdos($7);
begin
   (* irgendwelcher code *)
    iKey:=conin;
    fnSAAReadkey:=iKey div 65534;
end;

gibt mir brav den Scancode einer Taste zurück. Mache ich das aber ohne Funktion:

function fnSAAReadkey:integer;
    var iKey:long_integer;
begin
   (* irgendwelcher code *)
   iKey=gemdos($7);
    fnSAAReadkey:=iKey div 65534;
end;

dann kennt der Compiler den Bezeichner gemdos nicht  ::) Mir soll das so reichen, jetzt geht's ja... aber verstehen muss ich das nicht, oder?

Gruss- Georg B. aus H.
« Letzte Änderung: Sa 25.10.2014, 12:57:52 von yalsi »
Mein Netz: Acorn | Atari | Milan | Amiga | Apple IIGS | Macintosh | SUN Sparc | NeXT |SGI | IBM RS/6000 | DEC Vaxstation| Raspberry Pi | PCs mit OS/2, BeOS, Linux, AROS, Windows, BSD | Stand-alone: Apple //c | Sinclair QL | Amstrad | PDAs

Offline 1ST1

  • Benutzer
  • Beiträge: 8.661
  • Gesperrter User
Re: STPascal Plus 2.00 kennt GEMDOS() nicht
« Antwort #12 am: Sa 25.10.2014, 12:40:16 »
Nein, das verstehe ich jetzt gerade auch nicht.
Ausgeloggter Mitleser, der hier NIE mehr aktiv wird. Am besten, meine Inhalte komplett löschen. Dabei berufe ich mich auf mein Urheberrecht, die DSGVO und auf die Rechte, die mir unter Impressunm&Datenschutz zugestanden werden. Tschö!

Offline ST-Oldie

  • Benutzer
  • Beiträge: 158
Re: STPascal Plus 2.00 kennt GEMDOS() nicht
« Antwort #13 am: So 26.10.2014, 12:28:53 »
Hallo,

es ist schon einige Zeit her, daß ich mehr mit ST Pascal+ gemacht hatte. Deshalb mußte ich mich erst mal wieder reindenken. Aber es ist ganz einfach verständlich:

gemdos() ist keine Funktion! Damit kannst man auch keinen Aufruf machen wie:

iKey:=gemdos($7);
Das würde tatsächlich einen unresolved external geben. gemdos ist ein Schlüsselwort für den Compiler wie begin, end, type, ... und sagt dem Compiler, daß die Funktion, die du vom Typ gemdos deklarierst, über den gemdos Trap mit den von dir angegebenen Parametern aufgerufen wird. Der Ausdruck

function conin:long_integer;
    gemdos($7);

deklariert also eine Funktion mit dem Namen conin ohne Parameter mit einem Rückgabewert vom Type long_integer, die der Compiler über Trap 1 mit der Funktionsnummer 7 aufrufen soll, anstatt das man selbst den Code schreibt. Wäre gemdos() eine Funktion, wäre diese Deklaration nicht möglich.

Tschüß
Michael
« Letzte Änderung: So 26.10.2014, 12:43:39 von ST-Oldie »
atari.mbernstein.de, the ATARI way of computing

Offline yalsi

  • Administrator
  • *****
  • Beiträge: 536
Re: STPascal Plus 2.00 kennt GEMDOS() nicht
« Antwort #14 am: So 26.10.2014, 15:33:03 »
OK, das verstehr ich jetzt wieder, vielen Dank für die Erklärung. Muss wohl doch dss Handbuch mal ausfūhrlich lesen... .

Gruss- Georg B. aus H.
Mein Netz: Acorn | Atari | Milan | Amiga | Apple IIGS | Macintosh | SUN Sparc | NeXT |SGI | IBM RS/6000 | DEC Vaxstation| Raspberry Pi | PCs mit OS/2, BeOS, Linux, AROS, Windows, BSD | Stand-alone: Apple //c | Sinclair QL | Amstrad | PDAs

Offline 1ST1

  • Benutzer
  • Beiträge: 8.661
  • Gesperrter User
Re: STPascal Plus 2.00 kennt GEMDOS() nicht
« Antwort #15 am: So 26.10.2014, 16:39:23 »
Danke Michael für die Erklärung! Das leuchtet ein.
Ausgeloggter Mitleser, der hier NIE mehr aktiv wird. Am besten, meine Inhalte komplett löschen. Dabei berufe ich mich auf mein Urheberrecht, die DSGVO und auf die Rechte, die mir unter Impressunm&Datenschutz zugestanden werden. Tschö!