mirror of
https://github.com/elliotnunn/mac-rom.git
synced 2024-12-28 01:29:20 +00:00
4325cdcc78
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.
90 lines
2.9 KiB
Plaintext
90 lines
2.9 KiB
Plaintext
;==========================================================================
|
|
;
|
|
; File: QueueUtils.a
|
|
;
|
|
; Contains: CEnqueueHead routine (should probably be in Queue.a)
|
|
;
|
|
; Written by: Paul Wolf
|
|
;
|
|
; Copyright: © 1992-1993 by Apple Computer, Inc., All rights reserved.
|
|
;
|
|
; This file initializes all the files that comprise the New SCSI Manager
|
|
;
|
|
; Change History (most recent first):
|
|
;
|
|
; <SM8> 10/14/93 pdw <MC> roll-in.
|
|
; <SM7> 9/12/93 pdw Changed name of EnqueueHead to CEnqueueHead to avoid conflict
|
|
; with newly added ROM OS routine.
|
|
; <SM5> 6/29/93 pdw Changed headers included.
|
|
; <SM4> 5/5/93 PW Converted names to meanies-friendly names. Updated with latest
|
|
; from Ludwig stuff.
|
|
; <SM3> 3/20/93 PW Removed some of the PDMDebug stuff that's not needed.
|
|
; <SM2> 1/31/93 PW Update from the latest of Ludwig. Also changes required for PDM
|
|
; (will update Ludwig with these as needed myself).
|
|
;
|
|
;==========================================================================
|
|
|
|
MACHINE MC68020 ; '020-level
|
|
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
|
|
CASE OBJECT ; preserve case in object file
|
|
|
|
|
|
;--------------------------------------------------------------------------
|
|
|
|
|
|
LOAD 'StandardEqu.d' ; from StandardEqu.a and for building ROMs
|
|
INCLUDE 'Debug.a' ; for NAME macro
|
|
|
|
|
|
;***********************************************************************
|
|
; CEnqueueHead -- add a queue element to the head of a queue.
|
|
;-----------------------------------------------------------------------
|
|
;
|
|
; Entry:
|
|
; A0 - points to the queue element
|
|
; A1 - points to the queue header
|
|
; All registers are preserved; there are no error conditions.
|
|
;
|
|
; The element is inserted at the beginning of the list.
|
|
;
|
|
;-----------------------------------------------------------------------
|
|
;
|
|
CEnqueueHead PROC EXPORT
|
|
|
|
move.l 4(sp), A0 ; get ptr to Q element
|
|
move.l 8(sp), A1 ; get ptr to Q header
|
|
|
|
MOVE SR, -(SP) ;preserve status
|
|
ADDQ #2, A1 ;point to QHead
|
|
ORI #$0700, SR ;disable interrupts for exclusion
|
|
|
|
TST.L (A1)+ ;anything in the queue? (QHead)
|
|
BNE.S DOQINSERT ;if so, skip ahead
|
|
;
|
|
; the queue is empty so make the head and tail point to the new element
|
|
;
|
|
MOVE.L A0, (A1) ;QTail
|
|
MOVE.L A0, -(A1) ;QHead
|
|
CLR.L QLINK(A0) ;clear the link of the element
|
|
BRA.S ENQDONE
|
|
;
|
|
; insert the element at the head of the list
|
|
;
|
|
DOQINSERT MOVE.L A2, -(SP) ;preserve A2
|
|
MOVE.L -(A1), A2 ;get ptr to old QHead
|
|
MOVE.L A2, QLINK(A0) ;update new link to old head
|
|
MOVE.L A0, (A1) ;update QHead
|
|
MOVE.L (SP)+, A2 ;restore A2
|
|
;
|
|
ENQDONE SUBQ #2, A1 ;restore A1
|
|
MOVE (SP)+, SR ;restore status and go home
|
|
RTS
|
|
|
|
NAME 'CEnqueueHead'
|
|
|
|
ENDP
|
|
|
|
END |