Her is one of my programs. It is the one I would like to get to run on newer versions of Windows. It ran on whatever version preceded Vista.
I see it did not paste the way it looks in the file with indents and staggering.
Bob
program SOLARPROGA(input,output);
var
    sr2mnth,sr2dte,sr2yr,sr2h,sr2m,sr2s,ramc2h,ramc2m,ramc2s,sr1mnth,sr1dte,
    sr1yr,sr1h,sr1m,sr1s,ramc1h,ramc1m,ramc1s,lngthdte,lngthh,lngthm,lngths,
    lngthramch,lngthramcm,lngthramcs,addh,addm,adds,ps,pm,ph,psr1dte,rarsnd,rarsnm,
    ratsnd,ratsnm,ramh,ramm,rams,pramh,pramm,prams,addqh,addqm,addqs,
    pqs,pqm,pqh,qramh,qramm,qrams,qprams,qpramm,qpramh,pssrd,pssrm,qd,qpm,
    qpsr1dte,qpsr1mnth,qpsr1yr:integer;
    part1,part2,key,part3,part4,secret,parta,partb,partc,partd,parte,partg,
    gm,gs,ramf,ramf1,partq1,partq2,partq3,qm,qs,qramf,qramf1,qramc,qwork,
    pssrramc,work:real;
    a,a1,b,b1:boolean;
