* 07.02.90: a6 wurde in der Library verändert, dadurch Absturz, wenn * der Compiler annahm, daß a6 noch unverändert war. Bis auf * Create/DeleteExt/StdIO beseitigt. Alles andere mit -ml * compiliert. Stof.c so angepaßt, daß mit -O compiliert werden * kann. Abfrage der einzelnen Funktionen wurde auf switch um- * geschrieben. * 23.03.90: NewRequest angefügt. * 28.03.90: Neuer Parser (a-e x und pi durch switch erreicht * 07.04.90: Alle Konstanten werden erkannt. * 30.05.90: left/right/mid/Umwftos umgewandelt, jetzt mit Zielangabe. * Neue Funktionen. RastPort jetzt immer in A1 * 10.06.90: left/right etc. auf VOID abgeändert, Calc_P auf LONG. * 11.07.90: IntuitionBase etc. über ToolBase erreichbar. SimpleMenu angefügt. * 03.08.90: -fi, SetDrMd in Print beseitigt include "exec/types.i" include "exec/initializers.i" include "exec/libraries.i" include "exec/lists.i" include "exec/resident.i" include "exec/strings.i" include "libraries/dos.i" include "exec/io.i" _LVOCloseLibrary equ -414 _LVOOpenLibrary equ -552 _LVORemove equ -252 _LVOFreeMem equ -210 callsys macro jsr _LVO\1(a6) endm xlib macro xref _LVO\1 endm * Die vorhandenen Funktionen xref _berechnen xref _request xref _copy xref _check xref _checkback xref _AnzahlKlammern xref _left xref _right xref _mid xref _UmwStoF xref _Fak xref _NuK xref _EventAbfrage xref _CreatePort xref _DeletePort xref _CreateExtIO xref _DeleteExtIO xref _CreateStdIO xref _DeleteStdIO xref _UmwFtoS xref _Print xref _Free_Konst xref _Init_Konst xref _Set_Konst_P xref _Init_Mem xref _Free_Block xref _Init_Block xref _PreCalc xref _GetKonst_P xref _Calc_P xref _NewRequest xref _Box xref _Center xref _Gadget_On xref _Gadget_Off xref _GetPropPosH xref _GetPropPosV xref _SetPropPosH xref _SetPropPosV xref _PrepareTmpRas xref _ClearTmpRas xref _PrepareArea xref _ClearArea xref _LastMenu xref _LastItem xref _LastSub xref _AddMenu xref _AddItem xref _AddSub xref _GetItem xref _ClearMenu xref _FreeItem xref _FreeMenu xref _NewSetMenuStrip xlib FreeMem xlib Remove xlib OpenLibrary xlib CloseLibrary xdef _SysBase xdef _IntuitionBase xdef _GfxBase xdef _MathIeeeDoubBasBase xdef _MathIeeeDoubTransBase VERSION equ 14 REVISION equ 3 STRUCTURE TestBase,LIB_SIZE BPTR extin_SegList APTR extin_SysBase APTR extin_GfxBase APTR extin_IntuitionBase APTR extin_MathIeeeDoubBasBase APTR extin_MathIeeeDoubTransBase Label extin_SIZEOF TESTLIBNAME macro dc.b 'tool.library',0 endm SECTION "Code",CODE moveq #RETURN_FAIL,d0 rts ROMTag: dc.w RTC_MATCHWORD dc.l ROMTag dc.l EndCode dc.b RTF_AUTOINIT dc.b VERSION dc.b NT_LIBRARY dc.b 0 dc.l libraryName dc.l idString dc.l Init libraryName: TESTLIBNAME cnop 0,2 idString: dc.b 'ToolLibrary 2.06 03-Aug-1990',CR,LF,0 cnop 0,2 gfxName: dc.b 'graphics.library',0 cnop 0,2 intName: dc.b 'intuition.library',0 mabName: dc.b 'mathieeedoubbas.library',0 matName: dc.b 'mathieeedoubtrans.library',0 cnop 0,2 Init: dc.l extin_SIZEOF dc.l funcTable dc.l dataTable dc.l .InitLib funcTable: dc.l .OpenLib dc.l .CloseLib dc.l .ExpungeLib dc.l .ExtFuncLib dc.l _left dc.l _right dc.l _mid dc.l _UmwFtoS dc.l _copy dc.l _check dc.l _checkback dc.l _AnzahlKlammern dc.l _request dc.l _NewRequest dc.l _EventAbfrage dc.l _Print dc.l _Box dc.l _Center dc.l _Gadget_On dc.l _Gadget_Off dc.l _GetPropPosH dc.l _GetPropPosV dc.l _SetPropPosH dc.l _SetPropPosV dc.l _PrepareTmpRas dc.l _ClearTmpRas dc.l _PrepareArea dc.l _ClearArea dc.l _UmwStoF dc.l _Fak dc.l _NuK dc.l _berechnen dc.l _Init_Konst dc.l _Init_Mem dc.l _Init_Block dc.l _Set_Konst_P dc.l _GetKonst_P dc.l _PreCalc dc.l _Calc_P dc.l _Free_Konst dc.l _Free_Block dc.l .CreatePort dc.l .DeletePort dc.l .CreateExtIO dc.l .DeleteExtIO dc.l .CreateStdIO dc.l .DeleteStdIO dc.l _LastMenu dc.l _LastItem dc.l _LastSub dc.l _AddMenu dc.l _AddItem dc.l _AddSub dc.l _GetItem dc.l _ClearMenu dc.l _FreeItem dc.l _FreeMenu dc.l _NewSetMenuStrip dc.l -1 dataTable: INITBYTE LH_TYPE,NT_LIBRARY INITLONG LN_NAME,libraryName INITBYTE LIB_FLAGS,LIBF_SUMUSED!LIBF_CHANGED INITWORD LIB_VERSION,VERSION INITWORD LIB_REVISION,REVISION INITLONG LIB_IDSTRING,idString dc.l 0 .InitLib: move.l a5,-(sp) movea.l d0,a5 move.l a0,extin_SegList(a5) lea gfxName(pc),a1 moveq #LIBRARY_VERSION,d0 callsys OpenLibrary tst d0 beq.s 1$ move.l d0,_GfxBase move.l d0,extin_GfxBase(a5) lea intName(pc),a1 moveq #LIBRARY_VERSION,d0 callsys OpenLibrary tst d0 beq.s 1$ move.l d0,_IntuitionBase move.l d0,extin_IntuitionBase(a5) lea mabName(pc),a1 moveq #LIBRARY_VERSION,d0 callsys OpenLibrary tst d0 beq.s 1$ move.l d0,_MathIeeeDoubBasBase move.l d0,extin_MathIeeeDoubBasBase(a5) lea matName(pc),a1 moveq #LIBRARY_VERSION,d0 callsys OpenLibrary tst d0 beq.s 1$ move.l d0,_MathIeeeDoubTransBase move.l d0,extin_MathIeeeDoubTransBase(a5) move.l a6,extin_SysBase(a5) move.l a6,_SysBase move.l a5,d0 1$ movea.l (sp)+,a5 rts .OpenLib: addq.w #1,LIB_OPENCNT(a6) bclr #LIBB_DELEXP,LIB_FLAGS(a6) move.l a6,d0 rts .CloseLib: moveq #0,d0 subq.w #1,LIB_OPENCNT(a6) bne.s 1$ btst #LIBB_DELEXP,LIB_FLAGS(a6) beq.s 1$ bsr.s .ExpungeLib 1$ rts .ExpungeLib: movem.l d2/a5/a6,-(sp) tst.w LIB_OPENCNT(a6) beq.s 1$ bset #LIBB_DELEXP,LIB_FLAGS(a6) moveq #0,d0 bra.s 2$ 1$ move.l a6,a5 move.l extin_SysBase(a5),a6 movea.l extin_GfxBase(a5),a1 callsys CloseLibrary movea.l extin_IntuitionBase(a5),a1 callsys CloseLibrary movea.l extin_MathIeeeDoubBasBase(a5),a1 callsys CloseLibrary movea.l extin_MathIeeeDoubTransBase(a5),a1 callsys CloseLibrary move.l a5,a1 callsys Remove move.l extin_SegList(a5),d2 movea.l a5,a1 moveq #0,d0 move.w LIB_NEGSIZE(a5),d0 suba.l d0,a1 add.w LIB_POSSIZE(a5),d0 callsys FreeMem move.l d2,d0 2$ movem.l (sp)+,d2/a5/a6 rts .ExtFuncLib: moveq #0,d0 rts * Konvertierungsroutinen (Parameter aus den Registern auf den Stack) .CreatePort move.l a6,-(sp) move.l d0,-(a7) move.l a0,-(a7) jsr _CreatePort add.l #8,sp move.l (sp)+,a6 rts .DeletePort move.l a6,-(sp) move.l a0,-(a7) jsr _DeletePort addq.l #4,sp move.l (sp)+,a6 rts * Die Funktionen sind gleich, StdIO benutzt feste Speichergröße .CreateStdIO moveq #IOSTD_SIZE,d0 .CreateExtIO move.l d0,-(a7) move.l a0,-(a7) jsr _CreateExtIO add.l #8,sp rts * Die Funktionen sind gleich, StdIO benutzt feste Speichergröße .DeleteStdIO moveq #IOSTD_SIZE,d0 .DeleteExtIO move.l a0,-(a7) jsr _DeleteExtIO addq.l #4,sp rts EndCode: section "data2",bss * Die öffentlichen Symbole _SysBase ds.l 1 _GfxBase ds.l 1 _IntuitionBase ds.l 1 _MathIeeeDoubBasBase ds.l 1 _MathIeeeDoubTransBase ds.l 1 end