A Library of LarKen Procedures and Functions in HiSoft PASCAL for Sequential File Handling

This HiSoft PASCAL source code provides the procedures and functions required for reading and writing sequential files to a LarKen DOS formatted diskette.

Program LkDOSLib;
A Library of LkDOS File Procedures and Functions
OpenFile- Open For Sequential Read
RdChar - Read 1 Char From File
Eof- True If Last Char Has Been Read
CloseFile - Closes Buffer, Frees DOS Commands
GoToDrive - Select Drive 0 or 1
Catalog - Simple Cat List
History:
Written by Larry Kenny
Navan, Ontario, Canada, 1989
VAR C : CHAR;
A : INTEGER;
FLAG : BOOLEAN;
FUNCTION Eof : BOOLEAN;
BEGIN
INLINE(#CD,#62,#00,#3A,#0F,#20,#FE,#40,
#28,#04,#3E,#FF,#18,#01,#AF,#DD,#77,#02,
#CD,#BA,#00);
END;
PROCEDURE Catalog;
BEGIN
INLINE(#F3,#CD,#62,#00,#AF,#32,#1D,#20
,#CD,#7E,#00,#CD,#7B,#00,#21,#88
,#20,#3E,#0D,#D7,#06,#03,#23,#7E
,#FE,#FA,#28,#20,#FE,#FF,#20,#F6
,#23,#7E,#FE,#FE,#28,#F0,#7E,#FE
,#FD,#28,#06,#E5,#D7,#E1,#23,#18
,#F5,#05,#28,#DD,#3E,#20,#D7,#3E
,#20,#D7,#18,#DA,#CD,#BA,#00,#00);
WRITELN;
END;
PROCEDURE GoToDrive(DV:INTEGER);
BEGIN
IF (DV=0) OR (DV=1) THEN
BEGIN
DV:=(DV+1)*2;
POKE(23728,CHR(DV));
INLINE(#CD,#62,#00,#3A,#B0,#5C,
#32,#03,#20,#CD,#BA,#00);
END
ELSE WRITELN('NON-EXISTANT DRIVE');
END;
PROCEDURE OpenFile;
BEGIN
WRITE('ENTER FILE TO OPEN ');
READLN;
INLINE(#CD,#62,#00,#21,#0F,#77,#11,#22,
#20,#06,#0A,#7E,#FE,#20,#30,#02,
#3E,#20,#12,#23,#13,#10,#F4,#3E,
#00,#32,#B0,#5C,#CD,#84,#00,#3A,
#20,#20,#FE,#0A,#28,#2B,#CD,#87,
#00,#21,#44,#20,#22,#2C,#20,#2A,
#2C,#20,#23,#22,#2C,#20,#7E,#FE,
#F9,#28,#19,#32,#1D,#20,#CD,#7E,
#00,#CD,#7B,#00,#21,#88,#20,#22,
#7C,#20,#3E,#40,#32,#0F,#20,#18,
#03,#32,#B0,#5C,#CD,#BA,#00,#00);
IF PEEK(23728,CHAR)=CHR(10) THEN
WRITELN('FILE NOT FOUND');
END;
PROCEDURE RdChar(VAR CH:CHAR);
BEGIN
INLINE(#16,#05,#CD,#6A,#00,#DD,#6E,#02,
#DD,#66,#03,#77);
END;
PROCEDURE CloseFile;
BEGIN
INLINE(#CD,#62,#00,#AF,#32,#0F,#20,#CD,#BA,#00);
END;
BEGIN {Mainline program and Demonstration}
GoToDrive(0);
Catalog;
OpenFile;
REPEAT
BEGIN
RdChar(C);
WRITE(C);
END;
UNTIL Eof;
CloseFile;
END.