home *** CD-ROM | disk | FTP | other *** search
/ Fujiology Archive / fujiology_archive_v1_0.iso / S / SHAPESFT / MSXMENU2.ZIP / MSXMENU2.MSA / CHAINS / CHAIN1.S < prev    next >
Text File  |  1985-11-20  |  2KB  |  103 lines

  1. * Aug 3 1989  **** Budgie UK
  2. * Basic CHAIN routine     CHAIN1.S
  3. * vertical slot used is $4de
  4. *------------------------------------------**
  5.  
  6. * reallocate unused memory to Gemdos
  7. m_shrink
  8.     MOVEA.L    A7,A5        save stack pointer
  9.     move.l     #stack,A7    set up local stack
  10.     MOVEA.L    4(A5),A5    basepage address i.i. program start
  11.     MOVE.L    12(A5),D0    get length of text (the code)
  12.     ADD.L    20(A5),D0    add length of defined data (DC.W...)
  13.     ADD.L    28(A5),D0    add length of BSS reserved space (DS.W...)
  14.     ADDI.L    #256,D0        add basepage length
  15.     MOVE.L    D0,-(A7)        total memory required
  16.      MOVE.L    A5,-(A7)        program start address
  17.     CLR.W    -(A7)        junk word
  18.     MOVE.W    #$4A,-(A7)    SETBLOCK command
  19.     TRAP    #1        
  20.     LEA    $0C(A7),A7
  21.  
  22.     bra    over
  23.  
  24. name1    dc.b    "a:\tunes_1\anth*.prg",0  v/b music
  25.  
  26.  
  27. name2    dc.b    "a:\budgie.med\per*.prg",0
  28.     even
  29.  
  30. over    move.w  #4,-(sp)        get resolution        
  31.     trap    #14
  32.     addq.l  #2,sp
  33.     move.w  d0,oldrez        and save it
  34.  
  35.     dc.w    $a000
  36.     dc.w    $a00a
  37.  
  38.  
  39. * call and execute next program
  40.  
  41.     move.l    #environment,-(sp)    call program one
  42.     move.l    #environment,-(sp)
  43.     pea    name1        
  44.     move.w    #0,-(sp)    chain this routine
  45.     move.w    #$4b,-(sp)    execute it
  46.     trap    #1        
  47.     adda.l    #$10,sp
  48.  
  49.  
  50. getkey    move.w    #$07,-(sp)
  51.     trap    #1
  52.     addq.l    #2,sp
  53.     andi.w    #$df,d0
  54.  
  55. * if we ever come back here, call next one!
  56. cont
  57.     move.w  #1,-(sp)    
  58.     move.l  #-1,-(sp)
  59.     move.l  #-1,-(sp)
  60.     move.w  #5,-(sp)
  61.     trap    #14
  62.     add.l   #12,sp
  63.  
  64.  
  65.     move.l    #environment,-(sp)    call program two
  66.     move.l    #environment,-(sp)
  67.     pea    name2
  68.     move.w    #0,-(sp)    chain this routine
  69.     move.w    #$4b,-(sp)    execute it
  70.     trap    #1        
  71.     adda.l    #$10,sp
  72.  
  73. * if we ever come back here, resume with this loader
  74. quit
  75.  
  76.     move.w  oldrez,-(sp)    old resolution back
  77.     move.l  #-1,-(sp)
  78.     move.l  #-1,-(sp)
  79.     move.w  #5,-(sp)
  80.     trap    #14
  81.     add.l   #12,sp
  82. * in this example, just exit...
  83.  
  84.     move.w    #0,-(sp)    back to desktop
  85.     move.w    #$4c,-(sp)
  86.     trap    #1
  87.  
  88.  
  89.     even
  90. lo0    ds.w    64        
  91. environment
  92.     dc.b    0,0,0,0,0,0
  93.     even
  94. text    dc.b    10,10,10,10,10,13,13,13
  95.     dc.b    " Press ESC to quit                ",10,13
  96.      dc.b    " Any other key to load PERUSER    ",10,13
  97.     dc.b    " HELP to toggle music at any time ",10,13
  98.     dc.b    " UNDO to kill music interrupt     ",10,13,0
  99.     dc.b    " Press ESC to quit                ",10,13
  100.     even
  101. oldrez    dc.w    0
  102.     ds.w 256
  103. stack    dc.l 0