Upload
Digital Research
BIN
MPM OPERATING SYSTEMS/MPM-86/MISC DRI DISKS/01/01.JPG
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
MPM OPERATING SYSTEMS/MPM-86/MISC DRI DISKS/01/01.TD0
Normal file
BIN
MPM OPERATING SYSTEMS/MPM-86/MISC DRI DISKS/02/02.JPG
Normal file
|
After Width: | Height: | Size: 19 KiB |
BIN
MPM OPERATING SYSTEMS/MPM-86/MISC DRI DISKS/02/02.TD0
Normal file
BIN
MPM OPERATING SYSTEMS/MPM-86/MISC DRI DISKS/03/03.JPG
Normal file
|
After Width: | Height: | Size: 7.7 KiB |
BIN
MPM OPERATING SYSTEMS/MPM-86/MISC DRI DISKS/03/03.TD0
Normal file
52
MPM OPERATING SYSTEMS/MPM-86/MISC DRI DISKS/03/CTYPE.H
Normal file
@@ -0,0 +1,52 @@
|
||||
|
||||
/****************************************************************************/
|
||||
/* */
|
||||
/* CTYPE */
|
||||
/* ----- */
|
||||
/* */
|
||||
/* CTYPE.H - macros to classify ASCII-coded integers by table lookup. */
|
||||
/* */
|
||||
/* */
|
||||
/* Note: Integer args are undefined for all int values > 127, */
|
||||
/* except for macro 'isascii()'. */
|
||||
/* Assumes: */
|
||||
/* User will link with standard library functions. */
|
||||
/* Compiler can handle declarator initializers and */
|
||||
/* '#defines' with parameters. */
|
||||
/* */
|
||||
/****************************************************************************/
|
||||
|
||||
/*
|
||||
* Bit patterns for character class DEFINEs
|
||||
*/
|
||||
#define __c 01
|
||||
#define __p 02
|
||||
#define __d 04
|
||||
#define __u 010
|
||||
#define __l 020
|
||||
#define __s 040
|
||||
#define __cs 041
|
||||
#define __ps 042
|
||||
|
||||
#ifndef CTYPE
|
||||
extern char __atab[];
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Character Class Testing and Conversion DEFINEs:
|
||||
*/
|
||||
#define isascii(ch) ((ch) < 0200)
|
||||
#define isalpha(ch) (__atab[ch] & (__u | __l))
|
||||
#define isupper(ch) (__atab[ch] & __u)
|
||||
#define islower(ch) (__atab[ch] & __l)
|
||||
#define isdigit(ch) (__atab[ch] & __d)
|
||||
#define isalnum(ch) (__atab[ch] & (__u | __l | __d))
|
||||
#define isspace(ch) (__atab[ch] & __s)
|
||||
#define ispunct(ch) (__atab[ch] & __p)
|
||||
#define isprint(ch) (__atab[ch] & (__u | __l | __d | __p))
|
||||
#define iscntrl(ch) (__atab[ch] & __c)
|
||||
|
||||
#define tolower(ch) (isupper(ch) ? (ch)-'A'+'a' : (ch))
|
||||
#define toupper(ch) (islower(ch) ? (ch)-'a'+'A' : (ch))
|
||||
#define toascii(ch) ((ch) & 0177)
|
||||
|
||||
BIN
MPM OPERATING SYSTEMS/MPM-86/MISC DRI DISKS/03/DRC.CMD
Normal file
121
MPM OPERATING SYSTEMS/MPM-86/MISC DRI DISKS/03/DRC.ERR
Normal file
@@ -0,0 +1,121 @@
|
||||
1 Out of memory. Allocate function returns NULL.
|
||||
2 Identifier not specified in type or storage class declaration.
|
||||
3 A public function definition is declared external.
|
||||
4 Parentheses () missing in function declaration.
|
||||
5 <identifier> ... not declared as a function.
|
||||
6 Two functions have the same name.
|
||||
7 Conflicting data type specified for a function.
|
||||
8 Data type not specified in variable declaration.
|
||||
9 Global variable declared with "register" storage class.
|
||||
10 Conflicting data type specified for a function.
|
||||
11 Conflicting storage class keywords in declaration.
|
||||
12 Conflicting data type keywords in declaration.
|
||||
13 Use the keywords "unsigned/long/short" with int only.
|
||||
14 Do not use the "unsigned long" type declaration.
|
||||
15 Conflicting type qualifiers "short/long" in declaration.
|
||||
16 Conflicting definitions for structure tag identifier.
|
||||
17 Identifier or left brace { missing in struct or union declaration.
|
||||
18 Storage class specified in struct or union declaration.
|
||||
19 Data type not specified in struct or union declaration.
|
||||
20 Use integer constants to define bit field width.
|
||||
21 Conflicting offsets or data type declared for <identifier>
|
||||
22 A comma or semicolon is missing.
|
||||
23 Internal compiler error.
|
||||
24 Do not use "static" or "extern" to declare parameters.
|
||||
25 Data type not specified in parameter declaration.
|
||||
26 Do not use abstract declarator in parameter declaration.
|
||||
27 <identifier> ... not specified as a parameter.
|
||||
28 <identifier> ... must be pointer or scalar.
|
||||
29 Identifier not specified in parameter declaration.
|
||||
30 A function body is specified as a parameter.
|
||||
31 Use integer constant expression to specify array bounds.
|
||||
32 <identifier> ... undefined for "goto" statement.
|
||||
33 WARNING: <identifier> is declared, but not referenced.
|
||||
34 <identifier> ... struct or union referenced before declaration.
|
||||
35 Cannot initialize a function.
|
||||
36 Do not initialize variables with "extern".
|
||||
37 Array dimensions are extended automatically.
|
||||
38 Switch expression cannot be floating-point.
|
||||
39 Cannot read switch statement. "case <const>" ignored.
|
||||
40 Constant in "case" construct cannot be floating-point.
|
||||
41 Cannot read switch statement. "default:" ignored.
|
||||
42 Break location undefined. No loop or switch.
|
||||
43 Continue location undefined. No loop or switch.
|
||||
44 Identifier not specified in "goto" statement.
|
||||
45 Same statement label used more than once.
|
||||
46 <identifier> ... defined more than once.
|
||||
47 <identifier> ... Undefined identifier.
|
||||
48 Unexpected end-of-file (EOF) on input file.
|
||||
49 Comma or semicolon is missing.
|
||||
50 Right brace } is missing.
|
||||
51 Left brace { is missing.
|
||||
52 Right parenthesis ) is missing.
|
||||
53 Right square bracket ] is missing in array declaration.
|
||||
54 Function parameters cannot have parameters.
|
||||
55 Right parenthesis ) is missing.
|
||||
56 Do not list parameters in the function declaration.
|
||||
57 Comma or semicolon is missing.
|
||||
58 Right brace } is missing.
|
||||
59 Comma or semicolon is missing.
|
||||
61 Too many initializers. Right brace } is missing.
|
||||
62 Left parenthesis ( is missing.
|
||||
63 Keyword "while" is missing in "do...while" construct.
|
||||
64 Colon is missing.
|
||||
65 Internal compiler error. Bad constant load.
|
||||
66 Internal compiler error. Unknown pointer size.
|
||||
67 Use operators ++ and -- on "int/char/long/short" only.
|
||||
68 MESSAGE SPACE RESERVED
|
||||
69 MESSAGE SPACE RESERVED
|
||||
70 MESSAGE SPACE RESERVED
|
||||
71 Cannot return certain types of expressions.
|
||||
72 Internal compiler error.
|
||||
73 Use constant expression to initialize static and extern variables.
|
||||
74 MESSAGE SPACE RESERVED
|
||||
75 MESSAGE SPACE RESERVED
|
||||
76 Variable is not large enough to hold a pointer.
|
||||
77 Variable too large to hold initial value.
|
||||
78 Offsets into other segments not implemented.
|
||||
79 Use operators + - ++ -- with pointers only.
|
||||
80 MESSAGE SPACE RESERVED
|
||||
81 Invalid parameter expression.
|
||||
82 MESSAGE SPACE RESERVED
|
||||
83 WARNING: Indirection for non-pointers is not portable.
|
||||
84 Cannot add arrays or structures. Do not use + operator with arrays.
|
||||
85 MESSAGE SPACE RESERVED
|
||||
86 Use only += or -= operators wirh pointers.
|
||||
87 Colon is missing.
|
||||
88 Cannot add pointers. Do not use + operator with pointers.
|
||||
89 Incorrect expression syntax.
|
||||
90 Comma or right parenthesis expected in parameter list.
|
||||
91 Expression is missing before [ operator.
|
||||
92 An lvalue is required before [ operator.
|
||||
93 Array or pointer required on left of [ operator.
|
||||
94 Array or pointer required. Cannot subscript.
|
||||
95 WARNING: Subscript is truncated to short int.
|
||||
96 Right square bracket ] is missing.
|
||||
97 Identifier missing on right of . operator.
|
||||
98 Expression missing on left of . operator.
|
||||
99 Left operand for . operator must be a struct.
|
||||
100 WARNING: Non-local structure field assumed.
|
||||
101 Identifier missing on right of -> operator.
|
||||
102 Expression missing on left of -> operator.
|
||||
103 Left operand of -> operator must be a pointer.
|
||||
104 WARNING: Non-local structure field assumed.
|
||||
105 Division by the constant 0.
|
||||
106 Operand types do not match. Cannot coerce to compatible types.
|
||||
107 Cannot coerce operand type to double.
|
||||
108 Cannot coerce operand type to long.
|
||||
109 Cannot coerce operand type to unsigned.
|
||||
110 WARNING: Indirection for non-pointers is not portable.
|
||||
111 WARNING: & operator (address of) used redundantly.
|
||||
112 The & operator (address of) requires an lvalue.
|
||||
113 An lvalue is required with ++ or -- operator.
|
||||
114 Incorrect operand type for ++ or -- operator.
|
||||
115 Data type not specified for expression after sizeof operator.
|
||||
116 An lvalue is required with ++ or -- operator.
|
||||
117 Incorrect operand type for ++ or -- operator.
|
||||
118 MESSAGE SPACE RESERVED
|
||||
119 Output file write error. Disk is probably full.
|
||||
120 WARNING: Not enough registers available for variables.
|
||||
121 WARNING: Additional registers available for variables.
|
||||
|
||||
BIN
MPM OPERATING SYSTEMS/MPM-86/MISC DRI DISKS/03/DRC860.CMD
Normal file
BIN
MPM OPERATING SYSTEMS/MPM-86/MISC DRI DISKS/03/DRC861.CMD
Normal file
BIN
MPM OPERATING SYSTEMS/MPM-86/MISC DRI DISKS/03/DRC862.CMD
Normal file
BIN
MPM OPERATING SYSTEMS/MPM-86/MISC DRI DISKS/03/DRCRPP.CMD
Normal file
49
MPM OPERATING SYSTEMS/MPM-86/MISC DRI DISKS/03/ERRNO.H
Normal file
@@ -0,0 +1,49 @@
|
||||
|
||||
/*
|
||||
* errno.h - error codes
|
||||
*/
|
||||
|
||||
#define EPERM 1
|
||||
#define ENOENT 2
|
||||
#define ESRCH 3
|
||||
#define EINTR 4
|
||||
#define EIO 5
|
||||
#define ENXIO 6
|
||||
#define E2BIG 7
|
||||
#define ENOEXEC 8
|
||||
#define EBADF 9
|
||||
#define ECHILD 10
|
||||
#define EAGAIN 11
|
||||
#define ENOMEM 12
|
||||
#define EACCES 13
|
||||
#define EFAULT 14
|
||||
#define ENOTBLK 15
|
||||
#define EBUSY 16
|
||||
#define EEXIST 17
|
||||
#define EXDEV 18
|
||||
#define ENODEV 19
|
||||
#define ENOTDIR 20
|
||||
#define EISDIR 21
|
||||
#define EINVAL 22
|
||||
#define ENFILE 23
|
||||
#define EMFILE 24
|
||||
#define ENOTTY 25
|
||||
#define ETXTBSY 26
|
||||
#define EFBIG 27
|
||||
#define ENOSPC 28
|
||||
#define ESPIPE 29
|
||||
#define EROFS 30
|
||||
#define EMLINK 31
|
||||
#define EPIPE 32
|
||||
|
||||
/* math software */
|
||||
#define EDOM 33
|
||||
#define ERANGE 34
|
||||
|
||||
/* hereafter is available to CP/M specials */
|
||||
#define ENODSPC 35
|
||||
|
||||
/****** end of errno.h ******/
|
||||
|
||||
|
||||
|
||||
52
MPM OPERATING SYSTEMS/MPM-86/MISC DRI DISKS/03/PORTAB.H
Normal file
@@ -0,0 +1,52 @@
|
||||
|
||||
/****************************************************************************
|
||||
*
|
||||
* C P / M C R U N T I M E L I B H E A D E R F I L E
|
||||
* -------------------------------------------------------------
|
||||
* Copyright 1982 by Digital Research Inc. All rights reserved.
|
||||
*
|
||||
* This is an include file for assisting the user to write portable
|
||||
* programs for C.
|
||||
*
|
||||
****************************************************************************/
|
||||
#define UCHARA 1 /* if char is unsigned */
|
||||
/*
|
||||
* Standard type definitions
|
||||
*/
|
||||
#define BYTE char /* Signed byte */
|
||||
#define BOOLEAN int /* 2 valued (true/false) */
|
||||
#define WORD int /* Signed word (16 bits) */
|
||||
#define UWORD unsigned int /* unsigned word */
|
||||
|
||||
#define LONG long /* signed long (32 bits) */
|
||||
#define ULONG long /* Unsigned long */
|
||||
|
||||
#define REG register /* register variable */
|
||||
#define LOCAL auto /* Local var on 68000 */
|
||||
#define EXTERN extern /* External variable */
|
||||
#define MLOCAL static /* Local to module */
|
||||
#define GLOBAL /**/ /* Global variable */
|
||||
#define VOID /**/ /* Void function return */
|
||||
#define DEFAULT int /* Default size */
|
||||
|
||||
#ifdef UCHARA
|
||||
#define UBYTE char /* Unsigned byte */
|
||||
#else
|
||||
#define UBYTE unsigned char /* Unsigned byte */
|
||||
#endif
|
||||
|
||||
/****************************************************************************/
|
||||
/* Miscellaneous Definitions: */
|
||||
/****************************************************************************/
|
||||
#define FAILURE (-1) /* Function failure return val */
|
||||
#define SUCCESS (0) /* Function success return val */
|
||||
#define YES 1 /* "TRUE" */
|
||||
#define NO 0 /* "FALSE" */
|
||||
#define FOREVER for(;;) /* Infinite loop declaration */
|
||||
#define NULL 0 /* Null pointer value */
|
||||
#define NULLPTR (char *) 0 /* */
|
||||
#define EOF (-1) /* EOF Value */
|
||||
#define TRUE (1) /* Function TRUE value */
|
||||
#define FALSE (0) /* Function FALSE value */
|
||||
|
||||
|
||||
BIN
MPM OPERATING SYSTEMS/MPM-86/MISC DRI DISKS/03/R.CMD
Normal file
978
MPM OPERATING SYSTEMS/MPM-86/MISC DRI DISKS/03/READ.ME
Normal file
@@ -0,0 +1,978 @@
|
||||
----------------------------------------------------------------
|
||||
| |
|
||||
| |
|
||||
| |
|
||||
| |
|
||||
| ================================================ |
|
||||
| | | |
|
||||
| | | |
|
||||
| | ***** Digital Research C ***** | |
|
||||
| | | |
|
||||
| | for the CP/M-86 Family | |
|
||||
| | of Operating Systems | |
|
||||
| | | |
|
||||
| | --------------- | |
|
||||
| | | |
|
||||
| | READ.ME File Notes | |
|
||||
| | | |
|
||||
| | - June 1983 - | |
|
||||
| | | |
|
||||
| | Digital Research Inc. | |
|
||||
| | P.O. Box 579 | |
|
||||
| | Pacific Grove, CA 93950 | |
|
||||
| | | |
|
||||
| ================================================ |
|
||||
| |
|
||||
| |
|
||||
| |
|
||||
| This file presents enhancements and modifications |
|
||||
| made to Digital Research C Language software and |
|
||||
| documentation. Changes described in this file |
|
||||
| apply to Digital Research C compiler software |
|
||||
| Version 1.0 and the "C Language Programmer's Guide |
|
||||
| for the CP/M-86 Family of Operating Systems" |
|
||||
| First Edition: April 1983. |
|
||||
| |
|
||||
| You can print the information in this file on your |
|
||||
| line printer using 8 by 11 inch paper with the |
|
||||
| printer set to 6 lines per inch. You can trim the |
|
||||
| pages along the dotted lines and place the pages |
|
||||
| in your product documentation binder. |
|
||||
| |
|
||||
| |
|
||||
| |
|
||||
| |
|
||||
| |
|
||||
| |
|
||||
| |
|
||||
| |
|
||||
| |
|
||||
----------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
----------------------------------------------------------------
|
||||
| Digital Research C READ.ME File Notes June 1983 |
|
||||
| |
|
||||
| |
|
||||
| |
|
||||
| Table of Contents |
|
||||
| ================================================ |
|
||||
| |
|
||||
| SOFTWARE NOTES . . . . . . . . . . . . . . . . 1 |
|
||||
| |
|
||||
| |
|
||||
| DOCUMENTATION UPDATES . . . . . . . . . . . . 2 |
|
||||
| |
|
||||
| Creating a C Work Disk . . . . . . . . . . 2 |
|
||||
| Option Switch -a . . . . . . . . . . . . . 3 |
|
||||
| Function Directory . . . . . . . . . . . . 5 |
|
||||
| execl Function . . . . . . . . . . . . . . 7 |
|
||||
| setjmp and longjmp Functions . . . . . . . 8 |
|
||||
| toascii, tolower, toupper Functions . . . 9 |
|
||||
| Start-up Routines . . . . . . . . . . . .10 |
|
||||
| Miscellaneous Notes . . . . . . . . . . .13 |
|
||||
| |
|
||||
| ================================================ |
|
||||
| |
|
||||
| |
|
||||
| |
|
||||
| |
|
||||
| |
|
||||
| |
|
||||
| |
|
||||
| |
|
||||
| |
|
||||
| |
|
||||
| |
|
||||
| |
|
||||
| |
|
||||
| |
|
||||
| |
|
||||
| |
|
||||
| |
|
||||
| |
|
||||
| |
|
||||
| |
|
||||
| |
|
||||
| |
|
||||
| |
|
||||
| |
|
||||
| |
|
||||
| i. |
|
||||
| |
|
||||
----------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
----------------------------------------------------------------
|
||||
| Digital Research C READ.ME File Notes Software Notes |
|
||||
| |
|
||||
| |
|
||||
| |
|
||||
| Software Notes |
|
||||
| ================================================ |
|
||||
| |
|
||||
| * Version 1.0 of the C compiler requires 112K of |
|
||||
| random access memory for execution in addition to |
|
||||
| the operating system. Different implementations |
|
||||
| of the operating system vary in size. |
|
||||
| |
|
||||
| * Version 1.02 of the LINK86 linkage editor which is |
|
||||
| supplied as part of the Digital Research C package |
|
||||
| is required for use with the C compiler. Do not |
|
||||
| use LINK86 versions 1.0, 1.01, or 1.0A supplied |
|
||||
| with earlier versions of Digital Research software |
|
||||
| products. |
|
||||
| |
|
||||
| * Digital Research C does not run under the IBM |
|
||||
| proprietary version of CP/M-86 due to operating |
|
||||
| system updates they do not provide. DRI offers an |
|
||||
| expanded, low-priced version of CP/M-86 for the |
|
||||
| IBM Personal Computer. |
|
||||
| |
|
||||
| * The sample start-up routine, STARTUP.A86, contains |
|
||||
| logic to set up the CP/M-86 operating environment |
|
||||
| for program execution under any of the four memory |
|
||||
| models: small, medium, compact, and big. Set the |
|
||||
| appropriate conditional assembly switch at the |
|
||||
| beginning of STARTUP.A86 before assembling to |
|
||||
| select the desired model. |
|
||||
| |
|
||||
| * The execl function only works under the small and |
|
||||
| and medium memory models. |
|
||||
| |
|
||||
| |
|
||||
| |
|
||||
| |
|
||||
| |
|
||||
| |
|
||||
| |
|
||||
| |
|
||||
| |
|
||||
| |
|
||||
| |
|
||||
| |
|
||||
| Page 1 |
|
||||
| |
|
||||
----------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
----------------------------------------------------------------
|
||||
| Digital Research C READ.ME File Notes Documentation |
|
||||
| |
|
||||
| |
|
||||
| |
|
||||
| DOCUMENTATION UPDATES |
|
||||
| =============================================== |
|
||||
| |
|
||||
| All documentation updates indicated in this file |
|
||||
| apply to the "C Language Programmer's Guide for the |
|
||||
| CP/M-86 Family of Operating Systems" First Edition |
|
||||
| April 1983. Text modifications appear between the |
|
||||
| symbols: >> and <<. |
|
||||
| |
|
||||
| |
|
||||
| Creating a C Work Disk |
|
||||
| ========================================= |
|
||||
| |
|
||||
| Substitute the following text for the third |
|
||||
| paragraph and everything that follows the third |
|
||||
| paragraph in Section 1.5, A Simple Demonstration, |
|
||||
| on page 1-5. Page 1-6 remains unchanged. |
|
||||
| |
|
||||
| |
|
||||
| >>First, make back-up copies of your master C product |
|
||||
| disks and store the original disks in a safe place. |
|
||||
| Your operating system disk should be in drive A. |
|
||||
| |
|
||||
| 1) Create a C work disk. |
|
||||
| |
|
||||
| Using a file copy program, such as PIP, create a C |
|
||||
| work disk that contains the three compiler files |
|
||||
| required for minimum configuration, the linkage |
|
||||
| editor, the small model system library, and |
|
||||
| SAMPLE.C. If you do not have enough room on disk |
|
||||
| for all the files, you can place the linkage editor |
|
||||
| and library on a separate disk. Your work disk or |
|
||||
| disks should contain all of the following files. |
|
||||
| |
|
||||
| o R.CMD -- program loader |
|
||||
| o DRC.CMD -- compiler supervisory module |
|
||||
| o DRC860.CMD -- preprocessor |
|
||||
| o DRC861.CMD -- parser and code generator |
|
||||
| o LINK86.CMD -- linkage editor |
|
||||
| o SYSLIBS.L86 -- small model system library |
|
||||
| o SAMPLE.C -- sample program |
|
||||
| |
|
||||
| |
|
||||
| Page 2 |
|
||||
| |
|
||||
----------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
----------------------------------------------------------------
|
||||
| Digital Research C READ.ME File Notes Documentation |
|
||||
| |
|
||||
| |
|
||||
| |
|
||||
| With your operating system disk in drive A place |
|
||||
| your new C work disk that contains SAMPLE.C in |
|
||||
| drive B. SAMPLE.C uses a simple for-loop and the |
|
||||
| printf function to print a short series of messages. |
|
||||
| You can display the SAMPLE.C program on your |
|
||||
| terminal with the CP/M-86 type command. Make sure |
|
||||
| drive B is the default drive and enter the |
|
||||
| following command: |
|
||||
| |
|
||||
| B>TYPE SAMPLE.C << |
|
||||
| |
|
||||
| |
|
||||
| Option Switch -a |
|
||||
| ========================================= |
|
||||
| |
|
||||
| Substitute the following text for all of page 2-5. |
|
||||
| |
|
||||
| |
|
||||
| >>The -a option switch executes LINK-86 automatically |
|
||||
| at the end of compilation. You must specify object |
|
||||
| files and any libraries other than the system |
|
||||
| library after the -a in the compiler command line. |
|
||||
| Alternatively, you can specify a LINK-86 input file |
|
||||
| using the INPUT option. Refer to Section 7.11 in |
|
||||
| the Programmer's Utilities Guide for more |
|
||||
| information on the LINK-86 INPUT option. |
|
||||
| |
|
||||
| The following command line example compiles a |
|
||||
| program named PROGRAM.C and automatically links the |
|
||||
| object file that the compiler creates with the |
|
||||
| small model system library. Notice that you do not |
|
||||
| have to specify the object file name or library |
|
||||
| file name explicitly after the -A if that object |
|
||||
| file is the only file to be linked with the system |
|
||||
| library on the default drive. |
|
||||
| |
|
||||
| B>DRC PROGRAM -A |
|
||||
| |
|
||||
| In this example, the compiler, LINK-86, and the |
|
||||
| small model system library are all on the default |
|
||||
| |
|
||||
| Page 3 |
|
||||
| |
|
||||
----------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
----------------------------------------------------------------
|
||||
| Digital Research C READ.ME File Notes Documentation |
|
||||
| |
|
||||
| |
|
||||
| |
|
||||
| drive (B:). You can use the -3 option switch to |
|
||||
| specify a drive other than the default drive for |
|
||||
| LINK-86. |
|
||||
| |
|
||||
| The compiler compiles PROGRAM.C according to the |
|
||||
| small memory model and names the object file |
|
||||
| PROGRAM.OBJ both by default. The compiler creates |
|
||||
| a special object record in PROGRAM.OBJ that tells |
|
||||
| LINK-86 which system library to search for required |
|
||||
| routines depending on which memory model you |
|
||||
| specify for compilation. Note that the appropriate |
|
||||
| system library file must be on the default drive. |
|
||||
| Otherwise, LINK-86 displays the NO FILE error |
|
||||
| message indicating that you must specify the |
|
||||
| library and drive location explicitly. The object |
|
||||
| record automatically specifies the LINK-86 SEARCH |
|
||||
| option for library files. Therefore, LINK-86 only |
|
||||
| links modules from the system library that are |
|
||||
| referenced in PROGRAM.C. Without the SEARCH option |
|
||||
| LINK-86 links in the entire system library, making |
|
||||
| the executable program unnecessarily large. The |
|
||||
| preceding example creates an executable program |
|
||||
| named PROGRAM.CMD. |
|
||||
| |
|
||||
| To link multiple object files and libraries, you |
|
||||
| must specify each filename explicitly after the -A |
|
||||
| including the name of the object file that the |
|
||||
| compiler creates. Use commas to separate each |
|
||||
| filespec after the -A in the command line. The |
|
||||
| following example compiles the program named |
|
||||
| PROGRAM.C, then links the object file that the |
|
||||
| compiler creates with an object file named |
|
||||
| PROGTWO.OBJ and the small model system library. |
|
||||
| Notice that you do not have to specify the .OBJ |
|
||||
| filetype explicitly for the object files after the |
|
||||
| -A. |
|
||||
| |
|
||||
| B>DRC PROGRAM -APROGRAM,PROGTWO |
|
||||
| |
|
||||
| The next example is identical to the first example, |
|
||||
| except the small model system library is on the D |
|
||||
| drive. Notice that you must specify the object |
|
||||
| |
|
||||
| Page 4 |
|
||||
| |
|
||||
----------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
----------------------------------------------------------------
|
||||
| Digital Research C READ.ME File Notes Graphics Errors |
|
||||
| |
|
||||
| |
|
||||
| |
|
||||
| file that the compiler creates explicitly after the |
|
||||
| -A whenever you have additional explicit filespecs. |
|
||||
| |
|
||||
| B>DRC PROGRAM -APROGRAM,D:SYSLIBS.L86[S] |
|
||||
| |
|
||||
| Remember, in this case, you must specify the object |
|
||||
| file that the compiler creates, the library file |
|
||||
| drive location, the library filename, and the |
|
||||
| LINK-86 SEARCH option explicitly. |
|
||||
| |
|
||||
| The last example is exactly the same as the first |
|
||||
| example, except LINK-86 is on drive D. In this |
|
||||
| case, the system library is on the default drive. |
|
||||
| You do not have to specify the object file and |
|
||||
| library file explicitly. |
|
||||
| |
|
||||
| B>DRC PROGRAM -A -3D: |
|
||||
| |
|
||||
| Remember, compiler command lines cannot exceed 128 |
|
||||
| characters. << |
|
||||
| |
|
||||
| |
|
||||
| Function Directory |
|
||||
| ========================================= |
|
||||
| |
|
||||
| Substitute the following table for Table 3-3 on |
|
||||
| page 3-4. |
|
||||
| |
|
||||
| |
|
||||
| >> Table 3-3. System Library Function Directory |
|
||||
| --------------------------------------------------- |
|
||||
| Function Page Function Page |
|
||||
| |
|
||||
| abs 3-5 index 3-30 |
|
||||
| access 3-6 isatty 3-31 |
|
||||
| atan 3-57 log 3-32 |
|
||||
| atoi 3-7 log10 3-32 |
|
||||
| atof 3-7 longjmp 3-50 |
|
||||
| atol 3-7 lseek 3-33 |
|
||||
| brk 3-8 malloc 3-9 |
|
||||
| calloc 3-9 mktemp 3-34 |
|
||||
| |
|
||||
| Page 5 |
|
||||
| |
|
||||
----------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
----------------------------------------------------------------
|
||||
| Digital Research C READ.ME File Notes Function Directory |
|
||||
| |
|
||||
| |
|
||||
| |
|
||||
| chmod 3-10 open 3-35 |
|
||||
| chown 3-10 opena 3-35 |
|
||||
| clearerr 3-20 openb 3-35 |
|
||||
| close 3-11 perror 3-36 |
|
||||
| cos 3-12 printf 3-38 |
|
||||
| creat 3-13 putc 3-41 |
|
||||
| creata 3-13 putchar 3-41 |
|
||||
| creatb 3-13 putl 3-41 |
|
||||
| ctype 3-14 puts 3-43 |
|
||||
| exit 3-16 putw 3-41 |
|
||||
| _exit 3-16 qsort 3-44 |
|
||||
| exp 3-17 rand 3-45 |
|
||||
| fabs 3-18 read 3-46 |
|
||||
| fclose 3-19 realloc 3-9 |
|
||||
| fdopen 3-21 rewind 3-24 |
|
||||
| feof 3-20 rindex 3-30 |
|
||||
| ferror 3-20 sbrk 3-8 |
|
||||
| fflush 3-19 scanf 3-47 |
|
||||
| fgetc 3-25 setjmp 3-50 |
|
||||
| fgets 3-29 sin 3-12 |
|
||||
| fileno 3-20 sprintf 3-38 |
|
||||
| fopen 3-21 sqrt 3-51 |
|
||||
| fprintf 3-38 sscanf 3-47 |
|
||||
| fputc 3-41 srand 3-45 |
|
||||
| fputs 3-43 strcat 3-52 |
|
||||
| fread 3-23 strcmp 3-53 |
|
||||
| free 3-9 strcpy 3-54 |
|
||||
| freopen 3-21 strlen 3-55 |
|
||||
| fscanf 3-47 strncat 3-52 |
|
||||
| fseek 3-24 strncmp 3-53 |
|
||||
| ftell 3-24 strncpy 3-54 |
|
||||
| fwrite 3-23 swab 3-56 |
|
||||
| getc 3-25 ttyname 3-58 |
|
||||
| getchar 3-25 tan 3-57 |
|
||||
| getl 3-25 tell 3-33 |
|
||||
| getpass 3-27 ungetc 3-59 |
|
||||
| gets 3-29 unlink 3-60 |
|
||||
| getpid 3-28 write 3-61 |
|
||||
| getw 3-25 |
|
||||
| |
|
||||
| |
|
||||
| |
|
||||
| Page 6 |
|
||||
| |
|
||||
----------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
----------------------------------------------------------------
|
||||
| Digital Research C READ.ME File Notes execl Function |
|
||||
| |
|
||||
| |
|
||||
| execl Function |
|
||||
| ========================================= |
|
||||
| |
|
||||
| Please add the following function description to |
|
||||
| Section 3 of the C Language Programmer's Guide. |
|
||||
| |
|
||||
| |
|
||||
| >>The execl function passes control from an executing |
|
||||
| C program to another C program. You can chain any |
|
||||
| number of C programs for execution. However, once |
|
||||
| you pass control to a new program, you cannot |
|
||||
| effectively return to the original program. The |
|
||||
| new program overlays the original program in memory. |
|
||||
| Therefore, if you chain back to the original |
|
||||
| program, all data from the first execution are lost. |
|
||||
| |
|
||||
| Specify the name of a file that contains the |
|
||||
| program to chain to and any arguments that the new |
|
||||
| program needs for execution. You must specify at |
|
||||
| least one argument in addition to the filename. |
|
||||
| The argument must point to a null-terminated string |
|
||||
| that is the same as the filename string. This |
|
||||
| calling syntax procedure is based on UNIX |
|
||||
| conventions. |
|
||||
| |
|
||||
| Declarations: |
|
||||
| |
|
||||
| int execl(); |
|
||||
| char *name, *arg1, *arg2; |
|
||||
| |
|
||||
| Calling Syntax: |
|
||||
| |
|
||||
| ret = execl(name, arg1, arg2, ..., NULLPTR); |
|
||||
| |
|
||||
| Arguments: |
|
||||
| |
|
||||
| name -- pointer to the null-terminated |
|
||||
| filename string |
|
||||
| argX -- pointers to null-terminated |
|
||||
| character strings |
|
||||
| NULLPTR -- macro defined in PORTAB.H equal |
|
||||
| to 0 |
|
||||
| |
|
||||
| Page 7 |
|
||||
| |
|
||||
----------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
----------------------------------------------------------------
|
||||
| Digital Research C READ.ME File Notes setjmp and longjmp |
|
||||
| |
|
||||
| |
|
||||
| |
|
||||
| Returns: |
|
||||
| |
|
||||
| ret -- -1 if the function fails |
|
||||
| |
|
||||
| Note: If execl returns to the original program, an |
|
||||
| error has occured. The function returns a -1 and |
|
||||
| the errno function is set to indicate the error. << |
|
||||
| |
|
||||
| |
|
||||
| setjmp and longjmp Functions |
|
||||
| ========================================= |
|
||||
| |
|
||||
| Substitute the following text for all of page 3-50. |
|
||||
| |
|
||||
| |
|
||||
| >>The setjmp and longjmp functions enable a program |
|
||||
| to execute a nonlocal GOTO. Use the setjmp |
|
||||
| function to save the program environment at |
|
||||
| specific point in the flow of execution and to |
|
||||
| specify a return location for the longjmp call. |
|
||||
| You can then call longjmp from any point after the |
|
||||
| setjmp call. |
|
||||
| |
|
||||
| The longjmp function simulates a return from a call |
|
||||
| to setjmp. First, longjmp returns a value to |
|
||||
| setjmp as specified in the second argument in the |
|
||||
| longjmp call. Secondly, execution continues at the |
|
||||
| instruction immediately following the setjmp call |
|
||||
| in the program. |
|
||||
| |
|
||||
| If the function that invokes setjmp returns before |
|
||||
| longjmp is called, the saved environment is lost. |
|
||||
| The setjmp function saves the program environment |
|
||||
| in a variable of type jmp_buf. The type jmp_buf is |
|
||||
| defined in the include file setjmp.h. |
|
||||
| |
|
||||
| Declarations: |
|
||||
| |
|
||||
| #include <setjmp.h> |
|
||||
| int xret, ret, setjmp(); |
|
||||
| jmp_buf env; |
|
||||
| |
|
||||
| Page 8 |
|
||||
| |
|
||||
----------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
----------------------------------------------------------------
|
||||
| Digital Research C READ.ME File Notes to----- Functions |
|
||||
| |
|
||||
| |
|
||||
| |
|
||||
| Calling Syntax: |
|
||||
| . |
|
||||
| . |
|
||||
| xret = setjmp(env); |
|
||||
| . |
|
||||
| . |
|
||||
| longjmp(env, ret); |
|
||||
| |
|
||||
| Arguments: |
|
||||
| |
|
||||
| env -- contains the saved environment |
|
||||
| ret -- the desired return value from setjmp |
|
||||
| |
|
||||
| Returns: |
|
||||
| |
|
||||
| xret -- 0 when setjmp is called initially, |
|
||||
| then copied from ret when longjmp is |
|
||||
| called << |
|
||||
| |
|
||||
| |
|
||||
| toascii, tolower, toupper Functions |
|
||||
| ========================================= |
|
||||
| |
|
||||
| Please add the following function descriptions to |
|
||||
| Section 3 of the C Language Programmer's Guide. |
|
||||
| |
|
||||
| |
|
||||
| >>The toascii, tolower, and toupper functions are |
|
||||
| character conversion functions implemented as |
|
||||
| macros in the include file CTYPE.H. You must |
|
||||
| include CTYPE.H in any program that uses any of |
|
||||
| these three functions. Do not declare functions |
|
||||
| that are implemented as macros. Arguments that |
|
||||
| involve side effects might work incorrectly and |
|
||||
| should be avoided. |
|
||||
| |
|
||||
| The tolower function converts an upper-case letter |
|
||||
| to the corresponding lower-case letter. The |
|
||||
| toupper function converts a lower-case letter to |
|
||||
| the corresponding upper-case letter. The toascii |
|
||||
| function simply turns off all bits in a character |
|
||||
| |
|
||||
| Page 9 |
|
||||
| |
|
||||
----------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
----------------------------------------------------------------
|
||||
| Digital Research C READ.ME File Notes Start-up Routines |
|
||||
| |
|
||||
| |
|
||||
| representation that are not part of a standard |
|
||||
| ASCII character. toascii is provided for |
|
||||
| compatibility with other systems. |
|
||||
| |
|
||||
| Declarations: |
|
||||
| |
|
||||
| #include <ctype.h> |
|
||||
| |
|
||||
| int ret; |
|
||||
| |
|
||||
| Calling Syntax: |
|
||||
| |
|
||||
| ret = tolower(charac); |
|
||||
| ret = toupper(charac); |
|
||||
| ret = toascii(charac); |
|
||||
| |
|
||||
| Arguments: |
|
||||
| |
|
||||
| charac -- a single character to convert |
|
||||
| |
|
||||
| Returns: |
|
||||
| |
|
||||
| ret -- the converted character |
|
||||
| |
|
||||
| Note: tolower and toupper can accept character |
|
||||
| arguments represented by integers in the range 0 |
|
||||
| to 255. << |
|
||||
| |
|
||||
| |
|
||||
| Start-up Routines |
|
||||
| ========================================= |
|
||||
| |
|
||||
| Substitute the following text for Section 2.2. |
|
||||
| |
|
||||
| >>A start-up routine controls the execution of a |
|
||||
| program. It sets up the operating environment for |
|
||||
| program execution by initializing the stack pointer, |
|
||||
| segment registers, and heap. The start-up routine |
|
||||
| is contained in the system library and linked into |
|
||||
| the executable program automatically. |
|
||||
| |
|
||||
| When the C compiler encounters the function name |
|
||||
| |
|
||||
| Page 10 |
|
||||
| |
|
||||
----------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
----------------------------------------------------------------
|
||||
| Digital Research C READ.ME File Notes Start-up Routines |
|
||||
| |
|
||||
| |
|
||||
| main() during compilation, the compiler generates a |
|
||||
| jump instruction to a routine named _START. _START |
|
||||
| is the standard start-up routine in the system |
|
||||
| library that sets up the operating environment to |
|
||||
| execute a program under CP/M-86. After setting up |
|
||||
| the environment, _START calls the program's "main" |
|
||||
| routine for execution. The "main" routine returns |
|
||||
| control to _START at the conclusion of execution. |
|
||||
| Lastly, _START calls the EXIT function to return |
|
||||
| control to the operating system. |
|
||||
| |
|
||||
| The source file named STARTUP.A86 on one of your C |
|
||||
| product disks is an example of a start-up routine |
|
||||
| written in assembly language. Study STARTUP.A86 to |
|
||||
| learn more about start-up routines. |
|
||||
| |
|
||||
| You can compile and link programs intended for |
|
||||
| stand-alone execution. Stand-alone programs do not |
|
||||
| use the support services of an operating system, |
|
||||
| but interface directly with the system hardware. |
|
||||
| In other words, a stand-alone rogram is a systems |
|
||||
| level program such as an operating system. |
|
||||
| |
|
||||
| A stand-alone program accesses certain machine |
|
||||
| support subroutines in the system library, such as |
|
||||
| the long divide and long shift routines. You |
|
||||
| cannot access machine support subroutines |
|
||||
| explicitly. The compiler generates code to access |
|
||||
| them implicitly. |
|
||||
| |
|
||||
| To create an executable stand-alone program, object |
|
||||
| modules created with the C compiler must be linked |
|
||||
| with the appropriate system library and a start-up |
|
||||
| routine that sets up the desired target operating |
|
||||
| environment. Remember, when the C compiler |
|
||||
| encounters the function name main() during |
|
||||
| compilation, the compiler generates a jump |
|
||||
| instruction to a routine named _START. The _START |
|
||||
| module in the system library sets up the operating |
|
||||
| environment for CP/M-86. You must write a new |
|
||||
| start-up routine for your new target environment. |
|
||||
| The new start-up routine that you write must also |
|
||||
| |
|
||||
| Page 11 |
|
||||
| |
|
||||
----------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
----------------------------------------------------------------
|
||||
| Digital Rresearch C READ.ME File Notes Start-up Routines |
|
||||
| |
|
||||
| |
|
||||
| be named _START. However, when linking the program |
|
||||
| your new start-up routine module must appear first |
|
||||
| in the LINK86 command line. As a result, LINK-86 |
|
||||
| does not link in the standard _START that is |
|
||||
| contained in the system library. |
|
||||
| |
|
||||
| LINK-86 produces a .CMD file that is executable in |
|
||||
| your desired target environment. The following |
|
||||
| LINK-86 command line example creates a stand-alone |
|
||||
| program named PROG from the object modules MOD1.OBJ, |
|
||||
| MOD2.OBJ, and MOD3.OBJ. The file STARTUP1.OBJ |
|
||||
| contains the start-up routine, _START specially |
|
||||
| written for the target environment. LINK-86 |
|
||||
| searches the default drive automatically for the |
|
||||
| proper system library. |
|
||||
| |
|
||||
| B>LINK86 PROG=STARTUP1,MOD1,MOD2,MOD3 |
|
||||
| |
|
||||
| Note that the start-up module must appear first in |
|
||||
| the LINK86 command line. The system library must |
|
||||
| always appear after the new start-up module in the |
|
||||
| command line if the system library is specified |
|
||||
| explicitly. The object modules can appear in any |
|
||||
| order. |
|
||||
| |
|
||||
| You can specify a different drive location for the |
|
||||
| system library in the link command line. The |
|
||||
| following example links the three object modules |
|
||||
| with the compact model library. The library is on |
|
||||
| the d drive. |
|
||||
| |
|
||||
| B>LINK86 PROG=STARTUP1,MOD1,MOD2,MOD3,d:SYSLIBC.L86[S] |
|
||||
| |
|
||||
| The LINK-86 search option, [S], after the library |
|
||||
| specification selects only the routines from the |
|
||||
| library that the program requires. If you omit the |
|
||||
| search option, LINK-86 links the entire library |
|
||||
| into the .CMD file, making the executable program |
|
||||
| unnecessarily large. You can use the LINK-86 MAP |
|
||||
| option to make sure the proper routines are loaded |
|
||||
| from SYSLIB. Refer to the Programmer's Utilities |
|
||||
| Guide for more information on LINK86. << |
|
||||
| |
|
||||
| Page 12 |
|
||||
| |
|
||||
----------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
----------------------------------------------------------------
|
||||
| Digital Research C READ.ME File Notes Miscellaneous |
|
||||
| |
|
||||
| |
|
||||
| |
|
||||
| Miscellaneous Notes |
|
||||
| ========================================= |
|
||||
| |
|
||||
| * The function described on page 3-55 is the strlen |
|
||||
| function, not strnlen. |
|
||||
| |
|
||||
| * Vertical bars, |, are used to separate text items |
|
||||
| typographically and should not be taken literally. |
|
||||
| For example, see Table 2-1 on page 2-3. |
|
||||
| |
|
||||
| * The -d option switch, described in Table 2-1 on |
|
||||
| page 2-3 and on page 2-6, defines names in lower |
|
||||
| case only. For example, the following command |
|
||||
| line defines the name aabbcc for the preprocessor. |
|
||||
| |
|
||||
| B>DRC PROGRAM -DaAbBcC |
|
||||
| |
|
||||
| * The atof function described on page 3-7 returns a |
|
||||
| value declared as double, not long. |
|
||||
| |
|
||||
| * The textual descriptions for the C compiler error |
|
||||
| messages contained in the file DRC.ERR have been |
|
||||
| rewritten for additional clarity and readability. |
|
||||
| The text in Appendix C of the C Language |
|
||||
| Programmer's Guide is still technically correct. |
|
||||
| You can modify the messages in DRC.ERR to read as |
|
||||
| you desire. Use your text editor in non-document |
|
||||
| mode. |
|
||||
| |
|
||||
| * The strncat function described on page 3-52 |
|
||||
| copies a maximum number of characters, n, from |
|
||||
| string s2 to the end of string s1. |
|
||||
| |
|
||||
| * The strncpy function described on page 3-54 |
|
||||
| copies exactly n characters from string s2 to s1. |
|
||||
| It will truncate or pad with nulls if n is not |
|
||||
| equal to the length of string s2. |
|
||||
| |
|
||||
| |
|
||||
| END OF READ.ME FILE |
|
||||
| |
|
||||
| |
|
||||
| Page 13 |
|
||||
| |
|
||||
----------------------------------------------------------------
|
||||
|
||||
12
MPM OPERATING SYSTEMS/MPM-86/MISC DRI DISKS/03/SAMPLE.C
Normal file
@@ -0,0 +1,12 @@
|
||||
main()
|
||||
{
|
||||
int val;
|
||||
|
||||
for (val = 0; val <= 3; val++)
|
||||
printf("%d TESTING C\n", val);
|
||||
|
||||
printf("\n");
|
||||
printf("FINISHED!\n");
|
||||
}
|
||||
|
||||
|
||||
38
MPM OPERATING SYSTEMS/MPM-86/MISC DRI DISKS/03/SETJMP.H
Normal file
@@ -0,0 +1,38 @@
|
||||
|
||||
/****************************************************************************/
|
||||
/* */
|
||||
/* L o n g j u m p H e a d e r F i l e */
|
||||
/* --------------------------------------- */
|
||||
/* */
|
||||
/* Copyright 1982 by Digital Research. All rights reserved. */
|
||||
/* */
|
||||
/* Long jumps on the 68K are implemented as follows: */
|
||||
/* */
|
||||
/* 1). Routine "setjmp" is called to setup a special */
|
||||
/* buffer for return. The return address, stack */
|
||||
/* pointer and frame pointer are saved. This allows */
|
||||
/* the calling program to do the proper number of */
|
||||
/* "pops". */
|
||||
/* */
|
||||
/* 2). At some later time, the procedure "longjmp" is */
|
||||
/* called. The programmer sees a return from the */
|
||||
/* previous "setjmp" as the result. */
|
||||
/* */
|
||||
/* Calling sequence: */
|
||||
/* */
|
||||
/* #include <setjmp.h> (definitions) */
|
||||
/* jmp_buf env; (define a buffer for saved stuff) */
|
||||
/* */
|
||||
/* setjmp(env); */
|
||||
/* a: */
|
||||
/* */
|
||||
/* longjmp(env,val); */
|
||||
/* */
|
||||
/* Setjmp returns a WORD of 0 on first call, and "val" on the */
|
||||
/* subsequent "longjmp" call. The longjmp call causes execution to */
|
||||
/* resume at "a:" above. */
|
||||
/* */
|
||||
/****************************************************************************/
|
||||
typedef long jmp_buf[3];
|
||||
|
||||
|
||||
197
MPM OPERATING SYSTEMS/MPM-86/MISC DRI DISKS/03/STARTUP.A86
Normal file
@@ -0,0 +1,197 @@
|
||||
;***************************************************************;
|
||||
; ;
|
||||
; DIGITAL RESEARCH C COMPILER STARTUP MODULE ;
|
||||
; ;
|
||||
; SELECT ONE OF THE FOLLOWING MEMORY MODELS AND THEN ;
|
||||
; ASSEMBLE WITH RASM-86 ;
|
||||
; ;
|
||||
; LOGIC IS AS FOLLOWS: ;
|
||||
; ;
|
||||
; Compiler generates call to _start (in lower case) ;
|
||||
; Which calls _START (in upper case) ;
|
||||
; Which init's SP, etc. then calls _GO (in upper case) ;
|
||||
; Which calls _main (in lower case) which calls ;
|
||||
; the user's main (in lower case) which then returns to ;
|
||||
; _main which then returns then _GO calls exit in l. case ;
|
||||
; ;
|
||||
;***************************************************************;
|
||||
|
||||
SMALL_MODEL EQU 1
|
||||
MEDIUM_MODEL EQU 0
|
||||
COMPACT_MODEL EQU 0
|
||||
BIG_MODEL EQU 0
|
||||
|
||||
|
||||
IF SMALL_MODEL
|
||||
|
||||
CODE CSEG
|
||||
CGROUP GROUP CODE
|
||||
DGROUP GROUP _BREAK
|
||||
|
||||
EXTRN _GO:NEAR
|
||||
PUBLIC _START
|
||||
|
||||
_START: MOV AX,DS
|
||||
MOV SS,AX
|
||||
MOV BX,6
|
||||
MOV SP,[BX] ;set up ss:sp
|
||||
|
||||
MOV AX,WORD PTR ?MEMRY
|
||||
MOV __break,AX ;set up __break for brk()
|
||||
|
||||
MOV BX,80H ;offset of command line
|
||||
MOV AL,BYTE PTR [BX];get length
|
||||
XOR AH,AH
|
||||
PUSH AX
|
||||
MOV AX,81H ;offset of command line data
|
||||
PUSH AX
|
||||
CALL _GO
|
||||
|
||||
DATA DSEG BYTE
|
||||
PUBLIC ?MEMRY
|
||||
?MEMRY RW 1
|
||||
|
||||
_BREAK DSEG BYTE COMMON
|
||||
__break RW 1
|
||||
|
||||
ENDIF ;SMALL_MODEL
|
||||
|
||||
|
||||
|
||||
|
||||
IF MEDIUM_MODEL
|
||||
|
||||
GO_CODE CSEG
|
||||
EXTRN _GO:FAR
|
||||
|
||||
CODE CSEG
|
||||
|
||||
DGROUP GROUP DATA,_BREAK
|
||||
|
||||
|
||||
|
||||
PUBLIC _START
|
||||
|
||||
_START: MOV AX,DS
|
||||
MOV BX,6
|
||||
MOV SS,AX
|
||||
MOV SP,[BX] ;set up ss:sp
|
||||
|
||||
MOV AX,WORD PTR ?MEMRY
|
||||
MOV __BREAK,AX ;set up __BREAK for brk()
|
||||
|
||||
;
|
||||
; NOW ZERO UN-INIT DATA
|
||||
;
|
||||
MOV CX,SP
|
||||
SUB CX,100H ;LEAVE SOME SLOP
|
||||
MOV BX,WORD PTR ?MEMRY ;GET STARTING LOCATION
|
||||
SUB CX,BX ;CALC LENGTH INTO CX
|
||||
INC CX
|
||||
SHR CX,1 ;MAKE IT A WORD COUNT
|
||||
|
||||
MOV AX,0 ;FILL VALUE
|
||||
MOV DX,DS
|
||||
MOV ES,DX ;SET UP DEST SEG
|
||||
MOV DI,BX ;SET UP DEST OFFSET
|
||||
|
||||
REP STOSW ;AND DOIT
|
||||
|
||||
MOV BX,80H ;offset of command line
|
||||
MOV AL,BYTE PTR [BX];get length
|
||||
XOR AH,AH
|
||||
PUSH AX
|
||||
MOV AX,81H ;offset of command line data
|
||||
PUSH AX
|
||||
CALLF _GO
|
||||
|
||||
DATA DSEG BYTE
|
||||
|
||||
PUBLIC ?MEMRY
|
||||
?MEMRY RW 2
|
||||
|
||||
_BREAK DSEG BYTE COMMON
|
||||
__BREAK RW 1
|
||||
|
||||
ENDIF ;MEDIUM_MODEL
|
||||
|
||||
|
||||
|
||||
|
||||
IF COMPACT_MODEL
|
||||
|
||||
CODE CSEG
|
||||
CGROUP GROUP CODE
|
||||
DGROUP GROUP _BREAK
|
||||
|
||||
EXTRN _GO:NEAR
|
||||
PUBLIC _START
|
||||
_START:
|
||||
MOV BX,0
|
||||
MOV SS,15H[BX]
|
||||
MOV SP,12H[BX] ;set up ss:sp
|
||||
INC SP
|
||||
|
||||
MOV AX,0FH[BX]
|
||||
MOV __BREAK+2,AX
|
||||
SUB AX,AX
|
||||
MOV __BREAK,AX ;set up __break for brk()
|
||||
|
||||
MOV BX,80H ;offset of command line
|
||||
MOV AL,BYTE PTR [BX];get length
|
||||
XOR AH,AH
|
||||
PUSH AX
|
||||
PUSH DS
|
||||
MOV AX,81H ;offset of command line data
|
||||
PUSH AX
|
||||
CALL _GO
|
||||
|
||||
|
||||
_BREAK DSEG BYTE COMMON
|
||||
__BREAK RW 2
|
||||
|
||||
ENDIF ;COMPACT_MODEL
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
IF BIG_MODEL
|
||||
|
||||
DGROUP GROUP _BREAK
|
||||
|
||||
GO_CODE CSEG
|
||||
EXTRN _GO:FAR
|
||||
|
||||
START_CODE CSEG
|
||||
|
||||
PUBLIC _START
|
||||
_START:
|
||||
MOV BX,0
|
||||
MOV SS,15H[BX]
|
||||
MOV SP,12H[BX] ;set up ss:sp
|
||||
INC SP
|
||||
|
||||
MOV AX,0FH[BX]
|
||||
MOV __BREAK+2,AX
|
||||
SUB AX,AX
|
||||
MOV __BREAK,AX ;set up __break for brk()
|
||||
|
||||
MOV BX,80H ;offset of command line
|
||||
MOV AL,BYTE PTR [BX];get length
|
||||
XOR AH,AH
|
||||
PUSH AX
|
||||
PUSH DS
|
||||
MOV AX,81H ;offset of command line data
|
||||
PUSH AX
|
||||
CALLF _GO
|
||||
|
||||
_BREAK DSEG BYTE COMMON
|
||||
__BREAK RW 2
|
||||
ENDIF ;BIG_MODEL
|
||||
|
||||
|
||||
END
|
||||
|
||||
|
||||
|
||||
45
MPM OPERATING SYSTEMS/MPM-86/MISC DRI DISKS/03/STDIO.H
Normal file
@@ -0,0 +1,45 @@
|
||||
#include <portab.h>
|
||||
|
||||
#define BUFSIZ 512
|
||||
#define MAXFILES 16
|
||||
struct _iobuf {
|
||||
WORD _fd;
|
||||
WORD _flag;
|
||||
BYTE *_base;
|
||||
BYTE *_ptr;
|
||||
WORD _cnt;
|
||||
};
|
||||
#ifndef FILE
|
||||
extern struct _iobuf _iob[MAXFILES];
|
||||
#define FILE struct _iobuf
|
||||
#endif
|
||||
|
||||
#define _IOREAD 0x01
|
||||
#define _IOWRT 0x02
|
||||
#define _IOABUF 0x04
|
||||
#define _IONBUF 0x08
|
||||
#define _IOERR 0x10
|
||||
#define _IOEOF 0x20
|
||||
#define _IOLBUF 0x40
|
||||
#define _IOSTRI 0x80
|
||||
#define _IOASCI 0x100
|
||||
|
||||
#define stdin (&_iob[0])
|
||||
#define stdout (&_iob[1])
|
||||
#define stderr (&_iob[2])
|
||||
|
||||
#define clearerr(p) ((p)->_flag & ~_IOERR)
|
||||
#define feof(p) ((p)->_flag & _IOEOF)
|
||||
#define ferror(p) ((p)->_flag & _IOERR)
|
||||
#define fileno(p) ((p)->_fd)
|
||||
#define getchar() getc(stdin)
|
||||
#define putchar(c) putc(c,stdout)
|
||||
#define putc fputc
|
||||
#define getc fgetc
|
||||
|
||||
|
||||
#define abs(x) ((x) < 0 ? -(x) : (x))
|
||||
|
||||
#define max(x,y) (((x) > (y)) ? (x) : (y))
|
||||
#define min(x,y) (((x) < (y)) ? (x) : (y))
|
||||
*
|
||||
BIN
MPM OPERATING SYSTEMS/MPM-86/MISC DRI DISKS/03/SYSLIBB.L86
Normal file
BIN
MPM OPERATING SYSTEMS/MPM-86/MISC DRI DISKS/03/SYSLIBC.L86
Normal file
BIN
MPM OPERATING SYSTEMS/MPM-86/MISC DRI DISKS/03/SYSLIBM.L86
Normal file
BIN
MPM OPERATING SYSTEMS/MPM-86/MISC DRI DISKS/03/SYSLIBS.L86
Normal file
36
MPM OPERATING SYSTEMS/MPM-86/MISC DRI DISKS/03/TEST.C
Normal file
@@ -0,0 +1,36 @@
|
||||
int i,j;
|
||||
long l,k;
|
||||
float f,g;
|
||||
double d,e;
|
||||
|
||||
main()
|
||||
{
|
||||
printf("************************************************\n");
|
||||
printf("** WELCOME TO DIGITAL RESEARCH C **\n");
|
||||
printf("** **\n");
|
||||
printf("** This sample program tests the C compiler, **\n");
|
||||
printf("** linker and libraries. If the number in **\n");
|
||||
printf("** parentheses matches the number to the **\n");
|
||||
printf("** immediate left, each component is working **\n");
|
||||
printf("** properly. **\n");
|
||||
printf("************************************************\n");
|
||||
printf("\n");
|
||||
|
||||
printf("Test int math: 4567 * 10 = "); i = 4567; j = 10;
|
||||
printf("%u (45670)\n",i * j);
|
||||
|
||||
printf("Test long int math: 1234 * 4567 = "); l = 1234; k = 4567;
|
||||
printf("%ld (5635678)\n",l * k);
|
||||
|
||||
printf("Test float math: 1.234 + 0.001 = "); f = 1.234; g = 0.001;
|
||||
printf("%g (1.235)\n",f + g);
|
||||
|
||||
printf("Test double math: 5635678.0 / 1234.0 = ");
|
||||
d = 5635678.0;
|
||||
e = 1234.0;
|
||||
printf("%g (4567)\n",d / e);
|
||||
|
||||
printf("\nGood Luck!\n");
|
||||
}
|
||||
|
||||
|
||||
BIN
MPM OPERATING SYSTEMS/MPM-86/MISC DRI DISKS/04/04.JPG
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
MPM OPERATING SYSTEMS/MPM-86/MISC DRI DISKS/04/04.TD0
Normal file
BIN
MPM OPERATING SYSTEMS/MPM-86/MISC DRI DISKS/04/ARCH.CMD
Normal file
1319
MPM OPERATING SYSTEMS/MPM-86/MISC DRI DISKS/04/C80LIB.A86
Normal file
BIN
MPM OPERATING SYSTEMS/MPM-86/MISC DRI DISKS/04/CC1.CMD
Normal file
BIN
MPM OPERATING SYSTEMS/MPM-86/MISC DRI DISKS/04/CC2.CMD
Normal file
BIN
MPM OPERATING SYSTEMS/MPM-86/MISC DRI DISKS/04/CC3.CMD
Normal file
BIN
MPM OPERATING SYSTEMS/MPM-86/MISC DRI DISKS/04/CL.CMD
Normal file
1738
MPM OPERATING SYSTEMS/MPM-86/MISC DRI DISKS/04/CLIB.ARC
Normal file
BIN
MPM OPERATING SYSTEMS/MPM-86/MISC DRI DISKS/04/CLIB.CL
Normal file
BIN
MPM OPERATING SYSTEMS/MPM-86/MISC DRI DISKS/04/CVTH86.CMD
Normal file
BIN
MPM OPERATING SYSTEMS/MPM-86/MISC DRI DISKS/04/LIBR.CMD
Normal file
19
MPM OPERATING SYSTEMS/MPM-86/MISC DRI DISKS/04/STD.H
Normal file
@@ -0,0 +1,19 @@
|
||||
/* standard header file for c86 std.h 3/3/81
|
||||
*/
|
||||
|
||||
#define NULL 0
|
||||
#define EOF -1
|
||||
#define STDIN 1
|
||||
#define STDOUT 2
|
||||
#define STDERR 3
|
||||
#define AREAD 0 /* ascii read */
|
||||
#define AWRITE 1 /* ascii write */
|
||||
#define AUPDATE 2 /* ascii update (take care with this one) */
|
||||
#define BREAD 3 /* binary update */
|
||||
#define BWRITE 4 /* binary write */
|
||||
#define BUPDATE 5 /* binary update */
|
||||
#define FILE int
|
||||
|
||||
/* end of standard header file
|
||||
*/
|
||||
|
||||
BIN
MPM OPERATING SYSTEMS/MPM-86/MISC DRI DISKS/05/05.JPG
Normal file
|
After Width: | Height: | Size: 34 KiB |
BIN
MPM OPERATING SYSTEMS/MPM-86/MISC DRI DISKS/05/05.TD0
Normal file
BIN
MPM OPERATING SYSTEMS/MPM-86/MISC DRI DISKS/05/DRC861.CMD
Normal file
58
MPM OPERATING SYSTEMS/MPM-86/MISC DRI DISKS/05/LFUNC1.C
Normal file
@@ -0,0 +1,58 @@
|
||||
#include <logo.h>
|
||||
/*****************************************************************/
|
||||
/* */
|
||||
/* LOGO Primitive Functions-1 */
|
||||
/* */
|
||||
/*****************************************************************/
|
||||
double tan();
|
||||
double sin();
|
||||
double cos();
|
||||
double sqrt();
|
||||
double atan();
|
||||
double exp();
|
||||
double log();
|
||||
double log10();
|
||||
double fabs();
|
||||
|
||||
lnum rnval();
|
||||
lnum nval();
|
||||
|
||||
sub_f ();
|
||||
add_f ();
|
||||
div_f ();
|
||||
lss_f ();
|
||||
gtr_f ();
|
||||
mul_f ();
|
||||
pow_f ();
|
||||
|
||||
nextcom()
|
||||
{
|
||||
editon = FALSE; /* not in editor */
|
||||
defining = FALSE; /* not in TO */
|
||||
getcom('?');
|
||||
if (acceq("to"))
|
||||
makdef();
|
||||
else
|
||||
{
|
||||
if (!(initial || inpath == CONSOLE))
|
||||
{
|
||||
if (!((acceq("make")) ||
|
||||
(acceq("package")) ||
|
||||
(acceq("pprop"))))
|
||||
putcom();
|
||||
}
|
||||
if (acceq("bye"))
|
||||
{
|
||||
full_scr();
|
||||
exit(0);
|
||||
}
|
||||
else
|
||||
if (acceq("collect"))
|
||||
debcoll = !debcoll;
|
||||
else
|
||||
{
|
||||
interp();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
BIN
MPM OPERATING SYSTEMS/MPM-86/MISC DRI DISKS/05/LFUNC1.OBJ
Normal file
613
MPM OPERATING SYSTEMS/MPM-86/MISC DRI DISKS/05/LOGO.H
Normal file
@@ -0,0 +1,613 @@
|
||||
/* note: check accuracy of pi_180 */
|
||||
/* note: eval "0 should produce 0 */
|
||||
#define BDSC 0 /* change to 1 for 8-bit BDS C compiler */
|
||||
|
||||
#if !BDSC
|
||||
#include <stdio.h>
|
||||
#include <ctype.h>
|
||||
#endif
|
||||
|
||||
/*****************************************************************/
|
||||
/* */
|
||||
/* Terminal Characteristics */
|
||||
/* */
|
||||
/*****************************************************************/
|
||||
#define TRUE 1
|
||||
#define FALSE !TRUE
|
||||
#define TEST FALSE
|
||||
#define GENBIN FALSE /* set to TRUE in lgen.sub */
|
||||
|
||||
#define OTRONA FALSE
|
||||
#define Z19 FALSE
|
||||
#define IBMPC FALSE /* Select IBM PC Graphics */
|
||||
#define CIO FALSE /* TRUE if using C's I/O */
|
||||
#define DIRIO TRUE /* direct PC character I/O */
|
||||
#define ASCII FALSE /* Use ASCII Graphics */
|
||||
|
||||
#define P80 TRUE /* TRUE if 8-bit target */
|
||||
#if Z19 || OTRONA || IBMPC
|
||||
#define SCRROWS 24
|
||||
#define SCRCOLS 79 /* lines on the screen */
|
||||
#define TWOSCR FALSE
|
||||
#endif
|
||||
#if DIRIO
|
||||
#define SCRROWS 25
|
||||
#define SCRCOLS 80
|
||||
#define TWOSCR TRUE /* TRUE if two screen support */
|
||||
#endif
|
||||
#define SCRSPLT 21 /* default split row */
|
||||
#define SCRHCOLS 40 /* half column mode width */
|
||||
|
||||
#define WINDOWS 2 /* max number of windows */
|
||||
#define TABSIZE 4 /* tab stops */
|
||||
#define XYLEN 4 /* length of cursor position seq */
|
||||
/*****************************************************************/
|
||||
/* */
|
||||
/* DEFINE's Taken From BDCSIO.H */
|
||||
/* */
|
||||
/*****************************************************************/
|
||||
#define SECSIZ 128 /* sector size */
|
||||
#define NSECTS 8 /* number to read/write */
|
||||
#define BUFSIZ (NSECTS * SECSIZ + 6)
|
||||
/*****************************************************************/
|
||||
/* */
|
||||
/* Control Characters */
|
||||
/* */
|
||||
/*****************************************************************/
|
||||
#define CTLA 1 /* beginning of line */
|
||||
#define CTLB 2 /* one space back */
|
||||
#define CTLC 3 /* end edit */
|
||||
#define CTLD 4 /* erase char at cursor */
|
||||
#define CTLE 5 /* to end of current line */
|
||||
#define CTLF 6 /* forward one space */
|
||||
#define CTLG 7 /* immediate Throw "TOPLEVEL */
|
||||
#define CTLH 8 /* back one character */
|
||||
#define CTLI 9 /* tab ('\t') */
|
||||
#define CTLJ 10 /* line feed */
|
||||
#define CTLK 11 /* erase beyond cursor */
|
||||
#define CTLL 12 /* current line to center */
|
||||
#define CTLM 13 /* carriage return */
|
||||
#define CTLN 14 /* next page */
|
||||
#define CTLO 15 /* open a line */
|
||||
#define CTLP 16 /* previous page */
|
||||
#define CTLQ 17 /* insert \ */
|
||||
#define CLTS 19 /* Graphics mode */
|
||||
#define CTLS 19 /* Split Screen Mode */
|
||||
#define CTLT 20 /* Text Mode */
|
||||
#define CTLU 21 /* same as CTLF */
|
||||
#define CTLV 22 /* make last line first line */
|
||||
#define CTLW 23 /* wait */
|
||||
#define CTLX 24 /* (unused) */
|
||||
#define CTLY 25 /* yank kill buffer */
|
||||
#define CTLZ 26 /* PAUSE */
|
||||
#define ESC 27 /* escape key */
|
||||
#define DEL 127 /* delete character left */
|
||||
/* characters that delete character queue outside editor */
|
||||
char ctlscr [] = {CTLL, CTLS, CTLT, CTLW, CTLZ, 0};
|
||||
/*****************************************************************/
|
||||
/* */
|
||||
/* IBM PC Function Keys */
|
||||
/* */
|
||||
/*****************************************************************/
|
||||
#if DIRIO
|
||||
char keytab [] = {
|
||||
59, CTLC, 0, 0, /* F1 = 59 */
|
||||
60, CTLG, 0, 0, /* F2 = 60 */
|
||||
61, CTLW, 0, 0, /* F3 = 61 */
|
||||
62, CTLZ, 0, 0, /* F4 = 62 */
|
||||
63, CTLK, 0, 0, /* F5 = 63 */
|
||||
64, CTLY, 0, 0, /* F6 = 64 */
|
||||
65, CTLL, 0, 0, /* F7 = 65 */
|
||||
66, CTLX, 0, 0, /* F8 = 66 (unused) */
|
||||
67, CTLA, 0, 0, /* F9 = 67 */
|
||||
68, CTLE, 0, 0, /* F10 = 68 */
|
||||
71, ESC, '<', 0, /* HOME = 71 */
|
||||
72, CTLP, 0, 0, /* UP ARROW = 72 */
|
||||
73, ESC, 'V', 0, /* PG UP = 73 */
|
||||
75, CTLB, 0, 0, /* LEFT ARROW = 75 */
|
||||
77, CTLF, 0, 0, /* RIGHT ARROW = 77 */
|
||||
79, ESC, '>', 0, /* END = 79 */
|
||||
80, CTLN, 0, 0, /* DOWN ARROW = 80 */
|
||||
81, CTLV, 0, 0, /* PG DN = 81 */
|
||||
82, CTLO, 0, 0, /* INS = 82 */
|
||||
83, CTLD, 0, 0, /* DEL = 83 */
|
||||
0};
|
||||
#endif
|
||||
/*****************************************************************/
|
||||
/* */
|
||||
/* Generally Useful DEFINE's */
|
||||
/* */
|
||||
/*****************************************************************/
|
||||
#define LODEDIT 0 /* editor(LODEDIT) loads overlay */
|
||||
#define SCREDIT 1 /* editor(SCREDIT) to screen edit */
|
||||
#define LINEDIT 2 /* editor(LINEDIT) to line edit */
|
||||
#define COPYEDIT 3 /* editor(COPYEDIT) compacts buffer */
|
||||
#define EDTMIN 512 /* minimum editor buffer size */
|
||||
#define EDTSTK 384 /* minimum editor stack size */
|
||||
#if BDSC
|
||||
#define ASPACE 0 /* Alloc space at end of ENDEXT */
|
||||
#define EDTSIZE BUFSIZ /* interp stack: EDTSTK+EDTSIZE */
|
||||
#endif
|
||||
#if !BDSC
|
||||
#define ASPACE 512 /* buffer space for load/save */
|
||||
#define EDTSIZE 8192 /* interp stack: EDTSTK+EDTSIZE */
|
||||
#endif
|
||||
#define INIDSIZE 8192 /* must be 8k */
|
||||
#define INIDSTK 128 /* stack size for initd */
|
||||
#define CQSIZE 64 /* character queue size (^2) */
|
||||
|
||||
#define ENVSIZE 3 /* number of elt*'s to hold env */
|
||||
#define INSIZE 134 /* size of input buffer */
|
||||
#define KILLSIZE INSIZE /* size of kill buffer */
|
||||
#define WDBSIZE INSIZE /* word construction buffer */
|
||||
#define NUMBSIZE 32 /* number buffer size (23 enough) */
|
||||
#define HASHSIZE 128 /* (power of two) size of hash table */
|
||||
#define TAGS TRUE /* using extra byte for collect */
|
||||
#define lnum double /* logo number */
|
||||
#define local register /* register variable */
|
||||
#define CEXP 'e' /* C exponent indicator in fp numbers */
|
||||
#define LEXP 'e' /* Logo exponent indicator */
|
||||
#define PI 3.1415926535897932
|
||||
#define PI_180 57.2957795130823 /* 180 / pi */
|
||||
#define TRIGPR 1.0E-15 /* all trig functions below this -> 0 */
|
||||
/*****************************************************************/
|
||||
/* */
|
||||
/* DEFINE's and Declarations for LOGO List Structure */
|
||||
/* */
|
||||
/*****************************************************************/
|
||||
#define NULL 0 /* null element of list */
|
||||
#define LISTSIZE 3000 /* number of list elements */
|
||||
#define RESERVE 200 /* minimun cell count before OUT OF SPACE */
|
||||
#define TOOCLOSE 100 /* minimun remaining stack at "testkb" */
|
||||
#define STKCHECK 30 /* number of recursive calls before stack check */
|
||||
|
||||
int env [ENVSIZE]; /* holds environment, copied to envelt's */
|
||||
int obenv [ENVSIZE]; /* holds outer block environment */
|
||||
int mtoenv[ENVSIZE]; /* holds env for lgets */
|
||||
int insenv[ENVSIZE]; /* holds env for char insert */
|
||||
|
||||
union ltod_tag
|
||||
{
|
||||
long lmant[2];
|
||||
double dmant;
|
||||
} ltod;
|
||||
#if TAGS
|
||||
#define CELLSIZE 5 /* number of char's per cell */
|
||||
#define COLLMASK 0x80 /* collection mask over tag field */
|
||||
union listelt {
|
||||
struct cell {
|
||||
char ctag;
|
||||
union listelt *carf;
|
||||
union listelt *cdrf;
|
||||
}cell1;
|
||||
struct pcell {
|
||||
char ptag;
|
||||
union listelt *pcdr;
|
||||
int (*pfunc)();
|
||||
};
|
||||
struct ccell {
|
||||
char cctag;
|
||||
int collf;
|
||||
union listelt *ccdr;
|
||||
};
|
||||
struct ecell {
|
||||
char etag;
|
||||
union listelt *ecar;
|
||||
int envelt;
|
||||
};
|
||||
struct scell {
|
||||
char stag;
|
||||
union listelt *scar;
|
||||
int svalue;
|
||||
};
|
||||
struct lcell {
|
||||
char ltag;
|
||||
long lvalue;
|
||||
};
|
||||
struct fcell {
|
||||
char ftag;
|
||||
float fvalue;
|
||||
};
|
||||
struct dcell {
|
||||
char dtag;
|
||||
long dvalue;
|
||||
};
|
||||
char pnamef[CELLSIZE];
|
||||
};
|
||||
#endif
|
||||
|
||||
#if !TAGS
|
||||
#define CELLSIZE 4 /* number of characters in a cell */
|
||||
#define COLLMASK 0x8000 /* collection mask over car field */
|
||||
union listelt {
|
||||
struct cell {
|
||||
union listelt *carf;
|
||||
union listelt *cdrf;
|
||||
}cell1;
|
||||
struct pcell {
|
||||
union listelt *pcar;
|
||||
int (*pfunc)();
|
||||
};
|
||||
struct ccell {
|
||||
int collf;
|
||||
union listelt *ccdr;
|
||||
};
|
||||
struct ecell {
|
||||
union listelt *ecar;
|
||||
int envelt;
|
||||
};
|
||||
/* note: cells for short, long, float and double */
|
||||
/* depend upon representation: a collect bit is */
|
||||
/* required within the number (prefer high bit) */
|
||||
char pnamef[CELLSIZE];
|
||||
};
|
||||
#endif
|
||||
#define elt union listelt
|
||||
/*****************************************************************/
|
||||
/* */
|
||||
/* Procedure Declarations */
|
||||
/* */
|
||||
/*****************************************************************/
|
||||
elt *getprop();
|
||||
elt *stmove();
|
||||
|
||||
#define linefeed LINEFEED
|
||||
#define lcenter LCENTER
|
||||
/*****************************************************************/
|
||||
/* */
|
||||
/* Variable Declarations */
|
||||
/* */
|
||||
/*****************************************************************/
|
||||
elt *freelist;
|
||||
elt *listaddr; /* next to allocate */
|
||||
elt *nxtelist; /* preallocated cell for elist */
|
||||
int listbase; /* lowest allocated + 1 */
|
||||
int exspace; /* TRUE if working in reserve memory */
|
||||
int initial; /* TRUE during initialization */
|
||||
int debcoll; /* TRUE if collecting on each getelt */
|
||||
int traceall; /* TRUE if all functions traced */
|
||||
int stkcalls; /* keeps track of stack check calls */
|
||||
int spinseed; /* seed for "spin" */
|
||||
unsigned memmax; /* note: temp for testing, make it LISTSIZE */
|
||||
unsigned listcount; /* number of nodes remaining */
|
||||
|
||||
elt *next_wl; /* next word list elt to scan */
|
||||
elt *act_wl; /* active word list elt */
|
||||
int index_wl; /* current index to word list */
|
||||
elt *next_pl; /* next property list to process */
|
||||
elt *act_att; /* active attribute */
|
||||
elt *act_val; /* active value */
|
||||
/*****************************************************************/
|
||||
/* */
|
||||
/* Editor Declarations */
|
||||
/* */
|
||||
/*****************************************************************/
|
||||
#if !CIO
|
||||
char *dsknext; /* next edtmem char to read */
|
||||
int dskcount; /* number of characters in edtmem */
|
||||
int incount; /* counts size of input in disk read */
|
||||
int eofset; /* TRUE when EOF on disk */
|
||||
#endif
|
||||
int errproc; /* pointer to last proc with error */
|
||||
int editline; /* entry line number for editor */
|
||||
elt *errline; /* pointer to line in error */
|
||||
int editcol; /* entry column number for editor */
|
||||
elt *errcol; /* pointer to item in error */
|
||||
char *inptr; /* pointer to input in lgets */
|
||||
char *enptr; /* pointer to end of line in lgets */
|
||||
char *savptr; /* original enptr pointer in lgets */
|
||||
char *oldnext; /* pointer to end in sc_end */
|
||||
char *newnext; /* move pointer in sc_end */
|
||||
char *edtptr; /* pointer to text after edit with ^g */
|
||||
char nulchr; /* set to '\0' for lgets */
|
||||
int incnt; /* buffer character count in lgets */
|
||||
int lncnt; /* length of line in lgets */
|
||||
int editing; /* TRUE if screen editing */
|
||||
int linedit; /* TRUE if line editing */
|
||||
int loading; /* TRUE if reading from load cmd. */
|
||||
/*****************************************************************/
|
||||
/* */
|
||||
/* DEFINE's and Declarations for LOGO Atom Scanner */
|
||||
/* */
|
||||
/*****************************************************************/
|
||||
#define EOL 0 /* Scanner End of Line */
|
||||
#define CONSTANT 1 /* Scanner, LOGO Constant "xxx */
|
||||
#define VALUEREF 2 /* Scanner, LOGO Value reference :xxx */
|
||||
#define NUMBER 3 /* Scanner, LOGO Number */
|
||||
#define SYMBOL 4 /* Scanner, LOGO Unadorned Symbol xxx */
|
||||
#define SNUMBER 5 /* Short Number (16b) */
|
||||
#define LNUMBER 6 /* Long Number (32b) */
|
||||
#define FNUMBER 7 /* Float Number (32b) */
|
||||
#define DNUMBER 8 /* Double Prec (64b) */
|
||||
#define RESERVED 8 /* Number of Reserved Pointers */
|
||||
|
||||
#define NOSPACE 1 /* error EXIT return */
|
||||
#define STUNDER 2 /* interpreter stack underflow EXIT */
|
||||
#define SYSBUG 3 /* unrecoverable system bug */
|
||||
|
||||
#define PROCHEAD 0 /* print proc. heads in makeASCII */
|
||||
#define PROCALL 1 /* print entire proc. in makeASCII */
|
||||
#define VARS 2 /* print variables in makeASCII */
|
||||
#define PROPS 3 /* print out properties */
|
||||
#define PACKS 4 /* print of packages */
|
||||
|
||||
|
||||
#define EOLCHR '!' /* end of line overflow character */
|
||||
|
||||
#define UNARY_STR "\177- " /* non-user definable symbol-linit2 */
|
||||
#define FULLSCR 0 /* scrmode is full graphics screen */
|
||||
#define SPLITSCR 1 /* scrmode is split screen */
|
||||
#define DUALSCR 2 /* scrmode is two screens */
|
||||
#define TEXTSCR 3 /* scrmode is full text screen */
|
||||
int scrmode; /* FULL, SPLIT, DUAL, TEXT */
|
||||
int twoscreen; /* TRUE if two physical screens */
|
||||
int textset; /* used to toggle ctl-t */
|
||||
|
||||
char charq[CQSIZE]; /* character queue */
|
||||
int ntq, ntp, ntg; /* number queued, next put, next get */
|
||||
char input[INSIZE]; /* input buffer */
|
||||
char killbuf[KILLSIZE]; /* kill buffer */
|
||||
char numbuff[NUMBSIZE]; /* number construction buffer */
|
||||
char wdbuff[WDBSIZE]; /* word construction buffer */
|
||||
int wdbfill; /* TRUE when filling wdbuff */
|
||||
elt *hashtab[HASHSIZE]; /* atom hash table */
|
||||
int hashcode; /* current hash code */
|
||||
char *accum;
|
||||
char *nxtacc;
|
||||
char nxtchr;
|
||||
char lstchr;
|
||||
char kbrdy; /* lookahead character for input */
|
||||
unsigned acclen;
|
||||
unsigned acctyp;
|
||||
lnum accval;
|
||||
int accsign;
|
||||
int unary; /* Flags SYMBOL as unary in SCAN */
|
||||
int firstch; /* first char of line, for comments */
|
||||
int column; /* column number, 1 - width */
|
||||
int row; /* row number, 1 - height */
|
||||
int splitrow; /* row to begin splitscreen */
|
||||
int lineno; /* current line number in lgets */
|
||||
int entcol; /* column number on entry to lgets */
|
||||
int maxrow; /* max row in lgets */
|
||||
int endrow; /* used in displaying screen tail */
|
||||
int savrow; /* used to compute maxrow */
|
||||
int width;
|
||||
int height;
|
||||
int lmarg; /* left margin */
|
||||
int tmarg; /* top margin */
|
||||
int txtscr; /* TRUE if text scroll */
|
||||
int lastwh; /* last value of 'where' */
|
||||
int spaces; /* counts spaces at start of line */
|
||||
int eos; /* TRUE if end of statement */
|
||||
int scrskip; /* used during manual scroll */
|
||||
|
||||
#if DIRIO
|
||||
int absrow; /* absolute screen row */
|
||||
int abscol; /* absolute screen column */
|
||||
#endif
|
||||
|
||||
int cwindow; /* current window number */
|
||||
int nwindow; /* next window to allocate */
|
||||
int rowv [WINDOWS]; /* row value */
|
||||
int columnv [WINDOWS]; /* column value */
|
||||
int tmargv [WINDOWS]; /* tmarg value */
|
||||
int lmargv [WINDOWS]; /* lmarg value */
|
||||
int heightv [WINDOWS]; /* height value */
|
||||
int widthv [WINDOWS]; /* width value */
|
||||
#if !DIRIO
|
||||
char *scrbufv [WINDOWS]; /* scroll buffer base */
|
||||
char *scrbuf; /* current scroll buffer */
|
||||
char *nscrbuf; /* initial edtmem address */
|
||||
#endif
|
||||
/*****************************************************************/
|
||||
/* */
|
||||
/* DEFINE's and Declarations for Interpreter */
|
||||
/* */
|
||||
/*****************************************************************/
|
||||
int editon; /* TRUE when in the editor */
|
||||
int defining; /* TRUE when defining a function */
|
||||
int formatting; /* TRUE if formatting on */
|
||||
int fmtcnt; /* item counter for formats */
|
||||
int copyon; /* TRUE when also listing on printer */
|
||||
int pagemode; /* line count > 0 if in page mode */
|
||||
int primitives; /* TRUE if help for primitives */
|
||||
int last_test; /* value of last TEST */
|
||||
|
||||
elt *parenloc; /* used to mark ( func */
|
||||
elt *format; /* indent format during i/o */
|
||||
elt *lstform; /* last format elt in list */
|
||||
elt *primlist; /* list of primitives when primitives enabled */
|
||||
elt *rlist; /* pointer to reserved pointer list */
|
||||
elt *trlist; /* list of procedures being traced */
|
||||
elt *proclist; /* ordered list of procedures */
|
||||
elt *glob_pack; /* global package name from Load command */
|
||||
elt *po_list; /* porefs, potl list */
|
||||
|
||||
int pen_color; /* current pen color */
|
||||
elt *pen_state; /* = pd, pe, pu, pr, ptr */
|
||||
elt *pd_ptr; /* pointer to PENDOWN */
|
||||
elt *pe_ptr; /* pointer to PENERASE */
|
||||
elt *pu_ptr; /* pointer to PENUP */
|
||||
elt *pr_ptr; /* pointer to PENREVERSE */
|
||||
|
||||
elt *true_ptr; /* pointer to TRUE */
|
||||
elt *false_ptr; /* pointer to FALSE */
|
||||
elt *def_ptr; /* Function Definition Attribute */
|
||||
elt *part_ptr; /* ELIST Partial [ a . fn ] */
|
||||
elt *func_ptr; /* ELIST Function [q p a . fn] */
|
||||
elt *catch_ptr; /* ELIST Catch */
|
||||
elt *pau_ptr; /* ELIST Pause */
|
||||
elt *apval_ptr; /* APVAL symbol */
|
||||
elt *fmt_ptr; /* FMT pointer */
|
||||
elt *spc_ptr; /* SPC pointer */
|
||||
elt *rem_ptr; /* REM pointer */
|
||||
elt *enl_ptr; /* ENL pointer */
|
||||
elt *bury_ptr; /* BUR pointer */
|
||||
elt *pack_ptr; /* PAK pointer */
|
||||
elt *pkg_ptr; /* PKG pointer */
|
||||
elt *prim_ptr; /* PRM pointer */
|
||||
|
||||
elt *top_ptr; /* TOPLEVEL pointer */
|
||||
elt *emp_ptr; /* "an empty word" pointer */
|
||||
elt *lpar_ptr; /* ( pointer */
|
||||
elt *rpar_ptr; /* ) pointer */
|
||||
elt *err_ptr; /* ERROR pointer */
|
||||
elt *equ_ptr; /* = pointer */
|
||||
elt *lss_ptr; /* < pointer */
|
||||
elt *gtr_ptr; /* > pointer */
|
||||
elt *add_ptr; /* + pointer */
|
||||
elt *unary_ptr; /* - (unary) pointer */
|
||||
elt *sub_ptr; /* - (binary) pointer */
|
||||
elt *mul_ptr; /* * pointer */
|
||||
elt *pow_ptr; /* ^ pointer */
|
||||
elt *div_ptr; /* / pointer */
|
||||
elt *lab_ptr; /* label-pointer */
|
||||
elt *redef_ptr; /* REDEFP pointer */
|
||||
elt *noack_ptr; /* NOACK pointer */
|
||||
elt *erract_ptr; /* ERRACT pointer */
|
||||
|
||||
elt *label; /* used in go_func to search for label */
|
||||
elt *lasterr; /* current error message or NULL */
|
||||
elt *parenloc; /* keeps track of ( in ( prim ... */
|
||||
elt *cprim; /* current active primitive, or NULL */
|
||||
elt *lfunc; /* last function or primitive */
|
||||
elt *elist; /* expression list for interp */
|
||||
elt *alist; /* association list */
|
||||
elt *plist; /* current statement */
|
||||
elt *qlist; /* current verb */
|
||||
elt *qval; /* often car(qlist) */
|
||||
elt *nxtfn; /* pointer to scan elist for functions */
|
||||
elt *fb; /* active function body */
|
||||
elt *wdbptr; /* active printname in word buffer */
|
||||
elt *retval; /* return value ptr, or NOVALUE */
|
||||
|
||||
|
||||
#define NOVALUE 1 /* No Value Returned */
|
||||
#define TOOBIG 2 /* Number too big */
|
||||
#define ISPRIM 6 /* (symbol) is a Primitive */
|
||||
#define NOLABEL 7 /* Can't find label (symbol) */
|
||||
#define UNDEF 9 /* (symbol) is Undefined */
|
||||
#define BADDISK 11 /* I'm having trouble with the disk */
|
||||
#define FULLDISK 12 /* Disk full */
|
||||
#define DIVZERO 13 /* Can't divide by zero */
|
||||
#define FILEX 15 /* File already exists */
|
||||
#define NOFILE 17 /* File not found */
|
||||
#define NOCAT 21 /* Can't Find Catch for (Symbol) */
|
||||
#define OOSPACE 23 /* Out of space */
|
||||
#define NOTBOOL 25 /* (symbol) is not TRUE or FALSE */
|
||||
#define TOOFEW 29 /* Not Enough Inputs to (Procedure) */
|
||||
#define TOOMANY 30 /* Too many inputs to (Procedure) */
|
||||
#define TSHORT 32 /* Too few items in (list or char) */
|
||||
#define TURTOB 34 /* Turtle out of bounds */
|
||||
#define NOPROC 35 /* I Don't Know How to (symbol) */
|
||||
#define NOVAL 36 /* (symbol) has no value */
|
||||
#define RLPAR 37 /* ) without ( */
|
||||
#define WHYVAL 38 /* I Don't Know What to Do With (symbol) */
|
||||
#define BADINP 41 /* (procedure) Doesn't Like (sym) as Input */
|
||||
#define NOOUT 42 /* (procedure) Didn't Output */
|
||||
#define NOTIMP 43 /* primitive not implemented */
|
||||
#define SYSERR 44 /* !!! LOGO SYSTEM BUG !!! */
|
||||
#define WDBOVER 45 /* word is too big */
|
||||
#define EDTFULL 46 /* My edit buffer is full */
|
||||
#define IFLIST 47 /* If wants [ ]'s around instructions */
|
||||
#define INITD 48 /* initd error (varies) */
|
||||
#define BADPARM 49 /* bad parameter in "to" definition */
|
||||
#define NOLOAD 50 /* Illegal function while loading */
|
||||
#define EDTLOAD 51 /* Can't load from the editor */
|
||||
#define ROD 53 /* The disk is write protected */
|
||||
#define ROF 54 /* The file is write protected */
|
||||
#define SELERR 55 /* I can't find the disk drive */
|
||||
/*****************************************************************/
|
||||
/* */
|
||||
/* DEFINE's for Interpreter Descriptors */
|
||||
/* */
|
||||
/*****************************************************************/
|
||||
#define DESCQL 1 /* qlist in FUN, CAT, PAU */
|
||||
#define DESCPL 2 /* plist in FUN, CAT, PAU */
|
||||
#define DESCNM 3 /* name in FUN, CAT */
|
||||
#define DESCAL 4 /* alist in FUN */
|
||||
#define FUNSIZE ENVSIZE + 5 /* size of FUNction desc */
|
||||
#define CATSIZE ENVSIZE + 4 /* size of CATch desc */
|
||||
#define PAUSIZE ENVSIZE + 2 /* size of PAUse desc */
|
||||
#define REPSIZE ENVSIZE + 3 /* size of REPeat desc */
|
||||
|
||||
#define CONSOLE 0 /* output path is console */
|
||||
#define EDITOR 1 /* output path is edit buffer */
|
||||
#define DISK 2 /* output path is disk */
|
||||
int inpath; /* current input path: CONSOLE EDITOR DISK */
|
||||
int outpath; /* current output path: CONSOLE EDITOR */
|
||||
#if CIO
|
||||
int save_fid; /* used in binary save/load */
|
||||
int io_fid; /* standard i/o file id */
|
||||
char iobuf[BUFSIZ]; /* standard i/o buffer */
|
||||
#endif
|
||||
/*****************************************************************/
|
||||
/* */
|
||||
/* Low-Level BDOS Interface Parameters */
|
||||
/* */
|
||||
/*****************************************************************/
|
||||
struct fcbtab { /****************************/
|
||||
char drive; /* Disk drive field */
|
||||
char fname[8]; /* File name */
|
||||
char ftype[3]; /* File type */
|
||||
char extent; /* Current extent number */
|
||||
char s1,s2; /* "system reserved" */
|
||||
char reccnt; /* Record counter */
|
||||
char resvd[16]; /* More "system reserved" */
|
||||
char currec; /* current record */
|
||||
int record; /* random record field */
|
||||
char rrover; /* random record overflow */
|
||||
}; /****************************/
|
||||
struct fcbtab fcb; /* standard fcb in lfunc7 */
|
||||
struct fcbtab fcb1; /* auxiliary fcb in lfunc7 */
|
||||
#if !CIO /* */
|
||||
struct fcbtab dfcb; /* disk fcb for load/save */
|
||||
#endif /* */
|
||||
/****************************/
|
||||
#define DEFDMA 0x0080 /* Default DMA Address */
|
||||
#define EXIT 0 /* Exit to BDOS */
|
||||
#define CONOUT 2 /* Direct console output */
|
||||
#define RESDSK 13 /* Reset disk system */
|
||||
#define SELDSK 14 /* Select Disk */
|
||||
#define OPEN 15 /* OPEN a disk file */
|
||||
#define CLOSE 16 /* Close a disk file */
|
||||
#define FSEARCH 17 /* Search for First */
|
||||
#define NSEARCH 18 /* Search for Next */
|
||||
#define DELETE 19 /* Delete a disk file */
|
||||
#define SREAD 20 /* Sequential Read */
|
||||
#define SWRITE 21 /* Sequential Write */
|
||||
#define CREATE 22 /* Create a disk file */
|
||||
#define RENAME 23 /* Rename a File */
|
||||
#define CURDSK 25 /* Current disk number */
|
||||
#define SETDMA 26 /* Set DMA address */
|
||||
#define ALLOC 27 /* Get Alloc Vector Addr */
|
||||
#define DISKPAR 31 /* Get Disk Parameter Addr */
|
||||
#define RREAD 33 /* Read Random record */
|
||||
#define RWRITE 34 /* Write Random record */
|
||||
#define FILSIZ 35 /* Compute File Size */
|
||||
#define NEWDSK 37 /* reset disk drive */
|
||||
#define SETMSC 44 /* Set Multi-Sector Count */
|
||||
#define SETVEC 61 /* Set exception vector */
|
||||
/****************************/
|
||||
/*****************************************************************/
|
||||
/* */
|
||||
/* Logo optimization definitions */
|
||||
/* */
|
||||
/*****************************************************************/
|
||||
|
||||
#include <logopt.h>
|
||||
|
||||
/*****************************************************************/
|
||||
/* */
|
||||
/* LOGO List Structure, must be last */
|
||||
/* */
|
||||
/*****************************************************************/
|
||||
#if P80
|
||||
char *edtmem; /* initmem puts this below stack */
|
||||
elt *listmem; /* initmem puts this below edtmem */
|
||||
#endif
|
||||
#if !P80
|
||||
char edtmem[EDTSIZE]; /* edit buffer */
|
||||
elt listmem[LISTSIZE]; /* list storage must be last */
|
||||
#endif
|
||||
|
||||
52
MPM OPERATING SYSTEMS/MPM-86/MISC DRI DISKS/05/LOGOPT.H
Normal file
@@ -0,0 +1,52 @@
|
||||
#define CARDEF /* Use inline macro version of elt *car(p) */
|
||||
#define CDRDEF /* Use inline macro version of elt *cdr(p) */
|
||||
|
||||
/*STACK_CHK*/ /* No checks for null ptr in stack routines*/
|
||||
|
||||
#define STCOPYDEF /* macro version of elt *stcopy() */
|
||||
#define STREPDEF /* macro version of elt *strep(p) */
|
||||
#define STEMPTYDEF /* macro version of elt *stempty */
|
||||
|
||||
#define NULLPDEF
|
||||
#define SET_NOVALUEDEF
|
||||
|
||||
#ifdef CARDEF
|
||||
#define car(p) ((p)->cell1.carf)
|
||||
#else
|
||||
elt *carf();
|
||||
#endif
|
||||
|
||||
#ifdef CDRDEF
|
||||
#define cdr(p) ((p)->cell1.cdrf)
|
||||
#else
|
||||
elt *cdrf();
|
||||
#endif
|
||||
|
||||
#ifdef STCOPYDEF
|
||||
#define stcopy() (elist->cell1.cdrf)
|
||||
#else
|
||||
elt *stcopy();
|
||||
#endif
|
||||
|
||||
#ifdef STREPDEF
|
||||
#define strep(p) replacd(elist,(p))
|
||||
#else
|
||||
elt *strep();
|
||||
#endif
|
||||
|
||||
#ifdef STEMPTYDEF
|
||||
#define stempty() (elist == NULL)
|
||||
#else
|
||||
int stempty();
|
||||
#endif
|
||||
|
||||
#ifdef NULLPDEF
|
||||
#define nullp(p) ((p) == NULL)
|
||||
#else
|
||||
int nullp();
|
||||
#endif
|
||||
|
||||
#ifdef SET_NOVALUEDEF
|
||||
#define set_novalue() retval = NOVALUE
|
||||
#endif
|
||||
|
||||
BIN
MPM OPERATING SYSTEMS/MPM-86/MISC DRI DISKS/06/06.JPG
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
MPM OPERATING SYSTEMS/MPM-86/MISC DRI DISKS/06/06.TD0
Normal file
BIN
MPM OPERATING SYSTEMS/MPM-86/MISC DRI DISKS/06/ATTACH.CPM
Normal file
BIN
MPM OPERATING SYSTEMS/MPM-86/MISC DRI DISKS/06/COMPARE.CPM
Normal file
BIN
MPM OPERATING SYSTEMS/MPM-86/MISC DRI DISKS/06/CONFIG.CPM
Normal file
44
MPM OPERATING SYSTEMS/MPM-86/MISC DRI DISKS/06/COPYRPAG.LIB
Normal file
@@ -0,0 +1,44 @@
|
||||
.po 15
|
||||
.ll 50
|
||||
.ce
|
||||
COPYRIGHT
|
||||
.sp
|
||||
Copyright (c) 1980 by Digital Research. All rights reserved.
|
||||
No part of this publication may be reproduced, transmitted,
|
||||
transcribed, stored in a retrieval system, or translated
|
||||
into any language or computer language, in any form or
|
||||
by any means, electronic, mechanical, magnetic, optical,
|
||||
chemical, manual or otherwise, without the prior written
|
||||
permission of Digital Research, Post Office Box 579, Pacific
|
||||
Grove, California, 93950.
|
||||
.sp 4
|
||||
.ce
|
||||
DISCLAIMER
|
||||
.sp
|
||||
Digital Research makes no representations or warranties with
|
||||
respect to the contents hereof and specifically disclaims
|
||||
any implied warranties of merchantability or fitness for
|
||||
any particular purpose. Further, Digital Research reserves the
|
||||
right to revise this publication and to make changes from
|
||||
time to time in the content hereof without obligation of
|
||||
Digital Research to notify any person of such revision or
|
||||
changes.
|
||||
.sp 4
|
||||
.ce
|
||||
TRADEMARKS
|
||||
.sp
|
||||
CP/M is a registered trademark of Digital Research.
|
||||
CP/NET, MP/M, LINK-80, RMAC and PL/I-80 are trademarks of Digital Research.
|
||||
.sp 10
|
||||
The
|
||||
"YOUR DOCUMENT'S TITLE"
|
||||
was prepared using the Digital Research TEX Text Formatter.
|
||||
.sp 2
|
||||
.ce 3
|
||||
***********************************
|
||||
* First Printing: December 1980 *
|
||||
***********************************
|
||||
.po 10
|
||||
.ll 65
|
||||
.IN 0
|
||||
|
||||
BIN
MPM OPERATING SYSTEMS/MPM-86/MISC DRI DISKS/06/D.CPM
Normal file
BIN
MPM OPERATING SYSTEMS/MPM-86/MISC DRI DISKS/06/DDT.CPM
Normal file
BIN
MPM OPERATING SYSTEMS/MPM-86/MISC DRI DISKS/06/FORMAT.CPM
Normal file
11
MPM OPERATING SYSTEMS/MPM-86/MISC DRI DISKS/06/GENFORM.LIB
Normal file
@@ -0,0 +1,11 @@
|
||||
.mt 5
|
||||
.mb 6
|
||||
.pl 66
|
||||
.ll 64
|
||||
.po 10
|
||||
.pp 5
|
||||
.hm 2
|
||||
.fm 2
|
||||
.he Document Title X.X Second-level Heading
|
||||
.ft All Information Presented Here is Proprietary to Digital Research
|
||||
|
||||
18
MPM OPERATING SYSTEMS/MPM-86/MISC DRI DISKS/06/LEV1.LIB
Normal file
@@ -0,0 +1,18 @@
|
||||
.mt 5
|
||||
.mb 6
|
||||
.pl 66
|
||||
.ll 64
|
||||
.po 10
|
||||
.he
|
||||
.hm 2
|
||||
.fm 2
|
||||
.ce 2
|
||||
.sh
|
||||
Section x
|
||||
.sp
|
||||
.sh
|
||||
head
|
||||
.sp 2
|
||||
.ft All Information Presented Here is Proprietary to Digital Research
|
||||
.tc x head
|
||||
.pp 5
|
||||
6
MPM OPERATING SYSTEMS/MPM-86/MISC DRI DISKS/06/LEV2.LIB
Normal file
@@ -0,0 +1,6 @@
|
||||
.sp 2
|
||||
.he DR Logo Reference Manual x.x 2 head
|
||||
.tc x.x 2 head
|
||||
.sh
|
||||
x.x 2 head
|
||||
.pp
|
||||
5
MPM OPERATING SYSTEMS/MPM-86/MISC DRI DISKS/06/LEV3.LIB
Normal file
@@ -0,0 +1,5 @@
|
||||
.sp 2
|
||||
.tc x.x.x 3 head
|
||||
.sh
|
||||
x.x.x 3 head
|
||||
.pp
|
||||
12
MPM OPERATING SYSTEMS/MPM-86/MISC DRI DISKS/06/LITERAL.LIB
Normal file
@@ -0,0 +1,12 @@
|
||||
.sp
|
||||
.in 8
|
||||
.nf
|
||||
?\c
|
||||
.sh
|
||||
print "Salutations!
|
||||
.qs
|
||||
Salutations!
|
||||
.in 0
|
||||
.fi
|
||||
.sp
|
||||
|
||||
18
MPM OPERATING SYSTEMS/MPM-86/MISC DRI DISKS/06/MEMO.LIB
Normal file
@@ -0,0 +1,18 @@
|
||||
.mt 5
|
||||
.mb 6
|
||||
.pl 66
|
||||
.ll 64
|
||||
.po 10
|
||||
.pp 5
|
||||
.hm 2
|
||||
.fm 2
|
||||
.he November 1, 1982
|
||||
.ft Information Presented Here for Digital Research Internal Use Only
|
||||
.sp 2
|
||||
To: Jackie P, Allan B.
|
||||
.sp
|
||||
From: Susan R.
|
||||
.sp
|
||||
Re: PUG-80 Release
|
||||
.sp 3
|
||||
|
||||
BIN
MPM OPERATING SYSTEMS/MPM-86/MISC DRI DISKS/06/MOVE-IT.CPM
Normal file
BIN
MPM OPERATING SYSTEMS/MPM-86/MISC DRI DISKS/06/MOVE-J3.CPM
Normal file
BIN
MPM OPERATING SYSTEMS/MPM-86/MISC DRI DISKS/06/PIP.CPM
Normal file
43
MPM OPERATING SYSTEMS/MPM-86/MISC DRI DISKS/06/PLATE.LIB
Normal file
@@ -0,0 +1,43 @@
|
||||
|
||||
.fi
|
||||
.he DR Logo Language Reference Manual PRIMITIVE
|
||||
.bp
|
||||
.tc PRIMITIVE
|
||||
.nf
|
||||
.in 0
|
||||
.sh
|
||||
PRIMITIVE
|
||||
_________________________________________________________________
|
||||
.fi
|
||||
.in 14
|
||||
.sp 2
|
||||
.ti -14
|
||||
Purpose: \c
|
||||
Outputs what it's supposed to.
|
||||
.sp 2
|
||||
.nf
|
||||
.ti -14
|
||||
Versions: DR Logo Advanced DR Logo IBM PC specific
|
||||
.ti -14
|
||||
yes yes no
|
||||
.fi
|
||||
.sp 2
|
||||
.nf
|
||||
.ti -14
|
||||
Syntax: \c
|
||||
full-length PRIMITIVE
|
||||
abbreviated PRIMITIVE
|
||||
.fi
|
||||
.sp 2
|
||||
.ti -14
|
||||
Explanation: \c
|
||||
Supply some explanitory text here. This is simply filled out for
|
||||
format test purposes. I don't understand why it comes out looking
|
||||
so funny.
|
||||
.sp 2
|
||||
.ti -14
|
||||
Examples: \c
|
||||
To Be Supplied. These also cause alignment problems that might be
|
||||
corrected when printed on the Diablo with WP options.
|
||||
.sp
|
||||
|
||||
11
MPM OPERATING SYSTEMS/MPM-86/MISC DRI DISKS/06/SCREEN.LIB
Normal file
@@ -0,0 +1,11 @@
|
||||
.nf
|
||||
.sp
|
||||
+----------+ +----------+
|
||||
| | | |
|
||||
| | | |
|
||||
| | | |
|
||||
| | | |
|
||||
+----------+ +----------+
|
||||
.sp
|
||||
.fi
|
||||
|
||||
BIN
MPM OPERATING SYSTEMS/MPM-86/MISC DRI DISKS/06/SID.CPM
Normal file
BIN
MPM OPERATING SYSTEMS/MPM-86/MISC DRI DISKS/06/STAT.CPM
Normal file
BIN
MPM OPERATING SYSTEMS/MPM-86/MISC DRI DISKS/06/SUB.CPM
Normal file
BIN
MPM OPERATING SYSTEMS/MPM-86/MISC DRI DISKS/06/SYSGEN.CPM
Normal file
BIN
MPM OPERATING SYSTEMS/MPM-86/MISC DRI DISKS/06/TEX.CPM
Normal file
22
MPM OPERATING SYSTEMS/MPM-86/MISC DRI DISKS/06/TITLEPAG.LIB
Normal file
@@ -0,0 +1,22 @@
|
||||
.Ig
|
||||
12/04/80
|
||||
.op
|
||||
.sp 15
|
||||
.ce 100
|
||||
.SH 16
|
||||
YOUR DOCUMENT'S TITLE \
|
||||
.cs 5
|
||||
.sp 10
|
||||
Copyright (c) 1980
|
||||
.sp
|
||||
Digital Research
|
||||
P.O. Box 579
|
||||
801 Lighthouse Avenue
|
||||
Pacific Grove, CA 93950
|
||||
(408) 649-3896
|
||||
TWX 910 360 5001
|
||||
.sp 4
|
||||
All Rights Reserved
|
||||
.ce 0
|
||||
.bp
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
.tc ? #1
|
||||
.tc ?.? #2
|
||||
.tc ?.?.? #3
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
.ti -14
|
||||
Versions: DR Logo Advanced DR Logo IBM PC specific
|
||||
.ti -14
|
||||
yes yes no
|
||||
|
||||
BIN
MPM OPERATING SYSTEMS/MPM-86/MISC DRI DISKS/06/WS.CPM
Normal file
BIN
MPM OPERATING SYSTEMS/MPM-86/MISC DRI DISKS/06/WSMSGS.OVR
Normal file
BIN
MPM OPERATING SYSTEMS/MPM-86/MISC DRI DISKS/06/WSOVLY1.OVR
Normal file
BIN
MPM OPERATING SYSTEMS/MPM-86/MISC DRI DISKS/06/ZWS.CPM
Normal file
439
MPM OPERATING SYSTEMS/MPM-86/MISC DRI DISKS/07/#DRI#07
Normal file
@@ -0,0 +1,439 @@
|
||||
The following disk types are supported by the registered version of 22DISK:
|
||||
===========================================================================
|
||||
Generic CP/M - SSSD 8"
|
||||
ABC-80 - SSDD 48 tpi 5.25"
|
||||
A. B. Dick Magna III - DSDD 48 tpi 5.25"
|
||||
Actrix (Access Matrix) - SSDD 48 tpi 5.25"
|
||||
Actrix (Access Matrix) - DSDD 48 tpi 5.25"
|
||||
Adler Textriter - SSDD 48 tpi 5.25"
|
||||
Advanced Digital Super 6 - SSDD 48 tpi 5.25"
|
||||
Advanced Digital Super 6 - DSDD 48 tpi 5.25"
|
||||
Advanced Digital Super 6 - DSDD 96 tpi 5.25"
|
||||
Advanced Digital Super 8 - DSDD 8"
|
||||
Advanced Digital TurboDOS 312K - DSDD 48 tpi 5.25"
|
||||
Advanced Digital TurboDOS 366K - DSDD 48 tpi 5.25"
|
||||
Advanced Controls - DSDD 96 tpi 5.25"
|
||||
Allen-Bradley Advisor+ - DSDD 3.5"
|
||||
Altos - SSSD 8"
|
||||
Altos - DSSD 8"
|
||||
Altos - SSDD 8"
|
||||
Altos - DSDD 8"
|
||||
Altos Series 5 - DSDD 96 tpi 5.25"
|
||||
Amada Horizon CNC - DSDD 3.5"
|
||||
Amigo - SSDD 48 tpi 5.25"
|
||||
Amigo - DSDD 48 tpi 5.25"
|
||||
Ampro - SSDD 48 tpi 5.25"
|
||||
Ampro - DSDD 48 tpi 5.25"
|
||||
Ampro - SSDD 96 tpi 5.25"
|
||||
Ampro - DSDD 96 tpi 5.25"
|
||||
Ampro - SSDD 3.5"
|
||||
Ampro - DSDD 3.5"
|
||||
Amstrad PCW 8256 - DSDD 96 tpi 5.25"
|
||||
Amstrad CPC464 - SSDD 48 tpi 5.25"
|
||||
Amstrad CPC464 - SSDD 96 tpi 5.25"
|
||||
Amstrad PCW 8512 - SSDD 48 tpi 5.25"
|
||||
Amstrad PCW 8512 - DSDD 48 tpi 5.25"
|
||||
Amstrad PCW 8512 - DSDD 96 tpi 5.25"
|
||||
Amstrad CPC 6128 - DSDD 48 tpi 5.25"
|
||||
Amstrad CPC 6128 - DSDD 96 tpi 5.25"
|
||||
Amstrad CPC 6128 Side 1 - SSDD 3.5"
|
||||
Amstrad CPC 6128 Side 2 - SSDD 3.5"
|
||||
Amstrad PCW w/DU49, Moonstone XFORMAT - DSDD 3.5"
|
||||
Amstrad CPC 6128 Vortex - DSDD 3.5"/96 tpi 5.25"
|
||||
Amstrad PCW 9256, 9512 Disckit - DSDD 3.5"
|
||||
Archive I - SSDD 96 tpi 5.25"
|
||||
Archive II & III - DSDD 96 tpi 5.25"
|
||||
Arisia - SSDD 48 tpi 5.25"
|
||||
Associate - DSDD 48 tpi 5.25"
|
||||
ATR-8000 - SSDD 48 tpi 5.25"
|
||||
ATR-8000 - DSDD 48 tpi 5.25"
|
||||
ATT-7700 - DSDD 3.5"
|
||||
Avatar - DSDD 48 tpi 5.25"
|
||||
Barudan - DSDD 3.5"
|
||||
Beehive - DSDD 48 tpi 5.25"
|
||||
Beehive Microbee - DSDD 48 tpi 5.25"
|
||||
Beehive Microbee - SSDD 3.5"
|
||||
Computer Bell - DSDD 48 tpi 5.25"
|
||||
Big Board (512 bytes/sector) - SSDD 8"
|
||||
Big Board (512 bytes/sector) - DSDD 8"
|
||||
Big Board 1024 bytes/sector - SSDD 8"
|
||||
Bitelex - SSDD 48 tpi 5.25"
|
||||
BMC IF800 Model 20 - DSDD 48 tpi 5.25"
|
||||
Bondwell 12 - SSDD 48 tpi 5.25"
|
||||
Bondwell 14 - DSDD 48 tpi 5.25"
|
||||
Bondwell 2 - SSDD 3.5"
|
||||
BOSS TurboDOS - DSDD 8"
|
||||
BTI Systems - DSDD 48 tpi
|
||||
Burr-Brown - DSDD 48 tpi 5.25"
|
||||
Cal-PC - DSDD 48 tpi 5.25"
|
||||
Cashcom 100 - DSDD 96 tpi 5.25"
|
||||
Casio FP-1100/FP-1020 - DSDD 48 tpi 5.25"
|
||||
CCS (256 bytes/sector) - DSDD 48 tpi 5.25"
|
||||
CCS (512 bytes/sector) - DSDD 48 tpi 5.25"
|
||||
CCS (1024 bytes/sector) - DSDD 48 tpi 5.25"
|
||||
CCS 8 - DSDD 8"
|
||||
CDI-5000 - DSDD 48 tpi 5.25"
|
||||
COLEX 850 - SSDD 96 tpi 5.25"
|
||||
COLEX 850 - DSDD 96 tpi 5.25"
|
||||
CMC Supersystem 2 - DSDD 96 tpi 5.25"
|
||||
Coin - DSDD 96 tpi 5.25"
|
||||
Coleco ADAM, 40 track - SSDD 48 tpi 5.25"
|
||||
Coleco ADAM, 254K - DSDD 48 tpi 5.25"
|
||||
Coleco ADAM, 320K - DSDD 48 tpi 5.25"
|
||||
Coleco ADAM, 720K - DSDD 3.5"
|
||||
Coleco ADAM, 360K - DSDD 48 tpi 5.25"
|
||||
Coleco ADAM, E&T PROM 720K - DSDD 3.5"
|
||||
Coleco ADAM, 720K - DSDD 3.5"
|
||||
Coleco ADAM, 1.44M - DSHD 3.5"
|
||||
Coleco Adam TDOS - DSDD 5.25"
|
||||
Columbia Commander 964 - DSDD 48 tpi 5.25"
|
||||
Columbia 1600 - DSDD 96 tpi 5.25"
|
||||
Compis - DSDD 96 tpi 5.25"
|
||||
Compugraphic MCS-5 - SSDD 48 tpi 5.25"
|
||||
Compustar Model 30 - DSDD 48 tpi 5.25"
|
||||
Compustar 30, Super IOS - DSDD 48 tpi 5.25"
|
||||
Compupro (Viasyn) (1024 bytes/sector) - DSDD 96 tpi 5.25"
|
||||
Compupro (Viasyn) 8/16 - SSDD 8"
|
||||
Compupro (Viasyn) 8/16 - DSDD 8"
|
||||
Compupro (Viasyn) - SSDD 8"
|
||||
Compupro (Viasyn) - SSDD 8"
|
||||
Commodore 1581 drive - DSDD 3.5"
|
||||
Cromemco CDOS - SSSD 48 tpi 5.25"
|
||||
Cromemco CDOS - DSSD 48 tpi 5.25"
|
||||
Cromemco CDOS - SSDD 48 tpi 5.25"
|
||||
Cromemco CDOS - DSDD 48 tpi 5.25"
|
||||
Cromemco CDOS - DSDD 8"
|
||||
Cromemco CP/M - SSDD 48 tpi 5.25"
|
||||
Cromemco CP/M - DSDD 48 tpi 5.25"
|
||||
C/WP Cortex - SSDD 48 tpi 5.25"
|
||||
Cykey - DSDD 48 tpi 5.25"
|
||||
Datavue DV80 - DSDD 48 tpi 5.25"
|
||||
Datavue DV80 - DSDD 96 tpi 5.25"
|
||||
DEC DECMate II - SSDD 96 tpi 5.25"
|
||||
DEC Rainbow - SSDD 96 tpi 5.25"
|
||||
DEC VT-180 - SSDD 48 tpi 5.25"
|
||||
Dictaphone 6000 CP/M - DSDD 96 tpi 5.25"
|
||||
Dictaphone 6000 CP/M - DSDD 96 tpi 5.25"
|
||||
Digilog 2500 - DSDD 48 tpi 5.25"
|
||||
Digilog 1500 - DSDD 96 tpi 5.25"
|
||||
Digitech 500 series - SSDD 3.5"
|
||||
Digitech 500 series - DSDD 3.5"
|
||||
Direct 1025 - DSDD 48 tpi 5.25"
|
||||
Direct 1025 - DSDD 96 tpi 5.25"
|
||||
Discovery - DSDD 96 tpi 5.25"
|
||||
Domino - DSDD 96 tpi 5.25"
|
||||
Duet CP/M - DSDD 96tpi 5.25"
|
||||
Eagle I, II - SSDD 96 tpi 5.25"
|
||||
Eagle III, IV, V - DSDD 96 tpi 5.25"
|
||||
Electroglas/Xynetics - DSDD 48 tpi 5.25"
|
||||
Electroglas/Xynetics - DSDD 3.5"
|
||||
Epson QX-10 - DSDD 48 tpi 5.25"
|
||||
Epson QX-10 (256 bytes/sector) - DSDD 48 tpi 5.25"
|
||||
Epson PX-10/8 - DSDD 3.5"
|
||||
Epson QX-16 640K - DSDD 3.5"
|
||||
Epson QX-16 - DSDD 96 tpi 5.25"
|
||||
Ericsson DTC - SSDD 96 tpi 5.25"
|
||||
Ericsson DTC - DSDD 96 tpi 5.25"
|
||||
Ericsson Step One - DSDD 96 tpi 5.25"
|
||||
Esprit DBS 16 - DSDD 96 tpi 5.25"
|
||||
Estimation Inc. EST101 - DSDD 96 tpi 5.25"
|
||||
Everett/Charles Kryterion 165 - DSDD 8"
|
||||
Eureka A4 - DSDD 3.5"
|
||||
Exidy Sorcerer - SSDD 48 tpi 5.25"
|
||||
EXO - SSDD 8"
|
||||
EXO - DSDD 8"
|
||||
Facit DTC 6500/6503 - SSDD 96 tpi 5.25"
|
||||
Facit DTC - DSDD 96 tpi 5.25"
|
||||
Facit CP/M - SSDD 48 tpi 5.25"
|
||||
F & G Cable Tester - DSDD 3.5"
|
||||
Florida Graphics - DSDD 96 tpi 5.25"
|
||||
Formula 1 - DSDD 48 tpi 5.25"
|
||||
Fujitsu Micro 16 - DSDD 48 tpi 5.25"
|
||||
Fujitsu Micro 8 - DSDD 48 tpi 5.25"
|
||||
Future FX-20 - DSDD 96 tpi 5.25"
|
||||
Gemini Galaxy - 5.25" DSDD 96 tpi
|
||||
Globe 101 - 5.25" DSDD 96 tpi
|
||||
Gnat System 10 - DSDD 48 tpi 5.25"
|
||||
Graco OM-5000 - DSHD 5.25"
|
||||
Hagiwara HPU 801 CP/M 68K - DSDD 3.5" Special
|
||||
Hazeltine - DSDD 96 tpi 5.25"
|
||||
HCL System 2 - DSDD 96 tpi 5.25"
|
||||
Heath H89, Magnolia CP/M - SSDD 48 tpi 5.25"
|
||||
Heath H89, Magnolia CP/M - DSDD 48 tpi 5.25"
|
||||
Heath H89, Magnolia CP/M - DSDD 96 tpi 5.25"
|
||||
Heurikon MLZ-91A - DSDD 96 tpi 5.25"
|
||||
Hewlett-Packard HP 86, 87, 120, 125 - DSDD 48 tpi 5.25"
|
||||
Hewlett Packard HP 125 - SSSD 8"
|
||||
Hewlett Packard HP 125 - SSDD 3.5"
|
||||
Hitachi HPC-6000 CP/M 68K - DSHD 1.2M 3.5"
|
||||
Hitachi R-1500 CP/M 68K - DSHD 1.2M 5.25"
|
||||
Strippit Houdaille Fab/V - DSDD 48 tpi 5.25"
|
||||
IBM PC, CP/M-86 - SSDD 48 tpi 5.25"
|
||||
IBM PC, CP/M-86 - DSDD 48 tpi 5.25"
|
||||
IBS Ultraframe Turbo DOS - DSDD 5.25" 96 tpi
|
||||
ICL DRS 20 - DSDD 5.25" 96 tpi
|
||||
ICL DRS 300 - DSDD 5.25" 96 tpi
|
||||
ICL Model 35/36 - DSDD 5.25" 96 tpi
|
||||
IMS 5000 - SSDD 48 tpi 5.25"
|
||||
IMS 5000 TurboDOS - DSDD 96 tpi 5.25"
|
||||
IMS 5000 TurboDOS - SSDD 8"
|
||||
IMS 5000 CP/M - DSDD 96 tpi 5.25"
|
||||
Intel iPDS 100 - DSDD 96 tpi 5.25"
|
||||
Intuit - SSDD 48 tpi 5.25"
|
||||
Insight Enterprises - DSDD 48 tpi 5.25"
|
||||
Ithaca Intersystems - SSDD 96 tpi 5.25"
|
||||
Ithaca Intersystems - SSDD 8"
|
||||
Ithaca Intersystems - DSDD 8"
|
||||
ITT 3030 - DSDD 48 tpi 5.25"
|
||||
ITT 3030 - DSDD 96 tpi 5.25"
|
||||
JC Information Systems TurboDOS - DSDD 96tpi 5.25"
|
||||
Jet-80 - DSDD 48 tpi 5.25"
|
||||
Jet-80 - DSDD 96 tpi 5.25"
|
||||
Jonos - SSDD 3.5"
|
||||
Kaypro II/2 - SSDD 48 tpi 5.25"
|
||||
Kaypro 2X/4/10 - DSDD 48 tpi 5.25"
|
||||
Kaypro 2X/4/10 (Alternate) - DSDD 48 tpi 5.25"
|
||||
Kaypro, Pro-8 ROM - DSDD 96 tpi 5.25"
|
||||
Kaypro Advent TurboROM - DSDD 48 tpi 5.25"
|
||||
Kaypro Advent TurboROM - SSDD 48 tpi 5.25"
|
||||
Kaypro Advent TurboROM - DSDD 96 tpi 5.25"
|
||||
Kontron - DSDD 8"
|
||||
Kontron/Zeiss - DSDD 96 tpi 5.25"
|
||||
Kontron Transient Recorder- DSDD 96 tpi 5.25" & 3.5"
|
||||
Lanier LTD READ-ONLY - DSDD 96 tpi 5.25"
|
||||
Lexoriter - SSDD 48 tpi 5.25"
|
||||
Lexoriter - DSDD 48 tpi 5.25"
|
||||
Lobo Max-80 (256 bytes/sector) - SSDD 48 tpi 5.25"
|
||||
Lobo Max-80 (256) - DSDD 48 tpi 5.25"
|
||||
Lobo Max-80 (512 bytes/sector) - DSDD 48 tpi 5.25"
|
||||
Lobo Max-80 (512 bytes/sector) - DSDD 96 tpi 5.25"
|
||||
Lobo CP/M 2.2 - SSHD 8"
|
||||
LNW 2 - SSDD 48 tpi 5.25"
|
||||
Macsym 150 - SSDD 96 tpi 5.25"
|
||||
Magic - DSDD 48 tpi 5.25"
|
||||
MAI Basic Four - DSDD 96 tpi 5.25"
|
||||
Marconi Midata 510 - DSDD 3.5"
|
||||
MC CP/M DSDD 96 tpi 5.25"/3.5"
|
||||
Memotech MaxBP - DSDD 3.5"
|
||||
Micron Quark - DSDD 48 tpi 5.25"
|
||||
Micro Source M6000 - DSDD 48 tpi 5.25"
|
||||
Michels and Kleberhoff CP/M 3 - DSDD 96 tpi 5.25"
|
||||
Michels and Kleberhoff CP/M 3 - DSDD 48 tpi 5.25"
|
||||
Mitsubishi PLC - DSDD 3.5"
|
||||
Micromint SB180 Native 1 - DSDD 48 tpi 5.25"
|
||||
Micromint SB180 Native 2 - DSDD 96 tpi 5.25"
|
||||
Micromint SB180 Native 3 - SSDD 48 tpi 5.25"
|
||||
Micromint SB180 Native 4 - SSDD 96 tpi 5.25"
|
||||
Micromint SB180 - SSDD 3.5"
|
||||
Micromint SB180 - DSDD 3.5"
|
||||
MicroMint SB180 - DSDD 48 tpi 5.25"
|
||||
Molecular Series 9 - DSDD 48 tpi 5.25"
|
||||
Molecular/Durango Poppy 54 - DSDD 96 tpi 5.25"
|
||||
Monroe 8800 Series - SSDD 96 tpi 5.25"
|
||||
Monroe System 2000 - DSDD 96 tpi 5.25"
|
||||
Morrow MD2 - SSDD 48 tpi 5.25"
|
||||
Morrow MD3, 5, 11, 16, 34 - DSDD 48 tpi 5.25"
|
||||
Morrow 8 (512 bytes/sector) - SSDD 8"
|
||||
Morrow 8 (1024 bytes/sector) - SSDD 8"
|
||||
Morrow 8 (1024 bytes/sector) - DSDD 8"
|
||||
Morrow TurboDOS - DSDD 48 tpi 5.25"
|
||||
Morrow MD3...CP/M Plus - DSDD 48 tpi 5.25"
|
||||
MOS 80 - DSDD 8"
|
||||
MUPD/MDISK, Side I - SSSD 96 tpi 5.25
|
||||
MUPD/MDISK, Side II - SSSD 96 tpi 5.25
|
||||
MSD Systems PSC-1 POS - DSDD 5.25" 96 tpi
|
||||
NCHQ System II - SSSD 48tpi 5.25
|
||||
NCR Decision Mate V - DSDD 48 tpi 5.25"
|
||||
NCR FirstStep - DSDD 96 tpi 5.25"
|
||||
NDR - DSDD 96 tpi 5.25"/3.5"
|
||||
NEC PC-8801A, 256 bytes/sector - DSDD 8"
|
||||
NEC PC-8801A, 512 bytes/sector - DSDD 8"
|
||||
NEC PC-8801A, 1024 bytes/sector - DSDD 8"
|
||||
NEC PC-8001A - SSDD 48 tpi 5.25"
|
||||
NEC PC-8001B - DSDD 48 tpi 5.25"
|
||||
NEC PC-8801A 256 bytes/sector - DSDD 48 tpi 5.25"
|
||||
NEC PC 8801A 512 bytes/sector - DSDD 48 tpi 5.25"
|
||||
NEC PC 8801A 1024 bytes/sector - DSDD 48 tpi 5.25"
|
||||
NEC PC 8500/8431A, Starlet - DSDD 3.5"
|
||||
NEC Bungo - DSDD 3.5"
|
||||
NEC APC CP/M-86 - DSHD 8"
|
||||
New Brain - SSDD 96 tpi 5.25"
|
||||
Niat - DSDD 96 tpi 5.25"
|
||||
Nixdorf 8810/30 - DSDD 96 tpi 5.25"
|
||||
Norsonic 830/836 - DSDD 3.5"
|
||||
Numeridex 7000 - DSDD 8"
|
||||
Octagon 8/16 - SSDD 8"
|
||||
OEM Screen Typist - SSDD 3.5"
|
||||
OKI IF800 Model 20 - DSDD 48 tpi 5.25"
|
||||
Olivetti ETV300 - SSDD 48 tpi 5.25"
|
||||
Olivetti M20 - DSDD 48 tpi 5.25"
|
||||
Olivetti 250, CWP1 - SSDD 3.5"
|
||||
Olivetti CWP1 - DSDD 3.5"
|
||||
Olivetti ETV 1010, CP/M 86 - DSDD 48 tpi 5.25"
|
||||
Olympia EX-100 - DSDD 48 tpi 5.25"
|
||||
Olympia ETX II - SSDD 48 tpi 5.25"
|
||||
Olympia Olytext 20 - DSDD 3.5"
|
||||
Olympia People - DSDD 96tpi 5.25"
|
||||
Osborne 1 - SSSD 48 tpi 5.25"
|
||||
Osborne 1 - SSDD 48 tpi 5.25"
|
||||
Osborne Executive - SSDD 48 tpi 5.25"
|
||||
Osborne G2 System - DSDD 48 tpi 5.25"
|
||||
Osborne G2 System - DSDD 96 tpi 5.25"
|
||||
Osborne 1 + Osmosis - DSDD 96 tpi 5.25"
|
||||
Osborne Nuevo - DSDD 48 tpi 5.25"
|
||||
Osborne Vixen - DSDD 48 tpi 5.25"
|
||||
Osborne Executive w/Z3 - DSDD 96 tpi 5.25"
|
||||
Osborne Executive Dig. Arts - DSDD 48 tpi 5.25"
|
||||
Osborne Nuevo 2.1 - DSDD 96 tpi 5.25"
|
||||
OSM Zeus 4 - DSDD 96 tpi 5.25"
|
||||
Otrona Attache - DSDD 48 tpi 5.25"
|
||||
Otrona Attache - DSDD 96 tpi 5.25"
|
||||
Panasonic KX-E828 - DSDD 48 tpi 5.25"
|
||||
Potter & Brumfield - SSSD 48 tpi 5.25"
|
||||
Perf. Bus. Mach. PBM-1000 - DSDD 96 tpi 5.25"
|
||||
Pegasus Data Logger - DSDD 48 tpi 5.25"
|
||||
People's World Computer - SSDD 48 tpi 5.25"
|
||||
People's World Computer Boot Disk - SSDD 48 tpi 5.25"
|
||||
Pericom - DSDD 96 tpi 5.25"
|
||||
Philips PC-2010 - SSDD 48 tpi 5.25"
|
||||
Philips PC-2012 - DSDD 96 tpi 5.25"
|
||||
Philips PC-3000 - 3004 - SSDD 96 tpi 5.25"
|
||||
Physical Acoutstics - DSDD 48 tpi 5.25"
|
||||
Pied Piper - DSDD 96 tpi 5.25"
|
||||
PMC Micromate - DSDD 48 tpi 5.25"
|
||||
Prince Digico - DSDD 96 tpi 5.25"
|
||||
Proglas 770K - DSDD 96 tpi 5.25"
|
||||
QDP-500 - DSHD 5.25" 96 tpi
|
||||
Quay - DSDD 5.25" 48 tpi
|
||||
Remanco "Back of the House" - DSDD 96 tpi 5.25"
|
||||
Royal Alphatronic - DSDD 48 tpi 5.25"
|
||||
Sage IV - DSDD 48 tpi 5.25"
|
||||
Sage IV - DSDD 96 tpi 5.25"
|
||||
Sanyo MBC-1000, MBC-1150 - DSDD 48 tpi 5.25"
|
||||
Sanyo MBC-1250 - DSDD 96 tpi 5.25"
|
||||
Sanyo MBC-2000 - SSDD 96 tpi 5.25"
|
||||
Sanyo MBC-3000 - DSDD 8"
|
||||
Sanco 8001 - DSDD 48 tpi 5.25"
|
||||
Schneider CPC 6128 Side 1 - DSDD 5.25"
|
||||
Schneider CPC 6128 Side 2 - DSDD 5.25"
|
||||
S.D. Systems 40 track - SSDD 3.5"
|
||||
S.D. Systems 80 track - DSDD 3.5"
|
||||
Seequa Chameleon - SSDD 48 tpi 5.25"
|
||||
Seequa Chameleon - DSDD 48 tpi 5.25"
|
||||
Seiko - DSDD 96 tpi 5.25"
|
||||
SemiDisk DT42 - DSDD 48 tpi 5.25"
|
||||
SemiDisk DT42 - DSDD 96 tpi 5.25"
|
||||
SemiDisk DT42 - DSHD 96 tpi 5.25"
|
||||
Sharp MZ-80 - DSDD 48 tpi 5.25"
|
||||
Sharp MZ-80B - DSDD 48 tpi 5.25"
|
||||
Sharp 3500/5500 - DSDD 48 tpi 5.25"
|
||||
Sharp 5600 - DSDD 96 tpi 5.25"
|
||||
Sharp MZ 3541 - DSDD 48 tpi 5.25"
|
||||
Shelton SIG/NET 2 - SSDD 48 tpi 5.25"
|
||||
Shelton SIG/NET 2 - DSDD 48 tpi 5.25"
|
||||
Shelton SIG/NET 2 - DSDD 96 tpi 5.25"
|
||||
Siemens PG-685 DSDD 96 tpi 5.25"
|
||||
Siemens PG-675 DSDD 48 tpi 5.25"
|
||||
Siemens PG-635 - DSDD 3.5"
|
||||
Siemens PG-3101A - DSDD 5.25" 48 tpi
|
||||
Smart Aleck - SSDD 5.25" 48 tpi
|
||||
Sorbus TurboDOS - 5.25" DSHD (or 8" DSDD)
|
||||
Sony SMC-70 - SSDD 3.5"
|
||||
Spectravideo 318/328 - SSDD 48 tpi 5.25"
|
||||
Spectravideo SV-328 - DSDD 48 tpi 5.25"
|
||||
Sperry UTS 30, UTS 5000 - DSDD 96 tpi 5.25"
|
||||
Spectravideo - SSDD 48 tpi 5.25"
|
||||
Spectravideo - DSDD 48 tpi 5.25"
|
||||
Spectravideo - DSDD 48 tpi 5.25"
|
||||
Spectravideo - SSDD 3.5"
|
||||
Superbrain JR - SSDD 48 tpi 5.25"
|
||||
Superbrain 40 track - SSDD 48 tpi 5.25"
|
||||
Superbrain QD - DSDD 48 tpi 5.25"
|
||||
Superbrain II - DSDD 96 tpi 5.25"
|
||||
Superbrain - SSDD 48 tpi 5.25"
|
||||
System Group 2800 - DSDD 8"
|
||||
Systel 2 - SSDD 48 tpi 5.25"
|
||||
Systel 3 - DSDD 48 tpi 5.25"
|
||||
Tarbell - DSDD 8"
|
||||
Tatung TPC2000 - DSDD 96 tpi 5.25"
|
||||
Techron TEF 10 - DSDD 96 tpi 5.25"
|
||||
Techron TEF 12 - DSHD 96 tpi 5.25"
|
||||
Tektronix 4170 - DSDD 48 tpi 5.25"
|
||||
Teletek - SSDD 8"
|
||||
Teletek Systemaster - DSDD 48 tpi 5.25"
|
||||
Teletek Systemaster - DSDD 96 tpi 5.25"
|
||||
TeleVideo 800-series, TPC-1 CP/M - DSDD 48 tpi 5.25"
|
||||
TeleVideo 1603 - DSDD 96 tpi 5.25"
|
||||
TeleVideo 806 TurboDOS - DSDD 48 tpi 5.25"
|
||||
TeleVideo 800-series, TurboDOS - DSDD 48 tpi 5.25"
|
||||
Telcom 6.2 CP/M - DSDD 3.5"
|
||||
TI Professional, CP/M-86 - SSDD 48 tpi 5.25"
|
||||
TIKI-100, 200K - SSDD 48 tpi 5.25"
|
||||
TIKI-100, 400K - DSDD 48 tpi 5.25"
|
||||
Tokyo Electron 80W - 3.5" DSHD
|
||||
Toshiba T100, T200 - DSDD 48 tpi 5.25"
|
||||
Toshiba 300 - DSDD 96 tpi 5.25"
|
||||
Toshiba T-250 - DSHD 8"
|
||||
TRS-80 Model 1, Omikron CP/M - SSSD 48 tpi 5.25"
|
||||
TRS-80 Model 1, Bigmem CP/M - SSDD 8"
|
||||
TRS-80 Model 1, Color Power II - SSDD 48 tpi 5.25"
|
||||
TRS-80 Lifeboat CP/M (256 bytes/sector) - SSDD 8"
|
||||
TRS-80, Lifeboat CP/M (1024 bytes/sector) - SSDD 8"
|
||||
TRS-80, Pickles & Trout CP/M - SSDD 8"
|
||||
TRS-80, Holmes CP/M - DSDD 48 tpi 5.25"
|
||||
TRS-80, MM CP/M - SSDD 48 tpi 5.25"
|
||||
TRS-80 Model 4, 4P; MT CP/M - SSDD 48 tpi 5.25"
|
||||
TRS-80 Model 4, 4P; MT CP/M - DSDD 48 tpi 5.25"
|
||||
TRS-80 Model 4, 4P - SSDD 48 tpi 5.25"
|
||||
TRS-80 Model 3 - Hurricane CP/M - SSDD 48 tpi 5.25"
|
||||
TRS-80 Model 4P - Montezuma 800K - DSDD 96 tpi 5.25"
|
||||
TRS-80 II/12/16 Aton CP/M - SSHD 8"
|
||||
TRS-80 II/12/16 Aton CP/M - DSHD 8"
|
||||
TRS-80 II/12/16 Pickles & Trout - DSHD 8"
|
||||
U-Micro 1000 - DSDD 96 tpi 5.25"
|
||||
Varian Spectra AA/20, DS-15 - 5.25" DSDD
|
||||
Vector 4 - DSDD 96 tpi 5.25"
|
||||
Visual 1050 - SSDD 96 tpi 5.25"
|
||||
Wangwriter - DSDD 48 tpi 5.25"
|
||||
Wave Mate Bullet - SSDD 48 tpi 5.25"
|
||||
Wave Mate Bullet - DSDD 96 tpi 5.25"
|
||||
Wave Mate Bullet - DSDD 48 tpi 5.25"
|
||||
Wave Mate Bullet - SSHD 8"
|
||||
Xerox (512 byte/sector) - DSDD 48 tpi 5.25"
|
||||
Xerox 820 - SSSD 48 tpi 5.25"
|
||||
Xerox 820 II - SSDD 48 tpi 5.25"
|
||||
Xerox 820-II, 16/8 - DSDD 48 tpi 5.25"
|
||||
Xerox 16/8 - SSDD 8"
|
||||
Xerox 16/8 - DSDD 8"
|
||||
XEROX 16/8 - DSDD 48 tpi 5.25"
|
||||
Xerox 820, S/W Publishers DD - SSDD 48 tpi 5.25"
|
||||
Xerox 3700 Laser Printer - DSDD 48 tpi 5.25"
|
||||
Xerox 1800 - DSDD 96 tpi 3.5"/5.25"
|
||||
Xerox 16/8, 820 II - SSDD 48 tpi 5.25"
|
||||
Xerox 16/8 - SSDD 48 tpi 5.25"
|
||||
Xerox 16/8 Special - SSDD 48 tpi 5.25"
|
||||
Xerox 16/8, 820-II - DSDD 48 tpi 5.25"
|
||||
Xerox 16/8 Special - DSDD 48 tpi 5.25"
|
||||
Xor 5 - DSDD 48 tpi 5.25"
|
||||
XYZ - DSDD 48 tpi 5.25"
|
||||
Zeiss Video Analysis System - DSDD 96 tpi 5.25"
|
||||
Zenith Z-37 Disk - SSSD 48 tpi 5.25"
|
||||
Zenith Z-37 Disk - DSDD 96 tpi 5.25"
|
||||
Zenith Z89, Heath H89 - DSDD 48 tpi 5.25"
|
||||
Zenith Z89, Heath H89 - DSDD 96 tpi 5.25"
|
||||
Zenith Z90 - SSDD 48 tpi 5.25"
|
||||
Zenith Z90 - DSDD 48 tpi 5.25"
|
||||
Zenith Z-100 - SSDD 48 tpi 5.25"
|
||||
Zenith Z-100 - DSDD 48 tpi 5.25"
|
||||
Zenith Z-100 - SSSD 8"
|
||||
Zenith Z-100 - SSDD 8"
|
||||
Zenith Z-37 Disk - DSDD 96 (Half drive) 5.25"
|
||||
Zenith/Heath H-89 Extended Density - DSDD 48 tpi 5.25"
|
||||
Zenith Z-100, Heath H-47 Extended Density - DSDD 8"
|
||||
Zenith Z-100, Heath H-47 - DSDD 8"
|
||||
Zenith Z-37 - SSDD 48 tpi 5.25"
|
||||
Zenith Z-37 ED - DSDD 96 tpi 5.25"
|
||||
Zenith/Heath H89/H90 Magnolia 7736 - SSHD 8"
|
||||
Zorba - DSDD 48 tpi 5.25"
|
||||
Zorba - DSDD 96 tpi 5.25"
|
||||
|
||||
BIN
MPM OPERATING SYSTEMS/MPM-86/MISC DRI DISKS/07/07.JPG
Normal file
|
After Width: | Height: | Size: 54 KiB |
BIN
MPM OPERATING SYSTEMS/MPM-86/MISC DRI DISKS/07/07.TD0
Normal file
BIN
MPM OPERATING SYSTEMS/MPM-86/MISC DRI DISKS/07/ABORT.CMD
Normal file
BIN
MPM OPERATING SYSTEMS/MPM-86/MISC DRI DISKS/07/ASM86.CMD
Normal file
BIN
MPM OPERATING SYSTEMS/MPM-86/MISC DRI DISKS/07/ASM86.CPM
Normal file
BIN
MPM OPERATING SYSTEMS/MPM-86/MISC DRI DISKS/07/ATTACH.CMD
Normal file
BIN
MPM OPERATING SYSTEMS/MPM-86/MISC DRI DISKS/07/BDOS.MPM
Normal file
BIN
MPM OPERATING SYSTEMS/MPM-86/MISC DRI DISKS/07/CIO.MPM
Normal file
BIN
MPM OPERATING SYSTEMS/MPM-86/MISC DRI DISKS/07/CLOCK.CMD
Normal file
BIN
MPM OPERATING SYSTEMS/MPM-86/MISC DRI DISKS/07/CONSOLE.CMD
Normal file
BIN
MPM OPERATING SYSTEMS/MPM-86/MISC DRI DISKS/07/DATE.CMD
Normal file
BIN
MPM OPERATING SYSTEMS/MPM-86/MISC DRI DISKS/07/DDT86.CMD
Normal file
BIN
MPM OPERATING SYSTEMS/MPM-86/MISC DRI DISKS/07/DIR.CMD
Normal file
BIN
MPM OPERATING SYSTEMS/MPM-86/MISC DRI DISKS/07/DOWN.CMD
Normal file
BIN
MPM OPERATING SYSTEMS/MPM-86/MISC DRI DISKS/07/DSKRESET.CMD
Normal file
192
MPM OPERATING SYSTEMS/MPM-86/MISC DRI DISKS/07/ECHO.A86
Normal file
@@ -0,0 +1,192 @@
|
||||
|
||||
;
|
||||
; ECHO - Resident System Process
|
||||
; Print Command tail to console
|
||||
;
|
||||
|
||||
;
|
||||
; DEFININTIONS
|
||||
;
|
||||
|
||||
mpmint equ 224 ;mpm entry interrupt
|
||||
mpm_conwrite equ 9 ;print string
|
||||
mpm_qmake equ 134 ;create queue
|
||||
mpm_qopen equ 135 ;open queue
|
||||
mpm_qread equ 137 ;read queue
|
||||
mpm_qwrite equ 139 ;write queue
|
||||
mpm_setprior equ 145 ;set priority
|
||||
mpm_condetach equ 147 ;detach console
|
||||
mpm_setdefcon equ 148 ;set default console
|
||||
|
||||
pdlen equ 48 ;length of Process
|
||||
; Descriptor
|
||||
|
||||
p_cns equ byte ptr 020h ;default cns
|
||||
p_disk equ byte ptr 012h ;default disk
|
||||
p_user equ byte ptr 013h ;default user
|
||||
p_list equ byte ptr 024h ;default list
|
||||
ps_run equ 0 ;PD run status
|
||||
pf_keep equ 2 ;PD nokill flag
|
||||
|
||||
rsp_top equ 0 ;rsp offset
|
||||
rsp_pd equ 010h ;PD offset
|
||||
rsp_uda equ 040h ;UDA offset
|
||||
rsp_bottom equ 140h ;end rsp header
|
||||
|
||||
qf_rsp equ 08h ;queue RSP flag
|
||||
|
||||
;
|
||||
; CODE SEGMENT
|
||||
;
|
||||
CSEG
|
||||
org 0
|
||||
|
||||
mpm: int mpmint
|
||||
ret
|
||||
|
||||
main: ;create ECHO queue
|
||||
mov cl,mpm_qmake ! mov dx,offset qd
|
||||
call mpm
|
||||
;open ECHO queue
|
||||
mov cl,mpm_qopen ! mov dx,offset qpb
|
||||
call mpm
|
||||
;set priority to normal
|
||||
mov cl,mpm_setprior ! mov dx,200
|
||||
call mpm
|
||||
|
||||
;ES points to SYSDAT
|
||||
mov es,sdatseg
|
||||
|
||||
loop: ;forever
|
||||
;read cmdtail from queue
|
||||
mov cl,mpm_qread ! mov dx,offset qpb
|
||||
call mpm
|
||||
|
||||
;set default values from PD
|
||||
mov bx,pdadr
|
||||
; mov dl,es:p_disk[bx] ;p_disk=0-15
|
||||
; inc dl ! mov disk,dl ;make disk=1-16
|
||||
; mov dl,es:p_user[bx]
|
||||
; mov user,dl
|
||||
; mov dl,es:p_list[bx]
|
||||
; mov list,dl
|
||||
mov dl,es:p_cns[bx]
|
||||
mov console,dl
|
||||
|
||||
;set default console
|
||||
; mov dl,console
|
||||
mov cl,mpm_setdefcon ! call mpm
|
||||
|
||||
;scan cmdtail and look for '$' or 0.
|
||||
;when found, replace w/ cr,lf,'$'
|
||||
|
||||
lea bx,cmdtail ! mov al,'$' ! mov ah,0
|
||||
mov dx,bx ! add dx,131
|
||||
nextchar:
|
||||
cmp bx,dx ! ja endcmd
|
||||
cmp [bx],al ! je endcmd
|
||||
cmp [bx],ah ! je endcmd
|
||||
inc bx ! jmps nextchar
|
||||
endcmd:
|
||||
mov byte ptr [bx],13
|
||||
mov byte ptr 1[bx],10
|
||||
mov byte ptr 2[bx],'$'
|
||||
|
||||
;write command tail
|
||||
lea dx,cmdtail ! mov cl,mpm_conwrite
|
||||
call mpm
|
||||
;detach console
|
||||
mov dl,console
|
||||
mov cl,mpm_condetach ! call mpm
|
||||
;done, get next command
|
||||
jmps loop
|
||||
|
||||
;
|
||||
; DATA SEGMENT
|
||||
;
|
||||
|
||||
DSEG
|
||||
org rsp_top
|
||||
|
||||
sdatseg dw 0,0,0
|
||||
dw 0,0,0
|
||||
dw 0,0
|
||||
|
||||
org rsp_pd
|
||||
|
||||
pd dw 0,0 ; link,thread
|
||||
db ps_run ; status
|
||||
db 190 ; priority
|
||||
dw pf_keep ; flags
|
||||
db 'ECHO ' ; name
|
||||
dw offset uda/10h ; uda seg
|
||||
db 0,0 ; disk,user
|
||||
db 0,0 ; load dsk,usr
|
||||
dw 0 ; mem
|
||||
dw 0,0 ; dvract,wait
|
||||
db 0,0
|
||||
dw 0
|
||||
db 0 ; console
|
||||
db 0,0,0
|
||||
db 0 ; list
|
||||
db 0,0,0
|
||||
dw 0,0,0,0
|
||||
|
||||
org rsp_uda
|
||||
|
||||
uda dw 0,offset dma,0,0 ;0
|
||||
dw 0,0,0,0
|
||||
dw 0,0,0,0 ;10h
|
||||
dw 0,0,0,0
|
||||
dw 0,0,0,0 ;20h
|
||||
dw 0,0,0,0
|
||||
dw 0,0,offset stack_tos,0 ;30h
|
||||
dw 0,0,0,0
|
||||
dw 0,0,0,0 ;40h
|
||||
dw 0,0,0,0
|
||||
dw 0,0,0,0 ;50h
|
||||
dw 0,0,0,0
|
||||
dw 0,0,0,0 ;60h
|
||||
|
||||
org rsp_bottom
|
||||
|
||||
qbuf rb 131 ;Queue buffer
|
||||
|
||||
qd dw 0 ;link
|
||||
db 0,0 ;net,org
|
||||
dw qf_rsp ;flags
|
||||
db 'ECHO ' ;name
|
||||
dw 131 ;msglen
|
||||
dw 1 ;nmsgs
|
||||
dw 0,0 ;dq,nq
|
||||
dw 0,0 ;msgcnt,msgout
|
||||
dw offset qbuf ;buffer addr.
|
||||
|
||||
dma rb 128
|
||||
|
||||
stack dw 0cccch,0cccch,0cccch
|
||||
dw 0cccch,0cccch,0cccch
|
||||
dw 0cccch,0cccch,0cccch
|
||||
dw 0cccch,0cccch,0cccch
|
||||
dw 0cccch,0cccch,0cccch
|
||||
stack_tos dw offset main ; start offset
|
||||
dw 0 ; start seg
|
||||
dw 0 ; init flags
|
||||
|
||||
pdadr rw 1 ; QPB Buffer
|
||||
cmdtail rb 129 ; starts here
|
||||
db 13,10,'$'
|
||||
|
||||
qpb db 0,0 ;must be zero
|
||||
dw 0 ;queue ID
|
||||
dw 1 ;nmsgs
|
||||
dw offset pdadr ;buffer addr.
|
||||
db 'ECHO ' ;name to open
|
||||
|
||||
console db 0
|
||||
;disk db 0
|
||||
;user db 0
|
||||
;list db 0
|
||||
|
||||
end
|
||||
|
||||