Skocz do zawartości

JBBCME - Emulator komputera BBC Micro napisany w języku Java


Rekomendowane odpowiedzi

Witam. Chciałbym zaprezentować mój autorski emulator komputerów BBC Micro. BBC Micro jest komputerem wyprodukowanym w 1981 roku przez brytyjską firmę Acorn Computers. Obecna wersja programu to 1.0.2. Potrafi on częściowo bootować niektóre gry.

 

Aby załadować program do emulatora, należy zrzucić obraz dysku z prawdziwego BBC Micro bądź pobrać z internetu, następnie wypakować z niego pliki dowolnym programem, np. BBC Explorer. Następnie wczytać plik rozruchowy do emulatora (przeważnie jest to plik !BOOT). WAŻNE: Nazwy plików muszą się kończyć znakiem $, więc jeśli Twój program rozpakowujący nie dodał ich na końcu pliku, to należy je dodać ręcznie w celu poprawnego działania.

Screen z próby uruchomienia gry Acheton:

JBBCME.jpg

Download:

1.0.2

1.0.1

1.0.0

 

Skan:

1.0.2

1.0.1

1.0.0

 

Kod źródłowy:

Repozytorium na GitHubie

Edytowane przez Programmer2004
Kod przeniesiono na GitHuba
Odnośnik do komentarza
https://skript.pl/temat/20329-jbbcme-emulator-komputera-bbc-micro-napisany-w-j%C4%99zyku-java/
Udostępnij na innych stronach

Zamiast jak człowiek kod źródłowy na GitHub'ie, to woli dać jako osobny link do pobierania, ehh.

 

Dobra, pisze to jako osobny już post. Jak jakiś moderator połączy, to fajnie, ale mnie to nie interesuje.

Kod to istny rak i onkologia, wszystko zbyt statyczne, nazewnictwo klas totalnie wzięte z dupy. W kodzie znajduję się takie kwiatki jak ten:

