-

Difference between revisions of "Packages Execution PORT MSX"

From HI-TECH C for CP/M Fan WIKI(EN)
Jump to: navigation, search
(The original readme)
 
(One intermediate revision by the same user not shown)
Line 1: Line 1:
HITECH-1.PMA
+
publibinfo_packages_execution_port_MSX
  
Hitech-C for MSX
+
==LibraryName==
 +
HI-TECH C for MSX
  
==Comments from Wiki editor==
+
==About==
 
 
This document is a overview of difference between original HI-TECH C for CP/M and "HI-TECH C for MSX" ported by Pierre Gielen.
 
 
 
MSX adjusted files are located in HITECH-1.PMA and HITECH-4.PMA.
 
 
 
HITECH-1.PMA Basic files which are adjusted for MSX
 
HITECH-4.PMA Routines which are adjusted for MSX in the meantime, and some other useful programmes.
 
 
 
This document descrives about HITECH-1.PMA.
 
 
 
*READ.ME
 
*C.C
 
*EXEC.H
 
*STDIO.H.
 
 
 
Comments, explanation of these files below are contained and edited in this document adding chapter names.
 
 
 
Refer Manual of HI-TECH C for CP/M about details as well.
 
 
 
 
 
==READ.ME==
 
 
 
===About===
 
 
 
This HITECH-1.PMA contains:
 
 
 
The HITECH-C compiler for CP/M.
 
 
 
Programmes adapted to MSX by Pierre Gielen:
 
 
 
*C.COM
 
*C.C
 
*EXEC.H
 
*STDIO.H.
 
 
 
