====== SOURCE CODE CONVENTIONS ====== As you read Microware documentation and source code, you will run across their source code conventions. The Microware conventions are a set of short prefixes to function labels and data symbol names. They may have been inspired by working with Motorola and the 68000 CPU conventions which suffix data with .B for byte, .W for word, or .L for long. I have not seen any documentation which spells them out directly as a master reference. The best reference for these are within OS-9 itself in the definition files included with OS-9 itself. For OS-9 V01.00.00 these are in DEFS/: * **OS9Defs** - OS-9 System Symbol Definitions * **RBFDefs** - Random Block File Manager Definitions * **SCFDefs** - Sequential File Manager (SCF) Definitions * **SysType** - equates specific to the machine type OS-9 is running on Skim these DEFS files at least once to get a feel for the types and usage. ===== PREFIXES ===== Below is a table of the many prefixes and what I have found or guessed them to mean. ^ Prefix ^ Description ^ | A. | addresses | | C$ | character data | | D$ | Device Driver Entry Offsets | | D. | Direct Page data | | DD. | Device Descriptor data | | DT. | Device Type data | | DIR. | Directory Entry data | | E$ | errors | | F$ | Function calls | | F. | Function data | | FD. | File Descriptor data | | FM | File Manager data | | FDSL | File Descriptor Segment List data | | H. | XOFF | | I$ | Input/Output (I/O) functions | | M$ | Module and Memory | | P$ | Process Descriptors | | PD. | Path Descriptor data | | PE. | Path Extension data | | Q$ | IRQ Polling Table | | R$ | Registers (MPU) | | S$ | Signals | | S. | System data | | SS. | System Status data (GetStat/PutStat) | | V$ | Device table | | V. | Device Static Storage Offsets | ===== MASKS ===== Bit masks are shown as binary strings, such as %10110110 Bit strings are not used directly in the source code. Instead they are assigned to Mask* equates to label them. Then the labels are used in the function code for clarity. ===== IMMMEDIATES ===== Like bitmasks, immediate values are assigned a label through an equate or set. Then the label is used in place of raw values without context in the code. ===== IMPROVEMENTS ===== If you know of additional conventions or official Microware references, please let the OS-9 community know on the [[https://discord.cocotalk.live|CoCo Discord]] in the **#os-9** channel. ===== RTS ===== Return to [[:OS-9:]] or [[:Top:]]