Pascal: Difference between revisions
m (Fixed an OCR error) |
m (Addendum to extensions that became standards eventually) |
||
Line 18: | Line 18: | ||
These restrictions were removed when the compiler later evolved into '''ND-Pascal for [[ND-100]] and [[ND-500]]'''<ref>{{ND-doc|60.124}}</ref>. | These restrictions were removed when the compiler later evolved into '''ND-Pascal for [[ND-100]] and [[ND-500]]'''<ref>{{ND-doc|60.124}}</ref>. | ||
Due to the fact that Norsk Data terminals often used character sets where the ASCII characters '''{''', '''[''', '''}''', and ''']''' (among others) were replaced with Nordic characters, e.g. '''æ''', '''Æ''', '''å''', '''Å''', ND-Pascal implemented alternative optional representation for those characters. The following table shows a subset of this alternative syntax, covering the very common Pascal ''comments'' and ''array'' usage only: | Due to the fact that Norsk Data terminals often used character sets where the ASCII characters '''{''', '''[''', '''}''', and ''']''' (among others) were replaced with Nordic characters, e.g. '''æ''', '''Æ''', '''å''', '''Å''', ND-Pascal implemented alternative optional representation for those characters. The following table shows a subset of this alternative syntax, covering the very common Pascal ''comments'' and ''array'' usage only (NB: These particular syntactic alternatives became part of the later ISO Standard Pascal and presumably were already suggested in the Trunk source (which seems to have been lost by now): | ||
{|class="wikitable" style="text-align: center;" | {|class="wikitable" style="text-align: center;" | ||
! Standard Pascal !! ND-Pascal alternative | ! Standard Pascal !! ND-Pascal alternative |
Revision as of 07:00, 10 June 2016
The Pascal programming language is available.
The first Norsk Data Pascal compiler was called NORD-10 Pascal, and was a compiler derived from the Pascal TRUNK compiler developed at ETH, Zurich[1], a reference implementation designed to assist development of Pascal for new machines:[2]
The compiler itself and parts of the runtime library are written in Pascal. The first version was introduced in 1977. It is a fairly normal Standard Pascal, although the standard as described in Wirth's "The Programming Language Pascal. Revised Report. (1973)", not the newer ISO 7185 Standard Pascal. The ND version has some extensions to better support the ND architecture and SINTRAN. The original NORD-10 version also had a couple of restrictions:
- The DISPOSE standard function (works as 'free' in C) was not implemented, memory de-allocation had to be coded by other means
- File variables could only be declared in the main program
These restrictions were removed when the compiler later evolved into ND-Pascal for ND-100 and ND-500[3].
Due to the fact that Norsk Data terminals often used character sets where the ASCII characters {, [, }, and ] (among others) were replaced with Nordic characters, e.g. æ, Æ, å, Å, ND-Pascal implemented alternative optional representation for those characters. The following table shows a subset of this alternative syntax, covering the very common Pascal comments and array usage only (NB: These particular syntactic alternatives became part of the later ISO Standard Pascal and presumably were already suggested in the Trunk source (which seems to have been lost by now):
Standard Pascal | ND-Pascal alternative |
---|---|
{ | (* |
} | *) |
[ | (. |
] | .) |
In 1982 Norsk Data started cooperating with the University of Kiel, Germany, in the development of a machine independent compiler system for several source languages, using the Vienna Development Method and a specification language called META IV. The source code is compiled by a language-specific (e.g. C, Pascal, Basic) front-end into a common intermediate language called CAT (Common Abstract Tree Language), which is then compiled by a common back-end into native code.
One outcome of this was CAT PASCAL, a front-end for Pascal. The initial version was A00, followed by updates until A03 (TBC). These versions were somewhat slow due to a lot of internal packing and unpacking of data structures. From version B00 performance improved (this also applies to the similarly versioned C CAT compilers).
The CAT Pascal language, although being a completely different implementation, was fully backwards compatible with the later versions of earlier non-CAT ND Pascal compilers, so much so that the same Pascal Reference Manual was used for both.[4].
Due to the multi-stage, separate front- and back-ends, cross compilers were as easy to implement as native compilers. Thus there were also CAT Pascal compilers for ND-100 that generated executable code for ND-500/5000, and the other way around.
Known Versions
TRUNK-based Pascal
- 78-11-01
- NORD-10 Pascal. Date: 1978
- J 83-xx-xx
- ND-Pascal for ND-100 and ND-500. Date: 1983
- K00
- ND-Pascal for ND-100 and ND-500. Date: 19851001.[5]
CAT Pascal
- A0x
- ND-211001A0x ND PASCAL for ND-100. Date: 1986. Various versions, up to A03
- ND-211003A0x ND PASCAL for ND-500. Date: 1986. Various versions, up to A03
- B00
- ND-211001B00 ND PASCAL for ND-100. Date: 19870114
- B02
- ND-211003B02 ND PASCAL for ND-500. Date: 19870703 (Possibly unofficial version)
- B03
- ND-211001B03 ND PASCAL for ND-100. Date: 19870904
- ND-211003B03 ND PASCAL for ND-500. Date: 19870904
- B04
- ND-211003B04 ND PASCAL for ND-500. Date: 19871104
- B05
- ND-211003B05 ND PASCAL for ND-500. Date: 19871109
- B06
- ND-211001B06 ND PASCAL for ND-100. Date: 19890509.[6]
- ND-211003B06 ND PASCAL for ND-500. Date: 19890510.[7]
Sources and references
Norsk Data Document ND–60.147 ND-500 PASCAL Compiler User's Guide
- ↑ Norsk Data Document ND–60.086 NORD-10 PASCAL
- ↑ https://archive.org/stream/bitsavers_pascalNewsep76_7681244/05_Pascal_Newsletter_Sep76_djvu.txt
- ↑ Norsk Data Document ND–60.124 ND-PASCAL USER'S GUIDE
- ↑ Norsk Data Document ND–60.222 PASCAL Reference Manual
- ↑ Norsk Data Document ND–60.222 PASCAL Reference Manual }
- ↑ [1] sintran.com, Norsk Data library, SIS
- ↑ [2] sintran.com, Norsk Data library, SIS
This article is a stub. You can improve NDWiki by expanding it. |