Serielle- und/oder Paralelle Schnittstelle ansprechen unter MS-DOS ?!?

Rund um die LCL und andere Komponenten
Antworten
jedie
Beiträge: 3
Registriert: Fr 11. Sep 2020, 10:09

Serielle- und/oder Paralelle Schnittstelle ansprechen unter MS-DOS ?!?

Beitrag von jedie »

Ich bin Pascal Neuling und bin eigentlich bei Python zuhause ;)

Immerhin hab ich eine "Hello World" in freepascal für MS-DOS auf meinem 8086 XT zum laufen gebracht: Programmieren für DOS/8086 mit Free Pascal?

Nun Frage ich mich, ob es möglich ist, bzw. wie Aufwendig es wäre Bits über Serielle- und/oder Paralelle Schnittstelle hin und her zu schicken?!?
Muß man da evtl. auf Assembler zurück greifen? Wie das mit dem Seriellen Port geht, ist bei http://www.zotteljedi.de/pc-serial-loader/index.html ganz gut beschrieben bzw. dort gibt es fertigen Code dafür. Siehe auch: http://www.zotteljedi.de/pc-serial-loader/readme.txt

Dabei gibt es zwei kleine Assembler Lösungen: "Initial Loader" und "Toolbox". Im http://www.zotteljedi.de/pc-serial-load ... rc-1.2.zip Archive sind das:
  • /src/initld/initld.asm
  • /src/toolbox/toolbox.asm
Wie Aufwendig wäre es, diesen Assembler code in ein Pascal Projekt einzubinden?

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Serielle- und/oder Paralelle Schnittstelle ansprechen unter MS-DOS ?!?

Beitrag von af0815 »

Suche generell mal nach Turbo Pascal und DOS.

https://forum.lazarus.freepascal.org/in ... ic=29223.0

Hier findest du eine tpasync in source http://win98.altervista.org/9110/dos9k/betatester.html
Damit sollte angeblich sowas dann gehen

Code: Alles auswählen

program Sample;
uses
  Crt,
  TPAsync;

var
  Ch         : char;
  OldCarrier : boolean;

begin
  if AsyncOpen(1,1,2400,'N',8,1) then
  begin
    WriteLn('COM1 opened successfully; press Ctrl-6 to exit.');
    repeat
      if AsyncBufferRead(1,Ch) then
        Write(Ch);
      if KeyPressed then
      begin
        Ch := ReadKey;
        if Ch <> ^^ then
          AsyncSend(1,Ch);
      end else
        Ch := ^@;
    until Ch = ^^;
    AsyncClose(Ch);
  end else
    WriteLn('Couldn''t open COM1!');
end.
Ich kenne noch jede Menge andere Sachen, da ich mit TP. 3.0 unter DOS/CPM unter 8Bit Z80 CPU's vor ein paar Tagen :mrgreen: gearbeitet habe.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Benutzeravatar
Winni
Beiträge: 1577
Registriert: Mo 2. Mär 2009, 16:45
OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
CPU-Target: 64Bit
Wohnort: Fast Dänemark

Re: Serielle- und/oder Paralelle Schnittstelle ansprechen unter MS-DOS ?!?

Beitrag von Winni »

Hi!

Anmerkung zu einem Fallstrick bei der Umwandlung von Turbo Pascal Sourcen nach fpc bzgl. der Schnittstellen:

Da die Gurken seinerzeit sehr langsam waren, musste man insbesondere bei der RS 232 mit dem Befehl port arbeiten, der direkt an den Chip ging. Ohne diesen Befehl verschluckte der Rechner auf 286/386/486 Prozessoren diverse Zeichen, bevor das Programm wieder seine Arbeit verrichtete.

Diesen Befehl gibt es unter fpc nicht, da fpc eigentlich für Multitasking Betriebssysteme gedacht ist.

Winni

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Serielle- und/oder Paralelle Schnittstelle ansprechen unter MS-DOS ?!?

Beitrag von af0815 »

Winni hat geschrieben:
Do 21. Okt 2021, 11:00
Da die Gurken seinerzeit sehr langsam waren, musste man insbesondere bei der RS 232 mit dem Befehl port arbeiten, der direkt an den Chip ging. Ohne diesen Befehl verschluckte der Rechner auf 286/386/486 Prozessoren diverse Zeichen, bevor das Programm wieder seine Arbeit verrichtete.
Im ersten Post steht was von 'MS-DOS auf meinem 8086 XT'
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Benutzeravatar
Winni
Beiträge: 1577
Registriert: Mo 2. Mär 2009, 16:45
OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
CPU-Target: 64Bit
Wohnort: Fast Dänemark

Re: Serielle- und/oder Paralelle Schnittstelle ansprechen unter MS-DOS ?!?

Beitrag von Winni »

Hi!

Es gibt eine Seite, die zeigt wie man Turbo Pascal nach fpc DOS/Go32 portiert.

Auch ein Workaround für den Befehl port wird gezeigt.

https://www.freepascal.org/port.html

Zurück in die 16-Bit-Zeiten!

Viel Spaß

Winni

PascalDragon
Beiträge: 825
Registriert: Mi 3. Jun 2020, 07:18
OS, Lazarus, FPC: L 2.0.8, FPC Trunk, OS Win/Linux
CPU-Target: Aarch64 bis Z80 ;)
Wohnort: München

Re: Serielle- und/oder Paralelle Schnittstelle ansprechen unter MS-DOS ?!?

Beitrag von PascalDragon »

Winni hat geschrieben:
Do 21. Okt 2021, 11:00
Diesen Befehl gibt es unter fpc nicht, da fpc eigentlich für Multitasking Betriebssysteme gedacht ist.
Die folgenden von FPC unterstützten Plattformen bieten die Port Variable an:
  • i386-go32v2
  • i8086-msdos
  • i8086-win16
  • z80-msxdos
  • verschiedene *nix Targets auf i386 und x86_64 über die Unit Ports
FPC Compiler Entwickler

Antworten