2,101

(4 odpowiedzi, napisanych Programowanie - 8 bit)

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

2,102

(1,754 odpowiedzi, napisanych Fabryka - 8bit)

zgadza sie :-) dobrze rozpoznajesz

2,103

(1,754 odpowiedzi, napisanych Fabryka - 8bit)

https://www.youtube.com/watch?v=par5RM5QCLQ

kart wedlug projektu:
https://atariage.com/forums/topic/23851 … nt-4479957

2,104

(1,754 odpowiedzi, napisanych Fabryka - 8bit)

@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.

2,105

(1,754 odpowiedzi, napisanych Fabryka - 8bit)

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

2,106

(1,754 odpowiedzi, napisanych Fabryka - 8bit)

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

2,107

(8 odpowiedzi, napisanych Software, Gry - 8bit)

sprawdz tutaj. zamieszczam to samo zmieniona nazwa.

2,108

(8 odpowiedzi, napisanych Software, Gry - 8bit)

piles, nie jedz.

2,109

(8 odpowiedzi, napisanych Software, Gry - 8bit)

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.

2,110

(48 odpowiedzi, napisanych Scena - 8bit)

Eve Redux

https://megawrzuta.pl/download/17beb5fc … 78d90.html

2,111

(58 odpowiedzi, napisanych Programowanie - 8 bit)

ale nie dodal xBiosLoadaPLibData

https://xxl.atari.pl/aplib-decompressor/

2,112

(10 odpowiedzi, napisanych 24h Compo)

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...

2,113

(48 odpowiedzi, napisanych Scena - 8bit)

Podrasowany Monty on the run:

https://megawrzuta.pl/download/2180a0f9 … 7cfe1.html

2,114

(16 odpowiedzi, napisanych Programowanie - 8 bit)

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

2,115

(16 odpowiedzi, napisanych Programowanie - 8 bit)

po optymalizacji skrocila sie o 70 bajtow. menusy same skanuja cala strukture i generuja tablice skrotow klawiszowych, proramista juz nie musi sie martwic.

2,116

(16 odpowiedzi, napisanych Programowanie - 8 bit)

dodane skroty klawiszowe:

.byte c'1' ; ID
.byte $1F ; SHORTCUT KEY
.byte 0 ; FLAGS
.word 0 ; MENU
.byte d'Label',$9b ; LABEL

2,117

(16 odpowiedzi, napisanych Programowanie - 8 bit)

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

2,118

(16 odpowiedzi, napisanych Programowanie - 8 bit)

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

2,119

(48 odpowiedzi, napisanych Scena - 8bit)

zapomnialem dodac Road :-)


bardzo pozytywne dzwieki.

2,120

(16 odpowiedzi, napisanych Programowanie - 8 bit)

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.

2,121

(16 odpowiedzi, napisanych Programowanie - 8 bit)

pancio.net napisał/a:

Fascynujące...
... nie do końca kumam "skok".. znaczy się 3 w prawo, 2 w dol i 2 w bok?

o taki:

pancio.net napisał/a:

brakuje najważniejszej funkcji w pętli: jmp $E477 :-)

dely napisał/a:

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

2,122

(16 odpowiedzi, napisanych Programowanie - 8 bit)

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.

2,123

(16 odpowiedzi, napisanych Programowanie - 8 bit)

co jeszcze powinien miec MenuManager

https://www.youtube.com/watch?v=IreDhFzTdrg

2,124

(245 odpowiedzi, napisanych Sprzęt - 8bit)

@willy: mozesz sobie zamowic wersje z 1 pokeyem :-) i badz spokojny, nie zawiesisz komputera zapisujac w nieuzywane adresy POKEY MAXa :-)

nie ma wiochy :)

2,125

(245 odpowiedzi, napisanych Sprzęt - 8bit)

i jeszcze cos co umyka uwadze. to jest 100% zamiennik, wszystkie dotychczasowe rozszerzenia wymagaly obecnosci oryginalnego ukladu.

tu pierwszy raz mamy do czynienia z zamiennikiem (ktory przy okazji jako bonus i tylko opcjonalnie - jesli chcemy - daje dodatkowe funkcje).

tak, ze jesli masz uszkodzoneo POKEYa to praktycznie jest juz na to lekarstwo w postaci POKEY MAX.