nie wiem... nawet nie testowalem... z magnetofonem robie to pierwszy raz:
---
eeeee czytam wiecej... to za malo, nie bedzie dzialac.
Nie jesteś zalogowany. Proszę się zalogować lub zarejestrować.
FujiNetChat: Nowy klient IRC dla Atari Pierwsza publiczna wersja alfa FujiNetChat, nowoczesnego klienta IRC wykorzystującego interfejs FujiNet.
Gearlynx 1.2.2 Gearlynx doczekał się aktualizacji. Wprowadzono podgląd SCB, wyszukiwanie w pamięci oraz poprawki.
Wyniki FujiCup 2025 Poznaliśmy najlepsze gry na 8-bitowe Atari wydane w 2025 roku według jury oraz publiczności.
Wyniki konkursu i gala FujiCup 2025 Poznaj zwycięzców dorocznego turnieju FujiCup 2025 wspierającego twórców gier na Atari XL/XE.
Fujisan 1.1.8 Nowa wersja emulatora Fujisan przynosi wsparcie dla FastBasic oraz poprawki błędów w obsłudze dźwięku.
atari.area forum » Posty przez xxl
nie wiem... nawet nie testowalem... z magnetofonem robie to pierwszy raz:
---
eeeee czytam wiecej... to za malo, nie bedzie dzialac.
przepisalem na atari microchess z KIM. zrodlo:
https://www.computerhistory.org/chess/d … 14f6d8478/
niestety ten program nie dzialal prawidlowo - lista poprawionch juz bledow ma kilka pozycji a i ciagle nie jestem pewny czy wszystko jest ok.
jak ktos ma cierpliwosc moze zagrac, sterowanie jest upierdliwe.
c - clear (reset planszy)
p - play / continue (przeciwnik)
e - exchange - zmiana stron czarne/biale
f - graj (my)
przyklad:
c return - reset planszy
p return - komputer wykona ruch
6 return
1 return
5 return
1 return - ruch pionem 61-51
f return - wykonaj
p return - komputer wykona ruch
itd.
plansza ponumerowana jest tez upierdliwie:
00 01 02 03 04 05 06 07
10 11 12 ....
...
70 71 72 73 74 75 76 77
autor chwali sie ze proram jest kompaktowy - to prawda ale zawsze da sie cos optymalizowac ;-)
oto przyklad:
REVERSE
LDX #$0F
ETC
SEC
LDY BK,X
LDA #$77
SBC BOARD,X
STA BK,X
STY BOARD,X
SEC
LDA #$77
SBC BOARD,X
STA BOARD,X
DEX
BPL ETC
RTS
po optymalizacji
REVERSE
ldx #$0f
@ lda BOARD,x
ldy BK,x
eor #$77
sta BK,x
tya
eor #$77
sta BOARD,x
dex
bpl @-
rts
5 bajtow krocej :-)
---
. - pionek
= - wieza
( - konik
^ - laufer
* - krolowka
+ - krol
R - reset reset planszy
P - play / continue (przeciwnik)
X - eXchange - zmiana stron czarne/biale
w menu opecje:
- Load State
- Save State
zgadza sie :-) dobrze rozpoznajesz
https://www.youtube.com/watch?v=par5RM5QCLQ
kart wedlug projektu:
https://atariage.com/forums/topic/23851 … nt-4479957
@Mq: wlasciwie tak, mam dwa schematy (zarzadzania pamiecia) dla cartow (wliczajac start i nowy typ maxflasha to 3).
tak, calkiem mozliwe ze sa to zbiezne pomysly.
nowy PoP z korzysta z xBIOSa ... szkoda, ze nie korzysta z wbudowanego dekompresora :/
dystrybuowany jest jako ATR, ale tu nagrany na CART:
https://www.youtube.com/watch?v=gkYH5p3j_5Y
jakis czas temu pokazalem to:
http://www.atari.org.pl/forum/viewtopic … 10#p256810
dodalem takze parametr ograniczajacy ilosc pamieci ktora basic moze uzyc OD - DO
oczywiscie nie chodzi tylko o wywolywanie skryptow BASICA z programu w asemblerze ale takze mozliwosc przechowywania w pamieci jednoczesnie kilku programow w basicu.
https://www.youtube.com/watch?v=lC1sPXKMYxw
sprawdz tutaj. zamieszczam to samo zmieniona nazwa.
piles, nie jedz.
dostepna w sieci gra ma "zepsuty" system zapisu i odczytu stanu gry. poprawilem to a dodatkowo:
- mozemy spadac tak do 5 schodow i nie powinno nas zabijac.
- sciana nas nie nokautuje jak idziemy lub biegniemy.
---
jeszcze mala poprawka (na forum obok znalezli buga). podmienilem zalacznik.
ale nie dodal xBiosLoadaPLibData
idea konkursu bardzo pozytywna. jednak 7 punkt regulaminu jest moim zdaniem niewlasciwy. dlaczego jednostki aktywne maja cierpiec z powodu tego, ze wybijaja sie powyzej sredniej w danej grupie?
oczywiscie organizator musi miec narzedzie dyscyplinujace ale niech to bedzie np. nie przyznawanie nagrod jesli oranizator uzna ze poziom pracy jest za niski i praca zajmie pierwsze miejsce bez narody. a tak to mamy sytuacje ze genialna praca moze nie byc nagrodzona...
Podrasowany Monty on the run:
produkt gotowy, przeszedl kolejne optymalizacje, zajmuje 3 strony pamieci, dodatkowo otrzymal relokator.
dodajac go do swojego programu wystarczy dolaczyc go na poczatku, po ini sam sie zrelokuje (pierwszy bajt binarki to adres relokacji, mozemy relokowac takze proramowy stos oraz bufor dla tla menu - odpowiednio drugi i trzeci adres na poczatku binarki)
oczywiscie gdyby korzystac z xBiosa relokacje moznaby przeprowadzic w locie ale dla userow DOS zostala przygotowana wersja samorelokujaca na ini.
jesli chcemy korzystac ze skrotow klawiszowych wywolujemy procedure ze skasowanym znacznikiem C=0
c=1 - nie bedzie generowana tablica skrotow klawiszowych
xMenu_OPEN equ xMenu+$1B
clc ; + shortcut keys
;sec ; without shortcuts keys
lda #.lo(MenuObject)
ldx #.hi(MenuObject)
jsr xMenu_OPEN
return: A = selected ID
i tyle.
przykladowy program:
xMenu equ $5000
xMenu_OPEN equ xMenu+1B
org $2000
start clc ; + shortcut keys
;sec ; without shortcuts keys
lda #.lo(MO2)
ldx #.hi(MO2)
jsr xMenu_OPEN
sta elemid
ldx #<hello
ldy #>hello
jsr $c642
jmp start
hello .byte c'selected ID: '
elemid .byte $00
.byte $9b
MO0
.byte 9 ; x
.byte 17 ; y
.byte 25 ; H
.byte 2 ; V
.byte 1 ; margin x
.byte 1 ; margin y
.byte 3 ; no of items
.byte 3 ; cols
.byte 0 ; cursor pos
.word MO0_E1 ; items
.word MO0_E2
.word MO0_E3
MO1
.byte 0
.byte 15
.byte 9
.byte 7
.byte 1
.byte 1
.byte 6
.byte 1
.byte 0
.word MO1_E1
.word M_SPACE
.word MO1_E2
.word MO1_E3
.word MO1_E4
.word MO1_E5
MO2
.byte 0
.byte 23
.byte 7
.byte 0
.byte 1
.byte 0
.byte 1
.byte 1
.byte 0
.word MO2_E1
MO2_E1
.byte c'0' ; ID
.byte 0 ; KEY
.byte 0 ; FLAGS
.word MO1 ; MENU
.byte d'Start',$9b ; LABEL
M_SPACE
.byte 0
.byte 0
.byte $80
.word 0
.byte d' ',$9b
MO1_E1
.byte c'1'
.byte $1f ;1 ; KEY
.byte 0
.word 0
.byte d'Test ''1',$9b
MO1_E2
.byte c'2'
.byte 0 ; KEY
.byte 0
.word MO0
.byte d'Test2 ',$9b
MO1_E3
.byte c'3'
.byte $1a ;3 ; KEY
.byte 0
.word 0
.byte d'Test ''3',$9b
MO1_E4
.byte c'4'
.byte $18 ;4 ; KEY
.byte 0
.word 0
.byte d'Test ''4',$9b
MO1_E5
.byte c'5'
.byte $1d ;5 ; KEY
.byte 0
.word 0
.byte d'Test ''5',$9b
MO0_E1
.byte c'6'
.byte $1b ;6 ; KEY
.byte 0
.word 0
.byte d'Test ''6',$9b
MO0_E2
.byte c'7'
.byte $33 ;7 ; KEY
.byte 0
.word 0
.byte d'Test ''7',$9b
MO0_E3
.byte c'8'
.byte $35 ;8 ; KEY
.byte 0
.word 0
.byte d'Test ''8',$9b
run start
po optymalizacji skrocila sie o 70 bajtow. menusy same skanuja cala strukture i generuja tablice skrotow klawiszowych, proramista juz nie musi sie martwic.
dodane skroty klawiszowe:
.byte c'1' ; ID
.byte $1F ; SHORTCUT KEY
.byte 0 ; FLAGS
.word 0 ; MENU
.byte d'Label',$9b ; LABEL
beta, obsluga klawiszami strzalek, return i esc
start
lda #.lo(MO2)
ldx #.hi(MO2)
jsr xMenu_OPEN
sta elemid
ldx #<hello
ldy #>hello
jsr $c642
jmp start
hello .byte c'selected ID: '
elemid .byte $00
.byte $9b
MO0
.byte 7 ; x
.byte 17 ; y
.byte 19 ; H
.byte 2 ; V
.byte 1 ; margin x
.byte 1 ; margin y
.byte 3 ; no of items
.byte 3 ; cols
.byte 0 ; cursor pos
.word MO0_E1 ; items
.word MO0_E2
.word MO0_E3
MO1
.byte 0
.byte 15
.byte 7
.byte 7
.byte 1
.byte 1
.byte 6
.byte 1
.byte 0
.word MO1_E1
.word M_SPACE
.word MO1_E2
.word MO1_E3
.word MO1_E4
.word MO1_E5
MO2
.byte 0
.byte 23
.byte 7
.byte 0
.byte 1
.byte 0
.byte 1
.byte 1
.byte 0
.word MO2_E1
MO2_E1
.byte c'0' ; ID
.byte 0 ; FLAGS
.word MO1 ; MENU
.byte d'Start',$9b ; LABEL
M_SPACE
.byte 0
.byte $80
.word 0
.byte d' ',$9b
MO1_E1
.byte c'1'
.byte 0
.word 0
.byte d'Test1',$9b
MO1_E2
.byte c'2'
.byte 0
.word MO0
.byte d'Test2',$9b
MO1_E3
.byte c'3'
.byte 0
.word 0
.byte d'Test3',$9b
MO1_E4
.byte c'4'
.byte 0
.word 0
.byte d'Test4',$9b
MO1_E5
.byte c'5'
.byte 0
.word 0
.byte d'Test5',$9b
MO0_E1
.byte c'6'
.byte 0
.word 0
.byte d'Test6',$9b
MO0_E2
.byte c'7'
.byte 0
.word 0
.byte d'Test7',$9b
MO0_E3
.byte c'8'
.byte 0
.word 0
.byte d'Test8',$9b
byla prosba o tlo pod menu:
https://www.youtube.com/watch?v=1oXzXmTfzW8
troszke uproszczona struktura menu (bez pierwszego .word 0)
przyspieszona odrobine - kilka bajtow dluzsza ale ciagle mniej niz 3 strony pamieci :-)
---
dodana funkcja do definiowana wlasnego ksztaltu ramki
byc moze zwracany bedzie wskaznik a nie wartosc ID
byc moze w strukturze menu bedzie przewidziany adres lub indeks do funkcji ktora ma byc wywolana przed otwarciem menu/submenu
zapomnialem dodac Road :-)
bardzo pozytywne dzwieki.
menusy i gadgets to dwa rozne tematy, ale dobrze ze jest wiecej podejsc do sprawy gui, zreszta gadgets jeszcze jedne widze tu: http://www.atari.org.pl/forum/viewtopic … 24#p257624 w programie konfiguracyjnym Antonii.
szkoda ze zadne nie sa dostepne dla programistow - moja ambicja to MINIMALNE wymagania Menusow ktore bedzie mozna uzyc np. do gier np. tekstowkach albo przygodowkach (nie wszystko pokazalem...) :-)
mam zagwozdki czy to rozbudowac i w jakich granicach - np. molbym dodac skanowanie calej struktury menu i budowanie tablicy skrotow klawiszowych zamiast polegac na programiscie ze taka tablice dolaczy...
chce tez zeby xMenusy :D mialy granice na okolo 768 bajtow (3 strony pamieci) - zobaczymy.
Fascynujące...
... nie do końca kumam "skok".. znaczy się 3 w prawo, 2 w dol i 2 w bok?
o taki:
brakuje najważniejszej funkcji w pętli: jmp $E477 :-)
A klawiatura i rysowanie jest przez OS?
klawiatura tak, a ekran nie - co prawda rysuje po akualnie otwarym ekranie wskaznik SAVMSC lub dla S2: ( http://www.atari.org.pl/forum/viewtopic.php?id=16197 ) aktywnym oknie, ale za pomoca wlasnych procedur. systemowe procedury sprawdzilem i sa nieakceprowalnie wolne ale z nimi program jest znacznie krotszy to fakt.
organizacja zostala tak przygotowana zeby wygodnie dzialac na systemowych prockach rysowania dlatego byc moze zostanie to uproszczone...
MO
.word 0
.byte x
.byte y
.byte szerokosc
.byte wsokosc
.byte odstep x
.byte odstep y
.byte ilosc pozycji
.byte ilosc kolumn
.byte pozycja kursora
.word element1
...
.word element n
element1
.byte ID
; .byte KEY
.byte flagi
.word MO1 submenu lub 0
.byte tekst
mozesz sobie dodac taki skok jak menu zwroci odpowiedni ID ;-)
zajmuje 512 bajtow (dwie strony pamieci), siedzi tam gdzie sie chce, przekazujesz adres struktury menu i w odpowiedzi otrzymujesz co user wybral.
dziala jak E:, otwierasz menu, klawiatura input, output na S:, return zamyka menu i daje ID elementu w akumulatorze, Esc to samo tylko daje $ff w akumulatorze.
ilosc submenu (na programowy stos zapisuje tylko adresy struktur sub/menu) tak, ze .... nieograniczony :-)
do itemow mozesz dodac skroty klawiszowe, maja flagi np. nieaktywny, w strukturze menu definiujesz wielkosc i ksztalt menu np. ile bedzie wierszy/kolumn - mozesz zrobic menu ktore bedzie mialo 5 wierszy i 5 kolumn ;-) albo pionowe / poziome, dowolna wielkosc etykiet itd.
co jeszcze powinien miec MenuManager
https://www.youtube.com/watch?v=IreDhFzTdrg
@willy: mozesz sobie zamowic wersje z 1 pokeyem :-) i badz spokojny, nie zawiesisz komputera zapisujac w nieuzywane adresy POKEY MAXa :-)
nie ma wiochy :)
atari.area forum » Posty przez xxl
Wygenerowano w 0.231 sekund, wykonano 18 zapytań