home *** CD-ROM | disk | FTP | other *** search
/ Frozen Fish 1: Amiga / FrozenFish-Apr94.iso / bbs / alib / d5xx / d569 / trackmaster.lha / TrackMaster / src / glues.a next >
Text File  |  1991-11-21  |  2KB  |  93 lines

  1.  
  2.     IncDir  sys:asmtools/include/
  3.     Include    exec/exec_lib.i
  4.     INCLUDE    exec/memory.i
  5.     include    exec/devices.i
  6.     include    exec/io.i
  7.     include    devices/trackdisk.i
  8.     include hardware/custom.i
  9.  
  10.     MODULE    glues
  11.                CODE
  12.     XDEF      _BBChkSum
  13.  
  14. _BBChkSum:
  15.     MOVEM.L    d2,-(sp)
  16.     MOVE.L     #0,4(a0)        ;alte  Checksumme  auf  Null  setzen
  17.     MOVE.L    a0,a1
  18.  
  19.     CLR.L     d0
  20.     CLR.L     d2
  21.     MOVE.L     #$ff,d1         ;Bootblocklänge  in  Worten
  22.     MOVE     #4,ccr
  23. .2:
  24.     MOVE.L     (a1)+,d2
  25.     ADDX.l     d2,d0
  26.     DBRA     d1,.2
  27.  
  28.     MOVEQ     #-1,d1
  29.     SUBX.l     d0,d1
  30.  
  31.     MOVE.L     d1,4(a0)        ;neue  checksumme
  32.     MOVEM.L    (sp)+,d2
  33.     RTS
  34.  
  35. ;­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­
  36.  
  37.     SECTION    Bootblock_V3.0,DATA_C
  38.     XDEF    _BootBlock
  39.     XDEF    _LoaderLength
  40.     XDEF    _LoaderOffset
  41.                XDEF    _NumFiles
  42.     OPT    P+,o+
  43.  
  44. AllRegs    REG    d0-d7/a0-a6
  45.  
  46. _BootBlock:    DC.B     "DOS",0    ; Bootblock ID
  47.     DC.L     0,880
  48.  
  49.     MOVE.L     4.w,A6
  50.     MOVEM.l AllRegs,-(sp)
  51.     MOVE.L    a1,a5    ; IO-Zeiger retten
  52.  
  53.     MOVE.L  _LoaderLength(pc),d0
  54.     move.L    #MEMF_PUBLIC|MEMF_CHIP|MEMF_CLEAR,d1
  55.     JSR    _LVOAllocMem(a6)
  56.     move.l    d0,a4
  57.     tst.l    d0
  58.     beq.s    .failed               ; Speicher für Loadprg reservieren
  59.  
  60.     move.l    a5,a1
  61.     MOVE     #CMD_READ,IO_COMMAND(a1)
  62.     MOVE.L     a4,IO_DATA(a1)    ; TableLoc
  63.     MOVE.L     _LoaderLength(pc),IO_LENGTH(a1)
  64.     MOVE.L     _LoaderOffset(pc),IO_OFFSET(a1)
  65.     JSR    _LVODoIO(a6)
  66.     TST.B    d0
  67.     bne.s    .failed
  68.     move.l    a5,a1
  69.                move.l    _NumFiles(pc),d0
  70.                JSR     (a4)    ; Rückkehr in DOS möglich, man weiß ja nie
  71. .failed    MOVEM.l    (sp)+,AllRegs
  72.  
  73.     LEA     DosL(pc),A1
  74.     JSR    _LVOFindResident(a6)
  75.     MOVE.L     D0,A0
  76.     MOVE.L     22(A0),A0
  77.     MOVEQ     #$00,D0
  78.     RTS
  79.  
  80. DosL:    DC.B     "dos.library",0
  81.  
  82. _LoaderOffset:    DC.L    0    ; Hier muss der DiskOffset rein
  83. _LoaderLength:    DC.L    0    ; Loaderlänge in Blöcken * 512 !!!
  84. _NumFiles:     dc.L    0
  85.  
  86.     DC.B    "TrackMaster V1.0 ©1991 by Cranium Software   "
  87.     DC.B    "Coding by Carsten Schlote, Egelseeweg 52, 6302 Lich 1 / Germany"
  88.     EVEN
  89. BBEnde:    DS.B    1024 - (BBEnde-BootBlock)
  90.     even
  91.     OPT    P-
  92.  
  93.