Het artikel bespreekt de evolutie en toepassing van de programmeertaal Pascal, oorspronkelijk ontwikkeld door Niklaus Wirth in 1970 voor educatieve doeleinden en efficiëntie. De focus ligt op Turbo Pascal van Borland, dat een enorme impact had op softwareontwikkeling voor CP/M en MS-DOS.
Specifieke aandacht gaat uit naar de MSX-omgeving. Omdat Turbo Pascal standaard beperkt was in hardware-aansturing, werden diverse include files en libraries ontwikkeld (zoals Graphpak en MDLLIB) om functies van de MSX volledig te benutten. Ook worden moderne hulpmiddelen genoemd, zoals de MSX PAD IDE, waarmee men op Windows kan programmeren voor de MSX.
Daarnaast beschrijft het artikel:
- Utilities van Hans Otten: Tools voor tekstfiltering, bestandsbeheer en grafische conversie tussen MSX en PCX.
- Inline code tools: Hulpmiddelen zoals INLASS en PMLINE om assembler-code in Pascal te integreren.
- Educatieve bronnen: Een overzicht van talloze artikelen uit tijdschriften als het CUC Journaal en MCCM, waarin technische aspecten van Pascal op de MSX werden uitgediept.
Turbo Pascal op CP/M, MSX-DOS en MS-DOS: Pascal voor kleine machines
De oorsprong van de taal Pascal
Niklaus Wirth voltooide de ontwikkeling van de oorspronkelijke Pascal-programmeertaal in 1970. Hij baseerde deze op de blokstructuur van de Algol-taal. Volgens de Pascal-standaard (ISO 7185) waren er twee hoofddoelen voor Pascal:
- Het beschikbaar maken van een taal die geschikt is voor het onderwijzen van programmeren als een systematische discipline, gebaseerd op fundamentele concepten die duidelijk en natuurlijk in de taal zijn weerspiegeld.
- Het definiëren van een taal waarvan de implementaties zowel betrouwbaar als efficiënt konden zijn op de computers die destijds beschikbaar waren.
In de jaren zeventig en tachtig werd Pascal veelvuldig gebruikt als computertaal in het programmeeronderwijs, met name om gestructureerd programmeren aan te leren. Er waren destijds compilers beschikbaar voor vrijwel alle gangbare platforms. De taal is inmiddels een standaard (ANSI) en diende als model voor meer geavanceerde (modulaire) talen van Wirth, zoals Modula en Oberon.
Turbo Pascal en Borland
Borland produceerde Turbo Pascal voor zowel CP/M als MS-DOS. Versie 3 was een enorm succes en een groot deel van de software voor kleine computers uit de jaren tachtig is met Turbo Pascal geschreven. Het was overigens geen standaard Pascal, maar een zeer praktische aanpassing voor de CP/M- en MS-DOS-omgevingen.
Versie 3 was de laatste versie voor CP/M. Op de PC volgden vele versies (Borland Pascal 7 was de laatste DOS-gebaseerde versie), die uiteindelijk evolueerden naar Delphi (Windows) en Kylix (Linux). Hoewel Turbo Pascal wellicht niet de enige Pascal-compiler is die op MSX draait, is het wel de best ondersteunde.
Versies voor MSX en PC
Er zijn diverse versies van Turbo Pascal beschikbaar:
- Turbo Pascal 3.01 voor CP/M: De onbewerkte, niet-geïnstalleerde versie.
- Philips distributie: Een versie gedistribueerd door Philips, inclusief "Turbo Pascal 8 bits MSX" (een officieel Borland-product), een boek van Jeff Dunteman met de demo-disk "Turbo Pascal Compleet", en de bijbehorende handleiding.
- Turbo Pascal 3.0 handleiding: Beschikbaar voor MS-DOS, CP/M-86 en CP/M/MSX-DOS (mede dankzij Fred Kraan).
- Gepatste versie voor MSX-2: Een versie van Turbo Pascal 3 gemaakt door MCE (Frits Hilderink), inclusief GIOS en een PC-versie.
- Turbo Pascal 3.3f.
- Turbo Pascal DataBASE Toolkit 1.2: Een officiële add-on van Borland voor MS-DOS, inclusief debugger (handig voor crosscompiling).
- Turbo Pascal 3.01 en 3.02 voor de PC: Nu beschikbaar als freeware.
- Hisoft Pascal 80: Een alternatieve Pascal-compiler.
Ontwikkelomgevingen voor MSX
Standaard is Turbo Pascal niet in staat om MSX-specifieke functies te gebruiken; buiten MSX-Basic zijn er geen instructies voor meer dan tekstoutput. Dit kan echter worden opgelost via zogenaamde include files die stukken machinecode bevatten als INLINE-statements.
Er zijn verschillende krachtige omgevingen beschikbaar die het mogelijk maken om met Pascal-programma's alle functies van de MSX te benutten:
- Graphpak: Pascal Bios include files van Uwe Schroder.
- Turbo-Lib V3.0: Beunsoft Pascal Bios include files (via Jacoon Bastiaansen).
- MDL-LIB 2.2: Pascal Bios include files van Martijn Dekker. Deze versie is public domain en bevat verbeteringen zoals:
- Integratie van
.typ-, .var- en .con- bestanden (declaraties van types, variabelen en constanten) in de .lib-bestanden om het aantal includes te verminderen.
- Compatibiliteit met Turbo Pascal 3.3.
- Kari Lammassaari: Een uitgebreide collectie MSX support files voor Pascal.
- RS232C Interface: Erik Maas ontwikkelde een Turbo Pascal-interface voor zijn fossil driver, bedoeld voor apparaten zoals Sunrise en Philips modems.
MSX PAD IDE
Slotman heeft een IDE ontwikkeld voor Turbo Pascal 3.3 die draait op de PC (Windows), genaamd MSX PAD. Dit is een superieur alternatief voor het programmeren op de MSX zelf, omdat men niet hoeft te wachten tot de code op de MSX is gecompileerd. De IDE bevat tevens include files voor het ontwikkelen van games in Pascal (gebruikt onder andere in het spel Snow fighters).
Netwerken en Communicatie
De INL Pascal library, gemaakt door Carlos de Santa-Ana Garcia voor INL, biedt ondersteuning voor de TCP/IP-stack van Nestor Soriano. Deze is bedoeld voor onder andere de MSX ethernetinterface Obsonet en seriële RS232-interfaces. De bibliotheek bevat:
- Een telnet client.
- Een telnet server.
Programma's van Hans Otten
Hans Otten heeft diverse Pascal-programma's geschreven, waaronder:
- Filterprogramma's: Voorbeelden van programma's die tijdens het kopiëren van een tekstbestand aanpassingen maken (zoals strippen naar 7 bits of tekst toevoegen/verwijderen).
- Split en Combine: Programma's voor MSX-DOS en CP/M om bestanden te splitsen in twee helften of deze weer samen te voegen.
- Grafische conversietools (MS-DOS): Programma's om MSX-schermformaten om te zetten naar het PCX-formaat (gebruikt in de "donkere dagen" van MS-DOS) en vice versa:
- CNVS v2.1 & v2.3: Conversie tussen MSX scherm 0-8 en PCX. Versie 2.3 is recenter, Engelstalig en heeft een schonere syntaxis.
- MSX12CNV: Tonen of converteren van MSX scherm 12 (full color).
- MSXCNV12: Converteren van PCX op de PC naar MSX scherm 12.
- CNVSW: Een Windows-installeerbare wrapper rondom CNVS, MSX12CNV en MSXCNV12.
- INDEX: Een programma voor MSX en MS-DOS om een database van bestanden op diskettes op te bouwen.
Eigen Libraries en Technische Hulpmiddelen
Om intelligente programma's op de MSX te schrijven met Turbo Pascal v3.00, zijn er libraries ontwikkeld voor toegang tot de functies van MSX 1 en 2. Deze bevatten functies zoals line, box, circle, fill figure, sprite en het tonen van tekst op graphics.
Tools voor Inline Code
Voor het schrijven van inline code in Turbo Pascal zijn er drie hulpprogramma's beschikbaar:
- INLINE: Door J.A.C.G. van der Valk; vertaalt REL-bestanden naar inline code gemaakt met de M80 macro assembler.
- INLASS: Een Z80 macro-assembler die inline code genereert (ondersteunt ook 8080, 8086 en 6502 CPU's).
- PMLINE: Een adaptatie en uitbreiding van een MC-programma genaamd PMLine, gebaseerd op een artikel van Werner Cirsovius.
Overige Pascal-software
- Een programma om inverse tekens op scherm 0 en 1 te tonen.
- Een programma om tekstbestanden of Wordstar-bestanden in twee kolommen per pagina te splitsen.
- Een directory-programma in Pascal met BDOS calls.
- SDOS: Een file manager met vensters door Juan Salas.
- Software voor het digitaliseren op MSX-videocomputers door Juan Salas.
Publicaties en Artikelen
Diverse tijdschriften hebben aandacht besteed aan de Pascal-omgeving:
CUC Journaal
- Mei 1988: Voeding en interface voor een Robotarm (Spectravideo SV2000), inclusief software in Pascal.
- Juli 1990: Automatisch opbellen; AD Interface en Pascal-programma om telefoonopbelpiepjes te genereren.
- Vraag: Directory opvragen in Pascal met BDOS calls.
MCCM (MSX Club Magazine)
- MCCM 61: Pascal uitgediept: instellen en gebruik JANSI.
- MCCM 63: Muis in Pascal.
- MCCM 65: Pascal sneller maken.
- MCCM 66: Gebruik van variabelen.
- MCCM 67: Gebruik van geheugen.
- MCCM 68: Data.
- MCCM 69: MT-Base naar ASCII in Pascal; hybride programmeren.
- MCCM 70: Vulpatronen.
- MCCM 71: Directives.
- MCCM 72: Recursie.
- MCCM 75: Scherm 0.
- MCCM 90: Toelichting op de Finse libraries van Kari Lamassaari door Manuel Bilderbeek.
MCM en MSX Club Magazine
- MCM 37: Bespreking Graphpak environment en patch voor Pascal (BREAK!).
- MCM 40: Bios bereiken vanuit Pascal.
- MCM 45: Bespreking MDLLIB pascal library.
- MCM 51: GIOS grafisch I/O Systeem voor Pascal.
- Overige artikelen: Mandelbrot fractals, "Bastaard pascal" (snel naar scherm schrijven), Fractals in Pascal deel 1, en een uitgebreide cursus Turbo Pascal (delen 1, 2, 3, 4, 6 en 7).
Turbo Pascal op CP/M, MSX-DOS en MS-DOS: Pascal voor kleine machines
De oorsprong van de taal Pascal
Niklaus Wirth voltooide de ontwikkeling van de oorspronkelijke Pascal-programmeertaal in 1970. Hij baseerde deze op de blokstructuur van de Algol-taal. Volgens de Pascal-standaard (ISO 7185) waren er twee hoofddoelen voor Pascal:
- Het beschikbaar maken van een taal die geschikt is voor het onderwijzen van programmeren als een systematische discipline, gebaseerd op fundamentele concepten die duidelijk en natuurlijk in de taal zijn weerspiegeld.
- Het definiëren van een taal waarvan de implementaties zowel betrouwbaar als efficiënt konden zijn op de computers die destijds beschikbaar waren.
In de jaren zeventig en tachtig werd Pascal veelvuldig gebruikt als computertaal in het programmeeronderwijs, met name om gestructureerd programmeren aan te leren. Er waren destijds compilers beschikbaar voor vrijwel alle gangbare platforms. De taal is inmiddels een standaard (ANSI) en diende als model voor meer geavanceerde (modulaire) talen van Wirth, zoals Modula en Oberon.
Turbo Pascal en Borland
Borland produceerde Turbo Pascal voor zowel CP/M als MS-DOS. Versie 3 was een enorm succes en een groot deel van de software voor kleine computers uit de jaren tachtig is met Turbo Pascal geschreven. Het was overigens geen standaard Pascal, maar een zeer praktische aanpassing voor de CP/M- en MS-DOS-omgevingen.
Versie 3 was de laatste versie voor CP/M. Op de PC volgden vele versies (Borland Pascal 7 was de laatste DOS-gebaseerde versie), die uiteindelijk evolueerden naar Delphi (Windows) en Kylix (Linux). Hoewel Turbo Pascal wellicht niet de enige Pascal-compiler is die op MSX draait, is het wel de best ondersteunde.
Versies voor MSX en PC
Er zijn diverse versies van Turbo Pascal beschikbaar:
- Turbo Pascal 3.01 voor CP/M: De onbewerkte, niet-geïnstalleerde versie.
- Philips distributie: Een versie gedistribueerd door Philips, inclusief "Turbo Pascal 8 bits MSX" (een officieel Borland-product), een boek van Jeff Dunteman met de demo-disk "Turbo Pascal Compleet", en de bijbehorende handleiding.
- Turbo Pascal 3.0 handleiding: Beschikbaar voor MS-DOS, CP/M-86 en CP/M/MSX-DOS (mede dankzij Fred Kraan).
- Gepatste versie voor MSX-2: Een versie van Turbo Pascal 3 gemaakt door MCE (Frits Hilderink), inclusief GIOS en een PC-versie.
- Turbo Pascal 3.3f.
- Turbo Pascal DataBASE Toolkit 1.2: Een officiële add-on van Borland voor MS-DOS, inclusief debugger (handig voor crosscompiling).
- Turbo Pascal 3.01 en 3.02 voor de PC: Nu beschikbaar als freeware.
- Hisoft Pascal 80: Een alternatieve Pascal-compiler.
Ontwikkelomgevingen voor MSX
Standaard is Turbo Pascal niet in staat om MSX-specifieke functies te gebruiken; buiten MSX-Basic zijn er geen instructies voor meer dan tekstoutput. Dit kan echter worden opgelost via zogenaamde include files die stukken machinecode bevatten als INLINE-statements.
Er zijn verschillende krachtige omgevingen beschikbaar die het mogelijk maken om met Pascal-programma's alle functies van de MSX te benutten:
- Graphpak: Pascal Bios include files van Uwe Schroder.
- Turbo-Lib V3.0: Beunsoft Pascal Bios include files (via Jacoon Bastiaansen).
- MDL-LIB 2.2: Pascal Bios include files van Martijn Dekker. Deze versie is public domain en bevat verbeteringen zoals:
- Integratie van
.typ-, .var- en .con- bestanden (declaraties van types, variabelen en constanten) in de .lib-bestanden om het aantal includes te verminderen.
- Compatibiliteit met Turbo Pascal 3.3.
- Kari Lammassaari: Een uitgebreide collectie MSX support files voor Pascal.
- RS232C Interface: Erik Maas ontwikkelde een Turbo Pascal-interface voor zijn fossil driver, bedoeld voor apparaten zoals Sunrise en Philips modems.
MSX PAD IDE
Slotman heeft een IDE ontwikkeld voor Turbo Pascal 3.3 die draait op de PC (Windows), genaamd MSX PAD. Dit is een superieur alternatief voor het programmeren op de MSX zelf, omdat men niet hoeft te wachten tot de code op de MSX is gecompileerd. De IDE bevat tevens include files voor het ontwikkelen van games in Pascal (gebruikt onder andere in het spel Snow fighters).
Netwerken en Communicatie
De INL Pascal library, gemaakt door Carlos de Santa-Ana Garcia voor INL, biedt ondersteuning voor de TCP/IP-stack van Nestor Soriano. Deze is bedoeld voor onder andere de MSX ethernetinterface Obsonet en seriële RS232-interfaces. De bibliotheek bevat:
- Een telnet client.
- Een telnet server.
Programma's van Hans Otten
Hans Otten heeft diverse Pascal-programma's geschreven, waaronder:
- Filterprogramma's: Voorbeelden van programma's die tijdens het kopiëren van een tekstbestand aanpassingen maken (zoals strippen naar 7 bits of tekst toevoegen/verwijderen).
- Split en Combine: Programma's voor MSX-DOS en CP/M om bestanden te splitsen in twee helften of deze weer samen te voegen.
- Grafische conversietools (MS-DOS): Programma's om MSX-schermformaten om te zetten naar het PCX-formaat (gebruikt in de "donkere dagen" van MS-DOS) en vice versa:
- CNVS v2.1 & v2.3: Conversie tussen MSX scherm 0-8 en PCX. Versie 2.3 is recenter, Engelstalig en heeft een schonere syntaxis.
- MSX12CNV: Tonen of converteren van MSX scherm 12 (full color).
- MSXCNV12: Converteren van PCX op de PC naar MSX scherm 12.
- CNVSW: Een Windows-installeerbare wrapper rondom CNVS, MSX12CNV en MSXCNV12.
- INDEX: Een programma voor MSX en MS-DOS om een database van bestanden op diskettes op te bouwen.
Eigen Libraries en Technische Hulpmiddelen
Om intelligente programma's op de MSX te schrijven met Turbo Pascal v3.00, zijn er libraries ontwikkeld voor toegang tot de functies van MSX 1 en 2. Deze bevatten functies zoals line, box, circle, fill figure, sprite en het tonen van tekst op graphics.
Tools voor Inline Code
Voor het schrijven van inline code in Turbo Pascal zijn er drie hulpprogramma's beschikbaar:
- INLINE: Door J.A.C.G. van der Valk; vertaalt REL-bestanden naar inline code gemaakt met de M80 macro assembler.
- INLASS: Een Z80 macro-assembler die inline code genereert (ondersteunt ook 8080, 8086 en 6502 CPU's).
- PMLINE: Een adaptatie en uitbreiding van een MC-programma genaamd PMLine, gebaseerd op een artikel van Werner Cirsovius.
Overige Pascal-software
- Een programma om inverse tekens op scherm 0 en 1 te tonen.
- Een programma om tekstbestanden of Wordstar-bestanden in twee kolommen per pagina te splitsen.
- Een directory-programma in Pascal met BDOS calls.
- SDOS: Een file manager met vensters door Juan Salas.
- Software voor het digitaliseren op MSX-videocomputers door Juan Salas.
Publicaties en Artikelen
Diverse tijdschriften hebben aandacht besteed aan de Pascal-omgeving:
CUC Journaal
- Mei 1988: Voeding en interface voor een Robotarm (Spectravideo SV2000), inclusief software in Pascal.
- Juli 1990: Automatisch opbellen; AD Interface en Pascal-programma om telefoonopbelpiepjes te genereren.
- Vraag: Directory opvragen in Pascal met BDOS calls.
MCCM (MSX Club Magazine)
- MCCM 61: Pascal uitgediept: instellen en gebruik JANSI.
- MCCM 63: Muis in Pascal.
- MCCM 65: Pascal sneller maken.
- MCCM 66: Gebruik van variabelen.
- MCCM 67: Gebruik van geheugen.
- MCCM 68: Data.
- MCCM 69: MT-Base naar ASCII in Pascal; hybride programmeren.
- MCCM 70: Vulpatronen.
- MCCM 71: Directives.
- MCCM 72: Recursie.
- MCCM 75: Scherm 0.
- MCCM 90: Toelichting op de Finse libraries van Kari Lamassaari door Manuel Bilderbeek.
MCM en MSX Club Magazine
- MCM 37: Bespreking Graphpak environment en patch voor Pascal (BREAK!).
- MCM 40: Bios bereiken vanuit Pascal.
- MCM 45: Bespreking MDLLIB pascal library.
- MCM 51: GIOS grafisch I/O Systeem voor Pascal.
- Overige artikelen: Mandelbrot fractals, "Bastaard pascal" (snel naar scherm schrijven), Fractals in Pascal deel 1, en een uitgebreide cursus Turbo Pascal (delen 1, 2, 3, 4, 6 en 7).