ROM Partitioning
C.1 Firmware EPROM Layout
; Usage without timeout:
clrl
r0
; Specify no timeout.
jsb
@#CP$GET_CHAR_R4
; Call routine.
; Input is in R0.
;---------------------------------------------------------------
C.1.2.2 CP$MSG_OUT_NOLF_R4
This routine outputs a message to the console. The message is specified either
by a message code or a string descriptor. The routine distinguishes between
message codes and descriptors by requiring that any descriptor be located
outside of the first page of memory. Hence, message codes are restricted to
values between 0 and 511.
Registers R0,R1,R2,R3 and R4 are modified by this routine, all others are
preserved.
;---------------------------------------------------------------
; Usage with message code:
movzbl
#console_message_code,r0
; Specify message code.
jsb
@#CP$MSG_OUT_NOLF_R4
; Call routine.
;---------------------------------------------------------------
; Usage with a message descriptor (position dependent).
movaq
5$,r0
; Specify address of desc.
jsb
@#CP$MSG_OUT_NOLF_R4
; Call routine.
.
.
5$:
.ascid
/This is a message/
; Message with descriptor.
;---------------------------------------------------------------
; Usage with a message descriptor (position independent).
pushab
5$
; Generate message desc.
pushl
#10$-5$
; on stack.
movl
sp,r0
; Pass desc. addr. in R0.
jsb
@#CP$MSG_OUT_NOLF_R4
; Call routine.
clrq
(sp)+
; Purge desc. from stack.
.
.
5$:
.ascii
/This is a message/
; Message.
10$:
;
;---------------------------------------------------------------
C–6 ROM Partitioning