/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
|