?login_element?

Subversion Repositories NedoOS

Rev

Blame | Last modification | View Log | Download

  1.         NAME    CSTARTUP
  2.         EXTERN  main_args,exit                  ; where to begin execution
  3.         EXTERN  ?C_EXIT,main                    ; where to go when program is done
  4.         PUBLIC dbg_mon
  5.         RSEG    CSTACK
  6.         DEFS    0                       ; a bare minimum !
  7.         RSEG    UDATA0
  8.         RSEG    IDATA0
  9.         RSEG    ECSTR
  10.         RSEG    TEMP
  11.         RSEG    DATA0
  12.         RSEG    WCSTR
  13.         RSEG    CDATA0
  14.         RSEG    CCSTR
  15.         RSEG    CONST
  16.         RSEG    CSTR
  17.         RSEG    DBGMON
  18. dbg_mon
  19.         DEFS 1
  20.         ASEG
  21.         ORG     0x0100
  22. init_A
  23.         LD      SP,.SFE.(CSTACK-1)      ; from high to low address
  24.         CALL    seg_init
  25.         call    main_args
  26.         CALL    main                    ; non-banked call to main()
  27.         JP      exit
  28.        
  29.         RSEG    RCODE
  30. init_C
  31.        
  32. seg_init
  33.         LD      HL,.SFE.(UDATA0)
  34.         LD      DE,.SFB.(UDATA0)
  35.         CALL    zero_mem
  36.         LD      DE,.SFB.(IDATA0)                ;destination address
  37.         LD      HL,.SFE.(CDATA0)
  38.         LD      BC,.SFB.(CDATA0)
  39.         CALL    copy_mem
  40.         LD      DE,.SFB.(ECSTR)                 ;destination address
  41.         LD      HL,.SFE.(CCSTR)
  42.         LD      BC,.SFB.(CCSTR)
  43. copy_mem
  44.         XOR     A
  45.         SBC     HL,BC
  46.         PUSH    BC
  47.         LD      C,L
  48.         LD      B,H                             ; BC - that many bytes
  49.         POP     HL                              ; source address
  50.         RET     Z                               ; If block size = 0 return now
  51.         LDIR
  52.         RET
  53. zero_mem
  54.         XOR     A
  55. again   PUSH    HL
  56.         SBC     HL,DE
  57.         POP     HL
  58.         RET     Z
  59.         LD      (DE),A
  60.         INC     DE
  61.         JR      again
  62.         COMMON  INTVEC
  63.         ENDMOD  init_A
  64.        
  65.         MODULE  exit
  66.         PUBLIC  exit
  67.         PUBLIC  ?C_EXIT
  68.         RSEG    RCODE
  69. ?C_EXIT
  70. exit    EQU     ?C_EXIT
  71.         jp 0x0000                       ; loop forever
  72.         END