home *** CD-ROM | disk | FTP | other *** search
/ Fish 'n' More 2 / fishmore-publicdomainlibraryvol.ii1991xetec.iso / disks / disk393.lzh / LibTool / AsmSimple / SimpleApp.asm < prev   
Assembly Source File  |  1990-10-28  |  2KB  |  99 lines

  1. ;**************************************************************************
  2. ; SimpleApp.asm
  3. ;
  4. ; This is an application which tests our "simple.library" assembly example.
  5. ; It opens the simple.library, and calls each of the functions with some
  6. ; args. It prints results to the CLI. Then, it close the lib and exits.
  7. ;
  8. ;Link as follows:
  9. ;Blink startup.o simpleapp.o small.lib nodebug to TEST
  10.  
  11.     INCLUDE    "Simple.i"    ;our asm INCLUDE file made by LibTool (-a option)
  12.  
  13.     ;from StartUp.o
  14.     XREF    _DOSBase,_SysBase,_stdout
  15.  
  16.     ;from amiga.lib or small.lib
  17.     XREF    _LVORawDoFmt,_LVOWrite,_LVOOpenLibrary,_LVOCloseLibrary
  18.  
  19.     XDEF    _main
  20. _main:
  21.     ;--- Open our simple.library
  22.     lea    SimpleName,a1
  23.     moveq    #simpleVERSION,d0    ;from the INCLUDE file
  24.     movea.l    _SysBase,a6
  25.     jsr    _LVOOpenLibrary(a6)
  26.     lea    NoSimple,a0
  27.     move.l    d0,d7
  28.     beq.s    printf
  29.     ;--- Call Add2Numbers and print results
  30.     moveq    #2,d0
  31.     moveq    #3,d1
  32.     movea.l    d7,a6
  33.     jsr    _LVOAdd2Numbers(a6)    ;2+3
  34.     lea    AddAnswer,a0
  35.     move.l    d0,-(sp)
  36.     bsr.s    printf
  37.     addq.l    #4,sp
  38.     ;--- Call Sub2Numbers and print results
  39.     moveq    #10,d0
  40.     moveq    #4,d1
  41.     movea.l    d7,a6
  42.     jsr    _LVOSub2Numbers(a6)    ;10-4
  43.     lea    SubAnswer,a0
  44.     move.l    d0,-(sp)
  45.     bsr.s    printf
  46.     addq.l    #4,sp
  47.     ;--- Call Mult2Numbers and print results
  48.     moveq    #8,d0
  49.     moveq    #8,d1
  50.     movea.l    d7,a6
  51.     jsr    _LVOMult2Numbers(a6)    ;8*8
  52.     lea    MultAnswer,a0
  53.     move.l    d0,-(sp)
  54.     bsr.s    printf
  55.     addq.l    #4,sp
  56.     ;--- Close simple.library and exit
  57.     movea.l    d7,a1
  58.     movea.l    _SysBase,a6
  59.     jmp    _LVOCloseLibrary(a6)
  60.  
  61.  
  62.     XDEF     printf
  63. printf:
  64.     move.l    _stdout,d0
  65.     beq.s    3$
  66.     lea    4(sp),a1    ;args to format (if any)
  67.     movem.l    d2/d3/a2/a3/a4/a6,-(sp)
  68.     movea.l    d0,a4
  69.     moveq    #126,d0
  70.     suba.l    d0,sp        ;get a buffer to hold the string
  71.     lea    storeIt,a2
  72.     movea.l    sp,a3
  73.     movea.l    _SysBase,a6
  74.     jsr    _LVORawDoFmt(a6)
  75.     moveq    #-1,d3
  76. 1$    move.b    (a3)+,d0
  77.     Dbeq    d3,1$(pc)
  78.     not.l    d3
  79.     beq.s    2$
  80.     move.l    sp,d2
  81.     move.l    a4,d1
  82.     movea.l    _DOSBase,a6
  83.     jsr    _LVOWrite(a6)
  84. 2$    moveq    #126,d0
  85.     adda.l    d0,sp
  86.     movem.l    (sp)+,d2/d3/a2/a3/a4/a6
  87. 3$    rts
  88.  
  89. storeIt    move.b    d0,(a3)+
  90.     rts
  91.  
  92. SimpleName    dc.b    'simple.library',0
  93. NoSimple    dc.b    'can',$27,'t get simple.library in LIBS',10,0
  94. AddAnswer    dc.b    '2 + 3 = %ld',10,0
  95. SubAnswer    dc.b    '10 - 4 = %ld',10,0
  96. MultAnswer    dc.b    '8 * 8 = %ld',10,0
  97.  
  98.     END
  99.