adtools / sdi Goto Github PK
View Code? Open in Web Editor NEWA set of C macro/defines to make cross-platform (AmigaOS3<>AmigaOS4<>MorphOS<>AROS) Amiga development easier.
A set of C macro/defines to make cross-platform (AmigaOS3<>AmigaOS4<>MorphOS<>AROS) Amiga development easier.
Short: SDI headers - A set of C macro/defines to make amiga development easier. Kurz: SDI Headers - Ein Bündel von C Makros/Defines um Amiga Entwicklungen einfacher zu machen Author: [email protected] (Jens Maus), [email protected] (Dirk Stöcker) Uploader: [email protected] (Jens Maus) Version: 1.7 (04.08.2015) Type: dev/c Replaces: dev/c/SDI_headers.lha Architecture: ppc-morphos >= 1.4.2; m68k-amigaos >= 2.1.0; ppc-amigaos >= 4.0.0 ABOUT ----- One may ask, what are these "SDI headers" all about? So let me try to explain the idea behind those additional headerfiles first: The so-called "SDI headers" are a set of freely available and freely usable C-language header files which provide different sets of macros and defines to make the live of developers much more comfortable when it comes to dealing with hooks, compiler specific specialities or if one have to keep C sources compatible over different AmigaOS-like platforms. In fact, by using the SDI headers a developer might keep his sources simple and compatible to AmigaOS3, AmigaOS4 and also MorphOS much more easier, than with having to clutter them with tones of #ifdef statements just because these platforms use different approaches for the same path. WHY? ---- Now you may ask why? The answer is quite easy. Because if you have followed recent development pathes of AmigaOS3 and its successors AmigaOS4 and MorphOS, you might have noticed that many parts of the original AmigaOS API/SDK have been changed. On one hand the API changed because OS4 and MorphOS are now PPC based, but also because of the senseless "fight" between those Amiga-based platforms, it is much harder these days for a developer willing to support all of these platforms at once. Here is where the SDI headers can clearly help. They release much of the pain when it comes to deal with Hooks, compiler differences and platform specialities. DIFFERENT PURPOSES ------------------ Currently the "SDI headers" consist of 4 different header files which were developed because of different purposes: SDI_compiler.h - This header file carries compiler independent defines and macros to allow developers to keep sources compatible to different compilers and make sources in all more transparent to compilers. SDI_hook.h - Dealing with Amiga-hooks was always a bit tricky and hard, but in using this header file Hook can be defined in a very easy and Amiga-platform independent fashion. SDI_lib.h - Since AmigaOS4 a new library system has been introduced which comes with a different fashion of dealing with shared libraries. This header file allows to keep sources compatible to the old scheme by using different types of macros making it transparent for AmigaOS3 and MorphOS as well. SDI_stdarg.h - Unfortunatly variable argument list functions has always been a bit tricky and especially since we are on the PPC now, developers have to be more careful in how to use variable argument list functions. However, this header file allows to use a simple set of macros to generate a AmigaOS3/AmigaOS4 and MorphOS compatible variable argument list function. SDI_interrupt.h- Dealing with Amiga-interrupts was always a bit tricky and hard, but in using this header file interrupts and handler can be defined in a very easy and Amiga-platform independent fashion. SDI_misc.h - This file contains miscellaneous function definitions which may be required during development like the PutChProc() for RawDoFmt(). So you see. The SDI headers are a global players and if you use the whole set of these headers your sources can be much easier maintainable than they are already. Just have a look at the included examples! USAGE ----- There is nothing really special about these headers and their usage. All header files in the "includes" subdirectory of this distributions should be perfectly commented and can be directly included in any sources. However, for a better understanding we have worked out some examples which should illustrate how the SDI headers have to be used and how they are able to simplify parts of a source code, especially if this source has to be compatible to many different AmigaOS like platforms. ARE THEY SERIOUSLY USED YET? ---------------------------- Of course these headers are not only "theoretical stuff". In fact they are currently used in the following well-known Amiga-based projects: YAM (Yet Another Mailer) - http://yam.ch/ NList MUI classes - http://sf.net/p/nlist-classes MUI (Magic User Interface) - http://muidev.de/ Freeciv (Amiga port) XAD library .. and many unknown ones :) So if you are interested in looking into "real" working source code and not only into the supplied example code, please feel free to have a look at the source code of the above projects (if it is freely available of course). UPDATES ------- The latest brand of these headers can be viewed and downloaded from the following URL: https://github.com/adtools/SDI COPYRIGHT --------- The header files and sources of the SDI headers and its examples are fully public domain. They can be reproduced and altered in any way. All we (the authors) request is that if you find a bug or better way to deal with something please send us a comment or hint about it so that we can integrate this stuff in future versions. Please share the public domain idea to make development for all us small Amiga developer group easier and so painful in future. AUTHORS ------- The main/original authors of the SDI headers are: Jens Maus <[email protected]> Dirk Stöcker <[email protected]>
HOOKPROTO for m68k-vbcc is broken because of a typo: vbcc defines __M68K__
with two leading underscores, whereas SDI_hook.h checks it with only one underscore:
https://github.com/adtools/SDI/blob/master/SDI_hook.h#L124
Changing _M68K__
to __M68K__
fixes it and my uHexen2 port outputs audio through AHI with it.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.