In practice it was almost always used to access PC video memory:
"absolute"?
Would be a poor way to do it .
1) i don't think it was allowed to specify immediate address aith abosolute. You had a "mem" pseudo-array for it. And it even had a syntax borrowed form intel assembler,
mem[ x : y] rather than
mem[x, y]2) plane-based design of DOS-time graphics would make accessing static array of bytes - even if it could be positioned at video memory - not very helpful. The correspondence of bit slice to pixel was depending on way too many factors, and not the whole part of pixel was exposed to the memory addressing. On top of it, different strarting offsets of video memory could be possible. And while standard BIOS did not use it, "scroller" games were changing the offset circular queue like, because copying video memory would be prohibitively slow.
so, i do not think TP absolute syntax provided for immediate address literals. I think linkubg asm-=made OBJ-files woud provide, but would useless for practical purposes.
But similarly, i won't bother to download tp3 or tp5 and check it.
I can't remember whether non PC-DOS Turbo Pascal had it, other systems typically either had serial terminals or video using e.g. a 7220 chip.
One soviet school PDP-11 clone had especially exotic design.
It had two CPUs, each with their own memory. 8 MHz (10 cycles for register/register command, so 800K ops/sec) for main, and 4 or 6 MHz peripheral.
PPU was wired to "port" addresses of CPU and emulated most of the devices including videocard.
I am still of the fence if such a design should be called ingenious or desperate.
Both had "dashboard terminal", a special limited octal numbers only debugger (no asm or disasm), which emulated hardware toggles of mainframe PDP-11, but PPU's one had VERY reduced video mode (and since it was PPU itself that emulated videocard - it was a miracle it even worked at all).
> Noted your comment about Wirth liking keywords,
No-no-no. Not keywords, but *reducing* keywords. I think he was public about his achievment of reducing keywords dictionary Pascal -> Modula -> Oberon. Though CP, if my memory is ok, started gaining new keywords, not deleting old ones.
> (let's call it) J&W Pascal
I checked their report, BTW, few hours before, to make sure Wirth did not had "typed constant" in no flavour, so it was TP's (orr USCD's? never saw it, only heard a name) sole invention.
And if TP's strings were good invention (J&W's string were vague dream not spec), that one was probably not.
That said, if Pascal put in industrial use was at all a good event. It is so "worse is better" in retrospect... But what heppenned - hapenned.
> These days we'd put the details in a library, but to a very large extent this predates the library concept and even a fairly minor I/O change required that the core compiler developers be involved.
Not sure the uniform concept of bytes and files even existed back then. Early internet RFC share a fair deal describing communications of computers with different byte lengths. Which, frankly, make today problems of endianess kinda laughable in comparison.
All the major OSes today more or less follow C/UNIX concept of files and file paths, so unifrom I/O access became plausible.
Personally, i never dealt with non-interactive coputers, that Pascal was created for. The very idea that files are listed in "program" keyword was driving me to stupor. How can i know then what files are being worked on? How would i provide user a choice? The first computers i saw were 16-bit with natural an reasonable fast support for byte types. Old computers could not address bytes and had not enough power to abuse their queer-width words to process only bytes in them. Old computers could not just say "this home dir is where you have files with your quota" - data was going from different devices, whatever sysops would make work and free from other programs. When your program woudl have it's 5 minutes in some random slot in the night.
This i retroactively understand, but back then this literally drove me to stupor. If i could not specify the file - i could not reason about program further on. Yes, yeah, abstraction, specification by some external mean, i kind of understood it, but since i only had experiece, however limited, with interactive and personal (at least for half an hour) computers - my guts revolted. Interesting that even USCD already changed this aspect of Pascal, albeit differently than TP would.
In a sense it probably was the same as with user interface later. It took a time until both user experience crystallized to some universal concepts, and computing power grew enough to bear penalties of abstraction. I still remember how unbearably slow TP6 and TP7 were after TP5. And those were not even graphic... I guess 20 years before it was the same with storage I/O - no reliable universal concepts and not enough computing power to mantain them.
> from 6- to 7-bit character representation and things like braces were not always available
Ammm, it was about writeable consts - but is not relevant! Would you talk about "^" for pointers, or about '(." and "(*" brackets - would be relevant (but also would show this was not much of a practical problem).
But now you are tempting me... to make some patches actually using (. brackets, i am sure FPC would swallow them fine. FPC devs? not sure...However both "writeable const" and "initialized var" do not use any character that was not already present in the language. So would be a keyword like "own" - no exotic character owuld be needed.