
;+
; bIBLIOTEKA PODDERVKI WYZOWOW UKLOAD
; Last corr. date 08/12/90
;+

;+
; UTILITNYe MAKROSY
;+


.MACRO	$$$	OP$CODE,?CODE,	?OUT
	MOVB	#OP$CODE,CODE
	JSR	R0,OUT

	.BYTE	33
	.BYTE	'M
CODE:	.BYTE	0
	.BYTE	200
OUT:
	EMT	351
	MOV	(SP)+,R0
.ENDM	$$$


.MACRO	OUTPAR	ARG
	.IF NB <ARG>
		.IF DIF <ARG>,R0
			MOV	ARG,R0
		.ENDC
	.ENDC
	CALL	OUT$PAR
.ENDM	OUTPAR


.MACRO	OUTB	ARG
	.IF NB <ARG>
		.IF DIF <ARG>,R0
			MOV	ARG,R0
		.ENDC
	.ENDC
	CALL	OUT$BYT
.ENDM	OUTB


.MACRO	OUTW	ARG
	.IF NB <ARG>
		.IF DIF <ARG>,R0
			MOV	ARG,R0
		.ENDC
	.ENDC
	CALL	OUT$WORD
.ENDM	OUTW


.MACRO	INB	ARG
	CALL	IN$BYT
       .IF NB <ARG>
		.IF DIF <ARG>,R0
			MOV	R0,ARG
		.ENDC
	.ENDC
.ENDM	INB



.MACRO	INW	ARG
	CALL	IN$WORD
	.IF NB <ARG>
		.IF DIF <ARG>,R0
			MOV	R0,ARG
		.ENDC
	.ENDC
.ENDM	INW


;+
; OB'QWLENIE GLOBALXNYH KONSTANT I PROCEDUR OB]. POLXZOWANIQ
;+

