|
|
DataMuseum.dkPresents historical artifacts from the history of: DANOSI |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DANOSI Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - download
Length: 8489 (0x2129)
Types: TextFile
Names: »RTP86.PAS«
└─⟦4f587ad96⟧ Bits:30010518 DVBS1.SW2114.src.2.7-1 SW2114 1/4 Real Time Pascal 2.7 92.06.16
└─⟦this⟧ »RTP\RTP86.PAS«
└─⟦a2a9e188c⟧ Bits:30010526 DVBS1.SW2114.src.2.6-4 RTP Compiler Source SW2104+SW2114 Disk 1 92.02.03 HEJ HHA
└─⟦this⟧ »RTP\RTP86.PAS«
└─⟦fd2665794⟧ Bits:30010523 DVBS1.SW2114.src.2.6-1 RTP compiler source SW2104+SW2114 Disk#1 30/1-92 HHA
└─⟦this⟧ »RTP\RTP86.PAS«
(*$M 12000,1000,600000*)\r
program rtp;\r
{$F+}\r
(***********************************************************************)\r
(* version date author changes *)\r
(* 3.0 89.04.01 hha first rel in turbo *)\r
(* 3.1 89.06.14 hha open files as read only *)\r
(* 4.0 89.08.01 hha common lang. *)\r
(* ------------------------------------------------------------------- *)\r
(* 2.5 91.03.26 ebk Newid for Transputers changed *)\r
(* from T414 to T414,T425,T800 *)\r
(* Codeoutputfile has extension TAH *)\r
(* 2.6 91.12.01 hha Error in pass2 in connection with forward*)\r
(* and local reference *)\r
(* Error in the codegeneration for target = *)\r
(* RC3502 when using empty case statement *)\r
(* Error in the linetable when more then one*)\r
(* routine (target = rc3502) *)\r
(* dopevector for alfa only dump when used *)\r
(* as open familiy type *)\r
(* Error in the codegeneration for target = *)\r
(* rc5000 when using packed fields as value *)\r
(* parameter *)\r
(* New switches and new values for switches *)\r
(***********************************************************************)\r
\r
uses overlay, pscplm, files, mpaunit, rtp86mpa, rtp86p0, rtp86p1\r
,rtp86p2,rtp86p3\r
{$IFNDEF NOPASS4}\r
,rtp86p4\r
{$IFNDEF RTP86}\r
,rtp35p4,rtp50p4\r
{$ENDIF}\r
{$ENDIF}\r
{$IFDEF P4_3502}\r
,rtp35p4\r
{$ENDIF}\r
,list;\r
{$O rtp86p0}\r
{$O rtp86p1}\r
{$O rtp86p2}\r
{$O rtp86p3}\r
{$O list}\r
\r
{$O p1code}\r
{$O sthp2}\r
{$O sthp1}\r
{$O p2code}\r
\r
{$IFDEF NOPASS4}\r
{$O vmmunit}\r
{$O nthunit}\r
{$O sthint}\r
{$O sthcom}\r
{$O mpaunit}\r
{$O rtp86mpa}\r
{$O rtp86rmx}\r
{$O files}\r
{$O vmmdump}\r
\r
{$ENDIF}\r
(**)\r
{$O sthp34}\r
{$O rule066}\r
{$O rule010}\r
{$O rule018}\r
{$O rule004}\r
{$O rule005}\r
{$O rule008}\r
{$O rule015}\r
{$O rule016}\r
{$O rule037}\r
{$O rule077}\r
{$O rule078}\r
{$O p3rw}\r
{$O p3addr}\r
{$O p3math}\r
\r
{$IFNDEF NOPASS4}\r
{$O rtp86p4}\r
{$O p4code}\r
{$O p4evalst}\r
{$O p4}\r
{$O p486bool}\r
{$O p4regadm}\r
{$O p486stat}\r
{$O p4estopr}\r
\r
{$IFNDEF RTP86}\r
{$O rtp50p4}\r
{$O p450code}\r
{$O p450bool}\r
{$O p450stat}\r
{$O p450eopr}\r
\r
{$O rtp35p4}\r
{$O p435bool}\r
{$O p435eopr}\r
{$O p435stat}\r
{$O p435code}\r
{$ENDIF}\r
{$ENDIF}\r
\r
{$IFDEF P4_3502}\r
{$O p4evalst}\r
{$O p435bool}\r
{$O p435eopr}\r
{$O rtp35p4}\r
{$O p435stat}\r
{$O p435code}\r
{$ENDIF}\r
\r
\r
\r
procedure testmempool(testwh: boolean);\r
begin\r
writeln;\r
writeln(' Memory: ', memavail, ' Max: ', maxavail);\r
writeln;\r
end; (** testmempool **)\r
VAR exitsave : pointer;\r
procedure myexit;\r
begin\r
\r
exitproc := exitsave;\r
if exitcode > 1 then\r
fatal_error(systemq,exitcode);\r
\r
\r
end;\r
\r
\r
begin (*main program *)\r
\r
exitsave := exitproc;\r
exitproc := @ myexit;\r
startmemavail := memavail;\r
filemode := 0;\r
init_files;\r
\r
(*** initialize versions number **)\r
versionsid := 'REL 2.6 ';\r
(*#BEGINTEST\r
versionsid := 'REL 3.1s';\r
(*ENDTEST#*)\r
{$IFDEF rtp86}\r
writeln(' Real Time Pascal-86 DOS, ',versionsid);\r
{$ELSE}\r
writeln(' Real Time Pascal, ',versionsid);\r
{$ENDIF}\r
(*** INITIALIZATION OF GLOBAL OPTIONS ***)\r
active_module := pass1; (*option start pass1*)\r
stop_module := pass4; (*option stop pass4 *)\r
sourcenumber := 0; (* no soucefile read yet *)\r
linenumber := 0;\r
elementnumber := noelement;\r
elementspix := anonymousspix;\r
test_on_co := false;\r
make_segmentation := false;\r
last_segment:= 1;\r
segment_info[1].spix:=0;\r
segment_info[1].list:=nil;\r
segment_info[1].no_of_symbol:=0;\r
make_code:=false;\r
make_set:=false;\r
mpatest := false;\r
open_errtxts := false;\r
open_parsetables := false;\r
open_openroutine := false;\r
open_comm := false;\r
open_listfile := false;\r
open_tbinfile := false;\r
open_codelist := false;\r
open_tsymfile := false;\r
open_errorfile := false;\r
fatal := false;\r
error := false;\r
warn := false;\r
firstcall_closep := false;\r
call_listh := false;\r
exit_before:=false;\r
testmemwholes := false;\r
timetest := true;\r
\r
switchcall:=nil;\r
\r
open_errortextfile;\r
\r
\r
\r
write('PARSE');\r
break_line:=false;\r
\r
\r
last_time:=0;\r
time_used:= find_time_used; (* init last_time and update current_time *)\r
starttimelow:= 0; (*current_time.system_time.word1;*)\r
starttimehigh:=0; (*current_time.system_time.word2; *)\r
checktimelow:=0;\r
checktimehigh:=0;\r
\r
\r
(*load_overlay(pass0);\r
\r
!!! TURBO !!!\r
*)\r
rtp86pass0;\r
\r
firstcall_closep:=true;\r
if call_options.loadcode<=1 then\r
callparams[1].filename:=call_options.loadstr;\r
\r
switchcall:=switchstart;\r
switchpoint:=switchstart;\r
while switchpoint<>nil do\r
begin\r
switchpoint^.call_value:=switchpoint^.value;\r
switchpoint:=switchpoint^.next;\r
end;\r
\r
\r
open_workfiles;\r
\r
(*#BEGINTEST - ??? overlever switches PASS0 ??\r
if mpatest then\r
test_switches;\r
(*ENDTEST#*)\r
\r
if mempooltest then\r
testmempool(testmemwholes);\r
\r
\r
if active_module>pass1 then begin\r
if not break_line then write(', ');\r
call_options.listing:=1; (* no list *)\r
survival[co1]:=true;\r
if active_module>pass2 then begin\r
survival[co2]:=true;\r
if active_module>pass3 then survival[co3]:=true;\r
end;\r
end;\r
\r
while (active_module <= stop_module) and not error do\r
begin\r
\r
open_files(active_module);\r
(* !!! TURBO !!! load_overlay(active_module);*)\r
\r
if original_testvmm >= 0 then testvmm := 0 else testvmm:= -1;\r
teststh := false;\r
testvmmupdate := false;\r
teststhsearch:= false;\r
\r
sourcenumber := 0;\r
\r
errorno := 0;\r
error := false;\r
warningno := 0;\r
warn := false;\r
linenumber := 0;\r
elementnumber := noelement;\r
elementspix := anonymousspix;\r
\r
\r
case active_module of\r
\r
pass1: begin\r
\r
\r
if mempooltest then\r
testmempool(testmemwholes);\r
\r
if call_options.loadcode<=1 then\r
sourcenumber:=1; (* skip load environment *)\r
\r
call_listh:=true;\r
\r
rtp86pass1;\r
\r
if mempooltest then\r
testmempool(testmemwholes);\r
\r
if break_line then begin write('END PARSE'); break_line:=false; end;\r
write('(',errorno,'), ');\r
close(parsetables);\r
open_parsetables:= false;\r
end;\r
\r
pass2: begin\r
write('ANALYZE');\r
break_line:=false;\r
\r
if mempooltest then\r
testmempool(testmemwholes);\r
\r
if call_options.loadcode<=1 then\r
sourcenumber:=1; (* skip load environment *)\r
\r
rtp86pass2;\r
\r
if mempooltest then\r
testmempool(testmemwholes);\r
\r
if break_line then begin write('END ANALYZE'); break_line:=false; end;\r
write('(',errorno,'), ');\r
close(comm);\r
open_comm:= false;\r
end;\r
\r
pass3: begin\r
write('ALLOCATE');\r
break_line:=false;\r
\r
if mempooltest then\r
testmempool(testmemwholes);\r
rtp86pass3;\r
\r
if mempooltest then\r
testmempool(testmemwholes);\r
if break_line then begin write('END ALLOCATE'); break_line:=false; end;\r
write('(',errorno,'), ');\r
end;\r
\r
pass4: begin\r
write('OBJECT');\r
break_line:=false;\r
\r
if mempooltest then\r
testmempool(testmemwholes);\r
{$IFNDEF NOPASS4}\r
case computer of\r
RC5000 :\r
{$IFNDEF RTP86}\r
rtp50pass4\r
{$ENDIF}\r
;\r
RC3502 :\r
{$IFNDEF RTP86}\r
rtp35pass4\r
{$ENDIF}\r
;\r
else rtp86pass4;\r
end;\r
{$ENDIF}\r
{$IFDEF P4_3502}\r
rtp35pass4;\r
{$ENDIF}\r
\r
if mempooltest then\r
testmempool(testmemwholes);\r
if break_line then begin write('END OBJECT'); break_line:=false; end;\r
write('(',errorno,'), ');\r
\r
close(tbinfile);\r
open_tbinfile:= false;\r
if open_tsymfile then\r
begin\r
close(tsymfile);\r
open_tsymfile:=false;\r
end;\r
\r
end\r
\r
else (*otherwise*);\r
end;\r
if call_options.saveafter[active_module] then\r
save_specs( false );\r
\r
while switchstart<>switchcall do\r
begin\r
switchpoint:=switchstart;\r
switchstart:=switchstart^.next;\r
dispose(switchpoint);\r
end;\r
switchpoint:=switchstart;\r
while switchpoint<>nil do\r
begin\r
switchpoint^.value:=switchpoint^.call_value;\r
switchpoint:=switchpoint^.next;\r
end;\r
\r
if timetest then\r
begin\r
time_used := find_time_used;\r
writeln;\r
writeln(' pass',ord(active_module) : 1, ':',time_used : 6, ' sec.');\r
end;\r
\r
active_module :=succ( active_module);\r
end;\r
\r
\r
(*9999:*) if exit_before then halt(1) (* !!! TURBO !!! goto 8888 *)\r
else exit_before:=true;\r
\r
StartListhand;\r
\r
(*8888: ; (*** exit point in case of error in compilercall- ***)\r
\r
end\r
.\r
«eof»