(So all the other files are just the same as in the CP/M version, as far as I
 
know. I'm not 100% sure, though.)
 
 
 
RMt.
 
 
 
===The original readme===
 
 
 
  The HI-TECH Z80 CP/M C compiler V3.09 is provided free of charge for any
 
  use, private or commercial, strictly as-is. No warranty or product
 
  support is offered or implied.
 
 
  You may use this software for whatever you like, providing you acknowledge
 
  that the copyright to this software remains with HI-TECH Software.
 
 
 
===The READ.ME that was included with the adapted C.COM===
 
 
 
Hitech-C for MSX
 
  
 
This archive contains the C-command for Hitech-C, an almost fully  
 
This archive contains the C-command for Hitech-C, an almost fully  
Line 69: Line 18:
 
things can be found in the source of C.COM.
 
things can be found in the source of C.COM.
  
Also, EXEC.H has been adjusted already. It now contains some
+
==Author==
variables for starting via the commandline. To STDIO.H, the
+
Pierre Gielen
variable DOSVER has been added. This gives 0 running with
 
MSX-DOS 1 and the DOS version in BCD code running under MSX-DOS 2
 
(for example: DOS 2.2 gives 0x22 in DOSVER.)
 
 
 
With this, Hitech-C isn't finished yet. The standard library
 
contains more routines that can be adjusted for MSX. But before
 
we get that far, Hitech-C is , at any rate, a good and not to
 
mention free (!) alternative for ASCII-C. Hitech-C can handle
 
LONGs without any problem and is ahead of ASCII in compatibility
 
with the 'bigger' professional C compilers!
 
 
 
What else do you need:
 
 
 
;HITECH-2.PMA  :sources of the standaard and floating point
 
                          libraries
 
;HITECH-3.PMA  :english documentation
 
 
 
(Note:  HITECH-4.PMA  contains some routines that have been
 
                      adjusted for MSX in the meantime, and some
 
                      other useful programmes.)
 
 
 
Pierre Gielen, sept. 1993
 
 
 
 
 
==C.C==
 
 
 
===About===
 
 
 
Copyright (C) 1984-1987 HI-TECH SOFTWARE
 
 
 
MSXDOS modifications by Pierre Gielen 1993:
 
 
 
*Replaced EXECL routines (C produces a batch file now)
 
*Added -Q switch to write batch file without executing
 
*Changed object file types to .O and temporary file
 
  types to .T to allow more commands per line (note:
 
  crt.o = crtcpm.obj). Changed library types back to .LIB.
 
*Commented out calls to GETENV (for now) because it locks up
 
  the computer (still to be changed in the standard library)
 
 
 
HITECH C is almost ANSI C compatible, but it does not recognize
 
the '#pragma nonrec' directive.
 
 
 
 
 
HITECH SOFTWARE has given kind permission to copy this
 
software for personal use.
 
 
 
===C command===
 
  
C command  MSXDOS version
+
==Document==
 +
[[PACKAGES_EXECUTION_DOCUMENT_PORT_MSX]]
  
C [-C] [-O] [-I] [-F] [-U] [-D] [-S] [-X] [-P] [-Q] [-W] [-M] files {-Llib}
+
==TranslationLevel==
 +
Translated and edited from English
  
 +
==DestributionSite==
 +
http://www.msxarchive.nl/pub/msx/programming/c/
  
[Comment from WIKI editor]
+
==Package==
Refer manual of HI-TECH C for CP/M as well
+
HI-TECH C for MSX
  
 +
==Version==
 +
N/A
  
==EXEC.H==
+
==License==
 +
N/A (Same as HI-TECH C for CP/M?)
  
Definitions of the EXEC format
+
==Prerequisite==
  
#define EXITIT 0x80
 
#define EXEC 0x81
 
#define IGN_ERR 0x82
 
#define DEF_ERR 0x83
 
#define SKP_ERR 0x84
 
#define TRAP 0x85
 
#define IF_ERR 0x86
 
#define IF_NERR 0x87
 
#define ECHO 0x88
 
#define PRINT 0x89
 
#define RM_FILE 0x8A
 
#define RM_EXIT 0x8B
 
#define keybuf 0xfbf0 /* MSX */
 
#define putpnt (*(unsigned int *)0xf3f8) /* MSX */
 
#define getpnt (*(unsigned int *)0xf3fa) /* MSX */
 
  
==STDIO.H==
+
==Notes==
  
#define DOSVER (*(char *)0xf313) /* MSX: 0=DOS1 */
+
This document is edited comments and descriptions about difference between MSX veresion and original version of HI-TECH C for CP/M. Adjusted files for MSX by Pierre Gielen are included in HITECH-1.PMA and HITECH-4.PMA.
 
#if z80
 
#define BUFSIZ 512
 
#define _NFILE 8
 
#else z80
 
#define BUFSIZ 1024
 
#define _NFILE 20
 
#endif z80
 
 
#ifndef FILE
 
#define uchar unsigned char
 
 
extern struct _iobuf {
 
char * _ptr;
 
int _cnt;
 
char * _base;
 
uchar _flag;
 
char _file;
 
} _iob[_NFILE];
 
 
#endif FILE
 
 
#define _IOREAD 01
 
#define _IOWRT 02
 
#define _IORW 03
 
#define _IONBF 04
 
#define _IOMYBUF 010
 
#define _IOEOF 020
 
#define _IOERR 040
 
#define _IOSTRG 0100
 
#define _IOBINARY 0200
 
 
#ifndef NULL
 
#define NULL ((void *)0)
 
#endif NULL
 
 
#define FILE struct _iobuf
 
#define EOF (-1)
 
 
#define stdin (&_iob[0])
 
#define stdout (&_iob[1])
 
#define stderr (&_iob[2])
 
#define getchar() getc(stdin)
 
#define putchar(x) putc(x,stdout)
 
  
/* getc() and putc() must be functions for CP/M to allow the special
+
Refer manuals of HI-TECH C for CP/M for details as well.
  * handling of '\r', '\n' and '\032'. The same for MSDOS except that
 
  * it at least knows the length of a file.
 
  */
 
 
#if UNIX
 
#define getc(p) (--(p)->_cnt>=0?(unsigned)*(p)->_ptr++:_filbuf(p))
 
#define putc(x,p) (--(p)->_cnt>=0?((unsigned)(*(p)->_ptr++=x)):_flsbuf((unsigned)(x),p))
 
#else UNIX
 
#define getc(p) fgetc(p)
 
#define putc(x,p) fputc(x,p)
 
#endif UNIX
 
 
#define feof(p) (((p)->_flag&_IOEOF)!=0)
 
#define ferror(p) (((p)->_flag&_IOERR)!=0)
 
#define fileno(p) ((uchar)p->_file)
 
#define clrerr(p) p->_flag &= ~_IOERR
 
#define clreof(p) p->_flag &= ~_IOEOF
 
 
#define L_tmpnam 34 /* max length of temporary names */
 
 
extern int fclose(FILE *);
 
extern int fflush(FILE *);
 
extern int fgetc(FILE *);
 
extern int ungetc(int, FILE *);
 
extern int fputc(int, FILE *);
 
extern int getw(FILE *);
 
extern int putw(int, FILE *);
 
extern char * gets(char *);
 
extern int puts(char *);
 
extern int fputs(char *, FILE *);
 
extern int fread(void *, unsigned, unsigned, FILE *);
 
extern int fwrite(void *, unsigned, unsigned, FILE *);
 
extern int fseek(FILE *, long, int);
 
extern int rewind(FILE *);
 
extern int setbuf(FILE *, char *);
 
extern int printf(char *, ...);
 
extern int fprintf(FILE *, char *, ...);
 
extern int sprintf(char *, char *, ...);
 
extern int scanf(char *, ...);
 
extern int fscanf(FILE *, char *, ...);
 
extern int sscanf(char *, char *, ...);
 
extern int remove(char *);
 
extern FILE * fopen(char *, char *);
 
extern FILE * freopen(char *, char *, FILE *);
 
extern FILE * fdopen(int, char *);
 
extern long ftell(FILE *);
 
extern char * fgets(char *, int, FILE *);
 
extern char * _bufallo(void);
 

Latest revision as of 08:49, 2 November 2017

publibinfo_packages_execution_port_MSX

LibraryName

HI-TECH C for MSX

About

This archive contains the C-command for Hitech-C, an almost fully ANSI-compatible C for CP/M and MSX-DOS. Because the routines EXECUTE and GETENV in the standard (CP/M) library don't work on an MSX, the original C.COM crashed. I have adjusted the programme so that it makes a batchfile that is started via the commandline (thus: the batchprocessor of MSX-DOS). The effect of this is that cammandlines cannot be longer than 128 bytes. That is why the filenames are shortened: The object files now end with .O instead of .OBJ. The object headerfile that has to be in every programme was named CRTCPM.OBJ and has now been renamed to CRT.O. These things can be found in the source of C.COM.

Author

Pierre Gielen

Document

PACKAGES_EXECUTION_DOCUMENT_PORT_MSX

TranslationLevel

Translated and edited from English

DestributionSite

http://www.msxarchive.nl/pub/msx/programming/c/

Package

HI-TECH C for MSX

Version

N/A

License

N/A (Same as HI-TECH C for CP/M?)

Prerequisite

Notes

This document is edited comments and descriptions about difference between MSX veresion and original version of HI-TECH C for CP/M. Adjusted files for MSX by Pierre Gielen are included in HITECH-1.PMA and HITECH-4.PMA.

Refer manuals of HI-TECH C for CP/M for details as well.