|
|
DataMuseum.dkPresents historical artifacts from the history of: Bogika Butler |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Bogika Butler Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 3072 (0xc00)
Types: TextFile
Names: »ALSTS.SA«
└─⟦909f4eb2b⟧ Bits:30009789/_.ft.Ibm2.50006622.imd Mogens Pelles Zilog 80,000 / EOS projekt
└─⟦this⟧ »ALSTS.SA«
└─⟦ddcd65152⟧ Bits:30009789/_.ft.Ibm2.50006617.imd Mogens Pelles Zilog 80,000 / EOS projekt
└─⟦this⟧ »ALSTS.SA«
NOLIST
INCLUDE RR.RTEQU.SA
INCLUDE RR.MACROS.SA
INCLUDE RR.FIOEQU.SA
LIST
*
* FILE RR.RTEQU.SA HAS BEEN INCLUDED
* FILE RR.MACROS.SA HAS BEEN INCLUDED
* FILE RR.FIOEQU.SA HAS BEEN INCLUDED
*
TTL V 0.01 68K EOS PASCAL ALLOCATE STACK SUBROUTINE
ALSTS IDNT 0,01 68K EOS PASCAL ALLOCATE STACK SUBROUTINE
SECTION 8
*
*********************************************************************
*
* ALSTS, ALLOCATE SOME ROOM ON THE STACK
*
* LAST MODIFIED BY STEVE OUALLINE 15-JUNE-81
* ADDED CODE FOR .PALSTSL
*
* UPDATED FOR EOS PASCAL USE
*
*
*
* ENTRY:
* D4 = # OF BYTES TO BE ALLOCATED
*
* EXIT:
* D4 = LEAST EVEN INTEGER >= D4 ON ENTRY
* A7 = NEW STACK PTR WITH D4 EMPTY BYTES ON TOP
*
* USES:
* 0 1 2 3 4 5 6 7
* A: P P P P P P P R
* D: P P P P R P P P
*
* FUNCTION:
* ALLOCSTK CHECKS TO SEE IF THER IS ENOUGH ROOM TO
* INCREASE THE STACK PTR BY D4 BYTES + 32 BYTES
* JUST IN CASE. IF THERE IS ENOUGH ROOM THEN IT
* GOES AHEAD AND ALLOCATES D4 BYTES. OTHERWISE
* A STACK HEAP OVERFLOW ERROR IS GENERATED.
*
* EXTERNALS:
* .PALSTS = DEF, ALLOCATE STACK ROUTINE
* .PALSTSL = Def, Allocate Stack with long arguement
*
*********************************************************************
*
XDEF .PALSTS * ALLOCATE SPACE ON STACK TOP
XDEF .PALSTSL
*
.PALSTS: EQU * * ALLOCATE SPACE ON THE STACK
EXT.L D4
.PALSTSL EQU * * LONG ENTRY POINT
ADD.L #1,D4 * FORCE D4 = LEAST EVEN INTEGER >= OLD D4
ANDI.L #-2,D4
SUB.L D4,A7 * ALLOCATE D4 BYTES ON STACK
SUBA.L #BUF,A7 * ALLOCATE BUF ZONE AMOUNT MORE
CMP.L HPTR(A5),A7 * IS STACK POINTER >= HEAP PTR ?
BHI.S ALOCSTK1 * YES, THEN WE HAVE ROOM TO ALLOCATE IT
LEA BUF(A7,D4.L),A7 * NO, REMOVE ALLOCATED AREA
MOVEQ #STKHEAP,D1 * AND GENERATE A STACK HEAP OVERFLOW ERROR
TRAP #14
DC.W 0
*
* WE HAVE ROOM SO REMOVE BUF ZONE AMOUNT AND RETURN
*
ALOCSTK1 LEA BUF(A7),A7 * A7 = NEW STACK PTR
MOVE.L 0(A7,D4.L),(A7) * MOVE RETURN ADDRESS TO TOP OF STACK
MOVE.L A1,-(SP)
MOVE.L A2,-(SP)
MOVE.L TOPEXCDS(A5),A2
LEA 12(SP),A1
WHILE.L #0 <NE> A2 AND A6 <GT> A2 DO.S
MOVE.L A1,STACKT(A2)
MOVE.L PEXCPDS(A2),A2
ENDW
MOVE.L (SP)+,A2
MOVE.L (SP)+,A1
RTS * * AND RETURN
*
END
«eof»