public static void start(String path)
    throws FileNotFoundException, IOException
  {
    Hardware.reset(path);
    new Thread(new Runnable()
    {
      public void run()
      {
        for (;;)
        {
          try
          {
            
          }
          catch (FileNotFoundException exception)
          {
            Main.window.dispose();
            exception.printStackTrace();
          }
          catch (IOException exception)
          {
            Main.window.dispose();
            exception.printStackTrace();
          }
        }
      }
    })
    
      .start();

Nie wiem na jaką ku*wę i pietruszkę się tu znajduje, bo to jest tylko marnowanie pamięci. Pominę fakt, że ten flagowy interpreter języka jest napisany w najbardziej możliwie chu*owy sposób, jak się dało. 

public class Memory
{
  private static int page = 0;
  private static byte[] memory = new byte[65536];
  
  public static void reset()
  {
    page = 0;
    Arrays.fill(memory, (byte)0);
  }
  
  public static int getPage()
  {
    return page;
  }
  
  public static void setPage(int address)
  {
    page = address;
  }
  
  public static void write(short address, byte data)
  {
    memory[(address & 0xFFFF)] = data;
  }
  
  public static byte read(short address)
  {
    return memory[(address & 0xFFFF)];
  }
}

Nie wiem na jaki kij jest to statyczne.

public class Main
{
  public static Window window = new Window();
  
  public static void main(String[] args) {}
}

Co to do cholery za start programu? xDD

Co to za obsługi wyjątków, żadnego powiadomienia na ekranie, jak okienko się wyłączy to co ma użytkownik myśleć, że program miał tak działać?

Słabe.

Łączę //Michma

Odnośnik do komentarza
https://skript.pl/temat/20329-jbbcme-emulator-komputera-bbc-micro-napisany-w-j%C4%99zyku-java/#findComment-137947
Udostępnij na innych stronach

10 godzin temu, Wizzard napisał:

Zamiast jak człowiek kod źródłowy na GitHub'ie, to woli dać jako osobny link do pobierania, ehh.

To, że dałem kod źródłowy na stronie innej, niż GitHub, to nie znaczy, że nie jestem człowiekem.

10 godzin temu, Wizzard napisał:

Dobra, pisze to jako osobny już post. Jak jakiś moderator połączy, to fajnie, ale mnie to nie interesuje.

Kod to istny rak i onkologia, wszystko zbyt statyczne, nazewnictwo klas totalnie wzięte z dupy. W kodzie znajduję się takie kwiatki jak ten:


public static void start(String path)
    throws FileNotFoundException, IOException
  {
    Hardware.reset(path);
    new Thread(new Runnable()
    {
      public void run()
      {
        for (;;)
        {
          try
          {
            
          }
          catch (FileNotFoundException exception)
          {
            Main.window.dispose();
            exception.printStackTrace();
          }
          catch (IOException exception)
          {
            Main.window.dispose();
            exception.printStackTrace();
          }
        }
      }
    })
    
      .start();

Nie wiem na jaką ku*wę i pietruszkę się tu znajduje, bo to jest tylko marnowanie pamięci. Pominę fakt, że ten flagowy interpreter języka jest napisany w najbardziej możliwie chu*owy sposób, jak się dało. 


public class Memory
{
  private static int page = 0;
  private static byte[] memory = new byte[65536];
  
  public static void reset()
  {
    page = 0;
    Arrays.fill(memory, (byte)0);
  }
  
  public static int getPage()
  {
    return page;
  }
  
  public static void setPage(int address)
  {
    page = address;
  }
  
  public static void write(short address, byte data)
  {
    memory[(address & 0xFFFF)] = data;
  }
  
  public static byte read(short address)
  {
    return memory[(address & 0xFFFF)];
  }
}

Nie wiem na jaki kij jest to statyczne.


public class Main
{
  public static Window window = new Window();
  
  public static void main(String[] args) {}
}

Co to do cholery za start programu? xDD

Co to za obsługi wyjątków, żadnego powiadomienia na ekranie, jak okienko się wyłączy to co ma użytkownik myśleć, że program miał tak działać?

Słabe.

Po pierwsze: Twój program dekompilujący źle odkodował program, gdyż po pierwsze tam nie ma pętli for(;;), tylko while(true), a po drugie w bloku try...catch jest wywołanie Hardware.tick().

Po drugie: Zrobiłem statyczne funkcje, gdyż nie ma potrzeby tworzenia ich jako obiektów.

Po trzecie: Normalny start, tworzy okno i można korzystać.

Po czwarte: Mój program nie jest jedynym, który w przypadku wyjątku zamyka się i wypisuje błąd w konsoli.

Nie wiem, dlaczego krytykujesz moją stylistykę kodu, każdy ma swój styl kodowania. Ważne, że emulator interpretuje niektóre programy bez problemu.

 

//edit: Domyślam się, że chodziło też o to, dlaczego główna pętla emulatora jest tworzona w nowym wątku. Otóż gdy próbowałem dać to w tym samym wątku, to spotykałem się z licznymi bugami związanymi z oknem (JFrame) jak i z samą emulacją. I dlatego też właśnie ta pętla jest tworzona w nowym wątku w celu odseparowania jej od okna, co nie blokuje pętli komunikatów.

Edytowane przez Programmer2004
Odnośnik do komentarza
https://skript.pl/temat/20329-jbbcme-emulator-komputera-bbc-micro-napisany-w-j%C4%99zyku-java/#findComment-137960
Udostępnij na innych stronach

Spoiler
11 godzin temu, Programmer2004 napisał:

To, że dałem kod źródłowy na stronie innej, niż GitHub, to nie znaczy, że nie jestem człowiekem.

Po pierwsze: Twój program dekompilujący źle odkodował program, gdyż po pierwsze tam nie ma pętli for(;;), tylko while(true), a po drugie w bloku try...catch jest wywołanie Hardware.tick().

Po drugie: Zrobiłem statyczne funkcje, gdyż nie ma potrzeby tworzenia ich jako obiektów.

Po trzecie: Normalny start, tworzy okno i można korzystać.

Po czwarte: Mój program nie jest jedynym, który w przypadku wyjątku zamyka się i wypisuje błąd w konsoli.

Nie wiem, dlaczego krytykujesz moją stylistykę kodu, każdy ma swój styl kodowania. Ważne, że emulator interpretuje niektóre programy bez problemu.

 

//edit: Domyślam się, że chodziło też o to, dlaczego główna pętla emulatora jest tworzona w nowym wątku. Otóż gdy próbowałem dać to w tym samym wątku, to spotykałem się z licznymi bugami związanymi z oknem (JFrame) jak i z samą emulacją. I dlatego też właśnie ta pętla jest tworzona w nowym wątku w celu odseparowania jej od okna, co nie blokuje pętli komunikatów.

 

moja kupa jest lepsza niż te wszystkie twoje "programiki".

Kolejny zbędny "program"... Jakbyś nie mógł zacząć tworzyć MC od nowa :o

i byś może zarobił 5 kałów za to :D 

1/10

[ ANTY-WARN ]
opinia konstruktywna ~ esej.

Odnośnik do komentarza
https://skript.pl/temat/20329-jbbcme-emulator-komputera-bbc-micro-napisany-w-j%C4%99zyku-java/#findComment-138211
Udostępnij na innych stronach

Teraz, esej napisał:
  Pokaż ukrytą zawartość

 

moja kupa jest lepsza niż te wszystkie twoje "programiki".

Kolejny zbędny "program"... Jakbyś nie mógł zacząć tworzyć MC od nowa :o

i byś może zarobił 5 kałów za to :D 

1/10

[ ANTY-WARN ]
opinia konstruktywna ~ esej.

Krytykujesz, a nawet nie podałeś argumentów. Program nie jest bezużyteczny, jest dopiero we wczesnym stadium.

Odnośnik do komentarza
https://skript.pl/temat/20329-jbbcme-emulator-komputera-bbc-micro-napisany-w-j%C4%99zyku-java/#findComment-138212
Udostępnij na innych stronach

A do czego tu argumenty? Argumenty podał już @Wizzard i podzielam jego zdanie. 

Jeśli tworzysz swoje programy , które są krytykowane to przestań je tu wstawiać i będzie dobrze!

Odnośnik do komentarza
https://skript.pl/temat/20329-jbbcme-emulator-komputera-bbc-micro-napisany-w-j%C4%99zyku-java/#findComment-138213
Udostępnij na innych stronach

Teraz, esej napisał:

A do czego tu argumenty? Argumenty podał już @Wizzard i podzielam jego zdanie. 

Jeśli tworzysz swoje programy , które są krytykowane to przestań je tu wstawiać i będzie dobrze!

Nie wiem, bo jego argumenty tyczą się tylko mojego stylu kodowania, a nie samego programu. A program interpretuje kod BASIC'a dobrze. Co do krytyki, to akurat wcale mi to nie przeszkadza, żeby zamieszczać tutaj moje programy.

Odnośnik do komentarza
https://skript.pl/temat/20329-jbbcme-emulator-komputera-bbc-micro-napisany-w-j%C4%99zyku-java/#findComment-138214
Udostępnij na innych stronach

1 minutę temu, Programmer2004 napisał:

Nie wiem, bo jego argumenty tyczą się tylko mojego stylu kodowania, a nie samego programu. A program interpretuje kod BASIC'a dobrze. Co do krytyki, to akurat wcale mi to nie przeszkadza, żeby zamieszczać tutaj moje programy.

Ok, przestań już spamować , bo zaraz warna zgarniesz...

#topic

Co do programu 2 zakładki brzydki styl... nie polecam

Edytowane przez esej
Odnośnik do komentarza
https://skript.pl/temat/20329-jbbcme-emulator-komputera-bbc-micro-napisany-w-j%C4%99zyku-java/#findComment-138215
Udostępnij na innych stronach

Teraz, esej napisał:

Ok, przestań już spamować , bo zaraz warna zgarniesz...

#topic

Co do programu 2 zakładki brzydki styl... nie polecam

2/10

Jak już piszesz, że program ma brzydki styl, to chociaż napisz, co mam zmienić w interfejsie.

Odnośnik do komentarza
https://skript.pl/temat/20329-jbbcme-emulator-komputera-bbc-micro-napisany-w-j%C4%99zyku-java/#findComment-138218
Udostępnij na innych stronach

Wszyscy hejtują, ale pragnę zauważyć, że autor ma dopiero 13 lat - wnioskując po nicku. I jak na taki wiek umie dużo. Chciałbym się spytać, np. @eseja, czy umie takie coś napisać? Zamiast krytykować wszystko co tylko można, lepiej napiszcie co i jak może poprawić.

No a co do samego programu to pomysł fajny, gratulacje.

Odnośnik do komentarza
https://skript.pl/temat/20329-jbbcme-emulator-komputera-bbc-micro-napisany-w-j%C4%99zyku-java/#findComment-138302
Udostępnij na innych stronach

49 minut temu, KrejzolekPRO napisał:

Wszyscy hejtują, ale pragnę zauważyć, że autor ma dopiero 13 lat - wnioskując po nicku. I jak na taki wiek umie dużo. Chciałbym się spytać, np. @eseja, czy umie takie coś napisać? Zamiast krytykować wszystko co tylko można, lepiej napiszcie co i jak może poprawić.

No a co do samego programu to pomysł fajny, gratulacje.

@KrejzolekPRO ja umiem tylko VB.NET :kappa:  i nie znam się na innych jenzykach :kappa: (:bezkappy:)

Odnośnik do komentarza
https://skript.pl/temat/20329-jbbcme-emulator-komputera-bbc-micro-napisany-w-j%C4%99zyku-java/#findComment-138319
Udostępnij na innych stronach

2 godziny temu, KrejzolekPRO napisał:

Wszyscy hejtują, ale pragnę zauważyć, że autor ma dopiero 13 lat - wnioskując po nicku. I jak na taki wiek umie dużo. Chciałbym się spytać, np. @eseja, czy umie takie coś napisać? Zamiast krytykować wszystko co tylko można, lepiej napiszcie co i jak może poprawić.

No a co do samego programu to pomysł fajny, gratulacje.

Cieszę się, że się podoba. Tematem emulacji zainteresowałem się tak rok temu, a że uwielbiam też stare technologie, to pomyślałem, że emulator BBC Micro będzie fajnym pomysłem. Nie jest jeszcze ukończony i są emulatory o wiele lepsze od mojego, ale i tak dziękuję bardzo. ;)

A co do pana @esej, nadal czekam na to, co mogę poprawić w interfejsie, aby nie był on brzydki.

Odnośnik do komentarza
https://skript.pl/temat/20329-jbbcme-emulator-komputera-bbc-micro-napisany-w-j%C4%99zyku-java/#findComment-138347
Udostępnij na innych stronach

2 minuty temu, arizonaTwentyOne napisał:

Tam zamiast "you must" bardziej pasowałoby "you have to" :/ 

Cóż, może i by pasowało, no ale tego już zmienić nie mogę, no bo jak wiemy, to emulatory nie polegają na przepisywaniu gier na inną platformę, lecz na udawaniu danego sprzętu. Więc no... Bez edytowania plików gry nie idzie tego zmienić.

Odnośnik do komentarza
https://skript.pl/temat/20329-jbbcme-emulator-komputera-bbc-micro-napisany-w-j%C4%99zyku-java/#findComment-140095
Udostępnij na innych stronach

23 minuty temu, Ixidi napisał:

Zamien swinga na javafx, o wiele ladniejszy.

OK, postaram się coś poduczyć o JavaFX i przeprogramować do niego interfejs, gdyż szczerze to nigdy nie używałem JavaFX. :P Ale dzięki za poradę. ;)

