; ; File: IttInit.a ; ; Contains: Cousin Itt test INIT ; ; Written by: Paul Wolf ; ; Copyright: © 1990-1993 by Apple Computer, Inc., All rights reserved. ; ; This file is used in these builds: ; ; Change History (most recent first): ; ; 11/23/93 DCB Don't call IttBoot if we don't install. Otherwise we are toast. ; 11/22/93 pdw Rolling in from . ; 11/9/93 pdw Removed call to InitSCSIBoot. ; 11/17/93 DCB Adding conditional around debugger so we can turn it on and off. ; 10/29/93 DCB Removing DebugStr for Grog release ; 10/14/93 pdw roll-in. ; 10/12/93 pdw Added support for Synchronous data transfers, rewrote State ; Machine, message handling etc. ; 9/26/93 pdw Added call to InitSCSIBoot instead of fooling with PRAM. ; 9/9/93 pdw Lots of little changes. Name changes, temporary cache_bug ; stuff. ; 7/20/93 pdw Fixed a stack alignment bug that was causing massive crashes if ; SCSISelect was failing (down in that scanning routine at the ; bottom). ; 6/29/93 pdw Massive checkins: Added code to scan devices that were loaded at ; boot time so that they get entered into the VirtualID table. ; 5/26/93 PW Rolling in Ludwig changes. ; 5/21/93 PW Changing a _DebugStr to a DebugStr. ; 3/20/93 PW Rolled in Ludwig changes. ; 2/17/93 PW Removed SCSIDrvrs stuff - put it in InitBoot instead. ; 2/10/93 PW Cleaned up and added BootItt test after InitItt. ; 2/4/93 PW Got rid of useless stuff and calling BootItt after InitItt to ; try to load drivers (and test BootItt). ; 1/31/93 PW Update from the latest of Ludwig. Also changes required for PDM ; (will update Ludwig with these as needed myself). ; 11/9/92 fau Added support for Tempest (CycloneLC). ; 8/31/92 PW Moved debugger trap up so that if you skip over it, it won't do ; the DetachResource. ; ;========================================================================== BLANKS ON ; assembler accepts spaces & tabs in operand field PRINT OFF ; do not send subsequent lines to the listing file ; don't print includes MACHINE MC68020 ; '020-level LOAD 'StandardEqu.d' ; from StandardEqu.a and for building ROMs INCLUDE 'HardwarePrivateEqu.a' INCLUDE 'UniversalEqu.a' ; for TestFor INCLUDE 'SCSI.a' ; INCLUDE 'Debug.a' ; for NAME macro INCLUDE 'ACAM.a' INCLUDE 'XPTEqu.a' ; for globals PRINT ON ; do send subsequent lines to the listing files CASE OBJECT ; use case as specified in source text, C IttInit MAIN EXPORT IMPORT InitItt IMPORT ITTBOOT IF useINITDebugger THEN DebugStr 'Cmd-G to install, "g pc+2" to skip (SM)' ENDIF bsr.s @1 nop rts @1 link A6, #-4 move.l a0, -(sp) ; load our resource handle for _DetachResource _DetachResource ; don't release resource space bsr InitItt tst.l d0 ; did it install? bne.b @exit ; nope get out of town. pea -4(A6) pea 1 ; only look for the startup device bsr.l ITTBOOT ; get the startup device's refnum in D0 lea 8(sp),SP pea -4(A6) clr.l -(sp) ; load all drivers bsr.l ITTBOOT lea 8(sp),SP moveq.l #7, D3 ; D3 = scanning SCSI ID (saved from C) @lpTop btst D3, SCSIDrvrs ; was this guy touched in IttBoot? beq.s @lpBtm ; yes -> don't bother with it now bsr.s ReadBlock0 @lpBtm dbra D3, @lpTop @exit unlk A6 rts NAME 'IttInit' ; ENDWITH ReadBlock0 lea -512(sp), sp move.l sp, A1 ; A1 = buffer for read lea -scSize*2(sp), sp move.l sp, A2 ; A0 = TIB move.w #scInc, scOpcode+ 0*scSize(A2) move.l A1, scParam1+ 0*scSize(A2) move.l #512, scParam2+ 0*scSize(A2) move.w #scStop,scOpcode+ 1*scSize(A2) move.l #0, scParam1+ 1*scSize(A2) move.l #0, scParam2+ 1*scSize(A2) subq.l #2, sp _SCSIGet move.w (sp)+, D0 bne.s @exit subq.l #2, sp move.w D3, -(sp) _SCSISelect move.w (sp)+, D0 bne.s @exit subq.l #2, sp pea rdBlock0CDB move.w #6, -(sp) _SCSICmd move.w (sp)+, D0 bne.s @complete subq.l #2, sp move.l A2, -(sp) _SCSIRead move.w (sp)+, D0 @complete clr.l -(sp) ; room for status and message subq.l #2, sp ; room for result pea 2(sp) ; status word pea 4+2(sp) ; message word move.l #$60*20, -(sp) ; timeout (20 seconds) _SCSIComplete lea 6(sp), sp ; toss result/status/message @exit lea 512+scSize*2(sp), sp ; remove buffer/TIB but leave stat/msg rts rdBlock0CDB dc.b $08, $00, $00, $00, $01, $00 ENDMAIN END