Jeśli chcesz wziąć udział w dyskusjach na forum - zaloguj się. Jeżeli nie masz loginu - poproś o członkostwo.
Vanilla 1.1.4 jest produktem Lussumo. Więcej informacji: Dokumentacja, Forum.
5 POKE 106,160:GRAPHICS 0
10 DIM BUF$(3840),LINE$(33),TYP$(4),FILE$(12),CIO$(6):CIO$="h" LVd"
15 BUF=ADR(BUF$)
20 REM kasowanie
30 GRAPHICS 14+16
40 EKRBUF=USR(34837,BUF):REM Ekran do bufora - wyzerowanie
99 REM MENU
100 GRAPHICS 0:POKE 752,1:CLOSE #1:OPEN #1,4,0,"L:"
105 POKE 709,0:POKE 710,14:POKE 712,14
110 POSITION 26,0:? "..":POSITION 15,1:? "RYSOWANIE . .":POSITION 24,2:? ". .":POSITION 24,3:? "..."
120 POSITION 10,6:? "...."
130 POSITION 10,7:? ". . KASOWANIE"
140 POSITION 10,8:? ". ."
150 POSITION 11,9:? ".."
160 POSITION 24,12:? "....."
170 POSITION 24,13:? "| . |"
180 POSITION 17,14:? "DYSK | | |"
190 POSITION 24,15:? "....."
200 POSITION 9,17:? "EXAMPLE 4 w grafice 14"
210 ? :? " w tescie poslugiwano sie swietlnym piorem f-my IBS-ELECTRONIC."
215 IF STICK(0)=14 THEN 215
220 GET #1,A:CLOSE #1
230 IF A>72 THEN 2000:REM obsl. dysku
240 IF A>48 THEN 20:REM kasowanie
999 REM rysowanie
1000 GRAPHICS 14+16
1010 INIT=USR(36035):REM inicjacja piora przez wywolanie procedury INIT
1020 POKE 708,0:POKE 712,14:COLOR 1
1030 BUFEKR=USR(34888,BUF):REM bufor do pamieci EKRANU
1031 REM
1032 REM
1035 REM P - podprogram dla Example4 w GR.7+16 obslugujacy pozycje piora, Ekran i Bufor - $8800(34816)
1036 REM START - powrot do Menu
1037 REM OPTION - odnowa Bufora
1040 P=USR(34816,BUF):GOTO 1050+PEEK(35915)
1050 IF STICK(0)=14 THEN X=PEEK(35906):Y=PEEK(35916):PLOT X,Y:GOTO 1060
1055 GOTO 1040
1060 IF STICK(0)=14 THEN P=USR(34816,BUF):DRAWTO PEEK(35906),PEEK(35916):GOTO 1060
1070 GOTO 1040
1250 GOTO 100:REM przy pomocy komorki pomocniczej (35915) powrot do menu po wcisnieciu START
1999 REM operacje dyskowe
2000 GRAPHICS 1+16:CLOSE #1:OPEN #1,4,0,"L:":POKE 708,0:POKE 712,14
2010 POSITION 8,0:? #6;"DISK":POSITION 8,1:? #6;"----"
2020 POSITION 8,6:? #6;"DIR"
2030 POSITION 8,9:? #6;"LOAD"
2040 POSITION 8,12:? #6;"SAVE"
2050 POSITION 8,15:? #6;"MENU"
2055 IF STICK(0)=14 THEN 2055
2060 GET #1,A:CLOSE #1
2070 IF A>111 THEN 100
2075 IF A>88 THEN W=8:R=11:TYP$="SAVE":GOTO 4000
2080 IF A>63 THEN W=4:R=7:TYP$="LOAD":GOTO 4000
2999 REM directory
3000 GRAPHICS 0:POKE 752,1:? " DIRECTORY"
3010 OPEN #2,6,0,"D:*.*":TRAP 3030
3020 INPUT #2,LINE$:? " ";LINE$:GOTO 3020
3030 IF STICK(0)=14 THEN CLOSE #2:GOTO 2000
3040 GOTO 3030
3999 REM load/save rysunku
4000 GRAPHICS 0:POSITION 18,5:? TYP$:POSITION 12,7:? "> <":POSITION 13,7:INPUT FILE$
4010 TRAP 4100:LINE$(3,LEN(FILE$)+2)=FILE$:LINE$(1,2)="D:"
4020 OPEN #2,W,0,LINE$
4030 GRAPHICS 14+16:BUFEKR=USR(34888,BUF)
4040 POKE 866,R:POKE 868,96:POKE 869,144:POKE 872,0:POKE 873,15:REM parametry dla IOCB2
4050 CIO=USR(ADR(CIO$))
4060 IF W=4 THEN EKRBUF=USR(34837,BUF)
4070 CLOSE #2:GOTO 100
4100 ? CHR$(125):POSITION 9,10:? "ERROR - wcisnij LPEN":? CHR$(253)
4110 IF STICK(0)=15 THEN 4110
4120 CLOSE #2:GOTO 2000
1 REM ** RYSOWANIE **
2 REM w GR.8
3 REM dla grafiki 8 wielk. pozycji Y zawarta w granicach 0-190. Wartosc te mozna otrzymac z komorki 35916($8C4C)
4 REM natomiast wartosc pozycji X w granicach 0-318. XPOS mozemy odczytac z dwu komorek 36094(ml.) i 36095(st.)
5 REM jako PEEK(36094)+256*PEEK(36095)
6 REM UWAGA! : grafika 8 przy niezmienionym RAMTOP wejdzie na obszar programu LIGHT PEN DRIVER i zniszczy go,
7 REM i aby tego uniknac nalezy RAMTOP zmniejszyc do 128 niestety zmniejszajac tez pamiec dla uzytkownika.
8 REM
9 POKE 106,128:REM ochrona LPEN DRIVER i PMG (PMBASE=$8800).RAMTOP=: 128*256
10 GRAPHICS 8+16:REM natychmiastowe ustalenie grafiki aby przesunac pamiec ekranu w nowy obszar.
20 REM inicjacja piora i ustalenie jasnosci dla danej grafiki
21 OPEN #1,4,0,"L:":CLOSE #1:POKE 704,0:POKE 708,0:POKE 712,14:COLOR 1
30 REM wywolanie procedury CONTROL
31 U=USR(36024)
40 IF STICK(0)=14 THEN X=PEEK(36094)+256*PEEK(36095):Y=PEEK(35916):PLOT X,Y:GOTO 50
45 GOTO 30
50 IF STICK(0)=14 THEN C=USR(36024):DRAWTO PEEK(36094)+256*PEEK(36095),PEEK(35916):GOTO 50
60 GOTO 30
10 DIM BUF$(3840),LINE$(33),TYP$(4),FILE$(12),CIO$(6):CIO$="h" LVd"
15 BUF=ADR(BUF$)
20 REM kasowanie
30 GRAPHICS 7+16
40 EKRBUF=USR(34837,BUF):REM Ekran do bufora - wyzerowanie
99 REM MENU
100 GRAPHICS 0:POKE 752,1:CLOSE #1:OPEN #1,4,0,"L:"
105 POKE 709,0:POKE 710,14:POKE 712,14
110 POSITION 26,0:? "..":POSITION 15,1:? "RYSOWANIE . .":POSITION 24,2:? ". .":POSITION 24,3:? "..."
120 POSITION 10,6:? "...."
130 POSITION 10,7:? ". . KASOWANIE"
140 POSITION 10,8:? ". ."
150 POSITION 11,9:? ".."
160 POSITION 24,12:? "....."
170 POSITION 24,13:? "| . |"
180 POSITION 17,14:? "DYSK | | |"
190 POSITION 24,15:? "....."
200 POSITION 15,17:? "EXAMPLE 4"
210 ? :? " w tescie poslugiwano sie swietlnym piorem f-my IBS-ELECTRONIC."
215 IF STICK(0)=14 THEN 215
220 GET #1,A:CLOSE #1
230 IF A>72 THEN 2000:REM obsl. dysku
240 IF A>48 THEN 20:REM kasowanie
999 REM rysowanie
1000 GRAPHICS 7+16
1010 INIT=USR(36035):REM inicjacja piora przez wywolanie procedury INIT
1020 POKE 708,0:POKE 712,14:COLOR 1
1030 BUFEKR=USR(34888,BUF):REM bufor do pamieci EKRANU
1031 REM
1032 REM
1035 REM P - podprogram dla Example4 w GR.7+16 obslugujacy pozycje piora, Ekran i Bufor - $8800(34816)
1036 REM START - powrot do Menu
1037 REM OPTION - odnowa Bufora
1040 P=USR(34816,BUF):GOTO 1050+PEEK(35915)
1050 IF STICK(0)=14 THEN X=PEEK(35906):Y=PEEK(35910):PLOT X,Y:GOTO 1060
1055 GOTO 1040
1060 IF STICK(0)=14 THEN P=USR(34816,BUF):DRAWTO PEEK(35906),PEEK(35910):GOTO 1060
1070 GOTO 1040
1250 GOTO 100:REM przy pomocy komorki pomocniczej (35915) powrot do menu po wcisnieciu START
1999 REM operacje dyskowe
2000 GRAPHICS 1+16:CLOSE #1:OPEN #1,4,0,"L:":POKE 708,0:POKE 712,14
2010 POSITION 8,0:? #6;"DISK":POSITION 8,1:? #6;"----"
2020 POSITION 8,6:? #6;"DIR"
2030 POSITION 8,9:? #6;"LOAD"
2040 POSITION 8,12:? #6;"SAVE"
2050 POSITION 8,15:? #6;"MENU"
2055 IF STICK(0)=14 THEN 2055
2060 GET #1,A:CLOSE #1
2070 IF A>111 THEN 100
2075 IF A>88 THEN W=8:R=11:TYP$="SAVE":GOTO 4000
2080 IF A>63 THEN W=4:R=7:TYP$="LOAD":GOTO 4000
2999 REM directory
3000 GRAPHICS 0:POKE 752,1:? " DIRECTORY"
3010 OPEN #2,6,0,"D:*.*":TRAP 3030
3020 INPUT #2,LINE$:? " ";LINE$:GOTO 3020
3030 IF STICK(0)=14 THEN CLOSE #2:GOTO 2000
3040 GOTO 3030
3999 REM load/save rysunku
4000 GRAPHICS 0:POSITION 18,5:? TYP$:POSITION 12,7:? "> <":POSITION 13,7:INPUT FILE$
4010 TRAP 4100:LINE$(3,LEN(FILE$)+2)=FILE$:LINE$(1,2)="D:"
4020 OPEN #2,W,0,LINE$
4030 GRAPHICS 7+16:BUFEKR=USR(34888,BUF)
4040 POKE 866,R:POKE 868,96:POKE 869,144:POKE 872,0:POKE 873,15:REM parametry dla IOCB2
4050 CIO=USR(ADR(CIO$))
4060 IF W=4 THEN EKRBUF=USR(34837,BUF)
4070 CLOSE #2:GOTO 100
4100 ? CHR$(125):POSITION 9,10:? "ERROR - wcisnij LPEN":? CHR$(253)
4110 IF STICK(0)=15 THEN 4110
4120 CLOSE #2:GOTO 2000
1 REM ** RYSOWANIE **
2 REM w GR.14
3 REM dla grafiki 14 wielk. pozycji Y zawarta w granicach 0-190. Wartosc te mozna otrzymac z komorki 35916($8C4C)
10 GRAPHICS 14+16
20 REM inicjacja piora i ustalenie jasnosci dla danej grafiki
21 OPEN #1,4,0,"L:":CLOSE #1:POKE 704,0:POKE 708,0:POKE 712,14:COLOR 1
30 REM wywolanie procedury CONTROL
31 U=USR(36024)
40 IF STICK(0)=14 THEN X=PEEK(35906):Y=PEEK(35916):PLOT X,Y:GOTO 50
45 GOTO 30
50 IF STICK(0)=14 THEN C=USR(36024):DRAWTO PEEK(35906),PEEK(35916):GOTO 50
60 GOTO 30
1 REM ** LINIA **
2 REM Wykorzystanie funkcji GET oraz procedury USR(36024) do rysowa- nia linii
10 GRAPHICS 7+16
20 CLOSE #1:OPEN #1,4,0,"L:":REM inicjacja piora
25 POKE 704,0:POKE 708,0:POKE 712,14:COLOR 1:REM jasnosc i kolor grafiki
30 GET #1,A:REM zmienna 'A' nie potrzebna ale po wcisnieciu przycisku mozemy w ten sposob odczytac X i Y pozycje
40 X=PEEK(35906):Y=PEEK(35910)
50 PLOT X,Y:REM narysowanie punktu poczatkowego linii
70 C=USR(36024):REM wywolanie procedury obslugi piora (wewnatrz procedura nie obsluguje przycisku i nie czeka)
80 IF STICK(0)=15 THEN 70:REM oczekiwanie na wcisniecie LPEN
90 X=PEEK(35906):Y=PEEK(35910):REM okreslenie punktow koncowych
100 DRAWTO X,Y:REM wykreslenie linii
110 IF STICK(0)=14 THEN 110:REM mozna ta instrukcje usunac i zobaczyc efekt
120 GOTO 30
1 REM ** MENU **
2 REM ekran podzielony na 192 czesci.
3 REM 8 czesci w poziomie, 24 w pionie4 REM Czesci sa ponumerowane od 0-191
5 REM liczac od lewego gornego rogu i w prawo. Czyli :
6 REM 0,1,2,3,4,5,6,7
7 REM 8,9,........,15
8 REM ...............
9 REM ............191
10 REM Do obslugi wlasnego Menu sluzy funkcja GET.
11 REM Otrzymujemy przy jej pomocy nr wycinka Ekranu ktorego dotyka pioro po wcisnieciu przyc.LPEN
12 REM
20 GRAPHICS 1+16:REM ustalenie grafiki
25 CLOSE #1:OPEN #1,4,0,"L:":REM Ka- nal 1 otwarty do odczytu dla LPEN.
30 POKE 704,0:POKE 708,0:POKE 712,14:REM ustalenie koloru i jasnosci dla tla i liter
40 GET #1,A:REM po wcisnieciu LPEN w zmiennej 'A' otrzymamy nr.wycinka Ekranu nad ktorym stalo pioro.
50 X=PEEK(35906):REM pobranie pozycji poziomej piora ( 0 - 159 )
60 Y=PEEK(35910):REM pobranie pozycji pionowej piora ( 0 - 95 )
70 TRAP 25
80 POSITION INT(X/8),INT(Y/4):REM ustawienie kursora na pozycje wskazana przez pioro
90 PRINT #6;A:REM wydruk w tej pozycjinr. tegoz odcinka ekranu
100 GOTO 40
Zenon:
mam jeden schemat z IKSa, drugi BAJTEK 10/86.Od 1 do 32 z 32