supermario/base/SuperMarioProj.1994-02-09/OS/SCSIMgr/SCSIMgrInitDB.a
2019-06-29 23:17:50 +08:00

99 lines
3.0 KiB
Plaintext

;
; File: SCSIMgrInitDB.a
;
; Contains: DB Lite SCSI Manager c80 initialization routines
;
; Written by: James Blair
;
; Copyright: © 1992, 1994 by Apple Computer, Inc. All rights reserved.
;
; This file is used in these builds: ROM
;
; Change History (most recent first):
;
; <SM2> 1/26/94 rab Removed padForOverpatch stuff from the end of this file
; (SuperMario does not use it…).
; <SM1> 2/5/93 CSS Checkin from Horror.
; <H2> 3/3/92 SWC Added overpatch padding.
; <H1> 2/10/92 SWC jab/Added dual SCSI bus code for DBLite to HORROR.
;
BLANKS ON ; assembler accepts spaces & tabs in operand field
STRING ASIS ; generate string as specified
PRINT OFF ; do not send subsequent lines to the listing file
; don't print includes
IF (&TYPE('dbugSCSIDB') = 'UNDEFINED') THEN
dbugSCSIDB EQU 0 ; for debugging purposes
ENDIF
LOAD 'StandardEqu.d' ; from StandardEqu.a and for building ROMs
INCLUDE 'HardwareEqu.a' ;
INCLUDE 'SCSI.a' ; <SM1> CSS
INCLUDE 'SCSIPriv.a'
INCLUDE 'UniversalEqu.a' ; for TestFor
PRINT ON ; do send subsequent lines to the listing files
SCSIInitDB PROC EXPORT ;
EXPORT InitMgr_SCSIDB
IMPORT SCSIMgr_DB
IMPORT DoSCSIReset_DB
IMPORT DoSCSIGet_DB
IMPORT DoSCSISelect_Dc80
WITH scsiGlobalRecord
;-------------------------------------------------------------
;
; Initialization code for the DB Lite SCSI Manager
InitMgr_SCSIDB
movem.l intrRegs, -(sp) ; save all registers, for convenience
moveq.l #0, zeroReg ; initialize "zeroReg"
movea.l SCSIGlobals, a4 ; get ptr to structure
moveq.l #numSelectorsDB-1, d1 ; loop count
lea.l SCSIMgr_DB, a1 ; get start of SCSI Mgr code
move.l a1, d0 ; remember base address
lea OffsetTblDB, a1 ; address of offset table
movea.l a4, a0 ; point to base of old SCSI Mgr jump table
@MakeJmpTbl
moveq.l #0, d2 ; clear high word
move.w (a1)+, d2 ; get the next offset
add.l d0, d2 ; compute the address
move.l d2, (a0)+ ; install it in the jump table
dbra d1, @MakeJmpTbl ; loop for all vectors
lea.l DoSCSISelect_Dc80, a1 ; point to Dual SCSIc80 Select proc
move.l a1, jvSelect(a4) ; use this Select routine
move.l SCSIBase,base5380_1(a4) ; load addresses for the internal controller
move.l SCSIDMA,pdma5380_1(a4) ;
move.l SCSIHsk,hhsk5380_1(a4) ;
clr.l G_SCSIDevMap0(a4) ; initialize SCSI Device Map 0
clr.l G_SCSIDevMap1(a4) ; initialize SCSI Device Map 1
@InitDone
movem.l (sp)+, intrRegs ; restore registers
rts
;-------------------------------------------------------------
;
OffsetTblDB
DC.W DoSCSIReset_DB-SCSIMgr_DB ; 0: SCSIReset
DC.W DoSCSIGet_DB-SCSIMgr_DB ; 1: SCSIGet
DC.W DoSCSISelect_Dc80-SCSIMgr_DB ; 2: SCSISelect
;==========================================================================
ENDWITH
END