.MACRO	$GLOBL
	.GLOBL	OUT$BYT,OUT$PAR		; PROCEDURY TERMINALXNOGO OBMENA
	.GLOBL	IN$BYT,IN$WORD,OUT$WORD	; PROCEDURY PODDERVKI SISTEMNYH F-J
	
					; TABLICA KOMAND GRAFIKI	
	OFFSE$T	==:	61
	CIRCL$E	==:	62
	AR$C	==:	42
	INI$T	==:	63
	FINI$T	==:	64
	DBLIN$E	==:	66
	BO$X	==:	67
	ZNEWP$I	==:	70
	CLRWI$N	==:	71
	VIEWP$O	==:	47
	LIN$E	==:	40
	DO$T	==:	57
	SETCO$L	==:	41
	FIL$L	==:	56
	INVER$S	==:	46
	DRAWM$O	==:	44
	OUT$DOT	==:	72

	RULO$N	==:	77		; UPRAWLENIE RULONOM

	SET$SPR	==:	20		; ZAREGISTRIROWATX SPRAJT (NOWYJ WAR.) 
	SPRSE$T	==:	21		; ZAREGISTRIROWATX SPRAJT (ST. WAR.)
	SPR1M$O	==:	22		; ZADATX PEREME]ENIE PO FORMATU 1
	SPR2M$O	==:	23		; ZADATX PEREME]ENIE PO FORMATU 2
	SPROU$T	==:	24		; PROSTO WYWESTI SPRAJT
	GSPR$1	==:	25		; WYPOLNITX PEREME]ENIE (FORMAT 1)
	GSPR$2	==:	26		; WYPOLNITX PEREME]ENIE (FORMAT 2)
	SET$SEQ	==:	132		; ZADATX CEPO^KU SPRAJTOW DLQ WYWODA
	STRT$SE	==:	136		; WYWESTI ZADANNU@ CEPO^KU

	MUZI$C	==:	27		; POTUGI NA MUZYKU

	UPOU$T	==:	31		; WYWOD W WERHNEJ SL. STROKE
	DOWNO$U	==:	32		; WYWOD W NIVNEJ SL. STROKE

	SETWI$N	==:	100		; ZADATX ZONU RULONA
	ROLST$R	==:	101		; RULON STROKI WLEWO
	RORST$R	==:	102		; RULON STROKI WPRAWO
	ROLWI$N	==:	103		; RULON OKNA WLEWO
	RORWI$N	==:	104		; RULON OKNA WPRAWO
	UPCO$L	==:	105		; RULON STOBCA WWERH
	DOWNC$O	==:	106		; RULON STOLBCA WNIZ
	UPWIN$D	==:	107		; RULON OKNA WWERH
	DOWNV$I	==:	110		; RULON OKNA WNIZ

	AUTOR$E	==:	115		; WERNUTX AWTOOTWET
	SAVST$A	==:	116		; SOHRANITX STROKU
	RETST$A	==:	117		; WOSSTANOWITX STROKU

	ONCAS$H	==:	121		; REVIM PROSMOTRA SOST. spzu
	OFFCA$S	==:	122		; REVIM BEZ  PROSMOTRA SOST. spzu
	RECAS$H	==:	123		; PROSMOTRETX SOST. spzu

	SET$STY	==:	64		; ZADATX TIP LINII
	USR$STY	==:	65		; ZADATX POLXZOWATELXSKIJ TIP LINII
	
	OUT$LOA	==:	73		; WERNUTX ADRES ZAGRUZKI I DLINU
	PVA$L	==:	74		; ZAPISATX W ozu pp
	GVA$L	==:	75		; PRO^ITATX IZ ozu pp
	TIM$ERS	==:	76		; UPRAWLENIE TAJMERAMI
	
					; BATCH - PROCESSOR
	BA$STAR	==:	124		; NA^ATX WYPOLNENIE
	BAI$STA	==:	125		; TO VE, NO IZ WNUTRENNEGO BUFERA
	BA$END	==:	126		; ZAKON^ITX WYPOLNENIE
	BA$SAVE	==:	127		; NA^ATX SOHRANENIE 
	BAI$SAV	==:	130		; TO VE, NO WO WNUTRENNEM BUFERE
	BA$CLOS	==:	131		; ZAKON^ITX SOHRANENIE
	
	SET$SIZ	==:	133		; ZADATX MAS[TAB [RIFTA
	SET$CUP	==:	134		; ZADATX NAKLON [RIFTA
	OUT$STR	==:	135		; WYWESTI STROKU
	USR$CUP	==:	137		; POLXZOWATELXSKIJ TIP [RIFTA	
		
.ENDM $GLOBL



;+
; iNICIALIZACIQ PAKETA
;+
.MACRO	$INIT
	$GLOBL
	$$$	INI$T
.ENDM	$INIT


;+
; WWEDENIE SME]ENQ DLQ WYWODA GRAFIKI
;+
.MACRO	$OFFSET	XSTART,	YSTART
	$$$	OFFSE$T
	OUTPAR	XSTART
	OUTPAR	YSTART
.ENDM	$OFFSET


;+
; pRORISOWKA OKRUVNOSTI 
;+
.MACRO	$CIRCLE	XCENTR,YCENTR,RADIUS
	$$$	CIRCL$E
	OUTPAR	XCENTR
	OUTPAR	YCENTR
	OUTPAR	RADIUS
.ENDM	$CIRCLE


;+
; oKON^ANE RABOTY S PAKETOM
;+
.MACRO	$FINIT
	$$$	FINI$T
.ENDM	$FINIT


;+
; pRORISOWKA TOLSTOJ LINII
;+
.MACRO	$DBLINE	XST,YST,XEND,YEND
	$$$	DBLIN$E
	OUTPAR	XST
	OUTPAR	YST
	OUTPAR	XEND
	OUTPAR	YEND
.ENDM	$DBLINE


;+
; pRORISOWKA KONTURA PRQMOUGOLXNIKA
;+
.MACRO	$BOX	XST,YST,XEND,YEND
	$$$	BO$X	
	OUTPAR	XST
	OUTPAR	YST
	OUTPAR	XEND
	OUTPAR	YEND
.ENDM	$BOX


;+
; zANAWES 
;+
.MACRO	$ZNEWPIC C1,C2
	$$$	ZNEWP$I
	OUTB	C1
	OUTB	C2
.ENDM	$ZNEWPIC


;+
; o^ISTKA POLQ WYWODA UKAZANNYM CWETOM
;+
.MACRO  $CLRWIND C
	$$$	CLRWI$N
	OUTB	C
.ENDM	$CLRWIND


;+
; zADANIE GRANIC POLQ WYWODA
;+
.MACRO	$VIEWPORT XST,YST,XEND,YEND
	$$$	VIEWP$O
	OUTPAR	XST
	OUTPAR	YST
	OUTPAR	XEND
	OUTPAR	YEND
.ENDM	$VIEWPORT


;+
; pRORISOWKA LINII
;+
.MACRO	$LINE	XST,YST,XEND,YEND
	$$$	LIN$E
	OUTPAR	XST
	OUTPAR	YST
	OUTPAR	XEND
	OUTPAR	YEND
.ENDM	$LINE


;+
; pRORISOWKA TO^KI
;+
.MACRO	$DOT	X,Y
	$$$	DO$T
	OUTPAR	X
	OUTPAR	Y
.ENDM	$DOT


;+
; uSTANOWKA TEKU]EGO CWETA
;+
.MACRO	$SETCOLOR C
	$$$	SETCO$L
	OUTB	C
.ENDM	$SETCOLOR


;+
; zALIWKA ZAMKNUTOGO KONTURA TEKU]EGO CWETA TEKU]IM CWETOM
;+
.MACRO	$FILL	X,Y
	$$$	FIL$L
	OUTPAR	X
	OUTPAR	Y
