home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaDemoCD2.iso / ASCII / TEXTE / DOCS / DOCS&CHAETSVolume1.dms / in.adf / HDSOURCE / Fast.Exe.S next >
Encoding:
Text File  |  1980-01-07  |  2.7 KB  |  145 lines

  1. ; Fast.Exe: This creates a Ram Buffer version of Aladdin.
  2. ;   BSS_F contains a Hunk 901120*NumDisks in length (holds disk images)
  3. ;
  4. ;                                  Mars Bar
  5.  
  6.     Section    "LoaderCode",Code_F
  7.     Opt    C-
  8.  
  9. Execbase    =    4
  10. OpenLibrary    =    -408
  11. CloseLibrary    =    -414
  12.  
  13. Open        =    -30
  14. Close        =    -36
  15. Seek        =    -66
  16. Read        =    -42
  17.  
  18. Start:    Bsr    OpenDos
  19.  
  20.     Lea    FileNames,A4
  21.     Bsr    LoadWholeFiles
  22.  
  23. ; ------------------------------- Start Of Patching ----------------------
  24.  
  25.     Move.L    #DiskData+$CE400,A0        ; Places the trainer menu
  26.     Move.L    #DiskData+$CE400+$B000,A1    ; in memory & runs it.
  27.     Lea    $4C000,A2
  28. .Loop:    Move.L    (A0)+,(A2)+
  29.     Cmp.L    A0,A1
  30.     Bne.S    .Loop
  31.     Jsr    $4c020
  32.  
  33.     Move.L    #DiskData+$400,A0
  34.     Move.L    #DiskData+$400+$1200,A1
  35.     Move.L    #$C0000,A2
  36. .Loop2:    Move.L    (A0)+,(A2)+
  37.     Cmp.L    A0,A1
  38.     Bne.S    .Loop2
  39.     
  40.     Lea    $C0000,A0
  41.     Move.L    #$100000,-4(A0)        ; Forces program to think No Fast Ram is available
  42.     Move.W    #$4EF9,$C01C0        ; 'JMP' command
  43.     Move.L    #Loader,$C01C2        ; Write loader address after JMP command.
  44.     Jmp    $C0000            ; Our loader will be JMP'd to every time
  45.                     ; the game loader is called
  46.                     
  47. Loader:    Movem.L    D0-D7/A0-A6,-(Sp)    ; When 'Loader' is called the registers
  48.                     ; are set up as follows:
  49.     Lea    DiskData,A1        ;    D1=Start Block
  50.     Cmp.W    #1,D4            ;    D2=Length To Read
  51.     Beq.S    .Disk2                 ;    D4=Disk Number
  52.     Cmp.W    #2,D4            ;    A0=Address To Load To
  53.     Beq.S    .Disk3
  54. .Continue:
  55.     Mulu    #$200,D1
  56.     Mulu    #$200,d2
  57.     Adda.L    D1,A1
  58. .Loop:    Move.B    (A1)+,(A0)+
  59.     Subq.L    #1,D2
  60.     Bne.S    .Loop
  61.  
  62.     Movem.L    (Sp)+,D0-D7/A0-A6
  63.     Movem.L    (Sp)+,D2-D7/A0-A6
  64.     Clr.L    d0
  65.     Tst.L    d0
  66.     Rts
  67.  
  68. .Disk3:    Adda.L    #901120,a1
  69. .Disk2:    Adda.L    #901120,a1
  70.     Bra.S    .continue
  71.  
  72. ; -------------------------------- Main Routines ------------------------
  73.  
  74. OpenDos:Move.L    ExecBase,A6
  75.     Lea    Dosname,A1
  76.     Moveq.L    #0,D0
  77.     Jsr    OpenLibrary(A6)
  78.     Move.L    D0,DosBase
  79.     Rts
  80.  
  81. LoadWholeFiles:
  82.     Move.L    FILEBUFFER,A2
  83. .AnotherFile:
  84.     Move.L    (A4)+,FileNamePointer
  85.     Tst.L    FileNamePointer
  86.     Beq.S    .NoMoreFiles
  87.     Move.L    A2,LoadDataTo
  88.     Bsr    LoadInFile
  89.     Add.L    #901120,A2
  90.     Bra.S    .AnotherFile
  91. .NoMoreFiles:
  92.     Rts
  93.  
  94. LoadInFile:
  95.     Move.L    DosBase,A6
  96.     Move.L    FileNamePointer,D1
  97.     Move.L    #1005,D2
  98.     Jsr    Open(A6)
  99.     Move.L    D0,FileBCPL
  100.     Move.L    D0,D1
  101.     Move.L    LoadDataTo,D2
  102.     Move.L    #901120,D3
  103.     Jsr    Read(A6)
  104.     Move.L    FileBCPL,D1
  105.     Jsr    Close(A6)
  106.     Rts
  107.  
  108. DosName:Dc.B    'dos.library',0
  109.     Even
  110. DosBase:Dc.L    0
  111.  
  112. FileNamePointer:Dc.L    0
  113. FileBCPL:    Dc.L    0
  114.  
  115. FilePointers:
  116. Disk1BCPL:Dc.L    0
  117. Disk2BCPL:Dc.L    0
  118. Disk3BCPL:Dc.L    0
  119. Disk4BCPL:Dc.L    0
  120. Disk5BCPL:Dc.L    0
  121. Disk6BCPL:Dc.L    0
  122. Disk7BCPL:Dc.L    0
  123. Disk8BCPL:Dc.L    0
  124. Disk9BCPL:Dc.L    0
  125. Disk10BCPL:Dc.L    0
  126.  
  127. OldInts:Dc.W    0
  128. OldIntr:Dc.W    0
  129. OldDsk:Dc.W    0
  130. LoadDataTo:Dc.L    0
  131. FILEBUFFER:Dc.L    DiskData
  132.  
  133. FileNames:
  134.     Dc.L    Disk1Name,Disk2Name,Disk3Name
  135.     Dc.L    0
  136. Disk1Name:Dc.b    'Disk1',0
  137.     Even
  138. Disk2Name:Dc.b    'Disk2',0
  139.     Even
  140. Disk3Name:Dc.b    'Disk3',0
  141.     Even
  142.  
  143.     Section    "BssData",BSS_F
  144. DiskData:Ds.B    901120*3
  145.