home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC World Komputer 1996 May
/
PCW596.iso
/
polskie
/
eduk
/
genfast
/
demo_05.pak
/
CONFIG.DA_
< prev
next >
Wrap
Text File
|
1996-02-08
|
44KB
|
2,144 lines
;########################################################
;# #
;# Program demonstracyjny w jæzyku EasyGEN #
;# SETUP dla karty ADC I/O do IBM PC #
;# #
;# (C) 1995 MegaP Soft Grzegorz Puchawski #
;# #
;########################################################
[procedure CheckMouse]
[900]
;czeka aº zwolniå siæ wszystkie klawisze myszki
@GetMousePosition;
@If (%Z<>0) then Goto:900;
@Return;
;############################################################
[procedure HELP]
@ShowHelp('');
@Return;
;----------------
[999]
@If (%Z=$3B00) then Call:HELP;
@If (%Z=$2500) then Goto:0;
@CheckEvents;
;############################################################
[procedure NoCARD]
@ShowScreen;
@MessageBox('BÆåd','Brak zainstalowanej karty.');
@Return;
;############################################################
[procedure InitCard]
[910]
;
;tutaj znajduje sie procedura inicjalizujaca
;
;
; w %K przekazujemy adres, który ustawili₧my na karcie
; $2B8 - adres ustawiany fabrycznie
@K:=$2B8;
;
;WPROWADZENIE DO KARTY KODU Z TABLICY - INICJALIZACJA KARTY
;wywoÆywaì przez GOSUB
@ByteToPort($2BA,0);
@ByteToPort($2BD,0);
@Delay(200);
@ByteToPort($2B9,0);
@Delay(200);
@L:=0;
[911]
@ByteFromPort($2BA,%A);
; sprawdzanie czy w komputerze zainstalowana zostaÆa karta
@L:=%L+1;
@If (%L>20) then BEGIN
@Call:NoCard;
@Return;
@END;
@If (%A <> 253) then goto:911;
@RETURN;
;koniec zapisywania warto₧ci z tablicy do karty
;############################################################
;-----------------------------------------------------------
[procedure SetCard]
;WEWNETRZNA INICJALIZACJA KARTY - wczytanie danych do tablicy
;zerowanie tablicy
@C:=3;
@ExecuteCode;
;wpisanie odpowiednich warto₧ci do tablicy
@A:=1;
@B:=249;
@C:=1;
@ExecuteCode;
@A:=2;
@B:=241;
@C:=1;
@ExecuteCode;
@A:=3;
@B:=32;
@C:=1;
@ExecuteCode;
@A:=4;
@B:=226;
@C:=1;
@ExecuteCode;
@A:=5;
@B:=216;
@C:=1;
@ExecuteCode;
@A:=6;
@B:=209;
@C:=1;
@ExecuteCode;
@A:=7;
@B:=201;
@C:=1;
@ExecuteCode;
@A:=8;
@B:=193;
@C:=1;
@ExecuteCode;
@A:=9;
@B:=0;
@C:=1;
@ExecuteCode;
@A:=10;
@B:=251;
@C:=1;
@ExecuteCode;
@A:=11;
@B:=251;
@C:=1;
@ExecuteCode;
@A:=12;
@B:=251;
@C:=1;
@ExecuteCode;
@A:=13;
@B:=251;
@C:=1;
@ExecuteCode;
@A:=14;
@B:=251;
@C:=1;
@ExecuteCode;
@A:=15;
@B:=251;
@C:=1;
@ExecuteCode;
@A:=16;
@B:=251;
@C:=1;
@ExecuteCode;
;-------------16 wej₧ì analogowych
@A:=17;
@B:=1;
@C:=1;
@ExecuteCode;
@A:=18;
@B:=5;
@C:=1;
@ExecuteCode;
@A:=19;
@B:=7;
@C:=1;
@ExecuteCode;
@A:=20;
@B:=255;
@C:=1;
@ExecuteCode;
@A:=21;
@B:=5;
@C:=1;
@ExecuteCode;
@A:=22;
@B:=255;
@C:=1;
@ExecuteCode;
@A:=23;
@B:=1;
@C:=1;
@ExecuteCode;
@A:=24;
@B:=0;
@C:=1;
@ExecuteCode;
@A:=25;
@B:=0;
@C:=1;
@ExecuteCode;
@A:=26;
@B:=0;
@C:=1;
@ExecuteCode;
@A:=27;
@B:=1;
@C:=1;
@ExecuteCode;
@A:=28;
@B:=0;
@C:=1;
@ExecuteCode;
@A:=29;
@B:=2;
@C:=1;
@ExecuteCode;
@A:=30;
@B:=128;
@C:=1;
@ExecuteCode;
@A:=31;
@B:=0;
@C:=1;
@ExecuteCode;
@A:=32;
@B:=0;
@C:=1;
@ExecuteCode;
; @Call:InitCard;
@Return;
; koniec ustawiania konfiguracji standardowej - SetCard
;######################################################
[procedure SaveG]
;odczytuje z %G numer toru i zapisuje do 99 (1..16)
@A:=99;
@B:=%G;
@C:=1;
@ExecuteCode;
@Return;
;----------------
[procedure LoadG]
; odczytuje z 99 numer toru i zapisuje do %G
@A:=99;
@C:=2;
@ExecuteCode;
@G:=%B;
@Return;
;-----------------------------------------------
[procedure Error]
@MessageBox('BÆåd','Brak pliku na dysku.');
@Return;
;------------------------------------------------
;********************************************************
[procedure Color0]
@SetColors(0,0);
@Return;
;---------
[procedure Color3]
@SetColors(3,3);
@Return;
;----------
[procedure Color7]
@SetColors(7,7);
@Return;
;----------
[procedure Color10]
@SetColors(10,10);
@Return;
;-----------
[procedure Color12]
@SetColors(12,12);
@Return;
;-----------
[procedure Color14]
@SetColors(14,14);
@Return;
;############################################################
[procedure ResetButtons]
@SetHelpContext(1);
@SetPosition(0,20);
@DisableUserButtons;
@ResetFields;
@LoadFields('KARTA.CGV');
@D:=1;
@F:=20;
;
@Repeat:16;
@SetInvisibleButton(20,%F+(%D-1)*10,30,%F+%D*10,109+%D);
@A:=%D;
@C:=2;
@ExecuteCode;
@If (%B&128<>0) then Call:Color10;
@If (%B&128=0) then Call:Color12;
@Bar(22,%F+(%D-1)*10+2,28,%F+%D*10-2);
@D:=%D+1;
@F:=%F+10;
@Next;
@SetColors(8,15);
@SetButton(80,370,130,420,7,150,'Zeruj','Ustawienia standardowe');
@SetButton(140,370,190,420,7,160,'INIT.RBM','Inicjacja karty');
@SetButton(200,370,250,420,7,200,'PRG_DMA.RBM','Rodzaj pracy karty');
@SetButton(260,370,310,420,7,170,'WYJSCIA.RBM','Ustawianie wyj₧ì karty');
@SetButton(320,370,370,420,7,180,'ZAPIS.RBM','Zapis konfiguracji');
@SetButton(380,370,430,420,7,190,'ODCZYT.RBM','Odczyt konfiguracji');
@SetButton(440,370,490,420,7,2,'OPIS2.RBM','Opis karty I/O');
@SetButton(500,370,550,420,7,0,'KONIEC.RBM','Wyj₧cie z programu');
@SetColors(0,15);
@Return;
;----------------------------------------------------------------
;################################################################
;################# G£úWNA ETYKIETA PROGRAMU ####################
[1!]
@Reset;
@DisableStatusBar;
@Clrscr;
@SetColors(3,3);
@Bar(0,0,639,479);
@SetColors(0,15);
@SetPosition(40,15);
@SetHelpContext(1);
@DefKeyboardHandler(999);
@ResetVariables;
@LoadCode('CARDDRV.SYS');
@Call:SetCard;
@UpArea(130,10,620,340,7);
@DownArea(10,10,100,340,7);
@SetColors(0,15);
@SetPosition(0,20);
@Picture('karta.cgv');
@A:=0;
@B:=10;
@Repeat:16;
@A:=%A+1;
@B:=%B+10;
;rysuje przyciski odpowiadajåce poszczególnym wej₧ciom analogowym
@SetInvisibleButton(20,%B+(%A-1)*10,30,%B+%A*10,109+%A);
@UpArea(20,%B+(%A-1)*10,30,%B+%A*10,7);
@SetPosition(37,%B+(%A-1)*10+2);
@FastWrite('Dana');
@WriteValue(70,%B+(%A-1)*10,90,%B+%A*10,2,0,%A);
@Next;
@SetColors(8,15);
@DownArea(50,438,580,465,7);
@SetPosition(70,445);
@SetColors(1,14);
Program konfiguracyjny dla karty I/O ~MegaP Soft (c) 1995~
@SetColors(8,15);
@DrawButton(80,370,130,420,7,150,'Zeruj','Ustawienia standardowe');
@DrawButton(140,370,190,420,7,160,'INIT.RBM','Inicjacja karty');
@DrawButton(200,370,250,420,7,200,'PRG_DMA.RBM','Rodzaj pracy karty');
@DrawButton(260,370,310,420,7,170,'WYJSCIA.RBM','Ustawianie wyj₧ì karty');
@DrawButton(320,370,370,420,7,180,'ZAPIS.RBM','Zapis konfiguracji');
@DrawButton(380,370,430,420,7,190,'ODCZYT.RBM','Odczyt konfiguracji');
@DrawButton(440,370,490,420,7,2,'OPIS2.RBM','Opis karty I/O');
@DrawButton(500,370,550,420,7,0,'KONIEC.RBM','Wyj₧cie z programu');
@ShowScreen;
@Goto:102;
;--------------------------------------------
[2]
@SetHelpContext(1);
@ShowHelp('');
@Goto:102;
;--------------------------------------------
[102]
@Call:ResetButtons;
@CheckEvents;
;-----------------------------------------------
;WYWO£ANIE USTAWIANIA 16 WEJÿò ANALOGOWYCH
[110..125]
@Call:CheckMouse;
@GetCurrentPage(%F);
@Goto:130;
;---------------------------------------------
[130]
@G:=%F-109;
@Call:SaveG;
@Gosub:750;
@Goto:102;
;---------------------------------------------
[150]
;Ustawienie standardowych warto₧ci dla karty
@Call:SetCard;
@Goto:102;
;----------------------------------------------
[160]
;Inicjacja karty z danymi z tablicy
@Call:InitCard;
@Goto:102;
;----------------------------------------------
[170]
;Ustawienie wyj₧ì analogowych i cyfrowych karty
@Gosub:700;
@Goto:102;
;----------------------------------------------
[180]
;zapis konfiguracji
@C:=9;
@CreateUserFile('Zapis *.CRD','*.CRD');
@GetErrorCode;
@If (%Z<>0) then Goto:102;
@L:=1;
@Repeat:32;
;odczyt z tablicy
@A:=%L;
@C:=2;
@ExecuteCode;
@WriteByte(%B);
@L:=%L+1;
@Next
@CloseFile;
@Goto:102;
;----------------------------------------------
[190]
;odczyt konfiguracji
@C:=9;
@OpenUserFile('Odczyt *.CRD','*.CRD');
;gdy brak pliku
@GetErrorCode;
@If (%Z<>0) then Goto:102;
@L:=1;
@Repeat:32;
@ReadByte(%B);
;zapis do tablicy
@A:=%L;
@C:=1;
@ExecuteCode;
@L:=%L+1;
@Next
@CloseFile;
@Goto:102;
;----------------------------------------------
[200]
;DMA/PRG
@Gosub:850;
@Goto:102;
;-----------------------------------------------
;**************************************************************
[procedure OFF4PRG]
@A:=32;
@C:=2;
@ExecuteCode;
@If (%B&4=0) then Return;
; inaczej wyÆåczenie opcji
@C:=1;
@B:=%B-4;
@ExecuteCode;
@SetColors(8,15);
@DownArea(165,264,175,274,7);
@SetPosition(180,312);
@Call:Color3;
@FastWrite('Warto₧ì:');
@Return;
;--------------------
[procedure ActiveANALOG]
;sprawdza czy wÆåczona jest praca programowa - PRG (inaczej powrót)
@A:=26;
@C:=2;
@ExecuteCode;
@If (%B=1) then Call:OFF4PRG;
@A:=26;
@C:=2;
@ExecuteCode;
@If (%B=1) then Return;
;
@SetColors(0,0);
@Bar(168,267,172,271);
@SetColors(8,15);
@SetButton(270,305,300,325,7,740,'<','Dekrementacja');
@SetButton(350,305,380,325,7,742,'>','Inkrementacja');
@SetInvisibleButton(305,305,345,325,744);
@Return;
;-------------------------------------------------------
[procedure ActiveCYFROWE]
;bity wyj₧ciowe dla danej cyfrowej 1
@SetColors(0,0);
@D:=1;
@Repeat:8;
@SetInvisibleButton(280+(%D-1)*10,214,280+%D*10,224,711+%D);
@Rectangle(280+(%D-1)*10,214,280+%D*10,224);
@D:=%D+1;
@Next;
;bity wyj₧ciowe dla danej cyfrowej 2
@D:=1;
@Repeat:8;
@SetInvisibleButton(280+(%D-1)*10,234,280+%D*10,244,719+%D);
@Rectangle(280+(%D-1)*10,234,280+%D*10,244);
@D:=%D+1;
@Next;
@Return;
;-------------------------------------------------------
[procedure DrawCYFROWE]
;bity wyj₧ciowe dla danej cyfrowej 1
;odczyt warto₧ci
@A:=18;
@C:=2;
@ExecuteCode;
@J:=1;
@D:=8;
@E:=1;
@Repeat:8;
@SetColors(0,0);
@Rectangle(280+(%D-1)*10,214,280+%D*10,224);
@If (%B&%E<>0) then Call:Color10;
@If (%B&%E=0) then Call:Color7;
@Bar(282+(%D-1)*10,216+(%J-1)*20,278+%D*10,222+(%J-1)*20);
@E:=%E*2;
@D:=%D-1;
@Next;
;wy₧wietla warto₧ì dla bitów 1 bajtu
@SetColors(8,15);
@UpArea(377,213,410,226,7);
@A:=18;
@C:=2;
@ExecuteCode;
@SetColors(14,0);
@WriteValue(377,213,410,226,0,0,%B);
;bity wyj₧ciowe dla danej cyfrowej 2
;odczyt warto₧ci
@A:=19;
@C:=2;
@ExecuteCode;
@J:=2;
@D:=8;
@E:=1;
@Repeat:8;
@SetColors(0,0);
@Rectangle(280+(%D-1)*10,234,280+%D*10,244);
@If (%B&%E<>0) then Call:Color10;
@If (%B&%E=0) then Call:Color7;
@Bar(282+(%D-1)*10,216+(%J-1)*20,278+%D*10,222+(%J-1)*20);
@E:=%E*2;
@D:=%D-1;
@Next;
;wy₧wietla warto₧ì dla bitów 2 bajtu
@SetColors(8,15);
@UpArea(377,233,410,246,7);
@A:=19;
@C:=2;
@ExecuteCode;
@SetColors(14,0);
@WriteValue(377,233,410,246,0,0,%B);
@Return;
;----------------------
[procedure SetTTL]
@SetColors(8,15);
@SetButton(300,160,390,180,7,730,'Wybór f','Ustawienie czæstotliwo₧ci');
@Return;
;-------------------------------------------------------
[procedure SetWin1]
@DisableUserButtons;
; ANALOGOWE
@SetInvisibleButton(165,264,175,274,745);
@SetColors(8,15);
@DownArea(165,264,175,274,7);
@A:=32;
@C:=2;
@ExecuteCode;
@SetPosition(180,312);
@If (%B&4=0) then Call:Color3;
@If (%B&4<>0) then Call:Color0;
@FastWrite('Warto₧ì:');
@If (%B&4<>0) then Call:ActiveANALOG;
;wy₧wietlenie warto₧ci analogowej
@Gosub:739;
; IMPULSY TTL
@SetColors(14,0);
@FillEllipse(175,152,5,5);
@SetInvisibleButton(170,147,180,157,748);
@A:=27;
@C:=2;
@ExecuteCode;
@If (%B=0) then Call:Color14;
@If (%B=1) then Call:SetTTL;
@If (%B=1) then Call:Color0;
@FillEllipse(175,152,3,3);
@If (%B=0) then Call:Color3;
@SetPosition(195,149);
@FastWrite('Impulsy TTL');
@SetPosition(195,163);
@Picture('TTL2.RBM');
; WARTOÿò CYFROWA
@SetColors(8,15);
@UpArea(377,213,410,226,7);
@UpArea(377,233,410,246,7);
@SetColors(14,0);
@FillEllipse(175,200,5,5);
@SetInvisibleButton(170,195,180,205,749);
@Call:DrawCYFROWE;
@A:=27;
@C:=2;
@ExecuteCode;
@If (%B=0) then Call:Color0;
@If (%B=0) then Call:ActiveCYFROWE;
@If (%B=1) then Call:Color14;
@FillEllipse(175,200,3,3);
@If (%B=1) then Call:Color3;
@SetPosition(195,197);
@FastWrite('Warto₧ì cyfrowa');
;ustawia paski
@SetPosition(180,215);
@FastWrite(' D7-D0 (J2)');
@SetPosition(180,235);
@FastWrite('D15-D8 (J2)');
@SetPosition(365,215);
@FastWrite('=');
@SetPosition(365,235);
@FastWrite('=');
; ustawienie pozostaÆych przycisków i pól
@SetColors(8,15);
@SetButton(180,350,400,380,7,701,'Ustawienie danych','Zatwierdzenie ustawieñ');
@Return;
;------------------------------------------------------
[procedure DrawWIN1]
;aktywacja standardowych klawiszy dla okna wej₧cia-wyj₧cia
@DisableUserButtons;
@SetColors(0,15);
@GetImage(150,90,440,410);
@DialogBox(150,90,430,390,3,'KONFIGURACJA WYJÿò');
@DownArea(160,142,420,185,7);
@DownArea(160,190,420,252,7);
@DownArea(160,288,420,340,7);
; CYFROWE
@SetPosition(190,123);
@FastWrite('Wyj₧cie cyfrowe');
; ANALOGOWE
@SetPosition(190,266);
@FastWrite('Wyj₧cie analogowe');
@DownArea(165,264,175,274,7);
@SetInvisibleButton(165,264,175,274,745);
; IMPULSY TTL
@SetInvisibleButton(170,147,180,157,748);
; WARTOSC CYFR.
@SetInvisibleButton(170,195,180,205,749);
; pozostaÆe pola i przyciski
@SetColors(8,15);
@DrawButton(300,160,390,180,7,730,'Wybór f','Ustawienie czæstotliwo₧ci');
@DrawButton(270,305,300,325,7,740,'<','Dekrementacja');
@DrawButton(350,305,380,325,7,742,'>','Inkrementacja');
@DrawButton(180,350,400,380,7,701,'Ustawienie danych','Zatwierdzenie ustawieñ');
@Call:SetWIN1;
@Return;
;---------------------------------------------------------------------
;##########################################################
;######## OKNO WYBORU WYJÿò KARTY ################
;##########################################################
[700]
;
;RYSOWANIE OKNA WYBORU WYJÿò KARTY - wywoÆywaì jako GOSUB
;w %G przekazujemy numer ADC , ktory bedzie obslugiwany
;
@ResetFields;
@DisableUserButtons;
@SetHelpContext(3);
;rysujemy okno
@Call:DrawWIN1;
@Goto:702;
;--------------------------------------------
[701]
;ZAMKNIÉCIE OKNA
@PutImage;
@Return;
;--------------------------------------------
[702]
;OBS£UGA POLECEÑ
@CheckEvents;
;--------------------------------------------
[706]
;obliczenie warto₧ci bitu i jego obsÆuga
;w %L przekazujemy numer bitu od prawej
;w %J przekazujemy numer bajtu (1 lub 2)
@Call:CheckMouse;
;odczyt bajtu
@If (%J=1) then Gosub:709;
@If (%J=2) then Gosub:710;
;obliczenie warto₧ci bitu
@H:=2^(%L-1);
;obsÆuga bitu - zmiana warto₧ci
@E:=%B&%H;
@If (%E<>0) then BEGIN
@B:=%B-%H;
@END;
@If (%E=0) then BEGIN
@B:=%B+%H;
@END;
;zapis zmienionej warto₧ci bajtu
@If (%J=1) then Gosub:707;
@If (%J=2) then Gosub:708;
@Call:DrawCYFROWE;
@Return;
;------------------------------------
;zapis warto₧ci bajtów
[707]
;1 bajt
@A:=18;
@C:=1;
@ExecuteCode;
@Return;
;----------
[708]
;2 bajt
@A:=19;
@C:=1;
@ExecuteCode;
@Return;
;----------------------------------------
;odczyt warto₧ci bajtów
[709]
;1 bajt
@A:=18;
@C:=2;
@ExecuteCode;
@Return;
;-----------
[710]
;2 bajt
@A:=19;
@C:=2;
@ExecuteCode;
@Return;
;-------------------------------------------
;obsÆuga poszczególnych pól dla bitów
;-------------------------------------------
;1 bajt
[712]
@J:=1;
@L:=8;
@Gosub:706;
@Goto:702;
[713]
@J:=1;
@L:=7;
@Gosub:706;
@Goto:702;
[714]
@J:=1;
@L:=6;
@Gosub:706;
@Goto:702;
[715]
@J:=1;
@L:=5;
@Gosub:706;
@Goto:702;
[716]
@J:=1;
@L:=4;
@Gosub:706;
@Goto:702;
[717]
@J:=1;
@L:=3;
@Gosub:706;
@Goto:702;
[718]
@J:=1;
@L:=2;
@Gosub:706;
@Goto:702;
[719]
@J:=1;
@L:=1;
@Gosub:706;
@Goto:702;
;-----------------------
;2 bajt
[720]
@J:=2;
@L:=8;
@Gosub:706;
@Goto:702;
[721]
@J:=2;
@L:=7;
@Gosub:706;
@Goto:702;
[722]
@J:=2;
@L:=6;
@Gosub:706;
@Goto:702;
[723]
@J:=2;
@L:=5;
@Gosub:706;
@Goto:702;
[724]
@J:=2;
@L:=4;
@Gosub:706;
@Goto:702;
[725]
@J:=2;
@L:=3;
@Gosub:706;
@Goto:702;
[726]
@J:=2;
@L:=2;
@Gosub:706;
@Goto:702;
[727]
@J:=2;
@L:=1;
@Gosub:706;
@Goto:702;
;-----------------------------------------------------------------
[730]
@A:=26;
@C:=2;
@ExecuteCode;
; sprawdza czy nie jest wÆåczona opcja DMA
@If (%B=1) then Gosub:731;
@If (%B=1) then Goto:702;
@Gosub:800;
@Call:SetWIN1;
@Goto:702;
;---------
[731]
@SetHelpContext(20);
@ShowHelp('BÆåd');
@SetHelpContext(3);
@Return;
;--------------------------------------------
;obsÆuga - warto₧ì analogowa
[739]
;obszar z liczba - wy₧wietlenie warto₧ci
@A:=20;
@C:=2;
@ExecuteCode;
@SetColors(8,15);
@DownArea(305,305,345,325,7);
@SetColors(14,0);
@WriteValue(305,305,345,325,0,0,%B);
@Return;
;---------
[740]
;dekrementacja licznika
@A:=20;
@C:=2;
@ExecuteCode;
@B:=%B-1;
@If (%B<0) then BEGIN
@B:=0;
@END;
@A:=20;
@C:=1;
@ExecuteCode;
;wyswietla wartosc
@Gosub:739;
@Goto:702;
;---------
[742]
;inkrementacja licznika
@A:=20;
@C:=2;
@ExecuteCode;
@B:=%B+1;
@If (%B>255) then BEGIN
@B:=255;
@END;
@A:=20;
@C:=1;
@ExecuteCode;
;wy₧wietla warto₧ì
@Gosub:739;
@Goto:702;
;-------------
[744]
;pobranie warto₧ci
;czeka na puszczenie klawisza
@Call:CheckMouse;
@A:=20;
@C:=2;
@ExecuteCode;
@GetValue(%B,'Warto₧ì napiæcia');
@If (%B<0) then BEGIN
@B:=0;
@END;
@If (%B>255) then BEGIN
@B:=255;
@END;
@A:=20;
@C:=1;
@ExecuteCode;
;wy₧wietla warto₧ì
@Gosub:739;
@Call:CheckMouse;
@Goto:702;
;--------------------------------------------
[745]
;obsluga pola ANALOGOWE
;czeka na puszczenie klawisza
@Call:CheckMouse;
@A:=26;
@C:=2;
@ExecuteCode;
;wychodzi bo opcja DMA
@If (%B=1) then BEGIN
@MessageBox('Warto₧ì analogowa','DMA -> opcja nieaktywna.');
@Goto:702;
@END;
@A:=32;
@C:=2;
@ExecuteCode;
@If (%B&4<>0) then Goto:747;
@If (%B&4=0) then Goto:746;
;---------------------
[746]
;wÆåczenie opcji
@A:=32;
@C:=1;
@B:=%B+4;
@ExecuteCode;
;ANALOGOWE
@SetInvisibleButton(165,264,175,274,745);
@SetColors(8,15);
@DownArea(165,264,175,274,7);
@SetPosition(180,312);
@SetColors(0,0);
@FastWrite('Warto₧ì:');
@Call:ActiveANALOG;
; wy₧wietla warto₧ì
@Gosub:739;
@Goto:702;
;--------------
[747]
;wyÆåczenie opcji
@A:=32;
@C:=1;
@B:=%B-4;
@ExecuteCode;
@Call:SetWIN1;
@Goto:702;
;--------------------------------------------
[748]
;impulsy TTL
;czeka na puszczenie klawisza
@Call:CheckMouse;
@A:=27;
@C:=2;
@ExecuteCode;
@If (%B=1) then Goto:702;
;zapis jedynki - wÆåczenie TTL
@A:=27;
@C:=1;
@B:=1;
@ExecuteCode;
@Call:SetWIN1;
@Goto:702;
;--------------------------------------------
[749]
;impulsy NUM
;czeka na puszczenie klawisza
@Call:CheckMouse;
@A:=27;
@C:=2;
@ExecuteCode;
@If (%B=0) then Goto:702;
;zapis zera - wlaczenie NUM
@A:=27;
@C:=1;
@B:=0;
@ExecuteCode;
@Call:SetWIN1;
@Goto:702;
;--------------------------------------------
;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
[procedure ZapiszWEJ]
@Call:LoadG;
@E:=0;
@A:=%G;
@C:=2;
@ExecuteCode;
@E:=%B&128;
;odczyt numeru toru
@A:=100;
@C:=2;
@ExecuteCode;
@E:=%E+((%B&15)*8);
;odczyt wzmocnienia toru
@A:=102;
@C:=2;
@ExecuteCode;
@E:=%E+(%B&7);
;
;zapis danej opisujåcej tor w odp. miejsce tablicy
@Call:LoadG;
@A:=%G;
@B:=%E;
@C:=1;
@ExecuteCode;
@Return;
;----------------------------------------------------------
[procedure Dodaj4]
@E:=%E+8;
@Return;
[procedure Dodaj3]
@E:=%E+4;
@Return;
[procedure Dodaj2]
@E:=%E+2;
@Return;
[procedure Dodaj1]
@E:=%E+1;
@Return;
;-----------------------------------------
[procedure wzm0]
@E:=1;
@F:=0;
@Return;
[procedure wzm1]
@E:=2;
@F:=1;
@Return;
[procedure wzm2]
@E:=5;
@F:=2;
@Return;
[procedure wzm3]
@E:=10;
@F:=3;
@Return;
[procedure wzm4]
@E:=20;
@F:=4;
@Return;
[procedure wzm5]
@E:=100;
@F:=5;
@Return;
[procedure wzm6]
@E:=500;
@F:=6;
@Return;
[procedure wzm7]
@E:=1000;
@F:=7;
@Return;
;-------------------------------------------------------
[procedure ShowNr]
;obszar z liczbå - wy₧wietlenie warto₧ci NR TORU
@A:=100;
@C:=2;
@ExecuteCode;
@DownArea(320,155,370,175,7);
@SetColors(14,0);
@WriteValue(320,155,370,175,0,0,%B);
@Return;
;-----------------
[procedure ShowWzm]
;obszar z liczbå - wy₧wietlenie warto₧ci wzmocnienia
@A:=102;
@C:=2;
@ExecuteCode;
@E:=0;
@If (%B&7=0) then Call:wzm0;
@If (%B&7=1) then Call:wzm1;
@If (%B&7=2) then Call:wzm2;
@If (%B&7=3) then Call:wzm3;
@If (%B&7=4) then Call:wzm4;
@If (%B&7=5) then Call:wzm5;
@If (%B&7=6) then Call:wzm6;
@If (%B&7=7) then Call:wzm7;
;w zmiennej %E otrzymali₧my warto₧ì wzmocnienia {1,2,5,10,20,100,500,1000}
@A:=101;
@B:=%E;
@C:=1;
@ExecuteCode;
;w zmiennej %F otrzymali₧my nr warto₧ci wzmocnienia {0..7}
@A:=102;
@B:=%F;
@C:=1;
@ExecuteCode;
;odczyt i wy₧wietlenie
@A:=101;
@C:=2;
@ExecuteCode;
@DownArea(320,195,370,215,7);
@SetColors(14,0);
@WriteValue(320,195,370,215,0,0,%B);
@Return;
;--------------------
[procedure CzytajWEJSCIE]
; wczytuje w odpowiednie miejsca tablicy informacje o wej₧ciu analogowym
@Call:LoadG;
@A:=%G;
@C:=2;
@ExecuteCode;
@E:=0;
@If (%B&64<>0) then Call:Dodaj4;
@If (%B&32<>0) then Call:Dodaj3;
@If (%B&16<>0) then Call:Dodaj2;
@If (%B&8<>0) then Call:Dodaj1;
; w zmiennej %E otrzymali₧my nr toru
@A:=100;
@B:=%E;
@C:=1;
@ExecuteCode;
;
; zapisujemy informacje o wzmocnieniu
@A:=%G;
@C:=2;
@ExecuteCode;
@A:=102;
@B:=%B&7;
@C:=1;
@ExecuteCode;
@Return;
;-------------------------------------------------------------
[procedure SetActive]
; przyciski okna ustawia jako aktywne
@SetColors(3,0);
@ReverseArea(161,143,419,229);
@SetColors(0,15);
@Bar(168,125,172,129);
;uaktywnia przyciski
@DisableUserButtons;
@SetInvisibleButton(165,122,175,132,760);
@SetColors(8,15);
@SetButton(180,240,400,270,7,753,'Ustawienie wej₧cia','Zatwierdzenie ustawieñ');
@SetButton(285,155,315,175,7,765,'<','Dekrementacja');
@SetButton(375,155,405,175,7,767,'>','Inkrementacja');
@SetInvisibleButton(320,155,370,175,769);
@SetButton(285,195,315,215,7,787,'<','Dekrementacja');
@SetButton(375,195,405,215,7,789,'>','Inkrementacja');
@Return;
;-----------------------
[procedure SetNoActive]
; przyciski okna ustawia jako nieaktywne
@SetColors(0,3);
@ReverseArea(161,143,419,229);
@SetColors(7,7);
@Bar(168,125,172,129);
;dezaktywacja przycisków
@DisableUserButtons;
@SetInvisibleButton(165,122,175,132,760);
@SetColors(8,15);
@SetButton(180,240,400,270,7,753,'Ustawienie wej₧cia','Zatwierdzenie ustawieñ');
@Return;
;-------------------------------------------------------------
;################################################################
;######## OKNO WYBORU WEJÿò ANALOGOWYCH KARTY ###########
;################################################################
[750]
;
;RYSOWANIE OKNA WYBORU USTAWIEÑ WEJÿò KARTY - wywoÆywaì jako GOSUB
;w %G przekazujemy numer obsÆugiwanej danej
;
@SetHelpContext(4);
@ResetFields;
@DisableUserButtons;
@GetImage(150,90,440,300);
@DialogBox(150,90,430,280,3,'PARAMETRY WEJÿCIA');
;obszar na nr toru i wzmocnienie
@DownArea(160,142,420,230,7);
;AKTYWNY
@SetPosition(190,123);
@FastWrite('Uaktywnienie toru');
@SetInvisibleButton(165,122,175,132,760);
@DownArea(165,122,175,132,7);
@SetColors(0,15);
@SetPosition(170,162);
@FastWrite('Nr DCO:');
@SetColors(8,15);
@DrawButton(285,155,315,175,7,765,'<','Dekrementacja');
@DrawButton(375,155,405,175,7,767,'>','Inkrementacja');
@SetInvisibleButton(320,155,370,175,769);
@DownArea(320,155,370,175,7);
@SetColors(0,15);
@SetPosition(170,202);
@FastWrite('Wzmocnienie x');
@SetColors(8,15);
@DrawButton(285,195,315,215,7,787,'<','Dekrementacja');
@DrawButton(375,195,405,215,7,789,'>','Inkrementacja');
@DownArea(320,195,370,215,7);
@DrawButton(180,240,400,270,7,753,'Ustawienie wej₧cia','Zatwierdzenie ustawieñ');
@Call:LoadG;
@A:=%G;
@C:=2;
@ExecuteCode;
@If (%B&128<>0) then Call:Color0;
@If (%B&128=0) then Call:Color7;
@Bar(168,125,172,129);
@If (%B&128<>0) then Call:SetActive;
@If (%B&128=0) then Call:SetNoActive;
@Call:CzytajWEJSCIE;
@Call:ShowNr;
@Call:ShowWzm;
@Goto:752;
;--------------------------------------------
[752]
;OBS£UGA POLECEÑ
@CheckEvents;
;--------------------------------------------
[753]
;ZAMKNIÉCIE OKNA
;zatwierdzenie i zapisanie danych do tablicy w odpowiednie miejsca
@Call:ZapiszWEJ;
@PutImage;
@Return;
;-----------------------------------------------------------------
[760]
;wÆåczenie lub wyÆåczenie opcji AKTYWNY
@Call:CheckMouse;
;sprawdza czy aktywny czy nie
@Call:LoadG;
@A:=%G;
@C:=2;
@ExecuteCode;
@If (%B&128<>0) then Goto:762;
@If (%B&128=0) then Goto:761;
;--------------------------------------
[761]
;wÆåczenie opcji
@Call:LoadG;
;odczyt
@A:=%G;
@C:=2;
@ExecuteCode;
;aktywuje
@A:=%G;
@B:=%B+128;
@C:=1;
@ExecuteCode;
@Call:SetActive;
@Goto:752;
;------------------------------
[762]
;wyÆåczenie opcji
@Call:LoadG;
;odczyt
@A:=%G;
@C:=2;
@ExecuteCode;
;dezaktywuje
@A:=%G;
@B:=%B-128;
@C:=1;
@ExecuteCode;
@Call:SetNoActive;
@Goto:752;
;------------------------------------------------------
[765]
;dekrementacja licznika
@A:=100;
@C:=2;
@ExecuteCode;
@B:=%B-1;
@If (%B<0) then BEGIN
@B:=0;
@END;
@A:=100;
@C:=1;
@ExecuteCode;
@Call:ShowNr;
@Goto:752;
;------------------
[767]
;inkrementacja licznika
@A:=100;
@C:=2;
@ExecuteCode;
@B:=%B+1;
@If (%B>15) then BEGIN
@B:=15;
@END;
@A:=100;
@C:=1;
@ExecuteCode;
@Call:ShowNr;
@Goto:752;
;----------------------
[769]
;pobranie warto₧ci
@Call:CheckMouse;
@A:=100;
@C:=2;
@ExecuteCode;
@GetValue(%B,'Nr. TORU dla we ADC');
@If (%B<0) then BEGIN
@B:=0;
@END;
@If (%B>15) then BEGIN
@B:=15;
@END;
@A:=100;
@C:=1;
@ExecuteCode;
@Call:ShowNr;
@Call:CheckMouse;
@Goto:752;
;--------------------------------------------
[787]
;dekrementacja licznika
@A:=102;
@C:=2;
@ExecuteCode;
@B:=%B-1;
@If (%B<0) then BEGIN
@B:=0;
@END;
@A:=102;
@C:=1;
@ExecuteCode;
@Call:ShowWzm;
@Goto:752;
;---------------------
[789]
;inkrementacja licznika
@A:=102;
@C:=2;
@ExecuteCode;
@B:=%B+1;
@If (%B>7) then BEGIN
@B:=7;
@END;
@A:=102;
@C:=1;
@ExecuteCode;
@Call:ShowWzm;
@Goto:752;
;##########################################################
[procedure czas_L]
;konwersja danych w tablicy na liczbæ w %E
;
;odczyt danych czasu
@E:=0;
;mÆodszy bajt
@A:=21;
@C:=2;
@ExecuteCode;
@E:=%B;
;starszy bajt
@A:=22;
@C:=2;
@ExecuteCode;
@E:=%E+%B*256;
@Return;
;------------
[procedure mnoznik_L]
;konwersja danych mnoºnika na liczbæ w %E
@E:=0;
;mÆodszy bajt
@A:=23;
@C:=2;
@ExecuteCode;
@E:=%B;
;starszy bajt
@A:=24;
@C:=2;
@ExecuteCode;
@E:=%E+%B*256;
;najstarszy bajt
@A:=25;
@C:=2;
@ExecuteCode;
@E:=%E+%B*65536;
@Return;
;-----------------------------------
[procedure L_czas]
;konwersja liczby (z %E) na bajty czasu
;
@B:=%E&$00FF;
@A:=21;
@C:=1;
@ExecuteCode;
@B:=(%E&$FF00)/256;
@A:=22;
@C:=1;
@ExecuteCode;
@Return;
;---------------
[procedure L_mnoznik]
;konwersja liczby (z %E) na bajty mnoznika
;
@B:=%E&$0000FF;
@A:=23;
@C:=1;
@ExecuteCode;
;
@B:=(%E&$00FF00)/256;
@A:=24;
@C:=1;
@ExecuteCode;
;
@B:=(%E&$FF0000)/65536;
@A:=25;
@C:=1;
@ExecuteCode;
@Return;
;-----------------------------------
[procedure ShowCZ]
;wy₧wietla warto₧ì CZAS
@Call:czas_L;
@DownArea(310,175,390,195,7);
@SetColors(14,14);
@WriteValue(310,175,390,195,0,0,%E);
@Return;
;-----------------------------------
[procedure ShowMN]
;wy₧wietla warto₧ì MNOíNIK
@Call:mnoznik_L;
@DownArea(310,215,390,235,7);
@SetColors(14,14);
@WriteValue(310,215,390,235,0,0,%E);
@Return;
;-----------------------------------
;###########################################################
;######## USTAWIANIE PARAMETRúW LICZNIKA ##########
;###########################################################
[800]
;
;RYSOWANIE OKNA USTAWIEÑ LICZNIKA KARTY - wywoÆywaì jako GOSUB
;
@SetHelpContext(5);
@ResetFields;
@DisableUserButtons;
@GetPart(170,130,460,320);
@DialogBox(170,130,450,300,3,'LICZNIK KARTY');
;obszar na skalæ i mnoºnik
@DownArea(180,162,440,250,7);
@SetColors(0,15);
@SetPosition(190,182);
@FastWrite('Czas (µs):');
@SetColors(8,15);
@DrawButton(275,175,305,195,7,805,'<','Dekrementacja');
@DrawButton(395,175,425,195,7,806,'>','Inkrementacja');
@SetInvisibleButton(310,175,390,195,810);
@DownArea(310,175,390,195,7);
@SetColors(0,15);
@SetPosition(190,222);
@FastWrite('Mnoºnik x');
@SetColors(8,15);
@DrawButton(275,215,305,235,7,820,'<','Dekrementacja');
@DrawButton(395,215,425,235,7,821,'>','Inkrementacja');
@SetInvisibleButton(310,215,390,235,830);
@DownArea(310,215,390,235,7);
@DrawButton(200,260,420,290,7,803,'Ustawienie licznika','Zatwierdzenie ustawieñ');
@Call:ShowCZ;
@Call:ShowMN;
@Goto:802;
;--------------------------------------------
[802]
;OBS£UGA POLECEÑ
@CheckEvents;
;--------------------------------------------
[803]
;ZAMKNIÉCIE OKNA
@PutPart(170,130);
@Return;
;-----------------------------------------------
[805]
;dekrementacja CZAS
@Call:czas_L;
@E:=%E-1;
@If (%E<1) then BEGIN
@E:=1;
@END;
@Call:L_czas;
@Call:ShowCZ;
@Goto:802;
;---------------------
[806]
;inkrementacja CZAS
@Call:czas_L;
@E:=%E+1;
@If (%E>64000) then BEGIN
@E:=64000;
@END;
@Call:L_czas;
@Call:ShowCZ;
@Goto:802;
;--------------------
[810]
;odczyt warto₧ci CZAS - okno
@Call:CheckMouse;
@Call:Czas_L;
@GetValue(%E,'Warto₧ì skali czasowej:');
@If (%E<1) then BEGIN
@E:=1;
@END;
@If (%E>64000) then BEGIN
@E:=64000;
@END;
@Call:L_czas;
@Call:ShowCZ;
@Call:CheckMouse;
@Goto:802;
;-----------------------------------------------
[820]
;dekrementacja MNOíNIK
@Call:mnoznik_L;
@E:=%E-1;
@If (%E<0) then BEGIN
@E:=0;
@END;
@Call:L_mnoznik;
@Call:ShowMN;
@Goto:802;
;---------------------
[821]
;inkrementacja MNOíNIK
@Call:mnoznik_L;
@E:=%E+1;
@If (%E>$FFFFFF) then BEGIN
@E:=$FFFFFF;
@END;
@Call:L_mnoznik;
@Call:ShowMN;
@Goto:802;
;---------------------
[830]
;odczyt warto₧ci MNOíNIK - okno
@Call:CheckMouse;
@Call:Mnoznik_L;
@GetValue(%E,'Mnoºnik dla skali czasowej:');
@If (%E<0) then BEGIN
@E:=0;
@END;
@If (%E>$FFFFFF) then BEGIN
@E:=$FFFFFF;
@END;
@Call:L_mnoznik;
@Call:ShowMN;
@Call:CheckMouse;
@Goto:802;
;-----------------------------------------------
;############################################################
[procedure ShowCZASUST]
;wy₧wietla czas ustalania siæ sygnaÆu
@SetColors(7,7);
@Bar(321,156,369,174);
@A:=30;
@C:=2;
@ExecuteCode;
@SetColors(14,14);
@if (%B<>0) then BEGIN
@WriteValue(320,155,370,175,0,0,%B);
@END;
@if (%B=0) then BEGIN
@SetPosition(334,162);
@FastWrite('MAX');
@END;
@Return;
;----------------------------------
[procedure ShowUSRED]
;wy₧wietla warto₧ì u₧redniania (bajt 17)
@SetColors(7,7);
@Bar(321,228,369,246);
@A:=17;
@C:=2;
@ExecuteCode;
@SetColors(14,14);
@WriteValue(320,227,370,247,0,0,%B);
@Return;
;------------------------------------
[procedure Draw12]
;wyÆacza obsÆugæ 8 bitowå i ustawia 12 bitowå
@SetColors(0,15);
@DownArea(165,205,175,215,7);
@DownArea(165,230,175,240,7);
;
@Bar(168,233,172,237);
; dezaktywuje
@SetColors(3,15);
@SetPosition(198,207);
@FastWrite('8 BITOWY');
; aktywuje
@SetColors(0,15);
@SetPosition(190,232);
@FastWrite('12 BITOWY');
@SetPosition(300,217);
@FastWrite('u₧rednianie:');
;
@SetColors(3,0);
@ReverseArea(285,227,405,247);
@Return;
;--------------------------------------------------
[procedure Draw8]
;wyÆacza obsÆugæ 12 bitowå i ustawia 8 bitowå
@SetColors(0,15);
@DownArea(165,205,175,215,7);
@DownArea(165,230,175,240,7);
;
@Bar(168,208,172,212);
; aktywuje
@SetColors(0,15);
@SetPosition(198,207);
@FastWrite('8 BITOWY');
; dezaktywuje
@SetColors(3,15);
@SetPosition(190,232);
@FastWrite('12 BITOWY');
@SetPosition(300,217);
@FastWrite('u₧rednianie:');
@SetColors(0,3);
@ReverseArea(285,227,405,247);
@Return;
;--------------------------------------------
[procedure SetUSRED]
;u₧rednianie
@SetColors(8,15);
@SetButton(285,227,315,247,7,870,'<','Dekrementacja');
@SetButton(375,227,405,247,7,871,'>','Inkrementacja');
@Return;
;-------------------
[procedure SetPRACA]
;ustawia odpowiednie przyciski i pola
@SetHelpContext(6);
@DisableUserButtons;
; czas ustalania
@SetColors(8,15);
@SetButton(285,155,315,175,7,855,'<','Dekrementacja');
@SetButton(375,155,405,175,7,856,'>','Inkrementacja');
@SetInvisibleButton(320,155,370,175,860);
; 8 bitowy
@SetInvisibleButton(165,205,175,215,861);
; 12 bitowy
@SetInvisibleButton(165,230,175,240,865);
@A:=32;
@C:=2;
@ExecuteCode;
@If (%B&1<>0) then Call:SetUSRED;
; praca PRG
@SetInvisibleButton(165,266,175,276,874);
; praca DMA
@SetInvisibleButton(165,283,175,293,875);
;
@SetButton(180,310,400,340,7,853,'Ustawienie danych','Zatwierdzenie ustawieñ');
@Return;
;------------------------------------
[procedure DrawPRG]
@SetColors(0,15);
@DownArea(165,266,175,276,7);
@Bar(168,269,172,273);
;
@DownArea(165,283,175,293,7);
@Return;
;------------------
[procedure DrawDMA]
@SetColors(0,15);
@DownArea(165,266,175,276,7);
;
@DownArea(165,283,175,293,7);
@Bar(168,286,172,290);
@Return;
;------------------------------------
;#############################################################
;############# PRACA PRG/DMA ################
;#############################################################
[850]
;
;RYSOWANIE OKNA USTAWIEÑ PRACA PRG/DMA - wywoÆywaì jako GOSUB
;
@ResetFields;
@DisableUserButtons;
@SavePart(140,110,450,370,'OKNOPRDM.SCR');
@DialogBox(140,110,430,350,3,'PRACA PRG/DMA');
;obszar na skalæ i mnoºnik
@DownArea(150,142,420,255,7);
@DownArea(150,260,420,300,7);
;
@SetColors(0,15);
@SetPosition(165,158);
@FastWrite('Czas ustalania');
@SetPosition(175,170);
@FastWrite('siæ sygnaÆu:');
@SetColors(8,15);
@DrawButton(285,155,315,175,7,855,'<','Dekrementacja');
@DrawButton(375,155,405,175,7,856,'>','Inkrementacja');
@SetInvisibleButton(320,155,370,175,860);
@DownArea(320,155,370,175,7);
;
@SetColors(1,15);
@SetPosition(205,190);
@FastWrite('RODZAJ PRZETWORNIKA:');
@SetColors(0,15);
@SetPosition(198,207);
@FastWrite('8 BITOWY');
@SetInvisibleButton(165,205,175,215,861);
@DownArea(165,205,175,215,7);
;
@SetPosition(190,232);
@FastWrite('12 BITOWY');
@SetInvisibleButton(165,230,175,240,865);
@DownArea(165,230,175,240,7);
@SetPosition(300,217);
@FastWrite('u₧rednianie:');
@SetColors(8,15);
@DrawButton(285,227,315,247,7,870,'<','Dekrementacja');
@DrawButton(375,227,405,247,7,871,'>','Inkrementacja');
@DownArea(320,227,370,247,7);
;
@SetColors(0,15);
@SetPosition(190,268);
@FastWrite('Praca programowa');
@SetInvisibleButton(165,266,175,276,874);
@DownArea(165,266,175,276,7);
;
@SetPosition(190,285);
@FastWrite('Praca z DMA');
@SetInvisibleButton(165,283,175,293,875);
@DownArea(165,283,175,293,7);
;
@SetColors(8,15);
@DrawButton(180,310,400,340,7,853,'Ustawienie danych','Zatwierdzenie ustawieñ');
;
@Call:ShowCZASUST;
@Call:ShowUSRED;
@A:=32;
@C:=2;
@ExecuteCode;
@If (%B&1<>0) then Call:Draw12;
@If (%B&1=0) then Call:Draw8;
@A:=26;
@C:=2;
@ExecuteCode;
@If (%B=1) then Call:DrawDMA;
@If (%B=0) then Call:DrawPRG;
@Goto:852;
;--------------------------
[852]
;OBS£UGA POLECEÑ
@Call:SetPRACA;
@CheckEvents;
;--------------------------
[853]
;ZAMKNIÉCIE OKNA
@LoadPart(140,110,'OKNOPRDM.SCR');
@Return;
;*************************************
[855]
;dekrementacja czasu ustalania
@A:=30;
@C:=2;
@ExecuteCode;
@B:=%B-1;
@If (%B<0) then BEGIN
@B:=0;
@END;
@C:=1;
@ExecuteCode;
@Call:ShowCZASUST;
@Goto:852;
;--------------------
[856]
;inkrementacja czasu ustalania
@A:=30;
@C:=2;
@ExecuteCode;
@B:=%B+1;
@If (%B>255) then BEGIN
@B:=255;
@END;
@C:=1;
@ExecuteCode;
@Call:ShowCZASUST;
@Goto:852;
;--------------------
[860]
;pobranie czasu ustalania
@Call:CheckMouse;
@A:=30;
@C:=2;
@ExecuteCode;
@GetValue(%B,'Czas ustalania siæ sygnaÆu:');
@If (%B<0) then BEGIN
@B:=0;
@END;
@If (%B>255) then BEGIN
@B:=255;
@END;
@A:=30;
@C:=1;
@ExecuteCode;
@Call:ShowCZASUST;
@Call:CheckMouse;
@Goto:852;
;--------------------------------------------
[861]
;przetwornik 8 BIT
@Call:CheckMouse;
@A:=32;
@C:=2;
@ExecuteCode;
@If (%B&1=0) then Goto:852;
@B:=%B+1;
@C:=1;
@ExecuteCode;
@Call:Draw8;
@Goto:852;
;---------------------
[865]
;przetwornik 12 BIT
@Call:CheckMouse;
@A:=32;
@C:=2;
@ExecuteCode;
@If (%B&1=1) then Goto:852;
@B:=%B-1;
@C:=1;
@ExecuteCode;
@Call:Draw12;
@Goto:852;
;---------------------
[870]
;dekrementacja u₧redniania
@A:=17;
@C:=2;
@ExecuteCode;
@B:=%B/2;
@If (%B<1) then BEGIN
@B:=1;
@END;
@C:=1;
@ExecuteCode;
@Call:ShowUSRED;
@Goto:852;
;---------------------
[871]
;inkrementacja u₧redniania
@A:=17;
@C:=2;
@ExecuteCode;
@B:=%B*2;
@If (%B>128) then BEGIN
@B:=128;
@END;
@C:=1;
@ExecuteCode;
@Call:ShowUSRED;
@Goto:852;
;--------------------------------------------
[874]
;praca PRG
@Call:CheckMouse;
@A:=26;
@C:=2;
@ExecuteCode;
@If (%B=0) then Goto:852;
@B:=0;
@C:=1;
@ExecuteCode;
@Call:DrawPRG;
@Goto:852;
;---------------------
[875]
;praca DMA
@Call:CheckMouse;
@A:=26;
@C:=2;
@ExecuteCode;
; @If (%B=1) then Goto:852;
@B:=1;
@C:=1;
@ExecuteCode;
@Call:DrawDMA;
; wywoÆaj okno DMA
@Gosub:876;
@Goto:852;
;---------------------
;##############################################################
;--------------------------------------
[procedure SetOKNODMA]
@SetHelpContext(7);
@DisableUserButtons;
@SetColors(8,15);
@SetButton(345,265,375,285,7,880,'<','Dekrementacja');
@SetButton(435,265,465,285,7,881,'>','Inkrementacja');
@SetInvisibleButton(380,265,430,285,882);
;
@SetInvisibleButton(225,315,235,325,883);
@SetInvisibleButton(225,330,235,340,884);
@SetInvisibleButton(225,345,235,355,885);
;
@SetButton(410,318,460,338,7,886,'Czas','Licznik transmisji DMA');
@SetButton(240,370,460,400,7,878,'Ustawienie danych','Zatwierdzenie ustawieñ');
@Return;
;-----------------------------------------------
[procedure ShowILEDMA]
;wy₧wietla ilo₧ì danych w transmisji DMA
@SetColors(7,7);
@Bar(381,266,429,284);
@A:=29;
@C:=2;
@ExecuteCode;
@SetColors(14,14);
@if (%B<>0) then BEGIN
@WriteValue(380,265,430,285,0,0,%B);
@END;
@if (%B=0) then BEGIN
@SetPosition(390,272);
@FastWrite('AUTO');
@END;
@Return;
;-------------------------------------------------------
[procedure DrawDANYCH]
@SetColors(7,7);
@Bar(226,316,234,324);
@SetColors(0,15);
@Bar(228,318,232,322);
@A:=28;
@B:=0;
@C:=1;
@ExecuteCode;
@Return;
;--------------------------------------
[procedure DrawSTART]
@SetColors(7,7);
@Bar(226,331,234,339);
@SetColors(0,15);
@Bar(228,333,232,337);
@A:=31;
@B:=0;
@C:=1;
@ExecuteCode;
@Return;
;--------------------------------------
[procedure DrawSYNCHRO]
@SetColors(7,7);
@Bar(226,346,234,354);
@SetColors(0,15);
@Bar(228,348,232,352);
@Return;
;--------------------------------------
;###################################################################
;############### okno do obsÆugi DMA ####################
;###################################################################
; wywoÆywaì przez gosub
[876]
@ResetFields;
@DisableUserButtons;
@SavePart(200,220,500,430,'OKNODMA.SCR');
@DialogBox(200,220,490,410,3,'OBS£UGA DMA');
;obszar na skalæ i mnoºnik
@DownArea(210,252,480,365,7);
;
@SetColors(0,15);
@SetPosition(225,268);
@FastWrite('Ilo₧ì danych');
@SetPosition(235,280);
@FastWrite('w bloku DMA:');
@SetColors(8,15);
@DrawButton(345,265,375,285,7,880,'<','Dekrementacja');
@DrawButton(435,265,465,285,7,881,'>','Inkrementacja');
@SetInvisibleButton(380,265,430,285,882);
@DownArea(380,265,430,285,7);
;
@SetColors(1,15);
@SetPosition(265,300);
@FastWrite('Opcje transmisji DMA:');
@SetColors(0,15);
@SetPosition(250,317);
@FastWrite('tylko dane z ADC');
@SetInvisibleButton(225,315,235,325,883);
@DownArea(225,315,235,325,7);
;
@SetPosition(250,332);
@FastWrite('start automatyczny');
@SetInvisibleButton(225,330,235,340,884);
@DownArea(225,330,235,340,7);
;
@SetPosition(250,347);
@FastWrite('synchronizacja zewnætrzna');
@SetInvisibleButton(225,345,235,355,885);
@DownArea(225,345,235,355,7);
;
@SetColors(8,15);
@DrawButton(410,318,460,338,7,886,'Czas','Licznik transmisji DMA');
;
@DrawButton(240,370,460,400,7,878,'Ustawienie danych','Zatwierdzenie ustawieñ');
@Call:ShowILEDMA;
;
@A:=28;
@C:=2;
@ExecuteCode;
@If (%B=0) then Call:DrawDANYCH;
;
@A:=31;
@C:=2;
@ExecuteCode;
@If (%B=0) then Call:DrawSTART;
;
@A:=32;
@C:=2;
@ExecuteCode;
@If (%B&2<>0) then Call:DrawSYNCHRO;
@Goto:877;
;--------------------------
[877]
;OBS£UGA POLECEÑ
@Call:SetOKNODMA;
@CheckEvents;
;--------------------------
[878]
;ZAMKNIÉCIE OKNA
@LoadPart(200,220,'OKNODMA.SCR');
@Return;
;--------------------------------------------
[880]
;dekrementacja ilo₧ci danych
@A:=29;
@C:=2;
@ExecuteCode;
@B:=%B-1;
@If (%B<0) then BEGIN
@B:=0;
@END;
@C:=1;
@ExecuteCode;
@Call:ShowILEDMA;
@Goto:877;
;--------------------
[881]
;inkrementacja ilo₧ci danych
@A:=29;
@C:=2;
@ExecuteCode;
@B:=%B+1;
@If (%B>255) then BEGIN
@B:=255;
@END;
@C:=1;
@ExecuteCode;
@Call:ShowILEDMA;
@Goto:877;
;--------------------
[882]
;pobranie ilo₧ci danych
@Call:CheckMouse;
@A:=29;
@C:=2;
@ExecuteCode;
@GetValue(%B,'Ilo₧ì danych w bloku DMA:');
@If (%B<0) then BEGIN
@B:=0;
@END;
@If (%B>255) then BEGIN
@B:=255;
@END;
@A:=29;
@C:=1;
@ExecuteCode;
@Call:ShowILEDMA;
@Call:CheckMouse;
@Goto:877;
;--------------------------------------------
[883]
;zmiana danej w tablicy
; rodzaj danych (ADC | wszystkie)
@Call:CheckMouse;
@A:=28;
@C:=2;
@ExecuteCode;
@If (%B=0) then BEGIN
; wyÆåcz (tylko ADC) -> (wÆåcz wszystkie dane)
@A:=28;
@B:=1;
@C:=1;
@ExecuteCode;
@SetColors(7,7);
@Bar(226,316,234,324);
@Goto:877;
@END;
@If (%B=1) then Call:DrawDANYCH;
@Goto:877;
;----------------------------------
[884]
;zmiana danej w tablicy
; start transmiaji (automatyczny | zewnætrzny)
@Call:CheckMouse;
@A:=31;
@C:=2;
@ExecuteCode;
@If (%B=0) then BEGIN
; wyÆåcz start automatyczny (wÆåcz start zewn. - sprzætowy)
@A:=31;
@B:=1;
@C:=1;
@ExecuteCode;
@SetColors(7,7);
@Bar(226,331,234,339);
@Goto:877;
@END;
@If (%B=1) then Call:DrawSTART;
@Goto:877;
;----------------------------------
[885]
;zmiana danej w tablicy
; synchronizacja DMA (wewn. | zewn.)
@Call:CheckMouse;
@A:=32;
@C:=2;
@ExecuteCode;
@If (%B&2<>0) then BEGIN
; wyÆåczenie SYNCHRO
@A:=32;
@C:=2;
@ExecuteCode;
@B:=%B-2;
@C:=1;
@ExecuteCode;
@SetColors(7,7);
@Bar(226,346,234,354);
@Goto:877;
@END;
@If (%B&2=0) then BEGIN
; wÆåczenie SYNCHRO
@A:=32;
@C:=2;
@ExecuteCode;
@B:=%B+2;
@C:=1;
@ExecuteCode;
@Call:DrawSYNCHRO;
@Goto:877;
@END;
;----------------------------------
[886]
; ustawianie licznika DMA
@Gosub:800;
@Goto:877;
;--------------------------------------