.ENDM	$FILL


;+
; zAMENA KAVDOJ TO^KI POLQ WYWODA NA TO^KU DOPOLNITELXNOGO CWETA
;+
.MACRO	$INVERSE
	$$$	INVER$S
.ENDM	$INVERSE


;+
; uSTANOWKA SPOSBA WYWODA
;+
	$MOV	==:	0	; WYWOD W REGISTR OKTETA TO^KI
	$BIS	==:	1	; STANDARTNYE WOZMOVNOSTI
	$BIC	==:	2
	$XOR	==:	4

.MACRO	$DRAWMODE MODE
	$$$	DRAWM$O
	OUTB	MODE
.ENDM


;+
; uSTANOWKA RULONA
;+

.MACRO	$RULON	PAR

	$EMPTY	==:	0	; OTSUTSTWUET
	$PL	==:	1	; PLAWNYJ
	$QANT	==:	2	; DISKRETNY

	$$$	RULO$N
	OUTB	PAR
.ENDM	$RULON


;+
; pRORISOWKA DUGI
;+
.MACRO	$ARC	X0,Y0,XST,YST,XEND,YEND
	$$$	AR$C
	OUTPAR	X0
	OUTPAR	Y0
	OUTPAR	XST
	OUTPAR	YST
	OUTPAR	XEND
	OUTPAR	YEND
.ENDM	$ARC
	

;+                        
; zAREGISTRIROWATX SPRAJT
;+
.MACRO	$SPRSET	NUMBER,ADDRESS
	.GLOBL	OUT$WD
	$$$	SPRSE$T
	OUTB	NUMBER
	MOV	ADDRESS,R0
	CALL	OUT$WD
.ENDM	$SPRSET

;+
; zAREGISTRIROWATX NEPEREWERNUTYJ SPRAJT
;+
.MACRO	$SETSPR	ADDRESS
	$$$	SET$SPR
	OUTW	ADDRESS
.ENDM	$SETSPR

;+                                    
; USTANOWITX PARAMETY PEREME]ENIQ SPRAJTA (FORMAT 1)
;+
.MACRO	$SPR1MOVE	NUMBER,XST,YST,DX,DY,WAIT,NC
	$$$	SPR1M$O
	OUTB	NUMBER
	OUTPAR	XST
	OUTPAR	YST
	OUTB	DX
	OUTB	DY
	OUTB	WAIT
	OUTB	NC
.ENDM	$SPR1MOVE


;+                                    
; USTANOWITX PARAMETY PEREME]ENIQ SPRAJTA (FORMAT 2)
;+
.MACRO	$SPR2MOVE	NUMBER,XST,YST,XEND,YEND,WAIT
	$$$	SPR2M$O
	OUTB	NUMBER
	OUTPAR	XST
	OUTPAR	YST
	OUTPAR	XEND
	OUTPAR	YEND
	OUTB	WAIT
.ENDM	$SPR2MOVE


;+           
; wYWOD SPRAJTA PO UKAZANNYM KOORDINATAM
;+
.MACRO	$SPROUT		NUMBER,X,Y
	$$$	SPROU$T	
	OUTPAR	X
	OUTPAR	Y
	OUTB	NUMBER
.ENDM	$SPROUT


;+           
; wYWOD SPRAJTA PO UKAZANI@ FOMATA 1
;+
.MACRO	$SPR1GO		NUMBER
	$$$	GSPR$1
	OUTB	NUMBER
.ENDM	$SPR1GO


;+           
; wYWOD SPRAJTA PO UKAZANI@ FOMATA 2
;+
.MACRO	$SPR2GO		NUMBER
	$$$	GSPR$2
	OUTB	NUMBER
.ENDM	$SPR2GO


;+
; mUZYKA
;+
.MACRO	$MUZIC
	$$$	MUZI$C
.ENDM	$MUZIC


;+
; wYWOD STpOKI W WEpHN@@ NEpULONIpUEMU@ ^ASTX EKpANA
;+
.MACRO	$UPOUT
	$$$	UPOU$T
.ENDM	$UPOUT