begin;
    writeln('When entering data use spaces as separators.');
    writeln('After all data is entered for each instruction press enter.');
    writeln('Answers for time of progressed chart are in military time.');
    writeln('If hours exceed 12 subtract 12 hours from the answer to get PM time.');
    writeln('To exit program at anytime press Ctrl + c.');
    writeln;
    writeln('TO COMPUTE PRECISION PROGRESSED SOLAR RETURN:');
    writeln;
    writeln('Enter date of Solar Return after event in format mm dd yyyy.');
    writeln('Use a space between month and date and between the date and year.');
    readln(sr2mnth, sr2dte, sr2yr);
    writeln;
    writeln('Enter time of Solar Return after event in format hh mm ss.');
    writeln('Enter hours in military time. ie add 12 hrs to pm times.');
    writeln('Use a space between hours and minutes and between minutes and seconds.');
    readln(sr2h, sr2m, sr2s);
    writeln;
    writeln('Enter Local Sidereal Time of Solar Return after event in format hh mm ss.');
    writeln('As above use spaces instead of colons.');
    readln(ramc2h, ramc2m, ramc2s);
    writeln;
    writeln('Enter Right Ascension of Solar Return Sun in format ddd mm.');
    writeln('Use a space between degrees and minutes. No symbols are necessary.');
    readln(rarsnd, rarsnm);
    writeln;
    parta := (rarsnm/60)+rarsnd;
    writeln('Enter date of Solar Return before event in format mm dd yyyy.');
    writeln('Use a space between the month and date and between the date and year.');
    readln(sr1mnth, sr1dte, sr1yr);
    writeln;
    writeln('Enter time of Solar Return before event in format hh mm ss.');
    writeln('Enter hours in military time. ie add 12 hrs to PM times.');
    writeln('Again use spaces instead of colons.');
    readln(sr1h, sr1m, sr1s);
    writeln;
    writeln('Enter Local Sidereal Time of Solar Return before event in format hh mm ss.');
    writeln('Again use spaces instead of colons.');
    readln(ramc1h, ramc1m, ramc1s);
    writeln;
        if sr2s < sr1s then
              begin
                   sr2m := sr2m - 1;
                   sr2s := sr2s + 60;
              end;
        if sr2m < sr1m then
              begin
                   sr2h:= sr2h - 1;
                   sr2m:= sr2m + 60;
              end;
        if sr2h < sr1h then
              begin
                   sr2h := sr2h + 24;
                   sr2dte := sr2dte - 1;
              end;
    IF SR2DTE = SR1DTE THEN
       BEGIN;
             SR1MNTH := SR1MNTH
       END;
    IF SR2DTE > SR1DTE THEN
       BEGIN;
             SR2DTE := SR2DTE - 1;
       END;
    if sr2dte < sr1dte then
         begin
              case sr2mnth of
              1,2,4,6,8,9,11 :  sr2dte := sr2dte + 31;
              5,7,10,12      : sr2dte := sr2dte + 30;
              3              :
                   begin;
                        if (sr2yr mod 4 = 0) then
                        sr2dte := sr2dte + 29
                             else
                             sr2dte := sr2dte + 28;
                             end;
                  end;
           end;
    lngthdte := sr1dte - sr1dte; (*correct for lunars is lr2dte-lr1dte*)
    lngthh := sr2h - sr1h;
    lngthm := sr2m - sr1m;
    lngths := sr2s - sr1s;
    if ramc2s < ramc1s then
               begin
                   ramc2m := ramc2m - 1;
                   ramc2s := ramc2s + 60;
               end;
    if ramc2m < ramc1m then
               begin
                   ramc2h:= ramc2h - 1;
                   ramc2m:= ramc2m + 60;
               end;
    if ramc2h < ramc1h then
              begin
                   ramc2h := ramc2h + 24;
              end;
    lngthramcs := ramc2s - ramc1s;
    lngthramcm := ramc2m - ramc1m;
    lngthramch := (ramc2h - ramc1h)+24;
    part1 := (((lngthramcs/60)+lngthramcm)/60)+lngthramch;
    writeln('Enter Right Ascension of transiting Sun in format ddd mm.');
    writeln('Use a space between degrees and minutes. No symbols are necessary.');
    readln(ratsnd, ratsnm);
    writeln;
    partb := (ratsnm/60)+ratsnd;
    if partb < parta then
       begin
            partb := partb + 360;
       end;
    partc := partb-parta;
    partd := partc/360;
    secret := 0.9972620833;
    parte := part1*partd;
    partg := parte*secret;
    addh := trunc(partg);
    gm := frac(partg);
    addm := trunc(gm*60);
    gs := frac(gm*60);
    adds := trunc(gs*60);
    ps := adds+sr1s;
    pm := addm+sr1m;
    ph := addh+sr1h;
    a := (ph>=24) and (ph<=48);
    a1 := (ph>=24) and (ph>=48);
       if ps>=60 then
          begin
               ps :=ps-60;
               pm :=pm+1;
          end;
              if pm>=60 then
                 begin
                      pm :=pm-60;
                      ph :=ph+1;
                 end;
              if PH>=48 then
                       begin
                            ph := ph-48;
                            sr1dte := sr1dte+2;
                       end;
                             if ph>=24 then
                                    begin
                                         ph := ph-24;
                                         sr1dte :=sr1dte+1;
                                    end;
                                        (*if ph>48 then
                                                     begin
                                                          ph := ph-48;
                                                          sr1dte := 2+sr1dte;
                                                     end;*)
         if sr2dte = sr1dte then
            begin;
                  sr1mnth := sr1mnth
            end;
         if sr2dte < sr1dte then
            begin;
                  case sr1mnth of
                  1,3,5,7,8,10,12 :
                               begin;
                               if sr1dte >= 32 then
                               sr1dte := sr1dte-31;
                               if sr1dte >= 32 then
                               sr1mnth := sr1mnth+1;
                               end;
                  4,6,9,11 :
                             begin;
                             if sr1dte = 31 then
                             sr1dte := sr1dte-30;
                             if sr1dte = 31 then
                             sr1mnth := sr1mnth+1;
                             end;
                  2 :
                     begin;
                     if (sr1yr mod 4 = 0) then
                     if sr1dte = 30 then
                     begin
                     sr1dte := sr1dte-29;
                     end
              else
                 sr1dte := sr1dte-28;
               (*  sr1mnth := sr1mnth+1;CHANGED 1-13*)
              end;
           end;
           end;
    writeln('A CHART DONE FOR THIS DATE AND TIME WILL BE THE PPS.');
    writeln;
    writeln('Date and time of PPS = ',sr1mnth,'/',sr1dte,'/',sr1yr,' @ ',
    ph,':',pm,':',ps);
    ramh := trunc(parte);
    ramf := frac(parte);
    ramm := trunc(ramf*60);
    ramf1 := frac(ramf*60);
    rams := trunc(ramf1*60);
    prams := rams+ramc1s;
    pramm := ramm+ramc1m;
    pramh := ramh+ramc1h;
       if prams>=60 then
          begin
               prams :=prams-60;
               pramm :=pramm+1;
          end;
              if pramm>=60 then
                 begin
                      pramm :=pramm-60;
                      pramh :=pramh+1;
                 end;
                  if pramh>=48 then
                        begin
                             pramh := pramh-48;
                        end;
                         if pramh>=24 then
                            begin
                                 pramh := pramh-24;
                            end;
    pssrramc := ((((prams/60)+pramm)/60)+pramh)*15;
    pssrd := trunc(pssrramc);
    work := frac(pssrramc);
    pssrm := trunc(work*60);
    write('LST of PPS is ',pramh,':',pramm,':',prams);
    writeln('  PPS LST in Degrees and Minutes is ',pssrd,' ',pssrm);
    writeln;
    writeln('COMPUTATION OF PRECISION PROGRESSED SOLAR RETURN IS FINISHED.');
    writeln;
    writeln;
    writeln('TO COMPUTE QUOTIDIAN PROGRESSED SOLAR RETURN:');
    writeln;
    writeln('Enter date of Solar Return before event in format mm dd yyy.');
    writeln('Use a space between the month and date and between date and year.');
    readln(qpsr1mnth,qpsr1dte,qpsr1yr);
    writeln;
    partq1 := partc/15;
    partq2 := part1*partq1;
    partq3 := partq1*secret;
    addqh := trunc(partq3);
    qm := frac(partq3);
    addqm := trunc(qm*60);
    qs := frac(qm*60);
    addqs := trunc(qs*60);
    pqs := addqs+sr1s;
    pqm := addqm+sr1m;
    pqh := addqh+sr1h;
    b := (pqh>=24) and (pqh<=48);
    b1 := (pqh>=24) and (pqh>=48);
       if pqs>=60 then
          begin
               pqs :=pqs-60;
               pqm :=pqm+1;
          end;
              if pqm>=60 then
                 begin
                      pqm :=pqm-60;
                      pqh :=pqh+1;
                 end;
                  if pqh<=24 then
                     begin
                          qpsr1dte :=qpsr1dte;
                     end;
                     if b1 then
                        begin
                             pqh := pqh-48;
                             qpsr1dte := qpsr1dte+2;
                        end;
                     IF PQH>=24 THEN (*if b then*CHANGED 1-13*)
                        begin
                             pqh := pqh-24;
                             qpsr1dte := qpsr1dte+1;
                        end;
                     if pqh>=48 then
                        begin
                             pqh := pqh-48;
                             qpsr1dte := 2+qpsr1dte;
                        end;
         if sr2dte < sr1dte then
         begin
            case qpsr1mnth of
            1,3,5,7,8,10,12 :
                               begin;
                               if qpsr1dte = 32 then
                               qpsr1dte := qpsr1dte-31;
                               if qpsr1dte = 32 then
                               qpsr1mnth := qpsr1mnth+1;
                               end;
            4,6,9,11 :
                     begin;
                     if qpsr1dte = 31 then
                     qpsr1dte := qpsr1dte-30;
                     if qpsr1dte = 31 then
                     qpsr1mnth := qpsr1mnth+1;
                     end;
            2 :
              begin;
              if (qpsr1yr mod 4 = 0) then
                 if qpsr1dte = 30 then
                 begin
                 qpsr1dte := qpsr1dte-29;
                 end
              else
                 qpsr1dte := qpsr1dte-28;
                (* qpsr1mnth := qpsr1mnth+1;CHANGED 1-13*)
              end;
           end;
           end;
    writeln('A CHART DONE FOR THIS DATE AND TIME WILL BE THE QPS.');
    writeln;
    writeln('Date and time of QPS is ',qpsr1mnth,'/',qpsr1dte,'/',qpsr1yr,' @ ',pqh,':',
    pqm,':',pqs);
    qramh := trunc(partq1);
    qramf := frac(partq1);
    qramm := trunc(qramf*60);
    qramf1 := frac(qramf*60);
    qrams := trunc(qramf1*60);
    qprams := qrams+ramc1s;
    qpramm := qramm+ramc1m;
    qpramh := qramh+ramc1h;
       if qprams>=60 then
          begin
               qprams :=qprams-60;
               qpramm :=qpramm+1;
          end;
              if qpramm>=60 then
                 begin
                      qpramm :=qpramm-60;
                      qpramh :=qpramh+1;
                 end;
                  if qpramh>=48 then
                        begin
                             qpramh := qpramh-48;
                        end;
                         if qpramh>=24 then
                            begin
                                 qpramh := qpramh-24;
                            end;
    qramc := ((((qprams/60)+qpramm)/60)+qpramh)*15;
    qd := trunc(qramc);
    qwork := frac(qramc);
    qpm := trunc(qwork*60);
    write('LST of QPS is ',qpramh,':',qpramm,':',qprams);
    writeln('  QPS LST in Degrees and Minutes is ',qd,' ',qpm);
    writeln;
    writeln('COMPUTATION OF THE QUOTIDIAN PROGRESSED SOLAR RETURN IS FINISHED.');
    writeln('To run again press F3.');
    writeln;
    writeln('Copyright 1993-2001 by Robert Nicewander');
end.