DataMuseum.dk

Presents historical artifacts from the history of:

Bogika Butler

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about Bogika Butler

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download

⟦b3c4b8097⟧ TextFile

    Length: 3072 (0xc00)
    Types: TextFile
    Names: »ALSTS.SA«

Derivation

└─⟦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« 

TextFile

         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»