Odnośnik do komentarza
https://skript.pl/temat/20329-jbbcme-emulator-komputera-bbc-micro-napisany-w-j%C4%99zyku-java/#findComment-140802
Udostępnij na innych stronach

Spodziewałem się tutaj raczej emulatora procesora niż interpretera BASIC-a...

https://github.com/Programmer2004/JBBCME/blob/master/src/hardware/BASIC.java

PO DOKŁADNYM PRZEJRZENIU KODU MOGĘ POWIEDZIEĆ OFICJALNIE

TO ŚMIETNIK XDDDDDDDDDDDD

Na czym się wzorowałeś? xDDDDDDDDDDDDD

No dobra, jako osoba znająca się na programowaniu niskopoziomowym - muszę powiedzieć, że marny ten "emulator", a technicznie raczej interpreter programów... Następnym razem poducz się trochę na temat sprzętu, procesora, działania komputera i spróbuj napisać najprostszą maszynę wirtualną. Następnie podnieś sobie poprzeczkę i napisz taki emulator procesora 6502 oraz reszty części komputera i doprowadź to tego aby mógł uruchamiać dump ROM-u z prawdziwego komputera oraz wszystkie aplikacje (nie tylko te w BASIC)...

 

Edytowane przez gabixdev
Odnośnik do komentarza
https://skript.pl/temat/20329-jbbcme-emulator-komputera-bbc-micro-napisany-w-j%C4%99zyku-java/#findComment-143427
Udostępnij na innych stronach

