Forums before death by AOL, social media and spammers... "We can't have nice things"
|    comp.lang.pascal.borland    |    Borland Pascal was actually pretty neat    |    2,978 messages    |
[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]
|    Message 2,968 of 2,978    |
|    Robert Prins to Noon    |
|    Re: Turbo Pascal 6.0 editor sources    |
|    20 Aug 25 22:21:41    |
   
   From: robert@prino.org   
      
   On 2025-08-20 14:45, Noon wrote:   
   > Hello community,   
   >   
   > I just wanted to let you know that the Internet recovered the sources of   
   Turbo   
   > Pascal 6.0. I haven't tried to compile them yet, but they look complete:   
   > https://archive.org/details/tpascal   
   >   
   > What's interesting is that the compiler contains an opcode generator for x86   
   > assembly commands - which potentially could pave the way to extend the   
   > integrated assembler by 386 commands or above.   
   >   
   > I hope that Borland Pascal 7 will appear at some point as well, as this would   
   > open up the world for the community to extend their favourite compilers!   
      
   I've had these for probably two or more decades. Also never tried to   
   recompile/reassemble them, but I did (and still do, somewhere...) have a   
   program   
   to actually modify the builtin BASM hash table to include some 386(+)   
   instructions, but using 386(+) code is also possible using const's to define   
   opcodes and use them via db/dw/dd. Extending the assembler to actually handle   
   the new addressing modes of 386(+) instructions will probably be pretty hard.   
      
   It would be far more useful to have the source for Virtual Pascal, and work   
   with   
   that one, although given that that compiler is also written in pretty much   
   uncommented x86 assembler (now how do I know that...), it will be just as hard,   
   but probably far more useful, right now I'm using it with lots of db/dw/dd   
   codes   
   post Pentium instructions, like (wrapping lines)   
      
   { cmovg edi, eax } db $0f,$4f,$f8   
   { cmovg edi, esi } db $0f,$4f,$fe   
   { movq [ebx + offset lift_list.sum.km], mm0 } db $0f,$7f,$83; dd offset   
   lift_list.sum.km   
   { movq mm0, sum.km } db $0f,$6f,$05; dd offset   
   sum.km   
   { movq sum.km, mm0 } db $0f,$7f,$05; dd offset   
   sum.km   
   { paddd mm0, [ebx + offset lift_list.dtv.km] } db $0f,$fe,$43,offset   
   lift_list.dtv.km   
   { vmovdqu [eax + ecx], ymm0 } db $c5,$fe,$6f,$04,$08   
   { vmovdqu [edi + 32], ymm1 } db $c5,$fe,$7f,$4f,32   
   { vmovdqu [edi + eax], ymm0 } db $c5,$fe,$7f,$04,$07   
   { vmovdqu [edi], ymm0 } db $c5,$fe,$7f,$07   
   { vmovdqu [edx + offset minmax.max.km], xmm0 } db $c5,$fa,$7f,$42,offset   
   minmax.max.km   
   { vmovdqu swaits, ymm0 } db $c5,$fe,$7f,$05; dd   
   offset swaits   
   { vmovdqu xmm0, [edx + offset minmax.min.km] } db $c5,$fa,$6f,$42,offset   
   minmax.min.km   
   { vmovdqu ymm0, [esi + eax] } db $c5,$fe,$6f,$04,$06   
   { vmovdqu ymm0, [esi] } db $c5,$fe,$6f,$06   
   { vmovdqu ymm1, [esi + 32] } db $c5,$fe,$6f,$4e,32   
   { vpmaxsd xmm0, xmm0, [ecx + offset minmax.max.km] } db   
   $c4,$e2,$79,$3d,$41,offset minmax.max.km   
   { vpminsd xmm0, xmm0, [ecx + offset minmax.min.km] } db   
   $c4,$e2,$79,$39,$41,offset minmax.min.km   
   { vpxor xmm0, xmm0, xmm0 } db $c5,$f9,$ef,$c0   
      
   generating the byte-code via
|
[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]
(c) 1994, bbs@darkrealms.ca