53 lines
2.5 KiB
Plaintext
53 lines
2.5 KiB
Plaintext
1 ;--------------------------------------------------------------------------
|
|
2 ; cpm0.s - Generic cpm0.s for a Z80 CP/M-80 v2.2 Application
|
|
3 ; Copyright (C) 2011, Douglas Goodall All Rights Reserved.
|
|
4 ;--------------------------------------------------------------------------
|
|
5
|
|
6 .area _CODE
|
|
0000 7 .ds 0x0100
|
|
0100 8 init:
|
|
9 ;; Define an adequate stack
|
|
0100 31r00r01 [10] 10 ld sp, #stktop
|
|
11
|
|
12 ;; Initialise global variables
|
|
0103 CDr00r00 [17] 13 call gsinit
|
|
14
|
|
15 ;; Call the C main routine
|
|
0106 CDr00r00 [17] 16 call _main
|
|
17
|
|
18 ;; Return back to CP/M
|
|
0109 0E 00 [ 7] 19 ld c, #0
|
|
010B CD 05 00 [17] 20 call 5
|
|
21
|
|
22 ;; Ordering of segments for the linker.
|
|
23 .area _TPA
|
|
24
|
|
25 .area _HOME
|
|
26 .area _CODE
|
|
27 .area _INITIALIZER
|
|
28 .area _GSINIT
|
|
29 .area _GSFINAL
|
|
30 .area _DATA
|
|
31 .area _INITIALIZED
|
|
32
|
|
33 .area _STACK
|
|
0000 34 .ds 256
|
|
0100 35 stktop:
|
|
36
|
|
37 .area _GSINIT
|
|
0000 38 gsinit::
|
|
0000 01r00r00 [10] 39 ld bc, #l__INITIALIZER
|
|
0003 78 [ 4] 40 ld a, b
|
|
0004 B1 [ 4] 41 or a, c
|
|
0005 28 08 [12] 42 jr z, gsinit_next
|
|
0007 11r00r00 [10] 43 ld de, #s__INITIALIZED
|
|
000A 21r00r00 [10] 44 ld hl, #s__INITIALIZER
|
|
000D ED B0 [21] 45 ldir
|
|
000F 46 gsinit_next:
|
|
47 .area _GSFINAL
|
|
0000 C9 [10] 48 ret
|
|
49
|
|
50 ;;;;;;;;;;;;;;;;
|
|
51 ; eof - cpm0.s ;
|
|
52 ;;;;;;;;;;;;;;;;
|