mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-06-27 18:28:18 +02:00
93 lines
1.8 KiB
ActionScript
93 lines
1.8 KiB
ActionScript
|
|
|
| This file is part of the Free Pascal run time library.
|
|
| Copyright (c) 2005 by Karoly Balogh
|
|
|
|
|
| Startup code for Amiga/m68k RTL
|
|
|
|
|
| See the file COPYING.FPC, included in this distribution,
|
|
| for details about the copyright.
|
|
|
|
|
| This program is distributed in the hope that it will be useful,
|
|
| but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
|
|
|
|
|
.text
|
|
.align 4
|
|
|
|
| This symbol is required for lineinfo support!
|
|
.globl __EXESTART
|
|
__EXESTART:
|
|
|
|
.globl _start
|
|
.globl start
|
|
_start:
|
|
start:
|
|
movem.l d0-d7/a0-a6,-(sp)
|
|
|
|
| Get ExecBase
|
|
move.l 0x4,a6
|
|
move.l a6,_ExecBase
|
|
|
|
| Allocating new stack
|
|
move.l __stklen,d0
|
|
moveq.l #0,d1 | MEMF_ANY
|
|
jsr -684(a6) | AllocVec()
|
|
tst.l d0
|
|
beq __exit
|
|
move.l d0,stackArea
|
|
|
|
| Setting up StackSwap structure, and do the StackSwap
|
|
lea.l stackSwap,a0
|
|
move.l d0,(a0) | Bottom of the stack
|
|
add.l __stklen,d0
|
|
move.l d0,4(a0) | Top of the stack
|
|
move.l d0,8(a0) | Initial stackpointer
|
|
jsr -732(a6) | StackSwap()
|
|
|
|
jsr PASCALMAIN
|
|
|
|
.globl _haltproc
|
|
_haltproc:
|
|
move.l d0,returnValue
|
|
|
|
| Swapping the stack back
|
|
move.l _ExecBase,a6
|
|
lea.l stackSwap,a0
|
|
jsr -732(a6) | StackSwap()
|
|
|
|
| Freeing up stack area
|
|
move.l stackArea,a1
|
|
jsr -690(a6) | FreeVec()
|
|
|
|
__exit:
|
|
movem.l (sp)+,d0-d7/a0-a6
|
|
move.l returnValue,d0
|
|
rts
|
|
|
|
.data
|
|
|
|
.globl _ExecBase
|
|
.globl SysBase
|
|
.align 4
|
|
SysBase:
|
|
_ExecBase:
|
|
.long 0
|
|
|
|
.globl returnValue
|
|
.align 4
|
|
returnValue:
|
|
.long 0
|
|
|
|
.globl stackArea
|
|
.align 4
|
|
stackArea:
|
|
.long 0
|
|
|
|
.globl stackSwap
|
|
.align 4
|
|
stackSwap:
|
|
.long 0
|
|
.long 0
|
|
.long 0
|