This file is indexed.

/usr/share/z88dk/lib/zxr_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
;
; Startup for Residos packages
;
; $Id: zxr_crt0.asm,v 1.2 2007/06/27 20:49:28 dom Exp $
;

        MODULE	zxs_crt0

        org     0

        INCLUDE	"zcc_opt.def"
	INCLUDE	"zxsysvar48.def"

; Define all the restarts to go to an appropriate routine
if (ASMPC<>$0000)
        defs    CODE_ALIGNMENT_ERROR
endif
.restart0
        jp      call_rom3
        
        defs    $0008-ASMPC
if (ASMPC<>$0008)
        defs    CODE_ALIGNMENT_ERROR
endif
.restart8
        ret
        
        defs    $0010-ASMPC
if (ASMPC<>$0010)
        defs    CODE_ALIGNMENT_ERROR
endif
.restart16
        ret
        
        defs    $0018-ASMPC
if (ASMPC<>$0018)
        defs    CODE_ALIGNMENT_ERROR
endif
.restart24
        ret
                            
        defs    $0020-ASMPC
if (ASMPC<>$0020)
        defs    CODE_ALIGNMENT_ERROR
endif
.restart32
        ret        
        
        defs    $0028-ASMPC
if (ASMPC<>$0028)
        defs    CODE_ALIGNMENT_ERROR
endif
.restart40
        ret
        
        defs    $0030-ASMPC
if (ASMPC<>$0030)
        defs    CODE_ALIGNMENT_ERROR
endif
.restart48
        ret        

; Always remember to provide an IM1 routine. It should update FRAMES as with
; the standard 48K ROM.

        defs    $0038-ASMPC

if (ASMPC<>$0038)
        defs    CODE_ALIGNMENT_ERROR
endif
.im1routine
        push    af
        push    hl
        ld      hl,(FRAMES)
        inc     hl
        ld      (FRAMES),hl
        ld      a,h
        or      l
        jr      nz,im1end
        ld      a,(FRAMES+2)
        inc     a
        ld      (FRAMES+2),a
.im1end
        pop     hl
        pop     af
        ei
        ret
    

; Always provide an NMI routine which performs a simple RETN.

        defs    $0066-ASMPC

if (ASMPC<>$0066)
        defs    CODE_ALIGNMENT_ERROR
endif
.nmiroutine
        retn


; Allow the calling of a ROM3 routine
.call_rom3
        ex      (sp),hl          ; get return address
        ld      c,(hl)
        inc     hl
        ld      b,(hl)           ; BC=BASIC address
        inc     hl
        ex      (sp),hl          ; restore return address
        push    bc
        pop     iy               ;iy=BASIC address, as needed by RESI_BASIC
        exx                      ; switch to alternates
        ld      b,PKG_RESIDOS    ; ResiDOS call
        ld      hl,RESI_BASIC    ; call BASIC
        jp      PACKAGE_CALL_PKG ; do the package call, then return

; Allow calling of +3 dos routines
.dodos
        exx
        ld      b,PKG_IDEDOS	 ; We want the IDEDOS package
        push    iy               ; Get the call into iy
        pop     hl
        ld      iy,23610        ; Restore IY
        jp      PACKAGE_CALL_PKG
        
.l_dcal jp      (hl)            ;Used for function pointer calls


;-----------
; Define the stdin/out/err area. For the z88 we have two models - the
; classic (kludgey) one and "ANSI" model
;-----------
.__sgoioblk
IF DEFINED_ANSIstdio
        INCLUDE "#stdio_fp.asm"
ELSE
        defw    -11,-12,-10
ENDIF



;---------------------------------
; Select which printf core we want
;---------------------------------
._vfprintf
IF DEFINED_floatstdio
        LIB     vfprintf_fp
        jp      vfprintf_fp
ELSE
        IF DEFINED_complexstdio
                LIB     vfprintf_comp
                jp      vfprintf_comp
        ELSE
                IF DEFINED_ministdio
                        LIB     vfprintf_mini
                        jp      vfprintf_mini
                ENDIF
        ENDIF
ENDIF

;-----------
; Now some variables
;-----------
.coords         defw    0       ; Current graphics xy coordinates
.base_graphics  defw    0       ; Address of the Graphics map

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

.exitsp         defw    0       ; Address of where the atexit() stack is
.exitcount      defb    0       ; How many routines on the atexit() stack

IF DEFINED_NEED1bitsound
.snd_tick       defb    0       ; Sound variable
ENDIF

                defm    "Small C+ ZXR"   ;Unnecessary file signature
                defb    0

;-----------------------
; Floating point support
;-----------------------
IF NEED_floatpack
	defs	FLOATING_POINT_NOT_SUPPORTED_FOR_RESIDOS_PACKAGES
        INCLUDE         "#float.asm"
.fp_seed        defb    $80,$80,0,0,0,0 ;FP seed (unused ATM)
.extra          defs    6               ;FP register
.fa             defs    6               ;FP Accumulator
.fasign         defb    0               ;FP register

ENDIF