home *** CD-ROM | disk | FTP | other *** search
-
- section CODE
-
- xdef _RemHeadOff ; sptr = RemHeadOff(list:4(sp), off:8(sp))
-
- _RemHeadOff: movem.l 4(sp),D0/D1
-
- move.l D0,A0
- move.l (A0),A0 ; first node, (A0) == NULL if EOL
- tst.l (A0)
- beq.s .rho0
- .rhok move.l A0,D0
- sub.l D1,D0 ; subtract offset (D0 = return value)
- move.l (A0),A1 ; A1 = successor (or &lh_Tail)
- move.l 4(A0),A0 ; A0 = predecess (or &lh_Head)
- move.l A0,4(A1) ; succ->pred = pred
- move.l A1,(A0) ; pred->succ = succ
- rts
- .rho0: moveq.l #0,D0
- rts
-
- xdef _RemTailOff ; sptr = RemTailOff(list:4(sp), off:8(sp))
-
- _RemTailOff: movem.l 4(sp),D0/D1
- move.l D0,A0
- move.l 8(A0),A0 ; last node, 4(A0) == NULL if EOL
- tst.l 4(A0)
- bne.s .rhok
- moveq.l #0,D0
- rts
-
- END
-
-