;***************************************************************************;
; ;
; BOX ;
; Draws a graphics box on the screen ;
; ;
;***************************************************************************;
;Copyright (C) 1986 by UltraSoft. All Rights Reserved.
;
;Written by: David Pallmann
;
;Usage: XCALL BOX, StartRow, StartCol, EndRow, EndCol
;
;To assemble: (1) .M68 BOX
; (2) .LNKLIT BOX
;1.0 12-Nov-85 created. /DFP
OBJNAM .SBR
SEARCH SYS
SEARCH SYSSYM
SEARCH TRM
EXTERN $GTARG
;XCALL Argument List - indexed by A3
.OFINI
.OFDEF XC.ARG,2
.OFDEF XC.TY1,2
.OFDEF XC.AD1,4
.OFDEF XC.SZ1,4
.OFDEF XC.TY2,2
.OFDEF XC.AD2,4
.OFDEF XC.SZ2,4
.OFDEF XC.TY3,2
.OFDEF XC.AD3,4
.OFDEF XC.SZ3,4
.OFDEF XC.TY4,2
.OFDEF XC.AD4,4
.OFDEF XC.SZ4,4
.OFSIZ XC.SIZ
;Variable type codes
XC$UNF=0 ; unformatted
XC$STR=2 ; string
XC$FLT=4 ; floating point
XC$BIN=6 ; binary
DEFINE TCALL CODE
MOVW #-1_8.+^D<CODE>,D1
TCRT
ENDM
DEFINE CLS=TCALL 0
DEFINE GRAFIX=TCALL 23
DEFINE TEXT=TCALL 24
DEFINE CURSOR ROW,COL
MOVW ROW,D1
ROLW D1,#8.
ADDW COL,D1
TCRT
ENDM
MEM=A4
.OFINI
.OFDEF STAROW,2 ; start row
.OFDEF STACOL,2 ; start column
.OFDEF ENDROW,2 ; end row
.OFDEF ENDCOL,2 ; end column
.OFDEF WIDTH,2 ; box width
.OFSIZ MEMSIZ
DEFINE MOVWL SRC,DST
CLR DST
MOVW SRC,DST
ENDM
DEFINE TCALL CHAR1
MOVW #-1_8.+^D<CHAR1>,D1
TCRT
ENDM
VMAJOR=1
VMINOR=0
START: PHDR -1,0,PH$REE!PH$REU
CHKCNT: CMMW XC.ARG(A3),#4
BEQ GETARG
TYPECR ?Invalid number of arguments in BOX.SBR
RTN
GETARG: MOV #XC.TY1,D1
CALL $GTARG
MOVW D1,STAROW(MEM)
GETAG2: MOV #XC.TY2,D1
CALL $GTARG
MOVW D1,STACOL(MEM)
GETAG3: MOV #XC.TY3,D1
CALL $GTARG
MOVW D1,ENDROW(MEM)
GETAG4: MOV #XC.TY4,D1
CALL $GTARG
MOVW D1,ENDCOL(MEM)
CHECK: CMMW STAROW(MEM),#1
JLT RANGE
CMMW ENDROW(MEM),#24.
JGT RANGE
CMMW STAROW(MEM),ENDROW(MEM)
JGE RANGE
CMMW STACOL(MEM),#1
JLT RANGE
CMMW ENDCOL(MEM),#80.
JGT RANGE
CMMW STACOL(MEM),ENDCOL(MEM)
JGE RANGE
CALC: CLR D0
MOVW ENDCOL(MEM),D0
SUBW STACOL(MEM),D0
MOVW D0,WIDTH(MEM)
TOPLIN: GRAFIX
CURSOR STAROW(MEM),STACOL(MEM)
TCALL 38
MOVWL WIDTH(MEM),D0
BEQ 20$
DEC D0
BEQ 20$
10$: TCALL 46
SOB D0,10$
20$: TCALL 39
INCW STAROW(MEM)
MIDLIN: CTRLC EXIT
CMMW STAROW(MEM),ENDROW(MEM)
BEQ BTMLIN
CURSOR STAROW(MEM),STACOL(MEM)
TCALL 47
CURSOR STAROW(MEM),ENDCOL(MEM)
TCALL 47
INCW STAROW(MEM)
BR MIDLIN
BTMLIN: CURSOR ENDROW(MEM),STACOL(MEM)
TCALL 40
MOVWL WIDTH(MEM),D0
BEQ 20$
DEC D0
BEQ 20$
10$: TCALL 46
SOB D0,10$
20$: TCALL 41
EXIT: TEXT
RTN
RANGE: TYPECR ?Argument out of range in BOX.SBR
RTN
END