mac-rom/OS/SCSIMgr4pt3/HALc96AMIC.a
Elliot Nunn 0ba83392d4 Bring in CubeE sources
Resource forks are included only for .rsrc files. These are DeRezzed into their data fork. 'ckid' resources, from the Projector VCS, are not included.

The Tools directory, containing mostly junk, is also excluded.
2017-09-20 18:04:16 +08:00

191 lines
4.5 KiB
Plaintext

;____________________________________________________________________________________
;
; File: HALc96AMIC.a
;
; Contains: Stuff for 53c96/AMIC machines (PDM)
;
; Written by: Paul Wolf
;
; Copyright: © 1990-1993 by Apple Computer, Inc., all rights reserved.
;
;
; Change History (most recent first):
;
; <SM10> 10/14/93 pdw <MC> roll-in.
; <MC2> 10/12/93 pdw Added support for Synchronous data transfers, rewrote State
; Machine, message handling etc.
; <SM9> 9/9/93 pdw Lots of little changes. Name changes, temporary cache_bug
; stuff.
; <SM8> 8/13/93 pdw Added InitAMIC routine.
; <SM7> 8/1/93 pdw Changed moves into bclrs/bsets in order to avoid trashing the
; undocumented(!) SCSI speed bits.
; <SM6> 7/17/93 pdw Added this minDMAsize thing.
; <SM5> 6/29/93 pdw Massive checkins: Change asynchronicity mechanism to CallMachine
; stack switching mechanism. Adding support for Cold Fusion.
; Rearranging HW/SW Init code. Some code optimizations.
; <SM4> 5/5/93 PW Converted names to meanies-friendly names. Updated with latest
; from Ludwig stuff.
; <SM3> 3/29/93 PW
; <1+> 3/20/93 PW Putting DMA out code back in.
; <1> 3/20/93 PW first checked in
;
;____________________________________________________________________________________
MACHINE MC68020 ; '020-level
BLANKS ON ; assembler accepts spaces & tabs in operand field
PRINT OFF ; do not send subsequent lines to the listing file
; don't print includes
BFR_SIZE EQU 512
; LOAD 'StandardEqu.d'
; INCLUDE 'HardwarePrivateEqu.a'
; INCLUDE 'HardwareEqu.a' ;
; INCLUDE 'UniversalEqu.a' ; for TestFor
INCLUDE 'Debug.a' ; for NAME macro
INCLUDE 'SCSI.a'
INCLUDE 'SCSIEqu53c96.a'
INCLUDE 'ACAM.a'
INCLUDE 'SIMCoreEqu.a'
INCLUDE 'HALc96equ.a'
INCLUDE 'AMICequ.a'
PRINT ON ; do send subsequent lines to the listing files
CASE OBJECT
IMPORT RecordEvent
IMPORT OneByteRead, OneByteWrite
;;AMIC_SCSIBaseAddr EQU $50F32000
;;AMIC_SCSIDMAControl EQU $50F32008
A1_ChanlControl EQU A1 ; used and returned by StartAMIC and used by StopÉ
;--------------------------------------------------------------------------
InitAMIC PROC EXPORT
bclr #kbAMICRun, ([HALc96GlobalRecord.dmaCntrlAddr,A5])
rts
NAME 'InitAMIC'
ENDP
;ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ
StackFrame RECORD {pushedA2},DECR
;---- parameters ----
direction ds.w 1 ; direction of transfer (kIn or kOut)
byteCount ds.l 1 ; number of bytes to transfer
bufferAddr ds.l 1 ; source/dest buffer for DMA transfer
;---- mechanics
returnAddr ds.l 1 ; return address
pushedA2 ds.l 1
ENDR
;ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ
StartAMIC PROC EXPORT
WITH StackFrame
move.l A2, -(sp)
move.l HALc96GlobalRecord.dmaCntrlAddr(A5), A1_ChanlControl
move.l HALc96GlobalRecord.dmaBaseAddr(A5), A2
addq.l #3, A2 ; point to last byte
move.l bufferAddr(sp), D0
move.b D0, (A2)
lsr.l #8, D0 ; Shift the base addr right one byte
move.b D0, -(A2)
lsr.l #8, D0
move.b D0, -(A2)
lsr.l #8, D0
move.b D0, -(A2)
nop
tst.w direction(sp)
bne.s @reading
@writing
bset #kbAMICDirection, (A1_ChanlControl)
bset #kbAMICRun, (A1_ChanlControl)
move.l (sp)+, A2
nop
rts
@reading
bclr #kbAMICDirection, (A1_ChanlControl)
bset #kbAMICRun, (A1_ChanlControl)
move.l (sp)+, A2
nop
rts
NAME 'StartAMIC'
ENDWITH
ENDPROC
;--------------------------------------------------------------------------
Wt4AMICComplete PROC EXPORT
; _debugger ; there is no such ability on AMIC
rts
NAME 'Wt4AMICComplete'
ENDPROC
;--------------------------------------------------------------------------
StopAMICRead PROC EXPORT
;
; ÑÑÑÑÑÑÑÑ On Entry:ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ
;
move.l HALc96GlobalRecord.dmaCntrlAddr(A5), A1_ChanlControl
bclr #kbAMICRun, (A1_ChanlControl)
bset #kbAMICFlush, (A1_ChanlControl)
@1 btst #kbAMICFlush, (A1_ChanlControl)
bne.s @1
rts
NAME 'StopAMICRead'
ENDPROC
;--------------------------------------------------------------------------
StopAMICWrite PROC EXPORT
;
; ÑÑÑÑÑÑÑÑ On Entry:ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ
;
move.l HALc96GlobalRecord.dmaCntrlAddr(A5), A1_ChanlControl
bclr #kbAMICRun, (A1_ChanlControl)
rts
NAME 'StopAMICWrite'
ENDPROC
END