start.inc 636 B

123456789101112131415161718192021222324252627282930313233
  1. _start:
  2. clr r1
  3. // load stack pointer
  4. ldi r0,lo8(_stack_top)
  5. out 0x3d,r0
  6. ldi r0,hi8(_stack_top)
  7. out 0x3e,r0
  8. // copy initialized data from flash to ram
  9. ldr r1,.L_etext
  10. ldr r2,.L_data
  11. ldr r3,.L_edata
  12. .Lcopyloop:
  13. cmp r2,r3
  14. ldrls r0,[r1],#4
  15. strls r0,[r2],#4
  16. bls .Lcopyloop
  17. // clear onboard ram
  18. ldr r1,.L_bss_start
  19. ldr r2,.L_bss_end
  20. mov r0,#0
  21. .Lzeroloop:
  22. cmp r1,r2
  23. strls r0,[r1],#4
  24. bls .Lzeroloop
  25. xcall PASCALMAIN
  26. xcall _FPC_haltproc
  27. .text