beautypg.com

Zilog Z80380 User Manual

Page 92

background image

Initialization File

Initialization and Link Files

A–2

UM004001-COR1103

ld.ib

hl,.BSS_LENGTH; Check for non-zero length

ld

bc,hl

; *

ld

de,hl

; *

swap

de

; *

orw

hl,de

; *

jr

z,_c_bss_done; .BSS is zero-length ...

ld

hl,bc

; (hl)=Length

ld

bc,hl

; (bc)=length lo word

swap

hl

ld

ix,hl

; (ix)=length hi word

ld.ib

hl,.BSS_BASE; [hl]=.bss

ld

(hl),0

ld

de,hl

inc

de

; [de]=.bss+1

decw

bc

; 1st byte's taken care of

ex

hl,bc

orw

hl,hl

ex

hl,bc

jr

z,_c_bss_page; Just 1 byte on this page ...

_c_bss_loop:

ldir

_c_bss_page:

ex

hl,ix

orw

hl,hl

ex

hl,ix

jr

z,_c_bss_done

dec

ix

jr

_c_bss_loop

_c_bss_done:

.endif

; .INITBSS

;------ main()

ld

hl,0

; hl=NULL

push

hl

; argv[0] = NULL

ld

ix,hl

add

ix,sp

; ix=&argv[0]

push

ix

; &argv[0]

push

hl

; argc==0

call.ib

_main

; main()

add

sp,12

; clean the stack