mirror of
https://github.com/elliotnunn/mac-rom.git
synced 2025-01-01 11:29:27 +00:00
0ba83392d4
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.
191 lines
4.5 KiB
Plaintext
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 |