Dnia 28.07.2017 o 23:24, esej napisał:

moja kupa jest lepsza niż te wszystkie twoje "programiki".

Ten program się przynajmniej uruchamia i wyświetla kolorowe napisy, a ty takiego byś nawet w Javie nie napisał. A Skript tego nie wspiera. XDDD
Poza tym, też mi konstruktywna opinia, porównywanie fekaliów do programów. :thinking:
Zapytany o argumenty zasłaniasz się czyjąś opinia i unikasz dalszej konwersacji. Tchórz. Wyrób sobie własne zdanie, a nie powielasz zdanie innych.

Edytowane przez Nieaktywny
Odnośnik do komentarza
https://skript.pl/temat/20329-jbbcme-emulator-komputera-bbc-micro-napisany-w-j%C4%99zyku-java/#findComment-143436
Udostępnij na innych stronach

1 godzinę temu, gabixdev napisał:

Spodziewałem się tutaj raczej emulatora procesora niż interpretera BASIC-a...

https://github.com/Programmer2004/JBBCME/blob/master/src/hardware/BASIC.java

PO DOKŁADNYM PRZEJRZENIU KODU MOGĘ POWIEDZIEĆ OFICJALNIE

TO ŚMIETNIK XDDDDDDDDDDDD

Na czym się wzorowałeś? xDDDDDDDDDDDDD

