* TEXTS.ASM

; TEXT SUPPORT ROUTINES

; MAKE AND PRINT NEW ITEXT.  RETURNS NEW ITEST STRUCTURE IN D0

PRINTNEWAT MACRO
 MOVE.L \1,A0		;\1 <- WINDOW
 LEA \2,A1		;\2 <- TEXT
 MOVE.W #\3,D0		;\3 <- LEFT
 MOVE.W #\4,D1		;\4 <- TOP
 BSR _PRINTTEXT		;\5 <- ERROR
 TST.L D0
 BEQ \5
 ENDM

; PRINT EXISTING INTUITEXT STRUCTURE

PRINTOLDAT MACRO
  MOVE.L \1,A0		;\1 <- WINDOW
  MOVE.L \2,A1		;\2 <- ITEXT
  MOVE.W #\3,D0		;\3 <- LEFT
  MOVE.W #\4,D1		;\4 <- TOP
  BSR _PRINTTXT
 ENDM

; MAKE AN INTUITEXT, RETURN ADDRESS IN D0

MAKEITEX MACRO
 LEA \1,A0		;\1 <- TEXT
 BSR MAKEATEXT		;\2 <- ERROR
 TST.L D0		;\3 <- RESULTPTR
 BEQ \2
 MOVE.L D0,\3
 ENDM

MAKEATEXT
 PUSHREG A0		;A0 <- N.T. TEXT PTR
 REMEMBERPUBMEM REMEMBERKEY,#SIZE.IT,ERR_MITEXT
 MOVE.L D0,A0
 PULLREG A1
 PUSHREG A0
 BSR CREATETEXT
 PULLREG D0
 RTS
ERR_MITEXT
 PULLREG A0
 RTS

CREATETEXT
 MOVE.B #1,IT.FRONTPEN(A0)	;A0 <- INTUITEXT SIZED MEM BLOCK
 MOVE.B #JAM1,IT.DRAWMODE(A0)	;A1 <- NULL TERMINATING TEXT
 MOVE.W #2,IT.LEFTEDGE(A0)
 MOVE.W #2,IT.TOPEDGE(A0)
 MOVE.L A1,IT.TEXT(A0)
 RTS

_PRINTTEXT
 PUSHREG D0-D1/A0		;A0 <- WINDOW PTR
 PUSHREG A1			;A1 <- N.T. TEXT
 REMEMBERPUBMEM REMEMBERKEY,#SIZE.IT
 TST.L D0			;D0 <- LEFTEDGE
 BEQ.S ERR_TEXT			;D1 <- TOPEDGE
 MOVE.L D0,A0
 PULLREG A1
 BSR CREATETEXT
 MOVE.L A0,A1
 MOVE.L A1,_THISITEXT
 PULLREG D0-D1/A0

_PRINTTXT
 MOVE.L WW.RPORT(A0),A0		;A0 <- WINDOW
 INTLIB PRINTITEXT		;A1 <- N.T. TEXT
 MOVE.L _THISITEXT,D0
 RTS

ERR_TEXT
 PULLREG A1
 PULLREG D0-D1/A0
 ZERO D0
 RTS

_THISITEXT
  DC.L 0
