Nostalgia:
dec :: vax :: vaxeln :: 2.0 :: AA-EU39A-TE VAXELN Pascal Language Reference Manual Mar85 http://bitsavers.trailing-edge.com/pdf/dec/vax/vaxeln/2.0/AA-EU39A-TE_VAXELN_Pascal_Language_Reference_Manual_Mar85.pdf
Posted by jpluimers on 2014/09/07
Nostalgia:
dec :: vax :: vaxeln :: 2.0 :: AA-EU39A-TE VAXELN Pascal Language Reference Manual Mar85 http://bitsavers.trailing-edge.com/pdf/dec/vax/vaxeln/2.0/AA-EU39A-TE_VAXELN_Pascal_Language_Reference_Manual_Mar85.pdf
Posted in DEC Pascal, Delphi, Development, Pascal, Software Development | Leave a Comment »
Posted by jpluimers on 2014/08/12
In the With Statement series:
Lars Fosdal – Code Rants
Debugging today, I found another gotcha.
In this case, both Self and DisconnectedClient has a property named ClientIdentifier.
Note the difference for the mouse-over and the evaluation.
–jeroen
Posted in Appmethod, Borland Pascal, Delphi, Delphi 1, Delphi 2, Delphi 2005, Delphi 2006, Delphi 2007, Delphi 2009, Delphi 2010, Delphi 3, Delphi 4, Delphi 5, Delphi 6, Delphi 7, Delphi 8, Delphi x64, Delphi XE, Delphi XE2, Delphi XE3, Delphi XE4, Delphi XE5, Delphi XE6, Delphi XE7, Development, Pascal, Software Development, Turbo Pascal, With statement | Leave a Comment »
Posted by jpluimers on 2014/07/22
Found out where the StackOverflow Pascal has its origins: What happened to comments in syntax highlighter? – Meta Stack Overflow.
Like any syntax highlighter, it is not perfect (only a Delphi compiler driven highlighter would have a chance to be perfect), but it does a pretty good job and gets better over time.
–jeroen
Posted in Borland Pascal, Delphi, Delphi 1, Delphi 2, Delphi 2005, Delphi 2006, Delphi 2007, Delphi 2009, Delphi 2010, Delphi 3, Delphi 4, Delphi 5, Delphi 6, Delphi 7, Delphi x64, Delphi XE, Delphi XE2, Delphi XE3, Delphi XE4, Development, FreePascal, Pascal, Software Development, Turbo Pascal | Leave a Comment »
Posted by jpluimers on 2014/06/11
A bit more than a year ago, I wrote about Delphi: you should avoid the with statement as it makes your code less future proof. That caused some nice comments on the blog, and some more on LinkedIn where Paul Foster mentioned it in a thread ‘Jeroen Pluimers makes a case against “with” statements.‘ Both interesting reads, especially the reasons that people use or avoid with, or keep its use in balance. There is one set of comments I want to emphasize: refactoring multiple with statements into a one function and a call per former with. Read the rest of this entry »
Posted in Borland Pascal, Delphi, Delphi 1, Delphi 2, Delphi 2005, Delphi 2006, Delphi 2007, Delphi 2009, Delphi 2010, Delphi 3, Delphi 4, Delphi 5, Delphi 6, Delphi 7, Delphi 8, Delphi XE, Delphi XE2, Delphi XE3, Delphi XE4, Development, Pascal, Software Development, Turbo Pascal, With statement | 19 Comments »
Posted by jpluimers on 2014/04/27
At USD 50, this seems like a bargain for Apple I / Apple II lovers.
From the The WOZPAK Special Edition – Overview page:
In 1978, The WOZPAK was a 300 page technical manual produced by Apple Pugetsound Program Library Exchange. The poor resolution of copy machines and fax machines of the era made The WOZPAK an illegible and challenging to use collection of handwritten and typed notes. This collection as a whole was provided to the A.P.P.L.E. by Apple Computer, Inc. co-founder Steve Wozniak and then company president Mike Scott.
…
Thanks to the encouragement of a number of computer industry legends, and the efforts of Apple historians, Brian Wiser and Bill Martens, we now have a completely refurbished and dramatically enhanced version of The WOZPAK. The WOZPAK Special Edition comes complete with the original materials from The WOZPAK and The WOZPAK II as well as some new materials provided by Apple legends from their personal libraries.
–jeroen
Posted in //e, 6502, Apple, Apple Pascal, Apple ][, Assembly Language, Development, History, Pascal, Power User, Software Development | Leave a Comment »
Posted by jpluimers on 2014/04/16
Thanks Olivier SCHWAB for pointing me to this nice interview with Florian Klämpfl on SourceForge about April 2014 Project of the Month, Free Pascal | SourceForge Community Blog.
Two things I didn’t know yet:
Besides Florian, there are quite a few more people on the FreePascal team. I met most of them at last years PasCon: really nice guys.
–jeroen
Posted in Delphi, Development, FreePascal, Object Pascal, Oxygene, Pascal, Software Development, Turbo Pascal | Tagged: Free Pascal, FreePascal, sourceforge, Turbo Pascal era | 5 Comments »
Posted by jpluimers on 2014/04/09
Interesting read:
In other words: any language that merges null behaviour in the underlying storage will have a problem somwehere.
So if you want to have true nullable types, your null flag should be stored outside the underlying storage.
The .NET framework 2 and up, most database management systems and many other environment support that.
But most languages don’t support it for pointer types. So there will be portions of address spaces either inaccessible, or only accessible when skipping the null pointer checks.
Note that the thread above contains some very interesting bits, for instance this one:
Matt 28 Mar 2013 5:58 PM #
@MarkY “Dereferencing null is undefined? Cool! I thought it was guaranteed to crash, just like a false assertion or something. So crashing is the OS guarantee, not the language guarantee apparently.”
Nope. It’s not an OS guarantee either. The OS won’t ever normally allocate memory at address zero, but there’s nothing to stop you telling it to. Try doing “VirtualAlloc(1, 4096, MEM_RESERVE | MEM_COMMIT, PAGE_READWRITE)” on your pre-Windows8 machine.
In fact, this is the reason why null-dereferences in kernel mode are often exploitable as elevation of privilege attacks. The null-page is mappable and within the user-addressable region of memory, so if the kernel dereferences a null pointer, it reads attacker controllable data.
And btw, this is the reason why on Linux and Windows8+ you can’t map the null-page.
–jeroen
Posted in .NET, .NET 2.0, .NET 3.0, .NET 3.5, .NET 4.0, .NET 4.5, Borland C++, Borland Pascal, C, C#, C# 2.0, C# 3.0, C# 4.0, C# 5.0, C++, C++ Builder, Database Development, Delphi, Development, Pascal, Quick Pascal, Software Development, Turbo Pascal, VB.NET, VB.NET 10.0, VB.NET 11.0, VB.NET 8.0, VB.NET 9.0 | Leave a Comment »
Posted by jpluimers on 2014/03/20
Wow, did I really wrote that 18 years ago?
Yes I did, and I was quoted in the (back then famous) FAQPAS3.TXT from (now Professor Emeritus) Timo Salmi: The third set of frequently (and not so frequently) asked Turbo Pascal questions with Timo’s answers. The items are in no particular order.
From ts@uwasa.fi Fri Nov 8 00:00:56 1996
Subject: Decompiling a TP .EXE56.
Q: How can I reverse a TP .EXE or .TPU back into source code?A: This is simply asking too much. You cannot decompile a TPprogram in a manner that would give you back the original source.This method of reverse engineering is not on in actual practice.
Quoting Jeroen Pluimers jeroenp@dragons.nest.nl
“During thecompilation, important information gets lost about variables,types, identifiers etc. Writing a Pascal Decompiler is impossible.The best you can achieve is a disassembler that can help yourecognize some Pascal statements.”
Since then I learned that compilers emit highly predictable CPU code that – with the right, and sometimes complex, algorithms – can be reconstructed into language structures.
Of course you are missing the identifiers and comments, but you can some remarkable info, especially with well structured code.
Two more links about this:
–jeroen
via: FAQPAS3.TXT.
Posted in Delphi, Development, Pascal, Software Development, Turbo Pascal | 2 Comments »
Posted by jpluimers on 2014/03/13
Yet another example of somehow who got bitten hard by using the with statement (I decided to give with its own category on my blog).
This time it got shared by Paul Foster on G+ and comes down to this:
Even in unsuspiciously looking code, the wit statement can bite you, especially if you need to do refactoring and (because of that) introduce two names in the same scope.
Or in Paul‘s words:
Whilst upgrading the code to remove the Containers unit (its not supported on NextGen platforms, so I have to make things work with Generics.Collections instead, (bye bye D7 support for this code) and refactor a couple stupidities in my original design (they always creep in, don’t they) I ended up with two class members of the same name. The with block then looked OK but I was in fact not access the member I thought I was.
–jeroen
via: Paul Foster – Google+ – WITH IS EVIL! God damn it, I know it makes code easier to….
Posted in Borland Pascal, Delphi, Delphi 1, Delphi 2, Delphi 2005, Delphi 2006, Delphi 2007, Delphi 2009, Delphi 2010, Delphi 3, Delphi 4, Delphi 5, Delphi 6, Delphi 7, Delphi 8, Delphi x64, Delphi XE, Delphi XE2, Delphi XE3, Delphi XE4, Delphi XE5, Development, Pascal, Software Development, Turbo Pascal, With statement | 18 Comments »
Posted by jpluimers on 2014/03/12
Edit 20250102: added various “[Wayback/Archive]” archival links, VMware information, amended TUWA location, and added alternative csboot.zip download location on the Internet Archive (the Wayback Machine download is broken and the original gone)
A really long time ago, I posted in [Wayback/Archive] history – What features contributed to the evolution of Pascal? – Programmers indicating there was a [Wayback/Archive] Hard Disk Image of MS-DOS 6.22 with Pascal for Computer Studies. In fact, that is an IMG file of a DOS hard disk. And this posts shows how to use it with VMware Fusion on Mac OS X. The is a hard disk image contains:
Edit 20250102: does not work under VMware Fusion when you run Apple Silicon. Not figured out a performant alternative yet. Will try figuring out later.
Posted in Borland Pascal, Development, Fusion, Pascal, Power User, Quick Pascal, Software Development, Turbo Pascal, Virtualization, VMware, VMware Workstation | 1 Comment »