This file is indexed.

/usr/share/z88dk/lib/ti85_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
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
;	Stub for the TI 85 calculator
;
;	Stefano Bodrato - Dec 2000
;
;	$Id: ti85_crt0.asm,v 1.20 2007/06/27 20:49:28 dom Exp $
;
;-----------------------------------------------------
; Some general XDEFs and XREFs needed by the assembler
;-----------------------------------------------------

	MODULE  Ti85_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	snd_tick	; Sound variable

	XDEF	cpygraph	; TI calc specific stuff
	XDEF	tidi		;
	XDEF	tiei		;

;-------------------------
; Begin of (shell) headers
;-------------------------

	LSTOFF
	INCLUDE "#Ti85.def"	; ROM / RAM adresses on Ti85
	INCLUDE	"zcc_opt.def"	; Receive all compiler-defines
	LSTON

;
;PROGRAMS:
;~~~~~~~~~
; 00 FD  - ZShell programs
; 00 FC  - Rigel program string
; 00 FB  - Usgard 1.0 programs
; 00 F9  - Usgard 1.1 programs
; 00 F8  - Usgard 1.5 programs
; 00 53  - Summit Shell Patch (BETA 1-3)
; 00 50  - PhatOS
; 02 50  - Peak BETA 2 Relocation Program
; 02 70  - Peak BETA 2 Non-Relocation Program
; 04 42  - Summit BETA 4 TI-BASIC ASM Subroutine
; 04 4E  - Summit BETA 4 Non-Relocation Program
; 04 52  - Summit BETA 4 Relocation Program
; 04 54  - Summit BETA 4 TSR
;
;LIST OF LIBRARY HEADERS:
;~~~~~~~~~~~~~~~~~~~~~~~~
; 00 FB  - Rigel library string
; 00 90  - fake library
;
;LIST OF FILE HEADERS:
;~~~~~~~~~~~~~~~~~~~~~
; 00 81  - GCP image (screenwide)
; 00 80  - ZCP image (screenwide)
; 00 7D  - 128 x 64 B/W image
; 00 7E  - 128 x 64 GR4 image
; 00 7F  - 128 x 64 GR8 image
;
;LIST OF LEVEL HEADERS:
;~~~~~~~~~~~~~~~~~~~~~~
;(first byte=game,second byte could be [save game,level,hiscore,...] 
; 01 00  - Plainjump II level file
; 02 00  - Sqrxz world (not compressed)
; 02 01  - Sqrxz compressed world
; 03 00  - Plainjump level file
; 04 00  - Balloon compressed level file


; Offset            Example                                       Description
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
; 0000-0001          xx xx   -   A two-byte size of the string.  This is added
;                                by the TI-85.
; 0002-0003          00 xx   -   A signature word, where xx is either FD, FC,
;                                or FB.
;                                FD = ZShell 4.0 string.
;                                FC = Rigel program string.
;                                FB = Rigel library string.
; 0004               xx      -   The size of the description string.
; xxxx-xxxx                  -   The description string (null terminated).
; xxxx-xxxx          xx xx   -   A relative pointer to the fixup table. (not
;                                used in ZShell).
; 
;                 BELOW ARE DATA AREAS WITHIN THE FIXUP TABLE
;
; xxxx               xx      -   The number of location fixups.
; xxxx-xxxx                  -   The relative addresses within the string
;                                that need to be fixed up. 
; xxxx               xx      -   The number of libraries to be linked.
; xxxx-xxxx                  -   A length-indexed string of the first library
;                                to be linked.
; xxxx               xx      -   the number of fixups to be made to call
;                                functions within the preceding library or
;                                more clearly, the number of calls made to
;                                the preceding library.
; xxxx-xxxx                  -   The relative addresses within the string
;                                that need to be fixed up to make calls to the
;                                preceding library.
;
; (if more than one library is to be linked, the last three ranges described 
;  are repeated as necessary.  The "number of libraries" byte denotes this).
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ


;--------
;2 - Peak
;--------
;IF (startup=2)
;DEFINE NOT_DEFAULT_SHELL
;DEFC ORIGIN = $906D
;	org	ORIGIN
;	defb	$02,$50
;ENDIF

;----------
;3 - PhatOS (doesn't work right)
;----------
IF (startup=3)
	DEFINE PhatOS
	DEFINE NOT_DEFAULT_SHELL
	org	$8E54		; 'real' origin to PhatOS programs
	defw	$5000		; This is a PhatOS program string
	defb	enddesc-description+1
	;org	$8E57		; Origin to PhatOS programs
.description
	DEFINE NEED_name
	INCLUDE	"zcc_opt.def"	; Get namestring from zcc_opt.def
	UNDEFINE NEED_name
 IF !DEFINED_NEED_name
	defm	"Z88DK Small C+ Program"
 ENDIF
	defb	$0		; Termination zero
.enddesc
	im	1
ENDIF

;-------------------
;1 - Rigel (default)
;-------------------
IF !NOT_DEFAULT_SHELL
	DEFINE Rigel
	
	org	$9293		; 'real' origin to Rigel programs
	defw	$FC00		; This is a Rigel program string
	defb	enddesc-description-1
.description			; = "official" origin adress
	DEFINE NEED_name
	INCLUDE	"zcc_opt.def"	; Get namestring from zcc_opt.def
	UNDEFINE NEED_name
 IF !DEFINED_NEED_name
	defm	"Z88DK Small C+ Program"
 ENDIF
	defb	$0		; Termination zero
.enddesc
	defw	fixuptable-description	; Relative ptr to the fixup table
	im	1
ENDIF

;-------------------------------------
; End of header, begin of startup part
;-------------------------------------
.start
	ld	(start1+1),sp
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	"#gray85.asm"
	;im	2
ENDIF

	call	tidi
	call	_main
.cleanup
IF DEFINED_GRAYlib
        ld	a,$3c
        out	(0),a    ;Set screen back to normal
ENDIF
.start1
	ld	sp,0
	ld	iy,_IY_TABLE	; Restore flag-pointer
	im	2
	ei
.cpygraph
	ret

;----------------------------------------
; End of startup part, routines following
;----------------------------------------
.l_dcal
	jp	(hl)

.tiei
	;exx
	;ld	hl,(hl1save)
	;ld	bc,(bc1save)
	;ld	de,(de1save)
	;exx
	;ld	iy,(iysave)
IF DEFINED_GRAYlib
	im	1
ELSE
	ei
ENDIF
	ret

.tidi
IF DEFINED_GRAYlib
	im	2
ELSE
	di
ENDIF
	;exx
	;ld	(hl1save),hl
	;ld	(bc1save),bc
	;ld	(de1save),de
	;exx
	;ld	(iysave),iy
	ret

;.hl1save defw	0
;.de1save defw	0
;.bc1save defw	0
;.iysave  defw	0

	
; 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) ~ (DEFINED_ANSIstdio) ; ~ = AND
 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

IF Rigel
.fixuptable
	defb	0,0	; zero fixups, zero ZShell libs
ENDIF

;Seed for integer rand() routines
._std_seed	defw	0

;Atexit routine
.exitsp		defw	0
.exitcount	defb	0

; Heap stuff
.heaplast	defw	0
.heapblocks	defw	0

; mem stuff
.base_graphics	defw	VIDEO_MEM
.coords		defw	0

IF DEFINED_NEED1bitsound
.snd_tick	defb	0	; Sound variable
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