home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Party 1994: Try This At Home
/
disk_image.bin
/
source
/
less_src
/
c0.asm
< prev
next >
Wrap
Assembly Source File
|
1994-08-04
|
5KB
|
184 lines
NAME c0
PAGE 60,132
LOCALS
;[]------------------------------------------------------------[]
;| C0.ASM -- Start Up Code |
;| |
;| Turbo C++ Run Time Library |
;| |
;| Copyright (c) 1987, 1991 by Borland International Inc. |
;| All Rights Reserved. |
;[]------------------------------------------------------------[]
__C0__ = 1
__TINY__ = 1
INCLUDE C:\BORLANDC\LIB\STARTUP\RULES.ASI
dosseg
; Segment and Group declarations
_TEXT SEGMENT BYTE PUBLIC 'CODE'
ENDS
_FARDATA SEGMENT PARA PUBLIC 'FAR_DATA'
ENDS
_FARBSS SEGMENT PARA PUBLIC 'FAR_BSS'
ENDS
IFNDEF __TINY__
_OVERLAY_ SEGMENT PARA PUBLIC 'OVRINFO'
ENDS
_1STUB_ SEGMENT PARA PUBLIC 'STUBSEG'
ENDS
ENDIF
_DATA SEGMENT PARA PUBLIC 'DATA'
ENDS
_INIT_ SEGMENT WORD PUBLIC 'INITDATA'
InitStart label byte
ENDS
_INITEND_ SEGMENT BYTE PUBLIC 'INITDATA'
InitEnd label byte
ENDS
_EXIT_ SEGMENT WORD PUBLIC 'EXITDATA'
ExitStart label byte
ENDS
_EXITEND_ SEGMENT BYTE PUBLIC 'EXITDATA'
ExitEnd label byte
ENDS
_CVTSEG SEGMENT WORD PUBLIC 'DATA'
ENDS
_SCNSEG SEGMENT WORD PUBLIC 'DATA'
ENDS
IFNDEF __HUGE__
_BSS SEGMENT WORD PUBLIC 'BSS'
ENDS
_BSSEND SEGMENT BYTE PUBLIC 'BSSEND'
ENDS
ENDIF
IFNDEF __TINY__
_STACK SEGMENT STACK 'STACK'
ENDS
ENDIF
ASSUME CS:_TEXT, DS:DGROUP
; External References
extrn MAIN:DIST;_main:DIST
extrn _exit:DIST
extrn __exitbuf:DIST
extrn __exitfopen:DIST
extrn __exitopen:DIST
extrn __setupio:near ;required!
extrn __stklen:word
IF LDATA EQ false
extrn __heaplen:word
ENDIF
SUBTTL Start Up Code
PAGE
;/* */
;/*-----------------------------------------------------*/
;/* */
;/* Start Up Code */
;/* ------------- */
;/* */
;/*-----------------------------------------------------*/
;/* */
PSPHigh equ 00002h
PSPEnv equ 0002ch
PSPCmd equ 00080h
public __AHINCR
__AHINCR equ 1000h
public __AHSHIFT
__AHSHIFT equ 12
IFDEF __NOFLOAT__
MINSTACK equ 128 ; minimal stack size in words
ELSE
MINSTACK equ 256 ; minimal stack size in words
ENDIF
;
; At the start, DS and ES both point to the segment prefix.
; SS points to the stack segment except in TINY model where
; SS is equal to CS
;
_TEXT SEGMENT
ORG 100h
STARTX PROC NEAR
mov dx, cs;DGROUP ; DX = GROUP Segment address
mov ds, dx
;; mov oldss,ss
;; mov oldsp,sp
mov bx,0fffeh;;offset DGROUP:stack__end
cli ; req'd for pre-1983 88/86s
;;mov dx,seg _STACK
mov ss, dx ; Set the program stack
mov sp, bx;;offset DGROUP:stack__end-2
sti
call MAIN;_main
;; mov dx,oldss
;; mov bx,oldsp
;; cli
;; mov ss,dx
;; mov sp,bx
;; sti
ExitToDOS label near
mov ax,4C00h
int 21h ; Exit to DOS
STARTX ENDP
;;oldss dw 0
;;oldsp dw 0
SUBTTL Vector save/restore & default Zero divide routines
PAGE
; The DGROUP@ variable is used to reload DS with DGROUP
;PubSym@ DGROUP@, <dw ?>, __PASCAL__
; __MMODEL is used to determine the memory model or the default
; pointer types at run time.
; public __MMODEL
;__MMODEL dw MMODEL
_TEXT ENDS
SUBTTL Start Up Data Area
PAGE
_DATA SEGMENT
; Magic symbol used by the debug info to locate the data segment
public DATASEG@
DATASEG@ label byte
_DATA ENDS
_CVTSEG SEGMENT
PubSym@ _RealCvtVector, <label word>, __CDECL__
ENDS
_SCNSEG SEGMENT
PubSym@ _ScanTodVector, <label word>, __CDECL__
ENDS
_BSS SEGMENT
bdata@ label byte
ENDS
_BSSEND SEGMENT
edata@ label byte
ENDS
;public stack__end
;_STACK SEGMENT
;stack___ db 128 dup(?) ;;49152 dup(?) ;minimum stack size
;stack__end db ?
; ENDS
END STARTX