;+
; wYWOD STpOKI W NIVN@@ NEpULONIpUEMU@ ^ASTX EKpANA
;+
.MACRO	$DOWNOUT
	$$$	DOWNO$U
.ENDM	$DOWNOUT


;+
; zADANIE GRANIC RULONA
;+
.MACRO	$SETWIND XST,YST,NSTR,NCOL
	$$$	SETWI$N
	OUTB	XST
	OUTB	YST
	OUTB	NSTR
	OUTB	NCOL
.ENDM	$SETWIND



;+
; sDWINUTX STRKU WLEWO
;+
.MACRO	$ROLSTR	N
	$$$	ROLST$R
	OUTB	N
.ENDM	$ROLSTR



;+
; sDWINUTX STRKU WPRAWO
;+
.MACRO	$RORSTR	N
	$$$	RORST$R
	OUTB	N
.ENDM	$RORSTR



;+
; sDWINUTX OKNO WLEWO
;+
.MACRO	$ROLWIND
	$$$	ROLWI$N
.ENDM	$ROLWIND



;+
; sDWINUTX OKNO WPRAWO
;+
.MACRO	$RORWIND
	$$$	RORWI$N
.ENDM	$RORWIND



;+
; SDWINUTX STOLBEC WWERH
;+
.MACRO	$UPCOL	N
	$$$	UPCO$L
	OUTB	N
.ENDM	$UPCOL



;+
; SDWINUTX STOLBEC WNIZ
;+
.MACRO	$DOWNCOL N
	$$$	DOWNC$O
	OUTB	N
.ENDM	$DOWNCOL



;+
; SDWINUTX OKNO WWERH
;+
.MACRO	$UPWIND
	$$$	UPWIN$D
.ENDM	$UPWIND


;+
; SDWINUTX OKNO WNIZ
;+
.MACRO	$DOWNWIND
	$$$	DOWNW$I
.ENDM	$DOWNWIND


;+
; POLU^ITX AWTOOTWET
;+
.MACRO	$AUTOANSWER
	$$$	AUTOR$E
.ENDM	$AUTOANSWER
	
	
;+
; SOHRANITX STROKU
;+
.MACRO	$SAVSTAT NCHR,STRING=0
 	$$$	SAVST$A
 	OUTB	NCHR
 .ENDM	$SAVSTAT
 
 
;+
; WERNUTX SOHRANENNU@ STROKU
;+
 .MACRO	$RETSTAT
 	$$$	RETST$A
 .ENDM	$RETSTAT
 
 
