mirror of
https://github.com/SEPPDROID/Digital-Research-Source-Code.git
synced 2025-10-27 02:14:19 +00:00
Upload
Digital Research
This commit is contained in:
197
MPM OPERATING SYSTEMS/MPM-86/MISC DRI DISKS/03/STARTUP.A86
Normal file
197
MPM OPERATING SYSTEMS/MPM-86/MISC DRI DISKS/03/STARTUP.A86
Normal file
@@ -0,0 +1,197 @@
|
||||
;***************************************************************;
|
||||
; ;
|
||||
; DIGITAL RESEARCH C COMPILER STARTUP MODULE ;
|
||||
; ;
|
||||
; SELECT ONE OF THE FOLLOWING MEMORY MODELS AND THEN ;
|
||||
; ASSEMBLE WITH RASM-86 ;
|
||||
; ;
|
||||
; LOGIC IS AS FOLLOWS: ;
|
||||
; ;
|
||||
; Compiler generates call to _start (in lower case) ;
|
||||
; Which calls _START (in upper case) ;
|
||||
; Which init's SP, etc. then calls _GO (in upper case) ;
|
||||
; Which calls _main (in lower case) which calls ;
|
||||
; the user's main (in lower case) which then returns to ;
|
||||
; _main which then returns then _GO calls exit in l. case ;
|
||||
; ;
|
||||
;***************************************************************;
|
||||
|
||||
SMALL_MODEL EQU 1
|
||||
MEDIUM_MODEL EQU 0
|
||||
COMPACT_MODEL EQU 0
|
||||
BIG_MODEL EQU 0
|
||||
|
||||
|
||||
IF SMALL_MODEL
|
||||
|
||||
CODE CSEG
|
||||
CGROUP GROUP CODE
|
||||
DGROUP GROUP _BREAK
|
||||
|
||||
EXTRN _GO:NEAR
|
||||
PUBLIC _START
|
||||
|
||||
_START: MOV AX,DS
|
||||
MOV SS,AX
|
||||
MOV BX,6
|
||||
MOV SP,[BX] ;set up ss:sp
|
||||
|
||||
MOV AX,WORD PTR ?MEMRY
|
||||
MOV __break,AX ;set up __break for brk()
|
||||
|
||||
MOV BX,80H ;offset of command line
|
||||
MOV AL,BYTE PTR [BX];get length
|
||||
XOR AH,AH
|
||||
PUSH AX
|
||||
MOV AX,81H ;offset of command line data
|
||||
PUSH AX
|
||||
CALL _GO
|
||||
|
||||
DATA DSEG BYTE
|
||||
PUBLIC ?MEMRY
|
||||
?MEMRY RW 1
|
||||
|
||||
_BREAK DSEG BYTE COMMON
|
||||
__break RW 1
|
||||
|
||||
ENDIF ;SMALL_MODEL
|
||||
|
||||
|
||||
|
||||
|
||||
IF MEDIUM_MODEL
|
||||
|
||||
GO_CODE CSEG
|
||||
EXTRN _GO:FAR
|
||||
|
||||
CODE CSEG
|
||||
|
||||
DGROUP GROUP DATA,_BREAK
|
||||
|
||||
|
||||
|
||||
PUBLIC _START
|
||||
|
||||
_START: MOV AX,DS
|
||||
MOV BX,6
|
||||
MOV SS,AX
|
||||
MOV SP,[BX] ;set up ss:sp
|
||||
|
||||
MOV AX,WORD PTR ?MEMRY
|
||||
MOV __BREAK,AX ;set up __BREAK for brk()
|
||||
|
||||
;
|
||||
; NOW ZERO UN-INIT DATA
|
||||
;
|
||||
MOV CX,SP
|
||||
SUB CX,100H ;LEAVE SOME SLOP
|
||||
MOV BX,WORD PTR ?MEMRY ;GET STARTING LOCATION
|
||||
SUB CX,BX ;CALC LENGTH INTO CX
|
||||
INC CX
|
||||
SHR CX,1 ;MAKE IT A WORD COUNT
|
||||
|
||||
MOV AX,0 ;FILL VALUE
|
||||
MOV DX,DS
|
||||
MOV ES,DX ;SET UP DEST SEG
|
||||
MOV DI,BX ;SET UP DEST OFFSET
|
||||
|
||||
REP STOSW ;AND DOIT
|
||||
|
||||
MOV BX,80H ;offset of command line
|
||||
MOV AL,BYTE PTR [BX];get length
|
||||
XOR AH,AH
|
||||
PUSH AX
|
||||
MOV AX,81H ;offset of command line data
|
||||
PUSH AX
|
||||
CALLF _GO
|
||||
|
||||
DATA DSEG BYTE
|
||||
|
||||
PUBLIC ?MEMRY
|
||||
?MEMRY RW 2
|
||||
|
||||
_BREAK DSEG BYTE COMMON
|
||||
__BREAK RW 1
|
||||
|
||||
ENDIF ;MEDIUM_MODEL
|
||||
|
||||
|
||||
|
||||
|
||||
IF COMPACT_MODEL
|
||||
|
||||
CODE CSEG
|
||||
CGROUP GROUP CODE
|
||||
DGROUP GROUP _BREAK
|
||||
|
||||
EXTRN _GO:NEAR
|
||||
PUBLIC _START
|
||||
_START:
|
||||
MOV BX,0
|
||||
MOV SS,15H[BX]
|
||||
MOV SP,12H[BX] ;set up ss:sp
|
||||
INC SP
|
||||
|
||||
MOV AX,0FH[BX]
|
||||
MOV __BREAK+2,AX
|
||||
SUB AX,AX
|
||||
MOV __BREAK,AX ;set up __break for brk()
|
||||
|
||||
MOV BX,80H ;offset of command line
|
||||
MOV AL,BYTE PTR [BX];get length
|
||||
XOR AH,AH
|
||||
PUSH AX
|
||||
PUSH DS
|
||||
MOV AX,81H ;offset of command line data
|
||||
PUSH AX
|
||||
CALL _GO
|
||||
|
||||
|
||||
_BREAK DSEG BYTE COMMON
|
||||
__BREAK RW 2
|
||||
|
||||
ENDIF ;COMPACT_MODEL
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
IF BIG_MODEL
|
||||
|
||||
DGROUP GROUP _BREAK
|
||||
|
||||
GO_CODE CSEG
|
||||
EXTRN _GO:FAR
|
||||
|
||||
START_CODE CSEG
|
||||
|
||||
PUBLIC _START
|
||||
_START:
|
||||
MOV BX,0
|
||||
MOV SS,15H[BX]
|
||||
MOV SP,12H[BX] ;set up ss:sp
|
||||
INC SP
|
||||
|
||||
MOV AX,0FH[BX]
|
||||
MOV __BREAK+2,AX
|
||||
SUB AX,AX
|
||||
MOV __BREAK,AX ;set up __break for brk()
|
||||
|
||||
MOV BX,80H ;offset of command line
|
||||
MOV AL,BYTE PTR [BX];get length
|
||||
XOR AH,AH
|
||||
PUSH AX
|
||||
PUSH DS
|
||||
MOV AX,81H ;offset of command line data
|
||||
PUSH AX
|
||||
CALLF _GO
|
||||
|
||||
_BREAK DSEG BYTE COMMON
|
||||
__BREAK RW 2
|
||||
ENDIF ;BIG_MODEL
|
||||
|
||||
|
||||
END
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user