/usr/share/z88dk/lib/ti82_crt0.asm is in z88dk-data 1.8.ds1-10.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 | ; Stub for the TI 82 calculator
;
; Stefano Bodrato - Dec 2000
;
; $Id: ti82_crt0.asm,v 1.19 2007/06/27 20:49:28 dom Exp $
;
;-----------------------------------------------------
; Some general XDEFs and XREFs needed by the assembler
;-----------------------------------------------------
MODULE Ti82_crt0
XREF _main ; No matter what set up we have, main is
; always, always external to this file.
XDEF cleanup ; used by exit()
XDEF l_dcal ; used by calculated calls = "call (hl)"
XDEF _std_seed ; Integer rnd seed
XDEF _vfprintf ; vprintf is internal to this file so we
; only ever include one of the set of
; routines
XDEF exitsp ; Exit variables
XDEF exitcount ;
XDEF heaplast ;Near malloc heap variables
XDEF heapblocks
XDEF __sgoioblk ; For stdin, stdout, stder
XDEF base_graphics ; Graphics stuff
XDEF coords ;
XDEF cpygraph ; TI calc specific stuff
XDEF tidi ;
XDEF tiei ;
;-------------------------
; Begin of (shell) headers
;-------------------------
INCLUDE "#Ti82.def" ; ROM / RAM adresses on Ti82
INCLUDE "zcc_opt.def" ; Receive all compiler-defines
;OS82Head:
; defb $FE,$82,$0F
;
;AshHead:
; defb $D9,$00,$20
;
;CrASHhead:
; defb $D5,$00,$11
;-------------------
;1 - CrASH (default)
;-------------------
org START_ADDR-3
DEFB $D5,$00,$11
; org START_ADDR
DEFINE NEED_name
INCLUDE "zcc_opt.def"
UNDEFINE NEED_name
IF !DEFINED_NEED_name
defm "Z88DK Small C+ Program"
ENDIF
defb $0 ; Termination zero
;-------------------------------------
; End of header, begin of startup part
;-------------------------------------
.start
ld hl,0
add hl,sp
ld (start1+1),hl
IF !DEFINED_atexit ; Less stack use
ld hl,-6 ; 3 pointers (more likely value)
add hl,sp
ld sp,hl
ld (exitsp),sp
ELSE
ld hl,-64 ; 32 pointers (ANSI standard)
add hl,sp
ld sp,hl
ld (exitsp),sp
ENDIF
LIB fputc_cons
ld hl,12
push hl
call fputc_cons
pop hl
IF DEFINED_GRAYlib
INCLUDE "#gray82.asm"
ELSE
INCLUDE "#intwrap82.asm"
ENDIF
im 2
call _main
.cleanup ; exit() jumps to this point
.start1 ld sp,0 ; writeback
ld iy,_IY_TABLE ; Restore flag-pointer
im 1
.tiei ei
IF DEFINED_GRAYlib
.cpygraph ; little opt :)
ENDIF
.tidi ret
;----------------------------------------
; End of startup part, routines following
;----------------------------------------
.l_dcal
jp (hl)
; Now, define some values for stdin, stdout, stderr
IF (!DEFINED_nostreams) ~ (DEFINED_ANSIstdio) ; ~ = AND
.__sgoioblk
INCLUDE "#stdio_fp.asm"
ENDIF
; Now, which of the vfprintf routines do we need?
IF !DEFINED_nostreams
IF DEFINED_ANSIstdio
IF DEFINED_floatstdio
._vfprintf
LIB vfprintf_fp
jp vfprintf_fp
ELSE
IF DEFINED_complexstdio
._vfprintf
LIB vfprintf_comp
jp vfprintf_comp
ELSE
IF DEFINED_ministdio
._vfprintf
LIB vfprintf_mini
jp vfprintf_mini
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
;Seed for integer rand() routines
._std_seed defw 0
;Atexit routine
.exitsp defw 0
.exitcount defb 0
;Heap stuff (already needed?)
.heaplast defw 0
.heapblocks defw 0
;mem stuff
.base_graphics defw GRAPH_MEM
.coords defw 0
IF !DEFINED_GRAYlib
defc cpygraph = CR_GRBCopy ; CrASH FastCopy
ENDIF
IF NEED_floatpack
INCLUDE "#float.asm"
;seed for random number generator - not used yet..
.fp_seed defb $80,$80,0,0,0,0
;Floating point registers...
.extra defs 6
.fa defs 6
.fasign defb 0
ENDIF
|