home *** CD-ROM | disk | FTP | other *** search
- Program LUP;
- {[A+,T=3] Instructions to PasMat.}
-
- {$C- <--- These are to }
- {$W0 <--- optimize the }
- {$X+ <--- compiler. }
-
- {
- LUP (Library Utility in Pascal)
- 1/02/85
-
- The program help users use the following program, without, having
- to type the LONG commands associated with library files:
-
- DIR (SD 11.0) XMODEM L (XMDM 11.7)
- LTYPE (TYPEL 3.6) XMODEM LK (XMDM 11.7)
-
- It also, like LUX, allows you to get to another library file with
- the command LUP filename[.LBR]. But unlike LUX, you may NOT use
- wildcards when specifing a file name to TYPE, which is because of
- the LTYPE program which I'm using. If you'll notice, that all
- the above files, are (almost) a MUST for any RCP/M (or Z-NODE)
- type system, so the only extra file, would be LUP.COM. LUX, as I
- understand requires you to have a seperate file for all the command,
- PLUS LUX, and for a small system, thats a lot of space. Another
- advantage of LUP, over LUX, is that LUP doesn't require warm-booting
- (if you run TPFIX, see below), which (some people) say is bad for
- the drives (I'm not one of them, but it does speed things up a bit).
-
- This program requires ZCPR3, to run, because, it uses the command
- line. You should check to see where the location of your command
- line is, by using the Z3LOC.COM program, supplied with ZCPR3, and
- place that value at the constant variable CommandLineLocation.
-
- After you compile this program, I suggest that you use a program called
- TPFIX, to inhibit the program from warm-booting, in order to speed
- up the operations of this program.
-
- If you have any questions or comments, please feel free to call my
- RCP/M at (312) 386-9271.
-
- Thank you,
-
-
- Cyrus Patel
- SYSOP - The Master Silicone
- Version 1.1 (01/06/86)
- Added Wheel check and NULU support (Wheel set), changed
- to KMD for transfers, LDIR for faster DIR support, Q option
- for easier quit...
- Norman Beeler
- Sysop
- ZeeMachine
- 408-245-1420
-
- }
-
- Const
- Version = '1.0';
- CommandLineLocation = $FF00;
-
- Type
- String14 = String [14];
- String80 = String [80];
-
- Var
- CommandLine: String80;
- LBRName, FileName: String14;
- MemTop: Integer Absolute $6;
- Wheel: Byte Absolute $4B;
-
- Procedure Instructions;
-
- Begin
- WriteLn;
- Write('Usage: LUP Filename[.LBR]');
- Halt
- End;
-
-
- Procedure GetLBRName(Var LBRName: String14);
-
- Var
- InFile: File;
- Index: Integer;
- CommandLine: String14 Absolute $80;
-
- Begin
- If CommandLine = '' then
- Instructions
- else
- LBRName := Copy(CommandLine, 2, Length(CommandLine));
- If (LBRName <> '') and (Pos('.', LBRName) > 0) then
- LBRName := Copy(LBRName, 1, Pos('.', LBRName) - 1);
- If LBRName = '' then
- Instructions;
- For Index := 1 to Length(LBRName) do
- LBRName[Index] := UpCase(LBRName[Index]);
- LBRName := LBRName + '.LBR';
- Assign(InFile, LBRName);
- {$I-}
- Reset(InFile);
- If IOResult <> 0 then
- Begin
- WriteLn;
- WriteLn('File: ', LBRName, ' does not exist.');
- Close(InFile);
- Instructions
- End;
- Close(InFile);
- {$I+}
- WriteLn
- End;
-
-
- Procedure PutOnCommandLine(Line: String80);
-
- Var
- Index: Integer;
-
- Begin
- Line := Line + ';A0:LUP ' + LBRName;
- Mem[CommandLineLocation] := 4;
- Mem[CommandLineLocation + 1] := $FF;
- Mem[CommandLineLocation + 2] := $C8;
- Mem[CommandLineLocation + 3] := Length(Line);
- For Index := 1 to Length(Line) do
- Mem[CommandLineLocation + Index + 3] := Ord(Line[Index]);
- Mem[CommandLineLocation + Length(Line) + 4] := $00;
- Mem[CommandLineLocation + Length(Line) + 5] := $00
- End;
-
-
- Procedure Help;
-
- Begin
- WriteLn;
- WriteLn('': 22, 'LUP (Library Utility in Pascal)');
- WriteLn;
- WriteLn('': 16, ' BYE - Logoff computer.');
- WriteLn('': 16, ' DIR - Directory of library.');
- WriteLn('': 16, 'FILES - Get list of library files.');
- WriteLn('': 16, ' HELP - This list.');
- WriteLn('': 16, ' LUP - Get library of another file.');
- WriteLn('': 16, ' LUP Filename[.LBR]');
- WriteLn('': 16, ' Q - Exit LUP.');
- WriteLn('': 16, ' QUIT - Exit LUP.');
- WriteLn('': 16, ' S - Send file with KMD (128 byte block).');
- WriteLn('': 16, ' S Filename.typ');
- WriteLn('': 16, ' SEND - Send file with KMD (128 byte block).');
- WriteLn('': 16, ' Send Filename.typ');
- WriteLn('': 16, ' SK - Send file with KMD (1K byte block).');
- WriteLn('': 16, ' SK Filename.typ');
- WriteLn('': 16, 'SENDK - Send file with KMD (1K byte block).');
- WriteLn('': 16, ' SendK Filename.typ');
- WriteLn('': 16, ' TYPE - Type a file from library.');
- WriteLn('': 16, ' Type Filename.typ');
- If Wheel > 0 then
- Begin
- WriteLn('': 16, ' -L - Enter NULU Command mode and List files.');
- WriteLn('': 16, ' -F - Enter NULU Sweep mode.')
- End;
- WriteLn;
- CommandLine := ''
- End;
-
-
- Procedure GetCommand;
-
- Var
- Index: Integer;
-
- Begin
- Write('LUP: [' + LBRName + ']>');
- ReadLn(CommandLine);
- If Pos(' ', CommandLine) > 0 then
- Begin
- FileName := Copy(CommandLine, Pos(' ', CommandLine),
- Length(CommandLine));
- For Index := 1 to Length(FileName) do
- FileName[Index] := UpCase(FileName[Index]);
- CommandLine := Copy(CommandLine, 1, Pos(' ', CommandLine) - 1)
- End
- else
- FileName := '';
- For Index := 1 to Length(CommandLine) do
- CommandLine[Index] := UpCase(CommandLine[Index])
- End;
-
-
- Procedure ProcessCommand;
-
- Begin
- If CommandLine = 'BYE' then
- CommandLine := 'A0:BYE'
- else If CommandLine = 'DIR' then
- CommandLine := 'A0:LDIR ' + LBRName
- else If CommandLine = 'FILES' then
- CommandLine := 'A0:DIR *.LBR'
- else If (CommandLine = 'HELP') or (CommandLine = '?') then
- Help
- else If CommandLine = 'LUP' then
- CommandLine := 'A0:LUP' + FileName
- else If (CommandLine = 'QUIT') or (CommandLine = 'Q') then
- Halt
- else If (CommandLine = 'S') or (CommandLine = 'SEND') then
- CommandLine := 'A0:KMD L ' + LBRName + FileName
- else If (CommandLine = 'SK') or (CommandLine = 'SENDK') then
- CommandLine := 'A0:KMD LK ' + LBRName + FileName
- else If CommandLine = 'TYPE' then
- CommandLine := 'A0:TYPE ' + LBRName + FileName
- else If (CommandLine = '-F') and (Wheel > 0) then
- CommandLine := 'NULU ' + LBRName + ' -F '
- else If (CommandLine = '-L') and (Wheel > 0) then
- CommandLine := 'NULU ' + LBRName + ' -L '
- else If CommandLine <> '' then
- Begin
- WriteLn;
- CommandLine := '';
- WriteLn('Invalid command, type ? for help, QUIT to exit.');
- WriteLn
- End
- End;
-
- Begin
- StackPtr := MemTop - $826;
- RecurPtr := StackPtr - $400;
- HeapPtr := $300F;
- GetLBRName(LBRName);
- Repeat
- GetCommand;
- ProcessCommand
- Until CommandLine <> '';
- PutOnCommandLine(CommandLine)
- End.