Digital Research
This commit is contained in:
2020-11-06 18:50:37 +01:00
parent 621ed8ccaf
commit 31738079c4
8481 changed files with 1888323 additions and 0 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

View 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)


Binary file not shown.

View 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.


View 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 ******/


View 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 */


Binary file not shown.

View 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 |
| |
----------------------------------------------------------------


View 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");
}


View 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];


View 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


View 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))
*

View 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");
}


Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

View 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
*/


Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

View 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();
}
}
}


View 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


View 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


Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

View 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


Binary file not shown.

Binary file not shown.

View 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


View 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

View 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

View File

@@ -0,0 +1,5 @@
.sp 2
.tc x.x.x 3 head
.sh
x.x.x 3 head
.pp

View File

@@ -0,0 +1,12 @@
.sp
.in 8
.nf
?\c
.sh
print "Salutations!
.qs
Salutations!
.in 0
.fi
.sp


View 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


Binary file not shown.

View 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


View File

@@ -0,0 +1,11 @@
.nf
.sp
+----------+ +----------+
| | | |
| | | |
| | | |
| | | |
+----------+ +----------+
.sp
.fi


Binary file not shown.

Binary file not shown.

Binary file not shown.

View 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


View File

@@ -0,0 +1,4 @@
.tc ? #1
.tc ?.? #2
.tc ?.?.? #3


View File

@@ -0,0 +1,5 @@
.ti -14
Versions: DR Logo Advanced DR Logo IBM PC specific
.ti -14
yes yes no


Binary file not shown.

Binary file not shown.

View 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"


Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

View 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


Binary file not shown.

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More