No dobra, jako osoba znająca się na programowaniu niskopoziomowym - muszę powiedzieć, że marny ten "emulator", a technicznie raczej interpreter programów... Następnym razem poducz się trochę na temat sprzętu, procesora, działania komputera i spróbuj napisać najprostszą maszynę wirtualną. Następnie podnieś sobie poprzeczkę i napisz taki emulator procesora 6502 oraz reszty części komputera i doprowadź to tego aby mógł uruchamiać dump ROM-u z prawdziwego komputera oraz wszystkie aplikacje (nie tylko te w BASIC)...

 

Rozumiem, faktycznie, trochę naśmieciłem w tym programie i bez bugów nie jest. Co do maszyn wirtualnych to napisałem raz prosty emulator peceta, który bootował małe programy z obrazów dyskietek IMG (i było to wszystko emulowane, procesor, grafika, pamięć, itd., itp.). Tutaj starałem się zrobić emulację wysokopoziomową. Cóż, za wszelkie błędy przepraszam i postaram się je poprawić.

 

//edit: Mogę zrobić niskopoziomową emulację, ale to będzie wymagało napisania własnego BIOS'u, bo jak wgram pobrany z internetu to wiadomo, że to łamanie praw autorskich.

Edytowane przez Programmer2004
Odnośnik do komentarza
https://skript.pl/temat/20329-jbbcme-emulator-komputera-bbc-micro-napisany-w-j%C4%99zyku-java/#findComment-143437
Udostępnij na innych stronach

W przypadku emulatora x86 możesz użyć wolnych alternatyw jak SeaBIOS czy Bochs BIOS, mimo że "normalne" BIOSy takie jak AWARD czy AMI też działają...

x5TSyeY.png

Używanie pliku ROM-u z emulatorem nie jest naruszeniem praw autorskich, jedynie nie możesz rozpowszechniać go z programem, ale możesz poinstruować użytkownika jaki plik wymagany do działania emulatora ma zdobyć.

Edytowane przez gabixdev
Odnośnik do komentarza
https://skript.pl/temat/20329-jbbcme-emulator-komputera-bbc-micro-napisany-w-j%C4%99zyku-java/#findComment-143578
Udostępnij na innych stronach

Nieaktywny
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...