;; A simple program to display "Hello World". This program
;; will work with CP/M 2.1 and C/PM +


;; origin for CP/M programs
org &100
nolist
write"cpmex1.com"

;;---------------------------------------------------------
.bdos equ 5

;;---------------------------------------------------------
;; display message and then return back to the command-line

ld hl,message
call display_message
ret

;;---------------------------------------------------------
;; HL = pointer to null terminated message
.display_message
ld a,(hl)				;; get ASCII character
inc hl					;; increment pointer for next character
or a					;; end of message marker (0)?
ret z					;; quit if end of message marker found.

call display_char		;; send character to console output
jp display_message		;; loop for next char

;;---------------------------------------------------------
;; put character to console
;;
;; A = ASCII character

.display_char
push hl
ld c,2			;; console output function id
ld e,a			;; ASCII character
call bdos		;; call BDOS to execute function
pop hl
ret

;;---------------------------------------------------------
;; the message to display

.message
defb "Hello World!",0