;+
; WKL@^ITX REVIM K\[IROWANIQ
;+
.MACRO	$ONCASHE
	$$$	ONCAS$H
.ENDM	$ONCASHE



;+
; WYKL@^ITX REVIM K\[IROWANIQ
;+
.MACRO	$OFFCASHE
	$$$	OFFCA$S
.ENDM	$OFFCASHE



;+
; PERESTROITX K\[-TABLICU
;+
.MACRO	$RECASHE
	$$$	RECAS$H
.ENDM	$RECASHE

 
 
;+
; USTANOWITX TIP LINII IZ MNOVESTWA SISTEMNYH TIPOW
;+
.MACRO 	$LINSTYLE	STYLE
	$$$	SET$STYLE
	OUTB	STYLE
.ENDM	$LINSTYLE



;+
; USTANOWITX POLXZOWATELXSKIJ TIP LINII 
;+
.MACRO 	$USRSTYLE	WORD1,WORD2
	$$$	USR$STYLE
	OUTW	WORD1
	OUTW	WORD2
.ENDM	$LINSTYLE


;+
; PRINQTX INDEKSY CWETA TO^KI
;+
.MACRO	$GETDOT	X,	Y,	DST
	$$$	OUT$DOT
	OUTPAR	X
	OUTPAR	Y
	INB	DST
.ENDM	$GETDOT


;+
; PRINQTX ADRES ZAGRUZKI I DLINU UKLOAD
;+
.MACRO	$GETLOAD	LOAADR,	LENGTH
	$$$	OUT$LOA
	INW	LOAADR
	INW	LENGTH
.ENDM	$GETLOAD


;+
; ZAPISATX ^ISLO PO ADRESU W OZU PP
;+
.MACRO	$PVAL	ADDR,	ARG
	$$$	PVA$L
	OUTW	ADDR
	OUTW	ARG
.ENDM	$PVAL


;+
; PRO^ITATX ^ISLO PO ADRESU IZ OZU PP
;+
.MACRO	$GVAL	ADDR,	DST
	$$$	GVA$L
	OUTW	ADDR
	INW	DST
.ENDM	$GVAL


;+
; UPRAWLENIE SETEWYMI TAJMERAMI CP I PP
; UPRAWLQ@TSQ RAZRQDAMI 0 I 1 W STAT
; +---+---+
; ! 0 ! 1 !
; +---+---+
; ! 0 ! 0 ! - OBA TAJMERA WKL@^ENY
; ! 1 ! 0 ! - TAJMER CP WKL@^EN
; ! 0 ! 1 ! - TAJMER PP WKL@^EN
; ! 1 ! 1 ! - OBA TAJMERA WYKL@^ENY
; +---+---+
;+
.MACRO	$TIMERS	STAT
	$$$	TIM$ERS
	OUTB	STAT
.ENDM	$TIMERS


;+
; NA^ATX SOHRANENIE KOMANDNOJ POSLEDOWATELXNOSTI
;+
.MACRO	$BASAVE	BUFFER,LENGTH
	$$$	BA$SAVE
	OUTW	BUFFER
	OUTW	LENGTH
.ENDM	$BASAVE


;+
; NA^ATX SOHRANENIE KOM. POSLED. WO WNUTRENNEM BUFERE UKLOAD
;+
.MACRO	$BAISAVE 
	$$$	BAI$SAV
.ENDM	$BAISAVE



;+
; ZAKON^ITX SOHRANENIE KOMANDNOJ POSLEDOWATELXNOSTI
;+
.MACRO	$BACLOSE
	$$$	BA$CLOS
.ENDM	$BACLOSE



;+
; NA^ATX WYPOLNENIE KOMENDNOJ POSLEDOWATELXNOSTI
;+
.MACRO	$BASTART BUFFER
	$$$	BA$STAR
	OUTW	BUFFER
.ENDM	$BASTART


;+
; NA^ATX WYPOLNENIE POSL. SOHRENENNOJ WO WNUTRENNEM BUFERE UKOAD
;+
.MACRO	$BAISTART 
	$$$	BAI$STA
.ENDM	$BAISTART


;+
; ZAKON^ITX WYPOLNENIE KOMANDNOJ POSLEDOWATELXNOSTI
;+
.MACRO	$BAEND
	$$$	BA$END
.ENDM	$BAEND


;+
; ZADATX CEPO^KU SPRAJTOW
;+
.MACRO	$SETSEQ	
	$$$	SET$SEQ
.ENDM	$SETSEQ


;+
; ZAPUSTITX NA WYPOLNENIE CEPO^KU SPRAJTOW
;+
.MACRO	$STRTSEQ
	$$$	STRT$SEQ
.ENDM	$STRTSEQ


;+
; ZADATX RASTQVKI PO OSQM DLQ WYWODA SIMWOLA
;+
.MACRO	$SETSIZE SIZEX,	SIZEY
	$$$	SET$SIZ
	OUTB	SIZEX
	OUTB	SIZEY
.ENDM	$SETSIZE


;+
; zADATX NOMER [RIFTA DLQ WYWODA AC-SIMWOLOW
;+
.MACRO	$SETCUP	MODE
	$$$	SET$CUP
	OUTB	MODE
.ENDM	$SETCUP


;+
; zADATX POLXZOWATELXSKIJ TIP [RIFTA
;+
.MACRO	$USRCUP	XDIR0,YDIR0,XDIR1,YDIR1
	$$$	USR$CUP
	OUTB	XDIR0
	OUTB	YDIR0
	OUTB	XDIR1
	OUTB	YDIR1
.ENDM	$USRCUP


;+
; WYWESTI STROKU AC-SIMWOLOW
;+
.MACRO	$OUTSTR	XST,YST,DX,DY
	$$$	OUT$STR
	OUTPAR	XST
	OUTPAR	YST
	OUTPAR	DX
	OUTPAR	DY
.ENDM	$OUTSTR


;+
; pEREKL@^ENIE NA OKNO 1
;+
.MACRO	$WIN1	?LABEL
	JSR	R0,LABEL
	.BYTE	33
	.BYTE	'N
	.BYTE	200
	.BYTE	0
LABEL:	EMT	351
	MOV	(SP)+,R0
.ENDM	$WIN1


;+
; pEREKL@^ENIE NA OKNO 2
;+
.MACRO	$WIN2	?LABEL
	JSR	R0,LABEL
	.BYTE	33
	.BYTE	'O
	.BYTE	200
	.BYTE	0
LABEL:	EMT	351
	MOV	(SP)+,R0
.ENDM	$WIN2




;
;
;			   END OF ACTIVE MACROS
;
;


