home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD2.iso / Misc / DC-POS24.LZX / pOS / ReadMe_pOS_Dev.txt < prev    next >
Encoding:
Text File  |  1997-03-18  |  17.9 KB  |  628 lines

  1. Stand 09.03.97
  2.  
  3. Inhalt:
  4. - pOS Starten
  5. - Benutzung
  6. - Zukunft
  7. - Probleme & Wünsche
  8. - Mitgelieferte Libs und Objs
  9. - Portierung von AmigaOS auf pOS (pOSxA)
  10. - Auflagen für die pOS-Programmierung
  11. - Will Ihr Programm nicht laufen ...
  12. - p-OS Debugger
  13. - Verzeichnisaufbau
  14. - MakeFiles
  15.  
  16.  
  17.  
  18.  
  19. ****** pOS Starten ***************************************************
  20.  
  21. A C H T U N G:
  22.  run sushi   => pOS schreibt Debug-Infos mit kprintf()
  23.  
  24. (bitte nicht überlesen - ist *sehr* wichtig )
  25.  
  26.  
  27.  
  28. pos:pos/pOS 640 512 [ depth # debug # view # scsi <> ]
  29. - depth Bildschirmtiefe 3-8
  30. - debug -1  => FULL
  31. - view Amiga-Viewmode
  32. - scsi <scsi.device> => wird nach pScsi.device Unit 8+x gespiegelt
  33.  
  34.  
  35. !!! Die Amiga-Workbench darf mit max. 256 Farben betrieben werden !!!
  36. !!! Mit Angabe vom ViewMode kann dies umgangen werden             !!!
  37.  
  38. ****** Benutzung *******************************************************
  39.  
  40. - Mittlere Maustaste bzw. linke Maustaste + CTRL  => Drag & Drop
  41. - rechte Maustaste => Menü
  42. - rechte Maustaste im Gadget => Abort
  43.  
  44.  
  45. ****** Zukunft *******************************************************
  46.  
  47. Während der Entwicklungs-Phase behalten wir uns das Recht vor,
  48. Strukturen und Prototypen zu ändern. Dies hat zur Folge, daß
  49. sämtliche Programme neu compiliert werden müssen. (Tag EXTSTTAG_MainOSID)
  50.  
  51.  
  52. ****** Probleme & Wünsche ********************************************
  53.  
  54. Sollten Probleme aufteten, sofort an proDAD senden ;-)
  55. Bitte schreibt uns was nicht gut ist bzw. was noch fehlt.
  56. Jede Kleinigkeit, wenn es auch noch so nichtig erscheint. Wir können
  57. dann sofort darauf reagieren und im nächsten Update ist es verbessert.
  58. Danke. ;-)
  59.  
  60.  
  61. ****** Mitgelieferte Libs und Objs ***********************************
  62.  
  63.  
  64. - pOS.lib  - pOS-Linklibrary (amiga.lib)
  65.   Source <pLib/pLibExt.c>
  66.  
  67. - pOSStub.lib - Aufruf der OS-Funktionen, zur Zeit gibt es noch
  68.   keine Pragmas.
  69.   Source <pOSStub.asm>
  70.  
  71. - List.lib - Listenfunktionen (pOS_ListAddHead, ...) in Ansi-C
  72.  
  73. - CPPList.lib - Listenfunktionen (pOS_ListAddHead, ...) in C++
  74.  
  75. - pOSxA.lib - Ersatzfunktionen für Amiga => pOS - Portierung
  76.   Source <clib/#?.c>
  77.  
  78. - pOSxA_Support.lib - Ersatzfunktionen für Amiga => pOS - Portierung
  79.   Source <clib/#?.c>
  80.   Der Unterschied zur pOSxA.lib besteht darin, das __IGNORE_NOT_SUPPORTED__
  81.   gesetzt wurde. Der Compiler und Linker ignoriert Portierungsfehler und
  82.   ersetzt einige Funktionen bzw. Flags, Tags durch Platzhalter.
  83.  
  84. - pLib/StartCode.o - Normalen Startupcode für pOS_ReadArgs-Programme
  85.   Source <pLib/StartCode.c>
  86.  
  87. - pLib/StartCodeCPP.o - im C++ - Mode übersetzt, beinhaltet zusätzlich
  88.    InitModules() und CleanupModules()
  89.  
  90. - pLib/MainCode.o - Normalen Startupcode für main(int,cahr**) -Programme
  91.   Source <pLib/MainCode.c>
  92.  
  93. - pLib/MainCodeCPP.o - im C++ - Mode übersetzt, beinhaltet zusätzlich
  94.    InitModules() und CleanupModules()
  95.  
  96. - StdIO.lib bzw. pLib/StdIO.o - Funktionen wie fopen(), printf(), ...
  97.   Achtung: Unbedingt mit dem mitgeliefertem <stdio.h> arbeiten.
  98.   Source <pLib/StdIO.c>
  99.  
  100. - pLib/Time.o - Time-Funktionen wie time()
  101.   Source <pLib/Time.c>
  102.  
  103. - pLib/LibCode.o - Library-Resident Header
  104.   Source <pLib/LibCode.asm>
  105.  
  106. - pLib/DevCode.o - Device-Resident Header
  107.   Source <pLib/DevCode.asm>
  108.  
  109.  
  110.  
  111.  
  112. ****** Portierung von AmigaOS auf pOS (pOSxA) ************************
  113.  
  114. - W I C H T I G:
  115.   - Bitte zuerst den Source in clib/#?.c betrachten.
  116.     Nicht alle Amiga-Funktionen sind nachgebildet.
  117.   - Keine AmigaOS-Teile in pOS-Programme einbinden.
  118.     Immer den pOS-StartCode/MainCode als erstes Objekt linken.
  119.     Source liegt bei. (pLib/#?Code.c)
  120.   - printf() verlangt StdIO.lib (Source liegt bei)
  121.   - Keine Amiga-Pragmas (libcall, amicall) verwenden.
  122.   - Alle benötigten Libraries (außer pExec.library) müssen im Programm
  123.     geöffnet und geschlossen werden.
  124.     Sämtliche Library-Base-Pointer wurden geändert.
  125.     Dies bedeutet, daß ALLE Library-Open/Close - Aufrufe überarbeitet
  126.     werden müssen.
  127.     Das Auto-Open der Libraries ist *NICHT* gegeben. Alle benötigten Libs
  128.     müssen geöffnet werden.
  129.     In StormC für pOS wird es wieder ein Auto-Open geben. ;-)
  130.   - Sämtliche Gadget-Class-Names haben sich verändert
  131.   - Es darf kein Compiler exit() verwendet werden.
  132.     Zur Zeit kann nur StromC dies korrekt handhaben.
  133.   - ModeNotAvailable() macht u.U. logische Probleme.
  134.   - Wird mittels NewObjectA() ein neues Gadget erzeugt, MUSS IMMER
  135.     die DrawInfo übergeben werden.
  136.   - Gadget-Daten nicht mit SetAttrs() setzen, sondern immer
  137.     SetGadgetAttrsA() verwenden. (Window=NULL ist erlaubt)
  138.   - gadget->SpecialInfo ist nicht für alle Gadgets verfügbar
  139.     Es funktioniert bei:
  140.         strgad.class, propgad.class,
  141.   - Speicherverwaltungsfunktionen wie malloc(), calloc(), free() dürfen
  142.     nicht verwendet werden, wenn die Compiler-Libs nicht auf p-OS angepaßt
  143.     sind.
  144.     Nur mit StormC für pOS möglich.
  145.  
  146. - Source:
  147.   - Source von pOSxA befindet sich in <pOSxA/clib/#?.c>
  148.   - Startcode - Source <p:pLib/MainCode.c> <p:pLib/StartCode.c>
  149.   - Libs  <p:pLib/Std#?.c> <p:pLib/pLibExt.c>
  150.   - pOSStub.asm
  151.  
  152.  
  153. - Wird der define __IGNORE_NOT_SUPPORTED__ gesetzt, werden sämtliche
  154.   nicht vorhandenen Funktionen und Defines durch Dummy-Funktionen
  155.   ersetzt.
  156.  
  157. - Gadget müssen immer mittels NewIObject(); erzeugt werden.
  158.  
  159. - (&Screen->ViewPort) wurde in (Screen->ViewPort) geändert
  160.  
  161. - (&Screen->LayerInfo) wurde in (Screen->LayerInfo) geändert
  162.  
  163. - OpenDiskFont() wird nicht mehr benötigt, OpenFont() läd Fonts nach.
  164.  
  165. - Im Screen wurde die Text-Struktur geändert:
  166.    (screen->Font->ta_YSize)  =>  (screen->Font->tf_YSize)
  167.  
  168. - Im Window wurde das Menü verändert:
  169.     'window->MenuStrip'
  170.     Menüs dürfen NICHT 'zu Fuß' bearbeitet werden.
  171.  
  172. - sizeof(struct EasyStruct) wurde verändert, alle neuen Werte
  173.   müssen mit null initialisiert werden.
  174.  
  175. - IDCMP-Messages dürfen NICHT 'zu Fuß' aus dem UserPort
  176.   entfernt werden. Siehe pOS_ModifySharedIDCMP()
  177.   ( S E H R   W I C H T I G )
  178.  
  179. - In der pOS-Entwicklerversion werden sämtliche Listen-Funktionen
  180.   geprüft. Das bedeutet, daß in jedem neuen Node ln_Succ und ln_Pred
  181.   genullt sein müssen.
  182.  
  183. - Da alle pOS-Gadgets mit Listen verwaltet sind, darf beim OpenWindow
  184.   kein Gadget angegeben werden. Gadgets müssen immer mittels AddGList
  185.   dem Window mitgeteilt werden. Vor dem CloseWindow muß ZUERST RemGList
  186.   aufgerufen werden, sonst kann FreeGadgets() nicht korrekt arbeiten.
  187.  
  188. - Bei OpenFont darf FPF_DISKFONT nicht gesetzt werden.
  189.  
  190. - Zur einfacheren Portierung existiert eine Amiga-Gadget Klasse.
  191.   Dieses Gadget kann z.Z. Images anzeigen.
  192.   <amigagad.library/amigagad.class>
  193.   Source <pOS_RKRM/pGadgets/AmigaGad.c>
  194.  
  195. - In der DrawInfo wurde 'dri_Depth' gegen 'dri_NumColorPens' ersetzt.
  196.   Aber: dri_NumColorPens = 1<<dri_Depth  (normalerweise)
  197.  
  198. - Kopieren nach StringInfo->Buffer hat u.U. keine Auswirkung, wogegen
  199.   lesen immer zulässig ist.
  200.  
  201. - Gadget-Shortkeys arbeiten nur, wenn pOS_SysIMessage() verwendet wird.
  202.   Aber, pOS_SysIMessage() verarbeitet weitere Messages. Um einen
  203.   Seiteneffekt zu verhindern, sollte pOS_SysIMessage() nur dann aufgerufen
  204.   werden, wenn eine Keyborad-Message vorliegt.
  205.   Siehe Source von GT_ReplyIMsg()
  206.  
  207. - Slider im Window-Border müssen anderst berechnet werden. + (Border-Flag)
  208.   Siehe pOS_RKRM/pIntui/SuperWin.c
  209.  
  210. - Um keine Refresh-Fehler zu erhalten, sollte immer bei IDCMP_RefreshWindow
  211.            GT_GetIMsg()
  212.              ...
  213.              GT_BeginRefresh()
  214.                .... eigene Zeichen-Routine
  215.              GT_EndRefresh()
  216.            GT_ReplyIMsg()
  217.   aufgerufen werden.
  218.  
  219.  
  220.  
  221. - IDCMP_Update kann nicht direkt umgesetzt werden.
  222. Vorschlag:
  223.   {
  224.     struct pOS_IntuiMessage* Msg;
  225.     ...
  226.     if(Msg->im_Class==IDCMP_UpdateGadget) {
  227.       if(Msg->im_Code==IEGUCODE_Notify) {
  228.         const struct pOS_TagItem *Tag=(struct pOS_TagItem*)Msg->im_Data;
  229.         ...
  230.       }
  231.     }
  232.     ...
  233.   }
  234. oder:
  235.   {
  236.     struct IntuiMessage* Msg;
  237.     ...
  238.     if(Msg->Class==IDCMP_IDCMPUPDATE) {
  239.       const struct TagItem *Tag=IDCMP_GETTAGITEM(Msg);
  240.       if(Tag) {...}
  241.     }
  242.     ...
  243.   }
  244.  
  245. - ColorMap aus ViewPort
  246.   in pOSxA/clib/graphics_protos.c ist die Funktion
  247.   struct ColorMap* GetColorMapViewPort(struct ViewPort*);
  248.   definiert.
  249.  
  250.  
  251. - Ein auf dem Stack geklonter RastPort darf nur zur Font-Berechnung
  252.   verwendet werden. Es dürfen auf keinem Fall Draw-Funktionen
  253.   aufgerufen werden.
  254.   Ein Temp-RastPort *MUSS* mit pOS_AllocRastPort erzeugt werden.
  255.  
  256.  
  257.  
  258. ****** Auflagen für die pOS-Programmierung ***************************
  259.  
  260. Die jetztige Version besitzt einige Einschränkungen und hält die
  261. Entwickler an, einheitliche und zukunftssichere Applikationen zu schreiben.
  262.  
  263. - pOS_OpenScreen() arbeitet nicht:
  264.   Alle Applikationen müssen auf beliebigen Screens lauffähig sein.
  265.   Durch virtuelles True-Color existieren keine Farbprobleme.
  266.  
  267. - Nur Simple/Super-Refresh Window möglich:
  268.   Der Applikation muß es möglich sein, den Window-Inhalt zu jeder Zeit
  269.   neu zu zeichnen.
  270.   => Ziel: beliebige Screen-Umleitung auf Netzwerke, Speichereinsparung,
  271.            besserer Programmierstil (OOP)
  272.  
  273. - Forbid/Permit sind funktionstüchtig, müssen in zukünftigen Versionen
  274.   durch Semaphoren ersetzt werden.
  275.   => Multiprozessor-Architektur
  276.   Neue Funktionen zum Locken von Systemlisten sind vorhanden und
  277.   ersetzen Forbid/Permit.
  278.  
  279. - pOS_SetColor nicht verwenden - der Screen ist public
  280.   Vorschlag: pOS_ObtainColorPen()
  281.  
  282.  
  283.  
  284. ****** Nachträgliche Optimierung von Amiga-Programmen ****************
  285. - Beim Refresh mit den Funktionen pOS_CheckVisibleIBox() bzw.
  286.   pOS_CheckVisibleIRect() prüfen, ob das Zeichnen übersprungen werden kann.
  287.  
  288.  
  289.  
  290.  
  291. ****** Will Ihr Programm nicht laufen ...  ***************************
  292.  
  293. Zuerst empfehlen wird das p-OS mit 'debug -1' zu starten und Enforcer
  294. und Mungwall zu verwenden. Prüfen Sie nocheinmal, ob alle benötigten
  295. Libraries und Devices geöffnet und mit dem richten Base-Pointer arbeiten.
  296. => (gb_DosBase, gb_GfxBase, ...)
  297. Es ist ebenfalls wichtig, daß der mitgelieferte Start-Code verwendet wird.
  298. (muß die erste Funktion im Executable sein)
  299. Den define __IGNORE_NOT_SUPPORTED__   N I C H T  setzen und alles neu
  300. übersetzen.
  301. Stürtzt das Progamm willkürlich ab, so könnte dies auf einen Funktions-
  302. aufruf auf Amiga-Exec (über Adresse 4) hinweisen.
  303. Erzeugen Sie eine Linker-Map-Datei. Prüfen Sie, ob Amiga-Funktion eingelinkt
  304. wurden. (Die Stream-Funktionen greifen u.U. auf AmigaOS zurück.)
  305. Wird eine 'BitMap zu Fuß' erzeugt, können beim Zeichen Probleme entstehen.
  306. BitMaps immer mit AllocBitMap erzeugen und die 'friendMap' angeben.
  307. Wird der mitgelieferte Startcode verwendet, so *muß* das Programm mit
  308. FarCode/FarData übersetzt werden. Spezielle Optimierungen für Register-
  309. übergabe von Parametern können Probleme machen.
  310.  
  311. Sie können uns auch per e-mail (develop@prodad.de) erreichen.
  312.  
  313.  
  314.  
  315.  
  316. ****** p-OS Debugger *************************************************
  317.  
  318. Beim Start von pOS kann 'debug -1' mitangegeben werden.
  319.     => mehr output
  320.  
  321. Beim Start von pOS kann 'rangetst 1' mitangegeben werden.
  322.     => alle Pointer werden auf Gültigkeit im Adressraum geprüft.
  323.        Sonst werden Pointer nur gegen NULL getestet.
  324.  
  325. Wird ein Fehler angezeigt, der in einer List-Funktion auftritt und
  326. 'ln_Succ' bzw. 'ln_Pred' betrift, so kann das zweierlei Ursachen haben.
  327. - Der neue Node wurde nicht mit ww_InitNode() vorbereitet.
  328.   {ln_Succ=NULL; ln_Pred=NULL;}
  329. - Es liegt ein Listenfehler vor, doppeltes Einhängen bzw. Aushängen
  330.   vom Node.
  331.  
  332.  
  333. Bedeutung der Debug-Ausgaben:
  334. ---------------------------------------------------------------------
  335. Current: Task=0x7287560 Name=ShowDebug       => aktueller Task/Prozeß
  336. Error: |pOS_OpenFile| {rp const CHAR*}       => an dieser Stelle trat der Fehler auf
  337.                                              {} => Prüfverfahren:
  338.                                                rp  => Pointer test
  339.                                                cmp => compare
  340.  
  341.    var: |name| = 0x0                         => Name der Var(iable) und aktueller Wert
  342.  
  343. ---------------------------------------------------------------------
  344.  
  345.  
  346.  
  347.  
  348. ****** Verzeichnisaufbau (Vorschlag von proDAD)  *********************
  349. Assign p:
  350.  
  351. Dir p:
  352. -------------------------------
  353.    pDOS (dir)          - allgemeines zu DOS
  354.      ArgTags.h
  355.      Date.h
  356.      ...
  357.  
  358.    pDtType (dir)       - allgemeines zu DataTypes
  359.      Ascii.h
  360.      DClass.h
  361.      ...
  362.  
  363.    pExec (dir)         - allgemeines zu Exec
  364.      CallBack.h
  365.      Class.h
  366.      Device.h
  367.      ...
  368.  
  369.    pGadget (dir)       - allgemeines zu Gadgets
  370.      GadCB.h
  371.      Gadget.h
  372.      GadItem.h
  373.      ...
  374.  
  375.    pGFX (dir)          - allgemeines zu Graphics
  376.      Color.h
  377.      ColorEx.h
  378.      Text.h
  379.      ...
  380.  
  381.    pIntui (dir)        - allgemeines zu Intuition
  382.      GClass.h
  383.      ICI.h
  384.      IntuMsg.h
  385.      ...
  386.  
  387.    pLayer (dir)        - allgemeines zu Layer
  388.      Clip.h
  389.      Rect.h
  390.      ...
  391.  
  392.    pLib (dir)          - spezielles für den Compiler/Linker
  393.      DevCode.asm   - Device-Startcode
  394.      DevCode.o
  395.      LibCode.asm   - Library-Startcode
  396.      LibCode.o
  397.      MainCode.c    - main(int,char**) - Startcode
  398.      MainCode.o
  399.      pLibExt.c     - pOS.lib Source
  400.      SpConsole.h   - Sp#?.h - Jmp-Table
  401.      ...
  402.      StartCode.c   - StartCode für pOS_ReaDosArgs()
  403.      StartCode.o
  404.      StdIO.c       - StdIO-Funks (printf, fopen, ...)
  405.      StdIO.o
  406.      Time.c        - StdTime
  407.  
  408.    pPrefs (dir)        - allgemeines zu dem Prefs-Programm
  409.      PrefsLibData.h
  410.      PrefsTags.h
  411.      ...
  412.  
  413.    pScreen (dir)       - allgemeines zu Screen/Window
  414.      DrawInfo.h
  415.      ScrTags.h
  416.      Window.h
  417.      ...
  418.  
  419.    pSL (dir)           - allgemeines zu pSL (Asl.library)
  420.      FileReq.h
  421.      FontReq.h
  422.      pSLTags.h
  423.      ...
  424.  
  425.    pUtil (dir)         - allgemeines zu Utility
  426.      TagItem.h
  427.      ...
  428.  
  429.    proto (dir)         - Prototypen, xx2.h => extern (für Sie)
  430.                                      xx.h => intern (nur zur Info)
  431.      pConsole.h    - interne Form
  432.      pConsole2.h   - normale Form der Prototypen
  433.      pList.h       - Protos für List-Funktionen
  434.      ...
  435.  
  436.  
  437.    Device (dir)
  438.      Console.h
  439.      IEvent.h
  440.      Walker.h
  441.      ...
  442.  
  443.  
  444.    pclib (dir)
  445.      ...           - wie proto/#?2.h, jedoch mit allen benötigten Includes
  446.  
  447.  
  448.  
  449. dir pos:pos
  450. --------------------------------
  451.      Games (dir)          - einige Spiele
  452.           tetris (dir)
  453.             Tetris
  454.        PBall              - wurde mit der sgos.library erstellt
  455.  
  456.      pOpus (dir)
  457.        pOpus              - Dir-Tool
  458.        pOpus.cfg
  459.  
  460.      Locale (dir)
  461.           Countries (dir)
  462.             Deutschland.country
  463.           Languages (dir)
  464.             deutsch.language
  465.           Catalogs (dir)
  466.                deutsch (dir)
  467.                     sys (dir)
  468.                       sys.catalog
  469.           Help (dir)
  470.             sys.hlp
  471.  
  472.      ssa (dir)         - (für proDAD und für den ssa-datatype)
  473.        ...
  474.  
  475.      c (dir)       - Kommandos ( c wird nicht über assign C: gesucht, sonder 'path' )
  476.        ...
  477.  
  478.      Ex (dir)      - Executables der pOS_RKRM-Beispiele
  479.        ...
  480.  
  481.      Prefs (dir)    - wird vom pOSPrefs geladen
  482.        #?.library
  483.  
  484.      Env (dir)          - ENV: ist eine MultiAssign (+ENVARC)
  485.           sys (dir)
  486.             con
  487.           Shell (dir)   - Default-Parameter für Shell-Kommandos
  488.             newshell
  489.           SysGfx (dir)
  490.  
  491.      EnvArc (dir)
  492.           sys (dir)
  493.             Locale.prefs
  494.             Serial.prefs
  495.           SysGfx (dir)
  496.             Background.pic
  497.             ES_Req.pic
  498.             prodad.anim
  499.  
  500.      S (dir)
  501.        EnBootShell.scp   - wird beim Schließen der Boot-Shell gestartet
  502.        EndShell.scp      - wird beim Schließen einer Shell gestartet
  503.        pdt_SDev          - Script/Command - wird von DOS bei 'not mounted'
  504.                            gestartet
  505.        StartShell.scp    - wird beim Öffner einer Shell gestartet
  506.        startup.scp       - wird beim 'Booten' aufgerufen
  507.        StBootShell.scp   - wird beim Öffnen der ersten Shell aufgerufen
  508.        user-startup.scp  - wird von 'startup.scp' aufgerufen
  509.  
  510.      Fonts (dir)
  511.           proDAD (dir)
  512.             16
  513.  
  514.      Devs (dir)
  515.        fsa.ddv           - Amiga kompatibles Filesystem
  516.        mountlist.arg     - Mountlist, in der s:pdt_SDev nach dem Device sucht
  517.  
  518.      Libs (dir)
  519.        AmigaGad.library           - Emulation vom Amiga-Gadget
  520.        CalcGad.library            - Taschenrechner-Gadget
  521.        FindGad.library            - Demolib aus pOS_RKRM
  522.        mathffp.library
  523.        MathIeeeSingBas.library
  524.        MathIeeeSingTrans.library
  525.        MathTrans.library
  526.        ObjATool.library           - Sammlung von Gadget für z.B. pOpus
  527.        plocale.library
  528.        psl.library                - wie asl.library
  529.        sgos.library
  530.        ...
  531.  
  532.  
  533. ****** MakeFiles ******************************************************
  534.  
  535. ------------------------ SAS (smake) -------------------------
  536. #
  537. # universal Makefile for pOS
  538. #
  539.  
  540.  
  541. OBJS  = GfxView.o
  542. PROG  = pOS:pOS/Ex/GfxView
  543.  
  544.  
  545. #
  546. # SAS/C
  547. #
  548.  
  549. CC = sc:c/sc
  550. LD = sc:c/slink
  551. AS = Prog:Barfly/basm
  552.  
  553. STARTUPCODE = p:pLib/StartCode.o
  554.  
  555. CCOPTS = ERRORREXX NOLINK NOICON DATA=FAR CODE=FAR CPU=68020 NOSTACKCHECK IGNORE=79 IGNORE=110 INCLUDEDIR=p: INCLUDEDIR=include: DEFINE __pOS__=1 OPTIMIZE OPTIMIZERINLINELOCAL OPTIMIZERTIME OPTIMIZERALIAS OBJECTNAME
  556. LDOPTS = SMALLDATA SMALLCODE
  557.  
  558. LIBS  = p:/lib/pOS.lib p:/lib/StdIO.lib p:/lib/pOSStub.lib p:/lib/List.lib
  559.  
  560.  
  561.  
  562. ------------------------ Storm ------------------------------
  563. #
  564. # StormC
  565. #
  566.  
  567. #CC = Prog:StormC/StormSYS/StormC2
  568. #LD = Prog:StormC/StormSYS/StormLink2
  569. #AS = Prog:Barfly/basm
  570.  
  571. #STARTUPCODE = p:pLib/StartCode.o
  572.  
  573. #CCOPTS = -as -pp -O9 -gC -gD -g20 -i p: -i include: -w500
  574. #LDOPTS = OOP
  575.  
  576. #LIBS   = StdIO.lib pOSStub.lib pOS.lib CPPList.lib
  577.  
  578.  
  579.  
  580. $(PROG): $(OBJS)
  581.         @Echo ""
  582.         @Echo "*e[20;1m Linking $<*e[0m"
  583.         @$(LD) $(STARTUPCODE) $(OBJS) TO $(PROG) LIB $(LIBS) $(LDOPTS)
  584.  
  585.  
  586. .c.o:
  587.         @Echo ""
  588.         @Echo "*e[20;1m Compiling $<*e[0m"
  589.         @$(CC) $(CCOPTS) $(OBJDIR)$*.o $*.c
  590.  
  591.  
  592. .s.o:
  593.         @Echo ""
  594.         @Echo "*e[20;1m Assembling $<*e[0m"
  595.         @$(AS) -o$(OBJDIR)$*.o $*.s
  596.  
  597.  
  598. GfxView.o: GfxView.c
  599.  
  600.  
  601.  
  602.  
  603. ---------------------------- Maxon ---------------------------
  604. mcppc3 -gs -o test p:pLib/StartCode.o -pc test.c -l StdIO.lib -l pOSStub -l pOS -l List
  605.  
  606.  
  607.  
  608. -gs = ohne Startupcode linken
  609. -o = Definiert Zieldateiname
  610. -pc = im C-Modus übersetzen
  611. -l pOSxA = wenn mit den Amiga-Cross-Includes (p:/pOSxA/#?) gearbeitet
  612.            wird. Sonst diesen Teil weglassen.
  613.  
  614. in ENV:CPPOPT ist voreingestellt:
  615. -w1000 -en -e10 -gh128 -pp -wEPRTcV -i p:/posxa -j ram:lib
  616. -i = Suchpfad für die Includedateien
  617. -j = Suchpfad für die Linklibraries
  618.  
  619.  
  620.  
  621.  
  622.  
  623.  
  624.  
  625.  
  626.  
  627. ©proDAD
  628.