wejdz na strone xBIOS - https://xxl.atari.pl/
i sciagnij: xBOOT Initializer (700)
wloz do stacji dyskietke i uruchom ten program
---
acha... nagraj swoj program narzedziowy na dyskietce pod nazwa AUTORUN
Nie jesteś zalogowany. Proszę się zalogować lub zarejestrować.
Gearlynx 1.2.15 Emulator Atari Lynx doczekał się ważnej aktualizacji z wieloma nowymi funkcjami.
STOS BASIC V5.5 Alpha Popularny język programowania dla Atari ST powraca po ponad 30 latach w nowoczesnej wersji.
Command & Conquer na Atari ST Kultowy RTS Command & Conquer zmierza na Atari ST. Zobacz niesamowity port legendarnej strategii.
Altirra 4.50 test 13 Avery Lee udostępnił kolejną wersję testową najdoskonalszego emulatora Atari.
CT60 TOS 1.03e Po blisko 21 latach ukazała się oficjalna aktualizacja CT60 TOS do wersji 1.03e.
atari.area forum » Posty przez xxl
wejdz na strone xBIOS - https://xxl.atari.pl/
i sciagnij: xBOOT Initializer (700)
wloz do stacji dyskietke i uruchom ten program
---
acha... nagraj swoj program narzedziowy na dyskietce pod nazwa AUTORUN
rozbudowalem troche xMENU :-)
Tworzmy strukture menu wysylam do xMENU i czekamy na odpowiedz o wyborze opcji przez usera, odpowiedz wraz ze struktura menu daje pelnie informacji o dzialaniu usera.
struktury w liscie menu mozna dowolnie zmieniac, kolejnosc, ilosc, mozna je np. laczyc :-)
nowa rzecza sa tez flagi:
TOGGLE i CHECKED - informauje, ze pole moze byc zaznaczane/odznaczane
dodany klawisz space - wybiera opcje bez wyjscia z menu
flaga ENABLED byla ale teraz mozna zmieniac/konfigurowac menu z czasie rzeczywistym - np. na przerwaniach, plynace napisy w menu/ wlaczenia-wylaczenia, wszelkieo rodzaju zmiany
ODPOWIEDZI:
w A otrzymujemy ID wybranej opcji dodatkowo adres tablicy (zakonczonej $ff) w ktorej mamy ID wszystkich wybranych opcji.
przyklad oczywiscie jest relokowalny.
----
dodalem mozliwosc zmiany opcji menu klawiszami skrotow
przy okazji tego: http://www.atari.org.pl/forum/viewtopic ... 24#p261624
wpadl mi do glowy pomysl na upierdliwe zabezpiecznie przed zaladowaniem programu z magnetofonu ;-)
nagrywamy na kasete program przy czym przerwy miedz sygnalami ustawiamy na bardzo krotkie ale sygnal danych ma dwie dlugosci reprezentujace kropke (krotszy) i kreske (dluzszy) przy zapisie pytamy usera o haslo i to haslo w alfabecie morsa jest wzorem do nagrywania rekordow :-)
podczas ladowania w loaderze pytamy o "haslo" a ten w odpowiedniej ilosci danych w kolejnych rekordach oczekuje danych :-)
teraz:
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.
atari.area forum » Posty przez xxl
Wygenerowano w 0.209 sekund, wykonano 13 zapytań