Pascal

From Ninerpedia
Revision as of 10:43, 15 October 2014 by Stephen Shaw (talk | contribs) (Add sample USCD Pascal code (thought to work on the TI))
Jump to navigation Jump to search

UCSD Pascal System

P-Code welcome screen, booted with Editor/Filer disk

File doesn't exist

PASCAL NOTE: Guy Stefan-Romano, 99ers Users Group. Sept 1984:

'FILE DOESN'T EXIST" after adding a UNIT to SYSTEM.LIBRARY:

In most USCD Pascals. the system is not provided with a SYSTEM.LIBRARY. TI placed parts of Pascal that would normally reside on disk/ram into chips on the card, to allow our tiny machine to run Pascal. TI also provided a SYSTEM.LIBRARY to allow use of sound, graphics. speech etc.

Because installation of a new UNIT into a SYSTEM.LIBRARY requires that a file be open while data is manipulated, the existing SYSTEM.LIBRARY data is quite vulnerable. TI added protection.

You need to call a temporary File -say USER.LIB. transfer all UNITS in SYSTEM.LIBRARY to USER.LIB, then add your new UNITS to USER.LIB and IF all goes well, rename the USER.LIB file SYSTEM.LIBRARY


What is P-Code?

P-Code can be thought of as a universal assembly type language. P-Code was developed to be transportable to different platforms for execution. The TI-99/4A supports P-Code with the use of the P-Code card. Some other platforms that support P-Code are: Z80, Motorola 6800/68000, Intel 8086/8088 and many others.

A sample of USCD Pascal coding

This program will backup any disk using sector I/O; both 1 and multiple drives and single/double sided. Written in UCSD Pascal for the TI 99/4A.

{$L PRINTER: } 
program fastback; 
buffer:array[1..5120] of integer; 
inunit,outunit:integer; 
blkbase,blklimit:integer; 
ch:string[9]; 
procedure getfrom; 
begin 
inunit:=0; 
while (inunit,.4) and (inunit,.<>5) 
and (inunit<>9) do 
begin 
write('Enter Source Drive # (4,5,9) '?');
readln(inunit) 
end; 
blkbase:=0; 
while (blkbase<>180) and 
(blkbase <> 360) do 
begin 
write('# blocks to copy (180/360) ?') 
readln(blkbase) 
end; 
blklimit:=(blkbase div 10) - 1; 
end; 
procedure getto; 
begin 
outunit:=0; 
while (outunit<>4) and 
(outunit<>5) and (outunit<>9) do 
begin 
write('Enter Copy Drive # (4,5,9) ?'); 
readln(outunit) 
end
end; 
beqin 
writeln('FASTBACK [V1,0]'); 
qetfrom; 
getto; 
writeln('insert disks-- to start'); 
readln(ch); 
for blkbase:=0 to blklimit do 
begin 
if inunit=outunit then 
beqin 
write( ' Insert MASTER disk--press 
  when ready'); 
readln(ch) 
end;
unitread(inunit,buffer,5120,blkbase*10); 
if inunit=outunit then 
begin 
write('Insert COPY disk--Press 
  when ready'); 
readln(ch) 
end;
unitwrite(outunit,buffer,5120,blkbase*10) 
end; 
write1('Copy Complete.') 
end.


Turbo Pasc'99

add text