home *** CD-ROM | disk | FTP | other *** search
/ GEMini Atari / GEMini_Atari_CD-ROM_Walnut_Creek_December_1993.iso / zip / language / sozoinit.zoo / SOZOINIT.S < prev   
Text File  |  1990-06-15  |  2KB  |  101 lines

  1. ****    sozoinit.s - sozobon program/accessory startup    ****
  2. ****    by samuel streeper 900411                        ****
  3.  
  4. *
  5. * Base page definitions
  6. *
  7. codelen    equ 12            * Code segment length
  8. datalen equ 20            * Data segment length
  9. bsslen    equ 28            * Bss  segment length
  10. par_bp    equ 36            * Parent basepage
  11.  
  12. *
  13. * external references
  14. *
  15. .globl __main
  16. .globl _main
  17. .globl __base
  18. .globl __app
  19. .globl __progsize
  20.  
  21. .bss
  22. .even
  23. __base:                    * points to base page of program
  24.     .ds.l    1
  25. __app:                    * $ff=program is app, 0=program is accessory
  26.     .ds.w    1
  27. __progsize:
  28.     .ds.l    1
  29. saveret:
  30.     .ds.l    1
  31.  
  32.     .ds.b    6144        * 6K stack size
  33. _stackbottom:
  34.     .ds.l    1
  35.  
  36.  
  37.  
  38. .text
  39.  
  40. __main:
  41.         lea        __main, a5        * Compute basepage address
  42.         suba.w    #$100, a5        * subtract size of basepage
  43.         lea        _stackbottom,sp    * set up our stack
  44.  
  45.         moveq    #0,d5
  46.         tst.l   par_bp(a5)        * Parent basepage pointer clear if ACC
  47.         sne        d5                * D5 set if application
  48.         move    d5,__app
  49.         beq     cont            * is an accessory
  50.  
  51.     app:
  52.         move.l    codelen(a5),d0
  53.         add.l    datalen(a5),d0
  54.         add.l    bsslen(a5),d0
  55.         addi.l    #$100,d0
  56.  
  57.         move.l    d0,__progsize
  58.  
  59.         move.l    d0,-(sp)        * amount of memory to keep
  60.         move.l    a5,-(sp)        * starting at basepage
  61.         clr        -(sp)
  62.         move    #$4a,-(sp)        * Mshrink() - return excess storage
  63.         trap    #1
  64.         lea        12(sp),sp
  65.  
  66.     cont:
  67.         move.l    a5, __base        * so user progs can find basepage
  68.  
  69.         jsr        _main            * call application
  70.  
  71.         clr        -(sp)            * Pterm0()
  72.         trap    #1
  73.  
  74.  
  75.     ************************************
  76.     * Bindings for gemdos, bios, xbios *
  77.     * These may be moved into dlibs in *
  78.     * a later version                  *
  79.     ************************************
  80.  
  81.          .globl _gemdos 
  82.    _gemdos: 
  83.          move.l    (sp)+,saveret 
  84.          trap      #1 
  85.          move.l    saveret,-(sp) 
  86.          rts 
  87.  
  88.          .globl _bios 
  89.    _bios: 
  90.          move.l    (sp)+,saveret 
  91.          trap      #13 
  92.          move.l    saveret,-(sp) 
  93.          rts 
  94.  
  95.          .globl _xbios 
  96.    _xbios: 
  97.          move.l    (sp)+,saveret 
  98.          trap      #14 
  99.          move.l    saveret,-(sp) 
  100.          rts
  101.